@agent-native/dispatch 0.1.1

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 (737) hide show
  1. package/README.md +220 -0
  2. package/dist/actions/approve-dispatch-change.d.ts +3 -0
  3. package/dist/actions/approve-dispatch-change.d.ts.map +1 -0
  4. package/dist/actions/approve-dispatch-change.js +11 -0
  5. package/dist/actions/approve-dispatch-change.js.map +1 -0
  6. package/dist/actions/approve-vault-request.d.ts +3 -0
  7. package/dist/actions/approve-vault-request.d.ts.map +1 -0
  8. package/dist/actions/approve-vault-request.js +16 -0
  9. package/dist/actions/approve-vault-request.js.map +1 -0
  10. package/dist/actions/create-link-token.d.ts +3 -0
  11. package/dist/actions/create-link-token.d.ts.map +1 -0
  12. package/dist/actions/create-link-token.js +11 -0
  13. package/dist/actions/create-link-token.js.map +1 -0
  14. package/dist/actions/create-vault-grant.d.ts +3 -0
  15. package/dist/actions/create-vault-grant.d.ts.map +1 -0
  16. package/dist/actions/create-vault-grant.js +14 -0
  17. package/dist/actions/create-vault-grant.js.map +1 -0
  18. package/dist/actions/create-vault-secret.d.ts +3 -0
  19. package/dist/actions/create-vault-secret.d.ts.map +1 -0
  20. package/dist/actions/create-vault-secret.js +20 -0
  21. package/dist/actions/create-vault-secret.js.map +1 -0
  22. package/dist/actions/create-workspace-resource-grant.d.ts +3 -0
  23. package/dist/actions/create-workspace-resource-grant.d.ts.map +1 -0
  24. package/dist/actions/create-workspace-resource-grant.js +14 -0
  25. package/dist/actions/create-workspace-resource-grant.js.map +1 -0
  26. package/dist/actions/create-workspace-resource.d.ts +3 -0
  27. package/dist/actions/create-workspace-resource.d.ts.map +1 -0
  28. package/dist/actions/create-workspace-resource.js +24 -0
  29. package/dist/actions/create-workspace-resource.js.map +1 -0
  30. package/dist/actions/delete-destination.d.ts +3 -0
  31. package/dist/actions/delete-destination.d.ts.map +1 -0
  32. package/dist/actions/delete-destination.js +11 -0
  33. package/dist/actions/delete-destination.js.map +1 -0
  34. package/dist/actions/delete-vault-secret.d.ts +3 -0
  35. package/dist/actions/delete-vault-secret.d.ts.map +1 -0
  36. package/dist/actions/delete-vault-secret.js +11 -0
  37. package/dist/actions/delete-vault-secret.js.map +1 -0
  38. package/dist/actions/delete-workspace-resource.d.ts +3 -0
  39. package/dist/actions/delete-workspace-resource.d.ts.map +1 -0
  40. package/dist/actions/delete-workspace-resource.js +11 -0
  41. package/dist/actions/delete-workspace-resource.js.map +1 -0
  42. package/dist/actions/deny-vault-request.d.ts +3 -0
  43. package/dist/actions/deny-vault-request.d.ts.map +1 -0
  44. package/dist/actions/deny-vault-request.js +12 -0
  45. package/dist/actions/deny-vault-request.js.map +1 -0
  46. package/dist/actions/get-app-creation-settings.d.ts +3 -0
  47. package/dist/actions/get-app-creation-settings.d.ts.map +1 -0
  48. package/dist/actions/get-app-creation-settings.js +10 -0
  49. package/dist/actions/get-app-creation-settings.js.map +1 -0
  50. package/dist/actions/get-dispatch-settings.d.ts +3 -0
  51. package/dist/actions/get-dispatch-settings.d.ts.map +1 -0
  52. package/dist/actions/get-dispatch-settings.js +10 -0
  53. package/dist/actions/get-dispatch-settings.js.map +1 -0
  54. package/dist/actions/get-workspace-info.d.ts +3 -0
  55. package/dist/actions/get-workspace-info.d.ts.map +1 -0
  56. package/dist/actions/get-workspace-info.js +10 -0
  57. package/dist/actions/get-workspace-info.js.map +1 -0
  58. package/dist/actions/grant-vault-secrets-to-app.d.ts +3 -0
  59. package/dist/actions/grant-vault-secrets-to-app.d.ts.map +1 -0
  60. package/dist/actions/grant-vault-secrets-to-app.js +19 -0
  61. package/dist/actions/grant-vault-secrets-to-app.js.map +1 -0
  62. package/dist/actions/index.d.ts +9 -0
  63. package/dist/actions/index.d.ts.map +1 -0
  64. package/dist/actions/index.js +101 -0
  65. package/dist/actions/index.js.map +1 -0
  66. package/dist/actions/list-connected-agents.d.ts +3 -0
  67. package/dist/actions/list-connected-agents.d.ts.map +1 -0
  68. package/dist/actions/list-connected-agents.js +79 -0
  69. package/dist/actions/list-connected-agents.js.map +1 -0
  70. package/dist/actions/list-destinations.d.ts +3 -0
  71. package/dist/actions/list-destinations.d.ts.map +1 -0
  72. package/dist/actions/list-destinations.js +10 -0
  73. package/dist/actions/list-destinations.js.map +1 -0
  74. package/dist/actions/list-dispatch-approvals.d.ts +3 -0
  75. package/dist/actions/list-dispatch-approvals.d.ts.map +1 -0
  76. package/dist/actions/list-dispatch-approvals.js +10 -0
  77. package/dist/actions/list-dispatch-approvals.js.map +1 -0
  78. package/dist/actions/list-dispatch-audit.d.ts +3 -0
  79. package/dist/actions/list-dispatch-audit.d.ts.map +1 -0
  80. package/dist/actions/list-dispatch-audit.js +12 -0
  81. package/dist/actions/list-dispatch-audit.js.map +1 -0
  82. package/dist/actions/list-dispatch-overview.d.ts +3 -0
  83. package/dist/actions/list-dispatch-overview.d.ts.map +1 -0
  84. package/dist/actions/list-dispatch-overview.js +17 -0
  85. package/dist/actions/list-dispatch-overview.js.map +1 -0
  86. package/dist/actions/list-integrations-catalog.d.ts +3 -0
  87. package/dist/actions/list-integrations-catalog.d.ts.map +1 -0
  88. package/dist/actions/list-integrations-catalog.js +10 -0
  89. package/dist/actions/list-integrations-catalog.js.map +1 -0
  90. package/dist/actions/list-linked-identities.d.ts +3 -0
  91. package/dist/actions/list-linked-identities.d.ts.map +1 -0
  92. package/dist/actions/list-linked-identities.js +10 -0
  93. package/dist/actions/list-linked-identities.js.map +1 -0
  94. package/dist/actions/list-vault-audit.d.ts +3 -0
  95. package/dist/actions/list-vault-audit.d.ts.map +1 -0
  96. package/dist/actions/list-vault-audit.js +15 -0
  97. package/dist/actions/list-vault-audit.js.map +1 -0
  98. package/dist/actions/list-vault-grants.d.ts +3 -0
  99. package/dist/actions/list-vault-grants.d.ts.map +1 -0
  100. package/dist/actions/list-vault-grants.js +13 -0
  101. package/dist/actions/list-vault-grants.js.map +1 -0
  102. package/dist/actions/list-vault-requests.d.ts +3 -0
  103. package/dist/actions/list-vault-requests.d.ts.map +1 -0
  104. package/dist/actions/list-vault-requests.js +15 -0
  105. package/dist/actions/list-vault-requests.js.map +1 -0
  106. package/dist/actions/list-vault-secret-options.d.ts +3 -0
  107. package/dist/actions/list-vault-secret-options.d.ts.map +1 -0
  108. package/dist/actions/list-vault-secret-options.js +19 -0
  109. package/dist/actions/list-vault-secret-options.js.map +1 -0
  110. package/dist/actions/list-vault-secrets.d.ts +3 -0
  111. package/dist/actions/list-vault-secrets.d.ts.map +1 -0
  112. package/dist/actions/list-vault-secrets.js +25 -0
  113. package/dist/actions/list-vault-secrets.js.map +1 -0
  114. package/dist/actions/list-workspace-apps.d.ts +3 -0
  115. package/dist/actions/list-workspace-apps.d.ts.map +1 -0
  116. package/dist/actions/list-workspace-apps.js +24 -0
  117. package/dist/actions/list-workspace-apps.js.map +1 -0
  118. package/dist/actions/list-workspace-resource-grants.d.ts +3 -0
  119. package/dist/actions/list-workspace-resource-grants.d.ts.map +1 -0
  120. package/dist/actions/list-workspace-resource-grants.js +13 -0
  121. package/dist/actions/list-workspace-resource-grants.js.map +1 -0
  122. package/dist/actions/list-workspace-resources.d.ts +3 -0
  123. package/dist/actions/list-workspace-resources.d.ts.map +1 -0
  124. package/dist/actions/list-workspace-resources.js +15 -0
  125. package/dist/actions/list-workspace-resources.js.map +1 -0
  126. package/dist/actions/navigate.d.ts +16 -0
  127. package/dist/actions/navigate.d.ts.map +1 -0
  128. package/dist/actions/navigate.js +55 -0
  129. package/dist/actions/navigate.js.map +1 -0
  130. package/dist/actions/reject-dispatch-change.d.ts +3 -0
  131. package/dist/actions/reject-dispatch-change.d.ts.map +1 -0
  132. package/dist/actions/reject-dispatch-change.js +12 -0
  133. package/dist/actions/reject-dispatch-change.js.map +1 -0
  134. package/dist/actions/request-vault-secret.d.ts +3 -0
  135. package/dist/actions/request-vault-secret.d.ts.map +1 -0
  136. package/dist/actions/request-vault-secret.js +15 -0
  137. package/dist/actions/request-vault-secret.js.map +1 -0
  138. package/dist/actions/revoke-vault-grant.d.ts +3 -0
  139. package/dist/actions/revoke-vault-grant.d.ts.map +1 -0
  140. package/dist/actions/revoke-vault-grant.js +11 -0
  141. package/dist/actions/revoke-vault-grant.js.map +1 -0
  142. package/dist/actions/revoke-workspace-resource-grant.d.ts +3 -0
  143. package/dist/actions/revoke-workspace-resource-grant.d.ts.map +1 -0
  144. package/dist/actions/revoke-workspace-resource-grant.js +11 -0
  145. package/dist/actions/revoke-workspace-resource-grant.js.map +1 -0
  146. package/dist/actions/send-platform-message.d.ts +3 -0
  147. package/dist/actions/send-platform-message.d.ts.map +1 -0
  148. package/dist/actions/send-platform-message.js +73 -0
  149. package/dist/actions/send-platform-message.js.map +1 -0
  150. package/dist/actions/set-app-creation-settings.d.ts +3 -0
  151. package/dist/actions/set-app-creation-settings.d.ts.map +1 -0
  152. package/dist/actions/set-app-creation-settings.js +18 -0
  153. package/dist/actions/set-app-creation-settings.js.map +1 -0
  154. package/dist/actions/set-dispatch-approval-policy.d.ts +3 -0
  155. package/dist/actions/set-dispatch-approval-policy.d.ts.map +1 -0
  156. package/dist/actions/set-dispatch-approval-policy.js +19 -0
  157. package/dist/actions/set-dispatch-approval-policy.js.map +1 -0
  158. package/dist/actions/start-workspace-app-creation.d.ts +3 -0
  159. package/dist/actions/start-workspace-app-creation.d.ts.map +1 -0
  160. package/dist/actions/start-workspace-app-creation.js +31 -0
  161. package/dist/actions/start-workspace-app-creation.js.map +1 -0
  162. package/dist/actions/sync-vault-to-app.d.ts +3 -0
  163. package/dist/actions/sync-vault-to-app.d.ts.map +1 -0
  164. package/dist/actions/sync-vault-to-app.js +13 -0
  165. package/dist/actions/sync-vault-to-app.js.map +1 -0
  166. package/dist/actions/sync-workspace-resources-to-all.d.ts +3 -0
  167. package/dist/actions/sync-workspace-resources-to-all.d.ts.map +1 -0
  168. package/dist/actions/sync-workspace-resources-to-all.js +9 -0
  169. package/dist/actions/sync-workspace-resources-to-all.js.map +1 -0
  170. package/dist/actions/sync-workspace-resources-to-app.d.ts +3 -0
  171. package/dist/actions/sync-workspace-resources-to-app.d.ts.map +1 -0
  172. package/dist/actions/sync-workspace-resources-to-app.js +11 -0
  173. package/dist/actions/sync-workspace-resources-to-app.js.map +1 -0
  174. package/dist/actions/update-vault-secret.d.ts +3 -0
  175. package/dist/actions/update-vault-secret.d.ts.map +1 -0
  176. package/dist/actions/update-vault-secret.js +12 -0
  177. package/dist/actions/update-vault-secret.js.map +1 -0
  178. package/dist/actions/update-workspace-resource.d.ts +3 -0
  179. package/dist/actions/update-workspace-resource.d.ts.map +1 -0
  180. package/dist/actions/update-workspace-resource.js +18 -0
  181. package/dist/actions/update-workspace-resource.js.map +1 -0
  182. package/dist/actions/upsert-destination.d.ts +3 -0
  183. package/dist/actions/upsert-destination.d.ts.map +1 -0
  184. package/dist/actions/upsert-destination.js +26 -0
  185. package/dist/actions/upsert-destination.js.map +1 -0
  186. package/dist/actions/view-screen.d.ts +11 -0
  187. package/dist/actions/view-screen.d.ts.map +1 -0
  188. package/dist/actions/view-screen.js +68 -0
  189. package/dist/actions/view-screen.js.map +1 -0
  190. package/dist/components/agents-panel.d.ts +16 -0
  191. package/dist/components/agents-panel.d.ts.map +1 -0
  192. package/dist/components/agents-panel.js +64 -0
  193. package/dist/components/agents-panel.js.map +1 -0
  194. package/dist/components/app-keys-popover.d.ts +11 -0
  195. package/dist/components/app-keys-popover.d.ts.map +1 -0
  196. package/dist/components/app-keys-popover.js +84 -0
  197. package/dist/components/app-keys-popover.js.map +1 -0
  198. package/dist/components/create-app-popover.d.ts +24 -0
  199. package/dist/components/create-app-popover.d.ts.map +1 -0
  200. package/dist/components/create-app-popover.js +188 -0
  201. package/dist/components/create-app-popover.js.map +1 -0
  202. package/dist/components/dispatch-shell.d.ts +13 -0
  203. package/dist/components/dispatch-shell.d.ts.map +1 -0
  204. package/dist/components/dispatch-shell.js +15 -0
  205. package/dist/components/dispatch-shell.js.map +1 -0
  206. package/dist/components/index.d.ts +12 -0
  207. package/dist/components/index.d.ts.map +1 -0
  208. package/dist/components/index.js +12 -0
  209. package/dist/components/index.js.map +1 -0
  210. package/dist/components/layout/Header.d.ts +5 -0
  211. package/dist/components/layout/Header.d.ts.map +1 -0
  212. package/dist/components/layout/Header.js +34 -0
  213. package/dist/components/layout/Header.js.map +1 -0
  214. package/dist/components/layout/HeaderActions.d.ts +18 -0
  215. package/dist/components/layout/HeaderActions.d.ts.map +1 -0
  216. package/dist/components/layout/HeaderActions.js +52 -0
  217. package/dist/components/layout/HeaderActions.js.map +1 -0
  218. package/dist/components/layout/Layout.d.ts +8 -0
  219. package/dist/components/layout/Layout.d.ts.map +1 -0
  220. package/dist/components/layout/Layout.js +70 -0
  221. package/dist/components/layout/Layout.js.map +1 -0
  222. package/dist/components/messaging-setup-panel.d.ts +2 -0
  223. package/dist/components/messaging-setup-panel.d.ts.map +1 -0
  224. package/dist/components/messaging-setup-panel.js +300 -0
  225. package/dist/components/messaging-setup-panel.js.map +1 -0
  226. package/dist/components/ui/accordion.d.ts +8 -0
  227. package/dist/components/ui/accordion.d.ts.map +1 -0
  228. package/dist/components/ui/accordion.js +14 -0
  229. package/dist/components/ui/accordion.js.map +1 -0
  230. package/dist/components/ui/alert-dialog.d.ts +21 -0
  231. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  232. package/dist/components/ui/alert-dialog.js +27 -0
  233. package/dist/components/ui/alert-dialog.js.map +1 -0
  234. package/dist/components/ui/alert.d.ts +9 -0
  235. package/dist/components/ui/alert.d.ts.map +1 -0
  236. package/dist/components/ui/alert.js +23 -0
  237. package/dist/components/ui/alert.js.map +1 -0
  238. package/dist/components/ui/aspect-ratio.d.ts +4 -0
  239. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  240. package/dist/components/ui/aspect-ratio.js +4 -0
  241. package/dist/components/ui/aspect-ratio.js.map +1 -0
  242. package/dist/components/ui/avatar.d.ts +7 -0
  243. package/dist/components/ui/avatar.d.ts.map +1 -0
  244. package/dist/components/ui/avatar.js +12 -0
  245. package/dist/components/ui/avatar.js.map +1 -0
  246. package/dist/components/ui/badge.d.ts +10 -0
  247. package/dist/components/ui/badge.d.ts.map +1 -0
  248. package/dist/components/ui/badge.js +21 -0
  249. package/dist/components/ui/badge.js.map +1 -0
  250. package/dist/components/ui/breadcrumb.d.ts +20 -0
  251. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  252. package/dist/components/ui/breadcrumb.js +24 -0
  253. package/dist/components/ui/breadcrumb.js.map +1 -0
  254. package/dist/components/ui/button.d.ts +12 -0
  255. package/dist/components/ui/button.d.ts.map +1 -0
  256. package/dist/components/ui/button.js +34 -0
  257. package/dist/components/ui/button.js.map +1 -0
  258. package/dist/components/ui/calendar.d.ts +9 -0
  259. package/dist/components/ui/calendar.d.ts.map +1 -0
  260. package/dist/components/ui/calendar.js +41 -0
  261. package/dist/components/ui/calendar.js.map +1 -0
  262. package/dist/components/ui/card.d.ts +9 -0
  263. package/dist/components/ui/card.d.ts.map +1 -0
  264. package/dist/components/ui/card.js +17 -0
  265. package/dist/components/ui/card.js.map +1 -0
  266. package/dist/components/ui/carousel.d.ts +19 -0
  267. package/dist/components/ui/carousel.d.ts.map +1 -0
  268. package/dist/components/ui/carousel.js +99 -0
  269. package/dist/components/ui/carousel.js.map +1 -0
  270. package/dist/components/ui/chart.d.ts +80 -0
  271. package/dist/components/ui/chart.d.ts.map +1 -0
  272. package/dist/components/ui/chart.js +131 -0
  273. package/dist/components/ui/chart.js.map +1 -0
  274. package/dist/components/ui/checkbox.d.ts +5 -0
  275. package/dist/components/ui/checkbox.d.ts.map +1 -0
  276. package/dist/components/ui/checkbox.js +9 -0
  277. package/dist/components/ui/checkbox.js.map +1 -0
  278. package/dist/components/ui/collapsible.d.ts +6 -0
  279. package/dist/components/ui/collapsible.d.ts.map +1 -0
  280. package/dist/components/ui/collapsible.js +6 -0
  281. package/dist/components/ui/collapsible.js.map +1 -0
  282. package/dist/components/ui/command.d.ts +83 -0
  283. package/dist/components/ui/command.d.ts.map +1 -0
  284. package/dist/components/ui/command.js +29 -0
  285. package/dist/components/ui/command.js.map +1 -0
  286. package/dist/components/ui/context-menu.d.ts +28 -0
  287. package/dist/components/ui/context-menu.d.ts.map +1 -0
  288. package/dist/components/ui/context-menu.js +34 -0
  289. package/dist/components/ui/context-menu.js.map +1 -0
  290. package/dist/components/ui/dialog.d.ts +20 -0
  291. package/dist/components/ui/dialog.d.ts.map +1 -0
  292. package/dist/components/ui/dialog.js +23 -0
  293. package/dist/components/ui/dialog.js.map +1 -0
  294. package/dist/components/ui/drawer.d.ts +23 -0
  295. package/dist/components/ui/drawer.d.ts.map +1 -0
  296. package/dist/components/ui/drawer.js +23 -0
  297. package/dist/components/ui/drawer.js.map +1 -0
  298. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  299. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  300. package/dist/components/ui/dropdown-menu.js +36 -0
  301. package/dist/components/ui/dropdown-menu.js.map +1 -0
  302. package/dist/components/ui/form.d.ts +24 -0
  303. package/dist/components/ui/form.d.ts.map +1 -0
  304. package/dist/components/ui/form.js +63 -0
  305. package/dist/components/ui/form.js.map +1 -0
  306. package/dist/components/ui/hover-card.d.ts +7 -0
  307. package/dist/components/ui/hover-card.d.ts.map +1 -0
  308. package/dist/components/ui/hover-card.js +10 -0
  309. package/dist/components/ui/hover-card.js.map +1 -0
  310. package/dist/components/ui/input-otp.d.ts +35 -0
  311. package/dist/components/ui/input-otp.d.ts.map +1 -0
  312. package/dist/components/ui/input-otp.js +19 -0
  313. package/dist/components/ui/input-otp.js.map +1 -0
  314. package/dist/components/ui/input.d.ts +4 -0
  315. package/dist/components/ui/input.d.ts.map +1 -0
  316. package/dist/components/ui/input.js +9 -0
  317. package/dist/components/ui/input.js.map +1 -0
  318. package/dist/components/ui/label.d.ts +6 -0
  319. package/dist/components/ui/label.d.ts.map +1 -0
  320. package/dist/components/ui/label.js +10 -0
  321. package/dist/components/ui/label.js.map +1 -0
  322. package/dist/components/ui/menubar.d.ts +29 -0
  323. package/dist/components/ui/menubar.d.ts.map +1 -0
  324. package/dist/components/ui/menubar.js +41 -0
  325. package/dist/components/ui/menubar.js.map +1 -0
  326. package/dist/components/ui/navigation-menu.d.ts +13 -0
  327. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  328. package/dist/components/ui/navigation-menu.js +25 -0
  329. package/dist/components/ui/navigation-menu.js.map +1 -0
  330. package/dist/components/ui/pagination.d.ts +29 -0
  331. package/dist/components/ui/pagination.d.ts.map +1 -0
  332. package/dist/components/ui/pagination.js +24 -0
  333. package/dist/components/ui/pagination.js.map +1 -0
  334. package/dist/components/ui/popover.d.ts +7 -0
  335. package/dist/components/ui/popover.d.ts.map +1 -0
  336. package/dist/components/ui/popover.js +10 -0
  337. package/dist/components/ui/popover.js.map +1 -0
  338. package/dist/components/ui/progress.d.ts +5 -0
  339. package/dist/components/ui/progress.d.ts.map +1 -0
  340. package/dist/components/ui/progress.js +8 -0
  341. package/dist/components/ui/progress.js.map +1 -0
  342. package/dist/components/ui/radio-group.d.ts +6 -0
  343. package/dist/components/ui/radio-group.d.ts.map +1 -0
  344. package/dist/components/ui/radio-group.js +15 -0
  345. package/dist/components/ui/radio-group.js.map +1 -0
  346. package/dist/components/ui/resizable.d.ts +8 -0
  347. package/dist/components/ui/resizable.d.ts.map +1 -0
  348. package/dist/components/ui/resizable.js +9 -0
  349. package/dist/components/ui/resizable.js.map +1 -0
  350. package/dist/components/ui/scroll-area.d.ts +6 -0
  351. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  352. package/dist/components/ui/scroll-area.js +12 -0
  353. package/dist/components/ui/scroll-area.js.map +1 -0
  354. package/dist/components/ui/select.d.ts +14 -0
  355. package/dist/components/ui/select.d.ts.map +1 -0
  356. package/dist/components/ui/select.js +27 -0
  357. package/dist/components/ui/select.js.map +1 -0
  358. package/dist/components/ui/separator.d.ts +5 -0
  359. package/dist/components/ui/separator.d.ts.map +1 -0
  360. package/dist/components/ui/separator.js +8 -0
  361. package/dist/components/ui/separator.js.map +1 -0
  362. package/dist/components/ui/sheet.d.ts +26 -0
  363. package/dist/components/ui/sheet.d.ts.map +1 -0
  364. package/dist/components/ui/sheet.js +37 -0
  365. package/dist/components/ui/sheet.js.map +1 -0
  366. package/dist/components/ui/sidebar.d.ts +67 -0
  367. package/dist/components/ui/sidebar.d.ts.map +1 -0
  368. package/dist/components/ui/sidebar.js +233 -0
  369. package/dist/components/ui/sidebar.js.map +1 -0
  370. package/dist/components/ui/skeleton.d.ts +3 -0
  371. package/dist/components/ui/skeleton.d.ts.map +1 -0
  372. package/dist/components/ui/skeleton.js +7 -0
  373. package/dist/components/ui/skeleton.js.map +1 -0
  374. package/dist/components/ui/slider.d.ts +5 -0
  375. package/dist/components/ui/slider.d.ts.map +1 -0
  376. package/dist/components/ui/slider.js +8 -0
  377. package/dist/components/ui/slider.js.map +1 -0
  378. package/dist/components/ui/sonner.d.ts +5 -0
  379. package/dist/components/ui/sonner.d.ts.map +1 -0
  380. package/dist/components/ui/sonner.js +25 -0
  381. package/dist/components/ui/sonner.js.map +1 -0
  382. package/dist/components/ui/spinner.d.ts +3 -0
  383. package/dist/components/ui/spinner.d.ts.map +1 -0
  384. package/dist/components/ui/spinner.js +7 -0
  385. package/dist/components/ui/spinner.js.map +1 -0
  386. package/dist/components/ui/switch.d.ts +5 -0
  387. package/dist/components/ui/switch.d.ts.map +1 -0
  388. package/dist/components/ui/switch.js +8 -0
  389. package/dist/components/ui/switch.js.map +1 -0
  390. package/dist/components/ui/table.d.ts +11 -0
  391. package/dist/components/ui/table.d.ts.map +1 -0
  392. package/dist/components/ui/table.js +21 -0
  393. package/dist/components/ui/table.js.map +1 -0
  394. package/dist/components/ui/tabs.d.ts +8 -0
  395. package/dist/components/ui/tabs.d.ts.map +1 -0
  396. package/dist/components/ui/tabs.js +13 -0
  397. package/dist/components/ui/tabs.js.map +1 -0
  398. package/dist/components/ui/textarea.d.ts +6 -0
  399. package/dist/components/ui/textarea.d.ts.map +1 -0
  400. package/dist/components/ui/textarea.js +9 -0
  401. package/dist/components/ui/textarea.js.map +1 -0
  402. package/dist/components/ui/toast.d.ts +16 -0
  403. package/dist/components/ui/toast.d.ts.map +1 -0
  404. package/dist/components/ui/toast.js +34 -0
  405. package/dist/components/ui/toast.js.map +1 -0
  406. package/dist/components/ui/toaster.d.ts +2 -0
  407. package/dist/components/ui/toaster.d.ts.map +1 -0
  408. package/dist/components/ui/toaster.js +10 -0
  409. package/dist/components/ui/toaster.js.map +1 -0
  410. package/dist/components/ui/toggle-group.d.ts +13 -0
  411. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  412. package/dist/components/ui/toggle-group.js +21 -0
  413. package/dist/components/ui/toggle-group.js.map +1 -0
  414. package/dist/components/ui/toggle.d.ts +13 -0
  415. package/dist/components/ui/toggle.d.ts.map +1 -0
  416. package/dist/components/ui/toggle.js +26 -0
  417. package/dist/components/ui/toggle.js.map +1 -0
  418. package/dist/components/ui/tooltip.d.ts +8 -0
  419. package/dist/components/ui/tooltip.d.ts.map +1 -0
  420. package/dist/components/ui/tooltip.js +11 -0
  421. package/dist/components/ui/tooltip.js.map +1 -0
  422. package/dist/components/ui/use-toast.d.ts +3 -0
  423. package/dist/components/ui/use-toast.d.ts.map +1 -0
  424. package/dist/components/ui/use-toast.js +3 -0
  425. package/dist/components/ui/use-toast.js.map +1 -0
  426. package/dist/config.d.ts +33 -0
  427. package/dist/config.d.ts.map +1 -0
  428. package/dist/config.js +7 -0
  429. package/dist/config.js.map +1 -0
  430. package/dist/db/index.d.ts +7 -0
  431. package/dist/db/index.d.ts.map +1 -0
  432. package/dist/db/index.js +10 -0
  433. package/dist/db/index.js.map +1 -0
  434. package/dist/db/migrations.d.ts +5 -0
  435. package/dist/db/migrations.d.ts.map +1 -0
  436. package/dist/db/migrations.js +166 -0
  437. package/dist/db/migrations.js.map +1 -0
  438. package/dist/db/schema.d.ts +2344 -0
  439. package/dist/db/schema.d.ts.map +1 -0
  440. package/dist/db/schema.js +148 -0
  441. package/dist/db/schema.js.map +1 -0
  442. package/dist/hooks/use-mobile.d.ts +2 -0
  443. package/dist/hooks/use-mobile.d.ts.map +1 -0
  444. package/dist/hooks/use-mobile.js +16 -0
  445. package/dist/hooks/use-mobile.js.map +1 -0
  446. package/dist/hooks/use-navigation-state.d.ts +6 -0
  447. package/dist/hooks/use-navigation-state.d.ts.map +1 -0
  448. package/dist/hooks/use-navigation-state.js +129 -0
  449. package/dist/hooks/use-navigation-state.js.map +1 -0
  450. package/dist/hooks/use-toast.d.ts +45 -0
  451. package/dist/hooks/use-toast.d.ts.map +1 -0
  452. package/dist/hooks/use-toast.js +127 -0
  453. package/dist/hooks/use-toast.js.map +1 -0
  454. package/dist/index.d.ts +15 -0
  455. package/dist/index.d.ts.map +1 -0
  456. package/dist/index.js +15 -0
  457. package/dist/index.js.map +1 -0
  458. package/dist/lib/utils.d.ts +2 -0
  459. package/dist/lib/utils.d.ts.map +1 -0
  460. package/dist/lib/utils.js +2 -0
  461. package/dist/lib/utils.js.map +1 -0
  462. package/dist/routes/index.d.ts +32 -0
  463. package/dist/routes/index.d.ts.map +1 -0
  464. package/dist/routes/index.js +51 -0
  465. package/dist/routes/index.js.map +1 -0
  466. package/dist/routes/pages/_index.d.ts +15 -0
  467. package/dist/routes/pages/_index.d.ts.map +1 -0
  468. package/dist/routes/pages/_index.js +42 -0
  469. package/dist/routes/pages/_index.js.map +1 -0
  470. package/dist/routes/pages/agents.d.ts +5 -0
  471. package/dist/routes/pages/agents.d.ts.map +1 -0
  472. package/dist/routes/pages/agents.js +12 -0
  473. package/dist/routes/pages/agents.js.map +1 -0
  474. package/dist/routes/pages/approval.d.ts +5 -0
  475. package/dist/routes/pages/approval.d.ts.map +1 -0
  476. package/dist/routes/pages/approval.js +47 -0
  477. package/dist/routes/pages/approval.js.map +1 -0
  478. package/dist/routes/pages/approvals.d.ts +5 -0
  479. package/dist/routes/pages/approvals.d.ts.map +1 -0
  480. package/dist/routes/pages/approvals.js +48 -0
  481. package/dist/routes/pages/approvals.js.map +1 -0
  482. package/dist/routes/pages/apps.$appId.d.ts +5 -0
  483. package/dist/routes/pages/apps.$appId.d.ts.map +1 -0
  484. package/dist/routes/pages/apps.$appId.js +31 -0
  485. package/dist/routes/pages/apps.$appId.js.map +1 -0
  486. package/dist/routes/pages/apps.d.ts +5 -0
  487. package/dist/routes/pages/apps.d.ts.map +1 -0
  488. package/dist/routes/pages/apps.js +42 -0
  489. package/dist/routes/pages/apps.js.map +1 -0
  490. package/dist/routes/pages/audit.d.ts +5 -0
  491. package/dist/routes/pages/audit.d.ts.map +1 -0
  492. package/dist/routes/pages/audit.js +11 -0
  493. package/dist/routes/pages/audit.js.map +1 -0
  494. package/dist/routes/pages/destinations.d.ts +5 -0
  495. package/dist/routes/pages/destinations.d.ts.map +1 -0
  496. package/dist/routes/pages/destinations.js +80 -0
  497. package/dist/routes/pages/destinations.js.map +1 -0
  498. package/dist/routes/pages/identities.d.ts +5 -0
  499. package/dist/routes/pages/identities.d.ts.map +1 -0
  500. package/dist/routes/pages/identities.js +18 -0
  501. package/dist/routes/pages/identities.js.map +1 -0
  502. package/dist/routes/pages/integrations.d.ts +5 -0
  503. package/dist/routes/pages/integrations.d.ts.map +1 -0
  504. package/dist/routes/pages/integrations.js +46 -0
  505. package/dist/routes/pages/integrations.js.map +1 -0
  506. package/dist/routes/pages/messaging.d.ts +5 -0
  507. package/dist/routes/pages/messaging.d.ts.map +1 -0
  508. package/dist/routes/pages/messaging.js +10 -0
  509. package/dist/routes/pages/messaging.js.map +1 -0
  510. package/dist/routes/pages/new-app.d.ts +5 -0
  511. package/dist/routes/pages/new-app.d.ts.map +1 -0
  512. package/dist/routes/pages/new-app.js +10 -0
  513. package/dist/routes/pages/new-app.js.map +1 -0
  514. package/dist/routes/pages/overview.d.ts +5 -0
  515. package/dist/routes/pages/overview.d.ts.map +1 -0
  516. package/dist/routes/pages/overview.js +225 -0
  517. package/dist/routes/pages/overview.js.map +1 -0
  518. package/dist/routes/pages/team.d.ts +5 -0
  519. package/dist/routes/pages/team.d.ts.map +1 -0
  520. package/dist/routes/pages/team.js +10 -0
  521. package/dist/routes/pages/team.js.map +1 -0
  522. package/dist/routes/pages/tools.$id.d.ts +2 -0
  523. package/dist/routes/pages/tools.$id.d.ts.map +1 -0
  524. package/dist/routes/pages/tools.$id.js +6 -0
  525. package/dist/routes/pages/tools.$id.js.map +1 -0
  526. package/dist/routes/pages/tools._index.d.ts +2 -0
  527. package/dist/routes/pages/tools._index.d.ts.map +1 -0
  528. package/dist/routes/pages/tools._index.js +6 -0
  529. package/dist/routes/pages/tools._index.js.map +1 -0
  530. package/dist/routes/pages/vault.d.ts +5 -0
  531. package/dist/routes/pages/vault.d.ts.map +1 -0
  532. package/dist/routes/pages/vault.js +131 -0
  533. package/dist/routes/pages/vault.js.map +1 -0
  534. package/dist/routes/pages/workspace.d.ts +5 -0
  535. package/dist/routes/pages/workspace.d.ts.map +1 -0
  536. package/dist/routes/pages/workspace.js +149 -0
  537. package/dist/routes/pages/workspace.js.map +1 -0
  538. package/dist/server/index.d.ts +44 -0
  539. package/dist/server/index.d.ts.map +1 -0
  540. package/dist/server/index.js +68 -0
  541. package/dist/server/index.js.map +1 -0
  542. package/dist/server/lib/app-creation-store.d.ts +102 -0
  543. package/dist/server/lib/app-creation-store.d.ts.map +1 -0
  544. package/dist/server/lib/app-creation-store.js +780 -0
  545. package/dist/server/lib/app-creation-store.js.map +1 -0
  546. package/dist/server/lib/dispatch-integrations.d.ts +10 -0
  547. package/dist/server/lib/dispatch-integrations.d.ts.map +1 -0
  548. package/dist/server/lib/dispatch-integrations.js +105 -0
  549. package/dist/server/lib/dispatch-integrations.js.map +1 -0
  550. package/dist/server/lib/dispatch-store.d.ts +313 -0
  551. package/dist/server/lib/dispatch-store.d.ts.map +1 -0
  552. package/dist/server/lib/dispatch-store.js +669 -0
  553. package/dist/server/lib/dispatch-store.js.map +1 -0
  554. package/dist/server/lib/env-config.d.ts +3 -0
  555. package/dist/server/lib/env-config.d.ts.map +1 -0
  556. package/dist/server/lib/env-config.js +43 -0
  557. package/dist/server/lib/env-config.js.map +1 -0
  558. package/dist/server/lib/pre-auth-routing.d.ts +2 -0
  559. package/dist/server/lib/pre-auth-routing.d.ts.map +1 -0
  560. package/dist/server/lib/pre-auth-routing.js +128 -0
  561. package/dist/server/lib/pre-auth-routing.js.map +1 -0
  562. package/dist/server/lib/vault-store.d.ts +270 -0
  563. package/dist/server/lib/vault-store.d.ts.map +1 -0
  564. package/dist/server/lib/vault-store.js +554 -0
  565. package/dist/server/lib/vault-store.js.map +1 -0
  566. package/dist/server/lib/workspace-resources-store.d.ts +165 -0
  567. package/dist/server/lib/workspace-resources-store.d.ts.map +1 -0
  568. package/dist/server/lib/workspace-resources-store.js +310 -0
  569. package/dist/server/lib/workspace-resources-store.js.map +1 -0
  570. package/dist/server/plugins/agent-chat.d.ts +3 -0
  571. package/dist/server/plugins/agent-chat.d.ts.map +1 -0
  572. package/dist/server/plugins/agent-chat.js +36 -0
  573. package/dist/server/plugins/agent-chat.js.map +1 -0
  574. package/dist/server/plugins/auth.d.ts +9 -0
  575. package/dist/server/plugins/auth.d.ts.map +1 -0
  576. package/dist/server/plugins/auth.js +30 -0
  577. package/dist/server/plugins/auth.js.map +1 -0
  578. package/dist/server/plugins/core-routes.d.ts +3 -0
  579. package/dist/server/plugins/core-routes.d.ts.map +1 -0
  580. package/dist/server/plugins/core-routes.js +6 -0
  581. package/dist/server/plugins/core-routes.js.map +1 -0
  582. package/dist/server/plugins/db.d.ts +3 -0
  583. package/dist/server/plugins/db.d.ts.map +1 -0
  584. package/dist/server/plugins/db.js +6 -0
  585. package/dist/server/plugins/db.js.map +1 -0
  586. package/dist/server/plugins/integrations.d.ts +8 -0
  587. package/dist/server/plugins/integrations.d.ts.map +1 -0
  588. package/dist/server/plugins/integrations.js +51 -0
  589. package/dist/server/plugins/integrations.js.map +1 -0
  590. package/package.json +103 -0
  591. package/src/actions/approve-dispatch-change.ts +11 -0
  592. package/src/actions/approve-vault-request.ts +23 -0
  593. package/src/actions/create-link-token.ts +12 -0
  594. package/src/actions/create-vault-grant.ts +15 -0
  595. package/src/actions/create-vault-secret.ts +21 -0
  596. package/src/actions/create-workspace-resource-grant.ts +15 -0
  597. package/src/actions/create-workspace-resource.ts +29 -0
  598. package/src/actions/delete-destination.ts +11 -0
  599. package/src/actions/delete-vault-secret.ts +12 -0
  600. package/src/actions/delete-workspace-resource.ts +12 -0
  601. package/src/actions/deny-vault-request.ts +12 -0
  602. package/src/actions/get-app-creation-settings.ts +11 -0
  603. package/src/actions/get-dispatch-settings.ts +10 -0
  604. package/src/actions/get-workspace-info.ts +11 -0
  605. package/src/actions/grant-vault-secrets-to-app.ts +20 -0
  606. package/src/actions/index.ts +102 -0
  607. package/src/actions/list-connected-agents.ts +103 -0
  608. package/src/actions/list-destinations.ts +10 -0
  609. package/src/actions/list-dispatch-approvals.ts +10 -0
  610. package/src/actions/list-dispatch-audit.ts +12 -0
  611. package/src/actions/list-dispatch-overview.ts +18 -0
  612. package/src/actions/list-integrations-catalog.ts +11 -0
  613. package/src/actions/list-linked-identities.ts +10 -0
  614. package/src/actions/list-vault-audit.ts +16 -0
  615. package/src/actions/list-vault-grants.ts +14 -0
  616. package/src/actions/list-vault-requests.ts +16 -0
  617. package/src/actions/list-vault-secret-options.ts +20 -0
  618. package/src/actions/list-vault-secrets.ts +26 -0
  619. package/src/actions/list-workspace-apps.ts +25 -0
  620. package/src/actions/list-workspace-resource-grants.ts +14 -0
  621. package/src/actions/list-workspace-resources.ts +16 -0
  622. package/src/actions/navigate.ts +55 -0
  623. package/src/actions/reject-dispatch-change.ts +12 -0
  624. package/src/actions/request-vault-secret.ts +16 -0
  625. package/src/actions/revoke-vault-grant.ts +11 -0
  626. package/src/actions/revoke-workspace-resource-grant.ts +15 -0
  627. package/src/actions/send-platform-message.ts +96 -0
  628. package/src/actions/set-app-creation-settings.ts +19 -0
  629. package/src/actions/set-dispatch-approval-policy.ts +24 -0
  630. package/src/actions/start-workspace-app-creation.ts +33 -0
  631. package/src/actions/sync-vault-to-app.ts +14 -0
  632. package/src/actions/sync-workspace-resources-to-all.ts +10 -0
  633. package/src/actions/sync-workspace-resources-to-app.ts +12 -0
  634. package/src/actions/update-vault-secret.ts +12 -0
  635. package/src/actions/update-workspace-resource.ts +19 -0
  636. package/src/actions/upsert-destination.ts +29 -0
  637. package/src/actions/view-screen.ts +78 -0
  638. package/src/components/agents-panel.tsx +262 -0
  639. package/src/components/app-keys-popover.tsx +231 -0
  640. package/src/components/create-app-popover.tsx +423 -0
  641. package/src/components/dispatch-shell.tsx +53 -0
  642. package/src/components/index.ts +11 -0
  643. package/src/components/layout/Header.tsx +69 -0
  644. package/src/components/layout/HeaderActions.tsx +84 -0
  645. package/src/components/layout/Layout.tsx +243 -0
  646. package/src/components/messaging-setup-panel.tsx +666 -0
  647. package/src/components/ui/accordion.tsx +56 -0
  648. package/src/components/ui/alert-dialog.tsx +139 -0
  649. package/src/components/ui/alert.tsx +59 -0
  650. package/src/components/ui/aspect-ratio.tsx +5 -0
  651. package/src/components/ui/avatar.tsx +48 -0
  652. package/src/components/ui/badge.tsx +37 -0
  653. package/src/components/ui/breadcrumb.tsx +115 -0
  654. package/src/components/ui/button.tsx +57 -0
  655. package/src/components/ui/calendar.tsx +68 -0
  656. package/src/components/ui/card.tsx +86 -0
  657. package/src/components/ui/carousel.tsx +260 -0
  658. package/src/components/ui/chart.tsx +375 -0
  659. package/src/components/ui/checkbox.tsx +28 -0
  660. package/src/components/ui/collapsible.tsx +9 -0
  661. package/src/components/ui/command.tsx +154 -0
  662. package/src/components/ui/context-menu.tsx +198 -0
  663. package/src/components/ui/dialog.tsx +120 -0
  664. package/src/components/ui/drawer.tsx +116 -0
  665. package/src/components/ui/dropdown-menu.tsx +198 -0
  666. package/src/components/ui/form.tsx +177 -0
  667. package/src/components/ui/hover-card.tsx +27 -0
  668. package/src/components/ui/input-otp.tsx +69 -0
  669. package/src/components/ui/input.tsx +22 -0
  670. package/src/components/ui/label.tsx +24 -0
  671. package/src/components/ui/menubar.tsx +235 -0
  672. package/src/components/ui/navigation-menu.tsx +128 -0
  673. package/src/components/ui/pagination.tsx +121 -0
  674. package/src/components/ui/popover.tsx +29 -0
  675. package/src/components/ui/progress.tsx +26 -0
  676. package/src/components/ui/radio-group.tsx +42 -0
  677. package/src/components/ui/resizable.tsx +43 -0
  678. package/src/components/ui/scroll-area.tsx +46 -0
  679. package/src/components/ui/select.tsx +158 -0
  680. package/src/components/ui/separator.tsx +29 -0
  681. package/src/components/ui/sheet.tsx +139 -0
  682. package/src/components/ui/sidebar.tsx +778 -0
  683. package/src/components/ui/skeleton.tsx +15 -0
  684. package/src/components/ui/slider.tsx +26 -0
  685. package/src/components/ui/sonner.tsx +58 -0
  686. package/src/components/ui/spinner.tsx +17 -0
  687. package/src/components/ui/switch.tsx +27 -0
  688. package/src/components/ui/table.tsx +117 -0
  689. package/src/components/ui/tabs.tsx +53 -0
  690. package/src/components/ui/textarea.tsx +23 -0
  691. package/src/components/ui/toast.tsx +127 -0
  692. package/src/components/ui/toaster.tsx +33 -0
  693. package/src/components/ui/toggle-group.tsx +59 -0
  694. package/src/components/ui/toggle.tsx +43 -0
  695. package/src/components/ui/tooltip.tsx +28 -0
  696. package/src/components/ui/use-toast.ts +3 -0
  697. package/src/config.ts +35 -0
  698. package/src/db/index.ts +12 -0
  699. package/src/db/migrations.ts +165 -0
  700. package/src/db/schema.ts +160 -0
  701. package/src/hooks/use-mobile.tsx +21 -0
  702. package/src/hooks/use-navigation-state.ts +132 -0
  703. package/src/hooks/use-toast.ts +188 -0
  704. package/src/index.ts +19 -0
  705. package/src/lib/utils.ts +1 -0
  706. package/src/routes/index.ts +51 -0
  707. package/src/routes/pages/_index.tsx +51 -0
  708. package/src/routes/pages/agents.tsx +23 -0
  709. package/src/routes/pages/approval.tsx +243 -0
  710. package/src/routes/pages/approvals.tsx +157 -0
  711. package/src/routes/pages/apps.$appId.tsx +134 -0
  712. package/src/routes/pages/apps.tsx +163 -0
  713. package/src/routes/pages/audit.tsx +41 -0
  714. package/src/routes/pages/destinations.tsx +253 -0
  715. package/src/routes/pages/identities.tsx +91 -0
  716. package/src/routes/pages/integrations.tsx +278 -0
  717. package/src/routes/pages/messaging.tsx +17 -0
  718. package/src/routes/pages/new-app.tsx +17 -0
  719. package/src/routes/pages/overview.tsx +792 -0
  720. package/src/routes/pages/team.tsx +23 -0
  721. package/src/routes/pages/tools.$id.tsx +5 -0
  722. package/src/routes/pages/tools._index.tsx +5 -0
  723. package/src/routes/pages/vault.tsx +617 -0
  724. package/src/routes/pages/workspace.tsx +598 -0
  725. package/src/server/index.ts +78 -0
  726. package/src/server/lib/app-creation-store.ts +996 -0
  727. package/src/server/lib/dispatch-integrations.ts +125 -0
  728. package/src/server/lib/dispatch-store.ts +889 -0
  729. package/src/server/lib/env-config.ts +44 -0
  730. package/src/server/lib/pre-auth-routing.ts +150 -0
  731. package/src/server/lib/vault-store.ts +811 -0
  732. package/src/server/lib/workspace-resources-store.ts +445 -0
  733. package/src/server/plugins/agent-chat.ts +36 -0
  734. package/src/server/plugins/auth.ts +34 -0
  735. package/src/server/plugins/core-routes.ts +6 -0
  736. package/src/server/plugins/db.ts +6 -0
  737. package/src/server/plugins/integrations.ts +59 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Caller-supplied access context for workspace-resource operations.
3
+ * Same shape and semantics as VaultCtx — looking up a row by id alone is
4
+ * unsafe because UUIDs are not authorization. A row matches the ctx if
5
+ * either the caller owns it or it lives in the caller's active org.
6
+ */
7
+ export interface WorkspaceResourceCtx {
8
+ ownerEmail: string;
9
+ orgId: string | null;
10
+ }
11
+ export declare function requireWorkspaceResourceCtx(): WorkspaceResourceCtx;
12
+ export type WorkspaceResourceKind = "skill" | "instruction" | "agent";
13
+ export type WorkspaceResourceScope = "all" | "selected";
14
+ export interface WorkspaceResourceInput {
15
+ kind: WorkspaceResourceKind;
16
+ name: string;
17
+ description?: string | null;
18
+ path: string;
19
+ content: string;
20
+ scope: WorkspaceResourceScope;
21
+ }
22
+ export declare function listWorkspaceResources(filter?: {
23
+ kind?: string;
24
+ }): Promise<{
25
+ id: string;
26
+ ownerEmail: string;
27
+ orgId: string;
28
+ kind: string;
29
+ name: string;
30
+ description: string;
31
+ path: string;
32
+ content: string;
33
+ scope: string;
34
+ createdBy: string;
35
+ createdAt: number;
36
+ updatedAt: number;
37
+ }[]>;
38
+ export declare function getWorkspaceResource(resourceId: string, ctx?: WorkspaceResourceCtx): Promise<{
39
+ id: string;
40
+ ownerEmail: string;
41
+ orgId: string;
42
+ kind: string;
43
+ name: string;
44
+ description: string;
45
+ path: string;
46
+ content: string;
47
+ scope: string;
48
+ createdBy: string;
49
+ createdAt: number;
50
+ updatedAt: number;
51
+ }>;
52
+ export declare function createWorkspaceResource(input: WorkspaceResourceInput): Promise<{
53
+ id: string;
54
+ ownerEmail: string;
55
+ orgId: string;
56
+ kind: string;
57
+ name: string;
58
+ description: string;
59
+ path: string;
60
+ content: string;
61
+ scope: string;
62
+ createdBy: string;
63
+ createdAt: number;
64
+ updatedAt: number;
65
+ }>;
66
+ export declare function updateWorkspaceResource(resourceId: string, input: Partial<Pick<WorkspaceResourceInput, "name" | "description" | "content" | "scope">>): Promise<{
67
+ id: string;
68
+ ownerEmail: string;
69
+ orgId: string;
70
+ kind: string;
71
+ name: string;
72
+ description: string;
73
+ path: string;
74
+ content: string;
75
+ scope: string;
76
+ createdBy: string;
77
+ createdAt: number;
78
+ updatedAt: number;
79
+ }>;
80
+ export declare function deleteWorkspaceResource(resourceId: string): Promise<{
81
+ id: string;
82
+ ownerEmail: string;
83
+ orgId: string;
84
+ kind: string;
85
+ name: string;
86
+ description: string;
87
+ path: string;
88
+ content: string;
89
+ scope: string;
90
+ createdBy: string;
91
+ createdAt: number;
92
+ updatedAt: number;
93
+ }>;
94
+ export declare function listResourceGrants(filter?: {
95
+ resourceId?: string;
96
+ appId?: string;
97
+ }): Promise<{
98
+ id: string;
99
+ ownerEmail: string;
100
+ orgId: string;
101
+ resourceId: string;
102
+ appId: string;
103
+ status: string;
104
+ syncedAt: number;
105
+ createdAt: number;
106
+ updatedAt: number;
107
+ }[]>;
108
+ export declare function getResourceGrant(grantId: string, ctx?: WorkspaceResourceCtx): Promise<{
109
+ id: string;
110
+ ownerEmail: string;
111
+ orgId: string;
112
+ resourceId: string;
113
+ appId: string;
114
+ status: string;
115
+ syncedAt: number;
116
+ createdAt: number;
117
+ updatedAt: number;
118
+ }>;
119
+ export declare function createResourceGrant(resourceId: string, appId: string): Promise<{
120
+ id: string;
121
+ ownerEmail: string;
122
+ orgId: string;
123
+ resourceId: string;
124
+ appId: string;
125
+ status: string;
126
+ syncedAt: number;
127
+ createdAt: number;
128
+ updatedAt: number;
129
+ }>;
130
+ export declare function revokeResourceGrant(grantId: string, ctx?: WorkspaceResourceCtx): Promise<{
131
+ id: string;
132
+ ownerEmail: string;
133
+ orgId: string;
134
+ resourceId: string;
135
+ appId: string;
136
+ status: string;
137
+ syncedAt: number;
138
+ createdAt: number;
139
+ updatedAt: number;
140
+ }>;
141
+ /**
142
+ * Push workspace resources to an app via its /_agent-native/resources endpoint.
143
+ * Resources with scope="all" are always pushed. Resources with scope="selected"
144
+ * are only pushed if there's an active grant for that app.
145
+ */
146
+ export declare function syncResourcesToApp(appId: string): Promise<{
147
+ appId: string;
148
+ synced: number;
149
+ resources: string[];
150
+ }>;
151
+ /**
152
+ * Sync all workspace resources to all apps that have grants or scope="all" resources.
153
+ */
154
+ export declare function syncResourcesToAllApps(): Promise<{
155
+ appId: string;
156
+ synced: number;
157
+ }[]>;
158
+ export declare function listWorkspaceResourcesOverview(): Promise<{
159
+ skillCount: number;
160
+ instructionCount: number;
161
+ agentCount: number;
162
+ totalResources: number;
163
+ activeGrantCount: number;
164
+ }>;
165
+ //# sourceMappingURL=workspace-resources-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-resources-store.d.ts","sourceRoot":"","sources":["../../../src/server/lib/workspace-resources-store.ts"],"names":[],"mappings":"AAWA;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,wBAAgB,2BAA2B,IAAI,oBAAoB,CAGlE;AA+BD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC;AACtE,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,UAAU,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,sBAAsB,CAAC;CAC/B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;KAWtE;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,oBAAoD;;;;;;;;;;;;;GAc1D;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB;;;;;;;;;;;;;GA6B1E;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,CACZ,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAC3E;;;;;;;;;;;;;GAgCF;AAED,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM;;;;;;;;;;;;;GA+B/D;AAID,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;;;;;;;;;KAkBA;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,oBAAoD;;;;;;;;;;GAc1D;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;GA8B1E;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,oBAAoD;;;;;;;;;;GA0B1D;AAID;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM;;;;GA0FrD;AAED;;GAEG;AACH,wBAAsB,sBAAsB;WAEZ,MAAM;YAAU,MAAM;KAYrD;AAID,wBAAsB,8BAA8B;;;;;;GAkBnD"}
@@ -0,0 +1,310 @@
1
+ import crypto from "node:crypto";
2
+ import { and, desc, eq, isNull, or } from "drizzle-orm";
3
+ import { discoverAgents } from "@agent-native/core/server/agent-discovery";
4
+ import { getDb, schema } from "../../db/index.js";
5
+ import { currentOwnerEmail, currentOrgId, recordAudit, } from "./dispatch-store.js";
6
+ export function requireWorkspaceResourceCtx() {
7
+ const ownerEmail = currentOwnerEmail();
8
+ return { ownerEmail, orgId: currentOrgId() };
9
+ }
10
+ /** WHERE clause that limits a workspace-resource row to the caller's scope. */
11
+ function ctxScope(table, ctx) {
12
+ if (!ctx.orgId) {
13
+ return and(eq(table.ownerEmail, ctx.ownerEmail), isNull(table.orgId));
14
+ }
15
+ return or(eq(table.ownerEmail, ctx.ownerEmail), eq(table.orgId, ctx.orgId));
16
+ }
17
+ function id() {
18
+ return crypto.randomUUID();
19
+ }
20
+ function now() {
21
+ return Date.now();
22
+ }
23
+ function orgFilter(table) {
24
+ const orgId = currentOrgId();
25
+ return and(eq(table.ownerEmail, currentOwnerEmail()), orgId ? eq(table.orgId, orgId) : isNull(table.orgId));
26
+ }
27
+ export async function listWorkspaceResources(filter) {
28
+ const db = getDb();
29
+ const conditions = [orgFilter(schema.workspaceResources)];
30
+ if (filter?.kind) {
31
+ conditions.push(eq(schema.workspaceResources.kind, filter.kind));
32
+ }
33
+ return db
34
+ .select()
35
+ .from(schema.workspaceResources)
36
+ .where(and(...conditions))
37
+ .orderBy(desc(schema.workspaceResources.updatedAt));
38
+ }
39
+ export async function getWorkspaceResource(resourceId, ctx = requireWorkspaceResourceCtx()) {
40
+ const db = getDb();
41
+ const [row] = await db
42
+ .select()
43
+ .from(schema.workspaceResources)
44
+ .where(and(eq(schema.workspaceResources.id, resourceId), ctxScope(schema.workspaceResources, ctx)))
45
+ .limit(1);
46
+ return row ?? null;
47
+ }
48
+ export async function createWorkspaceResource(input) {
49
+ const db = getDb();
50
+ const timestamp = now();
51
+ const resourceId = id();
52
+ const actor = currentOwnerEmail();
53
+ await db.insert(schema.workspaceResources).values({
54
+ id: resourceId,
55
+ ownerEmail: actor,
56
+ orgId: currentOrgId(),
57
+ kind: input.kind,
58
+ name: input.name,
59
+ description: input.description || null,
60
+ path: input.path,
61
+ content: input.content,
62
+ scope: input.scope,
63
+ createdBy: actor,
64
+ createdAt: timestamp,
65
+ updatedAt: timestamp,
66
+ });
67
+ await recordAudit({
68
+ action: `workspace.${input.kind}.created`,
69
+ targetType: `workspace-${input.kind}`,
70
+ targetId: resourceId,
71
+ summary: `Created workspace ${input.kind} "${input.name}" (${input.path})`,
72
+ });
73
+ return getWorkspaceResource(resourceId);
74
+ }
75
+ export async function updateWorkspaceResource(resourceId, input) {
76
+ const db = getDb();
77
+ const ctx = requireWorkspaceResourceCtx();
78
+ const existing = await getWorkspaceResource(resourceId, ctx);
79
+ if (!existing)
80
+ throw new Error("Workspace resource not found");
81
+ const updates = { updatedAt: now() };
82
+ if (input.name !== undefined)
83
+ updates.name = input.name;
84
+ if (input.description !== undefined)
85
+ updates.description = input.description || null;
86
+ if (input.content !== undefined)
87
+ updates.content = input.content;
88
+ if (input.scope !== undefined)
89
+ updates.scope = input.scope;
90
+ await db
91
+ .update(schema.workspaceResources)
92
+ .set(updates)
93
+ .where(and(eq(schema.workspaceResources.id, resourceId), ctxScope(schema.workspaceResources, ctx)));
94
+ await recordAudit({
95
+ action: `workspace.${existing.kind}.updated`,
96
+ targetType: `workspace-${existing.kind}`,
97
+ targetId: resourceId,
98
+ summary: `Updated workspace ${existing.kind} "${input.name || existing.name}"`,
99
+ });
100
+ return getWorkspaceResource(resourceId, ctx);
101
+ }
102
+ export async function deleteWorkspaceResource(resourceId) {
103
+ const db = getDb();
104
+ const ctx = requireWorkspaceResourceCtx();
105
+ const existing = await getWorkspaceResource(resourceId, ctx);
106
+ if (!existing)
107
+ throw new Error("Workspace resource not found");
108
+ // Revoke all grants
109
+ const grants = await listResourceGrants({ resourceId });
110
+ for (const grant of grants) {
111
+ if (grant.status === "active") {
112
+ await revokeResourceGrant(grant.id);
113
+ }
114
+ }
115
+ await db
116
+ .delete(schema.workspaceResources)
117
+ .where(and(eq(schema.workspaceResources.id, resourceId), ctxScope(schema.workspaceResources, ctx)));
118
+ await recordAudit({
119
+ action: `workspace.${existing.kind}.deleted`,
120
+ targetType: `workspace-${existing.kind}`,
121
+ targetId: resourceId,
122
+ summary: `Deleted workspace ${existing.kind} "${existing.name}" (${existing.path})`,
123
+ });
124
+ return existing;
125
+ }
126
+ // ─── Grants ──────────────────────────────────────────────────────
127
+ export async function listResourceGrants(filter) {
128
+ const db = getDb();
129
+ const conditions = [orgFilter(schema.workspaceResourceGrants)];
130
+ if (filter?.resourceId) {
131
+ conditions.push(eq(schema.workspaceResourceGrants.resourceId, filter.resourceId));
132
+ }
133
+ if (filter?.appId) {
134
+ conditions.push(eq(schema.workspaceResourceGrants.appId, filter.appId));
135
+ }
136
+ return db
137
+ .select()
138
+ .from(schema.workspaceResourceGrants)
139
+ .where(and(...conditions))
140
+ .orderBy(desc(schema.workspaceResourceGrants.updatedAt));
141
+ }
142
+ export async function getResourceGrant(grantId, ctx = requireWorkspaceResourceCtx()) {
143
+ const db = getDb();
144
+ const [row] = await db
145
+ .select()
146
+ .from(schema.workspaceResourceGrants)
147
+ .where(and(eq(schema.workspaceResourceGrants.id, grantId), ctxScope(schema.workspaceResourceGrants, ctx)))
148
+ .limit(1);
149
+ return row ?? null;
150
+ }
151
+ export async function createResourceGrant(resourceId, appId) {
152
+ const db = getDb();
153
+ const ctx = requireWorkspaceResourceCtx();
154
+ const resource = await getWorkspaceResource(resourceId, ctx);
155
+ if (!resource)
156
+ throw new Error("Workspace resource not found");
157
+ const timestamp = now();
158
+ const grantId = id();
159
+ const actor = currentOwnerEmail();
160
+ await db.insert(schema.workspaceResourceGrants).values({
161
+ id: grantId,
162
+ ownerEmail: actor,
163
+ orgId: currentOrgId(),
164
+ resourceId,
165
+ appId,
166
+ status: "active",
167
+ syncedAt: null,
168
+ createdAt: timestamp,
169
+ updatedAt: timestamp,
170
+ });
171
+ await recordAudit({
172
+ action: `workspace.${resource.kind}.granted`,
173
+ targetType: `workspace-${resource.kind}-grant`,
174
+ targetId: grantId,
175
+ summary: `Granted workspace ${resource.kind} "${resource.name}" to ${appId}`,
176
+ });
177
+ return getResourceGrant(grantId);
178
+ }
179
+ export async function revokeResourceGrant(grantId, ctx = requireWorkspaceResourceCtx()) {
180
+ const db = getDb();
181
+ const grant = await getResourceGrant(grantId, ctx);
182
+ if (!grant)
183
+ throw new Error("Grant not found");
184
+ const resource = await getWorkspaceResource(grant.resourceId);
185
+ await db
186
+ .update(schema.workspaceResourceGrants)
187
+ .set({ status: "revoked", updatedAt: now() })
188
+ .where(and(eq(schema.workspaceResourceGrants.id, grantId), ctxScope(schema.workspaceResourceGrants, ctx)));
189
+ await recordAudit({
190
+ action: `workspace.${resource?.kind || "resource"}.grant-revoked`,
191
+ targetType: "workspace-resource-grant",
192
+ targetId: grantId,
193
+ summary: `Revoked workspace ${resource?.kind || "resource"} "${resource?.name || grant.resourceId}" from ${grant.appId}`,
194
+ });
195
+ return getResourceGrant(grantId, ctx);
196
+ }
197
+ // ─── Sync ──────────────────────────────────────────────────────
198
+ /**
199
+ * Push workspace resources to an app via its /_agent-native/resources endpoint.
200
+ * Resources with scope="all" are always pushed. Resources with scope="selected"
201
+ * are only pushed if there's an active grant for that app.
202
+ */
203
+ export async function syncResourcesToApp(appId) {
204
+ const agents = await discoverAgents("dispatch");
205
+ const agent = agents.find((a) => a.id === appId);
206
+ if (!agent)
207
+ throw new Error(`App "${appId}" not found in agent registry`);
208
+ const allResources = await listWorkspaceResources();
209
+ const grants = await listResourceGrants({ appId });
210
+ const activeGrantResourceIds = new Set(grants.filter((g) => g.status === "active").map((g) => g.resourceId));
211
+ // Determine which resources to push
212
+ const toPush = allResources.filter((r) => r.scope === "all" ||
213
+ (r.scope === "selected" && activeGrantResourceIds.has(r.id)));
214
+ if (toPush.length === 0) {
215
+ return { appId, synced: 0, resources: [] };
216
+ }
217
+ const syncedPaths = [];
218
+ const db = getDb();
219
+ const timestamp = now();
220
+ for (const resource of toPush) {
221
+ try {
222
+ // Push via the resources API — create as shared resource
223
+ const res = await fetch(`${agent.url}/_agent-native/resources`, {
224
+ method: "POST",
225
+ headers: { "Content-Type": "application/json" },
226
+ body: JSON.stringify({
227
+ path: resource.path,
228
+ content: resource.content,
229
+ shared: true,
230
+ mimeType: "text/markdown",
231
+ }),
232
+ });
233
+ if (res.ok || res.status === 409) {
234
+ // 409 = already exists, try updating
235
+ if (res.status === 409) {
236
+ // Fetch existing to get ID, then update
237
+ const listRes = await fetch(`${agent.url}/_agent-native/resources?scope=shared&path=${encodeURIComponent(resource.path)}`);
238
+ if (listRes.ok) {
239
+ const items = await listRes.json();
240
+ const existing = Array.isArray(items)
241
+ ? items.find((i) => i.path === resource.path)
242
+ : null;
243
+ if (existing) {
244
+ await fetch(`${agent.url}/_agent-native/resources/${existing.id}`, {
245
+ method: "PUT",
246
+ headers: { "Content-Type": "application/json" },
247
+ body: JSON.stringify({ content: resource.content }),
248
+ });
249
+ }
250
+ }
251
+ }
252
+ syncedPaths.push(resource.path);
253
+ // Update grant syncedAt if applicable
254
+ const grant = grants.find((g) => g.resourceId === resource.id && g.status === "active");
255
+ if (grant) {
256
+ await db
257
+ .update(schema.workspaceResourceGrants)
258
+ .set({ syncedAt: timestamp, updatedAt: timestamp })
259
+ .where(eq(schema.workspaceResourceGrants.id, grant.id));
260
+ }
261
+ }
262
+ }
263
+ catch {
264
+ // Skip unreachable — don't fail the whole sync
265
+ }
266
+ }
267
+ await recordAudit({
268
+ action: "workspace.resources.synced",
269
+ targetType: "workspace-resource-sync",
270
+ targetId: appId,
271
+ summary: `Synced ${syncedPaths.length} workspace resource(s) to ${appId}: ${syncedPaths.join(", ")}`,
272
+ });
273
+ return { appId, synced: syncedPaths.length, resources: syncedPaths };
274
+ }
275
+ /**
276
+ * Sync all workspace resources to all apps that have grants or scope="all" resources.
277
+ */
278
+ export async function syncResourcesToAllApps() {
279
+ const agents = await discoverAgents("dispatch");
280
+ const results = [];
281
+ for (const agent of agents) {
282
+ try {
283
+ const result = await syncResourcesToApp(agent.id);
284
+ results.push({ appId: result.appId, synced: result.synced });
285
+ }
286
+ catch {
287
+ results.push({ appId: agent.id, synced: 0 });
288
+ }
289
+ }
290
+ return results;
291
+ }
292
+ // ─── Overview ──────────────────────────────────────────────────────
293
+ export async function listWorkspaceResourcesOverview() {
294
+ const [resources, grants] = await Promise.all([
295
+ listWorkspaceResources(),
296
+ listResourceGrants(),
297
+ ]);
298
+ const skills = resources.filter((r) => r.kind === "skill");
299
+ const instructions = resources.filter((r) => r.kind === "instruction");
300
+ const agents = resources.filter((r) => r.kind === "agent");
301
+ const activeGrants = grants.filter((g) => g.status === "active");
302
+ return {
303
+ skillCount: skills.length,
304
+ instructionCount: instructions.length,
305
+ agentCount: agents.length,
306
+ totalResources: resources.length,
307
+ activeGrantCount: activeGrants.length,
308
+ };
309
+ }
310
+ //# sourceMappingURL=workspace-resources-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-resources-store.js","sourceRoot":"","sources":["../../../src/server/lib/workspace-resources-store.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from \"node:crypto\";\nimport { and, desc, eq, isNull, or } from \"drizzle-orm\";\nimport { discoverAgents } from \"@agent-native/core/server/agent-discovery\";\nimport { getDb, schema } from \"../../db/index.js\";\nimport {\n currentOwnerEmail,\n currentOrgId,\n recordAudit,\n} from \"./dispatch-store.js\";\nimport { recordVaultAudit } from \"./vault-store.js\";\n\n/**\n * Caller-supplied access context for workspace-resource operations.\n * Same shape and semantics as VaultCtx — looking up a row by id alone is\n * unsafe because UUIDs are not authorization. A row matches the ctx if\n * either the caller owns it or it lives in the caller's active org.\n */\nexport interface WorkspaceResourceCtx {\n ownerEmail: string;\n orgId: string | null;\n}\n\nexport function requireWorkspaceResourceCtx(): WorkspaceResourceCtx {\n const ownerEmail = currentOwnerEmail();\n return { ownerEmail, orgId: currentOrgId() };\n}\n\n/** WHERE clause that limits a workspace-resource row to the caller's scope. */\nfunction ctxScope<T extends { ownerEmail: any; orgId: any }>(\n table: T,\n ctx: WorkspaceResourceCtx,\n) {\n if (!ctx.orgId) {\n return and(eq(table.ownerEmail, ctx.ownerEmail), isNull(table.orgId));\n }\n return or(eq(table.ownerEmail, ctx.ownerEmail), eq(table.orgId, ctx.orgId));\n}\n\nfunction id() {\n return crypto.randomUUID();\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction orgFilter<T extends { ownerEmail: any; orgId: any }>(table: T) {\n const orgId = currentOrgId();\n return and(\n eq(table.ownerEmail, currentOwnerEmail()),\n orgId ? eq(table.orgId, orgId) : isNull(table.orgId),\n );\n}\n\n// ─── Workspace Resources CRUD ──────────────────────────────────\n\nexport type WorkspaceResourceKind = \"skill\" | \"instruction\" | \"agent\";\nexport type WorkspaceResourceScope = \"all\" | \"selected\";\n\nexport interface WorkspaceResourceInput {\n kind: WorkspaceResourceKind;\n name: string;\n description?: string | null;\n path: string;\n content: string;\n scope: WorkspaceResourceScope;\n}\n\nexport async function listWorkspaceResources(filter?: { kind?: string }) {\n const db = getDb();\n const conditions = [orgFilter(schema.workspaceResources)];\n if (filter?.kind) {\n conditions.push(eq(schema.workspaceResources.kind, filter.kind) as any);\n }\n return db\n .select()\n .from(schema.workspaceResources)\n .where(and(...conditions))\n .orderBy(desc(schema.workspaceResources.updatedAt));\n}\n\nexport async function getWorkspaceResource(\n resourceId: string,\n ctx: WorkspaceResourceCtx = requireWorkspaceResourceCtx(),\n) {\n const db = getDb();\n const [row] = await db\n .select()\n .from(schema.workspaceResources)\n .where(\n and(\n eq(schema.workspaceResources.id, resourceId),\n ctxScope(schema.workspaceResources, ctx),\n ),\n )\n .limit(1);\n return row ?? null;\n}\n\nexport async function createWorkspaceResource(input: WorkspaceResourceInput) {\n const db = getDb();\n const timestamp = now();\n const resourceId = id();\n const actor = currentOwnerEmail();\n\n await db.insert(schema.workspaceResources).values({\n id: resourceId,\n ownerEmail: actor,\n orgId: currentOrgId(),\n kind: input.kind,\n name: input.name,\n description: input.description || null,\n path: input.path,\n content: input.content,\n scope: input.scope,\n createdBy: actor,\n createdAt: timestamp,\n updatedAt: timestamp,\n });\n\n await recordAudit({\n action: `workspace.${input.kind}.created`,\n targetType: `workspace-${input.kind}`,\n targetId: resourceId,\n summary: `Created workspace ${input.kind} \"${input.name}\" (${input.path})`,\n });\n\n return getWorkspaceResource(resourceId);\n}\n\nexport async function updateWorkspaceResource(\n resourceId: string,\n input: Partial<\n Pick<WorkspaceResourceInput, \"name\" | \"description\" | \"content\" | \"scope\">\n >,\n) {\n const db = getDb();\n const ctx = requireWorkspaceResourceCtx();\n const existing = await getWorkspaceResource(resourceId, ctx);\n if (!existing) throw new Error(\"Workspace resource not found\");\n\n const updates: Record<string, unknown> = { updatedAt: now() };\n if (input.name !== undefined) updates.name = input.name;\n if (input.description !== undefined)\n updates.description = input.description || null;\n if (input.content !== undefined) updates.content = input.content;\n if (input.scope !== undefined) updates.scope = input.scope;\n\n await db\n .update(schema.workspaceResources)\n .set(updates)\n .where(\n and(\n eq(schema.workspaceResources.id, resourceId),\n ctxScope(schema.workspaceResources, ctx),\n ),\n );\n\n await recordAudit({\n action: `workspace.${existing.kind}.updated`,\n targetType: `workspace-${existing.kind}`,\n targetId: resourceId,\n summary: `Updated workspace ${existing.kind} \"${input.name || existing.name}\"`,\n });\n\n return getWorkspaceResource(resourceId, ctx);\n}\n\nexport async function deleteWorkspaceResource(resourceId: string) {\n const db = getDb();\n const ctx = requireWorkspaceResourceCtx();\n const existing = await getWorkspaceResource(resourceId, ctx);\n if (!existing) throw new Error(\"Workspace resource not found\");\n\n // Revoke all grants\n const grants = await listResourceGrants({ resourceId });\n for (const grant of grants) {\n if (grant.status === \"active\") {\n await revokeResourceGrant(grant.id);\n }\n }\n\n await db\n .delete(schema.workspaceResources)\n .where(\n and(\n eq(schema.workspaceResources.id, resourceId),\n ctxScope(schema.workspaceResources, ctx),\n ),\n );\n\n await recordAudit({\n action: `workspace.${existing.kind}.deleted`,\n targetType: `workspace-${existing.kind}`,\n targetId: resourceId,\n summary: `Deleted workspace ${existing.kind} \"${existing.name}\" (${existing.path})`,\n });\n\n return existing;\n}\n\n// ─── Grants ──────────────────────────────────────────────────────\n\nexport async function listResourceGrants(filter?: {\n resourceId?: string;\n appId?: string;\n}) {\n const db = getDb();\n const conditions = [orgFilter(schema.workspaceResourceGrants)];\n if (filter?.resourceId) {\n conditions.push(\n eq(schema.workspaceResourceGrants.resourceId, filter.resourceId) as any,\n );\n }\n if (filter?.appId) {\n conditions.push(\n eq(schema.workspaceResourceGrants.appId, filter.appId) as any,\n );\n }\n return db\n .select()\n .from(schema.workspaceResourceGrants)\n .where(and(...conditions))\n .orderBy(desc(schema.workspaceResourceGrants.updatedAt));\n}\n\nexport async function getResourceGrant(\n grantId: string,\n ctx: WorkspaceResourceCtx = requireWorkspaceResourceCtx(),\n) {\n const db = getDb();\n const [row] = await db\n .select()\n .from(schema.workspaceResourceGrants)\n .where(\n and(\n eq(schema.workspaceResourceGrants.id, grantId),\n ctxScope(schema.workspaceResourceGrants, ctx),\n ),\n )\n .limit(1);\n return row ?? null;\n}\n\nexport async function createResourceGrant(resourceId: string, appId: string) {\n const db = getDb();\n const ctx = requireWorkspaceResourceCtx();\n const resource = await getWorkspaceResource(resourceId, ctx);\n if (!resource) throw new Error(\"Workspace resource not found\");\n\n const timestamp = now();\n const grantId = id();\n const actor = currentOwnerEmail();\n\n await db.insert(schema.workspaceResourceGrants).values({\n id: grantId,\n ownerEmail: actor,\n orgId: currentOrgId(),\n resourceId,\n appId,\n status: \"active\",\n syncedAt: null,\n createdAt: timestamp,\n updatedAt: timestamp,\n });\n\n await recordAudit({\n action: `workspace.${resource.kind}.granted`,\n targetType: `workspace-${resource.kind}-grant`,\n targetId: grantId,\n summary: `Granted workspace ${resource.kind} \"${resource.name}\" to ${appId}`,\n });\n\n return getResourceGrant(grantId);\n}\n\nexport async function revokeResourceGrant(\n grantId: string,\n ctx: WorkspaceResourceCtx = requireWorkspaceResourceCtx(),\n) {\n const db = getDb();\n const grant = await getResourceGrant(grantId, ctx);\n if (!grant) throw new Error(\"Grant not found\");\n\n const resource = await getWorkspaceResource(grant.resourceId);\n\n await db\n .update(schema.workspaceResourceGrants)\n .set({ status: \"revoked\", updatedAt: now() })\n .where(\n and(\n eq(schema.workspaceResourceGrants.id, grantId),\n ctxScope(schema.workspaceResourceGrants, ctx),\n ),\n );\n\n await recordAudit({\n action: `workspace.${resource?.kind || \"resource\"}.grant-revoked`,\n targetType: \"workspace-resource-grant\",\n targetId: grantId,\n summary: `Revoked workspace ${resource?.kind || \"resource\"} \"${resource?.name || grant.resourceId}\" from ${grant.appId}`,\n });\n\n return getResourceGrant(grantId, ctx);\n}\n\n// ─── Sync ──────────────────────────────────────────────────────\n\n/**\n * Push workspace resources to an app via its /_agent-native/resources endpoint.\n * Resources with scope=\"all\" are always pushed. Resources with scope=\"selected\"\n * are only pushed if there's an active grant for that app.\n */\nexport async function syncResourcesToApp(appId: string) {\n const agents = await discoverAgents(\"dispatch\");\n const agent = agents.find((a) => a.id === appId);\n if (!agent) throw new Error(`App \"${appId}\" not found in agent registry`);\n\n const allResources = await listWorkspaceResources();\n const grants = await listResourceGrants({ appId });\n const activeGrantResourceIds = new Set(\n grants.filter((g) => g.status === \"active\").map((g) => g.resourceId),\n );\n\n // Determine which resources to push\n const toPush = allResources.filter(\n (r) =>\n r.scope === \"all\" ||\n (r.scope === \"selected\" && activeGrantResourceIds.has(r.id)),\n );\n\n if (toPush.length === 0) {\n return { appId, synced: 0, resources: [] };\n }\n\n const syncedPaths: string[] = [];\n const db = getDb();\n const timestamp = now();\n\n for (const resource of toPush) {\n try {\n // Push via the resources API — create as shared resource\n const res = await fetch(`${agent.url}/_agent-native/resources`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n path: resource.path,\n content: resource.content,\n shared: true,\n mimeType: \"text/markdown\",\n }),\n });\n\n if (res.ok || res.status === 409) {\n // 409 = already exists, try updating\n if (res.status === 409) {\n // Fetch existing to get ID, then update\n const listRes = await fetch(\n `${agent.url}/_agent-native/resources?scope=shared&path=${encodeURIComponent(resource.path)}`,\n );\n if (listRes.ok) {\n const items = await listRes.json();\n const existing = Array.isArray(items)\n ? items.find((i: any) => i.path === resource.path)\n : null;\n if (existing) {\n await fetch(\n `${agent.url}/_agent-native/resources/${existing.id}`,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ content: resource.content }),\n },\n );\n }\n }\n }\n syncedPaths.push(resource.path);\n\n // Update grant syncedAt if applicable\n const grant = grants.find(\n (g) => g.resourceId === resource.id && g.status === \"active\",\n );\n if (grant) {\n await db\n .update(schema.workspaceResourceGrants)\n .set({ syncedAt: timestamp, updatedAt: timestamp })\n .where(eq(schema.workspaceResourceGrants.id, grant.id));\n }\n }\n } catch {\n // Skip unreachable — don't fail the whole sync\n }\n }\n\n await recordAudit({\n action: \"workspace.resources.synced\",\n targetType: \"workspace-resource-sync\",\n targetId: appId,\n summary: `Synced ${syncedPaths.length} workspace resource(s) to ${appId}: ${syncedPaths.join(\", \")}`,\n });\n\n return { appId, synced: syncedPaths.length, resources: syncedPaths };\n}\n\n/**\n * Sync all workspace resources to all apps that have grants or scope=\"all\" resources.\n */\nexport async function syncResourcesToAllApps() {\n const agents = await discoverAgents(\"dispatch\");\n const results: Array<{ appId: string; synced: number }> = [];\n\n for (const agent of agents) {\n try {\n const result = await syncResourcesToApp(agent.id);\n results.push({ appId: result.appId, synced: result.synced });\n } catch {\n results.push({ appId: agent.id, synced: 0 });\n }\n }\n\n return results;\n}\n\n// ─── Overview ──────────────────────────────────────────────────────\n\nexport async function listWorkspaceResourcesOverview() {\n const [resources, grants] = await Promise.all([\n listWorkspaceResources(),\n listResourceGrants(),\n ]);\n\n const skills = resources.filter((r) => r.kind === \"skill\");\n const instructions = resources.filter((r) => r.kind === \"instruction\");\n const agents = resources.filter((r) => r.kind === \"agent\");\n const activeGrants = grants.filter((g) => g.status === \"active\");\n\n return {\n skillCount: skills.length,\n instructionCount: instructions.length,\n agentCount: agents.length,\n totalResources: resources.length,\n activeGrantCount: activeGrants.length,\n };\n}\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: (nitroApp: any) => void | Promise<void>;
2
+ export default _default;
3
+ //# sourceMappingURL=agent-chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../../src/server/plugins/agent-chat.ts"],"names":[],"mappings":";AAIA,wBA+BG"}
@@ -0,0 +1,36 @@
1
+ import { createAgentChatPlugin } from "@agent-native/core/server";
2
+ import { getOrgContext } from "@agent-native/core/org";
3
+ import { dispatchActions } from "../../actions/index.js";
4
+ export default createAgentChatPlugin({
5
+ appId: "dispatch",
6
+ // Without this, AGENT_ORG_ID is never set on agent action calls and every
7
+ // row written through the frontend (vault secrets, destinations, workspace
8
+ // resources) lands with org_id=NULL — breaking data isolation across orgs.
9
+ resolveOrgId: async (event) => {
10
+ const ctx = await getOrgContext(event);
11
+ return ctx.orgId;
12
+ },
13
+ // Read actions directly from the package's own action map rather than from
14
+ // a build-time-generated `.generated/actions-registry.ts` (the latter is a
15
+ // template-only construct that the Vite plugin emits next to actions/).
16
+ actions: dispatchActions,
17
+ systemPrompt: `You are the central dispatch for this workspace.
18
+
19
+ Default posture:
20
+ - Treat Slack and Telegram as shared entrypoints into the workspace.
21
+ - Heavily delegate domain work to specialized agents through A2A when another app owns the job.
22
+ - Keep durable memory and operating instructions in resources rather than ephemeral chat.
23
+ - Prefer replying in the current external thread unless the user explicitly asks you to send to a saved destination.
24
+
25
+ Use the standard workspace primitives:
26
+ - Read and update resources like AGENTS.md, LEARNINGS.md, jobs/*.md, agents/*.md, and remote-agents/*.json when appropriate.
27
+ - Use recurring jobs for scheduled behavior.
28
+ - Use custom agent profiles in agents/*.md for local spawned work and remote-agents/*.json for remote A2A apps.
29
+ - When answering whether workspace apps expose agent cards or A2A endpoints, call list-workspace-apps with includeAgentCards=true. If you have not requested that probe, absence of agent-card fields means unchecked, not unavailable.
30
+
31
+ When a user asks for something like a digest, reminder, routing rule, or saved behavior:
32
+ - First decide whether it should be a resource, a recurring job, a destination, or a delegated task.
33
+ - Keep responses concise and operational.
34
+ - Avoid inventing integrations or destinations that are not configured yet.`,
35
+ });
36
+ //# sourceMappingURL=agent-chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../../src/server/plugins/agent-chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAe,qBAAqB,CAAC;IACnC,KAAK,EAAE,UAAU;IACjB,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,OAAO,EAAE,eAAe;IACxB,YAAY,EAAE;;;;;;;;;;;;;;;;;4EAiB4D;CAC3E,CAAC,CAAC","sourcesContent":["import { createAgentChatPlugin } from \"@agent-native/core/server\";\nimport { getOrgContext } from \"@agent-native/core/org\";\nimport { dispatchActions } from \"../../actions/index.js\";\n\nexport default createAgentChatPlugin({\n appId: \"dispatch\",\n // Without this, AGENT_ORG_ID is never set on agent action calls and every\n // row written through the frontend (vault secrets, destinations, workspace\n // resources) lands with org_id=NULL — breaking data isolation across orgs.\n resolveOrgId: async (event) => {\n const ctx = await getOrgContext(event);\n return ctx.orgId;\n },\n // Read actions directly from the package's own action map rather than from\n // a build-time-generated `.generated/actions-registry.ts` (the latter is a\n // template-only construct that the Vite plugin emits next to actions/).\n actions: dispatchActions,\n systemPrompt: `You are the central dispatch for this workspace.\n\nDefault posture:\n- Treat Slack and Telegram as shared entrypoints into the workspace.\n- Heavily delegate domain work to specialized agents through A2A when another app owns the job.\n- Keep durable memory and operating instructions in resources rather than ephemeral chat.\n- Prefer replying in the current external thread unless the user explicitly asks you to send to a saved destination.\n\nUse the standard workspace primitives:\n- Read and update resources like AGENTS.md, LEARNINGS.md, jobs/*.md, agents/*.md, and remote-agents/*.json when appropriate.\n- Use recurring jobs for scheduled behavior.\n- Use custom agent profiles in agents/*.md for local spawned work and remote-agents/*.json for remote A2A apps.\n- When answering whether workspace apps expose agent cards or A2A endpoints, call list-workspace-apps with includeAgentCards=true. If you have not requested that probe, absence of agent-card fields means unchecked, not unavailable.\n\nWhen a user asks for something like a digest, reminder, routing rule, or saved behavior:\n- First decide whether it should be a resource, a recurring job, a destination, or a delegated task.\n- Keep responses concise and operational.\n- Avoid inventing integrations or destinations that are not configured yet.`,\n});\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Defer config + plugin construction until the Nitro plugin actually fires.
3
+ * This way `setupDispatch(config)` can run after plugin module-load order
4
+ * (Nitro doesn't guarantee load order across plugin files) and still feed
5
+ * `googleOnly` / `marketing` into `createAuthPlugin`.
6
+ */
7
+ declare const dispatchAuthPlugin: (nitroApp: any) => Promise<void>;
8
+ export default dispatchAuthPlugin;
9
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/plugins/auth.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,QAAA,MAAM,kBAAkB,GAAU,UAAU,GAAG,kBAW9C,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { createAuthPlugin } from "@agent-native/core/server";
2
+ import { getDispatchConfig } from "../index.js";
3
+ const DEFAULT_MARKETING = {
4
+ appName: "Agent-Native Dispatch",
5
+ tagline: "Your AI agent manages secrets, orchestrates other agents, and routes messages across your workspace.",
6
+ features: [
7
+ "Centralized vault for secrets with granular per-app grants",
8
+ "Cross-agent orchestration and delegation to specialist apps",
9
+ "Slack and Telegram routing with approval workflows",
10
+ ],
11
+ };
12
+ /**
13
+ * Defer config + plugin construction until the Nitro plugin actually fires.
14
+ * This way `setupDispatch(config)` can run after plugin module-load order
15
+ * (Nitro doesn't guarantee load order across plugin files) and still feed
16
+ * `googleOnly` / `marketing` into `createAuthPlugin`.
17
+ */
18
+ const dispatchAuthPlugin = async (nitroApp) => {
19
+ const { auth: authConfig = {} } = getDispatchConfig();
20
+ const googleOnly = authConfig.googleOnly ?? false;
21
+ const marketing = authConfig.marketing ??
22
+ DEFAULT_MARKETING;
23
+ const plugin = createAuthPlugin({
24
+ googleOnly,
25
+ marketing: marketing,
26
+ });
27
+ return plugin(nitroApp);
28
+ };
29
+ export default dispatchAuthPlugin;
30
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/server/plugins/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE,uBAAuB;IAChC,OAAO,EACL,sGAAsG;IACxG,QAAQ,EAAE;QACR,4DAA4D;QAC5D,6DAA6D;QAC7D,oDAAoD;KACrD;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE;IACjD,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACtD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;IAClD,MAAM,SAAS,GACZ,UAAU,CAAC,SAAiD;QAC7D,iBAAiB,CAAC;IACpB,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC9B,UAAU;QACV,SAAS,EAAE,SAAgB;KAC5B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { createAuthPlugin } from \"@agent-native/core/server\";\nimport { getDispatchConfig } from \"../index.js\";\n\nconst DEFAULT_MARKETING = {\n appName: \"Agent-Native Dispatch\",\n tagline:\n \"Your AI agent manages secrets, orchestrates other agents, and routes messages across your workspace.\",\n features: [\n \"Centralized vault for secrets with granular per-app grants\",\n \"Cross-agent orchestration and delegation to specialist apps\",\n \"Slack and Telegram routing with approval workflows\",\n ],\n} as const;\n\n/**\n * Defer config + plugin construction until the Nitro plugin actually fires.\n * This way `setupDispatch(config)` can run after plugin module-load order\n * (Nitro doesn't guarantee load order across plugin files) and still feed\n * `googleOnly` / `marketing` into `createAuthPlugin`.\n */\nconst dispatchAuthPlugin = async (nitroApp: any) => {\n const { auth: authConfig = {} } = getDispatchConfig();\n const googleOnly = authConfig.googleOnly ?? false;\n const marketing =\n (authConfig.marketing as Record<string, unknown> | undefined) ??\n DEFAULT_MARKETING;\n const plugin = createAuthPlugin({\n googleOnly,\n marketing: marketing as any,\n });\n return plugin(nitroApp);\n};\n\nexport default dispatchAuthPlugin;\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: (nitroApp: any) => void | Promise<void>;
2
+ export default _default;
3
+ //# sourceMappingURL=core-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-routes.d.ts","sourceRoot":"","sources":["../../../src/server/plugins/core-routes.ts"],"names":[],"mappings":";AAGA,wBAEG"}