@customize-agent/server 3.0.12 → 3.0.13
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 +7 -7
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/3445.js +33 -11
- 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/api/documents/chapter/regenerate.js +1 -1
- package/.next/server/pages/api/documents/generate.js +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/templates.js +1 -1
- package/.next/server/pages/api/kb/categories.js +28 -6
- package/.next/server/pages/api/kb/duplicates.js +28 -6
- package/.next/server/pages/api/kb/files/detail.js +28 -6
- package/.next/server/pages/api/kb/files/open.js +28 -6
- package/.next/server/pages/api/kb/files/preview-pdf-page.js +28 -6
- package/.next/server/pages/api/kb/files/reindex.js +28 -6
- package/.next/server/pages/api/kb/files.js +28 -6
- package/.next/server/pages/api/kb/ignore.js +28 -6
- package/.next/server/pages/api/kb/operations.js +28 -6
- package/.next/server/pages/api/kb/reindex.js +28 -6
- package/.next/server/pages/api/kb/search.js +28 -6
- package/.next/server/pages/api/kb/stats.js +28 -6
- package/.next/server/pages/api/kb/tags.js +28 -6
- package/.next/server/pages/api/kb/upload.js +28 -6
- package/.next/server/pages/api/prompt.js +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/document-specs.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-manifest.json +24 -24
- package/.next/static/chunks/pages/{document-roles-653f01136b58197b.js → document-roles-0f24b162cfd49513.js} +1 -1
- package/.next/static/chunks/pages/document-specs-991368925b27ceda.js +1 -0
- package/.next/static/chunks/pages/{guide-b495954d18d56b33.js → guide-414134ce66270eb0.js} +1 -1
- package/.next/static/chunks/pages/knowledge/files-1662e995b81e79aa.js +1 -0
- package/.next/static/chunks/pages/prompt-aa556d7a438117f1.js +1 -0
- package/.next/static/{ZG2x_4BgDtQoIcW28iwgH → yL_ilPc9XJWtNmN2W4Njc}/_buildManifest.js +1 -1
- package/package.json +2 -2
- package/.next/static/chunks/400-ba996d76e74a7368.js +0 -78
- package/.next/static/chunks/740-cd38299e151d3ffc.js +0 -16
- package/.next/static/chunks/804-b11aef99b57308a3.js +0 -11
- package/.next/static/chunks/958-0793922b6b146891.js +0 -1
- package/.next/static/chunks/pages/_error-49c333927e615faa.js +0 -1
- package/.next/static/chunks/pages/document-specs-120681be3e183b9e.js +0 -1
- package/.next/static/chunks/pages/documents-a72286e23487eaf7.js +0 -1
- package/.next/static/chunks/pages/guide-f6ad48fc4e564c1c.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-a3a4bbc49c980b46.js +0 -1
- package/.next/static/chunks/pages/knowledge/manage-5d501503e54b4424.js +0 -1
- package/.next/static/chunks/pages/overview-9fbf5907184af472.js +0 -1
- package/.next/static/chunks/pages/prompt-d9996cf322de0125.js +0 -1
- package/.next/static/he1VpXuNk12nGqt9mP7Jd/_buildManifest.js +0 -1
- package/.next/static/he1VpXuNk12nGqt9mP7Jd/_ssgManifest.js +0 -1
- /package/.next/static/{ZG2x_4BgDtQoIcW28iwgH → yL_ilPc9XJWtNmN2W4Njc}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=9027,a.ids=[9027],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")},56878:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(73445);function j(a,b){try{if("GET"===a.method)return b.status(200).json({templates:(0,i.jG)()});if("POST"===a.method||"PUT"===a.method){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"template id and name required"});return b.status(200).json({template:(0,i.Bh)(c),templates:(0,i.jG)()})}if("DELETE"===a.method){let c=String(a.query.templateId||"");if(!c)return b.status(400).json({error:"templateId required"});return(0,i.h0)(c),b.status(200).json({success:!0,templates:(0,i.jG)()})}if("PATCH"===a.method){let{templateId:c}=a.body;if(!c)return b.status(400).json({error:"templateId required"});return b.status(200).json({template:(0,i.bV)(c),templates:(0,i.jG)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/templates",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/templates",pathname:"/api/documents/templates",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/documents/templates"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/documents/templates",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},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")},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,3445],()=>b(b.s=56878));module.exports=c})();
|
|
1
|
+
"use strict";(()=>{var a={};a.id=9027,a.ids=[9027],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")},56878:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(73445);function j(a,b){try{if("GET"===a.method)return b.status(200).json({templates:(0,i.jG)()});if("POST"===a.method||"PUT"===a.method){let c=a.body;if(!c?.id||!c.name)return b.status(400).json({error:"template id and name required"});return b.status(200).json({template:(0,i.Bh)(c),templates:(0,i.jG)()})}if("DELETE"===a.method){let c=String(a.query.templateId||"");if(!c)return b.status(400).json({error:"templateId required"});return(0,i.h0)(c),b.status(200).json({success:!0,templates:(0,i.jG)()})}if("PATCH"===a.method){let{templateId:c}=a.body;if(!c)return b.status(400).json({error:"templateId required"});return b.status(200).json({template:(0,i.bV)(c),templates:(0,i.jG)()})}return b.status(405).json({error:"Method not allowed"})}catch(a){console.error("[api] documents/templates",a),b.status(500).json({error:a instanceof Error?a.message:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/documents/templates",pathname:"/api/documents/templates",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/documents/templates"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/documents/templates",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},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")},79646:a=>{a.exports=require("child_process")},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,3445],()=>b(b.s=56878));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=5167,a.ids=[5167],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=5167,a.ids=[5167],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},86666:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(23328);async function j(a,b){if("GET"!==a.method)return b.status(405).json({error:"Method not allowed"});try{let c=(0,i.Qh)(),d=a.query.projectRoot||(0,i.aY)();if(!d)return b.status(200).json([]);let e=(await c.getProject(d)).listFiles(),f={};for(let a of e){let b=a.category||"other";f[b]||(f[b]={fileCount:0,totalSize:0}),f[b].fileCount++,f[b].totalSize+=a.fileSize||0}let g=Object.entries(f).map(([a,b])=>({category:a,...b}));b.status(200).json(g)}catch(a){console.error("[api] kb/categories",a),b.status(500).json({error:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/categories",pathname:"/api/kb/categories",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/kb/categories"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/kb/categories",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=86666));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=8837,a.ids=[8837],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=8837,a.ids=[8837],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},49914:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(23328);async function j(a,b){if("GET"!==a.method)return b.status(405).json({error:"Method not allowed"});try{let c=a.query.projectRoot||(0,i.aY)();if(!c)return b.status(200).json([]);let d=(await (0,i.Qh)().getProject(c)).listFiles(),e=new Map;for(let a of d){let b=e.get(a.contentHash);b?b.push(a):e.set(a.contentHash,[a])}b.status(200).json([...e.entries()].filter(([,a])=>a.length>1).map(([a,b])=>({contentHash:a,files:b.map(a=>({projectId:"",projectRoot:c,relativePath:a.relativePath}))})))}catch(a){console.error("[api] kb/duplicates",a),b.status(500).json({error:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/duplicates",pathname:"/api/kb/duplicates",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/kb/duplicates"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/kb/duplicates",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=49914));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=8684,a.ids=[8684],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=8684,a.ids=[8684],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},87550:a=>{a.exports=require("better-sqlite3")},96313:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(23328);async function j(a,b){if("GET"!==a.method)return b.status(405).json({error:"Method not allowed"});try{let c=a.query.projectRoot||(0,i.aY)(),d=a.query.relativePath;if(!c||!d)return b.status(400).json({error:"projectRoot and relativePath are required"});let e=(await (0,i.Qh)().getProject(c)).getFileDetail(d);if(!e)return b.status(404).json({error:"file not found"});b.status(200).json(e)}catch(a){console.error("[api] kb/files/detail",a),b.status(500).json({error:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/files/detail",pathname:"/api/kb/files/detail",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/kb/files/detail"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/kb/files/detail",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.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],()=>b(b.s=96313));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=7963,a.ids=[7963],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=7963,a.ids=[7963],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},58162:(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(79646),j=c(21820),k=c(23328);async function l(a,b){if("POST"!==a.method)return b.status(405).json({error:"method not allowed"});try{let c=a.body?.projectRoot||(0,k.aY)(),d=a.body?.relativePath,e=a.body?.target;if(!c||!d||!e)return b.status(400).json({error:"projectRoot, relativePath and target are required"});let f=(await (0,k.Qh)().getProject(c)).getFileDetail(d);if(!f)return b.status(404).json({error:"file not found"});let g="directory"===e?f.directory:f.absolutePath;if(!g)return b.status(404).json({error:"target path not found"});(function(a){let b=(0,j.platform)();return"darwin"===b?(0,i.spawn)("open",[a],{detached:!0,stdio:"ignore"}):"win32"===b?(0,i.spawn)("cmd",["/c","start","",a],{detached:!0,stdio:"ignore",windowsHide:!0}):(0,i.spawn)("xdg-open",[a],{detached:!0,stdio:"ignore"})})(g).unref(),b.status(200).json({success:!0})}catch(a){console.error("[api] kb/files/open",a),b.status(500).json({error:"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/kb/files/open",pathname:"/api/kb/files/open",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function r(a,b,c){let d=await q.prepare(a,b,{srcPage:"/api/kb/files/open"});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/kb/files/open",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())}}},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=58162));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=2864,a.ids=[2864],a.modules={17532:a=>{a.exports=import("pdfjs-dist/legacy/build/pdf.mjs")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=2864,a.ids=[2864],a.modules={17532:a=>{a.exports=import("pdfjs-dist/legacy/build/pdf.mjs")},19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},28183:a=>{a.exports=require("@napi-rs/canvas")},29021:a=>{a.exports=require("fs")},29283:(a,b,c)=>{c.r(b),c.d(b,{config:()=>o,default:()=>n,handler:()=>q});var d={};c.r(d),c.d(d,{config:()=>j,default:()=>k});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(23328);let j={api:{responseLimit:!1}};async function k(a,b){if("GET"!==a.method)return b.status(405).json({error:"Method not allowed"});try{let d=a.query.projectRoot||(0,i.aY)(),e=a.query.relativePath,f=Math.max(1,Number(a.query.page??1));if(!d||!e)return b.status(400).json({error:"projectRoot and relativePath are required"});let g=(await (0,i.Qh)().getProject(d)).getFileDetail(e);if(!g?.absolutePath||"pdf"!==g.file.format)return b.status(404).json({error:"pdf not found"});let[{createCanvas:h},j]=await Promise.all([Promise.resolve().then(c.t.bind(c,28183,23)),Promise.resolve().then(c.bind(c,17532))]),k=await Promise.resolve().then(c.t.bind(c,73024,23)),l=new Uint8Array(k.readFileSync(g.absolutePath)),m=await j.getDocument({data:l}).promise,n=await m.getPage(Math.min(f,m.numPages)),o=n.getViewport({scale:1.6}),p=h(Math.ceil(o.width),Math.ceil(o.height));await n.render({canvasContext:p.getContext("2d"),viewport:o}).promise,b.setHeader("Content-Type","image/png"),b.setHeader("Cache-Control","private, max-age=3600"),b.status(200).send(p.toBuffer("image/png"))}catch(a){console.error("[api] kb/files/preview-pdf-page",a),b.status(500).json({error:"Internal server error"})}}var l=c(68970),m=c(50296);let n=(0,h.M)(d,"default"),o=(0,h.M)(d,"config"),p=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/files/preview-pdf-page",pathname:"/api/kb/files/preview-pdf-page",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function q(a,b,c){let d=await p.prepare(a,b,{srcPage:"/api/kb/files/preview-pdf-page"});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,l.getTracer)(),e=d.getActiveScopeSpan(),j=p.instrumentationOnRequestError.bind(p),k=async e=>p.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:p.isDev,page:"/api/kb/files/preview-pdf-page",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")!==m.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(m.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:l.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(p.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},33873:a=>{a.exports=require("path")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=29283));module.exports=c})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";(()=>{var a={};a.id=5796,a.ids=[5796],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
1
|
+
"use strict";(()=>{var a={};a.id=5796,a.ids=[5796],a.modules={19898:a=>{a.exports=require("@customize-agent/knowledge")},21820:a=>{a.exports=require("os")},23328:(a,b,c)=>{c.d(b,{Qh:()=>m,aY:()=>o});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021),j=c(79646);let k=null;function l(){let a=g.join(h.homedir(),".customize-agent","demo-project"),b=g.join(a,"knowledgeBase");for(let[a,c]of(i.mkdirSync(b,{recursive:!0}),Object.entries({"文档资料/规则文件-攻略写作要求.md":`# 【内置】三角洲热门干员攻略写作要求
|
|
2
2
|
|
|
3
3
|
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
- 面向新手和进阶玩家,语言要直白。
|
|
7
7
|
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
8
|
- 不能把没有来源的数据写成确定结论。
|
|
9
|
-
- 表格中的推荐指数只能作为示例参考。`,"
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
10
|
|
|
11
11
|
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
12
|
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
@@ -17,18 +17,40 @@
|
|
|
17
17
|
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
18
|
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
19
|
|
|
20
|
-
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
21
|
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
22
|
红狼,突击,5,中高,突破和正面交火
|
|
23
23
|
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
-
蜂医,支援,5,低,治疗救援和续航`,"
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
25
|
|
|
26
26
|
示意说明:
|
|
27
27
|
- 侦察位优先观察主通道和侧翼。
|
|
28
28
|
- 突击位沿掩体推进,不要单独深入。
|
|
29
29
|
- 工程位在关键入口布置控场手段。
|
|
30
|
-
- 支援位保持在队伍中后段,优先保证救援路线。`,"
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
31
|
|
|
32
32
|
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
33
|
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
34
|
-
|
|
34
|
+
导出前检查:不能出现缺失资料占位语;必须包含至少一张推荐表;必须覆盖露娜、红狼、牧羊人、蜂医。`}))){let d=g.join(b,a);i.mkdirSync(g.dirname(d),{recursive:!0}),i.writeFileSync(d,c,"utf-8")}let c=g.join(b,"文档资料","PDF资料-三角洲干员攻略摘要.pdf"),d=g.join(b,"文档资料","Word资料-三角洲干员打法说明.docx"),e=g.join(b,"文档资料","Word资料-队伍搭配说明.doc");i.mkdirSync(g.dirname(c),{recursive:!0}),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`${b}
|
|
35
|
+
${c}`.replace(/[()]/gu,""),e=`%PDF-1.4
|
|
36
|
+
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
|
|
37
|
+
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
|
|
38
|
+
3 0 obj << /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Contents 4 0 R /Resources << /Font << /F1 5 0 R >> >> >> endobj
|
|
39
|
+
4 0 obj << /Length ${d.length+80} >> stream
|
|
40
|
+
BT /F1 18 Tf 50 780 Td (${d.slice(0,900)}) Tj ET
|
|
41
|
+
endstream endobj
|
|
42
|
+
5 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> endobj
|
|
43
|
+
xref
|
|
44
|
+
0 6
|
|
45
|
+
0000000000 65535 f
|
|
46
|
+
trailer << /Root 1 0 R /Size 6 >>
|
|
47
|
+
startxref
|
|
48
|
+
0
|
|
49
|
+
%%EOF`;i.writeFileSync(a,e,"binary")}(c,"【内置】三角洲热门干员攻略 PDF 摘要","露娜负责侦察信息,红狼负责突破,牧羊人负责控场,蜂医负责支援续航。推荐新手优先熟悉蜂医和露娜,再练红狼与牧羊人。"),function(a,b,c){if(i.existsSync(a)&&i.statSync(a).size>0)return;let d=`import zipfile, html, sys
|
|
50
|
+
file,title,body=sys.argv[1],sys.argv[2],sys.argv[3]
|
|
51
|
+
content=''.join(f'<w:p><w:r><w:t>{html.escape(line)}</w:t></w:r></w:p>' for line in (title+'\\n'+body).split('\\n'))
|
|
52
|
+
with zipfile.ZipFile(file,'w') as z:
|
|
53
|
+
z.writestr('[Content_Types].xml','<?xml version="1.0" encoding="UTF-8"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Default Extension="xml" ContentType="application/xml"/><Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/></Types>')
|
|
54
|
+
z.writestr('_rels/.rels','<?xml version="1.0" encoding="UTF-8"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/></Relationships>')
|
|
55
|
+
z.writestr('word/document.xml',f'<?xml version="1.0" encoding="UTF-8"?><w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:body>{content}</w:body></w:document>')`;try{(0,j.execFileSync)("python3",["-c",d,a,b,c],{stdio:"ignore"})}catch{i.writeFileSync(a,`${b}
|
|
56
|
+
${c}`,"utf-8")}}(d,"【内置】三角洲热门干员 Word 打法说明","露娜适合信息侦察;红狼适合进攻突破;牧羊人适合区域封锁;蜂医适合治疗救援。队伍建议至少包含侦察和支援。"),i.existsSync(e)||i.writeFileSync(e,"【内置】三角洲队伍搭配 Word 兼容资料\n侦察位看信息,突击位打开突破口,工程位控场,支援位保证续航。","utf-8");let f=g.join(b,"图片素材","干员图片");i.mkdirSync(f,{recursive:!0});let k=["# 干员图片资料","","图片来源参考:https://github.com/luoy-oss/deltaforce_id 和 https://playerhub.df.qq.com/playerhub/60004/object/p_{ID}.png",""];for(let[a,c]of Object.entries({"露娜.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000028.png","红狼.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000030.png","牧羊人.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000029.png","蜂医.png":"https://playerhub.df.qq.com/playerhub/60004/object/p_88000000027.png"})){let d=g.join(f,a);if(!i.existsSync(d)||!(i.statSync(d).size>0))try{(0,j.execFileSync)("curl",["-L","--max-time","12","-o",d,c],{stdio:"ignore"})}catch{i.writeFileSync(`${d}.url.txt`,c,"utf-8")}k.push(`- ${a.replace(".png","")}:${c};本地文件:${g.relative(b,d)}`)}return i.writeFileSync(g.join(b,"图片素材","图片文件-干员图片来源.md"),k.join("\n"),"utf-8"),a}function m(){return k||(k=new d.MultiProjectManager),k}function n(a){let b=g.resolve(a),c=g.resolve(g.join(h.homedir(),".customize-agent"));return b!==g.resolve(g.join(h.homedir(),".customize-agent","demo-project"))&&(!!(i.existsSync(g.join(b,"pnpm-workspace.yaml"))&&i.existsSync(g.join(b,"apps","server")))||b===c||b.includes(`${g.sep}.customize-agent${g.sep}`)||b.endsWith(`${g.sep}apps${g.sep}server`)||b.endsWith(`${g.sep}apps${g.sep}cli`))}function o(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!n(b))return g.resolve(b);if(!a)return l();let c=function(){let a=g.join(h.homedir(),".customize-agent","projects","registry.db");if(!i.existsSync(a))return[];let b=new(f())(a,{readonly:!0});try{return b.prepare("SELECT project_root FROM project_registry ORDER BY last_opened_at DESC").all().map(a=>g.resolve(a.project_root)).filter(a=>!n(a))}finally{b.close()}}();return c.length>0?c[0]:n(process.cwd())?l():process.cwd()}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},79646:a=>{a.exports=require("child_process")},87176:(a,b,c)=>{c.r(b),c.d(b,{config:()=>n,default:()=>m,handler:()=>p});var d={};c.r(d),c.d(d,{default:()=>j});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(23328);async function j(a,b){if("POST"!==a.method)return b.status(405).json({error:"method not allowed"});try{let c=a.body?.projectRoot||(0,i.aY)(),d=a.body?.relativePath;if(!c||!d)return b.status(400).json({error:"projectRoot and relativePath are required"});let e=await (0,i.Qh)().getProject(c),f=await e.reindexFile(d),g=e.getFileDetail(d);b.status(200).json({diff:f,detail:g})}catch(a){console.error("[api] kb/files/reindex",a),b.status(500).json({error:"Internal server error"})}}var k=c(68970),l=c(50296);let m=(0,h.M)(d,"default"),n=(0,h.M)(d,"config"),o=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/kb/files/reindex",pathname:"/api/kb/files/reindex",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function p(a,b,c){let d=await o.prepare(a,b,{srcPage:"/api/kb/files/reindex"});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,k.getTracer)(),e=d.getActiveScopeSpan(),j=o.instrumentationOnRequestError.bind(o),m=async e=>o.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:o.isDev,page:"/api/kb/files/reindex",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")!==l.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 m(e):await d.withPropagatedContext(a.headers,()=>d.trace(l.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:k.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},m))}catch(a){if(o.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},87550:a=>{a.exports=require("better-sqlite3")}};var b=require("../../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705],()=>b(b.s=87176));module.exports=c})();
|