@customize-agent/server 3.0.10 → 3.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +54 -36
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/routes-manifest.json +6 -0
  5. package/.next/server/chunks/3445.js +6 -6
  6. package/.next/server/chunks/5076.js +1 -1
  7. package/.next/server/chunks/8204.js +1 -1
  8. package/.next/server/middleware-build-manifest.js +1 -1
  9. package/.next/server/pages/404.html +1 -1
  10. package/.next/server/pages/500.html +1 -1
  11. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  12. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  13. package/.next/server/pages/api/documents/export.js +1 -1
  14. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  15. package/.next/server/pages/api/documents/generate.js +1 -1
  16. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  17. package/.next/server/pages/api/documents/specs.js +1 -0
  18. package/.next/server/pages/api/documents/specs.js.nft.json +1 -0
  19. package/.next/server/pages/api/documents/templates.js +1 -1
  20. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  21. package/.next/server/pages/context/long-term.html +1 -1
  22. package/.next/server/pages/context/short-term.html +1 -1
  23. package/.next/server/pages/document-roles.html +1 -1
  24. package/.next/server/pages/document-specs.html +1 -0
  25. package/.next/server/pages/document-specs.js.nft.json +1 -0
  26. package/.next/server/pages/documents.html +1 -1
  27. package/.next/server/pages/guide.html +1 -1
  28. package/.next/server/pages/index.html +1 -1
  29. package/.next/server/pages/knowledge/file-detail.html +1 -1
  30. package/.next/server/pages/knowledge/files.html +1 -1
  31. package/.next/server/pages/knowledge/manage.html +1 -1
  32. package/.next/server/pages/knowledge/search.html +1 -1
  33. package/.next/server/pages/knowledge.html +1 -1
  34. package/.next/server/pages/models.html +1 -1
  35. package/.next/server/pages/overview.html +1 -1
  36. package/.next/server/pages/prompt.html +1 -1
  37. package/.next/server/pages/settings.html +1 -1
  38. package/.next/server/pages-manifest.json +22 -20
  39. package/.next/static/chunks/{400-ba996d76e74a7368.js → 400-f06f00619f22421e.js} +1 -1
  40. package/.next/static/chunks/730-727fe4b055c78dc2.js +1 -0
  41. package/.next/static/chunks/740-2bcba39d841f2b16.js +16 -0
  42. package/.next/static/chunks/{845-b394c886baabe12f.js → 804-e654a1589d9adc65.js} +3 -3
  43. package/.next/static/chunks/846-fed995f7c83fc6c3.js +1 -0
  44. package/.next/static/chunks/958-66e2dcf301fb3c3f.js +1 -0
  45. package/.next/static/chunks/pages/{_app-15fb8428c7126df0.js → _app-49c11d5b0712c7a5.js} +9 -9
  46. package/.next/static/chunks/pages/context/{long-term-9685fc1fd8397807.js → long-term-710aaeb12e378258.js} +1 -1
  47. package/.next/static/chunks/pages/context/{short-term-86f5d204405bb05c.js → short-term-e68f01478e7ed238.js} +1 -1
  48. package/.next/static/chunks/pages/document-roles-caee7af42da4f792.js +1 -0
  49. package/.next/static/chunks/pages/document-specs-7085069b6dcdaee6.js +1 -0
  50. package/.next/static/chunks/pages/documents-b78988e17525927f.js +1 -0
  51. package/.next/static/chunks/pages/{guide-0aa6938c95fd8152.js → guide-b495954d18d56b33.js} +1 -1
  52. package/.next/static/chunks/pages/knowledge/{file-detail-21dbc84d04f969ca.js → file-detail-793d12234ccddac1.js} +1 -1
  53. package/.next/static/chunks/pages/knowledge/{files-369d7ccf6a6e4e43.js → files-a3a4bbc49c980b46.js} +1 -1
  54. package/.next/static/chunks/pages/knowledge/manage-64ad6cdce068edb1.js +1 -0
  55. package/.next/static/chunks/pages/knowledge/{search-5a199ff773f7938b.js → search-fe148477dfe05966.js} +1 -1
  56. package/.next/static/chunks/pages/models-6131bc7596604158.js +1 -0
  57. package/.next/static/chunks/pages/overview-db5df4f0bec2a77c.js +1 -0
  58. package/.next/static/yEauW-YU8G-h4UdYFV8_d/_buildManifest.js +1 -0
  59. package/package.json +4 -4
  60. package/.next/static/PkdECgLy3eGpkRC2sc90n/_buildManifest.js +0 -1
  61. package/.next/static/chunks/228-7112f995b33b1fd3.js +0 -1
  62. package/.next/static/chunks/740-cd38299e151d3ffc.js +0 -16
  63. package/.next/static/chunks/951-320008e618be7e4f.js +0 -1
  64. package/.next/static/chunks/958-0793922b6b146891.js +0 -1
  65. package/.next/static/chunks/pages/document-roles-1449654aa961426e.js +0 -1
  66. package/.next/static/chunks/pages/documents-dc6582d6886d4fb6.js +0 -1
  67. package/.next/static/chunks/pages/knowledge/manage-447ce42652c203f4.js +0 -1
  68. package/.next/static/chunks/pages/models-fc67c4147d2aa3cb.js +0 -1
  69. package/.next/static/chunks/pages/overview-558db8205a06d058.js +0 -1
  70. /package/.next/static/{PkdECgLy3eGpkRC2sc90n → yEauW-YU8G-h4UdYFV8_d}/_ssgManifest.js +0 -0
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- PkdECgLy3eGpkRC2sc90n
1
+ yEauW-YU8G-h4UdYFV8_d
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/PkdECgLy3eGpkRC2sc90n/_buildManifest.js",
9
- "static/PkdECgLy3eGpkRC2sc90n/_ssgManifest.js"
8
+ "static/yEauW-YU8G-h4UdYFV8_d/_buildManifest.js",
9
+ "static/yEauW-YU8G-h4UdYFV8_d/_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-15fb8428c7126df0.js"
25
+ "static/chunks/pages/_app-49c11d5b0712c7a5.js"
26
26
  ],
27
27
  "/_error": [
28
28
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -40,14 +40,14 @@
40
40
  "static/chunks/201-b16b4788042ed1aa.js",
41
41
  "static/chunks/668-662b7bc81e4ad48f.js",
42
42
  "static/chunks/227-442963c7b630eade.js",
43
- "static/chunks/740-cd38299e151d3ffc.js",
43
+ "static/chunks/740-2bcba39d841f2b16.js",
44
44
  "static/chunks/174-e7df14600b457a5c.js",
45
45
  "static/chunks/492-62671486700ed3f9.js",
46
- "static/chunks/446-0591221372df7d49.js",
47
- "static/chunks/400-ba996d76e74a7368.js",
48
46
  "static/chunks/455-e31becaaf948f868.js",
47
+ "static/chunks/446-0591221372df7d49.js",
48
+ "static/chunks/400-f06f00619f22421e.js",
49
49
  "static/chunks/257-ba16dfe16a27f417.js",
50
- "static/chunks/pages/context/long-term-9685fc1fd8397807.js"
50
+ "static/chunks/pages/context/long-term-710aaeb12e378258.js"
51
51
  ],
52
52
  "/context/short-term": [
53
53
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -59,14 +59,14 @@
59
59
  "static/chunks/201-b16b4788042ed1aa.js",
60
60
  "static/chunks/668-662b7bc81e4ad48f.js",
61
61
  "static/chunks/227-442963c7b630eade.js",
62
- "static/chunks/740-cd38299e151d3ffc.js",
62
+ "static/chunks/740-2bcba39d841f2b16.js",
63
63
  "static/chunks/174-e7df14600b457a5c.js",
64
64
  "static/chunks/492-62671486700ed3f9.js",
65
- "static/chunks/446-0591221372df7d49.js",
66
- "static/chunks/400-ba996d76e74a7368.js",
67
65
  "static/chunks/455-e31becaaf948f868.js",
66
+ "static/chunks/446-0591221372df7d49.js",
67
+ "static/chunks/400-f06f00619f22421e.js",
68
68
  "static/chunks/257-ba16dfe16a27f417.js",
69
- "static/chunks/pages/context/short-term-86f5d204405bb05c.js"
69
+ "static/chunks/pages/context/short-term-e68f01478e7ed238.js"
70
70
  ],
71
71
  "/document-roles": [
72
72
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -78,12 +78,30 @@
78
78
  "static/chunks/201-b16b4788042ed1aa.js",
79
79
  "static/chunks/668-662b7bc81e4ad48f.js",
80
80
  "static/chunks/227-442963c7b630eade.js",
81
- "static/chunks/740-cd38299e151d3ffc.js",
81
+ "static/chunks/740-2bcba39d841f2b16.js",
82
+ "static/chunks/174-e7df14600b457a5c.js",
83
+ "static/chunks/492-62671486700ed3f9.js",
84
+ "static/chunks/455-e31becaaf948f868.js",
85
+ "static/chunks/846-fed995f7c83fc6c3.js",
86
+ "static/chunks/pages/document-roles-caee7af42da4f792.js"
87
+ ],
88
+ "/document-specs": [
89
+ "static/chunks/webpack-77d10b4726f13aa5.js",
90
+ "static/chunks/framework-b5223c1542334872.js",
91
+ "static/chunks/main-1a03005b3754c708.js",
92
+ "static/chunks/260-7a7a65a3ca8539ba.js",
93
+ "static/chunks/167-9f45623d7ea7ab43.js",
94
+ "static/chunks/382-dd7535429e16931b.js",
95
+ "static/chunks/201-b16b4788042ed1aa.js",
96
+ "static/chunks/668-662b7bc81e4ad48f.js",
97
+ "static/chunks/227-442963c7b630eade.js",
98
+ "static/chunks/740-2bcba39d841f2b16.js",
82
99
  "static/chunks/174-e7df14600b457a5c.js",
83
100
  "static/chunks/492-62671486700ed3f9.js",
84
101
  "static/chunks/455-e31becaaf948f868.js",
85
- "static/chunks/951-320008e618be7e4f.js",
86
- "static/chunks/pages/document-roles-1449654aa961426e.js"
102
+ "static/chunks/992-ea93dfa182a02a8e.js",
103
+ "static/chunks/846-fed995f7c83fc6c3.js",
104
+ "static/chunks/pages/document-specs-7085069b6dcdaee6.js"
87
105
  ],
88
106
  "/documents": [
89
107
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -95,14 +113,14 @@
95
113
  "static/chunks/201-b16b4788042ed1aa.js",
96
114
  "static/chunks/668-662b7bc81e4ad48f.js",
97
115
  "static/chunks/227-442963c7b630eade.js",
98
- "static/chunks/740-cd38299e151d3ffc.js",
116
+ "static/chunks/740-2bcba39d841f2b16.js",
99
117
  "static/chunks/174-e7df14600b457a5c.js",
100
118
  "static/chunks/492-62671486700ed3f9.js",
101
119
  "static/chunks/455-e31becaaf948f868.js",
102
120
  "static/chunks/292-c2888a94068fae74.js",
103
- "static/chunks/228-7112f995b33b1fd3.js",
104
- "static/chunks/951-320008e618be7e4f.js",
105
- "static/chunks/pages/documents-dc6582d6886d4fb6.js"
121
+ "static/chunks/846-fed995f7c83fc6c3.js",
122
+ "static/chunks/730-727fe4b055c78dc2.js",
123
+ "static/chunks/pages/documents-b78988e17525927f.js"
106
124
  ],
107
125
  "/guide": [
108
126
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -112,9 +130,9 @@
112
130
  "static/chunks/167-9f45623d7ea7ab43.js",
113
131
  "static/chunks/382-dd7535429e16931b.js",
114
132
  "static/chunks/292-c2888a94068fae74.js",
115
- "static/chunks/228-7112f995b33b1fd3.js",
116
- "static/chunks/845-b394c886baabe12f.js",
117
- "static/chunks/pages/guide-0aa6938c95fd8152.js"
133
+ "static/chunks/730-727fe4b055c78dc2.js",
134
+ "static/chunks/804-e654a1589d9adc65.js",
135
+ "static/chunks/pages/guide-b495954d18d56b33.js"
118
136
  ],
119
137
  "/knowledge": [
120
138
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -132,15 +150,15 @@
132
150
  "static/chunks/201-b16b4788042ed1aa.js",
133
151
  "static/chunks/668-662b7bc81e4ad48f.js",
134
152
  "static/chunks/227-442963c7b630eade.js",
135
- "static/chunks/740-cd38299e151d3ffc.js",
153
+ "static/chunks/740-2bcba39d841f2b16.js",
136
154
  "static/chunks/174-e7df14600b457a5c.js",
137
155
  "static/chunks/446-0591221372df7d49.js",
138
- "static/chunks/400-ba996d76e74a7368.js",
156
+ "static/chunks/400-f06f00619f22421e.js",
139
157
  "static/chunks/292-c2888a94068fae74.js",
140
158
  "static/chunks/969-8843874536e7fd83.js",
141
159
  "static/chunks/517-f43787133528ba48.js",
142
160
  "static/css/d284a7454d6f6b06.css",
143
- "static/chunks/pages/knowledge/file-detail-21dbc84d04f969ca.js"
161
+ "static/chunks/pages/knowledge/file-detail-793d12234ccddac1.js"
144
162
  ],
145
163
  "/knowledge/files": [
146
164
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -152,13 +170,13 @@
152
170
  "static/chunks/201-b16b4788042ed1aa.js",
153
171
  "static/chunks/668-662b7bc81e4ad48f.js",
154
172
  "static/chunks/227-442963c7b630eade.js",
155
- "static/chunks/740-cd38299e151d3ffc.js",
173
+ "static/chunks/740-2bcba39d841f2b16.js",
156
174
  "static/chunks/174-e7df14600b457a5c.js",
157
175
  "static/chunks/446-0591221372df7d49.js",
158
- "static/chunks/400-ba996d76e74a7368.js",
176
+ "static/chunks/400-f06f00619f22421e.js",
159
177
  "static/chunks/15-289cb38b53bafa4a.js",
160
178
  "static/css/d284a7454d6f6b06.css",
161
- "static/chunks/pages/knowledge/files-369d7ccf6a6e4e43.js"
179
+ "static/chunks/pages/knowledge/files-a3a4bbc49c980b46.js"
162
180
  ],
163
181
  "/knowledge/manage": [
164
182
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -169,13 +187,13 @@
169
187
  "static/chunks/382-dd7535429e16931b.js",
170
188
  "static/chunks/201-b16b4788042ed1aa.js",
171
189
  "static/chunks/227-442963c7b630eade.js",
172
- "static/chunks/740-cd38299e151d3ffc.js",
190
+ "static/chunks/740-2bcba39d841f2b16.js",
173
191
  "static/chunks/174-e7df14600b457a5c.js",
174
192
  "static/chunks/446-0591221372df7d49.js",
175
- "static/chunks/400-ba996d76e74a7368.js",
176
- "static/chunks/958-0793922b6b146891.js",
193
+ "static/chunks/400-f06f00619f22421e.js",
194
+ "static/chunks/958-66e2dcf301fb3c3f.js",
177
195
  "static/chunks/891-b6a172e1df7ab8c1.js",
178
- "static/chunks/pages/knowledge/manage-447ce42652c203f4.js"
196
+ "static/chunks/pages/knowledge/manage-64ad6cdce068edb1.js"
179
197
  ],
180
198
  "/knowledge/search": [
181
199
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -191,7 +209,7 @@
191
209
  "static/chunks/992-ea93dfa182a02a8e.js",
192
210
  "static/chunks/969-8843874536e7fd83.js",
193
211
  "static/css/d284a7454d6f6b06.css",
194
- "static/chunks/pages/knowledge/search-5a199ff773f7938b.js"
212
+ "static/chunks/pages/knowledge/search-fe148477dfe05966.js"
195
213
  ],
196
214
  "/models": [
197
215
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -202,12 +220,12 @@
202
220
  "static/chunks/382-dd7535429e16931b.js",
203
221
  "static/chunks/201-b16b4788042ed1aa.js",
204
222
  "static/chunks/668-662b7bc81e4ad48f.js",
205
- "static/chunks/740-cd38299e151d3ffc.js",
223
+ "static/chunks/740-2bcba39d841f2b16.js",
206
224
  "static/chunks/492-62671486700ed3f9.js",
207
225
  "static/chunks/455-e31becaaf948f868.js",
208
226
  "static/chunks/992-ea93dfa182a02a8e.js",
209
227
  "static/css/0e153583d22cc52e.css",
210
- "static/chunks/pages/models-fc67c4147d2aa3cb.js"
228
+ "static/chunks/pages/models-6131bc7596604158.js"
211
229
  ],
212
230
  "/overview": [
213
231
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -217,9 +235,9 @@
217
235
  "static/chunks/167-9f45623d7ea7ab43.js",
218
236
  "static/chunks/227-442963c7b630eade.js",
219
237
  "static/chunks/15-289cb38b53bafa4a.js",
220
- "static/chunks/958-0793922b6b146891.js",
238
+ "static/chunks/958-66e2dcf301fb3c3f.js",
221
239
  "static/chunks/851-1190cb42a0630eef.js",
222
- "static/chunks/pages/overview-558db8205a06d058.js"
240
+ "static/chunks/pages/overview-db5df4f0bec2a77c.js"
223
241
  ],
224
242
  "/prompt": [
225
243
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "34066df43f189c873234065c281336af",
7
- "previewModeSigningKey": "929498ca259a860733022cdfe5c5b7552164186318f6ad76e44e4db356b92693",
8
- "previewModeEncryptionKey": "f6393fda6e253746bc9a230c1995e7c68e1650b83a5c3dd3580d5b570a4c6d3a"
6
+ "previewModeId": "066f0f2ef7b0e0ba9df37a6f41e119d0",
7
+ "previewModeSigningKey": "389766dba17ffb40e4ed31ed33fed850bc7f2a546274f21b67735235c915da6f",
8
+ "previewModeEncryptionKey": "b7659d692f988e578e96784365f3b3e6abc917f167f49e0a78e44b8f04fb263c"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -98,6 +98,12 @@
98
98
  "routeKeys": {},
99
99
  "namedRegex": "^/document\\-roles(?:/)?$"
100
100
  },
101
+ {
102
+ "page": "/document-specs",
103
+ "regex": "^/document\\-specs(?:/)?$",
104
+ "routeKeys": {},
105
+ "namedRegex": "^/document\\-specs(?:/)?$"
106
+ },
101
107
  {
102
108
  "page": "/documents",
103
109
  "regex": "^/documents(?:/)?$",
@@ -1,9 +1,9 @@
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:()=>k,aY:()=>m});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021);let j=null;function k(){return j||(j=new d.MultiProjectManager),j}function l(a){let b=g.resolve(a);return b===g.resolve(g.join(h.homedir(),".customize-agent"))||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 m(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!l(b))return g.resolve(b);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=>!l(a))}finally{b.close()}}();return c.length>0?c[0]:a&&!l(process.cwd())?process.cwd():""}},73445:(a,b,c)=>{c.d(b,{Bh:()=>s,OX:()=>B,R1:()=>C,bV:()=>u,h0:()=>t,jG:()=>q});var d=c(73024),e=c(76760),f=c(48161),g=c(95393),h=c(23328),i=c(2323),j=c(89952);let k=[{id:"construction-organization-design",name:"施工组织设计",description:"根据招标文件、图纸、清单、表格和项目资料生成施工组织设计草稿。",category:"工程建设",outputTitle:"施工组织设计",chapters:[{id:"basis",title:"第一章 编制依据",purpose:"整理招标文件、图纸、规范和编制说明。",requiredFacts:["招标文件","图纸","规范标准"],queries:["招标文件 编制依据 技术规范 标准 图纸 合同","规范 标准 图纸 招标文件"]},{id:"overview",title:"第二章 工程概况",purpose:"提取工程名称、地点、规模、范围和建设条件。",requiredFacts:["工程名称","工程地点","工程规模","施工范围"],queries:["工程名称 工程地点 建设单位 工程规模 建筑面积 结构类型","工程概况 招标范围 项目规模"]},{id:"deployment",title:"第三章 施工部署",purpose:"形成项目组织、施工区段和总体部署。",requiredFacts:["施工部署","组织机构","施工段"],queries:["施工部署 项目组织机构 施工段划分 总体安排","施工组织 施工顺序 施工流水"]},{id:"schedule",title:"第四章 施工进度计划及保证措施",purpose:"提取工期、节点、进度要求并形成保证措施。",requiredFacts:["工期要求","节点工期"],queries:["工期要求 开工 竣工 进度计划 节点工期","工期 进度 保证措施"]},{id:"preparation",title:"第五章 施工准备",purpose:"整理技术、现场、材料、机械和劳动力准备。",requiredFacts:["技术准备","现场准备","材料准备"],queries:["施工准备 技术准备 现场准备 材料准备 机械准备","临设 水电 进场 准备"]},{id:"methods",title:"第六章 主要分部分项工程施工方案",purpose:"依据工程范围生成主要施工方法。",requiredFacts:["主要分部分项工程","施工工艺"],queries:["土方 基础 主体 砌体 装饰 安装 道路 管线 主要施工方法","分部分项 施工工艺 技术措施"]},{id:"quality",title:"第七章 质量保证体系及措施",purpose:"形成质量目标、体系和保证措施。",requiredFacts:["质量目标","质量标准"],queries:["质量目标 质量标准 验收规范 质量保证措施","质量管理 检验 试验"]},{id:"safety",title:"第八章 安全生产管理体系及措施",purpose:"形成安全目标、风险控制和应急管理。",requiredFacts:["安全目标","安全要求"],queries:["安全目标 安全文明施工 安全管理 危险源 应急预案","安全生产 风险 防护"]},{id:"civilized",title:"第九章 文明施工及环境保护措施",purpose:"整理文明施工、扬尘、噪声、污水和固废措施。",requiredFacts:["文明施工","环境保护"],queries:["文明施工 环境保护 扬尘 噪声 污水 固废","绿色施工 环保 控制措施"]},{id:"resources",title:"第十章 劳动力、材料、机械设备投入计划",purpose:"提取资源计划和相关表格。",requiredFacts:["劳动力计划","材料计划","机械设备计划"],queries:["劳动力计划 材料计划 机械设备计划 主要设备 表格","资源投入 机械 劳动力 材料"]},{id:"layout",title:"第十一章 施工总平面布置",purpose:"整理临设、道路、水电、堆场和平面布置要求。",requiredFacts:["施工总平面布置"],queries:["施工平面布置 临时设施 道路 水电 堆场","总平面布置 临时用地"]},{id:"season",title:"第十二章 季节性施工措施",purpose:"形成雨季、冬季、高温、防汛等措施。",requiredFacts:["季节性施工要求"],queries:["雨季施工 冬季施工 高温施工 台风 防汛","季节性施工 措施"]},{id:"emergency",title:"第十三章 应急预案",purpose:"形成风险、组织、响应和救援措施。",requiredFacts:["应急预案"],queries:["应急预案 风险 应急组织 救援措施","事故 应急 响应"]},{id:"appendix",title:"第十四章 附表及附件",purpose:"汇总附件、表格、图纸和来源清单。",requiredFacts:["附表","附件"],queries:["附表 计划表 机械表 劳动力表 进度表","附件 表格 清单 图纸"]}],builtIn:!0}];function l(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function m(){return e.join(l(),"document-templates.json")}function n(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,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 o(){try{let a=m();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(n)}catch{return[]}}function p(a){d.writeFileSync(m(),JSON.stringify(a.map(n),null,2),"utf-8")}function q(){return[...k,...o()]}function r(a){return q().find(b=>b.id===a)}function s(a){let b=n(a);if(k.some(a=>a.id===b.id))throw Error("Built-in template cannot be overwritten");let c=o().filter(a=>a.id!==b.id);return c.push(b),p(c),b}function t(a){if(k.some(b=>b.id===a))throw Error("Built-in template cannot be deleted");p(o().filter(b=>b.id!==a))}function u(a){let b=r(a);if(!b)throw Error("Document template not found");let c=n({...b,id:`${b.id}-copy-${Date.now()}`,name:`${b.name} Copy`,builtIn:!1}),d=o();return d.push(c),p(d),c}function v(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 w(a){return`- ${a.filePath}(score=${a.score.toFixed(3)}):${a.content.replace(/\s+/gu," ").slice(0,260)}`}function x(a){if(a.projectRoleConfigId){let b=(0,j.Mu)(a.projectRoleConfigId),c=(0,j.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?.resourceId).map(a=>({promptId:a.resourceId,roleId:a.id}))}return a.promptBindings?.length?a.promptBindings:(a.promptIds??[]).map(a=>({promptId:a,roleId:"chapter_generation"}))}function y(a){if(a.projectRoleConfigId){let b=(0,j.Mu)(a.projectRoleConfigId),c=(0,j.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?.resourceId).map(a=>({filePath:a.resourceId,roleId:a.id}))}return a.fileBindings?.length?a.fileBindings:(a.boundFilePaths??[]).map(a=>({filePath:a,roleId:"project_fact"}))}async function z(a,b){try{let c=(0,i.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 h=(0,g.createProvider)(e.provider,{baseUrl:f.baseUrl,apiKey:f.apiKey,modelName:e.name}),j=(await h.chat([{role:"system",content:`${a}
2
- 只返回 JSON,不要返回 markdown。`},{role:"user",content:b}],{temperature:0})).content.trim().replace(/^```json\s*/u,"").replace(/^```\s*/u,"").replace(/```$/u,"").trim();return JSON.parse(j)}catch{return}}async function A(a,b){let c=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],d=a.slice(0,20).map(a=>`文件:${a.filePath}
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:()=>k,aY:()=>m});var d=c(19898),e=c(87550),f=c.n(e),g=c(33873),h=c(21820),i=c(29021);let j=null;function k(){return j||(j=new d.MultiProjectManager),j}function l(a){let b=g.resolve(a);return b===g.resolve(g.join(h.homedir(),".customize-agent"))||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 m(a=!1){let b=process.env.CUSTOMIZE_PROJECT_ROOT??process.env.INIT_CWD;if(b&&i.existsSync(b)&&!l(b))return g.resolve(b);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=>!l(a))}finally{b.close()}}();return c.length>0?c[0]:a&&!l(process.cwd())?process.cwd():""}},57367:(a,b,c)=>{c.d(b,{Co:()=>l,EK:()=>n,ER:()=>o,py:()=>m});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-specs.json")}function h(a){return(a||`spec-${Date.now()}`).replace(/[^a-zA-Z0-9_-]/gu,"-").slice(0,80)}function i(a){return{id:h(a.id),name:a.name||"未命名规范包",description:a.description||"",factFields:Array.isArray(a.factFields)?a.factFields.filter(a=>a.name).map(a=>({id:h(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:h(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:h(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||""}}function j(){try{let a=g();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(i)}catch{return[]}}function k(a){d.writeFileSync(g(),JSON.stringify(a.map(i),null,2),"utf-8")}function l(){return j()}function m(a){if(a)return j().find(b=>b.id===a)}function n(a){let b=i(a),c=j().filter(a=>a.id!==b.id);return c.push(b),k(c),b}function o(a){k(j().filter(b=>b.id!==a))}},73445:(a,b,c)=>{c.d(b,{Bh:()=>u,OX:()=>E,R1:()=>F,bV:()=>w,h0:()=>v,jG:()=>s});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:"construction-organization-design",name:"施工组织设计",description:"根据招标文件、图纸、清单、表格和项目资料生成施工组织设计草稿。",category:"工程建设",outputTitle:"施工组织设计",chapters:[{id:"basis",title:"第一章 编制依据",purpose:"整理招标文件、图纸、规范和编制说明。",requiredFacts:["招标文件","图纸","规范标准"],queries:["招标文件 编制依据 技术规范 标准 图纸 合同","规范 标准 图纸 招标文件"]},{id:"overview",title:"第二章 工程概况",purpose:"提取工程名称、地点、规模、范围和建设条件。",requiredFacts:["工程名称","工程地点","工程规模","施工范围"],queries:["工程名称 工程地点 建设单位 工程规模 建筑面积 结构类型","工程概况 招标范围 项目规模"]},{id:"deployment",title:"第三章 施工部署",purpose:"形成项目组织、施工区段和总体部署。",requiredFacts:["施工部署","组织机构","施工段"],queries:["施工部署 项目组织机构 施工段划分 总体安排","施工组织 施工顺序 施工流水"]},{id:"schedule",title:"第四章 施工进度计划及保证措施",purpose:"提取工期、节点、进度要求并形成保证措施。",requiredFacts:["工期要求","节点工期"],queries:["工期要求 开工 竣工 进度计划 节点工期","工期 进度 保证措施"]},{id:"preparation",title:"第五章 施工准备",purpose:"整理技术、现场、材料、机械和劳动力准备。",requiredFacts:["技术准备","现场准备","材料准备"],queries:["施工准备 技术准备 现场准备 材料准备 机械准备","临设 水电 进场 准备"]},{id:"methods",title:"第六章 主要分部分项工程施工方案",purpose:"依据工程范围生成主要施工方法。",requiredFacts:["主要分部分项工程","施工工艺"],queries:["土方 基础 主体 砌体 装饰 安装 道路 管线 主要施工方法","分部分项 施工工艺 技术措施"]},{id:"quality",title:"第七章 质量保证体系及措施",purpose:"形成质量目标、体系和保证措施。",requiredFacts:["质量目标","质量标准"],queries:["质量目标 质量标准 验收规范 质量保证措施","质量管理 检验 试验"]},{id:"safety",title:"第八章 安全生产管理体系及措施",purpose:"形成安全目标、风险控制和应急管理。",requiredFacts:["安全目标","安全要求"],queries:["安全目标 安全文明施工 安全管理 危险源 应急预案","安全生产 风险 防护"]},{id:"civilized",title:"第九章 文明施工及环境保护措施",purpose:"整理文明施工、扬尘、噪声、污水和固废措施。",requiredFacts:["文明施工","环境保护"],queries:["文明施工 环境保护 扬尘 噪声 污水 固废","绿色施工 环保 控制措施"]},{id:"resources",title:"第十章 劳动力、材料、机械设备投入计划",purpose:"提取资源计划和相关表格。",requiredFacts:["劳动力计划","材料计划","机械设备计划"],queries:["劳动力计划 材料计划 机械设备计划 主要设备 表格","资源投入 机械 劳动力 材料"]},{id:"layout",title:"第十一章 施工总平面布置",purpose:"整理临设、道路、水电、堆场和平面布置要求。",requiredFacts:["施工总平面布置"],queries:["施工平面布置 临时设施 道路 水电 堆场","总平面布置 临时用地"]},{id:"season",title:"第十二章 季节性施工措施",purpose:"形成雨季、冬季、高温、防汛等措施。",requiredFacts:["季节性施工要求"],queries:["雨季施工 冬季施工 高温施工 台风 防汛","季节性施工 措施"]},{id:"emergency",title:"第十三章 应急预案",purpose:"形成风险、组织、响应和救援措施。",requiredFacts:["应急预案"],queries:["应急预案 风险 应急组织 救援措施","事故 应急 响应"]},{id:"appendix",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")}function s(){return[...m,...q()]}function t(a){return s().find(b=>b.id===a)}function u(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 v(a){if(m.some(b=>b.id===a))throw Error("Built-in template cannot be deleted");r(q().filter(b=>b.id!==a))}function w(a){let b=t(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 x(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 y(a){return`- ${a.filePath}(score=${a.score.toFixed(3)}):${a.content.replace(/\s+/gu," ").slice(0,260)}`}function z(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?.resourceId).map(a=>({promptId:a.resourceId,roleId:a.id}))}return a.promptBindings?.length?a.promptBindings:(a.promptIds??[]).map(a=>({promptId:a,roleId:"chapter_generation"}))}function A(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?.resourceId).map(a=>({filePath:a.resourceId,roleId:a.id}))}return a.fileBindings?.length?a.fileBindings:(a.boundFilePaths??[]).map(a=>({filePath:a,roleId:"project_fact"}))}async function B(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}
2
+ 只返回 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 C(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
3
  角色:${a.roleId||""}
4
4
  处理:${a.processingType||""}
5
- 内容:${a.content.slice(0,1200)}`).join("\n\n---\n\n");if(!d.trim())return{facts:[],stages:c};let e=await z(b||"你是工程文档事实抽取器。",`请从资料中抽取工程文档结构化事实,返回 {"facts":[{"key":"工程名称","value":"...","sourceFile":"...","roleId":"...","processingType":"project_fact","confidence":0.8}]}。
5
+ 内容:${a.content.slice(0,1200)}`).join("\n\n---\n\n");if(!d.trim())return{facts:[],stages:c};let e=await B(b||"你是工程文档事实抽取器。",`请从资料中抽取工程文档结构化事实,返回 {"facts":[{"key":"工程名称","value":"...","sourceFile":"...","roleId":"...","processingType":"project_fact","confidence":0.8}]}。
6
6
 
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}}async function B(a){let b=r(a.templateId);if(!b)throw Error("Document template not found");let c=a.projectRoot||(0,h.aY)();if(!c)throw Error("No knowledge base project found");let f=(0,h.Qh)(),g=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),i=x(b),k=y(b),m=(function(a=[]){let b;if(0===a.length)return[];let c=[];try{let a=JSON.parse(d.readFileSync(e.join(l(),"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("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})(i).map(a=>`## [${a.roleId}] ${a.name}
8
- ${a.content}`).join("\n\n"),n=new Set(k.map(a=>a.filePath)),o=(0,j.XB)("file"),p=new Map(k.map(a=>[a.filePath,a.roleId])),q=new Map(k.map(a=>[a.filePath,o.find(b=>b.id===a.roleId)?.processingType||"reference"])),s=await f.getProject(c);await s.incrementalIndex();let t=[],u=[],z=[];for(let a of b.chapters){let d=[];for(let e of a.queries.length>0?a.queries:[b.name,b.outputTitle,a.title,...k.map(a=>a.filePath)]){let b=await f.search(c,e,{scope:"project",limit:Math.max(g,n.size>0?30:g),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});d.push(...b.results.filter(a=>0===n.size||n.has(a.filePath)).map(b=>({chapterId:a.id,filePath:b.filePath,score:b.score,content:b.content,roleId:p.get(b.filePath),processingType:q.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})))}for(let b of n){let c=s.getFileDetail(b);c&&d.push(...c.chunks.slice(0,Math.max(g,20)).map(b=>({chapterId:a.id,filePath:c.file.relativePath,score:1,content:b.content,roleId:p.get(c.file.relativePath),processingType:q.get(c.file.relativePath),sectionTitle:b.sectionTitle,source:"bound-file"})))}let e=v(d,g);u.push(...e);let h=a.requiredFacts.filter(a=>!e.some(b=>b.content.includes(a.replace(/要求|计划|目标|标准/gu,""))||b.content.includes(a)));for(let b of(0===e.length&&z.push(`${a.title}:未检索到明确资料依据`),h))z.push(`${a.title}:${b} 未检索到明确依据`);let i=[`## ${a.title}`,"",m?`### 模板绑定提示词规则
9
- ${m.slice(0,3e3)}`:"","",e.length>0?`本章根据模板绑定资料围绕“${a.purpose||b.description}”整理。`:"模板绑定资料未检索到明确内容,需进一步确认。","",e.length>0?"### 资料依据":"",...e.map(w),"",h.length>0?"### 待确认事项":"",...h.map(a=>`- ${a}:资料未提供,需进一步确认。`)].filter(Boolean).join("\n");t.push({id:a.id,title:a.title,content:i,evidence:e,missingFacts:h})}let B=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,u),C=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}(u),D=await A(u,m),E=[...C,...D.facts],F=function(a){let b=[];for(let c of a.filter(a=>"table"===a.processingType)){let a=c.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(a.length<2)continue;let d=a[0].includes("|")?"|":a[0].includes(" ")?" ":",",e=a.map(a=>a.split(d).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);e.length<2||b.push({tableType:c.roleId||"table",headers:e[0],rows:e.slice(1,80),sourceFile:c.filePath,sourceRange:c.sectionTitle})}return b}(u);for(let a of E)B[a.key]=`${a.value}(来源:${a.sourceFile},角色:${a.roleId})`;let G=new Map;for(let a of u)G.set(a.filePath,(G.get(a.filePath)??0)+1);let H=[...G.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),I=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:[]}}(E,F,z),J=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===y(d).length&&f.push("模板未绑定任何知识库文件"),d&&0===x(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}}(t,B,E,b),K=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}(J,I,t),L=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}}(K,I,t),M=[...D.stages,{type:"chapter_generation",roleId:"document-workflow",status:"success",message:`生成 ${t.length} 个章节`},{type:"validation",roleId:"document-workflow",status:J.errors.length>0?"failed":"success",message:`错误 ${J.errors.length},警告 ${J.warnings.length}`},{type:"formatting",roleId:"document-workflow",status:"success",message:"已生成正式排版 Markdown"}],N={templateId:b.id,templateName:b.name,title:b.outputTitle,requirement:a.requirement||(i.length?`使用模板绑定提示词:${i.map(a=>`${a.promptId}(${a.roleId})`).join(", ")}`:""),facts:B,structuredFacts:E,factsModel:I,chapters:t,sources:H,missingItems:[...new Set(z)],validation:J,validationIssues:K,executionStages:M,exportGate:L,generatedAt:Date.now()};return{...N,markdown:['<div class="document-cover">',`# ${N.title}`,"",`**文档版本**:V1.0 `,`**生成时间**:${new Date(N.generatedAt).toLocaleString("zh-CN")} `,`**生成要求**:${N.requirement||"未填写"} `,"</div>","",'<div class="page-break"></div>',"","## 目录","",...N.chapters.map((a,b)=>`${b+1}. ${a.title}`),"",'<div class="page-break"></div>',"","## 结构化事实表","",Object.keys(N.facts).length>0?["| 事实项 | 依据 |","|---|---|",...Object.entries(N.facts).map(([a,b])=>`| ${a} | ${b.replace(/\|/gu," ")} |`)].join("\n"):"未抽取到明确事实,需人工确认。","",...N.chapters.flatMap(a=>[a.content,""]),"## 资料来源清单","","| 文件 | 引用次数 |","|---|---:|",...N.sources.map(a=>`| ${a.filePath} | ${a.count} |`),"","## 缺失项与需确认事项","",...N.missingItems.length>0?N.missingItems.map(a=>`- ${a}`):["- 暂未发现完全缺失章节;仍需人工复核关键数据。"],"","## 校验结果","",...N.validation.warnings.map(a=>`- 警告:${a}`),...N.validation.errors.map(a=>`- 错误:${a}`),"","## 严格校验清单","",...N.validationIssues.map(a=>`- ${a.level.toUpperCase()}:${a.message}${a.suggestion?`(建议:${a.suggestion})`:""}`)].join("\n")}}async function C(a){let b=r(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,h.aY)();if(!d)throw Error("No knowledge base project found");let e=(0,h.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 i=v(g,f),j=c.requiredFacts.filter(a=>!i.some(b=>b.content.includes(a.replace(/要求|计划|目标|标准/gu,""))||b.content.includes(a))),k=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",i.length>0?`本章根据知识库资料围绕“${c.purpose}”重新整理。`:"资料未提供,需进一步确认。","",i.length>0?"### 资料依据":"",...i.map(w),"",j.length>0?"### 待确认事项":"",...j.map(a=>`- ${a}:资料未提供,需进一步确认。`)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:k,evidence:i,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)}}};
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 D(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 E(a){let b=t(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=z(b),m=A(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("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}
8
+ ${a.content}`).join("\n\n"),q=new Set(m.map(a=>a.filePath)),r=(0,k.XB)("file"),s=new Map(m.map(a=>[a.filePath,a.roleId])),u=new Map(m.map(a=>[a.filePath,r.find(b=>b.id===a.roleId)?.processingType||"reference"])),v=await g.getProject(c);await v.incrementalIndex();let w=[],B=[],E=[];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,q.size>0?30:h),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});d.push(...b.results.filter(a=>0===q.size||q.has(a.filePath)).map(b=>({chapterId:a.id,filePath:b.filePath,score:b.score,content:b.content,roleId:s.get(b.filePath),processingType:u.get(b.filePath),sectionTitle:b.sectionTitle,source:b.source})))}for(let b of q){let c=v.getFileDetail(b);c&&d.push(...c.chunks.slice(0,Math.max(h,20)).map(b=>({chapterId:a.id,filePath:c.file.relativePath,score:1,content:b.content,roleId:s.get(c.file.relativePath),processingType:u.get(c.file.relativePath),sectionTitle:b.sectionTitle,source:"bound-file"})))}let e=x(d,h);B.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&&E.push(`${a.title}:未检索到明确资料依据`),f))E.push(`${a.title}:${b} 未检索到明确依据`);let i=[`## ${a.title}`,"",p?`### 模板绑定提示词规则
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)}}};