@kaitranntt/ccs 7.56.0-dev.4 → 7.56.0-dev.6
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/README.md +23 -17
- package/dist/config/unified-config-loader.d.ts +16 -0
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +56 -12
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +56 -10
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js +20 -2
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/ui/assets/{accounts-BSknYWh4.js → accounts-DD2Lodv2.js} +1 -1
- package/dist/ui/assets/{alert-dialog-BsXoK0Gt.js → alert-dialog-D21M1jKW.js} +1 -1
- package/dist/ui/assets/{api-C-ZXD7TW.js → api-0PqftiRh.js} +1 -1
- package/dist/ui/assets/{auth-section-CjGg1fit.js → auth-section-DEfVaTF2.js} +1 -1
- package/dist/ui/assets/{backups-section-fHW6gGBE.js → backups-section-7CMRUK1w.js} +1 -1
- package/dist/ui/assets/{checkbox-K93r237H.js → checkbox-qsMNLxyT.js} +1 -1
- package/dist/ui/assets/{claude-extension-feiyhDgC.js → claude-extension-QCVnlD5g.js} +1 -1
- package/dist/ui/assets/{cliproxy-CVv_-PsP.js → cliproxy-B4Ndh1vO.js} +2 -2
- package/dist/ui/assets/{cliproxy-ai-providers-0JQCQ6YS.js → cliproxy-ai-providers-D09jj99_.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-CrHA_sjo.js → cliproxy-control-panel-CJZ3OH7x.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-_wN3tR_n.js → confirm-dialog-DDPaIGt-.js} +1 -1
- package/dist/ui/assets/{copilot-Cao_05p3.js → copilot-CZ5-TuDW.js} +1 -1
- package/dist/ui/assets/{cursor-Cbe1L5vq.js → cursor-CLCJ8JwP.js} +1 -1
- package/dist/ui/assets/{droid-Cu3rERcX.js → droid-C4ndg4ND.js} +1 -1
- package/dist/ui/assets/{globalenv-section-CtzXlKoL.js → globalenv-section-u25Fhfko.js} +1 -1
- package/dist/ui/assets/{health-CjuQlQLu.js → health-S3_uVEZI.js} +1 -1
- package/dist/ui/assets/{icons-DR-ORtNe.js → icons-BwsSbo2z.js} +1 -1
- package/dist/ui/assets/{index-gjtWXRc2.js → index-BIWNdVva.js} +3 -3
- package/dist/ui/assets/index-Bp4s-Led.css +1 -0
- package/dist/ui/assets/{index-CtS8lmbp.js → index-DW1sWpmn.js} +1 -1
- package/dist/ui/assets/index-DgtKMxaq.js +1 -0
- package/dist/ui/assets/{index-B4MTOnn6.js → index-DjUsD3ce.js} +1 -1
- package/dist/ui/assets/{index-17YWpyV1.js → index-ainA13O4.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-9CJglirI.js → proxy-status-widget-D65cBYFv.js} +1 -1
- package/dist/ui/assets/{searchable-select-CGOND84a.js → searchable-select-C2HgCDJL.js} +1 -1
- package/dist/ui/assets/{separator-2e8ySql0.js → separator-BlhCtc9l.js} +1 -1
- package/dist/ui/assets/{shared-598yR3xg.js → shared-DZkW1mRU.js} +1 -1
- package/dist/ui/assets/{switch-BUqDuRxm.js → switch-JdcUdtbh.js} +1 -1
- package/dist/ui/assets/{updates-CQW2-eYw.js → updates-DtnC6jcH.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/websearch/hook-env.d.ts.map +1 -1
- package/dist/utils/websearch/hook-env.js +17 -1
- package/dist/utils/websearch/hook-env.js.map +1 -1
- package/dist/utils/websearch/status.d.ts +5 -12
- package/dist/utils/websearch/status.d.ts.map +1 -1
- package/dist/utils/websearch/status.js +128 -87
- package/dist/utils/websearch/status.js.map +1 -1
- package/dist/utils/websearch/types.d.ts +37 -23
- package/dist/utils/websearch/types.d.ts.map +1 -1
- package/dist/utils/websearch/types.js +1 -1
- package/dist/utils/websearch-manager.d.ts +5 -4
- package/dist/utils/websearch-manager.d.ts.map +1 -1
- package/dist/utils/websearch-manager.js +5 -4
- package/dist/utils/websearch-manager.js.map +1 -1
- package/dist/web-server/health/websearch-checks.d.ts +2 -2
- package/dist/web-server/health/websearch-checks.d.ts.map +1 -1
- package/dist/web-server/health/websearch-checks.js +9 -11
- package/dist/web-server/health/websearch-checks.js.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
- package/dist/web-server/routes/cliproxy-auth-routes.js +106 -0
- package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
- package/dist/web-server/routes/websearch-routes.d.ts.map +1 -1
- package/dist/web-server/routes/websearch-routes.js +33 -22
- package/dist/web-server/routes/websearch-routes.js.map +1 -1
- package/lib/hooks/websearch-transformer.cjs +488 -462
- package/package.json +1 -1
- package/dist/ui/assets/index-CKpdevWy.css +0 -1
- package/dist/ui/assets/index-DRuiCZZ-.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"./radix-ui-Dt3edmE5.js";import{L as P,r as o}from"./react-vendor-CNOkPC89.js";import{a as p,B as y,c as k,d as x,x as E,bd as M,C as g,j,k as N,_ as w,b as v,n as b,be as U,bf as z,I as B,bg as L}from"./index-gjtWXRc2.js";import{Y as $,Q,aW as Y,v as q,E as G,I as J,a4 as V,C as F,aX as H,ak as K}from"./icons-DR-ORtNe.js";import"./tanstack-B8i0evp-.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";const W={new:"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900/50 dark:bg-blue-900/20 dark:text-blue-300",stable:"border-green-200 bg-green-50 text-green-700 dark:border-green-900/50 dark:bg-green-900/20 dark:text-green-300",planned:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-300"};function X({status:s,className:a}){const{t}=p(),d={new:t("updates.statusNew"),stable:t("updates.statusStable"),planned:t("updates.statusPlanned")};return e.jsx(y,{variant:"outline",className:k("font-medium",W[s],a),children:d[s]})}const I="ccs:updates:notice-progress:v1";function Z(s){return s==="new"?"new":"seen"}function u(s,a){return a[s.id]??Z(s.status)}function A(s){return s!=="done"&&s!=="dismissed"}function ee(){if(typeof window>"u")return{};try{const s=window.localStorage.getItem(I);if(!s)return{};const a=JSON.parse(s);if(!a||typeof a!="object"||Array.isArray(a))return{};const t={};for(const[d,l]of Object.entries(a))typeof d=="string"&&(l==="new"||l==="seen"||l==="done"||l==="dismissed")&&(t[d]=l);return t}catch{return{}}}function se(s){typeof window>"u"||window.localStorage.setItem(I,JSON.stringify(s))}function R({state:s,className:a}){const{t}=p(),d={new:{label:t("updates.progressNeedsAction"),className:"border-amber-300/70 bg-amber-100/70 text-amber-800 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300",showDot:!0},seen:{label:t("updates.progressInReview"),className:"border-blue-300/70 bg-blue-100/70 text-blue-800 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300"},done:{label:t("updates.progressDone"),className:"border-emerald-300/70 bg-emerald-100/70 text-emerald-800 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300"},dismissed:{label:t("updates.progressDismissed"),className:"border-muted-foreground/20 bg-muted text-muted-foreground dark:border-muted-foreground/30"}}[s];return e.jsxs(y,{variant:"outline",className:k("gap-1.5 border text-[10px] font-medium",d.className,a),children:[d.showDot&&e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current"}),d.label]})}function ae({action:s}){const{t:a}=p();return e.jsxs("div",{className:"rounded-md border bg-muted/20 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-0.5",children:[e.jsx("p",{className:"text-sm font-medium",children:s.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s.description})]}),s.type==="route"&&s.path&&e.jsx(x,{size:"sm",asChild:!0,children:e.jsxs(P,{to:s.path,children:[a("updates.open"),e.jsx($,{className:"h-3.5 w-3.5"})]})})]}),s.type==="command"&&s.command&&e.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1.5",children:[e.jsx(Q,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"min-w-0 flex-1 truncate text-[11px]",children:s.command}),e.jsx(E,{value:s.command})]})]})}function re({notice:s,progress:a,relatedEntries:t,onUpdateProgress:d}){const{t:l}=p();return s?e.jsxs("div",{className:"flex-1 min-w-0 bg-background grid grid-rows-[auto_minmax(0,1fr)] overflow-hidden",children:[e.jsxs("div",{className:"border-b bg-background px-4 py-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight",children:s.title}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.summary})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a&&e.jsx(R,{state:a}),e.jsx(X,{status:s.status})]})]}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(Y,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:l("updates.published",{date:M(s.publishedAt)})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(x,{size:"sm",onClick:()=>d("done"),children:[e.jsx(q,{className:"h-4 w-4"}),l("updates.markDone")]}),e.jsxs(x,{size:"sm",variant:"outline",onClick:()=>d("dismissed"),children:[e.jsx(G,{className:"h-4 w-4"}),l("updates.dismiss")]}),e.jsxs(x,{size:"sm",variant:"ghost",onClick:()=>d("new"),children:[e.jsx(J,{className:"h-4 w-4"}),l("updates.reopen")]})]})]}),e.jsx("div",{className:"min-h-0 p-4",children:e.jsxs("div",{className:"grid h-full gap-4 xl:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)] overflow-hidden",children:[e.jsxs(g,{className:"h-full overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{className:"h-4 w-4 text-primary"}),e.jsx(N,{className:"text-base",children:l("updates.doNext")})]}),e.jsx(w,{children:s.primaryAction})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-3",children:s.actions.map(n=>e.jsx(ae,{action:n},`${s.id}-${n.id}`))})})})]}),e.jsxs("div",{className:"grid h-full grid-rows-[minmax(0,1fr)_minmax(0,1fr)] gap-4 overflow-hidden",children:[e.jsxs(g,{className:"overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:l("updates.impactedIntegrations")}),e.jsx(w,{children:l("updates.impactedDesc")})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-2",children:t.map(n=>e.jsxs("div",{className:"rounded-md border bg-muted/20 p-2.5",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:"min-w-0 truncate text-sm font-medium",children:n.name}),e.jsx(y,{variant:"outline",className:"h-5 px-1.5 text-[10px]",children:U[n.scope]})]}),e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[n.routes[0]&&e.jsx(x,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(P,{to:n.routes[0].path,children:n.routes[0].label})}),n.commands[0]&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-1.5",children:[e.jsx("code",{className:"truncate rounded bg-background px-1.5 py-0.5 text-[11px]",children:n.commands[0]}),e.jsx(E,{value:n.commands[0]})]})]})]},n.id))})})})]}),e.jsxs(g,{className:"overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:l("updates.whyMatters")}),e.jsx(w,{children:l("updates.whyMattersDesc")})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("ul",{className:"space-y-2 text-sm text-muted-foreground",children:s.highlights.map(n=>e.jsxs("li",{children:["- ",n]},`${s.id}-${n}`))})})})]})]})]})})]}):e.jsx("div",{className:"flex h-full items-center justify-center rounded-lg border border-dashed bg-muted/20 p-6",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:l("updates.noUpdates")})})}function te({notice:s,progress:a,selected:t,onSelect:d}){return e.jsxs("button",{type:"button",onClick:d,className:k("w-full rounded-lg border px-3 py-3 text-left transition-colors",t?"border-primary/30 bg-primary/10":"border-transparent bg-background/40 hover:border-border hover:bg-muted/70"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:s.title}),e.jsx("p",{className:"line-clamp-2 text-xs text-muted-foreground",children:s.primaryAction})]}),e.jsx(F,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"})]}),e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:M(s.publishedAt)}),e.jsx(R,{state:a})]})]})}function de(s,a){return a?[s.title,s.summary,s.primaryAction,...s.highlights,...s.commands,...s.actions.map(d=>`${d.label} ${d.description} ${d.command||""}`),...s.routes.map(d=>d.label)].join(" ").toLowerCase().includes(a):!0}function be(){const{t:s}=p(),a=o.useMemo(()=>[...z].sort((r,i)=>i.publishedAt.localeCompare(r.publishedAt)),[]),[t,d]=o.useState("inbox"),[l,n]=o.useState(""),[c,C]=o.useState(()=>ee()),[S,T]=o.useState(null);o.useEffect(()=>{se(c)},[c]);const h=o.useMemo(()=>{const r=l.trim().toLowerCase();return a.filter(i=>{const f=u(i,c);return de(i,r)?t==="done"?f==="done":t==="inbox"?A(f):!0:!1})},[a,c,l,t]),m=o.useMemo(()=>{const r=t==="all"?a:h;return r.find(i=>i.id===S)??r[0]??null},[a,S,t,h]),D=r=>{T(r.id),C(i=>u(r,i)!=="new"?i:{...i,[r.id]:"seen"})},O=o.useMemo(()=>a.filter(r=>A(u(r,c))).length,[a,c]),_=o.useMemo(()=>a.filter(r=>u(r,c)==="done").length,[a,c]);return e.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden",children:[e.jsxs("div",{className:"w-80 border-r bg-muted/30 flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"font-semibold",children:s("updates.inboxTitle")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("updates.inboxSubtitle")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:s("updates.needsAction")}),e.jsx("p",{className:"text-base font-semibold",children:O})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:s("updates.doneCount")}),e.jsx("p",{className:"text-base font-semibold",children:_})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(K,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(B,{value:l,onChange:r=>n(r.target.value),placeholder:s("updates.searchPlaceholder"),className:"h-9 pl-8"})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{id:"inbox",label:s("updates.actionRequired")},{id:"done",label:s("updates.done")},{id:"all",label:s("updates.all")}].map(r=>e.jsx(x,{size:"sm",variant:t===r.id?"default":"outline",onClick:()=>d(r.id),children:r.label},r.id))})]}),e.jsx(b,{className:"flex-1",children:e.jsx("div",{className:"space-y-2 p-2",children:h.length===0?e.jsx("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground",children:s("updates.noNotices")}):h.map(r=>e.jsx(te,{notice:r,progress:u(r,c),selected:m?.id===r.id,onSelect:()=>D(r)},r.id))})})]}),e.jsx(re,{notice:m,progress:m?u(m,c):null,relatedEntries:m?L(m):[],onUpdateProgress:r=>{m&&C(i=>({...i,[m.id]:r}))}})]})}export{be as UpdatesPage};
|
|
1
|
+
import{j as e}from"./radix-ui-Dt3edmE5.js";import{L as P,r as o}from"./react-vendor-CNOkPC89.js";import{a as p,B as y,c as k,d as x,x as E,bd as M,C as g,j,k as N,_ as w,b as v,n as b,be as U,bf as z,I as B,bg as L}from"./index-BIWNdVva.js";import{Y as $,Q,aW as Y,v as q,E as G,I as J,a4 as V,C as F,aX as H,ak as K}from"./icons-BwsSbo2z.js";import"./tanstack-B8i0evp-.js";import"./notifications-B2HqRBj7.js";import"./utils-CzKF5WmX.js";import"./form-utils-Bcoyqxpq.js";import"./code-highlight-BRUf_pqB.js";const W={new:"border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-900/50 dark:bg-blue-900/20 dark:text-blue-300",stable:"border-green-200 bg-green-50 text-green-700 dark:border-green-900/50 dark:bg-green-900/20 dark:text-green-300",planned:"border-amber-200 bg-amber-50 text-amber-700 dark:border-amber-900/50 dark:bg-amber-900/20 dark:text-amber-300"};function X({status:s,className:a}){const{t}=p(),d={new:t("updates.statusNew"),stable:t("updates.statusStable"),planned:t("updates.statusPlanned")};return e.jsx(y,{variant:"outline",className:k("font-medium",W[s],a),children:d[s]})}const I="ccs:updates:notice-progress:v1";function Z(s){return s==="new"?"new":"seen"}function u(s,a){return a[s.id]??Z(s.status)}function A(s){return s!=="done"&&s!=="dismissed"}function ee(){if(typeof window>"u")return{};try{const s=window.localStorage.getItem(I);if(!s)return{};const a=JSON.parse(s);if(!a||typeof a!="object"||Array.isArray(a))return{};const t={};for(const[d,l]of Object.entries(a))typeof d=="string"&&(l==="new"||l==="seen"||l==="done"||l==="dismissed")&&(t[d]=l);return t}catch{return{}}}function se(s){typeof window>"u"||window.localStorage.setItem(I,JSON.stringify(s))}function R({state:s,className:a}){const{t}=p(),d={new:{label:t("updates.progressNeedsAction"),className:"border-amber-300/70 bg-amber-100/70 text-amber-800 dark:border-amber-500/40 dark:bg-amber-500/15 dark:text-amber-300",showDot:!0},seen:{label:t("updates.progressInReview"),className:"border-blue-300/70 bg-blue-100/70 text-blue-800 dark:border-blue-500/40 dark:bg-blue-500/15 dark:text-blue-300"},done:{label:t("updates.progressDone"),className:"border-emerald-300/70 bg-emerald-100/70 text-emerald-800 dark:border-emerald-500/40 dark:bg-emerald-500/15 dark:text-emerald-300"},dismissed:{label:t("updates.progressDismissed"),className:"border-muted-foreground/20 bg-muted text-muted-foreground dark:border-muted-foreground/30"}}[s];return e.jsxs(y,{variant:"outline",className:k("gap-1.5 border text-[10px] font-medium",d.className,a),children:[d.showDot&&e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current"}),d.label]})}function ae({action:s}){const{t:a}=p();return e.jsxs("div",{className:"rounded-md border bg-muted/20 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-0.5",children:[e.jsx("p",{className:"text-sm font-medium",children:s.label}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s.description})]}),s.type==="route"&&s.path&&e.jsx(x,{size:"sm",asChild:!0,children:e.jsxs(P,{to:s.path,children:[a("updates.open"),e.jsx($,{className:"h-3.5 w-3.5"})]})})]}),s.type==="command"&&s.command&&e.jsxs("div",{className:"mt-2 flex items-center gap-2 rounded-md border bg-background px-2 py-1.5",children:[e.jsx(Q,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"min-w-0 flex-1 truncate text-[11px]",children:s.command}),e.jsx(E,{value:s.command})]})]})}function re({notice:s,progress:a,relatedEntries:t,onUpdateProgress:d}){const{t:l}=p();return s?e.jsxs("div",{className:"flex-1 min-w-0 bg-background grid grid-rows-[auto_minmax(0,1fr)] overflow-hidden",children:[e.jsxs("div",{className:"border-b bg-background px-4 py-3",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("h2",{className:"text-base font-semibold leading-tight",children:s.title}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.summary})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[a&&e.jsx(R,{state:a}),e.jsx(X,{status:s.status})]})]}),e.jsxs("div",{className:"mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(Y,{className:"h-3.5 w-3.5"}),e.jsx("span",{children:l("updates.published",{date:M(s.publishedAt)})})]}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(x,{size:"sm",onClick:()=>d("done"),children:[e.jsx(q,{className:"h-4 w-4"}),l("updates.markDone")]}),e.jsxs(x,{size:"sm",variant:"outline",onClick:()=>d("dismissed"),children:[e.jsx(G,{className:"h-4 w-4"}),l("updates.dismiss")]}),e.jsxs(x,{size:"sm",variant:"ghost",onClick:()=>d("new"),children:[e.jsx(J,{className:"h-4 w-4"}),l("updates.reopen")]})]})]}),e.jsx("div",{className:"min-h-0 p-4",children:e.jsxs("div",{className:"grid h-full gap-4 xl:grid-cols-[minmax(0,1.5fr)_minmax(320px,1fr)] overflow-hidden",children:[e.jsxs(g,{className:"h-full overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{className:"h-4 w-4 text-primary"}),e.jsx(N,{className:"text-base",children:l("updates.doNext")})]}),e.jsx(w,{children:s.primaryAction})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-3",children:s.actions.map(n=>e.jsx(ae,{action:n},`${s.id}-${n.id}`))})})})]}),e.jsxs("div",{className:"grid h-full grid-rows-[minmax(0,1fr)_minmax(0,1fr)] gap-4 overflow-hidden",children:[e.jsxs(g,{className:"overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:l("updates.impactedIntegrations")}),e.jsx(w,{children:l("updates.impactedDesc")})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("div",{className:"space-y-2",children:t.map(n=>e.jsxs("div",{className:"rounded-md border bg-muted/20 p-2.5",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx("p",{className:"min-w-0 truncate text-sm font-medium",children:n.name}),e.jsx(y,{variant:"outline",className:"h-5 px-1.5 text-[10px]",children:U[n.scope]})]}),e.jsxs("div",{className:"mt-2 flex items-center gap-2",children:[n.routes[0]&&e.jsx(x,{size:"sm",variant:"outline",asChild:!0,children:e.jsx(P,{to:n.routes[0].path,children:n.routes[0].label})}),n.commands[0]&&e.jsxs("div",{className:"ml-auto flex min-w-0 items-center gap-1.5",children:[e.jsx("code",{className:"truncate rounded bg-background px-1.5 py-0.5 text-[11px]",children:n.commands[0]}),e.jsx(E,{value:n.commands[0]})]})]})]},n.id))})})})]}),e.jsxs(g,{className:"overflow-hidden",children:[e.jsxs(j,{className:"pb-3",children:[e.jsx(N,{className:"text-base",children:l("updates.whyMatters")}),e.jsx(w,{children:l("updates.whyMattersDesc")})]}),e.jsx(v,{className:"min-h-0",children:e.jsx(b,{className:"h-full pr-2",children:e.jsx("ul",{className:"space-y-2 text-sm text-muted-foreground",children:s.highlights.map(n=>e.jsxs("li",{children:["- ",n]},`${s.id}-${n}`))})})})]})]})]})})]}):e.jsx("div",{className:"flex h-full items-center justify-center rounded-lg border border-dashed bg-muted/20 p-6",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:l("updates.noUpdates")})})}function te({notice:s,progress:a,selected:t,onSelect:d}){return e.jsxs("button",{type:"button",onClick:d,className:k("w-full rounded-lg border px-3 py-3 text-left transition-colors",t?"border-primary/30 bg-primary/10":"border-transparent bg-background/40 hover:border-border hover:bg-muted/70"),children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx("p",{className:"truncate text-sm font-medium",children:s.title}),e.jsx("p",{className:"line-clamp-2 text-xs text-muted-foreground",children:s.primaryAction})]}),e.jsx(F,{className:"mt-0.5 h-4 w-4 shrink-0 text-muted-foreground"})]}),e.jsxs("div",{className:"mt-2 flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-[11px] text-muted-foreground",children:M(s.publishedAt)}),e.jsx(R,{state:a})]})]})}function de(s,a){return a?[s.title,s.summary,s.primaryAction,...s.highlights,...s.commands,...s.actions.map(d=>`${d.label} ${d.description} ${d.command||""}`),...s.routes.map(d=>d.label)].join(" ").toLowerCase().includes(a):!0}function be(){const{t:s}=p(),a=o.useMemo(()=>[...z].sort((r,i)=>i.publishedAt.localeCompare(r.publishedAt)),[]),[t,d]=o.useState("inbox"),[l,n]=o.useState(""),[c,C]=o.useState(()=>ee()),[S,T]=o.useState(null);o.useEffect(()=>{se(c)},[c]);const h=o.useMemo(()=>{const r=l.trim().toLowerCase();return a.filter(i=>{const f=u(i,c);return de(i,r)?t==="done"?f==="done":t==="inbox"?A(f):!0:!1})},[a,c,l,t]),m=o.useMemo(()=>{const r=t==="all"?a:h;return r.find(i=>i.id===S)??r[0]??null},[a,S,t,h]),D=r=>{T(r.id),C(i=>u(r,i)!=="new"?i:{...i,[r.id]:"seen"})},O=o.useMemo(()=>a.filter(r=>A(u(r,c))).length,[a,c]),_=o.useMemo(()=>a.filter(r=>u(r,c)==="done").length,[a,c]);return e.jsxs("div",{className:"flex h-full min-h-0 overflow-hidden",children:[e.jsxs("div",{className:"w-80 border-r bg-muted/30 flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"p-4 border-b bg-background space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"font-semibold",children:s("updates.inboxTitle")})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("updates.inboxSubtitle")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:s("updates.needsAction")}),e.jsx("p",{className:"text-base font-semibold",children:O})]}),e.jsxs("div",{className:"rounded-md border bg-background px-2 py-1.5",children:[e.jsx("p",{className:"text-muted-foreground",children:s("updates.doneCount")}),e.jsx("p",{className:"text-base font-semibold",children:_})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(K,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(B,{value:l,onChange:r=>n(r.target.value),placeholder:s("updates.searchPlaceholder"),className:"h-9 pl-8"})]}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:[{id:"inbox",label:s("updates.actionRequired")},{id:"done",label:s("updates.done")},{id:"all",label:s("updates.all")}].map(r=>e.jsx(x,{size:"sm",variant:t===r.id?"default":"outline",onClick:()=>d(r.id),children:r.label},r.id))})]}),e.jsx(b,{className:"flex-1",children:e.jsx("div",{className:"space-y-2 p-2",children:h.length===0?e.jsx("div",{className:"rounded-md border border-dashed p-3 text-xs text-muted-foreground",children:s("updates.noNotices")}):h.map(r=>e.jsx(te,{notice:r,progress:u(r,c),selected:m?.id===r.id,onSelect:()=>D(r)},r.id))})})]}),e.jsx(re,{notice:m,progress:m?u(m,c):null,relatedEntries:m?L(m):[],onUpdateProgress:r=>{m&&C(i=>({...i,[m.id]:r}))}})]})}export{be as UpdatesPage};
|
package/dist/ui/index.html
CHANGED
|
@@ -24,16 +24,16 @@
|
|
|
24
24
|
href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap"
|
|
25
25
|
rel="stylesheet"
|
|
26
26
|
/>
|
|
27
|
-
<script type="module" crossorigin src="/assets/index-
|
|
27
|
+
<script type="module" crossorigin src="/assets/index-BIWNdVva.js"></script>
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-CNOkPC89.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/radix-ui-Dt3edmE5.js">
|
|
30
30
|
<link rel="modulepreload" crossorigin href="/assets/tanstack-B8i0evp-.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/notifications-B2HqRBj7.js">
|
|
32
|
-
<link rel="modulepreload" crossorigin href="/assets/icons-
|
|
32
|
+
<link rel="modulepreload" crossorigin href="/assets/icons-BwsSbo2z.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/utils-CzKF5WmX.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/form-utils-Bcoyqxpq.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/code-highlight-BRUf_pqB.js">
|
|
36
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
36
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bp4s-Led.css">
|
|
37
37
|
</head>
|
|
38
38
|
<body>
|
|
39
39
|
<div id="root"></div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-env.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/hook-env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"hook-env.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/hook-env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsE5D"}
|
|
@@ -27,7 +27,23 @@ function getWebSearchHookEnv() {
|
|
|
27
27
|
// Pass master switch
|
|
28
28
|
env.CCS_WEBSEARCH_ENABLED = '1';
|
|
29
29
|
// Pass individual provider enabled states
|
|
30
|
-
// Hook will only use providers that are BOTH enabled AND
|
|
30
|
+
// Hook will only use providers that are BOTH enabled AND ready.
|
|
31
|
+
if (wsConfig.providers?.exa?.enabled) {
|
|
32
|
+
env.CCS_WEBSEARCH_EXA = '1';
|
|
33
|
+
env.CCS_WEBSEARCH_EXA_MAX_RESULTS = String(wsConfig.providers.exa.max_results || 5);
|
|
34
|
+
}
|
|
35
|
+
if (wsConfig.providers?.tavily?.enabled) {
|
|
36
|
+
env.CCS_WEBSEARCH_TAVILY = '1';
|
|
37
|
+
env.CCS_WEBSEARCH_TAVILY_MAX_RESULTS = String(wsConfig.providers.tavily.max_results || 5);
|
|
38
|
+
}
|
|
39
|
+
if (wsConfig.providers?.duckduckgo?.enabled) {
|
|
40
|
+
env.CCS_WEBSEARCH_DUCKDUCKGO = '1';
|
|
41
|
+
env.CCS_WEBSEARCH_DUCKDUCKGO_MAX_RESULTS = String(wsConfig.providers.duckduckgo.max_results || 5);
|
|
42
|
+
}
|
|
43
|
+
if (wsConfig.providers?.brave?.enabled) {
|
|
44
|
+
env.CCS_WEBSEARCH_BRAVE = '1';
|
|
45
|
+
env.CCS_WEBSEARCH_BRAVE_MAX_RESULTS = String(wsConfig.providers.brave.max_results || 5);
|
|
46
|
+
}
|
|
31
47
|
if (wsConfig.providers?.gemini?.enabled) {
|
|
32
48
|
env.CCS_WEBSEARCH_GEMINI = '1';
|
|
33
49
|
if (wsConfig.providers.gemini.model) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-env.js","sourceRoot":"","sources":["../../../src/utils/websearch/hook-env.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,8EAAwE;AAExE;;;;;;GAMG;AACH,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,IAAA,0CAAkB,GAAE,CAAC;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,iCAAiC;IACjC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IACrB,GAAG,CAAC,qBAAqB,GAAG,GAAG,CAAC;IAEhC,0CAA0C;IAC1C,
|
|
1
|
+
{"version":3,"file":"hook-env.js","sourceRoot":"","sources":["../../../src/utils/websearch/hook-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,30 +7,23 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { WebSearchCliInfo, WebSearchStatus } from './types';
|
|
9
9
|
/**
|
|
10
|
-
* Get all WebSearch
|
|
10
|
+
* Get all WebSearch providers with their current status.
|
|
11
11
|
*/
|
|
12
12
|
export declare function getWebSearchCliProviders(): WebSearchCliInfo[];
|
|
13
13
|
/**
|
|
14
|
-
* Check if any WebSearch
|
|
14
|
+
* Check if any WebSearch provider is currently ready.
|
|
15
15
|
*/
|
|
16
16
|
export declare function hasAnyWebSearchCli(): boolean;
|
|
17
17
|
/**
|
|
18
|
-
* Get
|
|
19
|
-
* Returns raw message strings (without indicator prefix) for display
|
|
18
|
+
* Get setup hints when no providers are ready.
|
|
20
19
|
*/
|
|
21
20
|
export declare function getCliInstallHints(): string[];
|
|
22
21
|
/**
|
|
23
|
-
* Get WebSearch readiness status for display
|
|
24
|
-
*
|
|
25
|
-
* Called on third-party profile startup to inform user.
|
|
26
|
-
* Checks both installation AND authentication status for Gemini CLI.
|
|
22
|
+
* Get WebSearch readiness status for display.
|
|
27
23
|
*/
|
|
28
24
|
export declare function getWebSearchReadiness(): WebSearchStatus;
|
|
29
25
|
/**
|
|
30
|
-
* Display WebSearch status (single line, equilibrium UX)
|
|
31
|
-
*
|
|
32
|
-
* Only call for third-party profiles.
|
|
33
|
-
* Shows detailed install hints when no CLI is installed.
|
|
26
|
+
* Display WebSearch status (single line, equilibrium UX).
|
|
34
27
|
*/
|
|
35
28
|
export declare function displayWebSearchStatus(): void;
|
|
36
29
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAwEjE;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,gBAAgB,EAAE,CAqE7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAW7C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAsCvD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAiB7C"}
|
|
@@ -13,154 +13,204 @@ const unified_config_loader_1 = require("../../config/unified-config-loader");
|
|
|
13
13
|
const gemini_cli_1 = require("./gemini-cli");
|
|
14
14
|
const grok_cli_1 = require("./grok-cli");
|
|
15
15
|
const opencode_cli_1 = require("./opencode-cli");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
function
|
|
16
|
+
function hasEnvValue(name) {
|
|
17
|
+
return (process.env[name] || '').trim().length > 0;
|
|
18
|
+
}
|
|
19
|
+
function hasAnyEnvValue(names) {
|
|
20
|
+
return names.some((name) => hasEnvValue(name));
|
|
21
|
+
}
|
|
22
|
+
function getLegacyProviderStatuses() {
|
|
23
|
+
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
20
24
|
const geminiStatus = (0, gemini_cli_1.getGeminiCliStatus)();
|
|
21
25
|
const grokStatus = (0, grok_cli_1.getGrokCliStatus)();
|
|
22
26
|
const opencodeStatus = (0, opencode_cli_1.getOpenCodeCliStatus)();
|
|
27
|
+
const geminiAuthed = geminiStatus.installed && (0, gemini_cli_1.isGeminiAuthenticated)();
|
|
23
28
|
return [
|
|
24
29
|
{
|
|
25
30
|
id: 'gemini',
|
|
31
|
+
kind: 'legacy-cli',
|
|
26
32
|
name: 'Gemini CLI',
|
|
27
33
|
command: 'gemini',
|
|
28
|
-
|
|
34
|
+
enabled: wsConfig.providers?.gemini?.enabled ?? false,
|
|
35
|
+
available: geminiAuthed,
|
|
29
36
|
version: geminiStatus.version ?? null,
|
|
30
37
|
installCommand: 'npm install -g @google/gemini-cli',
|
|
31
38
|
docsUrl: 'https://github.com/google-gemini/gemini-cli',
|
|
32
39
|
requiresApiKey: false,
|
|
33
|
-
description: '
|
|
34
|
-
|
|
40
|
+
description: 'Optional legacy LLM fallback with Google web search.',
|
|
41
|
+
detail: geminiStatus.installed
|
|
42
|
+
? geminiAuthed
|
|
43
|
+
? 'Authenticated'
|
|
44
|
+
: "Run 'gemini' to login"
|
|
45
|
+
: 'Not installed',
|
|
35
46
|
},
|
|
36
47
|
{
|
|
37
48
|
id: 'opencode',
|
|
49
|
+
kind: 'legacy-cli',
|
|
38
50
|
name: 'OpenCode',
|
|
39
51
|
command: 'opencode',
|
|
40
|
-
|
|
52
|
+
enabled: wsConfig.providers?.opencode?.enabled ?? false,
|
|
53
|
+
available: opencodeStatus.installed,
|
|
41
54
|
version: opencodeStatus.version ?? null,
|
|
42
55
|
installCommand: 'curl -fsSL https://opencode.ai/install | bash',
|
|
43
56
|
docsUrl: 'https://github.com/sst/opencode',
|
|
44
57
|
requiresApiKey: false,
|
|
45
|
-
description: '
|
|
46
|
-
|
|
58
|
+
description: 'Optional legacy LLM fallback via OpenCode.',
|
|
59
|
+
detail: opencodeStatus.installed ? 'Installed' : 'Not installed',
|
|
47
60
|
},
|
|
48
61
|
{
|
|
49
62
|
id: 'grok',
|
|
63
|
+
kind: 'legacy-cli',
|
|
50
64
|
name: 'Grok CLI',
|
|
51
65
|
command: 'grok',
|
|
52
|
-
|
|
66
|
+
enabled: wsConfig.providers?.grok?.enabled ?? false,
|
|
67
|
+
available: grokStatus.installed && hasEnvValue('GROK_API_KEY'),
|
|
53
68
|
version: grokStatus.version ?? null,
|
|
54
69
|
installCommand: 'npm install -g @vibe-kit/grok-cli',
|
|
55
70
|
docsUrl: 'https://github.com/superagent-ai/grok-cli',
|
|
56
71
|
requiresApiKey: true,
|
|
57
72
|
apiKeyEnvVar: 'GROK_API_KEY',
|
|
58
|
-
description: '
|
|
59
|
-
|
|
73
|
+
description: 'Optional legacy LLM fallback with xAI Grok.',
|
|
74
|
+
detail: grokStatus.installed
|
|
75
|
+
? hasEnvValue('GROK_API_KEY')
|
|
76
|
+
? 'Ready'
|
|
77
|
+
: 'Set GROK_API_KEY'
|
|
78
|
+
: 'Not installed',
|
|
60
79
|
},
|
|
61
80
|
];
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get all WebSearch providers with their current status.
|
|
84
|
+
*/
|
|
85
|
+
function getWebSearchCliProviders() {
|
|
86
|
+
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
87
|
+
const providers = [
|
|
88
|
+
{
|
|
89
|
+
id: 'exa',
|
|
90
|
+
kind: 'backend',
|
|
91
|
+
name: 'Exa',
|
|
92
|
+
enabled: wsConfig.providers?.exa?.enabled ?? false,
|
|
93
|
+
available: (wsConfig.providers?.exa?.enabled ?? false) &&
|
|
94
|
+
hasAnyEnvValue(['EXA_API_KEY', 'CCS_WEBSEARCH_EXA_API_KEY']),
|
|
95
|
+
version: null,
|
|
96
|
+
docsUrl: 'https://docs.exa.ai/reference/search',
|
|
97
|
+
requiresApiKey: true,
|
|
98
|
+
apiKeyEnvVar: 'EXA_API_KEY',
|
|
99
|
+
description: 'API-backed search with strong relevance and content extraction.',
|
|
100
|
+
detail: hasAnyEnvValue(['EXA_API_KEY', 'CCS_WEBSEARCH_EXA_API_KEY'])
|
|
101
|
+
? `API key detected (${wsConfig.providers?.exa?.max_results ?? 5} results)`
|
|
102
|
+
: 'Set EXA_API_KEY',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'tavily',
|
|
106
|
+
kind: 'backend',
|
|
107
|
+
name: 'Tavily',
|
|
108
|
+
enabled: wsConfig.providers?.tavily?.enabled ?? false,
|
|
109
|
+
available: (wsConfig.providers?.tavily?.enabled ?? false) &&
|
|
110
|
+
hasAnyEnvValue(['TAVILY_API_KEY', 'CCS_WEBSEARCH_TAVILY_API_KEY']),
|
|
111
|
+
version: null,
|
|
112
|
+
docsUrl: 'https://docs.tavily.com/documentation/api-reference/endpoint/search',
|
|
113
|
+
requiresApiKey: true,
|
|
114
|
+
apiKeyEnvVar: 'TAVILY_API_KEY',
|
|
115
|
+
description: 'Search API optimized for agent workflows and concise web result synthesis.',
|
|
116
|
+
detail: hasAnyEnvValue(['TAVILY_API_KEY', 'CCS_WEBSEARCH_TAVILY_API_KEY'])
|
|
117
|
+
? `API key detected (${wsConfig.providers?.tavily?.max_results ?? 5} results)`
|
|
118
|
+
: 'Set TAVILY_API_KEY',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: 'duckduckgo',
|
|
122
|
+
kind: 'backend',
|
|
123
|
+
name: 'DuckDuckGo',
|
|
124
|
+
enabled: wsConfig.providers?.duckduckgo?.enabled ?? true,
|
|
125
|
+
available: wsConfig.providers?.duckduckgo?.enabled ?? true,
|
|
126
|
+
version: null,
|
|
127
|
+
docsUrl: 'https://duckduckgo.com',
|
|
128
|
+
requiresApiKey: false,
|
|
129
|
+
description: 'Default built-in HTML search backend. Zero setup.',
|
|
130
|
+
detail: `Built-in (${wsConfig.providers?.duckduckgo?.max_results ?? 5} results)`,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: 'brave',
|
|
134
|
+
kind: 'backend',
|
|
135
|
+
name: 'Brave Search',
|
|
136
|
+
enabled: wsConfig.providers?.brave?.enabled ?? false,
|
|
137
|
+
available: (wsConfig.providers?.brave?.enabled ?? false) &&
|
|
138
|
+
hasAnyEnvValue(['BRAVE_API_KEY', 'CCS_WEBSEARCH_BRAVE_API_KEY']),
|
|
139
|
+
version: null,
|
|
140
|
+
docsUrl: 'https://brave.com/search/api/',
|
|
141
|
+
requiresApiKey: true,
|
|
142
|
+
apiKeyEnvVar: 'BRAVE_API_KEY',
|
|
143
|
+
description: 'API-backed web search with cleaner result metadata.',
|
|
144
|
+
detail: hasAnyEnvValue(['BRAVE_API_KEY', 'CCS_WEBSEARCH_BRAVE_API_KEY'])
|
|
145
|
+
? `API key detected (${wsConfig.providers?.brave?.max_results ?? 5} results)`
|
|
146
|
+
: 'Set BRAVE_API_KEY',
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
return [...providers, ...getLegacyProviderStatuses()];
|
|
150
|
+
}
|
|
63
151
|
exports.getWebSearchCliProviders = getWebSearchCliProviders;
|
|
64
152
|
/**
|
|
65
|
-
* Check if any WebSearch
|
|
153
|
+
* Check if any WebSearch provider is currently ready.
|
|
66
154
|
*/
|
|
67
155
|
function hasAnyWebSearchCli() {
|
|
68
|
-
return (
|
|
156
|
+
return getWebSearchCliProviders().some((provider) => provider.enabled && provider.available);
|
|
69
157
|
}
|
|
70
158
|
exports.hasAnyWebSearchCli = hasAnyWebSearchCli;
|
|
71
159
|
/**
|
|
72
|
-
* Get
|
|
73
|
-
* Returns raw message strings (without indicator prefix) for display
|
|
160
|
+
* Get setup hints when no providers are ready.
|
|
74
161
|
*/
|
|
75
162
|
function getCliInstallHints() {
|
|
76
163
|
if (hasAnyWebSearchCli()) {
|
|
77
164
|
return [];
|
|
78
165
|
}
|
|
79
166
|
return [
|
|
80
|
-
'WebSearch:
|
|
81
|
-
'
|
|
82
|
-
'
|
|
83
|
-
'
|
|
167
|
+
'WebSearch: no ready providers',
|
|
168
|
+
' Enable DuckDuckGo in Settings > WebSearch for zero-setup search',
|
|
169
|
+
' Or export EXA_API_KEY, TAVILY_API_KEY, or BRAVE_API_KEY for API-backed search',
|
|
170
|
+
' Optional legacy fallback: npm i -g @google/gemini-cli',
|
|
84
171
|
];
|
|
85
172
|
}
|
|
86
173
|
exports.getCliInstallHints = getCliInstallHints;
|
|
87
174
|
/**
|
|
88
|
-
* Get WebSearch readiness status for display
|
|
89
|
-
*
|
|
90
|
-
* Called on third-party profile startup to inform user.
|
|
91
|
-
* Checks both installation AND authentication status for Gemini CLI.
|
|
175
|
+
* Get WebSearch readiness status for display.
|
|
92
176
|
*/
|
|
93
177
|
function getWebSearchReadiness() {
|
|
94
178
|
const wsConfig = (0, unified_config_loader_1.getWebSearchConfig)();
|
|
95
|
-
|
|
179
|
+
const providers = getWebSearchCliProviders();
|
|
96
180
|
if (!wsConfig.enabled) {
|
|
97
181
|
return {
|
|
98
182
|
readiness: 'unavailable',
|
|
99
|
-
geminiCli: false,
|
|
100
|
-
geminiAuthenticated: false,
|
|
101
|
-
grokCli: false,
|
|
102
|
-
opencodeCli: false,
|
|
103
183
|
message: 'Disabled in config',
|
|
184
|
+
providers,
|
|
104
185
|
};
|
|
105
186
|
}
|
|
106
|
-
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
const grokInstalled = (0, grok_cli_1.hasGrokCli)();
|
|
110
|
-
const opencodeInstalled = (0, opencode_cli_1.hasOpenCodeCli)();
|
|
111
|
-
// Build message based on installed + authenticated CLIs
|
|
112
|
-
const readyClis = [];
|
|
113
|
-
const needsAuthClis = [];
|
|
114
|
-
// Gemini requires auth check
|
|
115
|
-
if (geminiInstalled) {
|
|
116
|
-
if (geminiAuthed) {
|
|
117
|
-
readyClis.push('Gemini');
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
needsAuthClis.push('Gemini');
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
// Other CLIs don't require auth check (for now)
|
|
124
|
-
if (grokInstalled)
|
|
125
|
-
readyClis.push('Grok');
|
|
126
|
-
if (opencodeInstalled)
|
|
127
|
-
readyClis.push('OpenCode');
|
|
128
|
-
// Determine overall status
|
|
129
|
-
if (readyClis.length > 0) {
|
|
187
|
+
const enabledProviders = providers.filter((provider) => provider.enabled);
|
|
188
|
+
const readyProviders = enabledProviders.filter((provider) => provider.available);
|
|
189
|
+
if (readyProviders.length > 0) {
|
|
130
190
|
return {
|
|
131
191
|
readiness: 'ready',
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
grokCli: grokInstalled,
|
|
135
|
-
opencodeCli: opencodeInstalled,
|
|
136
|
-
message: `Ready (${readyClis.join(' + ')})`,
|
|
192
|
+
message: `Ready (${readyProviders.map((provider) => provider.name).join(' + ')})`,
|
|
193
|
+
providers,
|
|
137
194
|
};
|
|
138
195
|
}
|
|
139
|
-
if (
|
|
196
|
+
if (enabledProviders.length > 0) {
|
|
140
197
|
return {
|
|
141
|
-
readiness: '
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
message: `Gemini: run 'gemini' to login`,
|
|
198
|
+
readiness: 'needs_setup',
|
|
199
|
+
message: enabledProviders
|
|
200
|
+
.map((provider) => `${provider.name}: ${provider.detail}`)
|
|
201
|
+
.join(' | '),
|
|
202
|
+
providers,
|
|
147
203
|
};
|
|
148
204
|
}
|
|
149
205
|
return {
|
|
150
206
|
readiness: 'unavailable',
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
grokCli: false,
|
|
154
|
-
opencodeCli: false,
|
|
155
|
-
message: 'Install: npm i -g @google/gemini-cli',
|
|
207
|
+
message: 'Enable at least one provider in Settings > WebSearch',
|
|
208
|
+
providers,
|
|
156
209
|
};
|
|
157
210
|
}
|
|
158
211
|
exports.getWebSearchReadiness = getWebSearchReadiness;
|
|
159
212
|
/**
|
|
160
|
-
* Display WebSearch status (single line, equilibrium UX)
|
|
161
|
-
*
|
|
162
|
-
* Only call for third-party profiles.
|
|
163
|
-
* Shows detailed install hints when no CLI is installed.
|
|
213
|
+
* Display WebSearch status (single line, equilibrium UX).
|
|
164
214
|
*/
|
|
165
215
|
function displayWebSearchStatus() {
|
|
166
216
|
const status = getWebSearchReadiness();
|
|
@@ -168,22 +218,13 @@ function displayWebSearchStatus() {
|
|
|
168
218
|
case 'ready':
|
|
169
219
|
console.error((0, ui_1.ok)(`WebSearch: ${status.message}`));
|
|
170
220
|
break;
|
|
171
|
-
case '
|
|
221
|
+
case 'needs_setup':
|
|
172
222
|
console.error((0, ui_1.warn)(`WebSearch: ${status.message}`));
|
|
173
223
|
break;
|
|
174
224
|
case 'unavailable':
|
|
175
225
|
console.error((0, ui_1.fail)(`WebSearch: ${status.message}`));
|
|
176
|
-
const
|
|
177
|
-
|
|
178
|
-
// First line gets [i] prefix, rest are continuation (indented, no prefix)
|
|
179
|
-
for (let i = 0; i < hints.length; i++) {
|
|
180
|
-
if (i === 0) {
|
|
181
|
-
console.error((0, ui_1.info)(hints[i]));
|
|
182
|
-
}
|
|
183
|
-
else {
|
|
184
|
-
console.error(hints[i]);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
226
|
+
for (const [index, hint] of getCliInstallHints().entries()) {
|
|
227
|
+
console.error(index === 0 ? (0, ui_1.info)(hint) : hint);
|
|
187
228
|
}
|
|
188
229
|
break;
|
|
189
230
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,8BAA6C;AAC7C,8EAAwE;AACxE,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/utils/websearch/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebSearch Type Definitions
|
|
3
3
|
*
|
|
4
|
-
* Contains all type definitions for WebSearch
|
|
4
|
+
* Contains all type definitions for WebSearch providers and status.
|
|
5
5
|
*
|
|
6
6
|
* @module utils/websearch/types
|
|
7
7
|
*/
|
|
@@ -24,44 +24,53 @@ export type OpenCodeCliStatus = ComponentStatus;
|
|
|
24
24
|
/**
|
|
25
25
|
* WebSearch availability status for third-party profiles
|
|
26
26
|
*/
|
|
27
|
-
export type WebSearchReadiness = 'ready' | '
|
|
27
|
+
export type WebSearchReadiness = 'ready' | 'needs_setup' | 'unavailable';
|
|
28
28
|
/**
|
|
29
|
-
* WebSearch
|
|
29
|
+
* WebSearch provider identifier
|
|
30
30
|
*/
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
opencodeCli: boolean;
|
|
37
|
-
message: string;
|
|
38
|
-
}
|
|
31
|
+
export type WebSearchProviderId = 'exa' | 'tavily' | 'duckduckgo' | 'brave' | 'gemini' | 'grok' | 'opencode';
|
|
32
|
+
/**
|
|
33
|
+
* Provider execution class.
|
|
34
|
+
*/
|
|
35
|
+
export type WebSearchProviderKind = 'backend' | 'legacy-cli';
|
|
39
36
|
/**
|
|
40
|
-
* WebSearch
|
|
37
|
+
* WebSearch provider information for health checks and UI
|
|
41
38
|
*/
|
|
42
39
|
export interface WebSearchCliInfo {
|
|
43
40
|
/** Provider ID */
|
|
44
|
-
id:
|
|
41
|
+
id: WebSearchProviderId;
|
|
42
|
+
/** Backend vs legacy CLI */
|
|
43
|
+
kind: WebSearchProviderKind;
|
|
45
44
|
/** Display name */
|
|
46
45
|
name: string;
|
|
47
|
-
/**
|
|
48
|
-
command
|
|
49
|
-
/** Whether
|
|
50
|
-
|
|
51
|
-
/**
|
|
46
|
+
/** Command name for legacy providers */
|
|
47
|
+
command?: string;
|
|
48
|
+
/** Whether the provider is enabled in config */
|
|
49
|
+
enabled: boolean;
|
|
50
|
+
/** Whether the provider is ready right now */
|
|
51
|
+
available: boolean;
|
|
52
|
+
/** CLI version if applicable */
|
|
52
53
|
version: string | null;
|
|
53
|
-
/** Install command */
|
|
54
|
-
installCommand
|
|
54
|
+
/** Install or setup command when applicable */
|
|
55
|
+
installCommand?: string;
|
|
55
56
|
/** Docs URL */
|
|
56
|
-
docsUrl
|
|
57
|
+
docsUrl?: string;
|
|
57
58
|
/** Whether this provider requires an API key */
|
|
58
59
|
requiresApiKey: boolean;
|
|
59
60
|
/** API key environment variable name */
|
|
60
61
|
apiKeyEnvVar?: string;
|
|
61
62
|
/** Brief description */
|
|
62
63
|
description: string;
|
|
63
|
-
/**
|
|
64
|
-
|
|
64
|
+
/** Summary detail shown in status UIs */
|
|
65
|
+
detail: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* WebSearch status for display
|
|
69
|
+
*/
|
|
70
|
+
export interface WebSearchStatus {
|
|
71
|
+
readiness: WebSearchReadiness;
|
|
72
|
+
message: string;
|
|
73
|
+
providers: WebSearchCliInfo[];
|
|
65
74
|
}
|
|
66
75
|
/**
|
|
67
76
|
* WebSearch provider configuration from config.yaml
|
|
@@ -70,6 +79,7 @@ export interface WebSearchProviderConfig {
|
|
|
70
79
|
enabled?: boolean;
|
|
71
80
|
model?: string;
|
|
72
81
|
timeout?: number;
|
|
82
|
+
max_results?: number;
|
|
73
83
|
}
|
|
74
84
|
/**
|
|
75
85
|
* WebSearch configuration from config.yaml
|
|
@@ -77,6 +87,10 @@ export interface WebSearchProviderConfig {
|
|
|
77
87
|
export interface WebSearchConfig {
|
|
78
88
|
enabled: boolean;
|
|
79
89
|
providers?: {
|
|
90
|
+
exa?: WebSearchProviderConfig;
|
|
91
|
+
tavily?: WebSearchProviderConfig;
|
|
92
|
+
duckduckgo?: WebSearchProviderConfig;
|
|
93
|
+
brave?: WebSearchProviderConfig;
|
|
80
94
|
gemini?: WebSearchProviderConfig;
|
|
81
95
|
opencode?: WebSearchProviderConfig;
|
|
82
96
|
grok?: WebSearchProviderConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/websearch/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,CAAC;AAE9C;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAE5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,KAAK,GACL,QAAQ,GACR,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,MAAM,GACN,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,YAAY,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,EAAE,EAAE,mBAAmB,CAAC;IACxB,4BAA4B;IAC5B,IAAI,EAAE,qBAAqB,CAAC;IAC5B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,gCAAgC;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE;QACV,GAAG,CAAC,EAAE,uBAAuB,CAAC;QAC9B,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,UAAU,CAAC,EAAE,uBAAuB,CAAC;QACrC,KAAK,CAAC,EAAE,uBAAuB,CAAC;QAChC,MAAM,CAAC,EAAE,uBAAuB,CAAC;QACjC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;QACnC,IAAI,CAAC,EAAE,uBAAuB,CAAC;KAChC,CAAC;CACH"}
|