1import{j as n}from"./react-vendor-DbzdS4FP.js";import{u as K,f as G,k as J,l as M}from"./index-kSfDswZP.js";import{isEmbeddingEnabled as D,getEmbeddingConfigFingerprint as R}from"./embeddingUtils-DgIXRuaC.js";import{s as i}from"./index.module-CzrQATot.js";import{useMemoryMaintenance as W}from"./memoryMaintenanceContext-DxqV1BjJ.js";import{useEmbeddingVerification as Q}from"./useEmbeddingVerification-DpzZmoLo.js";import{u as X}from"./i18n-vendor-BrUIoOSg.js";import{cE as o,cb as Y,cI as Z,cJ as ee,cK as ne,cL as V,cM as ie,cv as de,cF as y,cG as O,cA as b}from"./ui-vendor-DCtmHMLE.js";import"./dnd-vendor-DdAwup11.js";import"./markdown-vendor-DonjKQI4.js";const ae=[{value:"openai",label:"OpenAI"},{value:"dashscope",label:"DashScope"},{value:"dashscope_multimodal",label:"DashScope Multimodal"},{value:"gemini",label:"Gemini"},{value:"ollama",label:"Ollama"}];function he(){const{t:e}=X(),{message:f,modal:l}=K(),{selectedAgent:j}=G(),u=o.useFormInstance(),{needsReindex:g,setNeedsReindex:I,reindexing:d,setReindexing:h,persistedEmbeddingFingerprint:v,setPersistedEmbeddingFingerprint:x,runtimeStatus:S,checkMemoryStatus:E}=W(),t=o.useWatch(["reme_light_memory_config","embedding_model_config"],u),N=(t==null?void 0:t.backend)??"openai",C=(t==null?void 0:t.model_name)??"",A=(t==null?void 0:t.api_key)??"",c=String(N),B=c!=="ollama",F=c!=="gemini",_=c==="ollama",s=D({backend:N,model_name:C,api_key:A}),{testingEmbedding:T,setTestingEmbedding:k,testedEmbedding:p,testedEmbeddingIsCurrent:P,markVerified:H,clearVerification:w}=Q(t,s),z=(t==null?void 0:t.enable_cache)??!0,r=v!==void 0&&R(t)!==v,$=g&&S.type==="healthy"&&S.data.embedding_reindex_undo_available,q=()=>{l.confirm({title:e("agentConfig.rebuildEmbeddingIndexConfirmTitle"),content:e("agentConfig.rebuildEmbeddingIndexConfirm"),okText:e("agentConfig.rebuildEmbeddingIndex"),cancelText:e("common.cancel"),onOk:async()=>{h(!0);try{await M.rebuildMemoryIndex(j||"default","embedding"),I(!1),f.success(e("agentConfig.rebuildEmbeddingIndexSuccess"))}catch(a){throw f.error(e("agentConfig.rebuildEmbeddingIndexFailed",{error:a instanceof Error?a.message:String(a)})),a}finally{h(!1),E()}}})},U=()=>{l.confirm({title:e("agentConfig.undoEmbeddingChangeConfirmTitle"),content:e("agentConfig.undoEmbeddingChangeConfirm"),okText:e("agentConfig.undoEmbeddingChange"),cancelText:e("common.cancel"),onOk:async()=>{h(!0);try{const a=await M.undoEmbeddingReindex(j||"default");u.setFieldValue(["reme_light_memory_config","embedding_model_config"],a),x==null||x(R(a)),I(!1),f.success(e("agentConfig.undoEmbeddingChangeSuccess"))}catch(a){throw f.error(e("agentConfig.undoEmbeddingChangeFailed",{error:a instanceof Error?a.message:String(a)})),a}finally{h(!1),E()}}})},L=async()=>{const a=u.getFieldValue(["reme_light_memory_config","embedding_model_config"]);if(!a||!D(a)||!Number.isInteger(a.dimensions)||a.dimensions<1){l.error({title:e("agentConfig.embeddingTestFailed"),content:e("agentConfig.embeddingTestIncomplete")}
1);return}k(!0);try{const m=await J.testEmbedding(a);m.success?(H(m.actual_dimensions??a.dimensions,m.latency_ms),l.success({title:e("agentConfig.embeddingTestSuccess"),content:e("agentConfig.embeddingTestSuccessDetail",{dimensions:m.actual_dimensions,latency:m.latency_ms})})):(w(),l.error({title:e("agentConfig.embeddingTestFailed"),content:m.message}))}catch(m){w(),l.error({title:e("agentConfig.embeddingTestFailed"),content:m instanceof Error?m.message:String(m)})}finally{k(!1)}};return n.jsxs(Y,{className:i.formCard,children:[n.jsxs("section",{className:i.memoryOverview,children:[n.jsx("div",{className:i.memoryOverviewHeader,children:n.jsxs("div",{children:[n.jsx("h3",{children:e("agentConfig.embeddingOverviewTitle")}),n.jsx("p",{children:e("agentConfig.embeddingStatusDescription")})]})}),n.jsxs("div",{className:i.memoryOverviewGrid,children:[n.jsxs("div",{className:i.memoryOverviewItem,children:[n.jsxs("span",{className:i.memoryOverviewLabel,children:[n.jsx(Z,{size:14,"aria-hidden":"true"}),e("agentConfig.embeddingConfigStatus")]}),n.jsxs("strong",{className:s?i.embeddingStatusValueEnabled:i.embeddingStatusValueDisabled,children:[n.jsx("i",{}),e(s?"agentConfig.embeddingCapabilityEnabled":"agentConfig.embeddingCapabilityDisabled")]}),n.jsx("small",{children:e(s?g?"agentConfig.embeddingSearchModeBm25Pending":"agentConfig.embeddingSearchModeHybrid":"agentConfig.embeddingSearchModeBm25")})]}),n.jsxs("div",{className:i.memoryOverviewItem,children:[n.jsxs("span",{className:i.memoryOverviewLabel,children:[n.jsx(ee,{size:14,"aria-hidden":"true"}),e("agentConfig.embeddingCurrentModel")]}),n.jsx("strong",{title:C,children:C||"â"}),n.jsxs("small",{children:[c||"â",t!=null&&t.dimensions?` · ${t.dimensions} ${e("agentConfig.embeddingDimensionsUnit")}`:""]})]}),n.jsxs("button",{type:"button",className:`${i.memoryOverviewItem} ${i.memoryOverviewClickableItem} ${i.embeddingVerificationAction}`,onClick:L,disabled:!s||T,"aria-busy":T,"aria-label":e("agentConfig.embeddingTestConnection"),children:[n.jsxs("span",{className:i.memoryOverviewLabel,children:[n.jsx(ne,{size:14,"aria-hidden":"true"}),e("agentConfig.embeddingVerificationStatus")]}),P&&p?n.jsxs(n.Fragment,{children:[n.jsx("strong",{className:i.embeddingStatusValueVerified,children:e("agentConfig.embeddingVerified")}),n.jsx("small",{children:e("agentConfig.embeddingVerificationMetrics",{dimensions:p.dimensions,latency:p.latency})})]}):n.jsxs(n.Fragment,{children:[n.jsx("strong",{className:i.embeddingStatusValuePending,children:e("agentConfig.embeddingNotVerified")}),n.jsx("small",{children:e("agentConfig.embeddingVerificationHint")})]}),n.jsx(V,{size:16,"aria-hidden":"true"})]}),n.jsxs("div",{className:`${i.embeddingIndexItem} ${s?d||r?i.embeddingIndexRebuildRequired:g?i.embeddingIndexRebuildRequired:i.embeddingIndexReady:i.embeddingIndexDisabled}`,children:[n.jsxs("button",{type:"button",className:`${i.memoryOverviewItem} ${i.memoryOverviewClickableItem} ${i.embeddingIndexPrimaryAction}`,onClick:q,disabled:!s||d||r,"aria-busy":d,"aria-label":e("agentConfig.rebuildEmbeddingIndex"),children:[n.jsxs("span",{className:i.memoryOverviewLabel,children:[n.jsx(ie,{size:14,"aria-hidden":"true"}),e("agentConfig.embeddingIndexStatus")]}),n.jsx("strong",{className:s?d||r?i.embeddingStatusValuePending:g?i.embeddingStatusValuePending:i.embeddingStatusValueVerified:i.embeddingStatusValueDisabled,children:e(s?d?"agentConfig.embeddingIndexRebuilding":r?"agentConfig.embeddingIndexSaveFirst":g?"agentConfig.embeddingIndexNeedsRebuild":"agentConfig.embeddingIndexAvailable":"agentConfig.embeddingIndexDisabled")}),n.jsx("small",{title:e(s?d?"agentConfig.embeddingIndexRebuildingHint":r?"agentConfig.embeddingIndexUnsavedHint":g?"agentConfig.rebuildMemoryIndexRequired":"agentConfig.embeddingIndexReady":"agentConfig.embeddingIndexEnableFirst"),children:e(s?d?"agentConfig.embeddingIndexRebuildingHint":r?"agentConfig.embeddingIndexUnsavedHint":g?"agentConfig.embeddingIndexBm25Fallback":"agentConfig.embeddingIndexMatchesConfig":"agentConfig.embeddingIndexEnableFirst")}),n.jsx(V,{size:16,"aria-hidden":"true"})]}),$&&n.jsx("button",{type:"button",className:i.embeddingIndexUndoAction,disabled:d,onClick:U,children:e("agentConfig.undoEmbeddingChange")})]})]})]}),n.jsxs("div",{className:i.memoryConfigGrid,children:[n.jsxs("section",{className:i.memoryConfigPanel,children:[n.jsxs("div",{className:i.memorySectionHeader,children:[n.jsx("div",{className:`${i.memorySectionIcon} ${i.memorySectionIconPrimary}`,children:"01"}),n.jsxs("div",{children:[n.jsx("h3",{children:e("agentConfig.embeddingServiceTitle")}),n.jsx("p",{children:e("agentConfig.embeddingServiceDescription")})]})]}),n.jsx(o.Item,{label:e("agentConfig.embeddingBackend"),name:["reme_light_memory_config","embedding_model_config","backend"],tooltip:e("agentConfig.embeddingBackendTooltip"),children:n.jsx(de,{disabled:d,options:ae,placeholder:e("agentConfig.embeddingBackendPlaceholder"),style:{width:"100%"}})}),F&&n.jsx(o.Item,{label:e(_?"agentConfig.embeddingHost":"agentConfig.embeddingBaseUrl"),name:["reme_light_memory_config","embedding_model_config","base_url"],tooltip:e(_?"agentConfig.embeddingHostTooltip":"agentConfig.embeddingBaseUrlTooltip"),children:n.jsx(y,{disabled:d,placeholder:e(_?"agentConfig.embeddingHostPlaceholder":"agentConfig.embeddingBaseUrlPlaceholder")})}),n.jsx(o.Item,{label:e("agentConfig.embeddingModelName"),name:["reme_light_memory_config","embedding_model_config","model_name"],tooltip:e("agentConfig.embeddingModelNameTooltip"),children:n.jsx(y,{disabled:d,placeholder:e("agentConfig.embeddingModelNamePlaceholder")})}),B&&n.jsx(o.Item,{label:e("agentConfig.embeddingApiKey"),name:["reme_light_memory_config","embedding_model_config","api_key"],tooltip:e("agentConfig.embeddingApiKeyTooltip"),children:n.jsx(y.Password,{disabled:d,placeholder:e("agentConfig.embeddingApiKeyPlaceholder")})}),c==="openai"&&n.jsx(o.Item,{label:e("agentConfig.embeddingUseDimensions"),name:["reme_light_memory_config","embedding_model_config","use_dimensions"],valuePropName:"checked",tooltip:e("agentConfig.embeddingUseDimensionsTooltip"),children:n.jsx(O,{disabled:d||!s})}),n.jsx(o.Item,{label:e("agentConfig.embeddingDimensions"),name:["reme_light_memory_config","embedding_model_config","dimensions"],rules:[{required:!0,message:e("agentConfig.embeddingDimensionsRequired")},{type:"number",min:1,message:e("agentConfig.embeddingDimensionsMin")}],tooltip:e("agentConfig.embeddingDimensionsTooltip"),children:n.jsx(b,{style:{width:"100%"},min:1,step:256,disabled:d||!s})})]}),n.jsxs("section",{className:i.memoryConfigPanel,children:[n.jsxs("div",{className:i.memorySectionHeader,children:[n.jsx("div",{className:`${i.memorySectionIcon} ${i.memorySectionIconSecondary}`,children:"02"}),n.jsxs("div",{children:[n.jsx("h3",{children:e("agentConfig.embeddingIndexTitle")}),n.jsx("p",{children:e("agentConfig.embeddingIndexDescription")})]})]}),n.jsx(o.Item,{label:e("agentConfig.embeddingEnableCache"),name:["reme_light_memory_config","embedding_model_config","enable_cache"],valuePropName:"checked",tooltip:e("agentConfig.embeddingEnableCacheTooltip"),children:n.jsx(O,{disabled:d||!s})}),n.jsx(o.Item,{label:e("agentConfig.embeddingMaxCacheSize"),name:["reme_light_memory_config","embedding_model_config","max_cache_size"],rules:[{required:!0,message:e("agentConfig.embeddingMaxCacheSizeRequired")}],tooltip:e("agentConfig.embeddingMaxCacheSizeTooltip"),children:n.jsx(b,{style:{width:"100%"},min:1,step:100,disabled:d||!s||!z})}),n.jsx(o.Item,{label:e("agentConfig.embeddingMaxInputLength"),name:["reme_light_memory_config","embedding_model_config","max_input_length"],rules:[{required:!0,message:e("agentConfig.embeddingMaxInputLengthRequired")}],tooltip:e("agentConfig.embeddingMaxInputLengthTooltip"),children:n.jsx(b,{style:{width:"100%"},min:1,step:1024,disabled:d||!s})}),n.jsx(o.Item,{label:e("agentConfig.embeddingMaxBatchSize"),name:["reme_light_memory_config","embedding_model_config","max_batch_size"],rules:[{required:!0,message:e("agentConfig.embeddingMaxBatchSizeRequired")}],tooltip:e("agentConfig.embeddingMaxBatchSizeTooltip"),children:n.jsx(b,{style:{width:"100%"},min:1,step:1,disabled:d||!s})}),n.jsx(o.Item,{label:e("agentConfig.embeddingHealthCheckTimeout"),name:["reme_light_memory_config","embedding_model_config","health_check_timeout"],rules:[{required:!0,message:e("agentConfig.embeddingHealthCheckTimeoutRequired")}],tooltip:e("agentConfig.embeddingHealthCheckTimeoutTooltip"),children:n.jsx(b,{style:{width:"100%"},min:1,max:300,step:5,addonAfter:"s",disabled:d||!s})})]})]})]})}export{he as EmbeddingModelCard};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.