@aquaclawai/aquarium 1.0.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 (517) hide show
  1. package/dist/agent-types/claude-code/index.d.ts +2 -0
  2. package/dist/agent-types/claude-code/index.d.ts.map +1 -0
  3. package/dist/agent-types/claude-code/index.js +2 -0
  4. package/dist/agent-types/claude-code/index.js.map +1 -0
  5. package/dist/agent-types/claude-code/manifest.d.ts +3 -0
  6. package/dist/agent-types/claude-code/manifest.d.ts.map +1 -0
  7. package/dist/agent-types/claude-code/manifest.js +45 -0
  8. package/dist/agent-types/claude-code/manifest.js.map +1 -0
  9. package/dist/agent-types/openclaw/adapter.d.ts +3 -0
  10. package/dist/agent-types/openclaw/adapter.d.ts.map +1 -0
  11. package/dist/agent-types/openclaw/adapter.js +714 -0
  12. package/dist/agent-types/openclaw/adapter.js.map +1 -0
  13. package/dist/agent-types/openclaw/gateway-rpc.d.ts +21 -0
  14. package/dist/agent-types/openclaw/gateway-rpc.d.ts.map +1 -0
  15. package/dist/agent-types/openclaw/gateway-rpc.js +202 -0
  16. package/dist/agent-types/openclaw/gateway-rpc.js.map +1 -0
  17. package/dist/agent-types/openclaw/index.d.ts +3 -0
  18. package/dist/agent-types/openclaw/index.d.ts.map +1 -0
  19. package/dist/agent-types/openclaw/index.js +3 -0
  20. package/dist/agent-types/openclaw/index.js.map +1 -0
  21. package/dist/agent-types/openclaw/manifest.d.ts +137 -0
  22. package/dist/agent-types/openclaw/manifest.d.ts.map +1 -0
  23. package/dist/agent-types/openclaw/manifest.js +191 -0
  24. package/dist/agent-types/openclaw/manifest.js.map +1 -0
  25. package/dist/agent-types/openclaw/provider-registry.d.ts +46 -0
  26. package/dist/agent-types/openclaw/provider-registry.d.ts.map +1 -0
  27. package/dist/agent-types/openclaw/provider-registry.js +108 -0
  28. package/dist/agent-types/openclaw/provider-registry.js.map +1 -0
  29. package/dist/agent-types/openclaw/reverse-adapter.d.ts +7 -0
  30. package/dist/agent-types/openclaw/reverse-adapter.d.ts.map +1 -0
  31. package/dist/agent-types/openclaw/reverse-adapter.js +528 -0
  32. package/dist/agent-types/openclaw/reverse-adapter.js.map +1 -0
  33. package/dist/agent-types/openclaw/security-profiles.d.ts +21 -0
  34. package/dist/agent-types/openclaw/security-profiles.d.ts.map +1 -0
  35. package/dist/agent-types/openclaw/security-profiles.js +251 -0
  36. package/dist/agent-types/openclaw/security-profiles.js.map +1 -0
  37. package/dist/agent-types/openclaw/workspace-templates.d.ts +2 -0
  38. package/dist/agent-types/openclaw/workspace-templates.d.ts.map +1 -0
  39. package/dist/agent-types/openclaw/workspace-templates.js +363 -0
  40. package/dist/agent-types/openclaw/workspace-templates.js.map +1 -0
  41. package/dist/agent-types/opencode/index.d.ts +2 -0
  42. package/dist/agent-types/opencode/index.d.ts.map +1 -0
  43. package/dist/agent-types/opencode/index.js +2 -0
  44. package/dist/agent-types/opencode/index.js.map +1 -0
  45. package/dist/agent-types/opencode/manifest.d.ts +3 -0
  46. package/dist/agent-types/opencode/manifest.d.ts.map +1 -0
  47. package/dist/agent-types/opencode/manifest.js +63 -0
  48. package/dist/agent-types/opencode/manifest.js.map +1 -0
  49. package/dist/agent-types/registry.d.ts +4 -0
  50. package/dist/agent-types/registry.d.ts.map +1 -0
  51. package/dist/agent-types/registry.js +24 -0
  52. package/dist/agent-types/registry.js.map +1 -0
  53. package/dist/agent-types/types.d.ts +169 -0
  54. package/dist/agent-types/types.d.ts.map +1 -0
  55. package/dist/agent-types/types.js +2 -0
  56. package/dist/agent-types/types.js.map +1 -0
  57. package/dist/cli.d.ts +3 -0
  58. package/dist/cli.d.ts.map +1 -0
  59. package/dist/cli.js +72 -0
  60. package/dist/cli.js.map +1 -0
  61. package/dist/config.d.ts +68 -0
  62. package/dist/config.d.ts.map +1 -0
  63. package/dist/config.js +98 -0
  64. package/dist/config.js.map +1 -0
  65. package/dist/db/adapter.d.ts +21 -0
  66. package/dist/db/adapter.d.ts.map +1 -0
  67. package/dist/db/adapter.js +11 -0
  68. package/dist/db/adapter.js.map +1 -0
  69. package/dist/db/index.d.ts +4 -0
  70. package/dist/db/index.d.ts.map +1 -0
  71. package/dist/db/index.js +5 -0
  72. package/dist/db/index.js.map +1 -0
  73. package/dist/db/knexfile.d.ts +5 -0
  74. package/dist/db/knexfile.d.ts.map +1 -0
  75. package/dist/db/knexfile.js +34 -0
  76. package/dist/db/knexfile.js.map +1 -0
  77. package/dist/db/migration-helpers.d.ts +45 -0
  78. package/dist/db/migration-helpers.d.ts.map +1 -0
  79. package/dist/db/migration-helpers.js +90 -0
  80. package/dist/db/migration-helpers.js.map +1 -0
  81. package/dist/db/migrations/001_initial.d.ts +4 -0
  82. package/dist/db/migrations/001_initial.d.ts.map +1 -0
  83. package/dist/db/migrations/001_initial.js +56 -0
  84. package/dist/db/migrations/001_initial.js.map +1 -0
  85. package/dist/db/migrations/002_instance_config.d.ts +4 -0
  86. package/dist/db/migrations/002_instance_config.d.ts.map +1 -0
  87. package/dist/db/migrations/002_instance_config.js +12 -0
  88. package/dist/db/migrations/002_instance_config.js.map +1 -0
  89. package/dist/db/migrations/003_instance_status_message.d.ts +4 -0
  90. package/dist/db/migrations/003_instance_status_message.d.ts.map +1 -0
  91. package/dist/db/migrations/003_instance_status_message.js +11 -0
  92. package/dist/db/migrations/003_instance_status_message.js.map +1 -0
  93. package/dist/db/migrations/004_templates.d.ts +4 -0
  94. package/dist/db/migrations/004_templates.d.ts.map +1 -0
  95. package/dist/db/migrations/004_templates.js +95 -0
  96. package/dist/db/migrations/004_templates.js.map +1 -0
  97. package/dist/db/migrations/005_group_chats.d.ts +4 -0
  98. package/dist/db/migrations/005_group_chats.d.ts.map +1 -0
  99. package/dist/db/migrations/005_group_chats.js +66 -0
  100. package/dist/db/migrations/005_group_chats.js.map +1 -0
  101. package/dist/db/migrations/006_template_setup.d.ts +4 -0
  102. package/dist/db/migrations/006_template_setup.d.ts.map +1 -0
  103. package/dist/db/migrations/006_template_setup.js +14 -0
  104. package/dist/db/migrations/006_template_setup.js.map +1 -0
  105. package/dist/db/migrations/007_group_chat_v2.d.ts +4 -0
  106. package/dist/db/migrations/007_group_chat_v2.d.ts.map +1 -0
  107. package/dist/db/migrations/007_group_chat_v2.js +59 -0
  108. package/dist/db/migrations/007_group_chat_v2.js.map +1 -0
  109. package/dist/db/migrations/008_default_provider_openrouter.d.ts +4 -0
  110. package/dist/db/migrations/008_default_provider_openrouter.d.ts.map +1 -0
  111. package/dist/db/migrations/008_default_provider_openrouter.js +33 -0
  112. package/dist/db/migrations/008_default_provider_openrouter.js.map +1 -0
  113. package/dist/db/migrations/009_opencode_default_provider_openrouter.d.ts +4 -0
  114. package/dist/db/migrations/009_opencode_default_provider_openrouter.d.ts.map +1 -0
  115. package/dist/db/migrations/009_opencode_default_provider_openrouter.js +33 -0
  116. package/dist/db/migrations/009_opencode_default_provider_openrouter.js.map +1 -0
  117. package/dist/db/migrations/010_fix_null_default_provider.d.ts +4 -0
  118. package/dist/db/migrations/010_fix_null_default_provider.d.ts.map +1 -0
  119. package/dist/db/migrations/010_fix_null_default_provider.js +24 -0
  120. package/dist/db/migrations/010_fix_null_default_provider.js.map +1 -0
  121. package/dist/db/migrations/011_snapshots.d.ts +4 -0
  122. package/dist/db/migrations/011_snapshots.d.ts.map +1 -0
  123. package/dist/db/migrations/011_snapshots.js +27 -0
  124. package/dist/db/migrations/011_snapshots.js.map +1 -0
  125. package/dist/db/migrations/013_official_templates.d.ts +4 -0
  126. package/dist/db/migrations/013_official_templates.d.ts.map +1 -0
  127. package/dist/db/migrations/013_official_templates.js +173 -0
  128. package/dist/db/migrations/013_official_templates.js.map +1 -0
  129. package/dist/db/migrations/014_notifications.d.ts +4 -0
  130. package/dist/db/migrations/014_notifications.d.ts.map +1 -0
  131. package/dist/db/migrations/014_notifications.js +45 -0
  132. package/dist/db/migrations/014_notifications.js.map +1 -0
  133. package/dist/db/migrations/015_security_profile.d.ts +4 -0
  134. package/dist/db/migrations/015_security_profile.d.ts.map +1 -0
  135. package/dist/db/migrations/015_security_profile.js +14 -0
  136. package/dist/db/migrations/015_security_profile.js.map +1 -0
  137. package/dist/db/migrations/016_template_security.d.ts +4 -0
  138. package/dist/db/migrations/016_template_security.d.ts.map +1 -0
  139. package/dist/db/migrations/016_template_security.js +12 -0
  140. package/dist/db/migrations/016_template_security.js.map +1 -0
  141. package/dist/db/migrations/017_auth_events.d.ts +4 -0
  142. package/dist/db/migrations/017_auth_events.d.ts.map +1 -0
  143. package/dist/db/migrations/017_auth_events.js +19 -0
  144. package/dist/db/migrations/017_auth_events.js.map +1 -0
  145. package/dist/db/migrations/018_skill_market.d.ts +4 -0
  146. package/dist/db/migrations/018_skill_market.d.ts.map +1 -0
  147. package/dist/db/migrations/018_skill_market.js +21 -0
  148. package/dist/db/migrations/018_skill_market.js.map +1 -0
  149. package/dist/db/migrations/019_credential_audit_log.d.ts +4 -0
  150. package/dist/db/migrations/019_credential_audit_log.d.ts.map +1 -0
  151. package/dist/db/migrations/019_credential_audit_log.js +19 -0
  152. package/dist/db/migrations/019_credential_audit_log.js.map +1 -0
  153. package/dist/db/migrations/020_template_security_score.d.ts +4 -0
  154. package/dist/db/migrations/020_template_security_score.d.ts.map +1 -0
  155. package/dist/db/migrations/020_template_security_score.js +31 -0
  156. package/dist/db/migrations/020_template_security_score.js.map +1 -0
  157. package/dist/db/migrations/021_credential_enhancements.d.ts +4 -0
  158. package/dist/db/migrations/021_credential_enhancements.d.ts.map +1 -0
  159. package/dist/db/migrations/021_credential_enhancements.js +15 -0
  160. package/dist/db/migrations/021_credential_enhancements.js.map +1 -0
  161. package/dist/db/migrations/021_user_roles.d.ts +4 -0
  162. package/dist/db/migrations/021_user_roles.d.ts.map +1 -0
  163. package/dist/db/migrations/021_user_roles.js +11 -0
  164. package/dist/db/migrations/021_user_roles.js.map +1 -0
  165. package/dist/db/migrations/022_config_hash.d.ts +4 -0
  166. package/dist/db/migrations/022_config_hash.d.ts.map +1 -0
  167. package/dist/db/migrations/022_config_hash.js +11 -0
  168. package/dist/db/migrations/022_config_hash.js.map +1 -0
  169. package/dist/db/migrations/023_account_security.d.ts +4 -0
  170. package/dist/db/migrations/023_account_security.d.ts.map +1 -0
  171. package/dist/db/migrations/023_account_security.js +22 -0
  172. package/dist/db/migrations/023_account_security.js.map +1 -0
  173. package/dist/db/migrations/024_wizard_configs.d.ts +4 -0
  174. package/dist/db/migrations/024_wizard_configs.d.ts.map +1 -0
  175. package/dist/db/migrations/024_wizard_configs.js +165 -0
  176. package/dist/db/migrations/024_wizard_configs.js.map +1 -0
  177. package/dist/db/migrations/025_auth_dual_mode.d.ts +4 -0
  178. package/dist/db/migrations/025_auth_dual_mode.d.ts.map +1 -0
  179. package/dist/db/migrations/025_auth_dual_mode.js +19 -0
  180. package/dist/db/migrations/025_auth_dual_mode.js.map +1 -0
  181. package/dist/db/migrations/027_add_avatar_to_instances.d.ts +4 -0
  182. package/dist/db/migrations/027_add_avatar_to_instances.d.ts.map +1 -0
  183. package/dist/db/migrations/027_add_avatar_to_instances.js +11 -0
  184. package/dist/db/migrations/027_add_avatar_to_instances.js.map +1 -0
  185. package/dist/db/migrations/027_add_clerk_id.d.ts +4 -0
  186. package/dist/db/migrations/027_add_clerk_id.d.ts.map +1 -0
  187. package/dist/db/migrations/027_add_clerk_id.js +11 -0
  188. package/dist/db/migrations/027_add_clerk_id.js.map +1 -0
  189. package/dist/db/migrations/028_template_plugin_dependencies.d.ts +4 -0
  190. package/dist/db/migrations/028_template_plugin_dependencies.d.ts.map +1 -0
  191. package/dist/db/migrations/028_template_plugin_dependencies.js +18 -0
  192. package/dist/db/migrations/028_template_plugin_dependencies.js.map +1 -0
  193. package/dist/db/migrations/029_remap_orphan_config_keys.d.ts +21 -0
  194. package/dist/db/migrations/029_remap_orphan_config_keys.d.ts.map +1 -0
  195. package/dist/db/migrations/029_remap_orphan_config_keys.js +63 -0
  196. package/dist/db/migrations/029_remap_orphan_config_keys.js.map +1 -0
  197. package/dist/db/migrations/030_extend_notification_types.d.ts +4 -0
  198. package/dist/db/migrations/030_extend_notification_types.d.ts.map +1 -0
  199. package/dist/db/migrations/030_extend_notification_types.js +10 -0
  200. package/dist/db/migrations/030_extend_notification_types.js.map +1 -0
  201. package/dist/db/migrations/031_default_security_profile_developer.d.ts +9 -0
  202. package/dist/db/migrations/031_default_security_profile_developer.d.ts.map +1 -0
  203. package/dist/db/migrations/031_default_security_profile_developer.js +22 -0
  204. package/dist/db/migrations/031_default_security_profile_developer.js.map +1 -0
  205. package/dist/db/migrations/032_geo_template.d.ts +4 -0
  206. package/dist/db/migrations/032_geo_template.d.ts.map +1 -0
  207. package/dist/db/migrations/032_geo_template.js +133 -0
  208. package/dist/db/migrations/032_geo_template.js.map +1 -0
  209. package/dist/db/migrations/033_jinko_travel_template.d.ts +4 -0
  210. package/dist/db/migrations/033_jinko_travel_template.d.ts.map +1 -0
  211. package/dist/db/migrations/033_jinko_travel_template.js +126 -0
  212. package/dist/db/migrations/033_jinko_travel_template.js.map +1 -0
  213. package/dist/db/postgres-adapter.d.ts +13 -0
  214. package/dist/db/postgres-adapter.d.ts.map +1 -0
  215. package/dist/db/postgres-adapter.js +27 -0
  216. package/dist/db/postgres-adapter.js.map +1 -0
  217. package/dist/db/run-migrations.d.ts +2 -0
  218. package/dist/db/run-migrations.d.ts.map +1 -0
  219. package/dist/db/run-migrations.js +26 -0
  220. package/dist/db/run-migrations.js.map +1 -0
  221. package/dist/db/sqlite-adapter.d.ts +13 -0
  222. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  223. package/dist/db/sqlite-adapter.js +29 -0
  224. package/dist/db/sqlite-adapter.js.map +1 -0
  225. package/dist/ee/litellm/litellm-key-manager.d.ts +16 -0
  226. package/dist/ee/litellm/litellm-key-manager.d.ts.map +1 -0
  227. package/dist/ee/litellm/litellm-key-manager.js +16 -0
  228. package/dist/ee/litellm/litellm-key-manager.js.map +1 -0
  229. package/dist/ee/litellm/litellm-model-seeder.d.ts +6 -0
  230. package/dist/ee/litellm/litellm-model-seeder.d.ts.map +1 -0
  231. package/dist/ee/litellm/litellm-model-seeder.js +6 -0
  232. package/dist/ee/litellm/litellm-model-seeder.js.map +1 -0
  233. package/dist/index.ce.d.ts +2 -0
  234. package/dist/index.ce.d.ts.map +1 -0
  235. package/dist/index.ce.js +12 -0
  236. package/dist/index.ce.js.map +1 -0
  237. package/dist/middleware/auth.d.ts +30 -0
  238. package/dist/middleware/auth.d.ts.map +1 -0
  239. package/dist/middleware/auth.js +86 -0
  240. package/dist/middleware/auth.js.map +1 -0
  241. package/dist/middleware/dynamic-middleware.d.ts +7 -0
  242. package/dist/middleware/dynamic-middleware.d.ts.map +1 -0
  243. package/dist/middleware/dynamic-middleware.js +46 -0
  244. package/dist/middleware/dynamic-middleware.js.map +1 -0
  245. package/dist/middleware/log-redaction.d.ts +2 -0
  246. package/dist/middleware/log-redaction.d.ts.map +1 -0
  247. package/dist/middleware/log-redaction.js +56 -0
  248. package/dist/middleware/log-redaction.js.map +1 -0
  249. package/dist/routes/admin.d.ts +3 -0
  250. package/dist/routes/admin.d.ts.map +1 -0
  251. package/dist/routes/admin.js +491 -0
  252. package/dist/routes/admin.js.map +1 -0
  253. package/dist/routes/agent-types.d.ts +3 -0
  254. package/dist/routes/agent-types.d.ts.map +1 -0
  255. package/dist/routes/agent-types.js +85 -0
  256. package/dist/routes/agent-types.js.map +1 -0
  257. package/dist/routes/auth.d.ts +3 -0
  258. package/dist/routes/auth.d.ts.map +1 -0
  259. package/dist/routes/auth.js +242 -0
  260. package/dist/routes/auth.js.map +1 -0
  261. package/dist/routes/channels.d.ts +3 -0
  262. package/dist/routes/channels.d.ts.map +1 -0
  263. package/dist/routes/channels.js +527 -0
  264. package/dist/routes/channels.js.map +1 -0
  265. package/dist/routes/credentials.d.ts +3 -0
  266. package/dist/routes/credentials.d.ts.map +1 -0
  267. package/dist/routes/credentials.js +81 -0
  268. package/dist/routes/credentials.js.map +1 -0
  269. package/dist/routes/dashboard.d.ts +3 -0
  270. package/dist/routes/dashboard.d.ts.map +1 -0
  271. package/dist/routes/dashboard.js +75 -0
  272. package/dist/routes/dashboard.js.map +1 -0
  273. package/dist/routes/exec-approval.d.ts +3 -0
  274. package/dist/routes/exec-approval.d.ts.map +1 -0
  275. package/dist/routes/exec-approval.js +60 -0
  276. package/dist/routes/exec-approval.js.map +1 -0
  277. package/dist/routes/group-chats.d.ts +3 -0
  278. package/dist/routes/group-chats.d.ts.map +1 -0
  279. package/dist/routes/group-chats.js +190 -0
  280. package/dist/routes/group-chats.js.map +1 -0
  281. package/dist/routes/instance-files.d.ts +3 -0
  282. package/dist/routes/instance-files.d.ts.map +1 -0
  283. package/dist/routes/instance-files.js +255 -0
  284. package/dist/routes/instance-files.js.map +1 -0
  285. package/dist/routes/instance-proxy.d.ts +40 -0
  286. package/dist/routes/instance-proxy.d.ts.map +1 -0
  287. package/dist/routes/instance-proxy.js +318 -0
  288. package/dist/routes/instance-proxy.js.map +1 -0
  289. package/dist/routes/instances.d.ts +3 -0
  290. package/dist/routes/instances.d.ts.map +1 -0
  291. package/dist/routes/instances.js +325 -0
  292. package/dist/routes/instances.js.map +1 -0
  293. package/dist/routes/metadata.d.ts +3 -0
  294. package/dist/routes/metadata.d.ts.map +1 -0
  295. package/dist/routes/metadata.js +13 -0
  296. package/dist/routes/metadata.js.map +1 -0
  297. package/dist/routes/notifications.d.ts +3 -0
  298. package/dist/routes/notifications.d.ts.map +1 -0
  299. package/dist/routes/notifications.js +104 -0
  300. package/dist/routes/notifications.js.map +1 -0
  301. package/dist/routes/oauth.d.ts +3 -0
  302. package/dist/routes/oauth.d.ts.map +1 -0
  303. package/dist/routes/oauth.js +516 -0
  304. package/dist/routes/oauth.js.map +1 -0
  305. package/dist/routes/rpc-proxy.d.ts +3 -0
  306. package/dist/routes/rpc-proxy.d.ts.map +1 -0
  307. package/dist/routes/rpc-proxy.js +116 -0
  308. package/dist/routes/rpc-proxy.js.map +1 -0
  309. package/dist/routes/security.d.ts +3 -0
  310. package/dist/routes/security.d.ts.map +1 -0
  311. package/dist/routes/security.js +43 -0
  312. package/dist/routes/security.js.map +1 -0
  313. package/dist/routes/skills.d.ts +3 -0
  314. package/dist/routes/skills.d.ts.map +1 -0
  315. package/dist/routes/skills.js +48 -0
  316. package/dist/routes/skills.js.map +1 -0
  317. package/dist/routes/snapshots.d.ts +3 -0
  318. package/dist/routes/snapshots.d.ts.map +1 -0
  319. package/dist/routes/snapshots.js +99 -0
  320. package/dist/routes/snapshots.js.map +1 -0
  321. package/dist/routes/system-config.d.ts +3 -0
  322. package/dist/routes/system-config.d.ts.map +1 -0
  323. package/dist/routes/system-config.js +75 -0
  324. package/dist/routes/system-config.js.map +1 -0
  325. package/dist/routes/templates.d.ts +3 -0
  326. package/dist/routes/templates.d.ts.map +1 -0
  327. package/dist/routes/templates.js +256 -0
  328. package/dist/routes/templates.js.map +1 -0
  329. package/dist/routes/ui-proxy.d.ts +3 -0
  330. package/dist/routes/ui-proxy.d.ts.map +1 -0
  331. package/dist/routes/ui-proxy.js +90 -0
  332. package/dist/routes/ui-proxy.js.map +1 -0
  333. package/dist/routes/user-credentials.d.ts +3 -0
  334. package/dist/routes/user-credentials.d.ts.map +1 -0
  335. package/dist/routes/user-credentials.js +85 -0
  336. package/dist/routes/user-credentials.js.map +1 -0
  337. package/dist/routes/users.d.ts +3 -0
  338. package/dist/routes/users.d.ts.map +1 -0
  339. package/dist/routes/users.js +30 -0
  340. package/dist/routes/users.js.map +1 -0
  341. package/dist/runtime/docker.d.ts +37 -0
  342. package/dist/runtime/docker.d.ts.map +1 -0
  343. package/dist/runtime/docker.js +612 -0
  344. package/dist/runtime/docker.js.map +1 -0
  345. package/dist/runtime/factory.d.ts +4 -0
  346. package/dist/runtime/factory.d.ts.map +1 -0
  347. package/dist/runtime/factory.js +21 -0
  348. package/dist/runtime/factory.js.map +1 -0
  349. package/dist/runtime/kubernetes.d.ts +34 -0
  350. package/dist/runtime/kubernetes.d.ts.map +1 -0
  351. package/dist/runtime/kubernetes.js +513 -0
  352. package/dist/runtime/kubernetes.js.map +1 -0
  353. package/dist/runtime/types.d.ts +81 -0
  354. package/dist/runtime/types.d.ts.map +1 -0
  355. package/dist/runtime/types.js +2 -0
  356. package/dist/runtime/types.js.map +1 -0
  357. package/dist/server-core.d.ts +26 -0
  358. package/dist/server-core.d.ts.map +1 -0
  359. package/dist/server-core.js +184 -0
  360. package/dist/server-core.js.map +1 -0
  361. package/dist/services/config-diff.d.ts +6 -0
  362. package/dist/services/config-diff.d.ts.map +1 -0
  363. package/dist/services/config-diff.js +85 -0
  364. package/dist/services/config-diff.js.map +1 -0
  365. package/dist/services/config-field-meta.d.ts +22 -0
  366. package/dist/services/config-field-meta.d.ts.map +1 -0
  367. package/dist/services/config-field-meta.js +177 -0
  368. package/dist/services/config-field-meta.js.map +1 -0
  369. package/dist/services/config-validator.d.ts +8 -0
  370. package/dist/services/config-validator.d.ts.map +1 -0
  371. package/dist/services/config-validator.js +59 -0
  372. package/dist/services/config-validator.js.map +1 -0
  373. package/dist/services/credential-audit.d.ts +13 -0
  374. package/dist/services/credential-audit.d.ts.map +1 -0
  375. package/dist/services/credential-audit.js +18 -0
  376. package/dist/services/credential-audit.js.map +1 -0
  377. package/dist/services/credential-store.d.ts +28 -0
  378. package/dist/services/credential-store.d.ts.map +1 -0
  379. package/dist/services/credential-store.js +99 -0
  380. package/dist/services/credential-store.js.map +1 -0
  381. package/dist/services/dlp-scanner.d.ts +9 -0
  382. package/dist/services/dlp-scanner.d.ts.map +1 -0
  383. package/dist/services/dlp-scanner.js +90 -0
  384. package/dist/services/dlp-scanner.js.map +1 -0
  385. package/dist/services/gateway-event-relay.d.ts +53 -0
  386. package/dist/services/gateway-event-relay.d.ts.map +1 -0
  387. package/dist/services/gateway-event-relay.js +519 -0
  388. package/dist/services/gateway-event-relay.js.map +1 -0
  389. package/dist/services/group-chat-manager.d.ts +17 -0
  390. package/dist/services/group-chat-manager.d.ts.map +1 -0
  391. package/dist/services/group-chat-manager.js +613 -0
  392. package/dist/services/group-chat-manager.js.map +1 -0
  393. package/dist/services/health-monitor.d.ts +3 -0
  394. package/dist/services/health-monitor.d.ts.map +1 -0
  395. package/dist/services/health-monitor.js +342 -0
  396. package/dist/services/health-monitor.js.map +1 -0
  397. package/dist/services/instance-manager.d.ts +20 -0
  398. package/dist/services/instance-manager.d.ts.map +1 -0
  399. package/dist/services/instance-manager.js +833 -0
  400. package/dist/services/instance-manager.js.map +1 -0
  401. package/dist/services/metadata-store.d.ts +3 -0
  402. package/dist/services/metadata-store.d.ts.map +1 -0
  403. package/dist/services/metadata-store.js +34 -0
  404. package/dist/services/metadata-store.js.map +1 -0
  405. package/dist/services/notification-store.d.ts +24 -0
  406. package/dist/services/notification-store.d.ts.map +1 -0
  407. package/dist/services/notification-store.js +216 -0
  408. package/dist/services/notification-store.js.map +1 -0
  409. package/dist/services/openrouter-models.d.ts +13 -0
  410. package/dist/services/openrouter-models.d.ts.map +1 -0
  411. package/dist/services/openrouter-models.js +46 -0
  412. package/dist/services/openrouter-models.js.map +1 -0
  413. package/dist/services/output-filter.d.ts +8 -0
  414. package/dist/services/output-filter.d.ts.map +1 -0
  415. package/dist/services/output-filter.js +230 -0
  416. package/dist/services/output-filter.js.map +1 -0
  417. package/dist/services/prompt-guard.d.ts +6 -0
  418. package/dist/services/prompt-guard.d.ts.map +1 -0
  419. package/dist/services/prompt-guard.js +165 -0
  420. package/dist/services/prompt-guard.js.map +1 -0
  421. package/dist/services/security-event-service.d.ts +11 -0
  422. package/dist/services/security-event-service.d.ts.map +1 -0
  423. package/dist/services/security-event-service.js +201 -0
  424. package/dist/services/security-event-service.js.map +1 -0
  425. package/dist/services/snapshot-store.d.ts +21 -0
  426. package/dist/services/snapshot-store.d.ts.map +1 -0
  427. package/dist/services/snapshot-store.js +330 -0
  428. package/dist/services/snapshot-store.js.map +1 -0
  429. package/dist/services/system-config.d.ts +15 -0
  430. package/dist/services/system-config.d.ts.map +1 -0
  431. package/dist/services/system-config.js +80 -0
  432. package/dist/services/system-config.js.map +1 -0
  433. package/dist/services/template-file-format.d.ts +32 -0
  434. package/dist/services/template-file-format.d.ts.map +1 -0
  435. package/dist/services/template-file-format.js +125 -0
  436. package/dist/services/template-file-format.js.map +1 -0
  437. package/dist/services/template-store.d.ts +21 -0
  438. package/dist/services/template-store.d.ts.map +1 -0
  439. package/dist/services/template-store.js +701 -0
  440. package/dist/services/template-store.js.map +1 -0
  441. package/dist/services/user-credential-store.d.ts +20 -0
  442. package/dist/services/user-credential-store.d.ts.map +1 -0
  443. package/dist/services/user-credential-store.js +243 -0
  444. package/dist/services/user-credential-store.js.map +1 -0
  445. package/dist/services/wizard-config-store.d.ts +38 -0
  446. package/dist/services/wizard-config-store.d.ts.map +1 -0
  447. package/dist/services/wizard-config-store.js +70 -0
  448. package/dist/services/wizard-config-store.js.map +1 -0
  449. package/dist/web-dist/assets/AdminPage-BrAU67Dg.js +1 -0
  450. package/dist/web-dist/assets/AgentAvatar-BKJckc1W.js +1 -0
  451. package/dist/web-dist/assets/AgentAvatar-Cq-M5jMd.css +1 -0
  452. package/dist/web-dist/assets/AppLayout-Bf0v_2wK.css +1 -0
  453. package/dist/web-dist/assets/AppLayout-DXgV0atq.js +1 -0
  454. package/dist/web-dist/assets/AssistantChatPage-uVLgKLay.js +6 -0
  455. package/dist/web-dist/assets/AssistantEditPage-Bab1X-DA.js +1 -0
  456. package/dist/web-dist/assets/AssistantVersionsPage-BQRw3BUF.js +1 -0
  457. package/dist/web-dist/assets/AvatarPicker-DmnkD8Rb.js +1 -0
  458. package/dist/web-dist/assets/AvatarPicker-LHUepNFa.css +1 -0
  459. package/dist/web-dist/assets/CeAuthProvider-38_x9VGA.js +1 -0
  460. package/dist/web-dist/assets/ChatHubPage-2l4cKq0x.css +1 -0
  461. package/dist/web-dist/assets/ChatHubPage-B2WduoUM.js +1 -0
  462. package/dist/web-dist/assets/ChatTab-CHpjEu8M.js +6 -0
  463. package/dist/web-dist/assets/CreateWizardPage-DFEQ3VX3.js +47 -0
  464. package/dist/web-dist/assets/CreateWizardPage-IqNXDOER.css +1 -0
  465. package/dist/web-dist/assets/CredentialsPage-CDeXpnLG.js +1 -0
  466. package/dist/web-dist/assets/CredentialsPage-aI4kLoJD.css +1 -0
  467. package/dist/web-dist/assets/DocsAboutPage-CMbxiw1u.js +26 -0
  468. package/dist/web-dist/assets/DocsChannelsPage-CtmKYKK_.js +1 -0
  469. package/dist/web-dist/assets/DocsGettingStartedPage-CpM7o8sw.js +1 -0
  470. package/dist/web-dist/assets/DocsGroupChatsPage-7w-RVSJR.js +1 -0
  471. package/dist/web-dist/assets/DocsHomePage-BGEU5xBg.js +1 -0
  472. package/dist/web-dist/assets/DocsInstancesPage-Sewnw_x7.js +1 -0
  473. package/dist/web-dist/assets/DocsLayout-S7-ONZwP.js +1 -0
  474. package/dist/web-dist/assets/DocsProvidersPage-MeWneL5K.js +1 -0
  475. package/dist/web-dist/assets/DocsSkillsPage-CzsHPXxE.js +1 -0
  476. package/dist/web-dist/assets/DocsTemplatesPage-BXASAEoO.js +1 -0
  477. package/dist/web-dist/assets/DocsWorkspacePage-qYNeK_YS.js +24 -0
  478. package/dist/web-dist/assets/ExportWizardPage-BhNvovbU.js +3 -0
  479. package/dist/web-dist/assets/ExportWizardPage-Cp-KSYUy.css +1 -0
  480. package/dist/web-dist/assets/GoogleOAuthCallback-CBvLawe2.js +1 -0
  481. package/dist/web-dist/assets/GroupChatPage-rMfhmtsX.js +1 -0
  482. package/dist/web-dist/assets/GroupChatsListPage-BOwxHFfA.js +1 -0
  483. package/dist/web-dist/assets/InstancePage-BBL68DKB.js +1 -0
  484. package/dist/web-dist/assets/InstancePage-CzysRY40.css +1 -0
  485. package/dist/web-dist/assets/MyAssistantsPage-B808ZfHg.css +1 -0
  486. package/dist/web-dist/assets/MyAssistantsPage-q3-hNMth.js +1 -0
  487. package/dist/web-dist/assets/ProfilePage-Dx8YdU59.js +1 -0
  488. package/dist/web-dist/assets/ProfilePage-JMOkUDx7.css +1 -0
  489. package/dist/web-dist/assets/SessionDrawer-Ba7pbZDJ.css +1 -0
  490. package/dist/web-dist/assets/SessionDrawer-CXzEQAfF.js +1 -0
  491. package/dist/web-dist/assets/SystemConfigPage-4dvxADwi.js +1 -0
  492. package/dist/web-dist/assets/SystemConfigPage-DRqVfLGt.css +1 -0
  493. package/dist/web-dist/assets/TemplatesPage-DqXuG-Gy.css +1 -0
  494. package/dist/web-dist/assets/TemplatesPage-HMS__ODO.js +1 -0
  495. package/dist/web-dist/assets/TestLoginPage-xVQL0lYP.js +1 -0
  496. package/dist/web-dist/assets/ThemeToggle-DymKEYXG.js +1 -0
  497. package/dist/web-dist/assets/WorkbenchPage-Bymo4SSt.css +1 -0
  498. package/dist/web-dist/assets/WorkbenchPage-ST3hVrbL.js +33 -0
  499. package/dist/web-dist/assets/api-B5psysvQ.js +1 -0
  500. package/dist/web-dist/assets/clock-dRyRszad.js +1 -0
  501. package/dist/web-dist/assets/createLucideIcon-DiGX-lN4.js +1 -0
  502. package/dist/web-dist/assets/group-chat-9BaA9G_8.css +1 -0
  503. package/dist/web-dist/assets/index-BqzqZJ96.js +26 -0
  504. package/dist/web-dist/assets/index-DyrDN1Of.css +1 -0
  505. package/dist/web-dist/assets/index-wWimwgy7.js +1 -0
  506. package/dist/web-dist/assets/provider-display-BgrE7u33.js +1 -0
  507. package/dist/web-dist/assets/types-1lNWpzYk.js +57 -0
  508. package/dist/web-dist/assets/types-B6ttO-6G.css +1 -0
  509. package/dist/web-dist/assets/useTranslation-B-8kenfJ.js +1 -0
  510. package/dist/web-dist/assets/zap-CVBnETFW.js +1 -0
  511. package/dist/web-dist/index.html +31 -0
  512. package/dist/web-dist/vite.svg +1 -0
  513. package/dist/ws/index.d.ts +7 -0
  514. package/dist/ws/index.d.ts.map +1 -0
  515. package/dist/ws/index.js +112 -0
  516. package/dist/ws/index.js.map +1 -0
  517. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-store.js","sourceRoot":"","sources":["../../src/services/template-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type CredentialAuditSource } from './credential-audit.js';
2
+ import type { UserCredentialExtended, CredentialRole, CredentialStatus } from '@aquarium/shared';
3
+ export interface UserCredentialAuditContext {
4
+ source: CredentialAuditSource;
5
+ ipAddress?: string | null;
6
+ }
7
+ export declare function listUserCredentials(userId: string): Promise<UserCredentialExtended[]>;
8
+ export declare function addUserCredential(userId: string, provider: string, credentialType: string, value: string, displayName?: string, metadata?: Record<string, unknown>, audit?: UserCredentialAuditContext): Promise<UserCredentialExtended>;
9
+ export declare function updateUserCredential(credentialId: string, userId: string, updates: {
10
+ value?: string;
11
+ displayName?: string;
12
+ metadata?: Record<string, unknown>;
13
+ role?: CredentialRole;
14
+ status?: CredentialStatus;
15
+ }, audit?: UserCredentialAuditContext): Promise<UserCredentialExtended | null>;
16
+ export declare function deleteUserCredential(credentialId: string, userId: string, audit?: UserCredentialAuditContext): Promise<boolean>;
17
+ export declare function updateCredentialStatus(credentialId: string, userId: string, status: CredentialStatus, audit?: UserCredentialAuditContext): Promise<UserCredentialExtended | null>;
18
+ export declare function resolveCredential(instanceId: string, userId: string, provider: string, credentialType: string, audit?: UserCredentialAuditContext): Promise<string>;
19
+ export declare function resolveCredentialPlaceholders(mcpServers: Record<string, unknown>, instanceId: string, userId: string, audit?: UserCredentialAuditContext): Promise<Record<string, unknown>>;
20
+ //# sourceMappingURL=user-credential-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-credential-store.d.ts","sourceRoot":"","sources":["../../src/services/user-credential-store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAkB,sBAAsB,EAAkB,cAAc,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjI,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAkDD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAK3F;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACtC,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAiCjC;AAED,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,EACvI,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAmCxC;AAED,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BrI;AAED,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAkBxC;AAID,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8DlC"}
@@ -0,0 +1,243 @@
1
+ import { db } from '../db/index.js';
2
+ import { encrypt, decrypt } from './credential-store.js';
3
+ import { logCredentialAudit } from './credential-audit.js';
4
+ function toUserCredential(row) {
5
+ return {
6
+ id: row.id,
7
+ userId: row.user_id,
8
+ provider: row.provider,
9
+ credentialType: row.credential_type,
10
+ displayName: row.display_name,
11
+ metadata: row.metadata ?? {},
12
+ createdAt: String(row.created_at),
13
+ updatedAt: String(row.updated_at),
14
+ };
15
+ }
16
+ function maskCredentialValue(encryptedValue) {
17
+ try {
18
+ const raw = decrypt(encryptedValue);
19
+ if (raw.length <= 8)
20
+ return '****';
21
+ return `${raw.slice(0, 4)}...${raw.slice(-4)}`;
22
+ }
23
+ catch {
24
+ return '****';
25
+ }
26
+ }
27
+ function toUserCredentialExtended(row) {
28
+ return {
29
+ ...toUserCredential(row),
30
+ role: (row.role ?? 'default'),
31
+ status: (row.status ?? 'active'),
32
+ usageCount: row.usage_count ?? 0,
33
+ maskedValue: maskCredentialValue(row.encrypted_value),
34
+ };
35
+ }
36
+ export async function listUserCredentials(userId) {
37
+ const rows = await db('user_credentials')
38
+ .where({ user_id: userId })
39
+ .orderBy('provider');
40
+ return rows.map(toUserCredentialExtended);
41
+ }
42
+ export async function addUserCredential(userId, provider, credentialType, value, displayName, metadata = {}, audit) {
43
+ const encryptedValue = encrypt(value);
44
+ const [row] = await db('user_credentials')
45
+ .insert({
46
+ user_id: userId,
47
+ provider,
48
+ credential_type: credentialType,
49
+ encrypted_value: encryptedValue,
50
+ display_name: displayName ?? null,
51
+ metadata: JSON.stringify(metadata),
52
+ })
53
+ .onConflict(['user_id', 'provider', 'credential_type'])
54
+ .merge({
55
+ encrypted_value: encryptedValue,
56
+ display_name: displayName ?? null,
57
+ metadata: JSON.stringify(metadata),
58
+ updated_at: db.fn.now(),
59
+ })
60
+ .returning('*');
61
+ if (audit) {
62
+ logCredentialAudit({
63
+ action: 'create',
64
+ userId,
65
+ provider,
66
+ credentialType,
67
+ source: audit.source,
68
+ ipAddress: audit.ipAddress,
69
+ });
70
+ }
71
+ return toUserCredentialExtended(row);
72
+ }
73
+ export async function updateUserCredential(credentialId, userId, updates, audit) {
74
+ const patch = { updated_at: db.fn.now() };
75
+ if (updates.value !== undefined) {
76
+ patch.encrypted_value = encrypt(updates.value);
77
+ }
78
+ if (updates.displayName !== undefined) {
79
+ patch.display_name = updates.displayName;
80
+ }
81
+ if (updates.metadata !== undefined) {
82
+ patch.metadata = JSON.stringify(updates.metadata);
83
+ }
84
+ if (updates.role !== undefined) {
85
+ patch.role = updates.role;
86
+ }
87
+ if (updates.status !== undefined) {
88
+ patch.status = updates.status;
89
+ }
90
+ const [row] = await db('user_credentials')
91
+ .where({ id: credentialId, user_id: userId })
92
+ .update(patch)
93
+ .returning('*');
94
+ if (row && audit) {
95
+ logCredentialAudit({
96
+ action: 'update',
97
+ userId,
98
+ provider: row.provider,
99
+ credentialType: row.credential_type,
100
+ source: audit.source,
101
+ ipAddress: audit.ipAddress,
102
+ });
103
+ }
104
+ return row ? toUserCredentialExtended(row) : null;
105
+ }
106
+ export async function deleteUserCredential(credentialId, userId, audit) {
107
+ let provider = '';
108
+ let credentialType = '';
109
+ if (audit) {
110
+ const existing = await db('user_credentials').where({ id: credentialId, user_id: userId }).first();
111
+ if (existing) {
112
+ provider = existing.provider;
113
+ credentialType = existing.credential_type;
114
+ }
115
+ }
116
+ const count = await db('user_credentials')
117
+ .where({ id: credentialId, user_id: userId })
118
+ .delete();
119
+ if (count > 0 && audit && provider) {
120
+ logCredentialAudit({
121
+ action: 'delete',
122
+ userId,
123
+ provider,
124
+ credentialType,
125
+ source: audit.source,
126
+ ipAddress: audit.ipAddress,
127
+ });
128
+ }
129
+ return count > 0;
130
+ }
131
+ export async function updateCredentialStatus(credentialId, userId, status, audit) {
132
+ const [row] = await db('user_credentials')
133
+ .where({ id: credentialId, user_id: userId })
134
+ .update({ status, updated_at: db.fn.now() })
135
+ .returning('*');
136
+ if (row && audit) {
137
+ logCredentialAudit({
138
+ action: 'update',
139
+ userId,
140
+ provider: row.provider,
141
+ credentialType: row.credential_type,
142
+ source: audit.source,
143
+ ipAddress: audit.ipAddress,
144
+ });
145
+ }
146
+ return row ? toUserCredentialExtended(row) : null;
147
+ }
148
+ const CREDENTIAL_PLACEHOLDER_RE = /\$\{CREDENTIAL:([^:}]+):([^:}]+)\}/g;
149
+ export async function resolveCredential(instanceId, userId, provider, credentialType, audit) {
150
+ if (instanceId) {
151
+ const instanceCred = await db('instance_credentials')
152
+ .where({ instance_id: instanceId, provider, credential_type: credentialType })
153
+ .first();
154
+ if (instanceCred) {
155
+ if (audit) {
156
+ logCredentialAudit({
157
+ action: 'resolve',
158
+ userId,
159
+ instanceId,
160
+ provider,
161
+ credentialType,
162
+ source: audit.source,
163
+ ipAddress: audit.ipAddress,
164
+ });
165
+ }
166
+ return decrypt(instanceCred.encrypted_value);
167
+ }
168
+ }
169
+ const userCred = await db('user_credentials')
170
+ .where({ user_id: userId, provider, credential_type: credentialType })
171
+ .first();
172
+ if (userCred) {
173
+ if (audit) {
174
+ logCredentialAudit({
175
+ action: 'resolve',
176
+ userId,
177
+ instanceId,
178
+ provider,
179
+ credentialType,
180
+ source: audit.source,
181
+ ipAddress: audit.ipAddress,
182
+ });
183
+ }
184
+ return decrypt(userCred.encrypted_value);
185
+ }
186
+ throw new Error(`Missing credential: ${provider}/${credentialType}. Configure it in instance or user settings.`);
187
+ }
188
+ export async function resolveCredentialPlaceholders(mcpServers, instanceId, userId, audit) {
189
+ const resolved = {};
190
+ async function resolveValue(value) {
191
+ const matches = [];
192
+ let m;
193
+ // Reset lastIndex since the regex is global
194
+ CREDENTIAL_PLACEHOLDER_RE.lastIndex = 0;
195
+ while ((m = CREDENTIAL_PLACEHOLDER_RE.exec(value)) !== null) {
196
+ matches.push({ full: m[0], provider: m[1], credType: m[2] });
197
+ }
198
+ if (matches.length === 0)
199
+ return value;
200
+ let result = value;
201
+ for (const { full, provider, credType } of matches) {
202
+ const secret = await resolveCredential(instanceId, userId, provider, credType, audit);
203
+ result = result.replace(full, secret);
204
+ }
205
+ return result;
206
+ }
207
+ for (const [serverName, serverConfig] of Object.entries(mcpServers)) {
208
+ if (!serverConfig || typeof serverConfig !== 'object') {
209
+ resolved[serverName] = serverConfig;
210
+ continue;
211
+ }
212
+ const cfg = serverConfig;
213
+ const resolvedCfg = { ...cfg };
214
+ // Resolve credential placeholders in args (e.g. for mcp-remote --header values)
215
+ const args = cfg.args;
216
+ if (Array.isArray(args)) {
217
+ const resolvedArgs = [];
218
+ for (const arg of args) {
219
+ resolvedArgs.push(typeof arg === 'string' ? await resolveValue(arg) : arg);
220
+ }
221
+ resolvedCfg.args = resolvedArgs;
222
+ }
223
+ const env = cfg.env;
224
+ if (env && typeof env === 'object') {
225
+ const resolvedEnv = {};
226
+ for (const [key, value] of Object.entries(env)) {
227
+ resolvedEnv[key] = await resolveValue(value);
228
+ }
229
+ resolvedCfg.env = resolvedEnv;
230
+ }
231
+ const headers = cfg.headers;
232
+ if (headers && typeof headers === 'object') {
233
+ const resolvedHeaders = {};
234
+ for (const [key, value] of Object.entries(headers)) {
235
+ resolvedHeaders[key] = await resolveValue(value);
236
+ }
237
+ resolvedCfg.headers = resolvedHeaders;
238
+ }
239
+ resolved[serverName] = resolvedCfg;
240
+ }
241
+ return resolved;
242
+ }
243
+ //# sourceMappingURL=user-credential-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-credential-store.js","sourceRoot":"","sources":["../../src/services/user-credential-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export type WizardConfigType = 'principles' | 'identity_templates' | 'temperature_presets' | 'context_options' | 'chat_suggestions';
2
+ export interface WizardConfigRow {
3
+ id: string;
4
+ config_type: WizardConfigType;
5
+ agent_type: string;
6
+ locale: string;
7
+ items: unknown[];
8
+ sort_order: number;
9
+ is_active: boolean;
10
+ created_at: Date;
11
+ updated_at: Date;
12
+ }
13
+ export interface WizardConfigs {
14
+ principles: string[];
15
+ identityTemplates: string[];
16
+ temperaturePresets: Array<{
17
+ key: string;
18
+ label: string;
19
+ value: number;
20
+ description?: string;
21
+ }>;
22
+ contextOptions: Array<{
23
+ value: number;
24
+ label: string;
25
+ description?: string;
26
+ }>;
27
+ chatSuggestions: Array<{
28
+ key: string;
29
+ text: string;
30
+ }>;
31
+ }
32
+ export declare function getWizardConfigs(agentType: string, locale?: string): Promise<WizardConfigs>;
33
+ export declare function updateWizardConfig(id: string, items: unknown[]): Promise<void>;
34
+ export declare function addWizardConfig(configType: WizardConfigType, agentType: string, locale: string, items: unknown[]): Promise<string>;
35
+ export declare function listWizardConfigs(agentType?: string, locale?: string): Promise<WizardConfigRow[]>;
36
+ export declare function getWizardConfigById(id: string): Promise<WizardConfigRow | null>;
37
+ export declare function deleteWizardConfig(id: string): Promise<boolean>;
38
+ //# sourceMappingURL=wizard-config-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-config-store.d.ts","sourceRoot":"","sources":["../../src/services/wizard-config-store.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GACxB,YAAY,GACZ,oBAAoB,GACpB,qBAAqB,GACrB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,gBAAgB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,cAAc,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,eAAe,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAkBD,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAAgB,GACvB,OAAO,CAAC,aAAa,CAAC,CAqBxB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAsB,iBAAiB,CACrC,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAW5B;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAGrF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE"}
@@ -0,0 +1,70 @@
1
+ import { db } from '../db/index.js';
2
+ const EMPTY_CONFIGS = {
3
+ principles: [],
4
+ identityTemplates: [],
5
+ temperaturePresets: [],
6
+ contextOptions: [],
7
+ chatSuggestions: [],
8
+ };
9
+ const CONFIG_TYPE_TO_KEY = {
10
+ principles: 'principles',
11
+ identity_templates: 'identityTemplates',
12
+ temperature_presets: 'temperaturePresets',
13
+ context_options: 'contextOptions',
14
+ chat_suggestions: 'chatSuggestions',
15
+ };
16
+ export async function getWizardConfigs(agentType, locale = 'zh-CN') {
17
+ const rows = await db('wizard_configs')
18
+ .where({ agent_type: agentType, is_active: true })
19
+ .whereIn('locale', [locale, 'en-US'])
20
+ .orderBy('sort_order', 'asc');
21
+ const result = { ...EMPTY_CONFIGS };
22
+ const seen = new Set();
23
+ for (const row of rows) {
24
+ const configType = row.config_type;
25
+ const key = CONFIG_TYPE_TO_KEY[configType];
26
+ if (!key)
27
+ continue;
28
+ if (seen.has(configType) && row.locale !== locale)
29
+ continue;
30
+ result[key] = row.items;
31
+ if (row.locale === locale)
32
+ seen.add(configType);
33
+ }
34
+ return result;
35
+ }
36
+ export async function updateWizardConfig(id, items) {
37
+ await db('wizard_configs')
38
+ .where({ id })
39
+ .update({ items: JSON.stringify(items), updated_at: new Date() });
40
+ }
41
+ export async function addWizardConfig(configType, agentType, locale, items) {
42
+ const [{ id }] = await db('wizard_configs')
43
+ .insert({
44
+ config_type: configType,
45
+ agent_type: agentType,
46
+ locale,
47
+ items: JSON.stringify(items),
48
+ })
49
+ .returning('id');
50
+ return id;
51
+ }
52
+ export async function listWizardConfigs(agentType, locale) {
53
+ let query = db('wizard_configs').where('is_active', true);
54
+ if (agentType) {
55
+ query = query.where('agent_type', agentType);
56
+ }
57
+ if (locale) {
58
+ query = query.where('locale', locale);
59
+ }
60
+ return query.orderBy(['config_type', 'locale', 'sort_order']);
61
+ }
62
+ export async function getWizardConfigById(id) {
63
+ const row = await db('wizard_configs').where({ id }).first();
64
+ return row ?? null;
65
+ }
66
+ export async function deleteWizardConfig(id) {
67
+ const deleted = await db('wizard_configs').where({ id }).del();
68
+ return deleted > 0;
69
+ }
70
+ //# sourceMappingURL=wizard-config-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-config-store.js","sourceRoot":"","sources":["../../src/services/wizard-config-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{j as e,r as t,L as M,u as q}from"./index-BqzqZJ96.js";import{a as j}from"./api-B5psysvQ.js";import{u as T}from"./useTranslation-B-8kenfJ.js";function H({stats:a,usageData:l,onSetBudget:x}){const{t:n}=T();return e.jsxs(e.Fragment,{children:[a&&e.jsxs("div",{className:"admin-stats-grid",children:[e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value",children:a.totalUsers}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.totalUsers")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value",children:a.totalInstances}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.totalInstances")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value admin-stat-running",children:a.instancesByStatus.running??0}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.running")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value admin-stat-stopped",children:a.instancesByStatus.stopped??0}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.stopped")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value admin-stat-error",children:a.instancesByStatus.error??0}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.error")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value",children:a.recentSignups}),e.jsx("div",{className:"admin-stat-label",children:n("admin.stats.signups7d")})]})]}),a&&Object.keys(a.instancesByTarget).length>0&&e.jsxs("div",{className:"admin-targets",children:[e.jsx("h3",{children:n("admin.deploymentTargets")}),e.jsx("div",{className:"admin-target-badges",children:Object.entries(a.instancesByTarget).map(([d,v])=>e.jsxs("span",{className:"admin-target-badge",children:[d,": ",String(v)]},d))})]}),l&&e.jsxs("div",{className:"admin-usage-section",style:{marginBottom:"var(--spacing-lg)"},children:[e.jsx("h2",{children:n("admin.platformUsage")}),e.jsxs("div",{className:"admin-stats-grid",children:[e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value",style:{color:"var(--color-primary)"},children:(l.globalSpend??0)<.01?`$${(l.globalSpend??0).toFixed(4)}`:`$${(l.globalSpend??0).toFixed(2)}`}),e.jsx("div",{className:"admin-stat-label",children:n("admin.globalSpend")})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-value",children:l.userCount}),e.jsx("div",{className:"admin-stat-label",children:n("admin.activeSpenders")})]})]}),l.perUserSpend.length>0&&e.jsx("div",{className:"admin-users-table-wrapper",style:{marginTop:"var(--spacing-md)"},children:e.jsxs("table",{className:"admin-users-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:n("admin.usageTable.user")}),e.jsx("th",{children:n("admin.usageTable.email")}),e.jsx("th",{style:{textAlign:"right"},children:n("admin.usageTable.spend")}),e.jsx("th",{style:{textAlign:"right"},children:n("admin.usageTable.budgetLimit")}),e.jsx("th",{})]})}),e.jsx("tbody",{children:l.perUserSpend.map(d=>e.jsxs("tr",{children:[e.jsx("td",{className:"admin-user-name",children:d.displayName??"—"}),e.jsx("td",{children:d.email}),e.jsx("td",{style:{textAlign:"right",fontFamily:"var(--font-mono)",fontWeight:600},children:(d.totalSpend??0)<.01?`$${(d.totalSpend??0).toFixed(4)}`:`$${(d.totalSpend??0).toFixed(2)}`}),e.jsx("td",{style:{textAlign:"right",fontFamily:"var(--font-mono)"},children:d.usageLimitUsd!=null?`$${d.usageLimitUsd.toFixed(2)}`:"—"}),e.jsx("td",{children:e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>x(d.userId,d.email,d.usageLimitUsd),children:n("admin.usageTable.setBudget")})})]},d.userId))})]})})]})]})}function Q({users:a}){const{t:l}=T(),[x,n]=t.useState(null),[d,v]=t.useState([]),[L,y]=t.useState(!1),N=async r=>{if(x===r){n(null),v([]);return}n(r),y(!0);try{const c=await j.get(`/admin/users/${r}/instances`);v(c)}catch(c){console.error(c instanceof Error?c.message:l("admin.users.failedToLoadInstances"))}finally{y(!1)}};return e.jsx(e.Fragment,{children:e.jsxs("div",{className:"admin-users-section",children:[e.jsx("h2",{children:l("admin.users.title",{count:a.length})}),e.jsx("div",{className:"admin-users-table-wrapper",children:e.jsxs("table",{className:"admin-users-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:l("admin.users.columns.name")}),e.jsx("th",{children:l("admin.users.columns.email")}),e.jsx("th",{children:l("admin.users.columns.instances")}),e.jsx("th",{children:l("admin.users.columns.running")}),e.jsx("th",{children:l("admin.users.columns.joined")}),e.jsx("th",{})]})}),e.jsx("tbody",{children:a.map(r=>e.jsxs(t.Fragment,{children:[e.jsxs("tr",{className:x===r.id?"admin-row-expanded":"",children:[e.jsx("td",{className:"admin-user-name",children:r.displayName}),e.jsx("td",{children:r.email}),e.jsx("td",{children:r.instanceCount}),e.jsx("td",{children:r.runningCount>0?e.jsx("span",{className:"admin-running-badge",children:r.runningCount}):"0"}),e.jsx("td",{children:new Date(r.createdAt).toLocaleDateString()}),e.jsx("td",{children:e.jsx("div",{style:{display:"flex",gap:"0.25rem"},children:r.instanceCount>0&&e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>N(r.id),children:x===r.id?l("admin.users.hideInstances"):l("admin.users.showInstances")})})})]}),x===r.id&&e.jsx("tr",{className:"admin-instances-row",children:e.jsx("td",{colSpan:6,children:L?e.jsxs("div",{className:"admin-instances-loading",children:[e.jsx("span",{className:"spinner"})," ",l("admin.users.loadingInstances")]}):e.jsxs("div",{className:"admin-instances-list",children:[d.map(c=>e.jsxs(M,{to:`/instances/${c.id}`,className:"admin-instance-item",children:[e.jsx("span",{className:"admin-instance-name",children:c.name}),e.jsxs("span",{className:`status-badge status-${c.status}`,children:[(c.status==="starting"||c.status==="stopping")&&e.jsx("span",{className:"spinner"})," ",l("common.status."+c.status)]}),e.jsx("span",{className:"admin-instance-meta",children:l("common.agentType."+c.agentType)}),e.jsx("span",{className:"admin-instance-meta",children:l("common.deploymentTarget."+c.deploymentTarget)}),e.jsx("span",{className:"admin-instance-meta",children:c.imageTag}),e.jsx("span",{className:"admin-instance-meta",children:new Date(c.createdAt).toLocaleDateString()})]},c.id)),d.length===0&&e.jsx("div",{className:"admin-no-instances",children:l("admin.users.noInstances")})]})})})]},r.id))})]})})]})})}function z({users:a}){const{t:l}=T(),[x,n]=t.useState({}),[d,v]=t.useState(!0),[L,y]=t.useState(null),[N,r]=t.useState(""),[c,f]=t.useState(!1),[u,g]=t.useState({userId:a[0]?.id??"",models:"",maxBudget:"",keyAlias:""}),[B,p]=t.useState(null),[k,F]=t.useState(!1),[E,w]=t.useState(null),[U,S]=t.useState(null),[b,C]=t.useState(""),[I,A]=t.useState(!1),[o,m]=t.useState(null),h=async()=>{try{const s=await j.get("/admin/keys");n(s)}catch(s){y(s instanceof Error?s.message:"Failed to load keys")}};t.useEffect(()=>{j.get("/admin/keys").then(s=>n(s)).catch(s=>y(s instanceof Error?s.message:"Failed to load keys")).finally(()=>v(!1))},[]),t.useEffect(()=>{if(o){const s=setTimeout(()=>m(null),5e3);return()=>clearTimeout(s)}},[o]);const $=Object.values(x).flat(),K=N.trim()===""?$:$.filter(s=>(s.userEmail??"").toLowerCase().includes(N.toLowerCase())),D=async s=>{if(window.confirm(`Revoke key ${s.keyName}? This cannot be undone.`))try{await j.delete(`/admin/keys/${s.token}`),await h()}catch(i){m(i instanceof Error?i.message:"Failed to revoke key")}},O=async s=>{A(!0);try{const i=b.trim()===""?null:parseFloat(b)||null;await j.patch(`/admin/keys/${s}`,{maxBudget:i}),await h(),S(null),C("")}catch(i){m(i instanceof Error?i.message:"Failed to update budget")}finally{A(!1)}},P=async s=>{if(s.preventDefault(),!!u.userId){F(!0),p(null);try{const i={userId:u.userId,...u.keyAlias.trim()&&{keyAlias:u.keyAlias.trim()},...u.models.trim()&&{models:u.models.split(",").map(_=>_.trim()).filter(Boolean)},...u.maxBudget.trim()&&{maxBudget:parseFloat(u.maxBudget)}},W=await j.post("/admin/keys",i);w(W.key),f(!1),g({userId:a[0]?.id??"",models:"",maxBudget:"",keyAlias:""}),await h()}catch(i){p(i instanceof Error?i.message:"Failed to create key")}finally{F(!1)}}},R=s=>s<.01&&s>0?"$"+s.toFixed(4):"$"+s.toFixed(2),V=(s,i)=>s.length>i?s.slice(0,i)+"...":s;return d?e.jsx("div",{children:"Loading keys..."}):e.jsxs("div",{className:"admin-keys-tab",children:[L&&e.jsx("div",{className:"error-message",role:"alert",children:L}),E&&e.jsxs("div",{className:"admin-key-created-banner",children:[e.jsx("strong",{children:"New key created!"})," Copy it now — it won't be shown again:",e.jsx("code",{className:"admin-key-value",children:E}),e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>{navigator.clipboard.writeText(E)},children:"Copy"}),e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>w(null),children:"Dismiss"})]}),o&&e.jsx("div",{className:"error-message",role:"alert",children:o}),e.jsxs("div",{className:"admin-keys-toolbar",children:[e.jsx("input",{type:"text",placeholder:"Filter by user email...",value:N,onChange:s=>r(s.target.value),className:"admin-keys-search"}),e.jsx("button",{className:"btn-primary",onClick:()=>f(!0),children:"Create Key"})]}),$.length===0?e.jsx("div",{className:"admin-keys-empty",children:"No virtual keys found. Create one to get started."}):e.jsx("div",{className:"admin-users-table-wrapper",children:e.jsxs("table",{className:"admin-users-table admin-keys-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"User"}),e.jsx("th",{children:"Alias"}),e.jsx("th",{children:"Key Name"}),e.jsx("th",{children:"Spend"}),e.jsx("th",{children:"Budget"}),e.jsx("th",{children:"Models"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:K.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:8,className:"admin-keys-empty",children:"No keys match your filter."})}):K.map(s=>e.jsxs("tr",{children:[e.jsx("td",{children:s.userEmail??"(unknown)"}),e.jsx("td",{children:s.keyAlias??"—"}),e.jsx("td",{children:e.jsx("span",{title:s.keyName,children:V(s.keyName,20)})}),e.jsx("td",{style:{fontFamily:"var(--font-mono)"},children:R(s.spend)}),e.jsx("td",{style:{fontFamily:"var(--font-mono)"},children:U===s.token?e.jsxs("div",{className:"inline-edit",children:[e.jsx("input",{type:"number",step:"0.01",min:"0",value:b,onChange:i=>C(i.target.value),autoFocus:!0}),e.jsx("button",{className:"btn-small btn-primary",disabled:I,onClick:()=>{O(s.token)},children:"Save"}),e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>{S(null),C("")},children:"Cancel"})]}):s.maxBudget!=null?"$"+s.maxBudget.toFixed(2):"—"}),e.jsx("td",{children:e.jsx("span",{className:"models-cell",title:s.models.length>0?s.models.join(", "):"all",children:s.models.length>0?s.models.join(", "):"all"})}),e.jsx("td",{children:e.jsx("span",{className:`status-badge status-${s.status}`,children:l("common.status."+s.status)})}),e.jsx("td",{children:e.jsxs("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap"},children:[e.jsx("button",{className:"btn-small btn-secondary",onClick:()=>{S(s.token),C(s.maxBudget!=null?String(s.maxBudget):"")},children:"Edit Budget"}),e.jsx("button",{className:"btn-small btn-danger",disabled:s.status!=="active",onClick:()=>{D(s)},children:"Revoke"})]})})]},s.token))})]})}),c&&e.jsx("div",{className:"modal-overlay",onClick:()=>{f(!1),p(null)},children:e.jsxs("div",{className:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"create-key-modal-title",onClick:s=>s.stopPropagation(),children:[e.jsx("h2",{id:"create-key-modal-title",children:"Create Virtual Key"}),e.jsxs("form",{onSubmit:s=>{P(s)},children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"key-user-select",children:"User *"}),e.jsx("select",{id:"key-user-select",value:u.userId,onChange:s=>g(i=>({...i,userId:s.target.value})),required:!0,children:a.map(s=>e.jsxs("option",{value:s.id,children:[s.email," (",s.displayName,")"]},s.id))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"key-alias-input",children:"Key Alias (optional)"}),e.jsx("input",{id:"key-alias-input",type:"text",value:u.keyAlias,onChange:s=>g(i=>({...i,keyAlias:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"key-models-input",children:"Models (optional)"}),e.jsx("input",{id:"key-models-input",type:"text",placeholder:"e.g. gpt-4o, claude-3.5-sonnet (leave empty for all)",value:u.models,onChange:s=>g(i=>({...i,models:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"key-budget-input",children:"Max Budget (optional)"}),e.jsx("input",{id:"key-budget-input",type:"number",step:"0.01",min:"0",placeholder:"No limit",value:u.maxBudget,onChange:s=>g(i=>({...i,maxBudget:s.target.value}))})]}),B&&e.jsx("div",{className:"error-message",role:"alert",children:B}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",className:"btn-secondary",onClick:()=>{f(!1),p(null)},children:"Cancel"}),e.jsx("button",{type:"submit",className:"btn-primary",disabled:k,children:k?"Creating...":"Create Key"})]})]})]})})]})}const G="https://litellm-ui.aquaclaw.ai";function J(){const{t:a}=T();return e.jsxs("div",{style:{padding:"2rem",textAlign:"center"},children:[e.jsx("h3",{children:a("admin.litellm.title","LiteLLM Dashboard")}),e.jsx("p",{style:{color:"var(--color-text-secondary)",marginBottom:"1.5rem"},children:a("admin.litellm.description","Manage LLM models, API keys, and usage tracking in the LiteLLM admin dashboard.")}),e.jsxs("a",{href:G,target:"_blank",rel:"noopener noreferrer",style:{display:"inline-block",padding:"0.75rem 2rem",backgroundColor:"var(--color-primary)",color:"#fff",borderRadius:"8px",textDecoration:"none",fontWeight:500},children:[a("admin.litellm.openDashboard","Open LiteLLM Dashboard")," ↗"]})]})}function ee(){const{t:a}=T(),{user:l,logout:x}=q(),[n,d]=t.useState("overview"),[v,L]=t.useState(null),[y,N]=t.useState([]),[r,c]=t.useState(!0),[f,u]=t.useState(null),[g,B]=t.useState(null),[p,k]=t.useState(null),[F,E]=t.useState(""),[w,U]=t.useState(""),[S,b]=t.useState(null),[C,I]=t.useState(!1);t.useEffect(()=>{Promise.all([j.get("/admin/stats"),j.get("/admin/users"),j.get("/usage/admin").catch(()=>null)]).then(([o,m,h])=>{L(o),N(m),h&&B(h)}).catch(o=>u(o instanceof Error?o.message:a("admin.failedToLoad"))).finally(()=>c(!1))},[]);const A=async o=>{if(o.preventDefault(),!!p){I(!0),b(null);try{const m=w.trim()===""?null:parseFloat(w);if(m!==null&&(isNaN(m)||m<0)){b({type:"error",text:a("admin.budget.invalidBudget")});return}await j.put(`/admin/users/${p}/budget`,{usageLimitUsd:m}),b({type:"success",text:a("admin.budget.success",{email:F})}),g&&B({...g,perUserSpend:g.perUserSpend.map(h=>h.userId===p?{...h,usageLimitUsd:m}:h)}),setTimeout(()=>k(null),1500)}catch(m){b({type:"error",text:m instanceof Error?m.message:a("admin.budget.failed")})}finally{I(!1)}}};return r?e.jsx("div",{className:"admin-page",children:a("admin.loading")}):e.jsxs("main",{className:"admin-page",children:[e.jsxs("header",{className:"dashboard-header",children:[e.jsxs("div",{children:[e.jsx("h1",{children:a("admin.title")}),e.jsx(M,{to:"/",className:"admin-back-link",children:a("common.buttons.backToInstances")})]}),e.jsxs("div",{className:"dashboard-header-actions",children:[l&&e.jsx("span",{className:"user-greeting",children:a("admin.greeting",{name:l.displayName})}),e.jsx("button",{className:"btn-secondary",onClick:x,children:a("common.buttons.logout")})]})]}),f&&e.jsx("div",{className:"error-message",role:"alert",children:f}),e.jsxs("div",{className:"tabs",children:[e.jsx("button",{className:n==="overview"?"active":"",onClick:()=>d("overview"),children:"Overview"}),e.jsx("button",{className:n==="users"?"active":"",onClick:()=>d("users"),children:"Users"}),e.jsx("button",{className:n==="llm-keys"?"active":"",onClick:()=>d("llm-keys"),children:"LLM Keys"}),e.jsx("button",{className:n==="litellm-ui"?"active":"",onClick:()=>d("litellm-ui"),children:"LiteLLM UI"})]}),e.jsxs("div",{className:"tab-content",children:[n==="overview"&&e.jsx(H,{stats:v,usageData:g,onSetBudget:(o,m,h)=>{k(o),E(m),U(h!=null?String(h):""),b(null)}}),n==="users"&&e.jsx(Q,{users:y}),n==="llm-keys"&&e.jsx(z,{users:y}),n==="litellm-ui"&&e.jsx(J,{})]}),p&&e.jsx("div",{className:"modal-overlay",onClick:()=>k(null),children:e.jsxs("div",{className:"modal",role:"dialog","aria-modal":"true","aria-labelledby":"budget-modal-title",onClick:o=>o.stopPropagation(),children:[e.jsx("h2",{id:"budget-modal-title",children:a("admin.budget.title")}),e.jsx("p",{children:a("admin.budget.description",{email:F})}),e.jsxs("form",{onSubmit:A,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:a("admin.budget.limitLabel")}),e.jsx("input",{type:"number",step:"0.01",min:"0",placeholder:a("admin.budget.limitPlaceholder"),value:w,onChange:o=>U(o.target.value)})]}),S&&e.jsx("div",{className:S.type==="success"?"success-message":"error-message",role:"alert",children:S.text}),e.jsxs("div",{className:"modal-actions",children:[e.jsx("button",{type:"button",className:"btn-secondary",onClick:()=>k(null),children:a("common.buttons.cancel")}),e.jsx("button",{type:"submit",className:"btn-primary",disabled:C,children:a(C?"admin.budget.saving":"admin.budget.saveButton")})]})]})]})})]})}export{ee as AdminPage};
@@ -0,0 +1 @@
1
+ import{c as o}from"./createLucideIcon-DiGX-lN4.js";import{j as a}from"./index-BqzqZJ96.js";import{P as m}from"./index-wWimwgy7.js";const d=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],j=o("plus",d),g={sm:"agent-avatar--sm",md:"agent-avatar--md",lg:"agent-avatar--lg"};function x({avatar:s,name:t,size:r="md",className:c}){const e=["agent-avatar",g[r],c].filter(Boolean).join(" ");if(s&&s.startsWith("preset:")){const l=s.slice(7),i=m[l];if(i)return a.jsx("div",{className:e,children:a.jsx("img",{className:"agent-avatar__img",src:i,alt:t})})}if(s&&s.startsWith("data:"))return a.jsx("div",{className:e,children:a.jsx("img",{className:"agent-avatar__img",src:s,alt:t})});const n=t.trim().charAt(0).toUpperCase()||"?";return a.jsx("div",{className:e,children:a.jsx("div",{className:"agent-avatar__fallback",children:n})})}export{x as A,j as P};
@@ -0,0 +1 @@
1
+ .agent-avatar{border-radius:var(--radius-full);overflow:hidden;flex-shrink:0}.agent-avatar--sm{width:32px;height:32px}.agent-avatar--md{width:48px;height:48px}.agent-avatar--lg{width:80px;height:80px}.agent-avatar__img{width:100%;height:100%;object-fit:cover;display:block}.agent-avatar__fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-primary);color:var(--color-on-primary);font-weight:600;font-family:var(--font-sans)}.agent-avatar--sm .agent-avatar__fallback{font-size:.75rem}.agent-avatar--md .agent-avatar__fallback{font-size:1rem}.agent-avatar--lg .agent-avatar__fallback{font-size:1.5rem}
@@ -0,0 +1 @@
1
+ .sidebar{width:var(--sidebar-width);height:100vh;position:sticky;top:0;display:flex;flex-direction:column;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);padding:var(--spacing-md) var(--spacing-md) var(--spacing-sm);flex-shrink:0;overflow-y:auto;z-index:100}.sidebar__logo{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-sm);margin-bottom:var(--spacing-lg)}.sidebar__logo-icon{width:36px;height:36px;border-radius:var(--radius-md);background:var(--sidebar-logo-accent);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar__logo-text{display:flex;flex-direction:column;line-height:1.2}.sidebar__logo-name{font-weight:800;font-size:1rem;color:var(--sidebar-user-text);letter-spacing:-.01em}.sidebar__logo-subtitle{font-size:.72rem;color:var(--sidebar-user-email);font-weight:500}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.sidebar__nav-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;color:var(--sidebar-nav-text);text-decoration:none;transition:all var(--transition-fast);cursor:pointer;border:none;background:none;width:100%;text-align:left;font-family:var(--font-sans)}.sidebar__nav-item svg{color:var(--sidebar-nav-icon);flex-shrink:0;transition:color var(--transition-fast)}.sidebar__nav-item:hover{background:var(--sidebar-nav-hover-bg);color:var(--sidebar-nav-active-bg);text-decoration:none}.sidebar__nav-item:hover svg{color:var(--sidebar-nav-active-bg)}.sidebar__nav-item--active{background:var(--sidebar-nav-active-bg);color:var(--sidebar-nav-active-text);font-weight:600}.sidebar__nav-item--active svg{color:var(--sidebar-nav-active-text)}.sidebar__nav-item--active:hover{background:var(--sidebar-nav-active-bg);color:var(--sidebar-nav-active-text)}.sidebar__nav-item--active:hover svg{color:var(--sidebar-nav-active-text)}.sidebar__spacer{flex:1;min-height:var(--spacing-lg)}.sidebar__tools{display:flex;align-items:center;gap:var(--spacing-xs);padding:0 var(--spacing-sm);margin-bottom:var(--spacing-sm)}.sidebar__tool-btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--sidebar-border);background:var(--sidebar-bg);color:var(--sidebar-nav-icon);cursor:pointer;transition:all var(--transition-fast);padding:0;box-shadow:none;position:relative}.sidebar__tool-btn:hover{background:var(--sidebar-nav-hover-bg);color:var(--sidebar-nav-active-bg);border-color:var(--sidebar-nav-active-bg);transform:none}.sidebar__coming-soon{margin:0 0 var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);text-align:center;font-size:.78rem;color:var(--sidebar-nav-icon);opacity:.7}button.sidebar__user{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-sm);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);-webkit-user-select:none;user-select:none;width:100%;background:none;border:none;text-align:left;font-family:var(--font-sans);box-shadow:none}button.sidebar__user:hover{background:var(--sidebar-user-hover-bg);transform:none;box-shadow:none}.sidebar__user-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:var(--sidebar-nav-active-bg);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;flex-shrink:0}.sidebar__user-info{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.sidebar__user-name{font-weight:600;font-size:.85rem;color:var(--sidebar-user-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__user-email{font-size:.75rem;color:var(--sidebar-user-email);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__user-chevron{color:var(--sidebar-nav-icon);flex-shrink:0}.user-menu{position:absolute;bottom:68px;left:var(--spacing-md);right:var(--spacing-md);background:var(--sidebar-menu-bg);border:1px solid var(--sidebar-menu-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--spacing-xs) 0;z-index:200;animation:slideUp .15s ease-out}.user-menu__group{padding:var(--spacing-xs) 0}.user-menu__group+.user-menu__group{border-top:1px solid var(--sidebar-menu-border)}.user-menu__group-label{display:flex;align-items:center;gap:6px;padding:var(--spacing-xs) var(--spacing-md);font-size:.72rem;font-weight:600;color:var(--sidebar-menu-group-label);text-transform:uppercase;letter-spacing:.04em}.user-menu__item{display:flex;align-items:center;gap:8px;width:100%;padding:7px var(--spacing-md) 7px 36px;border:none;background:none;color:var(--sidebar-nav-text);font-size:.85rem;font-weight:500;cursor:pointer;text-align:left;transition:background var(--transition-fast);font-family:var(--font-sans);box-shadow:none;border-radius:0}.user-menu__item:hover{background:var(--sidebar-menu-hover);transform:none;box-shadow:none}.user-menu__item--with-icon{padding-left:var(--spacing-md)}.user-menu__item--danger{color:var(--sidebar-menu-danger);padding-left:var(--spacing-md)}.user-menu__item--danger:hover{background:#ef44440d}.user-menu__admin-badge{margin-left:auto;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:var(--radius-full);background:var(--sidebar-admin-badge-bg);color:var(--sidebar-admin-badge-text);letter-spacing:.02em}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sidebar__edition-badge{padding:var(--spacing-xs) var(--spacing-sm);margin:0 var(--spacing-xs);font-size:.7rem;color:var(--color-text-muted);opacity:.6;text-align:center;letter-spacing:.05em;text-transform:uppercase}.sidebar{transition:width var(--transition-slow)}.sidebar--collapsed{width:var(--sidebar-width-collapsed, 64px);padding:var(--spacing-md) var(--spacing-xs) var(--spacing-sm);align-items:center}.sidebar--collapsed .sidebar__logo{justify-content:center;padding:var(--spacing-sm) 0}.sidebar--collapsed .sidebar__nav-item{justify-content:center;padding:10px 0;gap:0}.sidebar--collapsed .sidebar__user{justify-content:center;padding:var(--spacing-sm) 0}.sidebar--collapsed .sidebar__user-avatar{margin:0}@media(prefers-reduced-motion:reduce){.sidebar{transition:none}}@media(max-width:768px){.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);transform:translate(-100%);z-index:1000;box-shadow:none;transition:transform var(--transition-slow);overflow-y:auto;overflow-x:hidden}.sidebar.sidebar--mobile-open{transform:translate(0);box-shadow:4px 0 12px #0000001a}.sidebar.sidebar--mobile-open.sidebar--collapsed{width:var(--sidebar-width);padding:var(--spacing-md) var(--spacing-md) var(--spacing-sm);align-items:stretch}.sidebar.sidebar--mobile-open.sidebar--collapsed .sidebar__logo{justify-content:flex-start;padding:var(--spacing-sm) var(--spacing-sm)}.sidebar.sidebar--mobile-open.sidebar--collapsed .sidebar__nav-item{justify-content:flex-start;padding:10px 14px;gap:10px}.sidebar.sidebar--mobile-open.sidebar--collapsed .sidebar__user{justify-content:flex-start;padding:var(--spacing-sm) var(--spacing-sm)}}.app-layout{display:flex;min-height:100vh;position:relative}.app-layout__content{flex:1;min-width:0;overflow-y:auto;background:var(--color-bg);transition:margin-left var(--transition-slow)}.app-layout__fab{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:6px;z-index:900}.app-layout__fab-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--color-border);background:var(--color-card-bg);color:var(--color-text-secondary);border-radius:var(--radius-full);cursor:pointer;box-shadow:var(--shadow-sm);transform:none}.app-layout__fab-btn:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary);transform:none;box-shadow:var(--shadow-md)}.app-layout__lang-wrap{position:relative}.app-layout__lang-menu{position:absolute;bottom:0;right:calc(100% + 8px);background:var(--color-card-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:4px;display:flex;flex-direction:column;min-width:140px;z-index:1000}.app-layout__lang-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:none;background:transparent;color:var(--color-text);font-size:.8125rem;font-weight:400;border-radius:var(--radius-sm);cursor:pointer;box-shadow:none;transform:none;white-space:nowrap;text-align:left}.app-layout__lang-item:hover{background:var(--color-surface);transform:none;box-shadow:none}.app-layout__lang-item--active{color:var(--color-primary);font-weight:600}.app-layout__toggle{position:fixed;top:28px;left:calc(var(--sidebar-width) - 14px);width:var(--sidebar-toggle-size, 28px);height:var(--sidebar-toggle-size, 28px);border-radius:var(--radius-full);background:var(--sidebar-toggle-bg, #ffffff);border:1px solid var(--sidebar-toggle-border, #e5e7eb);box-shadow:var(--sidebar-toggle-shadow, 0 2px 8px rgba(0, 0, 0, .08));display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:200;padding:0;color:var(--sidebar-nav-icon);transition:left var(--transition-slow),background var(--transition-fast),color var(--transition-fast)}.app-layout--sidebar-collapsed .app-layout__toggle{left:calc(var(--sidebar-width-collapsed, 64px) - 14px)}.app-layout__toggle:hover{background:var(--sidebar-toggle-hover-bg, #f3f4f6);color:var(--sidebar-nav-active-bg)}@media(prefers-reduced-motion:reduce){.app-layout__toggle,.app-layout__content{transition:none}}.app-layout__hamburger,.app-layout__backdrop{display:none}@media(max-width:768px){.app-layout__toggle{display:none}.app-layout__hamburger{display:flex;align-items:center;justify-content:center;position:fixed;top:16px;left:16px;z-index:998;width:40px;height:40px;border-radius:var(--radius-full);background:var(--color-card-bg);border:1px solid var(--color-border);cursor:pointer;box-shadow:var(--shadow-sm);color:var(--color-text);padding:0}.app-layout__hamburger:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.app-layout__backdrop{display:block;position:fixed;inset:0;background:#00000080;z-index:999}}
@@ -0,0 +1 @@
1
+ import{a as S,u as M,j as e,r as n,b as L,c as z,O as $,s as A}from"./index-BqzqZJ96.js";import{u as v}from"./useTranslation-B-8kenfJ.js";import{c as d}from"./createLucideIcon-DiGX-lN4.js";import{M as R,B as O,Z as q}from"./zap-CVBnETFW.js";import{a as k}from"./api-B5psysvQ.js";const I=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],B=d("bell",I);const H=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],T=d("chevron-down",H);const U=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],D=d("chevron-left",U);const F=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],V=d("chevron-right",F);const G=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],K=d("chevron-up",G);const W=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Z=d("file-text",W);const P=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],Y=d("globe",P);const J=[["rect",{width:"7",height:"9",x:"3",y:"3",rx:"1",key:"10lvy0"}],["rect",{width:"7",height:"5",x:"14",y:"3",rx:"1",key:"16une8"}],["rect",{width:"7",height:"9",x:"14",y:"12",rx:"1",key:"1hutg5"}],["rect",{width:"7",height:"5",x:"3",y:"16",rx:"1",key:"ldoo1y"}]],Q=d("layout-dashboard",J);const X=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],ee=d("menu",X);const ae=[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]],te=d("messages-square",ae);const se=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],ne=d("moon",se);const oe=[["path",{d:"M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5",key:"slp6dd"}],["path",{d:"M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244",key:"o0xfot"}],["path",{d:"M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05",key:"wn3emo"}]],ie=d("store",oe);const ce=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],le=d("sun",ce);const re=[["path",{d:"M10 15H6a4 4 0 0 0-4 4v2",key:"1nfge6"}],["path",{d:"m14.305 16.53.923-.382",key:"1itpsq"}],["path",{d:"m15.228 13.852-.923-.383",key:"eplpkm"}],["path",{d:"m16.852 12.228-.383-.923",key:"13v3q0"}],["path",{d:"m16.852 17.772-.383.924",key:"1i8mnm"}],["path",{d:"m19.148 12.228.383-.923",key:"1q8j1v"}],["path",{d:"m19.53 18.696-.382-.924",key:"vk1qj3"}],["path",{d:"m20.772 13.852.924-.383",key:"n880s0"}],["path",{d:"m20.772 16.148.924.383",key:"1g6xey"}],["circle",{cx:"18",cy:"15",r:"3",key:"gjjjvw"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],de=d("user-cog",re),j=!1;function ue({isAdmin:t,onClose:h}){const{t:y}=v(),l=S(),{logout:p}=M(),r=o=>{l(o),h()};return e.jsxs("div",{className:"user-menu",role:"menu",children:[j,e.jsxs("div",{className:"user-menu__group",children:[e.jsxs("div",{className:"user-menu__group-label",children:[e.jsx(de,{size:14}),e.jsx("span",{children:y("sidebar.userGroup")})]}),e.jsx("button",{className:"user-menu__item",role:"menuitem",onClick:()=>r("/user/credentials"),children:y("sidebar.credentials")}),j]}),j,j]})}const me=!1;function he({collapsed:t,mobileOpen:h,onNavClick:y}){const{t:l}=v(),{user:p,isAdmin:r}=M(),[o,b]=n.useState(!1),f=n.useRef(null),g=[{to:"/",icon:R,label:l("sidebar.chat")},{to:"/group-chats",icon:te,label:l("sidebar.groupChats")},{to:"/dashboard",icon:Q,label:l("sidebar.dashboard")},{to:"/templates",icon:ie,label:l("sidebar.skills")},{to:"/assistants",icon:O,label:l("sidebar.assistants")}];return n.useEffect(()=>{function i(x){f.current&&!f.current.contains(x.target)&&b(!1)}if(o)return document.addEventListener("mousedown",i),()=>document.removeEventListener("mousedown",i)},[o]),e.jsxs("aside",{className:`sidebar${t?" sidebar--collapsed":""}${h?" sidebar--mobile-open":""}`,ref:f,children:[e.jsxs("div",{className:"sidebar__logo",children:[e.jsx("div",{className:"sidebar__logo-icon",children:e.jsx(q,{size:20})}),!t&&e.jsxs("div",{className:"sidebar__logo-text",children:[e.jsx("span",{className:"sidebar__logo-name",children:"OpenClaw"}),e.jsx("span",{className:"sidebar__logo-subtitle",children:"Platform"})]})]}),e.jsx("nav",{className:"sidebar__nav",children:g.map(i=>e.jsxs(L,{to:i.to,end:i.to==="/",className:({isActive:x})=>`sidebar__nav-item ${x?"sidebar__nav-item--active":""}`,onClick:()=>y?.(),children:[e.jsx(i.icon,{size:20}),!t&&e.jsx("span",{children:i.label})]},i.to))}),e.jsx("div",{className:"sidebar__spacer"}),me,!t&&e.jsx("div",{className:"sidebar__edition-badge",children:e.jsx("span",{children:l("sidebar.communityEdition")})}),e.jsxs("button",{type:"button",className:"sidebar__user",onClick:()=>b(i=>!i),"aria-expanded":o,"aria-haspopup":"true",children:[e.jsx("div",{className:"sidebar__user-avatar",children:p?.displayName?.charAt(0)?.toUpperCase()??"?"}),!t&&e.jsxs("div",{className:"sidebar__user-info",children:[e.jsx("span",{className:"sidebar__user-name",children:p?.displayName??"User"}),e.jsx("span",{className:"sidebar__user-email",children:p?.email??""})]}),!t&&e.jsx("span",{className:"sidebar__user-chevron",children:o?e.jsx(K,{size:16}):e.jsx(T,{size:16})})]}),o&&!t&&e.jsx(ue,{isAdmin:r,onClose:()=>b(!1)})]})}function pe(t){switch(t){case"critical":return"🔴";case"warn":return"⚠️";case"info":return"ℹ️";default:return"🔔"}}function fe(){const{t}=v(),{addHandler:h,removeHandler:y}=z(),[l,p]=n.useState([]),[r,o]=n.useState(0),[b,f]=n.useState(!1),[g,i]=n.useState(!1),x=n.useRef(null),N=n.useCallback(a=>{const c=Date.now()-new Date(a).getTime(),m=Math.floor(c/6e4);if(m<1)return t("common.time.justNow");if(m<60)return t("common.time.minutesAgo",{count:m});const w=Math.floor(m/60);if(w<24)return t("common.time.hoursAgo",{count:w});const E=Math.floor(w/24);return t("common.time.daysAgo",{count:E})},[t]);n.useEffect(()=>{k.get("/notifications?limit=20").then(a=>p(a.items)).catch(a=>{console.error("[NotificationBell] Failed to load notifications:",a)}),k.get("/notifications/unread-count").then(a=>o(a.count)).catch(a=>{console.error("[NotificationBell] Failed to load unread count:",a)})},[]);const _=n.useCallback(a=>{const c=a.payload;c?.notification&&(p(m=>[c.notification,...m].slice(0,20)),o(m=>m+1))},[]);n.useEffect(()=>(h("notification",_),()=>y("notification",_)),[h,y,_]),n.useEffect(()=>{function a(c){x.current&&!x.current.contains(c.target)&&f(!1)}if(b)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[b]);const s=async()=>{i(!0);try{await k.post("/notifications/read-all"),p(a=>a.map(c=>({...c,isRead:!0}))),o(0)}catch(a){console.error("[NotificationBell] Failed to mark all as read:",a)}finally{i(!1)}},u=async a=>{try{await k.post(`/notifications/${a}/read`),p(c=>c.map(m=>m.id===a?{...m,isRead:!0}:m)),o(c=>Math.max(0,c-1))}catch(c){console.error("[NotificationBell] Failed to mark notification as read:",c)}};return e.jsxs("div",{className:"notification-bell",ref:x,children:[e.jsxs("button",{className:"notification-bell-button",onClick:()=>f(a=>!a),"aria-label":r>0?t("notifications.buttonLabelWithCount",{count:r}):t("notifications.buttonLabel"),children:[e.jsx(B,{size:18}),r>0&&e.jsx("span",{className:"notification-badge",children:r>99?t("notifications.unreadBadge"):r})]}),b&&e.jsxs("div",{className:"notification-dropdown",children:[e.jsxs("div",{className:"notification-dropdown-header",children:[e.jsx("span",{className:"notification-dropdown-title",children:t("notifications.title")}),r>0&&e.jsx("button",{className:"notification-mark-all-btn",onClick:s,disabled:g,children:t("notifications.markAllRead")})]}),e.jsx("div",{className:"notification-dropdown-list",children:l.length===0?e.jsx("div",{className:"notification-empty",children:t("notifications.empty")}):l.map(a=>e.jsxs("div",{className:`notification-item ${a.isRead?"":"notification-item--unread"}`,onClick:()=>!a.isRead&&u(a.id),role:"button",tabIndex:0,onKeyDown:c=>{c.key==="Enter"&&!a.isRead&&u(a.id)},children:[e.jsx("span",{className:"notification-item-icon",children:pe(a.severity)}),e.jsxs("div",{className:"notification-item-content",children:[e.jsx("span",{className:"notification-item-title",children:a.title}),e.jsx("span",{className:"notification-item-time",children:N(a.createdAt)})]})]},a.id))})]})]})}const C="openclaw-theme";function be(){const t=localStorage.getItem(C);return t==="dark"||t==="light"?t:"light"}function je(){const{i18n:t}=v(),[h,y]=n.useState(()=>localStorage.getItem("sidebar-collapsed")==="true"),[l,p]=n.useState(be),[r,o]=n.useState(!1),[b,f]=n.useState(!1),g=n.useRef(null),i=n.useCallback(s=>{document.documentElement.classList.toggle("dark",s==="dark"),localStorage.setItem(C,s)},[]);n.useEffect(()=>{i(l)},[l,i]),n.useEffect(()=>{if(!r)return;function s(u){g.current&&!g.current.contains(u.target)&&o(!1)}return document.addEventListener("mousedown",s),()=>document.removeEventListener("mousedown",s)},[r]),n.useEffect(()=>{const s=window.matchMedia("(max-width: 768px)");function u(){s.matches||f(!1)}return s.addEventListener("change",u),()=>s.removeEventListener("change",u)},[]);const x=()=>{y(s=>{const u=!s;return localStorage.setItem("sidebar-collapsed",String(u)),u})},N=s=>{t.changeLanguage(s),o(!1)},_=t.language?.substring(0,2)||"en";return e.jsxs("div",{className:`app-layout${h?" app-layout--sidebar-collapsed":""}`,children:[b&&e.jsx("div",{className:"app-layout__backdrop",onClick:()=>f(!1)}),e.jsx(he,{collapsed:h,mobileOpen:b,onNavClick:()=>f(!1)}),e.jsx("button",{type:"button",className:"app-layout__hamburger",onClick:()=>f(s=>!s),"aria-label":"Toggle menu",children:e.jsx(ee,{size:20})}),e.jsx("button",{type:"button",className:"app-layout__toggle",onClick:x,"aria-label":h?"Expand sidebar":"Collapse sidebar",children:h?e.jsx(V,{size:16}):e.jsx(D,{size:16})}),e.jsx("main",{className:"app-layout__content",children:e.jsx($,{})}),e.jsxs("div",{className:"app-layout__fab",children:[e.jsx(fe,{}),e.jsx("button",{className:"app-layout__fab-btn",onClick:()=>window.open("/docs","_blank"),children:e.jsx(Z,{size:18})}),e.jsxs("div",{className:"app-layout__lang-wrap",ref:g,children:[r&&e.jsx("div",{className:"app-layout__lang-menu",children:Object.entries(A).map(([s,{flag:u,label:a}])=>e.jsxs("button",{className:`app-layout__lang-item${s===_?" app-layout__lang-item--active":""}`,onClick:()=>N(s),children:[e.jsx("span",{children:u}),e.jsx("span",{children:a})]},s))}),e.jsx("button",{className:"app-layout__fab-btn",onClick:()=>o(s=>!s),children:e.jsx(Y,{size:18})})]}),e.jsx("button",{className:"app-layout__fab-btn",onClick:()=>p(s=>s==="light"?"dark":"light"),children:l==="light"?e.jsx(ne,{size:18}):e.jsx(le,{size:18})})]})]})}export{je as AppLayout};