@agent-native/dispatch 0.0.0-beta-20260819155526

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 (1482) hide show
  1. package/README.md +146 -0
  2. package/dist/actions/apply-dream-proposal.d.ts +29 -0
  3. package/dist/actions/apply-dream-proposal.d.ts.map +1 -0
  4. package/dist/actions/apply-dream-proposal.js +11 -0
  5. package/dist/actions/apply-dream-proposal.js.map +1 -0
  6. package/dist/actions/approve-dispatch-change.d.ts +22 -0
  7. package/dist/actions/approve-dispatch-change.d.ts.map +1 -0
  8. package/dist/actions/approve-dispatch-change.js +11 -0
  9. package/dist/actions/approve-dispatch-change.js.map +1 -0
  10. package/dist/actions/approve-vault-request.d.ts +20 -0
  11. package/dist/actions/approve-vault-request.d.ts.map +1 -0
  12. package/dist/actions/approve-vault-request.js +16 -0
  13. package/dist/actions/approve-vault-request.js.map +1 -0
  14. package/dist/actions/archive-workspace-app.d.ts +7 -0
  15. package/dist/actions/archive-workspace-app.d.ts.map +1 -0
  16. package/dist/actions/archive-workspace-app.js +15 -0
  17. package/dist/actions/archive-workspace-app.js.map +1 -0
  18. package/dist/actions/ask_app.d.ts +29 -0
  19. package/dist/actions/ask_app.d.ts.map +1 -0
  20. package/dist/actions/ask_app.js +23 -0
  21. package/dist/actions/ask_app.js.map +1 -0
  22. package/dist/actions/ask_app_status.d.ts +27 -0
  23. package/dist/actions/ask_app_status.d.ts.map +1 -0
  24. package/dist/actions/ask_app_status.js +14 -0
  25. package/dist/actions/ask_app_status.js.map +1 -0
  26. package/dist/actions/connect-external-agent.d.ts +18 -0
  27. package/dist/actions/connect-external-agent.d.ts.map +1 -0
  28. package/dist/actions/connect-external-agent.js +68 -0
  29. package/dist/actions/connect-external-agent.js.map +1 -0
  30. package/dist/actions/create-browser-chat-session.d.ts +15 -0
  31. package/dist/actions/create-browser-chat-session.d.ts.map +1 -0
  32. package/dist/actions/create-browser-chat-session.js +75 -0
  33. package/dist/actions/create-browser-chat-session.js.map +1 -0
  34. package/dist/actions/create-dream-report.d.ts +59 -0
  35. package/dist/actions/create-dream-report.d.ts.map +1 -0
  36. package/dist/actions/create-dream-report.js +67 -0
  37. package/dist/actions/create-dream-report.js.map +1 -0
  38. package/dist/actions/create-link-token.d.ts +10 -0
  39. package/dist/actions/create-link-token.d.ts.map +1 -0
  40. package/dist/actions/create-link-token.js +11 -0
  41. package/dist/actions/create-link-token.js.map +1 -0
  42. package/dist/actions/create-pylon-ticket.d.ts +17 -0
  43. package/dist/actions/create-pylon-ticket.d.ts.map +1 -0
  44. package/dist/actions/create-pylon-ticket.js +95 -0
  45. package/dist/actions/create-pylon-ticket.js.map +1 -0
  46. package/dist/actions/create-vault-grant.d.ts +17 -0
  47. package/dist/actions/create-vault-grant.d.ts.map +1 -0
  48. package/dist/actions/create-vault-grant.js +14 -0
  49. package/dist/actions/create-vault-grant.js.map +1 -0
  50. package/dist/actions/create-vault-secret.d.ts +21 -0
  51. package/dist/actions/create-vault-secret.d.ts.map +1 -0
  52. package/dist/actions/create-vault-secret.js +26 -0
  53. package/dist/actions/create-vault-secret.js.map +1 -0
  54. package/dist/actions/create-workspace-resource-grant.d.ts +16 -0
  55. package/dist/actions/create-workspace-resource-grant.d.ts.map +1 -0
  56. package/dist/actions/create-workspace-resource-grant.js +14 -0
  57. package/dist/actions/create-workspace-resource-grant.js.map +1 -0
  58. package/dist/actions/create-workspace-resource.d.ts +40 -0
  59. package/dist/actions/create-workspace-resource.d.ts.map +1 -0
  60. package/dist/actions/create-workspace-resource.js +29 -0
  61. package/dist/actions/create-workspace-resource.js.map +1 -0
  62. package/dist/actions/create_embed_session.d.ts +13 -0
  63. package/dist/actions/create_embed_session.d.ts.map +1 -0
  64. package/dist/actions/create_embed_session.js +28 -0
  65. package/dist/actions/create_embed_session.js.map +1 -0
  66. package/dist/actions/create_workspace_app_embed_session.d.ts +19 -0
  67. package/dist/actions/create_workspace_app_embed_session.d.ts.map +1 -0
  68. package/dist/actions/create_workspace_app_embed_session.js +89 -0
  69. package/dist/actions/create_workspace_app_embed_session.js.map +1 -0
  70. package/dist/actions/delete-destination.d.ts +34 -0
  71. package/dist/actions/delete-destination.d.ts.map +1 -0
  72. package/dist/actions/delete-destination.js +11 -0
  73. package/dist/actions/delete-destination.js.map +1 -0
  74. package/dist/actions/delete-staged-dataset.d.ts +10 -0
  75. package/dist/actions/delete-staged-dataset.d.ts.map +1 -0
  76. package/dist/actions/delete-staged-dataset.js +8 -0
  77. package/dist/actions/delete-staged-dataset.js.map +1 -0
  78. package/dist/actions/delete-vault-secret.d.ts +17 -0
  79. package/dist/actions/delete-vault-secret.d.ts.map +1 -0
  80. package/dist/actions/delete-vault-secret.js +11 -0
  81. package/dist/actions/delete-vault-secret.js.map +1 -0
  82. package/dist/actions/delete-workspace-resource.d.ts +35 -0
  83. package/dist/actions/delete-workspace-resource.d.ts.map +1 -0
  84. package/dist/actions/delete-workspace-resource.js +11 -0
  85. package/dist/actions/delete-workspace-resource.js.map +1 -0
  86. package/dist/actions/deny-vault-request.d.ts +19 -0
  87. package/dist/actions/deny-vault-request.d.ts.map +1 -0
  88. package/dist/actions/deny-vault-request.js +12 -0
  89. package/dist/actions/deny-vault-request.js.map +1 -0
  90. package/dist/actions/ensure-dream-job.d.ts +33 -0
  91. package/dist/actions/ensure-dream-job.d.ts.map +1 -0
  92. package/dist/actions/ensure-dream-job.js +73 -0
  93. package/dist/actions/ensure-dream-job.js.map +1 -0
  94. package/dist/actions/get-agent-thread-debug.d.ts +72 -0
  95. package/dist/actions/get-agent-thread-debug.d.ts.map +1 -0
  96. package/dist/actions/get-agent-thread-debug.js +37 -0
  97. package/dist/actions/get-agent-thread-debug.js.map +1 -0
  98. package/dist/actions/get-app-creation-settings.d.ts +3 -0
  99. package/dist/actions/get-app-creation-settings.d.ts.map +1 -0
  100. package/dist/actions/get-app-creation-settings.js +10 -0
  101. package/dist/actions/get-app-creation-settings.js.map +1 -0
  102. package/dist/actions/get-dispatch-settings.d.ts +3 -0
  103. package/dist/actions/get-dispatch-settings.d.ts.map +1 -0
  104. package/dist/actions/get-dispatch-settings.js +10 -0
  105. package/dist/actions/get-dispatch-settings.js.map +1 -0
  106. package/dist/actions/get-dream-settings.d.ts +3 -0
  107. package/dist/actions/get-dream-settings.d.ts.map +1 -0
  108. package/dist/actions/get-dream-settings.js +11 -0
  109. package/dist/actions/get-dream-settings.js.map +1 -0
  110. package/dist/actions/get-dream.d.ts +48 -0
  111. package/dist/actions/get-dream.d.ts.map +1 -0
  112. package/dist/actions/get-dream.js +13 -0
  113. package/dist/actions/get-dream.js.map +1 -0
  114. package/dist/actions/get-vault-access-settings.d.ts +3 -0
  115. package/dist/actions/get-vault-access-settings.d.ts.map +1 -0
  116. package/dist/actions/get-vault-access-settings.js +10 -0
  117. package/dist/actions/get-vault-access-settings.js.map +1 -0
  118. package/dist/actions/get-workspace-info.d.ts +3 -0
  119. package/dist/actions/get-workspace-info.d.ts.map +1 -0
  120. package/dist/actions/get-workspace-info.js +10 -0
  121. package/dist/actions/get-workspace-info.js.map +1 -0
  122. package/dist/actions/get-workspace-resource-effective-context.d.ts +8 -0
  123. package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -0
  124. package/dist/actions/get-workspace-resource-effective-context.js +27 -0
  125. package/dist/actions/get-workspace-resource-effective-context.js.map +1 -0
  126. package/dist/actions/grant-vault-secrets-to-app.d.ts +27 -0
  127. package/dist/actions/grant-vault-secrets-to-app.d.ts.map +1 -0
  128. package/dist/actions/grant-vault-secrets-to-app.js +19 -0
  129. package/dist/actions/grant-vault-secrets-to-app.js.map +1 -0
  130. package/dist/actions/grant-workspace-resources-to-app.d.ts +17 -0
  131. package/dist/actions/grant-workspace-resources-to-app.d.ts.map +1 -0
  132. package/dist/actions/grant-workspace-resources-to-app.js +15 -0
  133. package/dist/actions/grant-workspace-resources-to-app.js.map +1 -0
  134. package/dist/actions/import-agent-pack.d.ts +96 -0
  135. package/dist/actions/import-agent-pack.d.ts.map +1 -0
  136. package/dist/actions/import-agent-pack.js +116 -0
  137. package/dist/actions/import-agent-pack.js.map +1 -0
  138. package/dist/actions/import-agent.d.ts +60 -0
  139. package/dist/actions/import-agent.d.ts.map +1 -0
  140. package/dist/actions/import-agent.js +82 -0
  141. package/dist/actions/import-agent.js.map +1 -0
  142. package/dist/actions/index.d.ts +9 -0
  143. package/dist/actions/index.d.ts.map +1 -0
  144. package/dist/actions/index.js +207 -0
  145. package/dist/actions/index.js.map +1 -0
  146. package/dist/actions/list-agent-pack.d.ts +36 -0
  147. package/dist/actions/list-agent-pack.d.ts.map +1 -0
  148. package/dist/actions/list-agent-pack.js +32 -0
  149. package/dist/actions/list-agent-pack.js.map +1 -0
  150. package/dist/actions/list-agent-run-failures.d.ts +65 -0
  151. package/dist/actions/list-agent-run-failures.d.ts.map +1 -0
  152. package/dist/actions/list-agent-run-failures.js +42 -0
  153. package/dist/actions/list-agent-run-failures.js.map +1 -0
  154. package/dist/actions/list-agent-thread-sources.d.ts +9 -0
  155. package/dist/actions/list-agent-thread-sources.d.ts.map +1 -0
  156. package/dist/actions/list-agent-thread-sources.js +11 -0
  157. package/dist/actions/list-agent-thread-sources.js.map +1 -0
  158. package/dist/actions/list-available-workspace-templates.d.ts +3 -0
  159. package/dist/actions/list-available-workspace-templates.d.ts.map +1 -0
  160. package/dist/actions/list-available-workspace-templates.js +10 -0
  161. package/dist/actions/list-available-workspace-templates.js.map +1 -0
  162. package/dist/actions/list-connected-agents.d.ts +14 -0
  163. package/dist/actions/list-connected-agents.d.ts.map +1 -0
  164. package/dist/actions/list-connected-agents.js +87 -0
  165. package/dist/actions/list-connected-agents.js.map +1 -0
  166. package/dist/actions/list-curated-workspace-templates.d.ts +3 -0
  167. package/dist/actions/list-curated-workspace-templates.d.ts.map +1 -0
  168. package/dist/actions/list-curated-workspace-templates.js +10 -0
  169. package/dist/actions/list-curated-workspace-templates.js.map +1 -0
  170. package/dist/actions/list-destinations.d.ts +15 -0
  171. package/dist/actions/list-destinations.d.ts.map +1 -0
  172. package/dist/actions/list-destinations.js +10 -0
  173. package/dist/actions/list-destinations.js.map +1 -0
  174. package/dist/actions/list-dispatch-approvals.d.ts +20 -0
  175. package/dist/actions/list-dispatch-approvals.d.ts.map +1 -0
  176. package/dist/actions/list-dispatch-approvals.js +10 -0
  177. package/dist/actions/list-dispatch-approvals.js.map +1 -0
  178. package/dist/actions/list-dispatch-audit.d.ts +16 -0
  179. package/dist/actions/list-dispatch-audit.d.ts.map +1 -0
  180. package/dist/actions/list-dispatch-audit.js +12 -0
  181. package/dist/actions/list-dispatch-audit.js.map +1 -0
  182. package/dist/actions/list-dispatch-overview.d.ts +61 -0
  183. package/dist/actions/list-dispatch-overview.d.ts.map +1 -0
  184. package/dist/actions/list-dispatch-overview.js +17 -0
  185. package/dist/actions/list-dispatch-overview.js.map +1 -0
  186. package/dist/actions/list-dispatch-usage-metrics.d.ts +7 -0
  187. package/dist/actions/list-dispatch-usage-metrics.d.ts.map +1 -0
  188. package/dist/actions/list-dispatch-usage-metrics.js +28 -0
  189. package/dist/actions/list-dispatch-usage-metrics.js.map +1 -0
  190. package/dist/actions/list-dream-candidates.d.ts +24 -0
  191. package/dist/actions/list-dream-candidates.d.ts.map +1 -0
  192. package/dist/actions/list-dream-candidates.js +68 -0
  193. package/dist/actions/list-dream-candidates.js.map +1 -0
  194. package/dist/actions/list-dreams.d.ts +29 -0
  195. package/dist/actions/list-dreams.d.ts.map +1 -0
  196. package/dist/actions/list-dreams.js +17 -0
  197. package/dist/actions/list-dreams.js.map +1 -0
  198. package/dist/actions/list-integrations-catalog.d.ts +3 -0
  199. package/dist/actions/list-integrations-catalog.d.ts.map +1 -0
  200. package/dist/actions/list-integrations-catalog.js +10 -0
  201. package/dist/actions/list-integrations-catalog.js.map +1 -0
  202. package/dist/actions/list-linked-identities.d.ts +29 -0
  203. package/dist/actions/list-linked-identities.d.ts.map +1 -0
  204. package/dist/actions/list-linked-identities.js +10 -0
  205. package/dist/actions/list-linked-identities.js.map +1 -0
  206. package/dist/actions/list-mcp-app-access.d.ts +14 -0
  207. package/dist/actions/list-mcp-app-access.d.ts.map +1 -0
  208. package/dist/actions/list-mcp-app-access.js +25 -0
  209. package/dist/actions/list-mcp-app-access.js.map +1 -0
  210. package/dist/actions/list-staged-datasets.d.ts +13 -0
  211. package/dist/actions/list-staged-datasets.d.ts.map +1 -0
  212. package/dist/actions/list-staged-datasets.js +8 -0
  213. package/dist/actions/list-staged-datasets.js.map +1 -0
  214. package/dist/actions/list-vault-audit.d.ts +16 -0
  215. package/dist/actions/list-vault-audit.d.ts.map +1 -0
  216. package/dist/actions/list-vault-audit.js +15 -0
  217. package/dist/actions/list-vault-audit.js.map +1 -0
  218. package/dist/actions/list-vault-grants.d.ts +17 -0
  219. package/dist/actions/list-vault-grants.d.ts.map +1 -0
  220. package/dist/actions/list-vault-grants.js +13 -0
  221. package/dist/actions/list-vault-grants.js.map +1 -0
  222. package/dist/actions/list-vault-requests.d.ts +18 -0
  223. package/dist/actions/list-vault-requests.d.ts.map +1 -0
  224. package/dist/actions/list-vault-requests.js +15 -0
  225. package/dist/actions/list-vault-requests.js.map +1 -0
  226. package/dist/actions/list-vault-secret-options.d.ts +9 -0
  227. package/dist/actions/list-vault-secret-options.d.ts.map +1 -0
  228. package/dist/actions/list-vault-secret-options.js +12 -0
  229. package/dist/actions/list-vault-secret-options.js.map +1 -0
  230. package/dist/actions/list-vault-secrets.d.ts +13 -0
  231. package/dist/actions/list-vault-secrets.d.ts.map +1 -0
  232. package/dist/actions/list-vault-secrets.js +25 -0
  233. package/dist/actions/list-vault-secrets.js.map +1 -0
  234. package/dist/actions/list-workspace-apps.d.ts +7 -0
  235. package/dist/actions/list-workspace-apps.d.ts.map +1 -0
  236. package/dist/actions/list-workspace-apps.js +31 -0
  237. package/dist/actions/list-workspace-apps.js.map +1 -0
  238. package/dist/actions/list-workspace-resource-grants.d.ts +16 -0
  239. package/dist/actions/list-workspace-resource-grants.d.ts.map +1 -0
  240. package/dist/actions/list-workspace-resource-grants.js +13 -0
  241. package/dist/actions/list-workspace-resource-grants.js.map +1 -0
  242. package/dist/actions/list-workspace-resource-options.d.ts +5 -0
  243. package/dist/actions/list-workspace-resource-options.d.ts.map +1 -0
  244. package/dist/actions/list-workspace-resource-options.js +22 -0
  245. package/dist/actions/list-workspace-resource-options.js.map +1 -0
  246. package/dist/actions/list-workspace-resources-for-app.d.ts +15 -0
  247. package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -0
  248. package/dist/actions/list-workspace-resources-for-app.js +12 -0
  249. package/dist/actions/list-workspace-resources-for-app.js.map +1 -0
  250. package/dist/actions/list-workspace-resources.d.ts +18 -0
  251. package/dist/actions/list-workspace-resources.d.ts.map +1 -0
  252. package/dist/actions/list-workspace-resources.js +22 -0
  253. package/dist/actions/list-workspace-resources.js.map +1 -0
  254. package/dist/actions/list_apps.d.ts +15 -0
  255. package/dist/actions/list_apps.d.ts.map +1 -0
  256. package/dist/actions/list_apps.js +34 -0
  257. package/dist/actions/list_apps.js.map +1 -0
  258. package/dist/actions/navigate.d.ts +23 -0
  259. package/dist/actions/navigate.d.ts.map +1 -0
  260. package/dist/actions/navigate.js +53 -0
  261. package/dist/actions/navigate.js.map +1 -0
  262. package/dist/actions/open_app.d.ts +20 -0
  263. package/dist/actions/open_app.d.ts.map +1 -0
  264. package/dist/actions/open_app.js +123 -0
  265. package/dist/actions/open_app.js.map +1 -0
  266. package/dist/actions/preview-dream-proposal.d.ts +43 -0
  267. package/dist/actions/preview-dream-proposal.d.ts.map +1 -0
  268. package/dist/actions/preview-dream-proposal.js +13 -0
  269. package/dist/actions/preview-dream-proposal.js.map +1 -0
  270. package/dist/actions/preview-workspace-resource-change.d.ts +8 -0
  271. package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -0
  272. package/dist/actions/preview-workspace-resource-change.js +24 -0
  273. package/dist/actions/preview-workspace-resource-change.js.map +1 -0
  274. package/dist/actions/provider-api-catalog.d.ts +28 -0
  275. package/dist/actions/provider-api-catalog.d.ts.map +1 -0
  276. package/dist/actions/provider-api-catalog.js +8 -0
  277. package/dist/actions/provider-api-catalog.js.map +1 -0
  278. package/dist/actions/provider-api-docs.d.ts +41 -0
  279. package/dist/actions/provider-api-docs.d.ts.map +1 -0
  280. package/dist/actions/provider-api-docs.js +12 -0
  281. package/dist/actions/provider-api-docs.js.map +1 -0
  282. package/dist/actions/provider-api-register.d.ts +109 -0
  283. package/dist/actions/provider-api-register.d.ts.map +1 -0
  284. package/dist/actions/provider-api-register.js +33 -0
  285. package/dist/actions/provider-api-register.js.map +1 -0
  286. package/dist/actions/provider-api-request.d.ts +67 -0
  287. package/dist/actions/provider-api-request.d.ts.map +1 -0
  288. package/dist/actions/provider-api-request.js +13 -0
  289. package/dist/actions/provider-api-request.js.map +1 -0
  290. package/dist/actions/query-staged-dataset.d.ts +45 -0
  291. package/dist/actions/query-staged-dataset.d.ts.map +1 -0
  292. package/dist/actions/query-staged-dataset.js +8 -0
  293. package/dist/actions/query-staged-dataset.js.map +1 -0
  294. package/dist/actions/read-slack-thread-context.d.ts +29 -0
  295. package/dist/actions/read-slack-thread-context.d.ts.map +1 -0
  296. package/dist/actions/read-slack-thread-context.js +138 -0
  297. package/dist/actions/read-slack-thread-context.js.map +1 -0
  298. package/dist/actions/reject-dispatch-change.d.ts +23 -0
  299. package/dist/actions/reject-dispatch-change.d.ts.map +1 -0
  300. package/dist/actions/reject-dispatch-change.js +12 -0
  301. package/dist/actions/reject-dispatch-change.js.map +1 -0
  302. package/dist/actions/reject-dream-proposal.d.ts +27 -0
  303. package/dist/actions/reject-dream-proposal.d.ts.map +1 -0
  304. package/dist/actions/reject-dream-proposal.js +12 -0
  305. package/dist/actions/reject-dream-proposal.js.map +1 -0
  306. package/dist/actions/remix-workspace-template.d.ts +48 -0
  307. package/dist/actions/remix-workspace-template.d.ts.map +1 -0
  308. package/dist/actions/remix-workspace-template.js +79 -0
  309. package/dist/actions/remix-workspace-template.js.map +1 -0
  310. package/dist/actions/remove-pending-workspace-app.d.ts +7 -0
  311. package/dist/actions/remove-pending-workspace-app.d.ts.map +1 -0
  312. package/dist/actions/remove-pending-workspace-app.js +15 -0
  313. package/dist/actions/remove-pending-workspace-app.js.map +1 -0
  314. package/dist/actions/request-vault-secret.d.ts +20 -0
  315. package/dist/actions/request-vault-secret.d.ts.map +1 -0
  316. package/dist/actions/request-vault-secret.js +15 -0
  317. package/dist/actions/request-vault-secret.js.map +1 -0
  318. package/dist/actions/resolve-integration-source-context.d.ts +5 -0
  319. package/dist/actions/resolve-integration-source-context.d.ts.map +1 -0
  320. package/dist/actions/resolve-integration-source-context.js +30 -0
  321. package/dist/actions/resolve-integration-source-context.js.map +1 -0
  322. package/dist/actions/restore-starter-workspace-resources.d.ts +9 -0
  323. package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -0
  324. package/dist/actions/restore-starter-workspace-resources.js +14 -0
  325. package/dist/actions/restore-starter-workspace-resources.js.map +1 -0
  326. package/dist/actions/revoke-vault-grant.d.ts +16 -0
  327. package/dist/actions/revoke-vault-grant.d.ts.map +1 -0
  328. package/dist/actions/revoke-vault-grant.js +11 -0
  329. package/dist/actions/revoke-vault-grant.js.map +1 -0
  330. package/dist/actions/revoke-workspace-resource-grant.d.ts +15 -0
  331. package/dist/actions/revoke-workspace-resource-grant.d.ts.map +1 -0
  332. package/dist/actions/revoke-workspace-resource-grant.js +11 -0
  333. package/dist/actions/revoke-workspace-resource-grant.js.map +1 -0
  334. package/dist/actions/scaffold-workspace-app.d.ts +10 -0
  335. package/dist/actions/scaffold-workspace-app.d.ts.map +1 -0
  336. package/dist/actions/scaffold-workspace-app.js +41 -0
  337. package/dist/actions/scaffold-workspace-app.js.map +1 -0
  338. package/dist/actions/search-agent-threads.d.ts +32 -0
  339. package/dist/actions/search-agent-threads.d.ts.map +1 -0
  340. package/dist/actions/search-agent-threads.js +25 -0
  341. package/dist/actions/search-agent-threads.js.map +1 -0
  342. package/dist/actions/send-code-agent-remote-command.d.ts +34 -0
  343. package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -0
  344. package/dist/actions/send-code-agent-remote-command.js +53 -0
  345. package/dist/actions/send-code-agent-remote-command.js.map +1 -0
  346. package/dist/actions/send-platform-message.d.ts +15 -0
  347. package/dist/actions/send-platform-message.d.ts.map +1 -0
  348. package/dist/actions/send-platform-message.js +96 -0
  349. package/dist/actions/send-platform-message.js.map +1 -0
  350. package/dist/actions/set-app-creation-settings.d.ts +5 -0
  351. package/dist/actions/set-app-creation-settings.d.ts.map +1 -0
  352. package/dist/actions/set-app-creation-settings.js +18 -0
  353. package/dist/actions/set-app-creation-settings.js.map +1 -0
  354. package/dist/actions/set-dispatch-approval-policy.d.ts +23 -0
  355. package/dist/actions/set-dispatch-approval-policy.d.ts.map +1 -0
  356. package/dist/actions/set-dispatch-approval-policy.js +19 -0
  357. package/dist/actions/set-dispatch-approval-policy.js.map +1 -0
  358. package/dist/actions/set-dream-settings.d.ts +17 -0
  359. package/dist/actions/set-dream-settings.d.ts.map +1 -0
  360. package/dist/actions/set-dream-settings.js +41 -0
  361. package/dist/actions/set-dream-settings.js.map +1 -0
  362. package/dist/actions/set-mcp-app-access.d.ts +17 -0
  363. package/dist/actions/set-mcp-app-access.d.ts.map +1 -0
  364. package/dist/actions/set-mcp-app-access.js +43 -0
  365. package/dist/actions/set-mcp-app-access.js.map +1 -0
  366. package/dist/actions/set-vault-access-settings.d.ts +5 -0
  367. package/dist/actions/set-vault-access-settings.d.ts.map +1 -0
  368. package/dist/actions/set-vault-access-settings.js +13 -0
  369. package/dist/actions/set-vault-access-settings.js.map +1 -0
  370. package/dist/actions/start-workspace-app-creation.d.ts +10 -0
  371. package/dist/actions/start-workspace-app-creation.d.ts.map +1 -0
  372. package/dist/actions/start-workspace-app-creation.js +43 -0
  373. package/dist/actions/start-workspace-app-creation.js.map +1 -0
  374. package/dist/actions/sync-vault-to-app.d.ts +32 -0
  375. package/dist/actions/sync-vault-to-app.d.ts.map +1 -0
  376. package/dist/actions/sync-vault-to-app.js +13 -0
  377. package/dist/actions/sync-vault-to-app.js.map +1 -0
  378. package/dist/actions/unarchive-workspace-app.d.ts +7 -0
  379. package/dist/actions/unarchive-workspace-app.d.ts.map +1 -0
  380. package/dist/actions/unarchive-workspace-app.js +15 -0
  381. package/dist/actions/unarchive-workspace-app.js.map +1 -0
  382. package/dist/actions/update-vault-secret.d.ts +22 -0
  383. package/dist/actions/update-vault-secret.d.ts.map +1 -0
  384. package/dist/actions/update-vault-secret.js +43 -0
  385. package/dist/actions/update-vault-secret.js.map +1 -0
  386. package/dist/actions/update-workspace-app-metadata.d.ts +7 -0
  387. package/dist/actions/update-workspace-app-metadata.d.ts.map +1 -0
  388. package/dist/actions/update-workspace-app-metadata.js +30 -0
  389. package/dist/actions/update-workspace-app-metadata.js.map +1 -0
  390. package/dist/actions/update-workspace-resource.d.ts +39 -0
  391. package/dist/actions/update-workspace-resource.d.ts.map +1 -0
  392. package/dist/actions/update-workspace-resource.js +18 -0
  393. package/dist/actions/update-workspace-resource.js.map +1 -0
  394. package/dist/actions/upsert-destination.d.ts +39 -0
  395. package/dist/actions/upsert-destination.d.ts.map +1 -0
  396. package/dist/actions/upsert-destination.js +26 -0
  397. package/dist/actions/upsert-destination.js.map +1 -0
  398. package/dist/actions/view-screen.d.ts +11 -0
  399. package/dist/actions/view-screen.d.ts.map +1 -0
  400. package/dist/actions/view-screen.js +332 -0
  401. package/dist/actions/view-screen.js.map +1 -0
  402. package/dist/client/transactional-emails.d.ts +57 -0
  403. package/dist/client/transactional-emails.d.ts.map +1 -0
  404. package/dist/client/transactional-emails.js +116 -0
  405. package/dist/client/transactional-emails.js.map +1 -0
  406. package/dist/components/action-query-error.d.ts +8 -0
  407. package/dist/components/action-query-error.d.ts.map +1 -0
  408. package/dist/components/action-query-error.js +10 -0
  409. package/dist/components/action-query-error.js.map +1 -0
  410. package/dist/components/admin-navigation.d.ts +16 -0
  411. package/dist/components/admin-navigation.d.ts.map +1 -0
  412. package/dist/components/admin-navigation.js +193 -0
  413. package/dist/components/admin-navigation.js.map +1 -0
  414. package/dist/components/agents-panel.d.ts +16 -0
  415. package/dist/components/agents-panel.d.ts.map +1 -0
  416. package/dist/components/agents-panel.js +133 -0
  417. package/dist/components/agents-panel.js.map +1 -0
  418. package/dist/components/app-icon.d.ts +10 -0
  419. package/dist/components/app-icon.d.ts.map +1 -0
  420. package/dist/components/app-icon.js +107 -0
  421. package/dist/components/app-icon.js.map +1 -0
  422. package/dist/components/app-keys-popover.d.ts +15 -0
  423. package/dist/components/app-keys-popover.d.ts.map +1 -0
  424. package/dist/components/app-keys-popover.js +115 -0
  425. package/dist/components/app-keys-popover.js.map +1 -0
  426. package/dist/components/app-list-row.d.ts +12 -0
  427. package/dist/components/app-list-row.d.ts.map +1 -0
  428. package/dist/components/app-list-row.js +11 -0
  429. package/dist/components/app-list-row.js.map +1 -0
  430. package/dist/components/app-open-actions.d.ts +2 -0
  431. package/dist/components/app-open-actions.d.ts.map +1 -0
  432. package/dist/components/app-open-actions.js +2 -0
  433. package/dist/components/app-open-actions.js.map +1 -0
  434. package/dist/components/app-row-settings.d.ts +6 -0
  435. package/dist/components/app-row-settings.d.ts.map +1 -0
  436. package/dist/components/app-row-settings.js +11 -0
  437. package/dist/components/app-row-settings.js.map +1 -0
  438. package/dist/components/approval-value-block.d.ts +7 -0
  439. package/dist/components/approval-value-block.d.ts.map +1 -0
  440. package/dist/components/approval-value-block.js +22 -0
  441. package/dist/components/approval-value-block.js.map +1 -0
  442. package/dist/components/automation-run-history-dialog.d.ts +9 -0
  443. package/dist/components/automation-run-history-dialog.d.ts.map +1 -0
  444. package/dist/components/automation-run-history-dialog.js +63 -0
  445. package/dist/components/automation-run-history-dialog.js.map +1 -0
  446. package/dist/components/connected-app-card.d.ts +6 -0
  447. package/dist/components/connected-app-card.d.ts.map +1 -0
  448. package/dist/components/connected-app-card.js +13 -0
  449. package/dist/components/connected-app-card.js.map +1 -0
  450. package/dist/components/create-app-popover.d.ts +29 -0
  451. package/dist/components/create-app-popover.d.ts.map +1 -0
  452. package/dist/components/create-app-popover.js +262 -0
  453. package/dist/components/create-app-popover.js.map +1 -0
  454. package/dist/components/dispatch-control-plane.d.ts +2 -0
  455. package/dist/components/dispatch-control-plane.d.ts.map +1 -0
  456. package/dist/components/dispatch-control-plane.js +114 -0
  457. package/dist/components/dispatch-control-plane.js.map +1 -0
  458. package/dist/components/dispatch-shell.d.ts +13 -0
  459. package/dist/components/dispatch-shell.d.ts.map +1 -0
  460. package/dist/components/dispatch-shell.js +21 -0
  461. package/dist/components/dispatch-shell.js.map +1 -0
  462. package/dist/components/docs-link.d.ts +16 -0
  463. package/dist/components/docs-link.d.ts.map +1 -0
  464. package/dist/components/docs-link.js +34 -0
  465. package/dist/components/docs-link.js.map +1 -0
  466. package/dist/components/index.d.ts +17 -0
  467. package/dist/components/index.d.ts.map +1 -0
  468. package/dist/components/index.js +16 -0
  469. package/dist/components/index.js.map +1 -0
  470. package/dist/components/layout/Header.d.ts +5 -0
  471. package/dist/components/layout/Header.d.ts.map +1 -0
  472. package/dist/components/layout/Header.js +61 -0
  473. package/dist/components/layout/Header.js.map +1 -0
  474. package/dist/components/layout/HeaderActions.d.ts +2 -0
  475. package/dist/components/layout/HeaderActions.d.ts.map +1 -0
  476. package/dist/components/layout/HeaderActions.js +2 -0
  477. package/dist/components/layout/HeaderActions.js.map +1 -0
  478. package/dist/components/layout/Layout.d.ts +60 -0
  479. package/dist/components/layout/Layout.d.ts.map +1 -0
  480. package/dist/components/layout/Layout.js +1302 -0
  481. package/dist/components/layout/Layout.js.map +1 -0
  482. package/dist/components/layout/workspace-apps-rail.d.ts +5 -0
  483. package/dist/components/layout/workspace-apps-rail.d.ts.map +1 -0
  484. package/dist/components/layout/workspace-apps-rail.js +56 -0
  485. package/dist/components/layout/workspace-apps-rail.js.map +1 -0
  486. package/dist/components/messaging-setup-panel.d.ts +2 -0
  487. package/dist/components/messaging-setup-panel.d.ts.map +1 -0
  488. package/dist/components/messaging-setup-panel.js +414 -0
  489. package/dist/components/messaging-setup-panel.js.map +1 -0
  490. package/dist/components/other-apps-section.d.ts +33 -0
  491. package/dist/components/other-apps-section.d.ts.map +1 -0
  492. package/dist/components/other-apps-section.js +66 -0
  493. package/dist/components/other-apps-section.js.map +1 -0
  494. package/dist/components/simple-agents-panel.d.ts +12 -0
  495. package/dist/components/simple-agents-panel.d.ts.map +1 -0
  496. package/dist/components/simple-agents-panel.js +438 -0
  497. package/dist/components/simple-agents-panel.js.map +1 -0
  498. package/dist/components/task-queue-health.d.ts +2 -0
  499. package/dist/components/task-queue-health.d.ts.map +1 -0
  500. package/dist/components/task-queue-health.js +58 -0
  501. package/dist/components/task-queue-health.js.map +1 -0
  502. package/dist/components/transactional-email-activity.d.ts +24 -0
  503. package/dist/components/transactional-email-activity.d.ts.map +1 -0
  504. package/dist/components/transactional-email-activity.js +31 -0
  505. package/dist/components/transactional-email-activity.js.map +1 -0
  506. package/dist/components/transactional-email-metrics.d.ts +40 -0
  507. package/dist/components/transactional-email-metrics.d.ts.map +1 -0
  508. package/dist/components/transactional-email-metrics.js +44 -0
  509. package/dist/components/transactional-email-metrics.js.map +1 -0
  510. package/dist/components/transactional-email-preview.d.ts +7 -0
  511. package/dist/components/transactional-email-preview.d.ts.map +1 -0
  512. package/dist/components/transactional-email-preview.js +41 -0
  513. package/dist/components/transactional-email-preview.js.map +1 -0
  514. package/dist/components/ui/accordion.d.ts +8 -0
  515. package/dist/components/ui/accordion.d.ts.map +1 -0
  516. package/dist/components/ui/accordion.js +14 -0
  517. package/dist/components/ui/accordion.js.map +1 -0
  518. package/dist/components/ui/alert-dialog.d.ts +21 -0
  519. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  520. package/dist/components/ui/alert-dialog.js +27 -0
  521. package/dist/components/ui/alert-dialog.js.map +1 -0
  522. package/dist/components/ui/alert.d.ts +9 -0
  523. package/dist/components/ui/alert.d.ts.map +1 -0
  524. package/dist/components/ui/alert.js +23 -0
  525. package/dist/components/ui/alert.js.map +1 -0
  526. package/dist/components/ui/aspect-ratio.d.ts +4 -0
  527. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  528. package/dist/components/ui/aspect-ratio.js +4 -0
  529. package/dist/components/ui/aspect-ratio.js.map +1 -0
  530. package/dist/components/ui/avatar.d.ts +7 -0
  531. package/dist/components/ui/avatar.d.ts.map +1 -0
  532. package/dist/components/ui/avatar.js +12 -0
  533. package/dist/components/ui/avatar.js.map +1 -0
  534. package/dist/components/ui/badge.d.ts +10 -0
  535. package/dist/components/ui/badge.d.ts.map +1 -0
  536. package/dist/components/ui/badge.js +21 -0
  537. package/dist/components/ui/badge.js.map +1 -0
  538. package/dist/components/ui/breadcrumb.d.ts +20 -0
  539. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  540. package/dist/components/ui/breadcrumb.js +24 -0
  541. package/dist/components/ui/breadcrumb.js.map +1 -0
  542. package/dist/components/ui/button.d.ts +12 -0
  543. package/dist/components/ui/button.d.ts.map +1 -0
  544. package/dist/components/ui/button.js +34 -0
  545. package/dist/components/ui/button.js.map +1 -0
  546. package/dist/components/ui/calendar.d.ts +9 -0
  547. package/dist/components/ui/calendar.d.ts.map +1 -0
  548. package/dist/components/ui/calendar.js +41 -0
  549. package/dist/components/ui/calendar.js.map +1 -0
  550. package/dist/components/ui/card.d.ts +9 -0
  551. package/dist/components/ui/card.d.ts.map +1 -0
  552. package/dist/components/ui/card.js +17 -0
  553. package/dist/components/ui/card.js.map +1 -0
  554. package/dist/components/ui/carousel.d.ts +19 -0
  555. package/dist/components/ui/carousel.d.ts.map +1 -0
  556. package/dist/components/ui/carousel.js +99 -0
  557. package/dist/components/ui/carousel.js.map +1 -0
  558. package/dist/components/ui/chart.d.ts +80 -0
  559. package/dist/components/ui/chart.d.ts.map +1 -0
  560. package/dist/components/ui/chart.js +131 -0
  561. package/dist/components/ui/chart.js.map +1 -0
  562. package/dist/components/ui/checkbox.d.ts +5 -0
  563. package/dist/components/ui/checkbox.d.ts.map +1 -0
  564. package/dist/components/ui/checkbox.js +9 -0
  565. package/dist/components/ui/checkbox.js.map +1 -0
  566. package/dist/components/ui/collapsible.d.ts +6 -0
  567. package/dist/components/ui/collapsible.d.ts.map +1 -0
  568. package/dist/components/ui/collapsible.js +6 -0
  569. package/dist/components/ui/collapsible.js.map +1 -0
  570. package/dist/components/ui/command.d.ts +83 -0
  571. package/dist/components/ui/command.d.ts.map +1 -0
  572. package/dist/components/ui/command.js +29 -0
  573. package/dist/components/ui/command.js.map +1 -0
  574. package/dist/components/ui/context-menu.d.ts +28 -0
  575. package/dist/components/ui/context-menu.d.ts.map +1 -0
  576. package/dist/components/ui/context-menu.js +34 -0
  577. package/dist/components/ui/context-menu.js.map +1 -0
  578. package/dist/components/ui/dialog.d.ts +2 -0
  579. package/dist/components/ui/dialog.d.ts.map +1 -0
  580. package/dist/components/ui/dialog.js +2 -0
  581. package/dist/components/ui/dialog.js.map +1 -0
  582. package/dist/components/ui/drawer.d.ts +23 -0
  583. package/dist/components/ui/drawer.d.ts.map +1 -0
  584. package/dist/components/ui/drawer.js +23 -0
  585. package/dist/components/ui/drawer.js.map +1 -0
  586. package/dist/components/ui/dropdown-menu.d.ts +2 -0
  587. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  588. package/dist/components/ui/dropdown-menu.js +2 -0
  589. package/dist/components/ui/dropdown-menu.js.map +1 -0
  590. package/dist/components/ui/form.d.ts +26 -0
  591. package/dist/components/ui/form.d.ts.map +1 -0
  592. package/dist/components/ui/form.js +63 -0
  593. package/dist/components/ui/form.js.map +1 -0
  594. package/dist/components/ui/hover-card.d.ts +7 -0
  595. package/dist/components/ui/hover-card.d.ts.map +1 -0
  596. package/dist/components/ui/hover-card.js +10 -0
  597. package/dist/components/ui/hover-card.js.map +1 -0
  598. package/dist/components/ui/input-otp.d.ts +35 -0
  599. package/dist/components/ui/input-otp.d.ts.map +1 -0
  600. package/dist/components/ui/input-otp.js +19 -0
  601. package/dist/components/ui/input-otp.js.map +1 -0
  602. package/dist/components/ui/input.d.ts +4 -0
  603. package/dist/components/ui/input.d.ts.map +1 -0
  604. package/dist/components/ui/input.js +9 -0
  605. package/dist/components/ui/input.js.map +1 -0
  606. package/dist/components/ui/label.d.ts +6 -0
  607. package/dist/components/ui/label.d.ts.map +1 -0
  608. package/dist/components/ui/label.js +10 -0
  609. package/dist/components/ui/label.js.map +1 -0
  610. package/dist/components/ui/menubar.d.ts +29 -0
  611. package/dist/components/ui/menubar.d.ts.map +1 -0
  612. package/dist/components/ui/menubar.js +41 -0
  613. package/dist/components/ui/menubar.js.map +1 -0
  614. package/dist/components/ui/navigation-menu.d.ts +13 -0
  615. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  616. package/dist/components/ui/navigation-menu.js +25 -0
  617. package/dist/components/ui/navigation-menu.js.map +1 -0
  618. package/dist/components/ui/pagination.d.ts +29 -0
  619. package/dist/components/ui/pagination.d.ts.map +1 -0
  620. package/dist/components/ui/pagination.js +24 -0
  621. package/dist/components/ui/pagination.js.map +1 -0
  622. package/dist/components/ui/popover.d.ts +8 -0
  623. package/dist/components/ui/popover.d.ts.map +1 -0
  624. package/dist/components/ui/popover.js +11 -0
  625. package/dist/components/ui/popover.js.map +1 -0
  626. package/dist/components/ui/progress.d.ts +5 -0
  627. package/dist/components/ui/progress.d.ts.map +1 -0
  628. package/dist/components/ui/progress.js +8 -0
  629. package/dist/components/ui/progress.js.map +1 -0
  630. package/dist/components/ui/radio-group.d.ts +6 -0
  631. package/dist/components/ui/radio-group.d.ts.map +1 -0
  632. package/dist/components/ui/radio-group.js +15 -0
  633. package/dist/components/ui/radio-group.js.map +1 -0
  634. package/dist/components/ui/resizable.d.ts +8 -0
  635. package/dist/components/ui/resizable.d.ts.map +1 -0
  636. package/dist/components/ui/resizable.js +9 -0
  637. package/dist/components/ui/resizable.js.map +1 -0
  638. package/dist/components/ui/scroll-area.d.ts +6 -0
  639. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  640. package/dist/components/ui/scroll-area.js +12 -0
  641. package/dist/components/ui/scroll-area.js.map +1 -0
  642. package/dist/components/ui/select.d.ts +2 -0
  643. package/dist/components/ui/select.d.ts.map +1 -0
  644. package/dist/components/ui/select.js +2 -0
  645. package/dist/components/ui/select.js.map +1 -0
  646. package/dist/components/ui/separator.d.ts +5 -0
  647. package/dist/components/ui/separator.d.ts.map +1 -0
  648. package/dist/components/ui/separator.js +8 -0
  649. package/dist/components/ui/separator.js.map +1 -0
  650. package/dist/components/ui/sheet.d.ts +26 -0
  651. package/dist/components/ui/sheet.d.ts.map +1 -0
  652. package/dist/components/ui/sheet.js +37 -0
  653. package/dist/components/ui/sheet.js.map +1 -0
  654. package/dist/components/ui/sidebar.d.ts +67 -0
  655. package/dist/components/ui/sidebar.d.ts.map +1 -0
  656. package/dist/components/ui/sidebar.js +233 -0
  657. package/dist/components/ui/sidebar.js.map +1 -0
  658. package/dist/components/ui/skeleton.d.ts +3 -0
  659. package/dist/components/ui/skeleton.d.ts.map +1 -0
  660. package/dist/components/ui/skeleton.js +7 -0
  661. package/dist/components/ui/skeleton.js.map +1 -0
  662. package/dist/components/ui/slider.d.ts +5 -0
  663. package/dist/components/ui/slider.d.ts.map +1 -0
  664. package/dist/components/ui/slider.js +8 -0
  665. package/dist/components/ui/slider.js.map +1 -0
  666. package/dist/components/ui/sonner.d.ts +5 -0
  667. package/dist/components/ui/sonner.d.ts.map +1 -0
  668. package/dist/components/ui/sonner.js +25 -0
  669. package/dist/components/ui/sonner.js.map +1 -0
  670. package/dist/components/ui/spinner.d.ts +3 -0
  671. package/dist/components/ui/spinner.d.ts.map +1 -0
  672. package/dist/components/ui/spinner.js +7 -0
  673. package/dist/components/ui/spinner.js.map +1 -0
  674. package/dist/components/ui/switch.d.ts +5 -0
  675. package/dist/components/ui/switch.d.ts.map +1 -0
  676. package/dist/components/ui/switch.js +8 -0
  677. package/dist/components/ui/switch.js.map +1 -0
  678. package/dist/components/ui/table.d.ts +11 -0
  679. package/dist/components/ui/table.d.ts.map +1 -0
  680. package/dist/components/ui/table.js +21 -0
  681. package/dist/components/ui/table.js.map +1 -0
  682. package/dist/components/ui/tabs.d.ts +8 -0
  683. package/dist/components/ui/tabs.d.ts.map +1 -0
  684. package/dist/components/ui/tabs.js +13 -0
  685. package/dist/components/ui/tabs.js.map +1 -0
  686. package/dist/components/ui/textarea.d.ts +6 -0
  687. package/dist/components/ui/textarea.d.ts.map +1 -0
  688. package/dist/components/ui/textarea.js +9 -0
  689. package/dist/components/ui/textarea.js.map +1 -0
  690. package/dist/components/ui/toast.d.ts +16 -0
  691. package/dist/components/ui/toast.d.ts.map +1 -0
  692. package/dist/components/ui/toast.js +34 -0
  693. package/dist/components/ui/toast.js.map +1 -0
  694. package/dist/components/ui/toaster.d.ts +2 -0
  695. package/dist/components/ui/toaster.d.ts.map +1 -0
  696. package/dist/components/ui/toaster.js +10 -0
  697. package/dist/components/ui/toaster.js.map +1 -0
  698. package/dist/components/ui/toggle-group.d.ts +13 -0
  699. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  700. package/dist/components/ui/toggle-group.js +21 -0
  701. package/dist/components/ui/toggle-group.js.map +1 -0
  702. package/dist/components/ui/toggle.d.ts +13 -0
  703. package/dist/components/ui/toggle.d.ts.map +1 -0
  704. package/dist/components/ui/toggle.js +26 -0
  705. package/dist/components/ui/toggle.js.map +1 -0
  706. package/dist/components/ui/tooltip.d.ts +8 -0
  707. package/dist/components/ui/tooltip.d.ts.map +1 -0
  708. package/dist/components/ui/tooltip.js +11 -0
  709. package/dist/components/ui/tooltip.js.map +1 -0
  710. package/dist/components/ui/use-toast.d.ts +3 -0
  711. package/dist/components/ui/use-toast.d.ts.map +1 -0
  712. package/dist/components/ui/use-toast.js +3 -0
  713. package/dist/components/ui/use-toast.js.map +1 -0
  714. package/dist/components/usage-alerts-panel.d.ts +11 -0
  715. package/dist/components/usage-alerts-panel.d.ts.map +1 -0
  716. package/dist/components/usage-alerts-panel.js +125 -0
  717. package/dist/components/usage-alerts-panel.js.map +1 -0
  718. package/dist/components/workspace-app-card.d.ts +8 -0
  719. package/dist/components/workspace-app-card.d.ts.map +1 -0
  720. package/dist/components/workspace-app-card.js +198 -0
  721. package/dist/components/workspace-app-card.js.map +1 -0
  722. package/dist/components/workspace-app-host.d.ts +50 -0
  723. package/dist/components/workspace-app-host.d.ts.map +1 -0
  724. package/dist/components/workspace-app-host.js +386 -0
  725. package/dist/components/workspace-app-host.js.map +1 -0
  726. package/dist/components/workspace-app-search.d.ts +10 -0
  727. package/dist/components/workspace-app-search.d.ts.map +1 -0
  728. package/dist/components/workspace-app-search.js +27 -0
  729. package/dist/components/workspace-app-search.js.map +1 -0
  730. package/dist/components/workspace-resource-effective-stack.d.ts +11 -0
  731. package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -0
  732. package/dist/components/workspace-resource-effective-stack.js +65 -0
  733. package/dist/components/workspace-resource-effective-stack.js.map +1 -0
  734. package/dist/components/workspace-resource-impact-preview.d.ts +9 -0
  735. package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -0
  736. package/dist/components/workspace-resource-impact-preview.js +44 -0
  737. package/dist/components/workspace-resource-impact-preview.js.map +1 -0
  738. package/dist/components/workspace-template-card.d.ts +58 -0
  739. package/dist/components/workspace-template-card.d.ts.map +1 -0
  740. package/dist/components/workspace-template-card.js +113 -0
  741. package/dist/components/workspace-template-card.js.map +1 -0
  742. package/dist/config.d.ts +40 -0
  743. package/dist/config.d.ts.map +1 -0
  744. package/dist/config.js +7 -0
  745. package/dist/config.js.map +1 -0
  746. package/dist/db/index.d.ts +7 -0
  747. package/dist/db/index.d.ts.map +1 -0
  748. package/dist/db/index.js +35 -0
  749. package/dist/db/index.js.map +1 -0
  750. package/dist/db/migrations.d.ts +3 -0
  751. package/dist/db/migrations.d.ts.map +1 -0
  752. package/dist/db/migrations.js +250 -0
  753. package/dist/db/migrations.js.map +1 -0
  754. package/dist/db/schema.d.ts +3059 -0
  755. package/dist/db/schema.d.ts.map +1 -0
  756. package/dist/db/schema.js +194 -0
  757. package/dist/db/schema.js.map +1 -0
  758. package/dist/hooks/use-mobile.d.ts +2 -0
  759. package/dist/hooks/use-mobile.d.ts.map +1 -0
  760. package/dist/hooks/use-mobile.js +2 -0
  761. package/dist/hooks/use-mobile.js.map +1 -0
  762. package/dist/hooks/use-navigation-state.d.ts +25 -0
  763. package/dist/hooks/use-navigation-state.d.ts.map +1 -0
  764. package/dist/hooks/use-navigation-state.js +353 -0
  765. package/dist/hooks/use-navigation-state.js.map +1 -0
  766. package/dist/hooks/use-toast.d.ts +45 -0
  767. package/dist/hooks/use-toast.d.ts.map +1 -0
  768. package/dist/hooks/use-toast.js +127 -0
  769. package/dist/hooks/use-toast.js.map +1 -0
  770. package/dist/index.d.ts +15 -0
  771. package/dist/index.d.ts.map +1 -0
  772. package/dist/index.js +15 -0
  773. package/dist/index.js.map +1 -0
  774. package/dist/lib/agent-pack.d.ts +31 -0
  775. package/dist/lib/agent-pack.d.ts.map +1 -0
  776. package/dist/lib/agent-pack.js +149 -0
  777. package/dist/lib/agent-pack.js.map +1 -0
  778. package/dist/lib/automation-display.d.ts +22 -0
  779. package/dist/lib/automation-display.d.ts.map +1 -0
  780. package/dist/lib/automation-display.js +88 -0
  781. package/dist/lib/automation-display.js.map +1 -0
  782. package/dist/lib/automations.d.ts +32 -0
  783. package/dist/lib/automations.d.ts.map +1 -0
  784. package/dist/lib/automations.js +28 -0
  785. package/dist/lib/automations.js.map +1 -0
  786. package/dist/lib/browser-chat-bridge.d.ts +8 -0
  787. package/dist/lib/browser-chat-bridge.d.ts.map +1 -0
  788. package/dist/lib/browser-chat-bridge.js +48 -0
  789. package/dist/lib/browser-chat-bridge.js.map +1 -0
  790. package/dist/lib/browser-chat-protocol.d.ts +33 -0
  791. package/dist/lib/browser-chat-protocol.d.ts.map +1 -0
  792. package/dist/lib/browser-chat-protocol.js +82 -0
  793. package/dist/lib/browser-chat-protocol.js.map +1 -0
  794. package/dist/lib/catch-all-target.d.ts +17 -0
  795. package/dist/lib/catch-all-target.d.ts.map +1 -0
  796. package/dist/lib/catch-all-target.js +103 -0
  797. package/dist/lib/catch-all-target.js.map +1 -0
  798. package/dist/lib/embed-session-recovery.d.ts +3 -0
  799. package/dist/lib/embed-session-recovery.d.ts.map +1 -0
  800. package/dist/lib/embed-session-recovery.js +18 -0
  801. package/dist/lib/embed-session-recovery.js.map +1 -0
  802. package/dist/lib/other-apps.d.ts +16 -0
  803. package/dist/lib/other-apps.d.ts.map +1 -0
  804. package/dist/lib/other-apps.js +36 -0
  805. package/dist/lib/other-apps.js.map +1 -0
  806. package/dist/lib/overview-chat.d.ts +9 -0
  807. package/dist/lib/overview-chat.d.ts.map +1 -0
  808. package/dist/lib/overview-chat.js +16 -0
  809. package/dist/lib/overview-chat.js.map +1 -0
  810. package/dist/lib/simple-agent-profile.d.ts +36 -0
  811. package/dist/lib/simple-agent-profile.d.ts.map +1 -0
  812. package/dist/lib/simple-agent-profile.js +183 -0
  813. package/dist/lib/simple-agent-profile.js.map +1 -0
  814. package/dist/lib/task-queue.d.ts +19 -0
  815. package/dist/lib/task-queue.d.ts.map +1 -0
  816. package/dist/lib/task-queue.js +54 -0
  817. package/dist/lib/task-queue.js.map +1 -0
  818. package/dist/lib/thread-link-preview.d.ts +23 -0
  819. package/dist/lib/thread-link-preview.d.ts.map +1 -0
  820. package/dist/lib/thread-link-preview.js +150 -0
  821. package/dist/lib/thread-link-preview.js.map +1 -0
  822. package/dist/lib/utils.d.ts +3 -0
  823. package/dist/lib/utils.d.ts.map +1 -0
  824. package/dist/lib/utils.js +6 -0
  825. package/dist/lib/utils.js.map +1 -0
  826. package/dist/lib/workspace-app-layout.d.ts +19 -0
  827. package/dist/lib/workspace-app-layout.d.ts.map +1 -0
  828. package/dist/lib/workspace-app-layout.js +75 -0
  829. package/dist/lib/workspace-app-layout.js.map +1 -0
  830. package/dist/lib/workspace-apps.d.ts +72 -0
  831. package/dist/lib/workspace-apps.d.ts.map +1 -0
  832. package/dist/lib/workspace-apps.js +228 -0
  833. package/dist/lib/workspace-apps.js.map +1 -0
  834. package/dist/lib/workspace-apps.test.d.ts +2 -0
  835. package/dist/lib/workspace-apps.test.d.ts.map +1 -0
  836. package/dist/lib/workspace-apps.test.js +105 -0
  837. package/dist/lib/workspace-apps.test.js.map +1 -0
  838. package/dist/routes/index.d.ts +32 -0
  839. package/dist/routes/index.d.ts.map +1 -0
  840. package/dist/routes/index.js +89 -0
  841. package/dist/routes/index.js.map +1 -0
  842. package/dist/routes/pages/$appId.d.ts +8 -0
  843. package/dist/routes/pages/$appId.d.ts.map +1 -0
  844. package/dist/routes/pages/$appId.js +126 -0
  845. package/dist/routes/pages/$appId.js.map +1 -0
  846. package/dist/routes/pages/_index.d.ts +22 -0
  847. package/dist/routes/pages/_index.d.ts.map +1 -0
  848. package/dist/routes/pages/_index.js +53 -0
  849. package/dist/routes/pages/_index.js.map +1 -0
  850. package/dist/routes/pages/_index.test.d.ts +2 -0
  851. package/dist/routes/pages/_index.test.d.ts.map +1 -0
  852. package/dist/routes/pages/_index.test.js +29 -0
  853. package/dist/routes/pages/_index.test.js.map +1 -0
  854. package/dist/routes/pages/admin._index.d.ts +5 -0
  855. package/dist/routes/pages/admin._index.d.ts.map +1 -0
  856. package/dist/routes/pages/admin._index.js +44 -0
  857. package/dist/routes/pages/admin._index.js.map +1 -0
  858. package/dist/routes/pages/admin.d.ts +5 -0
  859. package/dist/routes/pages/admin.d.ts.map +1 -0
  860. package/dist/routes/pages/admin.js +10 -0
  861. package/dist/routes/pages/admin.js.map +1 -0
  862. package/dist/routes/pages/agent-integrations.d.ts +5 -0
  863. package/dist/routes/pages/agent-integrations.d.ts.map +1 -0
  864. package/dist/routes/pages/agent-integrations.js +15 -0
  865. package/dist/routes/pages/agent-integrations.js.map +1 -0
  866. package/dist/routes/pages/agents.d.ts +5 -0
  867. package/dist/routes/pages/agents.d.ts.map +1 -0
  868. package/dist/routes/pages/agents.js +96 -0
  869. package/dist/routes/pages/agents.js.map +1 -0
  870. package/dist/routes/pages/approval.d.ts +5 -0
  871. package/dist/routes/pages/approval.d.ts.map +1 -0
  872. package/dist/routes/pages/approval.js +58 -0
  873. package/dist/routes/pages/approval.js.map +1 -0
  874. package/dist/routes/pages/approvals.d.ts +5 -0
  875. package/dist/routes/pages/approvals.d.ts.map +1 -0
  876. package/dist/routes/pages/approvals.js +55 -0
  877. package/dist/routes/pages/approvals.js.map +1 -0
  878. package/dist/routes/pages/apps.$appId.d.ts +6 -0
  879. package/dist/routes/pages/apps.$appId.d.ts.map +1 -0
  880. package/dist/routes/pages/apps.$appId.js +15 -0
  881. package/dist/routes/pages/apps.$appId.js.map +1 -0
  882. package/dist/routes/pages/apps.d.ts +5 -0
  883. package/dist/routes/pages/apps.d.ts.map +1 -0
  884. package/dist/routes/pages/apps.js +113 -0
  885. package/dist/routes/pages/apps.js.map +1 -0
  886. package/dist/routes/pages/audit.d.ts +5 -0
  887. package/dist/routes/pages/audit.d.ts.map +1 -0
  888. package/dist/routes/pages/audit.js +14 -0
  889. package/dist/routes/pages/audit.js.map +1 -0
  890. package/dist/routes/pages/automations.d.ts +5 -0
  891. package/dist/routes/pages/automations.d.ts.map +1 -0
  892. package/dist/routes/pages/automations.js +124 -0
  893. package/dist/routes/pages/automations.js.map +1 -0
  894. package/dist/routes/pages/browser-chat.d.ts +5 -0
  895. package/dist/routes/pages/browser-chat.d.ts.map +1 -0
  896. package/dist/routes/pages/browser-chat.js +43 -0
  897. package/dist/routes/pages/browser-chat.js.map +1 -0
  898. package/dist/routes/pages/browser-connect.d.ts +5 -0
  899. package/dist/routes/pages/browser-connect.d.ts.map +1 -0
  900. package/dist/routes/pages/browser-connect.js +72 -0
  901. package/dist/routes/pages/browser-connect.js.map +1 -0
  902. package/dist/routes/pages/chat.d.ts +5 -0
  903. package/dist/routes/pages/chat.d.ts.map +1 -0
  904. package/dist/routes/pages/chat.js +192 -0
  905. package/dist/routes/pages/chat.js.map +1 -0
  906. package/dist/routes/pages/destinations.d.ts +5 -0
  907. package/dist/routes/pages/destinations.d.ts.map +1 -0
  908. package/dist/routes/pages/destinations.js +96 -0
  909. package/dist/routes/pages/destinations.js.map +1 -0
  910. package/dist/routes/pages/dream-settings.d.ts +34 -0
  911. package/dist/routes/pages/dream-settings.d.ts.map +1 -0
  912. package/dist/routes/pages/dream-settings.js +68 -0
  913. package/dist/routes/pages/dream-settings.js.map +1 -0
  914. package/dist/routes/pages/dreams.d.ts +5 -0
  915. package/dist/routes/pages/dreams.d.ts.map +1 -0
  916. package/dist/routes/pages/dreams.js +455 -0
  917. package/dist/routes/pages/dreams.js.map +1 -0
  918. package/dist/routes/pages/extensions.$id.d.ts +5 -0
  919. package/dist/routes/pages/extensions.$id.d.ts.map +1 -0
  920. package/dist/routes/pages/extensions.$id.js +9 -0
  921. package/dist/routes/pages/extensions.$id.js.map +1 -0
  922. package/dist/routes/pages/extensions._index.d.ts +5 -0
  923. package/dist/routes/pages/extensions._index.d.ts.map +1 -0
  924. package/dist/routes/pages/extensions._index.js +9 -0
  925. package/dist/routes/pages/extensions._index.js.map +1 -0
  926. package/dist/routes/pages/identities.d.ts +5 -0
  927. package/dist/routes/pages/identities.d.ts.map +1 -0
  928. package/dist/routes/pages/identities.js +20 -0
  929. package/dist/routes/pages/identities.js.map +1 -0
  930. package/dist/routes/pages/integrations.d.ts +5 -0
  931. package/dist/routes/pages/integrations.d.ts.map +1 -0
  932. package/dist/routes/pages/integrations.js +196 -0
  933. package/dist/routes/pages/integrations.js.map +1 -0
  934. package/dist/routes/pages/messaging.d.ts +5 -0
  935. package/dist/routes/pages/messaging.d.ts.map +1 -0
  936. package/dist/routes/pages/messaging.js +10 -0
  937. package/dist/routes/pages/messaging.js.map +1 -0
  938. package/dist/routes/pages/metrics.d.ts +5 -0
  939. package/dist/routes/pages/metrics.d.ts.map +1 -0
  940. package/dist/routes/pages/metrics.js +305 -0
  941. package/dist/routes/pages/metrics.js.map +1 -0
  942. package/dist/routes/pages/new-app.d.ts +5 -0
  943. package/dist/routes/pages/new-app.d.ts.map +1 -0
  944. package/dist/routes/pages/new-app.js +12 -0
  945. package/dist/routes/pages/new-app.js.map +1 -0
  946. package/dist/routes/pages/operations.d.ts +5 -0
  947. package/dist/routes/pages/operations.d.ts.map +1 -0
  948. package/dist/routes/pages/operations.js +53 -0
  949. package/dist/routes/pages/operations.js.map +1 -0
  950. package/dist/routes/pages/overview.d.ts +18 -0
  951. package/dist/routes/pages/overview.d.ts.map +1 -0
  952. package/dist/routes/pages/overview.js +19 -0
  953. package/dist/routes/pages/overview.js.map +1 -0
  954. package/dist/routes/pages/settings.d.ts +5 -0
  955. package/dist/routes/pages/settings.d.ts.map +1 -0
  956. package/dist/routes/pages/settings.js +57 -0
  957. package/dist/routes/pages/settings.js.map +1 -0
  958. package/dist/routes/pages/team.d.ts +5 -0
  959. package/dist/routes/pages/team.d.ts.map +1 -0
  960. package/dist/routes/pages/team.js +9 -0
  961. package/dist/routes/pages/team.js.map +1 -0
  962. package/dist/routes/pages/thread-debug.d.ts +5 -0
  963. package/dist/routes/pages/thread-debug.d.ts.map +1 -0
  964. package/dist/routes/pages/thread-debug.js +563 -0
  965. package/dist/routes/pages/thread-debug.js.map +1 -0
  966. package/dist/routes/pages/tools.$id.d.ts +5 -0
  967. package/dist/routes/pages/tools.$id.d.ts.map +1 -0
  968. package/dist/routes/pages/tools.$id.js +9 -0
  969. package/dist/routes/pages/tools.$id.js.map +1 -0
  970. package/dist/routes/pages/tools._index.d.ts +5 -0
  971. package/dist/routes/pages/tools._index.d.ts.map +1 -0
  972. package/dist/routes/pages/tools._index.js +9 -0
  973. package/dist/routes/pages/tools._index.js.map +1 -0
  974. package/dist/routes/pages/transactional-email.$appId.$id.d.ts +5 -0
  975. package/dist/routes/pages/transactional-email.$appId.$id.d.ts.map +1 -0
  976. package/dist/routes/pages/transactional-email.$appId.$id.js +147 -0
  977. package/dist/routes/pages/transactional-email.$appId.$id.js.map +1 -0
  978. package/dist/routes/pages/transactional-email.d.ts +5 -0
  979. package/dist/routes/pages/transactional-email.d.ts.map +1 -0
  980. package/dist/routes/pages/transactional-email.js +143 -0
  981. package/dist/routes/pages/transactional-email.js.map +1 -0
  982. package/dist/routes/pages/vault.d.ts +5 -0
  983. package/dist/routes/pages/vault.d.ts.map +1 -0
  984. package/dist/routes/pages/vault.js +214 -0
  985. package/dist/routes/pages/vault.js.map +1 -0
  986. package/dist/routes/pages/workspace.d.ts +5 -0
  987. package/dist/routes/pages/workspace.d.ts.map +1 -0
  988. package/dist/routes/pages/workspace.js +336 -0
  989. package/dist/routes/pages/workspace.js.map +1 -0
  990. package/dist/server/index.d.ts +44 -0
  991. package/dist/server/index.d.ts.map +1 -0
  992. package/dist/server/index.js +71 -0
  993. package/dist/server/index.js.map +1 -0
  994. package/dist/server/lib/agent-pack-store.d.ts +24 -0
  995. package/dist/server/lib/agent-pack-store.d.ts.map +1 -0
  996. package/dist/server/lib/agent-pack-store.js +22 -0
  997. package/dist/server/lib/agent-pack-store.js.map +1 -0
  998. package/dist/server/lib/app-creation-store.d.ts +164 -0
  999. package/dist/server/lib/app-creation-store.d.ts.map +1 -0
  1000. package/dist/server/lib/app-creation-store.js +1975 -0
  1001. package/dist/server/lib/app-creation-store.js.map +1 -0
  1002. package/dist/server/lib/browser-extension-allowlist.d.ts +9 -0
  1003. package/dist/server/lib/browser-extension-allowlist.d.ts.map +1 -0
  1004. package/dist/server/lib/browser-extension-allowlist.js +39 -0
  1005. package/dist/server/lib/browser-extension-allowlist.js.map +1 -0
  1006. package/dist/server/lib/curated-workspace-templates.d.ts +22 -0
  1007. package/dist/server/lib/curated-workspace-templates.d.ts.map +1 -0
  1008. package/dist/server/lib/curated-workspace-templates.js +137 -0
  1009. package/dist/server/lib/curated-workspace-templates.js.map +1 -0
  1010. package/dist/server/lib/dispatch-integrations.d.ts +16 -0
  1011. package/dist/server/lib/dispatch-integrations.d.ts.map +1 -0
  1012. package/dist/server/lib/dispatch-integrations.js +411 -0
  1013. package/dist/server/lib/dispatch-integrations.js.map +1 -0
  1014. package/dist/server/lib/dispatch-remote-commands.d.ts +83 -0
  1015. package/dist/server/lib/dispatch-remote-commands.d.ts.map +1 -0
  1016. package/dist/server/lib/dispatch-remote-commands.js +256 -0
  1017. package/dist/server/lib/dispatch-remote-commands.js.map +1 -0
  1018. package/dist/server/lib/dispatch-routing.d.ts +6 -0
  1019. package/dist/server/lib/dispatch-routing.d.ts.map +1 -0
  1020. package/dist/server/lib/dispatch-routing.js +30 -0
  1021. package/dist/server/lib/dispatch-routing.js.map +1 -0
  1022. package/dist/server/lib/dispatch-store.d.ts +342 -0
  1023. package/dist/server/lib/dispatch-store.d.ts.map +1 -0
  1024. package/dist/server/lib/dispatch-store.js +725 -0
  1025. package/dist/server/lib/dispatch-store.js.map +1 -0
  1026. package/dist/server/lib/dreams-store.d.ts +398 -0
  1027. package/dist/server/lib/dreams-store.d.ts.map +1 -0
  1028. package/dist/server/lib/dreams-store.js +2330 -0
  1029. package/dist/server/lib/dreams-store.js.map +1 -0
  1030. package/dist/server/lib/env-config.d.ts +3 -0
  1031. package/dist/server/lib/env-config.d.ts.map +1 -0
  1032. package/dist/server/lib/env-config.js +98 -0
  1033. package/dist/server/lib/env-config.js.map +1 -0
  1034. package/dist/server/lib/mcp-access-store.d.ts +16 -0
  1035. package/dist/server/lib/mcp-access-store.d.ts.map +1 -0
  1036. package/dist/server/lib/mcp-access-store.js +92 -0
  1037. package/dist/server/lib/mcp-access-store.js.map +1 -0
  1038. package/dist/server/lib/mcp-gateway.d.ts +90 -0
  1039. package/dist/server/lib/mcp-gateway.d.ts.map +1 -0
  1040. package/dist/server/lib/mcp-gateway.js +1036 -0
  1041. package/dist/server/lib/mcp-gateway.js.map +1 -0
  1042. package/dist/server/lib/onboarding-steps.d.ts +12 -0
  1043. package/dist/server/lib/onboarding-steps.d.ts.map +1 -0
  1044. package/dist/server/lib/onboarding-steps.js +72 -0
  1045. package/dist/server/lib/onboarding-steps.js.map +1 -0
  1046. package/dist/server/lib/provider-api.d.ts +29 -0
  1047. package/dist/server/lib/provider-api.d.ts.map +1 -0
  1048. package/dist/server/lib/provider-api.js +49 -0
  1049. package/dist/server/lib/provider-api.js.map +1 -0
  1050. package/dist/server/lib/thread-debug-store.d.ts +194 -0
  1051. package/dist/server/lib/thread-debug-store.d.ts.map +1 -0
  1052. package/dist/server/lib/thread-debug-store.js +849 -0
  1053. package/dist/server/lib/thread-debug-store.js.map +1 -0
  1054. package/dist/server/lib/thread-link-preview.d.ts +3 -0
  1055. package/dist/server/lib/thread-link-preview.d.ts.map +1 -0
  1056. package/dist/server/lib/thread-link-preview.js +28 -0
  1057. package/dist/server/lib/thread-link-preview.js.map +1 -0
  1058. package/dist/server/lib/usage-metrics-store.d.ts +113 -0
  1059. package/dist/server/lib/usage-metrics-store.d.ts.map +1 -0
  1060. package/dist/server/lib/usage-metrics-store.js +580 -0
  1061. package/dist/server/lib/usage-metrics-store.js.map +1 -0
  1062. package/dist/server/lib/vault-boot-resync.d.ts +23 -0
  1063. package/dist/server/lib/vault-boot-resync.d.ts.map +1 -0
  1064. package/dist/server/lib/vault-boot-resync.js +44 -0
  1065. package/dist/server/lib/vault-boot-resync.js.map +1 -0
  1066. package/dist/server/lib/vault-store.d.ts +381 -0
  1067. package/dist/server/lib/vault-store.d.ts.map +1 -0
  1068. package/dist/server/lib/vault-store.js +1106 -0
  1069. package/dist/server/lib/vault-store.js.map +1 -0
  1070. package/dist/server/lib/workspace-app-action-auth.d.ts +9 -0
  1071. package/dist/server/lib/workspace-app-action-auth.d.ts.map +1 -0
  1072. package/dist/server/lib/workspace-app-action-auth.js +102 -0
  1073. package/dist/server/lib/workspace-app-action-auth.js.map +1 -0
  1074. package/dist/server/lib/workspace-app-chat-proxy.d.ts +52 -0
  1075. package/dist/server/lib/workspace-app-chat-proxy.d.ts.map +1 -0
  1076. package/dist/server/lib/workspace-app-chat-proxy.js +306 -0
  1077. package/dist/server/lib/workspace-app-chat-proxy.js.map +1 -0
  1078. package/dist/server/lib/workspace-resources-store.d.ts +372 -0
  1079. package/dist/server/lib/workspace-resources-store.d.ts.map +1 -0
  1080. package/dist/server/lib/workspace-resources-store.js +1000 -0
  1081. package/dist/server/lib/workspace-resources-store.js.map +1 -0
  1082. package/dist/server/plugins/agent-chat.d.ts +3 -0
  1083. package/dist/server/plugins/agent-chat.d.ts.map +1 -0
  1084. package/dist/server/plugins/agent-chat.js +94 -0
  1085. package/dist/server/plugins/agent-chat.js.map +1 -0
  1086. package/dist/server/plugins/auth.d.ts +9 -0
  1087. package/dist/server/plugins/auth.d.ts.map +1 -0
  1088. package/dist/server/plugins/auth.js +31 -0
  1089. package/dist/server/plugins/auth.js.map +1 -0
  1090. package/dist/server/plugins/core-routes.d.ts +4 -0
  1091. package/dist/server/plugins/core-routes.d.ts.map +1 -0
  1092. package/dist/server/plugins/core-routes.js +18 -0
  1093. package/dist/server/plugins/core-routes.js.map +1 -0
  1094. package/dist/server/plugins/db.d.ts +11 -0
  1095. package/dist/server/plugins/db.d.ts.map +1 -0
  1096. package/dist/server/plugins/db.js +18 -0
  1097. package/dist/server/plugins/db.js.map +1 -0
  1098. package/dist/server/plugins/integrations.d.ts +8 -0
  1099. package/dist/server/plugins/integrations.d.ts.map +1 -0
  1100. package/dist/server/plugins/integrations.js +72 -0
  1101. package/dist/server/plugins/integrations.js.map +1 -0
  1102. package/dist/shared/app-roles.d.ts +9 -0
  1103. package/dist/shared/app-roles.d.ts.map +1 -0
  1104. package/dist/shared/app-roles.js +7 -0
  1105. package/dist/shared/app-roles.js.map +1 -0
  1106. package/dist/shared/chat-first-pane.d.ts +8 -0
  1107. package/dist/shared/chat-first-pane.d.ts.map +1 -0
  1108. package/dist/shared/chat-first-pane.js +8 -0
  1109. package/dist/shared/chat-first-pane.js.map +1 -0
  1110. package/dist/shared/feature-flags.d.ts +8 -0
  1111. package/dist/shared/feature-flags.d.ts.map +1 -0
  1112. package/dist/shared/feature-flags.js +17 -0
  1113. package/dist/shared/feature-flags.js.map +1 -0
  1114. package/dist/shared/workspace-app-chat.d.ts +23 -0
  1115. package/dist/shared/workspace-app-chat.d.ts.map +1 -0
  1116. package/dist/shared/workspace-app-chat.js +45 -0
  1117. package/dist/shared/workspace-app-chat.js.map +1 -0
  1118. package/dist/shared/workspace-sso.d.ts +48 -0
  1119. package/dist/shared/workspace-sso.d.ts.map +1 -0
  1120. package/dist/shared/workspace-sso.js +142 -0
  1121. package/dist/shared/workspace-sso.js.map +1 -0
  1122. package/package.json +118 -0
  1123. package/src/actions/apply-dream-proposal.ts +13 -0
  1124. package/src/actions/approve-dispatch-change.ts +12 -0
  1125. package/src/actions/approve-vault-request.ts +24 -0
  1126. package/src/actions/archive-workspace-app.ts +17 -0
  1127. package/src/actions/ask_app.ts +26 -0
  1128. package/src/actions/ask_app_status.ts +16 -0
  1129. package/src/actions/connect-external-agent.ts +92 -0
  1130. package/src/actions/create-browser-chat-session.spec.ts +122 -0
  1131. package/src/actions/create-browser-chat-session.ts +99 -0
  1132. package/src/actions/create-dream-report.ts +77 -0
  1133. package/src/actions/create-link-token.ts +13 -0
  1134. package/src/actions/create-pylon-ticket.ts +111 -0
  1135. package/src/actions/create-vault-grant.ts +16 -0
  1136. package/src/actions/create-vault-secret.ts +28 -0
  1137. package/src/actions/create-workspace-resource-grant.ts +16 -0
  1138. package/src/actions/create-workspace-resource.ts +37 -0
  1139. package/src/actions/create_embed_session.ts +30 -0
  1140. package/src/actions/create_workspace_app_embed_session.spec.ts +122 -0
  1141. package/src/actions/create_workspace_app_embed_session.ts +102 -0
  1142. package/src/actions/delete-destination.ts +12 -0
  1143. package/src/actions/delete-staged-dataset.ts +10 -0
  1144. package/src/actions/delete-vault-secret.ts +13 -0
  1145. package/src/actions/delete-workspace-resource.ts +13 -0
  1146. package/src/actions/deny-vault-request.ts +13 -0
  1147. package/src/actions/ensure-dream-job.ts +77 -0
  1148. package/src/actions/get-agent-thread-debug.ts +41 -0
  1149. package/src/actions/get-app-creation-settings.ts +12 -0
  1150. package/src/actions/get-dispatch-settings.ts +11 -0
  1151. package/src/actions/get-dream-settings.ts +13 -0
  1152. package/src/actions/get-dream.ts +15 -0
  1153. package/src/actions/get-vault-access-settings.ts +12 -0
  1154. package/src/actions/get-workspace-info.ts +12 -0
  1155. package/src/actions/get-workspace-resource-effective-context.ts +35 -0
  1156. package/src/actions/grant-vault-secrets-to-app.ts +21 -0
  1157. package/src/actions/grant-workspace-resources-to-app.ts +17 -0
  1158. package/src/actions/import-agent-pack.ts +146 -0
  1159. package/src/actions/import-agent.ts +102 -0
  1160. package/src/actions/index.spec.ts +59 -0
  1161. package/src/actions/index.ts +210 -0
  1162. package/src/actions/list-agent-pack.ts +43 -0
  1163. package/src/actions/list-agent-run-failures.ts +50 -0
  1164. package/src/actions/list-agent-thread-sources.ts +13 -0
  1165. package/src/actions/list-available-workspace-templates.ts +12 -0
  1166. package/src/actions/list-connected-agents.spec.ts +73 -0
  1167. package/src/actions/list-connected-agents.ts +112 -0
  1168. package/src/actions/list-curated-workspace-templates.spec.ts +36 -0
  1169. package/src/actions/list-curated-workspace-templates.ts +12 -0
  1170. package/src/actions/list-destinations.ts +11 -0
  1171. package/src/actions/list-dispatch-approvals.ts +11 -0
  1172. package/src/actions/list-dispatch-audit.ts +13 -0
  1173. package/src/actions/list-dispatch-overview.ts +19 -0
  1174. package/src/actions/list-dispatch-usage-metrics.ts +30 -0
  1175. package/src/actions/list-dream-candidates.ts +78 -0
  1176. package/src/actions/list-dreams.ts +18 -0
  1177. package/src/actions/list-integrations-catalog.ts +12 -0
  1178. package/src/actions/list-linked-identities.ts +11 -0
  1179. package/src/actions/list-mcp-app-access.ts +27 -0
  1180. package/src/actions/list-staged-datasets.ts +10 -0
  1181. package/src/actions/list-vault-audit.ts +17 -0
  1182. package/src/actions/list-vault-grants.ts +15 -0
  1183. package/src/actions/list-vault-requests.ts +17 -0
  1184. package/src/actions/list-vault-secret-options.ts +14 -0
  1185. package/src/actions/list-vault-secrets.ts +27 -0
  1186. package/src/actions/list-workspace-apps.ts +33 -0
  1187. package/src/actions/list-workspace-resource-grants.ts +15 -0
  1188. package/src/actions/list-workspace-resource-options.ts +24 -0
  1189. package/src/actions/list-workspace-resources-for-app.ts +14 -0
  1190. package/src/actions/list-workspace-resources.ts +24 -0
  1191. package/src/actions/list_apps.spec.ts +52 -0
  1192. package/src/actions/list_apps.ts +36 -0
  1193. package/src/actions/navigate.ts +53 -0
  1194. package/src/actions/open_app.spec.ts +106 -0
  1195. package/src/actions/open_app.ts +152 -0
  1196. package/src/actions/preview-dream-proposal.ts +15 -0
  1197. package/src/actions/preview-workspace-resource-change.ts +26 -0
  1198. package/src/actions/provider-api-audit.spec.ts +51 -0
  1199. package/src/actions/provider-api-catalog.ts +14 -0
  1200. package/src/actions/provider-api-docs.ts +24 -0
  1201. package/src/actions/provider-api-register.spec.ts +193 -0
  1202. package/src/actions/provider-api-register.ts +35 -0
  1203. package/src/actions/provider-api-request.ts +28 -0
  1204. package/src/actions/query-staged-dataset.ts +10 -0
  1205. package/src/actions/read-slack-thread-context.spec.ts +134 -0
  1206. package/src/actions/read-slack-thread-context.ts +171 -0
  1207. package/src/actions/reject-dispatch-change.ts +13 -0
  1208. package/src/actions/reject-dream-proposal.ts +13 -0
  1209. package/src/actions/remix-workspace-template.spec.ts +145 -0
  1210. package/src/actions/remix-workspace-template.ts +106 -0
  1211. package/src/actions/remove-pending-workspace-app.ts +17 -0
  1212. package/src/actions/request-vault-secret.ts +17 -0
  1213. package/src/actions/resolve-integration-source-context.spec.ts +78 -0
  1214. package/src/actions/resolve-integration-source-context.ts +37 -0
  1215. package/src/actions/restore-starter-workspace-resources.ts +18 -0
  1216. package/src/actions/revoke-vault-grant.ts +12 -0
  1217. package/src/actions/revoke-workspace-resource-grant.ts +16 -0
  1218. package/src/actions/scaffold-workspace-app.spec.ts +33 -0
  1219. package/src/actions/scaffold-workspace-app.ts +57 -0
  1220. package/src/actions/search-agent-threads.ts +31 -0
  1221. package/src/actions/send-code-agent-remote-command.ts +60 -0
  1222. package/src/actions/send-platform-message.spec.ts +129 -0
  1223. package/src/actions/send-platform-message.ts +150 -0
  1224. package/src/actions/set-app-creation-settings.ts +22 -0
  1225. package/src/actions/set-dispatch-approval-policy.ts +25 -0
  1226. package/src/actions/set-dream-settings.spec.ts +81 -0
  1227. package/src/actions/set-dream-settings.ts +45 -0
  1228. package/src/actions/set-mcp-app-access.spec.ts +73 -0
  1229. package/src/actions/set-mcp-app-access.ts +56 -0
  1230. package/src/actions/set-vault-access-settings.ts +17 -0
  1231. package/src/actions/start-workspace-app-creation.ts +55 -0
  1232. package/src/actions/sync-vault-to-app.ts +15 -0
  1233. package/src/actions/unarchive-workspace-app.ts +17 -0
  1234. package/src/actions/update-vault-secret.ts +49 -0
  1235. package/src/actions/update-workspace-app-metadata.ts +33 -0
  1236. package/src/actions/update-workspace-resource.ts +20 -0
  1237. package/src/actions/upsert-destination.ts +30 -0
  1238. package/src/actions/view-screen.spec.ts +212 -0
  1239. package/src/actions/view-screen.ts +398 -0
  1240. package/src/client/transactional-emails.spec.ts +91 -0
  1241. package/src/client/transactional-emails.ts +201 -0
  1242. package/src/components/action-query-error.spec.tsx +56 -0
  1243. package/src/components/action-query-error.tsx +32 -0
  1244. package/src/components/admin-navigation.tsx +329 -0
  1245. package/src/components/agents-panel.tsx +383 -0
  1246. package/src/components/app-icon.spec.tsx +44 -0
  1247. package/src/components/app-icon.tsx +177 -0
  1248. package/src/components/app-keys-popover.spec.tsx +146 -0
  1249. package/src/components/app-keys-popover.tsx +300 -0
  1250. package/src/components/app-list-row.tsx +40 -0
  1251. package/src/components/app-open-actions.tsx +5 -0
  1252. package/src/components/app-row-settings.tsx +54 -0
  1253. package/src/components/approval-value-block.spec.tsx +60 -0
  1254. package/src/components/approval-value-block.tsx +33 -0
  1255. package/src/components/automation-run-history-dialog.tsx +247 -0
  1256. package/src/components/connected-app-card.tsx +39 -0
  1257. package/src/components/create-app-popover.spec.tsx +376 -0
  1258. package/src/components/create-app-popover.tsx +677 -0
  1259. package/src/components/dispatch-control-plane.spec.tsx +344 -0
  1260. package/src/components/dispatch-control-plane.tsx +416 -0
  1261. package/src/components/dispatch-shell.tsx +59 -0
  1262. package/src/components/docs-link.tsx +52 -0
  1263. package/src/components/index.ts +21 -0
  1264. package/src/components/layout/Header.tsx +100 -0
  1265. package/src/components/layout/HeaderActions.tsx +1 -0
  1266. package/src/components/layout/Layout.app-chat.spec.ts +31 -0
  1267. package/src/components/layout/Layout.spec.tsx +549 -0
  1268. package/src/components/layout/Layout.tsx +2532 -0
  1269. package/src/components/layout/workspace-apps-rail.tsx +132 -0
  1270. package/src/components/messaging-setup-panel.spec.tsx +261 -0
  1271. package/src/components/messaging-setup-panel.tsx +1131 -0
  1272. package/src/components/other-apps-section.tsx +223 -0
  1273. package/src/components/simple-agents-panel.spec.tsx +153 -0
  1274. package/src/components/simple-agents-panel.tsx +1311 -0
  1275. package/src/components/task-queue-health.tsx +175 -0
  1276. package/src/components/transactional-email-activity.tsx +102 -0
  1277. package/src/components/transactional-email-metrics.tsx +127 -0
  1278. package/src/components/transactional-email-preview.tsx +88 -0
  1279. package/src/components/ui/accordion.tsx +56 -0
  1280. package/src/components/ui/alert-dialog.tsx +139 -0
  1281. package/src/components/ui/alert.tsx +59 -0
  1282. package/src/components/ui/aspect-ratio.tsx +5 -0
  1283. package/src/components/ui/avatar.tsx +48 -0
  1284. package/src/components/ui/badge.tsx +37 -0
  1285. package/src/components/ui/breadcrumb.tsx +115 -0
  1286. package/src/components/ui/button.tsx +56 -0
  1287. package/src/components/ui/calendar.tsx +68 -0
  1288. package/src/components/ui/card.tsx +86 -0
  1289. package/src/components/ui/carousel.tsx +260 -0
  1290. package/src/components/ui/chart.tsx +375 -0
  1291. package/src/components/ui/checkbox.tsx +28 -0
  1292. package/src/components/ui/collapsible.tsx +9 -0
  1293. package/src/components/ui/command.tsx +154 -0
  1294. package/src/components/ui/context-menu.tsx +198 -0
  1295. package/src/components/ui/dialog.tsx +1 -0
  1296. package/src/components/ui/drawer.tsx +128 -0
  1297. package/src/components/ui/dropdown-menu.tsx +1 -0
  1298. package/src/components/ui/form.tsx +177 -0
  1299. package/src/components/ui/hover-card.tsx +27 -0
  1300. package/src/components/ui/input-otp.tsx +69 -0
  1301. package/src/components/ui/input.tsx +22 -0
  1302. package/src/components/ui/label.tsx +24 -0
  1303. package/src/components/ui/menubar.tsx +235 -0
  1304. package/src/components/ui/navigation-menu.tsx +128 -0
  1305. package/src/components/ui/pagination.tsx +121 -0
  1306. package/src/components/ui/popover.tsx +31 -0
  1307. package/src/components/ui/progress.tsx +26 -0
  1308. package/src/components/ui/radio-group.tsx +42 -0
  1309. package/src/components/ui/resizable.tsx +43 -0
  1310. package/src/components/ui/scroll-area.tsx +46 -0
  1311. package/src/components/ui/select.tsx +1 -0
  1312. package/src/components/ui/separator.tsx +29 -0
  1313. package/src/components/ui/sheet.tsx +139 -0
  1314. package/src/components/ui/sidebar.tsx +777 -0
  1315. package/src/components/ui/skeleton.tsx +15 -0
  1316. package/src/components/ui/slider.tsx +26 -0
  1317. package/src/components/ui/sonner.tsx +58 -0
  1318. package/src/components/ui/spinner.tsx +17 -0
  1319. package/src/components/ui/switch.tsx +27 -0
  1320. package/src/components/ui/table.tsx +117 -0
  1321. package/src/components/ui/tabs.tsx +53 -0
  1322. package/src/components/ui/textarea.tsx +23 -0
  1323. package/src/components/ui/toast.tsx +127 -0
  1324. package/src/components/ui/toaster.tsx +33 -0
  1325. package/src/components/ui/toggle-group.tsx +59 -0
  1326. package/src/components/ui/toggle.tsx +43 -0
  1327. package/src/components/ui/tooltip.tsx +28 -0
  1328. package/src/components/ui/use-toast.ts +3 -0
  1329. package/src/components/usage-alerts-panel.tsx +445 -0
  1330. package/src/components/workspace-app-card.spec.tsx +408 -0
  1331. package/src/components/workspace-app-card.tsx +711 -0
  1332. package/src/components/workspace-app-chat-rail.spec.tsx +182 -0
  1333. package/src/components/workspace-app-host.spec.tsx +688 -0
  1334. package/src/components/workspace-app-host.tsx +756 -0
  1335. package/src/components/workspace-app-search.tsx +96 -0
  1336. package/src/components/workspace-resource-effective-stack.spec.tsx +126 -0
  1337. package/src/components/workspace-resource-effective-stack.tsx +159 -0
  1338. package/src/components/workspace-resource-impact-preview.spec.tsx +148 -0
  1339. package/src/components/workspace-resource-impact-preview.tsx +128 -0
  1340. package/src/components/workspace-template-card.spec.tsx +228 -0
  1341. package/src/components/workspace-template-card.tsx +363 -0
  1342. package/src/config.ts +42 -0
  1343. package/src/db/index.ts +40 -0
  1344. package/src/db/migrations.spec.ts +84 -0
  1345. package/src/db/migrations.ts +251 -0
  1346. package/src/db/schema.ts +209 -0
  1347. package/src/hooks/use-mobile.tsx +1 -0
  1348. package/src/hooks/use-navigation-state.spec.ts +166 -0
  1349. package/src/hooks/use-navigation-state.ts +400 -0
  1350. package/src/hooks/use-toast.ts +188 -0
  1351. package/src/index.ts +19 -0
  1352. package/src/lib/agent-pack.spec.ts +47 -0
  1353. package/src/lib/agent-pack.ts +226 -0
  1354. package/src/lib/automation-display.spec.ts +149 -0
  1355. package/src/lib/automation-display.ts +108 -0
  1356. package/src/lib/automations.spec.ts +64 -0
  1357. package/src/lib/automations.ts +66 -0
  1358. package/src/lib/browser-chat-bridge.spec.ts +151 -0
  1359. package/src/lib/browser-chat-bridge.ts +79 -0
  1360. package/src/lib/browser-chat-protocol.spec.ts +113 -0
  1361. package/src/lib/browser-chat-protocol.ts +124 -0
  1362. package/src/lib/catch-all-target.spec.ts +156 -0
  1363. package/src/lib/catch-all-target.ts +125 -0
  1364. package/src/lib/embed-session-recovery.spec.ts +63 -0
  1365. package/src/lib/embed-session-recovery.ts +26 -0
  1366. package/src/lib/other-apps.spec.ts +133 -0
  1367. package/src/lib/other-apps.ts +57 -0
  1368. package/src/lib/overview-chat.spec.ts +51 -0
  1369. package/src/lib/overview-chat.ts +29 -0
  1370. package/src/lib/simple-agent-profile.spec.ts +77 -0
  1371. package/src/lib/simple-agent-profile.ts +247 -0
  1372. package/src/lib/task-queue.spec.ts +57 -0
  1373. package/src/lib/task-queue.ts +72 -0
  1374. package/src/lib/thread-link-preview.ts +160 -0
  1375. package/src/lib/utils.ts +6 -0
  1376. package/src/lib/workspace-app-layout.spec.ts +47 -0
  1377. package/src/lib/workspace-app-layout.ts +121 -0
  1378. package/src/lib/workspace-apps.spec.ts +175 -0
  1379. package/src/lib/workspace-apps.test.ts +151 -0
  1380. package/src/lib/workspace-apps.ts +306 -0
  1381. package/src/routes/index.spec.ts +39 -0
  1382. package/src/routes/index.ts +95 -0
  1383. package/src/routes/pages/$appId.spec.tsx +115 -0
  1384. package/src/routes/pages/$appId.tsx +240 -0
  1385. package/src/routes/pages/_index.test.ts +34 -0
  1386. package/src/routes/pages/_index.tsx +65 -0
  1387. package/src/routes/pages/admin._index.tsx +107 -0
  1388. package/src/routes/pages/admin.tsx +15 -0
  1389. package/src/routes/pages/agent-integrations.tsx +24 -0
  1390. package/src/routes/pages/agents.tsx +251 -0
  1391. package/src/routes/pages/approval.tsx +301 -0
  1392. package/src/routes/pages/approvals.tsx +198 -0
  1393. package/src/routes/pages/apps.$appId.spec.tsx +66 -0
  1394. package/src/routes/pages/apps.$appId.tsx +22 -0
  1395. package/src/routes/pages/apps.tsx +431 -0
  1396. package/src/routes/pages/audit.tsx +71 -0
  1397. package/src/routes/pages/automations.tsx +363 -0
  1398. package/src/routes/pages/browser-chat.spec.tsx +121 -0
  1399. package/src/routes/pages/browser-chat.tsx +89 -0
  1400. package/src/routes/pages/browser-connect.spec.tsx +137 -0
  1401. package/src/routes/pages/browser-connect.tsx +143 -0
  1402. package/src/routes/pages/chat.spec.tsx +183 -0
  1403. package/src/routes/pages/chat.tsx +335 -0
  1404. package/src/routes/pages/destinations.tsx +309 -0
  1405. package/src/routes/pages/dream-settings.spec.ts +131 -0
  1406. package/src/routes/pages/dream-settings.ts +103 -0
  1407. package/src/routes/pages/dreams.tsx +1812 -0
  1408. package/src/routes/pages/extensions.$id.tsx +9 -0
  1409. package/src/routes/pages/extensions._index.tsx +9 -0
  1410. package/src/routes/pages/identities.tsx +106 -0
  1411. package/src/routes/pages/integrations.tsx +541 -0
  1412. package/src/routes/pages/messaging.tsx +17 -0
  1413. package/src/routes/pages/metrics.tsx +1135 -0
  1414. package/src/routes/pages/new-app.tsx +20 -0
  1415. package/src/routes/pages/operations.tsx +132 -0
  1416. package/src/routes/pages/overview.tsx +22 -0
  1417. package/src/routes/pages/settings.tsx +196 -0
  1418. package/src/routes/pages/team.tsx +9 -0
  1419. package/src/routes/pages/thread-debug.spec.tsx +370 -0
  1420. package/src/routes/pages/thread-debug.tsx +1923 -0
  1421. package/src/routes/pages/tools.$id.tsx +9 -0
  1422. package/src/routes/pages/tools._index.tsx +9 -0
  1423. package/src/routes/pages/transactional-email.$appId.$id.tsx +369 -0
  1424. package/src/routes/pages/transactional-email.tsx +575 -0
  1425. package/src/routes/pages/vault.tsx +978 -0
  1426. package/src/routes/pages/workspace.tsx +1213 -0
  1427. package/src/server/index.ts +86 -0
  1428. package/src/server/lib/agent-pack-store.ts +35 -0
  1429. package/src/server/lib/app-creation-store.spec.ts +1018 -0
  1430. package/src/server/lib/app-creation-store.ts +2567 -0
  1431. package/src/server/lib/approval-fencing.spec.ts +489 -0
  1432. package/src/server/lib/browser-extension-allowlist.spec.ts +76 -0
  1433. package/src/server/lib/browser-extension-allowlist.ts +58 -0
  1434. package/src/server/lib/curated-workspace-templates.spec.ts +56 -0
  1435. package/src/server/lib/curated-workspace-templates.ts +187 -0
  1436. package/src/server/lib/dispatch-integrations.spec.ts +428 -0
  1437. package/src/server/lib/dispatch-integrations.ts +528 -0
  1438. package/src/server/lib/dispatch-remote-commands.spec.ts +168 -0
  1439. package/src/server/lib/dispatch-remote-commands.ts +375 -0
  1440. package/src/server/lib/dispatch-routing.spec.ts +44 -0
  1441. package/src/server/lib/dispatch-routing.ts +42 -0
  1442. package/src/server/lib/dispatch-store.ts +1008 -0
  1443. package/src/server/lib/dreams-store.spec.ts +1492 -0
  1444. package/src/server/lib/dreams-store.ts +3187 -0
  1445. package/src/server/lib/env-config.ts +99 -0
  1446. package/src/server/lib/mcp-access-store.spec.ts +171 -0
  1447. package/src/server/lib/mcp-access-store.ts +138 -0
  1448. package/src/server/lib/mcp-gateway.spec.ts +1583 -0
  1449. package/src/server/lib/mcp-gateway.ts +1388 -0
  1450. package/src/server/lib/onboarding-steps.ts +82 -0
  1451. package/src/server/lib/provider-api.ts +69 -0
  1452. package/src/server/lib/thread-debug-store.spec.ts +439 -0
  1453. package/src/server/lib/thread-debug-store.ts +1170 -0
  1454. package/src/server/lib/thread-link-preview.spec.ts +127 -0
  1455. package/src/server/lib/thread-link-preview.ts +32 -0
  1456. package/src/server/lib/usage-metrics-store.spec.ts +240 -0
  1457. package/src/server/lib/usage-metrics-store.ts +879 -0
  1458. package/src/server/lib/vault-boot-resync.spec.ts +68 -0
  1459. package/src/server/lib/vault-boot-resync.ts +50 -0
  1460. package/src/server/lib/vault-store.spec.ts +541 -0
  1461. package/src/server/lib/vault-store.ts +1540 -0
  1462. package/src/server/lib/workspace-app-action-auth.spec.ts +212 -0
  1463. package/src/server/lib/workspace-app-action-auth.ts +122 -0
  1464. package/src/server/lib/workspace-app-chat-proxy.spec.ts +322 -0
  1465. package/src/server/lib/workspace-app-chat-proxy.ts +389 -0
  1466. package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +227 -0
  1467. package/src/server/lib/workspace-resources-store.spec.ts +1108 -0
  1468. package/src/server/lib/workspace-resources-store.ts +1403 -0
  1469. package/src/server/plugins/agent-chat.spec.ts +43 -0
  1470. package/src/server/plugins/agent-chat.ts +99 -0
  1471. package/src/server/plugins/auth.spec.ts +45 -0
  1472. package/src/server/plugins/auth.ts +36 -0
  1473. package/src/server/plugins/core-routes.ts +29 -0
  1474. package/src/server/plugins/db.ts +20 -0
  1475. package/src/server/plugins/integrations.ts +82 -0
  1476. package/src/shared/app-roles.ts +8 -0
  1477. package/src/shared/chat-first-pane.ts +7 -0
  1478. package/src/shared/feature-flags.ts +20 -0
  1479. package/src/shared/workspace-app-chat.ts +45 -0
  1480. package/src/shared/workspace-sso.ts +173 -0
  1481. package/src/styles/dispatch-css.spec.ts +87 -0
  1482. package/src/styles/dispatch.css +146 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-agents-panel.js","sourceRoot":"","sources":["../../src/components/simple-agents-panel.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n navigateWithAgentChatViewTransition,\n sendToAgentChat,\n} from \"@agent-native/core/client/agent-chat\";\nimport {\n useActionMutation,\n useActionQuery,\n} from \"@agent-native/core/client/hooks\";\nimport { parseCustomAgentProfile } from \"@agent-native/core/resources/metadata\";\nimport {\n IconAdjustmentsHorizontal,\n IconChevronDown,\n IconDotsVertical,\n IconEdit,\n IconFileImport,\n IconFolder,\n IconLayoutGrid,\n IconMessageCircle,\n IconPlugConnected,\n IconPlus,\n IconTrash,\n IconUpload,\n} from \"@tabler/icons-react\";\nimport {\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type ReactNode,\n} from \"react\";\nimport { useNavigate } from \"react-router\";\nimport { toast } from \"sonner\";\n\nimport {\n buildSimpleAgentContent,\n slugifyAgentName,\n} from \"../lib/simple-agent-profile.js\";\nimport { ActionQueryError } from \"./action-query-error\";\nimport { AppIcon } from \"./app-icon\";\nimport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"./ui/alert-dialog\";\nimport { Badge } from \"./ui/badge\";\nimport { Button } from \"./ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"./ui/collapsible\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"./ui/dialog\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\nimport { Input } from \"./ui/input\";\nimport { Label } from \"./ui/label\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./ui/select\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"./ui/tabs\";\nimport { Textarea } from \"./ui/textarea\";\n\ninterface WorkspaceAgentResource {\n id: string;\n name: string;\n description: string | null;\n path: string;\n content: string;\n scope: \"all\" | \"selected\";\n updatedAt: number;\n}\n\ninterface AgentPackFileResource extends WorkspaceAgentResource {\n kind: \"agent-file\" | \"skill\";\n}\n\ninterface AgentPackResponse {\n profile: WorkspaceAgentResource;\n root: string;\n files: AgentPackFileResource[];\n}\n\ninterface AgentPackFileInput {\n path: string;\n content: string;\n}\n\nconst AGENT_ICON_KEYS = [\n \"brain\",\n \"users\",\n \"filetext\",\n \"chartbar\",\n \"route\",\n \"listcheck\",\n \"code\",\n \"messagecircle\",\n] as const;\n\nfunction agentIconKey(resource: Pick<WorkspaceAgentResource, \"id\" | \"name\">) {\n let hash = 0;\n for (const character of `${resource.id}:${resource.name}`) {\n hash = (hash * 31 + character.charCodeAt(0)) | 0;\n }\n return AGENT_ICON_KEYS[Math.abs(hash) % AGENT_ICON_KEYS.length];\n}\n\nexport function isPendingWorkspaceResourceApproval(result: unknown) {\n if (!result || typeof result !== \"object\") return false;\n const mutation = result as { status?: unknown; changeType?: unknown };\n return (\n mutation.status === \"pending\" &&\n typeof mutation.changeType === \"string\" &&\n mutation.changeType.startsWith(\"workspace-resource.\")\n );\n}\n\nexport function handleAgentPackMutationSuccess(\n result: unknown,\n options: {\n appliedMessage: string;\n approvalMessage: string;\n onApplied: () => void;\n notify?: (message: string) => void;\n },\n) {\n const notify = options.notify || ((message) => toast.success(message));\n if (isPendingWorkspaceResourceApproval(result)) {\n notify(options.approvalMessage);\n return;\n }\n notify(options.appliedMessage);\n options.onApplied();\n}\n\ninterface AgentEditorProps {\n resource?: WorkspaceAgentResource;\n trigger?: ReactNode;\n onSaved?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction profileFields(resource?: WorkspaceAgentResource) {\n if (!resource) {\n return {\n name: \"\",\n description: \"\",\n instructions: \"# Role\\n\\nDescribe how this agent should work.\\n\",\n model: \"inherit\",\n tools: \"inherit\",\n scope: \"all\" as const,\n };\n }\n\n const profile = parseCustomAgentProfile(resource.content, resource.path);\n return {\n name: profile?.name || resource.name,\n description: profile?.description || resource.description || \"\",\n instructions: profile?.instructions || resource.content,\n model: profile?.model || \"inherit\",\n tools: profile?.tools || \"inherit\",\n scope: resource.scope,\n };\n}\n\nfunction AgentEditorDialog({\n resource,\n trigger,\n onSaved,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n}: AgentEditorProps) {\n const isEditing = Boolean(resource);\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = controlledOnOpenChange ?? setUncontrolledOpen;\n const [name, setName] = useState(\"\");\n const [description, setDescription] = useState(\"\");\n const [instructions, setInstructions] = useState(\"\");\n const [model, setModel] = useState(\"inherit\");\n const [tools, setTools] = useState(\"inherit\");\n const [scope, setScope] = useState<\"all\" | \"selected\">(\"all\");\n const [advancedOpen, setAdvancedOpen] = useState(false);\n\n useEffect(() => {\n if (!open) return;\n const fields = profileFields(resource);\n setName(fields.name);\n setDescription(fields.description);\n setInstructions(fields.instructions);\n setModel(fields.model);\n setTools(fields.tools);\n setScope(fields.scope);\n setAdvancedOpen(fields.model !== \"inherit\" || fields.tools !== \"inherit\");\n }, [open, resource]);\n\n const create = useActionMutation(\"create-workspace-resource\", {\n onSuccess: () => {\n toast.success(\"Agent created\");\n setOpen(false);\n onSaved?.();\n },\n onError: (error) => toast.error(error.message),\n });\n const update = useActionMutation(\"update-workspace-resource\", {\n onSuccess: () => {\n toast.success(\"Agent updated\");\n setOpen(false);\n onSaved?.();\n },\n onError: (error) => toast.error(error.message),\n });\n\n const pending = create.isPending || update.isPending;\n const canSave = Boolean(name.trim() && instructions.trim() && !pending);\n\n function save() {\n const content = buildSimpleAgentContent({\n name,\n description,\n model,\n tools,\n instructions,\n });\n if (resource) {\n update.mutate({\n id: resource.id,\n name: name.trim(),\n description: description.trim(),\n content,\n scope,\n });\n return;\n }\n create.mutate({\n kind: \"agent\",\n name: name.trim(),\n description: description.trim() || undefined,\n path: `agents/${slugifyAgentName(name)}.md`,\n content,\n scope,\n });\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n {trigger ? (\n <DialogTrigger asChild>{trigger}</DialogTrigger>\n ) : controlledOpen === undefined ? (\n <DialogTrigger asChild>\n <Button size=\"sm\">\n <IconPlus size={16} />\n Create agent\n </Button>\n </DialogTrigger>\n ) : null}\n <DialogContent className=\"max-w-2xl\">\n <DialogHeader>\n <DialogTitle>\n {isEditing ? \"Manage agent\" : \"Create agent\"}\n </DialogTitle>\n <DialogDescription className=\"sr-only\">\n {isEditing\n ? \"Update this reusable agent profile.\"\n : \"Create a reusable agent profile.\"}\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 py-2\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-name\">Name</Label>\n <Input\n id=\"simple-agent-name\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n placeholder=\"User Research\"\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-scope\">Availability</Label>\n <Select\n value={scope}\n onValueChange={(value: \"all\" | \"selected\") => setScope(value)}\n >\n <SelectTrigger id=\"simple-agent-scope\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All apps</SelectItem>\n <SelectItem value=\"selected\">Selected apps</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-description\">Description</Label>\n <Input\n id=\"simple-agent-description\"\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n placeholder=\"Synthesizes user research into clear insights\"\n />\n </div>\n <Collapsible open={advancedOpen} onOpenChange={setAdvancedOpen}>\n <CollapsibleTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"group -ml-2 gap-1.5 text-muted-foreground\"\n >\n <IconAdjustmentsHorizontal size={15} />\n Advanced\n <IconChevronDown\n className=\"transition-transform group-data-[state=open]:rotate-180\"\n size={15}\n />\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-3\">\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-model\">Model</Label>\n <Input\n id=\"simple-agent-model\"\n value={model}\n onChange={(event) => setModel(event.target.value)}\n placeholder=\"inherit\"\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-tools\">Tools</Label>\n <Input\n id=\"simple-agent-tools\"\n value={tools}\n onChange={(event) => setTools(event.target.value)}\n placeholder=\"inherit\"\n />\n </div>\n </div>\n </CollapsibleContent>\n </Collapsible>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"simple-agent-instructions\">Instructions</Label>\n <Textarea\n id=\"simple-agent-instructions\"\n value={instructions}\n onChange={(event) => setInstructions(event.target.value)}\n rows={12}\n className=\"font-mono text-sm\"\n placeholder=\"# Role\\n\\nDescribe how this agent should work.\"\n />\n </div>\n </div>\n <DialogFooter>\n <Button onClick={save} disabled={!canSave}>\n {pending\n ? \"Saving...\"\n : isEditing\n ? \"Save changes\"\n : \"Create agent\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction AgentPackDialog({\n resource,\n onChanged,\n trigger,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n}: {\n resource: WorkspaceAgentResource;\n onChanged?: () => void;\n trigger?: ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = controlledOnOpenChange ?? setUncontrolledOpen;\n const [selectedId, setSelectedId] = useState(resource.id);\n const [content, setContent] = useState(resource.content);\n const [addOpen, setAddOpen] = useState(false);\n const [newPath, setNewPath] = useState(\"\");\n const [newKind, setNewKind] = useState<\"agent-file\" | \"skill\">(\"agent-file\");\n const [newContent, setNewContent] = useState(\"\");\n const query = useActionQuery<AgentPackResponse>(\n \"list-agent-pack\",\n { agentId: resource.id },\n { enabled: open },\n );\n const update = useActionMutation(\"update-workspace-resource\", {\n onSuccess: (result) => {\n handleAgentPackMutationSuccess(result, {\n appliedMessage: \"Pack file updated\",\n approvalMessage: \"Pack file update queued for approval\",\n onApplied: () => {\n void query.refetch();\n onChanged?.();\n },\n });\n },\n onError: (error) => toast.error(error.message),\n });\n const create = useActionMutation(\"create-workspace-resource\", {\n onSuccess: (result) => {\n handleAgentPackMutationSuccess(result, {\n appliedMessage: \"Pack file added\",\n approvalMessage: \"Pack file addition queued for approval\",\n onApplied: () => {\n setAddOpen(false);\n setNewPath(\"\");\n setNewContent(\"\");\n void query.refetch();\n onChanged?.();\n },\n });\n },\n onError: (error) => toast.error(error.message),\n });\n const remove = useActionMutation(\"delete-workspace-resource\", {\n onSuccess: () => {\n toast.success(\"Pack file removed\");\n setSelectedId(resource.id);\n void query.refetch();\n onChanged?.();\n },\n onError: (error) => toast.error(error.message),\n });\n\n const files = query.data\n ? [{ ...query.data.profile, kind: \"agent\" as const }, ...query.data.files]\n : [];\n const selected = files.find((file) => file.id === selectedId) ?? files[0];\n\n useEffect(() => {\n if (!open) return;\n setSelectedId(resource.id);\n }, [open, resource.id]);\n\n useEffect(() => {\n if (!selected) return;\n setSelectedId(selected.id);\n setContent(selected.content);\n }, [selected?.id, selected?.content]);\n\n function addFile() {\n const relativePath = newPath.trim().replaceAll(\"\\\\\", \"/\");\n if (\n !relativePath ||\n relativePath.startsWith(\"/\") ||\n relativePath.includes(\"..\") ||\n relativePath.split(\"/\").some((part) => !part || part === \".\")\n ) {\n toast.error(\"Use a relative pack path without ..\");\n return;\n }\n const packPath =\n newKind === \"skill\" && !relativePath.startsWith(\"skills/\")\n ? `skills/${relativePath}`\n : relativePath;\n const name = packPath.split(\"/\").pop() || packPath;\n create.mutate({\n kind: newKind,\n name,\n path: `${query.data?.root || `agents/${slugifyAgentName(resource.name)}`}/${packPath}`,\n content: newContent,\n scope: resource.scope,\n });\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n if (!nextOpen) setAddOpen(false);\n }}\n >\n {trigger ? (\n <DialogTrigger asChild>{trigger}</DialogTrigger>\n ) : controlledOpen === undefined ? (\n <DialogTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\">\n <IconFolder size={15} />\n Pack\n </Button>\n </DialogTrigger>\n ) : null}\n <DialogContent className=\"max-w-4xl\">\n <DialogHeader>\n <DialogTitle>Agent pack</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Edit the profile, reference files, context, and skills that belong\n to this agent.\n </DialogDescription>\n </DialogHeader>\n <div className=\"grid min-h-0 gap-4 md:grid-cols-[220px_minmax(0,1fr)]\">\n <div className=\"flex min-w-0 flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">\n Files\n </span>\n <Dialog open={addOpen} onOpenChange={setAddOpen}>\n <DialogTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <IconPlus size={14} />\n Add\n </Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Add pack file</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Add a text reference or agent-owned skill to this pack.\n </DialogDescription>\n </DialogHeader>\n <div className=\"flex flex-col gap-4 py-2\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"agent-pack-file-path\">Path</Label>\n <Input\n id=\"agent-pack-file-path\"\n value={newPath}\n onChange={(event) => setNewPath(event.target.value)}\n placeholder=\"context/brief.md\"\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"agent-pack-file-kind\">Type</Label>\n <Select\n value={newKind}\n onValueChange={(value: \"agent-file\" | \"skill\") =>\n setNewKind(value)\n }\n >\n <SelectTrigger id=\"agent-pack-file-kind\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"agent-file\">\n Reference file\n </SelectItem>\n <SelectItem value=\"skill\">Skill</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"agent-pack-file-content\">Content</Label>\n <Textarea\n id=\"agent-pack-file-content\"\n value={newContent}\n onChange={(event) => setNewContent(event.target.value)}\n rows={8}\n className=\"font-mono text-sm\"\n />\n </div>\n </div>\n <DialogFooter>\n <Button\n onClick={addFile}\n disabled={!newPath.trim() || create.isPending}\n >\n {create.isPending ? \"Adding...\" : \"Add file\"}\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </div>\n {query.isLoading ? (\n <Skeleton className=\"h-24 w-full\" />\n ) : (\n <div className=\"flex flex-col gap-1\">\n {files.map((file) => (\n <Button\n key={file.id}\n type=\"button\"\n variant={selected?.id === file.id ? \"secondary\" : \"ghost\"}\n className=\"h-auto w-full justify-start px-2 py-2 text-left\"\n onClick={() => setSelectedId(file.id)}\n >\n <span className=\"min-w-0 truncate text-xs\">\n {file.path.replace(`${query.data?.root || \"\"}/`, \"\")}\n </span>\n </Button>\n ))}\n </div>\n )}\n </div>\n <div className=\"flex min-w-0 flex-col gap-3\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium\">\n {selected?.path || \"Select a file\"}\n </div>\n {selected && selected.kind !== \"agent\" ? (\n <Badge variant=\"outline\">\n {selected.kind === \"skill\" ? \"Skill\" : \"Reference\"}\n </Badge>\n ) : null}\n </div>\n <div className=\"flex items-center gap-1\">\n {selected && selected.kind !== \"agent\" ? (\n <AlertDialog>\n <AlertDialogTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\">\n <IconTrash size={15} />\n Remove\n </Button>\n </AlertDialogTrigger>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>\n Remove this pack file?\n </AlertDialogTitle>\n <AlertDialogDescription>\n The file will no longer be available to this agent.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => remove.mutate({ id: selected.id })}\n disabled={remove.isPending}\n >\n Remove\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n ) : null}\n <Button\n size=\"sm\"\n onClick={() =>\n selected && update.mutate({ id: selected.id, content })\n }\n disabled={\n !selected ||\n update.isPending ||\n content === selected.content\n }\n >\n {update.isPending ? \"Saving...\" : \"Save file\"}\n </Button>\n </div>\n </div>\n <Textarea\n value={content}\n onChange={(event) => setContent(event.target.value)}\n disabled={!selected}\n rows={18}\n className=\"min-h-[360px] font-mono text-sm\"\n />\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction ImportAgentDialog({ onImported }: { onImported?: () => void }) {\n const [open, setOpen] = useState(false);\n const [mode, setMode] = useState<\"file\" | \"folder\" | \"endpoint\">(\"file\");\n const [source, setSource] = useState(\"\");\n const [fileName, setFileName] = useState(\"\");\n const [scope, setScope] = useState<\"all\" | \"selected\">(\"all\");\n const [url, setUrl] = useState(\"\");\n const [endpointName, setEndpointName] = useState(\"\");\n const [endpointDescription, setEndpointDescription] = useState(\"\");\n const [packFiles, setPackFiles] = useState<AgentPackFileInput[]>([]);\n const [packName, setPackName] = useState(\"\");\n const [packWarnings, setPackWarnings] = useState<string[]>([]);\n const fileRef = useRef<HTMLInputElement>(null);\n const folderRef = useRef<HTMLInputElement>(null);\n\n const importAgent = useActionMutation(\"import-agent\", {\n onSuccess: (result: { status: string; warnings?: string[] }) => {\n toast.success(\n result.status === \"unchanged\"\n ? \"Agent already imported\"\n : \"Agent imported\",\n );\n if (result.warnings?.length) {\n toast.info(result.warnings.join(\" \"));\n }\n setOpen(false);\n onImported?.();\n },\n onError: (error) => toast.error(error.message),\n });\n const connect = useActionMutation(\"connect-external-agent\", {\n onSuccess: () => {\n toast.success(\"Agent connected\");\n setOpen(false);\n onImported?.();\n },\n onError: (error) => toast.error(error.message),\n });\n const importPack = useActionMutation(\"import-agent-pack\", {\n onSuccess: (result: { status: string; warnings?: string[] }) => {\n toast.success(\n result.status === \"pending-approval\"\n ? \"Pack sent for approval\"\n : result.status === \"unchanged\"\n ? \"Agent pack already imported\"\n : \"Agent pack imported\",\n );\n if (result.warnings?.length) toast.info(result.warnings.join(\" \"));\n setOpen(false);\n onImported?.();\n },\n onError: (error) => toast.error(error.message),\n });\n\n useEffect(() => {\n if (!folderRef.current) return;\n folderRef.current.setAttribute(\"webkitdirectory\", \"\");\n folderRef.current.setAttribute(\"directory\", \"\");\n }, [mode, open]);\n\n function reset() {\n setMode(\"file\");\n setSource(\"\");\n setFileName(\"\");\n setScope(\"all\");\n setUrl(\"\");\n setEndpointName(\"\");\n setEndpointDescription(\"\");\n setPackFiles([]);\n setPackName(\"\");\n setPackWarnings([]);\n }\n\n async function handleFile(event: ChangeEvent<HTMLInputElement>) {\n const file = event.target.files?.[0];\n if (!file) return;\n setFileName(file.name);\n setSource(await file.text());\n }\n\n async function handleFolder(event: ChangeEvent<HTMLInputElement>) {\n const selectedFiles = Array.from(event.target.files ?? []);\n if (selectedFiles.length === 0) return;\n const warnings: string[] = [];\n const textExtensions =\n /\\.(md|markdown|txt|json|yaml|yml|csv|html|xml|toml|ts|tsx|js|mjs|py|sh)$/i;\n const pack = await Promise.all(\n selectedFiles.map(async (file) => {\n const path =\n (file as File & { webkitRelativePath?: string }).webkitRelativePath ||\n file.name;\n if (!textExtensions.test(path)) {\n warnings.push(`Skipped non-text file: ${path}`);\n return null;\n }\n return { path, content: await file.text() };\n }),\n );\n const files = pack.filter((file): file is AgentPackFileInput =>\n Boolean(file),\n );\n setPackFiles(files);\n setPackName(files[0]?.path.split(\"/\")[0] || \"Selected folder\");\n setPackWarnings(warnings);\n }\n\n return (\n <Dialog\n open={open}\n onOpenChange={(nextOpen) => {\n setOpen(nextOpen);\n if (!nextOpen) reset();\n }}\n >\n <DialogTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <IconFileImport size={16} />\n Import or connect\n </Button>\n </DialogTrigger>\n <DialogContent className=\"max-w-2xl\">\n <DialogHeader>\n <DialogTitle>Import an agent</DialogTitle>\n <DialogDescription className=\"sr-only\">\n Import a Claude or JSON agent definition, or connect an external\n agent endpoint.\n </DialogDescription>\n </DialogHeader>\n <Tabs\n value={mode}\n onValueChange={(value) =>\n setMode(value as \"file\" | \"folder\" | \"endpoint\")\n }\n >\n <TabsList className=\"w-full justify-start\">\n <TabsTrigger value=\"file\">Agent file</TabsTrigger>\n <TabsTrigger value=\"folder\">Agent folder</TabsTrigger>\n <TabsTrigger value=\"endpoint\">Connect endpoint</TabsTrigger>\n </TabsList>\n <TabsContent value=\"file\" className=\"flex flex-col gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => fileRef.current?.click()}\n >\n <IconUpload size={16} />\n Choose file\n </Button>\n <input\n ref={fileRef}\n type=\"file\"\n accept=\".md,.markdown,.json,.txt\"\n className=\"hidden\"\n onChange={(event) => void handleFile(event)}\n />\n <span className=\"text-xs text-muted-foreground\">\n {fileName || \"Claude .md or JSON agent definition\"}\n </span>\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"import-agent-source\">Definition</Label>\n <Textarea\n id=\"import-agent-source\"\n value={source}\n onChange={(event) => setSource(event.target.value)}\n rows={12}\n className=\"font-mono text-sm\"\n placeholder=\"Paste a Claude-style agent file or a JSON definition\"\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"import-agent-scope\">Availability</Label>\n <Select\n value={scope}\n onValueChange={(value: \"all\" | \"selected\") => setScope(value)}\n >\n <SelectTrigger id=\"import-agent-scope\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All apps</SelectItem>\n <SelectItem value=\"selected\">Selected apps</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <DialogFooter>\n <Button\n onClick={() =>\n importAgent.mutate({\n source,\n fileName: fileName || undefined,\n scope,\n })\n }\n disabled={!source.trim() || importAgent.isPending}\n >\n {importAgent.isPending ? \"Importing...\" : \"Import agent\"}\n </Button>\n </DialogFooter>\n </TabsContent>\n <TabsContent value=\"folder\" className=\"flex flex-col gap-4 py-4\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => folderRef.current?.click()}\n >\n <IconFolder size={16} />\n Choose folder\n </Button>\n <input\n ref={folderRef}\n type=\"file\"\n multiple\n className=\"hidden\"\n onChange={(event) => void handleFolder(event)}\n />\n <span className=\"text-xs text-muted-foreground\">\n {packName\n ? `${packName} · ${packFiles.length} files`\n : \"Claude Project or Cowork-style folder\"}\n </span>\n </div>\n {packWarnings.length > 0 ? (\n <div className=\"rounded-lg border border-amber-500/30 bg-amber-500/5 px-3 py-2 text-xs text-amber-800 dark:text-amber-200\">\n {packWarnings.join(\" \")}\n </div>\n ) : null}\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"import-agent-pack-scope\">Availability</Label>\n <Select\n value={scope}\n onValueChange={(value: \"all\" | \"selected\") => setScope(value)}\n >\n <SelectTrigger id=\"import-agent-pack-scope\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All apps</SelectItem>\n <SelectItem value=\"selected\">Selected apps</SelectItem>\n </SelectContent>\n </Select>\n </div>\n <DialogFooter>\n <Button\n onClick={() => importPack.mutate({ files: packFiles, scope })}\n disabled={packFiles.length === 0 || importPack.isPending}\n >\n {importPack.isPending ? \"Importing...\" : \"Import agent pack\"}\n </Button>\n </DialogFooter>\n </TabsContent>\n <TabsContent value=\"endpoint\" className=\"flex flex-col gap-4 py-4\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"external-agent-url\">Endpoint URL</Label>\n <Input\n id=\"external-agent-url\"\n value={url}\n onChange={(event) => setUrl(event.target.value)}\n placeholder=\"https://agent.example.com\"\n />\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2\">\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"external-agent-name\">Name</Label>\n <Input\n id=\"external-agent-name\"\n value={endpointName}\n onChange={(event) => setEndpointName(event.target.value)}\n placeholder=\"Research partner\"\n />\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label>Availability</Label>\n <div className=\"flex h-10 items-center\">\n <Badge variant=\"secondary\">Workspace</Badge>\n </div>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n <Label htmlFor=\"external-agent-description\">Description</Label>\n <Input\n id=\"external-agent-description\"\n value={endpointDescription}\n onChange={(event) => setEndpointDescription(event.target.value)}\n placeholder=\"Optional\"\n />\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Dispatch stores the public endpoint only. Authenticate it after\n connecting.\n </p>\n <DialogFooter>\n <Button\n onClick={() =>\n connect.mutate({\n url,\n name: endpointName || undefined,\n description: endpointDescription || undefined,\n scope: \"shared\",\n })\n }\n disabled={!url.trim() || connect.isPending}\n >\n <IconPlugConnected size={16} />\n {connect.isPending ? \"Connecting...\" : \"Connect agent\"}\n </Button>\n </DialogFooter>\n </TabsContent>\n </Tabs>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction DeleteAgentButton({\n resource,\n onDeleted,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n}: {\n resource: WorkspaceAgentResource;\n onDeleted?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(false);\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = controlledOnOpenChange ?? setUncontrolledOpen;\n const remove = useActionMutation(\"delete-workspace-resource\", {\n onSuccess: () => {\n toast.success(\"Agent removed\");\n onDeleted?.();\n },\n onError: (error) => toast.error(error.message),\n });\n\n return (\n <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogContent>\n <AlertDialogHeader>\n <AlertDialogTitle>Remove {resource.name}?</AlertDialogTitle>\n <AlertDialogDescription>\n This removes the reusable profile from the workspace apps.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <AlertDialogFooter>\n <AlertDialogCancel>Cancel</AlertDialogCancel>\n <AlertDialogAction\n onClick={() => remove.mutate({ id: resource.id })}\n disabled={remove.isPending}\n >\n Remove\n </AlertDialogAction>\n </AlertDialogFooter>\n </AlertDialogContent>\n </AlertDialog>\n );\n}\n\nfunction AgentRow({\n resource,\n onDeleted,\n onSaved,\n}: {\n resource: WorkspaceAgentResource;\n onDeleted?: () => void;\n onSaved?: () => void;\n}) {\n const navigate = useNavigate();\n const [packOpen, setPackOpen] = useState(false);\n const [editorOpen, setEditorOpen] = useState(false);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const packQuery = useActionQuery<AgentPackResponse>(\n \"list-agent-pack\",\n { agentId: resource.id },\n { enabled: false },\n );\n const promote = useActionMutation<\n AgentAppCreationResult,\n AgentAppCreationInput\n >(\"start-workspace-app-creation\", {\n onSuccess: (result) => {\n if (result.mode === \"local-agent\") {\n sendToAgentChat({\n message: result.prompt ?? result.message,\n submit: true,\n type: \"code\",\n newTab: true,\n reuseEmptyTab: true,\n });\n toast.success(\"Sent to the local agent\");\n return;\n }\n if (result.mode === \"builder\") {\n toast.success(\"App build started\", {\n description: result.message,\n action: result.url\n ? {\n label: \"Open in Builder\",\n onClick: () =>\n window.open(result.url, \"_blank\", \"noopener,noreferrer\"),\n }\n : undefined,\n });\n return;\n }\n toast.error(result.message);\n },\n onError: (error) => toast.error(error.message),\n });\n\n function chat() {\n navigateWithAgentChatViewTransition(\n navigate,\n `/chat?agent=${encodeURIComponent(resource.path)}`,\n );\n }\n\n async function buildApp() {\n const pack = await packQuery.refetch();\n if (pack.error || !pack.data) {\n toast.error(pack.error?.message || \"Could not load the agent pack\");\n return;\n }\n promote.mutate({\n appId: slugifyAgentName(resource.name),\n description: resource.description || undefined,\n prompt: `Turn the \"${resource.name}\" workspace agent into a focused workspace app. Preserve its role and instructions, make the app its usable face, and keep the original reusable agent profile available.`,\n resourceIds: [resource.id, ...pack.data.files.map((file) => file.id)],\n });\n }\n\n return (\n <div className=\"flex min-w-0 items-start gap-3 rounded-2xl border bg-card px-4 py-4\">\n <AppIcon\n id={resource.id}\n name={resource.name}\n icon={agentIconKey(resource)}\n size=\"sm\"\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-sm font-medium text-foreground\">\n {resource.name}\n </span>\n <Badge variant=\"outline\">\n {resource.scope === \"all\" ? \"All apps\" : \"Selected apps\"}\n </Badge>\n </div>\n {resource.description ? (\n <div className=\"mt-1 text-sm text-muted-foreground\">\n {resource.description}\n </div>\n ) : null}\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={chat}\n aria-label={`Chat with ${resource.name}`}\n >\n <IconMessageCircle size={15} />\n Chat\n </Button>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={`More actions for ${resource.name}`}\n title=\"More actions\"\n >\n <IconDotsVertical size={16} />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-48\">\n <DropdownMenuItem\n onSelect={() => {\n void buildApp();\n }}\n disabled={promote.isPending}\n >\n <IconLayoutGrid className=\"me-2 size-4\" />\n {promote.isPending ? \"Starting...\" : \"Build app\"}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => setPackOpen(true)}>\n <IconFolder className=\"me-2 size-4\" />\n Manage files\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => setEditorOpen(true)}>\n <IconEdit className=\"me-2 size-4\" />\n Edit\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n className=\"text-destructive focus:text-destructive\"\n onSelect={() => setDeleteOpen(true)}\n >\n <IconTrash className=\"me-2 size-4\" />\n Remove\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <AgentPackDialog\n resource={resource}\n onChanged={onSaved}\n open={packOpen}\n onOpenChange={setPackOpen}\n />\n <AgentEditorDialog\n resource={resource}\n onSaved={onSaved}\n open={editorOpen}\n onOpenChange={setEditorOpen}\n />\n <DeleteAgentButton\n resource={resource}\n onDeleted={onDeleted}\n open={deleteOpen}\n onOpenChange={setDeleteOpen}\n />\n </div>\n </div>\n );\n}\n\ninterface AgentAppCreationInput {\n appId: string;\n description?: string;\n prompt: string;\n resourceIds: string[];\n}\n\ninterface AgentAppCreationResult {\n mode: \"builder\" | \"local-agent\" | \"builder-unavailable\" | \"coming-soon\";\n message: string;\n prompt?: string;\n url?: string;\n}\n\nexport function SimpleAgentsPanel({\n title,\n}: {\n title?: ReactNode;\n} = {}) {\n const query = useActionQuery<WorkspaceAgentResource[]>(\n \"list-workspace-resources\",\n { kind: \"agent\" },\n );\n const agents = query.data ?? [];\n const refreshAgents = () => void query.refetch();\n const importAction = <ImportAgentDialog onImported={refreshAgents} />;\n\n if (query.isError) {\n return (\n <ActionQueryError\n error={query.error}\n onRetry={() => void query.refetch()}\n />\n );\n }\n\n return (\n <section className=\"flex flex-col gap-4\">\n {title || agents.length > 0 ? (\n <div\n className={`flex flex-wrap items-center gap-3 ${title ? \"justify-between\" : \"justify-end\"}`}\n >\n {title ? (\n <h2 className=\"text-base font-medium text-foreground\">{title}</h2>\n ) : null}\n {agents.length > 0 ? (\n <div className=\"flex flex-wrap items-center justify-end gap-2\">\n {importAction}\n <AgentEditorDialog onSaved={refreshAgents} />\n </div>\n ) : null}\n </div>\n ) : null}\n {query.isLoading && agents.length === 0 ? (\n <div className=\"grid gap-3 md:grid-cols-2\">\n {[0, 1, 2].map((item) => (\n <div key={item} className=\"rounded-2xl border bg-card px-4 py-4\">\n <Skeleton className=\"h-4 w-1/3\" />\n <Skeleton className=\"mt-2 h-3 w-2/3\" />\n </div>\n ))}\n </div>\n ) : agents.length > 0 ? (\n <div className=\"grid gap-3 md:grid-cols-2\">\n {agents.map((agent) => (\n <AgentRow\n key={agent.id}\n resource={agent}\n onDeleted={() => void query.refetch()}\n onSaved={() => void query.refetch()}\n />\n ))}\n </div>\n ) : (\n <div className=\"rounded-2xl border border-dashed bg-card px-4 py-12 text-center\">\n <div className=\"text-sm font-medium text-foreground\">\n No agents yet\n </div>\n <div className=\"mt-4 flex flex-wrap justify-center gap-2\">\n <AgentEditorDialog\n onSaved={refreshAgents}\n trigger={\n <Button size=\"sm\">\n <IconPlus size={16} />\n Create an agent\n </Button>\n }\n />\n {importAction}\n </div>\n </div>\n )}\n </section>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function TaskQueueHealth(): import("node_modules/@types/react").JSX.Element;
2
+ //# sourceMappingURL=task-queue-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-queue-health.d.ts","sourceRoot":"","sources":["../../src/components/task-queue-health.tsx"],"names":[],"mappings":"AAiEA,wBAAgB,eAAe,oDA6G9B"}
@@ -0,0 +1,58 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useChangeVersions } from "@agent-native/core/client/hooks";
3
+ import { useT } from "@agent-native/core/client/i18n";
4
+ import { IconAlertTriangle, IconPlayerPlay } from "@tabler/icons-react";
5
+ import { useQuery } from "@tanstack/react-query";
6
+ import { formatQueueAgeSeconds, getDispatchTaskQueueStats, ZERO_TASK_QUEUE_STATS, } from "../lib/task-queue.js";
7
+ import { cn } from "../lib/utils.js";
8
+ import { Skeleton } from "./ui/skeleton.js";
9
+ const TASK_QUEUE_QUERY_KEY = ["dispatch-task-queue"];
10
+ function formatNumber(value) {
11
+ return new Intl.NumberFormat(undefined, {
12
+ notation: value >= 10_000 ? "compact" : "standard",
13
+ }).format(value);
14
+ }
15
+ function useTaskQueueStats() {
16
+ const version = useChangeVersions(["action", "screen-refresh"]);
17
+ return useQuery({
18
+ queryKey: [...TASK_QUEUE_QUERY_KEY, version],
19
+ queryFn: getDispatchTaskQueueStats,
20
+ placeholderData: (prev) => prev,
21
+ // Queue work can finish outside the action transport, so retain a bounded
22
+ // fallback only here. Idle workspaces back off aggressively; active queues
23
+ // keep the existing monitoring cadence.
24
+ refetchInterval: (query) => {
25
+ const stats = query.state.data;
26
+ return stats && (stats.pending > 0 || stats.processing > 0)
27
+ ? 15_000
28
+ : 300_000;
29
+ },
30
+ staleTime: 5_000,
31
+ });
32
+ }
33
+ function QueueCell({ label, value, danger, }) {
34
+ return (_jsxs("div", { className: "rounded-md border bg-background px-2 py-2", children: [_jsx("div", { className: cn("text-lg font-semibold text-foreground", danger && "text-destructive"), children: formatNumber(value) }), _jsx("div", { className: "truncate text-[11px] text-muted-foreground", children: label })] }));
35
+ }
36
+ export function TaskQueueHealth() {
37
+ const t = useT();
38
+ const query = useTaskQueueStats();
39
+ const taskQueue = query.data ?? ZERO_TASK_QUEUE_STATS;
40
+ const hasFailure = taskQueue.failed_last_hour > 0;
41
+ const hasBacklog = taskQueue.pending > 5 || taskQueue.oldest_pending_age_seconds > 300;
42
+ const oldestAge = formatQueueAgeSeconds(taskQueue.oldest_pending_age_seconds);
43
+ const oldestAgeLabel = oldestAge === "none" ? t("dispatch.pages.queueAgeNone") : oldestAge;
44
+ return (_jsxs("section", { className: "rounded-lg bg-card p-4", children: [_jsx("div", { className: "flex min-w-0 items-center justify-between gap-3", children: _jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(IconPlayerPlay, { size: 16, className: "shrink-0 text-muted-foreground" }), _jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "truncate text-sm font-semibold text-foreground", children: t("dispatch.pages.deliveryQueue") }), _jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: hasFailure
45
+ ? t("dispatch.pages.failedLastHour", {
46
+ count: taskQueue.failed_last_hour,
47
+ })
48
+ : t("dispatch.pages.processingCount", {
49
+ count: taskQueue.processing,
50
+ }) })] })] }) }), query.isLoading && !query.data ? (_jsx("div", { className: "mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4", children: Array.from({ length: 4 }).map((_, index) => (_jsx(Skeleton, { className: "h-14 rounded-md" }, index))) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4", children: [_jsx(QueueCell, { label: t("dispatch.pages.queued"), value: taskQueue.pending }), _jsx(QueueCell, { label: t("dispatch.pages.active"), value: taskQueue.processing }), _jsx(QueueCell, { label: t("dispatch.pages.done1h"), value: taskQueue.completed_last_hour }), _jsx(QueueCell, { label: t("dispatch.pages.failed1h"), value: taskQueue.failed_last_hour, danger: hasFailure })] }), _jsx("div", { className: cn("mt-3 rounded-md border px-3 py-2 text-xs", hasFailure
51
+ ? "border-destructive/30 bg-destructive/5 text-destructive"
52
+ : hasBacklog
53
+ ? "border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300"
54
+ : "bg-muted/20 text-muted-foreground"), children: t("dispatch.pages.oldestQueued", { age: oldestAgeLabel }) }), hasFailure ? (_jsxs("div", { className: "mt-3 flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive", children: [_jsx(IconAlertTriangle, { size: 14, className: "mt-0.5 shrink-0" }), _jsx("span", { children: t("dispatch.pages.queueFailureHint") })] })) : null, taskQueue.recent_failures.length > 0 ? (_jsx("div", { className: "mt-3 divide-y rounded-md border", children: taskQueue.recent_failures.slice(0, 3).map((failure) => (_jsxs("div", { className: "px-3 py-2", children: [_jsxs("div", { className: "flex items-center justify-between gap-3 text-xs", children: [_jsx("span", { className: "font-medium text-foreground", children: failure.platform || t("dispatch.pages.unknownPlatform") }), _jsx("span", { className: "text-muted-foreground", children: t("dispatch.pages.attemptsCount", {
55
+ count: failure.attempts,
56
+ }) })] }), _jsx("div", { className: "mt-1 truncate text-xs text-muted-foreground", children: failure.error || t("dispatch.pages.noErrorMessage") })] }, failure.id))) })) : null] }))] }));
57
+ }
58
+ //# sourceMappingURL=task-queue-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-queue-health.js","sourceRoot":"","sources":["../../src/components/task-queue-health.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useChangeVersions } from \"@agent-native/core/client/hooks\";\nimport { useT } from \"@agent-native/core/client/i18n\";\nimport { IconAlertTriangle, IconPlayerPlay } from \"@tabler/icons-react\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nimport {\n formatQueueAgeSeconds,\n getDispatchTaskQueueStats,\n type TaskQueueStats,\n ZERO_TASK_QUEUE_STATS,\n} from \"../lib/task-queue\";\nimport { cn } from \"../lib/utils\";\nimport { Skeleton } from \"./ui/skeleton\";\n\nconst TASK_QUEUE_QUERY_KEY = [\"dispatch-task-queue\"] as const;\n\nfunction formatNumber(value: number): string {\n return new Intl.NumberFormat(undefined, {\n notation: value >= 10_000 ? \"compact\" : \"standard\",\n }).format(value);\n}\n\nfunction useTaskQueueStats() {\n const version = useChangeVersions([\"action\", \"screen-refresh\"]);\n return useQuery<TaskQueueStats>({\n queryKey: [...TASK_QUEUE_QUERY_KEY, version],\n queryFn: getDispatchTaskQueueStats,\n placeholderData: (prev) => prev,\n // Queue work can finish outside the action transport, so retain a bounded\n // fallback only here. Idle workspaces back off aggressively; active queues\n // keep the existing monitoring cadence.\n refetchInterval: (query) => {\n const stats = query.state.data;\n return stats && (stats.pending > 0 || stats.processing > 0)\n ? 15_000\n : 300_000;\n },\n staleTime: 5_000,\n });\n}\n\nfunction QueueCell({\n label,\n value,\n danger,\n}: {\n label: string;\n value: number;\n danger?: boolean;\n}) {\n return (\n <div className=\"rounded-md border bg-background px-2 py-2\">\n <div\n className={cn(\n \"text-lg font-semibold text-foreground\",\n danger && \"text-destructive\",\n )}\n >\n {formatNumber(value)}\n </div>\n <div className=\"truncate text-[11px] text-muted-foreground\">{label}</div>\n </div>\n );\n}\n\nexport function TaskQueueHealth() {\n const t = useT();\n const query = useTaskQueueStats();\n const taskQueue = query.data ?? ZERO_TASK_QUEUE_STATS;\n const hasFailure = taskQueue.failed_last_hour > 0;\n const hasBacklog =\n taskQueue.pending > 5 || taskQueue.oldest_pending_age_seconds > 300;\n const oldestAge = formatQueueAgeSeconds(taskQueue.oldest_pending_age_seconds);\n const oldestAgeLabel =\n oldestAge === \"none\" ? t(\"dispatch.pages.queueAgeNone\") : oldestAge;\n\n return (\n <section className=\"rounded-lg bg-card p-4\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <IconPlayerPlay\n size={16}\n className=\"shrink-0 text-muted-foreground\"\n />\n <div className=\"min-w-0\">\n <h2 className=\"truncate text-sm font-semibold text-foreground\">\n {t(\"dispatch.pages.deliveryQueue\")}\n </h2>\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {hasFailure\n ? t(\"dispatch.pages.failedLastHour\", {\n count: taskQueue.failed_last_hour,\n })\n : t(\"dispatch.pages.processingCount\", {\n count: taskQueue.processing,\n })}\n </p>\n </div>\n </div>\n </div>\n\n {query.isLoading && !query.data ? (\n <div className=\"mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4\">\n {Array.from({ length: 4 }).map((_, index) => (\n <Skeleton key={index} className=\"h-14 rounded-md\" />\n ))}\n </div>\n ) : (\n <>\n <div className=\"mt-3 grid grid-cols-2 gap-2 sm:grid-cols-4\">\n <QueueCell\n label={t(\"dispatch.pages.queued\")}\n value={taskQueue.pending}\n />\n <QueueCell\n label={t(\"dispatch.pages.active\")}\n value={taskQueue.processing}\n />\n <QueueCell\n label={t(\"dispatch.pages.done1h\")}\n value={taskQueue.completed_last_hour}\n />\n <QueueCell\n label={t(\"dispatch.pages.failed1h\")}\n value={taskQueue.failed_last_hour}\n danger={hasFailure}\n />\n </div>\n\n <div\n className={cn(\n \"mt-3 rounded-md border px-3 py-2 text-xs\",\n hasFailure\n ? \"border-destructive/30 bg-destructive/5 text-destructive\"\n : hasBacklog\n ? \"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300\"\n : \"bg-muted/20 text-muted-foreground\",\n )}\n >\n {t(\"dispatch.pages.oldestQueued\", { age: oldestAgeLabel })}\n </div>\n\n {hasFailure ? (\n <div className=\"mt-3 flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/5 px-3 py-2 text-xs text-destructive\">\n <IconAlertTriangle size={14} className=\"mt-0.5 shrink-0\" />\n <span>{t(\"dispatch.pages.queueFailureHint\")}</span>\n </div>\n ) : null}\n\n {taskQueue.recent_failures.length > 0 ? (\n <div className=\"mt-3 divide-y rounded-md border\">\n {taskQueue.recent_failures.slice(0, 3).map((failure) => (\n <div key={failure.id} className=\"px-3 py-2\">\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <span className=\"font-medium text-foreground\">\n {failure.platform || t(\"dispatch.pages.unknownPlatform\")}\n </span>\n <span className=\"text-muted-foreground\">\n {t(\"dispatch.pages.attemptsCount\", {\n count: failure.attempts,\n })}\n </span>\n </div>\n <div className=\"mt-1 truncate text-xs text-muted-foreground\">\n {failure.error || t(\"dispatch.pages.noErrorMessage\")}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </>\n )}\n </section>\n );\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { type ProviderMetricsResult } from "./transactional-email-metrics.js";
2
+ export interface EmailActivityEntry {
3
+ msgId: string;
4
+ toEmail: string;
5
+ fromEmail: string;
6
+ subject: string;
7
+ status: string;
8
+ opensCount: number;
9
+ clicksCount: number;
10
+ lastEventTime: string;
11
+ }
12
+ /**
13
+ * Renders one email's activity feed. Used both inline on the detail page and
14
+ * inside the list page's activity dialog, so the "unavailable" and "empty"
15
+ * states only need to be written once.
16
+ */
17
+ export declare function ActivityTable({ result, isLoading, isError, error, onRetry, }: {
18
+ result: ProviderMetricsResult<EmailActivityEntry[]> | undefined;
19
+ isLoading: boolean;
20
+ isError: boolean;
21
+ error: unknown;
22
+ onRetry: () => void;
23
+ }): import("node_modules/@types/react").JSX.Element | null;
24
+ //# sourceMappingURL=transactional-email-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-activity.d.ts","sourceRoot":"","sources":["../../src/components/transactional-email-activity.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAY3E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,GACR,EAAE;IACD,MAAM,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,CAAC,GAAG,SAAS,CAAC;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,0DAyDA"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useT } from "@agent-native/core/client/i18n";
3
+ import { IconInfoCircle } from "@tabler/icons-react";
4
+ import { ActionQueryError } from "./action-query-error.js";
5
+ import { Alert, AlertDescription, AlertTitle } from "./ui/alert.js";
6
+ import { Skeleton } from "./ui/skeleton.js";
7
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "./ui/table.js";
8
+ /**
9
+ * Renders one email's activity feed. Used both inline on the detail page and
10
+ * inside the list page's activity dialog, so the "unavailable" and "empty"
11
+ * states only need to be written once.
12
+ */
13
+ export function ActivityTable({ result, isLoading, isError, error, onRetry, }) {
14
+ const t = useT();
15
+ if (isError) {
16
+ return _jsx(ActionQueryError, { error: error, onRetry: onRetry });
17
+ }
18
+ if (isLoading) {
19
+ return _jsx(Skeleton, { className: "h-40 w-full" });
20
+ }
21
+ if (result && !result.available) {
22
+ return (_jsxs(Alert, { children: [_jsx(IconInfoCircle, { className: "size-4" }), _jsx(AlertTitle, { children: t("dispatch.transactionalEmail.activityUnavailable") }), _jsx(AlertDescription, { children: result.reason })] }));
23
+ }
24
+ if (result && result.data.length === 0) {
25
+ return (_jsx("div", { className: "rounded-xl border border-dashed px-4 py-8 text-sm text-muted-foreground", children: t("dispatch.transactionalEmail.activityEmpty") }));
26
+ }
27
+ if (!result)
28
+ return null;
29
+ return (_jsx("div", { className: "max-h-96 overflow-auto", children: _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t("dispatch.transactionalEmail.recipient") }), _jsx(TableHead, { children: t("dispatch.transactionalEmail.subject") }), _jsx(TableHead, { children: t("dispatch.transactionalEmail.status") }), _jsx(TableHead, { children: t("dispatch.transactionalEmail.opens") }), _jsx(TableHead, { children: t("dispatch.transactionalEmail.lastEvent") })] }) }), _jsx(TableBody, { children: result.data.map((entry) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "text-xs", children: entry.toEmail }), _jsx(TableCell, { className: "text-xs", children: entry.subject }), _jsx(TableCell, { className: "text-xs", children: entry.status }), _jsx(TableCell, { className: "text-xs tabular-nums", children: entry.opensCount }), _jsx(TableCell, { className: "text-xs", children: entry.lastEventTime })] }, entry.msgId))) })] }) }));
30
+ }
31
+ //# sourceMappingURL=transactional-email-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-activity.js","sourceRoot":"","sources":["../../src/components/transactional-email-activity.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,GACT,MAAM,YAAY,CAAC;AAapB;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,EACL,OAAO,GAOR;IACC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IAEjB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;IAC9D,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,GAAG,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,CACL,MAAC,KAAK,eACJ,KAAC,cAAc,IAAC,SAAS,EAAC,QAAQ,GAAG,EACrC,KAAC,UAAU,cACR,CAAC,CAAC,iDAAiD,CAAC,GAC1C,EACb,KAAC,gBAAgB,cAAE,MAAM,CAAC,MAAM,GAAoB,IAC9C,CACT,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,CACL,cAAK,SAAS,EAAC,yEAAyE,YACrF,CAAC,CAAC,2CAA2C,CAAC,GAC3C,CACP,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,cAAK,SAAS,EAAC,wBAAwB,YACrC,MAAC,KAAK,eACJ,KAAC,WAAW,cACV,MAAC,QAAQ,eACP,KAAC,SAAS,cAAE,CAAC,CAAC,uCAAuC,CAAC,GAAa,EACnE,KAAC,SAAS,cAAE,CAAC,CAAC,qCAAqC,CAAC,GAAa,EACjE,KAAC,SAAS,cAAE,CAAC,CAAC,oCAAoC,CAAC,GAAa,EAChE,KAAC,SAAS,cAAE,CAAC,CAAC,mCAAmC,CAAC,GAAa,EAC/D,KAAC,SAAS,cAAE,CAAC,CAAC,uCAAuC,CAAC,GAAa,IAC1D,GACC,EACd,KAAC,SAAS,cACP,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1B,MAAC,QAAQ,eACP,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,YAAE,KAAK,CAAC,OAAO,GAAa,EAC1D,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,YAAE,KAAK,CAAC,OAAO,GAAa,EAC1D,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,YAAE,KAAK,CAAC,MAAM,GAAa,EACzD,KAAC,SAAS,IAAC,SAAS,EAAC,sBAAsB,YACxC,KAAK,CAAC,UAAU,GACP,EACZ,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,YAAE,KAAK,CAAC,aAAa,GAAa,KAPnD,KAAK,CAAC,KAAK,CAQf,CACZ,CAAC,GACQ,IACN,GACJ,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useT } from \"@agent-native/core/client/i18n\";\nimport { IconInfoCircle } from \"@tabler/icons-react\";\n\nimport { ActionQueryError } from \"./action-query-error\";\nimport { type ProviderMetricsResult } from \"./transactional-email-metrics\";\nimport { Alert, AlertDescription, AlertTitle } from \"./ui/alert\";\nimport { Skeleton } from \"./ui/skeleton\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./ui/table\";\n\nexport interface EmailActivityEntry {\n msgId: string;\n toEmail: string;\n fromEmail: string;\n subject: string;\n status: string;\n opensCount: number;\n clicksCount: number;\n lastEventTime: string;\n}\n\n/**\n * Renders one email's activity feed. Used both inline on the detail page and\n * inside the list page's activity dialog, so the \"unavailable\" and \"empty\"\n * states only need to be written once.\n */\nexport function ActivityTable({\n result,\n isLoading,\n isError,\n error,\n onRetry,\n}: {\n result: ProviderMetricsResult<EmailActivityEntry[]> | undefined;\n isLoading: boolean;\n isError: boolean;\n error: unknown;\n onRetry: () => void;\n}) {\n const t = useT();\n\n if (isError) {\n return <ActionQueryError error={error} onRetry={onRetry} />;\n }\n if (isLoading) {\n return <Skeleton className=\"h-40 w-full\" />;\n }\n if (result && !result.available) {\n return (\n <Alert>\n <IconInfoCircle className=\"size-4\" />\n <AlertTitle>\n {t(\"dispatch.transactionalEmail.activityUnavailable\")}\n </AlertTitle>\n <AlertDescription>{result.reason}</AlertDescription>\n </Alert>\n );\n }\n if (result && result.data.length === 0) {\n return (\n <div className=\"rounded-xl border border-dashed px-4 py-8 text-sm text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.activityEmpty\")}\n </div>\n );\n }\n if (!result) return null;\n\n return (\n <div className=\"max-h-96 overflow-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{t(\"dispatch.transactionalEmail.recipient\")}</TableHead>\n <TableHead>{t(\"dispatch.transactionalEmail.subject\")}</TableHead>\n <TableHead>{t(\"dispatch.transactionalEmail.status\")}</TableHead>\n <TableHead>{t(\"dispatch.transactionalEmail.opens\")}</TableHead>\n <TableHead>{t(\"dispatch.transactionalEmail.lastEvent\")}</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {result.data.map((entry) => (\n <TableRow key={entry.msgId}>\n <TableCell className=\"text-xs\">{entry.toEmail}</TableCell>\n <TableCell className=\"text-xs\">{entry.subject}</TableCell>\n <TableCell className=\"text-xs\">{entry.status}</TableCell>\n <TableCell className=\"text-xs tabular-nums\">\n {entry.opensCount}\n </TableCell>\n <TableCell className=\"text-xs\">{entry.lastEventTime}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n );\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Shared between the transactional email list and detail pages so both
3
+ * render the same "unknown vs. zero" and provider-availability rules.
4
+ */
5
+ export interface EmailEngagement {
6
+ templateId: string;
7
+ delivered: number;
8
+ uniqueOpens: number;
9
+ uniqueClicks: number;
10
+ /** null when nothing was delivered in the window, so there is no rate yet. */
11
+ openRate: number | null;
12
+ }
13
+ export type ProviderMetricsResult<T> = {
14
+ available: true;
15
+ data: T;
16
+ } | {
17
+ available: false;
18
+ reason: string;
19
+ };
20
+ /**
21
+ * Renders a metric the backend could not read. "Unknown" and "zero" must stay
22
+ * visibly different — a dash with a reason is the only honest rendering.
23
+ */
24
+ export declare function UnknownMetric({ reason }: {
25
+ reason: string;
26
+ }): import("node_modules/@types/react").JSX.Element;
27
+ export declare function SendsCell({ sent, failed, }: {
28
+ sent: number | null;
29
+ failed: number | null;
30
+ }): import("node_modules/@types/react").JSX.Element;
31
+ export declare function OpenRateCell({ engagement, unavailableReason, loading, }: {
32
+ engagement: EmailEngagement | undefined;
33
+ unavailableReason: string | null;
34
+ loading: boolean;
35
+ }): import("node_modules/@types/react").JSX.Element;
36
+ export declare function LastSentCell({ lastSentAt, sent, }: {
37
+ lastSentAt: number | null;
38
+ sent: number | null;
39
+ }): import("node_modules/@types/react").JSX.Element;
40
+ //# sourceMappingURL=transactional-email-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-metrics.d.ts","sourceRoot":"","sources":["../../src/components/transactional-email-metrics.tsx"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAC/B;IAAE,SAAS,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC5B;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,mDAW3D;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,mDAsBA;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,EAAE;IACD,UAAU,EAAE,eAAe,GAAG,SAAS,CAAC;IACxC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB,mDAyBA;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,IAAI,GACL,EAAE;IACD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,mDAeA"}
@@ -0,0 +1,44 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useT } from "@agent-native/core/client/i18n";
3
+ import { Skeleton } from "./ui/skeleton.js";
4
+ import { Tooltip, TooltipContent, TooltipTrigger } from "./ui/tooltip.js";
5
+ /**
6
+ * Renders a metric the backend could not read. "Unknown" and "zero" must stay
7
+ * visibly different — a dash with a reason is the only honest rendering.
8
+ */
9
+ export function UnknownMetric({ reason }) {
10
+ return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("span", { className: "cursor-help text-muted-foreground underline decoration-dotted underline-offset-2", children: "\u2014" }) }), _jsx(TooltipContent, { className: "max-w-64", children: reason })] }));
11
+ }
12
+ export function SendsCell({ sent, failed, }) {
13
+ const t = useT();
14
+ if (sent === null) {
15
+ return (_jsx(UnknownMetric, { reason: t("dispatch.transactionalEmail.sendLogUnread") }));
16
+ }
17
+ return (_jsxs("span", { className: "tabular-nums", children: [sent, failed !== null && failed > 0 ? (_jsx("span", { className: "ml-2 text-xs text-destructive", children: t("dispatch.transactionalEmail.failedCount", { count: failed }) })) : null, failed === null ? (_jsx("span", { className: "ml-2 text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.failuresUnknown") })) : null] }));
18
+ }
19
+ export function OpenRateCell({ engagement, unavailableReason, loading, }) {
20
+ const t = useT();
21
+ if (unavailableReason) {
22
+ return _jsx(UnknownMetric, { reason: unavailableReason });
23
+ }
24
+ if (loading)
25
+ return _jsx(Skeleton, { className: "h-4 w-10" });
26
+ if (!engagement) {
27
+ return (_jsx(UnknownMetric, { reason: t("dispatch.transactionalEmail.noProviderRecord") }));
28
+ }
29
+ if (engagement.openRate === null) {
30
+ return (_jsx("span", { className: "text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.noDeliveredMail") }));
31
+ }
32
+ return (_jsx("span", { className: "tabular-nums", children: `${(engagement.openRate * 100).toFixed(1)}%` }));
33
+ }
34
+ export function LastSentCell({ lastSentAt, sent, }) {
35
+ const t = useT();
36
+ if (lastSentAt !== null) {
37
+ return _jsx(_Fragment, { children: new Date(lastSentAt).toLocaleString() });
38
+ }
39
+ if (sent === 0) {
40
+ return (_jsx("span", { className: "text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.neverSent") }));
41
+ }
42
+ return (_jsx(UnknownMetric, { reason: t("dispatch.transactionalEmail.lastSentUnknown") }));
43
+ }
44
+ //# sourceMappingURL=transactional-email-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-metrics.js","sourceRoot":"","sources":["../../src/components/transactional-email-metrics.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useT } from \"@agent-native/core/client/i18n\";\n\nimport { Skeleton } from \"./ui/skeleton\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"./ui/tooltip\";\n\n/**\n * Shared between the transactional email list and detail pages so both\n * render the same \"unknown vs. zero\" and provider-availability rules.\n */\n\nexport interface EmailEngagement {\n templateId: string;\n delivered: number;\n uniqueOpens: number;\n uniqueClicks: number;\n /** null when nothing was delivered in the window, so there is no rate yet. */\n openRate: number | null;\n}\n\nexport type ProviderMetricsResult<T> =\n | { available: true; data: T }\n | { available: false; reason: string };\n\n/**\n * Renders a metric the backend could not read. \"Unknown\" and \"zero\" must stay\n * visibly different — a dash with a reason is the only honest rendering.\n */\nexport function UnknownMetric({ reason }: { reason: string }) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <span className=\"cursor-help text-muted-foreground underline decoration-dotted underline-offset-2\">\n —\n </span>\n </TooltipTrigger>\n <TooltipContent className=\"max-w-64\">{reason}</TooltipContent>\n </Tooltip>\n );\n}\n\nexport function SendsCell({\n sent,\n failed,\n}: {\n sent: number | null;\n failed: number | null;\n}) {\n const t = useT();\n if (sent === null) {\n return (\n <UnknownMetric reason={t(\"dispatch.transactionalEmail.sendLogUnread\")} />\n );\n }\n return (\n <span className=\"tabular-nums\">\n {sent}\n {failed !== null && failed > 0 ? (\n <span className=\"ml-2 text-xs text-destructive\">\n {t(\"dispatch.transactionalEmail.failedCount\", { count: failed })}\n </span>\n ) : null}\n {failed === null ? (\n <span className=\"ml-2 text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.failuresUnknown\")}\n </span>\n ) : null}\n </span>\n );\n}\n\nexport function OpenRateCell({\n engagement,\n unavailableReason,\n loading,\n}: {\n engagement: EmailEngagement | undefined;\n unavailableReason: string | null;\n loading: boolean;\n}) {\n const t = useT();\n if (unavailableReason) {\n return <UnknownMetric reason={unavailableReason} />;\n }\n if (loading) return <Skeleton className=\"h-4 w-10\" />;\n if (!engagement) {\n return (\n <UnknownMetric\n reason={t(\"dispatch.transactionalEmail.noProviderRecord\")}\n />\n );\n }\n if (engagement.openRate === null) {\n return (\n <span className=\"text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.noDeliveredMail\")}\n </span>\n );\n }\n return (\n <span className=\"tabular-nums\">\n {`${(engagement.openRate * 100).toFixed(1)}%`}\n </span>\n );\n}\n\nexport function LastSentCell({\n lastSentAt,\n sent,\n}: {\n lastSentAt: number | null;\n sent: number | null;\n}) {\n const t = useT();\n if (lastSentAt !== null) {\n return <>{new Date(lastSentAt).toLocaleString()}</>;\n }\n if (sent === 0) {\n return (\n <span className=\"text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.neverSent\")}\n </span>\n );\n }\n return (\n <UnknownMetric reason={t(\"dispatch.transactionalEmail.lastSentUnknown\")} />\n );\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export declare function EmailPreviewPane({ appId, appPath, id, name, }: {
2
+ appId: string;
3
+ appPath: string;
4
+ id: string;
5
+ name: string;
6
+ }): import("node_modules/@types/react").JSX.Element;
7
+ //# sourceMappingURL=transactional-email-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-preview.d.ts","sourceRoot":"","sources":["../../src/components/transactional-email-preview.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,EAAE,EACF,IAAI,GACL,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,mDA2CA"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useActionQuery } from "@agent-native/core/client/hooks";
3
+ import { useT } from "@agent-native/core/client/i18n";
4
+ import { IconAlertTriangle } from "@tabler/icons-react";
5
+ import { useQuery } from "@tanstack/react-query";
6
+ import { fetchEmailPreview, } from "../client/transactional-emails.js";
7
+ import { Alert, AlertDescription, AlertTitle } from "./ui/alert.js";
8
+ import { Skeleton } from "./ui/skeleton.js";
9
+ /**
10
+ * The "core" app id means the email was read from Dispatch's own local
11
+ * catalog (see transactional-email.tsx), not a cross-app fetch, so its
12
+ * preview must render the same way — Dispatch always has the definition
13
+ * registered locally and a cross-app fetch would have no real appPath to hit.
14
+ */
15
+ function useEmailPreviewQuery(appId, appPath, id) {
16
+ const isCore = appId === "core";
17
+ const local = useActionQuery("render-transactional-email-preview", { id }, { enabled: isCore, retry: false });
18
+ const remote = useQuery({
19
+ queryKey: ["transactional-email-preview", appPath, id],
20
+ queryFn: () => fetchEmailPreview(appPath, id),
21
+ enabled: !isCore,
22
+ retry: false,
23
+ });
24
+ return isCore ? local : remote;
25
+ }
26
+ export function EmailPreviewPane({ appId, appPath, id, name, }) {
27
+ const t = useT();
28
+ const preview = useEmailPreviewQuery(appId, appPath, id);
29
+ if (preview.isError) {
30
+ return (_jsxs(Alert, { variant: "destructive", children: [_jsx(IconAlertTriangle, { className: "size-4" }), _jsx(AlertTitle, { children: t("dispatch.transactionalEmail.previewFailed") }), _jsx(AlertDescription, { children: preview.error instanceof Error
31
+ ? preview.error.message
32
+ : String(preview.error) })] }));
33
+ }
34
+ if (preview.isLoading || !preview.data) {
35
+ return _jsx(Skeleton, { className: "h-96 w-full" });
36
+ }
37
+ return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.subject") }), _jsx("div", { className: "text-sm font-medium text-foreground", children: preview.data.subject })] }), _jsx("iframe", { title: t("dispatch.transactionalEmail.previewFrameTitle", { name }), sandbox: "", srcDoc: preview.data.html,
38
+ // guard:allow-raw-color — the frame previews email HTML, which renders on white in mail clients regardless of app theme.
39
+ className: "h-96 w-full rounded-xl border bg-white" })] }));
40
+ }
41
+ //# sourceMappingURL=transactional-email-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email-preview.js","sourceRoot":"","sources":["../../src/components/transactional-email-preview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EACL,iBAAiB,GAElB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAa,EAAE,OAAe,EAAE,EAAU;IACtE,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC;IAChC,MAAM,KAAK,GAAG,cAAc,CAC1B,oCAAoC,EACpC,EAAE,EAAE,EAAE,EACN,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC;QACtB,QAAQ,EAAE,CAAC,6BAA6B,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC,MAAM;QAChB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,EAAE,EACF,IAAI,GAML;IACC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CACL,MAAC,KAAK,IAAC,OAAO,EAAC,aAAa,aAC1B,KAAC,iBAAiB,IAAC,SAAS,EAAC,QAAQ,GAAG,EACxC,KAAC,UAAU,cACR,CAAC,CAAC,2CAA2C,CAAC,GACpC,EACb,KAAC,gBAAgB,cACd,OAAO,CAAC,KAAK,YAAY,KAAK;wBAC7B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;wBACvB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GACR,IACb,CACT,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,GAAG,CAAC;IAC9C,CAAC;IACD,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,0BACE,cAAK,SAAS,EAAC,+BAA+B,YAC3C,CAAC,CAAC,qCAAqC,CAAC,GACrC,EACN,cAAK,SAAS,EAAC,qCAAqC,YACjD,OAAO,CAAC,IAAI,CAAC,OAAO,GACjB,IACF,EAGN,iBACE,KAAK,EAAE,CAAC,CAAC,+CAA+C,EAAE,EAAE,IAAI,EAAE,CAAC,EACnE,OAAO,EAAC,EAAE,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;gBACzB,yHAAyH;gBACzH,SAAS,EAAC,wCAAwC,GAClD,IACE,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client/hooks\";\nimport { useT } from \"@agent-native/core/client/i18n\";\nimport { IconAlertTriangle } from \"@tabler/icons-react\";\nimport { useQuery } from \"@tanstack/react-query\";\n\nimport {\n fetchEmailPreview,\n type EmailPreview,\n} from \"../client/transactional-emails\";\nimport { Alert, AlertDescription, AlertTitle } from \"./ui/alert\";\nimport { Skeleton } from \"./ui/skeleton\";\n\n/**\n * The \"core\" app id means the email was read from Dispatch's own local\n * catalog (see transactional-email.tsx), not a cross-app fetch, so its\n * preview must render the same way — Dispatch always has the definition\n * registered locally and a cross-app fetch would have no real appPath to hit.\n */\nfunction useEmailPreviewQuery(appId: string, appPath: string, id: string) {\n const isCore = appId === \"core\";\n const local = useActionQuery<EmailPreview>(\n \"render-transactional-email-preview\",\n { id },\n { enabled: isCore, retry: false },\n );\n const remote = useQuery({\n queryKey: [\"transactional-email-preview\", appPath, id],\n queryFn: () => fetchEmailPreview(appPath, id),\n enabled: !isCore,\n retry: false,\n });\n return isCore ? local : remote;\n}\n\nexport function EmailPreviewPane({\n appId,\n appPath,\n id,\n name,\n}: {\n appId: string;\n appPath: string;\n id: string;\n name: string;\n}) {\n const t = useT();\n const preview = useEmailPreviewQuery(appId, appPath, id);\n\n if (preview.isError) {\n return (\n <Alert variant=\"destructive\">\n <IconAlertTriangle className=\"size-4\" />\n <AlertTitle>\n {t(\"dispatch.transactionalEmail.previewFailed\")}\n </AlertTitle>\n <AlertDescription>\n {preview.error instanceof Error\n ? preview.error.message\n : String(preview.error)}\n </AlertDescription>\n </Alert>\n );\n }\n if (preview.isLoading || !preview.data) {\n return <Skeleton className=\"h-96 w-full\" />;\n }\n return (\n <div className=\"space-y-3\">\n <div>\n <div className=\"text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.subject\")}\n </div>\n <div className=\"text-sm font-medium text-foreground\">\n {preview.data.subject}\n </div>\n </div>\n {/* sandbox=\"\" (no allow-scripts) keeps arbitrary email HTML from\n running script in the Dispatch origin. */}\n <iframe\n title={t(\"dispatch.transactionalEmail.previewFrameTitle\", { name })}\n sandbox=\"\"\n srcDoc={preview.data.html}\n // guard:allow-raw-color — the frame previews email HTML, which renders on white in mail clients regardless of app theme.\n className=\"h-96 w-full rounded-xl border bg-white\"\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
2
+ import * as React from "react";
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionMultipleProps | AccordionPrimitive.AccordionSingleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAEhE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,SAAS,8JAA0B,CAAC;AAE1C,QAAA,MAAM,aAAa,iKASjB,CAAC;AAGH,QAAA,MAAM,gBAAgB,0KAiBpB,CAAC;AAGH,QAAA,MAAM,gBAAgB,oKAWpB,CAAC;AAIH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ import { IconChevronDown } from "@tabler/icons-react";
4
+ import * as React from "react";
5
+ import { cn } from "../../lib/utils.js";
6
+ const Accordion = AccordionPrimitive.Root;
7
+ const AccordionItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(AccordionPrimitive.Item, { ref: ref, className: cn("border-b", className), ...props })));
8
+ AccordionItem.displayName = "AccordionItem";
9
+ const AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { ref: ref, className: cn("flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(IconChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })] }) })));
10
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
11
+ const AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsx(AccordionPrimitive.Content, { ref: ref, className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", ...props, children: _jsx("div", { className: cn("pb-4 pt-0", className), children: children }) })));
12
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
13
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
14
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAErC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAE1C,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,KAAC,kBAAkB,CAAC,IAAI,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,KAChC,KAAK,GACT,CACH,CAAC,CAAC;AACH,aAAa,CAAC,WAAW,GAAG,eAAe,CAAC;AAE5C,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAGvC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,CAAC,MAAM,IAAC,SAAS,EAAC,MAAM,YACzC,MAAC,kBAAkB,CAAC,OAAO,IACzB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,8HAA8H,EAC9H,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,eAAe,IAAC,SAAS,EAAC,oDAAoD,GAAG,IACvD,GACH,CAC7B,CAAC,CAAC;AACH,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;AAEtE,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAGvC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC5C,KAAC,kBAAkB,CAAC,OAAO,IACzB,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,0HAA0H,KAChI,KAAK,YAET,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,YAAG,QAAQ,GAAO,GACjC,CAC9B,CAAC,CAAC;AAEH,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import * as AccordionPrimitive from \"@radix-ui/react-accordion\";\nimport { IconChevronDown } from \"@tabler/icons-react\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Accordion = AccordionPrimitive.Root;\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n));\nAccordionItem.displayName = \"AccordionItem\";\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className,\n )}\n {...props}\n >\n {children}\n <IconChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n));\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n));\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName;\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"]}