@softtechai/quickmcp 1.0.16 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/dist/auth/auth-utils.d.ts +130 -0
  2. package/dist/auth/auth-utils.d.ts.map +1 -0
  3. package/dist/auth/auth-utils.js +600 -0
  4. package/dist/auth/auth-utils.js.map +1 -0
  5. package/dist/auth/jwks-provider.d.ts +9 -0
  6. package/dist/auth/jwks-provider.d.ts.map +1 -0
  7. package/dist/auth/jwks-provider.js +56 -0
  8. package/dist/auth/jwks-provider.js.map +1 -0
  9. package/dist/auth/token-utils.d.ts +40 -0
  10. package/dist/auth/token-utils.d.ts.map +1 -0
  11. package/dist/auth/token-utils.js +162 -0
  12. package/dist/auth/token-utils.js.map +1 -0
  13. package/dist/client/MCPClient.js +5 -4
  14. package/dist/client/MCPClient.js.map +1 -1
  15. package/dist/config/auth-config.d.ts +16 -0
  16. package/dist/config/auth-config.d.ts.map +1 -0
  17. package/dist/config/auth-config.js +107 -0
  18. package/dist/config/auth-config.js.map +1 -0
  19. package/dist/constant/constant.d.ts +20 -0
  20. package/dist/constant/constant.d.ts.map +1 -0
  21. package/dist/constant/constant.js +24 -0
  22. package/dist/constant/constant.js.map +1 -0
  23. package/dist/database/async-datastore.d.ts +6 -0
  24. package/dist/database/async-datastore.d.ts.map +1 -0
  25. package/dist/database/async-datastore.js +15 -0
  26. package/dist/database/async-datastore.js.map +1 -0
  27. package/dist/database/database-utils.d.ts +6 -0
  28. package/dist/database/database-utils.d.ts.map +1 -0
  29. package/dist/database/database-utils.js +29 -0
  30. package/dist/database/database-utils.js.map +1 -0
  31. package/dist/database/datastore.d.ts +164 -0
  32. package/dist/database/datastore.d.ts.map +1 -0
  33. package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
  34. package/dist/database/datastore.js.map +1 -0
  35. package/dist/database/factory.d.ts +4 -0
  36. package/dist/database/factory.d.ts.map +1 -0
  37. package/dist/database/factory.js +32 -0
  38. package/dist/database/factory.js.map +1 -0
  39. package/dist/database/jdbc-manager.d.ts +49 -0
  40. package/dist/database/jdbc-manager.d.ts.map +1 -0
  41. package/dist/database/jdbc-manager.js +50 -0
  42. package/dist/database/jdbc-manager.js.map +1 -0
  43. package/dist/database/sqlite-manager.d.ts +46 -44
  44. package/dist/database/sqlite-manager.d.ts.map +1 -1
  45. package/dist/database/sqlite-manager.js +492 -42
  46. package/dist/database/sqlite-manager.js.map +1 -1
  47. package/dist/database/supabase-manager.d.ts +58 -0
  48. package/dist/database/supabase-manager.d.ts.map +1 -0
  49. package/dist/database/supabase-manager.js +432 -0
  50. package/dist/database/supabase-manager.js.map +1 -0
  51. package/dist/generators/MCPServerGenerator.d.ts +103 -20
  52. package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
  53. package/dist/generators/MCPServerGenerator.js +6930 -128
  54. package/dist/generators/MCPServerGenerator.js.map +1 -1
  55. package/dist/index.d.ts +0 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +8 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/integrated-mcp-server-new.d.ts +14 -2
  60. package/dist/integrated-mcp-server-new.d.ts.map +1 -1
  61. package/dist/integrated-mcp-server-new.js +270 -180
  62. package/dist/integrated-mcp-server-new.js.map +1 -1
  63. package/dist/mcp-core/McpCoreService.d.ts +63 -0
  64. package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
  65. package/dist/mcp-core/McpCoreService.js +492 -0
  66. package/dist/mcp-core/McpCoreService.js.map +1 -0
  67. package/dist/parsers/CsvParser.d.ts +1 -1
  68. package/dist/parsers/CsvParser.d.ts.map +1 -1
  69. package/dist/parsers/CsvParser.js +3 -2
  70. package/dist/parsers/CsvParser.js.map +1 -1
  71. package/dist/parsers/DatabaseParser.d.ts.map +1 -1
  72. package/dist/parsers/DatabaseParser.js +9 -8
  73. package/dist/parsers/DatabaseParser.js.map +1 -1
  74. package/dist/parsers/ExcelParser.d.ts +15 -0
  75. package/dist/parsers/ExcelParser.d.ts.map +1 -1
  76. package/dist/parsers/ExcelParser.js +287 -21
  77. package/dist/parsers/ExcelParser.js.map +1 -1
  78. package/dist/parsers/WebPageParser.d.ts +5 -0
  79. package/dist/parsers/WebPageParser.d.ts.map +1 -0
  80. package/dist/parsers/WebPageParser.js +35 -0
  81. package/dist/parsers/WebPageParser.js.map +1 -0
  82. package/dist/parsers/index.d.ts +3 -2
  83. package/dist/parsers/index.d.ts.map +1 -1
  84. package/dist/parsers/index.js +19 -16
  85. package/dist/parsers/index.js.map +1 -1
  86. package/dist/server/api/askApi.d.ts +41 -0
  87. package/dist/server/api/askApi.d.ts.map +1 -0
  88. package/dist/server/api/askApi.js +479 -0
  89. package/dist/server/api/askApi.js.map +1 -0
  90. package/dist/server/api/authApi.d.ts +101 -0
  91. package/dist/server/api/authApi.d.ts.map +1 -0
  92. package/dist/server/api/authApi.js +1472 -0
  93. package/dist/server/api/authApi.js.map +1 -0
  94. package/dist/server/api/authProperty.d.ts +18 -0
  95. package/dist/server/api/authProperty.d.ts.map +1 -0
  96. package/dist/server/api/authProperty.js +41 -0
  97. package/dist/server/api/authProperty.js.map +1 -0
  98. package/dist/server/api/configApi.d.ts +15 -0
  99. package/dist/server/api/configApi.d.ts.map +1 -0
  100. package/dist/server/api/configApi.js +42 -0
  101. package/dist/server/api/configApi.js.map +1 -0
  102. package/dist/server/api/databaseApi.d.ts +14 -0
  103. package/dist/server/api/databaseApi.d.ts.map +1 -0
  104. package/dist/server/api/databaseApi.js +111 -0
  105. package/dist/server/api/databaseApi.js.map +1 -0
  106. package/dist/server/api/directoryApi.d.ts +9 -0
  107. package/dist/server/api/directoryApi.d.ts.map +1 -0
  108. package/dist/server/api/directoryApi.js +103 -0
  109. package/dist/server/api/directoryApi.js.map +1 -0
  110. package/dist/server/api/generateApi.d.ts +24 -0
  111. package/dist/server/api/generateApi.d.ts.map +1 -0
  112. package/dist/server/api/generateApi.js +457 -0
  113. package/dist/server/api/generateApi.js.map +1 -0
  114. package/dist/server/api/healthApi.d.ts +9 -0
  115. package/dist/server/api/healthApi.d.ts.map +1 -0
  116. package/dist/server/api/healthApi.js +15 -0
  117. package/dist/server/api/healthApi.js.map +1 -0
  118. package/dist/server/api/indexApi.d.ts +21 -0
  119. package/dist/server/api/indexApi.d.ts.map +1 -0
  120. package/dist/server/api/indexApi.js +61 -0
  121. package/dist/server/api/indexApi.js.map +1 -0
  122. package/dist/server/api/logsApi.d.ts +12 -0
  123. package/dist/server/api/logsApi.d.ts.map +1 -0
  124. package/dist/server/api/logsApi.js +37 -0
  125. package/dist/server/api/logsApi.js.map +1 -0
  126. package/dist/server/api/mcpApi.d.ts +20 -0
  127. package/dist/server/api/mcpApi.d.ts.map +1 -0
  128. package/dist/server/api/mcpApi.js +120 -0
  129. package/dist/server/api/mcpApi.js.map +1 -0
  130. package/dist/server/api/nameApi.d.ts +21 -0
  131. package/dist/server/api/nameApi.d.ts.map +1 -0
  132. package/dist/server/api/nameApi.js +42 -0
  133. package/dist/server/api/nameApi.js.map +1 -0
  134. package/dist/server/api/parseApi.d.ts +9 -0
  135. package/dist/server/api/parseApi.d.ts.map +1 -0
  136. package/dist/server/api/parseApi.js +3245 -0
  137. package/dist/server/api/parseApi.js.map +1 -0
  138. package/dist/server/api/serverApi.d.ts +44 -0
  139. package/dist/server/api/serverApi.d.ts.map +1 -0
  140. package/dist/server/api/serverApi.js +417 -0
  141. package/dist/server/api/serverApi.js.map +1 -0
  142. package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
  143. package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
  144. package/dist/server/dynamic-mcp-executor.js +62 -0
  145. package/dist/server/dynamic-mcp-executor.js.map +1 -0
  146. package/dist/server/port-utils.d.ts +14 -0
  147. package/dist/server/port-utils.d.ts.map +1 -0
  148. package/dist/server/port-utils.js +31 -0
  149. package/dist/server/port-utils.js.map +1 -0
  150. package/dist/server/server-utils.d.ts +13 -0
  151. package/dist/server/server-utils.d.ts.map +1 -0
  152. package/dist/server/server-utils.js +72 -0
  153. package/dist/server/server-utils.js.map +1 -0
  154. package/dist/{web → server}/server.d.ts +1 -0
  155. package/dist/server/server.d.ts.map +1 -0
  156. package/dist/server/server.js +535 -0
  157. package/dist/server/server.js.map +1 -0
  158. package/dist/server/tool-executer.d.ts +101 -0
  159. package/dist/server/tool-executer.d.ts.map +1 -0
  160. package/dist/server/tool-executer.js +6198 -0
  161. package/dist/server/tool-executer.js.map +1 -0
  162. package/dist/types/index.d.ts +1197 -4
  163. package/dist/types/index.d.ts.map +1 -1
  164. package/dist/types/index.js +1028 -0
  165. package/dist/types/index.js.map +1 -1
  166. package/dist/upload/upload-utils.d.ts +4 -0
  167. package/dist/upload/upload-utils.d.ts.map +1 -0
  168. package/dist/upload/upload-utils.js +29 -0
  169. package/dist/upload/upload-utils.js.map +1 -0
  170. package/dist/utils/deployment-util.d.ts +14 -0
  171. package/dist/utils/deployment-util.d.ts.map +1 -0
  172. package/dist/utils/deployment-util.js +46 -0
  173. package/dist/utils/deployment-util.js.map +1 -0
  174. package/dist/utils/logger.d.ts +15 -0
  175. package/dist/utils/logger.d.ts.map +1 -0
  176. package/dist/utils/logger.js +56 -0
  177. package/dist/utils/logger.js.map +1 -0
  178. package/package.json +18 -6
  179. package/quickmcp-direct-stdio.js +176 -187
  180. package/src/web/public/app.js +15370 -1471
  181. package/src/web/public/authorization.html +868 -0
  182. package/src/web/public/database-tables.html +283 -547
  183. package/src/web/public/how-to-use.html +446 -462
  184. package/src/web/public/how-to-use.js +4 -4
  185. package/src/web/public/images/app/activepieces.png +0 -0
  186. package/src/web/public/images/app/airtable.png +0 -0
  187. package/src/web/public/images/app/androidstudio.png +0 -0
  188. package/src/web/public/images/app/antigravity.png +0 -0
  189. package/src/web/public/images/app/applenotes.png +0 -0
  190. package/src/web/public/images/app/applereminders.png +0 -0
  191. package/src/web/public/images/app/asana.png +0 -0
  192. package/src/web/public/images/app/azureai.png +0 -0
  193. package/src/web/public/images/app/bash.png +0 -0
  194. package/src/web/public/images/app/bearnotes.png +0 -0
  195. package/src/web/public/images/app/bitbucket.png +0 -0
  196. package/src/web/public/images/app/claude.png +0 -0
  197. package/src/web/public/images/app/cli.png +0 -0
  198. package/src/web/public/images/app/clickup.png +0 -0
  199. package/src/web/public/images/app/cohere.png +0 -0
  200. package/src/web/public/images/app/confluence.png +0 -0
  201. package/src/web/public/images/app/confluence2.png +0 -0
  202. package/src/web/public/images/app/curl.png +0 -0
  203. package/src/web/public/images/app/curl_mini.png +0 -0
  204. package/src/web/public/images/app/cursor.png +0 -0
  205. package/src/web/public/images/app/db2.png +0 -0
  206. package/src/web/public/images/app/deepseek.png +0 -0
  207. package/src/web/public/images/app/discord.png +0 -0
  208. package/src/web/public/images/app/docker.png +0 -0
  209. package/src/web/public/images/app/dockerhub.png +0 -0
  210. package/src/web/public/images/app/dropbox.png +0 -0
  211. package/src/web/public/images/app/elasticsearch.png +0 -0
  212. package/src/web/public/images/app/facebook.png +0 -0
  213. package/src/web/public/images/app/falai.png +0 -0
  214. package/src/web/public/images/app/fireworks.png +0 -0
  215. package/src/web/public/images/app/gdrive.png +0 -0
  216. package/src/web/public/images/app/gemini.png +0 -0
  217. package/src/web/public/images/app/github.png +0 -0
  218. package/src/web/public/images/app/githubcopilot.png +0 -0
  219. package/src/web/public/images/app/gitlab.png +0 -0
  220. package/src/web/public/images/app/gmail.png +0 -0
  221. package/src/web/public/images/app/googlecalender.png +0 -0
  222. package/src/web/public/images/app/googledocs.png +0 -0
  223. package/src/web/public/images/app/googlesheets.png +0 -0
  224. package/src/web/public/images/app/gradle.png +0 -0
  225. package/src/web/public/images/app/grafana.png +0 -0
  226. package/src/web/public/images/app/graphql.png +0 -0
  227. package/src/web/public/images/app/grok.png +0 -0
  228. package/src/web/public/images/app/groq.png +0 -0
  229. package/src/web/public/images/app/hazelcast.png +0 -0
  230. package/src/web/public/images/app/huggingface.png +0 -0
  231. package/src/web/public/images/app/imessage.png +0 -0
  232. package/src/web/public/images/app/instagram.png +0 -0
  233. package/src/web/public/images/app/intellij.png +0 -0
  234. package/src/web/public/images/app/jenkins.png +0 -0
  235. package/src/web/public/images/app/jira.png +0 -0
  236. package/src/web/public/images/app/kafka.png +0 -0
  237. package/src/web/public/images/app/kubernetes.png +0 -0
  238. package/src/web/public/images/app/linear.png +0 -0
  239. package/src/web/public/images/app/linkedin.png +0 -0
  240. package/src/web/public/images/app/llama.png +0 -0
  241. package/src/web/public/images/app/make.png +0 -0
  242. package/src/web/public/images/app/maven.png +0 -0
  243. package/src/web/public/images/app/mcp.png +0 -0
  244. package/src/web/public/images/app/microsoftteams.png +0 -0
  245. package/src/web/public/images/app/mistral.png +0 -0
  246. package/src/web/public/images/app/monday.png +0 -0
  247. package/src/web/public/images/app/mongodb.png +0 -0
  248. package/src/web/public/images/app/mssql.png +0 -0
  249. package/src/web/public/images/app/mysql.png +0 -0
  250. package/src/web/public/images/app/n8n.png +0 -0
  251. package/src/web/public/images/app/notion.png +0 -0
  252. package/src/web/public/images/app/npm.png +0 -0
  253. package/src/web/public/images/app/nuget.png +0 -0
  254. package/src/web/public/images/app/obsidian.png +0 -0
  255. package/src/web/public/images/app/openai.png +0 -0
  256. package/src/web/public/images/app/openrouter.png +0 -0
  257. package/src/web/public/images/app/opensearch.png +0 -0
  258. package/src/web/public/images/app/openshift.png +0 -0
  259. package/src/web/public/images/app/oracle.png +0 -0
  260. package/src/web/public/images/app/perplexity.png +0 -0
  261. package/src/web/public/images/app/pipedream.png +0 -0
  262. package/src/web/public/images/app/postgresql.png +0 -0
  263. package/src/web/public/images/app/powershell.png +0 -0
  264. package/src/web/public/images/app/prometheus.png +0 -0
  265. package/src/web/public/images/app/reddit.png +0 -0
  266. package/src/web/public/images/app/redis.png +0 -0
  267. package/src/web/public/images/app/rss.png +0 -0
  268. package/src/web/public/images/app/signal.png +0 -0
  269. package/src/web/public/images/app/slack.png +0 -0
  270. package/src/web/public/images/app/soap.png +0 -0
  271. package/src/web/public/images/app/sqlite.png +0 -0
  272. package/src/web/public/images/app/supabase.png +0 -0
  273. package/src/web/public/images/app/telegram.png +0 -0
  274. package/src/web/public/images/app/things3.png +0 -0
  275. package/src/web/public/images/app/threads.png +0 -0
  276. package/src/web/public/images/app/tiktok.png +0 -0
  277. package/src/web/public/images/app/together.png +0 -0
  278. package/src/web/public/images/app/trello.png +0 -0
  279. package/src/web/public/images/app/vscode.png +0 -0
  280. package/src/web/public/images/app/webhook.png +0 -0
  281. package/src/web/public/images/app/webpage.png +0 -0
  282. package/src/web/public/images/app/whatsappbusiness.png +0 -0
  283. package/src/web/public/images/app/windsorf.png +0 -0
  284. package/src/web/public/images/app/x.png +0 -0
  285. package/src/web/public/images/app/youtube.png +0 -0
  286. package/src/web/public/images/app/zapier.png +0 -0
  287. package/src/web/public/images/app/zededitor.png +0 -0
  288. package/src/web/public/images/app/zoom.png +0 -0
  289. package/src/web/public/images/avatar-anon.svg +4 -0
  290. package/src/web/public/images/favicon.png +0 -0
  291. package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
  292. package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
  293. package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
  294. package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
  295. package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
  296. package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
  297. package/src/web/public/images/readme/1-generate-servers.png +0 -0
  298. package/src/web/public/images/readme/2-database-connection.png +0 -0
  299. package/src/web/public/images/readme/2-file-upload.png +0 -0
  300. package/src/web/public/images/readme/3-data-preview.png +0 -0
  301. package/src/web/public/images/readme/4-data-preview2.png +0 -0
  302. package/src/web/public/images/readme/5-server-configuration.png +0 -0
  303. package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
  304. package/src/web/public/images/readme/7-generated-servers.png +0 -0
  305. package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
  306. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
  307. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
  308. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
  309. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
  310. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
  311. package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
  312. package/src/web/public/index.html +4685 -488
  313. package/src/web/public/landing.html +1638 -0
  314. package/src/web/public/logger.js +31 -0
  315. package/src/web/public/login.html +372 -0
  316. package/src/web/public/manage-servers.html +121 -188
  317. package/src/web/public/pricing.html +537 -0
  318. package/src/web/public/quick-ask.html +133 -0
  319. package/src/web/public/quickmcp-styles.css +708 -0
  320. package/src/web/public/roles.html +177 -0
  321. package/src/web/public/shared.js +736 -3
  322. package/src/web/public/sidebar.js +414 -0
  323. package/src/web/public/test-servers.html +605 -221
  324. package/src/web/public/users.html +191 -0
  325. package/dist/client/MCPClientUnified.d.ts +0 -31
  326. package/dist/client/MCPClientUnified.d.ts.map +0 -1
  327. package/dist/client/MCPClientUnified.js +0 -275
  328. package/dist/client/MCPClientUnified.js.map +0 -1
  329. package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
  330. package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
  331. package/dist/client/MCPTestRunnerUnified.js +0 -183
  332. package/dist/client/MCPTestRunnerUnified.js.map +0 -1
  333. package/dist/database/json-manager.d.ts +0 -55
  334. package/dist/database/json-manager.d.ts.map +0 -1
  335. package/dist/database/json-manager.js +0 -128
  336. package/dist/database/json-manager.js.map +0 -1
  337. package/dist/dynamic-mcp-executor.d.ts.map +0 -1
  338. package/dist/dynamic-mcp-executor.js +0 -274
  339. package/dist/dynamic-mcp-executor.js.map +0 -1
  340. package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
  341. package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
  342. package/dist/generators/MCPServerGenerator-new.js +0 -287
  343. package/dist/generators/MCPServerGenerator-new.js.map +0 -1
  344. package/dist/generators/database/sqlite-manager.d.ts +0 -52
  345. package/dist/generators/database/sqlite-manager.js +0 -143
  346. package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
  347. package/dist/generators/generators/MCPServerGenerator.js +0 -396
  348. package/dist/integrated-mcp-server.d.ts +0 -25
  349. package/dist/integrated-mcp-server.d.ts.map +0 -1
  350. package/dist/integrated-mcp-server.js +0 -541
  351. package/dist/integrated-mcp-server.js.map +0 -1
  352. package/dist/mcp-inspector-server.d.ts +0 -3
  353. package/dist/mcp-inspector-server.d.ts.map +0 -1
  354. package/dist/mcp-inspector-server.js +0 -119
  355. package/dist/mcp-inspector-server.js.map +0 -1
  356. package/dist/mcp-sdk-server.d.ts +0 -3
  357. package/dist/mcp-sdk-server.d.ts.map +0 -1
  358. package/dist/mcp-sdk-server.js +0 -90
  359. package/dist/mcp-sdk-server.js.map +0 -1
  360. package/dist/mcp-server.d.ts +0 -3
  361. package/dist/mcp-server.d.ts.map +0 -1
  362. package/dist/mcp-server.js +0 -300
  363. package/dist/mcp-server.js.map +0 -1
  364. package/dist/parsers/parsers/ExcelParser.js +0 -118
  365. package/dist/quickmcp-unified-bridge.d.ts +0 -13
  366. package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
  367. package/dist/quickmcp-unified-bridge.js +0 -176
  368. package/dist/quickmcp-unified-bridge.js.map +0 -1
  369. package/dist/sqlite-manager.js +0 -145
  370. package/dist/test-app.d.ts +0 -2
  371. package/dist/test-app.d.ts.map +0 -1
  372. package/dist/test-app.js +0 -119
  373. package/dist/test-app.js.map +0 -1
  374. package/dist/transport/base-transport.d.ts +0 -21
  375. package/dist/transport/base-transport.d.ts.map +0 -1
  376. package/dist/transport/base-transport.js +0 -16
  377. package/dist/transport/base-transport.js.map +0 -1
  378. package/dist/transport/index.d.ts +0 -10
  379. package/dist/transport/index.d.ts.map +0 -1
  380. package/dist/transport/index.js +0 -12
  381. package/dist/transport/index.js.map +0 -1
  382. package/dist/transport/sse-transport.d.ts +0 -13
  383. package/dist/transport/sse-transport.d.ts.map +0 -1
  384. package/dist/transport/sse-transport.js +0 -106
  385. package/dist/transport/sse-transport.js.map +0 -1
  386. package/dist/transport/stdio-transport.d.ts +0 -8
  387. package/dist/transport/stdio-transport.d.ts.map +0 -1
  388. package/dist/transport/stdio-transport.js +0 -53
  389. package/dist/transport/stdio-transport.js.map +0 -1
  390. package/dist/transport/streamable-http-transport.d.ts +0 -15
  391. package/dist/transport/streamable-http-transport.d.ts.map +0 -1
  392. package/dist/transport/streamable-http-transport.js +0 -151
  393. package/dist/transport/streamable-http-transport.js.map +0 -1
  394. package/dist/web/client/MCPClient.js +0 -348
  395. package/dist/web/client/MCPTestRunner.js +0 -317
  396. package/dist/web/database/json-manager.js +0 -124
  397. package/dist/web/database/sqlite-manager.js +0 -146
  398. package/dist/web/dynamic-mcp-executor.js +0 -443
  399. package/dist/web/generators/MCPServerGenerator-new.js +0 -284
  400. package/dist/web/generators/MCPServerGenerator.js +0 -566
  401. package/dist/web/integrated-mcp-server-new.js +0 -394
  402. package/dist/web/parsers/CsvParser.js +0 -144
  403. package/dist/web/parsers/DatabaseParser.js +0 -637
  404. package/dist/web/parsers/ExcelParser.js +0 -180
  405. package/dist/web/parsers/index.js +0 -152
  406. package/dist/web/server.d.ts.map +0 -1
  407. package/dist/web/server.js +0 -790
  408. package/dist/web/server.js.map +0 -1
  409. package/dist/web/types/index.js +0 -2
  410. package/dist/web/web/server.js +0 -860
  411. package/src/web/public/modern-styles.css +0 -946
  412. package/src/web/public/shared-styles.css +0 -2091
  413. /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
  414. /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
  415. /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
  416. /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
  417. /package/src/web/public/images/{5-claude-config-edit.png → readme/5-claude-config-edit.png} +0 -0
@@ -0,0 +1,708 @@
1
+ /* Archdraw Custom Styles */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap');
3
+
4
+ :root {
5
+ --sidebar-offset: 18rem;
6
+ --sidebar-gutter: 0.75rem;
7
+ /* Modern Color Palette */
8
+ --color-primary: 59 130 246; /* blue-500 */
9
+ --color-primary-dark: 37 99 235; /* blue-600 */
10
+ --color-secondary: 99 102 241; /* indigo-500 */
11
+ --color-accent: 16 185 129; /* emerald-500 */
12
+ --color-warning: 245 158 11; /* amber-500 */
13
+ --color-danger: 239 68 68; /* red-500 */
14
+
15
+ /* Neutral Colors */
16
+ --color-gray-50: 248 250 252;
17
+ --color-gray-100: 241 245 249;
18
+ --color-gray-200: 226 232 240;
19
+ --color-gray-300: 203 213 225;
20
+ --color-gray-400: 148 163 184;
21
+ --color-gray-500: 100 116 139;
22
+ --color-gray-600: 71 85 105;
23
+ --color-gray-700: 51 65 85;
24
+ --color-gray-800: 30 41 59;
25
+ --color-gray-900: 15 23 42;
26
+
27
+ /* Background Colors */
28
+ --bg-primary: rgb(255 255 255);
29
+ --bg-secondary: rgb(248 250 252);
30
+ --bg-tertiary: rgb(241 245 249);
31
+
32
+ /* Text Colors */
33
+ --text-primary: rgb(15 23 42);
34
+ --text-secondary: rgb(51 65 85);
35
+ --text-tertiary: rgb(100 116 139);
36
+
37
+ /* Border & Shadow */
38
+ --border-color: rgb(226 232 240);
39
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
40
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
41
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
42
+ }
43
+
44
+ html {
45
+ font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
46
+ font-variation-settings: normal;
47
+ }
48
+
49
+ body {
50
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
51
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
52
+ -webkit-font-smoothing: antialiased;
53
+ -moz-osx-font-smoothing: grayscale;
54
+ text-rendering: optimizeLegibility;
55
+ font-feature-settings: 'kern' 1;
56
+ color: var(--text-primary);
57
+ background: var(--bg-secondary);
58
+ line-height: 1.6;
59
+ letter-spacing: -0.01em;
60
+ overflow-x: hidden;
61
+ overscroll-behavior-x: contain;
62
+ scrollbar-gutter: stable both-edges;
63
+ }
64
+
65
+ @media (min-width: 1024px) {
66
+ body[data-has-sidebar="1"] > header {
67
+ margin-left: var(--sidebar-offset);
68
+ width: calc(100% - var(--sidebar-offset));
69
+ }
70
+
71
+ body[data-has-sidebar="1"] .app-main-layout {
72
+ padding-left: calc(var(--sidebar-offset) + var(--sidebar-gutter));
73
+ }
74
+ }
75
+
76
+ /* Modern Scrollbar */
77
+ .scrollbar-modern {
78
+ scrollbar-width: thin;
79
+ scrollbar-color: rgb(203 213 225) transparent;
80
+ }
81
+
82
+ .scrollbar-modern::-webkit-scrollbar {
83
+ width: 6px;
84
+ }
85
+
86
+ .scrollbar-modern::-webkit-scrollbar-track {
87
+ background: transparent;
88
+ }
89
+
90
+ .scrollbar-modern::-webkit-scrollbar-thumb {
91
+ background: rgb(203 213 225);
92
+ border-radius: 3px;
93
+ }
94
+
95
+ .scrollbar-modern::-webkit-scrollbar-thumb:hover {
96
+ background: rgb(148 163 184);
97
+ }
98
+
99
+ .dark .scrollbar-modern {
100
+ scrollbar-color: rgb(75 85 99) transparent;
101
+ }
102
+
103
+ .dark .scrollbar-modern::-webkit-scrollbar-thumb {
104
+ background: rgb(75 85 99);
105
+ }
106
+
107
+ .dark .scrollbar-modern::-webkit-scrollbar-thumb:hover {
108
+ background: rgb(107 114 128);
109
+ }
110
+
111
+ /* Glass effect */
112
+ .glass {
113
+ backdrop-filter: blur(16px);
114
+ background: rgba(255, 255, 255, 0.8);
115
+ }
116
+
117
+ .dark .glass {
118
+ background: rgba(31, 41, 55, 0.8);
119
+ }
120
+
121
+ /* Gradient text */
122
+ .gradient-text {
123
+ background: linear-gradient(135deg, rgb(59 130 246), rgb(147 51 234));
124
+ -webkit-background-clip: text;
125
+ -webkit-text-fill-color: transparent;
126
+ background-clip: text;
127
+ }
128
+
129
+ /* Animations */
130
+ @keyframes slideUp {
131
+ from {
132
+ opacity: 0;
133
+ transform: translateY(10px);
134
+ }
135
+ to {
136
+ opacity: 1;
137
+ transform: translateY(0);
138
+ }
139
+ }
140
+
141
+ @keyframes fadeIn {
142
+ from {
143
+ opacity: 0;
144
+ }
145
+ to {
146
+ opacity: 1;
147
+ }
148
+ }
149
+
150
+ .animate-slide-up {
151
+ animation: slideUp 0.3s ease-out;
152
+ }
153
+
154
+ .animate-fade-in {
155
+ animation: fadeIn 0.2s ease-out;
156
+ }
157
+
158
+ /* Hide settings cog icon globally if present */
159
+ #openSettingsModal { display: none !important; }
160
+
161
+ /* Card Styles */
162
+ .card {
163
+ background-color: white;
164
+ border: 1px solid var(--border-color);
165
+ border-radius: 0.75rem; /* rounded-xl */
166
+ box-shadow: var(--shadow-sm);
167
+ }
168
+
169
+ .dark .card {
170
+ background-color: var(--color-gray-800);
171
+ border-color: var(--color-gray-700);
172
+ }
173
+
174
+ .card-hover {
175
+ transition: all 0.3s;
176
+ }
177
+
178
+ .card-hover:hover {
179
+ box-shadow: var(--shadow-lg);
180
+ transform: translateY(-0.25rem); /* -translate-y-1 */
181
+ }
182
+
183
+ /* Input Styles */
184
+ .input {
185
+ width: 100%;
186
+ padding: 0.75rem 1rem; /* px-4 py-3 */
187
+ font-size: 0.875rem; /* text-sm */
188
+ border: 1px solid var(--color-gray-300);
189
+ border-radius: 0.75rem; /* rounded-xl */
190
+ background-color: transparent;
191
+ color: var(--color-gray-900);
192
+ transition: all 0.2s;
193
+ }
194
+
195
+ .input:focus {
196
+ outline: none;
197
+ border-color: rgb(59 130 246); /* blue-500 */
198
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
199
+ }
200
+
201
+ .dark .input {
202
+ border-color: var(--color-gray-600);
203
+ color: var(--color-gray-100);
204
+ }
205
+
206
+ .dark .input:focus {
207
+ border-color: rgb(96 165 250); /* blue-400 */
208
+ }
209
+
210
+ /* Quick Ask markdown output */
211
+ .qa-markdown {
212
+ line-height: 1.75;
213
+ color: #1e293b;
214
+ }
215
+
216
+ .qa-markdown p {
217
+ margin: 0.55rem 0;
218
+ }
219
+
220
+ .qa-markdown h1,
221
+ .qa-markdown h2,
222
+ .qa-markdown h3,
223
+ .qa-markdown h4,
224
+ .qa-markdown h5,
225
+ .qa-markdown h6 {
226
+ margin-top: 1rem;
227
+ margin-bottom: 0.45rem;
228
+ font-weight: 700;
229
+ color: #0f172a;
230
+ letter-spacing: -0.01em;
231
+ }
232
+
233
+ .qa-markdown ul,
234
+ .qa-markdown ol {
235
+ margin: 0.45rem 0 0.75rem 1.2rem;
236
+ }
237
+
238
+ .qa-markdown li {
239
+ margin: 0.2rem 0;
240
+ }
241
+
242
+ .qa-markdown hr {
243
+ border: 0;
244
+ border-top: 1px solid #e2e8f0;
245
+ margin: 0.9rem 0;
246
+ }
247
+
248
+ .qa-markdown blockquote {
249
+ margin: 0.65rem 0;
250
+ color: #334155;
251
+ background: #f8fafc;
252
+ }
253
+
254
+ .qa-markdown table {
255
+ width: 100%;
256
+ border-collapse: collapse;
257
+ margin: 0.75rem 0;
258
+ border-radius: 0.6rem;
259
+ overflow: hidden;
260
+ }
261
+
262
+ .qa-markdown thead th {
263
+ background: #f8fafc;
264
+ color: #334155;
265
+ }
266
+
267
+ .qa-markdown th,
268
+ .qa-markdown td {
269
+ border: 1px solid #e2e8f0;
270
+ padding: 0.5rem 0.65rem;
271
+ vertical-align: top;
272
+ }
273
+
274
+ .qa-markdown code {
275
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
276
+ }
277
+
278
+ .qa-markdown pre {
279
+ margin: 0;
280
+ }
281
+
282
+ .qa-thinking {
283
+ display: inline-flex;
284
+ align-items: center;
285
+ gap: 0.5rem;
286
+ padding: 0.1rem 0;
287
+ }
288
+
289
+ .qa-thinking-icon {
290
+ width: 1.75rem;
291
+ height: 1.75rem;
292
+ border-radius: 9999px;
293
+ display: inline-flex;
294
+ align-items: center;
295
+ justify-content: center;
296
+ color: #2563eb;
297
+ background: #dbeafe;
298
+ box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.35);
299
+ animation: qaPulse 1.4s ease-out infinite;
300
+ }
301
+
302
+ .qa-thinking-icon i {
303
+ font-size: 0.85rem;
304
+ animation: qaBotFloat 1.6s ease-in-out infinite;
305
+ }
306
+
307
+ .qa-thinking-dots {
308
+ display: inline-flex;
309
+ align-items: center;
310
+ gap: 0.22rem;
311
+ }
312
+
313
+ .qa-thinking-dots span {
314
+ width: 0.34rem;
315
+ height: 0.34rem;
316
+ border-radius: 9999px;
317
+ background: #64748b;
318
+ animation: qaDotBounce 1s ease-in-out infinite;
319
+ }
320
+
321
+ .qa-thinking-dots span:nth-child(2) {
322
+ animation-delay: 0.12s;
323
+ }
324
+
325
+ .qa-thinking-dots span:nth-child(3) {
326
+ animation-delay: 0.24s;
327
+ }
328
+
329
+ @keyframes qaPulse {
330
+ 0% { box-shadow: 0 0 0 0 rgba(37, 99, 235, 0.35); }
331
+ 70% { box-shadow: 0 0 0 8px rgba(37, 99, 235, 0); }
332
+ 100% { box-shadow: 0 0 0 0 rgba(37, 99, 235, 0); }
333
+ }
334
+
335
+ @keyframes qaBotFloat {
336
+ 0%, 100% { transform: translateY(0); }
337
+ 50% { transform: translateY(-1px); }
338
+ }
339
+
340
+ @keyframes qaDotBounce {
341
+ 0%, 80%, 100% { transform: translateY(0); opacity: 0.45; }
342
+ 40% { transform: translateY(-3px); opacity: 1; }
343
+ }
344
+
345
+ /* Quick Ask server/tool selector */
346
+ .quick-ask-server-details > summary {
347
+ list-style: none;
348
+ }
349
+ .quick-ask-server-details > summary::-webkit-details-marker {
350
+ display: none;
351
+ }
352
+ .quick-ask-server-details > summary::marker {
353
+ content: '';
354
+ }
355
+ .quick-ask-server-chevron {
356
+ transition: transform 0.18s ease;
357
+ }
358
+ .quick-ask-server-details[open] .quick-ask-server-chevron {
359
+ transform: rotate(180deg);
360
+ }
361
+ .quick-ask-toggle-track {
362
+ box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.35);
363
+ }
364
+ .quick-ask-toggle-input:focus-visible + .quick-ask-toggle-track {
365
+ outline: 2px solid rgba(16, 185, 129, 0.55);
366
+ outline-offset: 2px;
367
+ }
368
+
369
+ /* Collapsed sidebar icon layout (common across pages) */
370
+ #sidebar.collapsed .nav-item {
371
+ display: flex !important;
372
+ align-items: center !important;
373
+ justify-content: center !important;
374
+ width: 3rem !important; /* 48px clickable square */
375
+ height: 3rem !important;
376
+ padding: 0 !important;
377
+ margin-left: 0 !important;
378
+ margin-right: 0 !important;
379
+ background: transparent !important;
380
+ border: 0 !important;
381
+ box-shadow: none !important;
382
+ gap: 0 !important;
383
+ cursor: pointer;
384
+ }
385
+ #sidebar.collapsed .nav-item.card-hover:hover { transform: none !important; box-shadow: none !important; }
386
+ #sidebar.collapsed .nav-item .flex-1 { display: none !important; }
387
+
388
+ #sidebar.collapsed .nav-item > .relative {
389
+ display: flex !important;
390
+ align-items: center !important;
391
+ justify-content: center !important;
392
+ width: 2.5rem !important; /* 40px inner icon container */
393
+ height: 2.5rem !important;
394
+ margin-left: auto !important;
395
+ margin-right: auto !important;
396
+ }
397
+ #sidebar.collapsed .nav-item > .relative > div {
398
+ width: 2.5rem !important;
399
+ height: 2.5rem !important;
400
+ padding: 0 !important; /* ensure square */
401
+ box-sizing: border-box !important;
402
+ display: flex !important;
403
+ align-items: center !important;
404
+ justify-content: center !important;
405
+ position: relative !important;
406
+ background: transparent !important; /* background drawn via ::before */
407
+ border: 1px solid #e2e8f0 !important; /* subtle outer border */
408
+ border-radius: 0.5rem !important; /* rounded */
409
+ box-shadow: none !important; /* no glow/shadow */
410
+ overflow: hidden !important;
411
+ transition: border-color 120ms ease, transform 120ms ease;
412
+ }
413
+
414
+ /* Inner background with padding between border and fill */
415
+ #sidebar.collapsed .nav-item > .relative > div::before {
416
+ content: '';
417
+ position: absolute;
418
+ inset: 3px; /* padding between border and background */
419
+ border-radius: 0.375rem; /* slightly smaller than outer radius */
420
+ background: #f1f5f9; /* default light fill */
421
+ transition: background-color 120ms ease;
422
+ }
423
+ #sidebar.collapsed .nav-item i { font-size: 1.05rem !important; line-height: 1 !important; }
424
+
425
+ #sidebar.collapsed #sidebarHeaderRow {
426
+ position: relative !important;
427
+ justify-content: center !important;
428
+ align-items: center !important;
429
+ margin-bottom: 0.5rem !important;
430
+ min-height: 2rem !important;
431
+ }
432
+ #sidebar.collapsed #sidebarHeaderMain {
433
+ display: flex !important;
434
+ opacity: 1;
435
+ transition: opacity 120ms ease;
436
+ }
437
+ #sidebar.collapsed #sidebarHeaderToggleWrap {
438
+ position: absolute !important;
439
+ left: 50% !important;
440
+ transform: translateX(-50%) !important;
441
+ display: flex !important;
442
+ justify-content: center !important;
443
+ align-items: center !important;
444
+ opacity: 0;
445
+ pointer-events: none;
446
+ transition: opacity 120ms ease;
447
+ }
448
+ #sidebar.collapsed #sidebarHeaderRow:hover #sidebarHeaderMain {
449
+ opacity: 0;
450
+ }
451
+ #sidebar.collapsed #sidebarHeaderRow:hover #sidebarHeaderToggleWrap {
452
+ opacity: 1;
453
+ pointer-events: auto;
454
+ }
455
+ #sidebar.collapsed #sidebarHeaderActions {
456
+ display: none !important;
457
+ }
458
+ #sidebar.collapsed #sidebarHeaderToggle {
459
+ display: inline-flex !important;
460
+ align-items: center !important;
461
+ justify-content: center !important;
462
+ line-height: 1 !important;
463
+ }
464
+ #sidebar.collapsed #sidebarCollapseBtn { display: inline-flex !important; }
465
+ #sidebar.collapsed #closeSidebar { display: none !important; }
466
+
467
+ #sidebar #sidebarCollapseBtn { width: 2.25rem; height: 2.25rem; align-items: center; justify-content: center; }
468
+ #sidebar #sidebarCollapseBtn i { font-size: 1rem; }
469
+
470
+ #sidebarUserSection {
471
+ margin-top: auto;
472
+ }
473
+ #sidebar.collapsed #sidebarUserSection {
474
+ padding: 0.5rem !important;
475
+ }
476
+ #sidebar.collapsed #sidebarUserButton {
477
+ justify-content: center !important;
478
+ padding: 0 !important;
479
+ }
480
+ #sidebar.collapsed #sidebarUserMeta {
481
+ display: none !important;
482
+ }
483
+ #sidebar.collapsed #sidebarUserSection [data-user-avatar] {
484
+ width: 2rem !important;
485
+ height: 2rem !important;
486
+ font-size: 0.75rem !important;
487
+ }
488
+ .quick-ask-collapsed-add {
489
+ display: none !important;
490
+ }
491
+ #sidebar.collapsed #sharedQuickAskSidebarChats,
492
+ #sidebar.collapsed #quickAskSidebarChats {
493
+ margin-top: 0 !important;
494
+ padding-top: 0 !important;
495
+ border-top: 0 !important;
496
+ }
497
+ #sidebar.collapsed #sharedQuickAskSidebarChats > :not(.quick-ask-collapsed-add),
498
+ #sidebar.collapsed #quickAskSidebarChats > :not(.quick-ask-collapsed-add) {
499
+ display: none !important;
500
+ }
501
+ #sidebar.collapsed .quick-ask-collapsed-add {
502
+ display: inline-flex !important;
503
+ }
504
+
505
+ /* Center collapsed nav within the narrow sidebar */
506
+ #sidebar.collapsed { width: 3rem !important; display: flex; flex-direction: column; align-items: center; overflow-x: hidden; }
507
+ #sidebar.collapsed > div:first-child { padding: 1rem !important; } /* keep header icon vertically aligned with expanded state */
508
+ #sidebar.collapsed #sidebarCollapseBtn { width: 2rem !important; height: 2rem !important; } /* smaller button in collapsed */
509
+ #sidebar.collapsed #sidebarNavList {
510
+ padding-left: 0 !important;
511
+ padding-right: 0 !important;
512
+ display: flex;
513
+ flex-direction: column;
514
+ align-items: center;
515
+ }
516
+ /* Reduce vertical spacing between collapsed icons (0px) */
517
+ #sidebar.collapsed #sidebarNavList > a { margin-top: 0 !important; margin-bottom: 0 !important; }
518
+ /* Override Tailwind's space-y-* margins */
519
+ #sidebar.collapsed #sidebarNavList > :not([hidden]) ~ :not([hidden]) {
520
+ margin-top: 0 !important;
521
+ margin-bottom: 0 !important;
522
+ }
523
+
524
+ /* Collapsed icon colors per item (distinct colors, no bg) */
525
+ #sidebar.collapsed a[href="/"] i { color: #2563eb !important; } /* blue-600 */
526
+ #sidebar.collapsed a[href="/manage-servers"] i { color: #10b981 !important; } /* emerald-500 */
527
+ #sidebar.collapsed a[href="/test-servers"] i { color: #7c3aed !important; } /* violet-600 */
528
+ #sidebar.collapsed a[href="/authorization"] i { color: #d97706 !important; } /* amber-600 */
529
+ #sidebar.collapsed a[href="/users"] i { color: #059669 !important; } /* emerald-600 */
530
+ #sidebar.collapsed a[href="/how-to-use"] i { color: #f59e0b !important; } /* amber-500 */
531
+
532
+ /* Tint inner background by icon color */
533
+ #sidebar.collapsed a[href="/"] .relative > div::before { background: rgba(37, 99, 235, 0.14) !important; } /* blue tint */
534
+ #sidebar.collapsed a[href="/manage-servers"] .relative > div::before { background: rgba(16, 185, 129, 0.14) !important; } /* emerald tint */
535
+ #sidebar.collapsed a[href="/test-servers"] .relative > div::before { background: rgba(124, 58, 237, 0.14) !important; } /* violet tint */
536
+ #sidebar.collapsed a[href="/authorization"] .relative > div::before { background: rgba(217, 119, 6, 0.16) !important; } /* amber tint */
537
+ #sidebar.collapsed a[href="/users"] .relative > div::before { background: rgba(5, 150, 105, 0.16) !important; } /* emerald tint */
538
+ #sidebar.collapsed a[href="/how-to-use"] .relative > div::before { background: rgba(245, 158, 11, 0.18) !important; } /* amber tint */
539
+
540
+ /* Hover states: stronger tint + border highlight + slight scale */
541
+ #sidebar.collapsed a[href="/"]:hover .relative > div { border-color: #93c5fd !important; transform: scale(1.03); }
542
+ #sidebar.collapsed a[href="/"]:hover .relative > div::before { background: rgba(37, 99, 235, 0.24) !important; }
543
+
544
+ #sidebar.collapsed a[href="/manage-servers"]:hover .relative > div { border-color: #6ee7b7 !important; transform: scale(1.03); }
545
+ #sidebar.collapsed a[href="/manage-servers"]:hover .relative > div::before { background: rgba(16, 185, 129, 0.22) !important; }
546
+
547
+ #sidebar.collapsed a[href="/test-servers"]:hover .relative > div { border-color: #c4b5fd !important; transform: scale(1.03); }
548
+ #sidebar.collapsed a[href="/test-servers"]:hover .relative > div::before { background: rgba(124, 58, 237, 0.22) !important; }
549
+
550
+ #sidebar.collapsed a[href="/authorization"]:hover .relative > div { border-color: #fcd34d !important; transform: scale(1.03); }
551
+ #sidebar.collapsed a[href="/authorization"]:hover .relative > div::before { background: rgba(217, 119, 6, 0.26) !important; }
552
+
553
+ #sidebar.collapsed a[href="/users"]:hover .relative > div { border-color: #6ee7b7 !important; transform: scale(1.03); }
554
+ #sidebar.collapsed a[href="/users"]:hover .relative > div::before { background: rgba(5, 150, 105, 0.24) !important; }
555
+
556
+ #sidebar.collapsed a[href="/how-to-use"]:hover .relative > div { border-color: #fcd34d !important; transform: scale(1.03); }
557
+ #sidebar.collapsed a[href="/how-to-use"]:hover .relative > div::before { background: rgba(245, 158, 11, 0.28) !important; }
558
+
559
+ /* Expanded sidebar: match collapsed colors for icons + tints */
560
+ #sidebar:not(.collapsed) #sidebarNavList a .relative > div {
561
+ border: 1px solid #e2e8f0 !important;
562
+ border-radius: 0.5rem !important;
563
+ background: #f1f5f9 !important;
564
+ color: #475569 !important;
565
+ transition: border-color 120ms ease, background-color 120ms ease, transform 120ms ease, color 120ms ease;
566
+ }
567
+ #sidebar:not(.collapsed) a[href="/"] i { color: #2563eb !important; }
568
+ #sidebar:not(.collapsed) a[href="/manage-servers"] i { color: #10b981 !important; }
569
+ #sidebar:not(.collapsed) a[href="/test-servers"] i { color: #7c3aed !important; }
570
+ #sidebar:not(.collapsed) a[href="/authorization"] i { color: #d97706 !important; }
571
+ #sidebar:not(.collapsed) a[href="/users"] i { color: #059669 !important; }
572
+ #sidebar:not(.collapsed) a[href="/how-to-use"] i { color: #f59e0b !important; }
573
+ #sidebar:not(.collapsed) a[href="/"] .relative > div { background: rgba(37, 99, 235, 0.14) !important; }
574
+ #sidebar:not(.collapsed) a[href="/manage-servers"] .relative > div { background: rgba(16, 185, 129, 0.14) !important; }
575
+ #sidebar:not(.collapsed) a[href="/test-servers"] .relative > div { background: rgba(124, 58, 237, 0.14) !important; }
576
+ #sidebar:not(.collapsed) a[href="/authorization"] .relative > div { background: rgba(217, 119, 6, 0.14) !important; }
577
+ #sidebar:not(.collapsed) a[href="/users"] .relative > div { background: rgba(5, 150, 105, 0.14) !important; }
578
+ #sidebar:not(.collapsed) a[href="/how-to-use"] .relative > div { background: rgba(245, 158, 11, 0.14) !important; }
579
+ #sidebar:not(.collapsed) a[href="/"]:hover .relative > div { border-color: #93c5fd !important; background: rgba(37, 99, 235, 0.24) !important; transform: translateY(-1px); }
580
+ #sidebar:not(.collapsed) a[href="/manage-servers"]:hover .relative > div { border-color: #6ee7b7 !important; background: rgba(16, 185, 129, 0.22) !important; transform: translateY(-1px); }
581
+ #sidebar:not(.collapsed) a[href="/test-servers"]:hover .relative > div { border-color: #c4b5fd !important; background: rgba(124, 58, 237, 0.22) !important; transform: translateY(-1px); }
582
+ #sidebar:not(.collapsed) a[href="/authorization"]:hover .relative > div { border-color: #fcd34d !important; background: rgba(217, 119, 6, 0.24) !important; transform: translateY(-1px); }
583
+ #sidebar:not(.collapsed) a[href="/users"]:hover .relative > div { border-color: #6ee7b7 !important; background: rgba(5, 150, 105, 0.24) !important; transform: translateY(-1px); }
584
+ #sidebar:not(.collapsed) a[href="/how-to-use"]:hover .relative > div { border-color: #fcd34d !important; background: rgba(245, 158, 11, 0.24) !important; transform: translateY(-1px); }
585
+
586
+ /* AppBar New Server button: enforce single, consistent style across pages */
587
+ #headerNewServerBtn {
588
+ padding: 0.5rem 1rem !important; /* py-2 px-4 */
589
+ border-radius: 0.5rem !important; /* rounded-lg */
590
+ font-size: 0.875rem !important; /* text-sm */
591
+ line-height: 1.25rem !important;
592
+ }
593
+ /* Hide any legacy per-page New Server buttons that lack the shared id */
594
+ header .flex > button[onclick*="window.location.href='/'"]:not(#headerNewServerBtn) {
595
+ display: none !important;
596
+ }
597
+
598
+ /* Avoid first-paint sidebar flicker before sidebar.js mounts content */
599
+ #sidebar:not([data-ready="1"]) {
600
+ visibility: hidden !important;
601
+ }
602
+
603
+ /* Right details panel collapsed state */
604
+ #server-details-panel.collapsed { width: 3rem !important; overflow: hidden; }
605
+ #server-details-panel.collapsed #serverDetailsHeaderRow { justify-content: center !important; padding: 0.25rem !important; }
606
+ #server-details-panel.collapsed #rightPanelCollapseBtn { display: inline-flex !important; color: #94a3b8 !important; }
607
+ #server-details-panel.collapsed #serverDetailsHeaderMain { display: none !important; }
608
+ #server-details-panel.collapsed #rightPanelMiniRow { display: flex !important; }
609
+ #server-details-panel.collapsed #serverDetailsMiniIcon { width: 2.5rem !important; height: 2.5rem !important; position: relative; background: transparent !important; border: 1px solid #e2e8f0 !important; border-radius: 0.5rem !important; display: inline-flex; align-items: center; justify-content: center; }
610
+ #server-details-panel.collapsed #serverDetailsMiniIcon::before { content: ''; position: absolute; inset: 3px; border-radius: 0.375rem; background: rgba(124, 58, 237, 0.14); }
611
+ #server-details-panel.collapsed #serverDetailsMiniIcon:hover { border-color: #c4b5fd !important; }
612
+ #server-details-panel.collapsed #serverDetailsMiniIcon:hover::before { background: rgba(124, 58, 237, 0.22); }
613
+ #server-details-panel.collapsed #serverDetailsMiniIcon i { color: #7c3aed !important; font-size: 1.05rem; line-height: 1; }
614
+ #server-details-panel.collapsed #serverDetailsHeaderMain { display: none !important; }
615
+ #server-details-panel.collapsed .flex-1 { display: none !important; }
616
+ #server-details-panel #rightPanelCollapseBtn { width: 2rem; height: 2rem; }
617
+ #server-details-panel #rightPanelCollapseBtn { width: 2rem; height: 2rem; display: inline-flex; align-items: center; justify-content: center; }
618
+
619
+ /* Right details rail (exact, consistent) */
620
+ .details-rail {
621
+ position: absolute;
622
+ top: 0; bottom: 0; right: 0;
623
+ width: 92px;
624
+ display: flex;
625
+ align-items: center;
626
+ justify-content: center;
627
+ background: #ffffff; /* match panel */
628
+ border-left: 1px solid #e2e8f0; /* slate-200 */
629
+ pointer-events: none; /* let content click through except buttons */
630
+ }
631
+ .details-rail .rail-group { pointer-events: auto; display: flex; flex-direction: column; align-items: center; gap: 0.75rem; }
632
+ .details-rail .rail-btn {
633
+ width: 40px; height: 40px;
634
+ display: flex; align-items: center; justify-content: center;
635
+ border-radius: 0.5rem; /* 8px */
636
+ background: #ffffff; /* match rail */
637
+ border: 1px solid #e2e8f0;
638
+ color: #475569; /* slate-600 */
639
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
640
+ }
641
+ .details-rail .rail-btn:hover { border-color: #93c5fd; color: #2563eb; }
642
+ .details-rail .rail-btn.danger { color: #dc2626; }
643
+ .details-rail .rail-btn.danger:hover { border-color: #fecaca; color: #dc2626; }
644
+
645
+ /* Minimal Sidebar Theme */
646
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item {
647
+ background: transparent !important;
648
+ border: 0 !important;
649
+ box-shadow: none !important;
650
+ }
651
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item:hover {
652
+ background: #f8fafc !important;
653
+ }
654
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item.active,
655
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item[aria-current="page"] {
656
+ background: #f1f5f9 !important;
657
+ }
658
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item .relative > div {
659
+ border: 0 !important;
660
+ box-shadow: none !important;
661
+ background: transparent !important;
662
+ }
663
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item i {
664
+ color: #64748b !important;
665
+ }
666
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item .flex-1 > span:first-child {
667
+ color: #0f172a !important;
668
+ }
669
+ #sidebar:not(.collapsed) #sidebarNavList .nav-item .flex-1 > span:last-child {
670
+ color: #94a3b8 !important;
671
+ }
672
+
673
+ #sidebar.collapsed #sidebarNavList .nav-item > .relative > div,
674
+ #sidebar.collapsed #sidebarNavList .nav-item:hover .relative > div {
675
+ border: 0 !important;
676
+ transform: none !important;
677
+ }
678
+ #sidebar.collapsed #sidebarNavList .nav-item > .relative > div::before,
679
+ #sidebar.collapsed #sidebarNavList .nav-item:hover .relative > div::before {
680
+ background: transparent !important;
681
+ }
682
+ #sidebar.collapsed #sidebarNavList .nav-item i {
683
+ color: #64748b !important;
684
+ }
685
+
686
+ /* Collapsed icon interactions */
687
+ #sidebar.collapsed #sidebarNavList .nav-item {
688
+ border-radius: 0.5rem !important;
689
+ transition: color 120ms ease !important;
690
+ }
691
+ #sidebar.collapsed #sidebarNavList .nav-item:hover i {
692
+ color: #334155 !important;
693
+ }
694
+ #sidebar.collapsed #sidebarNavList .nav-item:hover .relative > div::before {
695
+ background: rgba(148, 163, 184, 0.12) !important;
696
+ }
697
+ #sidebar.collapsed #sidebarNavList .nav-item.active,
698
+ #sidebar.collapsed #sidebarNavList .nav-item[aria-current="page"] {
699
+ background: transparent !important;
700
+ }
701
+ #sidebar.collapsed #sidebarNavList .nav-item.active i,
702
+ #sidebar.collapsed #sidebarNavList .nav-item[aria-current="page"] i {
703
+ color: #0f172a !important;
704
+ }
705
+ #sidebar.collapsed #sidebarNavList .nav-item.active .relative > div::before,
706
+ #sidebar.collapsed #sidebarNavList .nav-item[aria-current="page"] .relative > div::before {
707
+ background: rgba(15, 23, 42, 0.12) !important;
708
+ }