@customize-agent/server 4.0.6 → 4.0.7
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 +176 -271
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +8 -0
- package/.next/server/chunks/1936.js +385 -0
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9301.js +2 -2
- 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/config/models.js +1 -1
- package/.next/server/pages/api/jobs/[id].js +2 -0
- package/.next/server/pages/api/jobs/[id].js.nft.json +1 -0
- package/.next/server/pages/api/jobs.js +2 -0
- package/.next/server/pages/api/jobs.js.nft.json +1 -0
- package/.next/server/pages/api/kb/files/open.js +1 -1
- package/.next/server/pages/api/kb/files.js +2 -2
- package/.next/server/pages/api/kb/operations.js +2 -2
- package/.next/server/pages/api/kb/reindex.js +2 -2
- package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
- package/.next/server/pages/api/kb/upload.js +2 -2
- package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
- 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 +31 -29
- package/.next/static/2m64hom9a1sJPcvcwOlZ5/_buildManifest.js +1 -0
- package/.next/static/chunks/131-ad10d55ed64e627e.js +1 -0
- package/.next/static/chunks/{7150-123ff059dd0e2eb9.js → 150-57173312c2b70e98.js} +4 -4
- package/.next/static/chunks/195-9f2e4c67a9deff05.js +1 -0
- package/.next/static/chunks/20-23d24b40b69faf0f.js +8 -0
- package/.next/static/chunks/265-c3a46cef96364aac.js +1 -0
- package/.next/static/chunks/{1289-c788c44e65e9dc64.js → 289-36c210992d5009d5.js} +1 -1
- package/.next/static/chunks/412-03a4cc00655c0ec0.js +1 -0
- package/.next/static/chunks/433-ef3d7675b81826a9.js +1 -0
- package/.next/static/chunks/447-772df02993a8609b.js +1 -0
- package/.next/static/chunks/455-9e1e1c7e96845347.js +6 -0
- package/.next/static/chunks/506-b97aadd3e451b379.js +1 -0
- package/.next/static/chunks/512-e2813c7e9454d53c.js +1 -0
- package/.next/static/chunks/576-679ab6348b33b960.js +1 -0
- package/.next/static/chunks/698-0599729ce14a2e49.js +1 -0
- package/.next/static/chunks/749-dcb0cd85d1455f34.js +1 -0
- package/.next/static/chunks/{8787-c8bea0f25cbd3cf0.js → 787-196a2bed7b11745a.js} +1 -1
- package/.next/static/chunks/788-7de94bb44b70fb19.js +1 -0
- package/.next/static/chunks/932-823e1ae10dd43b8b.js +1 -0
- package/.next/static/chunks/938-0063785681203bb5.js +1 -0
- package/.next/static/chunks/985-da0b1f68e59d1e76.js +4 -0
- package/.next/static/chunks/framework-161be364fd69a7ce.js +1 -0
- package/.next/static/chunks/main-91fb767ebd74c9c1.js +1 -0
- package/.next/static/chunks/pages/_app-15da9e1394f6eaca.js +212 -0
- package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +1 -0
- package/.next/static/chunks/pages/asset-library-e9ddfe1cbaac42d9.js +1 -0
- package/.next/static/chunks/pages/context/{long-term-820cba5f1ae3a6cd.js → long-term-2e6a30a8f879df47.js} +1 -1
- package/.next/static/chunks/pages/context/short-term-730211234fa3add6.js +1 -0
- package/.next/static/chunks/pages/{document-roles-ab6dfead3fd99a2c.js → document-roles-fb9e3ce4719fda9b.js} +1 -1
- package/.next/static/chunks/pages/document-specs-033d848b03b54df3.js +1 -0
- package/.next/static/chunks/pages/{documents-471786ecea050f17.js → documents-a21e4c98480b1a95.js} +1 -1
- package/.next/static/chunks/pages/{guide-2a3ec07403e02e1f.js → guide-6c680688d15f6200.js} +1 -1
- package/.next/static/chunks/pages/index-c5e0758e6b31deee.js +1 -0
- package/.next/static/chunks/pages/knowledge/file-detail-0a5e267f77f4e8b3.js +1 -0
- package/.next/static/chunks/pages/knowledge/files-4d2754cc303c2a70.js +1 -0
- package/.next/static/chunks/pages/knowledge/manage-25eb1a993b155450.js +1 -0
- package/.next/static/chunks/pages/knowledge/search-2cee4e8b8792170c.js +1 -0
- package/.next/static/chunks/pages/knowledge-905248d8dcb15453.js +1 -0
- package/.next/static/chunks/pages/models-b5f68c4c70257495.js +1 -0
- package/.next/static/chunks/pages/{overview-5235c02260509635.js → overview-37f93a823b4750f3.js} +1 -1
- package/.next/static/chunks/pages/prompt-4cf07545f8388d85.js +1 -0
- package/.next/static/chunks/pages/settings-fa9d6a56898ba678.js +1 -0
- package/.next/static/chunks/pages/system/logs-f4e222140dc7b30c.js +1 -0
- package/.next/static/chunks/{webpack-689755a4ff6d1f93.js → webpack-77d10b4726f13aa5.js} +1 -1
- package/package.json +3 -3
- package/scripts/kb-index-worker.cjs +128 -0
- package/.next/server/chunks/1547.js +0 -385
- package/.next/server/chunks/550.js +0 -1
- package/.next/server/chunks/9270.js +0 -1
- package/.next/static/JXFgoYPwWCEiyRggKTXQU/_buildManifest.js +0 -1
- package/.next/static/chunks/1515-051d4383493143c9.js +0 -1
- package/.next/static/chunks/2073-244191fe7cc6e330.js +0 -4
- package/.next/static/chunks/2225-a90b5cc9338c63fa.js +0 -1
- package/.next/static/chunks/261-8a5ce39d74fc746e.js +0 -1
- package/.next/static/chunks/2884-b2944538a4a0d9b2.js +0 -1
- package/.next/static/chunks/3057-9eda004e07594513.js +0 -1
- package/.next/static/chunks/3455-c73ce4738620db20.js +0 -6
- package/.next/static/chunks/347-62c74776c299477d.js +0 -4
- package/.next/static/chunks/4052-9caaaa494d67a7e0.js +0 -1
- package/.next/static/chunks/4277-ba039fcf8f4e9cdc.js +0 -1
- package/.next/static/chunks/4427-302c5267a1f8493e.js +0 -1
- package/.next/static/chunks/4833-bf56f1203e2daffa.js +0 -28
- package/.next/static/chunks/5292-e65eab4f54b9f7ff.js +0 -16
- package/.next/static/chunks/5938-da5d441b981ec422.js +0 -1
- package/.next/static/chunks/6506-9d3cdc1ea816d7c4.js +0 -1
- package/.next/static/chunks/6578-6422ce4e29eb07d4.js +0 -1
- package/.next/static/chunks/6985-29200efa04920cb3.js +0 -4
- package/.next/static/chunks/7223-58376fd8a1d62df4.js +0 -1
- package/.next/static/chunks/7271-587c30b66ea4e619.js +0 -16
- package/.next/static/chunks/7576-b34ccf53f6efc388.js +0 -1
- package/.next/static/chunks/7889-8531b79751a71e39.js +0 -1
- package/.next/static/chunks/8326-b79c7555af5866e7.js +0 -8
- package/.next/static/chunks/861-dd60ef688592115e.js +0 -1
- package/.next/static/chunks/8676-5982391f15ea1190.js +0 -1
- package/.next/static/chunks/8732-69ffc27ed6c68f6f.js +0 -4
- package/.next/static/chunks/8932-e1bb3137986c259a.js +0 -1
- package/.next/static/chunks/9144-51689069a3d341e5.js +0 -1
- package/.next/static/chunks/9189-03f286defdb92816.js +0 -10
- package/.next/static/chunks/9773-53116cd0bf4b961a.js +0 -1
- package/.next/static/chunks/framework-fbc6f575b16f07d7.js +0 -1
- package/.next/static/chunks/main-105db6ecf7f64ff3.js +0 -1
- package/.next/static/chunks/pages/_app-03f3204a695aa8bc.js +0 -140
- package/.next/static/chunks/pages/_error-c01b6fb772028676.js +0 -1
- package/.next/static/chunks/pages/asset-library-634d18652eb7507d.js +0 -1
- package/.next/static/chunks/pages/context/short-term-3332ffb90b3b58a9.js +0 -1
- package/.next/static/chunks/pages/document-specs-565cf77237fce3d5.js +0 -1
- package/.next/static/chunks/pages/index-cc55686ed0309a22.js +0 -1
- package/.next/static/chunks/pages/knowledge/file-detail-f5e8f9bc35ebb92d.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-88aba3534bd722f9.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-5629ccce14402b99.js +0 -1
- package/.next/static/chunks/pages/knowledge/search-ad678d4bc8137cb5.js +0 -1
- package/.next/static/chunks/pages/knowledge-55e4c53985e79449.js +0 -1
- package/.next/static/chunks/pages/models-1788b9741155e3ce.js +0 -1
- package/.next/static/chunks/pages/prompt-0184d79af09db7e1.js +0 -1
- package/.next/static/chunks/pages/settings-fd31c9ef833cf0af.js +0 -1
- package/.next/static/chunks/pages/system/logs-8040fb1e0c814a0c.js +0 -1
- /package/.next/static/{JXFgoYPwWCEiyRggKTXQU → 2m64hom9a1sJPcvcwOlZ5}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[979],{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(79059),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,[433,576,195,985,150,289,512,636,593,792],()=>e(e.s=39214)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var a=r[o]={exports:{}},f=!0;try{e[o](a,a.exports,t),f=!1}finally{f&&delete r[o]}return a.exports}t.m=e,(()=>{var e=[];t.O=(r,o,n,a)=>{if(o){a=a||0;for(var f=e.length;f>0&&e[f-1][2]>a;f--)e[f]=e[f-1];e[f]=[o,n,a];return}for(var l=1/0,f=0;f<e.length;f++){for(var[o,n,a]=e[f],u=!0,i=0;i<o.length;i++)(!1&a||l>=a)&&Object.keys(t.O).every(e=>t.O[e](o[i]))?o.splice(i--,1):(u=!1,a<l&&(l=a));if(u){e.splice(f--,1);var p=n();void 0!==p&&(r=p)}}return r}})(),t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);t.r(a);var f={};e=e||[null,r({}),r([]),r(r)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=r(l))Object.getOwnPropertyNames(l).forEach(e=>f[e]=()=>o[e]);return f.default=()=>o,t.d(a,f),a}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/_next/",(()=>{var e={
|
|
1
|
+
(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var a=r[o]={exports:{}},f=!0;try{e[o](a,a.exports,t),f=!1}finally{f&&delete r[o]}return a.exports}t.m=e,(()=>{var e=[];t.O=(r,o,n,a)=>{if(o){a=a||0;for(var f=e.length;f>0&&e[f-1][2]>a;f--)e[f]=e[f-1];e[f]=[o,n,a];return}for(var l=1/0,f=0;f<e.length;f++){for(var[o,n,a]=e[f],u=!0,i=0;i<o.length;i++)(!1&a||l>=a)&&Object.keys(t.O).every(e=>t.O[e](o[i]))?o.splice(i--,1):(u=!1,a<l&&(l=a));if(u){e.splice(f--,1);var p=n();void 0!==p&&(r=p)}}return r}})(),t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);t.r(a);var f={};e=e||[null,r({}),r([]),r(r)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=r(l))Object.getOwnPropertyNames(l).forEach(e=>f[e]=()=>o[e]);return f.default=()=>o,t.d(a,f),a}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.p="/_next/",(()=>{var e={68:0};t.O.j=r=>0===e[r];var r=(r,o)=>{var n,a,[f,l,u]=o,i=0;if(f.some(r=>0!==e[r])){for(n in l)t.o(l,n)&&(t.m[n]=l[n]);if(u)var p=u(t)}for(r&&r(o);i<f.length;i++)a=f[i],t.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return t.O(p)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(r.bind(null,0)),o.push=r.bind(null,o.push.bind(o))})()})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@customize-agent/server",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.7",
|
|
4
4
|
"description": "Customize Agent Web 管理控制台",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./package.json": "./package.json"
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"react-dom": "19.2.7",
|
|
48
48
|
"tesseract.js": "^7.0.0",
|
|
49
49
|
"xlsx": "^0.18.5",
|
|
50
|
-
"@customize-agent/knowledge": "^4.0.2",
|
|
51
50
|
"@customize-agent/llm": "^3.0.4",
|
|
52
|
-
"@customize-agent/runtime": "^3.0.6"
|
|
51
|
+
"@customize-agent/runtime": "^3.0.6",
|
|
52
|
+
"@customize-agent/knowledge": "^4.0.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@tailwindcss/postcss": "^4.3.2",
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const fs = require('node:fs');
|
|
3
|
+
const os = require('node:os');
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
|
|
6
|
+
function computeProjectId(projectRoot) {
|
|
7
|
+
let hash = 2166136261;
|
|
8
|
+
for (let i = 0; i < projectRoot.length; i += 1) {
|
|
9
|
+
hash ^= projectRoot.charCodeAt(i);
|
|
10
|
+
hash = Math.imul(hash, 16777619);
|
|
11
|
+
}
|
|
12
|
+
return (hash >>> 0).toString(16).padStart(8, '0');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function logPath(projectRoot) {
|
|
16
|
+
return path.join(os.homedir(), '.customize-agent', 'projects', computeProjectId(path.resolve(projectRoot)), 'kb-operations.jsonl');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function readAll(projectRoot) {
|
|
20
|
+
const file = logPath(projectRoot);
|
|
21
|
+
if (!fs.existsSync(file)) return [];
|
|
22
|
+
return fs.readFileSync(file, 'utf8').split('\n').filter(Boolean).flatMap(line => {
|
|
23
|
+
try { return [JSON.parse(line)]; } catch { return []; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function writeAll(projectRoot, records) {
|
|
28
|
+
const file = logPath(projectRoot);
|
|
29
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
30
|
+
fs.writeFileSync(file, `${records.slice(-200).map(record => JSON.stringify(record)).join('\n')}\n`, 'utf8');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function upsert(projectRoot, patch) {
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
const records = readAll(projectRoot);
|
|
36
|
+
const index = records.findIndex(record => record.id === patch.id);
|
|
37
|
+
const current = index >= 0 ? records[index] : undefined;
|
|
38
|
+
const next = {
|
|
39
|
+
id: patch.id,
|
|
40
|
+
type: patch.type,
|
|
41
|
+
title: patch.title,
|
|
42
|
+
stage: patch.stage ?? current?.stage ?? 'uploading',
|
|
43
|
+
status: patch.status ?? current?.status ?? 'processing',
|
|
44
|
+
message: patch.message ?? current?.message ?? '',
|
|
45
|
+
percent: patch.percent ?? current?.percent ?? 0,
|
|
46
|
+
fileName: patch.fileName ?? current?.fileName,
|
|
47
|
+
filePath: patch.filePath ?? current?.filePath,
|
|
48
|
+
chunkCount: patch.chunkCount ?? current?.chunkCount,
|
|
49
|
+
textLength: patch.textLength ?? current?.textLength,
|
|
50
|
+
extractionMode: patch.extractionMode ?? current?.extractionMode,
|
|
51
|
+
error: patch.error ?? current?.error,
|
|
52
|
+
createdAt: current?.createdAt ?? now,
|
|
53
|
+
updatedAt: now,
|
|
54
|
+
};
|
|
55
|
+
if (index >= 0) records[index] = next;
|
|
56
|
+
else records.push(next);
|
|
57
|
+
writeAll(projectRoot, records);
|
|
58
|
+
if (process.send) process.send({ type: 'progress', record: next });
|
|
59
|
+
return next;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function toStage(stage) {
|
|
63
|
+
if (['parsing', 'chunking', 'vectorizing', 'done', 'error'].includes(stage)) return stage;
|
|
64
|
+
if (stage === 'indexing') return 'chunking';
|
|
65
|
+
if (stage === 'scanning') return 'uploading';
|
|
66
|
+
return 'vectorizing';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async function main() {
|
|
70
|
+
const job = JSON.parse(process.argv[2] || '{}');
|
|
71
|
+
const projectRoot = path.resolve(job.projectRoot);
|
|
72
|
+
const operationId = job.operationId || job.id;
|
|
73
|
+
const operationType = job.uploadOperationId ? 'upload' : 'reindex';
|
|
74
|
+
const operationTitle = job.uploadOperationId ? `上传 ${job.uploadTitle || '文件'}` : '知识库后台索引';
|
|
75
|
+
upsert(projectRoot, { id: operationId, type: operationType, title: operationTitle, stage: 'uploading', status: 'processing', percent: 5, message: '索引任务已在独立后台进程启动' });
|
|
76
|
+
|
|
77
|
+
const knowledge = await import('@customize-agent/knowledge');
|
|
78
|
+
const manager = new knowledge.MultiProjectManager();
|
|
79
|
+
const project = await manager.getProject(projectRoot);
|
|
80
|
+
const onProgress = progress => upsert(projectRoot, {
|
|
81
|
+
id: operationId,
|
|
82
|
+
type: operationType,
|
|
83
|
+
title: operationTitle,
|
|
84
|
+
stage: toStage(progress.stage),
|
|
85
|
+
status: progress.stage === 'error' ? 'error' : 'processing',
|
|
86
|
+
percent: progress.percent,
|
|
87
|
+
message: progress.message,
|
|
88
|
+
filePath: progress.filePath,
|
|
89
|
+
chunkCount: progress.chunkCount,
|
|
90
|
+
error: progress.vectorStatus?.error,
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
let diff = job.forceReindexAll
|
|
94
|
+
? await project.forceReindexAll({ vectorMode: job.vectorMode, onProgress })
|
|
95
|
+
: await project.consumePendingIndexJobs({ vectorMode: job.vectorMode, onProgress });
|
|
96
|
+
|
|
97
|
+
while (project.countPendingIndexJobs() > 0) {
|
|
98
|
+
const nextDiff = await project.consumePendingIndexJobs({ vectorMode: job.vectorMode, onProgress });
|
|
99
|
+
diff = {
|
|
100
|
+
newFiles: [...diff.newFiles, ...nextDiff.newFiles],
|
|
101
|
+
modifiedFiles: [...diff.modifiedFiles, ...nextDiff.modifiedFiles],
|
|
102
|
+
deletedFiles: [...diff.deletedFiles, ...nextDiff.deletedFiles],
|
|
103
|
+
unchangedCount: diff.unchangedCount + nextDiff.unchangedCount,
|
|
104
|
+
mtimeOnlyCount: diff.mtimeOnlyCount + nextDiff.mtimeOnlyCount,
|
|
105
|
+
skippedFiles: [...diff.skippedFiles, ...nextDiff.skippedFiles],
|
|
106
|
+
hasChanges: diff.hasChanges || nextDiff.hasChanges,
|
|
107
|
+
diffTimeMs: diff.diffTimeMs + nextDiff.diffTimeMs,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const vectorStatus = project.getVectorStatus();
|
|
112
|
+
if (vectorStatus.status === 'error') {
|
|
113
|
+
const error = vectorStatus.error || 'HNSWLib 向量入库失败';
|
|
114
|
+
upsert(projectRoot, { id: operationId, type: operationType, title: operationTitle, stage: 'error', status: 'error', percent: 100, message: error, error });
|
|
115
|
+
process.exitCode = 1;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
upsert(projectRoot, { id: operationId, type: operationType, title: operationTitle, stage: 'done', status: 'success', percent: 100, message: '知识库后台索引完成' });
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
main().catch(error => {
|
|
122
|
+
const job = JSON.parse(process.argv[2] || '{}');
|
|
123
|
+
const projectRoot = job.projectRoot ? path.resolve(job.projectRoot) : process.cwd();
|
|
124
|
+
const operationId = job.operationId || job.id || `worker-error-${Date.now()}`;
|
|
125
|
+
const message = error instanceof Error ? (error.stack || error.message) : String(error);
|
|
126
|
+
upsert(projectRoot, { id: operationId, type: job.uploadOperationId ? 'upload' : 'reindex', title: job.uploadOperationId ? `上传 ${job.uploadTitle || '文件'}` : '知识库后台索引', stage: 'error', status: 'error', percent: 100, message, error: message });
|
|
127
|
+
process.exit(1);
|
|
128
|
+
});
|