@devflow-tools/devflow 0.18.3 → 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.
Files changed (128) hide show
  1. package/README.md +7 -3
  2. package/dist/cli.js +76 -80
  3. package/dist/dashboard/404.html +1 -1
  4. package/dist/dashboard/__next.__PAGE__.txt +4 -4
  5. package/dist/dashboard/__next._full.txt +4 -4
  6. package/dist/dashboard/__next._tree.txt +2 -2
  7. package/dist/dashboard/_next/static/chunks/411-b1ce94a99623b281.js +1 -0
  8. package/dist/dashboard/_next/static/chunks/914-1fc62fa12bec05cd.js +1 -0
  9. package/dist/dashboard/_next/static/chunks/app/executions/page-3dc6f25a8270833f.js +1 -0
  10. package/dist/dashboard/_next/static/chunks/app/{layout-a28c30513212e363.js → layout-6ec6d19a0a5b9e21.js} +1 -1
  11. package/dist/dashboard/_next/static/chunks/app/page-55a8e887fd98ddd6.js +1 -0
  12. package/dist/dashboard/_next/static/chunks/app/runs/[id]/page-2a50cf58f99e25d1.js +1 -0
  13. package/dist/dashboard/_next/static/css/d6255f5e6b476fca.css +3 -0
  14. package/dist/dashboard/_not-found/__next._full.txt +3 -3
  15. package/dist/dashboard/_not-found/__next._not-found.__PAGE__.txt +3 -3
  16. package/dist/dashboard/_not-found/__next._tree.txt +2 -2
  17. package/dist/dashboard/_not-found.html +1 -1
  18. package/dist/dashboard/_not-found.txt +3 -3
  19. package/dist/dashboard/accuracy/__next._full.txt +4 -4
  20. package/dist/dashboard/accuracy/__next._tree.txt +2 -2
  21. package/dist/dashboard/accuracy/__next.accuracy.__PAGE__.txt +4 -4
  22. package/dist/dashboard/accuracy.html +1 -1
  23. package/dist/dashboard/accuracy.txt +4 -4
  24. package/dist/dashboard/benchmark/__next._full.txt +4 -4
  25. package/dist/dashboard/benchmark/__next._tree.txt +2 -2
  26. package/dist/dashboard/benchmark/__next.benchmark.__PAGE__.txt +4 -4
  27. package/dist/dashboard/benchmark.html +1 -1
  28. package/dist/dashboard/benchmark.txt +4 -4
  29. package/dist/dashboard/context/__next._full.txt +4 -4
  30. package/dist/dashboard/context/__next._tree.txt +2 -2
  31. package/dist/dashboard/context/__next.context.__PAGE__.txt +4 -4
  32. package/dist/dashboard/context.html +1 -1
  33. package/dist/dashboard/context.txt +4 -4
  34. package/dist/dashboard/doctor/__next._full.txt +4 -4
  35. package/dist/dashboard/doctor/__next._tree.txt +2 -2
  36. package/dist/dashboard/doctor/__next.doctor.__PAGE__.txt +4 -4
  37. package/dist/dashboard/doctor.html +1 -1
  38. package/dist/dashboard/doctor.txt +4 -4
  39. package/dist/dashboard/executions/__next._full.txt +4 -4
  40. package/dist/dashboard/executions/__next._tree.txt +2 -2
  41. package/dist/dashboard/executions/__next.executions.__PAGE__.txt +4 -4
  42. package/dist/dashboard/executions.html +1 -1
  43. package/dist/dashboard/executions.txt +4 -4
  44. package/dist/dashboard/graph/__next._full.txt +4 -4
  45. package/dist/dashboard/graph/__next._tree.txt +2 -2
  46. package/dist/dashboard/graph/__next.graph.__PAGE__.txt +4 -4
  47. package/dist/dashboard/graph.html +1 -1
  48. package/dist/dashboard/graph.txt +4 -4
  49. package/dist/dashboard/index.html +1 -1
  50. package/dist/dashboard/index.txt +4 -4
  51. package/dist/dashboard/knowledge/__next._full.txt +4 -4
  52. package/dist/dashboard/knowledge/__next._tree.txt +2 -2
  53. package/dist/dashboard/knowledge/__next.knowledge.__PAGE__.txt +4 -4
  54. package/dist/dashboard/knowledge.html +1 -1
  55. package/dist/dashboard/knowledge.txt +4 -4
  56. package/dist/dashboard/locales/en.json +13 -0
  57. package/dist/dashboard/locales/zh.json +13 -0
  58. package/dist/dashboard/memory/__next._full.txt +4 -4
  59. package/dist/dashboard/memory/__next._tree.txt +2 -2
  60. package/dist/dashboard/memory/__next.memory.__PAGE__.txt +4 -4
  61. package/dist/dashboard/memory.html +1 -1
  62. package/dist/dashboard/memory.txt +4 -4
  63. package/dist/dashboard/replay/__next._full.txt +4 -4
  64. package/dist/dashboard/replay/__next._tree.txt +2 -2
  65. package/dist/dashboard/replay/__next.replay.__PAGE__.txt +4 -4
  66. package/dist/dashboard/replay.html +1 -1
  67. package/dist/dashboard/replay.txt +4 -4
  68. package/dist/dashboard/runs/_/__next._full.txt +4 -4
  69. package/dist/dashboard/runs/_/__next._tree.txt +2 -2
  70. package/dist/dashboard/runs/_/__next.runs.$d$id.__PAGE__.txt +4 -4
  71. package/dist/dashboard/runs/_.html +1 -1
  72. package/dist/dashboard/runs/_.txt +4 -4
  73. package/dist/dashboard/runs/__next._full.txt +4 -4
  74. package/dist/dashboard/runs/__next._tree.txt +2 -2
  75. package/dist/dashboard/runs/__next.runs.__PAGE__.txt +4 -4
  76. package/dist/dashboard/runs.html +1 -1
  77. package/dist/dashboard/runs.txt +4 -4
  78. package/dist/dashboard/settings/__next._full.txt +4 -4
  79. package/dist/dashboard/settings/__next._tree.txt +2 -2
  80. package/dist/dashboard/settings/__next.settings.__PAGE__.txt +4 -4
  81. package/dist/dashboard/settings.html +1 -1
  82. package/dist/dashboard/settings.txt +4 -4
  83. package/dist/dashboard/timeline/__next._full.txt +4 -4
  84. package/dist/dashboard/timeline/__next._tree.txt +2 -2
  85. package/dist/dashboard/timeline/__next.timeline.__PAGE__.txt +4 -4
  86. package/dist/dashboard/timeline.html +1 -1
  87. package/dist/dashboard/timeline.txt +4 -4
  88. package/dist/dashboard/tool-metrics/__next._full.txt +4 -4
  89. package/dist/dashboard/tool-metrics/__next._tree.txt +2 -2
  90. package/dist/dashboard/tool-metrics/__next.tool-metrics.__PAGE__.txt +4 -4
  91. package/dist/dashboard/tool-metrics.html +1 -1
  92. package/dist/dashboard/tool-metrics.txt +4 -4
  93. package/dist/dashboard/workflows/__next._full.txt +4 -4
  94. package/dist/dashboard/workflows/__next._tree.txt +2 -2
  95. package/dist/dashboard/workflows/__next.workflows.__PAGE__.txt +4 -4
  96. package/dist/dashboard/workflows.html +1 -1
  97. package/dist/dashboard/workflows.txt +4 -4
  98. package/dist/hooks/hook-daemon.js +28 -27
  99. package/dist/hooks/post-tool-use-failure.js +2 -2
  100. package/dist/hooks/post-tool-use.js +6 -6
  101. package/dist/hooks/pre-compact.js +3 -3
  102. package/dist/hooks/pre-tool-use.js +4 -4
  103. package/dist/hooks/server-bootstrap.js +1 -109
  104. package/dist/hooks/session-end.js +5 -5
  105. package/dist/hooks/stop.js +9 -9
  106. package/dist/hooks/user-prompt-submit.js +8 -8
  107. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  108. package/dist/plugin/dist/command-registry.json +5 -5
  109. package/dist/plugin/dist/hooks/hook-daemon.js +28 -27
  110. package/dist/plugin/dist/hooks/post-tool-use-failure.js +2 -2
  111. package/dist/plugin/dist/hooks/post-tool-use.js +6 -6
  112. package/dist/plugin/dist/hooks/pre-compact.js +3 -3
  113. package/dist/plugin/dist/hooks/pre-tool-use.js +4 -4
  114. package/dist/plugin/dist/hooks/server-bootstrap.js +1 -109
  115. package/dist/plugin/dist/hooks/session-end.js +5 -5
  116. package/dist/plugin/dist/hooks/stop.js +9 -9
  117. package/dist/plugin/dist/hooks/user-prompt-submit.js +8 -8
  118. package/dist/plugin/package.json +13 -13
  119. package/dist/plugin/skills/start/SKILL.md +20 -34
  120. package/package.json +17 -15
  121. package/plugin-registry.json +29 -29
  122. package/dist/dashboard/_next/static/chunks/914-7e538089692b7d1b.js +0 -1
  123. package/dist/dashboard/_next/static/chunks/app/executions/page-52f9a045f91548cc.js +0 -1
  124. package/dist/dashboard/_next/static/chunks/app/page-1daa0024f1e5dd18.js +0 -1
  125. package/dist/dashboard/_next/static/chunks/app/runs/[id]/page-7a92db57d7fb2265.js +0 -1
  126. package/dist/dashboard/_next/static/css/6912a202a7d0c151.css +0 -3
  127. /package/dist/dashboard/_next/static/{JAFPWp0Do4yhq-QzxqyH3 → YHZJ8xoXKuVNrAyNxTN6a}/_buildManifest.js +0 -0
  128. /package/dist/dashboard/_next/static/{JAFPWp0Do4yhq-QzxqyH3 → YHZJ8xoXKuVNrAyNxTN6a}/_ssgManifest.js +0 -0
@@ -1,172 +1,172 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "lastUpdated": "2026-08-26T02:58:18.590Z",
3
+ "lastUpdated": "2026-08-26T09:40:04.811Z",
4
4
  "plugins": [
5
5
  {
6
6
  "name": "@devflow-tools/plugin-animation",
7
- "version": "0.18.3",
7
+ "version": "0.18.4",
8
8
  "description": "Animation analysis and generation tools for DevFlow.",
9
9
  "tags": [],
10
10
  "compatibleStacks": [
11
11
  "animation"
12
12
  ],
13
- "size": "76200 B",
13
+ "size": "76373 B",
14
14
  "author": "DevFlow Team",
15
15
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
16
16
  },
17
17
  {
18
18
  "name": "@devflow-tools/plugin-css",
19
- "version": "0.18.3",
19
+ "version": "0.18.4",
20
20
  "description": "CSS analysis and selector audit tools for DevFlow.",
21
21
  "tags": [],
22
22
  "compatibleStacks": [
23
23
  "css"
24
24
  ],
25
- "size": "63459 B",
25
+ "size": "63626 B",
26
26
  "author": "DevFlow Team",
27
27
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
28
28
  },
29
29
  {
30
30
  "name": "@devflow-tools/plugin-docker",
31
- "version": "0.18.3",
31
+ "version": "0.18.4",
32
32
  "description": "Docker configuration and diagnostic tools for DevFlow.",
33
33
  "tags": [],
34
34
  "compatibleStacks": [
35
35
  "docker"
36
36
  ],
37
- "size": "92145 B",
37
+ "size": "92315 B",
38
38
  "author": "DevFlow Team",
39
39
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
40
40
  },
41
41
  {
42
42
  "name": "@devflow-tools/plugin-electron",
43
- "version": "0.18.3",
43
+ "version": "0.18.4",
44
44
  "description": "Electron application analysis and implementation tools for DevFlow.",
45
45
  "tags": [],
46
46
  "compatibleStacks": [
47
47
  "electron"
48
48
  ],
49
- "size": "107923 B",
49
+ "size": "108095 B",
50
50
  "author": "DevFlow Team",
51
51
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
52
52
  },
53
53
  {
54
54
  "name": "@devflow-tools/plugin-git",
55
- "version": "0.18.3",
55
+ "version": "0.18.4",
56
56
  "description": "Git repository analysis and workflow tools for DevFlow.",
57
57
  "tags": [],
58
58
  "compatibleStacks": [
59
59
  "git"
60
60
  ],
61
- "size": "73780 B",
61
+ "size": "73947 B",
62
62
  "author": "DevFlow Team",
63
63
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
64
64
  },
65
65
  {
66
66
  "name": "@devflow-tools/plugin-graphql",
67
- "version": "0.18.3",
67
+ "version": "0.18.4",
68
68
  "description": "GraphQL schema and operation tools for DevFlow.",
69
69
  "tags": [],
70
70
  "compatibleStacks": [
71
71
  "graphql"
72
72
  ],
73
- "size": "75875 B",
73
+ "size": "76046 B",
74
74
  "author": "DevFlow Team",
75
75
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
76
76
  },
77
77
  {
78
78
  "name": "@devflow-tools/plugin-nest",
79
- "version": "0.18.3",
79
+ "version": "0.18.4",
80
80
  "description": "NestJS analysis and implementation tools for DevFlow.",
81
81
  "tags": [],
82
82
  "compatibleStacks": [
83
83
  "nest"
84
84
  ],
85
- "size": "112608 B",
85
+ "size": "112776 B",
86
86
  "author": "DevFlow Team",
87
87
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
88
88
  },
89
89
  {
90
90
  "name": "@devflow-tools/plugin-nextjs",
91
- "version": "0.18.3",
91
+ "version": "0.18.4",
92
92
  "description": "Next.js analysis and implementation tools for DevFlow.",
93
93
  "tags": [],
94
94
  "compatibleStacks": [
95
95
  "nextjs"
96
96
  ],
97
- "size": "74244 B",
97
+ "size": "74414 B",
98
98
  "author": "DevFlow Team",
99
99
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
100
100
  },
101
101
  {
102
102
  "name": "@devflow-tools/plugin-performance",
103
- "version": "0.18.3",
103
+ "version": "0.18.4",
104
104
  "description": "Web performance audit and optimization tools for DevFlow.",
105
105
  "tags": [],
106
106
  "compatibleStacks": [
107
107
  "performance"
108
108
  ],
109
- "size": "124530 B",
109
+ "size": "124705 B",
110
110
  "author": "DevFlow Team",
111
111
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
112
112
  },
113
113
  {
114
114
  "name": "@devflow-tools/plugin-react",
115
- "version": "0.18.3",
115
+ "version": "0.18.4",
116
116
  "description": "React analysis, audit, and component tools for DevFlow.",
117
117
  "tags": [],
118
118
  "compatibleStacks": [
119
119
  "react"
120
120
  ],
121
- "size": "263424 B",
121
+ "size": "263593 B",
122
122
  "author": "DevFlow Team",
123
123
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
124
124
  },
125
125
  {
126
126
  "name": "@devflow-tools/plugin-tailwind",
127
- "version": "0.18.3",
127
+ "version": "0.18.4",
128
128
  "description": "Tailwind CSS analysis and component tools for DevFlow.",
129
129
  "tags": [],
130
130
  "compatibleStacks": [
131
131
  "tailwind"
132
132
  ],
133
- "size": "80611 B",
133
+ "size": "80783 B",
134
134
  "author": "DevFlow Team",
135
135
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
136
136
  },
137
137
  {
138
138
  "name": "@devflow-tools/plugin-taro",
139
- "version": "0.18.3",
139
+ "version": "0.18.4",
140
140
  "description": "Taro application analysis and implementation tools for DevFlow.",
141
141
  "tags": [],
142
142
  "compatibleStacks": [
143
143
  "taro"
144
144
  ],
145
- "size": "84293 B",
145
+ "size": "84461 B",
146
146
  "author": "DevFlow Team",
147
147
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
148
148
  },
149
149
  {
150
150
  "name": "@devflow-tools/plugin-ui-layout",
151
- "version": "0.18.3",
151
+ "version": "0.18.4",
152
152
  "description": "UI layout analysis and implementation tools for DevFlow.",
153
153
  "tags": [],
154
154
  "compatibleStacks": [
155
155
  "ui-layout"
156
156
  ],
157
- "size": "61578 B",
157
+ "size": "61751 B",
158
158
  "author": "DevFlow Team",
159
159
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
160
160
  },
161
161
  {
162
162
  "name": "@devflow-tools/plugin-vue",
163
- "version": "0.18.3",
163
+ "version": "0.18.4",
164
164
  "description": "Vue analysis, audit, and component tools for DevFlow.",
165
165
  "tags": [],
166
166
  "compatibleStacks": [
167
167
  "vue"
168
168
  ],
169
- "size": "92431 B",
169
+ "size": "92598 B",
170
170
  "author": "DevFlow Team",
171
171
  "homepage": "https://github.com/shilongfeicool/dev-flow#readme"
172
172
  }
@@ -1 +0,0 @@
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={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:()=>S,B7:()=>m,C9:()=>Q,CU:()=>z,Dr:()=>K,HG:()=>_,I8:()=>G,Kg:()=>$,Ko:()=>M,O:()=>L,Ol:()=>I,Oq:()=>v,PA:()=>h,PS:()=>l,Tr:()=>H,UL:()=>R,Vz:()=>w,WJ:()=>U,YK:()=>i,YZ:()=>J,aW:()=>a,b_:()=>p,d6:()=>V,eG:()=>f,gM:()=>W,he:()=>D,jx:()=>d,lb:()=>T,ll:()=>y,mP:()=>F,nS:()=>c,pf:()=>Y,pz:()=>Z,qV:()=>q,qw:()=>j,tL:()=>X,te:()=>P,uU:()=>g,w4:()=>C,wV:()=>k,xT:()=>A,y4:()=>E,yy:()=>N,z$:()=>O,zb:()=>b,zg:()=>B,zz:()=>x});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 c(){return(0,r.I)({queryKey:["active-project"],queryFn:()=>s.F.getActiveProject()})}function a(e){return(0,r.I)({queryKey:["onboarding-pack",e],queryFn:()=>s.F.getOnboardingPackByRoot(e),enabled:!!e})}function y(){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 l(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.connectProject(e),onSuccess:()=>e.invalidateQueries({queryKey:["active-project"]})})}function m(){let e=(0,o.jE)();return(0,u.n)({mutationFn:()=>s.F.disconnectProject(),onSuccess:()=>e.invalidateQueries({queryKey:["active-project"]})})}function d(){return(0,r.I)({queryKey:["context-status"],queryFn:()=>s.F.getContextStatus()})}function g(){return(0,r.I)({queryKey:["graph"],queryFn:()=>s.F.getGraph()})}function f(){return(0,r.I)({queryKey:["layered-graph"],queryFn:()=>s.F.getLayeredGraph()})}function F(){return(0,r.I)({queryKey:["workflows"],queryFn:()=>s.F.listWorkflows()})}function p(e=20,t=0){return(0,r.I)({queryKey:["workflow-runs",e,t],queryFn:()=>s.F.listRuns(e,t)})}function h(){return(0,r.I)({queryKey:["memory"],queryFn:()=>s.F.getMemory()})}function S(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 q(){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 v(){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 $(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.addMemory(e),onSuccess:()=>e.invalidateQueries({queryKey:["memory"]})})}function b(e=20,t=0){return(0,r.I)({queryKey:["telemetry-runs",e,t],queryFn:()=>s.F.listTelemetryRuns(e,t)})}function P(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 K(e){return(0,r.I)({queryKey:["session-events",e],queryFn:()=>s.F.getSessionEvents(e),enabled:!!e})}function j(e,t){return(0,r.I)({queryKey:["plugins",e,t],queryFn:()=>s.F.listPlugins(e,t)})}function w(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.buildContext(e),onSuccess:t=>e.setQueryData(["context-result"],t)})}function E(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.buildTaskContext(e),onSuccess:t=>e.setQueryData(["task-context-result"],t)})}function I(){return(0,r.I)({queryKey:["context-result"],queryFn:()=>Promise.reject(Error("No queryFn — this query is never enabled")),enabled:!1})}function O(){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 R(){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 C(){return(0,r.I)({queryKey:["knowledge-sources"],queryFn:()=>s.F.getKnowledgeSources()})}function x(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.syncKnowledge(e),onSuccess:()=>e.invalidateQueries({queryKey:["knowledge-sources"]})})}function N(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 U(e=7){return(0,r.I)({queryKey:["roi-summary",e],queryFn:()=>s.F.getRoiSummary(e)})}function J(e="default"){return(0,r.I)({queryKey:["benchmark-report","latest",e],queryFn:()=>s.F.getLatestBenchmarkReport(e)})}function L(e){return(0,r.I)({queryKey:["run-events",e],queryFn:()=>s.F.getRunEvents(e),enabled:!!e,refetchInterval:2e3})}function A(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.cleanupTelemetry(e),onSuccess:()=>e.invalidateQueries({queryKey:["telemetry-stats"]})})}function G(){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 M(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.deleteMemoryEntry(e),onSuccess:()=>e.invalidateQueries({queryKey:["memory"]})})}function _(e){return(0,r.I)({queryKey:["plugin-effectiveness",e],queryFn:()=>s.F.getPluginEffectiveness(e)})}function D(e=7){return(0,r.I)({queryKey:["tool-metrics-summary",e],queryFn:()=>s.F.getToolMetricsSummary(e)})}function z(e){return(0,r.I)({queryKey:["accuracy-stats",e],queryFn:()=>s.F.getAccuracyStats(e)})}function B(e){return(0,r.I)({queryKey:["accuracy-queries",e],queryFn:()=>s.F.getAccuracyQueries(e)})}function W(){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 V(){return(0,r.I)({queryKey:["auto-check"],queryFn:()=>s.F.getAutoCheck()})}function Y(){return(0,r.I)({queryKey:["governance-rules"],queryFn:()=>s.F.getGovernanceRules()})}function X(){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 H(){let e=(0,o.jE)();return(0,u.n)({mutationFn:e=>s.F.deleteGovernanceRule(e),onSuccess:()=>e.invalidateQueries({queryKey:["governance-rules"]})})}function Z(){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}:{}}}}]);
@@ -1 +0,0 @@
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={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:()=>g});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 g(){let{t:e}=(0,a.Bd)(),[t,r]=(0,l.useState)(null),{data:g,isLoading:y}=(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=g??[];return y?(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 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{638:(e,t,s)=>{"use strict";s.d(t,{C:()=>i});var r=s(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,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}let i=(0,r.vt)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:n(a),activeProjectRoot:n(l),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{c(a,t),e({projectRoot:t})},setActiveProjectRoot:t=>{c(l,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},3140:(e,t,s)=>{"use strict";e.exports=s(48558)},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"}]])},15698:(e,t,s)=>{"use strict";s.d(t,{ProjectOverview:()=>N});var r=s(54568),a=s(7620),l=s(86914),n=s(638),c=s(89531),i=s(64318);function d({className:e,...t}){return(0,r.jsx)("div",{className:(0,i.cn)("animate-pulse rounded-md bg-muted",e),...t})}var o=s(81007);let u=(0,o.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"}]]);var x=s(60527);let h=(0,o.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"}]]);var m=s(36645);let p=(0,o.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"}]]),v=(0,o.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"}]]),j=(0,o.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"}]]);var f=s(56242);let g=(0,o.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"}]]),y=(0,o.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"}]]);var b=s(8490),w=s(64567);function N(){let{t:e}=(0,w.Bd)(),{data:t}=(0,l.nS)(),s=(0,n.C)(e=>e.projectRoot),i=(0,n.C)(e=>e.setProjectRoot),o=(0,n.C)(e=>e.activeProjectRoot),N=(0,n.C)(e=>e.setActiveProjectRoot),[P,R]=(0,a.useState)(""),[A,C]=(0,a.useState)(""),[S,E]=(0,a.useState)(!1),M=(0,l.PS)(),Z=(0,l.B7)(),W=(0,l.ll)();(0,a.useEffect)(()=>{t?.rootPath&&t.rootPath!==o&&(i(t.rootPath),N(t.rootPath))},[t,i,N,o]);let[T,B]=(0,a.useState)(!1);(0,a.useEffect)(()=>{T||t?.rootPath||!o||M.isPending||(B(!0),M.mutate(o))},[t?.rootPath,o,M.isPending,T]);let{data:I}=(0,l.YK)(),{data:L}=(0,l.jx)(),{data:D}=(0,l.mP)(),{data:V}=(0,l.te)(10,0),{data:q,isLoading:z}=(0,l.aW)(o),F=I?.find(e=>e.rootPath===o),O=()=>{if(F?.stack&&F.stack.length>0)return F.stack;if(q?.stack){let e=[...q.stack.languages,...q.stack.frameworks,...q.stack.buildTools,...q.stack.testTools];if(e.length>0)return e}return[]},$=()=>{P.trim()&&M.mutate(P.trim(),{onSuccess:e=>{i(e.rootPath),N(e.rootPath)}})},H=()=>{A.trim()&&M.mutate(A.trim(),{onSuccess:e=>{i(e.rootPath),N(e.rootPath),E(!1),C("")}})};return s?(0,r.jsxs)("div",{className:"p-6 space-y-6 overflow-y-auto h-full",children:[(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:s}),(0,r.jsx)("button",{onClick:()=>o&&W.mutate(o),disabled:!o||W.isPending,className:"icon-button",title:e("onboarding.refresh"),"aria-label":e("onboarding.refresh"),children:(0,r.jsx)(x.A,{className:`h-4 w-4 ${W.isPending?"animate-spin":""}`})}),(0,r.jsx)("button",{onClick:()=>E(!S),className:"icon-button",title:e("overview.switchProject"),"aria-label":e("overview.switchProject"),children:(0,r.jsx)(h,{className:"h-4 w-4"})}),(0,r.jsx)("button",{onClick:()=>{Z.mutate(void 0,{onSuccess:()=>{i(null),N(null)}})},className:"icon-button",title:e("overview.disconnectProject"),"aria-label":e("overview.disconnectProject"),children:(0,r.jsx)(m.A,{className:"h-4 w-4"})})]})]}),S&&(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:A,onChange:e=>C(e.target.value),onKeyDown:e=>{"Enter"===e.key&&H(),"Escape"===e.key&&(E(!1),C(""))},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:M.isPending||!A.trim(),className:"px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",children:M.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)(k,{icon:(0,r.jsx)(p,{className:"h-5 w-5"}),label:e("overview.project"),value:F?.name?F.name:q?.projectName?q.projectName:o?o.split("/").pop()??"Unknown Project":"Unknown Project"}),(0,r.jsx)(k,{icon:(0,r.jsx)(v,{className:"h-5 w-5"}),label:e("overview.filesIndexed"),value:L?String(L.totalFiles):"--"}),(0,r.jsx)(k,{icon:(0,r.jsx)(j,{className:"h-5 w-5"}),label:e("overview.workflows"),value:D?String(D.length):"--"}),(0,r.jsx)(k,{icon:(0,r.jsx)(f.A,{className:"h-5 w-5"}),label:e("overview.agentRuns"),value:V?String(V.length):"--"})]}),O().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:O().map(e=>(0,r.jsx)("span",{className:"px-2 py-1 rounded-md bg-secondary text-secondary-foreground text-xs",children:e},e))})})]}),z?(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,{className:"h-4 w-4"}),e("onboarding.title")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)(d,{className:"h-32 w-full"})})]}):q?(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,{className:"h-4 w-4"}),e("overview.architectureLayers")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:q.architectureLayers.map(t=>(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("span",{className:"text-sm font-medium",children:t.name}),(0,r.jsx)("span",{className:"text-xs text-muted-foreground bg-secondary px-2 py-0.5 rounded",children:e("overview.filesCount",{count:t.files})})]},t.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)(y,{className:"h-4 w-4"}),e("overview.keyModules")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:q.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)(v,{className:"h-4 w-4"}),e("overview.keyFiles")]})}),(0,r.jsx)(c.Wu,{children:(0,r.jsx)("div",{className:"space-y-2",children:q.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)(b.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:q.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:q.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:q.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:V&&V.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:V.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.jsx)("div",{className:"p-6 flex items-center justify-center h-full",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)(u,{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:P,onChange:e=>R(e.target.value),onKeyDown:e=>"Enter"===e.key&&$(),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:$,disabled:M.isPending||!P.trim(),className:"w-full px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50",children:M.isPending?e("overview.connecting"):e("overview.connect")}),M.isError&&(0,r.jsx)("p",{className:"text-sm text-red-500",children:e("overview.connectError")})]})]})})}function k({icon:e,label:t,value:s}){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:t}),(0,r.jsx)("div",{className:"font-bold text-lg",children:s})]})]})})}},19851:(e,t,s)=>{"use strict";s.d(t,{vt:()=>o});var r=s(27650),a=s(7620),l=s(3140);let{useDebugValue:n}=a,{useSyncExternalStoreWithSelector:c}=l,i=!1,d=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,s=(e,s)=>(function(e,t=e=>e,s){s&&!i&&(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"),i=!0);let r=c(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,s);return n(r),r})(t,e,s);return Object.assign(s,t),s},o=e=>e?d(e):d},27650:(e,t,s)=>{"use strict";s.d(t,{y:()=>a});let r=e=>{let t,s=new Set,r=(e,r)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=r?r:"object"!=typeof a||null===a)?a:Object.assign({},t,a),s.forEach(s=>s(t,e))}},a=()=>t,l={setState:r,getState:a,getInitialState:()=>n,subscribe:e=>(s.add(e),()=>s.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."),s.clear()}},n=t=e(r,a,l);return l},a=e=>e?r(e):r},36645:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(81007).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},48558:(e,t,s)=>{"use strict";var r=s(7620),a=s(16574),l="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=a.useSyncExternalStore,c=r.useRef,i=r.useEffect,d=r.useMemo,o=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,s,r,a){var u=c(null);if(null===u.current){var x={hasValue:!1,value:null};u.current=x}else x=u.current;var h=n(e,(u=d(function(){function e(e){if(!i){if(i=!0,n=e,e=r(e),void 0!==a&&x.hasValue){var t=x.value;if(a(t,e))return c=t}return c=e}if(t=c,l(n,e))return t;var s=r(e);return void 0!==a&&a(t,s)?(n=e,t):(n=e,c=s)}var n,c,i=!1,d=void 0===s?null:s;return[function(){return e(t())},null===d?void 0:function(){return e(d())}]},[t,s,r,a]))[0],u[1]);return i(function(){x.hasValue=!0,x.value=h},[h]),o(h),h}},56242:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(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"}]])},60527:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(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"}]])},64318:(e,t,s)=>{"use strict";s.d(t,{cn:()=>l});var r=s(9917),a=s(2809);function l(...e){return(0,a.QP)((0,r.$)(e))}},77231:(e,t,s)=>{Promise.resolve().then(s.bind(s,15698))},81007:(e,t,s)=>{"use strict";s.d(t,{A:()=>c});var r=s(7620);let a=(...e)=>e.filter((e,t,s)=>!!e&&s.indexOf(e)===t).join(" ");var l={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 n=(0,r.forwardRef)(({color:e="currentColor",size:t=24,strokeWidth:s=2,absoluteStrokeWidth:n,className:c="",children:i,iconNode:d,...o},u)=>(0,r.createElement)("svg",{ref:u,...l,width:t,height:t,stroke:e,strokeWidth:n?24*Number(s)/Number(t):s,className:a("lucide",c),...o},[...d.map(([e,t])=>(0,r.createElement)(e,t)),...Array.isArray(i)?i:[i]])),c=(e,t)=>{let s=(0,r.forwardRef)(({className:s,...l},c)=>(0,r.createElement)(n,{ref:c,iconNode:t,className:a(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,s),...l}));return s.displayName=`${e}`,s}},89531:(e,t,s)=>{"use strict";s.d(t,{Wu:()=>d,ZB:()=>i,Zp:()=>n,aR:()=>c});var r=s(54568),a=s(7620),l=s(64318);let n=a.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,l.cn)("rounded-lg border border-border bg-card text-card-foreground",e),...t}));n.displayName="Card";let c=a.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,l.cn)("flex flex-col space-y-1.5 p-4",e),...t}));c.displayName="CardHeader";let i=a.forwardRef(({className:e,...t},s)=>(0,r.jsx)("h3",{ref:s,className:(0,l.cn)("text-sm font-semibold leading-none tracking-tight",e),...t}));i.displayName="CardTitle";let d=a.forwardRef(({className:e,...t},s)=>(0,r.jsx)("div",{ref:s,className:(0,l.cn)("p-4 pt-0",e),...t}));d.displayName="CardContent"}},e=>{e.O(0,[820,567,993,914,587,968,358],()=>e(e.s=77231)),_N_E=e.O()}]);
@@ -1 +0,0 @@
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"}]])},33096:(e,t,s)=>{Promise.resolve().then(s.bind(s,58737))},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"}]])},58737:(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);let v=(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"}]]),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,{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()}]);
@@ -1,3 +0,0 @@
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}.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-\[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\.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-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-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-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}}