botmux 2.107.0 → 2.108.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 (515) hide show
  1. package/README.en.md +17 -14
  2. package/README.md +19 -14
  3. package/dist/adapters/backend/sandbox.d.ts +3 -1
  4. package/dist/adapters/backend/sandbox.d.ts.map +1 -1
  5. package/dist/adapters/backend/sandbox.js +19 -3
  6. package/dist/adapters/backend/sandbox.js.map +1 -1
  7. package/dist/adapters/backend/tmux-backend.d.ts.map +1 -1
  8. package/dist/adapters/backend/tmux-backend.js +16 -1
  9. package/dist/adapters/backend/tmux-backend.js.map +1 -1
  10. package/dist/adapters/backend/tmux-pipe-backend.d.ts +24 -15
  11. package/dist/adapters/backend/tmux-pipe-backend.d.ts.map +1 -1
  12. package/dist/adapters/backend/tmux-pipe-backend.js +75 -43
  13. package/dist/adapters/backend/tmux-pipe-backend.js.map +1 -1
  14. package/dist/adapters/cli/genius.d.ts.map +1 -1
  15. package/dist/adapters/cli/genius.js +9 -15
  16. package/dist/adapters/cli/genius.js.map +1 -1
  17. package/dist/adapters/cli/grok.d.ts +73 -0
  18. package/dist/adapters/cli/grok.d.ts.map +1 -0
  19. package/dist/adapters/cli/grok.js +298 -0
  20. package/dist/adapters/cli/grok.js.map +1 -0
  21. package/dist/adapters/cli/oh-my-pi.d.ts.map +1 -1
  22. package/dist/adapters/cli/oh-my-pi.js +133 -12
  23. package/dist/adapters/cli/oh-my-pi.js.map +1 -1
  24. package/dist/adapters/cli/registry.d.ts +2 -1
  25. package/dist/adapters/cli/registry.d.ts.map +1 -1
  26. package/dist/adapters/cli/registry.js +3 -1
  27. package/dist/adapters/cli/registry.js.map +1 -1
  28. package/dist/adapters/cli/shared-hints.d.ts +8 -4
  29. package/dist/adapters/cli/shared-hints.d.ts.map +1 -1
  30. package/dist/adapters/cli/shared-hints.js +8 -4
  31. package/dist/adapters/cli/shared-hints.js.map +1 -1
  32. package/dist/adapters/cli/types.d.ts +18 -16
  33. package/dist/adapters/cli/types.d.ts.map +1 -1
  34. package/dist/adapters/hook-installer.d.ts +5 -4
  35. package/dist/adapters/hook-installer.d.ts.map +1 -1
  36. package/dist/adapters/hook-installer.js +42 -0
  37. package/dist/adapters/hook-installer.js.map +1 -1
  38. package/dist/cli/send-dispatch.d.ts +21 -0
  39. package/dist/cli/send-dispatch.d.ts.map +1 -1
  40. package/dist/cli/send-dispatch.js +159 -0
  41. package/dist/cli/send-dispatch.js.map +1 -1
  42. package/dist/cli/session-list-liveness.d.ts +22 -0
  43. package/dist/cli/session-list-liveness.d.ts.map +1 -0
  44. package/dist/cli/session-list-liveness.js +22 -0
  45. package/dist/cli/session-list-liveness.js.map +1 -0
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +182 -33
  48. package/dist/cli.js.map +1 -1
  49. package/dist/core/ask-types.d.ts +4 -0
  50. package/dist/core/ask-types.d.ts.map +1 -1
  51. package/dist/core/ask-types.js +10 -0
  52. package/dist/core/ask-types.js.map +1 -1
  53. package/dist/core/cost-calculator.d.ts.map +1 -1
  54. package/dist/core/cost-calculator.js +35 -13
  55. package/dist/core/cost-calculator.js.map +1 -1
  56. package/dist/core/dashboard-ipc-server.d.ts.map +1 -1
  57. package/dist/core/dashboard-ipc-server.js +89 -16
  58. package/dist/core/dashboard-ipc-server.js.map +1 -1
  59. package/dist/core/dashboard-rows.d.ts.map +1 -1
  60. package/dist/core/dashboard-rows.js +6 -2
  61. package/dist/core/dashboard-rows.js.map +1 -1
  62. package/dist/core/dashboard-url.d.ts +6 -5
  63. package/dist/core/dashboard-url.d.ts.map +1 -1
  64. package/dist/core/dashboard-url.js +11 -8
  65. package/dist/core/dashboard-url.js.map +1 -1
  66. package/dist/core/maintenance.d.ts +11 -8
  67. package/dist/core/maintenance.d.ts.map +1 -1
  68. package/dist/core/maintenance.js +45 -20
  69. package/dist/core/maintenance.js.map +1 -1
  70. package/dist/core/per-bot-env.d.ts.map +1 -1
  71. package/dist/core/per-bot-env.js +4 -0
  72. package/dist/core/per-bot-env.js.map +1 -1
  73. package/dist/core/session-discovery.d.ts.map +1 -1
  74. package/dist/core/session-discovery.js +4 -0
  75. package/dist/core/session-discovery.js.map +1 -1
  76. package/dist/core/skills/cli-admin-command.d.ts.map +1 -1
  77. package/dist/core/skills/cli-admin-command.js +8 -2
  78. package/dist/core/skills/cli-admin-command.js.map +1 -1
  79. package/dist/core/skills/im-command.d.ts.map +1 -1
  80. package/dist/core/skills/im-command.js +3 -1
  81. package/dist/core/skills/im-command.js.map +1 -1
  82. package/dist/core/skills/sources.d.ts +33 -1
  83. package/dist/core/skills/sources.d.ts.map +1 -1
  84. package/dist/core/skills/sources.js +97 -0
  85. package/dist/core/skills/sources.js.map +1 -1
  86. package/dist/core/skills/types.d.ts +8 -0
  87. package/dist/core/skills/types.d.ts.map +1 -1
  88. package/dist/core/terminal-url.d.ts.map +1 -1
  89. package/dist/core/terminal-url.js +12 -2
  90. package/dist/core/terminal-url.js.map +1 -1
  91. package/dist/core/terminal-write-auth.d.ts +34 -0
  92. package/dist/core/terminal-write-auth.d.ts.map +1 -0
  93. package/dist/core/terminal-write-auth.js +76 -0
  94. package/dist/core/terminal-write-auth.js.map +1 -0
  95. package/dist/core/tmux-recovery.d.ts +11 -0
  96. package/dist/core/tmux-recovery.d.ts.map +1 -0
  97. package/dist/core/tmux-recovery.js +19 -0
  98. package/dist/core/tmux-recovery.js.map +1 -0
  99. package/dist/core/types.d.ts +10 -4
  100. package/dist/core/types.d.ts.map +1 -1
  101. package/dist/core/types.js.map +1 -1
  102. package/dist/core/update-check.d.ts +2 -2
  103. package/dist/core/update-check.js +2 -2
  104. package/dist/core/worker-pool.d.ts +3 -0
  105. package/dist/core/worker-pool.d.ts.map +1 -1
  106. package/dist/core/worker-pool.js +70 -3
  107. package/dist/core/worker-pool.js.map +1 -1
  108. package/dist/daemon.d.ts.map +1 -1
  109. package/dist/daemon.js +15 -8
  110. package/dist/daemon.js.map +1 -1
  111. package/dist/dashboard/auth.d.ts +1 -1
  112. package/dist/dashboard/auth.d.ts.map +1 -1
  113. package/dist/dashboard/auth.js +7 -2
  114. package/dist/dashboard/auth.js.map +1 -1
  115. package/dist/dashboard/bot-payload.d.ts +3 -0
  116. package/dist/dashboard/bot-payload.d.ts.map +1 -1
  117. package/dist/dashboard/bot-payload.js +3 -0
  118. package/dist/dashboard/bot-payload.js.map +1 -1
  119. package/dist/dashboard/connector-api.d.ts.map +1 -1
  120. package/dist/dashboard/connector-api.js +39 -13
  121. package/dist/dashboard/connector-api.js.map +1 -1
  122. package/dist/dashboard/history-senders.d.ts +37 -0
  123. package/dist/dashboard/history-senders.d.ts.map +1 -0
  124. package/dist/dashboard/history-senders.js +60 -0
  125. package/dist/dashboard/history-senders.js.map +1 -0
  126. package/dist/dashboard/roles-batch.d.ts +31 -0
  127. package/dist/dashboard/roles-batch.d.ts.map +1 -0
  128. package/dist/dashboard/roles-batch.js +87 -0
  129. package/dist/dashboard/roles-batch.js.map +1 -0
  130. package/dist/dashboard/settings-card-model.d.ts +4 -2
  131. package/dist/dashboard/settings-card-model.d.ts.map +1 -1
  132. package/dist/dashboard/settings-card-model.js +13 -5
  133. package/dist/dashboard/settings-card-model.js.map +1 -1
  134. package/dist/dashboard/settings-write-applier.d.ts +4 -1
  135. package/dist/dashboard/settings-write-applier.d.ts.map +1 -1
  136. package/dist/dashboard/settings-write-applier.js +6 -1
  137. package/dist/dashboard/settings-write-applier.js.map +1 -1
  138. package/dist/dashboard/skill-install-request.d.ts +4 -0
  139. package/dist/dashboard/skill-install-request.d.ts.map +1 -1
  140. package/dist/dashboard/skill-install-request.js +11 -1
  141. package/dist/dashboard/skill-install-request.js.map +1 -1
  142. package/dist/dashboard/trigger-api.d.ts +9 -1
  143. package/dist/dashboard/trigger-api.d.ts.map +1 -1
  144. package/dist/dashboard/trigger-api.js +48 -10
  145. package/dist/dashboard/trigger-api.js.map +1 -1
  146. package/dist/dashboard/web/app.d.ts.map +1 -1
  147. package/dist/dashboard/web/app.js +286 -271
  148. package/dist/dashboard/web/app.js.map +1 -1
  149. package/dist/dashboard/web/bot-defaults-page.d.ts +26 -0
  150. package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
  151. package/dist/dashboard/web/bot-defaults-page.js +1408 -12
  152. package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
  153. package/dist/dashboard/web/bot-defaults.d.ts +91 -4
  154. package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
  155. package/dist/dashboard/web/bot-defaults.js +43 -2141
  156. package/dist/dashboard/web/bot-defaults.js.map +1 -1
  157. package/dist/dashboard/web/bot-onboarding.d.ts +6 -1
  158. package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
  159. package/dist/dashboard/web/bot-onboarding.js +261 -306
  160. package/dist/dashboard/web/bot-onboarding.js.map +1 -1
  161. package/dist/dashboard/web/connectors-page.d.ts +4 -0
  162. package/dist/dashboard/web/connectors-page.d.ts.map +1 -1
  163. package/dist/dashboard/web/connectors-page.js +228 -48
  164. package/dist/dashboard/web/connectors-page.js.map +1 -1
  165. package/dist/dashboard/web/dashboard-api.d.ts +9 -0
  166. package/dist/dashboard/web/dashboard-api.d.ts.map +1 -0
  167. package/dist/dashboard/web/dashboard-api.js +18 -0
  168. package/dist/dashboard/web/dashboard-api.js.map +1 -0
  169. package/dist/dashboard/web/dashboard-components.d.ts +92 -0
  170. package/dist/dashboard/web/dashboard-components.d.ts.map +1 -0
  171. package/dist/dashboard/web/dashboard-components.js +250 -0
  172. package/dist/dashboard/web/dashboard-components.js.map +1 -0
  173. package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -1
  174. package/dist/dashboard/web/dashboard-routes.js +30 -183
  175. package/dist/dashboard/web/dashboard-routes.js.map +1 -1
  176. package/dist/dashboard/web/floating-scrollbars.d.ts +2 -0
  177. package/dist/dashboard/web/floating-scrollbars.d.ts.map +1 -0
  178. package/dist/dashboard/web/floating-scrollbars.js +264 -0
  179. package/dist/dashboard/web/floating-scrollbars.js.map +1 -0
  180. package/dist/dashboard/web/groups-api.d.ts +36 -0
  181. package/dist/dashboard/web/groups-api.d.ts.map +1 -0
  182. package/dist/dashboard/web/groups-api.js +44 -0
  183. package/dist/dashboard/web/groups-api.js.map +1 -0
  184. package/dist/dashboard/web/groups-page.d.ts.map +1 -1
  185. package/dist/dashboard/web/groups-page.js +746 -15
  186. package/dist/dashboard/web/groups-page.js.map +1 -1
  187. package/dist/dashboard/web/groups.d.ts +51 -18
  188. package/dist/dashboard/web/groups.d.ts.map +1 -1
  189. package/dist/dashboard/web/groups.js +145 -1096
  190. package/dist/dashboard/web/groups.js.map +1 -1
  191. package/dist/dashboard/web/i18n.d.ts.map +1 -1
  192. package/dist/dashboard/web/i18n.js +545 -255
  193. package/dist/dashboard/web/i18n.js.map +1 -1
  194. package/dist/dashboard/web/insights-page.d.ts.map +1 -1
  195. package/dist/dashboard/web/insights-page.js +1047 -14
  196. package/dist/dashboard/web/insights-page.js.map +1 -1
  197. package/dist/dashboard/web/insights.d.ts +177 -7
  198. package/dist/dashboard/web/insights.d.ts.map +1 -1
  199. package/dist/dashboard/web/insights.js +187 -1926
  200. package/dist/dashboard/web/insights.js.map +1 -1
  201. package/dist/dashboard/web/legacy-workflow-page.d.ts +3 -0
  202. package/dist/dashboard/web/legacy-workflow-page.d.ts.map +1 -0
  203. package/dist/dashboard/web/legacy-workflow-page.js +717 -0
  204. package/dist/dashboard/web/legacy-workflow-page.js.map +1 -0
  205. package/dist/dashboard/web/monitor-room.d.ts.map +1 -1
  206. package/dist/dashboard/web/monitor-room.js +10 -8
  207. package/dist/dashboard/web/monitor-room.js.map +1 -1
  208. package/dist/dashboard/web/monitoring-page.d.ts.map +1 -1
  209. package/dist/dashboard/web/monitoring-page.js +188 -14
  210. package/dist/dashboard/web/monitoring-page.js.map +1 -1
  211. package/dist/dashboard/web/office-page.d.ts.map +1 -1
  212. package/dist/dashboard/web/office-page.js +11 -23
  213. package/dist/dashboard/web/office-page.js.map +1 -1
  214. package/dist/dashboard/web/overview-page.d.ts.map +1 -1
  215. package/dist/dashboard/web/overview-page.js +141 -147
  216. package/dist/dashboard/web/overview-page.js.map +1 -1
  217. package/dist/dashboard/web/overview.d.ts +0 -1
  218. package/dist/dashboard/web/overview.d.ts.map +1 -1
  219. package/dist/dashboard/web/overview.js +3 -275
  220. package/dist/dashboard/web/overview.js.map +1 -1
  221. package/dist/dashboard/web/preferences.d.ts +1 -6
  222. package/dist/dashboard/web/preferences.d.ts.map +1 -1
  223. package/dist/dashboard/web/preferences.js +0 -21
  224. package/dist/dashboard/web/preferences.js.map +1 -1
  225. package/dist/dashboard/web/role-batch.d.ts +9 -0
  226. package/dist/dashboard/web/role-batch.d.ts.map +1 -0
  227. package/dist/dashboard/web/role-batch.js +42 -0
  228. package/dist/dashboard/web/role-batch.js.map +1 -0
  229. package/dist/dashboard/web/roles-page.d.ts.map +1 -1
  230. package/dist/dashboard/web/roles-page.js +538 -13
  231. package/dist/dashboard/web/roles-page.js.map +1 -1
  232. package/dist/dashboard/web/roles.d.ts +98 -1
  233. package/dist/dashboard/web/roles.d.ts.map +1 -1
  234. package/dist/dashboard/web/roles.js +117 -903
  235. package/dist/dashboard/web/roles.js.map +1 -1
  236. package/dist/dashboard/web/schedules-page.d.ts.map +1 -1
  237. package/dist/dashboard/web/schedules-page.js +82 -24
  238. package/dist/dashboard/web/schedules-page.js.map +1 -1
  239. package/dist/dashboard/web/sessions-kanban.d.ts +67 -0
  240. package/dist/dashboard/web/sessions-kanban.d.ts.map +1 -0
  241. package/dist/dashboard/web/sessions-kanban.js +481 -0
  242. package/dist/dashboard/web/sessions-kanban.js.map +1 -0
  243. package/dist/dashboard/web/sessions-page.d.ts +4 -0
  244. package/dist/dashboard/web/sessions-page.d.ts.map +1 -1
  245. package/dist/dashboard/web/sessions-page.js +1633 -18
  246. package/dist/dashboard/web/sessions-page.js.map +1 -1
  247. package/dist/dashboard/web/sessions.d.ts +45 -4
  248. package/dist/dashboard/web/sessions.d.ts.map +1 -1
  249. package/dist/dashboard/web/sessions.js +53 -2535
  250. package/dist/dashboard/web/sessions.js.map +1 -1
  251. package/dist/dashboard/web/settings-page.d.ts +0 -2
  252. package/dist/dashboard/web/settings-page.d.ts.map +1 -1
  253. package/dist/dashboard/web/settings-page.js +127 -117
  254. package/dist/dashboard/web/settings-page.js.map +1 -1
  255. package/dist/dashboard/web/skills-page.d.ts +10 -1
  256. package/dist/dashboard/web/skills-page.d.ts.map +1 -1
  257. package/dist/dashboard/web/skills-page.js +235 -93
  258. package/dist/dashboard/web/skills-page.js.map +1 -1
  259. package/dist/dashboard/web/team-federation-page.d.ts.map +1 -1
  260. package/dist/dashboard/web/team-federation-page.js +446 -28
  261. package/dist/dashboard/web/team-federation-page.js.map +1 -1
  262. package/dist/dashboard/web/team-federation.d.ts +91 -2
  263. package/dist/dashboard/web/team-federation.d.ts.map +1 -1
  264. package/dist/dashboard/web/team-federation.js +87 -474
  265. package/dist/dashboard/web/team-federation.js.map +1 -1
  266. package/dist/dashboard/web/theme-menu.d.ts +1 -0
  267. package/dist/dashboard/web/theme-menu.d.ts.map +1 -1
  268. package/dist/dashboard/web/theme-menu.js +79 -20
  269. package/dist/dashboard/web/theme-menu.js.map +1 -1
  270. package/dist/dashboard/web/ui.d.ts +1 -2
  271. package/dist/dashboard/web/ui.d.ts.map +1 -1
  272. package/dist/dashboard/web/ui.js +8 -20
  273. package/dist/dashboard/web/ui.js.map +1 -1
  274. package/dist/dashboard/web/v3-api.d.ts +16 -0
  275. package/dist/dashboard/web/v3-api.d.ts.map +1 -0
  276. package/dist/dashboard/web/v3-api.js +21 -0
  277. package/dist/dashboard/web/v3-api.js.map +1 -0
  278. package/dist/dashboard/web/v3-components.d.ts +2 -0
  279. package/dist/dashboard/web/v3-components.d.ts.map +1 -0
  280. package/dist/dashboard/web/v3-components.js +290 -0
  281. package/dist/dashboard/web/v3-components.js.map +1 -0
  282. package/dist/dashboard/web/v3-model.d.ts +80 -0
  283. package/dist/dashboard/web/v3-model.d.ts.map +1 -0
  284. package/dist/dashboard/web/v3-model.js +240 -0
  285. package/dist/dashboard/web/v3-model.js.map +1 -0
  286. package/dist/dashboard/web/v3-page.d.ts.map +1 -1
  287. package/dist/dashboard/web/v3-page.js +2 -22
  288. package/dist/dashboard/web/v3-page.js.map +1 -1
  289. package/dist/dashboard/web/v3-terminal.d.ts +14 -0
  290. package/dist/dashboard/web/v3-terminal.d.ts.map +1 -1
  291. package/dist/dashboard/web/v3-terminal.js +31 -19
  292. package/dist/dashboard/web/v3-terminal.js.map +1 -1
  293. package/dist/dashboard/web/webhook-logs-page.d.ts +16 -0
  294. package/dist/dashboard/web/webhook-logs-page.d.ts.map +1 -0
  295. package/dist/dashboard/web/webhook-logs-page.js +195 -0
  296. package/dist/dashboard/web/webhook-logs-page.js.map +1 -0
  297. package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -1
  298. package/dist/dashboard/web/whiteboards-page.js +18 -23
  299. package/dist/dashboard/web/whiteboards-page.js.map +1 -1
  300. package/dist/dashboard/web/workflow-version-switch.d.ts +8 -0
  301. package/dist/dashboard/web/workflow-version-switch.d.ts.map +1 -0
  302. package/dist/dashboard/web/workflow-version-switch.js +9 -0
  303. package/dist/dashboard/web/workflow-version-switch.js.map +1 -0
  304. package/dist/dashboard/web/workflows.d.ts +272 -1
  305. package/dist/dashboard/web/workflows.d.ts.map +1 -1
  306. package/dist/dashboard/web/workflows.js +211 -1397
  307. package/dist/dashboard/web/workflows.js.map +1 -1
  308. package/dist/dashboard/webhook-routes.d.ts.map +1 -1
  309. package/dist/dashboard/webhook-routes.js +92 -39
  310. package/dist/dashboard/webhook-routes.js.map +1 -1
  311. package/dist/dashboard-web/app.js +1 -65
  312. package/dist/dashboard-web/brand-logo.png +0 -0
  313. package/dist/dashboard-web/chunks/bot-defaults-page-HSQ6HR3R.js +1 -0
  314. package/dist/dashboard-web/chunks/chunk-6TPODDDC.js +1 -0
  315. package/dist/dashboard-web/chunks/chunk-73EJP2MO.js +1 -0
  316. package/dist/dashboard-web/chunks/chunk-BRTZFELS.js +1 -0
  317. package/dist/dashboard-web/chunks/chunk-EVK77ASG.js +1 -0
  318. package/dist/dashboard-web/chunks/chunk-R3FXBFQH.js +1 -0
  319. package/dist/dashboard-web/chunks/chunk-VRLL7SNU.js +1 -0
  320. package/dist/dashboard-web/chunks/chunk-XCPSHD3G.js +37 -0
  321. package/dist/dashboard-web/chunks/chunk-XJ7BGPJH.js +1 -0
  322. package/dist/dashboard-web/chunks/chunk-YVRWYGXR.js +1 -0
  323. package/dist/dashboard-web/chunks/chunk-ZJING6FY.js +66 -0
  324. package/dist/dashboard-web/chunks/connectors-page-ODUA5UCW.js +1 -0
  325. package/dist/dashboard-web/chunks/groups-page-OYX5M6NK.js +8 -0
  326. package/dist/dashboard-web/chunks/insights-page-YCQO6OCR.js +22 -0
  327. package/dist/dashboard-web/chunks/legacy-workflow-page-XJAUNONP.js +2 -0
  328. package/dist/dashboard-web/chunks/{monitor-room-RFX4HPS5.js → monitor-room-WTZNYAFV.js} +17 -15
  329. package/dist/dashboard-web/chunks/monitoring-page-R6LJUK7G.js +2 -0
  330. package/dist/dashboard-web/chunks/office-page-4OXK3GNR.js +1 -0
  331. package/dist/dashboard-web/chunks/overview-page-4MVEJY6U.js +1 -0
  332. package/dist/dashboard-web/chunks/roles-page-NQDW27VV.js +1 -0
  333. package/dist/dashboard-web/chunks/schedules-page-JRNKYHOX.js +1 -0
  334. package/dist/dashboard-web/chunks/sessions-page-LF7UVI7B.js +3 -0
  335. package/dist/dashboard-web/chunks/settings-page-WGW7KQQS.js +2 -0
  336. package/dist/dashboard-web/chunks/skills-page-AMD4XP3T.js +3 -0
  337. package/dist/dashboard-web/chunks/team-federation-page-SYG3K4GG.js +1 -0
  338. package/dist/dashboard-web/chunks/v3-page-6NFFWNUK.js +94 -0
  339. package/dist/dashboard-web/chunks/whiteboards-page-FBRUK2AS.js +1 -0
  340. package/dist/dashboard-web/favicon.png +0 -0
  341. package/dist/dashboard-web/index.html +5 -69
  342. package/dist/dashboard-web/style.css +18835 -7211
  343. package/dist/dashboard.js +150 -32
  344. package/dist/dashboard.js.map +1 -1
  345. package/dist/global-config.d.ts +2 -2
  346. package/dist/global-config.d.ts.map +1 -1
  347. package/dist/i18n/en.d.ts.map +1 -1
  348. package/dist/i18n/en.js +3 -0
  349. package/dist/i18n/en.js.map +1 -1
  350. package/dist/i18n/zh.d.ts.map +1 -1
  351. package/dist/i18n/zh.js +3 -0
  352. package/dist/i18n/zh.js.map +1 -1
  353. package/dist/im/lark/card-builder.d.ts +7 -5
  354. package/dist/im/lark/card-builder.d.ts.map +1 -1
  355. package/dist/im/lark/card-builder.js +10 -7
  356. package/dist/im/lark/card-builder.js.map +1 -1
  357. package/dist/im/lark/card-handler.d.ts.map +1 -1
  358. package/dist/im/lark/card-handler.js +25 -1
  359. package/dist/im/lark/card-handler.js.map +1 -1
  360. package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
  361. package/dist/im/lark/event-dispatcher.js +84 -0
  362. package/dist/im/lark/event-dispatcher.js.map +1 -1
  363. package/dist/platform/binding.d.ts +9 -0
  364. package/dist/platform/binding.d.ts.map +1 -1
  365. package/dist/platform/binding.js +14 -0
  366. package/dist/platform/binding.js.map +1 -1
  367. package/dist/platform/tunnel-client.d.ts.map +1 -1
  368. package/dist/platform/tunnel-client.js +9 -0
  369. package/dist/platform/tunnel-client.js.map +1 -1
  370. package/dist/services/bot-config-store.d.ts +1 -1
  371. package/dist/services/bot-config-store.d.ts.map +1 -1
  372. package/dist/services/bot-config-store.js +11 -5
  373. package/dist/services/bot-config-store.js.map +1 -1
  374. package/dist/services/file-bridge-path.d.ts +8 -0
  375. package/dist/services/file-bridge-path.d.ts.map +1 -0
  376. package/dist/services/file-bridge-path.js +75 -0
  377. package/dist/services/file-bridge-path.js.map +1 -0
  378. package/dist/services/grok-paths.d.ts +27 -0
  379. package/dist/services/grok-paths.d.ts.map +1 -0
  380. package/dist/services/grok-paths.js +106 -0
  381. package/dist/services/grok-paths.js.map +1 -0
  382. package/dist/services/grok-transcript.d.ts +67 -0
  383. package/dist/services/grok-transcript.d.ts.map +1 -0
  384. package/dist/services/grok-transcript.js +630 -0
  385. package/dist/services/grok-transcript.js.map +1 -0
  386. package/dist/services/hermes-session-filter.d.ts +28 -0
  387. package/dist/services/hermes-session-filter.d.ts.map +1 -0
  388. package/dist/services/hermes-session-filter.js +53 -0
  389. package/dist/services/hermes-session-filter.js.map +1 -0
  390. package/dist/services/hermes-transcript.d.ts +3 -0
  391. package/dist/services/hermes-transcript.d.ts.map +1 -1
  392. package/dist/services/hermes-transcript.js +20 -2
  393. package/dist/services/hermes-transcript.js.map +1 -1
  394. package/dist/services/resumable-session-discovery.d.ts +3 -0
  395. package/dist/services/resumable-session-discovery.d.ts.map +1 -1
  396. package/dist/services/resumable-session-discovery.js +6 -1
  397. package/dist/services/resumable-session-discovery.js.map +1 -1
  398. package/dist/services/skill-registry-store.d.ts +9 -0
  399. package/dist/services/skill-registry-store.d.ts.map +1 -1
  400. package/dist/services/skill-registry-store.js +304 -1
  401. package/dist/services/skill-registry-store.js.map +1 -1
  402. package/dist/services/structured-bridge-clis.d.ts +29 -0
  403. package/dist/services/structured-bridge-clis.d.ts.map +1 -0
  404. package/dist/services/structured-bridge-clis.js +76 -0
  405. package/dist/services/structured-bridge-clis.js.map +1 -0
  406. package/dist/services/trigger-log-store.d.ts +59 -0
  407. package/dist/services/trigger-log-store.d.ts.map +1 -1
  408. package/dist/services/trigger-log-store.js +81 -10
  409. package/dist/services/trigger-log-store.js.map +1 -1
  410. package/dist/services/usage-ledger.d.ts +4 -1
  411. package/dist/services/usage-ledger.d.ts.map +1 -1
  412. package/dist/services/usage-ledger.js +48 -10
  413. package/dist/services/usage-ledger.js.map +1 -1
  414. package/dist/services/webhook-audit.d.ts +10 -0
  415. package/dist/services/webhook-audit.d.ts.map +1 -0
  416. package/dist/services/webhook-audit.js +116 -0
  417. package/dist/services/webhook-audit.js.map +1 -0
  418. package/dist/setup/bot-config-editor.d.ts.map +1 -1
  419. package/dist/setup/bot-config-editor.js +2 -0
  420. package/dist/setup/bot-config-editor.js.map +1 -1
  421. package/dist/setup/ensure-tmux.d.ts +26 -12
  422. package/dist/setup/ensure-tmux.d.ts.map +1 -1
  423. package/dist/setup/ensure-tmux.js +85 -18
  424. package/dist/setup/ensure-tmux.js.map +1 -1
  425. package/dist/skills/definitions.d.ts.map +1 -1
  426. package/dist/skills/definitions.js +14 -1
  427. package/dist/skills/definitions.js.map +1 -1
  428. package/dist/skills/injection-mode.d.ts +16 -0
  429. package/dist/skills/injection-mode.d.ts.map +1 -1
  430. package/dist/skills/injection-mode.js +25 -0
  431. package/dist/skills/injection-mode.js.map +1 -1
  432. package/dist/types.d.ts +9 -0
  433. package/dist/types.d.ts.map +1 -1
  434. package/dist/utils/global-install.d.ts +22 -0
  435. package/dist/utils/global-install.d.ts.map +1 -0
  436. package/dist/utils/global-install.js +106 -0
  437. package/dist/utils/global-install.js.map +1 -0
  438. package/dist/utils/install-diagnostics.d.ts +1 -1
  439. package/dist/utils/install-diagnostics.d.ts.map +1 -1
  440. package/dist/utils/install-diagnostics.js +6 -4
  441. package/dist/utils/install-diagnostics.js.map +1 -1
  442. package/dist/utils/install-info.d.ts +2 -0
  443. package/dist/utils/install-info.d.ts.map +1 -1
  444. package/dist/utils/install-info.js +10 -4
  445. package/dist/utils/install-info.js.map +1 -1
  446. package/dist/worker.js +293 -172
  447. package/dist/worker.js.map +1 -1
  448. package/dist/workflows/events/payloads.d.ts +10 -10
  449. package/dist/workflows/events/schema.d.ts +28 -28
  450. package/package.json +8 -7
  451. package/dist/dashboard/web/connectors.d.ts +0 -2
  452. package/dist/dashboard/web/connectors.d.ts.map +0 -1
  453. package/dist/dashboard/web/connectors.js +0 -2
  454. package/dist/dashboard/web/connectors.js.map +0 -1
  455. package/dist/dashboard/web/office.d.ts +0 -2
  456. package/dist/dashboard/web/office.d.ts.map +0 -1
  457. package/dist/dashboard/web/office.js +0 -2
  458. package/dist/dashboard/web/office.js.map +0 -1
  459. package/dist/dashboard/web/schedules.d.ts +0 -2
  460. package/dist/dashboard/web/schedules.d.ts.map +0 -1
  461. package/dist/dashboard/web/schedules.js +0 -2
  462. package/dist/dashboard/web/schedules.js.map +0 -1
  463. package/dist/dashboard/web/settings.d.ts +0 -2
  464. package/dist/dashboard/web/settings.d.ts.map +0 -1
  465. package/dist/dashboard/web/settings.js +0 -2
  466. package/dist/dashboard/web/settings.js.map +0 -1
  467. package/dist/dashboard/web/skills.d.ts +0 -2
  468. package/dist/dashboard/web/skills.d.ts.map +0 -1
  469. package/dist/dashboard/web/skills.js +0 -2
  470. package/dist/dashboard/web/skills.js.map +0 -1
  471. package/dist/dashboard/web/skin-intro.d.ts +0 -4
  472. package/dist/dashboard/web/skin-intro.d.ts.map +0 -1
  473. package/dist/dashboard/web/skin-intro.js +0 -49
  474. package/dist/dashboard/web/skin-intro.js.map +0 -1
  475. package/dist/dashboard/web/v3.d.ts +0 -3
  476. package/dist/dashboard/web/v3.d.ts.map +0 -1
  477. package/dist/dashboard/web/v3.js +0 -539
  478. package/dist/dashboard/web/v3.js.map +0 -1
  479. package/dist/dashboard/web/whiteboards.d.ts +0 -2
  480. package/dist/dashboard/web/whiteboards.d.ts.map +0 -1
  481. package/dist/dashboard/web/whiteboards.js +0 -2
  482. package/dist/dashboard/web/whiteboards.js.map +0 -1
  483. package/dist/dashboard-web/chunks/bot-defaults-page-OCIHPGEU.js +0 -438
  484. package/dist/dashboard-web/chunks/chunk-3N2PPQVD.js +0 -1
  485. package/dist/dashboard-web/chunks/chunk-3UJYRR2Q.js +0 -37
  486. package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +0 -1
  487. package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +0 -1
  488. package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +0 -54
  489. package/dist/dashboard-web/chunks/chunk-LXIK7OUJ.js +0 -1
  490. package/dist/dashboard-web/chunks/chunk-PE6W3C2C.js +0 -1
  491. package/dist/dashboard-web/chunks/chunk-QW54DWU3.js +0 -325
  492. package/dist/dashboard-web/chunks/connectors-IGETYWCP.js +0 -1
  493. package/dist/dashboard-web/chunks/groups-page-MYBS4ZYJ.js +0 -207
  494. package/dist/dashboard-web/chunks/insights-page-UPA32V2S.js +0 -309
  495. package/dist/dashboard-web/chunks/monitoring-page-7T3BESZ2.js +0 -1
  496. package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +0 -1
  497. package/dist/dashboard-web/chunks/overview-page-LJSBCQW4.js +0 -1
  498. package/dist/dashboard-web/chunks/roles-page-ESURTVQH.js +0 -98
  499. package/dist/dashboard-web/chunks/schedules-LML2ISOT.js +0 -1
  500. package/dist/dashboard-web/chunks/sessions-YB73XOTU.js +0 -1
  501. package/dist/dashboard-web/chunks/sessions-page-MCO5QR7Z.js +0 -1
  502. package/dist/dashboard-web/chunks/settings-page-OSDKNVS3.js +0 -2
  503. package/dist/dashboard-web/chunks/skills-page-PXBZJ6P6.js +0 -2
  504. package/dist/dashboard-web/chunks/team-federation-page-TTPVHFPX.js +0 -10
  505. package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +0 -149
  506. package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +0 -1
  507. package/dist/dashboard-web/chunks/workflows-FCPM4S4D.js +0 -184
  508. package/dist/dashboard-web/skins/bluearchive-hero.webp +0 -0
  509. package/dist/dashboard-web/skins/dragonball-goku.webp +0 -0
  510. package/dist/dashboard-web/skins/dragonball-wukong.webp +0 -0
  511. package/dist/dashboard-web/skins/genshin-breeze.webp +0 -0
  512. package/dist/dashboard-web/skins/ikun-hero.webp +0 -0
  513. package/dist/dashboard-web/skins/prts-priestess.webp +0 -0
  514. package/dist/dashboard-web/skins/zzz-hero.webp +0 -0
  515. package/dist/dashboard-web/skins/zzz-pattern.svg +0 -25
@@ -1 +1 @@
1
- {"version":3,"file":"bot-onboarding.js","sourceRoot":"","sources":["../../../src/dashboard/web/bot-onboarding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAmDxC,IAAI,MAAM,GAA6B,IAAI,CAAC;AAC5C,IAAI,SAAS,GAAkB,IAAI,CAAC;AACpC,oEAAoE;AACpE,IAAI,iBAAiB,GAAG,SAAS,CAAC;AAClC,IAAI,qBAAqB,GAAa,EAAE,CAAC;AAEzC,SAAS,WAAW;IAClB,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAChC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,GAAkB;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB;QAAE,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACzE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAC,mBAAmB;YAC5B,CAAC,CAAC,GAAG,CAAC,CAAC,sCAAsC,CAAC,IAAI,GAAG,CAAC,mBAAmB,EAAE;YAC3E,CAAC,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,2BAA2B;QAAE,OAAO,CAAC,CAAC,gCAAgC,CAAC,CAAC;IAC3F,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACvE,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,CAAC,sBAAsB,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,CAAC;IACzH,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACrC,CAAC;AAED,sCAAsC;AACtC,SAAS,eAAe,CAAC,GAAkB;IACzC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC/F,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;IACzB,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACxG,IAAI,IAAI,GAAG,wBAAwB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QACzD,IAAI,CAAC,CAAC,YAAY;YAAE,IAAI,IAAI,2BAA2B,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,kBAAkB;IAClB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;SACrC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;SAC7G,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,2BAA2B,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM;UACvH,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,mDAAmD;AACnD,SAAS,UAAU,CAAC,GAAkB,EAAE,UAAmB;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,yBAAyB,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,OAAO;;gBAEO,CAAC,CAAC,0BAA0B,CAAC;wDACW,CAAC,CAAC,gCAAgC,CAAC;;6BAE9D,CAAC,CAAC,yBAAyB,CAAC;QACjD,SAAS;;gDAE+B,CAAC,CAAC,2BAA2B,CAAC;;YAElE,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,GAAkB,EAAE,UAAmB;IACxD,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,kBAAkB;IAClB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,KAAK,kBAAkB,IAAI,GAAG,CAAC,SAAS;QAC9D,CAAC,CAAC;qCAC+B,GAAG,CAAC,SAAS,UAAU,CAAC,CAAC,qBAAqB,CAAC;UAC1E,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,oCAAoC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;aAC5I;QACT,CAAC,CAAC,EAAE,CAAC;IACP,kDAAkD;IAClD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,KAAK,2BAA2B,IAAI,GAAG,CAAC,iBAAiB;QACpF,CAAC,CAAC;qCAC+B,GAAG,CAAC,iBAAiB,UAAU,CAAC,CAAC,6BAA6B,CAAC;aACvF;QACT,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK;QACxB,CAAC,CAAC,2BAA2B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;cACvD,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;cACzE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,eAAe,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;cAC7G,MAAM;QACV,CAAC,CAAC,EAAE,CAAC;IACP,qDAAqD;IACrD,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,KAAK,WAAW;QAC5C,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW;YACd,CAAC,CAAC,sBAAsB,CAAC,CAAC,sBAAsB,CAAC,MAAM;YACvD,CAAC,CAAC,sBAAsB,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC;QACjE,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,SAAS,GAAG;;YAEJ,CAAC,CAAC,qBAAqB,CAAC;WACzB,CAAC,CAAC,qBAAqB,CAAC;;yCAEM,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,GAAG,CAAC;MACjE,KAAK;MACL,UAAU;MACV,QAAQ;MACR,eAAe,CAAC,GAAG,CAAC;MACpB,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC;MAC3B,WAAW;oCACmB,CAAC,CAAC,qBAAqB,CAAC;aAC/C,CAAC;IAEZ,sDAAsD;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAkB,gBAAgB,CAAC,CAAC;QACrE,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE;YACzC,EAAE,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAmB,WAAW,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC1E,KAAK,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAkB,EAAE,QAAgB;IAC7D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,uBAAuB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE;YACjF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,kDAAkD;YAClD,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAChF,OAAO;QACT,CAAC;QACD,IAAI,IAAI,EAAE,GAAG;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;gBAChF,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAC9C,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;YAChH,CAAC;YACD,OAAO,IAAI,CAAC,OAAsB,CAAC;QACrC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,IAAiB;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC;IACjB,IAAI,CAAC,CAAC;QAAE,OAAO;IACf,MAAM,GAAG,GAAG,CAAC,CAAC,aAAa,CAAoB,SAAS,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAmB,WAAW,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAsB,uBAAuB,CAAC,CAAC;IAC3E,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;QAAE,OAAO;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,IAAI,GAAG,EAAE,YAAY,KAAK,KAAK,CAAC;IAE5D,IAAI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7B,qBAAqB;QACrB,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,yCAAyC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjH,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,qCAAqC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QACnG,kDAAkD;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,KAAK,GAAG,iBAAiB,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAC9B,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,gCAAgC,CAAC,CAAC;QACxD,8CAA8C;QAC9C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,iBAAiB;YAAE,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAoB,EAAE,QAAiB;IACzD,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,OAAO;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC;SACpG,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,yBAAyB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,CAAC,CAAC,SAAS,GAAG;;YAEJ,CAAC,CAAC,qBAAqB,CAAC;WACzB,CAAC,CAAC,qBAAqB,CAAC;;;;gBAInB,CAAC,CAAC,wBAAwB,CAAC;8BACb,UAAU;;;gBAGxB,CAAC,CAAC,4BAA4B,CAAC;;kCAEb,CAAC,CAAC,4BAA4B,CAAC;iCAChC,CAAC,CAAC,2BAA2B,CAAC;;;;kCAI7B,CAAC,CAAC,6BAA6B,CAAC;gEACF,CAAC,CAAC,mCAAmC,CAAC;;;gBAGtF,CAAC,CAAC,0BAA0B,CAAC;oFACuC,CAAC,CAAC,gCAAgC,CAAC;;;QAG/G,SAAS;;+CAE8B,CAAC,CAAC,sBAAsB,CAAC;gDACxB,CAAC,CAAC,yBAAyB,CAAC;;;aAG/D,CAAC;IAEZ,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAkB,kBAAkB,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAoB,YAAY,CAAC,CAAC;IAChE,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnD,oDAAoD;IACpD,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAoB,SAAS,CAAC,CAAC;IAChE,SAAS,EAAE,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,iDAAiD;IACjD,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,CAAoB,cAAc,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,MAAM,IAAI,GAAG,aAAa,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAkB,eAAe,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAmB,SAAS,CAAC,CAAC;QAC9D,IAAI,KAAK;YAAE,KAAK,CAAC,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC;QACpH,IAAI,QAAQ;YAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC;IACxI,CAAC,CAAC;IACF,aAAa,EAAE,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE;QACpC,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAoB,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QACzE,MAAM,UAAU,GAAG,CAAC,CAAC,aAAa,CAAmB,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,aAAa,CAAoB,cAAc,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACxG,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAmB,WAAW,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC1E,KAAK,eAAe,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,KAAsF,EACtF,OAAoB;IAEpB,WAAW,EAAE,CAAC;IACd,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,2BAA2B,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS;aACvC,CAAC;SACH,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,8CAA8C;QAC9C,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACpC,WAAW,EAAE,CAAC;gBACd,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,EAAU;IAC/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,gDAAgD;IAChD,kCAAkC;IAClC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACzG,WAAW,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,WAAW,EAAE,CAAC;IACd,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,sCAAsC;IACtC,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,IAAI;QAAE,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;IACxC,wCAAwC;IACxC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC;QAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAA6B,CAAC;IAC/E,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,KAAK,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"bot-onboarding.js","sourceRoot":"","sources":["../../../src/dashboard/web/bot-onboarding.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { type PageDisposer } from './react-mount.js';
2
+ export declare function replaceConnectorById<T extends {
3
+ id: string;
4
+ }>(connectors: T[], updated: T): T[];
2
5
  export declare function buildConnectorInstructionUpdateBody(connector: {
3
6
  name: string;
4
7
  promptEnvelope?: {
@@ -11,4 +14,5 @@ export declare function buildConnectorInstructionUpdateBody(connector: {
11
14
  };
12
15
  };
13
16
  export declare function renderConnectorsPage(root: HTMLElement): PageDisposer;
17
+ export declare function renderConnectorsLogsPage(root: HTMLElement): PageDisposer;
14
18
  //# sourceMappingURL=connectors-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectors-page.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/connectors-page.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuFrE,wBAAgB,mCAAmC,CACjD,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACrE,WAAW,EAAE,MAAM,GAClB;IAAE,cAAc,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAOjE;AAsfD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAEpE"}
1
+ {"version":3,"file":"connectors-page.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/connectors-page.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgErE,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAE/F;AAoBD,wBAAgB,mCAAmC,CACjD,SAAS,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACrE,WAAW,EAAE,MAAM,GAClB;IAAE,cAAc,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAOjE;AAu3BD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAEpE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAExE"}
@@ -1,7 +1,13 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { CreateActionButton, DropdownMenu, FieldTitle, LoadingState, dropdownLabel } from './dashboard-components.js';
4
+ import { jget, jsend } from './dashboard-api.js';
3
5
  import { mountReactPage } from './react-mount.js';
4
6
  import { useT } from './react-hooks.js';
7
+ import { WebhookLogsContent } from './webhook-logs-page.js';
8
+ export function replaceConnectorById(connectors, updated) {
9
+ return connectors.map(connector => connector.id === updated.id ? updated : connector);
10
+ }
5
11
  const emptyForm = {
6
12
  name: '',
7
13
  botId: '',
@@ -12,23 +18,13 @@ const emptyForm = {
12
18
  manualChat: false,
13
19
  manualChatId: '',
14
20
  allowChats: [],
21
+ deduplicate: false,
15
22
  dedup: '',
16
23
  instruction: '',
17
24
  verify: 'token',
18
25
  secret: '',
26
+ storePayload: true,
19
27
  };
20
- async function jget(u) {
21
- const r = await fetch(u);
22
- return { status: r.status, body: await r.json().catch(() => ({})) };
23
- }
24
- async function jsend(method, u, b) {
25
- const r = await fetch(u, {
26
- method,
27
- headers: { 'content-type': 'application/json' },
28
- body: b ? JSON.stringify(b) : undefined,
29
- });
30
- return { status: r.status, body: await r.json().catch(() => ({})) };
31
- }
32
28
  export function buildConnectorInstructionUpdateBody(connector, instruction) {
33
29
  return {
34
30
  promptEnvelope: {
@@ -40,13 +36,88 @@ export function buildConnectorInstructionUpdateBody(connector, instruction) {
40
36
  function webhookUrl(id) {
41
37
  return `${location.origin}/webhook/${encodeURIComponent(id)}`;
42
38
  }
39
+ function ConnectorDropdown(props) {
40
+ return (_jsx(DropdownMenu, { id: props.id, className: "connector-form-menu", ariaLabel: props.label, value: props.value, label: dropdownLabel(props.options, props.value), options: props.options, onChange: props.onChange }));
41
+ }
42
+ function SearchableGroupPicker(props) {
43
+ const rootRef = useRef(null);
44
+ const [open, setOpen] = useState(false);
45
+ const [query, setQuery] = useState('');
46
+ const values = Array.isArray(props.value) ? props.value : (props.value ? [props.value] : []);
47
+ const valueSet = useMemo(() => new Set(values), [values]);
48
+ const normalizedQuery = query.trim().toLocaleLowerCase();
49
+ const filteredGroups = useMemo(() => {
50
+ if (!normalizedQuery)
51
+ return props.groups;
52
+ return props.groups.filter(group => `${group.name} ${group.chatId}`.toLocaleLowerCase().includes(normalizedQuery));
53
+ }, [normalizedQuery, props.groups]);
54
+ const selectedLabel = props.multiple
55
+ ? (values.length === 0 ? props.allLabel || props.placeholder : props.selectedCountLabel(values.length))
56
+ : (props.groups.find(group => group.chatId === values[0])?.name || values[0] || props.placeholder);
57
+ useEffect(() => {
58
+ if (!open)
59
+ return undefined;
60
+ const closeOnOutsideClick = (event) => {
61
+ if (!rootRef.current?.contains(event.target))
62
+ setOpen(false);
63
+ };
64
+ document.addEventListener('pointerdown', closeOnOutsideClick);
65
+ return () => document.removeEventListener('pointerdown', closeOnOutsideClick);
66
+ }, [open]);
67
+ function select(chatId) {
68
+ if (!props.multiple) {
69
+ props.onChange(chatId);
70
+ setOpen(false);
71
+ setQuery('');
72
+ return;
73
+ }
74
+ props.onChange(valueSet.has(chatId) ? values.filter(id => id !== chatId) : [...values, chatId]);
75
+ }
76
+ return (_jsxs("div", { ref: rootRef, className: `connector-group-picker${open ? ' open' : ''}`, children: [_jsxs("button", { id: props.id, type: "button", className: "connector-group-picker-trigger", "aria-label": props.label, "aria-haspopup": "listbox", "aria-expanded": open, onClick: () => setOpen(current => !current), children: [_jsx("span", { className: values.length || (props.multiple && props.allLabel) ? '' : 'muted', children: selectedLabel }), _jsx("span", { className: "connector-group-picker-chevron", "aria-hidden": "true" })] }), open ? (_jsxs("div", { className: "connector-group-picker-popover", children: [_jsxs("label", { className: "connector-group-search", htmlFor: `${props.id}-search`, children: [_jsx("span", { className: "connector-group-search-icon", "aria-hidden": "true" }), _jsx("input", { id: `${props.id}-search`, type: "search", autoComplete: "off", autoFocus: true, value: query, placeholder: props.searchPlaceholder, onChange: event => setQuery(event.currentTarget.value), onKeyDown: event => {
77
+ if (event.key === 'Escape') {
78
+ event.preventDefault();
79
+ setOpen(false);
80
+ }
81
+ } })] }), _jsxs("div", { className: "connector-group-options", role: "listbox", "aria-label": props.label, "aria-multiselectable": props.multiple || undefined, children: [props.multiple && props.allLabel && !normalizedQuery ? (_jsxs("button", { type: "button", className: `connector-group-option connector-group-option-all${values.length === 0 ? ' selected' : ''}`, role: "option", "aria-selected": values.length === 0, onClick: () => props.onChange([]), children: [_jsx("span", { className: "connector-group-check", "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("b", { children: props.allLabel }), _jsx("small", { children: props.placeholder })] })] })) : null, filteredGroups.map(group => {
82
+ const selected = valueSet.has(group.chatId);
83
+ return (_jsxs("button", { type: "button", className: `connector-group-option${selected ? ' selected' : ''}`, role: "option", "aria-selected": selected, onClick: () => select(group.chatId), children: [_jsx("span", { className: "connector-group-check", "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("b", { children: group.name || group.chatId }), group.name ? _jsx("small", { children: group.chatId }) : null] })] }, group.chatId));
84
+ }), !filteredGroups.length ? _jsx("p", { className: "connector-group-empty", children: props.emptyLabel }) : null] })] })) : null] }));
85
+ }
43
86
  function botGroups(groups, botId) {
44
87
  return groups.filter(g => g.bots.includes(botId));
45
88
  }
46
- function ConnectorsPage() {
89
+ function formFromConnector(connector, groups) {
90
+ const chatId = connector.target.chatId || '';
91
+ const knownChat = chatId && botGroups(groups, connector.target.botId).some(group => group.chatId === chatId);
92
+ return {
93
+ name: connector.name,
94
+ botId: connector.target.botId,
95
+ kind: connector.target.kind,
96
+ workflowId: connector.target.workflowId || '',
97
+ mode: connector.target.mode,
98
+ chatId: knownChat ? chatId : '',
99
+ manualChat: Boolean(chatId && !knownChat),
100
+ manualChatId: knownChat ? '' : chatId,
101
+ allowChats: connector.target.allowChats || [],
102
+ deduplicate: Boolean(connector.lifecycleExtractors?.dedupKey),
103
+ dedup: connector.lifecycleExtractors?.dedupKey || '',
104
+ instruction: connector.promptEnvelope?.instruction || '',
105
+ verify: connector.verify?.type || 'token',
106
+ secret: '',
107
+ storePayload: connector.loggingPolicy?.storePayload !== false,
108
+ };
109
+ }
110
+ function ConnectorsSubNav(props) {
111
+ const tr = useT();
112
+ const isWebhooks = props.active === 'webhooks';
113
+ const isLogs = props.active === 'logs';
114
+ return (_jsxs("nav", { className: "connectors-subnav-slot connectors-subnav insight-tabs", role: "tablist", "aria-label": tr('nav.connectors'), children: [_jsx("a", { href: "#/connectors", className: `itab${isWebhooks ? ' on' : ''}`, role: "tab", "aria-selected": isWebhooks, children: tr('connectors.tabWebhooks') }), _jsx("a", { href: "#/connectors/logs", className: `itab${isLogs ? ' on' : ''}`, role: "tab", "aria-selected": isLogs, children: tr('connectors.tabLogs') })] }));
115
+ }
116
+ function ConnectorsPage(props) {
47
117
  const tr = useT();
48
118
  const mountedRef = useRef(false);
49
119
  const copyTimerRef = useRef(null);
120
+ const createDialogRef = useRef(null);
50
121
  const [bots, setBots] = useState([]);
51
122
  const [groups, setGroups] = useState([]);
52
123
  const [connectors, setConnectors] = useState([]);
@@ -55,11 +126,27 @@ function ConnectorsPage() {
55
126
  const [createMsg, setCreateMsg] = useState(null);
56
127
  const [created, setCreated] = useState(null);
57
128
  const [creating, setCreating] = useState(false);
58
- const [editingId, setEditingId] = useState(null);
59
- const [editInstruction, setEditInstruction] = useState('');
129
+ const [createOpen, setCreateOpen] = useState(false);
130
+ const [editingConnector, setEditingConnector] = useState(null);
60
131
  const [editMsg, setEditMsg] = useState(null);
61
132
  const [copiedId, setCopiedId] = useState(null);
62
133
  const groupsForBot = useMemo(() => botGroups(groups, form.botId), [groups, form.botId]);
134
+ const botOptions = useMemo(() => bots.length
135
+ ? bots.map(bot => ({ value: bot.larkAppId, label: bot.botName }))
136
+ : [{ value: '', label: tr('connectors.noOnlineBots') }], [bots, tr]);
137
+ const kindOptions = useMemo(() => [
138
+ { value: 'turn', label: tr('connectors.kindTurn') },
139
+ { value: 'workflow', label: tr('connectors.kindWorkflow') },
140
+ ], [tr]);
141
+ const modeOptions = useMemo(() => [
142
+ { value: 'dynamic', label: tr('connectors.modeDynamic') },
143
+ { value: 'fixed', label: tr('connectors.modeFixed') },
144
+ { value: 'new-group', label: tr('connectors.modeNewGroup') },
145
+ ], [tr]);
146
+ const verifyOptions = useMemo(() => [
147
+ { value: 'token', label: tr('connectors.verifyToken') },
148
+ { value: 'hmac-sha256', label: tr('connectors.verifyHmac') },
149
+ ], [tr]);
63
150
  const groupName = useCallback((chatId) => {
64
151
  const g = groups.find(x => x.chatId === chatId);
65
152
  return g?.name || chatId;
@@ -124,6 +211,30 @@ function ConnectorsPage() {
124
211
  allowChats: cur.allowChats.filter(id => valid.has(id)),
125
212
  }));
126
213
  }, [groupsForBot]);
214
+ useEffect(() => {
215
+ const dialog = createDialogRef.current;
216
+ if (!dialog)
217
+ return;
218
+ if (createOpen) {
219
+ if (!dialog.open) {
220
+ try {
221
+ dialog.showModal();
222
+ }
223
+ catch { /* dialog already opening */ }
224
+ }
225
+ const body = dialog.querySelector('.connector-modal-body');
226
+ if (body)
227
+ body.scrollTop = 0;
228
+ }
229
+ else if (dialog.open) {
230
+ dialog.close();
231
+ }
232
+ }, [createOpen]);
233
+ useEffect(() => () => {
234
+ const dialog = createDialogRef.current;
235
+ if (dialog?.open)
236
+ dialog.close();
237
+ }, []);
127
238
  function modeLabel(m) {
128
239
  return m === 'fixed'
129
240
  ? tr('connectors.modeLabelFixed')
@@ -137,10 +248,37 @@ function ConnectorsPage() {
137
248
  function patchForm(patch) {
138
249
  setForm(cur => ({ ...cur, ...patch }));
139
250
  }
140
- function selectAllowChats(select) {
141
- patchForm({ allowChats: Array.from(select.selectedOptions).map(o => o.value).filter(Boolean) });
251
+ function openCreateModal() {
252
+ setCreateMsg(null);
253
+ setCreated(null);
254
+ setEditingConnector(null);
255
+ setForm(cur => {
256
+ const botId = cur.botId || bots[0]?.larkAppId || '';
257
+ return {
258
+ ...emptyForm,
259
+ botId,
260
+ chatId: botGroups(groups, botId)[0]?.chatId || '',
261
+ };
262
+ });
263
+ setCreateOpen(true);
142
264
  }
143
- async function createConnector() {
265
+ function openEditModal(connector) {
266
+ setCreateMsg(null);
267
+ setCreated(null);
268
+ setEditMsg(null);
269
+ setEditingConnector(connector);
270
+ setForm(formFromConnector(connector, groups));
271
+ setCreateOpen(true);
272
+ }
273
+ function closeCreateModal() {
274
+ if (creating)
275
+ return;
276
+ setCreateOpen(false);
277
+ setCreateMsg(null);
278
+ setCreated(null);
279
+ setEditingConnector(null);
280
+ }
281
+ async function submitConnector() {
144
282
  setCreateMsg(null);
145
283
  setCreated(null);
146
284
  const name = form.name.trim();
@@ -155,14 +293,12 @@ function ConnectorsPage() {
155
293
  }
156
294
  const body = {
157
295
  name,
158
- enabled: true,
296
+ enabled: editingConnector?.enabled ?? true,
159
297
  target: { kind: form.kind, mode: form.mode, botId },
160
- promptEnvelope: { sourceName: name },
298
+ promptEnvelope: { sourceName: name, instruction: form.instruction.trim() },
161
299
  verify: { type: form.verify },
300
+ loggingPolicy: { storePayload: form.storePayload, storeHeaders: true, retentionDays: 14 },
162
301
  };
163
- const instruction = form.instruction.trim();
164
- if (instruction)
165
- body.promptEnvelope.instruction = instruction;
166
302
  if (form.kind === 'workflow') {
167
303
  if (!form.workflowId.trim()) {
168
304
  setCreateMsg({ text: tr('connectors.errWf'), error: true });
@@ -178,22 +314,37 @@ function ConnectorsPage() {
178
314
  }
179
315
  body.target.chatId = chatId;
180
316
  }
181
- else if (form.allowChats.length) {
317
+ else if (form.mode === 'dynamic') {
182
318
  body.target.allowChats = form.allowChats;
183
319
  }
184
320
  if (form.mode === 'new-group') {
185
321
  const dedup = form.dedup.trim();
186
- body.lifecycleExtractors = dedup ? { dedupKey: dedup } : null;
322
+ if (form.deduplicate && !dedup) {
323
+ setCreateMsg({ text: tr('connectors.errDedup'), error: true });
324
+ return;
325
+ }
326
+ body.lifecycleExtractors = form.deduplicate ? { dedupKey: dedup } : null;
327
+ }
328
+ else {
329
+ body.lifecycleExtractors = null;
187
330
  }
188
331
  if (form.secret.trim())
189
332
  body.secret = form.secret.trim();
190
333
  setCreating(true);
191
- setCreateMsg({ text: tr('connectors.creating') });
334
+ setCreateMsg({ text: tr(editingConnector ? 'connectors.saving' : 'connectors.creating') });
192
335
  try {
193
- const r = await jsend('POST', '/api/connectors', body);
336
+ const r = await jsend(editingConnector ? 'PUT' : 'POST', editingConnector ? `/api/connectors/${encodeURIComponent(editingConnector.id)}` : '/api/connectors', body);
194
337
  if (!mountedRef.current)
195
338
  return;
196
- if (r.status === 201 && r.body?.ok) {
339
+ if ((r.status === 201 || r.status === 200) && r.body?.ok) {
340
+ if (editingConnector) {
341
+ const editedId = editingConnector.id;
342
+ setConnectors(current => replaceConnectorById(current, r.body.connector));
343
+ setEditMsg({ id: editedId, text: tr('connectors.updated') });
344
+ setCreateOpen(false);
345
+ setEditingConnector(null);
346
+ return;
347
+ }
197
348
  const url = r.body.webhookUrl || webhookUrl(r.body.connector.id);
198
349
  const isToken = (r.body.connector?.verify?.type ?? 'token') === 'token';
199
350
  const isDynamic = form.mode === 'dynamic';
@@ -218,6 +369,7 @@ function ConnectorsPage() {
218
369
  secret: '',
219
370
  instruction: '',
220
371
  allowChats: [],
372
+ storePayload: true,
221
373
  }));
222
374
  await load();
223
375
  }
@@ -231,35 +383,56 @@ function ConnectorsPage() {
231
383
  setCreating(false);
232
384
  }
233
385
  }
234
- async function saveInstruction(connector) {
235
- setEditMsg({ id: connector.id, text: tr('connectors.saving') });
236
- const r = await jsend('PUT', `/api/connectors/${encodeURIComponent(connector.id)}`, buildConnectorInstructionUpdateBody(connector, editInstruction));
386
+ async function toggleConnector(connector) {
387
+ setEditMsg({ id: connector.id, text: tr(connector.enabled ? 'connectors.disabling' : 'connectors.enabling') });
388
+ const r = await jsend('PATCH', `/api/connectors/${encodeURIComponent(connector.id)}`, { enabled: !connector.enabled });
237
389
  if (!mountedRef.current)
238
390
  return;
239
391
  if (r.status === 200 && r.body?.ok) {
240
- setEditingId(null);
241
- setEditInstruction('');
242
392
  setEditMsg(null);
243
393
  await load();
244
394
  }
245
395
  else {
246
396
  const e = r.body?.error || r.status;
247
- setEditMsg({ id: connector.id, text: tr('connectors.saveFailed', { error: String(e) }), error: true });
397
+ setEditMsg({ id: connector.id, text: tr('connectors.toggleFailed', { error: String(e) }), error: true });
248
398
  }
249
399
  }
250
- async function toggleConnector(connector) {
251
- await jsend('PATCH', `/api/connectors/${encodeURIComponent(connector.id)}`, { enabled: !connector.enabled });
400
+ async function togglePayloadLogging(connector) {
401
+ const current = connector.loggingPolicy?.storePayload !== false;
402
+ setEditMsg({ id: connector.id, text: tr('connectors.saving') });
403
+ const r = await jsend('PUT', `/api/connectors/${encodeURIComponent(connector.id)}`, {
404
+ loggingPolicy: {
405
+ storePayload: !current,
406
+ storeHeaders: connector.loggingPolicy?.storeHeaders !== false,
407
+ retentionDays: connector.loggingPolicy?.retentionDays ?? 14,
408
+ },
409
+ });
252
410
  if (!mountedRef.current)
253
411
  return;
254
- await load();
412
+ if (r.status === 200 && r.body?.ok) {
413
+ setEditMsg(null);
414
+ await load();
415
+ }
416
+ else {
417
+ const e = r.body?.error || r.status;
418
+ setEditMsg({ id: connector.id, text: tr('connectors.saveFailed', { error: String(e) }), error: true });
419
+ }
255
420
  }
256
421
  async function deleteConnector(connector) {
257
422
  if (!confirm(tr('connectors.delConfirm')))
258
423
  return;
259
- await jsend('DELETE', `/api/connectors/${encodeURIComponent(connector.id)}`);
424
+ setEditMsg({ id: connector.id, text: tr('connectors.deleting') });
425
+ const r = await jsend('DELETE', `/api/connectors/${encodeURIComponent(connector.id)}`);
260
426
  if (!mountedRef.current)
261
427
  return;
262
- await load();
428
+ if (r.status === 200 && r.body?.ok) {
429
+ setEditMsg(null);
430
+ await load();
431
+ }
432
+ else {
433
+ const e = r.body?.error || r.status;
434
+ setEditMsg({ id: connector.id, text: tr('connectors.deleteFailed', { error: String(e) }), error: true });
435
+ }
263
436
  }
264
437
  function copyConnectorUrl(connector) {
265
438
  void navigator.clipboard?.writeText(webhookUrl(connector.id));
@@ -271,33 +444,40 @@ function ConnectorsPage() {
271
444
  setCopiedId(null);
272
445
  }, 1200);
273
446
  }
274
- return (_jsxs("section", { className: "page", children: [_jsx("div", { className: "page-heading", children: _jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: "Webhook" }), _jsx("h1", { children: "Webhook" }), _jsx("p", { children: tr('connectors.lede') })] }) }), _jsxs("div", { className: "card", style: { marginBottom: 16 }, children: [_jsx("h2", { style: { marginTop: 0 }, children: tr('connectors.createTitle') }), _jsxs("div", { className: "cn-form", style: { display: 'grid', gridTemplateColumns: '140px 1fr', gap: '10px 14px', alignItems: 'center', maxWidth: 680 }, children: [_jsx("label", { htmlFor: "cn-name", children: tr('connectors.fName') }), _jsx("input", { id: "cn-name", value: form.name, onChange: e => patchForm({ name: e.currentTarget.value }), placeholder: tr('connectors.fNamePh') }), _jsx("label", { htmlFor: "cn-bot", children: tr('connectors.fBot') }), _jsx("select", { id: "cn-bot", value: form.botId, onChange: e => patchForm({ botId: e.currentTarget.value }), children: bots.length ? bots.map(b => _jsx("option", { value: b.larkAppId, children: b.botName }, b.larkAppId)) : _jsx("option", { value: "", children: tr('connectors.noOnlineBots') }) }), _jsx("label", { htmlFor: "cn-kind", children: tr('connectors.fKind') }), _jsxs("select", { id: "cn-kind", value: form.kind, onChange: e => patchForm({ kind: e.currentTarget.value }), children: [_jsx("option", { value: "turn", children: tr('connectors.kindTurn') }), _jsx("option", { value: "workflow", children: tr('connectors.kindWorkflow') })] }), form.kind === 'workflow' ? (_jsxs(_Fragment, { children: [_jsx("label", { htmlFor: "cn-wf", children: tr('connectors.fWf') }), _jsx("input", { id: "cn-wf", value: form.workflowId, onChange: e => patchForm({ workflowId: e.currentTarget.value }), placeholder: "workflowId" })] })) : null, _jsx("label", { htmlFor: "cn-mode", children: tr('connectors.fMode') }), _jsxs("select", { id: "cn-mode", value: form.mode, onChange: e => patchForm({ mode: e.currentTarget.value }), children: [_jsx("option", { value: "dynamic", children: tr('connectors.modeDynamic') }), _jsx("option", { value: "fixed", children: tr('connectors.modeFixed') }), _jsx("option", { value: "new-group", children: tr('connectors.modeNewGroup') })] }), form.mode === 'fixed' ? (_jsxs(_Fragment, { children: [_jsx("label", { children: tr('connectors.fFixedChat') }), _jsxs("div", { children: [form.manualChat ? (_jsx("input", { id: "cn-chat", value: form.manualChatId, onChange: e => patchForm({ manualChatId: e.currentTarget.value }), placeholder: tr('connectors.fChatManualPh'), style: { width: '100%', boxSizing: 'border-box', marginTop: 6 } })) : (_jsx("select", { id: "cn-chat-sel", value: form.chatId, onChange: e => patchForm({ chatId: e.currentTarget.value }), style: { width: '100%', boxSizing: 'border-box' }, children: groupsForBot.length ? groupsForBot.map(g => _jsx("option", { value: g.chatId, children: g.name || g.chatId }, g.chatId)) : _jsx("option", { value: "", children: tr('connectors.noBotGroups') }) })), _jsx("a", { href: "#", onClick: e => { e.preventDefault(); patchForm({ manualChat: !form.manualChat }); }, style: { fontSize: 12, display: 'inline-block', marginTop: 4 }, children: form.manualChat ? tr('connectors.chatListLink') : tr('connectors.chatManualLink') })] })] })) : (_jsxs(_Fragment, { children: [_jsxs("label", { children: [tr('connectors.fAllow'), _jsx("span", { className: "muted", style: { fontWeight: 400 }, children: tr('connectors.optional') })] }), _jsxs("div", { children: [_jsx("select", { multiple: true, size: 4, value: form.allowChats, onChange: e => selectAllowChats(e.currentTarget), style: { width: '100%', boxSizing: 'border-box' }, children: groupsForBot.map(g => _jsx("option", { value: g.chatId, children: g.name || g.chatId }, g.chatId)) }), _jsx("div", { className: "muted", style: { fontSize: 12, marginTop: 4 }, children: tr('connectors.allowHint') })] })] })), form.mode === 'dynamic' ? (_jsx("div", { style: { gridColumn: '1 / -1' }, children: _jsx("div", { className: "muted", style: { fontSize: 12, lineHeight: 1.7, background: 'var(--bg-soft,#f6f7f9)', padding: '8px 10px', borderRadius: 6 }, dangerouslySetInnerHTML: { __html: tr('connectors.dynamicHint') } }) })) : null, form.mode === 'new-group' ? (_jsxs(_Fragment, { children: [_jsxs("label", { htmlFor: "cn-dedup", children: [tr('connectors.fDedup'), _jsx("span", { className: "muted", style: { fontWeight: 400 }, children: tr('connectors.optional') })] }), _jsxs("div", { children: [_jsx("input", { id: "cn-dedup", value: form.dedup, onChange: e => patchForm({ dedup: e.currentTarget.value }), placeholder: tr('connectors.fDedupPh'), style: { width: '100%', boxSizing: 'border-box' } }), _jsx("div", { className: "muted", style: { fontSize: 12, marginTop: 4 }, dangerouslySetInnerHTML: { __html: tr('connectors.dedupHint') } })] })] })) : null, _jsxs("label", { htmlFor: "cn-instruction", style: { alignSelf: 'start' }, children: [tr('connectors.fInstruction'), _jsx("span", { className: "muted", style: { fontWeight: 400 }, children: tr('connectors.optional') })] }), _jsx("textarea", { id: "cn-instruction", rows: 3, value: form.instruction, onChange: e => patchForm({ instruction: e.currentTarget.value }), placeholder: tr('connectors.fInstructionPh'), style: { width: '100%', boxSizing: 'border-box', fontFamily: 'inherit', fontSize: 13 } }), _jsx("label", { htmlFor: "cn-verify", children: tr('connectors.fVerify') }), _jsxs("select", { id: "cn-verify", value: form.verify, onChange: e => patchForm({ verify: e.currentTarget.value }), children: [_jsx("option", { value: "token", children: tr('connectors.verifyToken') }), _jsx("option", { value: "hmac-sha256", children: tr('connectors.verifyHmac') })] }), _jsx("label", { htmlFor: "cn-secret", children: tr('connectors.fSecret') }), _jsx("input", { id: "cn-secret", value: form.secret, onChange: e => patchForm({ secret: e.currentTarget.value }), placeholder: tr('connectors.fSecretPh') })] }), _jsxs("div", { style: { marginTop: 14 }, children: [_jsx("button", { id: "cn-create", type: "button", className: "primary", disabled: creating, onClick: () => void createConnector(), children: tr('connectors.btnCreate') }), createMsg ? _jsx("span", { className: createMsg.error ? 'err' : 'muted', style: { marginLeft: 10, fontSize: 13 }, children: createMsg.text }) : null] }), created ? _jsx(CreatedPanel, { created: created, groupName: groupName }) : null] }), _jsxs("div", { className: "card", children: [_jsxs("h2", { style: { marginTop: 0 }, children: [tr('connectors.listTitle'), " ", _jsx("span", { className: "muted", style: { fontSize: 13 }, children: connectors.length ? tr('connectors.count', { count: connectors.length }) : '' })] }), loading ? _jsx("div", { children: tr('connectors.loading') }) : (_jsx(ConnectorList, { connectors: connectors, bots: bots, copiedId: copiedId, editingId: editingId, editInstruction: editInstruction, editMsg: editMsg, groupName: groupName, modeLabel: modeLabel, kindLabel: kindLabel, onCopy: copyConnectorUrl, onEdit: connector => { setEditingId(connector.id); setEditInstruction(connector.promptEnvelope?.instruction || ''); setEditMsg(null); }, onCancelEdit: () => { setEditingId(null); setEditInstruction(''); setEditMsg(null); }, onEditInstruction: setEditInstruction, onSaveInstruction: connector => void saveInstruction(connector), onToggle: connector => void toggleConnector(connector), onDelete: connector => void deleteConnector(connector) }))] })] }));
447
+ return (_jsxs("section", { className: "page connectors-page", children: [_jsxs("div", { className: "page-heading", children: [_jsxs("div", { children: [_jsx("p", { className: "eyebrow", children: tr('nav.connectors') }), _jsx("h1", { children: tr('nav.connectors') })] }), _jsx("div", { className: "page-heading-actions", children: props.tab === 'webhooks' ? (_jsx(CreateActionButton, { className: "page-primary-action connector-create-trigger", onClick: openCreateModal, children: tr('connectors.createTitle') })) : (_jsx("a", { className: "button page-primary-action", href: "#/connectors", children: tr('webhookLogs.manage') })) })] }), _jsx(ConnectorsSubNav, { active: props.tab }), props.tab === 'webhooks' ? (_jsxs(_Fragment, { children: [_jsx("dialog", { ref: createDialogRef, className: "connector-create-modal", onCancel: event => {
448
+ event.preventDefault();
449
+ closeCreateModal();
450
+ }, onClose: closeCreateModal, onClick: event => {
451
+ if (event.target === event.currentTarget)
452
+ closeCreateModal();
453
+ }, children: _jsxs("article", { className: "connector-modal-card", children: [_jsxs("header", { className: "connector-modal-header", children: [_jsx("h3", { children: tr(editingConnector ? 'connectors.editTitle' : 'connectors.createTitle') }), _jsx("button", { type: "button", className: "connector-modal-close", "aria-label": tr('connectors.close'), title: tr('connectors.close'), disabled: creating, onClick: closeCreateModal, children: _jsx("span", { "aria-hidden": "true", children: "\u00D7" }) })] }), _jsx("div", { className: "connector-modal-body", children: created ? _jsx(CreatedPanel, { created: created, groupName: groupName }) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "cn-form", children: [_jsxs("label", { className: "cn-field", htmlFor: "cn-name", children: [_jsx(FieldTitle, { children: tr('connectors.fName') }), _jsx("input", { id: "cn-name", value: form.name, onChange: e => patchForm({ name: e.currentTarget.value }), placeholder: tr('connectors.fNamePh') })] }), _jsxs("div", { className: "cn-field", children: [_jsx(FieldTitle, { children: tr('connectors.fBot') }), _jsx(ConnectorDropdown, { id: "cn-bot", label: tr('connectors.fBot'), value: form.botId, options: botOptions, onChange: botId => patchForm({ botId }) })] }), _jsxs("div", { className: "cn-field", children: [_jsx(FieldTitle, { children: tr('connectors.fKind') }), _jsx(ConnectorDropdown, { id: "cn-kind", label: tr('connectors.fKind'), value: form.kind, options: kindOptions, onChange: kind => patchForm({ kind }) })] }), form.kind === 'workflow' ? (_jsxs("label", { className: "cn-field", htmlFor: "cn-wf", children: [_jsx(FieldTitle, { children: tr('connectors.fWf') }), _jsx("input", { id: "cn-wf", value: form.workflowId, onChange: e => patchForm({ workflowId: e.currentTarget.value }), placeholder: "workflowId" })] })) : null, _jsxs("div", { className: "cn-field", children: [_jsx(FieldTitle, { children: tr('connectors.fMode') }), _jsx(ConnectorDropdown, { id: "cn-mode", label: tr('connectors.fMode'), value: form.mode, options: modeOptions, onChange: mode => patchForm({ mode }) })] }), form.mode === 'fixed' ? (_jsxs("div", { className: "cn-field cn-field-wide", children: [_jsx(FieldTitle, { children: tr('connectors.fFixedChat') }), _jsxs("div", { className: "connector-chat-control", children: [form.manualChat ? (_jsx("input", { id: "cn-chat", value: form.manualChatId, onChange: e => patchForm({ manualChatId: e.currentTarget.value }), placeholder: tr('connectors.fChatManualPh') })) : (_jsx(SearchableGroupPicker, { id: "cn-chat-sel", label: tr('connectors.fFixedChat'), groups: groupsForBot, value: form.chatId, placeholder: tr('connectors.groupPickerPlaceholder'), searchPlaceholder: tr('connectors.groupSearchPlaceholder'), emptyLabel: tr('connectors.groupNoMatches'), selectedCountLabel: count => tr('connectors.groupSelectedCount', { count }), onChange: chatId => patchForm({ chatId: chatId }) })), _jsx("button", { type: "button", className: "ghost connector-inline-link", onClick: () => patchForm({ manualChat: !form.manualChat }), children: form.manualChat ? tr('connectors.chatListLink') : tr('connectors.chatManualLink') })] })] })) : form.mode === 'dynamic' ? (_jsxs("div", { className: "cn-field cn-field-wide", children: [_jsxs(FieldTitle, { help: tr('connectors.allowHint'), children: [tr('connectors.fAllow'), _jsx("span", { className: "muted cn-optional", children: tr('connectors.optional') })] }), _jsx(SearchableGroupPicker, { id: "cn-allow-chats", label: tr('connectors.fAllow'), groups: groupsForBot, value: form.allowChats, multiple: true, allLabel: tr('connectors.allowAll'), placeholder: tr('connectors.allowAllHint'), searchPlaceholder: tr('connectors.groupSearchPlaceholder'), emptyLabel: tr('connectors.groupNoMatches'), selectedCountLabel: count => tr('connectors.groupSelectedCount', { count }), onChange: allowChats => patchForm({ allowChats: allowChats }) })] })) : null, form.mode === 'dynamic' ? (_jsx("div", { className: "cn-field-wide", children: _jsx("div", { className: "muted connector-form-hint", dangerouslySetInnerHTML: { __html: tr('connectors.dynamicHint') } }) })) : null, form.mode === 'new-group' ? (_jsxs("div", { className: "cn-field cn-field-wide connector-new-group-config", children: [_jsx(FieldTitle, { children: tr('connectors.newGroupStrategy') }), _jsxs("div", { className: "connector-strategy-options", role: "radiogroup", "aria-label": tr('connectors.newGroupStrategy'), children: [_jsxs("button", { type: "button", role: "radio", "aria-checked": !form.deduplicate, className: `connector-strategy-option${!form.deduplicate ? ' selected' : ''}`, onClick: () => patchForm({ deduplicate: false }), children: [_jsx("span", { className: "connector-strategy-radio", "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("b", { children: tr('connectors.newGroupFresh') }), _jsx("small", { children: tr('connectors.newGroupFreshHint') })] })] }), _jsxs("button", { type: "button", role: "radio", "aria-checked": form.deduplicate, className: `connector-strategy-option${form.deduplicate ? ' selected' : ''}`, onClick: () => patchForm({ deduplicate: true }), children: [_jsx("span", { className: "connector-strategy-radio", "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("b", { children: tr('connectors.newGroupReuse') }), _jsx("small", { children: tr('connectors.newGroupReuseHint') })] })] })] }), form.deduplicate ? (_jsxs("label", { className: "connector-dedup-field", htmlFor: "cn-dedup", children: [_jsx(FieldTitle, { help: _jsx("span", { dangerouslySetInnerHTML: { __html: tr('connectors.dedupHint') } }), children: tr('connectors.fDedup') }), _jsx("input", { id: "cn-dedup", value: form.dedup, onChange: e => patchForm({ dedup: e.currentTarget.value }), placeholder: tr('connectors.fDedupPh') })] })) : null, _jsx("p", { className: "connector-new-group-note", children: tr('connectors.newGroupNotice') })] })) : null, _jsxs("label", { className: "cn-field cn-field-wide", htmlFor: "cn-instruction", children: [_jsxs(FieldTitle, { help: tr('connectors.fInstructionPh'), children: [tr('connectors.fInstruction'), _jsx("span", { className: "muted cn-optional", children: tr('connectors.optional') })] }), _jsx("textarea", { id: "cn-instruction", rows: 3, value: form.instruction, onChange: e => patchForm({ instruction: e.currentTarget.value }), placeholder: tr('connectors.fInstructionPh') })] }), _jsxs("label", { className: "connector-log-policy cn-field-wide", htmlFor: "cn-store-payload", children: [_jsx("input", { id: "cn-store-payload", type: "checkbox", checked: form.storePayload, onChange: e => patchForm({ storePayload: e.currentTarget.checked }) }), _jsxs("span", { children: [_jsx("strong", { children: tr('connectors.storePayload') }), _jsx("small", { children: tr('connectors.storePayloadHint') })] })] }), _jsxs("div", { className: "cn-field", children: [_jsx(FieldTitle, { children: tr('connectors.fVerify') }), _jsx(ConnectorDropdown, { id: "cn-verify", label: tr('connectors.fVerify'), value: form.verify, options: verifyOptions, onChange: verify => patchForm({ verify }) })] }), _jsxs("label", { className: "cn-field", htmlFor: "cn-secret", children: [_jsx(FieldTitle, { children: tr('connectors.fSecret') }), _jsx("input", { id: "cn-secret", value: form.secret, onChange: e => patchForm({ secret: e.currentTarget.value }), placeholder: tr(editingConnector ? 'connectors.fSecretEditPh' : 'connectors.fSecretPh') })] })] }), createMsg ? _jsx("p", { className: `connector-create-message${createMsg.error ? ' err' : ''}`, children: createMsg.text }) : null] })) }), _jsxs("footer", { className: "connector-modal-actions", children: [_jsx("button", { type: "button", disabled: creating, onClick: closeCreateModal, children: tr('connectors.cancel') }), created ? (_jsx("button", { type: "button", className: "primary", onClick: closeCreateModal, children: tr('connectors.close') })) : (_jsx("button", { id: "cn-create", type: "button", className: "primary", disabled: creating, onClick: () => void submitConnector(), children: tr(editingConnector ? 'connectors.btnSave' : 'connectors.btnCreate') }))] })] }) }), _jsx("section", { className: "overview-block connector-section connector-list-section", children: _jsx("div", { className: "card connector-list-card", children: loading ? _jsx(LoadingState, { className: "connector-list-loading", label: tr('connectors.loading'), compact: true }) : (_jsx(ConnectorList, { connectors: connectors, bots: bots, copiedId: copiedId, editMsg: editMsg, groupName: groupName, modeLabel: modeLabel, kindLabel: kindLabel, onCopy: copyConnectorUrl, onEdit: openEditModal, onToggle: connector => void toggleConnector(connector), onTogglePayloadLogging: connector => void togglePayloadLogging(connector), onDelete: connector => void deleteConnector(connector) })) }) })] })) : (_jsx(WebhookLogsContent, { embedded: true }))] }));
275
454
  }
276
455
  function CreatedPanel(props) {
277
456
  const tr = useT();
278
457
  const c = props.created;
279
458
  const callUrl = c.isDynamic ? `${c.url}?chatId=${c.exampleChat}` : c.url;
280
459
  const dynamicGroupName = c.exampleChat !== '<chatId>' ? `(${props.groupName(c.exampleChat)})` : '';
281
- return (_jsx("div", { style: { marginTop: 12 }, children: _jsxs("div", { className: "card", style: { padding: '12px 14px', background: 'var(--bg-soft,#f6f7f9)' }, children: [_jsxs("p", { className: "ok", style: { margin: '0 0 6px' }, children: [tr('connectors.createdPrefix', { name: c.name }), c.mode === 'fixed' && c.chatId ? (_jsxs("span", { className: "muted", style: { fontWeight: 400, fontSize: 13 }, children: [" \u00B7 ", tr('connectors.createdDest', { name: props.groupName(c.chatId) })] })) : null] }), _jsxs("p", { style: { margin: '4px 0', fontSize: 13 }, children: [_jsx("span", { className: "muted", children: tr('connectors.webhookUrl') }), _jsx("code", { style: { wordBreak: 'break-all' }, children: c.url })] }), c.secret ? (_jsxs("p", { style: { margin: '4px 0', fontSize: 13 }, children: [_jsxs("span", { className: "muted", children: [c.isToken ? tr('connectors.tokenLabel') : tr('connectors.signLabel'), tr('connectors.secretOnce')] }), _jsx("code", { children: c.secret })] })) : null, c.isToken && c.isDynamic ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "muted", style: { fontSize: 12, margin: '6px 0 0' }, children: tr('connectors.usageDynamicLede', { gn: dynamicGroupName }) }), _jsx("pre", { style: { margin: '6px 0 0', fontSize: 12, whiteSpace: 'pre-wrap', wordBreak: 'break-all' }, children: _jsx("code", { children: `curl -X POST '${callUrl}' -H 'content-type: application/json' -d '{}'` }) }), _jsx("p", { className: "muted", style: { fontSize: 12, margin: '6px 0 0' }, dangerouslySetInnerHTML: { __html: tr('connectors.usageDynamicNote') } })] })) : c.isToken ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "muted", style: { fontSize: 12, margin: '6px 0 0' }, children: tr('connectors.usageTokenLede') }), _jsx("pre", { style: { margin: '6px 0 0', fontSize: 12, whiteSpace: 'pre-wrap', wordBreak: 'break-all' }, children: _jsx("code", { children: `curl -X POST '${callUrl}' -H 'content-type: application/json' -d '{}'` }) }), _jsx("p", { className: "muted", style: { fontSize: 12, margin: '6px 0 0' }, dangerouslySetInnerHTML: { __html: tr('connectors.usageTokenNote') } })] })) : (_jsx("p", { className: "muted", style: { fontSize: 12, margin: '6px 0 0' }, dangerouslySetInnerHTML: { __html: tr('connectors.usageHmac') + (c.isDynamic ? tr('connectors.usageHmacDynamic') : '') } }))] }) }));
460
+ return (_jsx("div", { className: "connector-created-wrap", children: _jsxs("div", { className: "card connector-created-card", children: [_jsxs("p", { className: "connector-created-title ok", children: [tr('connectors.createdPrefix', { name: c.name }), c.mode === 'fixed' && c.chatId ? (_jsxs("span", { className: "muted", children: [" \u00B7 ", tr('connectors.createdDest', { name: props.groupName(c.chatId) })] })) : null] }), _jsxs("p", { className: "connector-created-line", children: [_jsx("span", { className: "muted", children: tr('connectors.webhookUrl') }), _jsx("code", { children: c.url })] }), c.secret ? (_jsxs("p", { className: "connector-created-line", children: [_jsxs("span", { className: "muted", children: [c.isToken ? tr('connectors.tokenLabel') : tr('connectors.signLabel'), tr('connectors.secretOnce')] }), _jsx("code", { children: c.secret })] })) : null, c.isToken && c.isDynamic ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "muted connector-created-help", children: tr('connectors.usageDynamicLede', { gn: dynamicGroupName }) }), _jsx("pre", { children: _jsx("code", { children: `curl -X POST '${callUrl}' -H 'content-type: application/json' -d '{}'` }) }), _jsx("p", { className: "muted connector-created-help", dangerouslySetInnerHTML: { __html: tr('connectors.usageDynamicNote') } })] })) : c.isToken ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "muted connector-created-help", children: tr('connectors.usageTokenLede') }), _jsx("pre", { children: _jsx("code", { children: `curl -X POST '${callUrl}' -H 'content-type: application/json' -d '{}'` }) }), _jsx("p", { className: "muted connector-created-help", dangerouslySetInnerHTML: { __html: tr('connectors.usageTokenNote') } })] })) : (_jsx("p", { className: "muted connector-created-help", dangerouslySetInnerHTML: { __html: tr('connectors.usageHmac') + (c.isDynamic ? tr('connectors.usageHmacDynamic') : '') } }))] }) }));
282
461
  }
283
462
  function ConnectorList(props) {
284
463
  const tr = useT();
285
464
  if (!props.connectors.length)
286
- return _jsx("p", { className: "muted", children: tr('connectors.empty') });
465
+ return _jsx("p", { className: "muted connector-list-empty", children: tr('connectors.empty') });
287
466
  return (_jsx(_Fragment, { children: props.connectors.map(c => {
288
467
  const bot = props.bots.find(b => b.larkAppId === c.target.botId);
289
468
  const url = webhookUrl(c.id);
290
469
  const isToken = (c.verify?.type ?? 'token') === 'token';
291
470
  const verifyBadge = isToken ? tr('connectors.badgeToken') : tr('connectors.badgeSign');
292
- const destLabel = c.target.mode === 'fixed' && c.target.chatId
293
- ? ` · ${tr('connectors.dest', { name: props.groupName(c.target.chatId) })}`
294
- : '';
295
- const editing = props.editingId === c.id;
471
+ const destLabel = c.target.mode === 'fixed' && c.target.chatId ? tr('connectors.dest', { name: props.groupName(c.target.chatId) }) : '';
296
472
  const editMsg = props.editMsg?.id === c.id ? props.editMsg : null;
297
- return (_jsxs("div", { className: "card", style: { margin: '0 0 10px', padding: '12px 14px', background: 'var(--bg-soft,#f6f7f9)' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }, children: [_jsx("b", { style: { fontSize: 15 }, children: c.name }), _jsx("span", { className: c.enabled ? 'ok' : 'muted', style: { fontSize: 12 }, children: c.enabled ? tr('connectors.enabled') : tr('connectors.disabled') }), _jsxs("span", { className: "muted", style: { fontSize: 12 }, children: ["\u00B7 ", bot?.botName || c.target.botId, " \u00B7 ", props.kindLabel(c.target.kind), " \u00B7 ", props.modeLabel(c.target.mode), destLabel, " \u00B7 ", verifyBadge] }), _jsxs("span", { style: { marginLeft: 'auto', display: 'flex', gap: 6 }, children: [_jsx("button", { className: "ghost", type: "button", style: { fontSize: 12 }, onClick: () => props.onEdit(c), children: tr('connectors.btnEdit') }), _jsx("button", { className: "ghost", type: "button", style: { fontSize: 12 }, onClick: () => props.onToggle(c), children: c.enabled ? tr('connectors.btnDisable') : tr('connectors.btnEnable') }), _jsx("button", { className: "ghost", type: "button", style: { fontSize: 12 }, onClick: () => props.onDelete(c), children: tr('connectors.btnDel') })] })] }), _jsxs("div", { style: { marginTop: 6, fontSize: 13, display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }, children: [_jsx("span", { className: "muted", children: tr('connectors.webhookUrl') }), _jsxs("code", { style: { fontSize: 12, wordBreak: 'break-all' }, children: [url, isToken ? '/<token>' : ''] }), _jsx("button", { className: "ghost", type: "button", style: { fontSize: 12 }, onClick: () => props.onCopy(c), children: props.copiedId === c.id ? tr('connectors.copied') : tr('connectors.copy') })] }), isToken ? _jsx("div", { className: "muted", style: { fontSize: 12, marginTop: 4 }, dangerouslySetInnerHTML: { __html: tr('connectors.tokenHint') } }) : null, c.target.mode === 'dynamic' ? _jsx("div", { className: "muted", style: { fontSize: 12, marginTop: 4 }, dangerouslySetInnerHTML: { __html: tr('connectors.dynamicReqHint') } }) : null, c.promptEnvelope?.instruction ? _jsxs("div", { className: "muted", style: { fontSize: 12, marginTop: 4 }, children: [tr('connectors.instructionPrefix'), c.promptEnvelope.instruction] }) : null, editing ? (_jsxs("div", { className: "cn-edit-box", style: { marginTop: 8 }, children: [_jsx("textarea", { className: "cn-edit-instruction", rows: 3, value: props.editInstruction, onChange: e => props.onEditInstruction(e.currentTarget.value), style: { width: '100%', boxSizing: 'border-box', fontFamily: 'inherit', fontSize: 13 }, placeholder: tr('connectors.fInstructionPh') }), _jsxs("div", { style: { marginTop: 8, display: 'flex', alignItems: 'center', gap: 8, flexWrap: 'wrap' }, children: [_jsx("button", { className: "primary", type: "button", style: { fontSize: 12 }, onClick: () => props.onSaveInstruction(c), children: tr('connectors.btnSave') }), _jsx("button", { className: "ghost", type: "button", style: { fontSize: 12 }, onClick: props.onCancelEdit, children: tr('connectors.btnCancel') }), editMsg ? _jsx("span", { className: editMsg.error ? 'err' : 'muted', style: { fontSize: 12 }, children: editMsg.text }) : null] })] })) : null] }, c.id));
473
+ const copied = props.copiedId === c.id;
474
+ return (_jsxs("div", { className: "card connector-item-card", children: [_jsxs("div", { className: "connector-item-head", children: [_jsxs("div", { className: "connector-item-main", children: [_jsxs("div", { className: "connector-item-title", children: [_jsx("b", { children: c.name }), _jsx("span", { className: c.enabled ? 'connector-status-pill ok' : 'connector-status-pill muted', children: c.enabled ? tr('connectors.enabled') : tr('connectors.disabled') })] }), _jsxs("div", { className: "connector-item-meta", children: [_jsx("span", { children: bot?.botName || c.target.botId }), _jsx("span", { children: props.kindLabel(c.target.kind) }), _jsx("span", { children: props.modeLabel(c.target.mode) }), destLabel ? _jsx("span", { children: destLabel }) : null, _jsx("span", { children: verifyBadge }), _jsx("span", { children: c.loggingPolicy?.storePayload !== false ? tr('connectors.payloadLogged', { days: c.loggingPolicy?.retentionDays ?? 14 }) : tr('connectors.metadataOnly') })] })] }), _jsx("button", { className: `ghost connector-copy-button${copied ? ' copied' : ''}`, type: "button", onClick: () => props.onCopy(c), children: copied ? tr('connectors.copied') : tr('connectors.copy') })] }), _jsxs("div", { className: "connector-url-row", children: [_jsx("span", { className: "muted", children: tr('connectors.webhookUrl') }), _jsxs("code", { children: [url, isToken ? '/<token>' : ''] })] }), isToken ? _jsx("div", { className: "muted connector-item-note", dangerouslySetInnerHTML: { __html: tr('connectors.tokenHint') } }) : null, c.target.mode === 'dynamic' ? _jsx("div", { className: "muted connector-item-note", dangerouslySetInnerHTML: { __html: tr('connectors.dynamicReqHint') } }) : null, c.promptEnvelope?.instruction ? _jsxs("div", { className: "muted connector-item-note", children: [tr('connectors.instructionPrefix'), c.promptEnvelope.instruction] }) : null, editMsg ? _jsx("div", { className: editMsg.error ? 'err connector-item-note' : 'muted connector-item-note', children: editMsg.text }) : null, _jsxs("div", { className: "connector-item-actions", children: [_jsx("button", { className: "ghost", type: "button", onClick: () => props.onEdit(c), children: tr('connectors.btnEdit') }), _jsx("button", { className: "ghost", type: "button", onClick: () => props.onTogglePayloadLogging(c), children: c.loggingPolicy?.storePayload !== false ? tr('connectors.btnDisablePayloadLog') : tr('connectors.btnEnablePayloadLog') }), _jsx("button", { className: "ghost", type: "button", onClick: () => props.onToggle(c), children: c.enabled ? tr('connectors.btnDisable') : tr('connectors.btnEnable') }), _jsx("button", { className: "ghost", type: "button", onClick: () => props.onDelete(c), children: tr('connectors.btnDel') })] })] }, c.id));
298
475
  }) }));
299
476
  }
300
477
  export function renderConnectorsPage(root) {
301
- return mountReactPage(root, _jsx(ConnectorsPage, {}));
478
+ return mountReactPage(root, _jsx(ConnectorsPage, { tab: "webhooks" }));
479
+ }
480
+ export function renderConnectorsLogsPage(root) {
481
+ return mountReactPage(root, _jsx(ConnectorsPage, { tab: "logs" }));
302
482
  }
303
483
  //# sourceMappingURL=connectors-page.js.map