@customize-agent/server 4.0.1 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +143 -121
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/{774.js → 1547.js} +12 -12
- package/.next/server/chunks/3328.js +2 -2
- package/.next/server/chunks/3445.js +14 -14
- package/.next/server/chunks/550.js +1 -0
- package/.next/server/chunks/7367.js +1 -0
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_error.js +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated/preview.js +1 -1
- package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
- package/.next/server/pages/api/assets/generated.js +1 -1
- package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js +1 -1
- package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
- package/.next/server/pages/api/config/embedding.js +1 -1
- package/.next/server/pages/api/config/healthCheck.js +2 -2
- package/.next/server/pages/api/config/providers.js +2 -2
- package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
- package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +3 -3
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +2 -2
- package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated/[id].js +1 -1
- package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
- package/.next/server/pages/api/documents/generated.js +1 -1
- package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
- package/.next/server/pages/api/documents/roles.js +1 -1
- package/.next/server/pages/api/documents/specs.js +1 -1
- package/.next/server/pages/api/documents/specs.js.nft.json +1 -1
- package/.next/server/pages/api/documents/templates.js +1 -1
- package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
- package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
- package/.next/server/pages/api/kb/features.js +1 -1
- package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/files.js +2 -2
- package/.next/server/pages/api/kb/files.js.nft.json +1 -1
- package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
- package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
- package/.next/server/pages/api/kb/reindex.js +2 -1
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/search.js.nft.json +1 -1
- package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
- package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload/progress.js +1 -1
- package/.next/server/pages/api/kb/upload/progress.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +1 -1
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- package/.next/server/pages/api/prompt.js +1 -1
- package/.next/server/pages/api/system/logs.js +2 -2
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/asset-library.js.nft.json +1 -1
- package/.next/server/pages/context/long-term.html +1 -1
- package/.next/server/pages/context/long-term.js.nft.json +1 -1
- package/.next/server/pages/context/short-term.html +1 -1
- package/.next/server/pages/context/short-term.js.nft.json +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/document-roles.js.nft.json +1 -1
- package/.next/server/pages/document-specs.html +1 -1
- package/.next/server/pages/document-specs.js.nft.json +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/documents.js.nft.json +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/guide.js.nft.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/file-detail.js.nft.json +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/files.js.nft.json +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
- package/.next/server/pages/knowledge/search.html +1 -1
- package/.next/server/pages/knowledge/search.js.nft.json +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/knowledge.js.nft.json +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/models.js.nft.json +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/overview.js.nft.json +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/prompt.js.nft.json +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/settings.js.nft.json +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages/system/logs.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +24 -25
- package/.next/static/JSSClm7Ao89P7zD8JkYIG/_buildManifest.js +1 -0
- package/.next/static/chunks/{1289-ada402215e8934cc.js → 1289-c788c44e65e9dc64.js} +2 -2
- package/.next/static/chunks/2225-a90b5cc9338c63fa.js +1 -0
- package/.next/static/chunks/261-8a5ce39d74fc746e.js +1 -0
- package/.next/static/chunks/2884-b2944538a4a0d9b2.js +1 -0
- package/.next/static/chunks/3057-9eda004e07594513.js +1 -0
- package/.next/static/chunks/3455-c73ce4738620db20.js +6 -0
- package/.next/static/chunks/347-62c74776c299477d.js +4 -0
- package/.next/static/chunks/4833-bf56f1203e2daffa.js +28 -0
- package/.next/static/chunks/6578-6422ce4e29eb07d4.js +1 -0
- package/.next/static/chunks/7223-58376fd8a1d62df4.js +1 -0
- package/.next/static/chunks/7271-587c30b66ea4e619.js +16 -0
- package/.next/static/chunks/7576-b34ccf53f6efc388.js +1 -0
- package/.next/static/chunks/{8449-641d34b05c795c85.js → 8326-b79c7555af5866e7.js} +3 -3
- package/.next/static/chunks/8676-5982391f15ea1190.js +1 -0
- package/.next/static/chunks/8732-69ffc27ed6c68f6f.js +4 -0
- package/.next/static/chunks/8787-c8bea0f25cbd3cf0.js +25 -0
- package/.next/static/chunks/9144-51689069a3d341e5.js +1 -0
- package/.next/static/chunks/9773-53116cd0bf4b961a.js +1 -0
- package/.next/static/chunks/pages/_app-38ff7f551a80399f.js +140 -0
- package/.next/static/chunks/pages/asset-library-634d18652eb7507d.js +1 -0
- package/.next/static/chunks/pages/context/long-term-820cba5f1ae3a6cd.js +1 -0
- package/.next/static/chunks/pages/context/short-term-3332ffb90b3b58a9.js +1 -0
- package/.next/static/chunks/pages/document-roles-ab6dfead3fd99a2c.js +1 -0
- package/.next/static/chunks/pages/document-specs-565cf77237fce3d5.js +1 -0
- package/.next/static/chunks/pages/documents-c04e4ed600384e6a.js +1 -0
- package/.next/static/chunks/pages/guide-c5ef2e13eab4c312.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-f5e8f9bc35ebb92d.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-88aba3534bd722f9.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-5629ccce14402b99.js +1 -0
- package/.next/static/chunks/pages/knowledge/search-72a46d6d1200ef93.js +1 -0
- package/.next/static/chunks/pages/models-a37db9926d9a0a52.js +1 -0
- package/.next/static/chunks/pages/overview-3dd4c539302d7349.js +1 -0
- package/.next/static/chunks/pages/prompt-0184d79af09db7e1.js +1 -0
- package/.next/static/chunks/pages/settings-fd31c9ef833cf0af.js +1 -0
- package/.next/static/chunks/pages/system/logs-8040fb1e0c814a0c.js +1 -0
- package/.next/static/css/09be1fdeab8595ab.css +1 -0
- package/.next/static/css/38dba0a7a42a8df3.css +1 -0
- package/README.md +38 -179
- package/package.json +3 -3
- package/.next/server/pages/api/assets/generated/test-generate.js +0 -1
- package/.next/server/pages/api/assets/generated/test-generate.js.nft.json +0 -1
- package/.next/static/Qg6HhehDEGMR0UQnE32Qh/_buildManifest.js +0 -1
- package/.next/static/chunks/1210-248760e61b298769.js +0 -28
- package/.next/static/chunks/2169-61474562e3e8475e.js +0 -1
- package/.next/static/chunks/2427-1f06499470a4acd3.js +0 -1
- package/.next/static/chunks/2700-1fbf324dcb6a552a.js +0 -1
- package/.next/static/chunks/4123-905de4c001b14351.js +0 -4
- package/.next/static/chunks/4260-46debd1ad52f4fde.js +0 -28
- package/.next/static/chunks/4696-5a425ced63368f89.js +0 -1
- package/.next/static/chunks/4976-2d6f56260b2ddff9.js +0 -1
- package/.next/static/chunks/5695-7c19c1352a381c69.js +0 -6
- package/.next/static/chunks/7576-c41e699f2110b989.js +0 -1
- package/.next/static/chunks/7888-7b28d859128998a2.js +0 -1
- package/.next/static/chunks/8332-b27e9ac89c517608.js +0 -1
- package/.next/static/chunks/9551-0bb7ba56a79b7cd7.js +0 -16
- package/.next/static/chunks/9958-af48a40832894bb6.js +0 -1
- package/.next/static/chunks/9978-3df3ef9c76cee8b8.js +0 -1
- package/.next/static/chunks/pages/_app-78551e7d4385884b.js +0 -140
- package/.next/static/chunks/pages/asset-library-0665e1c9afd893f0.js +0 -1
- package/.next/static/chunks/pages/context/long-term-1f59d30548b89c31.js +0 -1
- package/.next/static/chunks/pages/context/short-term-851f8aee7b0abff1.js +0 -1
- package/.next/static/chunks/pages/document-roles-14631ba08e2f829f.js +0 -1
- package/.next/static/chunks/pages/document-specs-afd35d3937f2cadb.js +0 -1
- package/.next/static/chunks/pages/documents-2b15480b93097015.js +0 -1
- package/.next/static/chunks/pages/guide-34569e4ab4e65192.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-ae28021746550a37.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-cf84b9b9e834dfc7.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-0ab6c109beca045d.js +0 -1
- package/.next/static/chunks/pages/knowledge/search-8cb8614a649bb57c.js +0 -1
- package/.next/static/chunks/pages/models-d761e0a64090c564.js +0 -1
- package/.next/static/chunks/pages/overview-4389fb201fd42078.js +0 -1
- package/.next/static/chunks/pages/prompt-69407f71ba27bf48.js +0 -1
- package/.next/static/chunks/pages/settings-af3b67f0b96364b5.js +0 -1
- package/.next/static/chunks/pages/system/logs-27588e6d25aee564.js +0 -1
- package/.next/static/css/0e153583d22cc52e.css +0 -1
- package/.next/static/css/7938cb5de6aedc8c.css +0 -1
- package/.next/static/css/82b6ddff0ef364fe.css +0 -1
- package/.next/static/css/9af88fe8ee791d26.css +0 -1
- /package/.next/static/{Qg6HhehDEGMR0UQnE32Qh → JSSClm7Ao89P7zD8JkYIG}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4046],{22708:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>U});var o=s(65321),a=s(97109),r=s(32620),i=s(17807),t=s(88762),n=s(68787),c=s(85114),d=s(2256),m=s(38770),h=s(33442),p=s(26171),x=s(11702),v=s(85493),y=s(57271),u=s(7576),j=s(48318),g=s(34052),A=s(63455),b=s(56985),f=s(54746),S=s(29071),w=s(59188),z=s(4216),C=s(13114),k=s(99650),T=s(58209),B=s(76981),I=s(61825),K=s(6578);let P=[{label:"OpenAI 兼容",value:"openai"},{label:"Anthropic",value:"anthropic"},{label:"Google",value:"google"},{label:"Ollama",value:"ollama"},{label:"OpenRouter",value:"openrouter"}],E=[{key:"reader",labelKey:"models.tierReader",descKey:"models.tierReaderDesc"},{key:"reasoning",labelKey:"models.tierReasoning",descKey:"models.tierReasoningDesc"},{key:"action",labelKey:"models.tierAction",descKey:"models.tierActionDesc"}],N=[{key:"imageGeneration",label:"图片生成"},{key:"imageUnderstanding",label:"图片理解"},{key:"fileUnderstanding",label:"文件理解"},{key:"audio",label:"音频能力"},{key:"video",label:"视频能力"}];function U(){let e=(0,r.Vr)(),{message:l}=i.A.useApp(),[s,U]=(0,a.useState)(!0),[_,O]=(0,a.useState)([]),[R,F]=(0,a.useState)(null),[D,W]=(0,a.useState)({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}),[H,M]=(0,a.useState)(!1),[G,L]=(0,a.useState)(!1),[X,Z]=(0,a.useState)(null),[V,q]=(0,a.useState)(null),[J,Q]=(0,a.useState)({}),[Y,$]=(0,a.useState)(!1),[ee,el]=(0,a.useState)(!1),[es,eo]=(0,a.useState)(""),[ea,er]=(0,a.useState)(""),[ei,et]=(0,a.useState)(""),[en,ec]=(0,a.useState)(""),[ed,em]=(0,a.useState)("openai"),[eh,ep]=(0,a.useState)(!1),[ex,ev]=(0,a.useState)({}),[ey,eu]=(0,a.useState)(!1),ej=async()=>{U(!0);try{let[e,l,s]=await Promise.all([(0,K.Z3)().catch(()=>[]),(0,K.zr)().catch(()=>null),(0,K.II)().catch(()=>({provider:"transformers-local",model:"BAAI/bge-small-zh-v1.5",dimensions:512}))]);O(e),F(l),W(s)}catch(s){l.error(e("common.error"))}finally{U(!1)}};(0,a.useEffect)(()=>{ej()},[]);let eg=async e=>{el(!0),eo(e.name),er(e.name),et(""),ec(e.baseUrl||""),em(e.protocol||e.detectedProtocol||"openai"),ev(e.capabilities||{});try{let l=await (0,K.Bh)(e.name);et(l.apiKey?"••••••••":""),ec(l.baseUrl||""),ev(l.capabilities||{})}catch(e){}$(!0)},eA=async()=>{if(ea.trim()){eu(!0);try{let s=ee&&ei.includes("•")?void 0:ei||void 0;await (0,K._m)(ea.trim(),{oldName:ee?es:void 0,apiKey:s,baseUrl:en||void 0,protocol:ed,directEndpoint:eh,capabilities:ex}),$(!1),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{eu(!1)}}},eb=async s=>{try{await (0,K.h1)(s),await ej(),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}},ef=async s=>{q(s);try{let o=await (0,K.bZ)(s);Q(e=>({...e,[s]:o.success})),l[o.success?"success":"error"](o.success?e("models.connected"):e("models.connectionFailed"))}catch(e){Q(e=>({...e,[s]:!1}))}finally{q(null)}},eS=async(s,o)=>{if(!R)return;let a={...R},r=a[s];if(!o){r.active="",F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}return}let[i,t]=o.includes(":")?o.split(":"):[o,o];r.active=t,r.list.some(e=>e.name===t&&e.provider===i)||r.list.push({name:t,provider:i}),F(a);try{await (0,K.aP)(a)}catch(s){l.error(e("common.error"))}},ew=async()=>{M(!0);try{let s=await (0,K.dd)(D);W(s),Z(null),l.success(e("common.success"))}catch(s){l.error(e("common.error"))}finally{M(!1)}},ez=async()=>{L(!0);try{let s=await (0,K.u6)();Z(s.success),l[s.success?"success":"error"](s.message||(s.success?e("models.connected"):e("models.connectionFailed")))}catch(e){Z(!1)}finally{L(!1)}};return s?(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsx)(t.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:6}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:4}})}),(0,o.jsx)(n.A,{size:"small",children:(0,o.jsx)(t.A,{active:!0,paragraph:{rows:3}})})]}):(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"pageTitle",children:e("models.title")}),(0,o.jsx)("p",{className:"pageDesc",children:e("models.description")})]}),(0,o.jsx)(c.Ay,{type:"primary",icon:(0,o.jsx)(f.A,{}),onClick:()=>{el(!1),eo(""),er(""),et(""),ec(""),em("openai"),ep(!1),ev({}),$(!0)},children:e("models.addModel")})]}),(0,o.jsx)(n.A,{size:"small",title:"".concat(e("models.modelList")," (").concat(_.length,")"),children:0===_.length?(0,o.jsx)("span",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:e("models.noProviders")}):(0,o.jsx)(d.A,{gutter:[12,12],children:_.map((l,s)=>(0,o.jsx)(m.A,{xs:24,sm:12,lg:8,xl:6,children:(0,o.jsxs)(n.A,{size:"small",hoverable:!0,style:{height:"100%"},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:8,marginBottom:8,minWidth:0},children:[(0,o.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,o.jsx)("div",{style:{fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:l.name}),(0,o.jsxs)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(S.A,{})," ",l.protocol||l.detectedProtocol||"openai"]})]}),(0,o.jsxs)(h.A,{size:2,children:[(0,o.jsx)(c.Ay,{size:"small",loading:V===l.name,onClick:()=>{ef(l.name)},icon:!0===J[l.name]?(0,o.jsx)(w.A,{style:{color:"var(--colorOk)"}}):!1===J[l.name]?(0,o.jsx)(z.A,{style:{color:"var(--colorDanger)"}}):(0,o.jsx)(C.A,{})}),(0,o.jsx)(c.Ay,{size:"small",icon:(0,o.jsx)(k.A,{}),onClick:()=>{eg(l)}}),(0,o.jsx)(p.A,{title:e("models.deleteProviderConfirm"),onConfirm:()=>{eb(l.name)},children:(0,o.jsx)(c.Ay,{size:"small",danger:!0,icon:(0,o.jsx)(T.A,{})})})]})]}),(0,o.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:[(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:[(0,o.jsx)(B.A,{})," ",l.hasApiKey?"••••••••":"—"]}),l.baseUrl&&(0,o.jsxs)("span",{style:{fontSize:12,color:"var(--colorTextSecondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:l.baseUrl,children:[(0,o.jsx)(I.A,{})," ",l.baseUrl]}),(0,o.jsx)(h.A,{size:4,wrap:!0,children:N.filter(e=>{var s;return null==(s=l.capabilities)?void 0:s[e.key]}).map(e=>(0,o.jsx)(x.A,{color:"purple",style:{margin:0,fontSize:10,lineHeight:"16px"},children:e.label},e.key))})]})]})},l.name))})}),(0,o.jsxs)(n.A,{size:"small",title:e("models.embeddingConfig"),children:[(0,o.jsx)(v.A,{type:"info",showIcon:!0,message:e("models.embeddingHint"),style:{marginBottom:16}}),(0,o.jsxs)(d.A,{gutter:[12,12],children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.embeddingProvider")}),(0,o.jsx)(y.A,{value:D.provider,style:{width:"100%"},options:[{label:"本地语义模型(推荐)",value:"transformers-local"},{label:"外部 Embedding(高级)",value:"openai-compatible"}],onChange:e=>W(l=>({...l,provider:e,model:"transformers-local"===e?l.model||"BAAI/bge-small-zh-v1.5":l.model,dimensions:"transformers-local"===e?512:l.dimensions||1024}))})]}),"openai-compatible"===D.provider&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:"Base URL"}),(0,o.jsx)(u.A,{value:D.baseUrl,onChange:e=>W(l=>({...l,baseUrl:e.target.value})),placeholder:"http://localhost:11434/v1"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:D.model,onChange:e=>W(l=>({...l,model:e.target.value})),placeholder:"bge-m3"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.apiKey")}),(0,o.jsx)(u.A.Password,{value:D.apiKey,onFocus:()=>{var e;(null==(e=D.apiKey)?void 0:e.includes("•"))&&W(e=>({...e,apiKey:""}))},onChange:e=>W(l=>({...l,apiKey:e.target.value})),placeholder:e("models.optional")}),D.hasApiKey&&(0,o.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginTop:4},children:e("models.embeddingApiKeyHint")})]})]}),"transformers-local"===D.provider&&(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.model")}),(0,o.jsx)(u.A,{value:D.model,onChange:e=>W(l=>({...l,model:e.target.value})),placeholder:"BAAI/bge-small-zh-v1.5"})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.dimensions")}),(0,o.jsx)(j.A,{style:{width:"100%"},min:1,value:D.dimensions,onChange:e=>W(l=>({...l,dimensions:Number(e||("transformers-local"===l.provider?512:1024))}))})]}),(0,o.jsxs)(m.A,{xs:24,sm:8,children:[(0,o.jsx)("div",{style:{fontSize:12,marginBottom:4,color:"var(--colorTextSecondary)"},children:e("models.status")}),(0,o.jsxs)(h.A,{children:[(0,o.jsx)(x.A,{color:"blue",children:"transformers-local"===D.provider?"本地语义模型":e("models.openAICompatible")}),!0===X&&(0,o.jsx)(x.A,{color:"success",children:e("models.connected")}),!1===X&&(0,o.jsx)(x.A,{color:"error",children:e("models.connectionFailed")})]})]})]}),(0,o.jsxs)(h.A,{style:{marginTop:16},children:[(0,o.jsx)(c.Ay,{type:"primary",loading:H,onClick:()=>{ew()},children:e("models.saveEmbedding")}),(0,o.jsx)(c.Ay,{loading:G,onClick:()=>{ez()},children:e("models.testEmbedding")})]})]}),R&&(0,o.jsx)(n.A,{size:"small",title:e("models.modelTiers"),children:(0,o.jsx)(d.A,{gutter:[12,12],children:E.map(s=>{var a;let{key:r,labelKey:i,descKey:t}=s,c=R[r],d=c.list.map(e=>({label:"".concat(e.provider," / ").concat(e.name),value:"".concat(e.provider,":").concat(e.name)})),h=_.filter(e=>!c.list.some(l=>l.provider===e.name)).map(e=>({label:e.name,value:"".concat(e.name,":").concat(e.name)}));return(0,o.jsx)(m.A,{xs:24,lg:8,children:(0,o.jsxs)(n.A,{size:"small",title:(0,o.jsx)("span",{style:{fontSize:13},children:e(i)}),children:[(0,o.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)",marginBottom:8},children:e(t)}),(0,o.jsx)(y.A,{value:c.active?"".concat((null==(a=c.list.find(e=>e.name===c.active))?void 0:a.provider)||"",":").concat(c.active):void 0,onChange:e=>{eS(r,e)},allowClear:!0,placeholder:e("models.selectModelPlaceholder"),style:{width:"100%"},options:[...d,...h]}),c.list.length>0&&(0,o.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginTop:8},children:c.list.map(s=>(0,o.jsxs)(x.A,{color:s.name===c.active?"blue":void 0,closable:!0,onClose:()=>{var o,a;let i={...R},t=i[r];t.list=t.list.filter(e=>e.name!==s.name||e.provider!==s.provider),t.active===s.name&&(t.active=null!=(a=null==(o=t.list[0])?void 0:o.name)?a:""),F(i),(0,K.aP)(i).catch(()=>l.error(e("common.error")))},style:{margin:0,fontSize:11},children:[s.provider,"/",s.name]},"".concat(s.provider,":").concat(s.name)))})]})},r)})})}),(0,o.jsx)(g.A,{title:ee?e("models.editModel"):e("models.addModel"),open:Y,onClose:()=>$(!1),width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:(0,o.jsx)(c.Ay,{type:"primary",loading:ey,onClick:()=>{eA()},children:e("common.save")}),children:(0,o.jsxs)(A.A,{layout:"vertical",children:[(0,o.jsx)(A.A.Item,{label:e("models.modelName"),children:(0,o.jsx)(u.A,{value:ea,onChange:e=>er(e.target.value),placeholder:e("models.modelNamePlaceholder")})}),(0,o.jsx)(A.A.Item,{label:e("models.apiKey"),help:ee?e("models.apiKeyEditHint"):void 0,children:(0,o.jsx)(u.A.Password,{value:ei,onFocus:()=>{ee&&ei.includes("•")&&et("")},onChange:e=>et(e.target.value),placeholder:ee?e("models.apiKeyEditPlaceholder"):"sk-..."})}),(0,o.jsx)(A.A.Item,{label:e("models.baseUrl"),children:(0,o.jsx)(u.A,{value:en,onChange:e=>ec(e.target.value),placeholder:"https://api.openai.com/v1"})}),(0,o.jsx)(A.A.Item,{label:e("models.protocol"),children:(0,o.jsx)(y.A,{value:ed,onChange:em,options:P})}),(0,o.jsx)(A.A.Item,{label:"直连端点",children:(0,o.jsx)(b.A,{checked:eh,onChange:e=>ep(e.target.checked),children:"Base URL 是完整接口地址"})}),(0,o.jsx)(A.A.Item,{label:"多模态能力",children:(0,o.jsx)(b.A.Group,{value:N.filter(e=>ex[e.key]).map(e=>e.key),options:N.map(e=>({label:e.label,value:e.key})),onChange:e=>ev(Object.fromEntries(N.map(l=>[l.key,e.includes(l.key)])))})})]})})]})}},77305:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/models",function(){return s(22708)}])}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,9144,6985,3455,4052,5938,9773,6578,636,6593,8792],()=>e(e.s=77305)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5449],{27795:(e,l,s)=>{"use strict";s.r(l),s.d(l,{default:()=>T});var r=s(65321),t=s(97109),i=s(32620),c=s(85114),n=s(2256),o=s(38770),a=s(68787),x=s(99605),d=s(54849),m=s(33442),v=s(11702),u=s(99811),j=s(520),h=s(93314),A=s(13114),y=s(29071),p=s(26631),g=s(84742),f=s(38762),k=s(8579),w=s(9020),z=s(32632),S=s(95118),N=s(24810),_=s(6578);function T(){var e,l,s,T,b,P,C,D,E,O,M,F;let I=(0,i.Vr)(),[B,W]=(0,t.useState)(null),[U,X]=(0,t.useState)(!0),[R,V]=(0,t.useState)(0),[Z,q]=(0,t.useState)(0),[G,H]=(0,t.useState)(0),[J,K]=(0,t.useState)(0),[L,Q]=(0,t.useState)(0),[Y,$]=(0,t.useState)(null),ee=(0,t.useCallback)(async()=>{X(!0);try{let[e,l,s,r,t,i]=await Promise.all([(0,_.FC)(),(0,_.Z3)().catch(()=>[]),(0,_.lv)().catch(()=>({roles:[],configs:[]})),(0,_.mx)().catch(()=>({specs:[]})),(0,_.Dl)().catch(()=>({templates:[]})),(0,_.II)().catch(()=>null)]);W(e),V(Array.isArray(l)?l.length:0);let c=Array.isArray(s.roles)?s.roles:[];q(c.filter(e=>"file"===e.type).length),H(c.filter(e=>"prompt"===e.type).length),K(Array.isArray(r.specs)?r.specs.length:0),Q(Array.isArray(t.templates)?t.templates.length:0),$(i)}catch(e){}finally{X(!1)}},[]);(0,t.useEffect)(()=>{ee();let e=setInterval(()=>{ee()},1e4);return()=>clearInterval(e)},[ee]);let el=(null!=(l=null==B?void 0:B.cpu.usagePercent)?l:0)>80?"var(--colorDanger)":(null!=(s=null==B?void 0:B.cpu.usagePercent)?s:0)>50?"var(--colorWarning)":"var(--colorOk)",es=(null!=(T=null==B?void 0:B.memory.usagePercent)?T:0)>80?"var(--colorDanger)":(null!=(b=null==B?void 0:B.memory.usagePercent)?b:0)>50?"var(--colorWarning)":"var(--colorOk)",er=(null==B?void 0:B.tasks.total)?Math.round(B.tasks.success/B.tasks.total*100):0,et=null==B||null==(e=B.models)?void 0:e[0];return(0,r.jsxs)("div",{className:"space-y-6 animateFadeIn",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h1",{className:"pageTitle",children:I("overview.title")}),(0,r.jsx)("p",{className:"pageDesc",children:I("overview.description")})]}),(0,r.jsx)(c.Ay,{icon:(0,r.jsx)(u.A,{spin:U}),loading:U,onClick:()=>{ee()},children:I("common.retry")})]}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(j.A,{})," CPU"]}),children:(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)(x.A,{type:"circle",percent:null!=(P=null==B?void 0:B.cpu.usagePercent)?P:0,size:120,strokeColor:el,format:e=>"".concat(null==e?void 0:e.toFixed(1),"%")}),(0,r.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(C=null==B?void 0:B.cpu.cores)?C:0," ",I("overview.cores")]})]})})}),(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(h.A,{})," ",I("overview.memory")]}),children:(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)(x.A,{type:"circle",percent:null!=(D=null==B?void 0:B.memory.usagePercent)?D:0,size:120,strokeColor:es,format:e=>"".concat(e,"%")}),(0,r.jsxs)("div",{className:"text-xs mt-2",style:{color:"var(--colorTextSecondary)"},children:[null!=(E=null==B?void 0:B.memory.processMB)?E:0," MB / ",null!=(O=null==B?void 0:B.memory.totalMB)?O:0," MB"]})]})})})]}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"运行时间",value:B?Math.floor(B.uptime/3600):0,suffix:"小时",prefix:(0,r.jsx)(A.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.tokensUsed"),value:null!=(M=null==B?void 0:B.tokens.total)?M:0,prefix:(0,r.jsx)(y.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.tasksTotal"),value:null!=(F=null==B?void 0:B.tasks.total)?F:0,prefix:(0,r.jsx)(p.A,{})})})}),(0,r.jsx)(o.A,{xs:12,sm:6,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:I("overview.successRate"),value:er,suffix:"%",prefix:er>80?(0,r.jsx)(g.A,{style:{color:"var(--colorOk)"}}):(0,r.jsx)(f.A,{style:{color:"var(--colorDanger)"}})})})})]}),(0,r.jsx)(a.A,{size:"small",title:"资源概览",children:(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"文件角色",value:Z,prefix:(0,r.jsx)(p.A,{style:{color:"var(--colorAccent)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"提示词角色",value:G,prefix:(0,r.jsx)(k.A,{style:{color:"var(--colorWarning)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"文档规范包",value:J,prefix:(0,r.jsx)(w.A,{style:{color:"var(--colorOk)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"模板",value:L,prefix:(0,r.jsx)(z.A,{style:{color:"var(--colorDanger)"}})})})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsxs)(a.A,{size:"small",children:[(0,r.jsx)(d.A,{title:"Embedding",value:(null==Y?void 0:Y.provider)==="openai-compatible"?"外部 Embedding":Y?"本地语义模型":"—",prefix:(0,r.jsx)(S.A,{style:{color:"var(--colorAccent)"}})}),(null==Y?void 0:Y.model)&&(0,r.jsxs)("div",{className:"text-xs mt-1",style:{color:"var(--colorTextSecondary)"},children:[Y.model,Y.dimensions?" \xb7 ".concat(Y.dimensions,"维"):""]})]})}),(0,r.jsx)(o.A,{xs:24,sm:12,md:8,lg:4,children:(0,r.jsx)(a.A,{size:"small",children:(0,r.jsx)(d.A,{title:"模型供应商",value:R,prefix:(0,r.jsx)(N.A,{style:{color:"var(--colorAccent)"}})})})})]})}),(0,r.jsxs)(n.A,{gutter:[16,16],children:[(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:I("overview.topModel"),style:{height:"100%"},children:et?(0,r.jsxs)("div",{className:"flex items-center gap-4",children:[(0,r.jsx)(A.A,{style:{fontSize:24,color:"var(--colorAccent)"}}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-semibold",children:et.model}),(0,r.jsxs)("div",{style:{color:"var(--colorTextSecondary)",fontSize:12},children:["@",et.provider," — ",et.count," ",I("overview.calls")]})]})]}):(0,r.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})}),(0,r.jsx)(o.A,{xs:24,sm:12,children:(0,r.jsx)(a.A,{size:"small",title:I("overview.taskTypes"),style:{height:"100%"},children:(null==B?void 0:B.tasks.types)&&Object.keys(B.tasks.types).length>0?(0,r.jsx)(m.A,{wrap:!0,children:Object.entries(B.tasks.types).map(e=>{let[l,s]=e;return(0,r.jsxs)(v.A,{children:[l.slice(0,30),": ",s]},l)})}):(0,r.jsx)("span",{style:{color:"var(--colorTextSecondary)"},children:I("common.noData")})})})]})]})}},53139:(e,l,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/overview",function(){return s(27795)}])}},e=>{e.O(0,[347,8787,4277,8732,261,6578,636,6593,8792],()=>e(e.s=53139)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1026],{12887:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M854.6 288.6L639.4 73.4c-6-6-14.1-9.4-22.6-9.4H192c-17.7 0-32 14.3-32 32v832c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V311.3c0-8.5-3.4-16.7-9.4-22.7zM790.2 326H602V137.8L790.2 326zm1.8 562H232V136h302v216a42 42 0 0042 42h216v494zM504 618H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM312 490v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8z"}}]},name:"file-text",theme:"outlined"}},23830:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M880 298.4H521L403.7 186.2a8.15 8.15 0 00-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32zM840 768H184V256h188.5l119.6 114.4H840V768z"}}]},name:"folder",theme:"outlined"}},26631:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var o=r(97109),i=r(12887),n=r(88483);function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}let l=o.forwardRef((e,t)=>o.createElement(n.A,a({},e,{ref:t,icon:i.A})))},27549:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/prompt",function(){return r(34508)}])},29606:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var o=r(97109),i=r(23830),n=r(88483);function a(){return(a=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e}).apply(this,arguments)}let l=o.forwardRef((e,t)=>o.createElement(n.A,a({},e,{ref:t,icon:i.A})))},34508:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>H});var o=r(65321),i=r(97109),n=r(32620),a=r(17807),l=r(88762),s=r(68787),c=r(33442),d=r(11702),p=r(57271),h=r(85114),m=r(84253),u=r(56985),f=r(26171),y=r(34052),x=r(7576),g=r(29606),j=r(54746),v=r(26631),w=r(99650),A=r(58209);async function S(){let e=await fetch("/api/prompt");if(!e.ok)throw Error("Failed");return e.json()}async function b(e,t,r){let o=await fetch("/api/prompt",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({filePath:e,content:t,name:r})});if(!o.ok)throw Error("Failed");return o.json()}async function z(e){let t=await fetch("/api/prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"create",projectRoot:e,content:"# CUSTOMIZE\n"})});if(!t.ok)throw Error("Failed");return t.json()}async function C(e,t){let r=await fetch("/api/prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"createCustom",name:e,content:t})});if(!r.ok)throw Error("Failed");return r.json()}async function T(e){let t=await fetch("/api/prompt",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"select",selectedIds:e})});if(!t.ok)throw Error("Failed");return t.json()}function O(e){return e.id.startsWith("builtin:")}function k(e){return e.id.startsWith("custom:")}function H(){let e=(0,n.Vr)(),{message:t}=a.A.useApp(),[r,H]=(0,i.useState)(!0),[N,E]=(0,i.useState)([]),[F,P]=(0,i.useState)(!1),[R,_]=(0,i.useState)(null),[B,M]=(0,i.useState)(""),[I,V]=(0,i.useState)(""),[W,J]=(0,i.useState)(!1),[L,D]=(0,i.useState)(!1),[U,X]=(0,i.useState)("custom"),Z=async()=>{H(!0);try{E(await S())}catch(r){t.error(e("common.error"))}finally{H(!1)}};(0,i.useEffect)(()=>{Z()},[]);let $=r=>{if(null==r?void 0:r.projectRoot)return void z(r.projectRoot).then(()=>{t.success(e("common.success")),Z()}).catch(()=>t.error(e("common.error")));_(null),D(!0),V(""),M(""),P(!0)},q=async()=>{if(!I.trim())return void t.error("请输入名称");J(!0);try{R?await b(R.customizePath,B,k(R)?I.trim():void 0):await C(I.trim(),B||"# ".concat(I.trim(),"\n")),t.success(e("common.success")),P(!1),await Z()}catch(r){t.error(e("common.error"))}finally{J(!1)}},G=async(r,o)=>{let i=o?Array.from(new Set([...N.filter(e=>e.selected).map(e=>e.id),r.id])):N.filter(e=>e.selected&&e.id!==r.id).map(e=>e.id);try{await T(i),E(e=>e.map(e=>({...e,selected:i.includes(e.id)})))}catch(r){t.error(e("common.error"))}},K=async r=>{try{if(!(await fetch("/api/prompt",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectId:r.projectId,filePath:r.customizePath})})).ok)throw Error("Failed");t.success(e("common.success")),await Z()}catch(r){t.error(e("common.error"))}},Q=N.find(e=>e.isCurrent),Y=N.filter(O),ee=N.filter(k),et=N.filter(e=>!O(e)&&!k(e)),er="all"===U?N:"builtin"===U?Y:"custom"===U?ee:et;return r?(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsx)(l.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,o.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",gap:12},children:Array.from({length:4}).map((e,t)=>(0,o.jsx)(s.A,{size:"small",children:(0,o.jsx)(l.A,{active:!0,paragraph:{rows:4}})},t))})]}):(0,o.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("h1",{className:"pageTitle",children:e("nav.promptManagement")}),(0,o.jsx)("p",{className:"pageDesc",children:e("prompt.description")})]}),(0,o.jsxs)(c.A,{children:[Q&&(0,o.jsxs)(d.A,{color:"green",style:{lineHeight:"22px"},children:[(0,o.jsx)(g.A,{})," ",Q.projectRoot]}),(0,o.jsx)(p.A,{value:U,onChange:X,style:{width:160},options:[{label:"全部 (".concat(N.length,")"),value:"all"},{label:"我的提示词 (".concat(ee.length,")"),value:"custom"},{label:"项目提示词 (".concat(et.length,")"),value:"project"},{label:"内置示例 (".concat(Y.length,")"),value:"builtin"}]}),(0,o.jsx)(h.Ay,{type:"primary",icon:(0,o.jsx)(j.A,{}),onClick:()=>$(),children:"创建提示词"})]})]}),0===er.length?(0,o.jsx)(m.A,{description:e("prompt.noProjects")}):(0,o.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",gap:12},children:er.map(e=>{let r=e.hasFile&&e.content?e.content.replace(/^#.*$/gm,"").replace(/\n{3,}/g,"\n\n").trim():"";return(0,o.jsxs)(s.A,{size:"small",hoverable:!0,styles:{body:{display:"flex",flexDirection:"column",height:"100%"}},children:[(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:8},children:[(0,o.jsx)(v.A,{style:{color:e.isCurrent?"var(--colorOk)":"var(--colorAccent)",fontSize:14,flexShrink:0}}),(0,o.jsx)("span",{style:{fontWeight:600,fontSize:13,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:e.projectName}),!e.hasFile&&e.projectRoot&&(0,o.jsx)(h.Ay,{size:"small",icon:(0,o.jsx)(j.A,{}),onClick:()=>$(e)})]}),e.projectRoot&&(0,o.jsxs)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:6,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:[(0,o.jsx)(g.A,{style:{marginRight:4}}),e.projectRoot]}),(0,o.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginBottom:8},children:[e.isCurrent&&(0,o.jsx)(d.A,{color:"green",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"当前项目"}),O(e)&&(0,o.jsx)(d.A,{color:"gold",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"内置示例"}),k(e)&&(0,o.jsx)(d.A,{color:"cyan",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"我的提示词"}),!O(e)&&!k(e)&&(0,o.jsx)(d.A,{color:"blue",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"项目提示词"}),e.selected&&(0,o.jsx)(d.A,{color:"purple",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"已选中"}),e.hasFile?(0,o.jsx)(d.A,{color:"blue",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"有文件"}):(0,o.jsx)(d.A,{color:"default",style:{margin:0,fontSize:10,lineHeight:"16px"},children:"无文件"})]}),r&&(0,o.jsxs)("div",{style:{padding:8,background:"var(--colorFillAlter)",borderRadius:6,fontSize:11,maxHeight:80,overflow:"hidden",color:"var(--colorTextSecondary)",whiteSpace:"pre-wrap",fontFamily:"monospace",marginBottom:8,lineHeight:1.5},children:[r.slice(0,180),r.length>180?"...":""]}),(0,o.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,paddingTop:8,borderTop:"1px solid var(--colorBorderSecondary)",marginTop:"auto"},children:[e.hasFile?(0,o.jsx)(u.A,{checked:e.selected,onChange:t=>{G(e,t.target.checked)},style:{fontSize:12},children:"选中"}):(0,o.jsx)("span",{}),(0,o.jsx)("div",{style:{flex:1}}),e.hasFile&&(0,o.jsx)(h.Ay,{size:"small",icon:(0,o.jsx)(w.A,{}),onClick:()=>(e=>{if(O(e)){_(null),D(!0),V(e.projectName.replace(/^内置|/,"")+" Copy"),M(e.content||""),P(!0),t.info("内置提示词不可直接编辑,已为你创建副本");return}_(e),D(!1),V(e.projectName),M(e.content||""),P(!0)})(e),children:O(e)?"复制":"编辑"}),(0,o.jsx)(f.A,{title:O(e)?"删除内置提示词?":k(e)?"删除自定义提示词?":"删除项目记录及文件?",disabled:O(e),onConfirm:()=>{K(e)},children:(0,o.jsx)(h.Ay,{size:"small",danger:!0,icon:(0,o.jsx)(A.A,{}),disabled:O(e)})})]})]},e.id)})}),(0,o.jsxs)(y.A,{title:L?"创建提示词":R&&k(R)?"编辑我的提示词 — ".concat(I||R.projectName):"编辑项目提示词 — ".concat((null==R?void 0:R.projectName)||""),open:F,onClose:()=>P(!1),width:800,maskClosable:!1,style:{borderRadius:"12px 0 0 12px"},styles:{body:{padding:"16px 24px"},header:{borderRadius:"12px 0 0 0",borderBottom:"1px solid var(--colorBorderSecondary)"}},extra:(0,o.jsxs)(c.A,{children:[(0,o.jsx)(h.Ay,{onClick:()=>P(!1),children:e("common.cancel")}),(0,o.jsx)(h.Ay,{type:"primary",loading:W,onClick:()=>{q()},children:e("common.save")})]}),children:[(0,o.jsx)("div",{style:{marginBottom:12},children:L||R&&k(R)?(0,o.jsxs)(c.A,{direction:"vertical",size:6,style:{width:"100%"},children:[(0,o.jsx)(x.A,{placeholder:"提示词名称",value:I,onChange:e=>V(e.target.value),style:{maxWidth:400}}),!L&&(0,o.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:null==R?void 0:R.customizePath})]}):(0,o.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:null==R?void 0:R.customizePath})}),(0,o.jsx)(x.A.TextArea,{value:B,onChange:e=>M(e.target.value),rows:25,style:{fontFamily:"SF Mono, Monaco, Consolas, monospace",fontSize:13}})]})]})}}},e=>{e.O(0,[347,8787,4277,7889,4833,7271,7576,9144,6985,4052,636,6593,8792],()=>e(e.s=27549)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[199],{2256:(e,l,t)=>{"use strict";t.d(l,{A:()=>s});let s=t(25341).A},7368:(e,l,t)=>{"use strict";t.r(l),t.d(l,{default:()=>$});var s=t(65321),r=t(97109),i=t(32620),n=t(49759),o=t(88762),d=t(2256),a=t(38770),c=t(68787),x=t(11702),h=t(73340),u=t(1278);let y=(0,u.A)("Monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);var f=t(56733),p=t(38300);let v=(0,u.A)("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);var g=t(87824);let m=(0,u.A)("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);var j=t(6578);let A=(e,l,t)=>(0,s.jsx)("div",{style:{width:32,height:32,borderRadius:8,background:l,display:"flex",alignItems:"center",justifyContent:"center",color:t,flexShrink:0},children:e});function $(){var e,l;let t=(0,i.Vr)("settings"),{theme:u,resolvedTheme:$,setTheme:b}=(0,n.D)(),{locale:S,setLocale:z}=(0,i.x_)(),[k,w]=(0,r.useState)(null),[E,C]=(0,r.useState)(null),[T,N]=(0,r.useState)(null),[M,B]=(0,r.useState)(!0);(0,r.useEffect)(()=>{B(!0),Promise.all([(0,j.FC)().catch(()=>null),(0,j.le)().catch(()=>null),(0,j.II)().catch(()=>null)]).then(e=>{let[l,t,s]=e;w(l),C(t),N(s)}).finally(()=>B(!1))},[]);let R="system"===u?"system":$,F=e=>"applePill".concat(e?" applePillActive":"");return M?(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsx)(o.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,s.jsxs)(d.A,{gutter:[16,16],children:[Array.from({length:4}).map((e,l)=>(0,s.jsx)(a.A,{xs:24,md:12,children:(0,s.jsx)(c.A,{size:"small",children:(0,s.jsx)(o.A,{active:!0,paragraph:{rows:2}})})},l)),(0,s.jsx)(a.A,{xs:24,children:(0,s.jsx)(c.A,{size:"small",children:(0,s.jsx)(o.A,{active:!0,paragraph:{rows:4}})})})]})]}):(0,s.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"pageTitle",children:t("title")}),(0,s.jsx)("p",{className:"pageDesc",children:t("description")})]}),(0,s.jsxs)(d.A,{gutter:[16,16],children:[(0,s.jsx)(a.A,{xs:24,md:12,style:{display:"flex"},children:(0,s.jsxs)(c.A,{size:"small",style:{flex:1},styles:{body:{padding:"14px 18px"}},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:14},children:[A((0,s.jsx)(h.A,{size:16}),"rgba(88,86,214,0.1)","#5856d6"),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:600,fontSize:14},children:t("language")}),(0,s.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:t("languageDesc")})]})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,s.jsx)("button",{className:F("zh-CN"===S),onClick:()=>z("zh-CN"),children:"中文"}),(0,s.jsx)("button",{className:F("en-US"===S),onClick:()=>z("en-US"),children:"English"})]})]})}),(0,s.jsx)(a.A,{xs:24,md:12,style:{display:"flex"},children:(0,s.jsxs)(c.A,{size:"small",style:{flex:1},styles:{body:{padding:"14px 18px"}},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:14},children:[A((0,s.jsx)(y,{size:16}),"rgba(250,140,22,0.1)","#fa8c16"),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:600,fontSize:14},children:t("theme")}),(0,s.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:t("themeDesc")})]})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:8},children:[(0,s.jsxs)("button",{className:F("light"===R),onClick:()=>b("light"),children:[(0,s.jsx)(f.A,{size:14}),t("light")]}),(0,s.jsxs)("button",{className:F("dark"===R),onClick:()=>b("dark"),children:[(0,s.jsx)(p.A,{size:14}),t("dark")]}),(0,s.jsxs)("button",{className:F("system"===R),onClick:()=>b("system"),children:[(0,s.jsx)(y,{size:14}),t("system")]})]})]})}),(0,s.jsx)(a.A,{xs:24,md:12,style:{display:"flex"},children:(0,s.jsxs)(c.A,{size:"small",style:{flex:1},styles:{body:{padding:"14px 18px"}},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:14},children:[A((0,s.jsx)(v,{size:16}),"rgba(22,119,255,0.1)","#1677ff"),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:600,fontSize:14},children:"服务运行状态"}),(0,s.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:"查看当前服务是否正常,以及本机资源占用情况。"})]})]}),(0,s.jsxs)(d.A,{gutter:[12,12],children:[(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"状态"}),(0,s.jsx)(x.A,{color:(null==E?void 0:E.status)==="ok"?"success":"error",style:{margin:0},children:(null==E?void 0:E.status)==="ok"?"运行中":"—"})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"运行时间"}),(0,s.jsx)("div",{style:{fontSize:14,fontWeight:600},children:E?(e=>{let l=Math.floor(e/86400),t=Math.floor(e%86400/3600),s=Math.floor(e%3600/60);return l>0?"".concat(l," 天 ").concat(t," 小时"):t>0?"".concat(t," 小时 ").concat(s," 分"):"".concat(s," 分")})(E.uptime):"—"})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"CPU"}),(0,s.jsx)("div",{style:{fontSize:14,fontWeight:600},children:k?"".concat(k.cpu.usagePercent.toFixed(1),"%"):"—"}),(0,s.jsxs)("div",{style:{fontSize:10,color:"var(--colorTextSecondary)"},children:[null!=(e=null==k?void 0:k.cpu.cores)?e:0," 核"]})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"内存"}),(0,s.jsx)("div",{style:{fontSize:14,fontWeight:600},children:k?"".concat(k.memory.processMB," MB"):"—"}),(0,s.jsxs)("div",{style:{fontSize:10,color:"var(--colorTextSecondary)"},children:["/ ",null!=(l=null==k?void 0:k.memory.totalMB)?l:0," MB"]})]})})]})]})}),(0,s.jsx)(a.A,{xs:24,md:12,style:{display:"flex"},children:(0,s.jsxs)(c.A,{size:"small",style:{flex:1},styles:{body:{padding:"14px 18px"}},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:14},children:[A((0,s.jsx)(g.A,{size:16}),"rgba(82,196,26,0.1)","#52c41a"),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:600,fontSize:14},children:"知识库向量配置"}),(0,s.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:"用于知识库检索。修改模型或维度后,建议重新索引知识库。"})]})]}),(0,s.jsxs)(d.A,{gutter:[12,12],children:[(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"供应商"}),(0,s.jsx)(x.A,{color:"blue",style:{margin:0},children:(null==T?void 0:T.provider)||"—"})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"密钥状态"}),(null==T?void 0:T.hasApiKey)?(0,s.jsx)(x.A,{color:"success",style:{margin:0},children:"已配置"}):(0,s.jsx)(x.A,{color:"default",style:{margin:0},children:"未配置"})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"模型"}),(0,s.jsx)("div",{style:{fontSize:12,fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(null==T?void 0:T.model)||"—"})]})}),(0,s.jsx)(a.A,{span:12,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"10px 12px",textAlign:"left"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:4},children:"维度"}),(0,s.jsx)("div",{style:{fontSize:14,fontWeight:600},children:(null==T?void 0:T.dimensions)?"".concat(T.dimensions):"—"})]})})]})]})}),(0,s.jsx)(a.A,{xs:24,children:(0,s.jsxs)(c.A,{size:"small",styles:{body:{padding:"14px 18px"}},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:14},children:[A((0,s.jsx)(m,{size:16}),"rgba(114,46,209,0.1)","#722ed1"),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:600,fontSize:14},children:"本地数据与使用概况"}),(0,s.jsx)("div",{style:{fontSize:12,color:"var(--colorTextSecondary)"},children:"用户数据保存在本机,包含知识库、提示词、角色配置、规范包、生成记录和日志。"})]})]}),(0,s.jsx)(d.A,{gutter:[8,8],children:[{label:"用户数据目录",value:"~/.customize-agent/",mono:!0},{label:"知识库数据",value:"本地索引与向量库"},{label:"生成记录",value:"草稿、导出和资源"},{label:"配置数据",value:"提示词、角色、规范包"},{label:"累计任务",value:k?k.tasks.total.toLocaleString():"—"},{label:"Token 用量",value:k?k.tokens.total.toLocaleString():"—"},{label:"日志",value:"本地运行日志"},{label:"数据范围",value:"仅保存在本机"}].map(e=>(0,s.jsx)(a.A,{xs:12,sm:6,children:(0,s.jsxs)("div",{style:{background:"var(--colorFillAlter)",borderRadius:8,padding:"8px 12px"},children:[(0,s.jsx)("div",{style:{fontSize:11,color:"var(--colorTextSecondary)",marginBottom:2},children:e.label}),(0,s.jsx)("div",{style:{fontSize:13,fontWeight:600,fontFamily:e.mono?"monospace":void 0},children:e.value})]})},e.label))})]})})]})]})}},15033:(e,l,t)=>{"use strict";t.d(l,{A:()=>s});let s=(0,t(97109).createContext)({})},19013:(e,l,t)=>{"use strict";t.d(l,{C:()=>r});var s=t(97109);let r=()=>s.useReducer(e=>e+1,0)},19135:(e,l,t)=>{"use strict";t.d(l,{Ay:()=>a,Gl:()=>o,ko:()=>d,ye:()=>n});var s=t(97109),r=t(7709),i=t(26047);let n=["xxxl","xxl","xl","lg","md","sm","xs"],o=[].concat(n).reverse(),d=(e,l)=>{if(l){for(let t of n)if(e[t]&&l?.[t]!==void 0)return l[t]}},a=()=>{let[,e]=(0,r.Ay)(),l=(e=>({xs:`(max-width: ${e.screenXSMax}px)`,sm:`(min-width: ${e.screenSM}px)`,md:`(min-width: ${e.screenMD}px)`,lg:`(min-width: ${e.screenLG}px)`,xl:`(min-width: ${e.screenXL}px)`,xxl:`(min-width: ${e.screenXXL}px)`,xxxl:`(min-width: ${e.screenXXXL}px)`}))((e=>{let l=[].concat(n).reverse();return l.forEach((t,s)=>{let r=t.toUpperCase(),i=`screen${r}Min`,n=`screen${r}`;if(!(e[i]<=e[n]))throw Error(`${i}<=${n} fails : !(${e[i]}<=${e[n]})`);if(s<l.length-1){let t=`screen${r}Max`;if(!(e[n]<=e[t]))throw Error(`${n}<=${t} fails : !(${e[n]}<=${e[t]})`);let i=l[s+1].toUpperCase(),o=`screen${i}Min`;if(!(e[t]<=e[o]))throw Error(`${t}<=${o} fails : !(${e[t]}<=${e[o]})`)}}),e})(e));return s.useMemo(()=>{let e=new Map,t=-1,s={};return{responsiveMap:l,matchHandlers:{},dispatch:l=>(s=l,e.forEach(e=>{e(s)}),e.size>=1),subscribe(l){return e.size||this.register(),t+=1,e.set(t,l),l(s),t},unsubscribe(l){e.delete(l),e.size||this.unregister()},register(){Object.entries(l).forEach(([e,l])=>{let t=({matches:l})=>{this.dispatch({...s,[e]:l})},r=window.matchMedia(l);(0,i.Tn)(r.addEventListener)&&r.addEventListener("change",t),this.matchHandlers[l]={mql:r,listener:t},t(r)})},unregister(){Object.values(l).forEach(e=>{let l=this.matchHandlers[e];(0,i.Tn)(l?.mql.removeEventListener)&&l.mql.removeEventListener("change",l?.listener)}),e.clear()}}},[l])}},25341:(e,l,t)=>{"use strict";t.d(l,{A:()=>h});var s=t(97109),r=t(3638),i=t(26047),n=t(19135),o=t(74567),d=t(59609),a=t(15033),c=t(84060);let x=(e,l)=>{let[t,r]=s.useState(()=>(0,i.Kg)(e)?e:"");return s.useEffect(()=>{(()=>{if((0,i.Kg)(e)&&r(e),(0,i.Qd)(e))for(let t=0;t<n.ye.length;t++){let s=n.ye[t];if(!l||!l[s])continue;let i=e[s];if(void 0!==i)return void r(i)}})()},[JSON.stringify(e),l]),t},h=s.forwardRef((e,l)=>{let{prefixCls:t,justify:h,align:u,className:y,style:f,children:p,gutter:v=0,wrap:g,...m}=e,{getPrefixCls:j,direction:A}=s.useContext(o.QO),$=(0,d.A)(!0,null),b=x(u,$),S=x(h,$),z=j("row",t),[k,w]=(0,c.L3)(z),E=function(e,l){let t=[void 0,void 0],s=Array.isArray(e)?e:[e,void 0],r=l||{xs:!0,sm:!0,md:!0,lg:!0,xl:!0,xxl:!0,xxxl:!0};return s.forEach((e,l)=>{if((0,i.Qd)(e))for(let s=0;s<n.ye.length;s++){let i=n.ye[s];if(r[i]&&void 0!==e[i]){t[l]=e[i];break}}else t[l]=e}),t}(v,$),C=(0,r.$)(z,{[`${z}-no-wrap`]:!1===g,[`${z}-${S}`]:S,[`${z}-${b}`]:b,[`${z}-rtl`]:"rtl"===A},y,k,w),T={};E?.[0]&&(T.marginInline=(0,i.Et)(E[0])?`${-(E[0]/2)}px`:`calc(${E[0]} / -2)`);let[N,M]=E;T.rowGap=M;let B=s.useMemo(()=>({gutter:[N,M],wrap:g}),[N,M,g]);return s.createElement(a.A.Provider,{value:B},s.createElement("div",{...m,className:C,style:{...T,...f},ref:l},p))})},38770:(e,l,t)=>{"use strict";t.d(l,{A:()=>s});let s=t(51916).A},51916:(e,l,t)=>{"use strict";t.d(l,{A:()=>h});var s=t(97109),r=t(3638),i=t(26047),n=t(19135),o=t(74567),d=t(10540),a=t(15033),c=t(84060);function x(e){return"auto"===e?"1 1 auto":(0,i.Et)(e)?`${e} ${e} auto`:/^\d+(\.\d+)?(px|em|rem|%)$/.test(e)?`0 0 ${e}`:e}let h=s.forwardRef((e,l)=>{let{getPrefixCls:t,direction:h}=s.useContext(o.QO),{gutter:u,wrap:y}=s.useContext(a.A),{prefixCls:f,span:p,order:v,offset:g,push:m,pull:j,className:A,children:$,flex:b,style:S,...z}=e,k=t("col",f),w=t(),[E,C]=(0,c.xV)(k),[T]=(0,d.PN)(w,"col"),N={},M={};n.Gl.forEach(l=>{let t={},s=e[l];(0,i.Et)(s)?t.span=s:(0,i.Qd)(s)&&(t=s||{}),delete z[l],M={...M,[`${k}-${l}-${t.span}`]:(0,i.R)(t.span),[`${k}-${l}-order-${t.order}`]:t.order||0===t.order,[`${k}-${l}-offset-${t.offset}`]:t.offset||0===t.offset,[`${k}-${l}-push-${t.push}`]:t.push||0===t.push,[`${k}-${l}-pull-${t.pull}`]:t.pull||0===t.pull,[`${k}-rtl`]:"rtl"===h},t.flex&&(M[`${k}-${l}-flex`]=!0,N[T(`${l}-flex`)]=x(t.flex))});let B=(0,r.$)(k,{[`${k}-${p}`]:void 0!==p,[`${k}-order-${v}`]:v,[`${k}-offset-${g}`]:g,[`${k}-push-${m}`]:m,[`${k}-pull-${j}`]:j},A,M,E,C),R={};return u?.[0]&&(R.paddingInline=(0,i.Et)(u[0])?`${u[0]/2}px`:`calc(${u[0]} / 2)`),b&&(R.flex=x(b),!1!==y||R.minWidth||(R.minWidth=0)),s.createElement("div",{...z,style:{...R,...S,...N},className:B,ref:l},$)})},58451:(e,l,t)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/settings",function(){return t(7368)}])},59609:(e,l,t)=>{"use strict";t.d(l,{A:()=>o});var s=t(97109),r=t(82813),i=t(19013),n=t(19135);let o=function(e=!0,l={}){let t=(0,s.useRef)(l),[,o]=(0,i.C)(),d=(0,n.Ay)();return(0,r.Nf)(()=>{let l=d.subscribe(l=>{t.current=l,e&&o()});return()=>d.unsubscribe(l)},[]),t.current}}},e=>{e.O(0,[347,8787,6578,636,6593,8792],()=>e(e.s=58451)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3979],{14995:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z"}}]},name:"reload",theme:"outlined"}},39214:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/system/logs",function(){return r(91698)}])},91698:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>k});var a=r(65321),s=r(97109),i=r(35292),n=r(9137),l=r(11702),o=r(88762),c=r(33442),d=r(85114),h=r(26171),p=r(85493),g=r(7576),u=r(21289),x=r(84253),f=r(99811),y=r(58209),m=r(96651),w=r(60470),j=r(32620),v=r(6578);let{Text:A,Paragraph:b}=i.A;function k(){let e=(0,j.Vr)(),[t,r]=(0,s.useState)([]),[i,k]=(0,s.useState)(!0),[S,z]=(0,s.useState)(""),[I,C]=(0,s.useState)(!1),N=async()=>{k(!0);try{r((await (0,v.oH)(500)).logs)}catch(e){n.Ay.error(e instanceof Error?e.message:"加载日志失败")}finally{k(!1)}};(0,s.useEffect)(()=>{N()},[]);let B=(0,s.useMemo)(()=>{let e=S.trim().toLowerCase();return e?t.filter(t=>[t.id,t.level,t.source,t.functionName,t.message,t.stack].filter(Boolean).some(t=>String(t).toLowerCase().includes(e))):t},[S,t]),O=[{title:"序号",key:"index",width:70,render:(e,t,r)=>r+1},{title:"时间",dataIndex:"createdAt",width:170,render:e=>new Date(e).toLocaleString()},{title:"级别",dataIndex:"level",width:80,render:e=>(0,a.jsx)(l.A,{color:"error"===e?"error":"warn"===e?"warning":"blue",style:{margin:0},children:e})},{title:"来源",dataIndex:"source",width:200,render:e=>(0,a.jsx)(A,{code:!0,style:{fontSize:12},children:e})},{title:"函数",dataIndex:"functionName",width:160,render:e=>e?(0,a.jsx)(A,{code:!0,style:{fontSize:12},children:e}):(0,a.jsx)(A,{type:"secondary",children:"-"})},{title:"错误信息",dataIndex:"message",render:e=>(0,a.jsx)(b,{style:{maxWidth:480,overflowWrap:"anywhere",wordBreak:"break-all",marginBottom:0,fontSize:12},ellipsis:{rows:2,expandable:!0,symbol:"展开"},children:e})},{title:"Request ID",dataIndex:"id",width:200,render:e=>(0,a.jsx)(A,{copyable:!0,code:!0,style:{fontSize:12},children:e.slice(0,8)})}];return i&&0===t.length?(0,a.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,a.jsx)(o.A,{active:!0,title:!0,paragraph:{rows:1}}),(0,a.jsx)(o.A,{active:!0,paragraph:{rows:12}})]}):(0,a.jsxs)("div",{className:"space-y-5 animateFadeIn",children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:12},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h1",{className:"pageTitle",children:e("nav.systemLogs")}),(0,a.jsx)("p",{className:"pageDesc",children:"查看 API 异常、模型健康检查失败、PDF 降级等运行时问题。"})]}),(0,a.jsxs)(c.A,{children:[(0,a.jsx)(d.Ay,{icon:(0,a.jsx)(f.A,{}),loading:i,onClick:()=>void N(),children:"刷新"}),(0,a.jsx)(h.A,{title:"确认清空所有错误日志?",onConfirm:()=>{(async()=>{await (0,v.hH)(),n.Ay.success("已清空"),await N()})()},children:(0,a.jsx)(d.Ay,{danger:!0,icon:(0,a.jsx)(y.A,{}),children:"清空日志"})})]})]}),(0,a.jsx)(p.A,{type:"info",showIcon:!0,message:(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,a.jsx)("span",{children:"日志保存在本机 ~/.customize-agent/logs/errors.jsonl,最多读取最近 500 条。"}),(0,a.jsx)(d.Ay,{type:"link",size:"small",icon:I?(0,a.jsx)(m.A,{}):(0,a.jsx)(w.A,{}),onClick:()=>C(!I),style:{padding:"0 4px"},children:I?"收起":"展开"})]}),description:I?"系统自动记录未捕获的异常、API 错误、模型健康检查失败等运行时问题。日志文件超过 2MB 会自动轮转。":void 0}),(0,a.jsx)(g.A.Search,{allowClear:!0,placeholder:"搜索 requestId / source / function / message / stack",value:S,onChange:e=>z(e.target.value),style:{maxWidth:480}}),(0,a.jsx)(u.A,{rowKey:"id",loading:i,dataSource:B,columns:O,size:"middle",locale:{emptyText:(0,a.jsx)(x.A,{description:"暂无错误日志"})},pagination:{pageSize:20,showSizeChanger:!0,showTotal:e=>"共 ".concat(e," 条")},expandable:{expandedRowRender:e=>(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:8,padding:"8px 0"},children:[e.request&&(0,a.jsxs)("div",{children:[(0,a.jsx)(A,{strong:!0,style:{fontSize:12,marginBottom:4,display:"block"},children:"Request"}),(0,a.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",margin:0,padding:10,background:"var(--colorFillAlter)",borderRadius:8,fontSize:12,lineHeight:1.5},children:JSON.stringify(e.request,null,2)})]}),void 0!==e.meta&&(0,a.jsxs)("div",{children:[(0,a.jsx)(A,{strong:!0,style:{fontSize:12,marginBottom:4,display:"block"},children:"Meta"}),(0,a.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",margin:0,padding:10,background:"var(--colorFillAlter)",borderRadius:8,fontSize:12,lineHeight:1.5},children:JSON.stringify(e.meta,null,2)})]}),e.stack&&(0,a.jsxs)("div",{children:[(0,a.jsx)(A,{strong:!0,style:{fontSize:12,marginBottom:4,display:"block"},children:"Stack"}),(0,a.jsx)("pre",{style:{whiteSpace:"pre-wrap",wordBreak:"break-all",margin:0,padding:10,background:"var(--colorFillAlter)",borderRadius:8,fontSize:12,lineHeight:1.5,maxHeight:300,overflow:"auto"},children:e.stack})]})]})}})]})}},92123:(e,t)=>{"use strict";t.A={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"}}]},name:"up",theme:"outlined"}},96651:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var a=r(97109),s=r(92123),i=r(88483);function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(this,arguments)}let l=a.forwardRef((e,t)=>a.createElement(i.A,n({},e,{ref:t,icon:s.A})))},99811:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var a=r(97109),s=r(14995),i=r(88483);function n(){return(n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e}).apply(this,arguments)}let l=a.forwardRef((e,t)=>a.createElement(i.A,n({},e,{ref:t,icon:s.A})))}},e=>{e.O(0,[347,4277,7889,4833,7271,7576,2884,9144,9189,6985,7150,5292,1289,861,6578,636,6593,8792],()=>e(e.s=39214)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.style_featureLabel__XFSTX{color:var(--colorTextSecondary)}.style_featureValue__I_wMP{color:var(--colorText)}.style_filterInput__4_Elu{width:260px}.style_filterSelect__vUBJ9{width:140px}.style_statusCard__H7Mee .ant-card-body{padding:0}.style_statusSummary__7KavF{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;transition:background .12s;user-select:none}.style_statusSummary__7KavF:hover{background:var(--colorFillAlter)}.style_statusSummaryText__Shw3j{flex:1;font-size:13px;color:var(--colorTextSecondary)}.style_statusClearBtn__uJ9bE,.style_statusExpandBtn__HhgIj{font-size:12px;height:26px;padding:0 10px}.style_statusExpandBtn__HhgIj{color:var(--colorTextSecondary)}.style_statusFilters__g_LbG{display:flex;flex-wrap:wrap;gap:2px;padding:6px 10px;border-bottom:1px solid var(--colorBorderSecondary);background:var(--colorFillAlter)}.style_filterPill__1pjFW{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:16px;font-size:12px;color:var(--colorTextSecondary);cursor:pointer;transition:all .15s;user-select:none}.style_filterPill__1pjFW:hover{background:var(--colorBgContainer);color:var(--colorText)}.style_filterPillActive___UZVi{background:var(--colorBgContainer);color:var(--colorAccent);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.06)}.style_statusPanel__9arTu{border-top:1px solid var(--colorBorderSecondary);background:var(--colorBgContainer);border-radius:0 0 10px 10px}.style_statusEmpty__8LWzH{color:var(--colorTextQuaternary);padding:12px 10px;text-align:center;font-size:12px}.style_timelineList__dqJrz{max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding:4px 8px}.style_timelineItem__dbuL_{position:relative;padding:6px 10px;border-bottom:1px solid var(--colorBorderSecondary);cursor:pointer;transition:background .12s}.style_timelineItem__dbuL_:last-child{border-bottom:none}.style_timelineItem__dbuL_:hover{background:var(--colorFillAlter)}.style_timelineStatusIcon__SkRwb{font-size:14px;flex-shrink:0;display:flex;align-items:center;width:18px}.style_timelinePercent__pEyH4{font-size:12px;font-weight:600;color:#1677ff;flex-shrink:0;min-width:36px;text-align:right}.style_timelineRow__EDOVa{display:flex;align-items:center;gap:8px;min-height:24px}.style_timelineTitle__Yujr8{flex:1;min-width:0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.style_timelineClose__Byx_9{flex-shrink:0}.style_timelineDetail__nALei{margin-top:6px;padding-left:26px;display:flex;flex-direction:column;gap:6px}.style_timelineDesc__FMjWE{color:var(--colorText);font-size:12px;line-height:1.4}.style_timelinePath__C9VQI{color:var(--colorTextSecondary);font-size:11px;background:var(--colorFillAlter);border-radius:4px;padding:3px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:monospace}.style_timelineMeta__u_pCn{display:flex;flex-wrap:wrap;gap:4px}.style_timelineMetaTag__G3jF1{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--colorTextSecondary);background:var(--colorBgContainer);border:1px solid var(--colorBorderSecondary);border-radius:4px;padding:2px 6px}.style_timelineMetaTag__G3jF1 b{color:var(--colorText)}.style_timelineExpandArrow__xIBdF{display:inline-block;transition:transform .15s;font-size:10px;color:var(--colorTextQuaternary);flex-shrink:0}.style_timelineExpandArrowOpen__TWWDC{transform:rotate(90deg)}.style_fileNameCell__EHsnt{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}.style_folderName__VhLXP{font-weight:600;color:#d46b08;cursor:pointer}.style_folderName__VhLXP:hover{color:#fa8c16}.style_folderRow__d7k9S td{background:var(--colorFillAlter)!important;font-variant-numeric:tabular-nums}.style_searchResultList__cVKZg{display:grid;gap:12px}.style_searchResultItem__boj6D{border:1px solid var(--colorBorderSecondary);border-radius:12px;padding:14px;background:var(--colorFillAlter)}.style_searchResultHeader__meVdJ{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.style_searchContent__XbUVk{margin:10px 0!important;white-space:pre-wrap}.style_pdfPreviewStrip__94_eG{display:flex;gap:12px;overflow-x:auto;padding:8px 0}.style_pdfPreviewStrip__94_eG img{width:220px;max-height:320px;object-fit:contain;border:1px solid var(--colorBorderSecondary);border-radius:8px;background:#fff}.style_drawingPreview__lkk_L{min-height:120px;margin-top:12px;padding:16px;border:1px dashed var(--colorBorderSecondary);border-radius:10px;background:linear-gradient(135deg,rgba(80,140,255,.08),rgba(80,255,180,.06))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--colorBg:#f5f5f7;--colorBgElevated:#ffffff;--colorBgSecondary:rgba(255,255,255,0.64);--colorText:#1d1d1f;--colorTextSecondary:#6e6e73;--colorTextTertiary:#aeaeb2;--colorBrand:#007aff;--colorBrandHover:#0a84ff;--colorBrand2:#5856d6;--colorDanger:#ff3b30;--colorOk:#34c759;--colorWarn:#ff9500;--glassBg:rgba(255,255,255,0.72);--glassBlur:saturate(180%) blur(22px);--borderColor:rgba(60,60,67,0.16);--borderColorStrong:rgba(60,60,67,0.26);--shadowSoft:0 8px 24px rgba(0,0,0,0.06);--shadowCard:0 18px 45px rgba(0,0,0,0.08);--shadowButton:0 4px 14px rgba(0,122,255,0.25);--radiusSm:10px;--radiusMd:14px;--radiusLg:20px;--radiusPill:100px;--sidebarWidth:240px;--fontSans:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Segoe UI",sans-serif}.dark{--colorBg:#1c1c1e;--colorBgElevated:#2c2c2e;--colorBgSecondary:rgba(255,255,255,0.08);--colorText:#f5f5f7;--colorTextSecondary:#98989d;--colorTextTertiary:#6e6e73;--colorBrand:#0a84ff;--colorBrandHover:#409cff;--colorBrand2:#5e5ce6;--colorDanger:#ff453a;--colorOk:#30d158;--colorWarn:#ff9f0a;--glassBg:rgba(28,28,30,0.72);--borderColor:rgba(255,255,255,0.12);--borderColorStrong:rgba(255,255,255,0.2);--shadowSoft:0 8px 24px rgba(0,0,0,0.24);--shadowCard:0 18px 45px rgba(0,0,0,0.32);--shadowButton:0 4px 14px rgba(10,132,255,0.3)}*,:after,:before{box-sizing:border-box}html{font-family:var(--fontSans);background:var(--colorBg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.appShellPlaceholder{min-height:100vh;background:var(--colorBg)}body{margin:0;min-height:100vh;font-family:var(--fontSans);color:var(--colorText);background:radial-gradient(circle at 15% 0,rgba(0,122,255,.07),transparent 28rem),radial-gradient(circle at 85% 8%,rgba(88,86,214,.05),transparent 26rem),linear-gradient(180deg,rgba(251,251,253,1) 0,var(--colorBg) 100%)}.dark body{background:radial-gradient(circle at 15% 0,rgba(10,132,255,.06),transparent 28rem),radial-gradient(circle at 85% 8%,rgba(94,92,230,.04),transparent 26rem),linear-gradient(180deg,rgba(28,28,30,.98) 0,var(--colorBg) 100%)}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--borderColor);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--borderColorStrong)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animateFadeIn{animation:fadeIn .3s ease-out}.flex{display:flex}.inline-block{display:inline-block}.block{display:block}.flex-1{flex:1 1 0%}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:2px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.space-y-2>*+*{margin-top:8px}.space-y-5>*+*{margin-top:20px}.space-y-6>*+*{margin-top:24px}.mt-2{margin-top:8px}.mb-4{margin-bottom:16px}.py-16{padding-top:64px;padding-bottom:64px}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-2xl{max-width:672px}.max-w-\[400px\]{max-width:400px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-xs{font-size:12px;line-height:1.4}.text-sm{font-size:14px;line-height:1.45}.font-semibold{font-weight:600}.text-\[var\(--colorOk\)\]{color:var(--colorOk)}.text-\[var\(--colorDanger\)\]{color:var(--colorDanger)}.routeProgress{position:fixed;top:0;left:var(--sidebarWidth);right:0;height:3px;z-index:1000;background:linear-gradient(90deg,var(--colorPrimary),var(--colorAccent));animation:routeProgress .9s ease-in-out infinite}.routeLoadingCard{margin-bottom:16px;border:1px solid var(--borderSoft);border-radius:16px;padding:14px 16px;color:var(--textSecondary);background:var(--surfaceElevated)}@keyframes routeProgress{0%{transform:scaleX(.15);transform-origin:left;opacity:.65}50%{transform:scaleX(.7);transform-origin:left;opacity:1}to{transform:scaleX(1);transform-origin:left;opacity:.35}}@media (max-width:1024px){:root{--sidebarWidth:200px}}@media (max-width:860px){:root{--sidebarWidth:72px}.sidebarLogo{padding:16px;justify-content:center}.sidebarFooter,.sidebarItem span:not(.sidebarChevron),.sidebarLogoSub,.sidebarLogoTitle{display:none}.sidebarItem{justify-content:center;padding:11px}.sidebarSubmenu{padding-left:0}.sidebarSubItem{padding-left:11px}.mainInner{padding:20px 20px calc(20px + env(safe-area-inset-bottom, 0px))}.topbar{padding:10px 16px;margin:10px 12px 0}}@media (max-width:640px){.sidebar{left:6px;top:6px;bottom:calc(6px + env(safe-area-inset-bottom, 0px))}.mainContent{margin-left:72px}.mainInner{padding:12px 12px calc(12px + env(safe-area-inset-bottom, 0px))}.topbar{margin:8px 8px 0;padding:8px 12px;border-radius:16px}}.sidebar{position:fixed;left:12px;top:12px;bottom:calc(12px + env(safe-area-inset-bottom, 0px));width:calc(var(--sidebarWidth) - 16px);display:flex;flex-direction:column;z-index:20;background:linear-gradient(180deg,color-mix(in srgb,var(--glassBg) 92%,white 8%),var(--glassBg));border:1px solid color-mix(in srgb,var(--borderColor) 58%,transparent);border-radius:24px;backdrop-filter:var(--glassBlur);-webkit-backdrop-filter:var(--glassBlur);box-shadow:var(--shadowCard),inset 0 1px 0 rgba(255,255,255,.5);overflow:hidden;transition:width .22s ease,transform .22s ease}.sidebarCollapsedSelf{width:64px}.sidebarLogo{display:flex;align-items:center;gap:12px;padding:18px 18px 16px;border-bottom:1px solid color-mix(in srgb,var(--borderColor) 48%,transparent)}.sidebarLogoTitle{font-size:15px;font-weight:800;letter-spacing:-.035em;line-height:1.15}.logoGradient{background:linear-gradient(135deg,#007aff,#5856d6 50%,#af52de);-webkit-background-clip:text;background-clip:text}.dark .logoGradient,.logoGradient{-webkit-text-fill-color:transparent}.dark .logoGradient{background:linear-gradient(135deg,#0a84ff,#5e5ce6 50%,#bf5af2);-webkit-background-clip:text;background-clip:text}.sidebarLogoSub{margin-top:3px;font-size:10.5px;letter-spacing:.02em;color:var(--colorTextSecondary)}.sidebarCollapseBtn{margin:10px 12px 4px;height:34px;border-radius:14px;border:1px solid var(--borderColor);background:color-mix(in srgb,var(--glassBg) 86%,white 14%);color:var(--colorTextSecondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .16s ease}.sidebarCollapseBtn:hover{color:var(--colorText);border-color:color-mix(in srgb,var(--colorBrand) 42%,var(--borderColor));box-shadow:0 8px 18px rgba(0,122,255,.12)}.sidebarCollapsedSelf .sidebarLogo{justify-content:center;padding:16px 8px}.sidebarCollapsedSelf .sidebarChevron,.sidebarCollapsedSelf .sidebarFooter,.sidebarCollapsedSelf .sidebarItem span:not(.sidebarChevron),.sidebarCollapsedSelf .sidebarLogoSub,.sidebarCollapsedSelf .sidebarLogoTitle{display:none}.sidebarCollapsedSelf .sidebarItem{justify-content:center;padding:11px}.sidebarCollapsedSelf .sidebarCollapseBtn{margin:10px}.sidebarNav{flex:1;padding:16px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:2px}.sidebarItem{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:12px;font-size:14px;font-weight:500;color:var(--colorTextSecondary);transition:all .15s ease;cursor:pointer}.sidebarItem:hover{background:color-mix(in srgb,var(--colorBrand) 10%,transparent);color:var(--colorText);transform:translateX(2px)}.dark .sidebarItem:hover{background:color-mix(in srgb,var(--colorBrand) 16%,transparent)}.sidebarItemActive,.sidebarItemActive:hover{background:linear-gradient(180deg,var(--colorBrandHover),var(--colorBrand));color:#ffffff;box-shadow:0 8px 22px rgba(0,122,255,.22);transform:none}.dark .sidebarItemActive,.dark .sidebarItemActive:hover{background:linear-gradient(180deg,var(--colorBrandHover),var(--colorBrand));color:#ffffff;box-shadow:0 8px 24px rgba(10,132,255,.28)}.sidebarFooter{padding:16px 20px;border-top:1px solid var(--borderColor);font-size:11px;color:var(--colorTextSecondary)}.sidebarParent{justify-content:flex-start}.sidebarChevron{margin-left:auto;display:flex;align-items:center;opacity:.5}.sidebarSubmenu{padding-left:16px;display:flex;flex-direction:column;gap:2px}.sidebarSubItem{padding-left:16px;font-size:13px}.topbar{position:sticky;top:14px;z-index:10;display:flex;align-items:center;justify-content:flex-end;gap:12px;margin:14px 24px 0;padding:10px 14px;background:linear-gradient(180deg,color-mix(in srgb,var(--glassBg) 92%,white 8%),var(--glassBg));border:1px solid var(--borderColor);border-radius:22px;box-shadow:var(--shadowSoft),inset 0 1px 0 rgba(255,255,255,.42);backdrop-filter:var(--glassBlur);-webkit-backdrop-filter:var(--glassBlur)}.topbarBtn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radiusMd);border:1px solid var(--borderColor);background:rgba(255,255,255,.88);color:var(--colorTextSecondary);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s ease;outline:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.dark .topbarBtn{background:rgba(255,255,255,.08)}.topbarBtn:hover{border-color:rgba(0,122,255,.35);color:var(--colorText);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,122,255,.1),inset 0 0 0 1px rgba(255,255,255,.25)}.mainContent{margin-left:var(--sidebarWidth);flex:1;display:flex;flex-direction:column;min-height:100vh;transition:margin-left .22s ease}.sidebarCollapsed .mainContent{margin-left:88px}.mainInner{flex:1;padding:clamp(16px,2.5vw,40px) clamp(16px,2.5vw,40px) calc(clamp(16px, 2.5vw, 40px) + env(safe-area-inset-bottom, 0px));width:100%;overflow-x:hidden;transition:opacity .12s ease}.mainInner.pageTransitioning{opacity:.3;pointer-events:none}.applePill{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:var(--radiusMd);font-size:13px;font-weight:600;border:1px solid var(--borderColor);cursor:pointer;transition:all .15s ease;background:rgba(255,255,255,.88);color:var(--colorTextSecondary);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}.dark .applePill{background:rgba(255,255,255,.08)}.applePill:hover{border-color:rgba(0,122,255,.35);color:var(--colorText)}.applePillActive{background:#1d1d1f;color:#ffffff;border-color:transparent;box-shadow:none}.dark .applePillActive{background:rgba(255,255,255,.9);color:#1c1c1e}.applePillActive:hover{border-color:transparent;color:#ffffff}.dark .applePillActive:hover{color:#1c1c1e}.statItem{gap:12px;padding:4px}.statItem,.statItemIcon{display:flex;align-items:center}.statItemIcon{width:40px;height:40px;border-radius:10px;flex-shrink:0;justify-content:center;background:rgba(0,122,255,.08);color:var(--colorBrand)}.statItemValue{font-size:24px;font-weight:700;line-height:1.1;color:var(--colorText)}.statItemLabel{font-size:12px;color:var(--colorTextSecondary);margin-top:1px}.pageTitle{font-size:22px;font-weight:700;letter-spacing:-.015em;color:var(--colorText);margin:0}.pageDesc{margin-top:4px;font-size:14px;color:var(--colorTextSecondary)}.ant-card{background:linear-gradient(180deg,color-mix(in srgb,var(--glassBg) 92%,white 8%),var(--glassBg))!important;border:1px solid color-mix(in srgb,var(--borderColor) 46%,transparent)!important;border-radius:24px!important;box-shadow:var(--shadowSoft),inset 0 1px 0 rgba(255,255,255,.38)!important;backdrop-filter:var(--glassBlur);-webkit-backdrop-filter:var(--glassBlur);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.ant-card:hover{border-color:color-mix(in srgb,var(--colorBrand) 14%,var(--borderColor))!important;box-shadow:var(--shadowCard),inset 0 1px 0 rgba(255,255,255,.5)!important;transform:translateY(-1px)}.ant-card .ant-card-head{border-bottom-color:var(--borderColor)!important}.ant-modal-content{backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--radiusLg)!important}.ant-table-wrapper .ant-table{border-radius:16px;overflow:hidden}.ant-table-thead>tr>th{font-size:12px!important;font-weight:600!important;text-transform:uppercase;letter-spacing:.05em}.ant-table-cell{font-size:13px}.ant-btn-primary{box-shadow:var(--shadowButton)!important}.ant-spin-dot-item{background-color:var(--colorBrand)!important}.ant-tag{border-radius:var(--radiusPill)!important;font-size:12px!important}
|
package/README.md
CHANGED
|
@@ -1,192 +1,51 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
Customize Agent Web 管理控制台,基于 Next.js。该包随 CLI 一起安装,CLI 启动时会自动启动它并等待 `/api/health` 就绪。
|
|
4
|
-
|
|
5
|
-
## 定位
|
|
6
|
-
|
|
7
|
-
`@customize-agent/server` 负责提供:
|
|
8
|
-
|
|
9
|
-
- 知识库文件上传、搜索、管理和统计页面
|
|
10
|
-
- Provider 与模型配置页面
|
|
11
|
-
- Prompt 管理页面
|
|
12
|
-
- 生成编辑、生成资源管理和多格式导出页面
|
|
13
|
-
- 基于文档规范包、文件角色、提示词角色的动态 schema 生成流程
|
|
14
|
-
- 短期/长期上下文管理页面
|
|
15
|
-
- 系统统计与健康检查 API
|
|
16
|
-
|
|
17
|
-
CLI 主包 `customize-agent` 通过 npm 依赖安装本包,并使用 `next start` 启动已构建的 `.next` 产物。
|
|
18
|
-
|
|
19
|
-
## 开发命令
|
|
20
|
-
|
|
21
|
-
在仓库根目录运行:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
pnpm --filter @customize-agent/server dev
|
|
25
|
-
pnpm --filter @customize-agent/server build
|
|
26
|
-
pnpm --filter @customize-agent/server start
|
|
27
|
-
pnpm --filter @customize-agent/server lint
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
默认端口:`17321`。
|
|
31
|
-
|
|
32
|
-
## CLI 自动启动机制
|
|
33
|
-
|
|
34
|
-
CLI 启动时会:
|
|
35
|
-
|
|
36
|
-
1. 通过 `require.resolve('@customize-agent/server/package.json')` 定位本包。
|
|
37
|
-
2. 通过 server 包路径解析 `next/dist/bin/next`。
|
|
38
|
-
3. 执行 `node <next-bin> start -p <port> -H 127.0.0.1`。
|
|
39
|
-
4. 轮询 `GET /api/health`,成功后输出 Web 控制台地址。
|
|
40
|
-
5. 若端口被占用且未显式指定端口,会自动尝试后续端口。
|
|
41
|
-
|
|
42
|
-
## 页面路由
|
|
43
|
-
|
|
44
|
-
| 页面 | 路径 |
|
|
45
|
-
| --- | --- |
|
|
46
|
-
| 首页 | `/` |
|
|
47
|
-
| 概览 | `/overview` |
|
|
48
|
-
| 知识库总览 | `/knowledge` |
|
|
49
|
-
| 文件列表 | `/knowledge/files` |
|
|
50
|
-
| 文件详情 | `/knowledge/file-detail` |
|
|
51
|
-
| 知识库管理 | `/knowledge/manage` |
|
|
52
|
-
| 知识库搜索 | `/knowledge/search` |
|
|
53
|
-
| 模型配置 | `/models` |
|
|
54
|
-
| Prompt 管理 | `/prompt` |
|
|
55
|
-
| 生成编辑 | `/documents` |
|
|
56
|
-
| 生成资源 | `/asset-library` |
|
|
57
|
-
| 学习说明 | `/guide` |
|
|
58
|
-
| 设置 | `/settings` |
|
|
59
|
-
| 短期上下文 | `/context/short-term` |
|
|
60
|
-
| 长期上下文 | `/context/long-term` |
|
|
61
|
-
|
|
62
|
-
## API 路由
|
|
63
|
-
|
|
64
|
-
| API | 说明 |
|
|
65
|
-
| --- | --- |
|
|
66
|
-
| `GET /api/health` | 健康检查,返回 uptime、buildId、pid |
|
|
67
|
-
| `GET /api/kb/stats` | 知识库统计 |
|
|
68
|
-
| `GET /api/kb/files` | 文件列表 |
|
|
69
|
-
| `DELETE /api/kb/files` | 删除知识库文件 |
|
|
70
|
-
| `GET /api/kb/files/detail` | 文件详情、chunks、标签、关系 |
|
|
71
|
-
| `POST /api/kb/files/reindex` | 单文件重建索引 |
|
|
72
|
-
| `POST /api/kb/files/open` | 打开文件或目录 |
|
|
73
|
-
| `GET /api/kb/files/preview-pdf-page` | PDF 页面预览 |
|
|
74
|
-
| `POST /api/kb/upload` | 上传文件并入库 |
|
|
75
|
-
| `GET /api/kb/upload/progress` | 查询上传进度 |
|
|
76
|
-
| `GET /api/kb/search` | 知识库搜索 |
|
|
77
|
-
| `POST /api/kb/reindex` | 全量重建索引 |
|
|
78
|
-
| `GET /api/kb/categories` | 分类统计 |
|
|
79
|
-
| `GET /api/kb/tags` | 标签列表 |
|
|
80
|
-
| `GET /api/kb/ignore` | 忽略规则列表 |
|
|
81
|
-
| `POST /api/kb/ignore` | 追加忽略规则 |
|
|
82
|
-
| `GET /api/kb/duplicates` | 重复/关系数据 |
|
|
83
|
-
| `GET /api/kb/features` | 知识库能力信息 |
|
|
84
|
-
| `GET /api/kb/operations` | 知识库操作记录 |
|
|
85
|
-
| `GET /api/config/providers` | Provider 列表 |
|
|
86
|
-
| `POST /api/config/providers` | 保存 Provider |
|
|
87
|
-
| `GET /api/config/providers/:provider` | Provider 详情 |
|
|
88
|
-
| `DELETE /api/config/providers/:provider` | 删除 Provider |
|
|
89
|
-
| `GET /api/config/models` | 模型配置 |
|
|
90
|
-
| `PUT /api/config/models` | 保存模型配置 |
|
|
91
|
-
| `POST /api/config/healthCheck` | Provider 连通性检查 |
|
|
92
|
-
| `GET /api/context` | 上下文列表或统计 |
|
|
93
|
-
| `POST /api/context` | 压缩/清理上下文 |
|
|
94
|
-
| `PUT /api/context` | 更新上下文 |
|
|
95
|
-
| `DELETE /api/context` | 删除上下文 |
|
|
96
|
-
| `GET /api/system/stats` | 系统统计 |
|
|
97
|
-
| `GET/POST /api/prompt` | Prompt 管理 |
|
|
98
|
-
| `POST /api/documents/generate` | 创建后台文档生成任务,返回 `documentId/taskId` |
|
|
99
|
-
| `GET/PUT/DELETE /api/documents/generated/:id` | 生成记录轮询、更新和删除 |
|
|
100
|
-
| `POST /api/documents/export` | 按 `documentId` 或 Markdown 导出 Markdown/HTML/DOCX/PDF |
|
|
101
|
-
| `GET/POST/DELETE /api/assets/generated` | 生成资源列表、手动入库、打开和删除 |
|
|
102
|
-
| `GET /api/assets/generated/preview` | 生成图片资源预览 |
|
|
103
|
-
|
|
104
|
-
## 环境变量
|
|
105
|
-
|
|
106
|
-
| 变量 | 说明 |
|
|
107
|
-
| --- | --- |
|
|
108
|
-
| `CUSTOMIZE_PROJECT_ROOT` | 当前控制台管理的用户项目根目录 |
|
|
109
|
-
| `INIT_CWD` | 未显式设置项目根时的候选目录 |
|
|
110
|
-
| `CUSTOMIZE_AGENT_HOME` | 用户级数据目录,默认 `~/.customize-agent` |
|
|
111
|
-
| `CUSTOMIZE_DASHBOARD_PORT` | CLI 启动控制台时使用的端口 |
|
|
112
|
-
| `CUSTOMIZE_DASHBOARD_START_TIMEOUT_MS` | CLI 等待控制台启动的超时时间 |
|
|
113
|
-
| `CUSTOMIZE_DASHBOARD_BUILD_ID` | 覆盖 `/api/health` 返回的 buildId |
|
|
114
|
-
| `CUSTOMIZE_AGENT_DISABLE_OCR` | 禁用 OCR |
|
|
115
|
-
| `KB_PDF_OCR_PAGE_LIMIT` | PDF OCR 页数限制 |
|
|
116
|
-
| `KB_RETRIEVAL_*` | 检索权重、召回、rerank 相关配置 |
|
|
117
|
-
| `CUSTOMIZE_AGENT_{PROVIDER}_API_KEY` | Provider API Key |
|
|
118
|
-
|
|
119
|
-
## 数据与项目根解析
|
|
120
|
-
|
|
121
|
-
Web API 需要知道当前用户项目根目录。解析优先级:
|
|
122
|
-
|
|
123
|
-
1. 请求参数中的 `projectRoot`。
|
|
124
|
-
2. `CUSTOMIZE_PROJECT_ROOT`。
|
|
125
|
-
3. `INIT_CWD`。
|
|
126
|
-
4. `~/.customize-agent/projects/registry.db` 中最近打开的项目。
|
|
127
|
-
|
|
128
|
-
内部目录如 `~/.customize-agent`、`apps/server`、`apps/cli` 会被过滤,避免 Web 控制台错误管理自身包目录。
|
|
129
|
-
|
|
130
|
-
生成编辑页创建的文档记录、草稿、导出来源和生成资源统一保存在:
|
|
131
|
-
|
|
132
|
-
```text
|
|
133
|
-
~/.customize-agent/projects/{projectId}/generatedDocuments
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
其中 `index.json` 保存生成记录索引,`drafts/` 保存文档详情,`assets.json` 保存生成资源元数据,`assets/` 保存本地化生成资源。生成资源默认不进入知识库索引,必须由用户在生成资源页手动加入。
|
|
137
|
-
|
|
138
|
-
## 发布注意事项
|
|
139
|
-
|
|
140
|
-
本包发布到 npm 时需要包含生产启动所需的 Next.js 构建产物:
|
|
141
|
-
|
|
142
|
-
- `.next/BUILD_ID`
|
|
143
|
-
- `.next/server`
|
|
144
|
-
- `.next/static`
|
|
145
|
-
- `.next/required-server-files.json`
|
|
146
|
-
- Next manifest 文件
|
|
147
|
-
- `next.config.ts`
|
|
148
|
-
- `postcss.config.mjs`
|
|
149
|
-
- `package.json`
|
|
150
|
-
|
|
151
|
-
构建脚本会删除 `.next/cache`,避免发布缓存文件。
|
|
152
|
-
|
|
153
|
-
发布或打包前建议执行:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
pnpm --filter @customize-agent/server build
|
|
157
|
-
npm pack --dry-run
|
|
158
|
-
```
|
|
1
|
+
# Customize Agent Web 控制台
|
|
159
2
|
|
|
160
|
-
|
|
3
|
+
Customize Agent Web 控制台用于管理本地知识库、提示词、角色配置、文档规范包、工作流模板、生成文档和生成资源。它面向最终用户,帮助用户用自己的资料生成可校验、可追溯、可导出的业务文档。
|
|
4
|
+
|
|
5
|
+
## 主要页面
|
|
6
|
+
|
|
7
|
+
- 总览:查看系统运行状态、知识库和模型配置概况。
|
|
8
|
+
- 文件管理:上传和管理我的文件,查看知识库索引状态。
|
|
9
|
+
- 知识库搜索:检索已经入库的资料。
|
|
10
|
+
- 提示词管理:创建提示词,或复制内置示例后修改。
|
|
11
|
+
- 角色配置:配置文件角色、提示词角色和项目角色配置。
|
|
12
|
+
- 文档规范包:配置事实字段、章节规则和可执行门禁规则。
|
|
13
|
+
- 工作流模板库:选择或创建文档生成模板。
|
|
14
|
+
- 生成资源:查看和管理生成过程中产生的图片、附件等资源。
|
|
15
|
+
- 上下文工程:查看长期和短期上下文。
|
|
16
|
+
- 系统日志:查看运行日志和问题线索。
|
|
17
|
+
- 设置:管理语言、主题、服务状态和本地数据说明。
|
|
161
18
|
|
|
162
|
-
|
|
19
|
+
## 推荐流程
|
|
163
20
|
|
|
164
|
-
|
|
21
|
+
1. 配置可用模型。
|
|
22
|
+
2. 上传我的资料并等待索引完成。
|
|
23
|
+
3. 创建或复制提示词。
|
|
24
|
+
4. 创建文件角色和提示词角色。
|
|
25
|
+
5. 创建项目角色配置。
|
|
26
|
+
6. 创建文档规范包,配置门禁规则。
|
|
27
|
+
7. 选择工作流模板并生成文档。
|
|
28
|
+
8. 根据校验结果修正资料或配置。
|
|
29
|
+
9. 导出正式文档。
|
|
165
30
|
|
|
166
|
-
|
|
31
|
+
## 内置示例
|
|
167
32
|
|
|
168
|
-
|
|
169
|
-
CUSTOMIZE_DASHBOARD_PORT=17322 customize
|
|
170
|
-
```
|
|
33
|
+
控制台会提供内置示例,帮助用户理解功能。内置示例不会和用户数据混在一起,默认页面会优先展示用户自己的内容。内置示例不能直接覆盖,编辑时会复制成用户自己的版本。
|
|
171
34
|
|
|
172
|
-
|
|
35
|
+
## 本地数据
|
|
173
36
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
37
|
+
用户数据默认保存在本机,包含知识库索引、提示词、角色配置、规范包、生成记录、生成资源和日志。用户可以根据项目维护不同资料和生成结果。
|
|
38
|
+
|
|
39
|
+
## 常见问题
|
|
177
40
|
|
|
178
|
-
###
|
|
41
|
+
### 为什么上传完成后还显示索引中?
|
|
179
42
|
|
|
180
|
-
|
|
43
|
+
上传完成表示文件已被接收并解析,知识库向量索引会继续在后台写入。请在文件管理页面查看进度和失败原因。
|
|
181
44
|
|
|
182
|
-
|
|
183
|
-
CUSTOMIZE_PROJECT_ROOT=/path/to/project customize
|
|
184
|
-
```
|
|
45
|
+
### 为什么内置示例不能删除?
|
|
185
46
|
|
|
186
|
-
|
|
47
|
+
内置示例用于参考和学习。为了避免误删,系统会保护内置示例。需要使用时请复制为自己的版本。
|
|
187
48
|
|
|
188
|
-
|
|
49
|
+
### 自定义门禁类型和系统门禁类型有什么区别?
|
|
189
50
|
|
|
190
|
-
|
|
191
|
-
CUSTOMIZE_AGENT_DISABLE_OCR=1 customize
|
|
192
|
-
```
|
|
51
|
+
两者都会参与校验。系统门禁类型由系统预置;自定义门禁类型由用户定义名称、校验对象和校验方式,保存后可以在规范包中复用。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@customize-agent/server",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Customize Agent Web 管理控制台",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json"
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"react-dom": "^19.0.0",
|
|
48
48
|
"tesseract.js": "^7.0.0",
|
|
49
49
|
"xlsx": "^0.18.5",
|
|
50
|
+
"@customize-agent/knowledge": "^4.0.2",
|
|
50
51
|
"@customize-agent/llm": "^3.0.4",
|
|
51
|
-
"@customize-agent/runtime": "^3.0.6"
|
|
52
|
-
"@customize-agent/knowledge": "^4.0.1"
|
|
52
|
+
"@customize-agent/runtime": "^3.0.6"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@tailwindcss/postcss": "^4.3.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=3647,a.ids=[3647],a.modules={15751:a=>{a.exports=require("xlsx")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},29021:a=>{a.exports=require("fs")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},47265:(a,b,c)=>{c.r(b),c.d(b,{config:()=>y,default:()=>x,handler:()=>A});var d={};c.r(d),c.d(d,{default:()=>u});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(55511),j=c.n(i),k=c(29021),l=c.n(k),m=c(21820),n=c.n(m),o=c(33873),p=c.n(o),q=c(67461),r=c(23328);let s=new Set(["e330cd023298a812503e10a067a3f88e1cbc094f37f6fd2a88fdb6799495b37e"]);async function t(a,b){let c=await fetch(`https://coresg-normal.trae.ai/api/ide/v1/text_to_image?prompt=${encodeURIComponent(a)}&image_size=${b}`,{signal:AbortSignal.timeout(6e4)}),d=c.headers.get("content-type")||"",e=Buffer.from(await c.arrayBuffer()),f=j().createHash("sha256").update(e).digest("hex");if(!c.ok)throw Error(`图片生成接口失败:${c.status} ${e.toString("utf8").slice(0,120)}`);if(!d.startsWith("image/")||!(e.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))||e.subarray(0,3).equals(Buffer.from([255,216,255]))||"RIFF"===e.subarray(0,4).toString("ascii")))throw Error(`图片生成接口未返回有效图片:${d||"unknown"} ${e.toString("utf8").slice(0,120)}`);return{contentType:d,buffer:e,hash:f,staticPlaceholder:s.has(f)}}async function u(a,b){if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});try{let c="string"==typeof a.body?.prompt&&a.body.prompt.trim()?a.body.prompt.trim():"professional document cover, blue tactical map blueprint, realistic, clean website hero image, 16:9",d="string"==typeof a.body?.imageSize?a.body.imageSize:"landscape_16_9",e=(0,r.aY)(),{contentType:f,buffer:g,hash:h,staticPlaceholder:i}=await t(c,d),k=`test-cover-${Date.now()}.${f.includes("jpeg")||f.includes("jpg")?"jpg":f.includes("webp")?"webp":"png"}`,m=function(a,b,c){let d=j().createHash("sha1").update(p().resolve(a)).digest("hex").slice(0,12),e=p().join(n().homedir(),".customize-agent","projects",d,"generatedDocuments","assets");return l().mkdirSync(e,{recursive:!0}),l().writeFileSync(p().join(e,b),c),`generatedDocuments/assets/${b}`}(e,k,g),o={id:`asset-test-${Date.now()}`,type:"image",role:"generated",path:m,prompt:c,status:"generated",message:i?`测试生成返回固定图片:${f},${g.length} 字节,sha256=${h}`:`测试生成成功:${f},${g.length} 字节,sha256=${h}`};return(0,q.wq)([o],`test-${Date.now()}`,e),b.status(200).json({asset:o,contentType:f,bytes:g.length,hash:h,staticPlaceholder:i})}catch(a){return console.error("[api] assets/generated/test-generate",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var v=c(68970),w=c(50296);let x=(0,h.M)(d,"default"),y=(0,h.M)(d,"config"),z=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/assets/generated/test-generate",pathname:"/api/assets/generated/test-generate",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function A(a,b,c){let d=await z.prepare(a,b,{srcPage:"/api/assets/generated/test-generate"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,v.getTracer)(),e=d.getActiveScopeSpan(),j=z.instrumentationOnRequestError.bind(z),k=async e=>z.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:z.isDev,page:"/api/assets/generated/test-generate",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==w.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(w.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:v.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(z.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},48161:a=>{a.exports=require("node:os")},55511:a=>{a.exports=require("crypto")},67461:(a,b,c)=>{c.d(b,{BH:()=>w,JU:()=>z,Jz:()=>B,M$:()=>r,QG:()=>v,SE:()=>o,YL:()=>C,a6:()=>u,uc:()=>A,v7:()=>s,wq:()=>x,yE:()=>y});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(73445),i=c(23328);let j=new Map;function k(a=(0,i.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,i.aY)()){return d.createHash("sha1").update(g.resolve(a)).digest("hex").slice(0,12)}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function l(a=(0,i.aY)()){return g.join(k(a),"index.json")}function m(a=(0,i.aY)()){return g.join(k(a),"assets.json")}function n(a,b=(0,i.aY)()){return g.join(k(b),"drafts",`${a}.json`)}function o(a,b=(0,i.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(k(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function p(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function q(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function r(a=(0,i.aY)()){return p(l(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function s(a,b=(0,i.aY)()){return p(n(a,b),null)}function t(a,b=(0,i.aY)()){let c=Date.now(),d={...a,updatedAt:c};q(n(d.id,b),d);let e=r(b).filter(a=>a.id!==d.id);return e.unshift(d),q(l(b),e.map(a=>({...a,draft:void 0}))),d}function u(a,b,c=(0,i.aY)()){let d=s(a,c);return d?t({...d,...b,id:a},c):null}function v(a,b=(0,i.aY)()){try{e.rmSync(n(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}q(l(b),r(b).filter(b=>b.id!==a))}function w(a=(0,i.aY)()){return p(m(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function x(a,b,c=(0,i.aY)()){let d=Date.now(),e=[...w(c)];for(let c of a){let a=e.findIndex(a=>a.id===c.id),f=c.path?.startsWith("generatedDocuments/assets/")||"generated"===c.status||"prompt_ready"===c.status?"generated":"knowledge_base",h={...c,name:g.basename(c.path||c.url||c.id),source:f,indexed:a>=0&&e[a].indexed,usedByDocumentIds:a>=0?[...new Set([...e[a].usedByDocumentIds,b])]:[b],createdAt:a>=0?e[a].createdAt:d,updatedAt:d};a>=0?e[a]={...e[a],...h}:e.push(h)}return q(m(c),e),e}function y(a,b=(0,i.aY)()){return w(b).find(b=>b.id===a)||null}function z(a,b=(0,i.aY)()){let c=y(a,b);if(!c)return!1;let d=o(c,b);if(d&&d.startsWith(k(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return q(m(b),w(b).filter(b=>b.id!==a)),!0}async function A(a,b=(0,i.aY)()){let c=y(a,b);if(!c?.path)return null;let d=o(c,b);if(!d||!e.existsSync(d))throw Error("asset file not found");let f=g.join("生成资源",g.basename(c.path)).split(g.sep).join("/"),h=g.join(b,"knowledgeBase",f);e.mkdirSync(g.dirname(h),{recursive:!0}),d!==h&&e.copyFileSync(d,h);let j=await (0,i.Qh)().getProject(b);await j.reindexFile(f);let k=w(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return q(m(b),k),k.find(b=>b.id===a)||null}function B(a,b,c=(0,i.aY)()){let d=y(a,c);if(!d)return null;let f=o(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function C(a,b=(0,i.aY)()){let c=Date.now(),e=`doc-${c}-${d.randomBytes(4).toString("hex")}`,f=`task-${c}-${d.randomBytes(4).toString("hex")}`,g={id:e,taskId:f,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",markdown:"",status:"generating",assets:[],createdAt:c,updatedAt:c};t(g,b);let k=(0,h.OX)(a).then(a=>{let c=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message),d=t({...g,templateName:a.templateName,title:a.title,markdown:a.markdown,status:c.length>0?"warning":"completed",draft:a,assets:a.assets||[],completedAt:Date.now(),warningIssues:c},b);return x(a.assets||[],e,b),d}).catch(a=>t({...g,status:"failed",error:a instanceof Error?a.message:String(a)},b)).finally(()=>{let a=j.get(f);a&&(a.status=s(e,b)?.status||a.status)});return j.set(f,{id:f,documentId:e,status:"generating",promise:k}),{taskId:f,documentId:e,record:g}}},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},87550:a=>{a.exports=require("better-sqlite3")},95393:a=>{a.exports=require("@customize-agent/llm")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,3328,3445],()=>b(b.s=47265));module.exports=c})();
|