@agent-native/dispatch 0.12.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (766) hide show
  1. package/dist/actions/apply-dream-proposal.d.ts +14 -14
  2. package/dist/actions/apply-dream-proposal.d.ts.map +1 -1
  3. package/dist/actions/apply-dream-proposal.js.map +1 -1
  4. package/dist/actions/approve-dispatch-change.d.ts.map +1 -1
  5. package/dist/actions/approve-dispatch-change.js.map +1 -1
  6. package/dist/actions/approve-vault-request.d.ts.map +1 -1
  7. package/dist/actions/approve-vault-request.js.map +1 -1
  8. package/dist/actions/archive-workspace-app.d.ts.map +1 -1
  9. package/dist/actions/archive-workspace-app.js.map +1 -1
  10. package/dist/actions/ask_app.d.ts.map +1 -1
  11. package/dist/actions/ask_app.js.map +1 -1
  12. package/dist/actions/create-dream-report.d.ts +26 -26
  13. package/dist/actions/create-dream-report.d.ts.map +1 -1
  14. package/dist/actions/create-dream-report.js.map +1 -1
  15. package/dist/actions/create-link-token.d.ts +1 -1
  16. package/dist/actions/create-link-token.d.ts.map +1 -1
  17. package/dist/actions/create-link-token.js.map +1 -1
  18. package/dist/actions/create-pylon-ticket.d.ts +1 -1
  19. package/dist/actions/create-pylon-ticket.d.ts.map +1 -1
  20. package/dist/actions/create-pylon-ticket.js.map +1 -1
  21. package/dist/actions/create-vault-grant.d.ts.map +1 -1
  22. package/dist/actions/create-vault-grant.js.map +1 -1
  23. package/dist/actions/create-vault-secret.d.ts.map +1 -1
  24. package/dist/actions/create-vault-secret.js.map +1 -1
  25. package/dist/actions/create-workspace-resource-grant.d.ts.map +1 -1
  26. package/dist/actions/create-workspace-resource-grant.js.map +1 -1
  27. package/dist/actions/create-workspace-resource.d.ts +2 -2
  28. package/dist/actions/create-workspace-resource.d.ts.map +1 -1
  29. package/dist/actions/create-workspace-resource.js.map +1 -1
  30. package/dist/actions/create_embed_session.d.ts.map +1 -1
  31. package/dist/actions/create_embed_session.js.map +1 -1
  32. package/dist/actions/delete-destination.d.ts +12 -12
  33. package/dist/actions/delete-destination.d.ts.map +1 -1
  34. package/dist/actions/delete-destination.js.map +1 -1
  35. package/dist/actions/delete-staged-dataset.d.ts.map +1 -1
  36. package/dist/actions/delete-staged-dataset.js.map +1 -1
  37. package/dist/actions/delete-vault-secret.d.ts.map +1 -1
  38. package/dist/actions/delete-vault-secret.js.map +1 -1
  39. package/dist/actions/delete-workspace-resource.d.ts +13 -13
  40. package/dist/actions/delete-workspace-resource.d.ts.map +1 -1
  41. package/dist/actions/delete-workspace-resource.js.map +1 -1
  42. package/dist/actions/deny-vault-request.d.ts.map +1 -1
  43. package/dist/actions/deny-vault-request.js.map +1 -1
  44. package/dist/actions/ensure-dream-job.d.ts.map +1 -1
  45. package/dist/actions/ensure-dream-job.js.map +1 -1
  46. package/dist/actions/get-agent-thread-debug.d.ts +2 -2
  47. package/dist/actions/get-agent-thread-debug.d.ts.map +1 -1
  48. package/dist/actions/get-agent-thread-debug.js.map +1 -1
  49. package/dist/actions/get-app-creation-settings.d.ts.map +1 -1
  50. package/dist/actions/get-app-creation-settings.js.map +1 -1
  51. package/dist/actions/get-dispatch-settings.d.ts.map +1 -1
  52. package/dist/actions/get-dispatch-settings.js.map +1 -1
  53. package/dist/actions/get-dream-settings.d.ts.map +1 -1
  54. package/dist/actions/get-dream-settings.js.map +1 -1
  55. package/dist/actions/get-dream.d.ts +26 -26
  56. package/dist/actions/get-dream.d.ts.map +1 -1
  57. package/dist/actions/get-dream.js.map +1 -1
  58. package/dist/actions/get-vault-access-settings.d.ts.map +1 -1
  59. package/dist/actions/get-vault-access-settings.js.map +1 -1
  60. package/dist/actions/get-workspace-info.d.ts.map +1 -1
  61. package/dist/actions/get-workspace-info.js.map +1 -1
  62. package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -1
  63. package/dist/actions/get-workspace-resource-effective-context.js.map +1 -1
  64. package/dist/actions/grant-vault-secrets-to-app.d.ts.map +1 -1
  65. package/dist/actions/grant-vault-secrets-to-app.js.map +1 -1
  66. package/dist/actions/grant-workspace-resources-to-app.d.ts.map +1 -1
  67. package/dist/actions/grant-workspace-resources-to-app.js.map +1 -1
  68. package/dist/actions/index.d.ts.map +1 -1
  69. package/dist/actions/index.js +12 -12
  70. package/dist/actions/index.js.map +1 -1
  71. package/dist/actions/list-agent-thread-sources.d.ts.map +1 -1
  72. package/dist/actions/list-agent-thread-sources.js.map +1 -1
  73. package/dist/actions/list-available-workspace-templates.d.ts.map +1 -1
  74. package/dist/actions/list-available-workspace-templates.js.map +1 -1
  75. package/dist/actions/list-connected-agents.d.ts +4 -4
  76. package/dist/actions/list-connected-agents.d.ts.map +1 -1
  77. package/dist/actions/list-connected-agents.js +4 -4
  78. package/dist/actions/list-connected-agents.js.map +1 -1
  79. package/dist/actions/list-destinations.d.ts.map +1 -1
  80. package/dist/actions/list-destinations.js.map +1 -1
  81. package/dist/actions/list-dispatch-approvals.d.ts.map +1 -1
  82. package/dist/actions/list-dispatch-approvals.js.map +1 -1
  83. package/dist/actions/list-dispatch-audit.d.ts.map +1 -1
  84. package/dist/actions/list-dispatch-audit.js.map +1 -1
  85. package/dist/actions/list-dispatch-overview.d.ts +7 -7
  86. package/dist/actions/list-dispatch-overview.d.ts.map +1 -1
  87. package/dist/actions/list-dispatch-overview.js.map +1 -1
  88. package/dist/actions/list-dispatch-usage-metrics.d.ts.map +1 -1
  89. package/dist/actions/list-dispatch-usage-metrics.js.map +1 -1
  90. package/dist/actions/list-dream-candidates.d.ts.map +1 -1
  91. package/dist/actions/list-dream-candidates.js.map +1 -1
  92. package/dist/actions/list-dreams.d.ts +14 -14
  93. package/dist/actions/list-dreams.d.ts.map +1 -1
  94. package/dist/actions/list-dreams.js.map +1 -1
  95. package/dist/actions/list-integrations-catalog.d.ts.map +1 -1
  96. package/dist/actions/list-integrations-catalog.js.map +1 -1
  97. package/dist/actions/list-linked-identities.d.ts.map +1 -1
  98. package/dist/actions/list-linked-identities.js.map +1 -1
  99. package/dist/actions/list-mcp-app-access.d.ts.map +1 -1
  100. package/dist/actions/list-mcp-app-access.js.map +1 -1
  101. package/dist/actions/list-staged-datasets.d.ts.map +1 -1
  102. package/dist/actions/list-staged-datasets.js.map +1 -1
  103. package/dist/actions/list-vault-audit.d.ts.map +1 -1
  104. package/dist/actions/list-vault-audit.js.map +1 -1
  105. package/dist/actions/list-vault-grants.d.ts.map +1 -1
  106. package/dist/actions/list-vault-grants.js.map +1 -1
  107. package/dist/actions/list-vault-requests.d.ts +1 -1
  108. package/dist/actions/list-vault-requests.d.ts.map +1 -1
  109. package/dist/actions/list-vault-requests.js.map +1 -1
  110. package/dist/actions/list-vault-secret-options.d.ts.map +1 -1
  111. package/dist/actions/list-vault-secret-options.js.map +1 -1
  112. package/dist/actions/list-vault-secrets.d.ts.map +1 -1
  113. package/dist/actions/list-vault-secrets.js.map +1 -1
  114. package/dist/actions/list-workspace-apps.d.ts.map +1 -1
  115. package/dist/actions/list-workspace-apps.js.map +1 -1
  116. package/dist/actions/list-workspace-resource-grants.d.ts.map +1 -1
  117. package/dist/actions/list-workspace-resource-grants.js.map +1 -1
  118. package/dist/actions/list-workspace-resource-options.d.ts +1 -1
  119. package/dist/actions/list-workspace-resource-options.d.ts.map +1 -1
  120. package/dist/actions/list-workspace-resource-options.js.map +1 -1
  121. package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -1
  122. package/dist/actions/list-workspace-resources-for-app.js.map +1 -1
  123. package/dist/actions/list-workspace-resources.d.ts +1 -1
  124. package/dist/actions/list-workspace-resources.d.ts.map +1 -1
  125. package/dist/actions/list-workspace-resources.js.map +1 -1
  126. package/dist/actions/list_apps.d.ts.map +1 -1
  127. package/dist/actions/list_apps.js.map +1 -1
  128. package/dist/actions/navigate.d.ts.map +1 -1
  129. package/dist/actions/navigate.js +1 -1
  130. package/dist/actions/navigate.js.map +1 -1
  131. package/dist/actions/open_app.d.ts.map +1 -1
  132. package/dist/actions/open_app.js.map +1 -1
  133. package/dist/actions/preview-dream-proposal.d.ts +15 -15
  134. package/dist/actions/preview-dream-proposal.d.ts.map +1 -1
  135. package/dist/actions/preview-dream-proposal.js.map +1 -1
  136. package/dist/actions/preview-workspace-resource-change.d.ts +1 -1
  137. package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -1
  138. package/dist/actions/preview-workspace-resource-change.js.map +1 -1
  139. package/dist/actions/provider-api-catalog.d.ts +4 -4
  140. package/dist/actions/provider-api-catalog.d.ts.map +1 -1
  141. package/dist/actions/provider-api-catalog.js.map +1 -1
  142. package/dist/actions/provider-api-docs.d.ts +3 -3
  143. package/dist/actions/provider-api-docs.d.ts.map +1 -1
  144. package/dist/actions/provider-api-docs.js.map +1 -1
  145. package/dist/actions/provider-api-register.d.ts +14 -14
  146. package/dist/actions/provider-api-register.d.ts.map +1 -1
  147. package/dist/actions/provider-api-register.js +1 -1
  148. package/dist/actions/provider-api-register.js.map +1 -1
  149. package/dist/actions/provider-api-request.d.ts +1 -1
  150. package/dist/actions/provider-api-request.d.ts.map +1 -1
  151. package/dist/actions/provider-api-request.js.map +1 -1
  152. package/dist/actions/query-staged-dataset.d.ts +2 -2
  153. package/dist/actions/query-staged-dataset.d.ts.map +1 -1
  154. package/dist/actions/query-staged-dataset.js.map +1 -1
  155. package/dist/actions/reject-dispatch-change.d.ts.map +1 -1
  156. package/dist/actions/reject-dispatch-change.js.map +1 -1
  157. package/dist/actions/reject-dream-proposal.d.ts +14 -14
  158. package/dist/actions/reject-dream-proposal.d.ts.map +1 -1
  159. package/dist/actions/reject-dream-proposal.js.map +1 -1
  160. package/dist/actions/remove-pending-workspace-app.d.ts.map +1 -1
  161. package/dist/actions/remove-pending-workspace-app.js.map +1 -1
  162. package/dist/actions/request-vault-secret.d.ts.map +1 -1
  163. package/dist/actions/request-vault-secret.js.map +1 -1
  164. package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -1
  165. package/dist/actions/restore-starter-workspace-resources.js.map +1 -1
  166. package/dist/actions/revoke-vault-grant.d.ts.map +1 -1
  167. package/dist/actions/revoke-vault-grant.js.map +1 -1
  168. package/dist/actions/revoke-workspace-resource-grant.d.ts.map +1 -1
  169. package/dist/actions/revoke-workspace-resource-grant.js.map +1 -1
  170. package/dist/actions/scaffold-workspace-app.d.ts.map +1 -1
  171. package/dist/actions/scaffold-workspace-app.js.map +1 -1
  172. package/dist/actions/search-agent-threads.d.ts +1 -1
  173. package/dist/actions/search-agent-threads.d.ts.map +1 -1
  174. package/dist/actions/search-agent-threads.js.map +1 -1
  175. package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -1
  176. package/dist/actions/send-code-agent-remote-command.js.map +1 -1
  177. package/dist/actions/send-platform-message.d.ts +3 -3
  178. package/dist/actions/send-platform-message.d.ts.map +1 -1
  179. package/dist/actions/send-platform-message.js +1 -1
  180. package/dist/actions/send-platform-message.js.map +1 -1
  181. package/dist/actions/set-app-creation-settings.d.ts.map +1 -1
  182. package/dist/actions/set-app-creation-settings.js.map +1 -1
  183. package/dist/actions/set-dispatch-approval-policy.d.ts.map +1 -1
  184. package/dist/actions/set-dispatch-approval-policy.js.map +1 -1
  185. package/dist/actions/set-dream-settings.d.ts.map +1 -1
  186. package/dist/actions/set-dream-settings.js.map +1 -1
  187. package/dist/actions/set-mcp-app-access.d.ts.map +1 -1
  188. package/dist/actions/set-mcp-app-access.js +2 -2
  189. package/dist/actions/set-mcp-app-access.js.map +1 -1
  190. package/dist/actions/set-vault-access-settings.d.ts.map +1 -1
  191. package/dist/actions/set-vault-access-settings.js.map +1 -1
  192. package/dist/actions/start-workspace-app-creation.d.ts +4 -4
  193. package/dist/actions/start-workspace-app-creation.d.ts.map +1 -1
  194. package/dist/actions/start-workspace-app-creation.js.map +1 -1
  195. package/dist/actions/sync-vault-to-app.d.ts +1 -1
  196. package/dist/actions/sync-vault-to-app.d.ts.map +1 -1
  197. package/dist/actions/sync-vault-to-app.js.map +1 -1
  198. package/dist/actions/unarchive-workspace-app.d.ts.map +1 -1
  199. package/dist/actions/unarchive-workspace-app.js.map +1 -1
  200. package/dist/actions/update-vault-secret.d.ts.map +1 -1
  201. package/dist/actions/update-vault-secret.js.map +1 -1
  202. package/dist/actions/update-workspace-app-metadata.d.ts.map +1 -1
  203. package/dist/actions/update-workspace-app-metadata.js.map +1 -1
  204. package/dist/actions/update-workspace-resource.d.ts.map +1 -1
  205. package/dist/actions/update-workspace-resource.js.map +1 -1
  206. package/dist/actions/upsert-destination.d.ts +2 -2
  207. package/dist/actions/upsert-destination.d.ts.map +1 -1
  208. package/dist/actions/upsert-destination.js.map +1 -1
  209. package/dist/actions/view-screen.d.ts.map +1 -1
  210. package/dist/actions/view-screen.js +3 -3
  211. package/dist/actions/view-screen.js.map +1 -1
  212. package/dist/components/agents-panel.d.ts +1 -1
  213. package/dist/components/agents-panel.d.ts.map +1 -1
  214. package/dist/components/agents-panel.js +3 -3
  215. package/dist/components/agents-panel.js.map +1 -1
  216. package/dist/components/app-keys-popover.d.ts +1 -1
  217. package/dist/components/app-keys-popover.d.ts.map +1 -1
  218. package/dist/components/app-keys-popover.js +2 -2
  219. package/dist/components/app-keys-popover.js.map +1 -1
  220. package/dist/components/approval-value-block.d.ts +1 -1
  221. package/dist/components/approval-value-block.d.ts.map +1 -1
  222. package/dist/components/create-app-popover.d.ts +2 -2
  223. package/dist/components/create-app-popover.d.ts.map +1 -1
  224. package/dist/components/create-app-popover.js +3 -3
  225. package/dist/components/create-app-popover.js.map +1 -1
  226. package/dist/components/dispatch-control-plane.d.ts +1 -1
  227. package/dist/components/dispatch-control-plane.d.ts.map +1 -1
  228. package/dist/components/dispatch-control-plane.js +6 -6
  229. package/dist/components/dispatch-control-plane.js.map +1 -1
  230. package/dist/components/dispatch-shell.d.ts +1 -1
  231. package/dist/components/dispatch-shell.d.ts.map +1 -1
  232. package/dist/components/dispatch-shell.js +2 -2
  233. package/dist/components/dispatch-shell.js.map +1 -1
  234. package/dist/components/layout/Header.d.ts +1 -1
  235. package/dist/components/layout/Header.d.ts.map +1 -1
  236. package/dist/components/layout/Header.js +3 -3
  237. package/dist/components/layout/Header.js.map +1 -1
  238. package/dist/components/layout/Layout.d.ts +2 -2
  239. package/dist/components/layout/Layout.d.ts.map +1 -1
  240. package/dist/components/layout/Layout.js +4 -4
  241. package/dist/components/layout/Layout.js.map +1 -1
  242. package/dist/components/messaging-setup-panel.d.ts +1 -1
  243. package/dist/components/messaging-setup-panel.d.ts.map +1 -1
  244. package/dist/components/messaging-setup-panel.js +3 -3
  245. package/dist/components/messaging-setup-panel.js.map +1 -1
  246. package/dist/components/ui/accordion.d.ts +2 -2
  247. package/dist/components/ui/accordion.d.ts.map +1 -1
  248. package/dist/components/ui/accordion.js +1 -1
  249. package/dist/components/ui/accordion.js.map +1 -1
  250. package/dist/components/ui/alert-dialog.d.ts +9 -9
  251. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  252. package/dist/components/ui/alert-dialog.js +2 -2
  253. package/dist/components/ui/alert-dialog.js.map +1 -1
  254. package/dist/components/ui/alert.d.ts +2 -2
  255. package/dist/components/ui/alert.d.ts.map +1 -1
  256. package/dist/components/ui/alert.js +1 -1
  257. package/dist/components/ui/alert.js.map +1 -1
  258. package/dist/components/ui/aspect-ratio.d.ts +1 -1
  259. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  260. package/dist/components/ui/avatar.d.ts +1 -1
  261. package/dist/components/ui/avatar.d.ts.map +1 -1
  262. package/dist/components/ui/avatar.js +1 -1
  263. package/dist/components/ui/avatar.js.map +1 -1
  264. package/dist/components/ui/badge.d.ts +3 -3
  265. package/dist/components/ui/badge.d.ts.map +1 -1
  266. package/dist/components/ui/badge.js.map +1 -1
  267. package/dist/components/ui/breadcrumb.d.ts +8 -8
  268. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  269. package/dist/components/ui/breadcrumb.js +1 -1
  270. package/dist/components/ui/breadcrumb.js.map +1 -1
  271. package/dist/components/ui/button.d.ts +4 -4
  272. package/dist/components/ui/button.d.ts.map +1 -1
  273. package/dist/components/ui/button.js +1 -1
  274. package/dist/components/ui/button.js.map +1 -1
  275. package/dist/components/ui/calendar.d.ts +1 -1
  276. package/dist/components/ui/calendar.d.ts.map +1 -1
  277. package/dist/components/ui/calendar.js +1 -1
  278. package/dist/components/ui/calendar.js.map +1 -1
  279. package/dist/components/ui/carousel.d.ts +1 -1
  280. package/dist/components/ui/carousel.d.ts.map +1 -1
  281. package/dist/components/ui/carousel.js +3 -3
  282. package/dist/components/ui/carousel.js.map +1 -1
  283. package/dist/components/ui/chart.d.ts +12 -12
  284. package/dist/components/ui/chart.d.ts.map +1 -1
  285. package/dist/components/ui/chart.js +1 -1
  286. package/dist/components/ui/checkbox.d.ts +1 -1
  287. package/dist/components/ui/checkbox.d.ts.map +1 -1
  288. package/dist/components/ui/checkbox.js +1 -1
  289. package/dist/components/ui/checkbox.js.map +1 -1
  290. package/dist/components/ui/collapsible.d.ts +3 -3
  291. package/dist/components/ui/collapsible.d.ts.map +1 -1
  292. package/dist/components/ui/command.d.ts +13 -13
  293. package/dist/components/ui/command.d.ts.map +1 -1
  294. package/dist/components/ui/command.js +3 -3
  295. package/dist/components/ui/command.js.map +1 -1
  296. package/dist/components/ui/context-menu.d.ts +5 -5
  297. package/dist/components/ui/context-menu.d.ts.map +1 -1
  298. package/dist/components/ui/context-menu.js +1 -1
  299. package/dist/components/ui/context-menu.js.map +1 -1
  300. package/dist/components/ui/dialog.d.ts +9 -9
  301. package/dist/components/ui/dialog.d.ts.map +1 -1
  302. package/dist/components/ui/dialog.js +1 -1
  303. package/dist/components/ui/dialog.js.map +1 -1
  304. package/dist/components/ui/drawer.d.ts +19 -19
  305. package/dist/components/ui/drawer.d.ts.map +1 -1
  306. package/dist/components/ui/dropdown-menu.d.ts +5 -5
  307. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  308. package/dist/components/ui/dropdown-menu.js +1 -1
  309. package/dist/components/ui/dropdown-menu.js.map +1 -1
  310. package/dist/components/ui/form.d.ts +7 -5
  311. package/dist/components/ui/form.d.ts.map +1 -1
  312. package/dist/components/ui/form.js +2 -2
  313. package/dist/components/ui/form.js.map +1 -1
  314. package/dist/components/ui/hover-card.d.ts +1 -1
  315. package/dist/components/ui/hover-card.d.ts.map +1 -1
  316. package/dist/components/ui/hover-card.js +1 -1
  317. package/dist/components/ui/hover-card.js.map +1 -1
  318. package/dist/components/ui/input-otp.d.ts +7 -7
  319. package/dist/components/ui/input-otp.d.ts.map +1 -1
  320. package/dist/components/ui/input-otp.js +2 -2
  321. package/dist/components/ui/input-otp.js.map +1 -1
  322. package/dist/components/ui/label.d.ts +2 -2
  323. package/dist/components/ui/label.d.ts.map +1 -1
  324. package/dist/components/ui/label.js +1 -1
  325. package/dist/components/ui/label.js.map +1 -1
  326. package/dist/components/ui/menubar.d.ts +5 -5
  327. package/dist/components/ui/menubar.d.ts.map +1 -1
  328. package/dist/components/ui/menubar.js +1 -1
  329. package/dist/components/ui/menubar.js.map +1 -1
  330. package/dist/components/ui/navigation-menu.d.ts +2 -2
  331. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  332. package/dist/components/ui/navigation-menu.js +2 -2
  333. package/dist/components/ui/navigation-menu.js.map +1 -1
  334. package/dist/components/ui/pagination.d.ts +20 -20
  335. package/dist/components/ui/pagination.d.ts.map +1 -1
  336. package/dist/components/ui/pagination.js +2 -2
  337. package/dist/components/ui/pagination.js.map +1 -1
  338. package/dist/components/ui/popover.d.ts +1 -1
  339. package/dist/components/ui/popover.d.ts.map +1 -1
  340. package/dist/components/ui/popover.js +1 -1
  341. package/dist/components/ui/popover.js.map +1 -1
  342. package/dist/components/ui/progress.d.ts +1 -1
  343. package/dist/components/ui/progress.d.ts.map +1 -1
  344. package/dist/components/ui/progress.js +1 -1
  345. package/dist/components/ui/progress.js.map +1 -1
  346. package/dist/components/ui/radio-group.d.ts +1 -1
  347. package/dist/components/ui/radio-group.d.ts.map +1 -1
  348. package/dist/components/ui/radio-group.js +1 -1
  349. package/dist/components/ui/radio-group.js.map +1 -1
  350. package/dist/components/ui/resizable.d.ts +2 -2
  351. package/dist/components/ui/resizable.d.ts.map +1 -1
  352. package/dist/components/ui/scroll-area.d.ts +1 -1
  353. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  354. package/dist/components/ui/scroll-area.js +1 -1
  355. package/dist/components/ui/scroll-area.js.map +1 -1
  356. package/dist/components/ui/select.d.ts +1 -1
  357. package/dist/components/ui/select.d.ts.map +1 -1
  358. package/dist/components/ui/select.js +1 -1
  359. package/dist/components/ui/select.js.map +1 -1
  360. package/dist/components/ui/separator.d.ts +1 -1
  361. package/dist/components/ui/separator.d.ts.map +1 -1
  362. package/dist/components/ui/separator.js +1 -1
  363. package/dist/components/ui/separator.js.map +1 -1
  364. package/dist/components/ui/sheet.d.ts +10 -10
  365. package/dist/components/ui/sheet.d.ts.map +1 -1
  366. package/dist/components/ui/sheet.js +1 -1
  367. package/dist/components/ui/sheet.js.map +1 -1
  368. package/dist/components/ui/sidebar.d.ts +4 -4
  369. package/dist/components/ui/sidebar.d.ts.map +1 -1
  370. package/dist/components/ui/sidebar.js +4 -4
  371. package/dist/components/ui/sidebar.js.map +1 -1
  372. package/dist/components/ui/skeleton.d.ts +1 -1
  373. package/dist/components/ui/skeleton.d.ts.map +1 -1
  374. package/dist/components/ui/slider.d.ts +1 -1
  375. package/dist/components/ui/slider.d.ts.map +1 -1
  376. package/dist/components/ui/slider.js +1 -1
  377. package/dist/components/ui/slider.js.map +1 -1
  378. package/dist/components/ui/sonner.d.ts +1 -1
  379. package/dist/components/ui/sonner.d.ts.map +1 -1
  380. package/dist/components/ui/spinner.d.ts +1 -1
  381. package/dist/components/ui/spinner.d.ts.map +1 -1
  382. package/dist/components/ui/switch.d.ts +1 -1
  383. package/dist/components/ui/switch.d.ts.map +1 -1
  384. package/dist/components/ui/switch.js +1 -1
  385. package/dist/components/ui/switch.js.map +1 -1
  386. package/dist/components/ui/tabs.d.ts +1 -1
  387. package/dist/components/ui/tabs.d.ts.map +1 -1
  388. package/dist/components/ui/tabs.js +1 -1
  389. package/dist/components/ui/tabs.js.map +1 -1
  390. package/dist/components/ui/toast.d.ts +2 -2
  391. package/dist/components/ui/toast.d.ts.map +1 -1
  392. package/dist/components/ui/toast.js +2 -2
  393. package/dist/components/ui/toast.js.map +1 -1
  394. package/dist/components/ui/toaster.d.ts +1 -1
  395. package/dist/components/ui/toaster.d.ts.map +1 -1
  396. package/dist/components/ui/toaster.js +1 -1
  397. package/dist/components/ui/toaster.js.map +1 -1
  398. package/dist/components/ui/toggle-group.d.ts +6 -6
  399. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  400. package/dist/components/ui/toggle-group.js +2 -2
  401. package/dist/components/ui/toggle-group.js.map +1 -1
  402. package/dist/components/ui/toggle.d.ts +5 -5
  403. package/dist/components/ui/toggle.d.ts.map +1 -1
  404. package/dist/components/ui/toggle.js +1 -1
  405. package/dist/components/ui/toggle.js.map +1 -1
  406. package/dist/components/ui/tooltip.d.ts +1 -1
  407. package/dist/components/ui/tooltip.d.ts.map +1 -1
  408. package/dist/components/ui/tooltip.js +1 -1
  409. package/dist/components/ui/tooltip.js.map +1 -1
  410. package/dist/components/workspace-app-card.d.ts +1 -1
  411. package/dist/components/workspace-app-card.d.ts.map +1 -1
  412. package/dist/components/workspace-app-card.js +2 -2
  413. package/dist/components/workspace-app-card.js.map +1 -1
  414. package/dist/components/workspace-resource-effective-stack.d.ts +2 -2
  415. package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -1
  416. package/dist/components/workspace-resource-effective-stack.js +1 -1
  417. package/dist/components/workspace-resource-effective-stack.js.map +1 -1
  418. package/dist/components/workspace-resource-impact-preview.d.ts +1 -1
  419. package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -1
  420. package/dist/components/workspace-resource-impact-preview.js.map +1 -1
  421. package/dist/db/index.d.ts.map +1 -1
  422. package/dist/db/index.js.map +1 -1
  423. package/dist/db/schema.d.ts +13 -13
  424. package/dist/hooks/use-navigation-state.d.ts.map +1 -1
  425. package/dist/hooks/use-navigation-state.js +3 -3
  426. package/dist/hooks/use-navigation-state.js.map +1 -1
  427. package/dist/hooks/use-toast.d.ts +1 -1
  428. package/dist/hooks/use-toast.d.ts.map +1 -1
  429. package/dist/hooks/use-toast.js.map +1 -1
  430. package/dist/lib/catch-all-target.js.map +1 -1
  431. package/dist/lib/thread-link-preview.d.ts +4 -4
  432. package/dist/routes/pages/$appId.d.ts +1 -1
  433. package/dist/routes/pages/$appId.d.ts.map +1 -1
  434. package/dist/routes/pages/$appId.js +5 -4
  435. package/dist/routes/pages/$appId.js.map +1 -1
  436. package/dist/routes/pages/_index.d.ts +7 -7
  437. package/dist/routes/pages/_index.d.ts.map +1 -1
  438. package/dist/routes/pages/_index.js +6 -7
  439. package/dist/routes/pages/_index.js.map +1 -1
  440. package/dist/routes/pages/agents.d.ts +1 -1
  441. package/dist/routes/pages/agents.d.ts.map +1 -1
  442. package/dist/routes/pages/agents.js +16 -10
  443. package/dist/routes/pages/agents.js.map +1 -1
  444. package/dist/routes/pages/approval.d.ts +1 -1
  445. package/dist/routes/pages/approval.d.ts.map +1 -1
  446. package/dist/routes/pages/approval.js +3 -3
  447. package/dist/routes/pages/approval.js.map +1 -1
  448. package/dist/routes/pages/approvals.d.ts +1 -1
  449. package/dist/routes/pages/approvals.d.ts.map +1 -1
  450. package/dist/routes/pages/approvals.js +1 -1
  451. package/dist/routes/pages/approvals.js.map +1 -1
  452. package/dist/routes/pages/apps.$appId.d.ts +1 -1
  453. package/dist/routes/pages/apps.$appId.d.ts.map +1 -1
  454. package/dist/routes/pages/apps.$appId.js +4 -3
  455. package/dist/routes/pages/apps.$appId.js.map +1 -1
  456. package/dist/routes/pages/apps.d.ts +1 -1
  457. package/dist/routes/pages/apps.d.ts.map +1 -1
  458. package/dist/routes/pages/apps.js +32 -14
  459. package/dist/routes/pages/apps.js.map +1 -1
  460. package/dist/routes/pages/audit.d.ts +1 -1
  461. package/dist/routes/pages/audit.d.ts.map +1 -1
  462. package/dist/routes/pages/audit.js.map +1 -1
  463. package/dist/routes/pages/chat.d.ts +1 -1
  464. package/dist/routes/pages/chat.d.ts.map +1 -1
  465. package/dist/routes/pages/chat.js +1 -1
  466. package/dist/routes/pages/chat.js.map +1 -1
  467. package/dist/routes/pages/destinations.d.ts +1 -1
  468. package/dist/routes/pages/destinations.d.ts.map +1 -1
  469. package/dist/routes/pages/destinations.js +20 -14
  470. package/dist/routes/pages/destinations.js.map +1 -1
  471. package/dist/routes/pages/dreams.d.ts +1 -1
  472. package/dist/routes/pages/dreams.d.ts.map +1 -1
  473. package/dist/routes/pages/dreams.js +4 -3
  474. package/dist/routes/pages/dreams.js.map +1 -1
  475. package/dist/routes/pages/extensions.$id.d.ts +1 -1
  476. package/dist/routes/pages/extensions.$id.d.ts.map +1 -1
  477. package/dist/routes/pages/extensions._index.d.ts +1 -1
  478. package/dist/routes/pages/extensions._index.d.ts.map +1 -1
  479. package/dist/routes/pages/identities.d.ts +1 -1
  480. package/dist/routes/pages/identities.d.ts.map +1 -1
  481. package/dist/routes/pages/identities.js.map +1 -1
  482. package/dist/routes/pages/integrations.d.ts +1 -1
  483. package/dist/routes/pages/integrations.d.ts.map +1 -1
  484. package/dist/routes/pages/integrations.js +3 -3
  485. package/dist/routes/pages/integrations.js.map +1 -1
  486. package/dist/routes/pages/messaging.d.ts +1 -1
  487. package/dist/routes/pages/messaging.d.ts.map +1 -1
  488. package/dist/routes/pages/messaging.js +1 -1
  489. package/dist/routes/pages/messaging.js.map +1 -1
  490. package/dist/routes/pages/metrics.d.ts +1 -1
  491. package/dist/routes/pages/metrics.d.ts.map +1 -1
  492. package/dist/routes/pages/metrics.js +10 -7
  493. package/dist/routes/pages/metrics.js.map +1 -1
  494. package/dist/routes/pages/new-app.d.ts +1 -1
  495. package/dist/routes/pages/new-app.d.ts.map +1 -1
  496. package/dist/routes/pages/new-app.js +3 -2
  497. package/dist/routes/pages/new-app.js.map +1 -1
  498. package/dist/routes/pages/overview.d.ts +7 -7
  499. package/dist/routes/pages/overview.d.ts.map +1 -1
  500. package/dist/routes/pages/settings.d.ts +1 -1
  501. package/dist/routes/pages/settings.d.ts.map +1 -1
  502. package/dist/routes/pages/settings.js +1 -1
  503. package/dist/routes/pages/settings.js.map +1 -1
  504. package/dist/routes/pages/team.d.ts +1 -1
  505. package/dist/routes/pages/team.d.ts.map +1 -1
  506. package/dist/routes/pages/team.js.map +1 -1
  507. package/dist/routes/pages/thread-debug.d.ts +1 -1
  508. package/dist/routes/pages/thread-debug.d.ts.map +1 -1
  509. package/dist/routes/pages/thread-debug.js +4 -3
  510. package/dist/routes/pages/thread-debug.js.map +1 -1
  511. package/dist/routes/pages/tools.$id.d.ts +1 -1
  512. package/dist/routes/pages/tools.$id.d.ts.map +1 -1
  513. package/dist/routes/pages/tools._index.d.ts +1 -1
  514. package/dist/routes/pages/tools._index.d.ts.map +1 -1
  515. package/dist/routes/pages/vault.d.ts +1 -1
  516. package/dist/routes/pages/vault.d.ts.map +1 -1
  517. package/dist/routes/pages/vault.js +5 -5
  518. package/dist/routes/pages/vault.js.map +1 -1
  519. package/dist/routes/pages/workspace.d.ts +1 -1
  520. package/dist/routes/pages/workspace.d.ts.map +1 -1
  521. package/dist/routes/pages/workspace.js +5 -5
  522. package/dist/routes/pages/workspace.js.map +1 -1
  523. package/dist/server/index.d.ts.map +1 -1
  524. package/dist/server/index.js.map +1 -1
  525. package/dist/server/lib/app-creation-store.d.ts +4 -4
  526. package/dist/server/lib/app-creation-store.d.ts.map +1 -1
  527. package/dist/server/lib/app-creation-store.js +3 -3
  528. package/dist/server/lib/app-creation-store.js.map +1 -1
  529. package/dist/server/lib/dispatch-integrations.d.ts.map +1 -1
  530. package/dist/server/lib/dispatch-integrations.js +2 -2
  531. package/dist/server/lib/dispatch-integrations.js.map +1 -1
  532. package/dist/server/lib/dispatch-store.d.ts.map +1 -1
  533. package/dist/server/lib/dispatch-store.js +2 -2
  534. package/dist/server/lib/dispatch-store.js.map +1 -1
  535. package/dist/server/lib/dreams-store.d.ts +122 -122
  536. package/dist/server/lib/dreams-store.d.ts.map +1 -1
  537. package/dist/server/lib/dreams-store.js +1 -1
  538. package/dist/server/lib/dreams-store.js.map +1 -1
  539. package/dist/server/lib/mcp-access-store.js +1 -1
  540. package/dist/server/lib/mcp-access-store.js.map +1 -1
  541. package/dist/server/lib/mcp-gateway.d.ts.map +1 -1
  542. package/dist/server/lib/mcp-gateway.js +1 -1
  543. package/dist/server/lib/mcp-gateway.js.map +1 -1
  544. package/dist/server/lib/onboarding-steps.d.ts.map +1 -1
  545. package/dist/server/lib/onboarding-steps.js.map +1 -1
  546. package/dist/server/lib/provider-api.d.ts +2 -2
  547. package/dist/server/lib/thread-debug-store.d.ts +2 -2
  548. package/dist/server/lib/thread-debug-store.d.ts.map +1 -1
  549. package/dist/server/lib/thread-debug-store.js.map +1 -1
  550. package/dist/server/lib/thread-link-preview.d.ts.map +1 -1
  551. package/dist/server/lib/thread-link-preview.js.map +1 -1
  552. package/dist/server/lib/usage-metrics-store.d.ts.map +1 -1
  553. package/dist/server/lib/usage-metrics-store.js +3 -3
  554. package/dist/server/lib/usage-metrics-store.js.map +1 -1
  555. package/dist/server/lib/vault-store.d.ts +2 -2
  556. package/dist/server/lib/vault-store.d.ts.map +1 -1
  557. package/dist/server/lib/vault-store.js +2 -2
  558. package/dist/server/lib/vault-store.js.map +1 -1
  559. package/dist/server/lib/workspace-resources-store.d.ts.map +1 -1
  560. package/dist/server/lib/workspace-resources-store.js +2 -2
  561. package/dist/server/lib/workspace-resources-store.js.map +1 -1
  562. package/dist/server/plugins/agent-chat.d.ts.map +1 -1
  563. package/dist/server/plugins/agent-chat.js +1 -1
  564. package/dist/server/plugins/agent-chat.js.map +1 -1
  565. package/dist/server/plugins/auth.d.ts.map +1 -1
  566. package/dist/server/plugins/auth.js.map +1 -1
  567. package/dist/server/plugins/core-routes.d.ts.map +1 -1
  568. package/dist/server/plugins/core-routes.js.map +1 -1
  569. package/dist/server/plugins/db.d.ts.map +1 -1
  570. package/dist/server/plugins/db.js.map +1 -1
  571. package/dist/server/plugins/integrations.d.ts.map +1 -1
  572. package/dist/server/plugins/integrations.js +2 -2
  573. package/dist/server/plugins/integrations.js.map +1 -1
  574. package/package.json +29 -29
  575. package/src/actions/apply-dream-proposal.ts +1 -0
  576. package/src/actions/approve-dispatch-change.ts +1 -0
  577. package/src/actions/approve-vault-request.ts +1 -0
  578. package/src/actions/archive-workspace-app.ts +1 -0
  579. package/src/actions/ask_app.ts +1 -0
  580. package/src/actions/create-dream-report.ts +1 -0
  581. package/src/actions/create-link-token.ts +1 -0
  582. package/src/actions/create-pylon-ticket.ts +1 -0
  583. package/src/actions/create-vault-grant.ts +1 -0
  584. package/src/actions/create-vault-secret.ts +1 -0
  585. package/src/actions/create-workspace-resource-grant.ts +1 -0
  586. package/src/actions/create-workspace-resource.ts +1 -0
  587. package/src/actions/create_embed_session.ts +1 -0
  588. package/src/actions/delete-destination.ts +1 -0
  589. package/src/actions/delete-staged-dataset.ts +1 -0
  590. package/src/actions/delete-vault-secret.ts +1 -0
  591. package/src/actions/delete-workspace-resource.ts +1 -0
  592. package/src/actions/deny-vault-request.ts +1 -0
  593. package/src/actions/ensure-dream-job.ts +1 -0
  594. package/src/actions/get-agent-thread-debug.ts +1 -0
  595. package/src/actions/get-app-creation-settings.ts +1 -0
  596. package/src/actions/get-dispatch-settings.ts +1 -0
  597. package/src/actions/get-dream-settings.ts +1 -0
  598. package/src/actions/get-dream.ts +1 -0
  599. package/src/actions/get-vault-access-settings.ts +1 -0
  600. package/src/actions/get-workspace-info.ts +1 -0
  601. package/src/actions/get-workspace-resource-effective-context.ts +1 -0
  602. package/src/actions/grant-vault-secrets-to-app.ts +1 -0
  603. package/src/actions/grant-workspace-resources-to-app.ts +1 -0
  604. package/src/actions/index.ts +13 -12
  605. package/src/actions/list-agent-thread-sources.ts +1 -0
  606. package/src/actions/list-available-workspace-templates.ts +1 -0
  607. package/src/actions/list-connected-agents.ts +9 -9
  608. package/src/actions/list-destinations.ts +1 -0
  609. package/src/actions/list-dispatch-approvals.ts +1 -0
  610. package/src/actions/list-dispatch-audit.ts +1 -0
  611. package/src/actions/list-dispatch-overview.ts +1 -0
  612. package/src/actions/list-dispatch-usage-metrics.ts +1 -0
  613. package/src/actions/list-dream-candidates.ts +1 -0
  614. package/src/actions/list-dreams.ts +1 -0
  615. package/src/actions/list-integrations-catalog.ts +1 -0
  616. package/src/actions/list-linked-identities.ts +1 -0
  617. package/src/actions/list-mcp-app-access.ts +1 -0
  618. package/src/actions/list-staged-datasets.ts +1 -0
  619. package/src/actions/list-vault-audit.ts +1 -0
  620. package/src/actions/list-vault-grants.ts +1 -0
  621. package/src/actions/list-vault-requests.ts +1 -0
  622. package/src/actions/list-vault-secret-options.ts +1 -0
  623. package/src/actions/list-vault-secrets.ts +1 -0
  624. package/src/actions/list-workspace-apps.ts +1 -0
  625. package/src/actions/list-workspace-resource-grants.ts +1 -0
  626. package/src/actions/list-workspace-resource-options.ts +1 -0
  627. package/src/actions/list-workspace-resources-for-app.ts +1 -0
  628. package/src/actions/list-workspace-resources.ts +1 -0
  629. package/src/actions/list_apps.ts +1 -0
  630. package/src/actions/navigate.ts +1 -1
  631. package/src/actions/open_app.ts +1 -0
  632. package/src/actions/preview-dream-proposal.ts +1 -0
  633. package/src/actions/preview-workspace-resource-change.ts +1 -0
  634. package/src/actions/provider-api-catalog.ts +1 -0
  635. package/src/actions/provider-api-docs.ts +1 -0
  636. package/src/actions/provider-api-register.ts +1 -1
  637. package/src/actions/provider-api-request.ts +1 -0
  638. package/src/actions/query-staged-dataset.ts +1 -0
  639. package/src/actions/reject-dispatch-change.ts +1 -0
  640. package/src/actions/reject-dream-proposal.ts +1 -0
  641. package/src/actions/remove-pending-workspace-app.ts +1 -0
  642. package/src/actions/request-vault-secret.ts +1 -0
  643. package/src/actions/restore-starter-workspace-resources.ts +1 -0
  644. package/src/actions/revoke-vault-grant.ts +1 -0
  645. package/src/actions/revoke-workspace-resource-grant.ts +1 -0
  646. package/src/actions/scaffold-workspace-app.ts +1 -0
  647. package/src/actions/search-agent-threads.ts +1 -0
  648. package/src/actions/send-code-agent-remote-command.ts +1 -0
  649. package/src/actions/send-platform-message.ts +2 -1
  650. package/src/actions/set-app-creation-settings.ts +1 -0
  651. package/src/actions/set-dispatch-approval-policy.ts +1 -0
  652. package/src/actions/set-dream-settings.ts +1 -0
  653. package/src/actions/set-mcp-app-access.ts +3 -2
  654. package/src/actions/set-vault-access-settings.ts +1 -0
  655. package/src/actions/start-workspace-app-creation.ts +1 -0
  656. package/src/actions/sync-vault-to-app.ts +1 -0
  657. package/src/actions/unarchive-workspace-app.ts +1 -0
  658. package/src/actions/update-vault-secret.ts +1 -0
  659. package/src/actions/update-workspace-app-metadata.ts +1 -0
  660. package/src/actions/update-workspace-resource.ts +1 -0
  661. package/src/actions/upsert-destination.ts +1 -0
  662. package/src/actions/view-screen.ts +8 -7
  663. package/src/components/agents-panel.tsx +5 -4
  664. package/src/components/app-keys-popover.tsx +3 -2
  665. package/src/components/approval-value-block.spec.tsx +1 -0
  666. package/src/components/create-app-popover.tsx +3 -2
  667. package/src/components/dispatch-control-plane.tsx +7 -6
  668. package/src/components/dispatch-shell.tsx +4 -3
  669. package/src/components/layout/Header.tsx +5 -3
  670. package/src/components/layout/Layout.tsx +13 -11
  671. package/src/components/messaging-setup-panel.tsx +4 -3
  672. package/src/components/ui/accordion.tsx +1 -1
  673. package/src/components/ui/alert-dialog.tsx +2 -2
  674. package/src/components/ui/alert.tsx +1 -1
  675. package/src/components/ui/avatar.tsx +1 -1
  676. package/src/components/ui/badge.tsx +1 -1
  677. package/src/components/ui/breadcrumb.tsx +1 -1
  678. package/src/components/ui/button.tsx +1 -1
  679. package/src/components/ui/calendar.tsx +2 -2
  680. package/src/components/ui/carousel.tsx +3 -3
  681. package/src/components/ui/checkbox.tsx +1 -1
  682. package/src/components/ui/command.tsx +3 -3
  683. package/src/components/ui/context-menu.tsx +1 -1
  684. package/src/components/ui/dialog.tsx +1 -1
  685. package/src/components/ui/dropdown-menu.tsx +1 -1
  686. package/src/components/ui/form.tsx +2 -2
  687. package/src/components/ui/hover-card.tsx +1 -1
  688. package/src/components/ui/input-otp.tsx +2 -2
  689. package/src/components/ui/label.tsx +1 -1
  690. package/src/components/ui/menubar.tsx +1 -1
  691. package/src/components/ui/navigation-menu.tsx +2 -2
  692. package/src/components/ui/pagination.tsx +2 -2
  693. package/src/components/ui/popover.tsx +1 -1
  694. package/src/components/ui/progress.tsx +1 -1
  695. package/src/components/ui/radio-group.tsx +1 -1
  696. package/src/components/ui/scroll-area.tsx +1 -1
  697. package/src/components/ui/select.tsx +1 -1
  698. package/src/components/ui/separator.tsx +1 -1
  699. package/src/components/ui/sheet.tsx +1 -1
  700. package/src/components/ui/sidebar.tsx +4 -4
  701. package/src/components/ui/slider.tsx +1 -1
  702. package/src/components/ui/switch.tsx +1 -1
  703. package/src/components/ui/tabs.tsx +1 -1
  704. package/src/components/ui/toast.tsx +2 -2
  705. package/src/components/ui/toaster.tsx +1 -1
  706. package/src/components/ui/toggle-group.tsx +2 -2
  707. package/src/components/ui/toggle.tsx +1 -1
  708. package/src/components/ui/tooltip.tsx +1 -1
  709. package/src/components/workspace-app-card.tsx +3 -2
  710. package/src/components/workspace-resource-effective-stack.spec.tsx +1 -0
  711. package/src/components/workspace-resource-effective-stack.tsx +1 -0
  712. package/src/components/workspace-resource-impact-preview.spec.tsx +1 -0
  713. package/src/components/workspace-resource-impact-preview.tsx +2 -0
  714. package/src/db/index.ts +1 -0
  715. package/src/db/migrations.spec.ts +1 -0
  716. package/src/hooks/use-navigation-state.spec.ts +1 -0
  717. package/src/hooks/use-navigation-state.ts +4 -3
  718. package/src/lib/catch-all-target.spec.ts +1 -0
  719. package/src/routes/pages/$appId.tsx +22 -18
  720. package/src/routes/pages/_index.tsx +7 -7
  721. package/src/routes/pages/agents.tsx +25 -17
  722. package/src/routes/pages/approval.tsx +10 -9
  723. package/src/routes/pages/approvals.tsx +2 -1
  724. package/src/routes/pages/apps.$appId.tsx +18 -16
  725. package/src/routes/pages/apps.tsx +44 -22
  726. package/src/routes/pages/audit.tsx +1 -0
  727. package/src/routes/pages/chat.tsx +7 -6
  728. package/src/routes/pages/destinations.tsx +46 -34
  729. package/src/routes/pages/dream-settings.spec.ts +1 -0
  730. package/src/routes/pages/dreams.tsx +13 -8
  731. package/src/routes/pages/identities.tsx +1 -0
  732. package/src/routes/pages/integrations.tsx +4 -3
  733. package/src/routes/pages/messaging.tsx +1 -1
  734. package/src/routes/pages/metrics.tsx +15 -11
  735. package/src/routes/pages/new-app.tsx +5 -3
  736. package/src/routes/pages/settings.tsx +2 -1
  737. package/src/routes/pages/team.tsx +1 -0
  738. package/src/routes/pages/thread-debug.tsx +6 -4
  739. package/src/routes/pages/vault.tsx +16 -15
  740. package/src/routes/pages/workspace.tsx +8 -7
  741. package/src/server/index.ts +2 -1
  742. package/src/server/lib/app-creation-store.spec.ts +2 -1
  743. package/src/server/lib/app-creation-store.ts +6 -4
  744. package/src/server/lib/dispatch-integrations.spec.ts +2 -1
  745. package/src/server/lib/dispatch-integrations.ts +5 -3
  746. package/src/server/lib/dispatch-remote-commands.spec.ts +2 -1
  747. package/src/server/lib/dispatch-store.ts +4 -2
  748. package/src/server/lib/dreams-store.ts +10 -1
  749. package/src/server/lib/mcp-access-store.spec.ts +1 -0
  750. package/src/server/lib/mcp-access-store.ts +4 -4
  751. package/src/server/lib/mcp-gateway.spec.ts +2 -1
  752. package/src/server/lib/mcp-gateway.ts +2 -1
  753. package/src/server/lib/onboarding-steps.ts +1 -0
  754. package/src/server/lib/thread-debug-store.ts +1 -0
  755. package/src/server/lib/thread-link-preview.spec.ts +2 -2
  756. package/src/server/lib/thread-link-preview.ts +1 -0
  757. package/src/server/lib/usage-metrics-store.ts +8 -7
  758. package/src/server/lib/vault-store.ts +4 -2
  759. package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +1 -0
  760. package/src/server/lib/workspace-resources-store.ts +4 -2
  761. package/src/server/plugins/agent-chat.ts +2 -1
  762. package/src/server/plugins/auth.ts +1 -0
  763. package/src/server/plugins/core-routes.ts +1 -0
  764. package/src/server/plugins/db.ts +1 -0
  765. package/src/server/plugins/integrations.ts +3 -2
  766. package/src/styles/dispatch-css.spec.ts +1 -0
@@ -1,4 +1,4 @@
1
- export declare function appAvailabilityLabel(value?: string): "Inherited by all apps" | "Granted to this app" | "Not granted" | "Select app" | "Not managed" | "Checking";
1
+ export declare function appAvailabilityLabel(value?: string): "Checking" | "Granted to this app" | "Inherited by all apps" | "Not granted" | "Not managed" | "Select app";
2
2
  export declare function appLayerState(layer: any): {
3
3
  label: string;
4
4
  className: string;
@@ -7,5 +7,5 @@ export declare function formatResourceTimestamp(value?: number | null): string;
7
7
  export declare function AppResourceEffectiveStack({ appId, resource, }: {
8
8
  appId: string;
9
9
  resource: any;
10
- }): import("react/jsx-runtime").JSX.Element;
10
+ }): import("node_modules/@types/react").JSX.Element;
11
11
  //# sourceMappingURL=workspace-resource-effective-stack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-resource-effective-stack.d.ts","sourceRoot":"","sources":["../../src/components/workspace-resource-effective-stack.tsx"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,+GAelD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGrE;AAED,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;CACf,2CAsFA"}
1
+ {"version":3,"file":"workspace-resource-effective-stack.d.ts","sourceRoot":"","sources":["../../src/components/workspace-resource-effective-stack.tsx"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,MAAM,+GAelD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAiBA;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGrE;AAED,wBAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;CACf,mDAsFA"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useActionQuery } from "@agent-native/core/client";
3
3
  import { Badge } from "../components/ui/badge.js";
4
4
  import { cn } from "../lib/utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-resource-effective-stack.js","sourceRoot":"","sources":["../../src/components/workspace-resource-effective-stack.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\n\nexport function appAvailabilityLabel(value?: string) {\n switch (value) {\n case \"all-apps\":\n return \"Inherited by all apps\";\n case \"selected-granted\":\n return \"Granted to this app\";\n case \"selected-not-granted\":\n return \"Not granted\";\n case \"selected-no-app\":\n return \"Select app\";\n case \"path-not-managed\":\n return \"Not managed\";\n default:\n return \"Checking\";\n }\n}\n\nexport function appLayerState(layer: any): {\n label: string;\n className: string;\n} {\n if (layer.effective) {\n return {\n label: \"Wins\",\n className: \"border-green-500/30 bg-green-500/10 text-green-700\",\n };\n }\n if (layer.overridden) {\n return {\n label: \"Overridden\",\n className: \"border-amber-500/30 bg-amber-500/10 text-amber-700\",\n };\n }\n return {\n label: \"Missing\",\n className: \"text-muted-foreground\",\n };\n}\n\nexport function formatResourceTimestamp(value?: number | null): string {\n if (!value) return \"not present\";\n return new Date(value).toLocaleString();\n}\n\nexport function AppResourceEffectiveStack({\n appId,\n resource,\n}: {\n appId: string;\n resource: any;\n}) {\n const { data: context, isLoading } = useActionQuery(\n \"get-workspace-resource-effective-context\",\n { resourceId: resource.id, appId },\n { enabled: !!resource.id },\n );\n const layers = ((context as any)?.layers ?? []) as any[];\n const active = (context as any)?.effectiveResource;\n const availability = (context as any)?.availability;\n\n if (isLoading && !context) {\n return (\n <div className=\"mt-3 rounded-lg border bg-muted/20 p-3\">\n <div className=\"h-3 w-44 animate-pulse rounded bg-muted-foreground/10\" />\n <div className=\"mt-3 grid gap-2 sm:grid-cols-3\">\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"mt-3 rounded-lg border bg-muted/20 p-3\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"text-xs font-semibold uppercase text-muted-foreground\">\n Effective context stack\n </div>\n <div className=\"mt-1 truncate font-mono text-[11px] text-muted-foreground\">\n {resource.path}\n </div>\n </div>\n <Badge variant=\"outline\">{appAvailabilityLabel(availability)}</Badge>\n </div>\n\n <div className=\"mt-3 grid gap-2 sm:grid-cols-3\">\n {layers.map((layer) => {\n const state = appLayerState(layer);\n return (\n <div\n key={layer.scope}\n className={cn(\"rounded-md border bg-background/70 p-2\", {\n \"border-green-500/30 bg-green-500/10\": layer.effective,\n })}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <span className=\"text-xs font-medium text-foreground\">\n {layer.label}\n </span>\n <Badge variant=\"outline\" className={state.className}>\n {state.label}\n </Badge>\n </div>\n <div className=\"mt-1 truncate font-mono text-[10px] text-muted-foreground\">\n {layer.owner}\n </div>\n {layer.resource ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">\n Updated {formatResourceTimestamp(layer.resource.updatedAt)}\n </div>\n ) : (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">\n No file at this layer\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n <div className=\"mt-3 rounded-md bg-background/70 px-3 py-2 text-xs text-muted-foreground\">\n {active ? (\n <>\n Winning layer:{\" \"}\n <span className=\"font-mono text-foreground\">\n {active.owner}/{active.path}\n </span>\n </>\n ) : (\n \"No active resource exists for this path yet.\"\n )}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"workspace-resource-effective-stack.js","sourceRoot":"","sources":["../../src/components/workspace-resource-effective-stack.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { cn } from \"@/lib/utils\";\n\nexport function appAvailabilityLabel(value?: string) {\n switch (value) {\n case \"all-apps\":\n return \"Inherited by all apps\";\n case \"selected-granted\":\n return \"Granted to this app\";\n case \"selected-not-granted\":\n return \"Not granted\";\n case \"selected-no-app\":\n return \"Select app\";\n case \"path-not-managed\":\n return \"Not managed\";\n default:\n return \"Checking\";\n }\n}\n\nexport function appLayerState(layer: any): {\n label: string;\n className: string;\n} {\n if (layer.effective) {\n return {\n label: \"Wins\",\n className: \"border-green-500/30 bg-green-500/10 text-green-700\",\n };\n }\n if (layer.overridden) {\n return {\n label: \"Overridden\",\n className: \"border-amber-500/30 bg-amber-500/10 text-amber-700\",\n };\n }\n return {\n label: \"Missing\",\n className: \"text-muted-foreground\",\n };\n}\n\nexport function formatResourceTimestamp(value?: number | null): string {\n if (!value) return \"not present\";\n return new Date(value).toLocaleString();\n}\n\nexport function AppResourceEffectiveStack({\n appId,\n resource,\n}: {\n appId: string;\n resource: any;\n}) {\n const { data: context, isLoading } = useActionQuery(\n \"get-workspace-resource-effective-context\",\n { resourceId: resource.id, appId },\n { enabled: !!resource.id },\n );\n const layers = ((context as any)?.layers ?? []) as any[];\n const active = (context as any)?.effectiveResource;\n const availability = (context as any)?.availability;\n\n if (isLoading && !context) {\n return (\n <div className=\"mt-3 rounded-lg border bg-muted/20 p-3\">\n <div className=\"h-3 w-44 animate-pulse rounded bg-muted-foreground/10\" />\n <div className=\"mt-3 grid gap-2 sm:grid-cols-3\">\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n <div className=\"h-20 animate-pulse rounded-md bg-muted-foreground/10\" />\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"mt-3 rounded-lg border bg-muted/20 p-3\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"text-xs font-semibold uppercase text-muted-foreground\">\n Effective context stack\n </div>\n <div className=\"mt-1 truncate font-mono text-[11px] text-muted-foreground\">\n {resource.path}\n </div>\n </div>\n <Badge variant=\"outline\">{appAvailabilityLabel(availability)}</Badge>\n </div>\n\n <div className=\"mt-3 grid gap-2 sm:grid-cols-3\">\n {layers.map((layer) => {\n const state = appLayerState(layer);\n return (\n <div\n key={layer.scope}\n className={cn(\"rounded-md border bg-background/70 p-2\", {\n \"border-green-500/30 bg-green-500/10\": layer.effective,\n })}\n >\n <div className=\"flex items-start justify-between gap-2\">\n <span className=\"text-xs font-medium text-foreground\">\n {layer.label}\n </span>\n <Badge variant=\"outline\" className={state.className}>\n {state.label}\n </Badge>\n </div>\n <div className=\"mt-1 truncate font-mono text-[10px] text-muted-foreground\">\n {layer.owner}\n </div>\n {layer.resource ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">\n Updated {formatResourceTimestamp(layer.resource.updatedAt)}\n </div>\n ) : (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">\n No file at this layer\n </div>\n )}\n </div>\n );\n })}\n </div>\n\n <div className=\"mt-3 rounded-md bg-background/70 px-3 py-2 text-xs text-muted-foreground\">\n {active ? (\n <>\n Winning layer:{\" \"}\n <span className=\"font-mono text-foreground\">\n {active.owner}/{active.path}\n </span>\n </>\n ) : (\n \"No active resource exists for this path yet.\"\n )}\n </div>\n </div>\n );\n}\n"]}
@@ -5,5 +5,5 @@ export declare function ImpactPreview({ operation, resourceId, path, scope, enab
5
5
  path?: string;
6
6
  scope?: "all" | "selected";
7
7
  enabled?: boolean;
8
- }): import("react/jsx-runtime").JSX.Element | null;
8
+ }): import("node_modules/@types/react").JSX.Element | null;
9
9
  //# sourceMappingURL=workspace-resource-impact-preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-resource-impact-preview.d.ts","sourceRoot":"","sources":["../../src/components/workspace-resource-impact-preview.tsx"],"names":[],"mappings":"AAaA,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,OAAc,GACf,EAAE;IACD,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,kDAmFA"}
1
+ {"version":3,"file":"workspace-resource-impact-preview.d.ts","sourceRoot":"","sources":["../../src/components/workspace-resource-impact-preview.tsx"],"names":[],"mappings":"AAeA,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,OAAc,GACf,EAAE;IACD,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,0DAmFA"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-resource-impact-preview.js","sourceRoot":"","sources":["../../src/components/workspace-resource-impact-preview.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client\";\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { formatResourceTimestamp } from \"./workspace-resource-effective-stack\";\n\nfunction isApprovalRequest(result: any): boolean {\n return (\n result?.status === \"pending\" &&\n typeof result?.changeType === \"string\" &&\n result.changeType.startsWith(\"workspace-resource.\")\n );\n}\n\nexport function workspaceResourceMutationMessage(\n result: any,\n fallback: string,\n): string {\n return isApprovalRequest(result) ? \"Approval requested\" : fallback;\n}\n\nexport function ImpactPreview({\n operation,\n resourceId,\n path,\n scope,\n enabled = true,\n}: {\n operation: \"create\" | \"update\" | \"delete\";\n resourceId?: string;\n path?: string;\n scope?: \"all\" | \"selected\";\n enabled?: boolean;\n}) {\n const { data: impact, isLoading } = useActionQuery(\n \"preview-workspace-resource-change\",\n {\n operation,\n resourceId,\n path,\n scope,\n },\n { enabled: enabled && Boolean(resourceId || path) },\n );\n\n if (!enabled || (!resourceId && !path)) return null;\n\n if (isLoading) {\n return (\n <div className=\"rounded-lg border bg-muted/30 p-3\">\n <Skeleton className=\"h-4 w-40\" />\n <Skeleton className=\"mt-2 h-3 w-72\" />\n </div>\n );\n }\n\n const data = impact as any;\n if (!data) return null;\n const affectsAllApps = data.affectsAllApps === true;\n const appCount = data.affectedApps?.count;\n const overrides = data.overrides ?? { count: 0, items: [] };\n const willRequestApproval = data.approval?.willRequestApproval === true;\n\n return (\n <div className=\"rounded-lg border bg-muted/30 p-3 text-xs\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant={affectsAllApps ? \"secondary\" : \"outline\"}>\n {affectsAllApps ? \"All apps impact\" : \"Selected only\"}\n </Badge>\n {willRequestApproval ? (\n <Badge\n variant=\"outline\"\n className=\"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300\"\n >\n Approval required\n </Badge>\n ) : null}\n {overrides.count > 0 ? (\n <Badge variant=\"outline\">\n {overrides.count} override{overrides.count === 1 ? \"\" : \"s\"}\n </Badge>\n ) : null}\n </div>\n <p className=\"mt-2 leading-relaxed text-muted-foreground\">\n {affectsAllApps\n ? `This change applies to every workspace app${typeof appCount === \"number\" ? ` (${appCount} discovered)` : \"\"}.`\n : \"This change only applies to explicitly granted apps.\"}{\" \"}\n {willRequestApproval\n ? \"It will be queued for approval before it takes effect.\"\n : \"It will take effect immediately when saved.\"}\n </p>\n {overrides.count > 0 ? (\n <div className=\"mt-2 space-y-1\">\n {overrides.items.slice(0, 4).map((override: any) => (\n <div\n key={`${override.scope}:${override.owner}`}\n className=\"flex items-center justify-between gap-3 rounded-md border bg-background px-2 py-1.5\"\n >\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {override.label}\n </span>\n <span className=\"shrink-0 font-mono text-[11px] text-muted-foreground\">\n {formatResourceTimestamp(override.updatedAt)}\n </span>\n </div>\n ))}\n {overrides.count > 4 ? (\n <div className=\"text-muted-foreground\">\n +{overrides.count - 4} more override\n {overrides.count - 4 === 1 ? \"\" : \"s\"}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"workspace-resource-impact-preview.js","sourceRoot":"","sources":["../../src/components/workspace-resource-impact-preview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,SAAS,iBAAiB,CAAC,MAAW;IACpC,OAAO,CACL,MAAM,EAAE,MAAM,KAAK,SAAS;QAC5B,OAAO,MAAM,EAAE,UAAU,KAAK,QAAQ;QACtC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,qBAAqB,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,MAAW,EACX,QAAgB;IAEhB,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,EACV,IAAI,EACJ,KAAK,EACL,OAAO,GAAG,IAAI,GAOf;IACC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,CAChD,mCAAmC,EACnC;QACE,SAAS;QACT,UAAU;QACV,IAAI;QACJ,KAAK;KACN,EACD,EAAE,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CACpD,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,QAAQ,IAAC,SAAS,EAAC,UAAU,GAAG,EACjC,KAAC,QAAQ,IAAC,SAAS,EAAC,eAAe,GAAG,IAClC,CACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAa,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5D,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAExE,OAAO,CACL,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,KAAK,IAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,YACrD,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,GAC/C,EACP,mBAAmB,CAAC,CAAC,CAAC,CACrB,KAAC,KAAK,IACJ,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,wEAAwE,kCAG5E,CACT,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,MAAC,KAAK,IAAC,OAAO,EAAC,SAAS,aACrB,SAAS,CAAC,KAAK,eAAW,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IACrD,CACT,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,aAAG,SAAS,EAAC,4CAA4C,aACtD,cAAc;wBACb,CAAC,CAAC,6CAA6C,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG;wBACjH,CAAC,CAAC,sDAAsD,EAAE,GAAG,EAC9D,mBAAmB;wBAClB,CAAC,CAAC,wDAAwD;wBAC1D,CAAC,CAAC,6CAA6C,IAC/C,EACH,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,eAAK,SAAS,EAAC,gBAAgB,aAC5B,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAClD,eAEE,SAAS,EAAC,qFAAqF,aAE/F,eAAM,SAAS,EAAC,wCAAwC,YACrD,QAAQ,CAAC,KAAK,GACV,EACP,eAAM,SAAS,EAAC,sDAAsD,YACnE,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,GACvC,KARF,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAStC,CACP,CAAC,EACD,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CACrB,eAAK,SAAS,EAAC,uBAAuB,kBAClC,SAAS,CAAC,KAAK,GAAG,CAAC,oBACpB,SAAS,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IACjC,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useActionQuery } from \"@agent-native/core/client\";\n\nimport { Badge } from \"@/components/ui/badge\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\n\nimport { formatResourceTimestamp } from \"./workspace-resource-effective-stack\";\n\nfunction isApprovalRequest(result: any): boolean {\n return (\n result?.status === \"pending\" &&\n typeof result?.changeType === \"string\" &&\n result.changeType.startsWith(\"workspace-resource.\")\n );\n}\n\nexport function workspaceResourceMutationMessage(\n result: any,\n fallback: string,\n): string {\n return isApprovalRequest(result) ? \"Approval requested\" : fallback;\n}\n\nexport function ImpactPreview({\n operation,\n resourceId,\n path,\n scope,\n enabled = true,\n}: {\n operation: \"create\" | \"update\" | \"delete\";\n resourceId?: string;\n path?: string;\n scope?: \"all\" | \"selected\";\n enabled?: boolean;\n}) {\n const { data: impact, isLoading } = useActionQuery(\n \"preview-workspace-resource-change\",\n {\n operation,\n resourceId,\n path,\n scope,\n },\n { enabled: enabled && Boolean(resourceId || path) },\n );\n\n if (!enabled || (!resourceId && !path)) return null;\n\n if (isLoading) {\n return (\n <div className=\"rounded-lg border bg-muted/30 p-3\">\n <Skeleton className=\"h-4 w-40\" />\n <Skeleton className=\"mt-2 h-3 w-72\" />\n </div>\n );\n }\n\n const data = impact as any;\n if (!data) return null;\n const affectsAllApps = data.affectsAllApps === true;\n const appCount = data.affectedApps?.count;\n const overrides = data.overrides ?? { count: 0, items: [] };\n const willRequestApproval = data.approval?.willRequestApproval === true;\n\n return (\n <div className=\"rounded-lg border bg-muted/30 p-3 text-xs\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <Badge variant={affectsAllApps ? \"secondary\" : \"outline\"}>\n {affectsAllApps ? \"All apps impact\" : \"Selected only\"}\n </Badge>\n {willRequestApproval ? (\n <Badge\n variant=\"outline\"\n className=\"border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300\"\n >\n Approval required\n </Badge>\n ) : null}\n {overrides.count > 0 ? (\n <Badge variant=\"outline\">\n {overrides.count} override{overrides.count === 1 ? \"\" : \"s\"}\n </Badge>\n ) : null}\n </div>\n <p className=\"mt-2 leading-relaxed text-muted-foreground\">\n {affectsAllApps\n ? `This change applies to every workspace app${typeof appCount === \"number\" ? ` (${appCount} discovered)` : \"\"}.`\n : \"This change only applies to explicitly granted apps.\"}{\" \"}\n {willRequestApproval\n ? \"It will be queued for approval before it takes effect.\"\n : \"It will take effect immediately when saved.\"}\n </p>\n {overrides.count > 0 ? (\n <div className=\"mt-2 space-y-1\">\n {overrides.items.slice(0, 4).map((override: any) => (\n <div\n key={`${override.scope}:${override.owner}`}\n className=\"flex items-center justify-between gap-3 rounded-md border bg-background px-2 py-1.5\"\n >\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {override.label}\n </span>\n <span className=\"shrink-0 font-mono text-[11px] text-muted-foreground\">\n {formatResourceTimestamp(override.updatedAt)}\n </span>\n </div>\n ))}\n {overrides.count > 4 ? (\n <div className=\"text-muted-foreground\">\n +{overrides.count - 4} more override\n {overrides.count - 4 === 1 ? \"\" : \"s\"}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,eAAO,MAAM,KAAK,kEAAsB,CAAC;AAEzC,wBAAgB,EAAE,+DAEjB;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,eAAO,MAAM,KAAK,kEAAsB,CAAC;AAEzC,wBAAgB,EAAE,+DAEjB;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,UAAU,EAAE;IAChB,OAAO,KAAK,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC","sourcesContent":["import { createGetDb } from \"@agent-native/core/db\";\nimport * as schema from \"./schema.js\";\n\nexport const getDb = createGetDb(schema);\n\nexport function db() {\n return getDb();\n}\n\nexport { schema };\nexport * from \"./schema.js\";\nexport * from \"./migrations.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAEzC,MAAM,UAAU,EAAE;IAChB,OAAO,KAAK,EAAE,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC","sourcesContent":["import { createGetDb } from \"@agent-native/core/db\";\n\nimport * as schema from \"./schema.js\";\n\nexport const getDb = createGetDb(schema);\n\nexport function db() {\n return getDb();\n}\n\nexport { schema };\nexport * from \"./schema.js\";\nexport * from \"./migrations.js\";\n"]}
@@ -208,7 +208,7 @@ export declare const dispatchDestinations: import("drizzle-orm/sqlite-core").SQL
208
208
  generated: undefined;
209
209
  }, {}, {}>;
210
210
  };
211
- dialect: "sqlite";
211
+ dialect: 'sqlite';
212
212
  }>;
213
213
  export declare const dispatchIdentityLinks: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
214
214
  name: "dispatch_identity_links";
@@ -382,7 +382,7 @@ export declare const dispatchIdentityLinks: import("drizzle-orm/sqlite-core").SQ
382
382
  generated: undefined;
383
383
  }, {}, {}>;
384
384
  };
385
- dialect: "sqlite";
385
+ dialect: 'sqlite';
386
386
  }>;
387
387
  export declare const dispatchLinkTokens: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
388
388
  name: "dispatch_link_tokens";
@@ -609,7 +609,7 @@ export declare const dispatchLinkTokens: import("drizzle-orm/sqlite-core").SQLit
609
609
  generated: undefined;
610
610
  }, {}, {}>;
611
611
  };
612
- dialect: "sqlite";
612
+ dialect: 'sqlite';
613
613
  }>;
614
614
  export declare const dispatchApprovalRequests: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
615
615
  name: "dispatch_approval_requests";
@@ -914,7 +914,7 @@ export declare const dispatchApprovalRequests: import("drizzle-orm/sqlite-core")
914
914
  generated: undefined;
915
915
  }, {}, {}>;
916
916
  };
917
- dialect: "sqlite";
917
+ dialect: 'sqlite';
918
918
  }>;
919
919
  export declare const dispatchAuditEvents: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
920
920
  name: "dispatch_audit_events";
@@ -1109,7 +1109,7 @@ export declare const dispatchAuditEvents: import("drizzle-orm/sqlite-core").SQLi
1109
1109
  generated: undefined;
1110
1110
  }, {}, {}>;
1111
1111
  };
1112
- dialect: "sqlite";
1112
+ dialect: 'sqlite';
1113
1113
  }>;
1114
1114
  export declare const dispatchDreams: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1115
1115
  name: "dispatch_dreams";
@@ -1446,7 +1446,7 @@ export declare const dispatchDreams: import("drizzle-orm/sqlite-core").SQLiteTab
1446
1446
  generated: undefined;
1447
1447
  }, {}, {}>;
1448
1448
  };
1449
- dialect: "sqlite";
1449
+ dialect: 'sqlite';
1450
1450
  }>;
1451
1451
  export declare const dispatchDreamProposals: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1452
1452
  name: "dispatch_dream_proposals";
@@ -1823,7 +1823,7 @@ export declare const dispatchDreamProposals: import("drizzle-orm/sqlite-core").S
1823
1823
  generated: undefined;
1824
1824
  }, {}, {}>;
1825
1825
  };
1826
- dialect: "sqlite";
1826
+ dialect: 'sqlite';
1827
1827
  }>;
1828
1828
  export declare const vaultSecrets: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
1829
1829
  name: "vault_secrets";
@@ -2035,7 +2035,7 @@ export declare const vaultSecrets: import("drizzle-orm/sqlite-core").SQLiteTable
2035
2035
  generated: undefined;
2036
2036
  }, {}, {}>;
2037
2037
  };
2038
- dialect: "sqlite";
2038
+ dialect: 'sqlite';
2039
2039
  }>;
2040
2040
  export declare const vaultGrants: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2041
2041
  name: "vault_grants";
@@ -2226,7 +2226,7 @@ export declare const vaultGrants: import("drizzle-orm/sqlite-core").SQLiteTableW
2226
2226
  generated: undefined;
2227
2227
  }, {}, {}>;
2228
2228
  };
2229
- dialect: "sqlite";
2229
+ dialect: 'sqlite';
2230
2230
  }>;
2231
2231
  export declare const vaultRequests: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2232
2232
  name: "vault_requests";
@@ -2455,7 +2455,7 @@ export declare const vaultRequests: import("drizzle-orm/sqlite-core").SQLiteTabl
2455
2455
  generated: undefined;
2456
2456
  }, {}, {}>;
2457
2457
  };
2458
- dialect: "sqlite";
2458
+ dialect: 'sqlite';
2459
2459
  }>;
2460
2460
  export declare const vaultAuditLog: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2461
2461
  name: "vault_audit_log";
@@ -2650,7 +2650,7 @@ export declare const vaultAuditLog: import("drizzle-orm/sqlite-core").SQLiteTabl
2650
2650
  generated: undefined;
2651
2651
  }, {}, {}>;
2652
2652
  };
2653
- dialect: "sqlite";
2653
+ dialect: 'sqlite';
2654
2654
  }>;
2655
2655
  export declare const workspaceResources: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2656
2656
  name: "workspace_resources";
@@ -2881,7 +2881,7 @@ export declare const workspaceResources: import("drizzle-orm/sqlite-core").SQLit
2881
2881
  generated: undefined;
2882
2882
  }, {}, {}>;
2883
2883
  };
2884
- dialect: "sqlite";
2884
+ dialect: 'sqlite';
2885
2885
  }>;
2886
2886
  export declare const workspaceResourceGrants: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
2887
2887
  name: "workspace_resource_grants";
@@ -3053,6 +3053,6 @@ export declare const workspaceResourceGrants: import("drizzle-orm/sqlite-core").
3053
3053
  generated: undefined;
3054
3054
  }, {}, {}>;
3055
3055
  };
3056
- dialect: "sqlite";
3056
+ dialect: 'sqlite';
3057
3057
  }>;
3058
3058
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigation-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-navigation-state.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,uBAAuB,QAmEtE;AAqBD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK,EACX,UAAU,CAAC,EAAE,uBAAuB,GACnC,eAAe,CA6BjB"}
1
+ {"version":3,"file":"use-navigation-state.d.ts","sourceRoot":"","sources":["../../src/hooks/use-navigation-state.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,uBAAuB,EAExB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,uBAAuB,QAmEtE;AAqBD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,MAAM,SAAK,EACX,UAAU,CAAC,EAAE,uBAAuB,GACnC,eAAe,CA6BjB"}
@@ -1,8 +1,8 @@
1
- import { useEffect } from "react";
2
- import { useLocation, useNavigate } from "react-router";
3
- import { useQuery, useQueryClient } from "@tanstack/react-query";
4
1
  import { agentNativePath, appBasePath, appPath, markAgentChatHomeHandoff, } from "@agent-native/core/client";
5
2
  import { extensionIdFromPathname } from "@agent-native/core/client/extensions";
3
+ import { useQuery, useQueryClient } from "@tanstack/react-query";
4
+ import { useEffect } from "react";
5
+ import { useLocation, useNavigate } from "react-router";
6
6
  export function useNavigationState(extensions) {
7
7
  const location = useLocation();
8
8
  const navigate = useNavigate();
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigation-state.js","sourceRoot":"","sources":["../../src/hooks/use-navigation-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\nimport { useLocation, useNavigate } from \"react-router\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport {\n agentNativePath,\n appBasePath,\n appPath,\n markAgentChatHomeHandoff,\n} from \"@agent-native/core/client\";\nimport { extensionIdFromPathname } from \"@agent-native/core/client/extensions\";\nimport type {\n DispatchExtensionConfig,\n DispatchNavItem,\n} from \"../components/index.js\";\n\nexport interface NavigationState {\n view: string;\n path?: string;\n extensionId?: string;\n extensionSlug?: string;\n dreamId?: string;\n sourceId?: string;\n query?: string;\n threadId?: string;\n}\n\nexport function useNavigationState(extensions?: DispatchExtensionConfig) {\n const location = useLocation();\n const navigate = useNavigate();\n const qc = useQueryClient();\n\n // Sync current route to application state\n useEffect(() => {\n const localPathname = routerPath(location.pathname);\n const state = buildDispatchNavigationState(\n localPathname,\n location.search,\n extensions,\n );\n\n fetch(agentNativePath(\"/_agent-native/application-state/navigation\"), {\n method: \"PUT\",\n keepalive: true,\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(state),\n }).catch(() => {});\n }, [extensions, location.pathname, location.search]);\n\n // Listen for navigate commands from agent\n const { data: navCommand } = useQuery({\n queryKey: [\"navigate-command\"],\n queryFn: async () => {\n const res = await fetch(\n agentNativePath(\"/_agent-native/application-state/navigate\"),\n );\n if (!res.ok) return null;\n const data = await res.json();\n if (data) {\n // Return with a timestamp to ensure uniqueness\n return { ...data, _ts: Date.now() };\n }\n return null;\n },\n refetchInterval: 2_000,\n structuralSharing: false,\n });\n\n useEffect(() => {\n if (!navCommand) return;\n // Delete the one-shot command AFTER reading it\n fetch(agentNativePath(\"/_agent-native/application-state/navigate\"), {\n method: \"DELETE\",\n headers: { \"X-Agent-Native-CSRF\": \"1\" },\n }).catch(() => {});\n const cmd = navCommand as NavigationState;\n\n // Navigate to a specific path or resolve view name to path\n const resolvedPath =\n cmd.path || resolvePath(cmd.view, extensions, cmd) || \"/overview\";\n const path =\n cmd.view === \"dreams\" && cmd.dreamId && !resolvedPath.includes(\"?\")\n ? `${resolvedPath}?dreamId=${encodeURIComponent(cmd.dreamId)}`\n : resolvedPath;\n const nextPath = routerPath(path);\n if (\n isChatPath(routerPath(location.pathname)) &&\n !isChatPath(pathnameFromPath(nextPath))\n ) {\n markAgentChatHomeHandoff(\"dispatch\");\n }\n navigate(nextPath);\n qc.setQueryData([\"navigate-command\"], null);\n }, [extensions, location.pathname, navCommand, navigate, qc]);\n}\n\nfunction pathnameFromPath(path: string): string {\n return path.split(/[?#]/, 1)[0] || \"/\";\n}\n\nfunction isChatPath(pathname: string): boolean {\n return pathname === \"/chat\" || pathname.startsWith(\"/chat/\");\n}\n\nfunction threadIdFromPath(pathname: string): string | null {\n const match = pathname.match(/^\\/chat\\/([^/]+)/);\n if (!match) return null;\n try {\n const value = decodeURIComponent(match[1]).trim();\n return value || null;\n } catch {\n return null;\n }\n}\n\nexport function buildDispatchNavigationState(\n pathname: string,\n search = \"\",\n extensions?: DispatchExtensionConfig,\n): NavigationState {\n const state: NavigationState = {\n view: resolveView(pathname, extensions),\n path: appPath(pathname),\n };\n\n const threadId = threadIdFromPath(pathname);\n if (threadId) state.threadId = threadId;\n\n const extensionId = extensionIdFromPathname(pathname);\n if (extensionId) {\n state.view = \"extensions\";\n state.extensionId = extensionId;\n const slug = extensionSlugFromPathname(pathname);\n if (slug) state.extensionSlug = slug;\n return state;\n }\n\n if (state.view === \"dreams\") {\n const params = new URLSearchParams(search);\n const dreamId = params.get(\"dreamId\");\n const sourceId = params.get(\"sourceId\");\n const query = params.get(\"query\");\n if (dreamId) state.dreamId = dreamId;\n if (sourceId) state.sourceId = sourceId;\n if (query) state.query = query;\n }\n\n return state;\n}\n\nfunction routerPath(path: string): string {\n const basePath = appBasePath();\n if (!basePath) return path;\n let result = path;\n // Iteratively strip basename. A path that arrives doubly-prefixed\n // (e.g. \"/dispatch/dispatch/overview\", possibly from a stale link or a\n // prior bug) would otherwise get partially stripped here and then\n // re-prefixed by react-router's basename, restoring the bad URL.\n for (let i = 0; i < 4; i += 1) {\n if (result === basePath) return \"/\";\n if (!result.startsWith(`${basePath}/`)) break;\n result = result.slice(basePath.length) || \"/\";\n }\n return result;\n}\n\nfunction extensionItemMatchesPath(\n item: DispatchNavItem,\n pathname: string,\n): boolean {\n if (item.match) {\n try {\n if (item.match(pathname)) return true;\n } catch {\n return false;\n }\n }\n return pathname === item.to || pathname.startsWith(`${item.to}/`);\n}\n\nfunction resolveExtensionView(\n pathname: string,\n extensions?: DispatchExtensionConfig,\n): string | undefined {\n return extensions?.navItems?.find((item) =>\n extensionItemMatchesPath(item, pathname),\n )?.id;\n}\n\nfunction resolveExtensionPath(\n view: string | undefined,\n extensions?: DispatchExtensionConfig,\n): string | undefined {\n if (!view) return undefined;\n return extensions?.navItems?.find((item) => item.id === view)?.to;\n}\n\nfunction resolveView(\n pathname: string,\n extensions?: DispatchExtensionConfig,\n): string {\n const extensionView = resolveExtensionView(pathname, extensions);\n if (extensionView) return extensionView;\n if (pathname === \"/extensions\" || pathname.startsWith(\"/extensions/\")) {\n return \"extensions\";\n }\n if (pathname.startsWith(\"/chat\")) return \"chat\";\n if (pathname.startsWith(\"/apps\")) return \"apps\";\n if (pathname.startsWith(\"/metrics\")) return \"metrics\";\n if (pathname.startsWith(\"/new-app\")) return \"new-app\";\n if (pathname.startsWith(\"/vault\")) return \"vault\";\n if (pathname.startsWith(\"/integrations\")) return \"integrations\";\n if (pathname.startsWith(\"/workspace\")) return \"workspace\";\n if (pathname.startsWith(\"/agents\")) return \"agents\";\n if (pathname.startsWith(\"/messaging\")) return \"messaging\";\n if (pathname.startsWith(\"/destinations\")) return \"destinations\";\n if (pathname.startsWith(\"/identities\")) return \"identities\";\n if (pathname.startsWith(\"/approvals\")) return \"approvals\";\n if (pathname.startsWith(\"/audit\")) return \"audit\";\n if (pathname.startsWith(\"/dreams\")) return \"dreams\";\n if (pathname.startsWith(\"/thread-debug\")) return \"thread-debug\";\n if (pathname.startsWith(\"/team\")) return \"team\";\n return \"overview\";\n}\n\nfunction resolvePath(\n view?: string,\n extensions?: DispatchExtensionConfig,\n command?: Pick<NavigationState, \"extensionId\" | \"threadId\">,\n): string | undefined {\n switch (view) {\n case \"chat\":\n case \"ask\":\n return command?.threadId && command.threadId.trim()\n ? `/chat/${encodeURIComponent(command.threadId.trim())}`\n : \"/chat\";\n case \"overview\":\n return \"/overview\";\n case \"apps\":\n return \"/apps\";\n case \"metrics\":\n case \"usage\":\n return \"/metrics\";\n case \"new-app\":\n case \"create-app\":\n return \"/new-app\";\n case \"vault\":\n case \"secrets\":\n return \"/vault\";\n case \"integrations\":\n return \"/integrations\";\n case \"workspace\":\n case \"resources\":\n return \"/workspace\";\n case \"agents\":\n return \"/agents\";\n case \"messaging\":\n return \"/messaging\";\n case \"destinations\":\n case \"routes\":\n return \"/destinations\";\n case \"identities\":\n return \"/identities\";\n case \"approvals\":\n return \"/approvals\";\n case \"audit\":\n return \"/audit\";\n case \"dreams\":\n return \"/dreams\";\n case \"thread-debug\":\n case \"threads\":\n return \"/thread-debug\";\n case \"team\":\n return \"/team\";\n case \"extensions\":\n return command?.extensionId\n ? `/extensions/${encodeURIComponent(command.extensionId)}`\n : \"/extensions\";\n default:\n return resolveExtensionPath(view, extensions);\n }\n}\n\nfunction extensionSlugFromPathname(pathname: string): string | undefined {\n const match = pathname.match(/^\\/extensions\\/[^/]+\\/([^/?#]+)/);\n if (!match?.[1]) return undefined;\n try {\n return decodeURIComponent(match[1]);\n } catch {\n return match[1];\n }\n}\n"]}
1
+ {"version":3,"file":"use-navigation-state.js","sourceRoot":"","sources":["../../src/hooks/use-navigation-state.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n agentNativePath,\n appBasePath,\n appPath,\n markAgentChatHomeHandoff,\n} from \"@agent-native/core/client\";\nimport { extensionIdFromPathname } from \"@agent-native/core/client/extensions\";\nimport { useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { useEffect } from \"react\";\nimport { useLocation, useNavigate } from \"react-router\";\n\nimport type {\n DispatchExtensionConfig,\n DispatchNavItem,\n} from \"../components/index.js\";\n\nexport interface NavigationState {\n view: string;\n path?: string;\n extensionId?: string;\n extensionSlug?: string;\n dreamId?: string;\n sourceId?: string;\n query?: string;\n threadId?: string;\n}\n\nexport function useNavigationState(extensions?: DispatchExtensionConfig) {\n const location = useLocation();\n const navigate = useNavigate();\n const qc = useQueryClient();\n\n // Sync current route to application state\n useEffect(() => {\n const localPathname = routerPath(location.pathname);\n const state = buildDispatchNavigationState(\n localPathname,\n location.search,\n extensions,\n );\n\n fetch(agentNativePath(\"/_agent-native/application-state/navigation\"), {\n method: \"PUT\",\n keepalive: true,\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(state),\n }).catch(() => {});\n }, [extensions, location.pathname, location.search]);\n\n // Listen for navigate commands from agent\n const { data: navCommand } = useQuery({\n queryKey: [\"navigate-command\"],\n queryFn: async () => {\n const res = await fetch(\n agentNativePath(\"/_agent-native/application-state/navigate\"),\n );\n if (!res.ok) return null;\n const data = await res.json();\n if (data) {\n // Return with a timestamp to ensure uniqueness\n return { ...data, _ts: Date.now() };\n }\n return null;\n },\n refetchInterval: 2_000,\n structuralSharing: false,\n });\n\n useEffect(() => {\n if (!navCommand) return;\n // Delete the one-shot command AFTER reading it\n fetch(agentNativePath(\"/_agent-native/application-state/navigate\"), {\n method: \"DELETE\",\n headers: { \"X-Agent-Native-CSRF\": \"1\" },\n }).catch(() => {});\n const cmd = navCommand as NavigationState;\n\n // Navigate to a specific path or resolve view name to path\n const resolvedPath =\n cmd.path || resolvePath(cmd.view, extensions, cmd) || \"/overview\";\n const path =\n cmd.view === \"dreams\" && cmd.dreamId && !resolvedPath.includes(\"?\")\n ? `${resolvedPath}?dreamId=${encodeURIComponent(cmd.dreamId)}`\n : resolvedPath;\n const nextPath = routerPath(path);\n if (\n isChatPath(routerPath(location.pathname)) &&\n !isChatPath(pathnameFromPath(nextPath))\n ) {\n markAgentChatHomeHandoff(\"dispatch\");\n }\n navigate(nextPath);\n qc.setQueryData([\"navigate-command\"], null);\n }, [extensions, location.pathname, navCommand, navigate, qc]);\n}\n\nfunction pathnameFromPath(path: string): string {\n return path.split(/[?#]/, 1)[0] || \"/\";\n}\n\nfunction isChatPath(pathname: string): boolean {\n return pathname === \"/chat\" || pathname.startsWith(\"/chat/\");\n}\n\nfunction threadIdFromPath(pathname: string): string | null {\n const match = pathname.match(/^\\/chat\\/([^/]+)/);\n if (!match) return null;\n try {\n const value = decodeURIComponent(match[1]).trim();\n return value || null;\n } catch {\n return null;\n }\n}\n\nexport function buildDispatchNavigationState(\n pathname: string,\n search = \"\",\n extensions?: DispatchExtensionConfig,\n): NavigationState {\n const state: NavigationState = {\n view: resolveView(pathname, extensions),\n path: appPath(pathname),\n };\n\n const threadId = threadIdFromPath(pathname);\n if (threadId) state.threadId = threadId;\n\n const extensionId = extensionIdFromPathname(pathname);\n if (extensionId) {\n state.view = \"extensions\";\n state.extensionId = extensionId;\n const slug = extensionSlugFromPathname(pathname);\n if (slug) state.extensionSlug = slug;\n return state;\n }\n\n if (state.view === \"dreams\") {\n const params = new URLSearchParams(search);\n const dreamId = params.get(\"dreamId\");\n const sourceId = params.get(\"sourceId\");\n const query = params.get(\"query\");\n if (dreamId) state.dreamId = dreamId;\n if (sourceId) state.sourceId = sourceId;\n if (query) state.query = query;\n }\n\n return state;\n}\n\nfunction routerPath(path: string): string {\n const basePath = appBasePath();\n if (!basePath) return path;\n let result = path;\n // Iteratively strip basename. A path that arrives doubly-prefixed\n // (e.g. \"/dispatch/dispatch/overview\", possibly from a stale link or a\n // prior bug) would otherwise get partially stripped here and then\n // re-prefixed by react-router's basename, restoring the bad URL.\n for (let i = 0; i < 4; i += 1) {\n if (result === basePath) return \"/\";\n if (!result.startsWith(`${basePath}/`)) break;\n result = result.slice(basePath.length) || \"/\";\n }\n return result;\n}\n\nfunction extensionItemMatchesPath(\n item: DispatchNavItem,\n pathname: string,\n): boolean {\n if (item.match) {\n try {\n if (item.match(pathname)) return true;\n } catch {\n return false;\n }\n }\n return pathname === item.to || pathname.startsWith(`${item.to}/`);\n}\n\nfunction resolveExtensionView(\n pathname: string,\n extensions?: DispatchExtensionConfig,\n): string | undefined {\n return extensions?.navItems?.find((item) =>\n extensionItemMatchesPath(item, pathname),\n )?.id;\n}\n\nfunction resolveExtensionPath(\n view: string | undefined,\n extensions?: DispatchExtensionConfig,\n): string | undefined {\n if (!view) return undefined;\n return extensions?.navItems?.find((item) => item.id === view)?.to;\n}\n\nfunction resolveView(\n pathname: string,\n extensions?: DispatchExtensionConfig,\n): string {\n const extensionView = resolveExtensionView(pathname, extensions);\n if (extensionView) return extensionView;\n if (pathname === \"/extensions\" || pathname.startsWith(\"/extensions/\")) {\n return \"extensions\";\n }\n if (pathname.startsWith(\"/chat\")) return \"chat\";\n if (pathname.startsWith(\"/apps\")) return \"apps\";\n if (pathname.startsWith(\"/metrics\")) return \"metrics\";\n if (pathname.startsWith(\"/new-app\")) return \"new-app\";\n if (pathname.startsWith(\"/vault\")) return \"vault\";\n if (pathname.startsWith(\"/integrations\")) return \"integrations\";\n if (pathname.startsWith(\"/workspace\")) return \"workspace\";\n if (pathname.startsWith(\"/agents\")) return \"agents\";\n if (pathname.startsWith(\"/messaging\")) return \"messaging\";\n if (pathname.startsWith(\"/destinations\")) return \"destinations\";\n if (pathname.startsWith(\"/identities\")) return \"identities\";\n if (pathname.startsWith(\"/approvals\")) return \"approvals\";\n if (pathname.startsWith(\"/audit\")) return \"audit\";\n if (pathname.startsWith(\"/dreams\")) return \"dreams\";\n if (pathname.startsWith(\"/thread-debug\")) return \"thread-debug\";\n if (pathname.startsWith(\"/team\")) return \"team\";\n return \"overview\";\n}\n\nfunction resolvePath(\n view?: string,\n extensions?: DispatchExtensionConfig,\n command?: Pick<NavigationState, \"extensionId\" | \"threadId\">,\n): string | undefined {\n switch (view) {\n case \"chat\":\n case \"ask\":\n return command?.threadId && command.threadId.trim()\n ? `/chat/${encodeURIComponent(command.threadId.trim())}`\n : \"/chat\";\n case \"overview\":\n return \"/overview\";\n case \"apps\":\n return \"/apps\";\n case \"metrics\":\n case \"usage\":\n return \"/metrics\";\n case \"new-app\":\n case \"create-app\":\n return \"/new-app\";\n case \"vault\":\n case \"secrets\":\n return \"/vault\";\n case \"integrations\":\n return \"/integrations\";\n case \"workspace\":\n case \"resources\":\n return \"/workspace\";\n case \"agents\":\n return \"/agents\";\n case \"messaging\":\n return \"/messaging\";\n case \"destinations\":\n case \"routes\":\n return \"/destinations\";\n case \"identities\":\n return \"/identities\";\n case \"approvals\":\n return \"/approvals\";\n case \"audit\":\n return \"/audit\";\n case \"dreams\":\n return \"/dreams\";\n case \"thread-debug\":\n case \"threads\":\n return \"/thread-debug\";\n case \"team\":\n return \"/team\";\n case \"extensions\":\n return command?.extensionId\n ? `/extensions/${encodeURIComponent(command.extensionId)}`\n : \"/extensions\";\n default:\n return resolveExtensionPath(view, extensions);\n }\n}\n\nfunction extensionSlugFromPathname(pathname: string): string | undefined {\n const match = pathname.match(/^\\/extensions\\/[^/]+\\/([^/?#]+)/);\n if (!match?.[1]) return undefined;\n try {\n return decodeURIComponent(match[1]);\n } catch {\n return match[1];\n }\n}\n"]}
@@ -37,9 +37,9 @@ declare function toast({ ...props }: Toast): {
37
37
  update: (props: ToasterToast) => void;
38
38
  };
39
39
  declare function useToast(): {
40
+ toasts: ToasterToast[];
40
41
  toast: typeof toast;
41
42
  dismiss: (toastId?: string) => void;
42
- toasts: ToasterToast[];
43
43
  };
44
44
  export { useToast, toast };
45
45
  //# sourceMappingURL=use-toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAK5E,KAAK,YAAY,GAAG,UAAU,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,WAAW;;;;;CAKP,CAAC;AASX,KAAK,UAAU,GAAG,OAAO,WAAW,CAAC;AAErC,KAAK,MAAM,GACP;IACE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;CACrB,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEN,UAAU,KAAK;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAoBD,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,EAAE,QAAQ,MAAM,KAAG,KAqDtD,CAAC;AAaF,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAEtC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK;;;oBAGT,YAAY;EAwBpC;AAED,iBAAS,QAAQ;;wBAgBO,MAAM;YAtIpB,YAAY,EAAE;EAwIvB;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAK5E,KAAK,YAAY,GAAG,UAAU,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,QAAA,MAAM,WAAW;aACf,SAAS,EAAE,WAAW;aACtB,YAAY,EAAE,cAAc;aAC5B,aAAa,EAAE,eAAe;aAC9B,YAAY,EAAE,cAAc;CACpB,CAAC;AASX,KAAK,UAAU,GAAG,OAAO,WAAW,CAAC;AAErC,KAAK,MAAM,GACP;IACE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;CACrB,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAEN,UAAU,KAAK;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAoBD,eAAO,MAAM,OAAO,UAAW,KAAK,UAAU,MAAM,KAAG,KAqDtD,CAAC;AAaF,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAEtC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK;;;oBAGT,YAAY;EAwBpC;AAED,iBAAS,QAAQ;YAtHP,YAAY,EAAE;;wBAsIA,MAAM;EAE7B;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n"]}
1
+ {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport type { ToastActionElement, ToastProps } from \"@/components/ui/toast\";\n\nconst TOAST_LIMIT = 1;\nconst TOAST_REMOVE_DELAY = 1000000;\n\ntype ToasterToast = ToastProps & {\n id: string;\n title?: React.ReactNode;\n description?: React.ReactNode;\n action?: ToastActionElement;\n};\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const;\n\nlet count = 0;\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER;\n return count.toString();\n}\n\ntype ActionType = typeof actionTypes;\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"];\n toast: ToasterToast;\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"];\n toast: Partial<ToasterToast>;\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"];\n toastId?: ToasterToast[\"id\"];\n };\n\ninterface State {\n toasts: ToasterToast[];\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>();\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return;\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId);\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n });\n }, TOAST_REMOVE_DELAY);\n\n toastTimeouts.set(toastId, timeout);\n};\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n };\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n ),\n };\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action;\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId);\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id);\n });\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n ),\n };\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n };\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n };\n }\n};\n\nconst listeners: Array<(state: State) => void> = [];\n\nlet memoryState: State = { toasts: [] };\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action);\n listeners.forEach((listener) => {\n listener(memoryState);\n });\n}\n\ntype Toast = Omit<ToasterToast, \"id\">;\n\nfunction toast({ ...props }: Toast) {\n const id = genId();\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n });\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id });\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss();\n },\n },\n });\n\n return {\n id: id,\n dismiss,\n update,\n };\n}\n\nfunction useToast() {\n const [state, setState] = React.useState<State>(memoryState);\n\n React.useEffect(() => {\n listeners.push(setState);\n return () => {\n const index = listeners.indexOf(setState);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n };\n }, [state]);\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n };\n}\n\nexport { useToast, toast };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"catch-all-target.js","sourceRoot":"","sources":["../../src/lib/catch-all-target.ts"],"names":[],"mappings":"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","sourcesContent":["interface WorkspaceAppManifestEntry {\n id?: string;\n path?: unknown;\n url?: unknown;\n}\n\ninterface BuiltinAgentEntry {\n id: string;\n url?: string | null;\n}\n\ninterface ResolveCatchAllTargetOptions {\n workspaceApps?: WorkspaceAppManifestEntry[] | null;\n builtinAgents?: BuiltinAgentEntry[] | null;\n}\n\n/**\n * Resolve where `/dispatch/<appId>` should bounce to when it doesn't match\n * an explicit dispatch route. Used by the `$appId` catch-all route loader.\n *\n * Resolution order:\n *\n * 1. Workspace apps manifest (env, .agent-native/workspace-apps.json, or a\n * filesystem scan of `apps/`).\n * - `app.url` (absolute URL — externally hosted workspace app) wins if\n * present.\n * - Otherwise the `app.path` mounted under the workspace gateway is\n * used. Path is normalized to a leading slash if missing\n * (e.g. manifest entry `path: \"my-forms\"` -> `/my-forms`), so an app\n * whose mounted path differs from its id ends up at the right place\n * instead of being silently rewritten to `/${appId}`.\n * - Bare entry with no path / url falls back to `/${appId}`.\n * 2. First-party template registry. When no workspace manifest matches\n * (framework dev with each template on its own port, hosted dispatch\n * with no sibling apps), return the matching template's deploy URL —\n * dev URL in development (e.g. http://localhost:8084 for forms), prod\n * URL in production (e.g. https://forms.agent-native.com).\n *\n * Returns `null` if neither lookup matches, letting the route render its\n * \"Page not found\" pane.\n */\n/**\n * Validate `app.url` is an absolute http(s) URL before we trust it as a\n * redirect target. A bare hostname (`\"forms.example.com\"`) or a\n * `javascript:` scheme would otherwise get returned verbatim from\n * `resolveCatchAllTarget` and produce a broken redirect (or a phishing\n * vector). Mirrors `normalizeWorkspaceAppUrl` in\n * `packages/core/src/deploy/workspace-deploy.ts` — but inlined to avoid\n * pulling the deploy CLI module into a runtime path.\n */\nfunction validatedAbsoluteUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\" || !value.trim()) return undefined;\n try {\n const parsed = new URL(value.trim());\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return undefined;\n }\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return undefined;\n }\n}\n\nexport function resolveCatchAllTarget(\n appId: string,\n options: ResolveCatchAllTargetOptions = {},\n): string | null {\n const apps = options.workspaceApps;\n if (apps) {\n const app = apps.find((entry) => entry?.id === appId);\n if (app) {\n // Explicit externally-hosted URL wins. Workspaces that point at a\n // remote deploy (e.g. a sibling app on Netlify) set `url` and we\n // should bounce the user there rather than mounting a local path\n // that doesn't exist inside the gateway. Validate the URL first —\n // a bare hostname or non-http(s) scheme would produce a broken\n // redirect (and a `javascript:` value would be a phishing vector).\n const url = validatedAbsoluteUrl(app.url);\n if (url) {\n return url;\n }\n // Fall back to the mounted path. Normalize to leading slash so an\n // entry whose path differs from its id (e.g. `id: \"forms\"`,\n // `path: \"my-forms\"`) still lands on the correct gateway mount —\n // not on `/${appId}`, which would silently route to the wrong app.\n //\n // Reject scheme-relative paths. Three variants reach this point —\n // all of them get collapsed to a single leading slash so the\n // redirect stays on the gateway:\n //\n // `//evil.example` — network-path reference, browser treats as\n // absolute (https://evil.example).\n // `/\\evil.example` — browsers normalize backslashes to forward\n // slashes during URL parsing, same result.\n // `\\/evil.example` — same idea, leading-backslash variant.\n //\n // The manifest parser only checks `startsWith(\"/\")` for the first\n // case, and even that allows `//evil...`. Defend in depth here by\n // collapsing any run of leading slashes-or-backslashes to one\n // forward slash. Same phishing vector that `validatedAbsoluteUrl`\n // closes for `app.url`.\n if (typeof app.path === \"string\" && app.path.trim()) {\n const normalized = app.path.trim().replace(/^[/\\\\]+/, \"/\");\n return normalized.startsWith(\"/\") ? normalized : `/${normalized}`;\n }\n return `/${appId}`;\n }\n }\n const builtin = (options.builtinAgents ?? []).find(\n (agent) => agent.id === appId,\n );\n return builtin?.url ?? null;\n}\n\nexport async function resolveServerCatchAllTarget(\n appId: string,\n): Promise<string | null> {\n if (!import.meta.env.SSR) return null;\n const { getBuiltinAgents, loadWorkspaceAppsManifest } =\n await import(\"@agent-native/core/server/agent-discovery\");\n return resolveCatchAllTarget(appId, {\n workspaceApps: loadWorkspaceAppsManifest(),\n builtinAgents: getBuiltinAgents(\"dispatch\"),\n });\n}\n"]}
1
+ {"version":3,"file":"catch-all-target.js","sourceRoot":"","sources":["../../src/lib/catch-all-target.ts"],"names":[],"mappings":"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","sourcesContent":["interface WorkspaceAppManifestEntry {\n id?: string;\n path?: unknown;\n url?: unknown;\n}\n\ninterface BuiltinAgentEntry {\n id: string;\n url?: string | null;\n}\n\ninterface ResolveCatchAllTargetOptions {\n workspaceApps?: WorkspaceAppManifestEntry[] | null;\n builtinAgents?: BuiltinAgentEntry[] | null;\n}\n\n/**\n * Resolve where `/dispatch/<appId>` should bounce to when it doesn't match\n * an explicit dispatch route. Used by the `$appId` catch-all route loader.\n *\n * Resolution order:\n *\n * 1. Workspace apps manifest (env, .agent-native/workspace-apps.json, or a\n * filesystem scan of `apps/`).\n * - `app.url` (absolute URL — externally hosted workspace app) wins if\n * present.\n * - Otherwise the `app.path` mounted under the workspace gateway is\n * used. Path is normalized to a leading slash if missing\n * (e.g. manifest entry `path: \"my-forms\"` -> `/my-forms`), so an app\n * whose mounted path differs from its id ends up at the right place\n * instead of being silently rewritten to `/${appId}`.\n * - Bare entry with no path / url falls back to `/${appId}`.\n * 2. First-party template registry. When no workspace manifest matches\n * (framework dev with each template on its own port, hosted dispatch\n * with no sibling apps), return the matching template's deploy URL —\n * dev URL in development (e.g. http://localhost:8084 for forms), prod\n * URL in production (e.g. https://forms.agent-native.com).\n *\n * Returns `null` if neither lookup matches, letting the route render its\n * \"Page not found\" pane.\n */\n/**\n * Validate `app.url` is an absolute http(s) URL before we trust it as a\n * redirect target. A bare hostname (`\"forms.example.com\"`) or a\n * `javascript:` scheme would otherwise get returned verbatim from\n * `resolveCatchAllTarget` and produce a broken redirect (or a phishing\n * vector). Mirrors `normalizeWorkspaceAppUrl` in\n * `packages/core/src/deploy/workspace-deploy.ts` — but inlined to avoid\n * pulling the deploy CLI module into a runtime path.\n */\nfunction validatedAbsoluteUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\" || !value.trim()) return undefined;\n try {\n const parsed = new URL(value.trim());\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return undefined;\n }\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return undefined;\n }\n}\n\nexport function resolveCatchAllTarget(\n appId: string,\n options: ResolveCatchAllTargetOptions = {},\n): string | null {\n const apps = options.workspaceApps;\n if (apps) {\n const app = apps.find((entry) => entry?.id === appId);\n if (app) {\n // Explicit externally-hosted URL wins. Workspaces that point at a\n // remote deploy (e.g. a sibling app on Netlify) set `url` and we\n // should bounce the user there rather than mounting a local path\n // that doesn't exist inside the gateway. Validate the URL first —\n // a bare hostname or non-http(s) scheme would produce a broken\n // redirect (and a `javascript:` value would be a phishing vector).\n const url = validatedAbsoluteUrl(app.url);\n if (url) {\n return url;\n }\n // Fall back to the mounted path. Normalize to leading slash so an\n // entry whose path differs from its id (e.g. `id: \"forms\"`,\n // `path: \"my-forms\"`) still lands on the correct gateway mount —\n // not on `/${appId}`, which would silently route to the wrong app.\n //\n // Reject scheme-relative paths. Three variants reach this point —\n // all of them get collapsed to a single leading slash so the\n // redirect stays on the gateway:\n //\n // `//evil.example` — network-path reference, browser treats as\n // absolute (https://evil.example).\n // `/\\evil.example` — browsers normalize backslashes to forward\n // slashes during URL parsing, same result.\n // `\\/evil.example` — same idea, leading-backslash variant.\n //\n // The manifest parser only checks `startsWith(\"/\")` for the first\n // case, and even that allows `//evil...`. Defend in depth here by\n // collapsing any run of leading slashes-or-backslashes to one\n // forward slash. Same phishing vector that `validatedAbsoluteUrl`\n // closes for `app.url`.\n if (typeof app.path === \"string\" && app.path.trim()) {\n const normalized = app.path.trim().replace(/^[/\\\\]+/, \"/\");\n return normalized.startsWith(\"/\") ? normalized : `/${normalized}`;\n }\n return `/${appId}`;\n }\n }\n const builtin = (options.builtinAgents ?? []).find(\n (agent) => agent.id === appId,\n );\n return builtin?.url ?? null;\n}\n\nexport async function resolveServerCatchAllTarget(\n appId: string,\n): Promise<string | null> {\n if (!import.meta.env.SSR) return null;\n const { getBuiltinAgents, loadWorkspaceAppsManifest } =\n await import(\"@agent-native/core/server/agent-discovery\");\n return resolveCatchAllTarget(appId, {\n workspaceApps: loadWorkspaceAppsManifest(),\n builtinAgents: getBuiltinAgents(\"dispatch\"),\n });\n}\n"]}
@@ -7,17 +7,17 @@ export declare function extractThreadPreviewImageUrl(threadData: string): string
7
7
  export declare function buildThreadLinkPreviewMeta(preview: ThreadLinkPreview | null): ({
8
8
  title: string;
9
9
  name?: undefined;
10
- content?: undefined;
11
10
  property?: undefined;
11
+ content?: undefined;
12
12
  } | {
13
+ title?: undefined;
13
14
  name: string;
14
15
  content: string;
15
- title?: undefined;
16
16
  property?: undefined;
17
17
  } | {
18
- property: string;
19
- content: string;
20
18
  title?: undefined;
21
19
  name?: undefined;
20
+ property: string;
21
+ content: string;
22
22
  })[];
23
23
  //# sourceMappingURL=thread-link-preview.d.ts.map
@@ -4,5 +4,5 @@ export declare function meta(): {
4
4
  }[];
5
5
  export declare function loader({ params }: LoaderFunctionArgs): Promise<null>;
6
6
  export declare function clientLoader({ params, serverLoader, }: ClientLoaderFunctionArgs): Promise<unknown>;
7
- export default function WorkspaceAppCatchAllRoute(): import("react/jsx-runtime").JSX.Element;
7
+ export default function WorkspaceAppCatchAllRoute(): import("node_modules/@types/react").JSX.Element;
8
8
  //# sourceMappingURL=$appId.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"$appId.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/$appId.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAiBtB,wBAAgB,IAAI;;IAEnB;AA2CD,wBAAsB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBAQ1D;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,YAAY,GACb,EAAE,wBAAwB,oBAS1B;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,4CAgGhD"}
1
+ {"version":3,"file":"$appId.d.ts","sourceRoot":"","sources":["../../../src/routes/pages/$appId.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAYtB,wBAAgB,IAAI;;IAEnB;AA2CD,wBAAsB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,kBAAkB,iBAQ1D;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,YAAY,GACb,EAAE,wBAAwB,oBAS1B;AAED,MAAM,CAAC,OAAO,UAAU,yBAAyB,oDAmGhD"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useActionQuery, appPath, useT } from "@agent-native/core/client";
3
+ import { IconArrowLeft, IconArrowUpRight, IconClockHour4, } from "@tabler/icons-react";
2
4
  import { useEffect, useMemo } from "react";
3
5
  import { Link, Navigate, redirect, useParams, } from "react-router";
4
- import { useActionQuery, appPath } from "@agent-native/core/client";
5
- import { IconArrowLeft, IconArrowUpRight, IconClockHour4, } from "@tabler/icons-react";
6
6
  import { DispatchShell } from "../../components/dispatch-shell.js";
7
- import { Spinner } from "../../components/ui/spinner.js";
8
7
  import { Badge } from "../../components/ui/badge.js";
9
8
  import { Button } from "../../components/ui/button.js";
9
+ import { Spinner } from "../../components/ui/spinner.js";
10
10
  import { resolveServerCatchAllTarget } from "../../lib/catch-all-target.js";
11
11
  import { workspaceAppHref, } from "../../lib/workspace-apps.js";
12
12
  export function meta() {
@@ -77,6 +77,7 @@ export async function clientLoader({ params, serverLoader, }) {
77
77
  return serverLoader();
78
78
  }
79
79
  export default function WorkspaceAppCatchAllRoute() {
80
+ const t = useT();
80
81
  const { appId } = useParams();
81
82
  const { data: apps = [], isLoading } = useActionQuery("list-workspace-apps", { includeAgentCards: false }, { refetchInterval: 2_000 });
82
83
  const app = useMemo(() => apps.find((item) => item.id === appId) ?? null, [appId, apps]);
@@ -95,6 +96,6 @@ export default function WorkspaceAppCatchAllRoute() {
95
96
  if ((isLoading && !app) || (app && app.status !== "pending" && href)) {
96
97
  return (_jsx("div", { className: "flex h-screen w-full items-center justify-center", children: _jsx(Spinner, { className: "size-8" }) }));
97
98
  }
98
- return (_jsx(DispatchShell, { title: app?.name || "Page not found", description: "This route is not in the workspace app list yet.", children: _jsxs("div", { className: "max-w-2xl rounded-lg border bg-card p-5", children: [_jsx(Button, { asChild: true, size: "sm", variant: "ghost", className: "-ml-2 mb-4", children: _jsxs(Link, { to: appPath("/overview"), children: [_jsx(IconArrowLeft, { size: 15, className: "mr-1.5" }), "Overview"] }) }), app?.status === "pending" ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: app.name }), _jsxs(Badge, { variant: "outline", className: "gap-1 border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300", children: [_jsx(IconClockHour4, { size: 12 }), "Building"] })] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["This app is being created. It will be available at", " ", _jsx("span", { className: "font-mono text-foreground", children: app.path }), " ", "after its branch is merged and the workspace deploy finishes."] }), app.branchName ? (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Branch: ", app.branchName] })) : null, app.builderUrl ? (_jsx(Button, { asChild: true, children: _jsxs("a", { href: app.builderUrl, target: "_blank", rel: "noreferrer", children: ["Open Builder branch", _jsx(IconArrowUpRight, { size: 15, className: "ml-1.5" })] }) })) : null] })) : (_jsxs("div", { className: "space-y-3", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: "Page not found" }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [_jsxs("span", { className: "font-mono text-foreground", children: ["/", appId] }), " isn't a Dispatch tab or a workspace app in this workspace."] }), _jsx(Button, { asChild: true, children: _jsx(Link, { to: appPath("/apps"), children: "Browse apps" }) })] }))] }) }));
99
+ return (_jsx(DispatchShell, { title: app?.name || t("dispatch.pages.pageNotFound"), description: t("dispatch.pages.pageNotFoundDescription"), children: _jsxs("div", { className: "max-w-2xl rounded-lg border bg-card p-5", children: [_jsx(Button, { asChild: true, size: "sm", variant: "ghost", className: "-ml-2 mb-4", children: _jsxs(Link, { to: appPath("/overview"), children: [_jsx(IconArrowLeft, { size: 15, className: "mr-1.5" }), t("dispatch.nav.overview")] }) }), app?.status === "pending" ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: app.name }), _jsxs(Badge, { variant: "outline", className: "gap-1 border-amber-500/30 bg-amber-500/10 text-amber-700 dark:text-amber-300", children: [_jsx(IconClockHour4, { size: 12 }), t("dispatch.pages.building")] })] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [t("dispatch.pages.appBuildingPrefix"), " ", _jsx("span", { className: "font-mono text-foreground", children: app.path }), " ", t("dispatch.pages.appBuildingSuffix")] }), app.branchName ? (_jsx("p", { className: "text-xs text-muted-foreground", children: t("dispatch.pages.branch", { branch: app.branchName }) })) : null, app.builderUrl ? (_jsx(Button, { asChild: true, children: _jsxs("a", { href: app.builderUrl, target: "_blank", rel: "noreferrer", children: [t("dispatch.pages.openBuilderBranch"), _jsx(IconArrowUpRight, { size: 15, className: "ml-1.5" })] }) })) : null] })) : (_jsxs("div", { className: "space-y-3", children: [_jsx("h2", { className: "text-base font-semibold text-foreground", children: t("dispatch.pages.pageNotFound") }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [_jsxs("span", { className: "font-mono text-foreground", children: ["/", appId] }), " isn't", t("dispatch.pages.notDispatchOrWorkspaceApp")] }), _jsx(Button, { asChild: true, children: _jsx(Link, { to: appPath("/apps"), children: t("dispatch.pages.browseApps") }) })] }))] }) }));
99
100
  }
100
101
  //# sourceMappingURL=$appId.js.map