PageSourceSearch

https://www.bodylogicglobal.com/spa-assets/ShortcutsRegistryPage--vai41kZ.js

js bodylogicglobal.com collected 2026-10-02 11:31:17 UTC 19,458 bytes, 1 lines download raw bytes

1import{a as f,j as e}from"./vendor-react-CuuqKQpN.js";import{c as D,u as V,d as _}from"./vendor-query-DJ11Sd2y.js";import{d as O,u as T,M as B}from"./vendor-intl-DflcVhi5.js";import{A as P}from"./main-BFwzyxdJ.js";import{u as Q}from"./useScreenContext-Jg1QQ7e_.js";import{a as C}from"./ContractAcceptanceModal-0VihSvPA.js";import{u as L,F as q}from"./vendor-form-CRvR2TwE.js";import{G as H}from"./GroupSelectReact-D4_CJ-Z1.js";import{i as E}from"./i18nProvider-CcUjZRgB.js";import"./vendor-cjs-BosuxZz1.js";import"./vendor-ui-CP508Bka.js";import"./vendor-monitoring-CnHeFoWS.js";import"./AssistantDrawer-DhOqiwD3.js";import"./vendor-markdown-BXjZCFI9.js";import"./EmptyState-B32jMPfr.js";const t=O({pageTitle:{id:"message.aistudio.shortcuts.page.title",defaultMessage:"AI Shortcuts"},pageSubtitle:{id:"message.aistudio.shortcuts.page.subtitle",defaultMessage:"Edit per-screen shortcuts, actions and allowed tools."},pageSection:{id:"message.aistudio.shortcuts.page.section",defaultMessage:"Configure"},btnRefresh:{id:"message.label.refresh",defaultMessage:"Refresh"},loading:{id:"message.loading",defaultMessage:"Loading..."},errorLoadFailed:{id:"message.error.loadFailed",defaultMessage:"Could not load"},btnRetry:{id:"message.retry",defaultMessage:"Retry"},statsScreens:{id:"message.aistudio.shortcuts.stats.screens",defaultMessage:"screens"},statsSelected:{id:"message.aistudio.shortcuts.stats.selected",defaultMessage:"Selected:"},emptyStateSelectScreen:{id:"message.aistudio.shortcuts.emptyState.selectScreen",defaultMessage:"Select a screen from the list to edit its AI shortcuts."},emptyStateNoScreens:{id:"message.aistudio.shortcuts.emptyState.noScreens",defaultMessage:"No screens found in the registry."},sidebarSelectScreen:{id:"message.gse.selectScreen",defaultMessage:"Select a screen…"},sidebarSearchPlaceholder:{id:"message.label.search",defaultMessage:"Search"},sidebarClearSearch:{id:"message.common.clearSearch",defaultMessage:"Clear search"},sidebarNoMatch:{id:"message.aistudio.shortcuts.sidebar.noMatch",defaultMessage:'No screens match "{query}"'},editorScreenId:{id:"message.aistudio.shortcuts.editor.screenId",defaultMessage:"Screen ID"},editorUntitled:{id:"message.aistudio.shortcuts.editor.untitled",defaultMessage:"Untitled"},editorFieldLabel:{id:"message.aistudio.shortcuts.editor.fieldLabel",defaultMessage:"Label"},editorFieldType:{id:"message.label.type",defaultMessage:"Type"},editorFieldUtterance:{id:"message.aistudio.shortcuts.editor.fieldUtterance",defaultMessage:"Utterance"},editorPlaceholderButtonLabel:{id:"message.aistudio.shortcuts.editor.placeholderButtonLabel",defaultMessage:"Button label"},editorPlaceholderUtterance:{id:"message.aistudio.shortcuts.editor.placeholderUtterance",defaultMessage:"What the agent will say"},editorTypePassive:{id:"message.aistudio.shortcuts.editor.typePassive",defaultMessage:"passive"},editorTypeActive:{id:"message.aistudio.shortcuts.editor.typeActive",defaultMessage:"active"},editorBtnRemove:{id:"message.common.remove",defaultMessage:"Remove"},editorFieldMcpTool:{id:"message.aistudio.shortcuts.editor.fieldMcpTool",defaultMessage:"MCP Tool"},editorConfirmationRequired:{id:"message.aistudio.shortcuts.editor.confirmationRequired",defaultMessage:"Confirmation required"},editorTabShortcuts:{id:"message.aistudio.shortcuts.editor.tabShortcuts",defaultMessage:"Shortcuts ({count})"},editorTabActions:{id:"message.aistudio.shortcuts.editor.tabActions",defaultMessage:"Actions ({count})"},editorTabMcpTools:{id:"message.aistudio.shortcuts.editor.tabMcpTools",defaultMessage:"MCP Tools ({count})"},editorAgentHint:{id:"message.aistudio.shortcuts.editor.agentHint",defaultMessage:"Agent Hint"},editorSave:{id:"message.label.save",defaultMessage:"Save"},editorNoShortcuts:{id:"message.aistudio.shortcuts.editor.noShortcuts",defaultMessage:"No shortcuts defined for this screen."},editorBtnAddShortcut:{id:"message.aistudio.shortcuts.editor.btnAddShortcut",defaultMessage:"Add Shortcut"},editorNoActions:{id:"message.aistudio.shortcuts.editor.noActions",defaultMessage:"No actions defined for this screen."},editorBtnAddAction:{id:"message.aistudio.shortcuts.editor.btnAddAction",defaultMessage:"Add Action"}
1,editorNoMcpTools:{id:"message.aistudio.shortcuts.editor.noMcpTools",defaultMessage:"No MCP tools allowed. Add one below."},editorBtnAdd:{id:"message.label.add",defaultMessage:"Add"},editorBtnRemoveTool:{id:"message.aistudio.shortcuts.editor.btnRemoveTool",defaultMessage:"Remove {tool}"},editorPlaceholderAgentHint:{id:"message.aistudio.shortcuts.editor.placeholderAgentHint",defaultMessage:"Describe what this screen is about for the AI agent…"},editorPlaceholderToolName:{id:"message.aistudio.shortcuts.editor.placeholderToolName",defaultMessage:"tool_name"}});function Y(s){const r={};for(const l of s){const c=l.split(".")[0]??"other";r[c]||(r[c]=[]),r[c].push(l)}return r}const I=({screens:s,selectedId:r,onSelect:l,isMobile:c=!1})=>{const[u,p]=f.useState(""),{formatMessage:o}=T(),m=L({defaultValues:{screenId:r??""}}),i=m.watch("screenId");f.useEffect(()=>{i&&i!==r&&l(i)},[i]),f.useEffect(()=>{(r??"")!==m.getValues("screenId")&&m.setValue("screenId",r??"")},[r]);const d=f.useMemo(()=>s.map(h=>({value:h,label:h})),[s]),g=f.useMemo(()=>u.trim()?s.filter(h=>h.toLowerCase().includes(u.toLowerCase())):s,[s,u]),b=f.useMemo(()=>Y(g),[g]);return c?e.jsx("div",{className:"mb-4",children:e.jsx(q,{...m,children:e.jsx(H,{name:"screenId",label:"",options:d,className:"col-12",searchable:!0,placeholder:o(t.sidebarSelectScreen)})})}):e.jsxs("div",{className:"d-flex flex-column border-end pe-4 w-250px min-w-225px",style:{maxHeight:"calc(100vh - 200px)",overflowY:"auto"},children:[e.jsxs("div",{className:"position-relative mb-4",children:[e.jsx("i",{className:"ki-outline ki-magnifier fs-6 position-absolute text-muted",style:{to
1p:"50%",transform:"translateY(-50%)",left:10,pointerEvents:"none"},"aria-hidden":"true"}),e.jsx("input",{type:"text",className:"form-control form-control-sm ps-8",placeholder:o(t.sidebarSearchPlaceholder),value:u,onChange:h=>p(h.target.value),"aria-label":o(t.sidebarSearchPlaceholder)}),u&&e.jsx("button",{type:"button",className:"btn btn-sm btn-icon position-absolute",style:{top:"50%",transform:"translateY(-50%)",right:4},onClick:()=>p(""),"aria-label":o(t.sidebarClearSearch),children:e.jsx("i",{className:"ki-outline ki-cross fs-7","aria-hidden":"true"})})]}),Object.entries(b).sort(([h],[S])=>h.localeCompare(S)).map(([h,S])=>e.jsxs("div",{className:"mb-2",children:[e.jsx("div",{className:"text-uppercase text-muted fw-bold fs-9 px-2 mb-1 letter-spacing-1",children:h}),S.sort().map(v=>e.jsx("button",{type:"button",className:`btn btn-sm w-100 text-start py-2 px-2 mb-1 rounded fs-8 ${r===v?"btn-light-primary fw-bold":"btn-light-hover text-gray-700"}`,style:{wordBreak:"break-all",lineHeight:1.3},onClick:()=>l(v),children:v},v))]},h)),g.length===0&&e.jsx("div",{className:"text-muted fs-8 text-center py-6",children:o(t.sidebarNoMatch,{query:u})})]})},K=({item:s,index:r,onChange:l,onRemove:c})=>{const[u,p]=f.useState(!1),{formatMessage:o}=T(),m=C(),i=L({defaultValues:{type:s.type}}),d=i.watch("type");f.useEffect(()=>{d!==s.type&&l(r,{...s,type:d})},[d]),f.useEffect(()=>{s.type!==i.getValues("type")&&i.setValue("type",s.type)},[s.type]);const g=[{value:"passive",label:o(t.editorTypePassive)},{value:"active",label:o(t.editorTypeActive)}];return e.jsxs("div",{className:"border rounded mb-2 overflow-hidden",children:[e.jsxs("button",{type:"button",className:"btn btn-sm w-100 text-start d-flex align-items-center justify-content-between px-3 py-2 bg-light-hover",onClick:()=>p(b=>!b),children:[e.jsx("span",{className:"fw-semibold fs-7 text-truncate",children:s.label||e.jsx("em",{className:"text-muted",children:o(t.editorUntitled)})}),e.jsx("i",{className:`ki-outline ki-arrow-${u?"up":"down"} fs-7 ms-2 flex-shrink-0`,"aria-hidden":"true"})]}),u&&e.jsxs("div",{className:"px-3 pb-3 pt-2 d-flex flex-column gap-2",children:[e.jsxs("div",{className:"row g-2",children:[e.jsxs("div",{className:"col-12 col-md-6",children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldLabel)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:s.label,onChange:b=>l(r,{...s,label:b.target.value}),placeholder:o(t.editorPlaceholderButtonLabel)})]}),e.jsxs("div",{className:"col-12 col-md-6",children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldType)}),e.jsx(q,{...i,children:e.jsx(H,{name:"type",label:"",options:g,className:"col-12"})})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldUtterance)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:s.utterance,onChange:b=>l(r,{...s,utterance:b.target.value}),placeholder:o(t.editorPlaceholderUtterance)})]}),e.jsx("div",{className:"d-flex justify-content-end",children:e.jsxs("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-light-danger`,onClick:()=>c(r),children:[e.jsx("i",{className:"ki-outline ki-trash fs-7 me-1","aria-hidden":"true"}),o(t.editorBtnRemove)]})})]})]})},G=({item:s,index:r,onChange:l,onRemove:c})=>{const[u,p]=f.useState(!1),{formatMessage:o}=T(),m=C();return e.jsxs("div",{className:"border rounded mb-2 overflow-hidden",children:[e.jsxs("button",{type:"button",className:"btn btn-sm w-100 text-start d-flex align-items-center justify-content-between px-3 py-2 bg-light-hover",onClick:()=>p(i=>!i),children:[e.jsxs("span",{className:"fw-semibold fs-7 text-truncate",children:[s.label||e.jsx("em",{className:"text-muted",children:o(t.editorUntitled)}),s.mcpTool&&e.jsx("code",{className:"ms-2 fs-9 text-muted",children:s.mcpTool})]}),e.jsx("i",{className:`ki-outline ki-arrow-${u?"up":"down"} fs-7 ms-2 flex-shrink-0`,"aria-hidden":"true"})]}),u&&e.jsxs("div",{className:"px-3 pb-3 pt-2 d-flex flex-column gap-2",children:[e.jsxs("div",{className:"row g-2",children:[e.jsxs("div",{className:"col-12 col-md-6",children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldLabel)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:s.label,onChange:i=>l(r,{...s,label:i.target.value})})]}),e.jsxs("div",{className:"col-12 col-md-6",children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldMcpTool)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:s.mcpTool,onCh
1ange:i=>l(r,{...s,mcpTool:i.target.value}),placeholder:o(t.editorPlaceholderToolName)})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorFieldUtterance)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:s.utterance,onChange:i=>l(r,{...s,utterance:i.target.value})})]}),e.jsxs("div",{className:"d-flex align-items-center gap-3",children:[e.jsxs("div",{className:"form-check form-check-custom form-check-solid",children:[e.jsx("input",{className:"form-check-input",type:"checkbox",id:`confirm-${r}`,checked:s.confirmationRequired,onChange:i=>l(r,{...s,confirmationRequired:i.target.checked})}),e.jsx("label",{className:"form-check-label fs-8",htmlFor:`confirm-${r}`,children:o(t.editorConfirmationRequired)})]}),e.jsx("div",{className:"ms-auto",children:e.jsxs("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-light-danger`,onClick:()=>c(r),children:[e.jsx("i",{className:"ki-outline ki-trash fs-7 me-1","aria-hidden":"true"}),o(t.editorBtnRemove)]})})]})]})]})},z=({screenId:s,capability:r,onSave:l,saving:c=!1})=>{const[u,p]=f.useState("shortcuts"),{formatMessage:o}=T(),m=C(),[i,d]=f.useState(r),[g,b]=f.useState("");f.useEffect(()=>{d(r),p("shortcuts")},[s,r]);const h=(a,n)=>{const x=[...i.shortcuts??[]];x[a]=n,d(M=>({...M,shortcuts:x}))},S=a=>{const n=(i.shortcuts??[]).filter((x,M)=>M!==a);d(x=>({...x,shortcuts:n}))},v=()=>{const a={id:`s-${Date.now()}`,label:"",utterance:"",type:"passive"};d(n=>({...n,shortcuts:[...n.shortcuts??[],a]}))},R=(a,n)=>{const x=[...i.actions??[]];x[a]=n,d(M=>({...M,actions:x}))},A=a=>{const n=(i.actions??[]).filter((x,M)=>M!==a);d(x=>({...x,actions:n}))},N=()=>{const a={id:`a-${Date.now()}`,label:"",utterance:"",type:"active",actionType:"add_comment",mcpTool:"",confirmationRequired:!1};d(n=>({...n,actions:[...n.actions??[],a]}))},j=a=>{d(n=>({...n,mcpToolsAllowed:(n.mcpToolsAllowed??[]).filter(x=>x!==a)}))},y=()=>{const a=g.trim();a&&((i.mcpToolsAllowed??[]).includes(a)||(d(n=>({...n,mcpToolsAllowed:[...n.mcpToolsAllowed??[],a]})),b("")))},w=i.shortcuts??[],k=i.actions??[],F=i.mcpToolsAllowed??[];return e.jsxs("div",{className:"flex-grow-1 ps-md-6 d-flex flex-column min-w-0",children:[e.jsxs("div",{className:"d-flex flex-column flex-md-row align-items-start align-items-md-center justify-content-between gap-3 mb-6",children:[e.jsxs("div",{className:"flex-grow-1",children:[e.jsx("div",{className:"fs-7 text-muted fw-bold mb-1",children:o(t.editorScreenId)}),e.jsx("code",{className:"fs-6 fw-bold text-gray-900",children:s})]}),e.jsxs("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-primary text-nowrap`,onClick:()=>l(s,i),disabled:c,children:[c?e.jsx("span",{className:"spinner-border spinner-border-sm me-2",role:"status","aria-hidden":"true"}):e.jsx("i",{className:"ki-outline ki-cloud-upload fs-6 me-2","aria-hidden":"true"}),o(t.editorSave)]})]}),e.jsxs("div",{className:"mb-5",children:[e.jsx("label",{className:"form-label fw-semibold fs-7",children:o(t.editorAgentHint)}),e.jsx("input",{type:"text",className:"form-control form-control-sm",value:i.agentHint??"",onChange:a=>d(n=>({...n,agentHint:a.target.value})),placeholder:o(t.editorPlaceholderAgentHint)})]}),e.jsx("ul",{className:"nav nav-tabs nav-line-tabs nav-line-tabs-2x mb-5 fs-6",role:"tablist",children:["shortcuts","actions","tools"].map(a=>e.jsx("li",{className:"nav-item",role:"presentation",children:e.jsxs("button",{type:"button",role:"tab","aria-selected":u===a,className:`nav-link${u===a?" active":""}`,onClick:()=>p(a),children:[a==="shortcuts"&&o(t.editorTabShortcuts,{count:w.length}),a==="actions"&&o(t.editorTabActions,{count:k.length}),a==="tools"&&o(t.editorTabMcpTools,{count:F.length})]})},a))}),u==="shortcuts"&&e.jsxs("div",{children:[w.map((a,n)=>e.jsx(K,{item:a,index:n,onChange:h,onRemove:S},a.id??n)),w.length===0&&e.jsx("div",{className:"text-muted fs-7 py-4 text-center",children:o(t.editorNoShortcuts)}),e.jsxs("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-light-primary mt-2`,onClick:v,children:[e.jsx("i",{className:"ki-outline ki-plus fs-7 me-1","aria-hidden":"true"}),o(t.editorBtnAddShortcut)]})]}),u==="actions"&&e.jsxs("div",{children:[k.map((a,n)=>e.jsx(G,{item:a,index:n,onChange:R,onRemove:A},a.id??n)),k.length===0&&e.jsx("div",{className:"text-muted fs-7 py-4 text-center",children:o(t.editorNoActions)}),e.jsxs("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-light-primary mt-2`,onClick:N,children:[e.jsx("i",{className:"ki-outline ki-plus fs-7 me-1","aria-hidden":"true"}),o(t.editorBtnAddAction)]})]}),u==="tools"&&e.jsxs("div",{children:[e.jsxs("div",{className:"d-flex flex-wrap gap-2 mb-4",children:[F.length===0&&e.jsx("span",{className:"text-muted fs-7",children:o(t.editorNoMcpTools)}),F.map(a=>e.jsxs("span",{className:"badge badge-light-primary d-flex align-items-center gap-1 py-2 px-3 fs-8",children:[e.jsx("code",{children:a}),e.jsx("button",{type:"button",className:"btn btn-sm btn-icon p-0 ms-1 w-15px h-15px",onClick:()=>j(a),"aria-label":o(t.editorBtnRemoveTool,{tool:a}),children:e.jsx("i",{className:"ki-outline ki-cross fs-9","aria-hidden":"true"})})]},a))]}),e.jsxs("div",{className:"d-flex gap-2 mw-350px",children:[e.jsx("input",{type:"text",className:"form-control form-control-sm",value:g,onChange:a=>b(a.target.value),placeholder:o(t.editorPlaceholderToolName),onKeyDown:a=>a.key==="Enter"&&y()}),e.jsx("button",{type:"button",className:`btn${m?"":" btn-sm"} btn-light-primary flex-shrink-0`,onClick:y,children:o(t.editorBtnAdd)})]})]})]})},$={getRegistry:()=>E.get("/v1/assistant/panel/registry"),putScreenCapability:(s,r)=>E.put(`/v1/assistant/panel/registry/${encodeURIComponent(s)}`,r),refresh:()=>E.post("/v1/assistant/panel/registry/refresh")},U=["shortcuts-registry"],ue=()=>{var A;Q("studio.configure.settings");const s=C(),r=D(),{formatMessage:l}=T(),[c,u]=f.useState(null),{data:p,isLoading:o,isError:m,refetch:i}=V({queryKey:U,queryFn:()=>$.getRegistry(),staleTime:3e4}),d=(A=p==null?void 0:p.data)==null?void 0:A.data,g=d?Object.keys(d.screens).sort():[],b=c&&d?d.screens[c]:null,{mutateAsync:h,isPending:S}=_({mutationFn:({screenId:N,capability:j})=>$.putScreenCapability(N,j),onSuccess:(N,j)=>{r.setQueryData(U,y=>{var w,k;return(k=(w=y==null?void 0:y.data)==null?void 0:w.data)!=null&&k.screens?{...y,data:{...y.data,data:{...y.data.data,screens:{...y.data.data.screens,[j.screenId]:j.capability}}}}:y}),P({icon:"success",title:l(t.editorSave),text:`Screen "${j.screenId}" updated successfully.`,timer:2500})},onError:N=>{const j=N instanceof Error?N.message:"Unknown error";P({icon:"error",title:l(t.errorLoadFailed),text:j,confirmText:l({id:"message.control.accept",defaultMessage:"OK"})})}}),v=async(N,j)=>{await h({screenId:N,capability:j})},R=async()=>{await $.refresh(),await i(),P({icon:"success",title:l(t.btnRefresh),timer:1500})};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"d-flex align-items-center justify-content-between mb-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"fw-bold mb-1",children:e.jsx(B,{id:t.pageTitle.id,defaultMessage:t.pageTitle.defaultMessage})}),e.jsx("p",{className:"text-muted fs-7 mb-0",children:e.jsx(B,{id:t.pageSubtitle.id,defaultMessage:t.pageSubtitle.defaultMessage})})]}
1),e.jsxs("button",{type:"button",className:`btn${s?"":" btn-sm"} btn-primary`,onClick:R,children:[e.jsx("i",{className:"ki-outline ki-arrows-circle fs-4 me-2","aria-hidden":"true"}),l(t.btnRefresh)]})]}),o&&e.jsx("div",{className:"d-flex justify-content-center py-12",children:e.jsx("span",{className:"spinner-border text-primary",role:"status",children:e.jsx("span",{className:"visually-hidden",children:l(t.loading)})})}),m&&e.jsxs("div",{className:"alert alert-danger d-flex align-items-center gap-3",children:[e.jsx("i",{className:"ki-outline ki-cross-circle fs-3","aria-hidden":"true"}),e.jsxs("div",{children:[l(t.errorLoadFailed)," ",e.jsx("button",{type:"button",className:"btn btn-sm btn-link p-0",onClick:()=>i(),children:l(t.btnRetry)})]})]}),d&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"d-flex align-items-center gap-4 mb-6 fs-8 text-muted",children:[e.jsxs("span",{children:[e.jsx("strong",{children:g.length})," ",l(t.statsScreens)]}),c&&e.jsxs("span",{children:[l(t.statsSelected)," ",e.jsx("code",{className:"text-primary fw-bold",children:c})]})]}),s&&e.jsx(I,{screens:g,selectedId:c,onSelect:u,isMobile:!0}),e.jsxs("div",{className:"d-flex gap-0 min-h-475px",children:[!s&&e.jsx(I,{screens:g,selectedId:c,onSelect:u}),e.jsx("div",{className:`flex-grow-1 ${s?"":"ps-6"}`,children:c&&b?e.jsx(z,{screenId:c,capability:b,onSave:v,saving:S},c):e.jsxs("div",{className:"d-flex flex-column align-items-center justify-content-center h-100 text-center py-12",children:[e.jsx("i",{className:"ki-outline ki-mouse-square fs-3x text-muted mb-4","aria-hidden":"true"}),e.jsx("div",{className:"text-muted fs-6",children:g.length>0?l(t.emptyStateSelectScreen):l(t.emptyStateNoScreens)})]})})]})]})]})};export{ue as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.