@customize-agent/server 4.0.68 → 4.0.69
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 +8 -10
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/1936.js +3 -3
- package/.next/server/chunks/6697.js +56 -52
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/chunks/9301.js +3 -3
- 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/_error.js +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.nft.json +1 -1
- package/.next/server/pages/api/context.js +2 -16
- package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
- package/.next/server/pages/api/documents/export.js +1 -1
- package/.next/server/pages/api/documents/export.js.nft.json +1 -1
- package/.next/server/pages/api/documents/generate.js +1 -1
- 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/templates.js.nft.json +1 -1
- package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
- package/.next/server/pages/api/jobs.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/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/search.js.nft.json +1 -1
- 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.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.nft.json +1 -1
- 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/context/long-term.html +1 -1
- package/.next/server/pages/context/short-term.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge/search.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +31 -31
- package/.next/static/G68XtEOLp5i0eWArclO6w/_buildManifest.js +1 -0
- package/.next/static/chunks/63-dd8eeb8edd766bae.js +4 -0
- package/.next/static/chunks/642-708b928fbafc6c20.js +8 -0
- package/.next/static/chunks/pages/{_app-d1257da7895866ad.js → _app-dd841161c7d0b39e.js} +1 -1
- package/.next/static/chunks/pages/asset-library-91bd2baa09727e0a.js +1 -0
- package/.next/static/chunks/pages/documents-84fe27cb0fbbb040.js +1 -0
- package/.next/static/chunks/pages/{guide-295174493709ecbb.js → guide-61bea94f27710467.js} +1 -1
- package/package.json +2 -2
- package/.next/static/chunks/20-86ac6910225cce4e.js +0 -8
- package/.next/static/chunks/499-d6bcc76195b28550.js +0 -4
- package/.next/static/chunks/940-7cb66111eee2f9fb.js +0 -1
- package/.next/static/chunks/pages/asset-library-1dc916735fd12e11.js +0 -1
- package/.next/static/chunks/pages/documents-141b9ab2dba47ae7.js +0 -1
- package/.next/static/ubuSYahPe0ZJo6zT6KdSg/_buildManifest.js +0 -1
- /package/.next/static/{ubuSYahPe0ZJo6zT6KdSg → G68XtEOLp5i0eWArclO6w}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=1883,a.ids=[1883],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")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},67461:(a,b,c)=>{c.d(b,{BH:()=>A,Gl:()=>n,JU:()=>C,Jz:()=>F,M$:()=>u,QG:()=>z,SE:()=>r,YL:()=>G,a6:()=>x,r:()=>y,uc:()=>E,v7:()=>v,yE:()=>B});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(56697),i=c(99842),j=c(19898),k=c(23328);function l(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}let m=new Map;function n(a=(0,k.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,k.aY)()){return(0,j.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function o(a=(0,k.aY)()){return g.join(n(a),"index.json")}function p(a=(0,k.aY)()){return g.join(n(a),"assets.json")}function q(a,b=(0,k.aY)()){return g.join(n(b),"drafts",`${a}.json`)}function r(a,b=(0,k.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(n(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function s(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function t(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function u(a=(0,k.aY)()){return s(o(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function v(a,b=(0,k.aY)()){return s(q(a,b),null)}function w(a,b=(0,k.aY)()){let c=Date.now(),d={...a,updatedAt:c};t(q(d.id,b),d);let e=u(b).filter(a=>a.id!==d.id);return e.unshift(d),t(o(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages}))),d}function x(a,b,c=(0,k.aY)()){let d=v(a,c);return d?w({...d,...b,id:a},c):null}function y(a,b=(0,k.aY)()){let c=v(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of m)if(c.documentId===a){c.controller.abort(),m.delete(b);break}return w({...c,status:"aborted",error:"用户中止",executionStages:l(c.executionStages,"用户中止"),updatedAt:Date.now(),completedAt:Date.now()},b)}function z(a,b=(0,k.aY)()){try{e.rmSync(q(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}t(o(b),u(b).filter(b=>b.id!==a))}function A(a=(0,k.aY)()){return s(p(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function B(a,b=(0,k.aY)()){return A(b).find(b=>b.id===a)||null}function C(a,b=(0,k.aY)()){let c=B(a,b);if(!c)return!1;let d=r(c,b);if(d&&d.startsWith(n(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return t(p(b),A(b).filter(b=>b.id!==a)),!0}async function D(a,b=(0,k.aY)()){let c=g.join("生成文档",`${a.title.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,k.Qh)().getProject(b);return await f.reindexFile(c),c}async function E(a,b=(0,k.aY)()){let c=B(a,b);if(!c?.path)return null;let d=r(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 i=await (0,k.Qh)().getProject(b);await i.reindexFile(f);let j=A(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return t(p(b),j),j.find(b=>b.id===a)||null}function F(a,b,c=(0,k.aY)()){let d=B(a,c);if(!d)return null;let f=r(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function G(a,b=(0,k.aY)()){let c=g.resolve(b),e=(0,j.computeProjectId)(c),f=Date.now(),n=`doc-${f}-${d.randomBytes(4).toString("hex")}`,o=`task-${f}-${d.randomBytes(4).toString("hex")}`,q={id:n,taskId:o,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",projectRoot:c,projectId:e,knowledgeBasePath:g.join(c,"knowledgeBase"),markdown:"",status:"generating",assets:[],createdAt:f,updatedAt:f};w(q,c);let r=new AbortController,s=(0,h.OX)({...a,projectRoot:c,signal:r.signal,onProgress:a=>{try{let b=v(n,c);b&&"generating"===b.status&&(w({...b,executionStages:a},c),console.log(`[gen] progress saved: ${a.length} stages, doc=${n}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let b=v(n,c);if(!b||"generating"!==b.status)return b??q;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message);a.exportGate.passed||0!==d.length||d.push("导出门禁未通过:存在未完成的检查项");let e=w(function(a){let b=a=>({...a,content:a.content.slice(0,500)}),c=a.draft?{...a.draft,chapters:a.draft.chapters.map(a=>({...a,evidence:a.evidence.map(b)}))}:a.draft;return{...a,draft:c}}({...b,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,assets:a.assets||[],completedAt:Date.now(),warningIssues:d}),c);!function(a,b=(0,k.aY)()){let c=a.draft?.sources.slice(0,8).map(a=>a.filePath).join("、")||"无明确来源",d=a.warningIssues?.slice(0,5).join(";")||"无阻断问题";(0,i.i3)("project_fact",`文档《${a.title}》已基于模板“${a.templateName||a.templateId}”生成。用户要求:${a.requirement||"未填写"}。主要资料来源:${c}。校验结果:${d}。`,`Project: ${g.resolve(b)} | Generated document: ${a.id}`)}(e,c);let f=function(a,b,c=(0,k.aY)()){let d=Date.now(),e=[...A(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 t(p(c),e),e}(a.assets||[],n,c);for(let a of(await D(e,c).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),f.filter(a=>a.usedByDocumentIds.includes(n)&&!a.indexed)))await E(a.id,c).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return e}).catch(a=>{let b=v(n,c);if(!b||"generating"!==b.status)return b??q;let d=a instanceof Error?a.message:String(a),e=a instanceof Error&&/用户中止|aborted|abort/i.test(a.message)?"aborted":"failed";return w({...b,status:e,error:d,executionStages:l(b.executionStages,d),completedAt:Date.now()},c)}).finally(()=>{m.delete(o)});return m.set(o,{id:o,documentId:n,status:"generating",controller:r,promise:s}),{taskId:o,documentId:n,record:q}}},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")},99942:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(73024),j=c(76760),k=c(67461);function l(a,b){try{let c="string"==typeof a.query.id?a.query.id:"";if(!c)return b.status(400).json({error:"id required"});let d="string"==typeof a.query.projectRoot?a.query.projectRoot:void 0,e=(0,k.yE)(c,d);if(!e?.path)return b.status(404).json({error:"asset not found"});let f=(0,k.SE)(e,d);if(!f||!i.existsSync(f))return b.status(404).json({error:"file not found"});let g=i.readFileSync(f);if(!(g.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))||g.subarray(0,3).equals(Buffer.from([255,216,255]))||"RIFF"===g.subarray(0,4).toString("ascii")))return b.status(422).json({error:"asset file is not a valid image"});return b.setHeader("Content-Type",function(a){let b=j.extname(a).toLowerCase();return".jpg"===b||".jpeg"===b?"image/jpeg":".webp"===b?"image/webp":"image/png"}(f)),b.setHeader("Cache-Control","no-store"),b.status(200).send(g)}catch(a){console.error("[api] assets/generated/preview",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/assets/generated/preview",pathname:"/api/assets/generated/preview",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/assets/generated/preview"});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,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/assets/generated/preview",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")!==n.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(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,6697],()=>b(b.s=99942));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=1883,a.ids=[1883],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")},33873:a=>{a.exports=require("path")},48161:a=>{a.exports=require("node:os")},67461:(a,b,c)=>{c.d(b,{BH:()=>E,Gl:()=>p,JU:()=>H,Jz:()=>L,M$:()=>y,QG:()=>D,SE:()=>t,YL:()=>O,a6:()=>B,r:()=>C,uc:()=>K,v7:()=>z,yE:()=>G});var d=c(77598),e=c(73024),f=c(48161),g=c(76760),h=c(56697),i=c(19898),j=c(23328);function k(a,b){return a?.map(a=>"running"===a.status?{...a,status:"failed",message:b}:a)}let l=new Map,m=Math.max(6e5,Number(process.env.DOCUMENT_TASK_TIMEOUT_MS??72e5)),n=Math.max(6e4,Number(process.env.DOCUMENT_TASK_STALE_MS??3e5)),o=Math.max(3e5,Number(process.env.DOCUMENT_TASK_NO_PROGRESS_MS??9e5));function p(a=(0,j.aY)()){let b=g.join(f.homedir(),".customize-agent","projects",function(a=(0,j.aY)()){return(0,i.computeProjectId)(g.resolve(a))}(a),"generatedDocuments");return e.mkdirSync(g.join(b,"drafts"),{recursive:!0}),e.mkdirSync(g.join(b,"assets"),{recursive:!0}),b}function q(a=(0,j.aY)()){return g.join(p(a),"index.json")}function r(a=(0,j.aY)()){return g.join(p(a),"assets.json")}function s(a,b=(0,j.aY)()){return g.join(p(b),"drafts",`${a}.json`)}function t(a,b=(0,j.aY)()){return a.path?g.isAbsolute(a.path)?a.path:a.path.startsWith("generatedDocuments/assets/")?g.join(p(b),a.path.replace(/^generatedDocuments\/assets\//u,"assets/")):g.join(b,"knowledgeBase",a.path):null}function u(a,b){try{return JSON.parse(e.readFileSync(a,"utf8"))}catch{return b}}function v(a,b){e.mkdirSync(g.dirname(a),{recursive:!0}),e.writeFileSync(a,JSON.stringify(b,null,2))}function w(a){for(let b of l.values())if(b.documentId===a)return b;return null}function x(a,b=(0,j.aY)()){if("generating"!==a.status||w(a.id)||Date.now()-a.updatedAt<n)return a;let c=Date.now();return A({...a,status:"failed",error:"生成任务已失联,请点击继续生成或重新生成",executionStages:k(a.executionStages,"生成任务已失联"),completedAt:c},b)}function y(a=(0,j.aY)()){return u(q(a),[]).map(b=>x(b,a)).sort((a,b)=>b.updatedAt-a.updatedAt)}function z(a,b=(0,j.aY)()){let c=u(s(a,b),null);return c?x(c,b):null}function A(a,b=(0,j.aY)()){let c=Date.now(),d={...a,updatedAt:c};v(s(d.id,b),d);let e=u(q(b),[]).filter(a=>a.id!==d.id);return e.unshift(d),v(q(b),e.map(a=>({...a,draft:void 0,executionStages:a.executionStages,partialChapters:a.partialChapters,reviewMetadata:a.reviewMetadata}))),d}function B(a,b,c=(0,j.aY)()){let d=z(a,c);return d?A({...d,...b,id:a},c):null}function C(a,b=(0,j.aY)()){let c=z(a,b);if(!c)return null;if("generating"!==c.status)return c;for(let[b,c]of l)c.documentId===a&&(c.status="aborted",c.controller.abort(),M(c),l.delete(b));return A({...c,status:"aborted",error:"用户中止",executionStages:k(c.executionStages,"用户中止"),completedAt:Date.now()},b)}function D(a,b=(0,j.aY)()){try{e.rmSync(s(a,b),{force:!0})}catch{console.warn("[generated-documents] 删除文档记录失败或文件不存在",a)}v(q(b),y(b).filter(b=>b.id!==a))}function E(a=(0,j.aY)()){return u(r(a),[]).sort((a,b)=>b.updatedAt-a.updatedAt)}function F(a,b,c=(0,j.aY)()){let d=Date.now(),e=[...E(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 v(r(c),e),e}function G(a,b=(0,j.aY)()){return E(b).find(b=>b.id===a)||null}function H(a,b=(0,j.aY)()){let c=G(a,b);if(!c)return!1;let d=t(c,b);if(d&&d.startsWith(p(b)))try{e.rmSync(d,{force:!0})}catch{console.warn("[generated-documents] 删除生成资源文件失败或文件不存在",d)}return v(r(b),E(b).filter(b=>b.id!==a)),!0}function I(a){return a.replace(/[\\/:*?"<>|]/gu,"_").slice(0,120)||"generated-document"}async function J(a,b=(0,j.aY)()){let c=g.join("生成文档",`${I(a.title)}-${a.id}.md`).split(g.sep).join("/"),d=g.join(b,"knowledgeBase",c);e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f=await (0,j.Qh)().getProject(b);return await f.reindexFile(c),c}async function K(a,b=(0,j.aY)()){let c=G(a,b);if(!c?.path)return null;let d=t(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 i=await (0,j.Qh)().getProject(b);await i.reindexFile(f);let k=E(b).map(b=>b.id===a?{...b,path:f,source:"generated",indexed:!0,updatedAt:Date.now()}:b);return v(r(b),k),k.find(b=>b.id===a)||null}function L(a,b,c=(0,j.aY)()){let d=G(a,c);if(!d)return null;let f=t(d,c);return f&&e.existsSync(f)?"directory"===b?g.dirname(f):f:null}function M(a){a.timeoutTimer&&clearTimeout(a.timeoutTimer),a.progressTimer&&clearInterval(a.progressTimer)}function N(a,b){let c=z(a.documentId,b);return c&&"generating"===c.status?{taskId:a.id,documentId:a.documentId,record:c}:null}function O(a,b=(0,j.aY)()){let c=g.resolve(b),f=(0,i.computeProjectId)(c),n=Date.now(),q=a.resumeDocumentId?z(a.resumeDocumentId,c):null;if(q){let a=w(q.id),b=a?N(a,c):null;if(b)return b}if(!q)for(let b of l.values()){let d=N(b,c);if(d&&d.record.templateId===a.templateId&&d.record.projectRoot===c)return d}let r=q?.id||`doc-${n}-${d.randomBytes(4).toString("hex")}`,s=`task-${n}-${d.randomBytes(4).toString("hex")}`,t=q?{...q,taskId:s,status:"generating",error:void 0,completedAt:void 0,executionStages:[...q.executionStages||[],{type:"validation",roleId:"resume-generation",status:"running",message:"已从上次结果继续生成,系统将自动复用可用章节缓存和进度数据"}],updatedAt:n}:{id:r,taskId:s,templateId:a.templateId,title:"生成中",requirement:a.requirement||"",projectRoot:c,projectId:f,knowledgeBasePath:g.join(c,"knowledgeBase"),markdown:"",status:"generating",assets:[],createdAt:n,updatedAt:n};A(t,c);let u=new AbortController,v={},x=a=>{u.abort(),v.current&&M(v.current),function(a,b,c){let d=z(a,b);d&&"generating"===d.status&&A({...d,status:"failed",error:c,executionStages:k(d.executionStages,c),completedAt:Date.now()},b)}(r,c,a),l.delete(s)},y=(0,h.OX)({...a,projectRoot:c,resumeChapters:q?.draft?.chapters||[],signal:u.signal,onProgress:a=>{try{v.current&&(v.current.lastProgressAt=Date.now());let b=z(r,c);b&&"generating"===b.status&&(A({...b,executionStages:a},c),console.log(`[gen] progress saved: ${a.length} stages, doc=${r}`))}catch(a){console.error("[gen] progress save error:",a)}}}).then(async a=>{let b=z(r,c);if(!b||"generating"!==b.status)return b??t;let d=a.validationIssues.filter(a=>"error"===a.level||"warning"===a.level).map(a=>a.suggestion?`${a.message}:${a.suggestion}`:a.message);a.exportGate.passed||0!==d.length||d.push("导出门禁未通过:存在未完成的检查项");let f=A(function(a){let b=a=>({...a,content:a.content.slice(0,500)}),c=a.draft?{...a.draft,chapters:a.draft.chapters.map(a=>({...a,evidence:a.evidence.map(b)}))}:a.draft;return{...a,draft:c}}({...b,templateName:a.templateName,title:a.title,markdown:a.markdown,status:d.length>0?"warning":"completed",draft:a,executionStages:a.executionStages,partialChapters:a.partialChapters,reviewMetadata:a.reviewMetadata,assets:a.assets||[],completedAt:Date.now(),warningIssues:d}),c);!function(a,b=(0,j.aY)()){Date.now();let c=`generatedDocuments/assets/${I(a.title)}-${a.id}.md`,d=g.join(p(b),c.replace(/^generatedDocuments\//u,""));e.mkdirSync(g.dirname(d),{recursive:!0}),e.writeFileSync(d,a.editedMarkdown||a.markdown,"utf8");let f={id:`document-${a.id}`,type:"file",role:"generated",path:c,status:"generated",message:"模板运行生成的 Markdown 文档,默认仅登记到生成资源,需手动加入知识库"};F([f],a.id,b).find(a=>a.id===f.id)}(f,c);let h=F(a.assets||[],r,c);if("1"===process.env.DOCUMENT_AUTO_INDEX_GENERATED)for(let a of(await J(f,c).catch(a=>console.warn("[generated-documents] 自动入库生成文档失败",a)),h.filter(a=>a.usedByDocumentIds.includes(r)&&!a.indexed)))await K(a.id,c).catch(b=>console.warn("[generated-documents] 自动入库生成资源失败",a.id,b));return f}).catch(a=>{let b=z(r,c);if(!b||"generating"!==b.status)return b??t;let d=a instanceof Error?a.message:String(a),e=a instanceof Error&&/用户中止|aborted|abort/i.test(a.message)?"aborted":"failed";return A({...b,status:e,error:d,executionStages:k(b.executionStages,d),completedAt:Date.now()},c)}).finally(()=>{v.current&&M(v.current),l.delete(s)}),B={id:s,documentId:r,status:"generating",controller:u,promise:y,startedAt:n,lastProgressAt:n};return v.current=B,B.timeoutTimer=setTimeout(()=>x("生成任务超时,请点击继续生成或重新生成"),m),B.progressTimer=setInterval(()=>{Date.now()-B.lastProgressAt>o&&x("生成任务长时间无进度,请点击继续生成或重新生成")},Math.min(6e4,o)),l.set(s,B),{taskId:s,documentId:r,record:t}}},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")},99942:(a,b,c)=>{c.r(b),c.d(b,{config:()=>p,default:()=>o,handler:()=>r});var d={};c.r(d),c.d(d,{default:()=>l});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(73024),j=c(76760),k=c(67461);function l(a,b){try{let c="string"==typeof a.query.id?a.query.id:"";if(!c)return b.status(400).json({error:"id required"});let d="string"==typeof a.query.projectRoot?a.query.projectRoot:void 0,e=(0,k.yE)(c,d);if(!e?.path)return b.status(404).json({error:"asset not found"});let f=(0,k.SE)(e,d);if(!f||!i.existsSync(f))return b.status(404).json({error:"file not found"});let g=i.readFileSync(f);if(!(g.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10]))||g.subarray(0,3).equals(Buffer.from([255,216,255]))||"RIFF"===g.subarray(0,4).toString("ascii")))return b.status(422).json({error:"asset file is not a valid image"});return b.setHeader("Content-Type",function(a){let b=j.extname(a).toLowerCase();return".jpg"===b||".jpeg"===b?"image/jpeg":".webp"===b?"image/webp":"image/png"}(f)),b.setHeader("Cache-Control","no-store"),b.status(200).send(g)}catch(a){console.error("[api] assets/generated/preview",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var m=c(68970),n=c(50296);let o=(0,h.M)(d,"default"),p=(0,h.M)(d,"config"),q=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/assets/generated/preview",pathname:"/api/assets/generated/preview",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/assets/generated/preview"});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,m.getTracer)(),e=d.getActiveScopeSpan(),j=q.instrumentationOnRequestError.bind(q),k=async e=>q.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:q.isDev,page:"/api/assets/generated/preview",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")!==n.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(n.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:m.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(q.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,6697],()=>b(b.s=99942));module.exports=c})();
|