@customize-agent/server 3.0.7 → 3.0.8

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 (50) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +41 -41
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/3445.js +9 -3
  5. package/.next/server/chunks/8204.js +1 -1
  6. package/.next/server/chunks/9270.js +1 -1
  7. package/.next/server/chunks/9301.js +2 -2
  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/config/healthCheck.js +1 -1
  12. package/.next/server/pages/api/documents/chapter/regenerate.js +1 -1
  13. package/.next/server/pages/api/documents/chapter/regenerate.js.nft.json +1 -1
  14. package/.next/server/pages/api/documents/export.js +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/templates.js +1 -1
  18. package/.next/server/pages/api/documents/templates.js.nft.json +1 -1
  19. package/.next/server/pages/context/long-term.html +1 -1
  20. package/.next/server/pages/context/short-term.html +1 -1
  21. package/.next/server/pages/document-roles.html +1 -1
  22. package/.next/server/pages/documents.html +1 -1
  23. package/.next/server/pages/index.html +1 -1
  24. package/.next/server/pages/knowledge/file-detail.html +1 -1
  25. package/.next/server/pages/knowledge/files.html +1 -1
  26. package/.next/server/pages/knowledge/manage.html +1 -1
  27. package/.next/server/pages/knowledge/search.html +1 -1
  28. package/.next/server/pages/knowledge.html +1 -1
  29. package/.next/server/pages/models.html +1 -1
  30. package/.next/server/pages/overview.html +1 -1
  31. package/.next/server/pages/prompt.html +1 -1
  32. package/.next/server/pages/settings.html +1 -1
  33. package/.next/server/pages-manifest.json +21 -21
  34. package/.next/static/{-1MhpCkVlBlMNQ5M2Q93Q → TPNkWJVdxfNk1foFSh7Uw}/_buildManifest.js +1 -1
  35. package/.next/static/chunks/{15-bcec49d2f217d120.js → 15-c0cd098235feea60.js} +1 -1
  36. package/.next/static/chunks/174-4fe307a1ae432ca3.js +10 -0
  37. package/.next/static/chunks/{400-f85b695e54242828.js → 400-82e564931b06011b.js} +1 -1
  38. package/.next/static/chunks/{425-6e7a2c349eb6a9e5.js → 425-fe4960449c1faceb.js} +1 -1
  39. package/.next/static/chunks/{668-fd17ed5d74a375f1.js → 668-ff3d8f8bff59e606.js} +1 -1
  40. package/.next/static/chunks/pages/{_app-aad84f8b960c9413.js → _app-b70d02eb20e482ce.js} +1 -1
  41. package/.next/static/chunks/pages/documents-56ca6f45e69c19e5.js +1 -0
  42. package/.next/static/chunks/pages/knowledge/{files-c76676b87039634b.js → files-1d99abf5b4d33896.js} +1 -1
  43. package/.next/static/chunks/pages/knowledge-b3ef77e79801287c.js +1 -0
  44. package/.next/static/chunks/pages/{overview-e6b6ba473dcae4a4.js → overview-f7614487f399659f.js} +1 -1
  45. package/.next/static/chunks/pages/{prompt-6fec486a320cc621.js → prompt-54f8cf8df33e3c2e.js} +1 -1
  46. package/package.json +4 -4
  47. package/.next/static/chunks/174-002febc1c103bc03.js +0 -10
  48. package/.next/static/chunks/pages/documents-3e094ea44a8886be.js +0 -1
  49. package/.next/static/chunks/pages/knowledge-81fd1e907a6fcb84.js +0 -1
  50. /package/.next/static/{-1MhpCkVlBlMNQ5M2Q93Q → TPNkWJVdxfNk1foFSh7Uw}/_ssgManifest.js +0 -0
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- -1MhpCkVlBlMNQ5M2Q93Q
1
+ TPNkWJVdxfNk1foFSh7Uw
@@ -5,8 +5,8 @@
5
5
  "devFiles": [],
6
6
  "ampDevFiles": [],
7
7
  "lowPriorityFiles": [
8
- "static/-1MhpCkVlBlMNQ5M2Q93Q/_buildManifest.js",
9
- "static/-1MhpCkVlBlMNQ5M2Q93Q/_ssgManifest.js"
8
+ "static/TPNkWJVdxfNk1foFSh7Uw/_buildManifest.js",
9
+ "static/TPNkWJVdxfNk1foFSh7Uw/_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-aad84f8b960c9413.js"
25
+ "static/chunks/pages/_app-b70d02eb20e482ce.js"
26
26
  ],
27
27
  "/_error": [
28
28
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -36,14 +36,14 @@
36
36
  "static/chunks/main-1a03005b3754c708.js",
37
37
  "static/chunks/260-b4f5be8cad9d5eb8.js",
38
38
  "static/chunks/544-b1e7fb125bd5ba92.js",
39
- "static/chunks/425-6e7a2c349eb6a9e5.js",
40
- "static/chunks/668-fd17ed5d74a375f1.js",
39
+ "static/chunks/425-fe4960449c1faceb.js",
40
+ "static/chunks/668-ff3d8f8bff59e606.js",
41
41
  "static/chunks/227-5d0e79ce4e00983e.js",
42
42
  "static/chunks/740-2d2619c22f2573ad.js",
43
- "static/chunks/174-002febc1c103bc03.js",
43
+ "static/chunks/174-4fe307a1ae432ca3.js",
44
44
  "static/chunks/492-764fcf49f0c198bc.js",
45
45
  "static/chunks/446-c2604ca982998533.js",
46
- "static/chunks/400-f85b695e54242828.js",
46
+ "static/chunks/400-82e564931b06011b.js",
47
47
  "static/chunks/455-3fed2dde34ca1eef.js",
48
48
  "static/chunks/257-43a44acbd7b6e330.js",
49
49
  "static/chunks/pages/context/long-term-7dd213ed6aaf6901.js"
@@ -54,14 +54,14 @@
54
54
  "static/chunks/main-1a03005b3754c708.js",
55
55
  "static/chunks/260-b4f5be8cad9d5eb8.js",
56
56
  "static/chunks/544-b1e7fb125bd5ba92.js",
57
- "static/chunks/425-6e7a2c349eb6a9e5.js",
58
- "static/chunks/668-fd17ed5d74a375f1.js",
57
+ "static/chunks/425-fe4960449c1faceb.js",
58
+ "static/chunks/668-ff3d8f8bff59e606.js",
59
59
  "static/chunks/227-5d0e79ce4e00983e.js",
60
60
  "static/chunks/740-2d2619c22f2573ad.js",
61
- "static/chunks/174-002febc1c103bc03.js",
61
+ "static/chunks/174-4fe307a1ae432ca3.js",
62
62
  "static/chunks/492-764fcf49f0c198bc.js",
63
63
  "static/chunks/446-c2604ca982998533.js",
64
- "static/chunks/400-f85b695e54242828.js",
64
+ "static/chunks/400-82e564931b06011b.js",
65
65
  "static/chunks/455-3fed2dde34ca1eef.js",
66
66
  "static/chunks/257-43a44acbd7b6e330.js",
67
67
  "static/chunks/pages/context/short-term-70f45e74d6778422.js"
@@ -72,11 +72,11 @@
72
72
  "static/chunks/main-1a03005b3754c708.js",
73
73
  "static/chunks/260-b4f5be8cad9d5eb8.js",
74
74
  "static/chunks/544-b1e7fb125bd5ba92.js",
75
- "static/chunks/425-6e7a2c349eb6a9e5.js",
76
- "static/chunks/668-fd17ed5d74a375f1.js",
75
+ "static/chunks/425-fe4960449c1faceb.js",
76
+ "static/chunks/668-ff3d8f8bff59e606.js",
77
77
  "static/chunks/227-5d0e79ce4e00983e.js",
78
78
  "static/chunks/740-2d2619c22f2573ad.js",
79
- "static/chunks/174-002febc1c103bc03.js",
79
+ "static/chunks/174-4fe307a1ae432ca3.js",
80
80
  "static/chunks/492-764fcf49f0c198bc.js",
81
81
  "static/chunks/455-3fed2dde34ca1eef.js",
82
82
  "static/chunks/846-7f8d40514b6985f3.js",
@@ -88,22 +88,22 @@
88
88
  "static/chunks/main-1a03005b3754c708.js",
89
89
  "static/chunks/260-b4f5be8cad9d5eb8.js",
90
90
  "static/chunks/544-b1e7fb125bd5ba92.js",
91
- "static/chunks/425-6e7a2c349eb6a9e5.js",
92
- "static/chunks/668-fd17ed5d74a375f1.js",
91
+ "static/chunks/425-fe4960449c1faceb.js",
92
+ "static/chunks/668-ff3d8f8bff59e606.js",
93
93
  "static/chunks/227-5d0e79ce4e00983e.js",
94
94
  "static/chunks/740-2d2619c22f2573ad.js",
95
- "static/chunks/174-002febc1c103bc03.js",
95
+ "static/chunks/174-4fe307a1ae432ca3.js",
96
96
  "static/chunks/492-764fcf49f0c198bc.js",
97
97
  "static/chunks/455-3fed2dde34ca1eef.js",
98
98
  "static/chunks/292-a1cc113f5092109b.js",
99
99
  "static/chunks/846-7f8d40514b6985f3.js",
100
- "static/chunks/pages/documents-3e094ea44a8886be.js"
100
+ "static/chunks/pages/documents-56ca6f45e69c19e5.js"
101
101
  ],
102
102
  "/knowledge": [
103
103
  "static/chunks/webpack-77d10b4726f13aa5.js",
104
104
  "static/chunks/framework-b5223c1542334872.js",
105
105
  "static/chunks/main-1a03005b3754c708.js",
106
- "static/chunks/pages/knowledge-81fd1e907a6fcb84.js"
106
+ "static/chunks/pages/knowledge-b3ef77e79801287c.js"
107
107
  ],
108
108
  "/knowledge/file-detail": [
109
109
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -111,13 +111,13 @@
111
111
  "static/chunks/main-1a03005b3754c708.js",
112
112
  "static/chunks/260-b4f5be8cad9d5eb8.js",
113
113
  "static/chunks/544-b1e7fb125bd5ba92.js",
114
- "static/chunks/425-6e7a2c349eb6a9e5.js",
115
- "static/chunks/668-fd17ed5d74a375f1.js",
114
+ "static/chunks/425-fe4960449c1faceb.js",
115
+ "static/chunks/668-ff3d8f8bff59e606.js",
116
116
  "static/chunks/227-5d0e79ce4e00983e.js",
117
117
  "static/chunks/740-2d2619c22f2573ad.js",
118
- "static/chunks/174-002febc1c103bc03.js",
118
+ "static/chunks/174-4fe307a1ae432ca3.js",
119
119
  "static/chunks/446-c2604ca982998533.js",
120
- "static/chunks/400-f85b695e54242828.js",
120
+ "static/chunks/400-82e564931b06011b.js",
121
121
  "static/chunks/292-a1cc113f5092109b.js",
122
122
  "static/chunks/969-7ca2307001c18a53.js",
123
123
  "static/chunks/517-c6a8c0e680dafa46.js",
@@ -130,16 +130,16 @@
130
130
  "static/chunks/main-1a03005b3754c708.js",
131
131
  "static/chunks/260-b4f5be8cad9d5eb8.js",
132
132
  "static/chunks/544-b1e7fb125bd5ba92.js",
133
- "static/chunks/425-6e7a2c349eb6a9e5.js",
134
- "static/chunks/668-fd17ed5d74a375f1.js",
133
+ "static/chunks/425-fe4960449c1faceb.js",
134
+ "static/chunks/668-ff3d8f8bff59e606.js",
135
135
  "static/chunks/227-5d0e79ce4e00983e.js",
136
136
  "static/chunks/740-2d2619c22f2573ad.js",
137
- "static/chunks/174-002febc1c103bc03.js",
137
+ "static/chunks/174-4fe307a1ae432ca3.js",
138
138
  "static/chunks/446-c2604ca982998533.js",
139
- "static/chunks/400-f85b695e54242828.js",
140
- "static/chunks/15-bcec49d2f217d120.js",
139
+ "static/chunks/400-82e564931b06011b.js",
140
+ "static/chunks/15-c0cd098235feea60.js",
141
141
  "static/css/d284a7454d6f6b06.css",
142
- "static/chunks/pages/knowledge/files-c76676b87039634b.js"
142
+ "static/chunks/pages/knowledge/files-1d99abf5b4d33896.js"
143
143
  ],
144
144
  "/knowledge/manage": [
145
145
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -147,12 +147,12 @@
147
147
  "static/chunks/main-1a03005b3754c708.js",
148
148
  "static/chunks/260-b4f5be8cad9d5eb8.js",
149
149
  "static/chunks/544-b1e7fb125bd5ba92.js",
150
- "static/chunks/425-6e7a2c349eb6a9e5.js",
150
+ "static/chunks/425-fe4960449c1faceb.js",
151
151
  "static/chunks/227-5d0e79ce4e00983e.js",
152
152
  "static/chunks/740-2d2619c22f2573ad.js",
153
- "static/chunks/174-002febc1c103bc03.js",
153
+ "static/chunks/174-4fe307a1ae432ca3.js",
154
154
  "static/chunks/446-c2604ca982998533.js",
155
- "static/chunks/400-f85b695e54242828.js",
155
+ "static/chunks/400-82e564931b06011b.js",
156
156
  "static/chunks/958-ed6bd7651b040ee8.js",
157
157
  "static/chunks/891-ff3efd43c148bd2c.js",
158
158
  "static/chunks/pages/knowledge/manage-21b21d79b5cf4cd5.js"
@@ -163,8 +163,8 @@
163
163
  "static/chunks/main-1a03005b3754c708.js",
164
164
  "static/chunks/260-b4f5be8cad9d5eb8.js",
165
165
  "static/chunks/544-b1e7fb125bd5ba92.js",
166
- "static/chunks/425-6e7a2c349eb6a9e5.js",
167
- "static/chunks/668-fd17ed5d74a375f1.js",
166
+ "static/chunks/425-fe4960449c1faceb.js",
167
+ "static/chunks/668-ff3d8f8bff59e606.js",
168
168
  "static/chunks/227-5d0e79ce4e00983e.js",
169
169
  "static/chunks/292-a1cc113f5092109b.js",
170
170
  "static/chunks/992-52509d4b96af607f.js",
@@ -178,8 +178,8 @@
178
178
  "static/chunks/main-1a03005b3754c708.js",
179
179
  "static/chunks/260-b4f5be8cad9d5eb8.js",
180
180
  "static/chunks/544-b1e7fb125bd5ba92.js",
181
- "static/chunks/425-6e7a2c349eb6a9e5.js",
182
- "static/chunks/668-fd17ed5d74a375f1.js",
181
+ "static/chunks/425-fe4960449c1faceb.js",
182
+ "static/chunks/668-ff3d8f8bff59e606.js",
183
183
  "static/chunks/740-2d2619c22f2573ad.js",
184
184
  "static/chunks/492-764fcf49f0c198bc.js",
185
185
  "static/chunks/455-3fed2dde34ca1eef.js",
@@ -195,10 +195,10 @@
195
195
  "static/chunks/260-b4f5be8cad9d5eb8.js",
196
196
  "static/chunks/544-b1e7fb125bd5ba92.js",
197
197
  "static/chunks/227-5d0e79ce4e00983e.js",
198
- "static/chunks/15-bcec49d2f217d120.js",
198
+ "static/chunks/15-c0cd098235feea60.js",
199
199
  "static/chunks/958-ed6bd7651b040ee8.js",
200
200
  "static/chunks/129-abc5698c238befa3.js",
201
- "static/chunks/pages/overview-e6b6ba473dcae4a4.js"
201
+ "static/chunks/pages/overview-f7614487f399659f.js"
202
202
  ],
203
203
  "/prompt": [
204
204
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -206,11 +206,11 @@
206
206
  "static/chunks/main-1a03005b3754c708.js",
207
207
  "static/chunks/260-b4f5be8cad9d5eb8.js",
208
208
  "static/chunks/544-b1e7fb125bd5ba92.js",
209
- "static/chunks/425-6e7a2c349eb6a9e5.js",
210
- "static/chunks/668-fd17ed5d74a375f1.js",
209
+ "static/chunks/425-fe4960449c1faceb.js",
210
+ "static/chunks/668-ff3d8f8bff59e606.js",
211
211
  "static/chunks/492-764fcf49f0c198bc.js",
212
212
  "static/chunks/446-c2604ca982998533.js",
213
- "static/chunks/pages/prompt-6fec486a320cc621.js"
213
+ "static/chunks/pages/prompt-54f8cf8df33e3c2e.js"
214
214
  ],
215
215
  "/settings": [
216
216
  "static/chunks/webpack-77d10b4726f13aa5.js",
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "5fdf95213cb31df7b62c24bddd93ef5d",
7
- "previewModeSigningKey": "d8fafccb867e4723112855e7f3742cee9bf4792db412545929dea8cb1cef9b01",
8
- "previewModeEncryptionKey": "f3751ca41ccfc418a83d5e26e224032749c537e7a06af7e8c539b5766304898a"
6
+ "previewModeId": "0a0f1ddffa9019f2052e47488852b4e9",
7
+ "previewModeSigningKey": "cb13b8a8e40581efeb825ccedbff7376b3934475b6beefc633e3a08e97c63bb9",
8
+ "previewModeEncryptionKey": "9fb46ad3aefefac4f5bdccd3e15c60bc508d8108f32f3799546237af465c0b5a"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -1,3 +1,9 @@
1
- "use strict";exports.id=3445,exports.ids=[3445],exports.modules={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:()=>q,OX:()=>x,R1:()=>y,bV:()=>s,h0:()=>r,jG:()=>o});var d=c(73024),e=c(76760),f=c(48161),g=c(23328),h=c(89952);let i=[{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 j(){let a=e.join(f.homedir(),".customize-agent");return d.mkdirSync(a,{recursive:!0}),a}function k(){return e.join(j(),"document-templates.json")}function l(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 m(){try{let a=k();if(!d.existsSync(a))return[];return JSON.parse(d.readFileSync(a,"utf-8")).map(l)}catch{return[]}}function n(a){d.writeFileSync(k(),JSON.stringify(a.map(l),null,2),"utf-8")}function o(){return[...i,...m()]}function p(a){return o().find(b=>b.id===a)}function q(a){let b=l(a);if(i.some(a=>a.id===b.id))throw Error("Built-in template cannot be overwritten");let c=m().filter(a=>a.id!==b.id);return c.push(b),n(c),b}function r(a){if(i.some(b=>b.id===a))throw Error("Built-in template cannot be deleted");n(m().filter(b=>b.id!==a))}function s(a){let b=p(a);if(!b)throw Error("Document template not found");let c=l({...b,id:`${b.id}-copy-${Date.now()}`,name:`${b.name} Copy`,builtIn:!1}),d=m();return d.push(c),n(d),c}function t(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 u(a){return`- ${a.filePath}(score=${a.score.toFixed(3)}):${a.content.replace(/\s+/gu," ").slice(0,260)}`}function v(a){if(a.projectRoleConfigId){let b=(0,h.Mu)(a.projectRoleConfigId),c=(0,h.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 w(a){if(a.projectRoleConfigId){let b=(0,h.Mu)(a.projectRoleConfigId),c=(0,h.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 x(a){let b=p(a.templateId);if(!b)throw Error("Document template not found");let c=a.projectRoot||(0,g.aY)();if(!c)throw Error("No knowledge base project found");let f=(0,g.Qh)(),i=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),k=v(b),l=w(b),m=(function(a=[]){let b;if(0===a.length)return[];let c=[];try{let a=JSON.parse(d.readFileSync(e.join(j(),"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})(k).map(a=>`## [${a.roleId}] ${a.name}
2
- ${a.content}`).join("\n\n"),n=new Set(l.map(a=>a.filePath)),o=(0,h.XB)("file"),q=new Map(l.map(a=>[a.filePath,a.roleId])),r=new Map(l.map(a=>[a.filePath,o.find(b=>b.id===a.roleId)?.processingType||"reference"])),s=await f.getProject(c);await s.incrementalIndex();let x=[],y=[],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,...l.map(a=>a.filePath)]){let b=await f.search(c,e,{scope:"project",limit:Math.max(i,n.size>0?30:i),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:q.get(b.filePath),processingType:r.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(i,20)).map(b=>({chapterId:a.id,filePath:c.file.relativePath,score:1,content:b.content,roleId:q.get(c.file.relativePath),processingType:r.get(c.file.relativePath),sectionTitle:b.sectionTitle,source:"bound-file"})))}let e=t(d,i);y.push(...e);let g=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}:未检索到明确资料依据`),g))z.push(`${a.title}:${b} 未检索到明确依据`);let h=[`## ${a.title}`,"",m?`### 模板绑定提示词规则
3
- ${m.slice(0,3e3)}`:"","",e.length>0?`本章根据模板绑定资料围绕“${a.purpose||b.description}”整理。`:"模板绑定资料未检索到明确内容,需进一步确认。","",e.length>0?"### 资料依据":"",...e.map(u),"",g.length>0?"### 待确认事项":"",...g.map(a=>`- ${a}:资料未提供,需进一步确认。`)].filter(Boolean).join("\n");x.push({id:a.id,title:a.title,content:h,evidence:e,missingFacts:g})}let A=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,y),B=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}(y);for(let a of B)A[a.key]=`${a.value}(来源:${a.sourceFile},角色:${a.roleId})`;let C=new Map;for(let a of y)C.set(a.filePath,(C.get(a.filePath)??0)+1);let D=[...C.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),E=function(a,b=[]){let c=b=>a.filter(a=>b.some(b=>a.key.includes(b))),d=b=>a.filter(a=>a.processingType===b||a.roleId.includes(b));return{project:c(["工程名称","工程地点","建设单位","施工范围"]),schedule:c(["工期","开工","竣工","节点"]),quality:c(["质量"]),safety:c(["安全"]),resources:c(["劳动力","材料","机械","设备"]),tables:d("table"),drawings:d("drawing"),rules:d("rule"),specifications:d("specification"),missing:[...new Set(b)],conflicts:[]}}(B,z),F=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===w(d).length&&f.push("模板未绑定任何知识库文件"),d&&0===v(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}}(x,A,B,b),G=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}(F,E,x),H={templateId:b.id,templateName:b.name,title:b.outputTitle,requirement:a.requirement||(k.length?`使用模板绑定提示词:${k.map(a=>`${a.promptId}(${a.roleId})`).join(", ")}`:""),facts:A,structuredFacts:B,factsModel:E,chapters:x,sources:D,missingItems:[...new Set(z)],validation:F,validationIssues:G,generatedAt:Date.now()};return{...H,markdown:['<div class="document-cover">',`# ${H.title}`,"",`**文档版本**:V1.0 `,`**生成时间**:${new Date(H.generatedAt).toLocaleString("zh-CN")} `,`**生成要求**:${H.requirement||"未填写"} `,"</div>","",'<div class="page-break"></div>',"","## 目录","",...H.chapters.map((a,b)=>`${b+1}. ${a.title}`),"",'<div class="page-break"></div>',"","## 结构化事实表","",Object.keys(H.facts).length>0?["| 事实项 | 依据 |","|---|---|",...Object.entries(H.facts).map(([a,b])=>`| ${a} | ${b.replace(/\|/gu," ")} |`)].join("\n"):"未抽取到明确事实,需人工确认。","",...H.chapters.flatMap(a=>[a.content,""]),"## 资料来源清单","","| 文件 | 引用次数 |","|---|---:|",...H.sources.map(a=>`| ${a.filePath} | ${a.count} |`),"","## 缺失项与需确认事项","",...H.missingItems.length>0?H.missingItems.map(a=>`- ${a}`):["- 暂未发现完全缺失章节;仍需人工复核关键数据。"],"","## 校验结果","",...H.validation.warnings.map(a=>`- 警告:${a}`),...H.validation.errors.map(a=>`- 错误:${a}`),"","## 严格校验清单","",...H.validationIssues.map(a=>`- ${a.level.toUpperCase()}:${a.message}${a.suggestion?`(建议:${a.suggestion})`:""}`)].join("\n")}}async function y(a){let b=p(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,g.aY)();if(!d)throw Error("No knowledge base project found");let e=(0,g.Qh)(),f=Math.max(5,Math.min(30,a.maxEvidencePerChapter??12)),h=[];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}});h.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=t(h,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(u),"",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)}}};
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}
3
+ 角色:${a.roleId||""}
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}]}。
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)}}};
@@ -1 +1 @@
1
- exports.id=8204,exports.ids=[8204],exports.modules={4823:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(60056);function e(a){return{algorithm:a?d.w4.darkAlgorithm:d.w4.defaultAlgorithm,token:{colorPrimary:a?"#0a84ff":"#007aff",colorInfo:a?"#0a84ff":"#007aff",colorSuccess:a?"#30d158":"#34c759",colorWarning:a?"#ff9f0a":"#ff9500",colorError:a?"#ff453a":"#ff3b30",colorBgBase:a?"#1c1c1e":"#f5f5f7",colorBgContainer:a?"rgba(44,44,46,0.78)":"rgba(255,255,255,0.78)",colorBgElevated:a?"rgba(44,44,46,0.92)":"rgba(255,255,255,0.94)",colorBorder:a?"rgba(255,255,255,0.12)":"rgba(60,60,67,0.16)",colorText:a?"#f5f5f7":"#1d1d1f",colorTextSecondary:a?"#98989d":"#6e6e73",fontFamily:"var(--fontSans)",fontSize:14,borderRadius:14,borderRadiusLG:20,borderRadiusSM:10,controlHeight:36,lineWidth:1,boxShadow:a?"0 8px 24px rgba(0,0,0,0.24)":"0 8px 24px rgba(0,0,0,0.06)",boxShadowSecondary:a?"0 4px 12px rgba(0,0,0,0.2)":"0 4px 12px rgba(0,0,0,0.04)",motionDurationMid:"0.2s",motionEaseInOut:"cubic-bezier(0.25, 0.1, 0.25, 1)"},components:{Card:{borderRadiusLG:20,paddingLG:24,headerFontSize:13,headerFontSizeSM:12},Button:{borderRadius:14,borderRadiusLG:18,borderRadiusSM:10,fontWeight:600,primaryShadow:"var(--shadowButton)"},Input:{borderRadius:14,controlHeight:36,activeShadow:"0 0 0 3px rgba(0,122,255,0.12)"},Select:{borderRadius:14},Modal:{borderRadiusLG:20,titleFontSize:17,fontWeightStrong:700},Tag:{borderRadiusSM:100,defaultBg:a?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"},Table:{borderRadiusLG:20,headerBg:a?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.02)",headerColor:"var(--colorTextSecondary)",headerSplitColor:"transparent",headerBorderRadius:12},Spin:{dotSize:28,dotSizeLG:40},Upload:{borderRadiusLG:20}}}}},8204:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>h});var e=c(8732),f=c(94487);c(66285),c(97237);var g=a([f]);function h({Component:a,pageProps:b}){return(0,e.jsx)(f.PE,{children:(0,e.jsx)(a,{...b})})}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},13484:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent","subtitle":"管理控制台"},"nav":{"overview":"总览","knowledge":"知识库","knowledgeManage":"知识库管理","fileManagement":"文件管理","knowledgeSearch":"知识库搜索","documents":"生成编辑","documentRoles":"角色配置","models":"模型配置","settings":"设置","contextEngineering":"上下文工程","longTermContext":"长期上下文","shortTermContext":"短期上下文","promptManagement":"提示词管理"},"overview":{"title":"系统总览","description":"查看 Customize Agent 运行状态与关键指标","status":"服务状态","statusRunning":"运行中","statusError":"异常","knowledgeBase":"知识库","modelConfig":"模型配置","filesCount":"文件总数","chunksCount":"分块总数","storageSize":"存储空间","providersCount":"已配置模型","quickActions":"快捷操作","goToKnowledge":"管理知识库","goToModels":"配置模型","goToSettings":"系统设置","cores":"核","memory":"内存","tokensUsed":"累计 Tokens","tasksTotal":"总任务数","successRate":"成功率","topModel":"调用最多模型","taskTypes":"任务类型","calls":"次调用"},"knowledge":{"title":"知识库管理","description":"管理本地文件和知识库索引","manageTitle":"知识库管理","manageDesc":"查看知识库统计、分类和功能状态","stats":"统计概览","files":"文件管理","settings":"知识库设置","totalFiles":"文件总数","totalChunks":"分块总数","totalSize":"存储大小","lastIndexed":"上次索引","categories":"文件分类","fileCount":"文件数量","search":"搜索文件","searchPlaceholder":"输入文件名或内容关键词...","filterCategory":"筛选分类","allCategories":"全部类型","upload":"上传文件","uploadHint":"点击或拖拽上传 (PDF, Word, Excel, 图片, 代码等)","uploading":"上传中...","reindex":"重新索引","reindexing":"正在重新索引...","delete":"删除","deleteConfirm":"确定要删除该文件吗?此操作不可恢复。","fileList":"文件列表","fileName":"文件名","fileSize":"大小","fileCategory":"分类","fileDate":"修改日期","noFiles":"暂无文件,请上传文件开始使用","loadError":"加载文件列表失败","emptySearch":"未找到匹配的文件","ignoreRules":"忽略规则","ignoreHint":"每行一个 glob 模式,匹配的文件将被跳过","saveIgnore":"保存规则","duplicates":"重复文件","noDuplicates":"未发现重复文件","duplicatesFound":"发现 {count} 组重复文件","features":"功能状态","featureName":"功能","featureDesc":"说明","featureValue":"实现","featureVectorStoreDesc":"向量数据库,存储文档向量索引","featureEmbeddingDesc":"文本嵌入模型,将文本转换为向量","featureDedup":"去重引擎","featureDedupDesc":"检测并移除重复/相似文档","featureChunker":"分块器","featureChunkerDesc":"将文档拆分为可检索的语义块","globalSearch":"全局搜索","projectSearch":"项目搜索","autoIndex":"自动索引","enabled":"已启用","disabled":"已禁用"},"models":{"title":"模型配置","description":"管理 LLM 模型与层级分配","modelList":"Model 列表","addModel":"添加模型","editModel":"编辑模型","providerName":"Provider 名称","modelName":"模型名称","apiKey":"API Key","baseUrl":"Base URL","protocol":"请求协议","testConnection":"测试连接","testing":"测试中...","connected":"已连接","connectionFailed":"连接失败","noProviders":"暂无模型,请添加一个","modelTiers":"模型层级分配","tierReader":"Reader(只读)","tierReaderDesc":"处理低风险、只读和成本敏感任务,例如读取文件、检索知识库、搜索文本、整理上下文。建议选择速度快、价格低、长上下文能力稳定的模型。","tierReasoning":"Reasoning(推理)","tierReasoningDesc":"处理需要深入分析、规划、代码理解和多步骤推理的任务。建议选择推理能力强、稳定性高的模型,必要时可使用更高阶模型。","tierAction":"Action(操作)","tierActionDesc":"处理会产生副作用的任务,例如写文件、修改代码、执行命令、调用外部工具。建议选择可靠、遵循指令能力强且经过验证的模型。","activeModel":"当前模型","deleteProvider":"删除","deleteProviderConfirm":"确定要删除此模型及其所有配置吗?","modelNamePlaceholder":"例如: gpt-4o / deepseek-chat","selectModelPlaceholder":"暂不配置","apiKeyEditHint":"已配置的 Key 会以掩码回显,聚焦后可输入新 Key;掩码不可复制,留空或保持掩码则不修改。","apiKeyEditPlaceholder":"输入新的 API Key,留空保持不变","embeddingConfig":"Embedding 配置","embeddingProvider":"Embedding Provider","embeddingProviderHash":"本地 Hash Embedding","embeddingProviderOpenAI":"OpenAI 兼容 Embedding","embeddingHint":"Embedding 用于知识库向量检索。修改 Embedding 模型或维度后,建议到知识库页面重新索引。","model":"Model","dimensions":"Dimensions","status":"状态","localHash":"本地 Hash","openAICompatible":"OpenAI 兼容","saveEmbedding":"保存 Embedding 配置","testEmbedding":"测试 Embedding","embeddingApiKeyHint":"留空或保持掩码表示不修改密钥","optional":"可选","save":"保存","cancel":"取消"},"context":{"title":"上下文工程管理","longTermDesc":"来自记忆库的持久化上下文(跨会话保留)","shortTermDesc":"来自最近会话日志的短期上下文","longTermSource":"数据来源: ~/.customize-agent/memory.db(记忆库)","shortTermSource":"数据来源: ~/.customize-agent/logs/(会话日志)","importance":"重要性","content":"内容","tags":"标签","source":"来源","sourceHint":"可选,额外的来源/上下文说明","updatedAt":"更新时间"},"prompt":{"title":"提示词管理","description":"管理各项目的 CUSTOMIZE.md 系统提示词文件","filePath":"文件路径","lastModified":"最后修改","hasFile":"已配置","noFile":"未配置","noProjects":"暂无项目,请先初始化 Customize Agent 项目"},"documents":{"title":"生成编辑","description":"基于模板库和本地知识库生成、编辑、校验业务文档","templateLibrary":"模板库","workflow":"模板工作流","template":"模板","selected":"已选择","boundPrompts":"绑定提示词","boundFiles":"绑定知识库文件","boundPromptsRequired":"请选择提示词","boundFilesRequired":"请选择知识库文件","promptRole":"提示词角色","fileRole":"文件角色","manageRoles":"管理角色","roleEditor":"角色编辑器","roleType":"角色类型","roleName":"角色名称","roleDescription":"角色说明","addPromptBinding":"添加提示词绑定","addFileBinding":"添加文件绑定","structuredFacts":"结构化事实","projectRoleConfig":"项目角色配置","projectRoleConfigRequired":"请选择项目角色配置","noRoleConfig":"未绑定项目角色配置","evidenceLimit":"每章证据数","requirement":"生成要求","requirementPlaceholder":"例如:根据上传的招标文件、图纸和清单,生成一份施工组织设计草稿。","generate":"开始生成","editor":"生成 / 编辑器","edit":"编辑","chapters":"章节","sources":"资料来源","missingItems":"缺失项","validation":"校验","evidenceCount":"证据数量","missingCount":"缺失事实","downloadMarkdown":"下载 Markdown","exportHtml":"导出 HTML","exportPdf":"导出 PDF","saveDraft":"保存草稿","draftHistory":"草稿历史","regenerateChapter":"重新生成本章","newTemplate":"新建模板","templateEditor":"模板编辑器","templateName":"模板名称","templateCategory":"模板分类","templateDescription":"模板说明","outputTitle":"输出标题","chapter":"章节","chapterTitle":"章节标题","chapterPurpose":"章节用途","chapterQueries":"检索 Query","requiredFacts":"必需事实","addChapter":"添加章节","builtIn":"内置","deleteTemplateConfirm":"确定删除该模板吗?","noDraft":"请选择模板并生成草稿"},"roles":{"title":"角色配置","description":"创建文件角色、提示词角色,并组合成可排序的项目角色配置供模板绑定使用","newFileRole":"新建文件角色","newPromptRole":"新建提示词角色","newConfig":"新建项目配置","fileRoles":"文件角色","promptRoles":"提示词角色","configs":"项目角色配置","roleEditor":"角色编辑器","configEditor":"项目角色配置编辑器","roleType":"角色类型","fileRole":"文件角色","promptRole":"提示词角色","roleName":"角色名称","roleDescription":"角色说明","bindFile":"绑定知识库文件","bindPrompt":"绑定提示词","executionType":"执行类型","processingType":"处理类型","factExtraction":"事实抽取","chapterGeneration":"章节生成","validation":"校验","formatting":"格式化","reference":"参考","ruleFile":"规则文件","projectFactFile":"项目事实文件","tableFile":"表格数据","drawingFile":"图纸文件","specificationFile":"规范文件","configName":"配置名称","configDescription":"配置说明","addRole":"添加角色"},"settings":{"title":"系统设置","description":"管理语言、主题等偏好","language":"语言","languageDesc":"界面显示语言","theme":"主题","themeDesc":"浅色 / 深色模式","light":"浅色","dark":"深色","system":"跟随系统","about":"关于","version":"版本","port":"服务端口"},"common":{"save":"保存","cancel":"取消","confirm":"确认","delete":"删除","edit":"编辑","add":"添加","search":"搜索","loading":"加载中...","error":"出错了","success":"操作成功","retry":"重试","close":"关闭","back":"返回","more":"更多","noData":"暂无数据","bytes":"字节","kb":"KB","mb":"MB","gb":"GB","unknown":"未知","never":"从未"}}')},34924:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Y:()=>j});var e=c(8732),f=c(57312),g=c(94487),h=c(68329),i=a([f,g]);function j(){let{resolvedTheme:a,setTheme:b}=(0,f.useTheme)(),{locale:c,setLocale:d}=(0,g.x_)(),i=(0,g.Vr)("settings"),j="dark"===a;return(0,e.jsxs)("header",{className:"topbar",children:[(0,e.jsx)("div",{className:"flex-1"}),(0,e.jsxs)("button",{onClick:()=>b(j?"light":"dark"),className:"topbarBtn",children:[j?(0,e.jsx)(h.bd5,{size:14}):(0,e.jsx)(h.AX$,{size:14}),(0,e.jsx)("span",{children:i(j?"light":"dark")})]}),(0,e.jsxs)("button",{onClick:()=>{d("zh-CN"===c?"en-US":"zh-CN")},className:"topbarBtn",children:[(0,e.jsx)(h.ATU,{size:14}),(0,e.jsx)("span",{children:"zh-CN"===c?"English":"中文"})]})]})}[f,g]=i.then?(await i)():i,d()}catch(a){d(a)}})},54506:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent","subtitle":"Admin Console"},"nav":{"overview":"Overview","knowledge":"Knowledge Base","knowledgeManage":"KB Management","fileManagement":"File Management","knowledgeSearch":"KB Search","documents":"Generate & Edit","documentRoles":"Role Config","models":"Model Config","settings":"Settings","contextEngineering":"Context Engineering","longTermContext":"Long-term Context","shortTermContext":"Short-term Context","promptManagement":"Prompt Management"},"overview":{"title":"System Overview","description":"Monitor Customize Agent status and key metrics","status":"Service Status","statusRunning":"Running","statusError":"Error","knowledgeBase":"Knowledge Base","modelConfig":"Model Config","filesCount":"Total Files","chunksCount":"Total Chunks","storageSize":"Storage Size","providersCount":"Models","quickActions":"Quick Actions","goToKnowledge":"Manage Knowledge Base","goToModels":"Configure Models","goToSettings":"System Settings","cores":"cores","memory":"Memory","tokensUsed":"Total Tokens","tasksTotal":"Total Tasks","successRate":"Success Rate","topModel":"Most Used Model","taskTypes":"Task Types","calls":"calls"},"knowledge":{"title":"Knowledge Base","description":"Manage local files and knowledge base index","manageTitle":"KB Management","manageDesc":"View knowledge base statistics, categories, and features","stats":"Statistics","files":"File Management","settings":"KB Settings","totalFiles":"Total Files","totalChunks":"Total Chunks","totalSize":"Total Size","lastIndexed":"Last Indexed","categories":"File Categories","fileCount":"File Count","search":"Search Files","searchPlaceholder":"Search by filename or content...","filterCategory":"Filter Category","allCategories":"All Types","upload":"Upload File","uploadHint":"Click or drag to upload (PDF, Word, Excel, images, code, etc.)","uploading":"Uploading...","reindex":"Reindex","reindexing":"Reindexing...","delete":"Delete","deleteConfirm":"Are you sure you want to delete this file? This action cannot be undone.","fileList":"File List","fileName":"File Name","fileSize":"Size","fileCategory":"Category","fileDate":"Modified","noFiles":"No files yet. Upload files to get started.","loadError":"Failed to load file list","emptySearch":"No matching files found","ignoreRules":"Ignore Rules","ignoreHint":"One glob pattern per line. Matching files will be skipped.","saveIgnore":"Save Rules","duplicates":"Duplicate Files","noDuplicates":"No duplicate files found","duplicatesFound":"Found {count} duplicate groups","features":"Feature Status","featureName":"Feature","featureDesc":"Description","featureValue":"Implementation","featureVectorStoreDesc":"Vector database for storing document embeddings","featureEmbeddingDesc":"Text embedding model for converting text to vectors","featureDedup":"Dedup Engine","featureDedupDesc":"Detects and removes duplicate/similar documents","featureChunker":"Chunker","featureChunkerDesc":"Splits documents into retrievable semantic chunks","globalSearch":"Global Search","projectSearch":"Project Search","autoIndex":"Auto Index","enabled":"Enabled","disabled":"Disabled"},"models":{"title":"Model Configuration","description":"Manage LLM models and tier assignments","modelList":"Model List","addModel":"Add Model","editModel":"Edit Model","providerName":"Provider Name","modelName":"Model Name","apiKey":"API Key","baseUrl":"Base URL","protocol":"Protocol","testConnection":"Test Connection","testing":"Testing...","connected":"Connected","connectionFailed":"Connection Failed","noProviders":"No models yet. Add one to get started.","modelTiers":"Model Tier Assignment","tierReader":"Reader (Read-only)","tierReaderDesc":"Handles low-risk, read-only, and cost-sensitive work such as reading files, searching the knowledge base, text search, and context organization. Prefer fast, inexpensive models with stable long-context support.","tierReasoning":"Reasoning (Analysis)","tierReasoningDesc":"Handles deeper analysis, planning, code understanding, and multi-step reasoning. Prefer models with stronger reasoning quality and reliability.","tierAction":"Action (Write/Execute)","tierActionDesc":"Handles side-effect operations such as writing files, changing code, running commands, and calling external tools. Prefer reliable models with strong instruction-following and verified behavior.","activeModel":"Active Model","deleteProvider":"Delete","deleteProviderConfirm":"Are you sure you want to delete this model and all its configs?","modelNamePlaceholder":"e.g. gpt-4o / deepseek-chat","selectModelPlaceholder":"No model selected","apiKeyEditHint":"Configured keys are shown as a masked value. Focus the field to enter a new key; the mask cannot be copied. Leave empty or keep the mask to avoid changes.","apiKeyEditPlaceholder":"Enter a new API key, or leave empty to keep current","embeddingConfig":"Embedding Configuration","embeddingProvider":"Embedding Provider","embeddingProviderHash":"Local Hash Embedding","embeddingProviderOpenAI":"OpenAI-compatible Embedding","embeddingHint":"Embedding is used for knowledge base vector retrieval. After changing the embedding model or dimensions, reindex the knowledge base.","model":"Model","dimensions":"Dimensions","status":"Status","localHash":"Local Hash","openAICompatible":"OpenAI-compatible","saveEmbedding":"Save Embedding Config","testEmbedding":"Test Embedding","embeddingApiKeyHint":"Leave empty or keep the masked value to avoid changing the key","optional":"Optional","save":"Save","cancel":"Cancel"},"context":{"title":"Context Engineering","longTermDesc":"Persistent context from memory store (cross-session)","shortTermDesc":"Short-term context from recent session logs","longTermSource":"Source: ~/.customize-agent/memory.db (Memory Store)","shortTermSource":"Source: ~/.customize-agent/logs/ (Session Logs)","importance":"Importance","content":"Content","tags":"Tags","source":"Source","sourceHint":"Optional additional source/context description","updatedAt":"Updated"},"prompt":{"title":"Prompt Management","description":"Manage CUSTOMIZE.md system prompt files per project","filePath":"File Path","lastModified":"Last Modified","hasFile":"Configured","noFile":"Not Configured","noProjects":"No projects found. Initialize a Customize Agent project first."},"documents":{"title":"Generate & Edit","description":"Generate, edit, and validate business documents from templates and the local knowledge base","templateLibrary":"Template Library","workflow":"Template Workflow","template":"Template","selected":"Selected","boundPrompts":"Bound Prompts","boundFiles":"Bound Knowledge Files","boundPromptsRequired":"Select prompts","boundFilesRequired":"Select knowledge files","promptRole":"Prompt Role","fileRole":"File Role","manageRoles":"Manage Roles","roleEditor":"Role Editor","roleType":"Role Type","roleName":"Role Name","roleDescription":"Role Description","addPromptBinding":"Add Prompt Binding","addFileBinding":"Add File Binding","structuredFacts":"Structured Facts","projectRoleConfig":"Project Role Config","projectRoleConfigRequired":"Select a project role config","noRoleConfig":"No project role config bound","evidenceLimit":"Evidence per Chapter","requirement":"Generation Requirement","requirementPlaceholder":"Example: Generate a construction organization design draft from uploaded tender files, drawings, and BOQ sheets.","generate":"Generate","editor":"Generate / Editor","edit":"Edit","chapters":"Chapters","sources":"Sources","missingItems":"Missing Items","validation":"Validation","evidenceCount":"Evidence Count","missingCount":"Missing Facts","downloadMarkdown":"Download Markdown","exportHtml":"Export HTML","exportPdf":"Export PDF","saveDraft":"Save Draft","draftHistory":"Draft History","regenerateChapter":"Regenerate Chapter","newTemplate":"New Template","templateEditor":"Template Editor","templateName":"Template Name","templateCategory":"Template Category","templateDescription":"Template Description","outputTitle":"Output Title","chapter":"Chapter","chapterTitle":"Chapter Title","chapterPurpose":"Chapter Purpose","chapterQueries":"Search Queries","requiredFacts":"Required Facts","addChapter":"Add Chapter","builtIn":"Built-in","deleteTemplateConfirm":"Delete this template?","noDraft":"Select a template and generate a draft"},"roles":{"title":"Role Config","description":"Create file roles and prompt roles, then combine them into ordered project role configs for templates","newFileRole":"New File Role","newPromptRole":"New Prompt Role","newConfig":"New Project Config","fileRoles":"File Roles","promptRoles":"Prompt Roles","configs":"Project Role Configs","roleEditor":"Role Editor","configEditor":"Project Role Config Editor","roleType":"Role Type","fileRole":"File Role","promptRole":"Prompt Role","roleName":"Role Name","roleDescription":"Role Description","bindFile":"Bind Knowledge File","bindPrompt":"Bind Prompt","executionType":"Execution Type","processingType":"Processing Type","factExtraction":"Fact Extraction","chapterGeneration":"Chapter Generation","validation":"Validation","formatting":"Formatting","reference":"Reference","ruleFile":"Rule File","projectFactFile":"Project Fact File","tableFile":"Table Data","drawingFile":"Drawing File","specificationFile":"Specification File","configName":"Config Name","configDescription":"Config Description","addRole":"Add Role"},"settings":{"title":"System Settings","description":"Manage language, theme, and other preferences","language":"Language","languageDesc":"Interface display language","theme":"Theme","themeDesc":"Light / Dark mode","light":"Light","dark":"Dark","system":"System","about":"About","version":"Version","port":"Service Port"},"common":{"save":"Save","cancel":"Cancel","confirm":"Confirm","delete":"Delete","edit":"Edit","add":"Add","search":"Search","loading":"Loading...","error":"Something went wrong","success":"Success","retry":"Retry","close":"Close","back":"Back","more":"More","noData":"No data","bytes":"bytes","kb":"KB","mb":"MB","gb":"GB","unknown":"Unknown","never":"Never"}}')},66285:()=>{},93065:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>m});var e=c(8732),f=c(82015),g=c(21202),h=c(9328),i=c.n(h),j=c(94487),k=c(68329),l=a([j]);j=(l.then?(await l)():l)[0];let n=[{href:"/overview",icon:k.HxJ,labelKey:"nav.overview"},{icon:k.WmV,labelKey:"nav.knowledge",children:[{href:"/knowledge/manage",icon:k.BmN,labelKey:"nav.knowledgeManage"},{href:"/knowledge/files",icon:k.iUU,labelKey:"nav.fileManagement"},{href:"/knowledge/search",icon:k.vji,labelKey:"nav.knowledgeSearch"}]},{icon:k.jy9,labelKey:"nav.contextEngineering",children:[{href:"/context/long-term",icon:k.WmV,labelKey:"nav.longTermContext"},{href:"/context/short-term",icon:k.WmV,labelKey:"nav.shortTermContext"}]},{href:"/documents",icon:k.sv7,labelKey:"nav.documents"},{href:"/document-roles",icon:k.wB_,labelKey:"nav.documentRoles"},{href:"/models",icon:k.fX,labelKey:"nav.models"},{href:"/prompt",icon:k.vEG,labelKey:"nav.promptManagement"},{href:"/settings",icon:k.wB_,labelKey:"nav.settings"}];function m(){let a=(0,g.usePathname)(),b=(0,j.Vr)(),c=(0,f.useMemo)(()=>{let b={};for(let c of n)c.children?.some(b=>a===b.href||a.startsWith(b.href+"/"))&&(b[c.labelKey]=!0);return b},[a]),[d,h]=(0,f.useState)({}),[l,m]=(0,f.useState)(!1);return(0,e.jsxs)("aside",{className:`sidebar${l?" sidebarCollapsedSelf":""}`,children:[(0,e.jsx)(i(),{href:"/overview",prefetch:!1,children:(0,e.jsx)("div",{className:"sidebarLogo",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"sidebarLogoTitle",children:(0,e.jsx)("span",{className:"logoGradient",children:b("app.title")})}),(0,e.jsx)("div",{className:"sidebarLogoSub",children:b("app.subtitle")})]})})}),(0,e.jsx)("button",{className:"sidebarCollapseBtn",onClick:()=>m(a=>!a),"aria-label":l?"展开侧边栏":"收起侧边栏",children:l?(0,e.jsx)(k.wdi,{size:16}):(0,e.jsx)(k.ues,{size:16})}),(0,e.jsx)("nav",{className:"sidebarNav",children:n.map(f=>{if(f.children){let g=d[f.labelKey]??c[f.labelKey]??!1;return(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"sidebarItem sidebarParent",onClick:()=>{var a;return a=f.labelKey,void h(b=>({...b,[a]:!b[a]}))},children:[(0,e.jsx)(f.icon,{size:18}),(0,e.jsx)("span",{children:b(f.labelKey)}),(0,e.jsx)("span",{className:"sidebarChevron",children:g?(0,e.jsx)(k.yQN,{size:14}):(0,e.jsx)(k.c_$,{size:14})})]}),g&&!l&&(0,e.jsx)("div",{className:"sidebarSubmenu",children:f.children.map(c=>{let d=a===c.href||a.startsWith(c.href+"/");return(0,e.jsx)(i(),{href:c.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem sidebarSubItem${d?" sidebarItemActive":""}`,children:[(0,e.jsx)(c.icon,{size:16}),(0,e.jsx)("span",{children:b(c.labelKey)})]})},c.href)})})]},f.labelKey)}let g=a===f.href||a.startsWith(f.href+"/");return(0,e.jsx)(i(),{href:f.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem${g?" sidebarItemActive":""}`,children:[(0,e.jsx)(f.icon,{size:18}),(0,e.jsx)("span",{children:b(f.labelKey)})]})},f.href)})})]})}d()}catch(a){d(a)}})},94487:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PE:()=>r,Vr:()=>p,x_:()=>o});var e=c(8732),f=c(82015),g=c(57312),h=c(60056),i=c(4823),j=c(93065),k=c(34924),l=c(13484),m=c(54506),n=a([g,j,k]);[g,j,k]=n.then?(await n)():n;let s=(0,f.createContext)(null);function o(){let a=(0,f.useContext)(s);if(!a)throw Error("useAppLocale must be used inside Layout");return a}function p(a){let{messages:b}=o();return(0,f.useCallback)(c=>(function(a,b){let c=b.split(".").reduce((a,b)=>{if(a&&"object"==typeof a&&b in a)return a[b]},a);return"string"==typeof c?c:b})(b,a?`${a}.${c}`:c),[b,a])}let t={"zh-CN":l,"en-US":m};function q({children:a}){let{resolvedTheme:b}=(0,g.useTheme)(),[c,d]=(0,f.useState)(!1),[l,m]=(0,f.useState)("zh-CN"),n="dark"===b,o=t[l]??t["zh-CN"],p=(0,f.useCallback)(a=>{document.cookie=`NEXT_LOCALE=${a};path=/;max-age=31536000;samesite=lax`,m(a)},[]),q=(0,f.useMemo)(()=>({locale:l,setLocale:p,messages:o}),[l,p,o]),r=(0,f.useMemo)(()=>(0,i.D)(n),[n]);return c?(0,e.jsx)(s.Provider,{value:q,children:(0,e.jsx)(h.sG,{theme:r,children:(0,e.jsxs)(h.qw,{children:[(0,e.jsx)(j.B,{}),(0,e.jsxs)("div",{className:"mainContent",children:[(0,e.jsx)(k.Y,{}),(0,e.jsx)("main",{className:"mainInner",children:a})]})]})})}):(0,e.jsx)("div",{className:"appShellPlaceholder"})}function r({children:a}){return(0,e.jsx)(g.ThemeProvider,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,e.jsx)(q,{children:a})})}d()}catch(a){d(a)}})},97237:()=>{}};
1
+ exports.id=8204,exports.ids=[8204],exports.modules={4823:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(60056);function e(a){return{algorithm:a?d.w4.darkAlgorithm:d.w4.defaultAlgorithm,token:{colorPrimary:a?"#0a84ff":"#007aff",colorInfo:a?"#0a84ff":"#007aff",colorSuccess:a?"#30d158":"#34c759",colorWarning:a?"#ff9f0a":"#ff9500",colorError:a?"#ff453a":"#ff3b30",colorBgBase:a?"#1c1c1e":"#f5f5f7",colorBgContainer:a?"rgba(44,44,46,0.78)":"rgba(255,255,255,0.78)",colorBgElevated:a?"rgba(44,44,46,0.92)":"rgba(255,255,255,0.94)",colorBorder:a?"rgba(255,255,255,0.12)":"rgba(60,60,67,0.16)",colorText:a?"#f5f5f7":"#1d1d1f",colorTextSecondary:a?"#98989d":"#6e6e73",fontFamily:"var(--fontSans)",fontSize:14,borderRadius:14,borderRadiusLG:20,borderRadiusSM:10,controlHeight:36,lineWidth:1,boxShadow:a?"0 8px 24px rgba(0,0,0,0.24)":"0 8px 24px rgba(0,0,0,0.06)",boxShadowSecondary:a?"0 4px 12px rgba(0,0,0,0.2)":"0 4px 12px rgba(0,0,0,0.04)",motionDurationMid:"0.2s",motionEaseInOut:"cubic-bezier(0.25, 0.1, 0.25, 1)"},components:{Card:{borderRadiusLG:20,paddingLG:24,headerFontSize:13,headerFontSizeSM:12},Button:{borderRadius:14,borderRadiusLG:18,borderRadiusSM:10,fontWeight:600,primaryShadow:"var(--shadowButton)"},Input:{borderRadius:14,controlHeight:36,activeShadow:"0 0 0 3px rgba(0,122,255,0.12)"},Select:{borderRadius:14},Modal:{borderRadiusLG:20,titleFontSize:17,fontWeightStrong:700},Tag:{borderRadiusSM:100,defaultBg:a?"rgba(255,255,255,0.08)":"rgba(0,0,0,0.04)"},Table:{borderRadiusLG:20,headerBg:a?"rgba(255,255,255,0.04)":"rgba(0,0,0,0.02)",headerColor:"var(--colorTextSecondary)",headerSplitColor:"transparent",headerBorderRadius:12},Spin:{dotSize:28,dotSizeLG:40},Upload:{borderRadiusLG:20}}}}},8204:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{default:()=>h});var e=c(8732),f=c(94487);c(66285),c(97237);var g=a([f]);function h({Component:a,pageProps:b}){return(0,e.jsx)(f.PE,{children:(0,e.jsx)(a,{...b})})}f=(g.then?(await g)():g)[0],d()}catch(a){d(a)}})},13484:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent","subtitle":"管理控制台"},"nav":{"overview":"总览","knowledge":"知识库","knowledgeManage":"知识库管理","fileManagement":"文件管理","knowledgeSearch":"知识库搜索","documents":"生成编辑","documentRoles":"角色配置","models":"模型配置","settings":"设置","contextEngineering":"上下文工程","longTermContext":"长期上下文","shortTermContext":"短期上下文","promptManagement":"提示词管理"},"overview":{"title":"系统总览","description":"查看 Customize Agent 运行状态与关键指标","status":"服务状态","statusRunning":"运行中","statusError":"异常","knowledgeBase":"知识库","modelConfig":"模型配置","filesCount":"文件总数","chunksCount":"分块总数","storageSize":"存储空间","providersCount":"已配置模型","quickActions":"快捷操作","goToKnowledge":"管理知识库","goToModels":"配置模型","goToSettings":"系统设置","cores":"核","memory":"内存","tokensUsed":"累计 Tokens","tasksTotal":"总任务数","successRate":"成功率","topModel":"调用最多模型","taskTypes":"任务类型","calls":"次调用"},"knowledge":{"title":"知识库管理","description":"管理本地文件和知识库索引","manageTitle":"知识库管理","manageDesc":"查看知识库统计、分类和功能状态","stats":"统计概览","files":"文件管理","settings":"知识库设置","totalFiles":"文件总数","totalChunks":"分块总数","totalSize":"存储大小","lastIndexed":"上次索引","categories":"文件分类","fileCount":"文件数量","search":"搜索文件","searchPlaceholder":"输入文件名或内容关键词...","filterCategory":"筛选分类","allCategories":"全部类型","upload":"上传文件","uploadHint":"点击或拖拽上传 (PDF, Word, Excel, 图片, 代码等)","uploading":"上传中...","reindex":"重新索引","reindexing":"正在重新索引...","delete":"删除","deleteConfirm":"确定要删除该文件吗?此操作不可恢复。","fileList":"文件列表","fileName":"文件名","fileSize":"大小","fileCategory":"分类","fileDate":"修改日期","noFiles":"暂无文件,请上传文件开始使用","loadError":"加载文件列表失败","emptySearch":"未找到匹配的文件","ignoreRules":"忽略规则","ignoreHint":"每行一个 glob 模式,匹配的文件将被跳过","saveIgnore":"保存规则","duplicates":"重复文件","noDuplicates":"未发现重复文件","duplicatesFound":"发现 {count} 组重复文件","features":"功能状态","featureName":"功能","featureDesc":"说明","featureValue":"实现","featureVectorStoreDesc":"向量数据库,存储文档向量索引","featureEmbeddingDesc":"文本嵌入模型,将文本转换为向量","featureDedup":"去重引擎","featureDedupDesc":"检测并移除重复/相似文档","featureChunker":"分块器","featureChunkerDesc":"将文档拆分为可检索的语义块","globalSearch":"全局搜索","projectSearch":"项目搜索","autoIndex":"自动索引","enabled":"已启用","disabled":"已禁用"},"models":{"title":"模型配置","description":"管理 LLM 模型与层级分配","modelList":"Model 列表","addModel":"添加模型","editModel":"编辑模型","providerName":"Provider 名称","modelName":"模型名称","apiKey":"API Key","baseUrl":"Base URL","protocol":"请求协议","testConnection":"测试连接","testing":"测试中...","connected":"已连接","connectionFailed":"连接失败","noProviders":"暂无模型,请添加一个","modelTiers":"模型层级分配","tierReader":"Reader(只读)","tierReaderDesc":"处理低风险、只读和成本敏感任务,例如读取文件、检索知识库、搜索文本、整理上下文。建议选择速度快、价格低、长上下文能力稳定的模型。","tierReasoning":"Reasoning(推理)","tierReasoningDesc":"处理需要深入分析、规划、代码理解和多步骤推理的任务。建议选择推理能力强、稳定性高的模型,必要时可使用更高阶模型。","tierAction":"Action(操作)","tierActionDesc":"处理会产生副作用的任务,例如写文件、修改代码、执行命令、调用外部工具。建议选择可靠、遵循指令能力强且经过验证的模型。","activeModel":"当前模型","deleteProvider":"删除","deleteProviderConfirm":"确定要删除此模型及其所有配置吗?","modelNamePlaceholder":"例如: gpt-4o / deepseek-chat","selectModelPlaceholder":"暂不配置","apiKeyEditHint":"已配置的 Key 会以掩码回显,聚焦后可输入新 Key;掩码不可复制,留空或保持掩码则不修改。","apiKeyEditPlaceholder":"输入新的 API Key,留空保持不变","embeddingConfig":"Embedding 配置","embeddingProvider":"Embedding Provider","embeddingProviderHash":"本地 Hash Embedding","embeddingProviderOpenAI":"OpenAI 兼容 Embedding","embeddingHint":"Embedding 用于知识库向量检索。修改 Embedding 模型或维度后,建议到知识库页面重新索引。","model":"Model","dimensions":"Dimensions","status":"状态","localHash":"本地 Hash","openAICompatible":"OpenAI 兼容","saveEmbedding":"保存 Embedding 配置","testEmbedding":"测试 Embedding","embeddingApiKeyHint":"留空或保持掩码表示不修改密钥","optional":"可选","save":"保存","cancel":"取消"},"context":{"title":"上下文工程管理","longTermDesc":"来自记忆库的持久化上下文(跨会话保留)","shortTermDesc":"来自最近会话日志的短期上下文","longTermSource":"数据来源: ~/.customize-agent/memory.db(记忆库)","shortTermSource":"数据来源: ~/.customize-agent/logs/(会话日志)","importance":"重要性","content":"内容","tags":"标签","source":"来源","sourceHint":"可选,额外的来源/上下文说明","updatedAt":"更新时间"},"prompt":{"title":"提示词管理","description":"管理各项目的 CUSTOMIZE.md 系统提示词文件","filePath":"文件路径","lastModified":"最后修改","hasFile":"已配置","noFile":"未配置","noProjects":"暂无项目,请先初始化 Customize Agent 项目"},"documents":{"title":"生成编辑","description":"基于模板库和本地知识库生成、编辑、校验业务文档","templateLibrary":"模板库","workflow":"模板工作流","template":"模板","selected":"已选择","boundPrompts":"绑定提示词","boundFiles":"绑定知识库文件","boundPromptsRequired":"请选择提示词","boundFilesRequired":"请选择知识库文件","promptRole":"提示词角色","fileRole":"文件角色","manageRoles":"管理角色","roleEditor":"角色编辑器","roleType":"角色类型","roleName":"角色名称","roleDescription":"角色说明","addPromptBinding":"添加提示词绑定","addFileBinding":"添加文件绑定","structuredFacts":"结构化事实","exportGate":"导出门禁","executionStages":"执行阶段","projectRoleConfig":"项目角色配置","projectRoleConfigRequired":"请选择项目角色配置","noRoleConfig":"未绑定项目角色配置","evidenceLimit":"每章证据数","requirement":"生成要求","requirementPlaceholder":"例如:根据上传的招标文件、图纸和清单,生成一份施工组织设计草稿。","generate":"开始生成","editor":"生成 / 编辑器","edit":"编辑","chapters":"章节","sources":"资料来源","missingItems":"缺失项","validation":"校验","evidenceCount":"证据数量","missingCount":"缺失事实","downloadMarkdown":"下载 Markdown","exportHtml":"导出 HTML","exportPdf":"导出 PDF","saveDraft":"保存草稿","draftHistory":"草稿历史","regenerateChapter":"重新生成本章","newTemplate":"新建模板","templateEditor":"模板编辑器","templateName":"模板名称","templateCategory":"模板分类","templateDescription":"模板说明","outputTitle":"输出标题","chapter":"章节","chapterTitle":"章节标题","chapterPurpose":"章节用途","chapterQueries":"检索 Query","requiredFacts":"必需事实","addChapter":"添加章节","builtIn":"内置","deleteTemplateConfirm":"确定删除该模板吗?","noDraft":"请选择模板并生成草稿"},"roles":{"title":"角色配置","description":"创建文件角色、提示词角色,并组合成可排序的项目角色配置供模板绑定使用","newFileRole":"新建文件角色","newPromptRole":"新建提示词角色","newConfig":"新建项目配置","fileRoles":"文件角色","promptRoles":"提示词角色","configs":"项目角色配置","roleEditor":"角色编辑器","configEditor":"项目角色配置编辑器","roleType":"角色类型","fileRole":"文件角色","promptRole":"提示词角色","roleName":"角色名称","roleDescription":"角色说明","bindFile":"绑定知识库文件","bindPrompt":"绑定提示词","executionType":"执行类型","processingType":"处理类型","factExtraction":"事实抽取","chapterGeneration":"章节生成","validation":"校验","formatting":"格式化","reference":"参考","ruleFile":"规则文件","projectFactFile":"项目事实文件","tableFile":"表格数据","drawingFile":"图纸文件","specificationFile":"规范文件","configName":"配置名称","configDescription":"配置说明","addRole":"添加角色"},"settings":{"title":"系统设置","description":"管理语言、主题等偏好","language":"语言","languageDesc":"界面显示语言","theme":"主题","themeDesc":"浅色 / 深色模式","light":"浅色","dark":"深色","system":"跟随系统","about":"关于","version":"版本","port":"服务端口"},"common":{"save":"保存","cancel":"取消","confirm":"确认","delete":"删除","edit":"编辑","add":"添加","search":"搜索","loading":"加载中...","error":"出错了","success":"操作成功","retry":"重试","close":"关闭","back":"返回","more":"更多","noData":"暂无数据","bytes":"字节","kb":"KB","mb":"MB","gb":"GB","unknown":"未知","never":"从未"}}')},34924:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Y:()=>j});var e=c(8732),f=c(57312),g=c(94487),h=c(68329),i=a([f,g]);function j(){let{resolvedTheme:a,setTheme:b}=(0,f.useTheme)(),{locale:c,setLocale:d}=(0,g.x_)(),i=(0,g.Vr)("settings"),j="dark"===a;return(0,e.jsxs)("header",{className:"topbar",children:[(0,e.jsx)("div",{className:"flex-1"}),(0,e.jsxs)("button",{onClick:()=>b(j?"light":"dark"),className:"topbarBtn",children:[j?(0,e.jsx)(h.bd5,{size:14}):(0,e.jsx)(h.AX$,{size:14}),(0,e.jsx)("span",{children:i(j?"light":"dark")})]}),(0,e.jsxs)("button",{onClick:()=>{d("zh-CN"===c?"en-US":"zh-CN")},className:"topbarBtn",children:[(0,e.jsx)(h.ATU,{size:14}),(0,e.jsx)("span",{children:"zh-CN"===c?"English":"中文"})]})]})}[f,g]=i.then?(await i)():i,d()}catch(a){d(a)}})},54506:a=>{"use strict";a.exports=JSON.parse('{"app":{"title":"Customize Agent","subtitle":"Admin Console"},"nav":{"overview":"Overview","knowledge":"Knowledge Base","knowledgeManage":"KB Management","fileManagement":"File Management","knowledgeSearch":"KB Search","documents":"Generate & Edit","documentRoles":"Role Config","models":"Model Config","settings":"Settings","contextEngineering":"Context Engineering","longTermContext":"Long-term Context","shortTermContext":"Short-term Context","promptManagement":"Prompt Management"},"overview":{"title":"System Overview","description":"Monitor Customize Agent status and key metrics","status":"Service Status","statusRunning":"Running","statusError":"Error","knowledgeBase":"Knowledge Base","modelConfig":"Model Config","filesCount":"Total Files","chunksCount":"Total Chunks","storageSize":"Storage Size","providersCount":"Models","quickActions":"Quick Actions","goToKnowledge":"Manage Knowledge Base","goToModels":"Configure Models","goToSettings":"System Settings","cores":"cores","memory":"Memory","tokensUsed":"Total Tokens","tasksTotal":"Total Tasks","successRate":"Success Rate","topModel":"Most Used Model","taskTypes":"Task Types","calls":"calls"},"knowledge":{"title":"Knowledge Base","description":"Manage local files and knowledge base index","manageTitle":"KB Management","manageDesc":"View knowledge base statistics, categories, and features","stats":"Statistics","files":"File Management","settings":"KB Settings","totalFiles":"Total Files","totalChunks":"Total Chunks","totalSize":"Total Size","lastIndexed":"Last Indexed","categories":"File Categories","fileCount":"File Count","search":"Search Files","searchPlaceholder":"Search by filename or content...","filterCategory":"Filter Category","allCategories":"All Types","upload":"Upload File","uploadHint":"Click or drag to upload (PDF, Word, Excel, images, code, etc.)","uploading":"Uploading...","reindex":"Reindex","reindexing":"Reindexing...","delete":"Delete","deleteConfirm":"Are you sure you want to delete this file? This action cannot be undone.","fileList":"File List","fileName":"File Name","fileSize":"Size","fileCategory":"Category","fileDate":"Modified","noFiles":"No files yet. Upload files to get started.","loadError":"Failed to load file list","emptySearch":"No matching files found","ignoreRules":"Ignore Rules","ignoreHint":"One glob pattern per line. Matching files will be skipped.","saveIgnore":"Save Rules","duplicates":"Duplicate Files","noDuplicates":"No duplicate files found","duplicatesFound":"Found {count} duplicate groups","features":"Feature Status","featureName":"Feature","featureDesc":"Description","featureValue":"Implementation","featureVectorStoreDesc":"Vector database for storing document embeddings","featureEmbeddingDesc":"Text embedding model for converting text to vectors","featureDedup":"Dedup Engine","featureDedupDesc":"Detects and removes duplicate/similar documents","featureChunker":"Chunker","featureChunkerDesc":"Splits documents into retrievable semantic chunks","globalSearch":"Global Search","projectSearch":"Project Search","autoIndex":"Auto Index","enabled":"Enabled","disabled":"Disabled"},"models":{"title":"Model Configuration","description":"Manage LLM models and tier assignments","modelList":"Model List","addModel":"Add Model","editModel":"Edit Model","providerName":"Provider Name","modelName":"Model Name","apiKey":"API Key","baseUrl":"Base URL","protocol":"Protocol","testConnection":"Test Connection","testing":"Testing...","connected":"Connected","connectionFailed":"Connection Failed","noProviders":"No models yet. Add one to get started.","modelTiers":"Model Tier Assignment","tierReader":"Reader (Read-only)","tierReaderDesc":"Handles low-risk, read-only, and cost-sensitive work such as reading files, searching the knowledge base, text search, and context organization. Prefer fast, inexpensive models with stable long-context support.","tierReasoning":"Reasoning (Analysis)","tierReasoningDesc":"Handles deeper analysis, planning, code understanding, and multi-step reasoning. Prefer models with stronger reasoning quality and reliability.","tierAction":"Action (Write/Execute)","tierActionDesc":"Handles side-effect operations such as writing files, changing code, running commands, and calling external tools. Prefer reliable models with strong instruction-following and verified behavior.","activeModel":"Active Model","deleteProvider":"Delete","deleteProviderConfirm":"Are you sure you want to delete this model and all its configs?","modelNamePlaceholder":"e.g. gpt-4o / deepseek-chat","selectModelPlaceholder":"No model selected","apiKeyEditHint":"Configured keys are shown as a masked value. Focus the field to enter a new key; the mask cannot be copied. Leave empty or keep the mask to avoid changes.","apiKeyEditPlaceholder":"Enter a new API key, or leave empty to keep current","embeddingConfig":"Embedding Configuration","embeddingProvider":"Embedding Provider","embeddingProviderHash":"Local Hash Embedding","embeddingProviderOpenAI":"OpenAI-compatible Embedding","embeddingHint":"Embedding is used for knowledge base vector retrieval. After changing the embedding model or dimensions, reindex the knowledge base.","model":"Model","dimensions":"Dimensions","status":"Status","localHash":"Local Hash","openAICompatible":"OpenAI-compatible","saveEmbedding":"Save Embedding Config","testEmbedding":"Test Embedding","embeddingApiKeyHint":"Leave empty or keep the masked value to avoid changing the key","optional":"Optional","save":"Save","cancel":"Cancel"},"context":{"title":"Context Engineering","longTermDesc":"Persistent context from memory store (cross-session)","shortTermDesc":"Short-term context from recent session logs","longTermSource":"Source: ~/.customize-agent/memory.db (Memory Store)","shortTermSource":"Source: ~/.customize-agent/logs/ (Session Logs)","importance":"Importance","content":"Content","tags":"Tags","source":"Source","sourceHint":"Optional additional source/context description","updatedAt":"Updated"},"prompt":{"title":"Prompt Management","description":"Manage CUSTOMIZE.md system prompt files per project","filePath":"File Path","lastModified":"Last Modified","hasFile":"Configured","noFile":"Not Configured","noProjects":"No projects found. Initialize a Customize Agent project first."},"documents":{"title":"Generate & Edit","description":"Generate, edit, and validate business documents from templates and the local knowledge base","templateLibrary":"Template Library","workflow":"Template Workflow","template":"Template","selected":"Selected","boundPrompts":"Bound Prompts","boundFiles":"Bound Knowledge Files","boundPromptsRequired":"Select prompts","boundFilesRequired":"Select knowledge files","promptRole":"Prompt Role","fileRole":"File Role","manageRoles":"Manage Roles","roleEditor":"Role Editor","roleType":"Role Type","roleName":"Role Name","roleDescription":"Role Description","addPromptBinding":"Add Prompt Binding","addFileBinding":"Add File Binding","structuredFacts":"Structured Facts","exportGate":"Export Gate","executionStages":"Execution Stages","projectRoleConfig":"Project Role Config","projectRoleConfigRequired":"Select a project role config","noRoleConfig":"No project role config bound","evidenceLimit":"Evidence per Chapter","requirement":"Generation Requirement","requirementPlaceholder":"Example: Generate a construction organization design draft from uploaded tender files, drawings, and BOQ sheets.","generate":"Generate","editor":"Generate / Editor","edit":"Edit","chapters":"Chapters","sources":"Sources","missingItems":"Missing Items","validation":"Validation","evidenceCount":"Evidence Count","missingCount":"Missing Facts","downloadMarkdown":"Download Markdown","exportHtml":"Export HTML","exportPdf":"Export PDF","saveDraft":"Save Draft","draftHistory":"Draft History","regenerateChapter":"Regenerate Chapter","newTemplate":"New Template","templateEditor":"Template Editor","templateName":"Template Name","templateCategory":"Template Category","templateDescription":"Template Description","outputTitle":"Output Title","chapter":"Chapter","chapterTitle":"Chapter Title","chapterPurpose":"Chapter Purpose","chapterQueries":"Search Queries","requiredFacts":"Required Facts","addChapter":"Add Chapter","builtIn":"Built-in","deleteTemplateConfirm":"Delete this template?","noDraft":"Select a template and generate a draft"},"roles":{"title":"Role Config","description":"Create file roles and prompt roles, then combine them into ordered project role configs for templates","newFileRole":"New File Role","newPromptRole":"New Prompt Role","newConfig":"New Project Config","fileRoles":"File Roles","promptRoles":"Prompt Roles","configs":"Project Role Configs","roleEditor":"Role Editor","configEditor":"Project Role Config Editor","roleType":"Role Type","fileRole":"File Role","promptRole":"Prompt Role","roleName":"Role Name","roleDescription":"Role Description","bindFile":"Bind Knowledge File","bindPrompt":"Bind Prompt","executionType":"Execution Type","processingType":"Processing Type","factExtraction":"Fact Extraction","chapterGeneration":"Chapter Generation","validation":"Validation","formatting":"Formatting","reference":"Reference","ruleFile":"Rule File","projectFactFile":"Project Fact File","tableFile":"Table Data","drawingFile":"Drawing File","specificationFile":"Specification File","configName":"Config Name","configDescription":"Config Description","addRole":"Add Role"},"settings":{"title":"System Settings","description":"Manage language, theme, and other preferences","language":"Language","languageDesc":"Interface display language","theme":"Theme","themeDesc":"Light / Dark mode","light":"Light","dark":"Dark","system":"System","about":"About","version":"Version","port":"Service Port"},"common":{"save":"Save","cancel":"Cancel","confirm":"Confirm","delete":"Delete","edit":"Edit","add":"Add","search":"Search","loading":"Loading...","error":"Something went wrong","success":"Success","retry":"Retry","close":"Close","back":"Back","more":"More","noData":"No data","bytes":"bytes","kb":"KB","mb":"MB","gb":"GB","unknown":"Unknown","never":"Never"}}')},66285:()=>{},93065:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{B:()=>m});var e=c(8732),f=c(82015),g=c(21202),h=c(9328),i=c.n(h),j=c(94487),k=c(68329),l=a([j]);j=(l.then?(await l)():l)[0];let n=[{href:"/overview",icon:k.HxJ,labelKey:"nav.overview"},{icon:k.WmV,labelKey:"nav.knowledge",children:[{href:"/knowledge/manage",icon:k.BmN,labelKey:"nav.knowledgeManage"},{href:"/knowledge/files",icon:k.iUU,labelKey:"nav.fileManagement"},{href:"/knowledge/search",icon:k.vji,labelKey:"nav.knowledgeSearch"}]},{icon:k.jy9,labelKey:"nav.contextEngineering",children:[{href:"/context/long-term",icon:k.WmV,labelKey:"nav.longTermContext"},{href:"/context/short-term",icon:k.WmV,labelKey:"nav.shortTermContext"}]},{href:"/documents",icon:k.sv7,labelKey:"nav.documents"},{href:"/document-roles",icon:k.wB_,labelKey:"nav.documentRoles"},{href:"/models",icon:k.fX,labelKey:"nav.models"},{href:"/prompt",icon:k.vEG,labelKey:"nav.promptManagement"},{href:"/settings",icon:k.wB_,labelKey:"nav.settings"}];function m(){let a=(0,g.usePathname)(),b=(0,j.Vr)(),c=(0,f.useMemo)(()=>{let b={};for(let c of n)c.children?.some(b=>a===b.href||a.startsWith(b.href+"/"))&&(b[c.labelKey]=!0);return b},[a]),[d,h]=(0,f.useState)({}),[l,m]=(0,f.useState)(!1);return(0,e.jsxs)("aside",{className:`sidebar${l?" sidebarCollapsedSelf":""}`,children:[(0,e.jsx)(i(),{href:"/overview",prefetch:!1,children:(0,e.jsx)("div",{className:"sidebarLogo",children:(0,e.jsxs)("div",{children:[(0,e.jsx)("div",{className:"sidebarLogoTitle",children:(0,e.jsx)("span",{className:"logoGradient",children:b("app.title")})}),(0,e.jsx)("div",{className:"sidebarLogoSub",children:b("app.subtitle")})]})})}),(0,e.jsx)("button",{className:"sidebarCollapseBtn",onClick:()=>m(a=>!a),"aria-label":l?"展开侧边栏":"收起侧边栏",children:l?(0,e.jsx)(k.wdi,{size:16}):(0,e.jsx)(k.ues,{size:16})}),(0,e.jsx)("nav",{className:"sidebarNav",children:n.map(f=>{if(f.children){let g=d[f.labelKey]??c[f.labelKey]??!1;return(0,e.jsxs)("div",{children:[(0,e.jsxs)("div",{className:"sidebarItem sidebarParent",onClick:()=>{var a;return a=f.labelKey,void h(b=>({...b,[a]:!b[a]}))},children:[(0,e.jsx)(f.icon,{size:18}),(0,e.jsx)("span",{children:b(f.labelKey)}),(0,e.jsx)("span",{className:"sidebarChevron",children:g?(0,e.jsx)(k.yQN,{size:14}):(0,e.jsx)(k.c_$,{size:14})})]}),g&&!l&&(0,e.jsx)("div",{className:"sidebarSubmenu",children:f.children.map(c=>{let d=a===c.href||a.startsWith(c.href+"/");return(0,e.jsx)(i(),{href:c.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem sidebarSubItem${d?" sidebarItemActive":""}`,children:[(0,e.jsx)(c.icon,{size:16}),(0,e.jsx)("span",{children:b(c.labelKey)})]})},c.href)})})]},f.labelKey)}let g=a===f.href||a.startsWith(f.href+"/");return(0,e.jsx)(i(),{href:f.href,prefetch:!1,children:(0,e.jsxs)("div",{className:`sidebarItem${g?" sidebarItemActive":""}`,children:[(0,e.jsx)(f.icon,{size:18}),(0,e.jsx)("span",{children:b(f.labelKey)})]})},f.href)})})]})}d()}catch(a){d(a)}})},94487:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{PE:()=>r,Vr:()=>p,x_:()=>o});var e=c(8732),f=c(82015),g=c(57312),h=c(60056),i=c(4823),j=c(93065),k=c(34924),l=c(13484),m=c(54506),n=a([g,j,k]);[g,j,k]=n.then?(await n)():n;let s=(0,f.createContext)(null);function o(){let a=(0,f.useContext)(s);if(!a)throw Error("useAppLocale must be used inside Layout");return a}function p(a){let{messages:b}=o();return(0,f.useCallback)(c=>(function(a,b){let c=b.split(".").reduce((a,b)=>{if(a&&"object"==typeof a&&b in a)return a[b]},a);return"string"==typeof c?c:b})(b,a?`${a}.${c}`:c),[b,a])}let t={"zh-CN":l,"en-US":m};function q({children:a}){let{resolvedTheme:b}=(0,g.useTheme)(),[c,d]=(0,f.useState)(!1),[l,m]=(0,f.useState)("zh-CN"),n="dark"===b,o=t[l]??t["zh-CN"],p=(0,f.useCallback)(a=>{document.cookie=`NEXT_LOCALE=${a};path=/;max-age=31536000;samesite=lax`,m(a)},[]),q=(0,f.useMemo)(()=>({locale:l,setLocale:p,messages:o}),[l,p,o]),r=(0,f.useMemo)(()=>(0,i.D)(n),[n]);return c?(0,e.jsx)(s.Provider,{value:q,children:(0,e.jsx)(h.sG,{theme:r,children:(0,e.jsxs)(h.qw,{children:[(0,e.jsx)(j.B,{}),(0,e.jsxs)("div",{className:"mainContent",children:[(0,e.jsx)(k.Y,{}),(0,e.jsx)("main",{className:"mainInner",children:a})]})]})})}):(0,e.jsx)("div",{className:"appShellPlaceholder"})}function r({children:a}){return(0,e.jsx)(g.ThemeProvider,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,children:(0,e.jsx)(q,{children:a})})}d()}catch(a){d(a)}})},97237:()=>{}};