@devflow-tools/devflow 0.18.2 → 0.18.4
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/README.md +7 -3
- package/dist/cli.js +76 -80
- package/dist/dashboard/404.html +1 -1
- package/dist/dashboard/__next.__PAGE__.txt +4 -4
- package/dist/dashboard/__next._full.txt +4 -4
- package/dist/dashboard/__next._tree.txt +2 -2
- package/dist/dashboard/_next/static/chunks/411-b1ce94a99623b281.js +1 -0
- package/dist/dashboard/_next/static/chunks/914-1fc62fa12bec05cd.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/executions/page-3dc6f25a8270833f.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/{layout-a28c30513212e363.js → layout-6ec6d19a0a5b9e21.js} +1 -1
- package/dist/dashboard/_next/static/chunks/app/page-55a8e887fd98ddd6.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/runs/[id]/page-2a50cf58f99e25d1.js +1 -0
- package/dist/dashboard/_next/static/css/d6255f5e6b476fca.css +3 -0
- package/dist/dashboard/_not-found/__next._full.txt +3 -3
- package/dist/dashboard/_not-found/__next._not-found.__PAGE__.txt +3 -3
- package/dist/dashboard/_not-found/__next._tree.txt +2 -2
- package/dist/dashboard/_not-found.html +1 -1
- package/dist/dashboard/_not-found.txt +3 -3
- package/dist/dashboard/accuracy/__next._full.txt +4 -4
- package/dist/dashboard/accuracy/__next._tree.txt +2 -2
- package/dist/dashboard/accuracy/__next.accuracy.__PAGE__.txt +4 -4
- package/dist/dashboard/accuracy.html +1 -1
- package/dist/dashboard/accuracy.txt +4 -4
- package/dist/dashboard/benchmark/__next._full.txt +4 -4
- package/dist/dashboard/benchmark/__next._tree.txt +2 -2
- package/dist/dashboard/benchmark/__next.benchmark.__PAGE__.txt +4 -4
- package/dist/dashboard/benchmark.html +1 -1
- package/dist/dashboard/benchmark.txt +4 -4
- package/dist/dashboard/context/__next._full.txt +4 -4
- package/dist/dashboard/context/__next._tree.txt +2 -2
- package/dist/dashboard/context/__next.context.__PAGE__.txt +4 -4
- package/dist/dashboard/context.html +1 -1
- package/dist/dashboard/context.txt +4 -4
- package/dist/dashboard/doctor/__next._full.txt +4 -4
- package/dist/dashboard/doctor/__next._tree.txt +2 -2
- package/dist/dashboard/doctor/__next.doctor.__PAGE__.txt +4 -4
- package/dist/dashboard/doctor.html +1 -1
- package/dist/dashboard/doctor.txt +4 -4
- package/dist/dashboard/executions/__next._full.txt +4 -4
- package/dist/dashboard/executions/__next._tree.txt +2 -2
- package/dist/dashboard/executions/__next.executions.__PAGE__.txt +4 -4
- package/dist/dashboard/executions.html +1 -1
- package/dist/dashboard/executions.txt +4 -4
- package/dist/dashboard/graph/__next._full.txt +4 -4
- package/dist/dashboard/graph/__next._tree.txt +2 -2
- package/dist/dashboard/graph/__next.graph.__PAGE__.txt +4 -4
- package/dist/dashboard/graph.html +1 -1
- package/dist/dashboard/graph.txt +4 -4
- package/dist/dashboard/index.html +1 -1
- package/dist/dashboard/index.txt +4 -4
- package/dist/dashboard/knowledge/__next._full.txt +4 -4
- package/dist/dashboard/knowledge/__next._tree.txt +2 -2
- package/dist/dashboard/knowledge/__next.knowledge.__PAGE__.txt +4 -4
- package/dist/dashboard/knowledge.html +1 -1
- package/dist/dashboard/knowledge.txt +4 -4
- package/dist/dashboard/locales/en.json +13 -0
- package/dist/dashboard/locales/zh.json +13 -0
- package/dist/dashboard/memory/__next._full.txt +4 -4
- package/dist/dashboard/memory/__next._tree.txt +2 -2
- package/dist/dashboard/memory/__next.memory.__PAGE__.txt +4 -4
- package/dist/dashboard/memory.html +1 -1
- package/dist/dashboard/memory.txt +4 -4
- package/dist/dashboard/replay/__next._full.txt +4 -4
- package/dist/dashboard/replay/__next._tree.txt +2 -2
- package/dist/dashboard/replay/__next.replay.__PAGE__.txt +4 -4
- package/dist/dashboard/replay.html +1 -1
- package/dist/dashboard/replay.txt +4 -4
- package/dist/dashboard/runs/_/__next._full.txt +4 -4
- package/dist/dashboard/runs/_/__next._tree.txt +2 -2
- package/dist/dashboard/runs/_/__next.runs.$d$id.__PAGE__.txt +4 -4
- package/dist/dashboard/runs/_.html +1 -1
- package/dist/dashboard/runs/_.txt +4 -4
- package/dist/dashboard/runs/__next._full.txt +4 -4
- package/dist/dashboard/runs/__next._tree.txt +2 -2
- package/dist/dashboard/runs/__next.runs.__PAGE__.txt +4 -4
- package/dist/dashboard/runs.html +1 -1
- package/dist/dashboard/runs.txt +4 -4
- package/dist/dashboard/settings/__next._full.txt +4 -4
- package/dist/dashboard/settings/__next._tree.txt +2 -2
- package/dist/dashboard/settings/__next.settings.__PAGE__.txt +4 -4
- package/dist/dashboard/settings.html +1 -1
- package/dist/dashboard/settings.txt +4 -4
- package/dist/dashboard/timeline/__next._full.txt +4 -4
- package/dist/dashboard/timeline/__next._tree.txt +2 -2
- package/dist/dashboard/timeline/__next.timeline.__PAGE__.txt +4 -4
- package/dist/dashboard/timeline.html +1 -1
- package/dist/dashboard/timeline.txt +4 -4
- package/dist/dashboard/tool-metrics/__next._full.txt +4 -4
- package/dist/dashboard/tool-metrics/__next._tree.txt +2 -2
- package/dist/dashboard/tool-metrics/__next.tool-metrics.__PAGE__.txt +4 -4
- package/dist/dashboard/tool-metrics.html +1 -1
- package/dist/dashboard/tool-metrics.txt +4 -4
- package/dist/dashboard/workflows/__next._full.txt +4 -4
- package/dist/dashboard/workflows/__next._tree.txt +2 -2
- package/dist/dashboard/workflows/__next.workflows.__PAGE__.txt +4 -4
- package/dist/dashboard/workflows.html +1 -1
- package/dist/dashboard/workflows.txt +4 -4
- package/dist/hooks/hook-daemon.js +28 -27
- package/dist/hooks/post-tool-use-failure.js +2 -2
- package/dist/hooks/post-tool-use.js +6 -6
- package/dist/hooks/pre-compact.js +3 -3
- package/dist/hooks/pre-tool-use.js +4 -4
- package/dist/hooks/server-bootstrap.js +1 -109
- package/dist/hooks/session-end.js +5 -5
- package/dist/hooks/stop.js +9 -9
- package/dist/hooks/user-prompt-submit.js +8 -8
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/dist/command-registry.json +5 -5
- package/dist/plugin/dist/hooks/hook-daemon.js +28 -27
- package/dist/plugin/dist/hooks/post-tool-use-failure.js +2 -2
- package/dist/plugin/dist/hooks/post-tool-use.js +6 -6
- package/dist/plugin/dist/hooks/pre-compact.js +3 -3
- package/dist/plugin/dist/hooks/pre-tool-use.js +4 -4
- package/dist/plugin/dist/hooks/server-bootstrap.js +1 -109
- package/dist/plugin/dist/hooks/session-end.js +5 -5
- package/dist/plugin/dist/hooks/stop.js +9 -9
- package/dist/plugin/dist/hooks/user-prompt-submit.js +8 -8
- package/dist/plugin/package.json +13 -13
- package/dist/plugin/skills/start/SKILL.md +20 -34
- package/package.json +17 -15
- package/plugin-registry.json +29 -29
- package/dist/dashboard/_next/static/chunks/914-7e538089692b7d1b.js +0 -1
- package/dist/dashboard/_next/static/chunks/app/executions/page-52f9a045f91548cc.js +0 -1
- package/dist/dashboard/_next/static/chunks/app/page-1daa0024f1e5dd18.js +0 -1
- package/dist/dashboard/_next/static/chunks/app/runs/[id]/page-7a92db57d7fb2265.js +0 -1
- package/dist/dashboard/_next/static/css/6912a202a7d0c151.css +0 -3
- /package/dist/dashboard/_next/static/{MwHLOdPw1j1JTQpZ1fvG0 → YHZJ8xoXKuVNrAyNxTN6a}/_buildManifest.js +0 -0
- /package/dist/dashboard/_next/static/{MwHLOdPw1j1JTQpZ1fvG0 → YHZJ8xoXKuVNrAyNxTN6a}/_ssgManifest.js +0 -0
package/dist/dashboard/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/
|
|
1
|
+
<!DOCTYPE html><html lang="zh" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/d6255f5e6b476fca.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-5f4649c40b052b9f.js"/><script src="/_next/static/chunks/87c73c54-5c63d5698583b654.js" async=""></script><script src="/_next/static/chunks/968-13e9b4b491d5e8de.js" async=""></script><script src="/_next/static/chunks/main-app-44f3d55a6e6befbb.js" async=""></script><script src="/_next/static/chunks/820-9606b69ff6f7f9b9.js" async=""></script><script src="/_next/static/chunks/567-65014d15b90b623c.js" async=""></script><script src="/_next/static/chunks/993-01834e67bc353d44.js" async=""></script><script src="/_next/static/chunks/240-8f45a6db4f75278b.js" async=""></script><script src="/_next/static/chunks/722-001c96b6723e043d.js" async=""></script><script src="/_next/static/chunks/914-1fc62fa12bec05cd.js" async=""></script><script src="/_next/static/chunks/app/layout-6ec6d19a0a5b9e21.js" async=""></script><meta name="robots" content="noindex"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="h-dvh overflow-hidden"><div hidden=""><!--$--><!--/$--></div><div class="flex h-dvh items-center justify-center text-sm text-muted-foreground">Loading...</div><script src="/_next/static/chunks/webpack-5f4649c40b052b9f.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[589,[],\"ClientSegmentRoot\"]\n3:I[6248,[\"820\",\"static/chunks/820-9606b69ff6f7f9b9.js\",\"567\",\"static/chunks/567-65014d15b90b623c.js\",\"993\",\"static/chunks/993-01834e67bc353d44.js\",\"240\",\"static/chunks/240-8f45a6db4f75278b.js\",\"722\",\"static/chunks/722-001c96b6723e043d.js\",\"914\",\"static/chunks/914-1fc62fa12bec05cd.js\",\"177\",\"static/chunks/app/layout-6ec6d19a0a5b9e21.js\"],\"default\"]\n4:I[99630,[],\"\"]\n5:I[1380,[],\"\"]\n7:I[30887,[],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[30887,[],\"ViewportBoundary\"]\nd:I[30887,[],\"MetadataBoundary\"]\nf:I[15718,[],\"default\",1]\n:HL[\"/_next/static/css/d6255f5e6b476fca.css\",\"style\"]\na:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d6255f5e6b476fca.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"$L2\",null,{\"Component\":\"$3\",\"slots\":{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]},\"serverProvidedParams\":{\"params\":{},\"promises\":[\"$@6\"]}}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$a\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"YHZJ8xoXKuVNrAyNxTN6a\"}\na:C\n6:\"$0:f:0:1:0:props:children:1:props:serverProvidedParams:params\"\nc:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\ne:[]\n"])</script></body></html>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[
|
|
2
|
+
2:I[82941,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","411","static/chunks/411-b1ce94a99623b281.js","914","static/chunks/914-1fc62fa12bec05cd.js","974","static/chunks/app/page-55a8e887fd98ddd6.js"],"ProjectOverview"]
|
|
3
3
|
3:I[30887,[],"OutletBoundary"]
|
|
4
4
|
4:"$Sreact.suspense"
|
|
5
5
|
8:I[30887,[],"ViewportBoundary"]
|
|
6
6
|
9:I[30887,[],"MetadataBoundary"]
|
|
7
7
|
b:I[589,[],"ClientSegmentRoot"]
|
|
8
|
-
c:I[6248,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","240","static/chunks/240-8f45a6db4f75278b.js","722","static/chunks/722-001c96b6723e043d.js","914","static/chunks/914-
|
|
8
|
+
c:I[6248,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","240","static/chunks/240-8f45a6db4f75278b.js","722","static/chunks/722-001c96b6723e043d.js","914","static/chunks/914-1fc62fa12bec05cd.js","177","static/chunks/app/layout-6ec6d19a0a5b9e21.js"],"default"]
|
|
9
9
|
d:I[99630,[],""]
|
|
10
10
|
e:I[1380,[],""]
|
|
11
|
-
:HL["/_next/static/css/
|
|
11
|
+
:HL["/_next/static/css/d6255f5e6b476fca.css","style"]
|
|
12
12
|
7:X
|
|
13
|
-
0:{"buildId":"
|
|
13
|
+
0:{"buildId":"YHZJ8xoXKuVNrAyNxTN6a","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{}],null,["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":"$@6","staleTime":"$7","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$L8",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L9",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[]}]}]}],null]}],"isPartial":"$@a","staleTime":"$7","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/d6255f5e6b476fca.css","precedence":"next"}]],["$","$Lb",null,{"Component":"$c","slots":{"children":["$","$Ld",null,{"parallelRouterKey":"children","template":["$","$Le",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]},"serverProvidedParams":{"params":{},"promises":["$@f"]}}]]}],"isPartial":"$@10","staleTime":"$7","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@11","rootVaryParams":null,"needsRuntimeRequest":"$@12"}
|
|
14
14
|
5:null
|
|
15
15
|
f:"$0:data:2:rsc:props:children:1:props:serverProvidedParams:params"
|
|
16
16
|
7:300
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[589,[],"ClientSegmentRoot"]
|
|
3
|
-
3:I[6248,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","240","static/chunks/240-8f45a6db4f75278b.js","722","static/chunks/722-001c96b6723e043d.js","914","static/chunks/914-
|
|
3
|
+
3:I[6248,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","240","static/chunks/240-8f45a6db4f75278b.js","722","static/chunks/722-001c96b6723e043d.js","914","static/chunks/914-1fc62fa12bec05cd.js","177","static/chunks/app/layout-6ec6d19a0a5b9e21.js"],"default"]
|
|
4
4
|
4:I[99630,[],""]
|
|
5
5
|
5:I[1380,[],""]
|
|
6
|
-
7:I[
|
|
6
|
+
7:I[82941,["820","static/chunks/820-9606b69ff6f7f9b9.js","567","static/chunks/567-65014d15b90b623c.js","993","static/chunks/993-01834e67bc353d44.js","411","static/chunks/411-b1ce94a99623b281.js","914","static/chunks/914-1fc62fa12bec05cd.js","974","static/chunks/app/page-55a8e887fd98ddd6.js"],"ProjectOverview"]
|
|
7
7
|
8:I[30887,[],"OutletBoundary"]
|
|
8
8
|
9:"$Sreact.suspense"
|
|
9
9
|
b:I[30887,[],"ViewportBoundary"]
|
|
10
10
|
d:I[30887,[],"MetadataBoundary"]
|
|
11
11
|
f:I[15718,[],"default",1]
|
|
12
|
-
:HL["/_next/static/css/
|
|
13
|
-
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/
|
|
12
|
+
:HL["/_next/static/css/d6255f5e6b476fca.css","style"]
|
|
13
|
+
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/d6255f5e6b476fca.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$L2",null,{"Component":"$3","slots":{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]},"serverProvidedParams":{"params":{},"promises":["$@6"]}}]]}],{"children":[["$","$1","c",{"children":[["$","$L7",null,{}],null,["$","$L8",null,{"children":["$","$9",null,{"name":"Next.MetadataOutlet","children":"$@a"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Lb",null,{"children":"$Lc"}],["$","div",null,{"hidden":true,"children":["$","$Ld",null,{"children":["$","$9",null,{"name":"Next.Metadata","children":"$Le"}]}]}],null]}],false]],"m":"$undefined","G":["$f",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"YHZJ8xoXKuVNrAyNxTN6a"}
|
|
14
14
|
6:"$0:f:0:1:0:props:children:1:props:serverProvidedParams:params"
|
|
15
15
|
c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
16
16
|
a:null
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:HL["/_next/static/css/
|
|
2
|
-
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"
|
|
1
|
+
:HL["/_next/static/css/d6255f5e6b476fca.css","style"]
|
|
2
|
+
0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}},"staleTime":300,"buildId":"YHZJ8xoXKuVNrAyNxTN6a"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[411],{3140:(e,t,a)=>{e.exports=a(48558)},8490:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},14796:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},19851:(e,t,a)=>{a.d(t,{vt:()=>c});var r=a(27650),l=a(7620),n=a(3140);let{useDebugValue:d}=l,{useSyncExternalStoreWithSelector:i}=n,u=!1,o=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?(0,r.y)(e):e,a=(e,a)=>(function(e,t=e=>e,a){a&&!u&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),u=!0);let r=i(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,a);return d(r),r})(t,e,a);return Object.assign(a,t),a},c=e=>e?o(e):o},27650:(e,t,a)=>{a.d(t,{y:()=>l});let r=e=>{let t,a=new Set,r=(e,r)=>{let l="function"==typeof e?e(t):e;if(!Object.is(l,t)){let e=t;t=(null!=r?r:"object"!=typeof l||null===l)?l:Object.assign({},t,l),a.forEach(a=>a(t,e))}},l=()=>t,n={setState:r,getState:l,getInitialState:()=>d,subscribe:e=>(a.add(e),()=>a.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),a.clear()}},d=t=e(r,l,n);return n},l=e=>e?r(e):r},28819:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]])},36645:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},45894:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},48558:(e,t,a)=>{var r=a(7620),l=a(16574),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},d=l.useSyncExternalStore,i=r.useRef,u=r.useEffect,o=r.useMemo,c=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,a,r,l){var s=i(null);if(null===s.current){var h={hasValue:!1,value:null};s.current=h}else h=s.current;var y=d(e,(s=o(function(){function e(e){if(!u){if(u=!0,d=e,e=r(e),void 0!==l&&h.hasValue){var t=h.value;if(l(t,e))return i=t}return i=e}if(t=i,n(d,e))return t;var a=r(e);return void 0!==l&&l(t,a)?(d=e,t):(d=e,i=a)}var d,i,u=!1,o=void 0===a?null:a;return[function(){return e(t())},null===o?void 0:function(){return e(o())}]},[t,a,r,l]))[0],s[1]);return u(function(){h.hasValue=!0,h.value=y},[y]),c(y),y}},56242:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("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"}]])},57917:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("FolderGit2",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]])},60527:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},61469:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]])},63322:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},76990:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]])},78516:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]])},81007:(e,t,a)=>{a.d(t,{A:()=>i});var r=a(7620);let l=(...e)=>e.filter((e,t,a)=>!!e&&a.indexOf(e)===t).join(" ");var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=(0,r.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:a=2,absoluteStrokeWidth:d,className:i="",children:u,iconNode:o,...c},s)=>(0,r.createElement)("svg",{ref:s,...n,width:t,height:t,stroke:e,strokeWidth:d?24*Number(a)/Number(t):a,className:l("lucide",i),...c},[...o.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(u)?u:[u]])),i=(e,t)=>{let a=(0,r.forwardRef)(({className:a,...n},i)=>(0,r.createElement)(d,{ref:i,iconNode:t,className:l(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,a),...n}));return a.displayName=`${e}`,a}},92470:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]])},93441:(e,t,a)=>{a.d(t,{A:()=>r});let r=(0,a(81007).A)("FolderSync",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5",key:"1dkoa9"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.535-1.605a5 5 0 0 1 8 1.5",key:"lvuxfi"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.535 1.605a5 5 0 0 1-8-1.5",key:"14ync0"}]])}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[914],{14133:(e,t,n)=>{n.d(t,{F:()=>u});var r=n(98368);async function o(e,t){let n=function(){try{return localStorage.getItem("devflow-active-project-root")}catch{return null}}(),o={"Content-Type":"application/json",...(0,r.PK)()};n&&(o["x-devflow-project"]=n);let u=await fetch(`${(0,r.Ez)()}/api${e}`,{...t,headers:{...o,...t?.headers},credentials:"same-origin"});if(!u.ok){let e=await u.text();if(401===u.status)throw Error("API 401: reload the local dashboard or configure a dashboard API key");throw Error(`API ${u.status}: ${e}`)}let s=await u.json();return s&&"object"==typeof s&&"ok"in s&&"data"in s?s.data:s}let u={runtimeReady:()=>o("/ready"),listProjects:()=>o("/projects"),getProject:e=>o(`/projects/${e}`),createProject:e=>o("/projects",{method:"POST",body:JSON.stringify(e)}),deleteProject:e=>o(`/projects/${e}`,{method:"DELETE"}),connectProject:e=>o("/projects/connect",{method:"POST",body:JSON.stringify({rootPath:e})}),disconnectProject:()=>o("/projects/active",{method:"DELETE"}),getActiveProject:()=>o("/projects/active"),getOnboardingPackByRoot:e=>o(`/projects/onboarding-pack?rootPath=${encodeURIComponent(e)}`),refreshOnboardingPack:e=>o("/projects/onboarding-pack/refresh",{method:"POST",body:JSON.stringify({rootPath:e})}),getContextStatus:()=>o("/context/status"),buildContext:e=>o("/context/build",{method:"POST",body:JSON.stringify(e)}),buildTaskContext:e=>o("/context/build-task",{method:"POST",body:JSON.stringify(e)}),submitFeedback:e=>o("/context/feedback",{method:"POST",body:JSON.stringify(e)}),getFeedbackSummary:()=>o("/context/feedback-summary"),getGraph:()=>o("/graph"),getLayeredGraph:()=>o("/graph?view=layered"),getNode:e=>o(`/graph/${e}`),expandNode:(e,t,n)=>o(`/graph/${e}/expand?depth=${t??2}&direction=${n??"both"}`),listWorkflows:()=>o("/workflows"),runWorkflow:(e,t)=>o(`/workflows/${e}/run`,{method:"POST",body:JSON.stringify({input:t})}),listRuns:(e=20,t=0)=>o(`/workflows/runs?limit=${e}&offset=${t}`),getRun:e=>o(`/workflows/runs/${e}`),approveRun:e=>o(`/workflows/runs/${e}/approve`,{method:"POST"}),rejectRun:(e,t)=>o(`/workflows/runs/${e}/reject`,{method:"POST",body:JSON.stringify({reason:t})}),getMemory:()=>o("/memory"),addMemory:e=>o("/memory",{method:"POST",body:JSON.stringify(e)}),updateMemoryEntry:(e,t)=>o(`/memory/${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteMemoryEntry:e=>o(`/memory/${e}`,{method:"DELETE"}),getCandidates:()=>o("/memory/candidates"),approveCandidate:e=>o(`/memory/candidates/${e}/approve`,{method:"POST"}),rejectCandidate:e=>o(`/memory/candidates/${e}/reject`,{method:"POST"}),searchMemory:(e,t,n)=>o("/memory/search",{method:"POST",body:JSON.stringify({query:e,limit:t,categories:n})}),updateMemory:(e,t,n)=>o(`/memory/${e}/${t}`,{method:"PUT",body:JSON.stringify({value:n})}),searchKnowledge:(e,t)=>o(`/knowledge/search?q=${encodeURIComponent(e)}${t?`&scope=${t}`:""}`),syncKnowledge:e=>o("/knowledge/sync",{method:"POST",body:JSON.stringify({pluginName:e})}),getKnowledgeSources:()=>o("/knowledge/sources"),listTelemetryRuns:(e=20,t=0,n)=>o(`/telemetry/runs?limit=${e}&offset=${t}${n?`&source=${n}`:""}`),getTelemetryRun:e=>o(`/telemetry/runs/${e}`),getTimeline:(e,t)=>o(`/telemetry/timeline${e?`?from=${e}${t?`&to=${t}`:""}`:""}`),listSessions:(e=20,t=0,n)=>{let r=new URLSearchParams({limit:String(e),offset:String(t)});return n&&r.set("projectRoot",n),o(`/telemetry/sessions?${r}`)},getSession:e=>o(`/telemetry/sessions/${e}`),getSessionEvents:e=>o(`/telemetry/sessions/${e}/events`),getRunEvents:e=>o(`/telemetry/runs/${e}/events`),getRunStats:e=>o(`/telemetry/runs/${e}/stats`),completeRun:e=>o(`/telemetry/runs/${e}/complete`,{method:"POST"}),getTelemetryStats:(e=7)=>o(`/telemetry/stats?days=${e}`),getRoiSummary:(e=7)=>o(`/telemetry/roi-summary?days=${e}`),listBenchmarkReports:(e=50)=>o(`/benchmark/reports?limit=${e}`),getLatestBenchmarkReport:(e="default")=>o(`/benchmark/reports/latest?suite=${encodeURIComponent(e)}`),getBenchmarkReport:e=>o(`/benchmark/reports/${encodeURIComponent(e)}`),cleanupTelemetry:e=>o("/telemetry/cleanup",{method:"POST",body:JSON.stringify({olderThanDays:e})}),getToolMetricsSummary:(e=7)=>o(`/telemetry/tool-metrics/summary?days=${e}`),getAccuracyStats:(e,t)=>{let n=new URLSearchParams;e&&n.set("engine",e),t&&n.set("since",String(t));let r=n.toString();return o(`/telemetry/accuracy/stats${r?`?${r}`:""}`)},getAccuracyQueries:e=>{let t=new URLSearchParams;e?.engine&&t.set("engine",e.engine),e?.status&&t.set("status",e.status),e?.limit&&t.set("limit",String(e.limit)),e?.offset&&t.set("offset",String(e.offset));let n=t.toString();return o(`/telemetry/accuracy/queries${n?`?${n}`:""}`)},postAccuracyFeedback:e=>o("/telemetry/accuracy/feedback",{method:"POST",body:JSON.stringify(e)}),getAutoCheck:()=>o("/telemetry/auto-check"),getExecutions:(e=20,t)=>{let n=new URLSearchParams({limit:String(e)});return t&&n.set("skillName",t),o(`/telemetry/executions?${n}`)},getExecutionEvents:e=>o(`/telemetry/executions/${e}/events`),getMcpCompliance:()=>o("/telemetry/mcp-compliance"),getGovernanceRules:()=>o("/governance/rules"),createGovernanceRule:e=>o("/governance/rules",{method:"POST",body:JSON.stringify(e)}),updateGovernanceRule:e=>o(`/governance/rules/${encodeURIComponent(e.id)}`,{method:"PUT",body:JSON.stringify(e)}),deleteGovernanceRule:e=>o(`/governance/rules/${encodeURIComponent(e)}`,{method:"DELETE"}),getGovernanceAudit:(e=100,t=0)=>o(`/governance/audit-chain?limit=${e}&offset=${t}`),listPlugins:(e,t)=>o(`/registry/plugins${e?`?search=${encodeURIComponent(e)}${t?`&tag=${t}`:""}`:t?`?tag=${t}`:""}`),getPlugin:e=>o(`/registry/plugins/${e}`),publishPlugin:e=>o("/registry/plugins",{method:"POST",body:JSON.stringify(e)}),getPluginEffectiveness:e=>o(`/registry/plugins/effectiveness${e?`?rootPath=${encodeURIComponent(e)}`:""}`)}},86914:(e,t,n)=>{n.d(t,{$s:()=>q,B7:()=>d,C9:()=>Q,CU:()=>B,Dr:()=>j,HG:()=>D,I8:()=>M,Kg:()=>b,Ko:()=>_,O:()=>A,Ol:()=>O,Oq:()=>$,PA:()=>S,PS:()=>m,SU:()=>a,Tr:()=>Z,UL:()=>C,Vz:()=>E,WJ:()=>J,YK:()=>i,YZ:()=>L,aW:()=>y,b_:()=>h,d6:()=>Y,eG:()=>F,gM:()=>V,he:()=>z,jx:()=>g,lb:()=>T,ll:()=>l,mP:()=>p,nS:()=>c,pf:()=>X,pz:()=>ee,qV:()=>v,qw:()=>w,tL:()=>H,te:()=>k,uU:()=>f,w4:()=>x,wV:()=>K,xT:()=>G,y4:()=>I,yy:()=>U,z$:()=>R,zb:()=>P,zg:()=>W,zz:()=>N});var r=n(48820),o=n(68728),u=n(19053),s=n(14133);function i(){return(0,r.I)({queryKey:["projects"],queryFn:()=>s.F.listProjects()})}function a(){return(0,r.I)({queryKey:["runtime-ready"],queryFn:()=>s.F.runtimeReady(),refetchInterval:3e4,retry:!1})}function c(){return(0,r.I)({queryKey:["active-project"],queryFn:()=>s.F.getActiveProject()})}function y(e){return(0,r.I)({queryKey:["onboarding-pack",e],queryFn:()=>s.F.getOnboardingPackByRoot(e),enabled:!!e})}function l(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.refreshOnboardingPack(e),onSuccess:(t,n)=>e.setQueryData(["onboarding-pack",n],t)})}function m(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.connectProject(e),onSuccess:()=>e.invalidateQueries({queryKey:["active-project"]})})}function d(){let e=(0,o.jE)();return(0,u.n)({mutationFn:()=>s.F.disconnectProject(),onSuccess:()=>e.invalidateQueries({queryKey:["active-project"]})})}function g(){return(0,r.I)({queryKey:["context-status"],queryFn:()=>s.F.getContextStatus()})}function f(){return(0,r.I)({queryKey:["graph"],queryFn:()=>s.F.getGraph()})}function F(){return(0,r.I)({queryKey:["layered-graph"],queryFn:()=>s.F.getLayeredGraph()})}function p(){return(0,r.I)({queryKey:["workflows"],queryFn:()=>s.F.listWorkflows()})}function h(e=20,t=0){return(0,r.I)({queryKey:["workflow-runs",e,t],queryFn:()=>s.F.listRuns(e,t)})}function S(){return(0,r.I)({queryKey:["memory"],queryFn:()=>s.F.getMemory()})}function q(e,t){return(0,r.I)({queryKey:["memory-search",e,t],queryFn:()=>s.F.searchMemory(e,t?.limit,t?.categories),enabled:e.length>0})}function v(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.approveCandidate(e),onSuccess:()=>{e.invalidateQueries({queryKey:["memory"]}),e.invalidateQueries({queryKey:["memory-candidates"]})}})}function $(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.rejectCandidate(e),onSuccess:()=>{e.invalidateQueries({queryKey:["memory"]}),e.invalidateQueries({queryKey:["memory-candidates"]})}})}function b(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.addMemory(e),onSuccess:()=>e.invalidateQueries({queryKey:["memory"]})})}function P(e=20,t=0){return(0,r.I)({queryKey:["telemetry-runs",e,t],queryFn:()=>s.F.listTelemetryRuns(e,t)})}function k(e=20,t=0,n){return(0,r.I)({queryKey:["sessions",e,t,n],queryFn:()=>s.F.listSessions(e,t,n)})}function K(e){return(0,r.I)({queryKey:["session",e],queryFn:()=>s.F.getSession(e),enabled:!!e})}function j(e){return(0,r.I)({queryKey:["session-events",e],queryFn:()=>s.F.getSessionEvents(e),enabled:!!e})}function w(e,t){return(0,r.I)({queryKey:["plugins",e,t],queryFn:()=>s.F.listPlugins(e,t)})}function E(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.buildContext(e),onSuccess:t=>e.setQueryData(["context-result"],t)})}function I(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.buildTaskContext(e),onSuccess:t=>e.setQueryData(["task-context-result"],t)})}function O(){return(0,r.I)({queryKey:["context-result"],queryFn:()=>Promise.reject(Error("No queryFn — this query is never enabled")),enabled:!1})}function R(){return(0,r.I)({queryKey:["task-context-result"],queryFn:()=>Promise.reject(Error("No queryFn — this query is never enabled")),enabled:!1})}function T(){return(0,u.n)({mutationFn:e=>s.F.submitFeedback(e)})}function C(){let e=(0,o.jE)();return(0,u.n)({mutationFn:({type:e,input:t})=>s.F.runWorkflow(e,t),onSuccess:()=>e.invalidateQueries({queryKey:["workflow-runs"]})})}function x(){return(0,r.I)({queryKey:["knowledge-sources"],queryFn:()=>s.F.getKnowledgeSources()})}function N(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.syncKnowledge(e),onSuccess:()=>e.invalidateQueries({queryKey:["knowledge-sources"]})})}function U(e){return(0,r.I)({queryKey:["knowledge-search",e],queryFn:()=>s.F.searchKnowledge(e),enabled:e.length>0})}function Q(e=7){return(0,r.I)({queryKey:["telemetry-stats",e],queryFn:()=>s.F.getTelemetryStats(e)})}function J(e=7){return(0,r.I)({queryKey:["roi-summary",e],queryFn:()=>s.F.getRoiSummary(e)})}function L(e="default"){return(0,r.I)({queryKey:["benchmark-report","latest",e],queryFn:()=>s.F.getLatestBenchmarkReport(e)})}function A(e){return(0,r.I)({queryKey:["run-events",e],queryFn:()=>s.F.getRunEvents(e),enabled:!!e,refetchInterval:2e3})}function G(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.cleanupTelemetry(e),onSuccess:()=>e.invalidateQueries({queryKey:["telemetry-stats"]})})}function M(){let e=(0,o.jE)();return(0,u.n)({mutationFn:({id:e,updates:t})=>s.F.updateMemoryEntry(e,t),onSuccess:()=>e.invalidateQueries({queryKey:["memory"]})})}function _(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.deleteMemoryEntry(e),onSuccess:()=>e.invalidateQueries({queryKey:["memory"]})})}function D(e){return(0,r.I)({queryKey:["plugin-effectiveness",e],queryFn:()=>s.F.getPluginEffectiveness(e)})}function z(e=7){return(0,r.I)({queryKey:["tool-metrics-summary",e],queryFn:()=>s.F.getToolMetricsSummary(e)})}function B(e){return(0,r.I)({queryKey:["accuracy-stats",e],queryFn:()=>s.F.getAccuracyStats(e)})}function W(e){return(0,r.I)({queryKey:["accuracy-queries",e],queryFn:()=>s.F.getAccuracyQueries(e)})}function V(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.postAccuracyFeedback(e),onSuccess:()=>{e.invalidateQueries({queryKey:["accuracy-stats"]}),e.invalidateQueries({queryKey:["accuracy-queries"]})}})}function Y(){return(0,r.I)({queryKey:["auto-check"],queryFn:()=>s.F.getAutoCheck()})}function X(){return(0,r.I)({queryKey:["governance-rules"],queryFn:()=>s.F.getGovernanceRules()})}function H(){let e=(0,o.jE)();return(0,u.n)({mutationFn:({rule:e,create:t})=>t?s.F.createGovernanceRule(e):s.F.updateGovernanceRule(e),onSuccess:()=>e.invalidateQueries({queryKey:["governance-rules"]})})}function Z(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.deleteGovernanceRule(e),onSuccess:()=>e.invalidateQueries({queryKey:["governance-rules"]})})}function ee(){return(0,r.I)({queryKey:["governance-audit"],queryFn:()=>s.F.getGovernanceAudit(),refetchInterval:1e4})}},98368:(e,t,n)=>{n.d(t,{Ez:()=>s,PK:()=>i});var r=n(84561);let o=r.env.NEXT_PUBLIC_DEVFLOW_API_KEY?.trim()??"",u=r.env.NEXT_PUBLIC_DEVFLOW_API_URL?.trim()??"";function s(){return u?u.replace(/\/$/,""):window.location.origin}function i(){let e=function(){if(o)return o;try{return localStorage.getItem("devflow-api-key")?.trim()||null}catch{return null}}();return e?{"x-api-key":e}:{}}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[488],{2985:(e,t,r)=>{Promise.resolve().then(r.bind(r,63746))},14133:(e,t,r)=>{"use strict";r.d(t,{F:()=>n});var s=r(98368);async function o(e,t){let r=function(){try{return localStorage.getItem("devflow-active-project-root")}catch{return null}}(),o={"Content-Type":"application/json",...(0,s.PK)()};r&&(o["x-devflow-project"]=r);let n=await fetch(`${(0,s.Ez)()}/api${e}`,{...t,headers:{...o,...t?.headers},credentials:"same-origin"});if(!n.ok){let e=await n.text();if(401===n.status)throw Error("API 401: reload the local dashboard or configure a dashboard API key");throw Error(`API ${n.status}: ${e}`)}let a=await n.json();return a&&"object"==typeof a&&"ok"in a&&"data"in a?a.data:a}let n={runtimeReady:()=>o("/ready"),listProjects:()=>o("/projects"),getProject:e=>o(`/projects/${e}`),createProject:e=>o("/projects",{method:"POST",body:JSON.stringify(e)}),deleteProject:e=>o(`/projects/${e}`,{method:"DELETE"}),connectProject:e=>o("/projects/connect",{method:"POST",body:JSON.stringify({rootPath:e})}),disconnectProject:()=>o("/projects/active",{method:"DELETE"}),getActiveProject:()=>o("/projects/active"),getOnboardingPackByRoot:e=>o(`/projects/onboarding-pack?rootPath=${encodeURIComponent(e)}`),refreshOnboardingPack:e=>o("/projects/onboarding-pack/refresh",{method:"POST",body:JSON.stringify({rootPath:e})}),getContextStatus:()=>o("/context/status"),buildContext:e=>o("/context/build",{method:"POST",body:JSON.stringify(e)}),buildTaskContext:e=>o("/context/build-task",{method:"POST",body:JSON.stringify(e)}),submitFeedback:e=>o("/context/feedback",{method:"POST",body:JSON.stringify(e)}),getFeedbackSummary:()=>o("/context/feedback-summary"),getGraph:()=>o("/graph"),getLayeredGraph:()=>o("/graph?view=layered"),getNode:e=>o(`/graph/${e}`),expandNode:(e,t,r)=>o(`/graph/${e}/expand?depth=${t??2}&direction=${r??"both"}`),listWorkflows:()=>o("/workflows"),runWorkflow:(e,t)=>o(`/workflows/${e}/run`,{method:"POST",body:JSON.stringify({input:t})}),listRuns:(e=20,t=0)=>o(`/workflows/runs?limit=${e}&offset=${t}`),getRun:e=>o(`/workflows/runs/${e}`),approveRun:e=>o(`/workflows/runs/${e}/approve`,{method:"POST"}),rejectRun:(e,t)=>o(`/workflows/runs/${e}/reject`,{method:"POST",body:JSON.stringify({reason:t})}),getMemory:()=>o("/memory"),addMemory:e=>o("/memory",{method:"POST",body:JSON.stringify(e)}),updateMemoryEntry:(e,t)=>o(`/memory/${e}`,{method:"PUT",body:JSON.stringify(t)}),deleteMemoryEntry:e=>o(`/memory/${e}`,{method:"DELETE"}),getCandidates:()=>o("/memory/candidates"),approveCandidate:e=>o(`/memory/candidates/${e}/approve`,{method:"POST"}),rejectCandidate:e=>o(`/memory/candidates/${e}/reject`,{method:"POST"}),searchMemory:(e,t,r)=>o("/memory/search",{method:"POST",body:JSON.stringify({query:e,limit:t,categories:r})}),updateMemory:(e,t,r)=>o(`/memory/${e}/${t}`,{method:"PUT",body:JSON.stringify({value:r})}),searchKnowledge:(e,t)=>o(`/knowledge/search?q=${encodeURIComponent(e)}${t?`&scope=${t}`:""}`),syncKnowledge:e=>o("/knowledge/sync",{method:"POST",body:JSON.stringify({pluginName:e})}),getKnowledgeSources:()=>o("/knowledge/sources"),listTelemetryRuns:(e=20,t=0,r)=>o(`/telemetry/runs?limit=${e}&offset=${t}${r?`&source=${r}`:""}`),getTelemetryRun:e=>o(`/telemetry/runs/${e}`),getTimeline:(e,t)=>o(`/telemetry/timeline${e?`?from=${e}${t?`&to=${t}`:""}`:""}`),listSessions:(e=20,t=0,r)=>{let s=new URLSearchParams({limit:String(e),offset:String(t)});return r&&s.set("projectRoot",r),o(`/telemetry/sessions?${s}`)},getSession:e=>o(`/telemetry/sessions/${e}`),getSessionEvents:e=>o(`/telemetry/sessions/${e}/events`),getRunEvents:e=>o(`/telemetry/runs/${e}/events`),getRunStats:e=>o(`/telemetry/runs/${e}/stats`),completeRun:e=>o(`/telemetry/runs/${e}/complete`,{method:"POST"}),getTelemetryStats:(e=7)=>o(`/telemetry/stats?days=${e}`),getRoiSummary:(e=7)=>o(`/telemetry/roi-summary?days=${e}`),listBenchmarkReports:(e=50)=>o(`/benchmark/reports?limit=${e}`),getLatestBenchmarkReport:(e="default")=>o(`/benchmark/reports/latest?suite=${encodeURIComponent(e)}`),getBenchmarkReport:e=>o(`/benchmark/reports/${encodeURIComponent(e)}`),cleanupTelemetry:e=>o("/telemetry/cleanup",{method:"POST",body:JSON.stringify({olderThanDays:e})}),getToolMetricsSummary:(e=7)=>o(`/telemetry/tool-metrics/summary?days=${e}`),getAccuracyStats:(e,t)=>{let r=new URLSearchParams;e&&r.set("engine",e),t&&r.set("since",String(t));let s=r.toString();return o(`/telemetry/accuracy/stats${s?`?${s}`:""}`)},getAccuracyQueries:e=>{let t=new URLSearchParams;e?.engine&&t.set("engine",e.engine),e?.status&&t.set("status",e.status),e?.limit&&t.set("limit",String(e.limit)),e?.offset&&t.set("offset",String(e.offset));let r=t.toString();return o(`/telemetry/accuracy/queries${r?`?${r}`:""}`)},postAccuracyFeedback:e=>o("/telemetry/accuracy/feedback",{method:"POST",body:JSON.stringify(e)}),getAutoCheck:()=>o("/telemetry/auto-check"),getExecutions:(e=20,t)=>{let r=new URLSearchParams({limit:String(e)});return t&&r.set("skillName",t),o(`/telemetry/executions?${r}`)},getExecutionEvents:e=>o(`/telemetry/executions/${e}/events`),getMcpCompliance:()=>o("/telemetry/mcp-compliance"),getGovernanceRules:()=>o("/governance/rules"),createGovernanceRule:e=>o("/governance/rules",{method:"POST",body:JSON.stringify(e)}),updateGovernanceRule:e=>o(`/governance/rules/${encodeURIComponent(e.id)}`,{method:"PUT",body:JSON.stringify(e)}),deleteGovernanceRule:e=>o(`/governance/rules/${encodeURIComponent(e)}`,{method:"DELETE"}),getGovernanceAudit:(e=100,t=0)=>o(`/governance/audit-chain?limit=${e}&offset=${t}`),listPlugins:(e,t)=>o(`/registry/plugins${e?`?search=${encodeURIComponent(e)}${t?`&tag=${t}`:""}`:t?`?tag=${t}`:""}`),getPlugin:e=>o(`/registry/plugins/${e}`),publishPlugin:e=>o("/registry/plugins",{method:"POST",body:JSON.stringify(e)}),getPluginEffectiveness:e=>o(`/registry/plugins/effectiveness${e?`?rootPath=${encodeURIComponent(e)}`:""}`)}},47186:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(81007).A)("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"}]])},56242:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(81007).A)("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"}]])},63746:(e,t,r)=>{"use strict";r.d(t,{ExecutionsView:()=>y});var s=r(54568),o=r(48820),n=r(14133),a=r(64567),l=r(7620),i=r(78914);let c=(0,r(81007).A)("CircleCheckBig",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);var d=r(47186),m=r(73599),u=r(56242);function x({rate:e}){let t=e>=80?"bg-green-500":e>=50?"bg-yellow-500":"bg-red-500";return(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("div",{className:"w-20 h-2 bg-muted rounded-full overflow-hidden",children:(0,s.jsx)("div",{className:`h-full ${t} rounded-full`,style:{width:`${e}%`}})}),(0,s.jsxs)("span",{className:"text-xs text-muted-foreground",children:[e.toFixed(1),"%"]})]})}function y(){let{t:e}=(0,a.Bd)(),[t,r]=(0,l.useState)(null),{data:y,isLoading:g}=(0,o.I)({queryKey:["telemetry","executions"],queryFn:()=>n.F.getExecutions(50),refetchInterval:1e4}),{data:h}=(0,o.I)({queryKey:["telemetry","mcp-compliance"],queryFn:()=>n.F.getMcpCompliance()}),{data:p}=(0,o.I)({queryKey:["telemetry","executions",t,"events"],queryFn:()=>n.F.getExecutionEvents(t),enabled:!!t}),f=y??[];return g?(0,s.jsxs)("div",{className:"flex items-center justify-center h-full text-muted-foreground",children:[(0,s.jsx)(i.A,{className:"h-5 w-5 animate-spin mr-2"}),e("executions.loading")]}):(0,s.jsxs)("div",{className:"h-full overflow-auto p-6",children:[(0,s.jsx)("h2",{className:"text-xl font-bold mb-4",children:e("executions.title")}),h&&(0,s.jsxs)("div",{className:"grid grid-cols-3 gap-4 mb-6",children:[(0,s.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.overallCompliance")}),(0,s.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[h.overall.toFixed(1),"%"]})]}),(0,s.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.totalExecutions")}),(0,s.jsx)("div",{className:"text-2xl font-bold mt-1",children:f.length})]}),(0,s.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,s.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.skillsTracked")}),(0,s.jsx)("div",{className:"text-2xl font-bold mt-1",children:Object.keys(h.bySkill).length})]})]}),(0,s.jsx)("div",{className:"bg-card border border-border rounded-lg overflow-hidden",children:(0,s.jsxs)("table",{className:"w-full text-sm",children:[(0,s.jsx)("thead",{className:"bg-muted/50",children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.skill")}),(0,s.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.status")}),(0,s.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.tools")}),(0,s.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.mcpRate")}),(0,s.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.duration")})]})}),(0,s.jsxs)("tbody",{children:[f.map(e=>{var o;return(0,s.jsxs)("tr",{className:`border-t border-border cursor-pointer hover:bg-muted/30 ${t===e.executionId?"bg-muted/50":""}`,onClick:()=>r(e.executionId),children:[(0,s.jsx)("td",{className:"px-4 py-2 font-mono text-xs",children:e.skillName}),(0,s.jsx)("td",{className:"px-4 py-2",children:"completed"===e.status?(0,s.jsx)(c,{className:"h-4 w-4 text-green-500 inline"}):"failed"===e.status?(0,s.jsx)(d.A,{className:"h-4 w-4 text-red-500 inline"}):(0,s.jsx)(m.A,{className:"h-4 w-4 text-yellow-500 inline animate-spin"})}),(0,s.jsx)("td",{className:"px-4 py-2",children:e.totalToolCalls}),(0,s.jsx)("td",{className:"px-4 py-2",children:(0,s.jsx)(x,{rate:e.mcpComplianceRate??0})}),(0,s.jsx)("td",{className:"px-4 py-2",children:(o=e.totalDuration??0)<1e3?`${o}ms`:`${(o/1e3).toFixed(1)}s`})]},e.executionId)}),0===f.length&&(0,s.jsx)("tr",{children:(0,s.jsx)("td",{colSpan:5,className:"px-4 py-8 text-center text-muted-foreground",children:e("executions.empty")})})]})]})}),t&&p&&(0,s.jsxs)("div",{className:"mt-6 bg-card border border-border rounded-lg p-4",children:[(0,s.jsxs)("h3",{className:"font-bold mb-3 flex items-center gap-2",children:[(0,s.jsx)(u.A,{className:"h-4 w-4"}),e("executions.traceTimeline")]}),(0,s.jsx)("div",{className:"space-y-2",children:(p??[]).map(t=>(0,s.jsxs)("div",{className:"flex items-start gap-3 p-2 rounded-md bg-muted/30 text-sm",children:[(0,s.jsx)("span",{className:"text-xs text-muted-foreground w-16 shrink-0",children:new Date(t.timestamp).toLocaleTimeString()}),(0,s.jsx)("span",{className:`px-1.5 py-0.5 rounded text-xs font-mono ${t.isMcpTool?"bg-green-500/20 text-green-400":"subagent"===t.toolType?"bg-blue-500/20 text-blue-400":"bg-muted text-muted-foreground"}`,children:t.toolType}),(0,s.jsx)("span",{className:"font-mono text-xs flex-1",children:t.toolName}),t.blocked&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-red-500/20 text-red-400",children:e("executions.blocked")}),t.mcpEnforced&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-green-500/20 text-green-400",children:"MCP"}),t.mcpFallback&&(0,s.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-yellow-500/20 text-yellow-400",children:e("executions.fallback")})]},t.eventId))})]})]})}},73599:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(81007).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},78914:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(81007).A)("Activity",[["path",{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",key:"169zse"}]])},81007:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var s=r(7620);let o=(...e)=>e.filter((e,t,r)=>!!e&&r.indexOf(e)===t).join(" ");var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,s.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:r=2,absoluteStrokeWidth:a,className:l="",children:i,iconNode:c,...d},m)=>(0,s.createElement)("svg",{ref:m,...n,width:t,height:t,stroke:e,strokeWidth:a?24*Number(r)/Number(t):r,className:o("lucide",l),...d},[...c.map(([e,t])=>(0,s.createElement)(e,t)),...Array.isArray(i)?i:[i]])),l=(e,t)=>{let r=(0,s.forwardRef)(({className:r,...n},l)=>(0,s.createElement)(a,{ref:l,iconNode:t,className:o(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,r),...n}));return r.displayName=`${e}`,r}},98368:(e,t,r)=>{"use strict";r.d(t,{Ez:()=>a,PK:()=>l});var s=r(84561);let o=s.env.NEXT_PUBLIC_DEVFLOW_API_KEY?.trim()??"",n=s.env.NEXT_PUBLIC_DEVFLOW_API_URL?.trim()??"";function a(){return n?n.replace(/\/$/,""):window.location.origin}function l(){let e=function(){if(o)return o;try{return localStorage.getItem("devflow-api-key")?.trim()||null}catch{return null}}();return e?{"x-api-key":e}:{}}}},e=>{e.O(0,[820,567,587,968,358],()=>e(e.s=2985)),_N_E=e.O()}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{638:(e,t,o)=>{"use strict";o.d(t,{C:()=>i});var n=o(19851);let s="devflow-project-root",r="devflow-active-project-root";function l(e){try{return localStorage.getItem(e)}catch{return null}}function a(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}let i=(0,n.vt)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:l(s),activeProjectRoot:l(r),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{a(s,t),e({projectRoot:t})},setActiveProjectRoot:t=>{a(r,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},6248:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>H});var n=o(54568);o(74471);var s=o(64955),r=o(68728),l=o(7620);function a({children:e}){let[t]=(0,l.useState)(()=>new s.E({defaultOptions:{queries:{staleTime:3e4,retry:1}}}));return(0,n.jsx)(r.Ht,{client:t,children:e})}var i=o(79748),c=o(638),d=o(86914),u=o(64318),m=o(64567);let p={properties:"detail.properties",imports:"detail.imports",history:"detail.history"};function g(){let{t:e}=(0,m.Bd)(),t=(0,c.C)(e=>e.selectedNodeId),o=(0,c.C)(e=>e.detailTab),s=(0,c.C)(e=>e.setDetailTab),{data:r}=(0,d.uU)(),l=r?.nodes.find(e=>e.id===t);return t?(0,n.jsxs)("div",{className:"flex flex-col h-full",children:[(0,n.jsx)("div",{className:"flex border-b border-border",children:Object.keys(p).map(t=>(0,n.jsx)("button",{onClick:()=>s(t),className:(0,u.cn)("flex-1 py-2 text-xs font-medium capitalize",o===t?"border-b-2 border-primary text-primary":"text-muted-foreground"),children:e(p[t])},t))}),(0,n.jsx)("div",{className:"flex-1 p-4 overflow-y-auto",children:l?(0,n.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.name"),":"]})," ",l.name]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.type"),":"]})," ",(0,n.jsx)("span",{className:"capitalize",children:l.type})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.file"),":"]})," ",(0,n.jsx)("span",{className:"font-mono text-xs",children:l.file})]})]}):(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:e("detail.notFound")})})]}):(0,n.jsx)("div",{className:"p-4 text-sm text-muted-foreground",children:e("detail.selectNode")})}var f=o(65587),h=o.n(f),v=o(7920),k=o(72076),y=o(22996),x=o(55769),w=o(64265),b=o(69353),R=o(42154),T=o(73599),S=o(78914),j=o(40766),C=o(30774),P=o(60527),A=o(22681),N=o(48056),I=o(37270);let M=[{href:"/",labelKey:"nav.overview",icon:v.A},{href:"/graph",labelKey:"nav.graph",icon:k.A},{href:"/context",labelKey:"nav.context",icon:y.A},{href:"/workflows",labelKey:"nav.workflows",icon:x.A},{href:"/memory",labelKey:"nav.memory",icon:w.A},{href:"/knowledge",labelKey:"nav.knowledge",icon:b.A},{href:"/runs",labelKey:"nav.runs",icon:R.A},{href:"/timeline",labelKey:"nav.timeline",icon:T.A},{href:"/executions",labelKey:"nav.executions",icon:S.A},{href:"/tool-metrics",labelKey:"nav.toolMetrics",icon:j.A},{href:"/accuracy",labelKey:"nav.accuracy",icon:C.A},{href:"/replay",labelKey:"nav.replay",icon:P.A},{href:"/benchmark",labelKey:"nav.benchmark",icon:A.A},{href:"/doctor",labelKey:"nav.doctor",icon:N.A},{href:"/settings",labelKey:"nav.settings",icon:I.A}];function D(){let{t:e,i18n:t}=(0,m.Bd)(),o=(0,i.usePathname)();return(0,n.jsxs)("nav",{className:"flex h-full min-w-max flex-row gap-1 p-2 md:min-w-0 md:flex-col md:p-3",children:[(0,n.jsx)(h(),{href:"/",className:"flex h-9 shrink-0 items-center px-2 text-base font-bold text-primary md:mb-2 md:px-3",children:e("nav.title")}),(0,n.jsx)("div",{className:"flex flex-1 gap-1 md:flex-col",children:M.map(t=>{let s="/"===t.href?"/"===o:o===t.href||o.startsWith(`${t.href}/`);return(0,n.jsxs)(h(),{href:t.href,title:e(t.labelKey),className:(0,u.cn)("flex h-9 shrink-0 items-center gap-3 rounded-md px-2 text-sm transition-colors md:px-3",s?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,n.jsx)(t.icon,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"hidden md:inline",children:e(t.labelKey)})]},t.href)})}),(0,n.jsx)("div",{className:"shrink-0 border-l border-border pl-2 md:mt-auto md:border-l-0 md:border-t md:pl-0 md:pt-3",children:(0,n.jsx)("button",{onClick:()=>{t.changeLanguage("zh"===t.language?"en":"zh")},className:"h-9 w-full rounded-md px-3 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:e("nav.language")})})]})}function F({nav:e,main:t,detail:o}){return(0,n.jsxs)("div",{className:"flex h-dvh w-full flex-col md:flex-row",children:[(0,n.jsx)("aside",{className:"h-14 shrink-0 overflow-x-auto border-b border-border bg-card md:h-auto md:w-[220px] md:overflow-y-auto md:border-b-0 md:border-r",children:e}),(0,n.jsx)("main",{className:"min-h-0 min-w-0 flex-1 overflow-hidden",children:t}),o?(0,n.jsx)("aside",{className:"hidden w-[340px] shrink-0 overflow-y-auto border-l border-border bg-card xl:block",children:o}):null]})}function E({children:e}){let t=(0,i.usePathname)(),[o,s]=(0,l.useState)(!1);return((0,l.useEffect)(()=>s(!0),[]),o)?(0,n.jsx)(F,{nav:(0,n.jsx)(D,{}),main:e,detail:"/graph"===t?(0,n.jsx)(g,{}):void 0}):(0,n.jsx)("div",{className:"flex h-dvh items-center justify-center text-sm text-muted-foreground",children:"Loading..."})}var _=o(58202),O=o(43028);let L=JSON.parse('{"nav":{"title":"DevFlow","overview":"Overview","graph":"Graph","context":"Context","workflows":"Workflows","memory":"Memory","benchmark":"Benchmark","knowledge":"Knowledge","runs":"Runs","timeline":"Timeline","executions":"Executions","toolMetrics":"Tool Metrics","accuracy":"Accuracy","replay":"Replay","doctor":"Doctor","settings":"Settings","language":"中文"},"overview":{"title":"Project Overview","project":"Project","noProject":"No project connected","filesIndexed":"Files Indexed","workflows":"Workflows","agentRuns":"Agent Runs","techStack":"Tech Stack","recentRuns":"Recent Agent Runs","noRuns":"No agent runs recorded yet.","agent":"Agent","mode":"Mode","source":"Source","status":"Status","tokens":"Tokens","connectTitle":"Connect Project","connectDescription":"Enter the root path of your project to connect. The server will index and analyze the codebase.","connectPlaceholder":"/path/to/your/project","connecting":"Connecting...","connect":"Connect","connectError":"Failed to connect. Make sure the path exists and is accessible.","architectureLayers":"Architecture Layers","filesCount":"{{count}} files","keyModules":"Key Modules","keyFiles":"Key Files","recommended":"Recommended Next Steps","plugins":"Plugins","queries":"Queries","switchProject":"Switch Project","switchProjectPlaceholder":"Enter project path...","switchProjectConfirm":"Switch","disconnectProject":"Disconnect"},"onboarding":{"title":"Onboarding Pack","empty":"No onboarding pack generated yet","noActiveProject":"No active project","generate":"Generate Onboarding Pack","refresh":"Refresh onboarding pack"},"context":{"title":"Context Builder","placeholder":"Search symbols or ask a question...","build":"Build","building":"Building context...","results":"Results ({{files}} files, ~{{tokens}} tokens)","taskMode":"Task Mode","taskContext":"Task Context","confidenceTokens":"{{confidence}}% confidence \xb7 {{tokens}} tokens","requiredFiles":"Required Files","optionalFiles":"Optional Files","keySymbols":"Key Symbols","riskHints":"Risk Hints","nextActions":"Next Actions","relevanceDirect":"direct","relevanceIndirect":"indirect","levelHigh":"high","levelMedium":"medium","levelLow":"low","wasHelpful":"Was this helpful?","hit":"Hit","partial":"Partial","miss":"Miss","thanks":"Thanks for your feedback!"},"memory":{"title":"Memory","loading":"Loading...","pendingApproval":"Pending Approval","approvedMemories":"Approved Memories","approve":"Approve","reject":"Reject","noMemories":"No memories yet","noMemoriesHint":"Memories help avoid repeating mistakes","confidence":"confidence","original":"Original","yes":"Yes","no":"No","category":{"mcp_correction":"MCP Correction","project_knowledge":"Project Knowledge","failure_lesson":"Failure Lesson"},"searchPlaceholder":"Search memories...","addMemory":"Add Memory","editMemory":"Edit Memory","deleteMemory":"Delete","deleteConfirm":"Delete this memory?","categoryLabel":"Category","content":"Content","scope":"Scope (optional)","cancel":"Cancel","save":"Save"},"workflows":{"title":"Workflow Runs","available":"Available Workflows","steps":"steps","stream":"Stream","closeStream":"Close stream","runHistory":"Run History","runId":"Run ID","started":"Started","noRuns":"No runs yet. Trigger a workflow above."},"benchmark":{"title":"Benchmark","running":"Running...","run":"Run Benchmark","tasks":"tasks","task":"Task","experimentTab":"A/B Benchmark","operationsTab":"Operations","filesTouched":"Files Touched","correctness":"Correctness","regressions":"Regressions Over 10%","baselineCorrectness":"Baseline Correctness","devflowCorrectness":"DevFlow Correctness","baselineTokens":"Baseline Tokens","devflowTokens":"DevFlow Tokens","noReports":"No benchmark reports yet. Run one to get started.","roiTitle":"ROI Dashboard","loading":"Loading...","noData":"No data available. Start using DevFlow to collect telemetry.","overview":"Overview","totalRuns":"Total Runs","completed":"Completed","failed":"Failed","avgDuration":"Avg Duration","avgTokens":"Avg Tokens","firstPassRate":"First Pass Rate","feedbackHitRate":"Feedback Hit Rate","efficiency":"Efficiency","avgTimePerTask":"Avg Time Per Task","avgRetryCount":"Avg Retry Count","tokensSaved":"Tokens Saved","failureBreakdown":"Failure Breakdown","workflowHealth":"Workflow Health","workflow":"Workflow","runs":"Runs","successRate":"Success Rate","pluginEffectiveness":"Plugin Effectiveness","plugin":"Plugin","dailyTrends":"Daily Trends","date":"Date","tokens":"Tokens","failures":"Failures","empty":"No telemetry data yet. Start using DevFlow with an AI agent to collect ROI metrics.","failureCategories":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override","unknown":"Unknown"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"Experiment Summary","timeSavedRate":"Time Saved","tokenSavedRate":"Token Saved","detailedResults":"Detailed Results","faster":"{{percent}}% faster","baseline":"Baseline","devflow":"DevFlow","noExperimentData":"No experiment data","opsSummary":"Operations Summary","totalRunsCount":"Total Runs","successRatePercent":"Success Rate","avgTokenUsage":"Avg Token Usage","avgDurationTime":"Avg Duration","feedbackHitRatePercent":"Feedback Hit Rate","noOpsData":"No operations data","loadFailed":"Load failed: {{error}}","pluginAnalysis":"Plugin Value Analysis","recommendedInstall":"Recommended to Install","suggestedRemove":"Suggested to Remove","installCount":"Installs","usageRate":"Usage","successRateShort":"Success","tokenImpact":"Token Impact","lastUsed":"Last Used","noPluginData":"No plugin data","recommended":"Recommended","lowEfficiency":"Low Efficiency"},"graph":{"searchPlaceholder":"Search nodes...","filterOnly":"Filter only","highlightAll":"Highlight all"},"detail":{"selectNode":"Select a node to view details","properties":"Properties","imports":"Imports","history":"History","name":"Name","type":"Type","file":"File","notFound":"Node not found"},"knowledge":{"title":"Knowledge Base","sources":"Sources","syncing":"Syncing...","syncAll":"Sync All","loading":"Loading...","noSources":"No knowledge sources. Install a plugin and sync docs.","search":"Search","searchPlaceholder":"Search knowledge...","synced":"Synced","notSynced":"Not synced","last":"Last","sync":"Sync","score":"Score"},"runs":{"title":"Runs","empty":"No runs recorded yet."},"timeline":{"title":"Timeline","runs":"Runs","tokens":"Tokens","llmCalls":"LLM Calls","toolUses":"Tool Uses","completed":"completed","failed":"failed"},"events":{"llmCall":"LLM Call","toolUse":"Tool Use","memoryRead":"Memory Read","memoryWrite":"Memory Write","fileRead":"File Read","fileWrite":"File Write","bashCommand":"Bash","mcpToolCall":"MCP Tool","error":"Error","userInput":"User Input","stepStart":"Step Start","stepEnd":"Step End","empty":"No events recorded for this run.","steps":"Steps","eventCount":"events","selectEvent":"Select an event to view details","eventDetail":"Event Detail","kind":"Kind","step":"Step","duration":"Duration","model":"Model","tokens":"Tokens","tokensInOut":"{{input}} in / {{output}} out","prompt":"Prompt","response":"Response","stdout":"Stdout","stderr":"Stderr","truncated":"Content was truncated"},"runDetail":{"title":"Run Detail","events":"events","llm":"LLM","tokens":"tokens","failureCategory":"Failure Category","failureReason":"Failure Reason","suggestedActions":"Suggested Actions","category":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override"}},"plugin":{"title":"Plugin Effectiveness","installCount":"Install Count","activeRate":"Active Rate","successRate":"Success Rate","avgTokenImpact":"Avg Token Impact","recommendInstall":"Recommend Install","recommendOptimize":"Recommend Optimize","recommendRemove":"Recommend Remove"},"executions":{"title":"Skill Executions","loading":"Loading executions...","overallCompliance":"Overall MCP Compliance","totalExecutions":"Total Executions","skillsTracked":"Skills Tracked","skill":"Skill","status":"Status","tools":"Tools","mcpRate":"MCP Rate","duration":"Duration","tokens":"Tokens","empty":"No executions recorded yet","traceTimeline":"Execution Trace","blocked":"Blocked","fallback":"Fallback"},"settings":{"title":"Project Settings","projectInfo":"Project Info","name":"Name","mode":"Mode","plugins":"Plugins","noPlugins":"No plugins installed","telemetry":"Telemetry","totalRuns":"Runs stored","totalTokens":"Total tokens","clearOldRuns":"Clear old runs (30d+)"}}'),K=JSON.parse('{"nav":{"title":"DevFlow","overview":"概览","graph":"图谱","context":"上下文","workflows":"工作流","memory":"记忆","benchmark":"基准测试","knowledge":"知识库","runs":"运行记录","timeline":"时间线","executions":"执行轨迹","toolMetrics":"工具指标","accuracy":"准确率","replay":"回放","doctor":"自检","settings":"设置","language":"EN"},"overview":{"title":"项目概览","project":"项目","noProject":"未连接项目","filesIndexed":"已索引文件","workflows":"工作流","agentRuns":"智能体运行","techStack":"技术栈","recentRuns":"最近运行","noRuns":"暂无运行记录","agent":"智能体","mode":"模式","source":"来源","status":"状态","tokens":"令牌数","connectTitle":"连接项目","connectDescription":"输入项目根路径进行连接。服务端将索引并分析代码库。","connectPlaceholder":"/path/to/your/project","connecting":"连接中...","connect":"连接","connectError":"连接失败,请确认路径存在且可访问。","architectureLayers":"架构分层","filesCount":"{{count}} 个文件","keyModules":"关键模块","keyFiles":"关键文件","recommended":"推荐下一步","plugins":"插件","queries":"推荐查询","switchProject":"切换项目","switchProjectPlaceholder":"输入项目路径...","switchProjectConfirm":"切换","disconnectProject":"断开连接"},"onboarding":{"title":"启动包","empty":"尚未生成启动包","noActiveProject":"未激活项目","generate":"生成启动包","refresh":"刷新启动包"},"context":{"title":"上下文构建器","placeholder":"搜索符号或输入查询...","build":"构建","building":"正在构建上下文...","results":"结果({{files}} 个文件,约 {{tokens}} 个令牌)","taskMode":"任务模式","taskContext":"任务上下文","confidenceTokens":"{{confidence}}% 置信度 \xb7 {{tokens}} 令牌","requiredFiles":"必需文件","optionalFiles":"可选文件","keySymbols":"关键符号","riskHints":"风险提示","nextActions":"下一步操作","relevanceDirect":"直接","relevanceIndirect":"间接","levelHigh":"高","levelMedium":"中","levelLow":"低","wasHelpful":"有帮助吗?","hit":"有用","partial":"部分有用","miss":"无用","thanks":"感谢反馈!"},"memory":{"title":"记忆","loading":"加载中...","pendingApproval":"待审批","approvedMemories":"已批准的记忆","approve":"批准","reject":"拒绝","noMemories":"暂无记忆","noMemoriesHint":"记忆有助于避免重复犯错","confidence":"置信度","original":"原始","yes":"是","no":"否","category":{"mcp_correction":"MCP 纠正","project_knowledge":"项目知识","failure_lesson":"失败教训"},"searchPlaceholder":"搜索记忆...","addMemory":"添加记忆","editMemory":"编辑记忆","deleteMemory":"删除","deleteConfirm":"确定删除这条记忆?","categoryLabel":"分类","content":"内容","scope":"作用域(可选)","cancel":"取消","save":"保存"},"workflows":{"title":"工作流运行","available":"可用工作流","steps":"步骤","stream":"流","closeStream":"关闭流","runHistory":"运行历史","runId":"运行 ID","started":"开始时间","noRuns":"暂无运行,请触发上方工作流"},"benchmark":{"title":"基准测试","running":"运行中...","run":"运行测试","tasks":"任务","task":"任务","experimentTab":"A/B 基准","operationsTab":"运行治理","filesTouched":"涉及文件","correctness":"正确率","regressions":"超过 10% 的回退","baselineCorrectness":"基线正确率","devflowCorrectness":"DevFlow 正确率","baselineTokens":"基线 Token","devflowTokens":"DevFlow Token","noReports":"暂无测试报告,点击运行开始","roiTitle":"ROI 仪表盘","loading":"加载中...","noData":"暂无数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 数据。","overview":"概览","totalRuns":"总运行数","completed":"已完成","failed":"已失败","avgDuration":"平均耗时","avgTokens":"平均令牌","firstPassRate":"首次通过率","feedbackHitRate":"反馈命中率","efficiency":"效率","avgTimePerTask":"平均每任务耗时","avgRetryCount":"平均重试次数","tokensSaved":"节省令牌数","failureBreakdown":"失败分类","workflowHealth":"工作流健康度","workflow":"工作流","runs":"运行数","successRate":"成功率","pluginEffectiveness":"插件有效性","plugin":"插件","dailyTrends":"每日趋势","date":"日期","tokens":"令牌数","failures":"失败数","empty":"暂无遥测数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 指标。","failureCategories":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"智能体覆盖","unknown":"未知"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"实验收益总结","timeSavedRate":"时间节省率","tokenSavedRate":"Token 节省率","detailedResults":"详细结果","faster":"{{percent}}% 更快","baseline":"基线","devflow":"DevFlow","noExperimentData":"暂无实验数据","opsSummary":"运营统计","totalRunsCount":"总运行次数","successRatePercent":"成功率","avgTokenUsage":"平均 Token 使用","avgDurationTime":"平均耗时","feedbackHitRatePercent":"反馈命中率","noOpsData":"暂无运营数据","loadFailed":"加载失败: {{error}}","pluginAnalysis":"插件价值分析","recommendedInstall":"推荐安装","suggestedRemove":"建议移除","installCount":"安装量","usageRate":"使用率","successRateShort":"成功率","tokenImpact":"Token 影响","lastUsed":"最近使用","noPluginData":"暂无插件数据","recommended":"推荐","lowEfficiency":"低效"},"graph":{"searchPlaceholder":"搜索节点...","filterOnly":"仅显示匹配","highlightAll":"高亮全部"},"detail":{"selectNode":"选择一个节点查看详情","properties":"属性","imports":"导入","history":"历史","name":"名称","type":"类型","file":"文件","notFound":"节点未找到"},"knowledge":{"title":"知识库","sources":"数据源","syncing":"同步中...","syncAll":"全部同步","loading":"加载中...","noSources":"暂无知识源,安装插件并同步文档。","search":"搜索","searchPlaceholder":"搜索知识...","synced":"已同步","notSynced":"未同步","last":"最近","sync":"同步","score":"相关性"},"runs":{"title":"运行记录","empty":"暂无运行记录。"},"timeline":{"title":"时间线","runs":"运行数","tokens":"令牌数","llmCalls":"LLM 调用","toolUses":"工具调用","completed":"已完成","failed":"已失败"},"events":{"llmCall":"LLM 调用","toolUse":"工具使用","memoryRead":"读取记忆","memoryWrite":"写入记忆","fileRead":"读取文件","fileWrite":"写入文件","bashCommand":"Bash","mcpToolCall":"MCP 工具","error":"错误","userInput":"用户输入","stepStart":"步骤开始","stepEnd":"步骤结束","empty":"此运行未记录任何事件。","steps":"步骤","eventCount":"个事件","selectEvent":"选择一个事件查看详情","eventDetail":"事件详情","kind":"类型","step":"步骤","duration":"耗时","model":"模型","tokens":"令牌数","tokensInOut":"{{input}} 输入 / {{output}} 输出","prompt":"提示词","response":"响应","stdout":"标准输出","stderr":"标准错误","truncated":"内容已截断"},"runDetail":{"title":"运行详情","events":"个事件","llm":"次 LLM","tokens":"tokens","failureCategory":"失败类别","failureReason":"失败原因","suggestedActions":"建议动作","category":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"Agent 覆盖"}},"plugin":{"title":"插件效果","installCount":"安装量","activeRate":"活跃率","successRate":"成功率","avgTokenImpact":"平均 Token 影响","recommendInstall":"推荐安装","recommendOptimize":"建议优化","recommendRemove":"建议淘汰"},"executions":{"title":"技能执行记录","loading":"加载执行记录中...","overallCompliance":"总体 MCP 合规率","totalExecutions":"总执行次数","skillsTracked":"追踪技能数","skill":"技能","status":"状态","tools":"工具数","mcpRate":"MCP 比率","duration":"耗时","tokens":"Token","empty":"暂无执行记录","traceTimeline":"执行时间线","blocked":"已拦截","fallback":"降级"},"settings":{"title":"项目设置","projectInfo":"项目信息","name":"名称","mode":"模式","plugins":"插件","noPlugins":"未安装插件","telemetry":"遥测","totalRuns":"运行数","totalTokens":"总令牌数","clearOldRuns":"清理旧记录(30天前)"}}');function H({children:e}){return(0,n.jsx)("html",{lang:"zh",className:"dark",children:(0,n.jsx)("body",{className:"h-dvh overflow-hidden",children:(0,n.jsx)(a,{children:(0,n.jsx)(E,{children:e})})})})}_.Ay.use(O.A).use(m.r9).init({resources:{en:{translation:L},zh:{translation:K}},fallbackLng:"zh",detection:{order:["localStorage","navigator"],caches:["localStorage"]},interpolation:{escapeValue:!1}})},11752:(e,t,o)=>{Promise.resolve().then(o.bind(o,6248))},64318:(e,t,o)=>{"use strict";o.d(t,{cn:()=>r});var n=o(9917),s=o(2809);function r(...e){return(0,s.QP)((0,n.$)(e))}},74471:()=>{}},e=>{e.O(0,[306,820,567,993,240,722,914,587,968,358],()=>e(e.s=11752)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{638:(e,t,o)=>{"use strict";o.d(t,{C:()=>i});var n=o(19851);let s="devflow-project-root",r="devflow-active-project-root";function a(e){try{return localStorage.getItem(e)}catch{return null}}function l(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}let i=(0,n.vt)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:a(s),activeProjectRoot:a(r),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{l(s,t),e({projectRoot:t})},setActiveProjectRoot:t=>{l(r,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},6248:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>H});var n=o(54568);o(74471);var s=o(64955),r=o(68728),a=o(7620);function l({children:e}){let[t]=(0,a.useState)(()=>new s.E({defaultOptions:{queries:{staleTime:3e4,retry:1}}}));return(0,n.jsx)(r.Ht,{client:t,children:e})}var i=o(79748),c=o(638),d=o(86914),u=o(64318),m=o(64567);let p={properties:"detail.properties",imports:"detail.imports",history:"detail.history"};function g(){let{t:e}=(0,m.Bd)(),t=(0,c.C)(e=>e.selectedNodeId),o=(0,c.C)(e=>e.detailTab),s=(0,c.C)(e=>e.setDetailTab),{data:r}=(0,d.uU)(),a=r?.nodes.find(e=>e.id===t);return t?(0,n.jsxs)("div",{className:"flex flex-col h-full",children:[(0,n.jsx)("div",{className:"flex border-b border-border",children:Object.keys(p).map(t=>(0,n.jsx)("button",{onClick:()=>s(t),className:(0,u.cn)("flex-1 py-2 text-xs font-medium capitalize",o===t?"border-b-2 border-primary text-primary":"text-muted-foreground"),children:e(p[t])},t))}),(0,n.jsx)("div",{className:"flex-1 p-4 overflow-y-auto",children:a?(0,n.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.name"),":"]})," ",a.name]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.type"),":"]})," ",(0,n.jsx)("span",{className:"capitalize",children:a.type})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.file"),":"]})," ",(0,n.jsx)("span",{className:"font-mono text-xs",children:a.file})]})]}):(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:e("detail.notFound")})})]}):(0,n.jsx)("div",{className:"p-4 text-sm text-muted-foreground",children:e("detail.selectNode")})}var f=o(65587),h=o.n(f),v=o(7920),k=o(72076),y=o(22996),w=o(55769),x=o(64265),b=o(69353),R=o(42154),T=o(73599),S=o(78914),j=o(40766),C=o(30774),P=o(60527),N=o(22681),A=o(48056),D=o(37270);let M=[{href:"/",labelKey:"nav.overview",icon:v.A},{href:"/graph",labelKey:"nav.graph",icon:k.A},{href:"/context",labelKey:"nav.context",icon:y.A},{href:"/workflows",labelKey:"nav.workflows",icon:w.A},{href:"/memory",labelKey:"nav.memory",icon:x.A},{href:"/knowledge",labelKey:"nav.knowledge",icon:b.A},{href:"/runs",labelKey:"nav.runs",icon:R.A},{href:"/timeline",labelKey:"nav.timeline",icon:T.A},{href:"/executions",labelKey:"nav.executions",icon:S.A},{href:"/tool-metrics",labelKey:"nav.toolMetrics",icon:j.A},{href:"/accuracy",labelKey:"nav.accuracy",icon:C.A},{href:"/replay",labelKey:"nav.replay",icon:P.A},{href:"/benchmark",labelKey:"nav.benchmark",icon:N.A},{href:"/doctor",labelKey:"nav.doctor",icon:A.A},{href:"/settings",labelKey:"nav.settings",icon:D.A}];function I(){let{t:e,i18n:t}=(0,m.Bd)(),o=(0,i.usePathname)();return(0,n.jsxs)("nav",{className:"flex h-full min-w-max flex-row gap-1 p-2 md:min-w-0 md:flex-col md:p-3",children:[(0,n.jsx)(h(),{href:"/",className:"flex h-9 shrink-0 items-center px-2 text-base font-bold text-primary md:mb-2 md:px-3",children:e("nav.title")}),(0,n.jsx)("div",{className:"flex flex-1 gap-1 md:flex-col",children:M.map(t=>{let s="/"===t.href?"/"===o:o===t.href||o.startsWith(`${t.href}/`);return(0,n.jsxs)(h(),{href:t.href,title:e(t.labelKey),className:(0,u.cn)("flex h-9 shrink-0 items-center gap-3 rounded-md px-2 text-sm transition-colors md:px-3",s?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,n.jsx)(t.icon,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"hidden md:inline",children:e(t.labelKey)})]},t.href)})}),(0,n.jsx)("div",{className:"shrink-0 border-l border-border pl-2 md:mt-auto md:border-l-0 md:border-t md:pl-0 md:pt-3",children:(0,n.jsx)("button",{onClick:()=>{t.changeLanguage("zh"===t.language?"en":"zh")},className:"h-9 w-full rounded-md px-3 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:e("nav.language")})})]})}function F({nav:e,main:t,detail:o}){return(0,n.jsxs)("div",{className:"flex h-dvh w-full flex-col md:flex-row",children:[(0,n.jsx)("aside",{className:"h-14 shrink-0 overflow-x-auto border-b border-border bg-card md:h-auto md:w-[220px] md:overflow-y-auto md:border-b-0 md:border-r",children:e}),(0,n.jsx)("main",{className:"min-h-0 min-w-0 flex-1 overflow-hidden",children:t}),o?(0,n.jsx)("aside",{className:"hidden w-[340px] shrink-0 overflow-y-auto border-l border-border bg-card xl:block",children:o}):null]})}function E({children:e}){let t=(0,i.usePathname)(),[o,s]=(0,a.useState)(!1);return((0,a.useEffect)(()=>s(!0),[]),o)?(0,n.jsx)(F,{nav:(0,n.jsx)(I,{}),main:e,detail:"/graph"===t?(0,n.jsx)(g,{}):void 0}):(0,n.jsx)("div",{className:"flex h-dvh items-center justify-center text-sm text-muted-foreground",children:"Loading..."})}var O=o(58202),_=o(43028);let L=JSON.parse('{"nav":{"title":"DevFlow","overview":"Overview","graph":"Graph","context":"Context","workflows":"Workflows","memory":"Memory","benchmark":"Benchmark","knowledge":"Knowledge","runs":"Runs","timeline":"Timeline","executions":"Executions","toolMetrics":"Tool Metrics","accuracy":"Accuracy","replay":"Replay","doctor":"Doctor","settings":"Settings","language":"中文"},"overview":{"title":"Project Overview","project":"Project","noProject":"No project connected","filesIndexed":"Files Indexed","workflows":"Workflows","agentRuns":"Agent Runs","techStack":"Tech Stack","recentRuns":"Recent Agent Runs","noRuns":"No agent runs recorded yet.","agent":"Agent","mode":"Mode","source":"Source","status":"Status","tokens":"Tokens","connectTitle":"Connect Project","connectDescription":"Enter the root path of your project to connect. The server will index and analyze the codebase.","connectPlaceholder":"/path/to/your/project","connecting":"Connecting...","connect":"Connect","connectError":"Failed to connect. Make sure the path exists and is accessible.","architectureLayers":"Architecture Layers","filesCount":"{{count}} files","keyModules":"Key Modules","keyFiles":"Key Files","recommended":"Recommended Next Steps","plugins":"Plugins","queries":"Queries","switchProject":"Switch Project","switchProjectPlaceholder":"Enter project path...","switchProjectConfirm":"Switch","disconnectProject":"Disconnect"},"onboarding":{"title":"Onboarding Pack","empty":"No onboarding pack generated yet","noActiveProject":"No active project","generate":"Generate Onboarding Pack","refresh":"Refresh onboarding pack"},"context":{"title":"Context Builder","placeholder":"Search symbols or ask a question...","build":"Build","building":"Building context...","results":"Results ({{files}} files, ~{{tokens}} tokens)","taskMode":"Task Mode","taskContext":"Task Context","confidenceTokens":"{{confidence}}% confidence \xb7 {{tokens}} tokens","requiredFiles":"Required Files","optionalFiles":"Optional Files","keySymbols":"Key Symbols","riskHints":"Risk Hints","nextActions":"Next Actions","relevanceDirect":"direct","relevanceIndirect":"indirect","levelHigh":"high","levelMedium":"medium","levelLow":"low","wasHelpful":"Was this helpful?","hit":"Hit","partial":"Partial","miss":"Miss","thanks":"Thanks for your feedback!"},"memory":{"title":"Memory","loading":"Loading...","pendingApproval":"Pending Approval","approvedMemories":"Approved Memories","approve":"Approve","reject":"Reject","noMemories":"No memories yet","noMemoriesHint":"Memories help avoid repeating mistakes","confidence":"confidence","original":"Original","yes":"Yes","no":"No","category":{"mcp_correction":"MCP Correction","project_knowledge":"Project Knowledge","failure_lesson":"Failure Lesson"},"searchPlaceholder":"Search memories...","addMemory":"Add Memory","editMemory":"Edit Memory","deleteMemory":"Delete","deleteConfirm":"Delete this memory?","categoryLabel":"Category","content":"Content","scope":"Scope (optional)","cancel":"Cancel","save":"Save"},"workflows":{"title":"Workflow Runs","available":"Available Workflows","steps":"steps","stream":"Stream","closeStream":"Close stream","runHistory":"Run History","runId":"Run ID","started":"Started","noRuns":"No runs yet. Trigger a workflow above."},"benchmark":{"title":"Benchmark","running":"Running...","run":"Run Benchmark","tasks":"tasks","task":"Task","experimentTab":"A/B Benchmark","operationsTab":"Operations","filesTouched":"Files Touched","correctness":"Correctness","regressions":"Regressions Over 10%","baselineCorrectness":"Baseline Correctness","devflowCorrectness":"DevFlow Correctness","baselineTokens":"Baseline Tokens","devflowTokens":"DevFlow Tokens","noReports":"No benchmark reports yet. Run one to get started.","roiTitle":"ROI Dashboard","loading":"Loading...","noData":"No data available. Start using DevFlow to collect telemetry.","overview":"Overview","totalRuns":"Total Runs","completed":"Completed","failed":"Failed","avgDuration":"Avg Duration","avgTokens":"Avg Tokens","firstPassRate":"First Pass Rate","feedbackHitRate":"Feedback Hit Rate","efficiency":"Efficiency","avgTimePerTask":"Avg Time Per Task","avgRetryCount":"Avg Retry Count","tokensSaved":"Tokens Saved","failureBreakdown":"Failure Breakdown","workflowHealth":"Workflow Health","workflow":"Workflow","runs":"Runs","successRate":"Success Rate","pluginEffectiveness":"Plugin Effectiveness","plugin":"Plugin","dailyTrends":"Daily Trends","date":"Date","tokens":"Tokens","failures":"Failures","empty":"No telemetry data yet. Start using DevFlow with an AI agent to collect ROI metrics.","failureCategories":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override","unknown":"Unknown"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"Experiment Summary","timeSavedRate":"Time Saved","tokenSavedRate":"Token Saved","detailedResults":"Detailed Results","faster":"{{percent}}% faster","baseline":"Baseline","devflow":"DevFlow","noExperimentData":"No experiment data","opsSummary":"Operations Summary","totalRunsCount":"Total Runs","successRatePercent":"Success Rate","avgTokenUsage":"Avg Token Usage","avgDurationTime":"Avg Duration","feedbackHitRatePercent":"Feedback Hit Rate","noOpsData":"No operations data","loadFailed":"Load failed: {{error}}","pluginAnalysis":"Plugin Value Analysis","recommendedInstall":"Recommended to Install","suggestedRemove":"Suggested to Remove","installCount":"Installs","usageRate":"Usage","successRateShort":"Success","tokenImpact":"Token Impact","lastUsed":"Last Used","noPluginData":"No plugin data","recommended":"Recommended","lowEfficiency":"Low Efficiency"},"graph":{"searchPlaceholder":"Search nodes...","filterOnly":"Filter only","highlightAll":"Highlight all"},"detail":{"selectNode":"Select a node to view details","properties":"Properties","imports":"Imports","history":"History","name":"Name","type":"Type","file":"File","notFound":"Node not found"},"knowledge":{"title":"Knowledge Base","sources":"Sources","syncing":"Syncing...","syncAll":"Sync All","loading":"Loading...","noSources":"No knowledge sources. Install a plugin and sync docs.","search":"Search","searchPlaceholder":"Search knowledge...","synced":"Synced","notSynced":"Not synced","last":"Last","sync":"Sync","score":"Score"},"runs":{"title":"Runs","empty":"No runs recorded yet."},"timeline":{"title":"Timeline","runs":"Runs","tokens":"Tokens","llmCalls":"LLM Calls","toolUses":"Tool Uses","completed":"completed","failed":"failed"},"events":{"llmCall":"LLM Call","toolUse":"Tool Use","memoryRead":"Memory Read","memoryWrite":"Memory Write","fileRead":"File Read","fileWrite":"File Write","bashCommand":"Bash","mcpToolCall":"MCP Tool","error":"Error","userInput":"User Input","stepStart":"Step Start","stepEnd":"Step End","empty":"No events recorded for this run.","steps":"Steps","eventCount":"events","selectEvent":"Select an event to view details","eventDetail":"Event Detail","kind":"Kind","step":"Step","duration":"Duration","model":"Model","tokens":"Tokens","tokensInOut":"{{input}} in / {{output}} out","prompt":"Prompt","response":"Response","stdout":"Stdout","stderr":"Stderr","truncated":"Content was truncated"},"runDetail":{"title":"Run Detail","events":"events","llm":"LLM","tokens":"tokens","failureCategory":"Failure Category","failureReason":"Failure Reason","suggestedActions":"Suggested Actions","category":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override"}},"plugin":{"title":"Plugin Effectiveness","installCount":"Install Count","activeRate":"Active Rate","successRate":"Success Rate","avgTokenImpact":"Avg Token Impact","recommendInstall":"Recommend Install","recommendOptimize":"Recommend Optimize","recommendRemove":"Recommend Remove"},"executions":{"title":"Skill Executions","loading":"Loading executions...","overallCompliance":"Overall MCP Compliance","totalExecutions":"Total Executions","skillsTracked":"Skills Tracked","skill":"Skill","status":"Status","tools":"Tools","mcpRate":"MCP Rate","duration":"Duration","tokens":"Tokens","empty":"No executions recorded yet","traceTimeline":"Execution Trace","blocked":"Blocked","fallback":"Fallback"},"runtime":{"ready":"Runtime ready","starting":"Starting runtime","degraded":"Runtime degraded","notRunning":"Runtime is not running","dashboardUnavailable":"Dashboard is unavailable","bundleMissing":"Dashboard bundle is missing","databaseNotReady":"Database is not ready","ownerMismatch":"Runtime ownership could not be verified","projectScopeRequired":"Choose a project to view project data","openProject":"Open project","reconnect":"Reconnect"},"settings":{"title":"Project Settings","projectInfo":"Project Info","name":"Name","mode":"Mode","plugins":"Plugins","noPlugins":"No plugins installed","telemetry":"Telemetry","totalRuns":"Runs stored","totalTokens":"Total tokens","clearOldRuns":"Clear old runs (30d+)"}}'),K=JSON.parse('{"nav":{"title":"DevFlow","overview":"概览","graph":"图谱","context":"上下文","workflows":"工作流","memory":"记忆","benchmark":"基准测试","knowledge":"知识库","runs":"运行记录","timeline":"时间线","executions":"执行轨迹","toolMetrics":"工具指标","accuracy":"准确率","replay":"回放","doctor":"自检","settings":"设置","language":"EN"},"overview":{"title":"项目概览","project":"项目","noProject":"未连接项目","filesIndexed":"已索引文件","workflows":"工作流","agentRuns":"智能体运行","techStack":"技术栈","recentRuns":"最近运行","noRuns":"暂无运行记录","agent":"智能体","mode":"模式","source":"来源","status":"状态","tokens":"令牌数","connectTitle":"连接项目","connectDescription":"输入项目根路径进行连接。服务端将索引并分析代码库。","connectPlaceholder":"/path/to/your/project","connecting":"连接中...","connect":"连接","connectError":"连接失败,请确认路径存在且可访问。","architectureLayers":"架构分层","filesCount":"{{count}} 个文件","keyModules":"关键模块","keyFiles":"关键文件","recommended":"推荐下一步","plugins":"插件","queries":"推荐查询","switchProject":"切换项目","switchProjectPlaceholder":"输入项目路径...","switchProjectConfirm":"切换","disconnectProject":"断开连接"},"onboarding":{"title":"启动包","empty":"尚未生成启动包","noActiveProject":"未激活项目","generate":"生成启动包","refresh":"刷新启动包"},"context":{"title":"上下文构建器","placeholder":"搜索符号或输入查询...","build":"构建","building":"正在构建上下文...","results":"结果({{files}} 个文件,约 {{tokens}} 个令牌)","taskMode":"任务模式","taskContext":"任务上下文","confidenceTokens":"{{confidence}}% 置信度 \xb7 {{tokens}} 令牌","requiredFiles":"必需文件","optionalFiles":"可选文件","keySymbols":"关键符号","riskHints":"风险提示","nextActions":"下一步操作","relevanceDirect":"直接","relevanceIndirect":"间接","levelHigh":"高","levelMedium":"中","levelLow":"低","wasHelpful":"有帮助吗?","hit":"有用","partial":"部分有用","miss":"无用","thanks":"感谢反馈!"},"memory":{"title":"记忆","loading":"加载中...","pendingApproval":"待审批","approvedMemories":"已批准的记忆","approve":"批准","reject":"拒绝","noMemories":"暂无记忆","noMemoriesHint":"记忆有助于避免重复犯错","confidence":"置信度","original":"原始","yes":"是","no":"否","category":{"mcp_correction":"MCP 纠正","project_knowledge":"项目知识","failure_lesson":"失败教训"},"searchPlaceholder":"搜索记忆...","addMemory":"添加记忆","editMemory":"编辑记忆","deleteMemory":"删除","deleteConfirm":"确定删除这条记忆?","categoryLabel":"分类","content":"内容","scope":"作用域(可选)","cancel":"取消","save":"保存"},"workflows":{"title":"工作流运行","available":"可用工作流","steps":"步骤","stream":"流","closeStream":"关闭流","runHistory":"运行历史","runId":"运行 ID","started":"开始时间","noRuns":"暂无运行,请触发上方工作流"},"benchmark":{"title":"基准测试","running":"运行中...","run":"运行测试","tasks":"任务","task":"任务","experimentTab":"A/B 基准","operationsTab":"运行治理","filesTouched":"涉及文件","correctness":"正确率","regressions":"超过 10% 的回退","baselineCorrectness":"基线正确率","devflowCorrectness":"DevFlow 正确率","baselineTokens":"基线 Token","devflowTokens":"DevFlow Token","noReports":"暂无测试报告,点击运行开始","roiTitle":"ROI 仪表盘","loading":"加载中...","noData":"暂无数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 数据。","overview":"概览","totalRuns":"总运行数","completed":"已完成","failed":"已失败","avgDuration":"平均耗时","avgTokens":"平均令牌","firstPassRate":"首次通过率","feedbackHitRate":"反馈命中率","efficiency":"效率","avgTimePerTask":"平均每任务耗时","avgRetryCount":"平均重试次数","tokensSaved":"节省令牌数","failureBreakdown":"失败分类","workflowHealth":"工作流健康度","workflow":"工作流","runs":"运行数","successRate":"成功率","pluginEffectiveness":"插件有效性","plugin":"插件","dailyTrends":"每日趋势","date":"日期","tokens":"令牌数","failures":"失败数","empty":"暂无遥测数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 指标。","failureCategories":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"智能体覆盖","unknown":"未知"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"实验收益总结","timeSavedRate":"时间节省率","tokenSavedRate":"Token 节省率","detailedResults":"详细结果","faster":"{{percent}}% 更快","baseline":"基线","devflow":"DevFlow","noExperimentData":"暂无实验数据","opsSummary":"运营统计","totalRunsCount":"总运行次数","successRatePercent":"成功率","avgTokenUsage":"平均 Token 使用","avgDurationTime":"平均耗时","feedbackHitRatePercent":"反馈命中率","noOpsData":"暂无运营数据","loadFailed":"加载失败: {{error}}","pluginAnalysis":"插件价值分析","recommendedInstall":"推荐安装","suggestedRemove":"建议移除","installCount":"安装量","usageRate":"使用率","successRateShort":"成功率","tokenImpact":"Token 影响","lastUsed":"最近使用","noPluginData":"暂无插件数据","recommended":"推荐","lowEfficiency":"低效"},"graph":{"searchPlaceholder":"搜索节点...","filterOnly":"仅显示匹配","highlightAll":"高亮全部"},"detail":{"selectNode":"选择一个节点查看详情","properties":"属性","imports":"导入","history":"历史","name":"名称","type":"类型","file":"文件","notFound":"节点未找到"},"knowledge":{"title":"知识库","sources":"数据源","syncing":"同步中...","syncAll":"全部同步","loading":"加载中...","noSources":"暂无知识源,安装插件并同步文档。","search":"搜索","searchPlaceholder":"搜索知识...","synced":"已同步","notSynced":"未同步","last":"最近","sync":"同步","score":"相关性"},"runs":{"title":"运行记录","empty":"暂无运行记录。"},"timeline":{"title":"时间线","runs":"运行数","tokens":"令牌数","llmCalls":"LLM 调用","toolUses":"工具调用","completed":"已完成","failed":"已失败"},"events":{"llmCall":"LLM 调用","toolUse":"工具使用","memoryRead":"读取记忆","memoryWrite":"写入记忆","fileRead":"读取文件","fileWrite":"写入文件","bashCommand":"Bash","mcpToolCall":"MCP 工具","error":"错误","userInput":"用户输入","stepStart":"步骤开始","stepEnd":"步骤结束","empty":"此运行未记录任何事件。","steps":"步骤","eventCount":"个事件","selectEvent":"选择一个事件查看详情","eventDetail":"事件详情","kind":"类型","step":"步骤","duration":"耗时","model":"模型","tokens":"令牌数","tokensInOut":"{{input}} 输入 / {{output}} 输出","prompt":"提示词","response":"响应","stdout":"标准输出","stderr":"标准错误","truncated":"内容已截断"},"runDetail":{"title":"运行详情","events":"个事件","llm":"次 LLM","tokens":"tokens","failureCategory":"失败类别","failureReason":"失败原因","suggestedActions":"建议动作","category":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"Agent 覆盖"}},"plugin":{"title":"插件效果","installCount":"安装量","activeRate":"活跃率","successRate":"成功率","avgTokenImpact":"平均 Token 影响","recommendInstall":"推荐安装","recommendOptimize":"建议优化","recommendRemove":"建议淘汰"},"executions":{"title":"技能执行记录","loading":"加载执行记录中...","overallCompliance":"总体 MCP 合规率","totalExecutions":"总执行次数","skillsTracked":"追踪技能数","skill":"技能","status":"状态","tools":"工具数","mcpRate":"MCP 比率","duration":"耗时","tokens":"Token","empty":"暂无执行记录","traceTimeline":"执行时间线","blocked":"已拦截","fallback":"降级"},"runtime":{"ready":"运行时已就绪","starting":"正在启动运行时","degraded":"运行时已降级","notRunning":"运行时未运行","dashboardUnavailable":"Dashboard 不可用","bundleMissing":"缺少 Dashboard 静态资源","databaseNotReady":"数据库尚未就绪","ownerMismatch":"无法验证运行时归属","projectScopeRequired":"请选择项目以查看项目数据","openProject":"打开项目","reconnect":"重新连接"},"settings":{"title":"项目设置","projectInfo":"项目信息","name":"名称","mode":"模式","plugins":"插件","noPlugins":"未安装插件","telemetry":"遥测","totalRuns":"运行数","totalTokens":"总令牌数","clearOldRuns":"清理旧记录(30天前)"}}');function H({children:e}){return(0,n.jsx)("html",{lang:"zh",className:"dark",children:(0,n.jsx)("body",{className:"h-dvh overflow-hidden",children:(0,n.jsx)(l,{children:(0,n.jsx)(E,{children:e})})})})}O.Ay.use(_.A).use(m.r9).init({resources:{en:{translation:L},zh:{translation:K}},fallbackLng:"zh",detection:{order:["localStorage","navigator"],caches:["localStorage"]},interpolation:{escapeValue:!1}})},11752:(e,t,o)=>{Promise.resolve().then(o.bind(o,6248))},64318:(e,t,o)=>{"use strict";o.d(t,{cn:()=>r});var n=o(9917),s=o(2809);function r(...e){return(0,s.QP)((0,n.$)(e))}},74471:()=>{}},e=>{e.O(0,[306,820,567,993,240,722,914,587,968,358],()=>e(e.s=11752)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{638:(e,s,t)=>{"use strict";t.d(s,{C:()=>d});var r=t(19851);let a="devflow-project-root",l="devflow-active-project-root";function n(e){try{return localStorage.getItem(e)}catch{return null}}function c(e,s){try{null===s?localStorage.removeItem(e):localStorage.setItem(e,s)}catch{}}let d=(0,r.vt)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:n(a),activeProjectRoot:n(l),selectedRunId:null,selectNode:s=>e({selectedNodeId:s}),setDetailTab:s=>e({detailTab:s}),setSearchQuery:s=>e({searchQuery:s}),setProjectRoot:s=>{c(a,s),e({projectRoot:s})},setActiveProjectRoot:s=>{c(l,s),e({activeProjectRoot:s})},setSelectedRunId:s=>e({selectedRunId:s})}))},64318:(e,s,t)=>{"use strict";t.d(s,{cn:()=>l});var r=t(9917),a=t(2809);function l(...e){return(0,a.QP)((0,r.$)(e))}},77231:(e,s,t)=>{Promise.resolve().then(t.bind(t,82941))},82941:(e,s,t)=>{"use strict";t.d(s,{ProjectOverview:()=>R});var r=t(54568),a=t(7620),l=t(86914),n=t(638),c=t(89531),d=t(64318);function i({className:e,...s}){return(0,r.jsx)("div",{className:(0,d.cn)("animate-pulse rounded-md bg-muted",e),...s})}var o=t(28819),x=t(60527),m=t(93441),h=t(36645),u=t(57917),j=t(76990),p=t(92470),v=t(56242),g=t(61469),f=t(78516),N=t(8490),w=t(64567),b=t(63322),y=t(14796),P=t(45894);function k({readiness:e,hasProject:s}){let{t}=(0,w.Bd)(),a=e?.runtime==="ready"&&e.dashboard&&e.ownerVerified,l=t(a?"runtime.ready":"runtime.degraded");return(0,r.jsxs)("div",{className:`flex min-h-9 items-center justify-between gap-3 border-b px-1 py-2 text-sm ${a?"text-emerald-700 dark:text-emerald-400":"text-amber-700 dark:text-amber-400"}`,role:"status",children:[(0,r.jsxs)("span",{className:"flex min-w-0 items-center gap-2",children:[a?(0,r.jsx)(b.A,{className:"h-4 w-4 shrink-0","aria-hidden":"true"}):(0,r.jsx)(y.A,{className:"h-4 w-4 shrink-0","aria-hidden":"true"}),(0,r.jsx)("span",{children:l})]}),!s&&(0,r.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-muted-foreground",children:[(0,r.jsx)(P.A,{className:"h-4 w-4","aria-hidden":"true"}),t("runtime.projectScopeRequired")]}),(0,r.jsx)("span",{className:"sr-only",children:a?"ready":"degraded"})]})}function R(){let{t:e}=(0,w.Bd)(),{data:s}=(0,l.nS)(),{data:t}=(0,l.SU)(),d=(0,n.C)(e=>e.projectRoot),b=(0,n.C)(e=>e.setProjectRoot),y=(0,n.C)(e=>e.activeProjectRoot),P=(0,n.C)(e=>e.setActiveProjectRoot),[R,S]=(0,a.useState)(""),[Z,A]=(0,a.useState)(""),[W,B]=(0,a.useState)(!1),E=(0,l.PS)(),I=(0,l.B7)(),T=(0,l.ll)();(0,a.useEffect)(()=>{s?.rootPath&&s.rootPath!==y&&(b(s.rootPath),P(s.rootPath))},[s,b,P,y]);let[_,F]=(0,a.useState)(!1);(0,a.useEffect)(()=>{_||s?.rootPath||!y||E.isPending||(F(!0),E.mutate(y))},[s?.rootPath,y,E.isPending,_]);let{data:M}=(0,l.YK)(),{data:Q}=(0,l.jx)(),{data:$}=(0,l.mP)(),{data:D}=(0,l.te)(10,0),{data:K,isLoading:L}=(0,l.aW)(y),O=M?.find(e=>e.rootPath===y),U=()=>{if(O?.stack&&O.stack.length>0)return O.stack;if(K?.stack){let e=[...K.stack.languages,...K.stack.frameworks,...K.stack.buildTools,...K.stack.testTools];if(e.length>0)return e}return[]},q=()=>{R.trim()&&E.mutate(R.trim(),{onSuccess:e=>{b(e.rootPath),P(e.rootPath)}})},H=()=>{Z.trim()&&E.mutate(Z.trim(),{onSuccess:e=>{b(e.rootPath),P(e.rootPath),B(!1),A("")}})};return d?(0,r.jsxs)("div",{className:"p-6 space-y-6 overflow-y-auto h-full",children:[(0,r.jsx)(k,{readiness:t,hasProject:!!d}),(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:e("overview.title")}),(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"hidden max-w-[40vw] truncate rounded bg-secondary px-2 py-1 font-mono text-xs text-muted-foreground sm:block",children:d}),(0,r.jsx)("button",{onClick:()=>y&&T.mutate(y),disabled:!y||T.isPending,className:"icon-button",title:e("onboarding.refresh"),"aria-label":e("onboarding.refresh"),children:(0,r.jsx)(x.A,{className:`h-4 w-4 ${T.isPending?"animate-spin":""}`})}),(0,r.jsx)("button",{onClick:()=>B(!W),className:"icon-button",title:e("overview.switchProject"),"aria-label":e("overview.switchProject"),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})}),(0,r.jsx)("button",{onClick:()=>{I.mutate(void 0,{onSuccess:()=>{b(null),P(null)}})},className:"icon-button",title:e("overview.disconnectProject"),"aria-label":e("overview.disconnectProject"),children:(0,r.jsx)(h.A,{className:"h-4 w-4"})})]})]}),W&&(0,r.jsxs)("div",{className:"flex items-center gap-2 p-3 rounded-lg border bg-card",children:[(0,r.jsx)("input",{type:"text",value:Z,onChange:e=>A(e.target.value),onKeyDown:e=>{"Enter"===e.key&&H(),"Escape"===e.key&&(B(!1),A(""))},placeholder:e("overview.switchProjectPlaceholder"),className:"flex-1 px-3 py-1.5 rounded-md border border-border bg-background text-sm"}),(0,r.jsx)("button",{onClick:H,disabled:E.isPending||!Z.trim(),className:"px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",children:E.isPending?e("overview.connecting"):e("overview.switchProjectConfirm")})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,r.jsx)(C,{icon:(0,r.jsx)(u.A,{className:"h-5 w-5"}),label:e("overview.project"),value:O?.name?O.name:K?.projectName?K.projectName:y?y.split("/").pop()??"Unknown Project":"Unknown Project"}),(0,r.jsx)(C,{icon:(0,r.jsx)(j.A,{className:"h-5 w-5"}),label:e("overview.filesIndexed"),value:Q?String(Q.totalFiles):"--"}),(0,r.jsx)(C,{icon:(0,r.jsx)(p.A,{className:"h-5 w-5"}),label:e("overview.workflows"),value:$?String($.length):"--"}),(0,r.jsx)(C,{icon:(0,r.jsx)(v.A,{className:"h-5 w-5"}),label:e("overview.agentRuns"),value:D?String(D.length):"--"})]}),U().length>0&&(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsx)(c.ZB,{children:e("overview.techStack")})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:U().map(e=>(0,r.jsx)("span",{className:"px-2 py-1 rounded-md bg-secondary text-secondary-foreground text-xs",children:e},e))})})]}),L?(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(g.A,{className:"h-4 w-4"}),e("onboarding.title")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)(i,{className:"h-32 w-full"})})]}):K?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(g.A,{className:"h-4 w-4"}),e("overview.architectureLayers")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:K.architectureLayers.map(s=>(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium",children:s.name}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground bg-secondary px-2 py-0.5 rounded",children:e("overview.filesCount",{count:s.files})})]},s.name))})})]}),(0,r.jsxs)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:[(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(f.A,{className:"h-4 w-4"}),e("overview.keyModules")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:K.keyModules.slice(0,6).map(e=>(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm font-mono text-primary",children:e.name}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.name))})})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(j.A,{className:"h-4 w-4"}),e("overview.keyFiles")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:K.keyFiles.slice(0,6).map(e=>(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-sm font-mono truncate",children:e.path}),(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.path))})})]})]}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(N.A,{className:"h-4 w-4"}),e("overview.recommended")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:e("overview.plugins")}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:K.recommendedPlugins.map(e=>(0,r.jsx)("span",{className:"px-2 py-0.5 rounded bg-green-100 text-green-800 text-xs",children:e},e))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:e("overview.workflows")}),(0,r.jsx)("div",{className:"flex flex-wrap gap-1",children:K.recommendedWorkflows.map(e=>(0,r.jsx)("span",{className:"px-2 py-0.5 rounded bg-blue-100 text-blue-800 text-xs",children:e},e))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:e("overview.queries")}),(0,r.jsx)("div",{className:"space-y-1",children:K.recommendedQueries.slice(0,3).map(e=>(0,r.jsxs)("div",{className:"text-xs text-muted-foreground",children:['"',e,'"']},e))})]})]})})]})]}):(0,r.jsx)(c.Zp,{children:(0,r.jsx)(c.Wu,{className:"py-8 text-center text-muted-foreground",children:e("onboarding.empty")})}),(0,r.jsxs)(c.Zp,{children:[(0,r.jsx)(c.aR,{children:(0,r.jsx)(c.ZB,{children:e("overview.recentRuns")})}),(0,r.jsx)(c.Wu,{children:D&&D.length>0?(0,r.jsxs)("table",{className:"w-full text-sm",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,r.jsx)("th",{children:e("overview.label")}),(0,r.jsx)("th",{children:e("overview.status")}),(0,r.jsx)("th",{children:e("overview.toolCalls")}),(0,r.jsx)("th",{children:e("overview.duration")})]})}),(0,r.jsx)("tbody",{children:D.slice(0,5).map(e=>(0,r.jsxs)("tr",{className:"border-t border-border",children:[(0,r.jsx)("td",{className:"py-1",children:e.label||e.projectRoot}),(0,r.jsx)("td",{children:(0,r.jsx)("span",{className:`px-1.5 py-0.5 rounded text-xs ${"closed"===e.status?"bg-green-100 text-green-700":"bg-yellow-100 text-yellow-700"}`,children:e.status})}),(0,r.jsxs)("td",{children:[e.totalToolCalls," (",e.mcpToolCalls," MCP)"]}),(0,r.jsx)("td",{children:e.durationMs>0?`${(e.durationMs/1e3).toFixed(1)}s`:"--"})]},e.id))})]}):(0,r.jsx)("p",{className:"text-muted-foreground text-sm",children:e("overview.noRuns")})})]})]}):(0,r.jsxs)("div",{className:"p-6 space-y-6 h-full",children:[(0,r.jsx)(k,{readiness:t,hasProject:!1}),(0,r.jsx)("div",{className:"flex items-center justify-center",children:(0,r.jsxs)(c.Zp,{className:"w-full max-w-md",children:[(0,r.jsx)(c.aR,{children:(0,r.jsxs)(c.ZB,{className:"flex items-center gap-2",children:[(0,r.jsx)(o.A,{className:"h-5 w-5"}),e("overview.connectTitle")]})}),(0,r.jsxs)(c.Wu,{className:"space-y-4",children:[(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:e("overview.connectDescription")}),(0,r.jsx)("input",{type:"text",value:R,onChange:e=>S(e.target.value),onKeyDown:e=>"Enter"===e.key&&q(),placeholder:e("overview.connectPlaceholder"),className:"w-full px-3 py-2 rounded-md border border-border bg-background text-sm"}),(0,r.jsx)("button",{onClick:q,disabled:E.isPending||!R.trim(),className:"w-full px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50",children:E.isPending?e("overview.connecting"):e("overview.connect")}),E.isError&&(0,r.jsx)("p",{className:"text-sm text-red-500",children:e("overview.connectError")})]})]})})]})}function C({icon:e,label:s,value:t}){return(0,r.jsx)(c.Zp,{children:(0,r.jsxs)(c.Wu,{className:"p-4 flex items-center gap-3",children:[(0,r.jsx)("div",{className:"text-primary",children:e}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:s}),(0,r.jsx)("div",{className:"font-bold text-lg",children:t})]})]})})}},89531:(e,s,t)=>{"use strict";t.d(s,{Wu:()=>i,ZB:()=>d,Zp:()=>n,aR:()=>c});var r=t(54568),a=t(7620),l=t(64318);let n=a.forwardRef(({className:e,...s},t)=>(0,r.jsx)("div",{ref:t,className:(0,l.cn)("rounded-lg border border-border bg-card text-card-foreground",e),...s}));n.displayName="Card";let c=a.forwardRef(({className:e,...s},t)=>(0,r.jsx)("div",{ref:t,className:(0,l.cn)("flex flex-col space-y-1.5 p-4",e),...s}));c.displayName="CardHeader";let d=a.forwardRef(({className:e,...s},t)=>(0,r.jsx)("h3",{ref:t,className:(0,l.cn)("text-sm font-semibold leading-none tracking-tight",e),...s}));d.displayName="CardTitle";let i=a.forwardRef(({className:e,...s},t)=>(0,r.jsx)("div",{ref:t,className:(0,l.cn)("p-4 pt-0",e),...s}));i.displayName="CardContent"}},e=>{e.O(0,[820,567,993,411,914,587,968,358],()=>e(e.s=77231)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[293],{6026:(e,t,s)=>{"use strict";s.d(t,{E:()=>l});var r=s(54568);s(7620);var n=s(64318);let a=(0,s(91397).F)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-destructive-foreground",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function l({className:e,variant:t,...s}){return(0,r.jsx)("div",{className:(0,n.cn)(a({variant:t}),e),...s})}},8490:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(81007).A)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},14796:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(81007).A)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},33096:(e,t,s)=>{Promise.resolve().then(s.bind(s,59838))},56050:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(81007).A)("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]])},59838:(e,t,s)=>{"use strict";s.d(t,{RunDetailRoute:()=>y});var r=s(54568),n=s(79748),a=s(7620),l=s(86914),d=s(64567);function o({steps:e,events:t}){let{t:s}=(0,d.Bd)();return(0,r.jsxs)("div",{className:"space-y-1",children:[(0,r.jsx)("h3",{className:"text-xs font-semibold text-muted-foreground mb-2",children:s("events.steps")}),e.map(e=>{let n=t.filter(t=>t.stepId===e),a=n.reduce((e,t)=>e+(t.duration??0),0);return(0,r.jsxs)("div",{className:"text-xs py-1 px-2 rounded hover:bg-accent cursor-pointer",children:[(0,r.jsx)("div",{className:"font-medium truncate",children:e}),(0,r.jsxs)("div",{className:"text-muted-foreground",children:[n.length," ",s("events.eventCount")," \xb7 ",a,"ms"]})]},e)})]})}let i={llm_call:"text-blue-500",tool_use:"text-green-500",memory_read:"text-pink-500",memory_write:"text-pink-500",file_read:"text-gray-500",file_write:"text-yellow-500",bash_command:"text-purple-500",subagent:"text-orange-500",skill_invoke:"text-cyan-500",mcp_tool_call:"text-indigo-500",error:"text-red-500",user_input:"text-orange-500",step_start:"text-cyan-500",step_end:"text-cyan-500"},c={llm_call:"events.llmCall",tool_use:"events.toolUse",memory_read:"events.memoryRead",memory_write:"events.memoryWrite",file_read:"events.fileRead",file_write:"events.fileWrite",bash_command:"events.bashCommand",subagent:"events.subagent",skill_invoke:"events.skillInvoke",mcp_tool_call:"events.mcpToolCall",error:"events.error",user_input:"events.userInput",step_start:"events.stepStart",step_end:"events.stepEnd"};function u({events:e,onSelect:t,selectedId:s}){let{t:n}=(0,d.Bd)(),a=[...e].sort((e,t)=>e.timestamp-t.timestamp);if(0===a.length)return(0,r.jsx)("p",{className:"text-muted-foreground text-sm",children:n("events.empty")});let l="";return(0,r.jsx)("div",{className:"space-y-0",children:a.map(e=>{let a=e.stepId!==l;l=e.stepId;let d=i[e.kind]??"text-muted-foreground",o=c[e.kind],u=o?n(o):e.kind,m=e.data?.toolName||e.data?.filePath||e.data?.model||e.data?.command||e.data?.memoryKey||"";return(0,r.jsxs)("div",{children:[a&&(0,r.jsx)("div",{className:"text-xs font-semibold text-muted-foreground pt-2 pb-1 border-t border-border mt-1",children:e.stepId}),(0,r.jsxs)("div",{onClick:()=>t(e),className:`flex items-center gap-2 py-1.5 px-2 rounded cursor-pointer text-xs hover:bg-accent ${s===e.id?"bg-accent":""} ${e.metadata?.blocked?"border-l-2 border-red-500 bg-red-50 dark:bg-red-950":""}`,children:[e.metadata?.blocked&&(0,r.jsx)("span",{className:"text-red-500 font-bold text-[10px] uppercase tracking-wider",children:"BLOCKED"}),(0,r.jsx)("span",{className:`w-16 ${d} font-medium`,children:u}),(0,r.jsx)("span",{className:"text-muted-foreground truncate flex-1",children:m}),e.duration?(0,r.jsxs)("span",{className:"text-muted-foreground",children:[e.duration,"ms"]}):null]})]},e.id)})})}var m=s(89531);function x({event:e}){let[t,s]=(0,a.useState)(!1),n=e.input?JSON.stringify(e.input,null,2):"null",l=e.output?JSON.stringify(e.output,null,2):"null";return(0,r.jsxs)("div",{className:"space-y-4 p-4",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h3",{className:"font-semibold text-lg",children:e.mcpToolName||e.toolName}),(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:[e.toolType," \xb7 ",e.kind," \xb7 ",e.duration,"ms",e.blocked&&(0,r.jsx)("span",{className:"text-red-500 ml-2 font-bold",children:"BLOCKED"})]})]}),(0,r.jsx)("button",{onClick:()=>s(!t),className:"text-xs border rounded px-2 py-1 hover:bg-accent",children:t?"Formatted":"Raw JSON"})]}),e.error&&(0,r.jsx)("div",{className:"p-3 bg-red-50 dark:bg-red-950 border border-red-300 rounded text-sm text-red-700",children:e.error}),(0,r.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-4",children:[(0,r.jsxs)(m.Zp,{className:"p-3",children:[(0,r.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-2 uppercase",children:"Input"}),(0,r.jsx)("pre",{className:`text-xs overflow-auto max-h-96 ${t?"":"max-h-40 overflow-hidden"}`,children:(0,r.jsx)("code",{children:t?n:n.slice(0,500)+(n.length>500?"\n... (truncated)":"")})})]}),(0,r.jsxs)(m.Zp,{className:"p-3",children:[(0,r.jsx)("h4",{className:"text-xs font-medium text-muted-foreground mb-2 uppercase",children:"Output"}),null==e.output?(0,r.jsx)("p",{className:"text-xs text-yellow-600",children:"No output captured for this event"}):(0,r.jsx)("pre",{className:`text-xs overflow-auto max-h-96 ${t?"":"max-h-40 overflow-hidden"}`,children:(0,r.jsx)("code",{children:t?l:l.slice(0,500)+(l.length>500?"\n... (truncated)":"")})})]})]})]})}function p({event:e}){let{t}=(0,d.Bd)();if(!e)return(0,r.jsx)("p",{className:"text-muted-foreground text-sm",children:t("events.selectEvent")});if("tool_use"===e.kind&&(e.toolName||e.mcpToolName))return(0,r.jsx)(x,{event:e});let s=e.data??{};return(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold",children:t("events.eventDetail")}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.kind")}),(0,r.jsx)("div",{className:"text-sm font-medium",children:e.kind})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.step")}),(0,r.jsx)("div",{className:"text-sm font-mono",children:e.stepId})]}),null!=e.duration&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.duration")}),(0,r.jsxs)("div",{className:"text-sm",children:[e.duration,"ms"]})]}),null!=s.inputTokens&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.tokens")}),(0,r.jsx)("div",{className:"text-sm",children:t("events.tokensInOut",{input:s.inputTokens,output:s.outputTokens})})]}),null!=s.prompt&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.prompt")}),(0,r.jsx)("pre",{className:"text-xs bg-secondary p-2 rounded mt-1 max-h-40 overflow-y-auto whitespace-pre-wrap",children:s.prompt})]}),null!=s.response&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.response")}),(0,r.jsx)("pre",{className:"text-xs bg-secondary p-2 rounded mt-1 max-h-40 overflow-y-auto whitespace-pre-wrap",children:s.response})]}),null!=s.stdout&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.stdout")}),(0,r.jsx)("pre",{className:"text-xs bg-secondary p-2 rounded mt-1 max-h-40 overflow-y-auto whitespace-pre-wrap",children:s.stdout})]}),null!=s.stderr&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.stderr")}),(0,r.jsx)("pre",{className:"text-xs bg-red-50 dark:bg-red-950 p-2 rounded mt-1 max-h-40 overflow-y-auto whitespace-pre-wrap",children:s.stderr})]}),null!=s.errorMessage&&(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"text-xs text-muted-foreground",children:t("events.error")}),(0,r.jsx)("pre",{className:"text-xs bg-red-50 dark:bg-red-950 p-2 rounded mt-1 max-h-40 overflow-y-auto whitespace-pre-wrap",children:s.errorMessage})]}),e.metadata?.truncated!=null&&(0,r.jsx)("div",{className:"text-xs text-yellow-500",children:t("events.truncated")})]})]})}var h=s(6026),f=s(8490),v=s(14796);let g={context_insufficient:[{action:"Supplement task context",priority:"high"},{action:"Inspect graph roots and related files",priority:"medium"}],knowledge_missing:[{action:"Sync the required knowledge source",priority:"high"},{action:"Add or broaden documentation scopes",priority:"medium"}],workflow_design_issue:[{action:"Correct the failing step contract",priority:"high"},{action:"Review workflow dependencies",priority:"medium"}],tool_error:[{action:"Inspect the tool error and connectivity",priority:"high"},{action:"Retry with a validated input",priority:"medium"}],agent_override:[{action:"Review the rejected change and user feedback",priority:"high"}],unknown:[{action:"Inspect the failed step evidence",priority:"high"}]};function j({failureCategory:e,failureReason:t,suggestedActions:s}){let{t:n}=(0,d.Bd)();return e?(0,r.jsxs)(m.Zp,{children:[(0,r.jsxs)(m.aR,{children:[(0,r.jsx)("div",{className:"flex items-center gap-2",children:(0,r.jsx)(h.E,{className:{context_insufficient:"bg-yellow-500",knowledge_missing:"bg-orange-500",workflow_design_issue:"bg-purple-500",tool_error:"bg-red-500",agent_override:"bg-gray-500",unknown:"bg-gray-500"}[e]??"bg-gray-500",children:n(`runDetail.category.${e}`)})}),(0,r.jsx)(m.ZB,{className:"text-sm",children:n("runDetail.failureReason")})]}),(0,r.jsxs)(m.Wu,{className:"space-y-4",children:[(0,r.jsx)("p",{className:"text-sm text-muted-foreground",children:t}),s&&s.length>0&&(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm font-medium",children:[(0,r.jsx)(f.A,{className:"h-4 w-4"}),n("runDetail.suggestedActions")]}),(0,r.jsx)("ul",{className:"space-y-1",children:s.map((e,t)=>(0,r.jsxs)("li",{className:"flex items-center gap-2 text-sm",children:[(0,r.jsx)(v.A,{className:"h-3 w-3 text-muted-foreground"}),(0,r.jsx)("span",{children:e.action}),(0,r.jsx)(h.E,{variant:"outline",className:"text-xs",children:e.priority})]},t))})]})]})]}):null}var N=s(56050);function b({runId:e,onBack:t}){let s=(0,n.useRouter)(),{t:i}=(0,d.Bd)(),{data:c}=(0,l.Dr)(e),{data:m}=(0,l.wV)(e),[x,h]=(0,a.useState)(null),f=(c??[]).map(e=>{let t=e.eventId??e.id??"",s=(e.kind??e.toolType)||"tool_use",r={toolName:e.toolName??e.mcpToolName,...e.input??{}};return{id:t,stepId:e.executionId??t,kind:s,timestamp:e.timestamp??0,duration:e.duration,data:r,metadata:{isMcpTool:e.isMcpTool,mcpEnforced:e.mcpEnforced,mcpFallback:e.mcpFallback,blocked:e.blocked,blockReason:e.blockReason}}}),v=[...new Set(f.map(e=>e.stepId))],y=m??{},w=[...c??[]].reverse().find(e=>"string"==typeof e.failureCategory),k=w?.failureCategory;return(0,r.jsxs)("div",{className:"flex flex-col h-full",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 p-4 border-b border-border",children:[(0,r.jsx)("button",{onClick:t??(()=>s.push("/runs")),className:"p-1 rounded hover:bg-accent",title:i("runs.title"),children:(0,r.jsx)(N.A,{className:"h-4 w-4"})}),(0,r.jsx)("h2",{className:"text-lg font-bold",children:i("runDetail.title","Session Detail")}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground font-mono",children:e}),null!=y.totalToolCalls&&(0,r.jsxs)("span",{className:"text-xs text-muted-foreground",children:[String(y.totalToolCalls)," tools \xb7 ",String(y.mcpToolCalls)," MCP"]})]}),(0,r.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[(0,r.jsx)("div",{className:"w-48 border-r border-border overflow-y-auto p-3",children:(0,r.jsx)(o,{steps:v,events:f})}),(0,r.jsx)("div",{className:"flex-1 overflow-y-auto p-3",children:(0,r.jsx)(u,{events:f,onSelect:e=>h(e),selectedId:x?.id})}),(0,r.jsxs)("div",{className:"w-80 border-l border-border overflow-y-auto p-3",children:[k&&(0,r.jsx)("div",{className:"mb-3",children:(0,r.jsx)(j,{failureCategory:k,failureReason:String(w?.error??"Workflow step failed"),suggestedActions:g[k]??g.unknown})}),(0,r.jsx)(p,{event:x})]})]})]})}function y(){let e=(0,n.usePathname)().split("/").filter(Boolean).at(-1)??"";return(0,r.jsx)(b,{runId:decodeURIComponent(e)})}},64318:(e,t,s)=>{"use strict";s.d(t,{cn:()=>a});var r=s(9917),n=s(2809);function a(...e){return(0,n.QP)((0,r.$)(e))}},79748:(e,t,s)=>{"use strict";var r=s(79796);s.o(r,"usePathname")&&s.d(t,{usePathname:function(){return r.usePathname}}),s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},81007:(e,t,s)=>{"use strict";s.d(t,{A:()=>d});var r=s(7620);let n=(...e)=>e.filter((e,t,s)=>!!e&&s.indexOf(e)===t).join(" ");var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,r.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:s=2,absoluteStrokeWidth:l,className:d="",children:o,iconNode:i,...c},u)=>(0,r.createElement)("svg",{ref:u,...a,width:t,height:t,stroke:e,strokeWidth:l?24*Number(s)/Number(t):s,className:n("lucide",d),...c},[...i.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(o)?o:[o]])),d=(e,t)=>{let s=(0,r.forwardRef)(({className:s,...a},d)=>(0,r.createElement)(l,{ref:d,iconNode:t,className:n(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,s),...a}));return s.displayName=`${e}`,s}},89531:(e,t,s)=>{"use strict";s.d(t,{Wu:()=>i,ZB:()=>o,Zp:()=>l,aR:()=>d});var r=s(54568),n=s(7620),a=s(64318);let l=n.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,a.cn)("rounded-lg border border-border bg-card text-card-foreground",e),...t}));l.displayName="Card";let d=n.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,a.cn)("flex flex-col space-y-1.5 p-4",e),...t}));d.displayName="CardHeader";let o=n.forwardRef(({className:e,...t},s)=>(0,r.jsx)("h3",{ref:s,className:(0,a.cn)("text-sm font-semibold leading-none tracking-tight",e),...t}));o.displayName="CardTitle";let i=n.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,a.cn)("p-4 pt-0",e),...t}));i.displayName="CardContent"},91397:(e,t,s)=>{"use strict";s.d(t,{F:()=>l});var r=s(9917);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,a=r.$,l=(e,t)=>s=>{var r;if((null==t?void 0:t.variants)==null)return a(e,null==s?void 0:s.class,null==s?void 0:s.className);let{variants:l,defaultVariants:d}=t,o=Object.keys(l).map(e=>{let t=null==s?void 0:s[e],r=null==d?void 0:d[e];if(null===t)return null;let a=n(t)||n(r);return l[e][a]}),i=s&&Object.entries(s).reduce((e,t)=>{let[s,r]=t;return void 0===r||(e[s]=r),e},{});return a(e,o,null==t||null==(r=t.compoundVariants)?void 0:r.reduce((e,t)=>{let{class:s,className:r,...n}=t;return Object.entries(n).every(e=>{let[t,s]=e;return Array.isArray(s)?s.includes({...d,...i}[t]):({...d,...i})[t]===s})?[...e,s,r]:e},[]),null==s?void 0:s.class,null==s?void 0:s.className)}}},e=>{e.O(0,[820,567,993,914,587,968,358],()=>e(e.s=33096)),_N_E=e.O()}]);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*
|
|
2
|
+
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
|
|
3
|
+
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background:240 10% 3.9%;--foreground:0 0% 98%;--card:240 10% 3.9%;--card-foreground:0 0% 98%;--primary:217 91% 60%;--primary-foreground:0 0% 98%;--secondary:240 3.7% 15.9%;--secondary-foreground:0 0% 98%;--muted:240 3.7% 15.9%;--muted-foreground:240 5% 64.9%;--accent:240 3.7% 15.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:240 3.7% 15.9%;--input:240 3.7% 15.9%;--ring:217 91% 60%;--radius:0.5rem}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.icon-button{display:inline-flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:calc(var(--radius) - 2px);color:hsl(var(--muted-foreground));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.icon-button:hover{background-color:hsl(var(--secondary));color:hsl(var(--foreground))}.icon-button:disabled{pointer-events:none;opacity:.4}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.left-2{left:.5rem}.left-\[50\%\]{left:50%}.top-0{top:0}.top-1{top:.25rem}.top-1\/2,.top-\[50\%\]{top:50%}.z-50{z-index:50}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-60{max-height:15rem}.max-h-96{max-height:24rem}.max-h-\[420px\]{max-height:420px}.min-h-0{min-height:0}.min-h-14{min-height:3.5rem}.min-h-36{min-height:9rem}.min-h-9{min-height:2.25rem}.min-h-\[100px\]{min-height:100px}.w-0\.5{width:.125rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[340px\]{width:340px}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[680px\]{min-width:680px}.min-w-\[760px\]{min-width:760px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-44{max-width:11rem}.max-w-56{max-width:14rem}.max-w-6xl{max-width:72rem}.max-w-\[140px\]{max-width:140px}.max-w-\[200px\]{max-width:200px}.max-w-\[40vw\]{max-width:40vw}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.transform,.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[140px_minmax\(0\2c 1fr\)\]{grid-template-columns:140px minmax(0,1fr)}.grid-cols-\[24px_minmax\(120px\2c 220px\)_1fr\]{grid-template-columns:24px minmax(120px,220px) 1fr}.grid-cols-\[auto_minmax\(0\2c 1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:hsl(var(--border))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-2{border-width:2px}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-500\/40{border-color:rgb(245 158 11/.4)}.border-border{border-color:hsl(var(--border))}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-primary{border-color:hsl(var(--primary))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-yellow-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity,1))}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-500\/10{background-color:rgb(245 158 11/.1)}.bg-background{background-color:hsl(var(--background))}.bg-black\/80{background-color:rgb(0 0 0/.8)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-500\/20{background-color:rgb(59 130 246/.2)}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-foreground{background-color:hsl(var(--foreground))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-500\/20{background-color:rgb(34 197 94/.2)}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-muted\/95{background-color:hsl(var(--muted)/.95)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\/20{background-color:hsl(var(--primary)/.2)}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-500\/20{background-color:rgb(239 68 68/.2)}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/30{background-color:hsl(var(--secondary)/.3)}.bg-secondary\/50{background-color:hsl(var(--secondary)/.5)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-500\/20{background-color:rgb(234 179 8/.2)}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pl-8{padding-left:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-500{--tw-text-opacity:1;color:rgb(6 182 212/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-500{--tw-text-opacity:1;color:rgb(16 185 129/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.text-indigo-500{--tw-text-opacity:1;color:rgb(99 102 241/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground)/.5)}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-pink-500{--tw-text-opacity:1;color:rgb(236 72 153/var(--tw-text-opacity,1))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.accent-emerald-600{accent-color:#059669}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.last\:border-0:last-child{border-width:0}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted)/.3)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}@media (min-width:640px){.sm\:block{display:block}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:text-left{text-align:left}}@media (min-width:768px){.md\:mb-2{margin-bottom:.5rem}.md\:mt-auto{margin-top:auto}.md\:inline{display:inline}.md\:h-auto{height:auto}.md\:w-\[220px\]{width:220px}.md\:min-w-0{min-width:0}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:overflow-y-auto{overflow-y:auto}.md\:border-b-0{border-bottom-width:0}.md\:border-l-0{border-left-width:0}.md\:border-r{border-right-width:1px}.md\:border-t{border-top-width:1px}.md\:p-3{padding:.75rem}.md\:p-6{padding:1.5rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:pl-0{padding-left:0}.md\:pt-3{padding-top:.75rem}}@media (min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1280px){.xl\:block{display:block}}@media (prefers-color-scheme:dark){.dark\:bg-green-950{--tw-bg-opacity:1;background-color:rgb(5 46 22/var(--tw-bg-opacity,1))}.dark\:bg-red-950{--tw-bg-opacity:1;background-color:rgb(69 10 10/var(--tw-bg-opacity,1))}.dark\:bg-yellow-950{--tw-bg-opacity:1;background-color:rgb(66 32 6/var(--tw-bg-opacity,1))}.dark\:text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}}
|