@customize-agent/server 3.0.11 → 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 +13 -12
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/3445.js +61 -6
- package/.next/server/chunks/8204.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/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 +56 -1
- package/.next/server/pages/api/kb/duplicates.js +56 -1
- package/.next/server/pages/api/kb/files/detail.js +56 -1
- package/.next/server/pages/api/kb/files/open.js +56 -1
- package/.next/server/pages/api/kb/files/preview-pdf-page.js +56 -1
- package/.next/server/pages/api/kb/files/reindex.js +56 -1
- package/.next/server/pages/api/kb/files.js +56 -1
- package/.next/server/pages/api/kb/ignore.js +56 -1
- package/.next/server/pages/api/kb/operations.js +56 -1
- package/.next/server/pages/api/kb/reindex.js +56 -1
- package/.next/server/pages/api/kb/search.js +56 -1
- package/.next/server/pages/api/kb/stats.js +56 -1
- package/.next/server/pages/api/kb/tags.js +56 -1
- package/.next/server/pages/api/kb/upload.js +56 -1
- 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 +23 -23
- package/.next/static/chunks/746-120983153bceeea6.js +1 -0
- package/.next/static/chunks/pages/{_app-49c11d5b0712c7a5.js → _app-725afbb7d3371a13.js} +8 -8
- package/.next/static/chunks/pages/context/long-term-dba1d735f2b5e12b.js +1 -0
- package/.next/static/chunks/pages/context/short-term-7cc72881b42b74fb.js +1 -0
- package/.next/static/chunks/pages/document-roles-0f24b162cfd49513.js +1 -0
- package/.next/static/chunks/pages/document-specs-991368925b27ceda.js +1 -0
- package/.next/static/chunks/pages/documents-93e638518deec9b5.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/models-0fb086e70387dde1.js +1 -0
- package/.next/static/chunks/pages/prompt-aa556d7a438117f1.js +1 -0
- package/.next/static/yL_ilPc9XJWtNmN2W4Njc/_buildManifest.js +1 -0
- package/package.json +2 -2
- package/.next/static/chunks/pages/context/long-term-710aaeb12e378258.js +0 -1
- package/.next/static/chunks/pages/context/short-term-e68f01478e7ed238.js +0 -1
- package/.next/static/chunks/pages/document-roles-caee7af42da4f792.js +0 -1
- package/.next/static/chunks/pages/document-specs-7085069b6dcdaee6.js +0 -1
- package/.next/static/chunks/pages/documents-b78988e17525927f.js +0 -1
- package/.next/static/chunks/pages/knowledge/files-a3a4bbc49c980b46.js +0 -1
- package/.next/static/chunks/pages/models-6131bc7596604158.js +0 -1
- package/.next/static/chunks/pages/prompt-654d82321a383233.js +0 -1
- package/.next/static/yEauW-YU8G-h4UdYFV8_d/_buildManifest.js +0 -1
- /package/.next/static/{yEauW-YU8G-h4UdYFV8_d → yL_ilPc9XJWtNmN2W4Njc}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
yL_ilPc9XJWtNmN2W4Njc
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/yL_ilPc9XJWtNmN2W4Njc/_buildManifest.js",
|
|
9
|
+
"static/yL_ilPc9XJWtNmN2W4Njc/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"static/chunks/framework-b5223c1542334872.js",
|
|
23
23
|
"static/chunks/main-1a03005b3754c708.js",
|
|
24
24
|
"static/css/5237c5e3358f3282.css",
|
|
25
|
-
"static/chunks/pages/_app-
|
|
25
|
+
"static/chunks/pages/_app-725afbb7d3371a13.js"
|
|
26
26
|
],
|
|
27
27
|
"/_error": [
|
|
28
28
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"static/chunks/446-0591221372df7d49.js",
|
|
48
48
|
"static/chunks/400-f06f00619f22421e.js",
|
|
49
49
|
"static/chunks/257-ba16dfe16a27f417.js",
|
|
50
|
-
"static/chunks/pages/context/long-term-
|
|
50
|
+
"static/chunks/pages/context/long-term-dba1d735f2b5e12b.js"
|
|
51
51
|
],
|
|
52
52
|
"/context/short-term": [
|
|
53
53
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"static/chunks/446-0591221372df7d49.js",
|
|
67
67
|
"static/chunks/400-f06f00619f22421e.js",
|
|
68
68
|
"static/chunks/257-ba16dfe16a27f417.js",
|
|
69
|
-
"static/chunks/pages/context/short-term-
|
|
69
|
+
"static/chunks/pages/context/short-term-7cc72881b42b74fb.js"
|
|
70
70
|
],
|
|
71
71
|
"/document-roles": [
|
|
72
72
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"static/chunks/492-62671486700ed3f9.js",
|
|
84
84
|
"static/chunks/455-e31becaaf948f868.js",
|
|
85
85
|
"static/chunks/846-fed995f7c83fc6c3.js",
|
|
86
|
-
"static/chunks/pages/document-roles-
|
|
86
|
+
"static/chunks/pages/document-roles-0f24b162cfd49513.js"
|
|
87
87
|
],
|
|
88
88
|
"/document-specs": [
|
|
89
89
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -101,7 +101,8 @@
|
|
|
101
101
|
"static/chunks/455-e31becaaf948f868.js",
|
|
102
102
|
"static/chunks/992-ea93dfa182a02a8e.js",
|
|
103
103
|
"static/chunks/846-fed995f7c83fc6c3.js",
|
|
104
|
-
"static/chunks/
|
|
104
|
+
"static/chunks/746-120983153bceeea6.js",
|
|
105
|
+
"static/chunks/pages/document-specs-991368925b27ceda.js"
|
|
105
106
|
],
|
|
106
107
|
"/documents": [
|
|
107
108
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -120,7 +121,7 @@
|
|
|
120
121
|
"static/chunks/292-c2888a94068fae74.js",
|
|
121
122
|
"static/chunks/846-fed995f7c83fc6c3.js",
|
|
122
123
|
"static/chunks/730-727fe4b055c78dc2.js",
|
|
123
|
-
"static/chunks/pages/documents-
|
|
124
|
+
"static/chunks/pages/documents-93e638518deec9b5.js"
|
|
124
125
|
],
|
|
125
126
|
"/guide": [
|
|
126
127
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -132,7 +133,7 @@
|
|
|
132
133
|
"static/chunks/292-c2888a94068fae74.js",
|
|
133
134
|
"static/chunks/730-727fe4b055c78dc2.js",
|
|
134
135
|
"static/chunks/804-e654a1589d9adc65.js",
|
|
135
|
-
"static/chunks/pages/guide-
|
|
136
|
+
"static/chunks/pages/guide-414134ce66270eb0.js"
|
|
136
137
|
],
|
|
137
138
|
"/knowledge": [
|
|
138
139
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -176,7 +177,7 @@
|
|
|
176
177
|
"static/chunks/400-f06f00619f22421e.js",
|
|
177
178
|
"static/chunks/15-289cb38b53bafa4a.js",
|
|
178
179
|
"static/css/d284a7454d6f6b06.css",
|
|
179
|
-
"static/chunks/pages/knowledge/files-
|
|
180
|
+
"static/chunks/pages/knowledge/files-1662e995b81e79aa.js"
|
|
180
181
|
],
|
|
181
182
|
"/knowledge/manage": [
|
|
182
183
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -225,7 +226,7 @@
|
|
|
225
226
|
"static/chunks/455-e31becaaf948f868.js",
|
|
226
227
|
"static/chunks/992-ea93dfa182a02a8e.js",
|
|
227
228
|
"static/css/0e153583d22cc52e.css",
|
|
228
|
-
"static/chunks/pages/models-
|
|
229
|
+
"static/chunks/pages/models-0fb086e70387dde1.js"
|
|
229
230
|
],
|
|
230
231
|
"/overview": [
|
|
231
232
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -250,7 +251,7 @@
|
|
|
250
251
|
"static/chunks/668-662b7bc81e4ad48f.js",
|
|
251
252
|
"static/chunks/492-62671486700ed3f9.js",
|
|
252
253
|
"static/chunks/446-0591221372df7d49.js",
|
|
253
|
-
"static/chunks/pages/prompt-
|
|
254
|
+
"static/chunks/pages/prompt-aa556d7a438117f1.js"
|
|
254
255
|
],
|
|
255
256
|
"/settings": [
|
|
256
257
|
"static/chunks/webpack-77d10b4726f13aa5.js",
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "b0bdf60f8334bf315d82ff93c52d5bbe",
|
|
7
|
+
"previewModeSigningKey": "5ebfbfb1c06af635fd3203d07c336cd31d8acc15589c676b15b03768546efb7b",
|
|
8
|
+
"previewModeEncryptionKey": "ee6ef192db8ca3b59fab216551c0ce2c0e9f78dc3e04b1b872b10d091e95aef0"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -1,9 +1,64 @@
|
|
|
1
|
-
"use strict";exports.id=3445,exports.ids=[3445],exports.modules={2323:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},23328:(a,b,c)=>{c.d(b,{Qh:()=>
|
|
2
|
-
|
|
1
|
+
"use strict";exports.id=3445,exports.ids=[3445],exports.modules={2323:(a,b,c)=>{c.d(b,{I:()=>f});var d=c(96770);let e=null;function f(){return e||(e=new d.ConfigStore),e}},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
|
+
|
|
3
|
+
公开参考入口:https://df.qq.com/ 和 https://deltaforce.garena.com/
|
|
4
|
+
|
|
5
|
+
写作要求:
|
|
6
|
+
- 面向新手和进阶玩家,语言要直白。
|
|
7
|
+
- 必须解释干员定位、技能价值、适用场景和常见误区。
|
|
8
|
+
- 不能把没有来源的数据写成确定结论。
|
|
9
|
+
- 表格中的推荐指数只能作为示例参考。`,"文档资料/项目事实-热门干员资料.md":`# 【内置】三角洲热门干员资料
|
|
10
|
+
|
|
11
|
+
攻略目标:帮助用户快速理解热门干员怎么选、怎么搭配、怎么上手。
|
|
12
|
+
适用人群:刚开始游玩三角洲行动的新手,以及希望快速建立队伍分工的进阶玩家。
|
|
13
|
+
|
|
14
|
+
## 热门干员
|
|
15
|
+
- 露娜:侦察定位,适合信息获取、标记敌人、帮助队伍判断推进路线。
|
|
16
|
+
- 红狼:突击定位,适合正面突破、拉枪线、打开交战空间。
|
|
17
|
+
- 牧羊人:工程定位,适合控场、防守、限制敌方推进。
|
|
18
|
+
- 蜂医:支援定位,适合治疗、救援、提高队伍持续作战能力。
|
|
19
|
+
|
|
20
|
+
实战技巧:新手队伍建议至少包含一名侦察和一名支援;进攻队伍可以搭配突击位;防守或卡点时工程位价值更高。`,"表格数据/表格数据-热门干员推荐.csv":`干员名称,定位,推荐指数,上手难度,推荐场景
|
|
21
|
+
露娜,侦察,5,中,信息侦察和路线判断
|
|
22
|
+
红狼,突击,5,中高,突破和正面交火
|
|
23
|
+
牧羊人,工程,4,中,防守控场和区域封锁
|
|
24
|
+
蜂医,支援,5,低,治疗救援和续航`,"图纸文件/图纸文件-战术路线示意.md":`# 【内置】战术路线示意
|
|
25
|
+
|
|
26
|
+
示意说明:
|
|
27
|
+
- 侦察位优先观察主通道和侧翼。
|
|
28
|
+
- 突击位沿掩体推进,不要单独深入。
|
|
29
|
+
- 工程位在关键入口布置控场手段。
|
|
30
|
+
- 支援位保持在队伍中后段,优先保证救援路线。`,"文档资料/规范文件-攻略结构规范.md":`# 【内置】攻略结构规范
|
|
31
|
+
|
|
32
|
+
必须包含:攻略目标、热门干员定位、队伍搭配、推荐优先级、实战注意事项。
|
|
33
|
+
推荐写法:先讲结论,再讲原因,最后给操作建议。
|
|
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()}},57367:(a,b,c)=>{c.d(b,{Co:()=>m,EK:()=>o,ER:()=>p,py:()=>n});var d=c(73024),e=c(48161),f=c(76760);let g={id:"delta-force-demo-spec",name:"三角洲热门干员攻略规范包",description:"内置示例规范包:要求攻略必须包含干员名称、定位、推荐指数、热门干员章节和表格数据。",factFields:[{id:"operator-name",name:"干员名称",type:"list",required:!0,sourceRoleIds:["delta-fact-files"],extractionHint:"抽取露娜、红狼、牧羊人、蜂医等干员名称。"},{id:"operator-role",name:"定位",type:"text",required:!0,sourceRoleIds:["delta-fact-files"],extractionHint:"抽取干员定位,例如侦察、突击、工程、支援。"},{id:"recommend-score",name:"推荐指数",type:"table",required:!0,sourceRoleIds:["delta-table-files"],extractionHint:"从表格中抽取推荐指数和上手难度。"}],chapterRules:[{id:"overview",title:"第一章 攻略目标和适用人群",required:!0,order:0,minWords:80,requiredFactIds:["operator-name"]},{id:"operators",title:"第二章 热门干员定位速览",required:!0,order:1,minWords:120,requiredFactIds:["operator-name","operator-role"]},{id:"tables",title:"第四章 数据表和推荐优先级",required:!0,order:3,minWords:80,requiredFactIds:["recommend-score"]}],gateRules:[{id:"gate-operator-fact",name:"必须抽取干员名称",type:"required_fact",level:"warning",target:"干员名称"},{id:"gate-table",name:"必须包含推荐表格",type:"table_required",level:"warning"},{id:"gate-no-missing",name:"不能出现缺失资料占位语",type:"forbidden_text",level:"error",value:"资料未提供"}],wordTemplatePath:"",builtIn:!0};function h(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),f.join(a,"document-specs.json")}function i(a){return(a||`spec-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function j(a){return{id:i(a.id),name:a.name||"未命名规范包",description:a.description||"",factFields:Array.isArray(a.factFields)?a.factFields.filter(a=>a.name).map(a=>({id:i(a.id),name:a.name,type:["text","number","date","table","list"].includes(a.type)?a.type:"text",required:!!a.required,sourceRoleIds:Array.isArray(a.sourceRoleIds)?a.sourceRoleIds.filter(Boolean):[],extractionHint:a.extractionHint||"",validationHint:a.validationHint||""})):[],chapterRules:Array.isArray(a.chapterRules)?a.chapterRules.filter(a=>a.title).map((a,b)=>({id:i(a.id),title:a.title,required:!!a.required,order:Number.isFinite(a.order)?a.order:b,minWords:Number.isFinite(a.minWords)?a.minWords:0,requiredFactIds:Array.isArray(a.requiredFactIds)?a.requiredFactIds.filter(Boolean):[],requiredFileRoleIds:Array.isArray(a.requiredFileRoleIds)?a.requiredFileRoleIds.filter(Boolean):[],requiredPromptRoleIds:Array.isArray(a.requiredPromptRoleIds)?a.requiredPromptRoleIds.filter(Boolean):[],generationHint:a.generationHint||""})):[],gateRules:Array.isArray(a.gateRules)?a.gateRules.filter(a=>a.name).map(a=>({id:i(a.id),name:a.name,type:["required_fact","required_chapter","required_file_role","required_prompt_role","source_required","forbidden_text","min_chapter_length","table_required"].includes(a.type)?a.type:"required_fact",level:"warning"===a.level||"info"===a.level?a.level:"error",target:a.target||"",value:a.value||""})):[],wordTemplatePath:a.wordTemplatePath||"",builtIn:!!a.builtIn}}function k(){try{let a=h();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(j)}catch{return[]}}function l(a){d.writeFileSync(h(),JSON.stringify(a.map(j),null,2),"utf-8")}function m(){return[...new Map([g,...k()].map(a=>[a.id,a])).values()]}function n(a){if(a)return a===g.id?g:k().find(b=>b.id===a)}function o(a){let b=j(a),c=k().filter(a=>a.id!==b.id);return c.push(b),l(c),b}function p(a){if(a===g.id)throw Error("Built-in demo spec cannot be deleted");l(k().filter(b=>b.id!==a))}},73445:(a,b,c)=>{c.d(b,{Bh:()=>v,OX:()=>G,R1:()=>H,bV:()=>x,h0:()=>w,jG:()=>t});var d=c(73024),e=c(76760),f=c(15751),g=c(48161),h=c(95393),i=c(23328),j=c(2323),k=c(89952),l=c(57367);let m=[{id:"delta-force-hot-operators-guide",name:"三角洲热门干员攻略",description:"内置全流程示例:基于示例攻略资料、表格、规则和规范包生成热门干员攻略文档。",category:"游戏攻略",outputTitle:"三角洲热门干员攻略",projectRoleConfigId:"delta-force-demo-config",documentSpecId:"delta-force-demo-spec",chapters:[{id:"overview",title:"第一章 攻略目标和适用人群",purpose:"说明攻略面向的新手/进阶玩家和使用场景。",requiredFacts:["攻略目标","适用人群"],queries:["三角洲行动 干员 攻略 适用 新手 进阶"]},{id:"operators",title:"第二章 热门干员定位速览",purpose:"汇总热门干员定位、技能和推荐场景。",requiredFacts:["干员名称","定位","技能"],queries:["三角洲行动 干员 定位 技能 露娜 红狼 牧羊人 蜂医"]},{id:"loadout",title:"第三章 干员搭配和队伍分工",purpose:"按突击、侦察、支援、工程等职责给出队伍搭配。",requiredFacts:["队伍分工","搭配建议"],queries:["三角洲行动 干员 搭配 队伍 分工 突击 侦察 支援 工程"]},{id:"tables",title:"第四章 数据表和推荐优先级",purpose:"引用表格数据生成优先级和推荐清单。",requiredFacts:["推荐指数","上手难度"],queries:["干员 推荐指数 上手难度 表格 优先级"]},{id:"tips",title:"第五章 实战注意事项",purpose:"整理实战打法、误区和复盘建议。",requiredFacts:["实战技巧","注意事项"],queries:["三角洲行动 实战 技巧 注意事项 误区"]}],builtIn:!0}];function n(){let a=e.join(g.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function o(){return e.join(n(),"document-templates.json")}function p(a){return{...a,id:a.id.replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)||`template-${Date.now()}`,name:a.name||"未命名模板",description:a.description||"",category:a.category||"自定义",outputTitle:a.outputTitle||a.name||"业务文档",projectRoleConfigId:a.projectRoleConfigId||void 0,documentSpecId:a.documentSpecId||void 0,chapters:Array.isArray(a.chapters)&&a.chapters.length>0?a.chapters.map((a,b)=>({id:(a.id||`chapter-${b+1}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80),title:a.title||`第 ${b+1} 章`,purpose:a.purpose||"",queries:Array.isArray(a.queries)?a.queries.filter(Boolean):[],requiredFacts:Array.isArray(a.requiredFacts)?a.requiredFacts.filter(Boolean):[]})):[{id:"document",title:a.outputTitle||a.name||"业务文档",purpose:a.description||"",queries:[],requiredFacts:[]}],promptIds:Array.isArray(a.promptIds)?a.promptIds.filter(Boolean):[],boundFilePaths:Array.isArray(a.boundFilePaths)?a.boundFilePaths.filter(Boolean):[],promptBindings:Array.isArray(a.promptBindings)?a.promptBindings.filter(a=>a.promptId&&a.roleId):Array.isArray(a.promptIds)?a.promptIds.filter(Boolean).map(a=>({promptId:a,roleId:"chapter_generation"})):[],fileBindings:Array.isArray(a.fileBindings)?a.fileBindings.filter(a=>a.filePath&&a.roleId):Array.isArray(a.boundFilePaths)?a.boundFilePaths.filter(Boolean).map(a=>({filePath:a,roleId:"project_fact"})):[],builtIn:!1}}function q(){try{let a=o();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(p)}catch{return[]}}function r(a){d.writeFileSync(o(),JSON.stringify(a.map(p),null,2),"utf-8")}let s={"builtin:delta-fact-extraction":{name:"内置|三角洲事实抽取",content:"请从资料中抽取干员名称、定位、技能、推荐指数、上手难度、推荐场景,输出结构化事实,不要编造。"},"builtin:delta-chapter-generation":{name:"内置|三角洲章节生成",content:"请用新手能看懂的大白话生成攻略,先给结论,再解释原因,最后给实战建议。必须引用表格数据和来源资料。"},"builtin:delta-validation":{name:"内置|三角洲攻略校验",content:"检查是否覆盖露娜、红狼、牧羊人、蜂医;是否有推荐表格;是否出现缺失资料占位语;是否有来源。"},"builtin:delta-formatting":{name:"内置|三角洲攻略格式化",content:"整理标题、列表、表格和结尾提醒,让攻略更适合正式导出。"}};function t(){return[...m,...q()]}function u(a){return t().find(b=>b.id===a)}function v(a){let b=p(a);if(m.some(a=>a.id===b.id))throw Error("Built-in template cannot be overwritten");let c=q().filter(a=>a.id!==b.id);return c.push(b),r(c),b}function w(a){if(m.some(b=>b.id===a))throw Error("Built-in template cannot be deleted");r(q().filter(b=>b.id!==a))}function x(a){let b=u(a);if(!b)throw Error("Document template not found");let c=p({...b,id:`${b.id}-copy-${Date.now()}`,name:`${b.name} Copy`,builtIn:!1}),d=q();return d.push(c),r(d),c}function y(a,b){let c=new Set;return a.sort((a,b)=>b.score-a.score).filter(a=>{let b=`${a.filePath}:${a.content.slice(0,100)}`;return!c.has(b)&&(c.add(b),!0)}).slice(0,b)}function z(a,b,c,f,g){let h=e.isAbsolute(a)?a:d.existsSync(e.join(g,"knowledgeBase",a))?e.join(g,"knowledgeBase",a):e.join(g,a);if(!d.existsSync(h)||d.statSync(h).isDirectory())return[];let i=e.extname(h).toLowerCase();return(([".pdf",".doc",".docx",".png",".jpg",".jpeg",".webp"].includes(i)?`内置示例资料文件:${e.basename(a)},用于三角洲热门干员攻略生成,文件类型:${i}。`:d.readFileSync(h,"utf-8")).match(/[\s\S]{1,1800}/gu)||[]).slice(0,12).map((d,e)=>({chapterId:f,filePath:a,score:1,content:d,roleId:b,processingType:c,sectionTitle:`文件片段 ${e+1}`,source:"bound-file-direct"}))}function A(a){return`- ${a.filePath}(score=${a.score.toFixed(3)}):${a.content.replace(/\s+/gu," ").slice(0,260)}`}function B(a){if(a.projectRoleConfigId){let b=(0,k.Mu)(a.projectRoleConfigId),c=(0,k.XB)("prompt");if(b)return[...b.promptRoles].sort((a,b)=>a.order-b.order).map(a=>c.find(b=>b.id===a.roleId)).filter(a=>!!a).flatMap(a=>(a.resourceIds?.length?a.resourceIds:a.resourceId?[a.resourceId]:[]).map(b=>({promptId:b,roleId:a.id})))}return a.promptBindings?.length?a.promptBindings:(a.promptIds??[]).map(a=>({promptId:a,roleId:"chapter_generation"}))}function C(a){if(a.projectRoleConfigId){let b=(0,k.Mu)(a.projectRoleConfigId),c=(0,k.XB)("file");if(b)return[...b.fileRoles].sort((a,b)=>a.order-b.order).map(a=>c.find(b=>b.id===a.roleId)).filter(a=>!!a).flatMap(a=>(a.resourceIds?.length?a.resourceIds:a.resourceId?[a.resourceId]:[]).map(b=>({filePath:b,roleId:a.id})))}return a.fileBindings?.length?a.fileBindings:(a.boundFilePaths??[]).map(a=>({filePath:a,roleId:"project_fact"}))}async function D(a,b){try{let c=(0,j.I)().load(),d=c.models.reasoning.active||c.models.action.active||c.models.reader.active,e=[...c.models.reasoning.list,...c.models.action.list,...c.models.reader.list].find(a=>a.name===d);if(!e)return;let f=c.providers[e.provider];if(!f)return;let g=(0,h.createProvider)(e.provider,{baseUrl:f.baseUrl,apiKey:f.apiKey,modelName:e.name}),i=(await g.chat([{role:"system",content:`${a}
|
|
57
|
+
只返回 JSON,不要返回 markdown。`},{role:"user",content:b}],{temperature:0})).content.trim().replace(/^```json\s*/u,"").replace(/^```\s*/u,"").replace(/```$/u,"").trim();return JSON.parse(i)}catch{return}}async function E(a,b){let c=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],d=a.slice(0,20).map(a=>`文件:${a.filePath}
|
|
3
58
|
角色:${a.roleId||""}
|
|
4
59
|
处理:${a.processingType||""}
|
|
5
|
-
内容:${a.content.slice(0,1200)}`).join("\n\n---\n\n");if(!d.trim())return{facts:[],stages:c};let e=await
|
|
60
|
+
内容:${a.content.slice(0,1200)}`).join("\n\n---\n\n");if(!d.trim())return{facts:[],stages:c};let e=await D(b||"你是工程文档事实抽取器。",`请从资料中抽取工程文档结构化事实,返回 {"facts":[{"key":"工程名称","value":"...","sourceFile":"...","roleId":"...","processingType":"project_fact","confidence":0.8}]}。
|
|
6
61
|
|
|
7
|
-
${d}`);return e?.facts?.length?{facts:e.facts.filter(a=>a.key&&a.value).map(a=>({key:a.key,value:a.value,sourceFile:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType,confidence:a.confidence??.8,sourceRef:{filePath:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType}})),stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 抽取 ${e.facts.length} 条事实`}]}:{facts:[],stages:c}}function
|
|
8
|
-
${a.content}`).join("\n\n"),q=new Set(m.
|
|
9
|
-
${p.slice(0,3e3)}`:"","",e.length>0?`本章根据模板绑定资料围绕“${a.purpose||b.description}”整理。`:"模板绑定资料未检索到明确内容,需进一步确认。","",e.length>0?"### 资料依据":"",...e.map(y),"",f.length>0?"### 待确认事项":"",...f.map(a=>`- ${a}:资料未提供,需进一步确认。`)].filter(Boolean).join("\n");w.push({id:a.id,title:a.title,content:i,evidence:e,missingFacts:f})}let F=function(a,b){let c={};for(let d of[...new Set(a.chapters.flatMap(a=>a.requiredFacts))]){let a=b.find(a=>a.content.includes(d.replace(/要求|计划|目标|标准/gu,""))||a.content.includes(d));a&&(c[d]=`${a.content.replace(/\s+/gu," ").slice(0,180)}(来源:${a.filePath})`)}return c}(b,B),G=function(a){let b=[["工程名称",/工程名称[::\s]+([^\n,。;;]+)/u],["工程地点",/(?:工程地点|建设地点)[::\s]+([^\n,。;;]+)/u],["建设单位",/建设单位[::\s]+([^\n,。;;]+)/u],["工期要求",/(?:工期|计划工期)[::\s]+([^\n,。;;]+)/u],["质量目标",/质量目标[::\s]+([^\n,。;;]+)/u],["安全目标",/安全目标[::\s]+([^\n,。;;]+)/u],["施工范围",/(?:施工范围|招标范围)[::\s]+([^\n]+)/u]],c=[];for(let d of a)for(let[a,e]of b){let b=d.content.match(e);b?.[1]&&!c.some(c=>c.key===a&&c.value===b[1].trim())&&c.push({key:a,value:b[1].trim().slice(0,300),sourceFile:d.filePath,roleId:d.roleId||"unknown",processingType:d.processingType,confidence:d.score})}return c}(B),H=await C(B,p),I=[...G,...H.facts],J=function(a){let b=[],c=new Set;for(let g of a.filter(a=>"table"===a.processingType)){if(c.has(g.filePath))continue;c.add(g.filePath);let a=e.isAbsolute(g.filePath)?g.filePath:e.join((0,i.aY)(),g.filePath),h=e.extname(g.filePath).toLowerCase();if(d.existsSync(a)&&[".xlsx",".xls",".csv"].includes(h))try{let c=f.readFile(a,{cellDates:!0,sheetStubs:!1});for(let a of c.SheetNames){let d=c.Sheets[a],e=f.utils.sheet_to_json(d,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(e.length<2)continue;let h=e.findIndex(a=>a.filter(Boolean).length>=2);if(h<0)continue;let i=e[h].filter(Boolean),j=e.slice(h+1).map(a=>a.slice(0,i.length)).filter(a=>a.some(Boolean));0!==j.length&&b.push({tableType:g.roleId||"table",sheet:a,headers:i,rows:j.slice(0,200),sourceFile:g.filePath,sourceRange:d["!ref"]})}continue}catch{}let j=g.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(j.length<2)continue;let k=j[0].includes("|")?"|":j[0].includes(" ")?" ":",",l=j.map(a=>a.split(k).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);l.length<2||b.push({tableType:g.roleId||"table",headers:l[0],rows:l.slice(1,80),sourceFile:g.filePath,sourceRange:g.sectionTitle})}return b}(B);for(let a of I)F[a.key]=`${a.value}(来源:${a.sourceFile},角色:${a.roleId})`;let K=new Map;for(let a of B)K.set(a.filePath,(K.get(a.filePath)??0)+1);let L=[...K.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),M=function(a,b=[],c=[]){let d=b=>a.filter(a=>b.some(b=>a.key.includes(b))),e=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b));return{project:d(["工程名称","工程地点","建设单位","施工范围"]),schedule:d(["工期","开工","竣工","节点"]),quality:d(["质量"]),safety:d(["安全"]),resources:d(["劳动力","材料","机械","设备"]),tables:b,drawings:e("drawing"),rules:e("rule"),specifications:e("specification"),missing:[...new Set(c)],conflicts:[]}}(I,J,E),N=function(a,b,c=[],d){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);for(let a of["工程名称","工期要求","质量目标","施工范围"])b[a]||c.some(b=>b.key===a)||e.push(`${a} 未形成明确事实,请人工确认`);d&&0===A(d).length&&f.push("模板未绑定任何知识库文件"),d&&0===z(d).length&&f.push("模板未绑定任何提示词");let g=new Set(c.map(a=>a.roleId));for(let a of["project_fact","rule"])d?.fileBindings?.some(b=>b.roleId===a)&&!g.has(a)&&e.push(`${a} 角色未抽取到结构化事实`);return{passed:0===f.length,warnings:e,errors:f}}(w,F,I,b),O=function(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return 0===b.project.length&&d.push({level:"error",message:"项目基础事实缺失",suggestion:"请在项目事实文件角色中绑定包含工程概况的资料。"}),c.some(a=>a.content.includes("资料未提供"))&&d.push({level:"warning",message:"存在资料未提供章节",suggestion:"请检查项目角色配置中的文件绑定和顺序。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"error",message:a}))),d}(N,M,w),P=[...H.stages,{type:"chapter_generation",roleId:"document-workflow",status:"success",message:`生成 ${w.length} 个章节`},{type:"validation",roleId:"document-workflow",status:N.errors.length>0?"failed":"success",message:`错误 ${N.errors.length},警告 ${N.warnings.length}`},{type:"formatting",roleId:"document-workflow",status:"success",message:"已生成正式排版 Markdown"}],Q={templateId:b.id,templateName:b.name,title:b.outputTitle,requirement:a.requirement||(j.length?`使用模板绑定提示词:${j.map(a=>`${a.promptId}(${a.roleId})`).join(", ")}`:""),facts:F,structuredFacts:I,factsModel:M,chapters:w,sources:L,missingItems:[...new Set(E)],validation:N,validationIssues:O,executionStages:P,exportGate:{passed:!0,blockingIssues:[],checklist:[]},generatedAt:Date.now()},R=function(a,b,c){let d=[{key:"no_errors",label:"无阻断级校验错误",passed:!a.some(a=>"error"===a.level)},{key:"project_facts",label:"项目基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))}],e=a.filter(a=>"error"===a.level);return{passed:0===e.length&&d.every(a=>a.passed),blockingIssues:e,checklist:d}}(O=function(a,b,c,d,e,f,g){if(!a)return b;let h=[...b],i=new Set([...c.project,...c.schedule,...c.quality,...c.safety,...c.resources].map(a=>a.key)),j=new Set(d.map(a=>a.title));for(let b of a.factFields.filter(a=>a.required))i.has(b.name)||h.push({level:"error",message:`必需事实缺失:${b.name}`,suggestion:b.extractionHint||"请补充资料或调整事实字段配置。"});for(let b of a.chapterRules.filter(a=>a.required)){j.has(b.title)||h.push({level:"error",message:`必需章节缺失:${b.title}`,suggestion:"请在模板或规范包章节规则中补齐章节。"});let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&h.push({level:"warning",message:`章节内容低于最低字数:${b.title}`,suggestion:`建议不少于 ${b.minWords} 字。`})}for(let b of a.gateRules){let a=b.level;"required_fact"===b.type&&b.target&&!i.has(b.target)&&h.push({level:a,message:`${b.name}:缺少事实 ${b.target}`}),"required_chapter"===b.type&&b.target&&!j.has(b.target)&&h.push({level:a,message:`${b.name}:缺少章节 ${b.target}`}),"required_file_role"===b.type&&b.target&&!f.some(a=>a.roleId===b.target)&&h.push({level:a,message:`${b.name}:缺少文件角色 ${b.target}`}),"required_prompt_role"===b.type&&b.target&&!g.some(a=>a.roleId===b.target)&&h.push({level:a,message:`${b.name}:缺少提示词角色 ${b.target}`}),"forbidden_text"===b.type&&b.value&&e.includes(b.value)&&h.push({level:a,message:`${b.name}:出现禁用文本 ${b.value}`}),"table_required"===b.type&&0===c.tables.length&&h.push({level:a,message:`${b.name}:缺少结构化表格`}),"source_required"===b.type&&[...c.project,...c.schedule,...c.quality,...c.safety].some(a=>!a.sourceFile)&&h.push({level:a,message:`${b.name}:存在无来源事实`})}return h}(o,O,M,w,D(Q),m,j),M,w);return{...Q,validationIssues:O,exportGate:R,markdown:D({...Q,validationIssues:O,exportGate:R})}}async function F(a){let b=t(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let d=a.projectRoot||(0,i.aY)();if(!d)throw Error("No knowledge base project found");let e=(0,i.Qh)(),f=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),g=[];for(let a of c.queries){let b=await e.search(d,a,{scope:"project",limit:f,weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});g.push(...b.results.map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,sectionTitle:a.sectionTitle,source:a.source})))}let h=x(g,f),j=c.requiredFacts.filter(a=>!h.some(b=>b.content.includes(a.replace(/要求|计划|目标|标准/gu,""))||b.content.includes(a))),k=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",h.length>0?`本章根据知识库资料围绕“${c.purpose}”重新整理。`:"资料未提供,需进一步确认。","",h.length>0?"### 资料依据":"",...h.map(y),"",j.length>0?"### 待确认事项":"",...j.map(a=>`- ${a}:资料未提供,需进一步确认。`)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:k,evidence:h,missingFacts:j}}},89952:(a,b,c)=>{c.d(b,{DZ:()=>p,FV:()=>o,Mu:()=>q,NR:()=>r,XB:()=>m,dg:()=>n,dw:()=>s});var d=c(73024),e=c(48161),f=c(76760);function g(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),f.join(a,"document-roles.json")}function h(a){return(a||`item-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function i(a){var b,c;let d="prompt"===a.type?"prompt":"file";return{id:h(a.id),name:a.name||"未命名角色",description:a.description||"",type:d,resourceId:a.resourceId||void 0,executionType:"prompt"===d?"fact_extraction"===(b=a.executionType)||"chapter_generation"===b||"validation"===b||"formatting"===b||"reference"===b?b:"reference":void 0,processingType:"file"===d?"rule"===(c=a.processingType)||"project_fact"===c||"table"===c||"drawing"===c||"specification"===c||"reference"===c?c:"reference":void 0}}function j(a){return{id:h(a.id),name:a.name||"未命名配置",description:a.description||"",fileRoles:Array.isArray(a.fileRoles)?a.fileRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[],promptRoles:Array.isArray(a.promptRoles)?a.promptRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[]}}function k(){try{let a=g();if(!d.existsSync(a))return{roles:[],configs:[]};let b=JSON.parse(d.readFileSync(a,"utf-8"));if(Array.isArray(b))return{roles:b.map(i),configs:[]};return{roles:Array.isArray(b.roles)?b.roles.map(i):[],configs:Array.isArray(b.configs)?b.configs.map(j):[]}}catch{return{roles:[],configs:[]}}}function l(a){d.writeFileSync(g(),JSON.stringify({roles:a.roles.map(i),configs:a.configs.map(j)},null,2),"utf-8")}function m(a){let b=k().roles;return a?b.filter(b=>b.type===a):b}function n(a){let b=i(a),c=k();return c.roles=c.roles.filter(a=>a.id!==b.id||a.type!==b.type),c.roles.push(b),l(c),b}function o(a,b){let c=k();c.roles=c.roles.filter(c=>c.id!==b||c.type!==a),c.configs=c.configs.map(a=>({...a,fileRoles:a.fileRoles.filter(a=>a.roleId!==b),promptRoles:a.promptRoles.filter(a=>a.roleId!==b)})),l(c)}function p(){return k().configs}function q(a){return k().configs.find(b=>b.id===a)}function r(a){let b=j(a),c=k();return c.configs=c.configs.filter(a=>a.id!==b.id),c.configs.push(b),l(c),b}function s(a){let b=k();b.configs=b.configs.filter(b=>b.id!==a),l(b)}}};
|
|
62
|
+
${d}`);return e?.facts?.length?{facts:e.facts.filter(a=>a.key&&a.value).map(a=>({key:a.key,value:a.value,sourceFile:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType,confidence:a.confidence??.8,sourceRef:{filePath:a.sourceFile||"",roleId:a.roleId||"llm",processingType:a.processingType}})),stages:[{type:"fact_extraction",roleId:"llm-json",status:"success",message:`LLM 抽取 ${e.facts.length} 条事实`}]}:{facts:[],stages:c}}function F(a){return['<div class="document-cover">',`# ${a.title}`,"",`**文档版本**:V1.0 `,`**生成时间**:${new Date(a.generatedAt).toLocaleString("zh-CN")} `,`**生成要求**:${a.requirement||"未填写"} `,"</div>","",'<div class="page-break"></div>',"","## 目录","",...a.chapters.map((a,b)=>`${b+1}. ${a.title}`),"",'<div class="page-break"></div>',"","## 结构化事实表","",Object.keys(a.facts).length>0?["| 事实项 | 依据 |","|---|---|",...Object.entries(a.facts).map(([a,b])=>`| ${a} | ${b.replace(/\|/gu," ")} |`)].join("\n"):"未抽取到明确事实,需人工确认。","",...a.chapters.flatMap(a=>[a.content,""]),"## 资料来源清单","","| 文件 | 引用次数 |","|---|---:|",...a.sources.map(a=>`| ${a.filePath} | ${a.count} |`),"","## 缺失项与需确认事项","",...a.missingItems.length>0?a.missingItems.map(a=>`- ${a}`):["- 暂未发现完全缺失章节;仍需人工复核关键数据。"],"","## 校验结果","",...a.validation.warnings.map(a=>`- 警告:${a}`),...a.validation.errors.map(a=>`- 错误:${a}`),"","## 严格校验清单","",...a.validationIssues.map(a=>`- ${a.level.toUpperCase()}:${a.message}${a.suggestion?`(建议:${a.suggestion})`:""}`)].join("\n")}async function G(a){let b=u(a.templateId);if(!b)throw Error("Document template not found");let c=a.projectRoot||(0,i.aY)();if(!c)throw Error("No knowledge base project found");let g=(0,i.Qh)(),h=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),j=B(b),m=C(b),o=(0,l.py)(b.documentSpecId),p=(function(a=[]){let b;if(0===a.length)return[];let c=[];try{let a=JSON.parse(d.readFileSync(e.join(n(),"prompts.json"),"utf-8"));b=Array.isArray(a.customPrompts)?a.customPrompts:[]}catch{b=[]}for(let f of a){let a=f.promptId;if(a.startsWith("builtin:")){let b=s[a];b&&c.push({id:a,roleId:f.roleId,name:b.name,content:b.content});continue}if(a.startsWith("custom:")){let d=b.find(b=>b.id===a);d&&c.push({id:a,roleId:f.roleId,name:d.name,content:d.content});continue}if(a.startsWith("file:")){let b=a.slice(5);d.existsSync(b)&&c.push({id:a,roleId:f.roleId,name:e.basename(e.dirname(b))||b,content:d.readFileSync(b,"utf-8")})}}return c})(j).map(a=>`## [${a.roleId}] ${a.name}
|
|
63
|
+
${a.content}`).join("\n\n"),q=a=>[a,e.isAbsolute(a)?e.relative(c,a):e.join(c,a)],r=new Set(m.flatMap(a=>q(a.filePath))),t=(0,k.XB)("file"),v=new Map(m.flatMap(a=>q(a.filePath).map(b=>[b,a.roleId]))),w=new Map(m.flatMap(a=>q(a.filePath).map(b=>[b,t.find(b=>b.id===a.roleId)?.processingType||"reference"]))),x=await g.getProject(c);await x.incrementalIndex();let D=[],G=[],H=[];for(let a of b.chapters){let d=[];for(let e of a.queries.length>0?a.queries:[b.name,b.outputTitle,a.title,...m.map(a=>a.filePath)]){let b=await g.search(c,e,{scope:"project",limit:Math.max(h,r.size>0?30:h),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});d.push(...b.results.filter(a=>0===r.size||r.has(a.filePath)).map(b=>({chapterId:a.id,filePath:b.filePath,score:b.score,content:b.content,roleId:v.get(b.filePath),processingType:w.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})))}for(let b of r){let e=x.getFileDetail(b);if(!e){d.push(...z(b,v.get(b),w.get(b),a.id,c));continue}d.push(...e.chunks.slice(0,Math.max(h,20)).map(b=>({chapterId:a.id,filePath:e.file.relativePath,score:1,content:b.content,roleId:v.get(e.file.relativePath),processingType:w.get(e.file.relativePath),sectionTitle:b.sectionTitle,source:"bound-file"})))}for(let b of m)d.push(...z(b.filePath,b.roleId,t.find(a=>a.id===b.roleId)?.processingType||"reference",a.id,c));let e=y(d,h);G.push(...e);let f=a.requiredFacts.filter(a=>!e.some(b=>b.content.includes(a.replace(/要求|计划|目标|标准/gu,""))||b.content.includes(a)));for(let b of(0===e.length&&H.push(`${a.title}:未检索到明确资料依据`),f))H.push(`${a.title}:${b} 未检索到明确依据`);let i=[`## ${a.title}`,"",p?`### 模板绑定提示词规则
|
|
64
|
+
${p.slice(0,3e3)}`:"","",e.length>0?`本章根据模板绑定资料围绕“${a.purpose||b.description}”整理。`:"模板绑定资料未检索到明确内容,需进一步确认。","",e.length>0?"### 资料依据":"",...e.map(A),"",f.length>0?"### 待确认事项":"",...f.map(a=>`- ${a}:建议人工复核或补充更明确资料。`)].filter(Boolean).join("\n");D.push({id:a.id,title:a.title,content:i,evidence:e,missingFacts:f})}let I=function(a,b){let c={};for(let d of[...new Set(a.chapters.flatMap(a=>a.requiredFacts))]){let a=b.find(a=>a.content.includes(d.replace(/要求|计划|目标|标准/gu,""))||a.content.includes(d));a&&(c[d]=`${a.content.replace(/\s+/gu," ").slice(0,180)}(来源:${a.filePath})`)}return c}(b,G),J=function(a){let b=[["工程名称",/工程名称[::\s]+([^\n,。;;]+)/u],["工程地点",/(?:工程地点|建设地点)[::\s]+([^\n,。;;]+)/u],["建设单位",/建设单位[::\s]+([^\n,。;;]+)/u],["工期要求",/(?:工期|计划工期)[::\s]+([^\n,。;;]+)/u],["质量目标",/质量目标[::\s]+([^\n,。;;]+)/u],["安全目标",/安全目标[::\s]+([^\n,。;;]+)/u],["施工范围",/(?:施工范围|招标范围)[::\s]+([^\n]+)/u],["攻略目标",/攻略目标[::\s]+([^\n]+)/u],["适用人群",/适用人群[::\s]+([^\n]+)/u],["干员名称",/(?:热门干员|干员)[::\s\n-]+([^\n]+)/u],["定位",/(?:定位|职责)[::\s]+([^\n,。;;]+)/u],["推荐指数",/推荐指数[::\s,,]+([^\n,。;;]+)/u],["实战技巧",/实战技巧[::\s]+([^\n]+)/u]],c=[];for(let d of a)for(let[a,e]of b){let b=d.content.match(e);b?.[1]&&!c.some(c=>c.key===a&&c.value===b[1].trim())&&c.push({key:a,value:b[1].trim().slice(0,300),sourceFile:d.filePath,roleId:d.roleId||"unknown",processingType:d.processingType,confidence:d.score})}return c}(G),K=await E(G,p),L=[...J,...K.facts],M=function(a){let b=[],c=new Set;for(let g of a.filter(a=>"table"===a.processingType)){if(c.has(g.filePath))continue;c.add(g.filePath);let a=(0,i.aY)(),h=e.isAbsolute(g.filePath)?g.filePath:d.existsSync(e.join(a,"knowledgeBase",g.filePath))?e.join(a,"knowledgeBase",g.filePath):e.join(a,g.filePath),j=e.extname(g.filePath).toLowerCase();if(d.existsSync(h)&&[".xlsx",".xls",".csv"].includes(j))try{let a=f.readFile(h,{cellDates:!0,sheetStubs:!1});for(let c of a.SheetNames){let d=a.Sheets[c],e=f.utils.sheet_to_json(d,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(e.length<2)continue;let h=e.findIndex(a=>a.filter(Boolean).length>=2);if(h<0)continue;let i=e[h].filter(Boolean),j=e.slice(h+1).map(a=>a.slice(0,i.length)).filter(a=>a.some(Boolean));0!==j.length&&b.push({tableType:g.roleId||"table",sheet:c,headers:i,rows:j.slice(0,200),sourceFile:g.filePath,sourceRange:d["!ref"]})}continue}catch{}let k=g.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(k.length<2)continue;let l=k[0].includes("|")?"|":k[0].includes(" ")?" ":",",m=k.map(a=>a.split(l).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);m.length<2||b.push({tableType:g.roleId||"table",headers:m[0],rows:m.slice(1,80),sourceFile:g.filePath,sourceRange:g.sectionTitle})}return b}(G);for(let a of L)I[a.key]=`${a.value}(来源:${a.sourceFile},角色:${a.roleId})`;let N=new Map;for(let a of G)N.set(a.filePath,(N.get(a.filePath)??0)+1);let O=[...N.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),P=function(a,b=[],c=[]){let d=b=>a.filter(a=>b.some(b=>a.key.includes(b))),e=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b));return{project:d(["工程名称","工程地点","建设单位","施工范围","攻略目标","适用人群","干员名称","定位","推荐指数"]),schedule:d(["工期","开工","竣工","节点"]),quality:d(["质量"]),safety:d(["安全"]),resources:d(["劳动力","材料","机械","设备"]),tables:b,drawings:e("drawing"),rules:e("rule"),specifications:e("specification"),missing:[...new Set(c)],conflicts:[]}}(L,M,H),Q=function(a,b,c=[],d){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);if(!d?.documentSpecId)for(let a of["工程名称","工期要求","质量目标","施工范围"])b[a]||c.some(b=>b.key===a)||e.push(`${a} 未形成明确事实,请人工确认`);d&&0===C(d).length&&f.push("模板未绑定任何知识库文件"),d&&0===B(d).length&&f.push("模板未绑定任何提示词");let g=new Set(c.map(a=>a.roleId));for(let a of["project_fact","rule"])d?.fileBindings?.some(b=>b.roleId===a)&&!g.has(a)&&e.push(`${a} 角色未抽取到结构化事实`);return{passed:0===f.length,warnings:e,errors:f}}(D,I,L,b),R=function(a,b,c,d){let e=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return d?.documentSpecId||0!==b.project.length||e.push({level:"error",message:"项目基础事实缺失",suggestion:"请在项目事实文件角色中绑定包含工程概况的资料。"}),c.some(a=>a.content.includes("资料未提供"))&&e.push({level:"warning",message:"存在资料未提供章节",suggestion:"请检查项目角色配置中的文件绑定和顺序。"}),b.conflicts.length>0&&e.push(...b.conflicts.map(a=>({level:"error",message:a}))),e}(Q,P,D,b),S=[...K.stages,{type:"chapter_generation",roleId:"document-workflow",status:"success",message:`生成 ${D.length} 个章节`},{type:"validation",roleId:"document-workflow",status:Q.errors.length>0?"failed":"success",message:`错误 ${Q.errors.length},警告 ${Q.warnings.length}`},{type:"formatting",roleId:"document-workflow",status:"success",message:"已生成正式排版 Markdown"}],T={templateId:b.id,templateName:b.name,title:b.outputTitle,requirement:a.requirement||(j.length?`使用模板绑定提示词:${j.map(a=>`${a.promptId}(${a.roleId})`).join(", ")}`:""),facts:I,structuredFacts:L,factsModel:P,chapters:D,sources:O,missingItems:[...new Set(H)],validation:Q,validationIssues:R,executionStages:S,exportGate:{passed:!0,blockingIssues:[],checklist:[]},generatedAt:Date.now()},U=function(a,b,c){let d=[{key:"no_errors",label:"无阻断级校验错误",passed:!a.some(a=>"error"===a.level)},{key:"project_facts",label:"项目基础事实齐全",passed:b.project.length>0},{key:"source_traceability",label:"事实具备来源追踪",passed:[...b.project,...b.schedule,...b.quality,...b.safety].every(a=>!!a.sourceFile)},{key:"chapter_evidence",label:"章节均具备证据",passed:c.every(a=>a.evidence.length>0)},{key:"no_missing_content",label:"无资料未提供章节",passed:c.every(a=>!a.content.includes("资料未提供"))}],e=a.filter(a=>"error"===a.level);return{passed:0===e.length&&d.every(a=>a.passed),blockingIssues:e,checklist:d}}(R=function(a,b,c,d,e,f,g){if(!a)return b;let h=[...b],i=new Set([...[...c.project,...c.schedule,...c.quality,...c.safety,...c.resources].map(a=>a.key),...c.tables.flatMap(a=>[...a.headers,...a.rows.flat()])]),j=new Set(d.map(a=>a.title));for(let b of a.factFields.filter(a=>a.required))i.has(b.name)||h.push({level:"error",message:`必需事实缺失:${b.name}`,suggestion:b.extractionHint||"请补充资料或调整事实字段配置。"});for(let b of a.chapterRules.filter(a=>a.required)){j.has(b.title)||h.push({level:"error",message:`必需章节缺失:${b.title}`,suggestion:"请在模板或规范包章节规则中补齐章节。"});let a=d.find(a=>a.title===b.title);a&&b.minWords&&a.content.length<b.minWords&&h.push({level:"warning",message:`章节内容低于最低字数:${b.title}`,suggestion:`建议不少于 ${b.minWords} 字。`})}for(let b of a.gateRules){let a=b.level;"required_fact"===b.type&&b.target&&!i.has(b.target)&&h.push({level:a,message:`${b.name}:缺少事实 ${b.target}`}),"required_chapter"===b.type&&b.target&&!j.has(b.target)&&h.push({level:a,message:`${b.name}:缺少章节 ${b.target}`}),"required_file_role"===b.type&&b.target&&!f.some(a=>a.roleId===b.target)&&h.push({level:a,message:`${b.name}:缺少文件角色 ${b.target}`}),"required_prompt_role"===b.type&&b.target&&!g.some(a=>a.roleId===b.target)&&h.push({level:a,message:`${b.name}:缺少提示词角色 ${b.target}`}),"forbidden_text"===b.type&&b.value&&e.includes(b.value)&&h.push({level:a,message:`${b.name}:出现禁用文本 ${b.value}`}),"table_required"===b.type&&0===c.tables.length&&h.push({level:a,message:`${b.name}:缺少结构化表格`}),"source_required"===b.type&&[...c.project,...c.schedule,...c.quality,...c.safety].some(a=>!a.sourceFile)&&h.push({level:a,message:`${b.name}:存在无来源事实`})}return h}(o,R,P,D,F(T),m,j),P,D);return{...T,validationIssues:R,exportGate:U,markdown:F({...T,validationIssues:R,exportGate:U})}}async function H(a){let b=u(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let d=a.projectRoot||(0,i.aY)();if(!d)throw Error("No knowledge base project found");let e=(0,i.Qh)(),f=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),g=[];for(let a of c.queries){let b=await e.search(d,a,{scope:"project",limit:f,weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});g.push(...b.results.map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,sectionTitle:a.sectionTitle,source:a.source})))}let h=y(g,f),j=c.requiredFacts.filter(a=>!h.some(b=>b.content.includes(a.replace(/要求|计划|目标|标准/gu,""))||b.content.includes(a))),k=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",h.length>0?`本章根据知识库资料围绕“${c.purpose}”重新整理。`:"建议补充更多资料后复核。","",h.length>0?"### 资料依据":"",...h.map(A),"",j.length>0?"### 待确认事项":"",...j.map(a=>`- ${a}:建议人工复核或补充更明确资料。`)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:k,evidence:h,missingFacts:j}}},89952:(a,b,c)=>{c.d(b,{DZ:()=>r,FV:()=>q,Mu:()=>s,NR:()=>t,XB:()=>o,dg:()=>p,dw:()=>u});var d=c(73024),e=c(48161),f=c(76760);let g=[{id:"delta-rule-files",name:"三角洲攻略规则文件",description:"大白话:告诉系统这篇攻略要遵守什么写作规则和输出要求。",type:"file",processingType:"rule",resourceIds:["文档资料/规则文件-攻略写作要求.md"]},{id:"delta-fact-files",name:"三角洲干员事实文件",description:"大白话:存放干员、定位、技能、打法这些真实攻略资料。",type:"file",processingType:"project_fact",resourceIds:["文档资料/项目事实-热门干员资料.md","文档资料/PDF资料-三角洲干员攻略摘要.pdf","文档资料/Word资料-三角洲干员打法说明.docx","文档资料/Word资料-队伍搭配说明.doc"]},{id:"delta-table-files",name:"三角洲干员表格数据",description:"大白话:存放可以被解析成表格的数据,比如推荐指数、难度、职责。",type:"file",processingType:"table",resourceIds:["表格数据/表格数据-热门干员推荐.csv"]},{id:"delta-drawing-files",name:"三角洲战术示意图文件",description:"大白话:没有真实 CAD 图纸时,用路线/阵型/站位说明代替图纸资料。",type:"file",processingType:"drawing",resourceIds:["图纸文件/图纸文件-战术路线示意.md"]},{id:"delta-spec-files",name:"三角洲攻略规范文件",description:"大白话:告诉系统攻略应该包含哪些章节、怎么写、怎么校验。",type:"file",processingType:"specification",resourceIds:["文档资料/规范文件-攻略结构规范.md"]},{id:"delta-image-files",name:"三角洲干员图片资料",description:"大白话:存放干员图片来源和本地图片文件,生成攻略时用于说明配图来源。",type:"file",processingType:"reference",resourceIds:["图片素材/图片文件-干员图片来源.md"]},{id:"delta-fact-prompt",name:"三角洲事实抽取提示词",description:"从示例资料中抽取干员名称、定位、技能、难度和推荐指数。",type:"prompt",executionType:"fact_extraction",resourceIds:["builtin:delta-fact-extraction"]},{id:"delta-generation-prompt",name:"三角洲章节生成提示词",description:"生成适合新手阅读的热门干员攻略正文。",type:"prompt",executionType:"chapter_generation",resourceIds:["builtin:delta-chapter-generation"]},{id:"delta-validation-prompt",name:"三角洲校验提示词",description:"检查是否缺少热门干员、表格和实战注意事项。",type:"prompt",executionType:"validation",resourceIds:["builtin:delta-validation"]},{id:"delta-formatting-prompt",name:"三角洲收尾润色提示词",description:"对最终攻略进行格式整理、标题优化和结尾收束。",type:"prompt",executionType:"formatting",resourceIds:["builtin:delta-formatting"]}].map(a=>({...a,builtIn:!0})),h={id:"delta-force-demo-config",name:"三角洲热门干员攻略项目配置",description:"内置示例配置:文件角色和提示词角色已排好顺序,用户可直接选择内置模板生成。",fileRoles:[{roleId:"delta-rule-files",order:0},{roleId:"delta-fact-files",order:1},{roleId:"delta-table-files",order:2},{roleId:"delta-drawing-files",order:3},{roleId:"delta-spec-files",order:4},{roleId:"delta-image-files",order:5}],promptRoles:[{roleId:"delta-fact-prompt",order:0},{roleId:"delta-generation-prompt",order:1},{roleId:"delta-validation-prompt",order:2},{roleId:"delta-formatting-prompt",order:3}]};function i(){let a=f.join(e.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),f.join(a,"document-roles.json")}function j(a){return(a||`item-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function k(a){var b,c;let d="prompt"===a.type?"prompt":"file";return{id:j(a.id),name:a.name||"未命名角色",description:a.description||"",type:d,resourceId:a.resourceId||a.resourceIds?.[0]||void 0,resourceIds:Array.isArray(a.resourceIds)&&a.resourceIds.length>0?a.resourceIds.filter(Boolean):a.resourceId?[a.resourceId]:[],executionType:"prompt"===d?"fact_extraction"===(b=a.executionType)||"chapter_generation"===b||"validation"===b||"formatting"===b||"reference"===b?b:"reference":void 0,processingType:"file"===d?"rule"===(c=a.processingType)||"project_fact"===c||"table"===c||"drawing"===c||"specification"===c||"reference"===c?c:"reference":void 0}}function l(a){return{id:j(a.id),name:a.name||"未命名配置",description:a.description||"",fileRoles:Array.isArray(a.fileRoles)?a.fileRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[],promptRoles:Array.isArray(a.promptRoles)?a.promptRoles.filter(a=>a.roleId).map((a,b)=>({roleId:a.roleId,order:Number.isFinite(a.order)?a.order:b})):[]}}function m(){try{let a=i();if(!d.existsSync(a))return{roles:[],configs:[]};let b=JSON.parse(d.readFileSync(a,"utf-8"));if(Array.isArray(b))return{roles:b.map(k),configs:[]};return{roles:Array.isArray(b.roles)?b.roles.map(k):[],configs:Array.isArray(b.configs)?b.configs.map(l):[]}}catch{return{roles:[],configs:[]}}}function n(a){d.writeFileSync(i(),JSON.stringify({roles:a.roles.map(k),configs:a.configs.map(l)},null,2),"utf-8")}function o(a){let b=[...new Map([...g,...m().roles].map(a=>[a.id,a])).values()];return a?b.filter(b=>b.type===a):b}function p(a){let b=k(a),c=m();return c.roles=c.roles.filter(a=>a.id!==b.id||a.type!==b.type),c.roles.push(b),n(c),b}function q(a,b){if(g.some(c=>c.id===b&&c.type===a))throw Error("Built-in demo role cannot be deleted");let c=m();c.roles=c.roles.filter(c=>c.id!==b||c.type!==a),c.configs=c.configs.map(a=>({...a,fileRoles:a.fileRoles.filter(a=>a.roleId!==b),promptRoles:a.promptRoles.filter(a=>a.roleId!==b)})),n(c)}function r(){return[...new Map([h,...m().configs].map(a=>[a.id,a])).values()]}function s(a){return a===h.id?h:m().configs.find(b=>b.id===a)}function t(a){let b=l(a),c=m();return c.configs=c.configs.filter(a=>a.id!==b.id),c.configs.push(b),n(c),b}function u(a){if(a===h.id)throw Error("Built-in demo config cannot be deleted");let b=m();b.configs=b.configs.filter(b=>b.id!==a),n(b)}}};
|