ocean-brain 0.13.3 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -2
- package/dist/mcp.js +439 -480
- package/package.json +3 -2
- package/server/client/dist/assets/ArrowClockwise.es-BwtKWcmj.js +1 -0
- package/server/client/dist/assets/{ArrowRight.es-BlNsZQFs.js → ArrowRight.es-E09Lfefr.js} +1 -1
- package/server/client/dist/assets/{AuxiliaryPanelHeader-HAttwVby.js → AuxiliaryPanelHeader-Bys98BJJ.js} +1 -1
- package/server/client/dist/assets/Calendar-BOhJYi8K.js +25 -0
- package/server/client/dist/assets/Callout-CAH1ua9B.js +1 -0
- package/server/client/dist/assets/{CaretUp.es-C8iY5OlB.js → CaretUp.es-DSWjIa-J.js} +1 -1
- package/server/client/dist/assets/{CheckCircle.es-Dqr3WImn.js → CheckCircle.es-Cou6rItm.js} +1 -1
- package/server/client/dist/assets/{Copy.es-fMv0ETir.js → Copy.es-ftEldGIL.js} +1 -1
- package/server/client/dist/assets/{File.es-CHtXXafR.js → File.es-DlKAX1uO.js} +1 -1
- package/server/client/dist/assets/{FileText.es-DPIwDCEe.js → FileText.es-D6JM_MqM.js} +1 -1
- package/server/client/dist/assets/{FlowArrow.es-Dxee98ir.js → FlowArrow.es-BRWXqf9A.js} +1 -1
- package/server/client/dist/assets/{Graph-hVj6vAYJ.js → Graph-BaqGi3M7.js} +1 -1
- package/server/client/dist/assets/{Graph-CdEu8eAn.js → Graph-L-d0cdMk.js} +1 -1
- package/server/client/dist/assets/{Image.es-CjXY1JVf.js → Image.es-Bh2mTNtr.js} +1 -1
- package/server/client/dist/assets/{Info.es-CYxg-Vku.js → Info.es-Bwz4CSvS.js} +1 -1
- package/server/client/dist/assets/Integration-C-rva2X9.js +1 -0
- package/server/client/dist/assets/{LinkSimple.es-B-P-7Iem.js → LinkSimple.es-iJvLf-MB.js} +1 -1
- package/server/client/dist/assets/Note-OO_uh2a7.js +19 -0
- package/server/client/dist/assets/{NotePropertiesPanel-6P7UfRBR.js → NotePropertiesPanel-BFWjxL_w.js} +1 -1
- package/server/client/dist/assets/{Plus.es-Dy6onD-Z.js → Plus.es-Dmb3oijD.js} +1 -1
- package/server/client/dist/assets/{Reminders-DnuALBL6.js → Reminders-CtpFtvu6.js} +1 -1
- package/server/client/dist/assets/{Search-AaD1Mt0d.js → Search-t48pkUg-.js} +2 -2
- package/server/client/dist/assets/{SurfaceCard-D5QxOte_.js → SurfaceCard-zdJ8k1o0.js} +1 -1
- package/server/client/dist/assets/{Tag-B2Qiq1Hv.js → Tag-BL2h3ZaX.js} +1 -1
- package/server/client/dist/assets/TagNotes-BpRTCEBf.js +1 -0
- package/server/client/dist/assets/Trash.es-DFnO8iF5.js +1 -0
- package/server/client/dist/assets/{ViewChip-BVkZAXyx.js → ViewChip-BdPhSEvG.js} +1 -1
- package/server/client/dist/assets/{Views-B5oh8GVM.js → Views-BoO6vgnF.js} +1 -1
- package/server/client/dist/assets/WarningCircle.es-BAvgGuQK.js +1 -0
- package/server/client/dist/assets/{abnfDiagram-N423BO3Z-D44O4T7q.js → abnfDiagram-N423BO3Z-CPgGmCbn.js} +1 -1
- package/server/client/dist/assets/app-OGsLwSqJ.js +151 -0
- package/server/client/dist/assets/app-yYMsgUrz.css +1 -0
- package/server/client/dist/assets/{arc-Cil9fXuW.js → arc-DqTgRpuF.js} +1 -1
- package/server/client/dist/assets/{architectureDiagram-T3A2C74G-Cjq6ayF2.js → architectureDiagram-T3A2C74G-rTYMAQ-J.js} +1 -1
- package/server/client/dist/assets/{blockDiagram-VBNYF7ZC-B2Xm5N0i.js → blockDiagram-VBNYF7ZC-BOluytVz.js} +1 -1
- package/server/client/dist/assets/{c4Diagram-5PPSVZJV-Dp0y-lCR.js → c4Diagram-5PPSVZJV-C8gbPpcb.js} +1 -1
- package/server/client/dist/assets/{calendar-data-wB0ifXdo.js → calendar-data-CwVF7Pz3.js} +1 -1
- package/server/client/dist/assets/channel--aI9fJWX.js +1 -0
- package/server/client/dist/assets/{chunk-2GRJ4B5K-CWaaNkFx.js → chunk-2GRJ4B5K-CRER5Ka0.js} +1 -1
- package/server/client/dist/assets/{chunk-2Q5K7J3B-Ces-xz2S.js → chunk-2Q5K7J3B-hxmJWGu_.js} +1 -1
- package/server/client/dist/assets/{chunk-5RXB4S5H-B-4Chlfc.js → chunk-5RXB4S5H-Bpr5Us8Y.js} +1 -1
- package/server/client/dist/assets/{chunk-5VM5RSS4-C8_HVwuz.js → chunk-5VM5RSS4-CKUz9fAb.js} +1 -1
- package/server/client/dist/assets/{chunk-6Q2QTUOP-xZ8ofRqk.js → chunk-6Q2QTUOP-B8XEOHPN.js} +1 -1
- package/server/client/dist/assets/{chunk-GF5L2VYU-Bpa43a7s.js → chunk-GF5L2VYU-BBUD-HJi.js} +1 -1
- package/server/client/dist/assets/{chunk-JWPE2WC7-DsyTXbuq.js → chunk-JWPE2WC7-Dq6_B8-d.js} +1 -1
- package/server/client/dist/assets/{chunk-KBJHAD2P-BDhjm9-8.js → chunk-KBJHAD2P--2VZEwNJ.js} +1 -1
- package/server/client/dist/assets/{chunk-RYQCIY6F-Cn-jdp6I.js → chunk-RYQCIY6F-CKCwnKiC.js} +1 -1
- package/server/client/dist/assets/{chunk-XXDRQBXY-BKsc_0wh.js → chunk-XXDRQBXY-VDufR1Oi.js} +1 -1
- package/server/client/dist/assets/classDiagram-JCYQIIEL-BsbwE38V.js +1 -0
- package/server/client/dist/assets/classDiagram-v2-OCEON4UE-BsbwE38V.js +1 -0
- package/server/client/dist/assets/{cose-bilkent-JH36ORCC-jmn3Q4zj.js → cose-bilkent-JH36ORCC-D4nqOx8S.js} +1 -1
- package/server/client/dist/assets/{cynefinDiagram-MW4NZA55-BpLstuBJ.js → cynefinDiagram-MW4NZA55-CUuLMs-6.js} +1 -1
- package/server/client/dist/assets/{dagre-VZM6K2ZE-B5ft5Yzm.js → dagre-VZM6K2ZE-CUSkhZgS.js} +1 -1
- package/server/client/dist/assets/{diagram-7IWD3JNH-B_W9IsWZ.js → diagram-7IWD3JNH-D95eVcKx.js} +4 -4
- package/server/client/dist/assets/{diagram-B4RE2ZJO-32chS3GX.js → diagram-B4RE2ZJO-7OH_fb0K.js} +1 -1
- package/server/client/dist/assets/{diagram-LBJQPF4R-Bqupdb3-.js → diagram-LBJQPF4R-D9UwEIMd.js} +1 -1
- package/server/client/dist/assets/{diagram-Q27KOJAE-BD8jKBsv.js → diagram-Q27KOJAE-Dx7WFDuX.js} +1 -1
- package/server/client/dist/assets/{diagram-UB23O5K3-C40jAU8D.js → diagram-UB23O5K3-D2BYwAKT.js} +1 -1
- package/server/client/dist/assets/{ebnfDiagram-BXEA7PRR-BQfW9mFA.js → ebnfDiagram-BXEA7PRR-DbeA-fk4.js} +1 -1
- package/server/client/dist/assets/{erDiagram-JOGREHBK-ILZnLzz2.js → erDiagram-JOGREHBK-jWW-ICGO.js} +1 -1
- package/server/client/dist/assets/{flowDiagram-UKHOOZJN-CDmwr2dI.js → flowDiagram-UKHOOZJN-68iZdxxw.js} +1 -1
- package/server/client/dist/assets/{ganttDiagram-PKOTCBZU-DBcrUc49.js → ganttDiagram-PKOTCBZU-CxwY3VXg.js} +1 -1
- package/server/client/dist/assets/{gitGraphDiagram-DS77QQ5N-_xO6__FK.js → gitGraphDiagram-DS77QQ5N-Ci6o5MfZ.js} +1 -1
- package/server/client/dist/assets/{image.api-ChvlfuZg.js → image.api-CHuhmq_G.js} +1 -1
- package/server/client/dist/assets/index-CuCzOHJ6.js +1 -0
- package/server/client/dist/assets/{infoDiagram-6WML65LV-CuIIcu-L.js → infoDiagram-6WML65LV-DY7aMdjV.js} +1 -1
- package/server/client/dist/assets/integrations-B5SIEnG_.js +1 -0
- package/server/client/dist/assets/{ishikawaDiagram-WSZJBQD7-BVtRGTOj.js → ishikawaDiagram-WSZJBQD7-Bh5qKh1d.js} +1 -1
- package/server/client/dist/assets/{journeyDiagram-NVQOT4AX-D5-Nzb2N.js → journeyDiagram-NVQOT4AX-B_svXTTT.js} +1 -1
- package/server/client/dist/assets/{kanban-definition-27J2QSJJ-DmOhgC8H.js → kanban-definition-27J2QSJJ-CaJslHGg.js} +1 -1
- package/server/client/dist/assets/manage-image-Kd-7IGfB.js +1 -0
- package/server/client/dist/assets/{manage-image-detail-Dw3tAW3h.js → manage-image-detail-HU0QLP-t.js} +1 -1
- package/server/client/dist/assets/mcp-BQ418pyx.js +5 -0
- package/server/client/dist/assets/{mcp-admin-adapter-D0R8p9az.js → mcp-admin-adapter-CUakQ_Xm.js} +1 -1
- package/server/client/dist/assets/{mermaid.core-C2tL9tq7.js → mermaid.core-BfUQM5vF.js} +4 -4
- package/server/client/dist/assets/{mindmap-definition-FAOFIHXS-DuvsPqrh.js → mindmap-definition-FAOFIHXS-DGbkJda2.js} +1 -1
- package/server/client/dist/assets/{note-core-YhYEmI_R.js → note-core-DRBsBf9H.js} +9 -9
- package/server/client/dist/assets/{note-runtime-B3ats-dC.js → note-runtime-ztZvXRIu.js} +16 -16
- package/server/client/dist/assets/{note-ui-BtzPk8gA.js → note-ui-CRcP5BjO.js} +1 -1
- package/server/client/dist/assets/{pegDiagram-VL7TDLO6-D64crEZV.js → pegDiagram-VL7TDLO6-Bip6zQct.js} +1 -1
- package/server/client/dist/assets/{pieDiagram-7S7Q4E2Y--kl7vopC.js → pieDiagram-7S7Q4E2Y-CjfjGY8Y.js} +1 -1
- package/server/client/dist/assets/{placeholder-B5uPsE7-.js → placeholder-D7JKnpuh.js} +1 -1
- package/server/client/dist/assets/{properties-B7Fv95qY.js → properties-CtagYHMr.js} +1 -1
- package/server/client/dist/assets/{quadrantDiagram-CIZ2JOQS-DuvJ4M2y.js → quadrantDiagram-CIZ2JOQS-B6F1yUT-.js} +1 -1
- package/server/client/dist/assets/{railroadDiagram-AXF67PYL-BMKmCOY7.js → railroadDiagram-AXF67PYL-D-0fLe0F.js} +1 -1
- package/server/client/dist/assets/{requirementDiagram-LRYGKXZP-DY1eJcy0.js → requirementDiagram-LRYGKXZP-tm4mnCyJ.js} +1 -1
- package/server/client/dist/assets/route-preload.js +2 -2
- package/server/client/dist/assets/{sankeyDiagram-W5VNT64P-C3Ka4GKM.js → sankeyDiagram-W5VNT64P-DSBWFurb.js} +1 -1
- package/server/client/dist/assets/search-B5tCkhwj.js +1 -0
- package/server/client/dist/assets/{search-admin-adapter-Daf7e2YQ.js → search-admin-adapter-Be9xSY88.js} +1 -1
- package/server/client/dist/assets/{sequenceDiagram-SI44F4Z6-Bhpwtk2s.js → sequenceDiagram-SI44F4Z6-KrwjjJIV.js} +1 -1
- package/server/client/dist/assets/{sizeCapture-X5ZJPWSS-BFta71TW.js → sizeCapture-X5ZJPWSS-DL2cn_Q6.js} +1 -1
- package/server/client/dist/assets/{stateDiagram-OKZ733FA-D6GCn1io.js → stateDiagram-OKZ733FA-CKuNDH85.js} +1 -1
- package/server/client/dist/assets/{stateDiagram-v2-UEYNNEHI-g4yinGDn.js → stateDiagram-v2-UEYNNEHI-BFaj2wbM.js} +1 -1
- package/server/client/dist/assets/{swimlanes-SLNWSIFB-DLFvOjUl.js → swimlanes-SLNWSIFB-5S17nqhK.js} +2 -2
- package/server/client/dist/assets/swimlanesDiagram-ULZ7WXOC-dexsHJq2.js +8 -0
- package/server/client/dist/assets/{tag.api-DEUROVKQ.js → tag.api-DGfi8hWL.js} +1 -1
- package/server/client/dist/assets/time-Kh6oav5R.js +361 -0
- package/server/client/dist/assets/{timeline-definition-Z64GVDOM-DTSIekSM.js → timeline-definition-Z64GVDOM-CU1hp_7d.js} +3 -3
- package/server/client/dist/assets/{trash-BHida7BG.js → trash-Di2BWyUO.js} +1 -1
- package/server/client/dist/assets/url-Bp8sXMb4.js +1 -0
- package/server/client/dist/assets/{useNoteMutate-BjvZUmtX.js → useNoteMutate-BQj6jHhV.js} +3 -3
- package/server/client/dist/assets/{useReminderMutate-C5n-5LM-.js → useReminderMutate-jubqwSD9.js} +1 -1
- package/server/client/dist/assets/{vennDiagram-T6HMQDX7-CMNqSI2X.js → vennDiagram-T6HMQDX7-MoiVLnil.js} +1 -1
- package/server/client/dist/assets/{wardleyDiagram-T6FBY63Y-DV-JOYqB.js → wardleyDiagram-T6FBY63Y-cZkfdI6C.js} +1 -1
- package/server/client/dist/assets/{xychartDiagram-ELKLHX3M-BUIniF4m.js → xychartDiagram-ELKLHX3M-B63hxD-r.js} +1 -1
- package/server/client/dist/index.html +6 -6
- package/server/dist/app.js +11 -1
- package/server/dist/features/app-gateway/access.js +73 -0
- package/server/dist/features/app-gateway/database.js +20 -0
- package/server/dist/features/app-gateway/gateway.js +208 -0
- package/server/dist/features/integration/access-events.js +17 -0
- package/server/dist/features/integration/auth.js +21 -0
- package/server/dist/features/integration/manifest.js +116 -0
- package/server/dist/features/integration/note-sync.js +156 -0
- package/server/dist/features/integration/schema.js +54 -0
- package/server/dist/features/integration/service.js +246 -0
- package/server/dist/features/integration/status-report.js +22 -0
- package/server/dist/features/mcp-admin/service.js +19 -83
- package/server/dist/features/note/graphql/note.field.resolver.js +1 -1
- package/server/dist/features/note/graphql/note.mutation.resolver.js +20 -12
- package/server/dist/features/note/graphql/note.query.resolver.js +10 -1
- package/server/dist/features/note/graphql/note.type-defs.js +13 -1
- package/server/dist/features/note/http/authoring.js +493 -0
- package/server/dist/features/note/http/mcp.js +15 -463
- package/server/dist/features/note/services/authoring.js +17 -1
- package/server/dist/features/note/services/change-events.js +26 -0
- package/server/dist/features/note/services/markdown-intent-write.js +1 -0
- package/server/dist/features/note/services/markdown-read.js +85 -0
- package/server/dist/features/note/services/properties.js +36 -30
- package/server/dist/features/note/services/search.js +17 -0
- package/server/dist/features/search/graphql/resolver.js +10 -1
- package/server/dist/features/search/graphql/type-defs.js +3 -0
- package/server/dist/features/search/search-manager.js +4 -7
- package/server/dist/features/tag/graphql/tag.query.resolver.js +10 -0
- package/server/dist/features/tag/graphql/tag.type-defs.js +1 -0
- package/server/dist/features/view/graphql/mcp.query.resolver.js +22 -0
- package/server/dist/features/view/graphql/view.query.resolver.js +2 -0
- package/server/dist/features/view/graphql/view.type-defs.js +27 -0
- package/server/dist/features/view/services/mcp-read.js +142 -0
- package/server/dist/features/view/services/workspace.js +12 -4
- package/server/dist/modules/auth-guard.js +24 -1
- package/server/dist/modules/integration-token.js +27 -0
- package/server/dist/modules/mcp-auth.js +37 -23
- package/server/dist/modules/mcp-token.js +6 -25
- package/server/dist/modules/server-events.js +3 -0
- package/server/dist/routes/api.js +2 -0
- package/server/dist/routes/apps.js +163 -0
- package/server/dist/routes/graphql.js +2 -1
- package/server/dist/routes/index.js +2 -0
- package/server/dist/routes/integrations.js +137 -0
- package/server/dist/routes/mcp.js +29 -9
- package/server/prisma/migrations/20260917120000_0020_plugin_installations/migration.sql +39 -0
- package/server/prisma/migrations/20260917150000_0021_integration_connections/migration.sql +29 -0
- package/server/prisma/migrations/20260919090000_0022_integration_proxy_url/migration.sql +2 -0
- package/server/prisma/schema.prisma +36 -10
- package/server/client/dist/assets/Calendar-DwQBllfw.js +0 -25
- package/server/client/dist/assets/Callout-CcYyvHQP.js +0 -1
- package/server/client/dist/assets/Note-CpzLtGVM.js +0 -19
- package/server/client/dist/assets/TagNotes-B27G1ZVg.js +0 -1
- package/server/client/dist/assets/Trash.es-XEcWG_aq.js +0 -1
- package/server/client/dist/assets/app-EwvT7bMw.css +0 -1
- package/server/client/dist/assets/app-NgiBDISG.js +0 -151
- package/server/client/dist/assets/channel-DZFalh-h.js +0 -1
- package/server/client/dist/assets/classDiagram-JCYQIIEL-CkEhFvVV.js +0 -1
- package/server/client/dist/assets/classDiagram-v2-OCEON4UE-CkEhFvVV.js +0 -1
- package/server/client/dist/assets/index-CIEap4bu.js +0 -1
- package/server/client/dist/assets/manage-image-CSJ3Flgc.js +0 -1
- package/server/client/dist/assets/mcp-D8footel.js +0 -5
- package/server/client/dist/assets/search-ddYl3qH-.js +0 -1
- package/server/client/dist/assets/swimlanesDiagram-ULZ7WXOC-Ci4mcvmo.js +0 -8
- package/server/client/dist/assets/time-PxWila4-.js +0 -361
- package/server/client/dist/assets/url-DKUMNVCI.js +0 -1
- package/server/dist/features/search/note-change.js +0 -16
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{r as u,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{u as ne,a as se,b as C}from"./useNoteMutate-BjvZUmtX.js";import{u as ae,P as oe,T as i,a as A,b as p,L as h,B as f,d as F,s as ie,I as J,S as re,e as ce}from"./time-PxWila4-.js";import{f as le,s as de,r as me,a as ue}from"./mcp-admin-adapter-D0R8p9az.js";import{s as z}from"./Copy.es-fMv0ETir.js";import"./url-DKUMNVCI.js";const y=["mcp-admin","status"],N=t=>/^[A-Za-z0-9_./:@$-]+$/.test(t)?t:`'${t.replace(/'/g,"'\\''")}'`,b=t=>`'${t.replace(/'/g,"''")}'`,g={posix:"$HOME/.config/ocean-brain/mcp-token",powershell:"$HOME\\.config\\ocean-brain\\mcp-token"},Q=()=>typeof navigator<"u"&&/Windows/i.test(navigator.userAgent)?"powershell":"posix",pe=t=>{const n=t.match(/^\$HOME[\\/](.+)$/i)?.[1];return n?`Join-Path $HOME ${b(n)}`:b(t)},q=(t,n,a)=>{if(t==="powershell")return[`$tokenPath = ${pe(n)}`,"New-Item -ItemType Directory -Force -Path (Split-Path -Parent $tokenPath) | Out-Null",`Set-Content -Path $tokenPath -Value ${b(a)} -NoNewline -Encoding utf8`].join(`
|
|
2
|
-
`);const o=N(n);return[`mkdir -p "$(dirname ${o})"`,`printf '%s' ${N(a)} > ${o}`,`chmod 600 ${o}`].join(`
|
|
3
|
-
`)},H=(t,n,a)=>{const o=t==="powershell"?b:N;return`${t==="powershell"?"cmd.exe /d /c ":""}npx -y ocean-brain mcp --server ${o(n)} --token-file ${o(a)}`},he=(t,n,a)=>`codex mcp add ocean-brain -- ${H(t,n,a)}`,xe=(t,n,a)=>`claude mcp add --transport stdio ocean-brain -- ${H(t,n,a)}`,fe=(t,n,a)=>{const o=t==="powershell"?"cmd.exe":"npx",c=[...t==="powershell"?["/d","/c","npx"]:[],"-y","ocean-brain","mcp","--server",n,"--token-file",a];return JSON.stringify({mcpServers:{"ocean-brain":{command:o,args:c}}},null,2)},ye=(t,n,a,o,c)=>{const r=t==="codex"?he(n,a,o):t==="claude"?xe(n,a,o):fe(n,a,o);return t==="json"?["# 1. Create the token file",q(n,o,c),"","# 2. Add this MCP JSON",r].join(`
|
|
4
|
-
`):["# 1. Create the token file",q(n,o,c),"",`# 2. Add Ocean Brain to ${t}`,r].join(`
|
|
5
|
-
`)},ge=t=>!t||t==="unknown"?"MCP compatibility":`MCP compatibility ${t}`,be={codex:"Codex",claude:"Claude",json:"JSON"},Te=()=>{const t=ne(),n=ce(),a=ae(),[o,c]=u.useState(()=>window.location.origin),[r,P]=u.useState(""),[x,I]=u.useState(Q),[T,M]=u.useState(()=>g[Q()]),[l,B]=u.useState("codex"),{data:j,isLoading:V}=se({queryKey:y,queryFn:le}),S=C({mutationFn:de,onSuccess:s=>{a.setQueryData(y,s),n(s.enabled?"MCP access enabled.":"MCP access disabled.")}}),$=C({mutationFn:me,onSuccess:async({token:s})=>{P(s),n("New MCP token issued. Previous token is no longer valid."),await a.invalidateQueries({queryKey:y})}}),O=C({mutationFn:ue,onSuccess:s=>{P(""),a.setQueryData(y,s),n("MCP token revoked. Existing client configs will stop working.")}}),k=j?.enabled??!1,d=j?.hasActiveToken??!1,K=!V&&!S.isPending,_=T.trim()||g[x],D=ge(j?.server.mcpVersionRequirement),G=d?"1 active token":"No active token",W=l==="json"?"Token file and MCP JSON":`${be[l]} setup`,E=ye(l,x,o,_,r||"PASTE_TOKEN_HERE"),U="Copy setup",L="text-fg-tertiary",m="font-medium text-fg-tertiary",v="surface-base px-4 py-3.5",w="space-y-2",Z="max-w-full overflow-x-auto whitespace-pre font-mono text-xs leading-5 text-fg-secondary",X=async()=>{try{await navigator.clipboard.writeText(r),n("Copied token.")}catch{n("Failed to copy token.")}},Y=async()=>{try{await navigator.clipboard.writeText(E),n(l==="json"?"Copied MCP JSON.":"Copied MCP command.")}catch{n(`Could not copy. Select the ${l==="json"?"JSON":"command"} and copy it manually.`)}},ee=async()=>{d&&!await t("Rotate the MCP token? Existing MCP clients will stop working until they use the new token.")||$.mutate(void 0)},te=async()=>{await t("Revoke the MCP token? Existing MCP clients will stop working immediately.")&&O.mutate()};return e.jsx(oe,{title:"MCP",variant:"default",description:"Connect this Ocean Brain instance to MCP clients.",headerRight:e.jsxs("div",{className:"inline-flex items-center gap-3 rounded-[14px] border border-border-subtle bg-muted px-3 py-2",children:[e.jsxs(i,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:["MCP access ",k?"on":"off"]}),e.jsx(re,{"aria-label":"MCP access",checked:k,disabled:!K,onCheckedChange:()=>{S.mutate(!k)}})]}),children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("section",{className:"flex flex-col gap-3","aria-labelledby":"mcp-connect-heading",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(i,{id:"mcp-connect-heading",as:"h2",variant:"label",weight:"medium",className:L,children:"Connect a client"}),e.jsx(i,{as:"p",variant:"meta",tone:"secondary",children:"Save your token in a local file, then copy the command for your client."})]}),e.jsx(i,{as:"span",variant:"meta",weight:"medium",tone:"tertiary",className:"rounded-full border border-border-subtle bg-hover-subtle px-2.5 py-1",children:D})]}),e.jsxs("div",{className:`${v} flex flex-col gap-3`,children:[e.jsx("div",{className:"flex flex-wrap items-center gap-3",children:e.jsxs(A,{type:"single",variant:"quiet",size:"sm",value:l,onValueChange:s=>{(s==="codex"||s==="claude"||s==="json")&&B(s)},children:[e.jsx(p,{value:"codex",children:"Codex"}),e.jsx(p,{value:"claude",children:"Claude"}),e.jsx(p,{value:"json",children:"JSON"})]})}),e.jsxs("div",{className:"min-w-0 space-y-2",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsx(h,{htmlFor:"mcp-connection-output",className:m,children:W}),e.jsxs(f,{type:"button",variant:"subtle",size:"sm",onClick:Y,children:[e.jsx(z,{className:"h-4 w-4"}),U]})]}),e.jsx(F,{id:"mcp-connection-output",readOnly:!0,rows:l==="json"?13:9,wrap:"off",value:E,className:Z}),e.jsx(i,{as:"p",variant:"meta",tone:"tertiary",children:r?"The new token is already included in the token file step.":"Replace PASTE_TOKEN_HERE before running. The MCP client reads the token from that file."})]}),e.jsxs("details",{className:"group rounded-[12px] border border-border-subtle bg-muted",children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2.5 marker:hidden",children:[e.jsx(i,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:"Connection options"}),e.jsx(ie,{className:"h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-open:rotate-180","aria-hidden":"true"})]}),e.jsxs("div",{className:"space-y-3 border-t border-border-subtle px-3 py-3",children:[e.jsxs("div",{className:w,children:[e.jsx(h,{className:m,children:"Setup shell"}),e.jsxs(A,{type:"single",variant:"quiet",size:"sm",value:x,onValueChange:s=>{s!=="posix"&&s!=="powershell"||(M(R=>R===g[x]?g[s]:R),I(s))},"aria-label":"Setup shell",children:[e.jsx(p,{value:"posix",children:"macOS / Linux"}),e.jsx(p,{value:"powershell",children:"Windows PowerShell"})]})]}),e.jsxs("div",{className:w,children:[e.jsx(h,{htmlFor:"mcp-server-url",className:m,children:"Ocean Brain URL"}),e.jsx(J,{id:"mcp-server-url",value:o,onChange:s=>c(s.target.value)})]}),e.jsxs("div",{className:w,children:[e.jsx(h,{htmlFor:"mcp-token-file-path",className:m,children:"Token file path"}),e.jsx(J,{id:"mcp-token-file-path",placeholder:"/absolute/path/to/ocean-brain/mcp-token",value:T,onChange:s=>M(s.target.value)})]})]})]})]})]}),e.jsxs("section",{className:"flex flex-col gap-3","aria-labelledby":"mcp-token-heading",children:[e.jsxs("div",{className:`${v} flex flex-wrap items-center justify-between gap-3`,children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(i,{id:"mcp-token-heading",as:"h2",variant:"label",weight:"medium",className:L,children:"Token"}),e.jsxs(i,{as:"p",variant:"meta",tone:"tertiary",children:[G,". New tokens are shown once."]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(f,{type:"button",size:"sm",variant:d?"subtle":"primary",onClick:ee,isLoading:$.isPending,children:d?"Rotate token":"Issue token"}),e.jsx(f,{type:"button",size:"sm",variant:"soft-danger",onClick:te,isLoading:O.isPending,disabled:!d,children:"Revoke token"})]})]}),r&&e.jsxs("div",{className:`${v} border-dashed`,children:[e.jsxs("div",{className:"mb-3 flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(h,{htmlFor:"issued-mcp-token",className:m,children:"New token"}),e.jsx(i,{as:"p",variant:"meta",tone:"secondary",children:"Copy this token now and save it in your token file."})]}),e.jsxs(f,{type:"button",variant:"subtle",size:"sm",onClick:X,children:[e.jsx(z,{className:"h-4 w-4"}),"Copy token"]})]}),e.jsx(F,{id:"issued-mcp-token",rows:3,readOnly:!0,value:r})]})]})]})})};export{Te as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r,j as e}from"./floating-ui.react-dom-BWTnA00G.js";import{a as ve,b as E}from"./useNoteMutate-BjvZUmtX.js";import{A as je,u as Ne,P as we,T as n,L as A,I as R,B as N,x as Ce,y as ke,s as ee,d as Ae,S as Se,G as Ie,q as Ee,e as Me,f as Pe}from"./time-PxWila4-.js";import{f as Le,s as Fe,a as qe,t as Ke,b as Be}from"./search-admin-adapter-Daf7e2YQ.js";import{f as Ue}from"./Graph-hVj6vAYJ.js";import{s as T}from"./CheckCircle.es-Dqr3WImn.js";import"./url-DKUMNVCI.js";const Re=new Map([["bold",r.createElement(r.Fragment,null,r.createElement("path",{d:"M244,56v48a12,12,0,0,1-12,12H184a12,12,0,1,1,0-24H201.1l-19-17.38c-.13-.12-.26-.24-.38-.37A76,76,0,1,0,127,204h1a75.53,75.53,0,0,0,52.15-20.72,12,12,0,0,1,16.49,17.45A99.45,99.45,0,0,1,128,228h-1.37A100,100,0,1,1,198.51,57.06L220,76.72V56a12,12,0,0,1,24,0Z"}))],["duotone",r.createElement(r.Fragment,null,r.createElement("path",{d:"M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z",opacity:"0.2"}),r.createElement("path",{d:"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z"}))],["fill",r.createElement(r.Fragment,null,r.createElement("path",{d:"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1-5.66-13.66l17-17-10.55-9.65-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,1,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60l10.93,10L226.34,50.3A8,8,0,0,1,240,56Z"}))],["light",r.createElement(r.Fragment,null,r.createElement("path",{d:"M238,56v48a6,6,0,0,1-6,6H184a6,6,0,0,1,0-12h32.55l-30.38-27.8c-.06-.06-.12-.13-.19-.19a82,82,0,1,0-1.7,117.65,6,6,0,0,1,8.24,8.73A93.46,93.46,0,0,1,128,222h-1.28A94,94,0,1,1,194.37,61.4L226,90.35V56a6,6,0,1,1,12,0Z"}))],["regular",r.createElement(r.Fragment,null,r.createElement("path",{d:"M240,56v48a8,8,0,0,1-8,8H184a8,8,0,0,1,0-16H211.4L184.81,71.64l-.25-.24a80,80,0,1,0-1.67,114.78,8,8,0,0,1,11,11.63A95.44,95.44,0,0,1,128,224h-1.32A96,96,0,1,1,195.75,60L224,85.8V56a8,8,0,1,1,16,0Z"}))],["thin",r.createElement(r.Fragment,null,r.createElement("path",{d:"M236,56v48a4,4,0,0,1-4,4H184a4,4,0,0,1,0-8h37.7L187.53,68.69l-.13-.12a84,84,0,1,0-1.75,120.51,4,4,0,0,1,5.5,5.82A91.43,91.43,0,0,1,128,220h-1.26A92,92,0,1,1,193,62.84l35,32.05V56a4,4,0,1,1,8,0Z"}))]]),ae=r.forwardRef((t,i)=>r.createElement(je,{ref:i,...t,weights:Re}));ae.displayName="ArrowClockwiseIcon";const Te=ae,He={enabled:!1,baseUrl:"",model:"",queryInstruction:""},De={disabled:"Meaning search off","needs-connection":"Connection test needed","needs-index":"Index needed",indexing:"Building index",ready:"Meaning search ready",error:"Index error"},$e=(t,i)=>t.enabled===i.enabled&&t.baseUrl===i.baseUrl&&t.model===i.model&&t.queryInstruction===i.queryInstruction,w=t=>{const i=t.trim();let o=i.length;for(;o>0&&i.charCodeAt(o-1)===47;)o-=1;return o===i.length?i:i.slice(0,o)},Ve=t=>/(^|[-_/])(embed|embedding|bge|e5|gte)([-_/.]|$)/i.test(t),Qe=t=>{try{const i=new URL(t),o=i.hostname.toLowerCase(),d=o==="localhost"||o==="::1"||o==="[::1]"||o.startsWith("127.");return i.protocol==="http:"&&!d}catch{return!1}},ze=({hasConnectionFields:t,enabled:i,savedConnectionValidated:o,dirty:d,phase:g,available:m})=>t?i?d?"Save this setting. You can test the model before or after saving.":g==="needs-connection"?"Test the selected model to make meaning search available.":m?"Meaning search is active.":"Build the local index to activate meaning search.":o?"Your saved connection is ready to turn on again.":"You can save this provider now and test it when you are ready.":"Connect an API and choose a model first.",C=(t,i)=>Pe.isAxiosError(t)?t.response?.data?.message??t.message??i:t instanceof Error?t.message:i,Ze=t=>{if(!t)return"Not built yet";const i=new Date(t);return Number.isNaN(i.getTime())?t:i.toLocaleString()},aa=()=>{const t=Me(),i=Ne(),o=Ee.search.adminStatus(),[d,g]=r.useState(He),[m,se]=r.useState(!1),[y,H]=r.useState([]),[ne,D]=r.useState(""),[te,$]=r.useState(""),[M,P]=r.useState(""),[f,L]=r.useState(!1),[re,V]=r.useState(0),F=a=>{const l=M.trim();return l?{...a,apiKey:l}:f?{...a,apiKey:null}:a},{data:s,error:Q,isLoading:ie}=ve({queryKey:o,queryFn:Le,refetchInterval:a=>a.state.data?.phase==="indexing"||(a.state.data?.pendingNoteCount??0)>0?1e3:!1});r.useEffect(()=>{s&&!m&&(g(s.config),se(!0))},[m,s]);const z=E({mutationFn:Fe,onSuccess:a=>{i.setQueryData(o,a),g(a.config),P(""),L(!1),t("Search settings saved.")},onError:a=>{t(C(a,"Failed to save search settings."))}}),p=E({mutationFn:qe,onSuccess:({models:a},l)=>{const h=w(l.baseUrl);H(a),D(h),g(j=>{if(w(j.baseUrl)!==h||a.some(U=>U.id===j.model))return j;const J=a.filter(U=>U.likelyEmbedding),X=J.length===1?J[0]:a.length===1?a[0]:null;return X?{...j,model:X.id}:j})}}),u=E({mutationFn:({input:a})=>Ke(a),onSuccess:async({dimensions:a,model:l},{connectionKey:h})=>{$(h),t(`Connected to ${l} (${a} dimensions).`),await i.invalidateQueries({queryKey:o})},onError:a=>{t(C(a,"Could not connect to the embedding API."))}}),Z=E({mutationFn:Be,onSuccess:({started:a,status:l})=>{i.setQueryData(o,l),t(a?"Search index build started.":l.needsReindex?"Search index is already updating.":"Search index is already up to date.")},onError:a=>{t(C(a,"Could not start the search index build."))}}),b=w(d.baseUrl),O=`${b}::${d.model.trim()}::${re}`,Y=!!(M.trim()||f),S=!!(s&&(!$e(d,s.config)||Y)),c=s?.phase==="indexing",x=p.isPending||u.isPending,k=!!(b&&d.model.trim()),_=!!y.length&&ne===b,de=k&&te===O,le=!!(!!(k&&s&&w(s.config.baseUrl)===b&&s.config.model.trim()===d.model.trim())&&s?.connectionValidated&&!Y),q=k,oe=!!(m&&S&&!c&&!x&&(!d.enabled||q)),ce=!!(s?.config.enabled&&s.needsReindex&&!S&&!c),me=Qe(b),v=s?.progress,he=s?De[s.phase]:ie?"Loading":"Unavailable",ue=d.queryInstruction.trim()?"Customized":"Optional",xe=ze({hasConnectionFields:k,enabled:d.enabled,savedConnectionValidated:le,dirty:S,phase:s?.phase,available:s?.available}),G=r.useMemo(()=>{const a=[...y],l=d.model.trim();return l&&!a.some(h=>h.id===l)&&a.unshift({id:l,likelyEmbedding:Ve(l)}),a},[y,d.model]),I=(a,l)=>{g(h=>({...h,[a]:l}))},K=()=>{$(""),u.reset()},B=()=>{H([]),D(""),K(),p.reset()},ge=a=>{const l=b!==w(a);g(h=>({...h,baseUrl:a,model:l?"":h.model})),l&&B()},pe=a=>{P(a),L(!1),V(l=>l+1),B()},be=()=>{P(""),L(a=>!a),V(a=>a+1),B()},ye=()=>{const a=w(d.baseUrl);g(l=>({...l,baseUrl:a})),K(),p.mutate(F({baseUrl:a}))},W=a=>{I("model",a),K()},fe=a=>{(!a||q)&&I("enabled",a)};return e.jsx(we,{title:"Search",variant:"default",description:"Keyword search is always available. Add an embedding API only when you want meaning-based recall.",headerRight:e.jsx(n,{as:"span",variant:"meta",weight:"medium",tone:s?.phase==="error"?"error":"secondary",className:"rounded-full border border-border-subtle bg-muted px-3 py-1.5",children:he}),children:e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsxs("section",{className:"surface-base flex flex-col gap-4 p-4","aria-labelledby":"embedding-api-heading",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold text-fg-secondary",children:"1"}),e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(n,{id:"embedding-api-heading",as:"h2",variant:"label",weight:"medium",children:"Connect an embedding API"}),e.jsx(n,{as:"p",variant:"meta",tone:"secondary",className:"leading-relaxed",children:"Enter an OpenAI-compatible API URL and an API key when the provider requires one."})]})]}),e.jsxs("div",{className:"ml-0 space-y-2 sm:ml-10",children:[e.jsx(A,{htmlFor:"semantic-search-base-url",className:"font-medium text-fg-tertiary",children:"API base URL"}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsx(R,{id:"semantic-search-base-url",inputMode:"url",placeholder:"http://127.0.0.1:1234/v1",value:d.baseUrl,disabled:!m||c||x,onChange:a=>ge(a.target.value),className:"w-full min-w-0 sm:flex-1"}),e.jsxs(N,{type:"button",variant:"subtle",onClick:ye,isLoading:p.isPending,disabled:!b||c||u.isPending,className:"w-full sm:w-auto",children:[e.jsx(Ue,{className:"h-4 w-4"}),"Find models"]})]}),me&&e.jsx("div",{className:"rounded-[12px] border border-border-secondary/70 bg-muted px-3 py-2.5",children:e.jsx(n,{as:"p",variant:"meta",tone:"secondary",className:"leading-relaxed",children:"This provider uses unencrypted HTTP. API credentials and note text can be read on the network."})}),e.jsxs("div",{className:"space-y-2 pt-1",children:[e.jsxs(A,{htmlFor:"semantic-search-api-key",className:"font-medium text-fg-tertiary",children:["API key ",e.jsx("span",{className:"font-normal text-fg-tertiary",children:"(optional)"})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsx(R,{id:"semantic-search-api-key",type:"password",autoComplete:"new-password",placeholder:f?"No API key":s?.apiKeyConfigured?"Saved API key":"Enter API key",value:M,disabled:!m||c||x||f,onChange:a=>pe(a.target.value),className:"w-full min-w-0 sm:flex-1"}),s?.apiKeyConfigured&&e.jsx(N,{type:"button",variant:"subtle",onClick:be,disabled:c||x,className:"w-full sm:w-auto",children:f?"Keep saved key":"Remove saved key"})]}),f&&e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",children:"The saved key will be removed when you save."})]}),_&&e.jsxs("div",{className:"flex items-start gap-2 rounded-[12px] border border-border-subtle bg-accent-soft-success px-3 py-2.5",role:"status",children:[e.jsx(T,{className:"mt-0.5 h-4 w-4 shrink-0 text-accent-success"}),e.jsxs(n,{as:"p",variant:"meta",className:"leading-relaxed text-accent-success",children:["API connected. Found ",y.length," ",y.length===1?"model":"models","."]})]}),p.isError&&e.jsx("div",{className:"rounded-[12px] border border-border-error bg-accent-soft-danger/40 px-3 py-2.5",children:e.jsx(n,{as:"p",variant:"meta",tone:"error",className:"leading-relaxed",children:C(p.error,"Could not list models from this API.")})})]})]}),e.jsxs("section",{className:"surface-base flex flex-col gap-4 p-4","aria-labelledby":"embedding-model-heading",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold text-fg-secondary",children:"2"}),e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(n,{id:"embedding-model-heading",as:"h2",variant:"label",weight:"medium",children:"Choose and test a model"}),e.jsx(n,{as:"p",variant:"meta",tone:"secondary",className:"leading-relaxed",children:"Choose an embedding model and verify the connection."})]})]}),e.jsxs("div",{className:"ml-0 space-y-3 sm:ml-10",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(A,{htmlFor:"semantic-search-model",className:"font-medium text-fg-tertiary",children:"Embedding model"}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row",children:[e.jsx(Ce,{id:"semantic-search-model",ariaLabel:"Embedding model",value:d.model,placeholder:p.isPending?"Loading models…":"Find models first",disabled:!G.length||!m||c||x,onValueChange:W,className:"w-full min-w-0 sm:flex-1",children:G.map(a=>e.jsxs(ke,{value:a.id,children:[a.id,a.likelyEmbedding?" · Embedding":""]},a.id))}),e.jsxs(N,{type:"button",variant:"subtle",onClick:()=>u.mutate({input:F(d),connectionKey:O}),isLoading:u.isPending,disabled:!k||c||p.isPending,className:"w-full sm:w-auto",children:[e.jsx(T,{className:"h-4 w-4"}),"Test selected model"]})]}),_&&y.every(a=>!a.likelyEmbedding)&&e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",className:"leading-relaxed",children:"None of these model names clearly identifies an embedding model. Choose one only if your provider documents it as an embedding model, then run the test."})]}),de&&u.data&&e.jsxs("div",{className:"flex items-start gap-2 rounded-[12px] border border-border-subtle bg-accent-soft-success px-3 py-2.5",role:"status",children:[e.jsx(T,{className:"mt-0.5 h-4 w-4 shrink-0 text-accent-success"}),e.jsxs(n,{as:"p",variant:"meta",className:"leading-relaxed text-accent-success",children:["This model works · ",u.data.dimensions," dimensions"]})]}),u.isError&&e.jsx("div",{className:"rounded-[12px] border border-border-error bg-accent-soft-danger/40 px-3 py-2.5",children:e.jsx(n,{as:"p",variant:"meta",tone:"error",className:"leading-relaxed",children:C(u.error,"Could not connect to the embedding API.")})}),e.jsxs("details",{className:"group rounded-[12px] border border-border-subtle bg-muted",children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2.5 marker:hidden",children:[e.jsx(n,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:"Can't find the model? Enter its ID manually"}),e.jsx(ee,{className:"h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-open:rotate-180","aria-hidden":"true"})]}),e.jsxs("div",{className:"space-y-2 border-t border-border-subtle px-3 py-3",children:[e.jsx(A,{htmlFor:"semantic-search-manual-model",className:"font-medium text-fg-tertiary",children:"Model ID"}),e.jsx(R,{id:"semantic-search-manual-model",placeholder:"text-embedding-qwen3-embedding-0.6b",value:d.model,disabled:!m||c||x,onChange:a=>W(a.target.value)}),e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",children:"Use this fallback when a compatible API does not support model listing."})]})]}),e.jsxs("details",{className:"group rounded-[12px] border border-border-subtle bg-muted",children:[e.jsxs("summary",{className:"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2.5 marker:hidden",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx(n,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:"Advanced query instruction"}),e.jsxs(n,{as:"span",variant:"meta",tone:"tertiary",children:[" · ",ue]})]}),e.jsx(ee,{className:"h-4 w-4 shrink-0 text-fg-tertiary transition-transform group-open:rotate-180","aria-hidden":"true"})]}),e.jsxs("div",{className:"space-y-3 border-t border-border-subtle px-3 py-3",children:[e.jsx(n,{as:"p",variant:"meta",tone:"secondary",className:"leading-relaxed",children:"Leave this blank unless your embedding model documentation explicitly recommends a query instruction. Ocean Brain does not assume a language or retrieval prompt."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(A,{htmlFor:"semantic-search-instruction",className:"font-medium text-fg-tertiary",children:"Query instruction"}),e.jsx(Ae,{id:"semantic-search-instruction",rows:3,placeholder:"Leave blank unless your model recommends an instruction.",value:d.queryInstruction,disabled:!m||c||x,onChange:a=>I("queryInstruction",a.target.value)})]}),d.queryInstruction&&e.jsx("div",{className:"flex flex-wrap gap-2",children:e.jsx(N,{type:"button",size:"sm",variant:"ghost",disabled:c||x,onClick:()=>I("queryInstruction",""),children:"Clear"})}),e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",className:"leading-relaxed",children:"This is added only to the search query, never to note chunks. Changing it does not require rebuilding the index."})]})]})]})]}),e.jsxs("section",{className:"surface-base flex flex-col gap-4 p-4","aria-labelledby":"meaning-search-heading",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-muted text-sm font-semibold text-fg-secondary",children:"3"}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-1",children:[e.jsx(n,{id:"meaning-search-heading",as:"h2",variant:"label",weight:"medium",children:"Turn on meaning search"}),e.jsx(n,{as:"p",variant:"meta",tone:"secondary",className:"max-w-[44rem] leading-relaxed",children:"This adds Meaning and All modes to the full search page. Keyword search remains the default fallback and keeps working even when this feature is off."})]})]}),e.jsx("div",{className:"ml-0 rounded-[14px] border border-border-subtle bg-muted px-3.5 py-3 sm:ml-10",children:e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 space-y-1",children:[e.jsx(n,{as:"p",variant:"meta",weight:"medium",children:"Meaning search"}),e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",children:xe})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(n,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:d.enabled?"Enabled":"Disabled"}),e.jsx(Se,{"aria-label":"Meaning search",checked:d.enabled,disabled:!m||c||x||!d.enabled&&!q,onCheckedChange:fe})]})]})}),e.jsx("div",{className:"flex flex-wrap justify-end gap-2 border-t border-border-subtle pt-4",children:e.jsx(N,{type:"button",variant:"primary",onClick:()=>z.mutate(F(d)),isLoading:z.isPending,disabled:!oe,children:"Save settings"})})]}),e.jsxs("section",{className:"surface-base flex flex-col gap-4 p-4","aria-labelledby":"search-index-heading",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1 basis-[28rem] space-y-1",children:[e.jsx(n,{id:"search-index-heading",as:"h2",variant:"label",weight:"medium",children:"Local search index"}),e.jsx(n,{as:"p",variant:"meta",tone:"secondary",children:s?.available?`${s.noteCount} notes · ${s.chunkCount} chunks · ${s.dimensions??0} dimensions`:"Keyword search works without this index."}),e.jsxs(n,{as:"p",variant:"meta",tone:"tertiary",children:["Last synced: ",Ze(s?.lastSyncedAt??s?.indexedAt??null)]}),(s?.pendingNoteCount??0)>0&&e.jsxs(n,{as:"p",variant:"meta",tone:"tertiary",role:"status",children:[s?.pendingNoteCount," ",s?.pendingNoteCount===1?"note is":"notes are"," waiting to sync. Recent edits are grouped before embedding."]})]}),e.jsxs(N,{type:"button",variant:"primary",onClick:()=>Z.mutate(),isLoading:Z.isPending,disabled:!ce,children:[e.jsx(Te,{className:"h-4 w-4"}),s?.available&&!s.needsReindex?"Index is up to date":"Build search index"]})]}),S&&e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",children:"Save these settings before building the index."}),c&&e.jsxs("div",{className:"space-y-2","aria-live":"polite",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsx(n,{as:"span",variant:"meta",weight:"medium",tone:"secondary",children:"Building embeddings"}),e.jsx(n,{as:"span",variant:"meta",tone:"tertiary",children:v&&v.totalChunks>0?`${v.processedChunks} / ${v.totalChunks} chunks`:"Preparing notes…"})]}),e.jsx(Ie,{value:v?.processedChunks??0,max:Math.max(v?.totalChunks??0,1)})]}),s?.needsReindex&&!c&&s.phase!=="error"&&e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",children:"Build the index once to activate meaning search for this model."}),s?.error&&e.jsx("div",{className:"rounded-[14px] border border-border-error bg-accent-soft-danger/40 px-3.5 py-3",children:e.jsx(n,{as:"p",variant:"meta",tone:"error",className:"leading-relaxed",children:s.error})}),s?.syncError&&e.jsx("div",{className:"rounded-[14px] border border-border-error bg-accent-soft-danger/40 px-3.5 py-3",children:e.jsxs(n,{as:"p",variant:"meta",tone:"error",className:"leading-relaxed",children:["Automatic note sync will retry: ",s.syncError]})}),e.jsx(n,{as:"p",variant:"meta",tone:"tertiary",className:"leading-relaxed",children:"Note and query text is sent to the embedding API you configure."}),Q&&e.jsx(n,{as:"p",variant:"meta",tone:"error",children:C(Q,"Could not load search settings.")})]})]})})};export{aa as default};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{c as r,s as e}from"./flowDiagram-UKHOOZJN-CDmwr2dI.js";import{_ as a}from"./mermaid.core-C2tL9tq7.js";import"./transform-BUB79_za.js";import"./chunk-5VM5RSS4-C8_HVwuz.js";import"./chunk-XXDRQBXY-BKsc_0wh.js";import"./chunk-KBJHAD2P-BDhjm9-8.js";import"./chunk-2GRJ4B5K-CWaaNkFx.js";import"./channel-DZFalh-h.js";import"./preload-helper-BXl3LOEh.js";import"./floating-ui.react-dom-BWTnA00G.js";var o=a(t=>`${e(t)}
|
|
2
|
-
.swimlane.cluster rect {
|
|
3
|
-
stroke: ${t.clusterBorder} !important;
|
|
4
|
-
}
|
|
5
|
-
[data-look="neo"].cluster rect {
|
|
6
|
-
filter: none;
|
|
7
|
-
}
|
|
8
|
-
`,"getStyles"),m=o,_=r({defaultLayout:"swimlane",styles:m});export{_ as diagram};
|