@winspan/claude-forge 8.35.0 → 8.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/ai/provider.d.ts +23 -1
- package/dist/core/ai/provider.d.ts.map +1 -1
- package/dist/core/ai/provider.js +67 -1
- package/dist/core/ai/provider.js.map +1 -1
- package/dist/core/ai/types.d.ts +28 -0
- package/dist/core/ai/types.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.d.ts.map +1 -1
- package/dist/daemon/handlers/user-prompt.js +25 -3
- package/dist/daemon/handlers/user-prompt.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +6 -2
- package/dist/daemon/index.js.map +1 -1
- package/dist/engine/agent-router.d.ts +37 -0
- package/dist/engine/agent-router.d.ts.map +1 -1
- package/dist/engine/agent-router.js +58 -0
- package/dist/engine/agent-router.js.map +1 -1
- package/dist/engine/conventions/routing.yaml +31 -2
- package/dist/intelligence/classifier.d.ts +63 -43
- package/dist/intelligence/classifier.d.ts.map +1 -1
- package/dist/intelligence/classifier.js +256 -191
- package/dist/intelligence/classifier.js.map +1 -1
- package/dist/intelligence/context-gatherer.d.ts +101 -0
- package/dist/intelligence/context-gatherer.d.ts.map +1 -0
- package/dist/intelligence/context-gatherer.js +417 -0
- package/dist/intelligence/context-gatherer.js.map +1 -0
- package/dist/intelligence/cot-classifier.d.ts +95 -0
- package/dist/intelligence/cot-classifier.d.ts.map +1 -0
- package/dist/intelligence/cot-classifier.js +391 -0
- package/dist/intelligence/cot-classifier.js.map +1 -0
- package/dist/intelligence/execution-doc-builder.d.ts +90 -0
- package/dist/intelligence/execution-doc-builder.d.ts.map +1 -1
- package/dist/intelligence/execution-doc-builder.js +459 -42
- package/dist/intelligence/execution-doc-builder.js.map +1 -1
- package/dist/intelligence/intent-types.d.ts +13 -0
- package/dist/intelligence/intent-types.d.ts.map +1 -0
- package/dist/intelligence/intent-types.js +19 -0
- package/dist/intelligence/intent-types.js.map +1 -0
- package/dist/intelligence/multimodal-parser.d.ts +105 -0
- package/dist/intelligence/multimodal-parser.d.ts.map +1 -0
- package/dist/intelligence/multimodal-parser.js +425 -0
- package/dist/intelligence/multimodal-parser.js.map +1 -0
- package/dist/web/static/assets/{AIConfig-DiUFET_Q.js → AIConfig-D4VglzCl.js} +2 -2
- package/dist/web/static/assets/{AIConfig-DiUFET_Q.js.map → AIConfig-D4VglzCl.js.map} +1 -1
- package/dist/web/static/assets/{Agents-bNNGbQnL.js → Agents-ne5lXc7V.js} +2 -2
- package/dist/web/static/assets/{Agents-bNNGbQnL.js.map → Agents-ne5lXc7V.js.map} +1 -1
- package/dist/web/static/assets/Dashboard-D4j0Zmek.js +2 -0
- package/dist/web/static/assets/Dashboard-D4j0Zmek.js.map +1 -0
- package/dist/web/static/assets/{Drawer-DOUcx6m1.js → Drawer-Lo5ihVP-.js} +2 -2
- package/dist/web/static/assets/{Drawer-DOUcx6m1.js.map → Drawer-Lo5ihVP-.js.map} +1 -1
- package/dist/web/static/assets/{Events-DQHP6Uaq.js → Events-DBJ1B7OW.js} +2 -2
- package/dist/web/static/assets/{Events-DQHP6Uaq.js.map → Events-DBJ1B7OW.js.map} +1 -1
- package/dist/web/static/assets/{ExecutionTrace-Co8ARdg-.js → ExecutionTrace-Du9XADc1.js} +2 -2
- package/dist/web/static/assets/{ExecutionTrace-Co8ARdg-.js.map → ExecutionTrace-Du9XADc1.js.map} +1 -1
- package/dist/web/static/assets/{Routing-BW3eGD-8.js → Routing-BNQ09OlH.js} +2 -2
- package/dist/web/static/assets/{Routing-BW3eGD-8.js.map → Routing-BNQ09OlH.js.map} +1 -1
- package/dist/web/static/assets/{SessionDetail-Cbd7Jwox.js → SessionDetail-BPrPyMNa.js} +2 -2
- package/dist/web/static/assets/{SessionDetail-Cbd7Jwox.js.map → SessionDetail-BPrPyMNa.js.map} +1 -1
- package/dist/web/static/assets/{Sessions-ZQSCgXyy.js → Sessions-o3EXsXz9.js} +2 -2
- package/dist/web/static/assets/{Sessions-ZQSCgXyy.js.map → Sessions-o3EXsXz9.js.map} +1 -1
- package/dist/web/static/assets/{Skills-C5-5zOSH.js → Skills-Czt5mkyc.js} +2 -2
- package/dist/web/static/assets/{Skills-C5-5zOSH.js.map → Skills-Czt5mkyc.js.map} +1 -1
- package/dist/web/static/assets/{export-CbQTOt71.js → export-C0mlC4AT.js} +2 -2
- package/dist/web/static/assets/{export-CbQTOt71.js.map → export-C0mlC4AT.js.map} +1 -1
- package/dist/web/static/assets/index-B1J7nBu0.js +3 -0
- package/dist/web/static/assets/index-B1J7nBu0.js.map +1 -0
- package/dist/web/static/assets/index-BVqk4bSO.css +1 -0
- package/dist/web/static/assets/{lucide-BanPULT1.js → lucide-Bu44HVAM.js} +33 -73
- package/dist/web/static/assets/lucide-Bu44HVAM.js.map +1 -0
- package/dist/web/static/index.html +3 -3
- package/package.json +1 -1
- package/dist/web/static/assets/Dashboard-Ciyyw6ph.js +0 -2
- package/dist/web/static/assets/Dashboard-Ciyyw6ph.js.map +0 -1
- package/dist/web/static/assets/Methodologies-CXNrDXwG.js +0 -5
- package/dist/web/static/assets/Methodologies-CXNrDXwG.js.map +0 -1
- package/dist/web/static/assets/MethodologyDetail-rV3W1utf.js +0 -2
- package/dist/web/static/assets/MethodologyDetail-rV3W1utf.js.map +0 -1
- package/dist/web/static/assets/index-DJK5beK6.js +0 -3
- package/dist/web/static/assets/index-DJK5beK6.js.map +0 -1
- package/dist/web/static/assets/index-phpuytMI.css +0 -1
- package/dist/web/static/assets/lucide-BanPULT1.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{r as
|
|
1
|
+
import{r as o}from"./react-vendor-CSp-GLFF.js";/**
|
|
2
2
|
* @license lucide-react v0.379.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const p=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),
|
|
6
|
+
*/const p=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),i=(...t)=>t.filter((a,y,h)=>!!a&&h.indexOf(a)===y).join(" ");/**
|
|
7
7
|
* @license lucide-react v0.379.0 - ISC
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
@@ -13,12 +13,12 @@ import{r as c}from"./react-vendor-CSp-GLFF.js";/**
|
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const M=
|
|
16
|
+
*/const M=o.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:y=2,absoluteStrokeWidth:h,className:k="",children:r,iconNode:c,...n},l)=>o.createElement("svg",{ref:l,...x,width:a,height:a,stroke:t,strokeWidth:h?Number(y)*24/Number(a):y,className:i("lucide",k),...n},[...c.map(([d,s])=>o.createElement(d,s)),...Array.isArray(r)?r:[r]]));/**
|
|
17
17
|
* @license lucide-react v0.379.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const e=(t,a)=>{const y=
|
|
21
|
+
*/const e=(t,a)=>{const y=o.forwardRef(({className:h,...k},r)=>o.createElement(M,{ref:r,iconNode:a,className:i(`lucide-${p(t)}`,h),...k}));return y.displayName=`${t}`,y};/**
|
|
22
22
|
* @license lucide-react v0.379.0 - ISC
|
|
23
23
|
*
|
|
24
24
|
* This source code is licensed under the ISC license.
|
|
@@ -28,12 +28,12 @@ import{r as c}from"./react-vendor-CSp-GLFF.js";/**
|
|
|
28
28
|
*
|
|
29
29
|
* This source code is licensed under the ISC license.
|
|
30
30
|
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
-
*/const
|
|
31
|
+
*/const f=e("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/**
|
|
32
32
|
* @license lucide-react v0.379.0 - ISC
|
|
33
33
|
*
|
|
34
34
|
* This source code is licensed under the ISC license.
|
|
35
35
|
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
-
*/const
|
|
36
|
+
*/const m=e("BookOpen",[["path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z",key:"vv98re"}],["path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z",key:"1cyq3y"}]]);/**
|
|
37
37
|
* @license lucide-react v0.379.0 - ISC
|
|
38
38
|
*
|
|
39
39
|
* This source code is licensed under the ISC license.
|
|
@@ -53,170 +53,130 @@ import{r as c}from"./react-vendor-CSp-GLFF.js";/**
|
|
|
53
53
|
*
|
|
54
54
|
* This source code is licensed under the ISC license.
|
|
55
55
|
* See the LICENSE file in the root directory of this source tree.
|
|
56
|
-
*/const b=e("
|
|
56
|
+
*/const b=e("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);/**
|
|
57
57
|
* @license lucide-react v0.379.0 - ISC
|
|
58
58
|
*
|
|
59
59
|
* This source code is licensed under the ISC license.
|
|
60
60
|
* See the LICENSE file in the root directory of this source tree.
|
|
61
|
-
*/const
|
|
61
|
+
*/const C=e("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]]);/**
|
|
62
62
|
* @license lucide-react v0.379.0 - ISC
|
|
63
63
|
*
|
|
64
64
|
* This source code is licensed under the ISC license.
|
|
65
65
|
* See the LICENSE file in the root directory of this source tree.
|
|
66
|
-
*/const
|
|
66
|
+
*/const q=e("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/**
|
|
67
67
|
* @license lucide-react v0.379.0 - ISC
|
|
68
68
|
*
|
|
69
69
|
* This source code is licensed under the ISC license.
|
|
70
70
|
* See the LICENSE file in the root directory of this source tree.
|
|
71
|
-
*/const A=e("
|
|
71
|
+
*/const A=e("Download",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"7 10 12 15 17 10",key:"2ggqvy"}],["line",{x1:"12",x2:"12",y1:"15",y2:"3",key:"1vk2je"}]]);/**
|
|
72
72
|
* @license lucide-react v0.379.0 - ISC
|
|
73
73
|
*
|
|
74
74
|
* This source code is licensed under the ISC license.
|
|
75
75
|
* See the LICENSE file in the root directory of this source tree.
|
|
76
|
-
*/const
|
|
76
|
+
*/const j=e("EyeOff",[["path",{d:"M9.88 9.88a3 3 0 1 0 4.24 4.24",key:"1jxqfv"}],["path",{d:"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68",key:"9wicm4"}],["path",{d:"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61",key:"1jreej"}],["line",{x1:"2",x2:"22",y1:"2",y2:"22",key:"a6p6uj"}]]);/**
|
|
77
77
|
* @license lucide-react v0.379.0 - ISC
|
|
78
78
|
*
|
|
79
79
|
* This source code is licensed under the ISC license.
|
|
80
80
|
* See the LICENSE file in the root directory of this source tree.
|
|
81
|
-
*/const
|
|
81
|
+
*/const L=e("Eye",[["path",{d:"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z",key:"rwhkz3"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/**
|
|
82
82
|
* @license lucide-react v0.379.0 - ISC
|
|
83
83
|
*
|
|
84
84
|
* This source code is licensed under the ISC license.
|
|
85
85
|
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
-
*/const
|
|
86
|
+
*/const H=e("FileCode",[["path",{d:"M10 12.5 8 15l2 2.5",key:"1tg20x"}],["path",{d:"m14 12.5 2 2.5-2 2.5",key:"yinavb"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z",key:"1mlx9k"}]]);/**
|
|
87
87
|
* @license lucide-react v0.379.0 - ISC
|
|
88
88
|
*
|
|
89
89
|
* This source code is licensed under the ISC license.
|
|
90
90
|
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
-
*/const B=e("
|
|
91
|
+
*/const B=e("FilePen",[["path",{d:"M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v10",key:"x7tsz2"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10.4 12.6a2 2 0 1 1 3 3L8 21l-4 1 1-4Z",key:"o3xyfb"}]]);/**
|
|
92
92
|
* @license lucide-react v0.379.0 - ISC
|
|
93
93
|
*
|
|
94
94
|
* This source code is licensed under the ISC license.
|
|
95
95
|
* See the LICENSE file in the root directory of this source tree.
|
|
96
|
-
*/const
|
|
96
|
+
*/const E=e("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/**
|
|
97
97
|
* @license lucide-react v0.379.0 - ISC
|
|
98
98
|
*
|
|
99
99
|
* This source code is licensed under the ISC license.
|
|
100
100
|
* See the LICENSE file in the root directory of this source tree.
|
|
101
|
-
*/const V=e("
|
|
101
|
+
*/const V=e("GitCommitHorizontal",[["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}],["line",{x1:"3",x2:"9",y1:"12",y2:"12",key:"1dyftd"}],["line",{x1:"15",x2:"21",y1:"12",y2:"12",key:"oup4p8"}]]);/**
|
|
102
102
|
* @license lucide-react v0.379.0 - ISC
|
|
103
103
|
*
|
|
104
104
|
* This source code is licensed under the ISC license.
|
|
105
105
|
* See the LICENSE file in the root directory of this source tree.
|
|
106
|
-
*/const
|
|
106
|
+
*/const F=e("Info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);/**
|
|
107
107
|
* @license lucide-react v0.379.0 - ISC
|
|
108
108
|
*
|
|
109
109
|
* This source code is licensed under the ISC license.
|
|
110
110
|
* See the LICENSE file in the root directory of this source tree.
|
|
111
|
-
*/const
|
|
111
|
+
*/const O=e("LayoutDashboard",[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]]);/**
|
|
112
112
|
* @license lucide-react v0.379.0 - ISC
|
|
113
113
|
*
|
|
114
114
|
* This source code is licensed under the ISC license.
|
|
115
115
|
* See the LICENSE file in the root directory of this source tree.
|
|
116
|
-
*/const S=e("
|
|
116
|
+
*/const S=e("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);/**
|
|
117
117
|
* @license lucide-react v0.379.0 - ISC
|
|
118
118
|
*
|
|
119
119
|
* This source code is licensed under the ISC license.
|
|
120
120
|
* See the LICENSE file in the root directory of this source tree.
|
|
121
|
-
*/const
|
|
121
|
+
*/const T=e("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
|
|
122
122
|
* @license lucide-react v0.379.0 - ISC
|
|
123
123
|
*
|
|
124
124
|
* This source code is licensed under the ISC license.
|
|
125
125
|
* See the LICENSE file in the root directory of this source tree.
|
|
126
|
-
*/const
|
|
126
|
+
*/const Z=e("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]);/**
|
|
127
127
|
* @license lucide-react v0.379.0 - ISC
|
|
128
128
|
*
|
|
129
129
|
* This source code is licensed under the ISC license.
|
|
130
130
|
* See the LICENSE file in the root directory of this source tree.
|
|
131
|
-
*/const
|
|
131
|
+
*/const N=e("Network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);/**
|
|
132
132
|
* @license lucide-react v0.379.0 - ISC
|
|
133
133
|
*
|
|
134
134
|
* This source code is licensed under the ISC license.
|
|
135
135
|
* See the LICENSE file in the root directory of this source tree.
|
|
136
|
-
*/const
|
|
136
|
+
*/const W=e("Pen",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}]]);/**
|
|
137
137
|
* @license lucide-react v0.379.0 - ISC
|
|
138
138
|
*
|
|
139
139
|
* This source code is licensed under the ISC license.
|
|
140
140
|
* See the LICENSE file in the root directory of this source tree.
|
|
141
|
-
*/const
|
|
141
|
+
*/const D=e("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/**
|
|
142
142
|
* @license lucide-react v0.379.0 - ISC
|
|
143
143
|
*
|
|
144
144
|
* This source code is licensed under the ISC license.
|
|
145
145
|
* See the LICENSE file in the root directory of this source tree.
|
|
146
|
-
*/const
|
|
146
|
+
*/const I=e("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
|
|
147
147
|
* @license lucide-react v0.379.0 - ISC
|
|
148
148
|
*
|
|
149
149
|
* This source code is licensed under the ISC license.
|
|
150
150
|
* See the LICENSE file in the root directory of this source tree.
|
|
151
|
-
*/const
|
|
151
|
+
*/const P=e("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/**
|
|
152
152
|
* @license lucide-react v0.379.0 - ISC
|
|
153
153
|
*
|
|
154
154
|
* This source code is licensed under the ISC license.
|
|
155
155
|
* See the LICENSE file in the root directory of this source tree.
|
|
156
|
-
*/const
|
|
156
|
+
*/const X=e("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/**
|
|
157
157
|
* @license lucide-react v0.379.0 - ISC
|
|
158
158
|
*
|
|
159
159
|
* This source code is licensed under the ISC license.
|
|
160
160
|
* See the LICENSE file in the root directory of this source tree.
|
|
161
|
-
*/const
|
|
161
|
+
*/const $=e("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
|
|
162
162
|
* @license lucide-react v0.379.0 - ISC
|
|
163
163
|
*
|
|
164
164
|
* This source code is licensed under the ISC license.
|
|
165
165
|
* See the LICENSE file in the root directory of this source tree.
|
|
166
|
-
*/const
|
|
166
|
+
*/const G=e("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
|
|
167
167
|
* @license lucide-react v0.379.0 - ISC
|
|
168
168
|
*
|
|
169
169
|
* This source code is licensed under the ISC license.
|
|
170
170
|
* See the LICENSE file in the root directory of this source tree.
|
|
171
|
-
*/const
|
|
171
|
+
*/const R=e("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/**
|
|
172
172
|
* @license lucide-react v0.379.0 - ISC
|
|
173
173
|
*
|
|
174
174
|
* This source code is licensed under the ISC license.
|
|
175
175
|
* See the LICENSE file in the root directory of this source tree.
|
|
176
|
-
*/const
|
|
176
|
+
*/const U=e("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
|
|
177
177
|
* @license lucide-react v0.379.0 - ISC
|
|
178
178
|
*
|
|
179
179
|
* This source code is licensed under the ISC license.
|
|
180
180
|
* See the LICENSE file in the root directory of this source tree.
|
|
181
|
-
*/const K=e("
|
|
182
|
-
|
|
183
|
-
*
|
|
184
|
-
* This source code is licensed under the ISC license.
|
|
185
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
186
|
-
*/const J=e("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]);/**
|
|
187
|
-
* @license lucide-react v0.379.0 - ISC
|
|
188
|
-
*
|
|
189
|
-
* This source code is licensed under the ISC license.
|
|
190
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
191
|
-
*/const Q=e("TrendingUp",[["polyline",{points:"22 7 13.5 15.5 8.5 10.5 2 17",key:"126l90"}],["polyline",{points:"16 7 22 7 22 13",key:"kwv8wd"}]]);/**
|
|
192
|
-
* @license lucide-react v0.379.0 - ISC
|
|
193
|
-
*
|
|
194
|
-
* This source code is licensed under the ISC license.
|
|
195
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
196
|
-
*/const Y=e("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
|
|
197
|
-
* @license lucide-react v0.379.0 - ISC
|
|
198
|
-
*
|
|
199
|
-
* This source code is licensed under the ISC license.
|
|
200
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
201
|
-
*/const _=e("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);/**
|
|
202
|
-
* @license lucide-react v0.379.0 - ISC
|
|
203
|
-
*
|
|
204
|
-
* This source code is licensed under the ISC license.
|
|
205
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
206
|
-
*/const e1=e("WifiOff",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/**
|
|
207
|
-
* @license lucide-react v0.379.0 - ISC
|
|
208
|
-
*
|
|
209
|
-
* This source code is licensed under the ISC license.
|
|
210
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
211
|
-
*/const t1=e("Wifi",[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]]);/**
|
|
212
|
-
* @license lucide-react v0.379.0 - ISC
|
|
213
|
-
*
|
|
214
|
-
* This source code is licensed under the ISC license.
|
|
215
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
216
|
-
*/const a1=e("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
|
|
217
|
-
* @license lucide-react v0.379.0 - ISC
|
|
218
|
-
*
|
|
219
|
-
* This source code is licensed under the ISC license.
|
|
220
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
221
|
-
*/const y1=e("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);export{g as A,u as B,H as C,j as D,L as E,V as F,S as G,O as I,P as L,W as M,I as N,X as P,R as S,Q as T,_ as U,t1 as W,a1 as X,y1 as Z,D as a,f as b,w as c,q as d,z as e,Y as f,A as g,K as h,Z as i,m as j,F as k,e1 as l,G as m,b as n,J as o,N as p,C as q,E as r,T as s,U as t,$ as u,B as v};
|
|
222
|
-
//# sourceMappingURL=lucide-BanPULT1.js.map
|
|
181
|
+
*/const K=e("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);export{g as A,u as B,q as C,A as D,j as E,B as F,V as G,F as I,O as L,T as M,N,W as P,I as S,X as T,R as W,U as X,K as Z,Z as a,m as b,w as c,b as d,z as e,$ as f,C as g,P as h,f as i,E as j,G as k,H as l,D as m,L as n,S as o};
|
|
182
|
+
//# sourceMappingURL=lucide-Bu44HVAM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lucide-Bu44HVAM.js","sources":["../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../node_modules/lucide-react/dist/esm/Icon.js","../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../node_modules/lucide-react/dist/esm/icons/activity.js","../../node_modules/lucide-react/dist/esm/icons/arrow-left.js","../../node_modules/lucide-react/dist/esm/icons/book-open.js","../../node_modules/lucide-react/dist/esm/icons/bot.js","../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../node_modules/lucide-react/dist/esm/icons/circle-x.js","../../node_modules/lucide-react/dist/esm/icons/clock.js","../../node_modules/lucide-react/dist/esm/icons/cpu.js","../../node_modules/lucide-react/dist/esm/icons/download.js","../../node_modules/lucide-react/dist/esm/icons/eye-off.js","../../node_modules/lucide-react/dist/esm/icons/eye.js","../../node_modules/lucide-react/dist/esm/icons/file-code.js","../../node_modules/lucide-react/dist/esm/icons/file-pen.js","../../node_modules/lucide-react/dist/esm/icons/filter.js","../../node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js","../../node_modules/lucide-react/dist/esm/icons/info.js","../../node_modules/lucide-react/dist/esm/icons/layout-dashboard.js","../../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../../node_modules/lucide-react/dist/esm/icons/menu.js","../../node_modules/lucide-react/dist/esm/icons/message-square.js","../../node_modules/lucide-react/dist/esm/icons/network.js","../../node_modules/lucide-react/dist/esm/icons/pen.js","../../node_modules/lucide-react/dist/esm/icons/save.js","../../node_modules/lucide-react/dist/esm/icons/search.js","../../node_modules/lucide-react/dist/esm/icons/terminal.js","../../node_modules/lucide-react/dist/esm/icons/trending-up.js","../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../node_modules/lucide-react/dist/esm/icons/wifi-off.js","../../node_modules/lucide-react/dist/esm/icons/wifi.js","../../node_modules/lucide-react/dist/esm/icons/x.js","../../node_modules/lucide-react/dist/esm/icons/zap.js"],"sourcesContent":["/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && array.indexOf(className) === index;\n}).join(\" \");\n\nexport { mergeClasses, toKebabCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props\n })\n );\n Component.displayName = `${iconName}`;\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowLeft = createLucideIcon(\"ArrowLeft\", [\n [\"path\", { d: \"m12 19-7-7 7-7\", key: \"1l729n\" }],\n [\"path\", { d: \"M19 12H5\", key: \"x3x0zl\" }]\n]);\n\nexport { ArrowLeft as default };\n//# sourceMappingURL=arrow-left.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst BookOpen = createLucideIcon(\"BookOpen\", [\n [\"path\", { d: \"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\", key: \"vv98re\" }],\n [\"path\", { d: \"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\", key: \"1cyq3y\" }]\n]);\n\nexport { BookOpen as default };\n//# sourceMappingURL=book-open.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Bot = createLucideIcon(\"Bot\", [\n [\"path\", { d: \"M12 8V4H8\", key: \"hb8ula\" }],\n [\"rect\", { width: \"16\", height: \"12\", x: \"4\", y: \"8\", rx: \"2\", key: \"enze0r\" }],\n [\"path\", { d: \"M2 14h2\", key: \"vft8re\" }],\n [\"path\", { d: \"M20 14h2\", key: \"4cs60a\" }],\n [\"path\", { d: \"M15 13v2\", key: \"1xurst\" }],\n [\"path\", { d: \"M9 13v2\", key: \"rq6x2g\" }]\n]);\n\nexport { Bot as default };\n//# sourceMappingURL=bot.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleAlert = createLucideIcon(\"CircleAlert\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n]);\n\nexport { CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheckBig = createLucideIcon(\"CircleCheckBig\", [\n [\"path\", { d: \"M22 11.08V12a10 10 0 1 1-5.93-9.14\", key: \"g774vq\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n]);\n\nexport { CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleX = createLucideIcon(\"CircleX\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n]);\n\nexport { CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"Clock\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Cpu = createLucideIcon(\"Cpu\", [\n [\"rect\", { width: \"16\", height: \"16\", x: \"4\", y: \"4\", rx: \"2\", key: \"14l7u7\" }],\n [\"rect\", { width: \"6\", height: \"6\", x: \"9\", y: \"9\", rx: \"1\", key: \"5aljv4\" }],\n [\"path\", { d: \"M15 2v2\", key: \"13l42r\" }],\n [\"path\", { d: \"M15 20v2\", key: \"15mkzm\" }],\n [\"path\", { d: \"M2 15h2\", key: \"1gxd5l\" }],\n [\"path\", { d: \"M2 9h2\", key: \"1bbxkp\" }],\n [\"path\", { d: \"M20 15h2\", key: \"19e6y8\" }],\n [\"path\", { d: \"M20 9h2\", key: \"19tzq7\" }],\n [\"path\", { d: \"M9 2v2\", key: \"165o2o\" }],\n [\"path\", { d: \"M9 20v2\", key: \"i2bqo8\" }]\n]);\n\nexport { Cpu as default };\n//# sourceMappingURL=cpu.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Download = createLucideIcon(\"Download\", [\n [\"path\", { d: \"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\", key: \"ih7n3h\" }],\n [\"polyline\", { points: \"7 10 12 15 17 10\", key: \"2ggqvy\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"15\", y2: \"3\", key: \"1vk2je\" }]\n]);\n\nexport { Download as default };\n//# sourceMappingURL=download.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst EyeOff = createLucideIcon(\"EyeOff\", [\n [\"path\", { d: \"M9.88 9.88a3 3 0 1 0 4.24 4.24\", key: \"1jxqfv\" }],\n [\n \"path\",\n {\n d: \"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\",\n key: \"9wicm4\"\n }\n ],\n [\n \"path\",\n { d: \"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\", key: \"1jreej\" }\n ],\n [\"line\", { x1: \"2\", x2: \"22\", y1: \"2\", y2: \"22\", key: \"a6p6uj\" }]\n]);\n\nexport { EyeOff as default };\n//# sourceMappingURL=eye-off.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Eye = createLucideIcon(\"Eye\", [\n [\"path\", { d: \"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\", key: \"rwhkz3\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileCode = createLucideIcon(\"FileCode\", [\n [\"path\", { d: \"M10 12.5 8 15l2 2.5\", key: \"1tg20x\" }],\n [\"path\", { d: \"m14 12.5 2 2.5-2 2.5\", key: \"yinavb\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z\", key: \"1mlx9k\" }]\n]);\n\nexport { FileCode as default };\n//# sourceMappingURL=file-code.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FilePen = createLucideIcon(\"FilePen\", [\n [\"path\", { d: \"M12 22h6a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v10\", key: \"x7tsz2\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M10.4 12.6a2 2 0 1 1 3 3L8 21l-4 1 1-4Z\", key: \"o3xyfb\" }]\n]);\n\nexport { FilePen as default };\n//# sourceMappingURL=file-pen.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Filter = createLucideIcon(\"Filter\", [\n [\"polygon\", { points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\", key: \"1yg77f\" }]\n]);\n\nexport { Filter as default };\n//# sourceMappingURL=filter.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitCommitHorizontal = createLucideIcon(\"GitCommitHorizontal\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }],\n [\"line\", { x1: \"3\", x2: \"9\", y1: \"12\", y2: \"12\", key: \"1dyftd\" }],\n [\"line\", { x1: \"15\", x2: \"21\", y1: \"12\", y2: \"12\", key: \"oup4p8\" }]\n]);\n\nexport { GitCommitHorizontal as default };\n//# sourceMappingURL=git-commit-horizontal.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Info = createLucideIcon(\"Info\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n]);\n\nexport { Info as default };\n//# sourceMappingURL=info.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst LayoutDashboard = createLucideIcon(\"LayoutDashboard\", [\n [\"rect\", { width: \"7\", height: \"9\", x: \"3\", y: \"3\", rx: \"1\", key: \"10lvy0\" }],\n [\"rect\", { width: \"7\", height: \"5\", x: \"14\", y: \"3\", rx: \"1\", key: \"16une8\" }],\n [\"rect\", { width: \"7\", height: \"9\", x: \"14\", y: \"12\", rx: \"1\", key: \"1hutg5\" }],\n [\"rect\", { width: \"7\", height: \"5\", x: \"3\", y: \"16\", rx: \"1\", key: \"ldoo1y\" }]\n]);\n\nexport { LayoutDashboard as default };\n//# sourceMappingURL=layout-dashboard.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst LoaderCircle = createLucideIcon(\"LoaderCircle\", [\n [\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]\n]);\n\nexport { LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Menu = createLucideIcon(\"Menu\", [\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"6\", y2: \"6\", key: \"1owob3\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"18\", y2: \"18\", key: \"yk5zj1\" }]\n]);\n\nexport { Menu as default };\n//# sourceMappingURL=menu.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageSquare = createLucideIcon(\"MessageSquare\", [\n [\"path\", { d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\", key: \"1lielz\" }]\n]);\n\nexport { MessageSquare as default };\n//# sourceMappingURL=message-square.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Network = createLucideIcon(\"Network\", [\n [\"rect\", { x: \"16\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"4q2zg0\" }],\n [\"rect\", { x: \"2\", y: \"16\", width: \"6\", height: \"6\", rx: \"1\", key: \"8cvhb9\" }],\n [\"rect\", { x: \"9\", y: \"2\", width: \"6\", height: \"6\", rx: \"1\", key: \"1egb70\" }],\n [\"path\", { d: \"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\", key: \"1jsf9p\" }],\n [\"path\", { d: \"M12 12V8\", key: \"2874zd\" }]\n]);\n\nexport { Network as default };\n//# sourceMappingURL=network.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Pen = createLucideIcon(\"Pen\", [\n [\"path\", { d: \"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\", key: \"5qss01\" }]\n]);\n\nexport { Pen as default };\n//# sourceMappingURL=pen.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Save = createLucideIcon(\"Save\", [\n [\n \"path\",\n {\n d: \"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z\",\n key: \"1c8476\"\n }\n ],\n [\"path\", { d: \"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7\", key: \"1ydtos\" }],\n [\"path\", { d: \"M7 3v4a1 1 0 0 0 1 1h7\", key: \"t51u73\" }]\n]);\n\nexport { Save as default };\n//# sourceMappingURL=save.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Search = createLucideIcon(\"Search\", [\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"path\", { d: \"m21 21-4.3-4.3\", key: \"1qie3q\" }]\n]);\n\nexport { Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Terminal = createLucideIcon(\"Terminal\", [\n [\"polyline\", { points: \"4 17 10 11 4 5\", key: \"akl6gq\" }],\n [\"line\", { x1: \"12\", x2: \"20\", y1: \"19\", y2: \"19\", key: \"q2wloq\" }]\n]);\n\nexport { Terminal as default };\n//# sourceMappingURL=terminal.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TrendingUp = createLucideIcon(\"TrendingUp\", [\n [\"polyline\", { points: \"22 7 13.5 15.5 8.5 10.5 2 17\", key: \"126l90\" }],\n [\"polyline\", { points: \"16 7 22 7 22 13\", key: \"kwv8wd\" }]\n]);\n\nexport { TrendingUp as default };\n//# sourceMappingURL=trending-up.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TriangleAlert = createLucideIcon(\"TriangleAlert\", [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n]);\n\nexport { TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst WifiOff = createLucideIcon(\"WifiOff\", [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 5.17-2.69\", key: \"1dl1wf\" }],\n [\"path\", { d: \"M19 12.859a10 10 0 0 0-2.007-1.523\", key: \"4k23kn\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 4.177-2.643\", key: \"1grhjp\" }],\n [\"path\", { d: \"M22 8.82a15 15 0 0 0-11.288-3.764\", key: \"z3jwby\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n]);\n\nexport { WifiOff as default };\n//# sourceMappingURL=wifi-off.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Wifi = createLucideIcon(\"Wifi\", [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 20 0\", key: \"dnpr2z\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 14 0\", key: \"1x1e6c\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }]\n]);\n\nexport { Wifi as default };\n//# sourceMappingURL=wifi.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst X = createLucideIcon(\"X\", [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n]);\n\nexport { X as default };\n//# sourceMappingURL=x.js.map\n","/**\n * @license lucide-react v0.379.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Zap = createLucideIcon(\"Zap\", [\n [\n \"path\",\n {\n d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\",\n key: \"1xq2db\"\n }\n ]\n]);\n\nexport { Zap as default };\n//# sourceMappingURL=zap.js.map\n"],"names":["toKebabCase","string","mergeClasses","classes","className","index","array","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","children","iconNode","rest","ref","createElement","tag","attrs","createLucideIcon","iconName","Component","props","Activity","ArrowLeft","BookOpen","Bot","CircleAlert","CircleCheckBig","CircleX","Clock","Cpu","Download","EyeOff","Eye","FileCode","FilePen","Filter","GitCommitHorizontal","Info","LayoutDashboard","LoaderCircle","Menu","MessageSquare","Network","Pen","Save","Search","Terminal","TrendingUp","TriangleAlert","WifiOff","Wifi","X","Zap"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>Claude Forge 管理后台</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-B1J7nBu0.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-CSp-GLFF.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/vendor-CMMjVdZs.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/react-router-I-HqunH7.js">
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/query-C99w429o.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/syntax-highlighter-44FakypI.js">
|
|
14
|
-
<link rel="modulepreload" crossorigin href="/assets/lucide-
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/lucide-Bu44HVAM.js">
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BVqk4bSO.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{j as e}from"./react-vendor-CSp-GLFF.js";import{u as d}from"./query-C99w429o.js";import{b as w}from"./react-router-I-HqunH7.js";import{A as C,a as k,G as L,Z as $,g as q}from"./lucide-BanPULT1.js";import{R as m,A as R,C as j,X as g,Y as y,T as u,a as F,B as K,b as A,P as S,c as D,d as M,L as O}from"./charts-CLrM0_uM.js";import"./vendor-CMMjVdZs.js";async function E(){const s=await fetch("/api/status");if(!s.ok)throw new Error("Failed");return s.json()}async function P(){const s=await fetch("/api/stats");if(!s.ok)throw new Error("Failed");return s.json()}async function U(){const s=await fetch("/api/sessions?limit=1000");return s.ok?(await s.json()).length:0}async function B(){const s=await fetch("/api/routing/stats?window=168");return s.ok?s.json():null}async function I(){const s=await fetch("/api/methodology-executions?limit=1000");return s.ok?(await s.json()).length:0}function z(s){const t=Math.floor(s/86400),a=Math.floor(s%86400/3600),l=Math.floor(s%3600/60);return t>0?`${t}天 ${a}小时`:a>0?`${a}小时 ${l}分钟`:`${l}分钟`}const r={primary:"#6366f1",green:"#10b981",red:"#ef4444",yellow:"#f59e0b",blue:"#3b82f6",purple:"#8b5cf6"},b=[r.primary,r.green,r.yellow,r.red,r.purple,r.blue];function Q(){var f;const s=w(),{data:t}=d({queryKey:["status"],queryFn:E,refetchInterval:5e3}),{data:a}=d({queryKey:["system-stats"],queryFn:P,refetchInterval:3e4}),{data:l}=d({queryKey:["sessions-count"],queryFn:U}),{data:n}=d({queryKey:["dashboard-routing"],queryFn:B}),{data:c}=d({queryKey:["methodology-count"],queryFn:I}),p=(n==null?void 0:n.obedienceRate)!==null&&(n==null?void 0:n.obedienceRate)!==void 0?(n.obedienceRate*100).toFixed(0):"-",v=a!=null&&a.toolUsage?Object.entries(a.toolUsage).sort(([,i],[,o])=>o-i).slice(0,8).map(([i,o])=>({name:i,count:o})):[],h=a!=null&&a.decisionLevels?[{name:"允许",value:a.decisionLevels.allow,fill:r.green},{name:"警告",value:a.decisionLevels.warn,fill:r.yellow},{name:"阻断",value:a.decisionLevels.block,fill:r.red},{name:"确认",value:a.decisionLevels.confirm,fill:r.blue}].filter(i=>i.value>0):[],N=(a==null?void 0:a.dailyActivity)||[];return e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 mb-6",children:"仪表盘"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6",children:[e.jsx(x,{icon:C,label:"总事件",value:((f=t==null?void 0:t.eventCount)==null?void 0:f.toString())||"-",color:"blue",onClick:()=>s("/events")}),e.jsx(x,{icon:k,label:"会话数",value:(l==null?void 0:l.toString())||"-",color:"purple",onClick:()=>s("/sessions")}),e.jsx(x,{icon:L,label:"方法论执行",value:(c==null?void 0:c.toString())||"-",color:"indigo",onClick:()=>s("/methodologies")}),e.jsx(x,{icon:$,label:"路由遵守率",value:`${p}%`,color:"green",onClick:()=>s("/routing")})]}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-6",children:[e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-base font-semibold text-gray-900",children:"最近 7 天活动"}),e.jsx("button",{onClick:()=>s("/events"),className:"text-xs text-indigo-600 hover:text-indigo-700",children:"查看全部事件 →"})]}),e.jsx(m,{width:"100%",height:240,children:e.jsxs(R,{data:N,onClick:()=>s("/events"),style:{cursor:"pointer"},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:"colorEvents",x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"5%",stopColor:r.primary,stopOpacity:.3}),e.jsx("stop",{offset:"95%",stopColor:r.primary,stopOpacity:0})]})}),e.jsx(j,{strokeDasharray:"3 3",stroke:"#f3f4f6"}),e.jsx(g,{dataKey:"date",tick:{fontSize:11},tickFormatter:i=>i==null?void 0:i.slice(5)}),e.jsx(y,{tick:{fontSize:11}}),e.jsx(u,{}),e.jsx(F,{type:"monotone",dataKey:"eventCount",stroke:r.primary,strokeWidth:2,fill:"url(#colorEvents)",name:"事件"})]})})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-base font-semibold text-gray-900",children:"工具使用分布"}),e.jsx("button",{onClick:()=>s("/events"),className:"text-xs text-indigo-600 hover:text-indigo-700",children:"查看详情 →"})]}),e.jsx(m,{width:"100%",height:240,children:e.jsxs(K,{data:v,layout:"vertical",onClick:i=>{i!=null&&i.activeLabel&&s(`/events?tool=${encodeURIComponent(i.activeLabel)}`)},style:{cursor:"pointer"},children:[e.jsx(j,{strokeDasharray:"3 3",stroke:"#f3f4f6"}),e.jsx(g,{type:"number",tick:{fontSize:11}}),e.jsx(y,{dataKey:"name",type:"category",tick:{fontSize:11},width:80}),e.jsx(u,{}),e.jsx(A,{dataKey:"count",fill:r.primary,radius:[0,4,4,0]})]})})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsx("h3",{className:"text-base font-semibold text-gray-900",children:"治理决策分布"}),e.jsx("button",{onClick:()=>s("/execution-trace"),className:"text-xs text-indigo-600 hover:text-indigo-700",children:"查看追踪 →"})]}),h.length>0?e.jsx(m,{width:"100%",height:240,children:e.jsxs(S,{children:[e.jsx(D,{data:h,cx:"50%",cy:"50%",labelLine:!1,label:i=>`${i.name}: ${i.value}`,outerRadius:80,dataKey:"value",style:{cursor:"pointer"},onClick:()=>s("/execution-trace"),children:h.map((i,o)=>e.jsx(M,{fill:b[o%b.length]},o))}),e.jsx(u,{}),e.jsx(O,{})]})}):e.jsx("div",{className:"h-60 flex items-center justify-center text-gray-400 text-sm",children:"暂无决策数据"})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsxs("h3",{className:"flex items-center gap-2 text-base font-semibold text-gray-900 mb-4",children:[e.jsx(q,{className:"h-4 w-4 text-indigo-600"}),"系统状态"]}),e.jsxs("dl",{className:"space-y-3 text-sm",children:[e.jsxs("div",{className:"flex justify-between",children:[e.jsx("dt",{className:"text-gray-500",children:"PID"}),e.jsx("dd",{className:"font-mono text-gray-900",children:(t==null?void 0:t.pid)||"-"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("dt",{className:"text-gray-500",children:"运行时间"}),e.jsx("dd",{className:"text-gray-900",children:t!=null&&t.uptime?z(t.uptime):"-"})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("dt",{className:"text-gray-500",children:"内存使用"}),e.jsx("dd",{className:"text-gray-900",children:t!=null&&t.memory?`${Math.round(t.memory.heapUsed/1024/1024)} MB`:"-"})]}),n&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-3 mt-3",children:e.jsx("dt",{className:"text-xs font-semibold text-gray-700 mb-2",children:"路由 (近 7 天)"})}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("dt",{className:"text-gray-500",children:"总路由"}),e.jsx("dd",{className:"font-mono text-gray-900",children:n.total})]}),e.jsxs("div",{className:"flex justify-between",children:[e.jsx("dt",{className:"text-gray-500",children:"遵守 / 违抗"}),e.jsxs("dd",{className:"font-mono",children:[e.jsx("span",{className:"text-green-600",children:n.obeyedCount}),e.jsx("span",{className:"text-gray-400 mx-1",children:"/"}),e.jsx("span",{className:"text-red-600",children:n.refusedCount})]})]})]})]})]})]})]})}function x({icon:s,label:t,value:a,color:l,onClick:n}){const c={blue:"bg-blue-100 text-blue-600",purple:"bg-purple-100 text-purple-600",indigo:"bg-indigo-100 text-indigo-600",green:"bg-green-100 text-green-600"};return e.jsxs("div",{className:`bg-white rounded-lg shadow p-5 ${n?"cursor-pointer hover:shadow-md transition-shadow":""}`,onClick:n,children:[e.jsxs("div",{className:"flex items-center justify-between mb-3",children:[e.jsx("span",{className:"text-sm text-gray-500",children:t}),e.jsx("div",{className:`w-8 h-8 rounded-lg flex items-center justify-center ${c[l]}`,children:e.jsx(s,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"text-2xl font-bold text-gray-900",children:a})]})}export{Q as default};
|
|
2
|
-
//# sourceMappingURL=Dashboard-Ciyyw6ph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard-Ciyyw6ph.js","sources":["../../src/pages/Dashboard.tsx"],"sourcesContent":["import { useQuery } from '@tanstack/react-query'\nimport { useNavigate } from 'react-router-dom'\nimport { Activity, MessageSquare, GitBranch, Clock, Zap } from 'lucide-react'\nimport {\n AreaChart, Area, BarChart, Bar, PieChart, Pie, Cell,\n XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend,\n} from 'recharts'\n\ninterface Stats {\n pid: number\n uptime: number\n memory: any\n eventCount: number\n}\n\ninterface SystemStats {\n totalSessions: number\n totalEvents: number\n totalDecisions: number\n toolUsage: Record<string, number>\n decisionLevels: { block: number; warn: number; confirm: number; allow: number }\n dailyActivity: Array<{ date: string; eventCount: number; sessionCount: number }>\n}\n\nasync function fetchStatus(): Promise<Stats> {\n const res = await fetch('/api/status')\n if (!res.ok) throw new Error('Failed')\n return res.json()\n}\n\nasync function fetchSystemStats(): Promise<SystemStats> {\n const res = await fetch('/api/stats')\n if (!res.ok) throw new Error('Failed')\n return res.json()\n}\n\nasync function fetchSessionsCount(): Promise<number> {\n const res = await fetch('/api/sessions?limit=1000')\n if (!res.ok) return 0\n const sessions = await res.json()\n return sessions.length\n}\n\nasync function fetchRoutingStats() {\n const res = await fetch('/api/routing/stats?window=168')\n if (!res.ok) return null\n return res.json()\n}\n\nasync function fetchMethodologyCount(): Promise<number> {\n const res = await fetch('/api/methodology-executions?limit=1000')\n if (!res.ok) return 0\n const executions = await res.json()\n return executions.length\n}\n\nfunction formatUptime(seconds: number): string {\n const days = Math.floor(seconds / 86400)\n const hours = Math.floor((seconds % 86400) / 3600)\n const minutes = Math.floor((seconds % 3600) / 60)\n if (days > 0) return `${days}天 ${hours}小时`\n if (hours > 0) return `${hours}小时 ${minutes}分钟`\n return `${minutes}分钟`\n}\n\nconst COLORS = {\n primary: '#6366f1',\n green: '#10b981',\n red: '#ef4444',\n yellow: '#f59e0b',\n blue: '#3b82f6',\n purple: '#8b5cf6',\n gray: '#6b7280',\n}\n\nconst PIE_COLORS = [COLORS.primary, COLORS.green, COLORS.yellow, COLORS.red, COLORS.purple, COLORS.blue]\n\nexport default function Dashboard() {\n const navigate = useNavigate()\n const { data: status } = useQuery({ queryKey: ['status'], queryFn: fetchStatus, refetchInterval: 5000 })\n const { data: systemStats } = useQuery({ queryKey: ['system-stats'], queryFn: fetchSystemStats, refetchInterval: 30000 })\n const { data: sessionsCount } = useQuery({ queryKey: ['sessions-count'], queryFn: fetchSessionsCount })\n const { data: routingStats } = useQuery({ queryKey: ['dashboard-routing'], queryFn: fetchRoutingStats })\n const { data: methodologyCount } = useQuery({ queryKey: ['methodology-count'], queryFn: fetchMethodologyCount })\n\n const obediencePercent = routingStats?.obedienceRate !== null && routingStats?.obedienceRate !== undefined\n ? (routingStats.obedienceRate * 100).toFixed(0)\n : '-'\n\n // 准备图表数据\n const toolUsageData = systemStats?.toolUsage\n ? Object.entries(systemStats.toolUsage)\n .sort(([, a], [, b]) => b - a)\n .slice(0, 8)\n .map(([name, count]) => ({ name, count }))\n : []\n\n const decisionData = systemStats?.decisionLevels\n ? [\n { name: '允许', value: systemStats.decisionLevels.allow, fill: COLORS.green },\n { name: '警告', value: systemStats.decisionLevels.warn, fill: COLORS.yellow },\n { name: '阻断', value: systemStats.decisionLevels.block, fill: COLORS.red },\n { name: '确认', value: systemStats.decisionLevels.confirm, fill: COLORS.blue },\n ].filter(d => d.value > 0)\n : []\n\n const dailyData = systemStats?.dailyActivity || []\n\n return (\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900 mb-6\">仪表盘</h1>\n\n {/* Stats grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6\">\n <StatCard icon={Activity} label=\"总事件\" value={status?.eventCount?.toString() || '-'} color=\"blue\" onClick={() => navigate('/events')} />\n <StatCard icon={MessageSquare} label=\"会话数\" value={sessionsCount?.toString() || '-'} color=\"purple\" onClick={() => navigate('/sessions')} />\n <StatCard icon={GitBranch} label=\"方法论执行\" value={methodologyCount?.toString() || '-'} color=\"indigo\" onClick={() => navigate('/methodologies')} />\n <StatCard icon={Zap} label=\"路由遵守率\" value={`${obediencePercent}%`} color=\"green\" onClick={() => navigate('/routing')} />\n </div>\n\n {/* Charts */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-4 mb-6\">\n {/* Daily activity */}\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-base font-semibold text-gray-900\">最近 7 天活动</h3>\n <button\n onClick={() => navigate('/events')}\n className=\"text-xs text-indigo-600 hover:text-indigo-700\"\n >\n 查看全部事件 →\n </button>\n </div>\n <ResponsiveContainer width=\"100%\" height={240}>\n <AreaChart\n data={dailyData}\n onClick={() => navigate('/events')}\n style={{ cursor: 'pointer' }}\n >\n <defs>\n <linearGradient id=\"colorEvents\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"5%\" stopColor={COLORS.primary} stopOpacity={0.3} />\n <stop offset=\"95%\" stopColor={COLORS.primary} stopOpacity={0} />\n </linearGradient>\n </defs>\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"#f3f4f6\" />\n <XAxis dataKey=\"date\" tick={{ fontSize: 11 }} tickFormatter={(d) => d?.slice(5)} />\n <YAxis tick={{ fontSize: 11 }} />\n <Tooltip />\n <Area\n type=\"monotone\"\n dataKey=\"eventCount\"\n stroke={COLORS.primary}\n strokeWidth={2}\n fill=\"url(#colorEvents)\"\n name=\"事件\"\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n\n {/* Tool usage */}\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-base font-semibold text-gray-900\">工具使用分布</h3>\n <button\n onClick={() => navigate('/events')}\n className=\"text-xs text-indigo-600 hover:text-indigo-700\"\n >\n 查看详情 →\n </button>\n </div>\n <ResponsiveContainer width=\"100%\" height={240}>\n <BarChart\n data={toolUsageData}\n layout=\"vertical\"\n onClick={(e: any) => {\n if (e?.activeLabel) {\n navigate(`/events?tool=${encodeURIComponent(e.activeLabel)}`)\n }\n }}\n style={{ cursor: 'pointer' }}\n >\n <CartesianGrid strokeDasharray=\"3 3\" stroke=\"#f3f4f6\" />\n <XAxis type=\"number\" tick={{ fontSize: 11 }} />\n <YAxis dataKey=\"name\" type=\"category\" tick={{ fontSize: 11 }} width={80} />\n <Tooltip />\n <Bar dataKey=\"count\" fill={COLORS.primary} radius={[0, 4, 4, 0]} />\n </BarChart>\n </ResponsiveContainer>\n </div>\n\n {/* Decision distribution */}\n <div className=\"bg-white rounded-lg shadow p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <h3 className=\"text-base font-semibold text-gray-900\">治理决策分布</h3>\n <button\n onClick={() => navigate('/execution-trace')}\n className=\"text-xs text-indigo-600 hover:text-indigo-700\"\n >\n 查看追踪 →\n </button>\n </div>\n {decisionData.length > 0 ? (\n <ResponsiveContainer width=\"100%\" height={240}>\n <PieChart>\n <Pie\n data={decisionData}\n cx=\"50%\"\n cy=\"50%\"\n labelLine={false}\n label={(entry) => `${entry.name}: ${entry.value}`}\n outerRadius={80}\n dataKey=\"value\"\n style={{ cursor: 'pointer' }}\n onClick={() => navigate('/execution-trace')}\n >\n {decisionData.map((_, i) => (\n <Cell key={i} fill={PIE_COLORS[i % PIE_COLORS.length]} />\n ))}\n </Pie>\n <Tooltip />\n <Legend />\n </PieChart>\n </ResponsiveContainer>\n ) : (\n <div className=\"h-60 flex items-center justify-center text-gray-400 text-sm\">暂无决策数据</div>\n )}\n </div>\n\n {/* System info */}\n <div className=\"bg-white rounded-lg shadow p-6\">\n <h3 className=\"flex items-center gap-2 text-base font-semibold text-gray-900 mb-4\">\n <Clock className=\"h-4 w-4 text-indigo-600\" />\n 系统状态\n </h3>\n <dl className=\"space-y-3 text-sm\">\n <div className=\"flex justify-between\">\n <dt className=\"text-gray-500\">PID</dt>\n <dd className=\"font-mono text-gray-900\">{status?.pid || '-'}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-gray-500\">运行时间</dt>\n <dd className=\"text-gray-900\">{status?.uptime ? formatUptime(status.uptime) : '-'}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-gray-500\">内存使用</dt>\n <dd className=\"text-gray-900\">\n {status?.memory ? `${Math.round(status.memory.heapUsed / 1024 / 1024)} MB` : '-'}\n </dd>\n </div>\n {routingStats && (\n <>\n <div className=\"border-t pt-3 mt-3\">\n <dt className=\"text-xs font-semibold text-gray-700 mb-2\">路由 (近 7 天)</dt>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-gray-500\">总路由</dt>\n <dd className=\"font-mono text-gray-900\">{routingStats.total}</dd>\n </div>\n <div className=\"flex justify-between\">\n <dt className=\"text-gray-500\">遵守 / 违抗</dt>\n <dd className=\"font-mono\">\n <span className=\"text-green-600\">{routingStats.obeyedCount}</span>\n <span className=\"text-gray-400 mx-1\">/</span>\n <span className=\"text-red-600\">{routingStats.refusedCount}</span>\n </dd>\n </div>\n </>\n )}\n </dl>\n </div>\n </div>\n </div>\n )\n}\n\nfunction StatCard({ icon: Icon, label, value, color, onClick }: {\n icon: any, label: string, value: string, color: string, onClick?: () => void\n}) {\n const colorClass: Record<string, string> = {\n blue: 'bg-blue-100 text-blue-600',\n purple: 'bg-purple-100 text-purple-600',\n indigo: 'bg-indigo-100 text-indigo-600',\n green: 'bg-green-100 text-green-600',\n }\n return (\n <div\n className={`bg-white rounded-lg shadow p-5 ${onClick ? 'cursor-pointer hover:shadow-md transition-shadow' : ''}`}\n onClick={onClick}\n >\n <div className=\"flex items-center justify-between mb-3\">\n <span className=\"text-sm text-gray-500\">{label}</span>\n <div className={`w-8 h-8 rounded-lg flex items-center justify-center ${colorClass[color]}`}>\n <Icon className=\"h-4 w-4\" />\n </div>\n </div>\n <div className=\"text-2xl font-bold text-gray-900\">{value}</div>\n </div>\n )\n}\n"],"names":["fetchStatus","res","fetchSystemStats","fetchSessionsCount","fetchRoutingStats","fetchMethodologyCount","formatUptime","seconds","days","hours","minutes","COLORS","PIE_COLORS","Dashboard","navigate","useNavigate","status","useQuery","systemStats","sessionsCount","routingStats","methodologyCount","obediencePercent","toolUsageData","a","b","name","count","decisionData","d","dailyData","jsx","jsxs","StatCard","Activity","_a","MessageSquare","GitBranch","Zap","ResponsiveContainer","AreaChart","CartesianGrid","XAxis","YAxis","Tooltip","Area","BarChart","e","Bar","PieChart","Pie","entry","_","i","Cell","Legend","Clock","Fragment","Icon","label","value","color","onClick","colorClass"],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{r as b,j as e}from"./react-vendor-CSp-GLFF.js";import{b as q,u as C,c as E}from"./query-C99w429o.js";import{b as M,L as $}from"./react-router-I-HqunH7.js";import{d as p}from"./vendor-CMMjVdZs.js";import{u as D,a as F}from"./index-DJK5beK6.js";import{a as A}from"./auth-Bnf8ZcqN.js";import{P as K,G as S,C as T,m as P,g as Q,c as O,e as R,d as H,n as B,o as L,f as _}from"./lucide-BanPULT1.js";import{a as U,z as X}from"./date-fns-CZ_bHujz.js";import"./syntax-highlighter-44FakypI.js";async function z(){const t=await fetch("/api/methodology-executions?limit=50");if(!t.ok)throw new Error("Failed to fetch");return t.json()}async function G(){const t=await fetch("/api/methodologies");if(!t.ok)throw new Error("Failed to fetch methodologies");return t.json()}async function J(){const t=await fetch("/api/worker-auth-status");if(!t.ok)throw new Error("Failed to fetch worker auth status");return t.json()}async function Y(t){const a=await A(`/api/methodology-executions/${t}/cancel`,{method:"POST"});if(!a.ok){const o=await a.json().catch(()=>({}));throw new Error(o.error||"Cancel failed")}}async function W(t){if(!(await A(`/api/methodology-executions/${t}`,{method:"DELETE"})).ok)throw new Error("Delete failed")}async function V(t){const a=await A("/api/methodology-executions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok){const o=await a.json().catch(()=>({})),i=new Error(o.error||`Start failed (HTTP ${a.status})`);throw typeof o.code=="string"&&(i.code=o.code),i}return a.json()}const Z={"harness-engineering":"Harness Engineering",bmad:"BMad (敏捷开发)"};function ce(){const t=q(),a=D(),o=F(),i=M(),[j,d]=b.useState(!1),{data:r,isLoading:g,error:f}=C({queryKey:["methodology-executions"],queryFn:z,refetchInterval:5e3}),{data:c}=C({queryKey:["methodologies"],queryFn:G}),{data:N}=C({queryKey:["worker-auth-status"],queryFn:J,staleTime:3e4}),m=E({mutationFn:Y,onSuccess:()=>{a.success("方法论执行已取消"),t.invalidateQueries({queryKey:["methodology-executions"]})},onError:s=>a.error(`取消失败: ${s.message}`)}),y=E({mutationFn:W,onSuccess:()=>{a.success("记录已删除"),t.invalidateQueries({queryKey:["methodology-executions"]})},onError:s=>a.error(`删除失败: ${s.message}`)}),x=E({mutationFn:V,onSuccess:s=>{a.success(`已启动执行 #${s.id}`),d(!1),t.invalidateQueries({queryKey:["methodology-executions"]}),t.invalidateQueries({queryKey:["worker-auth-status"]})},onError:async s=>{const l=s.message||"";if(s.code==="AUTH_REQUIRED"||l.includes("Background mode requires")||l.includes("AUTH_REQUIRED")){t.invalidateQueries({queryKey:["worker-auth-status"]}),await o({title:"需要配置 Claude API",message:`后台模式需要 Claude API 认证(ANTHROPIC_API_KEY 或 OAuth)。
|
|
2
|
-
请先在 AI 配置页设置后再启动执行。
|
|
3
|
-
|
|
4
|
-
详细信息:${l}`,confirmText:"去 AI 配置",cancelText:"留在此页",variant:"warning"})&&(d(!1),i("/ai-config"));return}a.error(`启动失败: ${l}`)}}),h=async s=>{await o({title:"取消方法论执行",message:"确定要取消这个运行中的方法论吗?已完成的阶段不会受影响,但当前进行中的阶段将停止。",confirmText:"确认取消",variant:"warning"})&&m.mutate(s)},w=async s=>{await o({title:"删除执行记录",message:"确定要删除这条方法论执行记录吗?此操作不可恢复。",confirmText:"删除",variant:"danger"})&&y.mutate(s)};if(g)return e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 mb-6",children:"方法论执行"}),e.jsx("div",{className:"bg-white rounded-lg shadow p-6",children:e.jsx("p",{className:"text-gray-600",children:"加载中..."})})]});if(f)return e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900 mb-6",children:"方法论执行"}),e.jsx("div",{className:"bg-white rounded-lg shadow p-6",children:e.jsxs("p",{className:"text-red-600",children:["加载失败: ",f.message]})})]});const u=(r==null?void 0:r.filter(s=>s.status==="running").length)||0,n=(r==null?void 0:r.filter(s=>s.status==="completed").length)||0;return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold text-gray-900",children:"方法论执行"}),e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("span",{className:"text-gray-500",children:["共 ",(r==null?void 0:r.length)||0," 个实例"]}),u>0&&e.jsxs("span",{className:"text-blue-600",children:["· 运行中 ",u]}),n>0&&e.jsxs("span",{className:"text-green-600",children:["· 已完成 ",n]}),e.jsxs("button",{onClick:()=>d(!0),className:"ml-3 inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-indigo-600 text-white rounded-md hover:bg-indigo-700",children:[e.jsx(K,{className:"h-4 w-4"})," 新建执行"]})]})]}),j&&e.jsx(ee,{methodologies:c??[],authStatus:N??null,onCancel:()=>d(!1),onSubmit:s=>x.mutate(s),onGoToAIConfig:()=>{d(!1),i("/ai-config")},submitting:x.isPending}),e.jsxs("div",{className:"space-y-4",children:[r==null?void 0:r.map(s=>{const l=JSON.parse(s.plan_json),v=l.phases[s.current_phase_index],I=s.status==="completed"?100:Math.round(s.current_phase_index/l.phases.length*100);return e.jsx("div",{className:"bg-white rounded-lg shadow",children:e.jsxs("div",{className:"p-6 flex items-start justify-between gap-4",children:[e.jsxs($,{to:`/methodologies/${s.id}`,className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[e.jsx(S,{className:"h-5 w-5 text-indigo-600 flex-shrink-0"}),e.jsx("h3",{className:"text-lg font-semibold text-gray-900",children:Z[s.methodology_id]||s.methodology_id}),e.jsxs("span",{className:p("px-2 py-1 text-xs font-medium rounded-full",s.status==="running"&&"bg-blue-100 text-blue-700",s.status==="completed"&&"bg-green-100 text-green-700",s.status==="failed"&&"bg-red-100 text-red-700",s.status==="cancelled"&&"bg-gray-100 text-gray-600"),children:[s.status==="running"&&"运行中",s.status==="completed"&&"已完成",s.status==="failed"&&"失败",s.status==="cancelled"&&"已取消"]}),s.mode&&e.jsxs("span",{className:p("inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded-full",s.mode==="background"?"bg-purple-100 text-purple-700":"bg-sky-100 text-sky-700"),title:s.mode==="background"?"独立 claude -p 子进程":"主会话内执行",children:[s.mode==="background"?e.jsx(T,{className:"h-3 w-3"}):e.jsx(P,{className:"h-3 w-3"}),s.mode==="background"?"后台":"前台"]})]}),e.jsxs("p",{className:"text-sm text-gray-600 mb-3 font-mono",children:["Session: ",s.session_id.slice(0,12),"..."]}),e.jsx("div",{className:"w-full bg-gray-200 rounded-full h-1.5 mb-3",children:e.jsx("div",{className:p("h-1.5 rounded-full transition-all",s.status==="completed"?"bg-green-500":s.status==="cancelled"?"bg-gray-400":"bg-indigo-600"),style:{width:`${I}%`}})}),e.jsxs("div",{className:"flex items-center gap-4 text-sm text-gray-500",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Q,{className:"h-4 w-4"}),U(s.started_at,{addSuffix:!0,locale:X})]}),s.status==="running"&&v&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(O,{className:"h-4 w-4"}),"Phase ",s.current_phase_index+1,"/",l.phases.length,": ",v.id]}),s.status==="completed"&&e.jsxs("div",{className:"flex items-center gap-1 text-green-600",children:[e.jsx(R,{className:"h-4 w-4"}),"完成 ",l.phases.length," 个阶段"]}),s.status==="cancelled"&&e.jsxs("div",{className:"flex items-center gap-1 text-gray-500",children:[e.jsx(H,{className:"h-4 w-4"}),"已取消于 Phase ",s.current_phase_index+1]})]})]}),e.jsxs("div",{className:"flex items-center gap-1 flex-shrink-0",children:[s.status==="running"&&e.jsx("button",{onClick:k=>{k.preventDefault(),h(s.id)},className:"p-2 text-orange-600 hover:bg-orange-50 rounded-md",title:"取消执行",children:e.jsx(B,{className:"h-4 w-4"})}),s.status!=="running"&&e.jsx("button",{onClick:k=>{k.preventDefault(),w(s.id)},className:"p-2 text-gray-500 hover:bg-red-50 hover:text-red-600 rounded-md",title:"删除记录",children:e.jsx(L,{className:"h-4 w-4"})})]})]})},s.id)}),(!r||r.length===0)&&e.jsxs("div",{className:"bg-white rounded-lg shadow p-12 text-center",children:[e.jsx(S,{className:"h-12 w-12 text-gray-400 mx-auto mb-4"}),e.jsx("p",{className:"text-gray-600",children:"暂无方法论执行记录"}),e.jsx("p",{className:"text-xs text-gray-500 mt-2",children:'当你输入复杂任务(如"重构 XXX 模块")时,系统会自动匹配方法论并生成执行计划'})]})]})]})}function ee({methodologies:t,authStatus:a,submitting:o,onSubmit:i,onCancel:j,onGoToAIConfig:d}){var u;const r=`manual-${Date.now().toString(36)}`,[g,f]=b.useState(r),[c,N]=b.useState(((u=t[0])==null?void 0:u.id)??""),[m,y]=b.useState("background"),x=a!==null&&a.available===!1,h=x&&m==="background",w=n=>{n.preventDefault(),!(!g.trim()||!c)&&(h||i({session_id:g.trim(),methodology_id:c,mode:m}))};return e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/40 p-4",children:e.jsxs("form",{onSubmit:w,className:"w-full max-w-md bg-white rounded-lg shadow-xl border border-gray-200",children:[e.jsxs("div",{className:"px-5 py-4 border-b border-gray-100",children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-900",children:"新建方法论执行"}),e.jsx("p",{className:"text-xs text-gray-500 mt-0.5",children:"选择方法论模板和执行模式"})]}),e.jsxs("div",{className:"px-5 py-4 space-y-4 text-sm",children:[e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-gray-700",children:"方法论"}),e.jsxs("select",{className:"mt-1 w-full border border-gray-300 rounded-md px-2 py-1.5",value:c,onChange:n=>N(n.target.value),required:!0,children:[t.length===0&&e.jsx("option",{value:"",children:"(未发现方法论)"}),t.map(n=>e.jsx("option",{value:n.id,children:n.name||n.id},n.id))]})]}),e.jsxs("label",{className:"block",children:[e.jsx("span",{className:"text-gray-700",children:"Session ID"}),e.jsx("input",{type:"text",className:"mt-1 w-full border border-gray-300 rounded-md px-2 py-1.5 font-mono text-xs",value:g,onChange:n=>f(n.target.value),required:!0}),e.jsx("span",{className:"mt-1 block text-xs text-gray-500",children:"后台模式下用于追踪;建议保留默认或自定义一个可识别值"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-gray-700",children:"执行模式"}),e.jsxs("div",{className:"mt-2 grid grid-cols-2 gap-2",children:[e.jsxs("button",{type:"button",onClick:()=>y("background"),className:p("rounded-md border px-3 py-2 text-left",m==="background"?"border-indigo-500 bg-indigo-50":"border-gray-200 hover:border-gray-300",x&&"ring-1 ring-amber-200"),children:[e.jsxs("div",{className:"flex items-center gap-2 font-medium text-gray-900",children:[e.jsx(T,{className:"h-4 w-4 text-purple-600"})," 后台",x&&e.jsx("span",{className:"ml-auto text-[10px] font-normal text-amber-700 bg-amber-100 px-1.5 py-0.5 rounded",children:"需先配置 API"})]}),e.jsx("p",{className:"text-xs text-gray-500 mt-1",children:"独立 claude -p 子进程,无需用户在主会话输入"})]}),e.jsxs("button",{type:"button",onClick:()=>y("foreground"),className:p("rounded-md border px-3 py-2 text-left",m==="foreground"?"border-indigo-500 bg-indigo-50":"border-gray-200 hover:border-gray-300"),children:[e.jsxs("div",{className:"flex items-center gap-2 font-medium text-gray-900",children:[e.jsx(P,{className:"h-4 w-4 text-sky-600"})," 前台"]}),e.jsxs("p",{className:"text-xs text-amber-700 mt-1 flex items-start gap-1",children:[e.jsx(_,{className:"h-3.5 w-3.5 mt-0.5 shrink-0"}),e.jsxs("span",{children:["需要你在主会话里输入任意内容才会推进;期间可用 ",e.jsx("code",{className:"px-1 rounded bg-amber-50",children:"/forge methodology status"})," 查看"]})]})]})]})]}),h&&e.jsx("div",{className:"rounded-md border border-amber-300 bg-amber-50 px-3 py-2 text-xs text-amber-800",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(_,{className:"h-4 w-4 mt-0.5 shrink-0 text-amber-600"}),e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx("div",{className:"font-medium",children:"后台模式需要 Claude API 认证"}),e.jsxs("div",{className:"text-amber-700",children:["未检测到 ",e.jsx("code",{className:"px-1 rounded bg-amber-100",children:"ANTHROPIC_API_KEY"})," 或 OAuth 凭据",a!=null&&a.message?`(${a.message})`:"","。 请先在 AI 配置页完成设置,或切换到前台模式。"]}),e.jsx("button",{type:"button",onClick:d,className:"mt-1 inline-flex items-center gap-1 px-2 py-1 text-xs font-medium text-white bg-amber-600 rounded hover:bg-amber-700",children:"去 AI 配置"})]})]})})]}),e.jsxs("div",{className:"px-5 py-3 border-t border-gray-100 flex justify-end gap-2",children:[e.jsx("button",{type:"button",onClick:j,className:"px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-100 rounded-md",children:"取消"}),e.jsx("button",{type:"submit",disabled:o||!c||h,title:h?"后台模式需要先配置 Claude API":void 0,className:"inline-flex items-center gap-1 px-3 py-1.5 text-sm bg-indigo-600 text-white rounded-md hover:bg-indigo-700 disabled:opacity-50 disabled:cursor-not-allowed",children:o?"启动中...":"启动"})]})]})})}export{ce as default};
|
|
5
|
-
//# sourceMappingURL=Methodologies-CXNrDXwG.js.map
|