@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":"thread-debug.js","sourceRoot":"","sources":["../../../src/routes/pages/thread-debug.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client/hooks\";\nimport { useT } from \"@agent-native/core/client/i18n\";\nimport {\n IconActivity,\n IconAdjustmentsHorizontal,\n IconAlertTriangle,\n IconCopy,\n IconDatabase,\n IconFileSearch,\n IconInfoCircle,\n IconRefresh,\n IconSearch,\n IconTool,\n} from \"@tabler/icons-react\";\nimport { useMemo, useState } from \"react\";\nimport { useSearchParams } from \"react-router\";\n\nimport { ActionQueryError } from \"../../components/action-query-error\";\nimport { DispatchShell } from \"../../components/dispatch-shell\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { Input } from \"../../components/ui/input\";\nimport {\n Popover,\n PopoverAnchor,\n PopoverContent,\n} from \"../../components/ui/popover\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport { Skeleton } from \"../../components/ui/skeleton\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"../../components/ui/tabs\";\nimport { cn } from \"../../lib/utils\";\n\nexport function meta() {\n return [{ title: \"Thread Debug — Dispatch\" }];\n}\n\ninterface ThreadDebugSource {\n id: string;\n label: string;\n kind: \"current\" | \"env\" | \"configured\";\n current: boolean;\n connected: boolean;\n databaseUrlEnv: string | null;\n databaseAuthTokenEnv: string | null;\n canInspectAll: boolean;\n}\n\ninterface ThreadSearchResult {\n id: string;\n ownerEmail: string;\n title: string;\n preview: string;\n messageCount: number;\n createdAt: number;\n updatedAt: number;\n snippet: string;\n}\n\ninterface ThreadMessage {\n index: number;\n id: string | null;\n role: string;\n createdAt: string | number | null;\n status: unknown;\n text: string;\n contentParts: any[];\n attachments: any[];\n metadata: unknown;\n}\n\ninterface ThreadRun {\n id: string;\n status: string;\n turnId?: string | null;\n abortReason: string | null;\n errorCode?: string | null;\n errorDetail?: string | null;\n terminalReason?: string | null;\n dispatchMode?: string | null;\n diagStage?: string | null;\n workerStage?: string | null;\n startedAt: number;\n completedAt: number | null;\n heartbeatAt: number | null;\n lastProgressAt?: number | null;\n durationMs?: number | null;\n peakRssMb?: number | null;\n inFlightSince?: number | null;\n hasDispatchPayload?: boolean;\n events: Array<{ seq: number; event: any; rawEventData: string }>;\n}\n\ntype ThreadDebugMode = \"failures\" | \"threads\";\ntype FailureStatus = \"all\" | \"errored\" | \"aborted\" | \"truncated\";\ntype FailureRegime = \"all\" | \"interactive\" | \"scheduled\";\ntype FailureRange = \"24h\" | \"7d\" | \"30d\";\n\ninterface FailureTaxonomy {\n code: string;\n label: string;\n regime: \"interactive\" | \"scheduled\";\n source: \"error_code\" | \"error_detail\" | \"unknown\";\n}\n\ninterface RunFailureLike {\n id?: string;\n status?: string | null;\n errorCode?: string | null;\n errorDetail?: string | null;\n terminalReason?: string | null;\n abortReason?: string | null;\n dispatchMode?: string | null;\n diagStage?: string | null;\n workerStage?: string | null;\n durationMs?: number | null;\n heartbeatAt?: number | null;\n lastProgressAt?: number | null;\n}\n\ninterface AgentRunFailure {\n id: string;\n threadId: string;\n sourceId?: string;\n sourceLabel?: string;\n source?: {\n id: string;\n label: string;\n kind?: string;\n databaseUrlEnv?: string | null;\n };\n ownerEmail: string;\n turnId?: string | null;\n threadTitle: string;\n threadPreview: string;\n status: string;\n errorCode: string | null;\n errorDetail: string | null;\n terminalReason: string | null;\n abortReason: string | null;\n heartbeatAt?: number | null;\n lastProgressAt?: number | null;\n dispatchMode: string | null;\n diagStage: string | null;\n workerStage?: string | null;\n startedAt: number;\n completedAt: number | null;\n durationMs: number | null;\n regime?: \"interactive\" | \"scheduled\";\n failureTaxonomy?: FailureTaxonomy;\n}\n\ninterface AgentRunFailuresResponse {\n failures: AgentRunFailure[];\n sources: Array<{\n source: {\n id: string;\n label: string;\n kind?: string;\n databaseUrlEnv?: string | null;\n };\n status: \"ok\" | \"unsupported\" | \"unavailable\" | \"disconnected\";\n failureCount: number;\n errorCode?: string | null;\n }>;\n partial: boolean;\n count?: number;\n access: { viewerEmail: string; scope: string; canInspectAll: boolean };\n filters?: {\n sourceId?: string;\n status?: FailureStatus;\n lookbackHours?: number;\n limit?: number;\n };\n}\n\ninterface ThreadDebugResponse {\n source: {\n id: string;\n label: string;\n kind: string;\n databaseUrlEnv: string | null;\n };\n access: { viewerEmail: string; scope: string; canInspectAll: boolean };\n thread: ThreadSearchResult;\n lookup?: { requestedId: string; threadId: string; runId: string | null };\n messages: ThreadMessage[];\n debug: any;\n debugRuns: any[];\n queuedMessages: any[];\n threadData: any;\n rawThreadData: string;\n runs: ThreadRun[];\n traces: { summaries: any[]; spans: any[] };\n feedback: any[];\n satisfaction: any[];\n evals: any[];\n checkpoints: any[];\n}\n\nconst FAILURE_RANGE_HOURS: Record<FailureRange, number> = {\n \"24h\": 24,\n \"7d\": 7 * 24,\n \"30d\": 30 * 24,\n};\n\nconst EMPTY_FAILURES: AgentRunFailure[] = [];\n\nfunction parseMode(value: string | null): ThreadDebugMode {\n return value === \"threads\" ? \"threads\" : \"failures\";\n}\n\nfunction parseFailureStatus(value: string | null): FailureStatus {\n return value === \"errored\" || value === \"aborted\" || value === \"truncated\"\n ? value\n : \"all\";\n}\n\nfunction parseFailureRegime(value: string | null): FailureRegime {\n return value === \"interactive\" || value === \"scheduled\" ? value : \"all\";\n}\n\nfunction parseFailureRange(value: string | null): FailureRange {\n return value === \"7d\" || value === \"30d\" ? value : \"24h\";\n}\n\nfunction failureSourceId(failure: AgentRunFailure): string {\n return failure.sourceId || failure.source?.id || \"current\";\n}\n\nfunction failureSourceLabel(failure: AgentRunFailure): string {\n return (\n failure.sourceLabel || failure.source?.label || failureSourceId(failure)\n );\n}\n\nfunction isTechnicalIdentifier(value: string): boolean {\n return /^(?:job|run|thread|turn|request|req)-[a-z0-9][a-z0-9_-]*$/i.test(\n value.trim(),\n );\n}\n\nfunction displayListTitle(\n value: string | null | undefined,\n fallbackValue: string | null | undefined,\n fallbackLabel: string,\n): string {\n const candidate = [value, fallbackValue]\n .map((entry) => entry?.trim() || \"\")\n .find((entry) => entry && !isTechnicalIdentifier(entry));\n if (!candidate) return fallbackLabel;\n\n const withoutDate = candidate\n .replace(/\\s+[—-]\\s+\\d{1,2}\\/\\d{1,2}\\/\\d{4}\\s*$/, \"\")\n .trim();\n if (!withoutDate) return fallbackLabel;\n\n if (/^job:/i.test(withoutDate)) {\n return withoutDate\n .replace(/^job:\\s*/i, \"\")\n .replace(/[-_]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .replace(/\\b\\w/g, (character) => character.toUpperCase())\n .trim();\n }\n\n return withoutDate;\n}\n\nfunction formatDate(value: number | string | null | undefined): string {\n if (value == null || value === \"\") return \"n/a\";\n const numeric = Number(value);\n const date = Number.isFinite(numeric) ? new Date(numeric) : new Date(value);\n if (Number.isNaN(date.getTime())) return \"n/a\";\n return date.toLocaleString();\n}\n\nfunction formatRelativeDate(value: number | string | null | undefined): string {\n if (value == null || value === \"\") return \"n/a\";\n const numeric = Number(value);\n const timestamp = Number.isFinite(numeric)\n ? numeric\n : new Date(value).getTime();\n if (!Number.isFinite(timestamp)) return \"n/a\";\n const elapsed = Date.now() - timestamp;\n if (elapsed < 0) return \"in a moment\";\n if (elapsed < 60_000) return \"just now\";\n if (elapsed < 3_600_000) return `${Math.floor(elapsed / 60_000)}m ago`;\n if (elapsed < 86_400_000) return `${Math.floor(elapsed / 3_600_000)}h ago`;\n return `${Math.floor(elapsed / 86_400_000)}d ago`;\n}\n\nfunction formatDuration(value: number | null | undefined): string {\n if (value == null || !Number.isFinite(value)) return \"n/a\";\n if (value < 1_000) return `${Math.round(value)}ms`;\n if (value < 60_000) return `${(value / 1_000).toFixed(1)}s`;\n return `${(value / 60_000).toFixed(1)}m`;\n}\n\nfunction humanizeIdentifier(value: string | null | undefined): string {\n if (!value) return \"Unknown failure\";\n return value\n .replace(/^(error:|failure:)/, \"\")\n .replace(/[_-]+/g, \" \")\n .replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n\nfunction failureLabel(run: RunFailureLike): string {\n const code = run.errorCode || run.terminalReason || run.abortReason;\n const labels: Record<string, string> = {\n stale_run: \"Worker heartbeat stopped\",\n background_worker_never_started: \"Background worker never started\",\n background_worker_failed: \"Background worker setup failed\",\n builder_gateway_network_error: \"Gateway stream ended early\",\n provider_timeout: \"Provider timed out\",\n provider_network_error: \"Provider connection dropped\",\n provider_config_error: \"Provider configuration rejected\",\n authentication_error: \"Provider authentication failed\",\n overloaded_error: \"Provider was overloaded\",\n \"aborted:user\": \"Stopped by user\",\n };\n return (code && labels[code]) || humanizeIdentifier(code);\n}\n\nfunction runDiagnosis(run: RunFailureLike): {\n title: string;\n summary: string;\n nextStep: string;\n code: string;\n} {\n const code =\n run.errorCode || run.terminalReason || run.abortReason || \"unknown\";\n if (code === \"stale_run\") {\n const workerStarted = run.dispatchMode === \"background-processing\";\n return {\n title: \"Worker stopped reporting\",\n summary: workerStarted\n ? \"The worker claimed this run, then stopped writing heartbeat or progress signals before it finished. This is a liveness failure, not proof that the provider failed.\"\n : \"The run stayed active until liveness recovery closed it. No completed result was recorded, so inspect the handoff and retained evidence before blaming a provider.\",\n nextStep: workerStarted\n ? \"Check the last worker stage and database heartbeat writes.\"\n : \"Check the scheduled background handoff and whether a worker claimed it.\",\n code,\n };\n }\n if (code === \"background_worker_never_started\") {\n return {\n title: \"Background worker never started\",\n summary:\n \"The handoff was acknowledged, but no background worker claimed the run.\",\n nextStep:\n \"Check the background route, authentication, and function logs.\",\n code,\n };\n }\n if (code === \"background_worker_failed\") {\n return {\n title: \"Background worker failed during setup\",\n summary:\n \"The worker claimed the run but stopped before it could start the turn.\",\n nextStep:\n \"Use the recorded setup stage and worker logs to find the first failure.\",\n code,\n };\n }\n if (code === \"builder_gateway_network_error\") {\n return {\n title: \"Gateway stream ended early\",\n summary:\n run.errorDetail ||\n \"The model stream ended before the run emitted a terminal event.\",\n nextStep:\n \"Retry once; if it repeats, inspect gateway and provider transport health.\",\n code,\n };\n }\n if (code === \"aborted:user\") {\n return {\n title: \"Stopped by user\",\n summary: \"This run was explicitly aborted and is not a system failure.\",\n nextStep: \"No recovery action is required.\",\n code,\n };\n }\n return {\n title: failureLabel(run),\n summary:\n run.errorDetail || \"The run ended without a more specific explanation.\",\n nextStep: \"Open the timeline and inspect the last recorded stage or event.\",\n code,\n };\n}\n\nfunction eventType(event: any): string {\n return typeof event?.type === \"string\" ? event.type : \"event\";\n}\n\nfunction eventIsNoise(event: any): boolean {\n return [\n \"thinking\",\n \"text\",\n \"tool_input_delta\",\n \"stream_keepalive\",\n \"activity\",\n ].includes(eventType(event));\n}\n\nfunction summarizeEvents(events: ThreadRun[\"events\"]) {\n const toolNames = new Map<string, number>();\n let toolStarts = 0;\n for (const entry of events) {\n if (eventType(entry.event) !== \"tool_start\") continue;\n toolStarts += 1;\n const name = String(entry.event?.tool ?? \"tool\");\n toolNames.set(name, (toolNames.get(name) ?? 0) + 1);\n }\n return {\n toolStarts,\n toolNames: [...toolNames.entries()],\n meaningful: events.filter((entry) => !eventIsNoise(entry.event)).slice(-12),\n };\n}\n\nfunction json(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction eventLabel(event: any): string {\n if (!event || typeof event !== \"object\") return \"event\";\n if (event.type === \"tool_start\") return `tool_start · ${event.tool}`;\n if (event.type === \"tool_done\") return `tool_done · ${event.tool}`;\n if (event.type === \"text\") return \"text\";\n if (event.type === \"error\") return `error · ${event.errorCode ?? \"agent\"}`;\n return String(event.type ?? \"event\");\n}\n\nfunction messageTitle(message: ThreadMessage): string {\n const role = message.role || \"unknown\";\n return `${role.charAt(0).toUpperCase()}${role.slice(1)} ${message.index + 1}`;\n}\n\nfunction toolParts(message: ThreadMessage): any[] {\n return message.contentParts.filter((part) => part?.type === \"tool-call\");\n}\n\nfunction diagnosticStage(value: string | null | undefined): string | null {\n if (!value) return null;\n try {\n const parsed = JSON.parse(value) as { stage?: unknown; detail?: unknown };\n const stage =\n typeof parsed.stage === \"string\" && parsed.stage.trim()\n ? parsed.stage.trim()\n : value;\n const detail =\n typeof parsed.detail === \"string\" && parsed.detail.trim()\n ? parsed.detail.trim()\n : \"\";\n return detail ? `${stage}: ${detail}` : stage;\n } catch {\n return value;\n }\n}\n\nfunction RawBlock({\n value,\n className,\n}: {\n value: unknown;\n className?: string;\n}) {\n return (\n <pre\n className={cn(\n \"max-h-[520px] overflow-auto rounded-lg border bg-muted/30 p-3 text-xs leading-relaxed text-foreground\",\n \"whitespace-pre-wrap break-words\",\n className,\n )}\n >\n {typeof value === \"string\" ? value : json(value)}\n </pre>\n );\n}\n\nfunction ResultCard({\n result,\n selected,\n onSelect,\n}: {\n result: ThreadSearchResult;\n selected: boolean;\n onSelect: () => void;\n}) {\n const title = displayListTitle(\n result.title,\n result.preview,\n \"Untitled thread\",\n );\n\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n aria-current={selected ? \"true\" : undefined}\n className={cn(\n \"group w-full border-b px-4 py-3 text-left transition-colors last:border-b-0\",\n selected ? \"bg-accent/70\" : \"hover:bg-muted/50\",\n )}\n >\n <div className=\"truncate text-sm font-medium text-foreground\">\n {title}\n </div>\n <div className=\"mt-1 flex flex-wrap items-center gap-x-2 gap-y-1 text-[11px] text-muted-foreground\">\n <span>\n {result.messageCount}{\" \"}\n {result.messageCount === 1 ? \"message\" : \"messages\"}\n </span>\n <span aria-hidden=\"true\">·</span>\n <span className=\"min-w-0 truncate\">{result.ownerEmail}</span>\n <span aria-hidden=\"true\">·</span>\n <span>{formatRelativeDate(result.updatedAt)}</span>\n </div>\n </button>\n );\n}\n\nfunction FailureCard({\n failure,\n selected,\n onSelect,\n}: {\n failure: AgentRunFailure;\n selected: boolean;\n onSelect: () => void;\n}) {\n const t = useT();\n const diagnosis = runDiagnosis(failure);\n const title = displayListTitle(\n failure.threadTitle,\n failure.threadPreview,\n \"Agent run\",\n );\n const statusLabel =\n failure.status === \"errored\"\n ? t(\"dispatch.pages.threadDebugErrored\", {\n defaultValue: \"Errored\",\n })\n : failure.status === \"aborted\"\n ? t(\"dispatch.pages.threadDebugAborted\", {\n defaultValue: \"Aborted\",\n })\n : failure.status === \"truncated\"\n ? t(\"dispatch.pages.threadDebugTruncated\", {\n defaultValue: \"Truncated\",\n })\n : failure.status;\n\n return (\n <button\n type=\"button\"\n onClick={onSelect}\n aria-current={selected ? \"true\" : undefined}\n className={cn(\n \"group w-full border-b px-4 py-3 text-left transition-[background-color,border-color] last:border-b-0\",\n selected ? \"bg-accent/70\" : \"hover:bg-muted/50\",\n )}\n >\n <div className=\"flex items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className={cn(\n \"mt-1.5 size-2 shrink-0 rounded-full\",\n failure.status === \"aborted\"\n ? \"bg-muted-foreground/50\"\n : \"bg-destructive\",\n )}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-medium text-foreground\">\n {title}\n </div>\n <div className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {failureSourceLabel(failure)}\n </div>\n </div>\n <span className=\"shrink-0 text-[11px] text-muted-foreground\">\n {formatRelativeDate(failure.completedAt ?? failure.startedAt)}\n </span>\n </div>\n <div className=\"mt-2 flex min-w-0 items-center gap-2 text-xs\">\n <span className=\"truncate font-medium text-foreground\">\n {diagnosis.title}\n </span>\n <span className=\"shrink-0 text-muted-foreground\">·</span>\n <span className=\"shrink-0 text-muted-foreground\">\n {statusLabel}\n </span>\n </div>\n {failure.durationMs == null ? null : (\n <div className=\"mt-1 text-[11px] text-muted-foreground\">\n {formatDuration(failure.durationMs)}\n </div>\n )}\n </div>\n </div>\n <span className=\"sr-only\">\n {t(\"dispatch.pages.threadDebugInspectFailure\", {\n defaultValue: \"Inspect failed run\",\n })}\n </span>\n </button>\n );\n}\n\nfunction MessageBlock({ message }: { message: ThreadMessage }) {\n const tools = toolParts(message);\n return (\n <div className=\"rounded-lg bg-card\">\n <div className=\"flex flex-wrap items-center justify-between gap-2 border-b px-3 py-2\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Badge\n variant={message.role === \"assistant\" ? \"default\" : \"secondary\"}\n >\n {message.role}\n </Badge>\n <span className=\"truncate text-sm font-medium text-foreground\">\n {messageTitle(message)}\n </span>\n </div>\n <div className=\"flex items-center gap-2 text-[11px] text-muted-foreground\">\n {message.attachments.length > 0 ? (\n <Badge variant=\"outline\">{message.attachments.length} files</Badge>\n ) : null}\n <span>{formatDate(message.createdAt)}</span>\n </div>\n </div>\n <div className=\"space-y-3 px-3 py-3\">\n {message.text ? (\n <div className=\"whitespace-pre-wrap break-words text-sm leading-relaxed text-foreground\">\n {message.text}\n </div>\n ) : (\n <div className=\"text-sm text-muted-foreground\">No text content</div>\n )}\n {tools.length > 0 ? (\n <div className=\"space-y-2\">\n {tools.map((tool, index) => (\n <details\n key={`${message.id ?? message.index}-tool-${index}`}\n className=\"rounded-md border bg-muted/30 px-3 py-2\"\n >\n <summary className=\"cursor-pointer text-xs font-medium text-foreground\">\n {tool.toolName ?? tool.name ?? \"tool-call\"}\n </summary>\n <RawBlock value={tool} className=\"mt-2 max-h-72\" />\n </details>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction EvidenceStat({ label, value }: { label: string; value: string }) {\n return (\n <div className=\"min-w-0\">\n <div className=\"text-[11px] text-muted-foreground\">{label}</div>\n <div className=\"mt-1 truncate text-sm font-medium text-foreground\">\n {value}\n </div>\n </div>\n );\n}\n\nfunction DiagnosisPanel({\n run,\n eventCount,\n toolCount,\n}: {\n run: ThreadRun;\n eventCount: number;\n toolCount: number;\n}) {\n const diagnosis = runDiagnosis(run);\n const isStoppedByUser = diagnosis.code === \"aborted:user\";\n const isScheduled =\n run.id?.startsWith(\"job-\") || run.dispatchMode === \"background-processing\";\n const workerClaimed = run.dispatchMode === \"background-processing\";\n const staleThreshold = isScheduled\n ? workerClaimed\n ? \"45s after claim\"\n : \"90s before claim\"\n : \"15s\";\n return (\n <section\n className={cn(\n \"border-b px-5 py-4\",\n isStoppedByUser ? \"bg-muted/20\" : \"bg-destructive/[0.04]\",\n )}\n aria-label=\"Run diagnosis\"\n >\n <div className=\"flex items-start gap-3\">\n <span\n aria-hidden=\"true\"\n className={cn(\n \"mt-1.5 size-2 shrink-0 rounded-full\",\n isStoppedByUser ? \"bg-muted-foreground/50\" : \"bg-destructive\",\n )}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div>\n <h2 className=\"text-sm font-semibold text-foreground\">\n {diagnosis.title}\n </h2>\n <p className=\"mt-1 max-w-3xl text-sm leading-relaxed text-muted-foreground\">\n {diagnosis.summary}\n </p>\n </div>\n <span className=\"font-mono text-[11px] text-muted-foreground\">\n {diagnosis.code}\n </span>\n </div>\n <div className=\"mt-3 flex items-start gap-2 text-xs text-foreground\">\n <IconInfoCircle className=\"mt-0.5 size-3.5 shrink-0 text-muted-foreground\" />\n <span>\n <span className=\"font-medium\">Next check:</span>{\" \"}\n {diagnosis.nextStep}\n </span>\n </div>\n </div>\n </div>\n <div className=\"mt-4 grid gap-3 border-t pt-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-7\">\n <EvidenceStat\n label=\"Run type\"\n value={isScheduled ? \"Scheduled job\" : \"Interactive chat\"}\n />\n <EvidenceStat\n label=\"Worker claim\"\n value={workerClaimed ? \"Claimed\" : \"Not recorded\"}\n />\n <EvidenceStat\n label=\"Last heartbeat\"\n value={formatDate(run.heartbeatAt)}\n />\n <EvidenceStat\n label=\"Last progress\"\n value={formatDate(run.lastProgressAt)}\n />\n <EvidenceStat label=\"Stale threshold\" value={staleThreshold} />\n <EvidenceStat\n label=\"Recovery payload\"\n value={run.hasDispatchPayload ? \"Retained\" : \"Not retained\"}\n />\n <EvidenceStat\n label=\"Worker stage\"\n value={\n diagnosticStage(run.workerStage) ||\n diagnosticStage(run.diagStage) ||\n \"Not recorded\"\n }\n />\n </div>\n <div className=\"mt-3 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n <span>\n Evidence:{\" \"}\n <span className=\"font-medium text-foreground\">\n {eventCount.toLocaleString()}\n </span>{\" \"}\n retained events\n </span>\n <span aria-hidden=\"true\">·</span>\n <span>\n <span className=\"font-medium text-foreground\">\n {toolCount.toLocaleString()}\n </span>{\" \"}\n tool starts\n </span>\n <span aria-hidden=\"true\">·</span>\n <span>Liveness uses the newer heartbeat or progress timestamp.</span>\n </div>\n </section>\n );\n}\n\nfunction RunTimeline({ run }: { run: ThreadRun }) {\n const summary = summarizeEvents(run.events);\n return (\n <div className=\"space-y-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-3 border-b pb-3\">\n <div className=\"flex items-center gap-2\">\n <IconActivity className=\"size-4 text-muted-foreground\" />\n <span className=\"text-sm font-medium text-foreground\">\n {run.events.length.toLocaleString()} events retained\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {summary.toolStarts} tool starts\n </span>\n </div>\n <span className=\"text-xs text-muted-foreground\">\n Started {formatDate(run.startedAt)}\n </span>\n </div>\n\n {summary.toolNames.length > 0 ? (\n <div className=\"flex flex-wrap gap-2\">\n {summary.toolNames.map(([name, count]) => (\n <span\n key={name}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-muted/60 px-2 py-1 text-xs text-foreground\"\n >\n <IconTool className=\"size-3.5 text-muted-foreground\" />\n {name} <span className=\"text-muted-foreground\">×{count}</span>\n </span>\n ))}\n </div>\n ) : null}\n\n <div className=\"divide-y rounded-lg border\">\n {summary.meaningful.length > 0 ? (\n summary.meaningful.map((entry) => (\n <div\n key={`${run.id}-${entry.seq}`}\n className=\"flex items-start gap-3 px-3 py-2.5 text-xs\"\n >\n <span className=\"w-8 shrink-0 font-mono text-muted-foreground\">\n #{entry.seq}\n </span>\n <span className=\"min-w-0 flex-1 break-words text-foreground\">\n {eventLabel(entry.event)}\n </span>\n </div>\n ))\n ) : (\n <div className=\"px-3 py-4 text-sm text-muted-foreground\">\n No summarized events were retained for this run.\n </div>\n )}\n </div>\n\n <details className=\"rounded-lg border\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-2.5 text-xs font-medium text-foreground\">\n <span>Show raw event stream</span>\n <span className=\"font-normal text-muted-foreground\">\n {run.events.length.toLocaleString()} records\n </span>\n </summary>\n <div className=\"space-y-2 border-t p-3\">\n {run.events.map((entry) => (\n <details\n key={`${run.id}-raw-${entry.seq}`}\n className=\"rounded-md border bg-muted/20 px-3 py-2\"\n >\n <summary className=\"cursor-pointer text-xs text-foreground\">\n #{entry.seq} {eventLabel(entry.event)}\n </summary>\n <RawBlock value={entry.event} className=\"mt-2 max-h-72\" />\n </details>\n ))}\n </div>\n </details>\n </div>\n );\n}\n\nfunction ThreadDetail({ detail }: { detail: ThreadDebugResponse }) {\n const rawBundle = useMemo(\n () => ({\n thread: detail.thread,\n debug: detail.debug,\n debugRuns: detail.debugRuns,\n queuedMessages: detail.queuedMessages,\n threadData: detail.threadData,\n runs: detail.runs,\n traces: detail.traces,\n feedback: detail.feedback,\n satisfaction: detail.satisfaction,\n evals: detail.evals,\n checkpoints: detail.checkpoints,\n }),\n [detail],\n );\n const primaryRun =\n detail.runs.find((run) => run.id === detail.lookup?.runId) ??\n detail.runs[0] ??\n null;\n const eventCount = detail.runs.reduce(\n (total, run) => total + run.events.length,\n 0,\n );\n const toolCount = detail.runs.reduce(\n (total, run) => total + summarizeEvents(run.events).toolStarts,\n 0,\n );\n\n return (\n <div className=\"min-w-0\">\n <div className=\"border-b px-5 py-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-base font-semibold text-foreground\">\n {detail.thread.title || detail.thread.preview || detail.thread.id}\n </div>\n <div className=\"mt-1 flex min-w-0 items-center gap-2 text-xs text-muted-foreground\">\n <span className=\"truncate font-mono\">\n {detail.lookup?.runId || detail.thread.id}\n </span>\n {detail.lookup?.runId ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-7 shrink-0\"\n title=\"Copy run ID\"\n aria-label=\"Copy run ID\"\n onClick={() =>\n void navigator.clipboard?.writeText(\n detail.lookup?.runId ?? \"\",\n )\n }\n >\n <IconCopy className=\"size-3.5\" />\n </Button>\n ) : null}\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n {primaryRun ? (\n <Badge\n variant={\n primaryRun.status === \"errored\" ? \"destructive\" : \"secondary\"\n }\n >\n {primaryRun.status}\n </Badge>\n ) : null}\n <Badge variant=\"outline\">{detail.source.label}</Badge>\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n <span className=\"truncate\">{detail.thread.ownerEmail}</span>\n <span aria-hidden=\"true\">·</span>\n <span>{detail.messages.length} messages</span>\n <span aria-hidden=\"true\">·</span>\n <span>{detail.runs.length} runs</span>\n <span aria-hidden=\"true\">·</span>\n <span>updated {formatDate(detail.thread.updatedAt)}</span>\n </div>\n </div>\n\n {primaryRun ? (\n <DiagnosisPanel\n run={primaryRun}\n eventCount={eventCount}\n toolCount={toolCount}\n />\n ) : null}\n\n <Tabs defaultValue=\"overview\" className=\"p-5\">\n <TabsList className=\"h-9\">\n <TabsTrigger value=\"overview\">Overview</TabsTrigger>\n <TabsTrigger value=\"timeline\">Timeline</TabsTrigger>\n <TabsTrigger value=\"transcript\">Transcript</TabsTrigger>\n <TabsTrigger value=\"technical\">Technical</TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"overview\" className=\"mt-4 space-y-4\">\n <div className=\"flex items-start gap-2 border-b pb-4 text-sm text-muted-foreground\">\n <IconInfoCircle className=\"mt-0.5 size-4 shrink-0\" />\n <p className=\"max-w-2xl leading-relaxed\">\n This is the compact readout. Open Timeline for the last meaningful\n signals, Transcript for persisted messages and tool calls, or\n Technical for raw records.\n </p>\n </div>\n <div className=\"grid gap-4 sm:grid-cols-2 xl:grid-cols-3\">\n <EvidenceStat\n label=\"Created\"\n value={formatDate(detail.thread.createdAt)}\n />\n <EvidenceStat\n label=\"Updated\"\n value={formatDate(detail.thread.updatedAt)}\n />\n <EvidenceStat label=\"Source\" value={detail.source.label} />\n <EvidenceStat\n label=\"Messages\"\n value={detail.messages.length.toLocaleString()}\n />\n <EvidenceStat\n label=\"Retained events\"\n value={eventCount.toLocaleString()}\n />\n <EvidenceStat\n label=\"Tool starts\"\n value={toolCount.toLocaleString()}\n />\n </div>\n {detail.messages.length === 0 && eventCount > 0 ? (\n <div className=\"flex items-start gap-2 rounded-lg border bg-muted/20 px-3 py-3 text-sm text-muted-foreground\">\n <IconActivity className=\"mt-0.5 size-4 shrink-0\" />\n <span>\n No persisted messages are available, but this run retained{\" \"}\n {eventCount.toLocaleString()} execution events. The timeline is\n the authoritative audit trail for this run.\n </span>\n </div>\n ) : null}\n </TabsContent>\n\n <TabsContent value=\"timeline\" className=\"mt-4 space-y-5\">\n {detail.runs.length > 0 ? (\n detail.runs.map((run) => (\n <section\n key={run.id}\n className=\"border-b pb-5 last:border-b-0 last:pb-0\"\n >\n <div className=\"mb-3 flex flex-wrap items-center gap-2\">\n <Badge\n variant={\n run.status === \"errored\" ? \"destructive\" : \"outline\"\n }\n >\n {run.status}\n </Badge>\n <span className=\"font-mono text-xs text-muted-foreground\">\n {run.id}\n </span>\n <span className=\"text-xs text-muted-foreground\">\n {formatDuration(run.durationMs)}\n </span>\n </div>\n <RunTimeline run={run} />\n </section>\n ))\n ) : (\n <div className=\"rounded-lg border border-dashed px-4 py-8 text-center text-sm text-muted-foreground\">\n No retained runs.\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"transcript\" className=\"mt-4 space-y-3\">\n {detail.messages.length > 0 ? (\n detail.messages.map((message) => (\n <MessageBlock\n key={message.id ?? `message-${message.index}`}\n message={message}\n />\n ))\n ) : (\n <div className=\"rounded-lg border border-dashed px-4 py-8 text-center text-sm text-muted-foreground\">\n <div>No persisted messages.</div>\n {eventCount > 0 ? (\n <div className=\"mt-1\">\n Open Timeline to audit the retained execution events.\n </div>\n ) : null}\n </div>\n )}\n </TabsContent>\n\n <TabsContent value=\"technical\" className=\"mt-4 space-y-3\">\n <details className=\"rounded-lg border\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-3 text-sm font-medium text-foreground\">\n <span>Run records</span>\n <span className=\"text-xs font-normal text-muted-foreground\">\n {detail.runs.length} {detail.runs.length === 1 ? \"run\" : \"runs\"}\n </span>\n </summary>\n <div className=\"space-y-4 border-t p-3\">\n {detail.runs.length > 0 ? (\n detail.runs.map((run) => (\n <div key={run.id} className=\"space-y-3\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <Badge\n variant={\n run.status === \"errored\" ? \"destructive\" : \"outline\"\n }\n >\n {run.status}\n </Badge>\n <span className=\"break-all font-mono text-xs text-foreground\">\n {run.id}\n </span>\n </div>\n <div className=\"grid gap-3 text-xs sm:grid-cols-2 xl:grid-cols-3\">\n <EvidenceStat\n label=\"Failure code\"\n value={run.errorCode || \"n/a\"}\n />\n <EvidenceStat\n label=\"Terminal reason\"\n value={run.terminalReason || run.abortReason || \"n/a\"}\n />\n <EvidenceStat\n label=\"Dispatch mode\"\n value={run.dispatchMode || \"foreground\"}\n />\n <EvidenceStat\n label=\"Last stage\"\n value={\n diagnosticStage(run.workerStage) ||\n diagnosticStage(run.diagStage) ||\n \"n/a\"\n }\n />\n <EvidenceStat\n label=\"Duration\"\n value={formatDuration(\n run.durationMs ??\n (run.completedAt == null\n ? null\n : run.completedAt - run.startedAt),\n )}\n />\n <EvidenceStat\n label=\"Last progress\"\n value={formatDate(\n run.lastProgressAt ?? run.heartbeatAt,\n )}\n />\n <EvidenceStat\n label=\"In-flight marker\"\n value={formatDate(run.inFlightSince)}\n />\n <EvidenceStat\n label=\"Recovery payload\"\n value={\n run.hasDispatchPayload ? \"retained\" : \"not retained\"\n }\n />\n </div>\n {run.errorDetail ? (\n <div className=\"rounded-md bg-destructive/10 px-3 py-2 text-xs leading-relaxed text-destructive\">\n {run.errorDetail}\n </div>\n ) : null}\n </div>\n ))\n ) : (\n <div className=\"text-sm text-muted-foreground\">\n No retained run records.\n </div>\n )}\n </div>\n </details>\n\n <details className=\"rounded-lg border\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-3 text-sm font-medium text-foreground\">\n <span>Traces, feedback, and evaluations</span>\n <span className=\"text-xs font-normal text-muted-foreground\">\n diagnostic records\n </span>\n </summary>\n <div className=\"grid gap-4 border-t p-3 lg:grid-cols-2\">\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Debug runs\n </div>\n <RawBlock\n value={\n detail.debugRuns.length > 0\n ? detail.debugRuns\n : (detail.debug ?? {})\n }\n />\n </div>\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Trace summaries\n </div>\n <RawBlock value={detail.traces.summaries} />\n </div>\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Trace spans\n </div>\n <RawBlock value={detail.traces.spans} />\n </div>\n <div>\n <div className=\"mb-2 text-xs font-medium text-foreground\">\n Feedback and evals\n </div>\n <RawBlock\n value={{\n feedback: detail.feedback,\n satisfaction: detail.satisfaction,\n evals: detail.evals,\n checkpoints: detail.checkpoints,\n }}\n />\n </div>\n </div>\n </details>\n\n <details className=\"rounded-lg border\">\n <summary className=\"flex cursor-pointer list-none items-center justify-between gap-3 px-3 py-3 text-sm font-medium text-foreground\">\n <span>Raw thread bundle</span>\n <span className=\"text-xs font-normal text-muted-foreground\">\n JSON\n </span>\n </summary>\n <div className=\"space-y-3 border-t p-3\">\n <RawBlock value={rawBundle} />\n <RawBlock value={detail.rawThreadData} />\n </div>\n </details>\n </TabsContent>\n </Tabs>\n </div>\n );\n}\n\nexport default function ThreadDebugRoute() {\n const t = useT();\n const [routeSearchParams, setRouteSearchParams] = useSearchParams();\n const mode = parseMode(routeSearchParams.get(\"mode\"));\n const sourceId =\n routeSearchParams.get(\"source\") ||\n (mode === \"failures\" ? \"all\" : \"current\");\n const ownerEmail = routeSearchParams.get(\"owner\") || \"\";\n const query = routeSearchParams.get(\"query\") || \"\";\n const status = parseFailureStatus(routeSearchParams.get(\"status\"));\n const regime = parseFailureRegime(routeSearchParams.get(\"regime\"));\n const range = parseFailureRange(routeSearchParams.get(\"range\"));\n const runId = routeSearchParams.get(\"runId\") || \"\";\n const threadId = routeSearchParams.get(\"threadId\") || \"\";\n const inspectSourceId = routeSearchParams.get(\"inspectSource\") || \"\";\n const [lookupId, setLookupId] = useState(\"\");\n const [searchFocused, setSearchFocused] = useState(false);\n\n function updateRouteState(\n updates: Record<string, string | null | undefined>,\n ) {\n const next = new URLSearchParams(routeSearchParams);\n for (const [key, value] of Object.entries(updates)) {\n if (value == null || value === \"\") next.delete(key);\n else next.set(key, value);\n }\n setRouteSearchParams(next, { replace: true });\n }\n\n const sourcesQuery = useActionQuery<{\n access: {\n viewerEmail: string;\n orgId: string | null;\n role: string | null;\n envAdmin: boolean;\n canInspectAll: boolean;\n memberCount: number;\n };\n sources: ThreadDebugSource[];\n }>(\"list-agent-thread-sources\", {});\n const { data: sourcesData } = sourcesQuery;\n\n const sources: ThreadDebugSource[] = sourcesData?.sources ?? [];\n const failureParams = useMemo(\n () => ({\n sourceId,\n ownerEmail: ownerEmail.trim() || undefined,\n status,\n regime,\n lookbackHours: FAILURE_RANGE_HOURS[range],\n limit: 25,\n }),\n [ownerEmail, range, regime, sourceId, status],\n );\n const {\n data: failuresData,\n isLoading: failuresLoading,\n error: failuresError,\n refetch: refetchFailures,\n } = useActionQuery<AgentRunFailuresResponse>(\n \"list-agent-run-failures\",\n failureParams,\n { enabled: mode === \"failures\" },\n );\n const failures = failuresData?.failures ?? EMPTY_FAILURES;\n const failurePatterns = useMemo(() => {\n const patterns = new Map<string, { label: string; count: number }>();\n for (const failure of failures) {\n const diagnosis = runDiagnosis(failure);\n const current = patterns.get(diagnosis.code);\n patterns.set(diagnosis.code, {\n label: diagnosis.title,\n count: (current?.count ?? 0) + 1,\n });\n }\n return [...patterns.values()].sort((a, b) => b.count - a.count);\n }, [failures]);\n const unavailableFailureSources = (failuresData?.sources ?? []).filter(\n (source) => source.status !== \"ok\",\n );\n const failureSourceStatusLabels = {\n ok: \"ok\",\n disconnected: t(\"dispatch.pages.threadDebugDisconnected\", {\n defaultValue: \"disconnected\",\n }),\n unsupported: t(\"dispatch.pages.threadDebugUnsupported\", {\n defaultValue: \"unsupported\",\n }),\n unavailable: t(\"dispatch.pages.threadDebugUnavailable\", {\n defaultValue: \"unavailable\",\n }),\n };\n\n const threadSourceId = sourceId === \"all\" ? \"current\" : sourceId;\n const detailSourceId =\n runId && inspectSourceId ? inspectSourceId : threadSourceId;\n const searchParams = useMemo(\n () => ({\n sourceId: threadSourceId,\n query: query.trim() || undefined,\n limit: 25,\n }),\n [query, threadSourceId],\n );\n const {\n data: searchData,\n isLoading: searchLoading,\n error: searchError,\n refetch: refetchSearch,\n } = useActionQuery<{\n count: number;\n threads: ThreadSearchResult[];\n access: { scope: string; canInspectAll: boolean };\n source: { id: string; label: string };\n }>(\"search-agent-threads\", searchParams, { enabled: mode === \"threads\" });\n const searchThreads: ThreadSearchResult[] = searchData?.threads ?? [];\n const ownerEmailSuggestions = useMemo(() => {\n const emailQuery = query.trim().includes(\"@\")\n ? query.trim().toLowerCase()\n : \"\";\n return [...new Set(searchThreads.map((thread) => thread.ownerEmail))]\n .filter(\n (email) => !emailQuery || email.toLowerCase().includes(emailQuery),\n )\n .slice(0, 8);\n }, [query, searchThreads]);\n\n const detailParams = useMemo(\n () => ({\n sourceId: detailSourceId,\n ...(runId ? { runId } : { threadId }),\n ownerEmail: ownerEmail.trim() || undefined,\n maxRuns: 20,\n maxEvents: 800,\n maxTraceSpans: 600,\n }),\n [detailSourceId, ownerEmail, runId, threadId],\n );\n const {\n data: detail,\n isLoading: detailLoading,\n error: detailError,\n refetch: refetchDetail,\n } = useActionQuery<ThreadDebugResponse>(\n \"get-agent-thread-debug\",\n detailParams,\n {\n enabled: Boolean(runId || threadId),\n },\n );\n\n const detailPane = (\n <section className=\"min-w-0\">\n {detailError ? (\n <ActionQueryError\n error={detailError}\n onRetry={() => void refetchDetail()}\n />\n ) : null}\n {detailLoading ? (\n <div className=\"p-5\">\n <Skeleton className=\"h-6 w-72\" />\n <Skeleton className=\"mt-3 h-4 w-96\" />\n <Skeleton className=\"mt-6 h-[520px] w-full\" />\n </div>\n ) : detail ? (\n <ThreadDetail detail={detail} />\n ) : (\n <div className=\"flex min-h-[520px] flex-col items-center justify-center px-5 text-center text-sm text-muted-foreground\">\n <IconFileSearch className=\"mb-2 size-5\" />\n <div className=\"font-medium text-foreground\">\n Choose a run to inspect\n </div>\n <div className=\"mt-1 max-w-xs leading-relaxed\">\n See the diagnosis first, then open the timeline or technical\n evidence.\n </div>\n </div>\n )}\n </section>\n );\n\n return (\n <DispatchShell\n title={t(\"dispatch.pages.threadDebugTitle\", {\n defaultValue: \"Thread Debug\",\n })}\n description={t(\"dispatch.pages.threadDebugDescription\", {\n defaultValue: \"Find the failure pattern, then inspect the evidence.\",\n })}\n >\n <div className=\"space-y-4\">\n {sourcesQuery.isError ? (\n <ActionQueryError\n error={sourcesQuery.error}\n onRetry={() => void sourcesQuery.refetch()}\n />\n ) : null}\n <Tabs\n value={mode}\n onValueChange={(value) => {\n const nextMode = parseMode(value);\n updateRouteState({\n mode: nextMode,\n source:\n nextMode === \"threads\" && sourceId === \"all\"\n ? \"current\"\n : sourceId,\n runId: null,\n threadId: null,\n inspectSource: null,\n });\n }}\n >\n <TabsList>\n <TabsTrigger value=\"failures\">\n {t(\"dispatch.pages.threadDebugFailedRuns\", {\n defaultValue: \"Failed runs\",\n })}\n </TabsTrigger>\n <TabsTrigger value=\"threads\">\n {t(\"dispatch.pages.threadDebugThreads\", {\n defaultValue: \"Threads\",\n })}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"failures\" className=\"mt-4 space-y-4\">\n <section className=\"border-b pb-4\">\n <div className=\"flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-sm font-semibold text-foreground\">\n Run health\n </h2>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Start with the dominant failure pattern, then open one run.\n </p>\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => void refetchFailures()}\n aria-label={t(\"dispatch.pages.threadDebugRefreshFailures\", {\n defaultValue: \"Refresh failed runs\",\n })}\n >\n <IconRefresh className=\"size-4\" />\n </Button>\n </div>\n <div className=\"mt-3 grid gap-2 sm:grid-cols-2 xl:grid-cols-[200px_minmax(180px,1fr)_180px_160px_150px]\">\n <Select\n value={sourceId}\n onValueChange={(value) =>\n updateRouteState({\n source: value,\n runId: null,\n threadId: null,\n inspectSource: null,\n })\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={t(\"dispatch.pages.threadDebugSource\", {\n defaultValue: \"Source\",\n })}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">\n {t(\"dispatch.pages.threadDebugAllSources\", {\n defaultValue: \"All sources\",\n })}\n </SelectItem>\n {sources.map((source) => (\n <SelectItem key={source.id} value={source.id}>\n {source.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <Input\n value={ownerEmail}\n onChange={(event) =>\n updateRouteState({ owner: event.target.value })\n }\n aria-label={t(\"dispatch.pages.threadDebugOwner\", {\n defaultValue: \"Owner email\",\n })}\n placeholder={t(\"dispatch.pages.threadDebugOwner\", {\n defaultValue: \"Owner email\",\n })}\n />\n <Select\n value={status}\n onValueChange={(value) =>\n updateRouteState({\n status: parseFailureStatus(value),\n runId: null,\n inspectSource: null,\n })\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={t(\"dispatch.pages.threadDebugStatus\", {\n defaultValue: \"Status\",\n })}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">\n {t(\"dispatch.pages.threadDebugAllStatuses\", {\n defaultValue: \"All statuses\",\n })}\n </SelectItem>\n <SelectItem value=\"errored\">\n {t(\"dispatch.pages.threadDebugErrored\", {\n defaultValue: \"Errored\",\n })}\n </SelectItem>\n <SelectItem value=\"aborted\">\n {t(\"dispatch.pages.threadDebugAborted\", {\n defaultValue: \"Aborted\",\n })}\n </SelectItem>\n <SelectItem value=\"truncated\">\n {t(\"dispatch.pages.threadDebugTruncated\", {\n defaultValue: \"Truncated\",\n })}\n </SelectItem>\n </SelectContent>\n </Select>\n <Select\n value={regime}\n onValueChange={(value) =>\n updateRouteState({\n regime: parseFailureRegime(value),\n runId: null,\n inspectSource: null,\n })\n }\n >\n <SelectTrigger aria-label=\"Run type\">\n <SelectValue placeholder=\"Run type\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All run types</SelectItem>\n <SelectItem value=\"interactive\">\n Interactive chats\n </SelectItem>\n <SelectItem value=\"scheduled\">Scheduled jobs</SelectItem>\n </SelectContent>\n </Select>\n <Select\n value={range}\n onValueChange={(value) =>\n updateRouteState({\n range: parseFailureRange(value),\n runId: null,\n inspectSource: null,\n })\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={t(\"dispatch.pages.threadDebugRange\", {\n defaultValue: \"Time range\",\n })}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"24h\">\n {t(\"dispatch.pages.threadDebugRange24h\", {\n defaultValue: \"Last 24 hours\",\n })}\n </SelectItem>\n <SelectItem value=\"7d\">\n {t(\"dispatch.pages.threadDebugRange7d\", {\n defaultValue: \"Last 7 days\",\n })}\n </SelectItem>\n <SelectItem value=\"30d\">\n {t(\"dispatch.pages.threadDebugRange30d\", {\n defaultValue: \"Last 30 days\",\n })}\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n {unavailableFailureSources.length > 0 ? (\n <div className=\"mt-2 flex items-start gap-1.5 text-xs text-muted-foreground\">\n <IconAlertTriangle className=\"mt-0.5 size-3.5 shrink-0\" />\n <span>\n {t(\"dispatch.pages.threadDebugUnavailableSources\", {\n defaultValue: \"Unavailable sources:\",\n })}{\" \"}\n {unavailableFailureSources\n .map(\n ({ source, status: sourceStatus }) =>\n `${source.label} (${failureSourceStatusLabels[sourceStatus]})`,\n )\n .join(\", \")}\n </span>\n </div>\n ) : null}\n {failuresData?.partial ? (\n <div className=\"mt-2\">\n <Badge variant=\"outline\">\n {t(\"dispatch.pages.threadDebugPartialResults\", {\n defaultValue: \"Partial results\",\n })}\n </Badge>\n </div>\n ) : null}\n </section>\n\n {failuresError ? (\n <ActionQueryError\n error={failuresError}\n onRetry={() => void refetchFailures()}\n />\n ) : null}\n\n <div className=\"overflow-hidden rounded-xl border bg-card\">\n <div className=\"grid xl:grid-cols-[360px_minmax(0,1fr)]\">\n <section className=\"min-h-[560px] border-b xl:border-b-0 xl:border-r\">\n <div className=\"flex items-center justify-between border-b px-4 py-3\">\n <div>\n <div className=\"text-sm font-semibold text-foreground\">\n Needs attention\n </div>\n <div className=\"mt-0.5 text-xs text-muted-foreground\">\n {failurePatterns[0]\n ? `${failurePatterns[0].count} ${failurePatterns[0].label.toLowerCase()}`\n : \"No active failure pattern\"}\n </div>\n </div>\n <span className=\"text-xs text-muted-foreground\">\n {failures.length}\n </span>\n </div>\n <div className=\"max-h-[760px] overflow-auto\">\n {failuresLoading ? (\n <>\n <Skeleton className=\"mx-4 mt-4 h-16 w-[calc(100%-2rem)]\" />\n <Skeleton className=\"mx-4 mt-2 h-16 w-[calc(100%-2rem)]\" />\n <Skeleton className=\"mx-4 mt-2 h-16 w-[calc(100%-2rem)]\" />\n </>\n ) : null}\n {!failuresLoading && failures.length === 0 ? (\n <div className=\"flex min-h-64 flex-col items-center justify-center px-4 text-center text-sm text-muted-foreground\">\n <IconDatabase className=\"mb-2 size-5\" />\n {t(\"dispatch.pages.threadDebugNoFailures\", {\n defaultValue: \"No failed runs found.\",\n })}\n </div>\n ) : null}\n {failures.map((failure) => (\n <FailureCard\n key={`${failureSourceId(failure)}:${failure.id}`}\n failure={failure}\n selected={\n runId === failure.id &&\n detailSourceId === failureSourceId(failure)\n }\n onSelect={() =>\n updateRouteState({\n inspectSource: failureSourceId(failure),\n runId: failure.id,\n threadId: null,\n })\n }\n />\n ))}\n </div>\n </section>\n <div className=\"min-w-0\">{detailPane}</div>\n </div>\n </div>\n </TabsContent>\n\n <TabsContent value=\"threads\" className=\"mt-4 space-y-4\">\n <section className=\"border-b pb-4\">\n <div className=\"grid gap-2 pt-3 lg:grid-cols-2 xl:grid-cols-[auto_180px_minmax(220px,1fr)_auto_auto]\">\n <Select\n value={threadSourceId}\n onValueChange={(value) =>\n updateRouteState({\n source: value,\n runId: null,\n threadId: null,\n inspectSource: null,\n })\n }\n >\n <SelectTrigger>\n <SelectValue\n placeholder={t(\"dispatch.pages.threadDebugSource\", {\n defaultValue: \"Source\",\n })}\n />\n </SelectTrigger>\n <SelectContent>\n {sources.map((source) => (\n <SelectItem key={source.id} value={source.id}>\n {source.label}\n </SelectItem>\n ))}\n {sources.length === 0 ? (\n <SelectItem value=\"current\">\n {t(\"dispatch.pages.threadDebugCurrentDatabase\", {\n defaultValue: \"Current Dispatch DB\",\n })}\n </SelectItem>\n ) : null}\n </SelectContent>\n </Select>\n <Popover\n open={searchFocused && ownerEmailSuggestions.length > 0}\n onOpenChange={setSearchFocused}\n >\n <PopoverAnchor asChild>\n <span className=\"block\">\n <Input\n value={query}\n onChange={(event) =>\n updateRouteState({ query: event.target.value })\n }\n onFocus={() => setSearchFocused(true)}\n placeholder={t(\n \"dispatch.pages.threadDebugSearchPlaceholder\",\n {\n defaultValue: \"Search threads or email\",\n },\n )}\n aria-label=\"Search threads or email\"\n />\n </span>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n sideOffset={6}\n className=\"w-[var(--radix-popover-trigger-width)] p-1\"\n onOpenAutoFocus={(event) => event.preventDefault()}\n >\n <div role=\"listbox\" aria-label=\"Owner email suggestions\">\n {ownerEmailSuggestions.map((email) => (\n <button\n key={email}\n type=\"button\"\n role=\"option\"\n aria-selected=\"false\"\n className=\"flex w-full items-center rounded-sm px-2 py-1.5 text-left text-sm text-foreground outline-none hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n updateRouteState({ query: email });\n setSearchFocused(false);\n }}\n >\n {email}\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n <Button\n type=\"button\"\n size=\"icon\"\n onClick={() => void refetchSearch()}\n aria-label=\"Search threads or email\"\n title=\"Search threads or email\"\n >\n <IconSearch className=\"size-4\" />\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => void refetchSearch()}\n aria-label={t(\"dispatch.pages.threadDebugRefreshThreads\", {\n defaultValue: \"Refresh threads\",\n })}\n >\n <IconRefresh className=\"size-4\" />\n </Button>\n <details className=\"order-first justify-self-start rounded-lg border\">\n <summary\n aria-label=\"Advanced lookup\"\n title=\"Advanced lookup\"\n className=\"flex size-10 cursor-pointer list-none items-center justify-center text-foreground\"\n >\n <IconAdjustmentsHorizontal\n aria-hidden=\"true\"\n className=\"size-4\"\n />\n <span className=\"sr-only\">Advanced lookup</span>\n </summary>\n <div className=\"grid gap-3 border-t p-3 lg:w-80\">\n <Input\n value={lookupId}\n onChange={(event) => setLookupId(event.target.value)}\n placeholder={t(\n \"dispatch.pages.threadDebugLookupPlaceholder\",\n {\n defaultValue: \"Paste thread or request/run ID\",\n },\n )}\n className=\"font-mono\"\n />\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n const trimmed = lookupId.trim();\n if (!trimmed) return;\n updateRouteState(\n trimmed.startsWith(\"run-\")\n ? {\n runId: trimmed,\n threadId: null,\n inspectSource: null,\n }\n : {\n threadId: trimmed,\n runId: null,\n inspectSource: null,\n },\n );\n }}\n >\n <IconFileSearch className=\"size-4\" />\n {t(\"dispatch.pages.threadDebugInspect\", {\n defaultValue: \"Inspect\",\n })}\n </Button>\n </div>\n </details>\n </div>\n </section>\n\n {searchError ? (\n <ActionQueryError\n error={searchError}\n onRetry={() => void refetchSearch()}\n />\n ) : null}\n\n <div className=\"overflow-hidden rounded-xl border bg-card\">\n <div className=\"grid xl:grid-cols-[360px_minmax(0,1fr)]\">\n <section className=\"min-h-[560px] border-b xl:border-b-0 xl:border-r\">\n <div className=\"max-h-[760px] overflow-auto\">\n {searchLoading ? (\n <>\n <Skeleton className=\"mx-4 mt-4 h-16 w-[calc(100%-2rem)]\" />\n <Skeleton className=\"mx-4 mt-2 h-16 w-[calc(100%-2rem)]\" />\n <Skeleton className=\"mx-4 mt-2 h-16 w-[calc(100%-2rem)]\" />\n </>\n ) : null}\n {!searchLoading && searchThreads.length === 0 ? (\n <div className=\"flex min-h-64 flex-col items-center justify-center px-4 text-center text-sm text-muted-foreground\">\n <IconDatabase className=\"mb-2 size-5\" />\n {t(\"dispatch.pages.threadDebugNoThreads\", {\n defaultValue: \"No threads found.\",\n })}\n </div>\n ) : null}\n {searchThreads.map((result) => (\n <ResultCard\n key={result.id}\n result={result}\n selected={threadId === result.id}\n onSelect={() =>\n updateRouteState({\n threadId: result.id,\n runId: null,\n inspectSource: null,\n })\n }\n />\n ))}\n </div>\n </section>\n <div className=\"min-w-0\">{detailPane}</div>\n </div>\n </div>\n </TabsContent>\n </Tabs>\n </div>\n </DispatchShell>\n );\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function meta(): {
2
+ title: string;
3
+ }[];
4
+ export default function ToolViewerRoute(): import("node_modules/@types/react").JSX.Element;
5
+ //# sourceMappingURL=tools.$id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.$id.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/tools.$id.tsx"],"names":[],"mappings":"AAEA,wBAAgB,IAAI;;IAEnB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,oDAEtC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ToolViewerPage } from "@agent-native/core/client/tools";
3
+ export function meta() {
4
+ return [{ title: "Extension \u2014 Dispatch" }];
5
+ }
6
+ export default function ToolViewerRoute() {
7
+ return _jsx(ToolViewerPage, {});
8
+ }
9
+ //# sourceMappingURL=tools.$id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.$id.js","sourceRoot":"","sources":["../../../src/routes/pages/tools.$id.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe;IACrC,OAAO,KAAC,cAAc,KAAG,CAAC;AAC5B,CAAC","sourcesContent":["import { ToolViewerPage } from \"@agent-native/core/client/tools\";\n\nexport function meta() {\n return [{ title: \"Extension \\u2014 Dispatch\" }];\n}\n\nexport default function ToolViewerRoute() {\n return <ToolViewerPage />;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function meta(): {
2
+ title: string;
3
+ }[];
4
+ export default function ToolsRoute(): import("node_modules/@types/react").JSX.Element;
5
+ //# sourceMappingURL=tools._index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools._index.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/tools._index.tsx"],"names":[],"mappings":"AAEA,wBAAgB,IAAI;;IAEnB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,oDAEjC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ToolsListPage } from "@agent-native/core/client/tools";
3
+ export function meta() {
4
+ return [{ title: "Extensions \u2014 Dispatch" }];
5
+ }
6
+ export default function ToolsRoute() {
7
+ return _jsx(ToolsListPage, {});
8
+ }
9
+ //# sourceMappingURL=tools._index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools._index.js","sourceRoot":"","sources":["../../../src/routes/pages/tools._index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,OAAO,KAAC,aAAa,KAAG,CAAC;AAC3B,CAAC","sourcesContent":["import { ToolsListPage } from \"@agent-native/core/client/tools\";\n\nexport function meta() {\n return [{ title: \"Extensions \\u2014 Dispatch\" }];\n}\n\nexport default function ToolsRoute() {\n return <ToolsListPage />;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function meta(): {
2
+ title: string;
3
+ }[];
4
+ export default function TransactionalEmailDetailRoute(): import("node_modules/@types/react").JSX.Element;
5
+ //# sourceMappingURL=transactional-email.$appId.$id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email.$appId.$id.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/transactional-email.$appId.$id.tsx"],"names":[],"mappings":"AAiCA,wBAAgB,IAAI;;IAEnB;AAwHD,MAAM,CAAC,OAAO,UAAU,6BAA6B,oDAqNpD"}
@@ -0,0 +1,147 @@
1
+ import { Fragment as _Fragment, 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, IconArrowLeft } from "@tabler/icons-react";
5
+ import { useQueries, useQuery } from "@tanstack/react-query";
6
+ import { useMemo } from "react";
7
+ import { Link, useLocation, useParams } from "react-router";
8
+ import { aggregateSharedEmails, callAppAction, fetchAppEmailCatalog, } from "../../client/transactional-emails.js";
9
+ import { ActionQueryError } from "../../components/action-query-error.js";
10
+ import { DispatchShell } from "../../components/dispatch-shell.js";
11
+ import { ActivityTable, } from "../../components/transactional-email-activity.js";
12
+ import { OpenRateCell, SendsCell, LastSentCell, } from "../../components/transactional-email-metrics.js";
13
+ import { EmailPreviewPane } from "../../components/transactional-email-preview.js";
14
+ import { Alert, AlertDescription, AlertTitle } from "../../components/ui/alert.js";
15
+ import { Button } from "../../components/ui/button.js";
16
+ import { Skeleton } from "../../components/ui/skeleton.js";
17
+ export function meta() {
18
+ return [{ title: "Transactional email detail — Dispatch" }];
19
+ }
20
+ const WINDOW_DAYS = 30;
21
+ const ACTIVITY_LIMIT = 50;
22
+ /**
23
+ * Resolves the one email this page shows, plus the app name/path to display.
24
+ * The "core" appId is Dispatch's own registry, not a cross-app fetch — see
25
+ * the same split in transactional-email.tsx.
26
+ */
27
+ function useEmailDetail(appId, id) {
28
+ const isCore = appId === "core";
29
+ const t = useT();
30
+ const localQuery = useActionQuery("list-transactional-emails", { windowDays: WINDOW_DAYS }, { enabled: isCore });
31
+ const appsQuery = useActionQuery("list-workspace-apps", {
32
+ includeAgentCards: false,
33
+ });
34
+ const readyApps = useMemo(() => (appsQuery.data ?? []).filter((candidate) => candidate.status !== "pending"), [appsQuery.data]);
35
+ const app = useMemo(() => readyApps.find((candidate) => candidate.id === appId), [readyApps, appId]);
36
+ const coreCatalogQueries = useQueries({
37
+ queries: readyApps.map((candidate) => ({
38
+ queryKey: ["transactional-email-catalog", candidate.id, WINDOW_DAYS],
39
+ queryFn: () => fetchAppEmailCatalog(candidate, WINDOW_DAYS),
40
+ enabled: isCore,
41
+ staleTime: Infinity,
42
+ })),
43
+ });
44
+ const remoteQuery = useQuery({
45
+ queryKey: ["transactional-email-catalog", appId, WINDOW_DAYS],
46
+ queryFn: () => fetchAppEmailCatalog(app, WINDOW_DAYS),
47
+ enabled: !isCore && !!app,
48
+ staleTime: Infinity,
49
+ });
50
+ if (isCore) {
51
+ const appCatalogs = coreCatalogQueries
52
+ .map((query) => query.data)
53
+ .filter((catalog) => Boolean(catalog));
54
+ const aggregate = localQuery.data
55
+ ? aggregateSharedEmails(localQuery.data, appCatalogs)
56
+ : undefined;
57
+ const email = aggregate?.emails.find((candidate) => candidate.id === id);
58
+ const catalogError = coreCatalogQueries.find((query) => query.data?.error || query.data?.statsError)?.data;
59
+ const queryError = coreCatalogQueries.find((query) => query.isError)?.error;
60
+ const isLoading = localQuery.isLoading ||
61
+ appsQuery.isLoading ||
62
+ coreCatalogQueries.some((query) => query.isLoading);
63
+ const isError = localQuery.isError || appsQuery.isError || Boolean(queryError);
64
+ return {
65
+ isLoading,
66
+ isError,
67
+ error: localQuery.error ?? appsQuery.error ?? queryError,
68
+ onRetry: () => {
69
+ void localQuery.refetch();
70
+ void appsQuery.refetch();
71
+ for (const query of coreCatalogQueries)
72
+ void query.refetch();
73
+ },
74
+ appName: t("dispatch.transactionalEmail.sharedTitle"),
75
+ appPath: t("dispatch.transactionalEmail.sharedSubtitle"),
76
+ email,
77
+ catalogError: aggregate?.statsError ??
78
+ catalogError?.error ??
79
+ catalogError?.statsError ??
80
+ null,
81
+ notFound: !isLoading && !isError && !email,
82
+ };
83
+ }
84
+ const notFound = !appsQuery.isLoading &&
85
+ !appsQuery.isError &&
86
+ (!app ||
87
+ (!remoteQuery.isLoading &&
88
+ !remoteQuery.isError &&
89
+ !remoteQuery.data?.error &&
90
+ !remoteQuery.data?.emails.some((candidate) => candidate.id === id)));
91
+ return {
92
+ isLoading: appsQuery.isLoading || remoteQuery.isLoading,
93
+ isError: appsQuery.isError || remoteQuery.isError,
94
+ error: appsQuery.error ?? remoteQuery.error,
95
+ onRetry: () => {
96
+ void appsQuery.refetch();
97
+ void remoteQuery.refetch();
98
+ },
99
+ appName: app?.name ?? appId,
100
+ appPath: app?.path ?? "",
101
+ email: remoteQuery.data?.emails.find((candidate) => candidate.id === id),
102
+ catalogError: remoteQuery.data?.error ?? null,
103
+ notFound,
104
+ };
105
+ }
106
+ export default function TransactionalEmailDetailRoute() {
107
+ const t = useT();
108
+ const location = useLocation();
109
+ const params = useParams();
110
+ const appId = params.appId ?? "";
111
+ const id = params.id ?? "";
112
+ const detail = useEmailDetail(appId, id);
113
+ const sharedProviderReason = t("dispatch.transactionalEmail.sharedProviderMetricsUnavailable");
114
+ const engagementQuery = useQuery({
115
+ queryKey: ["list-email-engagement", detail.appPath, id, WINDOW_DAYS],
116
+ queryFn: () => callAppAction(detail.appPath, "list-email-engagement", { templateIds: [id], windowDays: WINDOW_DAYS }, "POST"),
117
+ enabled: appId !== "core" && id.length > 0 && detail.appPath.length > 0,
118
+ });
119
+ const engagementResult = engagementQuery.data;
120
+ const engagementUnavailable = appId === "core"
121
+ ? sharedProviderReason
122
+ : engagementResult && !engagementResult.available
123
+ ? engagementResult.reason
124
+ : engagementQuery.isError
125
+ ? engagementQuery.error instanceof Error
126
+ ? engagementQuery.error.message
127
+ : String(engagementQuery.error)
128
+ : null;
129
+ const engagement = engagementResult?.available
130
+ ? engagementResult.data.find((entry) => entry.templateId === id)
131
+ : undefined;
132
+ const activityQuery = useQuery({
133
+ queryKey: ["list-email-activity", detail.appPath, id, ACTIVITY_LIMIT],
134
+ queryFn: () => callAppAction(detail.appPath, "list-email-activity", { templateId: id, limit: ACTIVITY_LIMIT }, "GET"),
135
+ enabled: appId !== "core" &&
136
+ id.length > 0 &&
137
+ detail.appPath.length > 0 &&
138
+ !engagementUnavailable,
139
+ });
140
+ return (_jsx(DispatchShell, { title: detail.email?.name ?? t("dispatch.transactionalEmail.title"), description: t("dispatch.transactionalEmail.description"), children: _jsxs("div", { className: "max-w-3xl space-y-4", children: [_jsx(Button, { asChild: true, size: "sm", variant: "ghost", className: "-ml-2", children: _jsxs(Link, { to: location.pathname.startsWith("/admin/")
141
+ ? "/admin/transactional-email"
142
+ : "/transactional-email", children: [_jsx(IconArrowLeft, { size: 15, className: "mr-1.5" }), t("dispatch.transactionalEmail.title")] }) }), detail.isError ? (_jsx(ActionQueryError, { error: detail.error, onRetry: detail.onRetry })) : detail.isLoading ? (_jsxs("div", { className: "space-y-3", children: [_jsx(Skeleton, { className: "h-6 w-64" }), _jsx(Skeleton, { className: "h-32 w-full" })] })) : detail.notFound || !detail.email ? (_jsxs(Alert, { variant: "destructive", children: [_jsx(IconAlertTriangle, { className: "size-4" }), _jsx(AlertTitle, { children: t("dispatch.transactionalEmail.emailNotFound") }), _jsx(AlertDescription, { children: detail.catalogError ??
143
+ t("dispatch.transactionalEmail.emailNotFoundDescription") })] })) : (_jsxs(_Fragment, { children: [_jsxs("section", { className: "rounded-2xl bg-card p-5", children: [_jsx("div", { className: "text-lg font-semibold text-foreground", children: detail.email.name }), _jsx("div", { className: "mt-1 font-mono text-xs text-muted-foreground", children: detail.email.id }), _jsxs("div", { className: "mt-1 text-xs text-muted-foreground", children: [detail.appName, detail.appPath ? ` · ${detail.appPath}` : ""] }), _jsxs("dl", { className: "mt-4 space-y-3 text-sm", children: [_jsxs("div", { children: [_jsx("dt", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.trigger") }), _jsx("dd", { className: "mt-1 text-foreground", children: detail.email.trigger })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.recipient") }), _jsx("dd", { className: "mt-1 text-foreground", children: detail.email.recipient })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.sender") }), _jsx("dd", { className: "mt-1 text-foreground", children: detail.email.sender })] })] }), _jsxs("div", { className: "mt-4 flex flex-wrap gap-6 border-t pt-4 text-sm", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.sends") }), _jsx("div", { className: "mt-1", children: _jsx(SendsCell, { sent: detail.email.sent, failed: detail.email.failed }) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.openRate") }), _jsx("div", { className: "mt-1", children: _jsx(OpenRateCell, { engagement: engagement, unavailableReason: engagementUnavailable, loading: engagementQuery.isLoading }) })] }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-muted-foreground", children: t("dispatch.transactionalEmail.lastSent") }), _jsx("div", { className: "mt-1", children: _jsx(LastSentCell, { lastSentAt: detail.email.lastSentAt, sent: detail.email.sent }) })] })] })] }), _jsxs("section", { className: "rounded-2xl bg-card p-5", children: [_jsx("h2", { className: "text-sm font-medium text-foreground", children: t("dispatch.transactionalEmail.preview") }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.previewDescription") }), _jsx("div", { className: "mt-4", children: _jsx(EmailPreviewPane, { appId: appId, appPath: detail.appPath, id: detail.email.id, name: detail.email.name }) })] }), _jsxs("section", { className: "rounded-2xl bg-card p-5", children: [_jsx("h2", { className: "text-sm font-medium text-foreground", children: t("dispatch.transactionalEmail.activityLink") }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: t("dispatch.transactionalEmail.retentionNote") }), _jsx("div", { className: "mt-4", children: _jsx(ActivityTable, { result: engagementUnavailable
144
+ ? { available: false, reason: engagementUnavailable }
145
+ : activityQuery.data, isLoading: activityQuery.isLoading, isError: activityQuery.isError, error: activityQuery.error, onRetry: () => void activityQuery.refetch() }) })] })] }))] }) }));
146
+ }
147
+ //# sourceMappingURL=transactional-email.$appId.$id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email.$appId.$id.js","sourceRoot":"","sources":["../../../src/routes/pages/transactional-email.$appId.$id.tsx"],"names":[],"mappings":"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","sourcesContent":["import { callAction, useActionQuery } from \"@agent-native/core/client/hooks\";\nimport { useT } from \"@agent-native/core/client/i18n\";\nimport { IconAlertTriangle, IconArrowLeft } from \"@tabler/icons-react\";\nimport { useQueries, useQuery } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport { Link, useLocation, useParams } from \"react-router\";\n\nimport {\n aggregateSharedEmails,\n callAppAction,\n fetchAppEmailCatalog,\n type AppEmailCatalog,\n type AppTransactionalEmail,\n type LocalTransactionalEmailCatalog,\n} from \"../../client/transactional-emails\";\nimport { ActionQueryError } from \"../../components/action-query-error\";\nimport { DispatchShell } from \"../../components/dispatch-shell\";\nimport {\n ActivityTable,\n type EmailActivityEntry,\n} from \"../../components/transactional-email-activity\";\nimport {\n OpenRateCell,\n SendsCell,\n LastSentCell,\n type EmailEngagement,\n type ProviderMetricsResult,\n} from \"../../components/transactional-email-metrics\";\nimport { EmailPreviewPane } from \"../../components/transactional-email-preview\";\nimport { Alert, AlertDescription, AlertTitle } from \"../../components/ui/alert\";\nimport { Button } from \"../../components/ui/button\";\nimport { Skeleton } from \"../../components/ui/skeleton\";\n\nexport function meta() {\n return [{ title: \"Transactional email detail — Dispatch\" }];\n}\n\nconst WINDOW_DAYS = 30;\nconst ACTIVITY_LIMIT = 50;\n\ninterface WorkspaceAppRef {\n id: string;\n name: string;\n path: string;\n status?: \"ready\" | \"pending\";\n}\n\n/**\n * Resolves the one email this page shows, plus the app name/path to display.\n * The \"core\" appId is Dispatch's own registry, not a cross-app fetch — see\n * the same split in transactional-email.tsx.\n */\nfunction useEmailDetail(appId: string, id: string) {\n const isCore = appId === \"core\";\n const t = useT();\n\n const localQuery = useActionQuery<LocalTransactionalEmailCatalog>(\n \"list-transactional-emails\",\n { windowDays: WINDOW_DAYS },\n { enabled: isCore },\n );\n\n const appsQuery = useActionQuery<WorkspaceAppRef[]>(\"list-workspace-apps\", {\n includeAgentCards: false,\n });\n const readyApps = useMemo(\n () =>\n (appsQuery.data ?? []).filter(\n (candidate) => candidate.status !== \"pending\",\n ),\n [appsQuery.data],\n );\n const app = useMemo(\n () => readyApps.find((candidate) => candidate.id === appId),\n [readyApps, appId],\n );\n const coreCatalogQueries = useQueries({\n queries: readyApps.map((candidate) => ({\n queryKey: [\"transactional-email-catalog\", candidate.id, WINDOW_DAYS],\n queryFn: () => fetchAppEmailCatalog(candidate, WINDOW_DAYS),\n enabled: isCore,\n staleTime: Infinity,\n })),\n });\n const remoteQuery = useQuery({\n queryKey: [\"transactional-email-catalog\", appId, WINDOW_DAYS],\n queryFn: () => fetchAppEmailCatalog(app!, WINDOW_DAYS),\n enabled: !isCore && !!app,\n staleTime: Infinity,\n });\n\n if (isCore) {\n const appCatalogs = coreCatalogQueries\n .map((query) => query.data)\n .filter((catalog): catalog is AppEmailCatalog => Boolean(catalog));\n const aggregate = localQuery.data\n ? aggregateSharedEmails(localQuery.data, appCatalogs)\n : undefined;\n const email = aggregate?.emails.find((candidate) => candidate.id === id);\n const catalogError = coreCatalogQueries.find(\n (query) => query.data?.error || query.data?.statsError,\n )?.data;\n const queryError = coreCatalogQueries.find((query) => query.isError)?.error;\n const isLoading =\n localQuery.isLoading ||\n appsQuery.isLoading ||\n coreCatalogQueries.some((query) => query.isLoading);\n const isError =\n localQuery.isError || appsQuery.isError || Boolean(queryError);\n return {\n isLoading,\n isError,\n error: localQuery.error ?? appsQuery.error ?? queryError,\n onRetry: () => {\n void localQuery.refetch();\n void appsQuery.refetch();\n for (const query of coreCatalogQueries) void query.refetch();\n },\n appName: t(\"dispatch.transactionalEmail.sharedTitle\"),\n appPath: t(\"dispatch.transactionalEmail.sharedSubtitle\"),\n email,\n catalogError:\n aggregate?.statsError ??\n catalogError?.error ??\n catalogError?.statsError ??\n null,\n notFound: !isLoading && !isError && !email,\n };\n }\n\n const notFound =\n !appsQuery.isLoading &&\n !appsQuery.isError &&\n (!app ||\n (!remoteQuery.isLoading &&\n !remoteQuery.isError &&\n !remoteQuery.data?.error &&\n !remoteQuery.data?.emails.some((candidate) => candidate.id === id)));\n\n return {\n isLoading: appsQuery.isLoading || remoteQuery.isLoading,\n isError: appsQuery.isError || remoteQuery.isError,\n error: appsQuery.error ?? remoteQuery.error,\n onRetry: () => {\n void appsQuery.refetch();\n void remoteQuery.refetch();\n },\n appName: app?.name ?? appId,\n appPath: app?.path ?? \"\",\n email: remoteQuery.data?.emails.find((candidate) => candidate.id === id),\n catalogError: remoteQuery.data?.error ?? null,\n notFound,\n };\n}\n\nexport default function TransactionalEmailDetailRoute() {\n const t = useT();\n const location = useLocation();\n const params = useParams<{ appId: string; id: string }>();\n const appId = params.appId ?? \"\";\n const id = params.id ?? \"\";\n\n const detail = useEmailDetail(appId, id);\n\n const sharedProviderReason = t(\n \"dispatch.transactionalEmail.sharedProviderMetricsUnavailable\",\n );\n const engagementQuery = useQuery({\n queryKey: [\"list-email-engagement\", detail.appPath, id, WINDOW_DAYS],\n queryFn: () =>\n callAppAction<ProviderMetricsResult<EmailEngagement[]>>(\n detail.appPath,\n \"list-email-engagement\",\n { templateIds: [id], windowDays: WINDOW_DAYS },\n \"POST\",\n ),\n enabled: appId !== \"core\" && id.length > 0 && detail.appPath.length > 0,\n });\n const engagementResult = engagementQuery.data;\n const engagementUnavailable =\n appId === \"core\"\n ? sharedProviderReason\n : engagementResult && !engagementResult.available\n ? engagementResult.reason\n : engagementQuery.isError\n ? engagementQuery.error instanceof Error\n ? engagementQuery.error.message\n : String(engagementQuery.error)\n : null;\n const engagement = engagementResult?.available\n ? engagementResult.data.find((entry) => entry.templateId === id)\n : undefined;\n\n const activityQuery = useQuery({\n queryKey: [\"list-email-activity\", detail.appPath, id, ACTIVITY_LIMIT],\n queryFn: () =>\n callAppAction<ProviderMetricsResult<EmailActivityEntry[]>>(\n detail.appPath,\n \"list-email-activity\",\n { templateId: id, limit: ACTIVITY_LIMIT },\n \"GET\",\n ),\n enabled:\n appId !== \"core\" &&\n id.length > 0 &&\n detail.appPath.length > 0 &&\n !engagementUnavailable,\n });\n\n return (\n <DispatchShell\n title={detail.email?.name ?? t(\"dispatch.transactionalEmail.title\")}\n description={t(\"dispatch.transactionalEmail.description\")}\n >\n <div className=\"max-w-3xl space-y-4\">\n <Button asChild size=\"sm\" variant=\"ghost\" className=\"-ml-2\">\n <Link\n to={\n location.pathname.startsWith(\"/admin/\")\n ? \"/admin/transactional-email\"\n : \"/transactional-email\"\n }\n >\n <IconArrowLeft size={15} className=\"mr-1.5\" />\n {t(\"dispatch.transactionalEmail.title\")}\n </Link>\n </Button>\n\n {detail.isError ? (\n <ActionQueryError error={detail.error} onRetry={detail.onRetry} />\n ) : detail.isLoading ? (\n <div className=\"space-y-3\">\n <Skeleton className=\"h-6 w-64\" />\n <Skeleton className=\"h-32 w-full\" />\n </div>\n ) : detail.notFound || !detail.email ? (\n <Alert variant=\"destructive\">\n <IconAlertTriangle className=\"size-4\" />\n <AlertTitle>\n {t(\"dispatch.transactionalEmail.emailNotFound\")}\n </AlertTitle>\n <AlertDescription>\n {detail.catalogError ??\n t(\"dispatch.transactionalEmail.emailNotFoundDescription\")}\n </AlertDescription>\n </Alert>\n ) : (\n <>\n <section className=\"rounded-2xl bg-card p-5\">\n <div className=\"text-lg font-semibold text-foreground\">\n {detail.email.name}\n </div>\n <div className=\"mt-1 font-mono text-xs text-muted-foreground\">\n {detail.email.id}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground\">\n {detail.appName}\n {detail.appPath ? ` · ${detail.appPath}` : \"\"}\n </div>\n\n <dl className=\"mt-4 space-y-3 text-sm\">\n <div>\n <dt className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.trigger\")}\n </dt>\n <dd className=\"mt-1 text-foreground\">\n {detail.email.trigger}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.recipient\")}\n </dt>\n <dd className=\"mt-1 text-foreground\">\n {detail.email.recipient}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.sender\")}\n </dt>\n <dd className=\"mt-1 text-foreground\">\n {detail.email.sender}\n </dd>\n </div>\n </dl>\n\n <div className=\"mt-4 flex flex-wrap gap-6 border-t pt-4 text-sm\">\n <div>\n <div className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.sends\")}\n </div>\n <div className=\"mt-1\">\n <SendsCell\n sent={detail.email.sent}\n failed={detail.email.failed}\n />\n </div>\n </div>\n <div>\n <div className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.openRate\")}\n </div>\n <div className=\"mt-1\">\n <OpenRateCell\n engagement={engagement}\n unavailableReason={engagementUnavailable}\n loading={engagementQuery.isLoading}\n />\n </div>\n </div>\n <div>\n <div className=\"text-xs font-medium text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.lastSent\")}\n </div>\n <div className=\"mt-1\">\n <LastSentCell\n lastSentAt={detail.email.lastSentAt}\n sent={detail.email.sent}\n />\n </div>\n </div>\n </div>\n </section>\n\n <section className=\"rounded-2xl bg-card p-5\">\n <h2 className=\"text-sm font-medium text-foreground\">\n {t(\"dispatch.transactionalEmail.preview\")}\n </h2>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.previewDescription\")}\n </p>\n <div className=\"mt-4\">\n <EmailPreviewPane\n appId={appId}\n appPath={detail.appPath}\n id={detail.email.id}\n name={detail.email.name}\n />\n </div>\n </section>\n\n <section className=\"rounded-2xl bg-card p-5\">\n <h2 className=\"text-sm font-medium text-foreground\">\n {t(\"dispatch.transactionalEmail.activityLink\")}\n </h2>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {t(\"dispatch.transactionalEmail.retentionNote\")}\n </p>\n <div className=\"mt-4\">\n <ActivityTable\n result={\n engagementUnavailable\n ? { available: false, reason: engagementUnavailable }\n : activityQuery.data\n }\n isLoading={activityQuery.isLoading}\n isError={activityQuery.isError}\n error={activityQuery.error}\n onRetry={() => void activityQuery.refetch()}\n />\n </div>\n </section>\n </>\n )}\n </div>\n </DispatchShell>\n );\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export declare function meta(): {
2
+ title: string;
3
+ }[];
4
+ export default function TransactionalEmailRoute(): import("node_modules/@types/react").JSX.Element;
5
+ //# sourceMappingURL=transactional-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional-email.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/transactional-email.tsx"],"names":[],"mappings":"AA4DA,wBAAgB,IAAI;;IAEnB;AA6UD,MAAM,CAAC,OAAO,UAAU,uBAAuB,oDAmL9C"}