sage-nexus-ui 1.8.1 → 1.8.2
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/components/NexusChatWidget/AgentActivity/ActivityCard.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/ActivityCards.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/AgentActivity.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/AgentActivityHeader.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/SourceLink.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/TokenSummary.mjs +1 -0
- package/dist/components/NexusChatWidget/AgentActivity/activityModel.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/ChatAvatar.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/EmptyState.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/MarkdownContent.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/MessageBubble.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/MessageList.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/SourceCitations.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/StreamingBubble.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/SuggestedPrompts.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/TypingIndicator.mjs +1 -0
- package/dist/components/NexusChatWidget/ChatComponents/latestTraceLabel.mjs +1 -0
- package/dist/components/NexusChatWidget/FABButton.mjs +1 -0
- package/dist/components/NexusChatWidget/NexusChatWidget.mjs +1 -1
- package/dist/components/NexusChatWidget/WidgetParts/WidgetBody.mjs +1 -0
- package/dist/components/NexusChatWidget/WidgetParts/WidgetHeader.mjs +1 -0
- package/dist/components/NexusChatWidget/WidgetParts/WidgetInput.mjs +1 -0
- package/dist/generated/version.mjs +1 -1
- package/dist/index.d.ts +50 -49
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/components/NexusChatWidget/AgentActivityWidget.mjs +0 -1
- package/dist/components/NexusChatWidget/ChatComponents.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t,jsxs as e}from"react/jsx-runtime";import{useState as r}from"react";import o from"./SourceLink.mjs";import{Body1 as i,Body2 as s,Caption as n}from"../../Typography.mjs";import{ButtonBase as l}from"../../ButtonBase.mjs";import{Chip as m}from"../../Chip.mjs";import{Code as a}from"../../Code.mjs";import{Stack as c}from"../../Stack.mjs";const p=({activity:p})=>{const[d,u]=r(!1),h=p.sources||[],f=d?h:h.slice(0,3),x=Math.max(0,h.length-3);return t(c,{direction:"row",spacing:1,children:e(c,{sx:{flex:1,minWidth:0},children:[e(c,{direction:"row",spacing:.75,sx:{alignItems:"center",flexWrap:"wrap"},children:[t(i,{children:p.title}),p.status&&t(m,{label:p.status,size:"small"})]}),p.text&&t(s,{children:p.text}),"kb"===p.type&&h.length>0&&e(c,{direction:"row",spacing:.5,sx:{flexWrap:"wrap",mt:.25},children:[f.map((e,r)=>t(o,{source:e.source},r)),x>0&&t(l,{onClick:()=>u(t=>!t),sx:{color:"primary.main"},children:d?"Show less":`+${x} more`})]}),"tool"===p.type&&p.toolName&&t(a,{sx:{display:"inline-flex",alignSelf:"flex-start"},children:p.toolName}),"model"===p.type&&(p.inputTokens||p.outputTokens)&&e(n,{children:[p.inputTokens," in / ",p.outputTokens," out"]})]})})};export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import i from"./ActivityCard.mjs";import{Caption as r}from"../../Typography.mjs";import{Stack as o}from"../../Stack.mjs";const c=({activities:c,compact:e=!1})=>0===c.length?t(o,{direction:"row",spacing:1,sx:{alignItems:"center",justifyContent:"center",py:2,color:"text.secondary"},children:t(r,{children:"Waiting for agent activity…"})}):c.map((r,o)=>t(i,{activity:r,compact:e},o));export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useState as r,useMemo as o}from"react";import i from"./AgentActivityHeader.mjs";import a from"./ActivityCards.mjs";import m from"./TokenSummary.mjs";import{parseTraceEvents as n,calculateActivitySummary as s}from"./activityModel.mjs";import{Paper as p}from"../../Paper.mjs";import{Stack as c}from"../../Stack.mjs";const l=({isStreaming:l,traceEvents:d,defaultExpanded:u=!1,latency:f,activitySummary:k,compact:S=!1})=>{const[g,v]=r(u),y=o(()=>n(d),[d]),h=o(()=>s(y),[y]),x=k||h;return 0!==d.length||l?t(p,{variant:"outlined",children:[e(i,{isStreaming:l,thinkingSteps:h.thinkingSteps,kbSearches:h.kbSearches,toolCalls:h.toolCalls,isExpanded:g,setIsExpanded:v}),g&&t(c,{spacing:1.5,sx:{borderTop:1,borderColor:"divider",px:1.5,py:1.25,mt:1,maxHeight:256,overflowY:"auto"},children:[e(a,{activities:y,compact:S}),e(m,{isStreaming:l,inputTokens:x.inputTokens,outputTokens:x.outputTokens,latency:f})]})]}):null};export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as i,jsxs as e}from"react/jsx-runtime";import{Body1 as r}from"../../Typography.mjs";import{Box as o}from"../../Box.mjs";import{ButtonBase as n}from"../../ButtonBase.mjs";import{Chip as s}from"../../Chip.mjs";import{LoadingSpinnerNexus as t}from"../../LoadingSpinnerNexus.mjs";import{Stack as l}from"../../Stack.mjs";import m from"@mui/icons-material/CheckCircle";import a from"@mui/icons-material/ExpandMore";import c from"@mui/icons-material/ExpandLess";const p=({isStreaming:p,thinkingSteps:d,kbSearches:x,toolCalls:f,isExpanded:h,setIsExpanded:g})=>i(n,{onClick:()=>g(i=>!i),sx:{width:"100%"},children:e(l,{direction:"column",spacing:1,sx:{width:"100%"},children:[e(l,{direction:"row",sx:{justifyContent:"space-between"},children:[e(l,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[p?i(t,{variant:"small"}):i(m,{sx:{color:"primary.main",fontSize:16}}),i(r,{children:p?"Agent is working…":"Response generated"})]}),i(o,h?{sx:{display:"inline-flex",color:"text.secondary"},children:i(c,{sx:{fontSize:14}})}:{sx:{display:"inline-flex",color:"text.secondary"},children:i(a,{sx:{fontSize:14}})})]}),e(l,{direction:"row",spacing:1,children:[d>0&&i(s,{size:"small",label:`${d} thinking`}),x>0&&i(s,{size:"small",label:`${x} KB`}),f>0&&i(s,{size:"small",label:`${f} tools`})]})]})});export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import n from"@mui/icons-material/OpenInNew";import{Code as i}from"../../Code.mjs";import{Link as o}from"../../Link.mjs";const r=({source:r})=>{const p=r.startsWith("http"),s=p?new URL(r).pathname.split("/").pop()||r:r.split("/").pop()||r;return p?e(o,{href:r,openInNewTab:!0,sx:{display:"inline-flex",alignItems:"center",gap:.5,px:.5,py:.125,borderRadius:.5,bgcolor:"action.hover",fontSize:"0.5rem",textDecoration:"none"},children:[t(n,{sx:{fontSize:7}}),s]}):t(i,{sx:{display:"inline-flex",alignItems:"center",gap:.5,fontSize:"0.5rem"},children:s})};export{r as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as t,jsx as o}from"react/jsx-runtime";import{Caption as r}from"../../Typography.mjs";import{Stack as e}from"../../Stack.mjs";const n=({isStreaming:n,inputTokens:i,outputTokens:s,latency:c})=>{if(n)return null;const l=i>0||s>0,d=Boolean(c);return l||d?t(e,{spacing:.5,children:[l&&o(e,{direction:"row",sx:{alignItems:"center",pt:1.5,borderTop:1,borderColor:"divider"},children:t(r,{children:[i," input / ",s," output tokens"]})}),d&&c&&t(r,{children:[c.totalSeconds,"s total",c.ttftSeconds&&` (${c.ttftSeconds}s to first token)`]})]}):null};export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t){switch(t.type){case"thinking":return{type:"thinking",title:`Step ${t.step||"?"}: Reasoning`,text:t.text,status:"complete"};case"kb":return{type:"kb",title:"searching"===t.status?"Searching Knowledge Base…":"Knowledge Base Results",text:t.query?`Query: "${t.query}"`:void 0,status:t.status,sources:t.sources};case"tool":return{type:"tool",title:t.toolName||"Tool Call",text:t.output,status:t.status,toolName:t.toolName};case"model":return{type:"model",title:"Model Invocation",inputTokens:t.inputTokens,outputTokens:t.outputTokens,status:"complete"};default:return null}}function e(e){return e.map(t).filter(Boolean)}function o(t){const e=t.filter(t=>"thinking"===t.type).length,o=t.filter(t=>"kb"===t.type).length,n=t.filter(t=>"tool"===t.type).length,s=t.filter(t=>"model"===t.type);return{thinkingSteps:e,kbSearches:o,toolCalls:n,inputTokens:s.reduce((t,e)=>t+(e.inputTokens||0),0),outputTokens:s.reduce((t,e)=>t+(e.outputTokens||0),0)}}export{o as calculateActivitySummary,e as parseTraceEvents};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import o from"@mui/icons-material/SmartToy";import{Avatar as m}from"../../Avatar.mjs";import{colours as i}from"../../../theme/tokens.mjs";const t={sm:14,md:20,lg:26},s=({size:s="sm",icon:e,sx:a})=>r(m,{size:s,sx:[{bgcolor:i.brilliantGreen},...Array.isArray(a)?a:a?[a]:[]],children:e??r(o,{sx:{fontSize:t[s],color:"#000"}})});export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{Box as r}from"../../Box.mjs";import{Chip as i}from"../../Chip.mjs";import{H3 as l,Body1 as n}from"../../Typography.mjs";import o from"./ChatAvatar.mjs";import m from"./SuggestedPrompts.mjs";const s=({title:s,description:p,dataSources:a,prompts:c,avatarIcon:x,onSelect:f})=>e(r,{sx:{display:"flex",flex:1,flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,px:2,py:6},children:[t(o,{size:"lg",icon:x}),e(r,{sx:{textAlign:"center",display:"flex",flexDirection:"column",gap:.5},children:[t(l,{children:s}),t(n,{children:p})]}),a&&a.length>0&&t(r,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:.75,mt:1},children:a.map(e=>t(i,{label:e,size:"small"},e))}),e(r,{sx:{mt:2},children:[t(n,{sx:{mb:1},children:"Try asking:"}),t(m,{prompts:c,onSelect:f})]})]});export{s as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{Box as o}from"../../Box.mjs";import{Paper as r}from"../../Paper.mjs";import{H4 as n,H3 as i,Body1 as l}from"../../Typography.mjs";import{Code as m}from"../../Code.mjs";import{Markdown as d}from"../../../node_modules/react-markdown/lib/index.mjs";import t from"../../../node_modules/remark-gfm/lib/index.mjs";const c=({content:c})=>e(d,{remarkPlugins:[t],components:{p:({children:o})=>e(l,{sx:{mb:1,"&:last-child":{mb:0}},children:o}),strong:({children:r})=>e(o,{component:"strong",sx:{fontWeight:700},children:r}),em:({children:r})=>e(o,{component:"em",sx:{fontStyle:"italic"},children:r}),ul:({children:r})=>e(o,{component:"ul",sx:{pl:2.5,my:2,display:"grid",gap:.5,listStyleType:"disc"},children:r}),ol:({children:r})=>e(o,{component:"ol",sx:{pl:2.5,my:2,display:"grid",gap:.5,listStyleType:"decimal"},children:r}),li:({children:r})=>e(o,{component:"li",children:r}),h1:({children:o})=>e(i,{sx:{mb:1,mt:.5},children:o}),h2:({children:o})=>e(n,{sx:{mb:.5,mt:.5},children:o}),h3:({children:o})=>e(n,{sx:{mb:.5,mt:.5},children:o}),code:({children:o})=>e(m,{children:o}),pre:({children:o})=>e(r,{component:"pre",variant:"outlined",sx:{my:2,p:1.5,overflowX:"auto",fontFamily:'"SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", monospace',fontSize:"0.75rem",lineHeight:1.5,bgcolor:"action.hover"},children:o}),hr:()=>e(o,{component:"hr",sx:{my:3,border:0,borderTop:1,borderColor:"divider"}})},children:c});export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as t,jsx as r}from"react/jsx-runtime";import e from"../AgentActivity/AgentActivity.mjs";import{Box as o}from"../../Box.mjs";import n from"./ChatAvatar.mjs";import a from"./MarkdownContent.mjs";const i=({message:i,avatarIcon:m,showActivity:c=!1})=>{const s="user"===i.role;return t(o,{sx:{display:"flex",gap:1,justifyContent:s?"flex-end":"flex-start"},children:[!s&&r(n,{icon:m,sx:{mt:.25}}),t(o,{sx:{display:"flex",flexDirection:"column",gap:1},children:[r(o,{sx:{borderRadius:s?"1rem 0.25rem 1rem 1rem":"0.25rem 1rem 1rem 1rem",px:1.75,py:1.25,bgcolor:s?"primary.main":"background.default",color:s?"primary.contrastText":"text.primary",border:s?"none":"1px solid",borderColor:"divider",whiteSpace:s?"pre-wrap":"normal",lineHeight:1.6},children:s?i.content:r(a,{content:i.content})}),c&&!s&&i.traceEvents&&i.traceEvents.length>0&&r(e,{isStreaming:!1,traceEvents:i.traceEvents,latency:i.latency,activitySummary:i.activitySummary,compact:!0})]})]})};export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useEffect as r}from"react";import{Box as a}from"../../Box.mjs";import i from"./MessageBubble.mjs";import s from"./StreamingBubble.mjs";import n from"./TypingIndicator.mjs";import{latestTraceLabel as m}from"./latestTraceLabel.mjs";const l=({messages:l,isTyping:c,streamingText:p,liveTraceEvents:f,onAbort:v,avatarIcon:g,showActivity:h=!1})=>{const u=o(null);r(()=>{u.current?.scrollIntoView({behavior:"smooth"})},[l,c,p]);const x=l.length>0&&"assistant"===l[l.length-1].role,b=c&&!x&&!!p,y=c&&!x&&!b;return t(a,{sx:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column",gap:1.5,px:2,py:1.5},children:[l.filter(t=>"user"===t.role||t.content).map(t=>e(i,{message:t,avatarIcon:g,showActivity:h},t.id)),b&&e(s,{text:p||"",traceEvents:f||[],avatarIcon:g,onAbort:v,showActivity:h}),y&&e(n,{avatarIcon:g,traceLabel:f&&f.length>0?m(f):void 0}),e(a,{ref:u})]})};export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import{Box as o}from"../../Box.mjs";import{Chip as m}from"../../Chip.mjs";import{Caption as p}from"../../Typography.mjs";const l=({sources:l})=>l.length?r(o,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5,px:2,py:1,borderTop:1,borderColor:"divider"},children:[e(p,{sx:{mr:.5},children:"Sources:"}),l.map(r=>e(m,{label:r,size:"small"},r))]}):null;export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as r,jsx as e}from"react/jsx-runtime";import t from"@mui/icons-material/StopCircle";import o from"../AgentActivity/AgentActivity.mjs";import{Box as i}from"../../Box.mjs";import{Stack as n}from"../../Stack.mjs";import{ButtonBase as a}from"../../ButtonBase.mjs";import{Caption as m}from"../../Typography.mjs";import s from"./ChatAvatar.mjs";import c from"./MarkdownContent.mjs";import{latestTraceLabel as l}from"./latestTraceLabel.mjs";const p=({text:p,traceEvents:d,avatarIcon:g,onAbort:f,showActivity:x=!1})=>r(n,{direction:"row",spacing:1,sx:{justifyContent:"flex-start"},children:[e(s,{icon:g,sx:{mt:.25}}),r(n,{spacing:1,children:[p?r(i,{sx:{borderRadius:" 0.25rem 1rem 1rem 1rem",border:"1px solid",borderColor:"primary.light",bgcolor:"background.default",color:"text.primary",px:1.75,py:1.25,lineHeight:1.6},children:[e(c,{content:p}),e(i,{sx:{display:"inline-block",height:16,bgcolor:"primary.main",verticalAlign:"text-bottom",animation:"pulse 1.2s ease-in-out infinite","@keyframes pulse":{"0%, 100%":{opacity:.35},"50%":{opacity:1}}}})]}):e(i,{sx:{borderRadius:"1rem 1rem 1rem 0.25rem",border:"1px solid",borderColor:"divider",bgcolor:"background.default",px:1.75,py:1.25},children:r(n,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[e(n,{direction:"row",spacing:.5,children:[0,150,300].map(r=>e(i,{component:"span",sx:{bgcolor:"primary.main",animation:"bounce 1s ease-in-out infinite",animationDelay:`${r}ms`,"@keyframes bounce":{"0%, 80%, 100%":{opacity:.35,transform:"translateY(0)"},"40%":{opacity:1,transform:"translateY(-1px)"}}}},r))}),e(m,{children:d.length>0?l(d):"Analyzing data sources…"})]})}),x&&d.length>0&&e(o,{isStreaming:!0,traceEvents:d,defaultExpanded:!0}),f&&r(a,{onClick:f,sx:{display:"inline-flex",alignItems:"center",gap:.5,fontSize:"0.625rem",color:"text.secondary","&:hover":{color:"error.main"},borderRadius:.5,px:.5},children:[e(t,{sx:{fontSize:11}}),"Stop generating"]})]})]});export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{Stack as e}from"../../Stack.mjs";import{Chip as t}from"../../Chip.mjs";const o=({prompts:o,onSelect:i})=>r(e,{direction:"row",spacing:1,sx:{flexWrap:"wrap",gap:1,justifyContent:"center",alignItems:"center"},children:o.map(e=>r(t,{label:e,onClick:()=>i(e),size:"medium",sx:{cursor:"pointer"}},e))});export{o as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as r,jsx as o}from"react/jsx-runtime";import{Box as a}from"../../Box.mjs";import{Stack as i}from"../../Stack.mjs";import{Caption as e}from"../../Typography.mjs";import t from"./ChatAvatar.mjs";const n=({traceLabel:n,avatarIcon:m})=>r(i,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[o(t,{icon:m,sx:{mt:.25}}),o(a,{sx:{borderRadius:"1rem 1rem 1rem 0.25rem",border:"1px solid",borderColor:"divider",bgcolor:"background.default",px:1.75,py:1.25},children:r(i,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[o(i,{direction:"row",spacing:.5,children:[0,150,300].map(r=>o(a,{component:"span",sx:{width:6,height:6,borderRadius:"50%",bgcolor:"primary.main",animation:"bounce 1s ease-in-out infinite",animationDelay:`${r}ms`,"@keyframes bounce":{"0%, 80%, 100%":{opacity:.35,transform:"translateY(0)"},"40%":{opacity:1,transform:"translateY(-1px)"}}}},r))}),o(e,{children:n||"Analyzing data sources…"})]})})]});export{n as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>{const n=e[e.length-1];if(!n)return"Analyzing data sources…";switch(n.type){case"thinking":return`Step ${n.step||"?"}: Reasoning…`;case"kb":return"searching"===n.status?"Searching knowledge base…":"Processing KB results…";case"tool":return`Using ${n.toolName||"tool"}…`;case"model":return"Running model invocation…";default:return"Processing…"}};export{e as latestTraceLabel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{PrimaryButton as i}from"../PrimaryButton.mjs";import o from"@mui/icons-material/ChatBubbleOutlineOutlined";const r=({onOpen:r,fabLabel:e})=>t(i,{onClick:r,startIcon:t(o,{sx:{fontSize:18}}),"aria-label":e,sx:{position:"fixed",bottom:24,right:24,zIndex:50},children:e});export{r as FABButton};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as o}from"react/jsx-runtime";import{FABButton as i}from"./FABButton.mjs";import{GlassPaper as n}from"../GlassPaper.mjs";import r from"./WidgetParts/WidgetBody.mjs";import s from"./WidgetParts/WidgetHeader.mjs";import a from"./WidgetParts/WidgetInput.mjs";import l from"@mui/icons-material/SmartToy";function m({title:m,subtitle:d,fabLabel:p,avatarIcon:c,placeholder:g,emptyTitle:f,emptyDescription:u,dataSources:x,suggestedPrompts:h,isOpen:v,isTyping:y,messages:b,streamingText:T,liveTraceEvents:w,showActivity:P=!1,onOpen:S,onClose:j,onSend:A,onAbort:W,onNewChat:I,onExpandToFullPage:C,hideFab:D=!1}){if(D)return null;const E=c??e(l,{sx:{fontSize:14,color:"#000"}});return t(o,{children:[v&&t(n,{elevation:8,sx:{boxShadow:e=>e.shadows[2],borderRadius:3,position:"fixed",bottom:24,right:24,zIndex:50,display:"flex",flexDirection:"column",width:380,maxHeight:"min(520px, 80vh)",overflow:"hidden",p:0,"& > div":{display:"flex",flexDirection:"column",flex:1,minHeight:0}},children:[e(s,{title:m,subtitle:d,onNewChat:I,onExpandToFullPage:C,onClose:j,resolvedAvatarIcon:E}),e(r,{avatarIcon:c,isTyping:y,liveTraceEvents:w,messages:b,onAbort:W,showActivity:P,streamingText:T,emptyTitle:f,emptyDescription:u,dataSources:x,suggestedPrompts:h,onSend:A}),e(a,{placeholder:g,isTyping:y,onSend:A})]}),!v&&e(i,{onOpen:S,fabLabel:p})]})}export{m as NexusChatWidget};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{Box as i}from"../../Box.mjs";import"@mui/icons-material/SmartToy";import"@mui/material";import"../../../theme/tokens.mjs";import"../../Typography.mjs";import"../../Code.mjs";import"react";import"@mui/icons-material/CheckCircle";import"@mui/icons-material/ExpandMore";import"@mui/icons-material/ExpandLess";import"@mui/icons-material/OpenInNew";import"@mui/material/styles";import"@mui/icons-material/StopCircle";import e from"../ChatComponents/MessageList.mjs";import o from"../ChatComponents/EmptyState.mjs";const m=({avatarIcon:m,isTyping:r,liveTraceEvents:s,messages:a,onAbort:n,showActivity:p,streamingText:c,emptyTitle:l,emptyDescription:u,dataSources:g,suggestedPrompts:y,onSend:d})=>t(i,{sx:{flex:1,minHeight:0,display:"flex",flexDirection:"column",overflowY:"auto"},children:a.length>0?t(e,{messages:a,isTyping:r,streamingText:c,liveTraceEvents:s,onAbort:n,avatarIcon:m,showActivity:p}):t(o,{title:l,description:u,dataSources:g,prompts:y.slice(0,4),avatarIcon:m,onSelect:d})});export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as o,jsx as i}from"react/jsx-runtime";import{Avatar as e}from"../../Avatar.mjs";import{Body1 as r,Caption as t}from"../../Typography.mjs";import{Stack as l}from"../../Stack.mjs";import{colours as n}from"../../../theme/tokens.mjs";import{IconButton as m}from"../../IconButton.mjs";import s from"@mui/icons-material/Add";import a from"@mui/icons-material/Close";import c from"@mui/icons-material/OpenInFull";const d=({onClose:d,onExpandToFullPage:p,onNewChat:f,resolvedAvatarIcon:h,subtitle:x,title:u})=>o(l,{direction:"row",spacing:1,sx:{backgroundColor:"background.paper",borderBottom:"1px solid",borderColor:"divider",px:2,py:1.5,flexShrink:0},children:[i(e,{size:"sm",sx:{bgcolor:n.brilliantGreen},children:h}),o(l,{direction:"column",spacing:0,sx:{flex:1,minWidth:0},children:[i(r,{sx:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u}),x&&i(t,{children:x})]}),i(m,{title:"New chat",size:"small",onClick:f,children:i(s,{sx:{fontSize:16}})}),p&&i(m,{title:"Open full view",size:"small",onClick:p,children:i(c,{sx:{fontSize:14}})}),i(m,{title:"Close",size:"small",onClick:d,children:i(a,{sx:{fontSize:16}})})]});export{d as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{useState as o}from"react";import{Box as i}from"../../Box.mjs";import{IconButton as t}from"../../IconButton.mjs";import{Paper as n}from"../../Paper.mjs";import{TextField as l}from"../../TextField.mjs";import a from"@mui/icons-material/Send";const d=({onSend:d,disabled:s=!1,placeholder:p="Ask about campaigns, competitors, performance…"})=>{const[m,c]=o("");return e(i,{component:"form",onSubmit:e=>{e.preventDefault();const r=m.trim();r&&!s&&(d(r),c(""))},sx:{display:"flex",alignItems:"flex-end",gap:1},children:r(n,{variant:"outlined",sx:{display:"flex",flex:1,alignItems:"flex-end",gap:1,px:1.5,py:.75,borderRadius:2},children:[e(l,{variant:"standard",fullWidth:!0,multiline:!0,maxRows:5,value:m,onChange:e=>c(e.target.value),onKeyDown:e=>{if("Enter"===e.key&&!e.shiftKey){e.preventDefault();const r=m.trim();if(!r||s)return;d(r),c("")}},placeholder:p,disabled:s,slotProps:{input:{disableUnderline:!0}},sx:{"& .MuiInputBase-input":{p:0,fontSize:"0.875rem",color:"text.primary",resize:"none","&::placeholder":{color:"text.disabled",opacity:1}}}}),e(t,{type:"submit",title:"Send message",disabled:!m.trim()||s,variant:"filled",size:"small",sx:{flexShrink:0},children:e(a,{sx:{fontSize:13}})})]})})},s=({placeholder:r,isTyping:o,onSend:t})=>e(i,{sx:{backgroundColor:"background.paper",borderTop:"1px solid",borderColor:"divider",p:1.5,flexShrink:0},children:e(d,{onSend:t,disabled:o,placeholder:r})});export{s as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const o="1.8.
|
|
1
|
+
const o="1.8.2";export{o as SAGE_NEXUS_UI_VERSION};
|
package/dist/index.d.ts
CHANGED
|
@@ -554,6 +554,33 @@ declare function NexusLineChart({ sx, xAxis, grid, series, slots, children, ...p
|
|
|
554
554
|
type NexusBarChartProps = Omit<BarChartProps, "colors">;
|
|
555
555
|
declare function NexusBarChart(props: NexusBarChartProps): react_jsx_runtime.JSX.Element;
|
|
556
556
|
|
|
557
|
+
interface ActivitySummary {
|
|
558
|
+
thinkingSteps: number;
|
|
559
|
+
kbSearches: number;
|
|
560
|
+
toolCalls: number;
|
|
561
|
+
inputTokens: number;
|
|
562
|
+
outputTokens: number;
|
|
563
|
+
}
|
|
564
|
+
interface LatencyMetrics {
|
|
565
|
+
totalMs: number;
|
|
566
|
+
ttftMs: number | null;
|
|
567
|
+
totalSeconds: string;
|
|
568
|
+
ttftSeconds: string | null;
|
|
569
|
+
}
|
|
570
|
+
interface ChatMessage {
|
|
571
|
+
id: string;
|
|
572
|
+
role: "user" | "assistant";
|
|
573
|
+
content: string;
|
|
574
|
+
timestamp: Date;
|
|
575
|
+
sources?: string[];
|
|
576
|
+
isThinking?: boolean;
|
|
577
|
+
/** Trace events attached to a completed assistant message */
|
|
578
|
+
traceEvents?: TraceEvent[];
|
|
579
|
+
/** Activity summary produced after stream completion */
|
|
580
|
+
activitySummary?: ActivitySummary;
|
|
581
|
+
/** Latency metrics attached after stream completion */
|
|
582
|
+
latency?: LatencyMetrics;
|
|
583
|
+
}
|
|
557
584
|
interface TraceEvent {
|
|
558
585
|
type: "thinking" | "kb" | "tool" | "model";
|
|
559
586
|
step?: number;
|
|
@@ -572,43 +599,15 @@ interface TraceEvent {
|
|
|
572
599
|
outputTokens?: number;
|
|
573
600
|
timestamp?: string;
|
|
574
601
|
}
|
|
575
|
-
interface ChatMessage {
|
|
576
|
-
id: string;
|
|
577
|
-
role: "user" | "assistant";
|
|
578
|
-
content: string;
|
|
579
|
-
timestamp: Date;
|
|
580
|
-
sources?: string[];
|
|
581
|
-
isThinking?: boolean;
|
|
582
|
-
/** Trace events attached to a completed assistant message */
|
|
583
|
-
traceEvents?: TraceEvent[];
|
|
584
|
-
/** Activity summary produced after stream completion */
|
|
585
|
-
activitySummary?: {
|
|
586
|
-
thinkingSteps: number;
|
|
587
|
-
kbSearches: number;
|
|
588
|
-
toolCalls: number;
|
|
589
|
-
inputTokens: number;
|
|
590
|
-
outputTokens: number;
|
|
591
|
-
};
|
|
592
|
-
/** Latency metrics attached after stream completion */
|
|
593
|
-
latency?: {
|
|
594
|
-
totalMs: number;
|
|
595
|
-
ttftMs: number | null;
|
|
596
|
-
totalSeconds: string;
|
|
597
|
-
ttftSeconds: string | null;
|
|
598
|
-
};
|
|
599
|
-
}
|
|
600
602
|
|
|
601
603
|
interface NexusChatWidgetProps {
|
|
602
604
|
title: string;
|
|
603
605
|
subtitle?: string;
|
|
604
606
|
fabLabel: string;
|
|
605
|
-
/** Custom icon rendered inside the avatar. Defaults to SmartToyIcon. */
|
|
606
607
|
avatarIcon?: React.ReactNode;
|
|
607
|
-
/** Placeholder text for the chat input */
|
|
608
608
|
placeholder?: string;
|
|
609
609
|
emptyTitle: string;
|
|
610
610
|
emptyDescription: string;
|
|
611
|
-
/** Chip list of data sources shown in empty state */
|
|
612
611
|
dataSources?: string[];
|
|
613
612
|
suggestedPrompts: string[];
|
|
614
613
|
isOpen: boolean;
|
|
@@ -616,34 +615,31 @@ interface NexusChatWidgetProps {
|
|
|
616
615
|
messages: ChatMessage[];
|
|
617
616
|
streamingText?: string;
|
|
618
617
|
liveTraceEvents?: TraceEvent[];
|
|
619
|
-
/** Show AgentActivityWidget inline with messages. Default false. */
|
|
620
618
|
showActivity?: boolean;
|
|
621
619
|
onOpen: () => void;
|
|
622
620
|
onClose: () => void;
|
|
623
621
|
onSend: (message: string) => void;
|
|
624
622
|
onAbort?: () => void;
|
|
625
623
|
onNewChat: () => void;
|
|
626
|
-
/** If provided, the Expand to full view button is shown */
|
|
627
624
|
onExpandToFullPage?: () => void;
|
|
628
|
-
/** Pass true to hide the FAB (e.g. when on the full-page chat route).
|
|
625
|
+
/** hideFab - Pass true to hide the FAB (e.g. when on the full-page chat route).
|
|
629
626
|
* Consumer computes this: hideFab={pathname === ROUTES.AGENT} */
|
|
630
627
|
hideFab?: boolean;
|
|
631
628
|
}
|
|
632
629
|
declare function NexusChatWidget({ title, subtitle, fabLabel, avatarIcon, placeholder, emptyTitle, emptyDescription, dataSources, suggestedPrompts, isOpen, isTyping, messages, streamingText, liveTraceEvents, showActivity, onOpen, onClose, onSend, onAbort, onNewChat, onExpandToFullPage, hideFab, }: NexusChatWidgetProps): react_jsx_runtime.JSX.Element | null;
|
|
633
630
|
|
|
634
|
-
|
|
631
|
+
interface MarkdownContentProps {
|
|
635
632
|
content: string;
|
|
636
|
-
}
|
|
637
|
-
declare
|
|
633
|
+
}
|
|
634
|
+
declare const MarkdownContent: ({ content }: MarkdownContentProps) => react_jsx_runtime.JSX.Element;
|
|
635
|
+
|
|
636
|
+
interface SuggestedPromptsProps {
|
|
638
637
|
prompts: string[];
|
|
639
|
-
onSelect: (
|
|
640
|
-
}
|
|
641
|
-
declare
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
placeholder?: string;
|
|
645
|
-
}): react_jsx_runtime.JSX.Element;
|
|
646
|
-
declare function MessageList({ messages, isTyping, streamingText, liveTraceEvents, onAbort, avatarIcon, showActivity, }: {
|
|
638
|
+
onSelect: (prompt: string) => void;
|
|
639
|
+
}
|
|
640
|
+
declare const SuggestedPrompts: ({ prompts, onSelect }: SuggestedPromptsProps) => react_jsx_runtime.JSX.Element;
|
|
641
|
+
|
|
642
|
+
interface MessageListProps {
|
|
647
643
|
messages: ChatMessage[];
|
|
648
644
|
isTyping: boolean;
|
|
649
645
|
streamingText?: string;
|
|
@@ -651,18 +647,23 @@ declare function MessageList({ messages, isTyping, streamingText, liveTraceEvent
|
|
|
651
647
|
onAbort?: () => void;
|
|
652
648
|
avatarIcon?: React.ReactNode;
|
|
653
649
|
showActivity?: boolean;
|
|
654
|
-
}
|
|
655
|
-
declare
|
|
650
|
+
}
|
|
651
|
+
declare const MessageList: ({ messages, isTyping, streamingText, liveTraceEvents, onAbort, avatarIcon, showActivity, }: MessageListProps) => react_jsx_runtime.JSX.Element;
|
|
652
|
+
|
|
653
|
+
interface EmptyStateProps {
|
|
656
654
|
title: string;
|
|
657
655
|
description: string;
|
|
658
656
|
dataSources?: string[];
|
|
659
657
|
prompts: string[];
|
|
660
658
|
avatarIcon?: React.ReactNode;
|
|
661
|
-
onSelect: (
|
|
662
|
-
}
|
|
663
|
-
declare
|
|
659
|
+
onSelect: (prompt: string) => void;
|
|
660
|
+
}
|
|
661
|
+
declare const EmptyState: ({ title, description, dataSources, prompts, avatarIcon, onSelect, }: EmptyStateProps) => react_jsx_runtime.JSX.Element;
|
|
662
|
+
|
|
663
|
+
interface SourceCitationsProps {
|
|
664
664
|
sources: string[];
|
|
665
|
-
}
|
|
665
|
+
}
|
|
666
|
+
declare const SourceCitations: ({ sources }: SourceCitationsProps) => react_jsx_runtime.JSX.Element | null;
|
|
666
667
|
|
|
667
668
|
declare const getFaviconUrls: (versioned?: boolean) => {
|
|
668
669
|
svg: string;
|
|
@@ -786,5 +787,5 @@ declare const getGradientBorderStyles: (theme: Theme, options?: GradientBorderOp
|
|
|
786
787
|
declare const leftPipe: SxProps$2<Theme>;
|
|
787
788
|
declare const expandableText: (isExpanded: boolean) => SxProps$2<Theme>;
|
|
788
789
|
|
|
789
|
-
export { AccordionGroup, AccordionGroupItem, AccordionSingle, ActionBar, ActionBarTitle, AiButton, AiCard, AiChip, AiGlassCard, AiGlassPaper, AiPaper, Alert, Avatar, Body1, Body2, Box, ButtonBase, Caption, Card,
|
|
790
|
+
export { AccordionGroup, AccordionGroupItem, AccordionSingle, ActionBar, ActionBarTitle, AiButton, AiCard, AiChip, AiGlassCard, AiGlassPaper, AiPaper, Alert, Avatar, Body1, Body2, Box, ButtonBase, Caption, Card, CheckboxGroup, Chip, Code, Collapse, Container, DateRangeFilter, DateRangePicker, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Divider, EmptyState, FaviconLinks, GlassCard, GlassPaper, GlassPaperAsync, GreenWaveBackground, Grid, H1, H2, H3, H4, IconButton, Link, LoadingSpinnerNexus, LocationMultiSelect, LogoOptions, MarkdownContent, MessageList, MuiAppThemeProvider, NexusBarChart, NexusChatWidget, NexusDataGrid, NexusHome, NexusLineChart, NexusLogo, Paper, PrimaryButton, PrimaryButtonLink, RagChip, RagDot, SearchInput, SecondaryButton, SecondaryButtonLink, Select, SideBlade, Skeleton, SkillChip, SkipLink, SourceCitations, Stack, StatusBadge, StatusChip, SuggestedPrompts, Switch, Tab, Tabs, TextField, ThemeModeContext, ThemeModeProvider, ThemeToggle, Tooltip, colours, createSageTheme, expandableText, fontSageHeadline, fontSageText, fontSageUI, formatDate, getFaviconUrls, getFiscalPeriod, getGradientBorderStyles, getModeTokens, gradients, leftPipe, useThemeMode, useTokens };
|
|
790
791
|
export type { AccordionGroupItemProps, AccordionGroupProps, AccordionSingleProps, AiButtonProps, AiCardProps, AiChipProps, AiGlassCardProps, AiGlassPaperProps, AiPaperProps, AvatarProps, AvatarSize, AvatarVariant, CardProps, CardTrend, ChatMessage, DateRangeFilterProps, DateRangePickerProps, DateRangePreset, DateRangeValue, GlassCardProps, GlassPaperAsyncProps, GlassPaperProps, GradientBorderOptions, GreenWaveBackgroundProps, IconButtonProps, IconButtonVariant, LinkProps, LoadingSpinnerNexusProps, ModeTokens, NexusBarChartProps, NexusChatWidgetProps, NexusLineChartProps, PrimaryButtonLinkProps, PrimaryButtonProps, SecondaryButtonLinkProps, SecondaryButtonProps, SelectOption, SelectProps, SideBladeProps, SkeletonProps, SkipLinkProps, StatusBadgeProps, StatusBadgeVariant, ThemeMode, TooltipProps, TraceEvent };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{formatDate,getFiscalPeriod}from"./components/DateFormats.mjs";export{DateRangeFilter}from"./components/DateRangeFilter.mjs";export{DateRangePicker}from"./components/DateRangePicker.mjs";export{Alert}from"./components/Alert.mjs";export{Code}from"./components/Code.mjs";export{Container}from"./components/Container.mjs";export{Grid}from"./components/Grid.mjs";export{Link}from"./components/Link.mjs";export{Select}from"./components/Select.mjs";export{SkipLink}from"./components/SkipLink.mjs";export{StatusBadge}from"./components/StatusBadge.mjs";export{Switch}from"./components/Switch.mjs";export{ActionBarTitle,Body1,Body2,Caption,H1,H2,H3,H4}from"./components/Typography.mjs";export{ActionBar}from"./components/ActionBar.mjs";export{AccordionGroup,AccordionGroupItem}from"./components/AccordionGroup.mjs";export{AccordionSingle}from"./components/AccordionSingle.mjs";export{AiButton}from"./components/AiButton.mjs";export{AiChip}from"./components/AiChip.mjs";export{AiCard}from"./components/AiCard.mjs";export{AiGlassCard}from"./components/AiGlassCard.mjs";export{AiPaper}from"./components/AiPaper.mjs";export{AiGlassPaper}from"./components/AiGlassPaper.mjs";export{Box}from"./components/Box.mjs";export{Collapse}from"./components/Collapse.mjs";export{NexusDataGrid}from"./components/NexusDataGrid.mjs";export{ButtonBase}from"./components/ButtonBase.mjs";export{Card}from"./components/Card.mjs";export{CheckboxGroup}from"./components/CheckboxGroup.mjs";export{Chip}from"./components/Chip.mjs";export{Dialog,DialogActions,DialogContent,DialogContentText,DialogTitle}from"./components/Dialog.mjs";export{Divider}from"./components/Divider.mjs";export{GlassCard}from"./components/GlassCard.mjs";export{GlassPaper}from"./components/GlassPaper.mjs";export{GlassPaperAsync}from"./components/GlassPaperAsync.mjs";export{GreenWaveBackground}from"./components/GreenWaveBackground.mjs";export{IconButton}from"./components/IconButton.mjs";export{Avatar}from"./components/Avatar.mjs";export{LoadingSpinnerNexus}from"./components/LoadingSpinnerNexus.mjs";export{LocationMultiSelect}from"./components/LocationMultiSelect.mjs";export{LogoOptions}from"./components/LogoOptions/index.mjs";export{NexusHome}from"./components/NexusHome.mjs";export{default as NexusLogo}from"./components/NexusLogo.mjs";export{Paper}from"./components/Paper.mjs";export{PrimaryButton}from"./components/PrimaryButton.mjs";export{PrimaryButtonLink}from"./components/PrimaryButtonLink.mjs";export{SecondaryButton}from"./components/SecondaryButton.mjs";export{RagDot}from"./components/RagDot.mjs";export{RagChip}from"./components/RagChip.mjs";export{SecondaryButtonLink}from"./components/SecondaryButtonLink.mjs";export{SearchInput}from"./components/SearchInput.mjs";export{SideBlade}from"./components/SideBlade.mjs";export{Skeleton}from"./components/Skeleton.mjs";export{SkillChip}from"./components/SkillChip.mjs";export{Stack}from"./components/Stack.mjs";export{StatusChip}from"./components/StatusChip.mjs";export{Tab}from"./components/Tab.mjs";export{Tabs}from"./components/Tabs.mjs";export{TextField}from"./components/TextField.mjs";export{ThemeToggle}from"./components/ThemeToggle.mjs";export{Tooltip}from"./components/Tooltip.mjs";export{NexusLineChart}from"./components/NexusLineChart.mjs";export{NexusBarChart}from"./components/NexusBarChart.mjs";export{NexusChatWidget}from"./components/NexusChatWidget/NexusChatWidget.mjs";export{
|
|
1
|
+
export{formatDate,getFiscalPeriod}from"./components/DateFormats.mjs";export{DateRangeFilter}from"./components/DateRangeFilter.mjs";export{DateRangePicker}from"./components/DateRangePicker.mjs";export{Alert}from"./components/Alert.mjs";export{Code}from"./components/Code.mjs";export{Container}from"./components/Container.mjs";export{Grid}from"./components/Grid.mjs";export{Link}from"./components/Link.mjs";export{Select}from"./components/Select.mjs";export{SkipLink}from"./components/SkipLink.mjs";export{StatusBadge}from"./components/StatusBadge.mjs";export{Switch}from"./components/Switch.mjs";export{ActionBarTitle,Body1,Body2,Caption,H1,H2,H3,H4}from"./components/Typography.mjs";export{ActionBar}from"./components/ActionBar.mjs";export{AccordionGroup,AccordionGroupItem}from"./components/AccordionGroup.mjs";export{AccordionSingle}from"./components/AccordionSingle.mjs";export{AiButton}from"./components/AiButton.mjs";export{AiChip}from"./components/AiChip.mjs";export{AiCard}from"./components/AiCard.mjs";export{AiGlassCard}from"./components/AiGlassCard.mjs";export{AiPaper}from"./components/AiPaper.mjs";export{AiGlassPaper}from"./components/AiGlassPaper.mjs";export{Box}from"./components/Box.mjs";export{Collapse}from"./components/Collapse.mjs";export{NexusDataGrid}from"./components/NexusDataGrid.mjs";export{ButtonBase}from"./components/ButtonBase.mjs";export{Card}from"./components/Card.mjs";export{CheckboxGroup}from"./components/CheckboxGroup.mjs";export{Chip}from"./components/Chip.mjs";export{Dialog,DialogActions,DialogContent,DialogContentText,DialogTitle}from"./components/Dialog.mjs";export{Divider}from"./components/Divider.mjs";export{GlassCard}from"./components/GlassCard.mjs";export{GlassPaper}from"./components/GlassPaper.mjs";export{GlassPaperAsync}from"./components/GlassPaperAsync.mjs";export{GreenWaveBackground}from"./components/GreenWaveBackground.mjs";export{IconButton}from"./components/IconButton.mjs";export{Avatar}from"./components/Avatar.mjs";export{LoadingSpinnerNexus}from"./components/LoadingSpinnerNexus.mjs";export{LocationMultiSelect}from"./components/LocationMultiSelect.mjs";export{LogoOptions}from"./components/LogoOptions/index.mjs";export{NexusHome}from"./components/NexusHome.mjs";export{default as NexusLogo}from"./components/NexusLogo.mjs";export{Paper}from"./components/Paper.mjs";export{PrimaryButton}from"./components/PrimaryButton.mjs";export{PrimaryButtonLink}from"./components/PrimaryButtonLink.mjs";export{SecondaryButton}from"./components/SecondaryButton.mjs";export{RagDot}from"./components/RagDot.mjs";export{RagChip}from"./components/RagChip.mjs";export{SecondaryButtonLink}from"./components/SecondaryButtonLink.mjs";export{SearchInput}from"./components/SearchInput.mjs";export{SideBlade}from"./components/SideBlade.mjs";export{Skeleton}from"./components/Skeleton.mjs";export{SkillChip}from"./components/SkillChip.mjs";export{Stack}from"./components/Stack.mjs";export{StatusChip}from"./components/StatusChip.mjs";export{Tab}from"./components/Tab.mjs";export{Tabs}from"./components/Tabs.mjs";export{TextField}from"./components/TextField.mjs";export{ThemeToggle}from"./components/ThemeToggle.mjs";export{Tooltip}from"./components/Tooltip.mjs";export{NexusLineChart}from"./components/NexusLineChart.mjs";export{NexusBarChart}from"./components/NexusBarChart.mjs";export{NexusChatWidget}from"./components/NexusChatWidget/NexusChatWidget.mjs";import"react/jsx-runtime";import"@mui/icons-material/ChatBubbleOutlineOutlined";import"@mui/icons-material/SmartToy";export{colours,fontSageHeadline,fontSageText,fontSageUI,getModeTokens,gradients}from"./theme/tokens.mjs";export{default as MarkdownContent}from"./components/NexusChatWidget/ChatComponents/MarkdownContent.mjs";import"react";import"@mui/icons-material/CheckCircle";import"@mui/icons-material/ExpandMore";import"@mui/icons-material/ExpandLess";import"@mui/icons-material/OpenInNew";import"@mui/icons-material/StopCircle";export{default as SuggestedPrompts}from"./components/NexusChatWidget/ChatComponents/SuggestedPrompts.mjs";export{default as MessageList}from"./components/NexusChatWidget/ChatComponents/MessageList.mjs";export{default as EmptyState}from"./components/NexusChatWidget/ChatComponents/EmptyState.mjs";export{default as SourceCitations}from"./components/NexusChatWidget/ChatComponents/SourceCitations.mjs";export{default as nexusLogoNode}from"./assets/images/nexus-logo-node.svg.mjs";export{default as nexusLogoFavicon}from"./assets/images/nexus-logo-favicon.svg.mjs";export{default as nexusLogoIco}from"./assets/images/favicon.ico.mjs";export{getFaviconUrls}from"./assets/images/urls.mjs";export{FaviconLinks}from"./components/FaviconLinks.mjs";export{createSageTheme}from"./theme/sageTheme.mjs";export{useTokens}from"./theme/useTokens.mjs";export{default as MuiAppThemeProvider}from"./theme/MuiAppThemeProvider.mjs";export{ThemeModeContext,ThemeModeProvider,useThemeMode}from"./theme/ThemeContext.mjs";export{AlertTitle,MenuItem,alpha,useMediaQuery,useTheme}from"@mui/material";export{expandableText,getGradientBorderStyles,leftPipe}from"./theme/sxHelpers.mjs";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as o,useMemo as n}from"react";import i from"@mui/icons-material/MonitorHeart";import r from"@mui/icons-material/Search";import s from"@mui/icons-material/Build";import l from"@mui/icons-material/Memory";import a from"@mui/icons-material/CheckCircle";import c from"@mui/icons-material/ExpandMore";import m from"@mui/icons-material/ExpandLess";import p from"@mui/icons-material/Bolt";import u from"@mui/icons-material/AccessTime";import d from"@mui/icons-material/OpenInNew";import{Box as f}from"../Box.mjs";import{Stack as x}from"../Stack.mjs";import{Paper as g}from"../Paper.mjs";import{ButtonBase as h}from"../ButtonBase.mjs";import{Caption as y,Body2 as k}from"../Typography.mjs";import{Code as S}from"../Code.mjs";import{Link as b}from"../Link.mjs";import{LoadingSpinnerNexus as T}from"../LoadingSpinnerNexus.mjs";function w(e){switch(e.type){case"thinking":return{type:"thinking",title:`Step ${e.step||"?"}: Reasoning`,text:e.text,status:"complete"};case"kb":return{type:"kb",title:"searching"===e.status?"Searching Knowledge Base…":"Knowledge Base Results",text:e.query?`Query: "${e.query}"`:void 0,status:e.status,sources:e.sources};case"tool":return{type:"tool",title:e.toolName||"Tool Call",text:e.output,status:e.status,toolName:e.toolName};case"model":return{type:"model",title:"Model Invocation",inputTokens:e.inputTokens,outputTokens:e.outputTokens,status:"complete"};default:return null}}const z={thinking:i,kb:r,tool:s,model:l},v={thinking:{color:"#7C3AED"},kb:{color:"#0B63CE"},tool:{color:"#D97706"},model:{color:"#0F766E"}};function C({isStreaming:d,traceEvents:k,defaultExpanded:S=!1,latency:b,activitySummary:z,compact:v=!1}){const[C,B]=o(S),E=n(()=>k.map(w).filter(Boolean),[k]),N=E.filter(e=>"thinking"===e.type).length,R=E.filter(e=>"kb"===e.type).length,W=E.filter(e=>"tool"===e.type).length,M=E.filter(e=>"model"===e.type),L=M.reduce((e,t)=>e+(t.inputTokens||0),0),$=M.reduce((e,t)=>e+(t.outputTokens||0),0),A=z||{inputTokens:L,outputTokens:$};return 0!==k.length||d?e(g,{variant:"outlined",sx:{borderColor:d?"rgba(0, 169, 92, 0.30)":"divider",bgcolor:d?"rgba(0, 169, 92, 0.03)":"background.paper"},children:[e(h,{onClick:()=>B(e=>!e),sx:{width:"100%",display:"flex",alignItems:"center",gap:1,px:1.5,py:1,justifyContent:"flex-start"},children:[d?t(T,{variant:"small"}):t(f,{sx:{display:"inline-flex",color:"primary.main"},children:t(a,{sx:{fontSize:14}})}),t(y,{sx:{fontWeight:600,fontSize:v?"0.6875rem":"0.75rem"},children:d?"Agent is working…":"Response generated"}),e(x,{direction:"row",spacing:.75,sx:{alignItems:"center",ml:"auto",mr:.5},children:[N>0&&t(I,{icon:i,count:N,label:"thinking"}),R>0&&t(I,{icon:r,count:R,label:"KB"}),W>0&&t(I,{icon:s,count:W,label:"tools"})]}),t(f,C?{sx:{display:"inline-flex",color:"text.secondary"},children:t(m,{sx:{fontSize:14}})}:{sx:{display:"inline-flex",color:"text.secondary"},children:t(c,{sx:{fontSize:14}})})]}),C&&e(x,{spacing:1.5,sx:{borderTop:1,borderColor:"divider",px:1.5,py:1.25,maxHeight:256,overflowY:"auto"},children:[0===E.length?e(x,{direction:"row",spacing:1,sx:{alignItems:"center",justifyContent:"center",py:2,color:"text.secondary"},children:[t(p,{sx:{fontSize:16}}),t(y,{children:"Waiting for agent activity…"})]}):E.map((e,o)=>t(j,{activity:e,compact:v},o)),!d&&(A.inputTokens>0||A.outputTokens>0)&&e(x,{direction:"row",spacing:.75,sx:{alignItems:"center",pt:1.5,borderTop:1,borderColor:"divider",color:"text.secondary"},children:[t(l,{sx:{fontSize:11}}),e(y,{children:[A.inputTokens," input / ",A.outputTokens," output tokens"]})]}),!d&&b&&e(x,{direction:"row",spacing:.75,sx:{alignItems:"center",color:"text.secondary"},children:[t(u,{sx:{fontSize:11}}),e(y,{children:[b.totalSeconds,"s total",b.ttftSeconds&&` (${b.ttftSeconds}s to first token)`]})]})]})]}):null}function I({icon:o,count:n,label:i}){return e(f,{component:"span",sx:{display:"inline-flex",alignItems:"center",gap:.5,px:.75,py:.25,borderRadius:999,bgcolor:"action.hover",color:"text.secondary",fontSize:"0.5625rem"},children:[t(o,{sx:{fontSize:9}}),n," ",i]})}function j({activity:n,compact:i=!1}){const[r,s]=o(!1),l=z[n.type]||p,a=v[n.type]||{color:"text.secondary"},c=n.sources||[],m=r?c:c.slice(0,3),u=Math.max(0,c.length-3);return e(x,{direction:"row",spacing:1,sx:{py:.5},children:[t(f,{sx:{mt:.25,flexShrink:0,...a},children:t(l,{sx:{fontSize:i?12:14}})}),e(x,{spacing:.5,sx:{flex:1,minWidth:0},children:[e(x,{direction:"row",spacing:.75,sx:{alignItems:"center",flexWrap:"wrap"},children:[t(y,{sx:{fontWeight:600,fontSize:i?"0.625rem":"0.6875rem"},children:n.title}),n.status&&t(f,{component:"span",sx:{px:.75,py:.125,borderRadius:999,fontSize:"0.5rem",bgcolor:"complete"===n.status||"invoking"===n.status?"rgba(0, 169, 92, 0.10)":"searching"===n.status?"rgba(11, 99, 206, 0.10)":"action.hover",color:"complete"===n.status||"invoking"===n.status?"primary.main":"searching"===n.status?"#0B63CE":"text.secondary"},children:n.status})]}),n.text&&t(k,{sx:{fontSize:i?"0.5625rem":"0.625rem",lineHeight:1.5},children:n.text}),"kb"===n.type&&c.length>0&&e(x,{direction:"row",spacing:.5,sx:{flexWrap:"wrap",mt:.25},children:[m.map((e,o)=>t(B,{source:e.source},o)),u>0&&t(h,{onClick:()=>s(e=>!e),sx:{color:"primary.main",fontSize:"0.5rem"},children:r?"Show less":`+${u} more`})]}),"tool"===n.type&&n.toolName&&t(S,{sx:{display:"inline-flex",alignSelf:"flex-start",fontSize:"0.5rem"},children:n.toolName}),"model"===n.type&&(n.inputTokens||n.outputTokens)&&e(y,{sx:{fontSize:"0.5625rem"},children:[n.inputTokens," in / ",n.outputTokens," out"]})]})]})}function B({source:o}){const n=o.startsWith("http"),i=n?new URL(o).pathname.split("/").pop()||o:o.split("/").pop()||o;return n?e(b,{href:o,openInNewTab:!0,sx:{display:"inline-flex",alignItems:"center",gap:.5,px:.5,py:.125,borderRadius:.5,bgcolor:"action.hover",fontSize:"0.5rem",textDecoration:"none"},children:[t(d,{sx:{fontSize:7}}),i]}):t(S,{sx:{display:"inline-flex",alignItems:"center",gap:.5,fontSize:"0.5rem"},children:i})}export{C as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as r}from"react/jsx-runtime";import{useState as n,useRef as t,useEffect as i}from"react";import o from"@mui/icons-material/SmartToy";import a from"@mui/icons-material/Send";import l from"@mui/icons-material/StopCircle";import s from"./AgentActivityWidget.mjs";import{Box as c}from"../Box.mjs";import{Stack as m}from"../Stack.mjs";import{Paper as d}from"../Paper.mjs";import{ButtonBase as p}from"../ButtonBase.mjs";import{IconButton as u}from"../IconButton.mjs";import{TextField as h}from"../TextField.mjs";import{Chip as x}from"../Chip.mjs";import{Avatar as f}from"../Avatar.mjs";import{H3 as g,Body1 as y,H4 as b,Caption as v}from"../Typography.mjs";import{Code as S}from"../Code.mjs";import{colours as w}from"../../theme/tokens.mjs";import{Markdown as k}from"../../node_modules/react-markdown/lib/index.mjs";import I from"../../node_modules/remark-gfm/lib/index.mjs";const j={sm:14,md:20,lg:26};function A({size:r="sm",icon:n,sx:t}){return e(f,{size:r,sx:[{bgcolor:w.brilliantGreen},...Array.isArray(t)?t:t?[t]:[]],children:n??e(o,{sx:{fontSize:j[r],color:"#000"}})})}function C({content:r}){return e(k,{remarkPlugins:[I],components:{p:({children:r})=>e(y,{sx:{mb:1,"&:last-child":{mb:0}},children:r}),strong:({children:r})=>e(c,{component:"strong",sx:{fontWeight:700},children:r}),em:({children:r})=>e(c,{component:"em",sx:{fontStyle:"italic"},children:r}),ul:({children:r})=>e(c,{component:"ul",sx:{pl:2.5,my:2,display:"grid",gap:.5,listStyleType:"disc"},children:r}),ol:({children:r})=>e(c,{component:"ol",sx:{pl:2.5,my:2,display:"grid",gap:.5,listStyleType:"decimal"},children:r}),li:({children:r})=>e(c,{component:"li",children:r}),h1:({children:r})=>e(g,{sx:{mb:1,mt:.5},children:r}),h2:({children:r})=>e(b,{sx:{mb:.5,mt:.5},children:r}),h3:({children:r})=>e(b,{sx:{mb:.5,mt:.5},children:r}),code:({children:r})=>e(S,{children:r}),pre:({children:r})=>e(d,{component:"pre",variant:"outlined",sx:{my:2,p:1.5,overflowX:"auto",fontFamily:'"SFMono-Regular", "Consolas", "Liberation Mono", "Menlo", monospace',fontSize:"0.75rem",lineHeight:1.5,bgcolor:"action.hover"},children:r}),hr:()=>e(c,{component:"hr",sx:{my:3,border:0,borderTop:1,borderColor:"divider"}})},children:r})}function z({message:n,avatarIcon:t,showActivity:i=!1}){const o="user"===n.role;return r(c,{sx:{display:"flex",gap:1,justifyContent:o?"flex-end":"flex-start"},children:[!o&&e(A,{icon:t,sx:{mt:.25}}),r(c,{sx:{maxWidth:"80%",display:"flex",flexDirection:"column",gap:1},children:[e(c,{sx:{borderRadius:o?"1rem 0.25rem 1rem 1rem":"0.25rem 1rem 1rem 1rem",px:1.75,py:1.25,bgcolor:o?"primary.main":"background.default",color:o?"primary.contrastText":"text.primary",border:o?"none":"1px solid",borderColor:"divider",whiteSpace:o?"pre-wrap":"normal",lineHeight:1.6},children:o?n.content:e(C,{content:n.content})}),i&&!o&&n.traceEvents&&n.traceEvents.length>0&&e(s,{isStreaming:!1,traceEvents:n.traceEvents,latency:n.latency,activitySummary:n.activitySummary,compact:!0})]})]})}function R({text:n,traceEvents:t,avatarIcon:i,onAbort:o,showActivity:a=!1}){return r(m,{direction:"row",spacing:1,sx:{justifyContent:"flex-start"},children:[e(A,{icon:i,sx:{mt:.25}}),r(m,{sx:{maxWidth:"80%"},spacing:1,children:[n?r(c,{sx:{borderRadius:" 0.25rem 1rem 1rem 1rem",border:"1px solid",borderColor:"primary.light",bgcolor:"background.default",color:"text.primary",px:1.75,py:1.25,lineHeight:1.6},children:[e(C,{content:n}),e(c,{component:"span",sx:{display:"inline-block",width:6,height:16,ml:.5,borderRadius:.5,bgcolor:"primary.main",verticalAlign:"text-bottom",animation:"pulse 1.2s ease-in-out infinite","@keyframes pulse":{"0%, 100%":{opacity:.35},"50%":{opacity:1}}}})]}):e(c,{sx:{borderRadius:"1rem 1rem 1rem 0.25rem",border:"1px solid",borderColor:"divider",bgcolor:"background.default",px:1.75,py:1.25},children:r(m,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[e(m,{direction:"row",spacing:.5,children:[0,150,300].map(r=>e(c,{component:"span",sx:{width:6,height:6,borderRadius:"50%",bgcolor:"primary.main",animation:"bounce 1s ease-in-out infinite",animationDelay:`${r}ms`,"@keyframes bounce":{"0%, 80%, 100%":{opacity:.35,transform:"translateY(0)"},"40%":{opacity:1,transform:"translateY(-1px)"}}}},r))}),e(v,{children:t.length>0?T(t):"Analyzing data sources…"})]})}),a&&t.length>0&&e(s,{isStreaming:!0,traceEvents:t,defaultExpanded:!0}),o&&r(p,{onClick:o,sx:{display:"inline-flex",alignItems:"center",gap:.5,fontSize:"0.625rem",color:"text.secondary","&:hover":{color:"error.main"},borderRadius:.5,px:.5},children:[e(l,{sx:{fontSize:11}}),"Stop generating"]})]})]})}function T(e){const r=e[e.length-1];if(!r)return"Analyzing data sources…";switch(r.type){case"thinking":return`Step ${r.step||"?"}: Reasoning…`;case"kb":return"searching"===r.status?"Searching knowledge base…":"Processing KB results…";case"tool":return`Using ${r.toolName||"tool"}…`;case"model":return"Running model invocation…";default:return"Processing…"}}function E({traceLabel:n,avatarIcon:t}){return r(m,{direction:"row",spacing:1,sx:{alignItems:"flex-start"},children:[e(A,{icon:t,sx:{mt:.25}}),e(c,{sx:{borderRadius:"1rem 1rem 1rem 0.25rem",border:"1px solid",borderColor:"divider",bgcolor:"background.default",px:1.75,py:1.25},children:r(m,{direction:"row",spacing:1,sx:{alignItems:"center"},children:[e(m,{direction:"row",spacing:.5,children:[0,150,300].map(r=>e(c,{component:"span",sx:{width:6,height:6,borderRadius:"50%",bgcolor:"primary.main",animation:"bounce 1s ease-in-out infinite",animationDelay:`${r}ms`,"@keyframes bounce":{"0%, 80%, 100%":{opacity:.35,transform:"translateY(0)"},"40%":{opacity:1,transform:"translateY(-1px)"}}}},r))}),e(v,{children:n||"Analyzing data sources…"})]})})]})}function D({prompts:r,onSelect:n}){return e(m,{direction:"row",spacing:1,sx:{flexWrap:"wrap",gap:1,justifyContent:"center",alignItems:"center"},children:r.map(r=>e(x,{label:r,onClick:()=>n(r),size:"medium",sx:{cursor:"pointer"}},r))})}function W({onSend:t,disabled:i=!1,placeholder:o="Ask about campaigns, competitors, performance…"}){const[l,s]=n("");return e(c,{component:"form",onSubmit:e=>{e.preventDefault();const r=l.trim();r&&!i&&(t(r),s(""))},sx:{display:"flex",alignItems:"flex-end",gap:1},children:r(d,{variant:"outlined",sx:{display:"flex",flex:1,alignItems:"flex-end",gap:1,px:1.5,py:.75,borderRadius:2},children:[e(h,{variant:"standard",fullWidth:!0,multiline:!0,maxRows:5,value:l,onChange:e=>s(e.target.value),onKeyDown:e=>{if("Enter"===e.key&&!e.shiftKey){e.preventDefault();const r=l.trim();if(!r||i)return;t(r),s("")}},placeholder:o,disabled:i,slotProps:{input:{disableUnderline:!0}},sx:{"& .MuiInputBase-input":{p:0,fontSize:"0.875rem",color:"text.primary",resize:"none","&::placeholder":{color:"text.disabled",opacity:1}}}}),e(u,{type:"submit",title:"Send message",disabled:!l.trim()||i,variant:"filled",size:"small",sx:{flexShrink:0},children:e(a,{sx:{fontSize:13}})})]})})}function B({messages:n,isTyping:o,streamingText:a,liveTraceEvents:l,onAbort:s,avatarIcon:m,showActivity:d=!1}){const p=t(null);i(()=>{p.current?.scrollIntoView({behavior:"smooth"})},[n,o,a]);const u=n.length>0&&"assistant"===n[n.length-1].role,h=o&&!u&&!!a,x=o&&!u&&!h;return r(c,{sx:{flex:1,minHeight:0,overflowY:"auto",display:"flex",flexDirection:"column",gap:1.5,px:2,py:1.5},children:[n.filter(e=>"user"===e.role||e.content).map(r=>e(z,{message:r,avatarIcon:m,showActivity:d},r.id)),h&&e(R,{text:a||"",traceEvents:l||[],avatarIcon:m,onAbort:s,showActivity:d}),x&&e(E,{avatarIcon:m,traceLabel:l&&l.length>0?T(l):void 0}),e(c,{ref:p})]})}function P({title:n,description:t,dataSources:i,prompts:o,avatarIcon:a,onSelect:l}){return r(c,{sx:{display:"flex",flex:1,flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,px:2,py:6},children:[e(A,{size:"lg",icon:a}),r(c,{sx:{textAlign:"center",display:"flex",flexDirection:"column",gap:.5},children:[e(g,{children:n}),e(y,{children:t})]}),i&&i.length>0&&e(c,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:.75,mt:1},children:i.map(r=>e(x,{label:r,size:"small"},r))}),r(c,{sx:{mt:2},children:[e(y,{sx:{mb:1},children:"Try asking:"}),e(D,{prompts:o,onSelect:l})]})]})}function Y({sources:n}){return n.length?r(c,{sx:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:.5,px:2,py:1,borderTop:1,borderColor:"divider"},children:[e(v,{sx:{mr:.5},children:"Sources:"}),n.map(r=>e(x,{label:r,size:"small"},r))]}):null}export{W as ChatInput,P as EmptyState,C as MarkdownContent,B as MessageList,Y as SourceCitations,D as SuggestedPrompts};
|