@customize-agent/server 4.0.5 → 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.
Files changed (159) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +176 -271
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/routes-manifest.json +8 -0
  5. package/.next/server/chunks/1936.js +385 -0
  6. package/.next/server/chunks/8204.js +1 -1
  7. package/.next/server/middleware-build-manifest.js +1 -1
  8. package/.next/server/pages/404.html +1 -1
  9. package/.next/server/pages/500.html +1 -1
  10. package/.next/server/pages/_app.js +1 -1
  11. package/.next/server/pages/_app.js.nft.json +1 -1
  12. package/.next/server/pages/_error.js +1 -1
  13. package/.next/server/pages/_error.js.nft.json +1 -1
  14. package/.next/server/pages/api/config/models.js +1 -1
  15. package/.next/server/pages/api/jobs/[id].js +2 -0
  16. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -0
  17. package/.next/server/pages/api/jobs.js +2 -0
  18. package/.next/server/pages/api/jobs.js.nft.json +1 -0
  19. package/.next/server/pages/api/kb/files/open.js +1 -1
  20. package/.next/server/pages/api/kb/files.js +2 -2
  21. package/.next/server/pages/api/kb/operations.js +2 -2
  22. package/.next/server/pages/api/kb/reindex.js +2 -2
  23. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  24. package/.next/server/pages/api/kb/upload.js +2 -2
  25. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  26. package/.next/server/pages/asset-library.html +1 -1
  27. package/.next/server/pages/asset-library.js.nft.json +1 -1
  28. package/.next/server/pages/context/long-term.html +1 -1
  29. package/.next/server/pages/context/long-term.js.nft.json +1 -1
  30. package/.next/server/pages/context/short-term.html +1 -1
  31. package/.next/server/pages/context/short-term.js.nft.json +1 -1
  32. package/.next/server/pages/document-roles.html +1 -1
  33. package/.next/server/pages/document-roles.js.nft.json +1 -1
  34. package/.next/server/pages/document-specs.html +1 -1
  35. package/.next/server/pages/document-specs.js.nft.json +1 -1
  36. package/.next/server/pages/documents.html +1 -1
  37. package/.next/server/pages/documents.js.nft.json +1 -1
  38. package/.next/server/pages/guide.html +1 -1
  39. package/.next/server/pages/guide.js.nft.json +1 -1
  40. package/.next/server/pages/index.html +1 -1
  41. package/.next/server/pages/index.js.nft.json +1 -1
  42. package/.next/server/pages/knowledge/file-detail.html +1 -1
  43. package/.next/server/pages/knowledge/file-detail.js.nft.json +1 -1
  44. package/.next/server/pages/knowledge/files.html +1 -1
  45. package/.next/server/pages/knowledge/files.js.nft.json +1 -1
  46. package/.next/server/pages/knowledge/manage.html +1 -1
  47. package/.next/server/pages/knowledge/manage.js.nft.json +1 -1
  48. package/.next/server/pages/knowledge/search.html +1 -1
  49. package/.next/server/pages/knowledge/search.js.nft.json +1 -1
  50. package/.next/server/pages/knowledge.html +1 -1
  51. package/.next/server/pages/knowledge.js.nft.json +1 -1
  52. package/.next/server/pages/models.html +1 -1
  53. package/.next/server/pages/models.js.nft.json +1 -1
  54. package/.next/server/pages/overview.html +1 -1
  55. package/.next/server/pages/overview.js.nft.json +1 -1
  56. package/.next/server/pages/prompt.html +1 -1
  57. package/.next/server/pages/prompt.js.nft.json +1 -1
  58. package/.next/server/pages/settings.html +1 -1
  59. package/.next/server/pages/settings.js.nft.json +1 -1
  60. package/.next/server/pages/system/logs.html +1 -1
  61. package/.next/server/pages/system/logs.js.nft.json +1 -1
  62. package/.next/server/pages-manifest.json +27 -25
  63. package/.next/static/2m64hom9a1sJPcvcwOlZ5/_buildManifest.js +1 -0
  64. package/.next/static/chunks/131-ad10d55ed64e627e.js +1 -0
  65. package/.next/static/chunks/{7150-123ff059dd0e2eb9.js → 150-57173312c2b70e98.js} +4 -4
  66. package/.next/static/chunks/195-9f2e4c67a9deff05.js +1 -0
  67. package/.next/static/chunks/20-23d24b40b69faf0f.js +8 -0
  68. package/.next/static/chunks/265-c3a46cef96364aac.js +1 -0
  69. package/.next/static/chunks/{1289-c788c44e65e9dc64.js → 289-36c210992d5009d5.js} +1 -1
  70. package/.next/static/chunks/412-03a4cc00655c0ec0.js +1 -0
  71. package/.next/static/chunks/433-ef3d7675b81826a9.js +1 -0
  72. package/.next/static/chunks/447-772df02993a8609b.js +1 -0
  73. package/.next/static/chunks/455-9e1e1c7e96845347.js +6 -0
  74. package/.next/static/chunks/506-b97aadd3e451b379.js +1 -0
  75. package/.next/static/chunks/512-e2813c7e9454d53c.js +1 -0
  76. package/.next/static/chunks/576-679ab6348b33b960.js +1 -0
  77. package/.next/static/chunks/698-0599729ce14a2e49.js +1 -0
  78. package/.next/static/chunks/749-dcb0cd85d1455f34.js +1 -0
  79. package/.next/static/chunks/{8787-c8bea0f25cbd3cf0.js → 787-196a2bed7b11745a.js} +1 -1
  80. package/.next/static/chunks/788-7de94bb44b70fb19.js +1 -0
  81. package/.next/static/chunks/932-823e1ae10dd43b8b.js +1 -0
  82. package/.next/static/chunks/938-0063785681203bb5.js +1 -0
  83. package/.next/static/chunks/985-da0b1f68e59d1e76.js +4 -0
  84. package/.next/static/chunks/framework-161be364fd69a7ce.js +1 -0
  85. package/.next/static/chunks/main-91fb767ebd74c9c1.js +1 -0
  86. package/.next/static/chunks/pages/_app-15da9e1394f6eaca.js +212 -0
  87. package/.next/static/chunks/pages/_error-282257fbdcc167b4.js +1 -0
  88. package/.next/static/chunks/pages/asset-library-e9ddfe1cbaac42d9.js +1 -0
  89. package/.next/static/chunks/pages/context/{long-term-820cba5f1ae3a6cd.js → long-term-2e6a30a8f879df47.js} +1 -1
  90. package/.next/static/chunks/pages/context/short-term-730211234fa3add6.js +1 -0
  91. package/.next/static/chunks/pages/{document-roles-ab6dfead3fd99a2c.js → document-roles-fb9e3ce4719fda9b.js} +1 -1
  92. package/.next/static/chunks/pages/document-specs-033d848b03b54df3.js +1 -0
  93. package/.next/static/chunks/pages/{documents-471786ecea050f17.js → documents-a21e4c98480b1a95.js} +1 -1
  94. package/.next/static/chunks/pages/{guide-2a3ec07403e02e1f.js → guide-6c680688d15f6200.js} +1 -1
  95. package/.next/static/chunks/pages/index-c5e0758e6b31deee.js +1 -0
  96. package/.next/static/chunks/pages/knowledge/file-detail-0a5e267f77f4e8b3.js +1 -0
  97. package/.next/static/chunks/pages/knowledge/files-4d2754cc303c2a70.js +1 -0
  98. package/.next/static/chunks/pages/knowledge/manage-25eb1a993b155450.js +1 -0
  99. package/.next/static/chunks/pages/knowledge/search-2cee4e8b8792170c.js +1 -0
  100. package/.next/static/chunks/pages/knowledge-905248d8dcb15453.js +1 -0
  101. package/.next/static/chunks/pages/models-b5f68c4c70257495.js +1 -0
  102. package/.next/static/chunks/pages/{overview-5235c02260509635.js → overview-37f93a823b4750f3.js} +1 -1
  103. package/.next/static/chunks/pages/prompt-4cf07545f8388d85.js +1 -0
  104. package/.next/static/chunks/pages/settings-fa9d6a56898ba678.js +1 -0
  105. package/.next/static/chunks/pages/system/logs-f4e222140dc7b30c.js +1 -0
  106. package/.next/static/chunks/{webpack-689755a4ff6d1f93.js → webpack-77d10b4726f13aa5.js} +1 -1
  107. package/package.json +3 -3
  108. package/scripts/kb-index-worker.cjs +128 -0
  109. package/.next/server/chunks/1547.js +0 -385
  110. package/.next/server/chunks/550.js +0 -1
  111. package/.next/server/chunks/9270.js +0 -1
  112. package/.next/static/IWuWLSb2ffDzvKo6MD3cy/_buildManifest.js +0 -1
  113. package/.next/static/chunks/1515-051d4383493143c9.js +0 -1
  114. package/.next/static/chunks/2073-244191fe7cc6e330.js +0 -4
  115. package/.next/static/chunks/2225-a90b5cc9338c63fa.js +0 -1
  116. package/.next/static/chunks/261-8a5ce39d74fc746e.js +0 -1
  117. package/.next/static/chunks/2884-b2944538a4a0d9b2.js +0 -1
  118. package/.next/static/chunks/3057-9eda004e07594513.js +0 -1
  119. package/.next/static/chunks/3455-c73ce4738620db20.js +0 -6
  120. package/.next/static/chunks/347-62c74776c299477d.js +0 -4
  121. package/.next/static/chunks/4052-9caaaa494d67a7e0.js +0 -1
  122. package/.next/static/chunks/4277-ba039fcf8f4e9cdc.js +0 -1
  123. package/.next/static/chunks/4427-302c5267a1f8493e.js +0 -1
  124. package/.next/static/chunks/4833-bf56f1203e2daffa.js +0 -28
  125. package/.next/static/chunks/5292-e65eab4f54b9f7ff.js +0 -16
  126. package/.next/static/chunks/5938-da5d441b981ec422.js +0 -1
  127. package/.next/static/chunks/6506-9d3cdc1ea816d7c4.js +0 -1
  128. package/.next/static/chunks/6578-6422ce4e29eb07d4.js +0 -1
  129. package/.next/static/chunks/6985-29200efa04920cb3.js +0 -4
  130. package/.next/static/chunks/7223-58376fd8a1d62df4.js +0 -1
  131. package/.next/static/chunks/7271-587c30b66ea4e619.js +0 -16
  132. package/.next/static/chunks/7576-b34ccf53f6efc388.js +0 -1
  133. package/.next/static/chunks/7889-8531b79751a71e39.js +0 -1
  134. package/.next/static/chunks/8326-b79c7555af5866e7.js +0 -8
  135. package/.next/static/chunks/861-dd60ef688592115e.js +0 -1
  136. package/.next/static/chunks/8676-5982391f15ea1190.js +0 -1
  137. package/.next/static/chunks/8732-69ffc27ed6c68f6f.js +0 -4
  138. package/.next/static/chunks/8932-e1bb3137986c259a.js +0 -1
  139. package/.next/static/chunks/9144-51689069a3d341e5.js +0 -1
  140. package/.next/static/chunks/9189-03f286defdb92816.js +0 -10
  141. package/.next/static/chunks/9773-53116cd0bf4b961a.js +0 -1
  142. package/.next/static/chunks/framework-fbc6f575b16f07d7.js +0 -1
  143. package/.next/static/chunks/main-105db6ecf7f64ff3.js +0 -1
  144. package/.next/static/chunks/pages/_app-03f3204a695aa8bc.js +0 -140
  145. package/.next/static/chunks/pages/_error-c01b6fb772028676.js +0 -1
  146. package/.next/static/chunks/pages/asset-library-634d18652eb7507d.js +0 -1
  147. package/.next/static/chunks/pages/context/short-term-3332ffb90b3b58a9.js +0 -1
  148. package/.next/static/chunks/pages/document-specs-565cf77237fce3d5.js +0 -1
  149. package/.next/static/chunks/pages/index-cc55686ed0309a22.js +0 -1
  150. package/.next/static/chunks/pages/knowledge/file-detail-f5e8f9bc35ebb92d.js +0 -1
  151. package/.next/static/chunks/pages/knowledge/files-88aba3534bd722f9.js +0 -1
  152. package/.next/static/chunks/pages/knowledge/manage-5629ccce14402b99.js +0 -1
  153. package/.next/static/chunks/pages/knowledge/search-ad678d4bc8137cb5.js +0 -1
  154. package/.next/static/chunks/pages/knowledge-55e4c53985e79449.js +0 -1
  155. package/.next/static/chunks/pages/models-1788b9741155e3ce.js +0 -1
  156. package/.next/static/chunks/pages/prompt-0184d79af09db7e1.js +0 -1
  157. package/.next/static/chunks/pages/settings-fd31c9ef833cf0af.js +0 -1
  158. package/.next/static/chunks/pages/system/logs-8040fb1e0c814a0c.js +0 -1
  159. /package/.next/static/{IWuWLSb2ffDzvKo6MD3cy → 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={8068: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))})()})();
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.5",
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
+ });