@agent-native/dispatch 0.6.1 → 0.8.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 (341) hide show
  1. package/README.md +38 -1
  2. package/dist/actions/apply-dream-proposal.d.ts +3 -0
  3. package/dist/actions/apply-dream-proposal.d.ts.map +1 -0
  4. package/dist/actions/apply-dream-proposal.js +11 -0
  5. package/dist/actions/apply-dream-proposal.js.map +1 -0
  6. package/dist/actions/create-dream-report.d.ts +3 -0
  7. package/dist/actions/create-dream-report.d.ts.map +1 -0
  8. package/dist/actions/create-dream-report.js +67 -0
  9. package/dist/actions/create-dream-report.js.map +1 -0
  10. package/dist/actions/create-pylon-ticket.d.ts +3 -0
  11. package/dist/actions/create-pylon-ticket.d.ts.map +1 -0
  12. package/dist/actions/create-pylon-ticket.js +94 -0
  13. package/dist/actions/create-pylon-ticket.js.map +1 -0
  14. package/dist/actions/create-vault-grant.js +1 -1
  15. package/dist/actions/create-vault-grant.js.map +1 -1
  16. package/dist/actions/create-vault-secret.d.ts.map +1 -1
  17. package/dist/actions/create-vault-secret.js +4 -3
  18. package/dist/actions/create-vault-secret.js.map +1 -1
  19. package/dist/actions/create-workspace-resource.js +3 -3
  20. package/dist/actions/create-workspace-resource.js.map +1 -1
  21. package/dist/actions/delete-workspace-resource.js +1 -1
  22. package/dist/actions/delete-workspace-resource.js.map +1 -1
  23. package/dist/actions/ensure-dream-job.d.ts +3 -0
  24. package/dist/actions/ensure-dream-job.d.ts.map +1 -0
  25. package/dist/actions/ensure-dream-job.js +73 -0
  26. package/dist/actions/ensure-dream-job.js.map +1 -0
  27. package/dist/actions/get-dream-settings.d.ts +3 -0
  28. package/dist/actions/get-dream-settings.d.ts.map +1 -0
  29. package/dist/actions/get-dream-settings.js +11 -0
  30. package/dist/actions/get-dream-settings.js.map +1 -0
  31. package/dist/actions/get-dream.d.ts +3 -0
  32. package/dist/actions/get-dream.d.ts.map +1 -0
  33. package/dist/actions/get-dream.js +13 -0
  34. package/dist/actions/get-dream.js.map +1 -0
  35. package/dist/actions/get-vault-access-settings.d.ts +3 -0
  36. package/dist/actions/get-vault-access-settings.d.ts.map +1 -0
  37. package/dist/actions/get-vault-access-settings.js +10 -0
  38. package/dist/actions/get-vault-access-settings.js.map +1 -0
  39. package/dist/actions/get-workspace-resource-effective-context.d.ts +3 -0
  40. package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -0
  41. package/dist/actions/get-workspace-resource-effective-context.js +27 -0
  42. package/dist/actions/get-workspace-resource-effective-context.js.map +1 -0
  43. package/dist/actions/grant-vault-secrets-to-app.js +1 -1
  44. package/dist/actions/grant-vault-secrets-to-app.js.map +1 -1
  45. package/dist/actions/index.d.ts.map +1 -1
  46. package/dist/actions/index.js +38 -4
  47. package/dist/actions/index.js.map +1 -1
  48. package/dist/actions/list-dream-candidates.d.ts +3 -0
  49. package/dist/actions/list-dream-candidates.d.ts.map +1 -0
  50. package/dist/actions/list-dream-candidates.js +68 -0
  51. package/dist/actions/list-dream-candidates.js.map +1 -0
  52. package/dist/actions/list-dreams.d.ts +3 -0
  53. package/dist/actions/list-dreams.d.ts.map +1 -0
  54. package/dist/actions/list-dreams.js +17 -0
  55. package/dist/actions/list-dreams.js.map +1 -0
  56. package/dist/actions/list-integrations-catalog.js +1 -1
  57. package/dist/actions/list-integrations-catalog.js.map +1 -1
  58. package/dist/actions/list-vault-grants.js +1 -1
  59. package/dist/actions/list-vault-grants.js.map +1 -1
  60. package/dist/actions/list-workspace-apps.d.ts.map +1 -1
  61. package/dist/actions/list-workspace-apps.js +5 -1
  62. package/dist/actions/list-workspace-apps.js.map +1 -1
  63. package/dist/actions/list-workspace-resources-for-app.d.ts +3 -0
  64. package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -0
  65. package/dist/actions/list-workspace-resources-for-app.js +12 -0
  66. package/dist/actions/list-workspace-resources-for-app.js.map +1 -0
  67. package/dist/actions/list-workspace-resources.js +1 -1
  68. package/dist/actions/list-workspace-resources.js.map +1 -1
  69. package/dist/actions/navigate.d.ts +1 -0
  70. package/dist/actions/navigate.d.ts.map +1 -1
  71. package/dist/actions/navigate.js +2 -1
  72. package/dist/actions/navigate.js.map +1 -1
  73. package/dist/actions/preview-dream-proposal.d.ts +3 -0
  74. package/dist/actions/preview-dream-proposal.d.ts.map +1 -0
  75. package/dist/actions/preview-dream-proposal.js +13 -0
  76. package/dist/actions/preview-dream-proposal.js.map +1 -0
  77. package/dist/actions/preview-workspace-resource-change.d.ts +3 -0
  78. package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -0
  79. package/dist/actions/preview-workspace-resource-change.js +24 -0
  80. package/dist/actions/preview-workspace-resource-change.js.map +1 -0
  81. package/dist/actions/reject-dream-proposal.d.ts +3 -0
  82. package/dist/actions/reject-dream-proposal.d.ts.map +1 -0
  83. package/dist/actions/reject-dream-proposal.js +12 -0
  84. package/dist/actions/reject-dream-proposal.js.map +1 -0
  85. package/dist/actions/restore-starter-workspace-resources.d.ts +3 -0
  86. package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -0
  87. package/dist/actions/restore-starter-workspace-resources.js +14 -0
  88. package/dist/actions/restore-starter-workspace-resources.js.map +1 -0
  89. package/dist/actions/send-code-agent-remote-command.d.ts +3 -0
  90. package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -0
  91. package/dist/actions/send-code-agent-remote-command.js +53 -0
  92. package/dist/actions/send-code-agent-remote-command.js.map +1 -0
  93. package/dist/actions/set-dream-settings.d.ts +3 -0
  94. package/dist/actions/set-dream-settings.d.ts.map +1 -0
  95. package/dist/actions/set-dream-settings.js +41 -0
  96. package/dist/actions/set-dream-settings.js.map +1 -0
  97. package/dist/actions/set-vault-access-settings.d.ts +3 -0
  98. package/dist/actions/set-vault-access-settings.d.ts.map +1 -0
  99. package/dist/actions/set-vault-access-settings.js +13 -0
  100. package/dist/actions/set-vault-access-settings.js.map +1 -0
  101. package/dist/actions/start-workspace-app-creation.d.ts.map +1 -1
  102. package/dist/actions/start-workspace-app-creation.js +6 -0
  103. package/dist/actions/start-workspace-app-creation.js.map +1 -1
  104. package/dist/actions/sync-vault-to-app.js +1 -1
  105. package/dist/actions/sync-vault-to-app.js.map +1 -1
  106. package/dist/actions/update-workspace-app-metadata.d.ts +3 -0
  107. package/dist/actions/update-workspace-app-metadata.d.ts.map +1 -0
  108. package/dist/actions/update-workspace-app-metadata.js +30 -0
  109. package/dist/actions/update-workspace-app-metadata.js.map +1 -0
  110. package/dist/actions/update-workspace-resource.js +1 -1
  111. package/dist/actions/update-workspace-resource.js.map +1 -1
  112. package/dist/actions/view-screen.d.ts.map +1 -1
  113. package/dist/actions/view-screen.js +77 -4
  114. package/dist/actions/view-screen.js.map +1 -1
  115. package/dist/components/app-keys-popover.js +16 -5
  116. package/dist/components/app-keys-popover.js.map +1 -1
  117. package/dist/components/approval-value-block.d.ts +7 -0
  118. package/dist/components/approval-value-block.d.ts.map +1 -0
  119. package/dist/components/approval-value-block.js +22 -0
  120. package/dist/components/approval-value-block.js.map +1 -0
  121. package/dist/components/create-app-popover.d.ts.map +1 -1
  122. package/dist/components/create-app-popover.js +41 -16
  123. package/dist/components/create-app-popover.js.map +1 -1
  124. package/dist/components/dispatch-shell.d.ts +4 -4
  125. package/dist/components/dispatch-shell.d.ts.map +1 -1
  126. package/dist/components/dispatch-shell.js +6 -6
  127. package/dist/components/dispatch-shell.js.map +1 -1
  128. package/dist/components/layout/Layout.d.ts.map +1 -1
  129. package/dist/components/layout/Layout.js +18 -4
  130. package/dist/components/layout/Layout.js.map +1 -1
  131. package/dist/components/messaging-setup-panel.d.ts.map +1 -1
  132. package/dist/components/messaging-setup-panel.js +2 -2
  133. package/dist/components/messaging-setup-panel.js.map +1 -1
  134. package/dist/components/ui/chart.d.ts +1 -1
  135. package/dist/components/workspace-app-card.d.ts.map +1 -1
  136. package/dist/components/workspace-app-card.js +63 -3
  137. package/dist/components/workspace-app-card.js.map +1 -1
  138. package/dist/components/workspace-resource-effective-stack.d.ts +11 -0
  139. package/dist/components/workspace-resource-effective-stack.d.ts.map +1 -0
  140. package/dist/components/workspace-resource-effective-stack.js +59 -0
  141. package/dist/components/workspace-resource-effective-stack.js.map +1 -0
  142. package/dist/components/workspace-resource-impact-preview.d.ts +9 -0
  143. package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -0
  144. package/dist/components/workspace-resource-impact-preview.js +39 -0
  145. package/dist/components/workspace-resource-impact-preview.js.map +1 -0
  146. package/dist/db/migrations.d.ts.map +1 -1
  147. package/dist/db/migrations.js +59 -0
  148. package/dist/db/migrations.js.map +1 -1
  149. package/dist/db/schema.d.ts +714 -0
  150. package/dist/db/schema.d.ts.map +1 -1
  151. package/dist/db/schema.js +44 -2
  152. package/dist/db/schema.js.map +1 -1
  153. package/dist/hooks/use-navigation-state.d.ts +3 -0
  154. package/dist/hooks/use-navigation-state.d.ts.map +1 -1
  155. package/dist/hooks/use-navigation-state.js +35 -8
  156. package/dist/hooks/use-navigation-state.js.map +1 -1
  157. package/dist/lib/catch-all-target.d.ts +2 -0
  158. package/dist/lib/catch-all-target.d.ts.map +1 -0
  159. package/dist/lib/catch-all-target.js +95 -0
  160. package/dist/lib/catch-all-target.js.map +1 -0
  161. package/dist/lib/utils.d.ts +2 -1
  162. package/dist/lib/utils.d.ts.map +1 -1
  163. package/dist/lib/utils.js +5 -1
  164. package/dist/lib/utils.js.map +1 -1
  165. package/dist/lib/workspace-apps.d.ts +9 -0
  166. package/dist/lib/workspace-apps.d.ts.map +1 -1
  167. package/dist/lib/workspace-apps.js.map +1 -1
  168. package/dist/routes/index.d.ts.map +1 -1
  169. package/dist/routes/index.js +1 -0
  170. package/dist/routes/index.js.map +1 -1
  171. package/dist/routes/pages/$appId.d.ts +2 -2
  172. package/dist/routes/pages/$appId.d.ts.map +1 -1
  173. package/dist/routes/pages/$appId.js +17 -8
  174. package/dist/routes/pages/$appId.js.map +1 -1
  175. package/dist/routes/pages/approval.d.ts.map +1 -1
  176. package/dist/routes/pages/approval.js +4 -1
  177. package/dist/routes/pages/approval.js.map +1 -1
  178. package/dist/routes/pages/approvals.js +1 -1
  179. package/dist/routes/pages/approvals.js.map +1 -1
  180. package/dist/routes/pages/dream-settings.d.ts +34 -0
  181. package/dist/routes/pages/dream-settings.d.ts.map +1 -0
  182. package/dist/routes/pages/dream-settings.js +68 -0
  183. package/dist/routes/pages/dream-settings.js.map +1 -0
  184. package/dist/routes/pages/dreams.d.ts +5 -0
  185. package/dist/routes/pages/dreams.d.ts.map +1 -0
  186. package/dist/routes/pages/dreams.js +435 -0
  187. package/dist/routes/pages/dreams.js.map +1 -0
  188. package/dist/routes/pages/integrations.d.ts.map +1 -1
  189. package/dist/routes/pages/integrations.js +20 -15
  190. package/dist/routes/pages/integrations.js.map +1 -1
  191. package/dist/routes/pages/new-app.js +1 -1
  192. package/dist/routes/pages/new-app.js.map +1 -1
  193. package/dist/routes/pages/overview.d.ts.map +1 -1
  194. package/dist/routes/pages/overview.js +5 -1
  195. package/dist/routes/pages/overview.js.map +1 -1
  196. package/dist/routes/pages/vault.d.ts.map +1 -1
  197. package/dist/routes/pages/vault.js +23 -5
  198. package/dist/routes/pages/vault.js.map +1 -1
  199. package/dist/routes/pages/workspace.d.ts.map +1 -1
  200. package/dist/routes/pages/workspace.js +187 -35
  201. package/dist/routes/pages/workspace.js.map +1 -1
  202. package/dist/server/lib/app-creation-store.d.ts +13 -0
  203. package/dist/server/lib/app-creation-store.d.ts.map +1 -1
  204. package/dist/server/lib/app-creation-store.js +298 -11
  205. package/dist/server/lib/app-creation-store.js.map +1 -1
  206. package/dist/server/lib/dispatch-integrations.d.ts +1 -1
  207. package/dist/server/lib/dispatch-integrations.d.ts.map +1 -1
  208. package/dist/server/lib/dispatch-integrations.js +9 -4
  209. package/dist/server/lib/dispatch-integrations.js.map +1 -1
  210. package/dist/server/lib/dispatch-remote-commands.d.ts +83 -0
  211. package/dist/server/lib/dispatch-remote-commands.d.ts.map +1 -0
  212. package/dist/server/lib/dispatch-remote-commands.js +256 -0
  213. package/dist/server/lib/dispatch-remote-commands.js.map +1 -0
  214. package/dist/server/lib/dispatch-store.d.ts +26 -0
  215. package/dist/server/lib/dispatch-store.d.ts.map +1 -1
  216. package/dist/server/lib/dispatch-store.js +17 -1
  217. package/dist/server/lib/dispatch-store.js.map +1 -1
  218. package/dist/server/lib/dreams-store.d.ts +398 -0
  219. package/dist/server/lib/dreams-store.d.ts.map +1 -0
  220. package/dist/server/lib/dreams-store.js +2330 -0
  221. package/dist/server/lib/dreams-store.js.map +1 -0
  222. package/dist/server/lib/env-config.d.ts.map +1 -1
  223. package/dist/server/lib/env-config.js +5 -0
  224. package/dist/server/lib/env-config.js.map +1 -1
  225. package/dist/server/lib/onboarding-steps.d.ts +12 -0
  226. package/dist/server/lib/onboarding-steps.d.ts.map +1 -0
  227. package/dist/server/lib/onboarding-steps.js +47 -0
  228. package/dist/server/lib/onboarding-steps.js.map +1 -0
  229. package/dist/server/lib/thread-debug-store.d.ts +2 -2
  230. package/dist/server/lib/vault-store.d.ts +55 -0
  231. package/dist/server/lib/vault-store.d.ts.map +1 -1
  232. package/dist/server/lib/vault-store.js +210 -41
  233. package/dist/server/lib/vault-store.js.map +1 -1
  234. package/dist/server/lib/workspace-resources-store.d.ts +181 -17
  235. package/dist/server/lib/workspace-resources-store.d.ts.map +1 -1
  236. package/dist/server/lib/workspace-resources-store.js +737 -108
  237. package/dist/server/lib/workspace-resources-store.js.map +1 -1
  238. package/dist/server/plugins/agent-chat.d.ts.map +1 -1
  239. package/dist/server/plugins/agent-chat.js +2 -1
  240. package/dist/server/plugins/agent-chat.js.map +1 -1
  241. package/dist/server/plugins/core-routes.d.ts.map +1 -1
  242. package/dist/server/plugins/core-routes.js +4 -0
  243. package/dist/server/plugins/core-routes.js.map +1 -1
  244. package/dist/server/plugins/integrations.js +2 -2
  245. package/dist/server/plugins/integrations.js.map +1 -1
  246. package/package.json +15 -11
  247. package/src/actions/apply-dream-proposal.ts +12 -0
  248. package/src/actions/create-dream-report.ts +76 -0
  249. package/src/actions/create-pylon-ticket.ts +109 -0
  250. package/src/actions/create-vault-grant.ts +1 -1
  251. package/src/actions/create-vault-secret.ts +4 -3
  252. package/src/actions/create-workspace-resource.ts +3 -3
  253. package/src/actions/delete-workspace-resource.ts +1 -1
  254. package/src/actions/ensure-dream-job.ts +76 -0
  255. package/src/actions/get-dream-settings.ts +12 -0
  256. package/src/actions/get-dream.ts +14 -0
  257. package/src/actions/get-vault-access-settings.ts +11 -0
  258. package/src/actions/get-workspace-resource-effective-context.ts +34 -0
  259. package/src/actions/grant-vault-secrets-to-app.ts +1 -1
  260. package/src/actions/index.spec.ts +26 -0
  261. package/src/actions/index.ts +39 -4
  262. package/src/actions/list-dream-candidates.ts +77 -0
  263. package/src/actions/list-dreams.ts +17 -0
  264. package/src/actions/list-integrations-catalog.ts +1 -1
  265. package/src/actions/list-vault-grants.ts +1 -1
  266. package/src/actions/list-workspace-apps.ts +5 -1
  267. package/src/actions/list-workspace-resources-for-app.ts +13 -0
  268. package/src/actions/list-workspace-resources.ts +1 -1
  269. package/src/actions/navigate.ts +2 -1
  270. package/src/actions/preview-dream-proposal.ts +14 -0
  271. package/src/actions/preview-workspace-resource-change.ts +25 -0
  272. package/src/actions/reject-dream-proposal.ts +12 -0
  273. package/src/actions/restore-starter-workspace-resources.ts +17 -0
  274. package/src/actions/send-code-agent-remote-command.ts +59 -0
  275. package/src/actions/set-dream-settings.spec.ts +81 -0
  276. package/src/actions/set-dream-settings.ts +44 -0
  277. package/src/actions/set-vault-access-settings.ts +16 -0
  278. package/src/actions/start-workspace-app-creation.ts +8 -0
  279. package/src/actions/sync-vault-to-app.ts +1 -1
  280. package/src/actions/update-workspace-app-metadata.ts +32 -0
  281. package/src/actions/update-workspace-resource.ts +1 -1
  282. package/src/actions/view-screen.ts +94 -3
  283. package/src/components/app-keys-popover.tsx +23 -7
  284. package/src/components/approval-value-block.spec.tsx +59 -0
  285. package/src/components/approval-value-block.tsx +33 -0
  286. package/src/components/create-app-popover.tsx +50 -16
  287. package/src/components/dispatch-shell.tsx +16 -15
  288. package/src/components/layout/Layout.tsx +19 -5
  289. package/src/components/messaging-setup-panel.tsx +54 -39
  290. package/src/components/workspace-app-card.tsx +268 -1
  291. package/src/components/workspace-resource-effective-stack.spec.tsx +125 -0
  292. package/src/components/workspace-resource-effective-stack.tsx +141 -0
  293. package/src/components/workspace-resource-impact-preview.spec.tsx +147 -0
  294. package/src/components/workspace-resource-impact-preview.tsx +116 -0
  295. package/src/db/migrations.ts +59 -0
  296. package/src/db/schema.ts +46 -2
  297. package/src/hooks/use-navigation-state.ts +34 -9
  298. package/src/lib/catch-all-target.spec.ts +218 -0
  299. package/src/lib/catch-all-target.ts +99 -0
  300. package/src/lib/utils.ts +6 -1
  301. package/src/lib/workspace-apps.ts +9 -0
  302. package/src/routes/index.ts +1 -0
  303. package/src/routes/pages/$appId.tsx +21 -8
  304. package/src/routes/pages/approval.tsx +14 -1
  305. package/src/routes/pages/approvals.tsx +1 -1
  306. package/src/routes/pages/dream-settings.spec.ts +130 -0
  307. package/src/routes/pages/dream-settings.ts +103 -0
  308. package/src/routes/pages/dreams.tsx +1828 -0
  309. package/src/routes/pages/integrations.tsx +57 -18
  310. package/src/routes/pages/new-app.tsx +1 -1
  311. package/src/routes/pages/overview.tsx +11 -3
  312. package/src/routes/pages/vault.tsx +76 -9
  313. package/src/routes/pages/workspace.tsx +577 -97
  314. package/src/server/lib/app-creation-store.spec.ts +61 -2
  315. package/src/server/lib/app-creation-store.ts +389 -13
  316. package/src/server/lib/dispatch-integrations.ts +10 -3
  317. package/src/server/lib/dispatch-remote-commands.spec.ts +167 -0
  318. package/src/server/lib/dispatch-remote-commands.ts +375 -0
  319. package/src/server/lib/dispatch-store.ts +37 -1
  320. package/src/server/lib/dreams-store.spec.ts +1492 -0
  321. package/src/server/lib/dreams-store.ts +3168 -0
  322. package/src/server/lib/env-config.ts +5 -0
  323. package/src/server/lib/onboarding-steps.ts +49 -0
  324. package/src/server/lib/vault-store.spec.ts +69 -0
  325. package/src/server/lib/vault-store.ts +266 -49
  326. package/src/server/lib/workspace-resource-approval-lifecycle.spec.ts +236 -0
  327. package/src/server/lib/workspace-resources-store.spec.ts +1106 -0
  328. package/src/server/lib/workspace-resources-store.ts +1001 -134
  329. package/src/server/plugins/agent-chat.ts +2 -1
  330. package/src/server/plugins/core-routes.ts +5 -0
  331. package/src/server/plugins/integrations.ts +2 -2
  332. package/dist/actions/sync-workspace-resources-to-all.d.ts +0 -3
  333. package/dist/actions/sync-workspace-resources-to-all.d.ts.map +0 -1
  334. package/dist/actions/sync-workspace-resources-to-all.js +0 -9
  335. package/dist/actions/sync-workspace-resources-to-all.js.map +0 -1
  336. package/dist/actions/sync-workspace-resources-to-app.d.ts +0 -3
  337. package/dist/actions/sync-workspace-resources-to-app.d.ts.map +0 -1
  338. package/dist/actions/sync-workspace-resources-to-app.js +0 -11
  339. package/dist/actions/sync-workspace-resources-to-app.js.map +0 -1
  340. package/src/actions/sync-workspace-resources-to-all.ts +0 -10
  341. package/src/actions/sync-workspace-resources-to-app.ts +0 -12
@@ -0,0 +1,109 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { recordAudit } from "../server/lib/dispatch-store.js";
4
+
5
+ const PYLON_API_BASE =
6
+ process.env.PYLON_API_BASE_URL || "https://api.usepylon.com";
7
+
8
+ export default defineAction({
9
+ description:
10
+ "Create a Pylon ticket. Use to escalate blockers from client meetings, route unmatched #customer-* posts that have no Slack channel, or open a follow-up that needs tracking. Requires PYLON_API_KEY in the Vault.",
11
+ schema: z.object({
12
+ title: z.string().min(1).describe("Short ticket title"),
13
+ bodyHtml: z
14
+ .string()
15
+ .min(1)
16
+ .describe("HTML body — Pylon renders this in the ticket"),
17
+ requesterEmail: z
18
+ .string()
19
+ .email()
20
+ .optional()
21
+ .describe("Email of the person the ticket is on behalf of"),
22
+ requesterName: z.string().optional(),
23
+ accountId: z
24
+ .string()
25
+ .optional()
26
+ .describe(
27
+ "Pylon account ID — provide either this OR requesterEmail to identify the subject",
28
+ ),
29
+ priority: z.enum(["urgent", "high", "medium", "low"]).optional(),
30
+ tags: z.array(z.string()).optional(),
31
+ assigneeId: z.string().optional(),
32
+ teamId: z.string().optional(),
33
+ }),
34
+ run: async (input) => {
35
+ const apiKey = process.env.PYLON_API_KEY;
36
+ if (!apiKey) {
37
+ throw new Error(
38
+ "PYLON_API_KEY is not set. Add it to the Dispatch Vault.",
39
+ );
40
+ }
41
+ if (!input.accountId && !input.requesterEmail) {
42
+ throw new Error(
43
+ "Pylon requires either accountId or requesterEmail to identify the ticket subject.",
44
+ );
45
+ }
46
+
47
+ const payload: Record<string, unknown> = {
48
+ title: input.title,
49
+ body_html: input.bodyHtml,
50
+ };
51
+ if (input.accountId) payload.account_id = input.accountId;
52
+ if (input.requesterEmail) payload.requester_email = input.requesterEmail;
53
+ if (input.requesterName) payload.requester_name = input.requesterName;
54
+ if (input.priority) payload.priority = input.priority;
55
+ if (input.tags?.length) payload.tags = input.tags;
56
+ if (input.assigneeId) payload.assignee_id = input.assigneeId;
57
+ if (input.teamId) payload.team_id = input.teamId;
58
+
59
+ const res = await fetch(`${PYLON_API_BASE}/issues`, {
60
+ method: "POST",
61
+ headers: {
62
+ Authorization: `Bearer ${apiKey}`,
63
+ "Content-Type": "application/json",
64
+ },
65
+ body: JSON.stringify(payload),
66
+ });
67
+
68
+ if (!res.ok) {
69
+ const text = await res.text().catch(() => "");
70
+ throw new Error(
71
+ `Pylon ticket creation failed (HTTP ${res.status})${text ? `: ${text.slice(0, 500)}` : ""}`,
72
+ );
73
+ }
74
+
75
+ const data = (await res.json().catch(() => null)) as Record<
76
+ string,
77
+ unknown
78
+ > | null;
79
+ const issue =
80
+ data && typeof data === "object" && "issue" in data
81
+ ? ((data as { issue?: Record<string, unknown> }).issue ?? {})
82
+ : (data ?? {});
83
+ const ticketId =
84
+ issue && typeof (issue as { id?: unknown }).id === "string"
85
+ ? (issue as { id: string }).id
86
+ : "";
87
+
88
+ await recordAudit({
89
+ action: "pylon.ticket.created",
90
+ targetType: "pylon-ticket",
91
+ targetId: ticketId || null,
92
+ summary: `Created Pylon ticket: ${input.title}`,
93
+ metadata: {
94
+ title: input.title,
95
+ priority: input.priority,
96
+ tags: input.tags,
97
+ accountId: input.accountId,
98
+ requesterEmail: input.requesterEmail,
99
+ ticketId,
100
+ },
101
+ });
102
+
103
+ return {
104
+ ok: true as const,
105
+ ticketId,
106
+ ticket: issue,
107
+ };
108
+ },
109
+ });
@@ -4,7 +4,7 @@ import { createGrant } from "../server/lib/vault-store.js";
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "Grant an app access to a vault secret. The secret can then be synced to the app. Admin only.",
7
+ "Grant an app access to a vault secret in manual vault access mode. Admin only.",
8
8
  schema: z.object({
9
9
  secretId: z.string().describe("ID of the secret to grant"),
10
10
  appId: z
@@ -4,13 +4,14 @@ import { createSecret } from "../server/lib/vault-store.js";
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "Store a new secret in the workspace vault. Admin only. The secret can then be granted to specific apps.",
7
+ "Store a secret in the workspace vault. Admin only. Existing credential keys are updated. By default, saved vault keys are available to every workspace app; manual mode uses per-app grants.",
8
8
  schema: z.object({
9
9
  credentialKey: z
10
10
  .string()
11
+ .min(1)
11
12
  .describe("Environment variable name, e.g. GOOGLE_CLIENT_ID"),
12
- value: z.string().describe("The secret value"),
13
- name: z.string().describe("Human-readable label for this secret"),
13
+ value: z.string().min(1).describe("The secret value"),
14
+ name: z.string().min(1).describe("Human-readable label for this secret"),
14
15
  provider: z
15
16
  .string()
16
17
  .optional()
@@ -4,7 +4,7 @@ import { createWorkspaceResource } from "../server/lib/workspace-resources-store
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- 'Create a workspace-wide skill, instruction, agent profile, or knowledge pack. Set scope to "all" to push to every app, or "selected" to grant per-app.',
7
+ 'Create a workspace-wide skill, instruction, agent profile, or reference resource. Set scope to "all" for runtime inheritance by every app, or "selected" to grant per-app. When Dispatch approval policy is enabled, All-app creates queue an approval request before taking effect.',
8
8
  schema: z.object({
9
9
  kind: z
10
10
  .enum(["skill", "instruction", "agent", "knowledge"])
@@ -14,7 +14,7 @@ export default defineAction({
14
14
  path: z
15
15
  .string()
16
16
  .describe(
17
- 'Resource path, e.g. "skills/designer.md", "agents/researcher.md", "context/gtm-messaging.md", or "remote-agents/researcher.json"',
17
+ 'Resource path in target apps. Use "skills/<name>/SKILL.md" for skills, "AGENTS.md" or "instructions/<name>.md" for always-on guardrails, "context/<name>.md" for reference resources, and "agents/<name>.md" for custom agents.',
18
18
  ),
19
19
  content: z
20
20
  .string()
@@ -22,7 +22,7 @@ export default defineAction({
22
22
  scope: z
23
23
  .enum(["all", "selected"])
24
24
  .describe(
25
- '"all" = push to every app, "selected" = only apps with explicit grants',
25
+ '"all" = inherited by every app at runtime, "selected" = only apps with explicit grants',
26
26
  ),
27
27
  }),
28
28
  run: async (args) => createWorkspaceResource(args),
@@ -4,7 +4,7 @@ import { deleteWorkspaceResource } from "../server/lib/workspace-resources-store
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "Delete a workspace resource and revoke all its grants. Admin only.",
7
+ "Delete a workspace resource and revoke all its grants. When Dispatch approval policy is enabled, deleting an All-app resource queues an approval request before taking effect.",
8
8
  schema: z.object({
9
9
  id: z.string().describe("Resource ID to delete"),
10
10
  }),
@@ -0,0 +1,76 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { ensureDreamJob } from "../server/lib/dreams-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Create or update the personal recurring Dispatch dream job resource at jobs/dispatch-dream.md.",
8
+ schema: z.object({
9
+ schedule: z
10
+ .string()
11
+ .optional()
12
+ .describe(
13
+ 'Optional five-field cron schedule. Defaults to weekly: "0 9 * * 1".',
14
+ ),
15
+ sourceId: z
16
+ .string()
17
+ .default("all")
18
+ .describe("Thread debug source id for the recurring dream pass."),
19
+ sourceIds: z
20
+ .array(z.string().min(1))
21
+ .optional()
22
+ .describe("Optional explicit source ids for recurring dream passes."),
23
+ allSources: z.coerce
24
+ .boolean()
25
+ .default(true)
26
+ .describe("Scan every connected source for recurring dream passes."),
27
+ query: z
28
+ .string()
29
+ .optional()
30
+ .describe("Optional search term to focus recurring dream passes."),
31
+ limit: z.coerce.number().int().min(1).max(50).default(8),
32
+ sourceTimeoutMs: z.coerce
33
+ .number()
34
+ .int()
35
+ .min(1000)
36
+ .max(60000)
37
+ .default(30000)
38
+ .describe("Per-source timeout in milliseconds."),
39
+ sourceConcurrency: z.coerce
40
+ .number()
41
+ .int()
42
+ .min(1)
43
+ .max(8)
44
+ .default(2)
45
+ .describe("How many sources to scan at once."),
46
+ sourceStartStaggerMs: z.coerce
47
+ .number()
48
+ .int()
49
+ .min(0)
50
+ .max(5000)
51
+ .default(250)
52
+ .describe("Delay between source starts within each scan batch."),
53
+ threadConcurrency: z.coerce
54
+ .number()
55
+ .int()
56
+ .min(1)
57
+ .max(10)
58
+ .default(3)
59
+ .describe("How many threads to inspect at once within each source."),
60
+ threadTimeoutMs: z.coerce
61
+ .number()
62
+ .int()
63
+ .min(1000)
64
+ .max(30000)
65
+ .default(8000)
66
+ .describe("Per-thread debug timeout in milliseconds."),
67
+ minCandidateCount: z.coerce
68
+ .number()
69
+ .int()
70
+ .min(0)
71
+ .max(50)
72
+ .default(1)
73
+ .describe("Skip recurring report creation below this candidate count."),
74
+ }),
75
+ run: async (input) => ensureDreamJob(input),
76
+ });
@@ -0,0 +1,12 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getDreamSettings } from "../server/lib/dreams-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Read recurring Dispatch dream settings, including schedule, source scope, timeout, and minimum candidate threshold.",
8
+ schema: z.object({}),
9
+ http: { method: "GET" },
10
+ readOnly: true,
11
+ run: async () => getDreamSettings(),
12
+ });
@@ -0,0 +1,14 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getDream } from "../server/lib/dreams-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Get one Dispatch dream report and its evidence-backed proposals.",
8
+ schema: z.object({
9
+ id: z.string().min(1).describe("Dream id."),
10
+ }),
11
+ http: { method: "GET" },
12
+ readOnly: true,
13
+ run: async ({ id }) => getDream(id),
14
+ });
@@ -0,0 +1,11 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getVaultAccessSettings } from "../server/lib/vault-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Get the Dispatch vault access mode. Defaults to all-apps, where every workspace app can use every vault key.",
8
+ schema: z.object({}),
9
+ http: { method: "GET" },
10
+ run: async () => getVaultAccessSettings(),
11
+ });
@@ -0,0 +1,34 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getWorkspaceResourceEffectiveContext } from "../server/lib/workspace-resources-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "Preview how a Dispatch workspace resource resolves for an app/user at runtime: workspace default, organization/app override, and personal override, plus whether the resource is all-app or selected-only.",
8
+ schema: z.object({
9
+ resourceId: z
10
+ .string()
11
+ .optional()
12
+ .describe("Workspace resource id to inspect."),
13
+ path: z
14
+ .string()
15
+ .optional()
16
+ .describe(
17
+ "Resource path to inspect, such as context/brand.md. Optional when resourceId is provided.",
18
+ ),
19
+ appId: z
20
+ .string()
21
+ .optional()
22
+ .describe(
23
+ "Workspace app id to preview. All-app resources are inherited by every app; selected-only resources require a grant.",
24
+ ),
25
+ userEmail: z
26
+ .string()
27
+ .optional()
28
+ .describe(
29
+ "User email for personal overrides. Defaults to the current Dispatch user.",
30
+ ),
31
+ }),
32
+ http: { method: "GET" },
33
+ run: async (args) => getWorkspaceResourceEffectiveContext(args),
34
+ });
@@ -4,7 +4,7 @@ import { grantSecretsToApp } from "../server/lib/vault-store.js";
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "Grant multiple Dispatch vault secrets to a workspace app. Existing active grants are skipped.",
7
+ "Grant multiple Dispatch vault secrets to a workspace app in manual vault access mode. Existing active grants are skipped.",
8
8
  http: { method: "POST" },
9
9
  schema: z.object({
10
10
  appId: z
@@ -0,0 +1,26 @@
1
+ import { describe, expect, it } from "vitest";
2
+
3
+ import { dispatchActions } from "./index.js";
4
+
5
+ describe("dispatch action registry", () => {
6
+ it("keeps workspace resources runtime-inherited instead of exposing sync actions", () => {
7
+ expect(dispatchActions).toHaveProperty("list-workspace-resources-for-app");
8
+ expect(dispatchActions).toHaveProperty(
9
+ "get-workspace-resource-effective-context",
10
+ );
11
+ expect(dispatchActions).toHaveProperty("grant-workspace-resources-to-app");
12
+ expect(dispatchActions).toHaveProperty("sync-vault-to-app");
13
+
14
+ expect(dispatchActions).not.toHaveProperty(
15
+ "sync-workspace-resources-to-app",
16
+ );
17
+ expect(dispatchActions).not.toHaveProperty(
18
+ "sync-workspace-resources-to-all",
19
+ );
20
+ expect(
21
+ Object.keys(dispatchActions).filter((name) =>
22
+ name.startsWith("sync-workspace-resources"),
23
+ ),
24
+ ).toEqual([]);
25
+ });
26
+ });
@@ -3,17 +3,24 @@ import approveDispatchChange from "./approve-dispatch-change.js";
3
3
  import approveVaultRequest from "./approve-vault-request.js";
4
4
  import archiveWorkspaceApp from "./archive-workspace-app.js";
5
5
  import createLinkToken from "./create-link-token.js";
6
+ import createPylonTicket from "./create-pylon-ticket.js";
6
7
  import createVaultGrant from "./create-vault-grant.js";
7
8
  import createVaultSecret from "./create-vault-secret.js";
8
9
  import createWorkspaceResourceGrant from "./create-workspace-resource-grant.js";
9
10
  import createWorkspaceResource from "./create-workspace-resource.js";
11
+ import createDreamReport from "./create-dream-report.js";
10
12
  import deleteDestination from "./delete-destination.js";
11
13
  import deleteVaultSecret from "./delete-vault-secret.js";
12
14
  import deleteWorkspaceResource from "./delete-workspace-resource.js";
13
15
  import denyVaultRequest from "./deny-vault-request.js";
16
+ import ensureDreamJob from "./ensure-dream-job.js";
14
17
  import getAppCreationSettings from "./get-app-creation-settings.js";
15
18
  import getAgentThreadDebug from "./get-agent-thread-debug.js";
19
+ import getDream from "./get-dream.js";
20
+ import getDreamSettings from "./get-dream-settings.js";
16
21
  import getDispatchSettings from "./get-dispatch-settings.js";
22
+ import getVaultAccessSettings from "./get-vault-access-settings.js";
23
+ import getWorkspaceResourceEffectiveContext from "./get-workspace-resource-effective-context.js";
17
24
  import getWorkspaceInfo from "./get-workspace-info.js";
18
25
  import grantWorkspaceResourcesToApp from "./grant-workspace-resources-to-app.js";
19
26
  import grantVaultSecretsToApp from "./grant-vault-secrets-to-app.js";
@@ -25,6 +32,8 @@ import listDispatchApprovals from "./list-dispatch-approvals.js";
25
32
  import listDispatchAudit from "./list-dispatch-audit.js";
26
33
  import listDispatchOverview from "./list-dispatch-overview.js";
27
34
  import listDispatchUsageMetrics from "./list-dispatch-usage-metrics.js";
35
+ import listDreamCandidates from "./list-dream-candidates.js";
36
+ import listDreams from "./list-dreams.js";
28
37
  import listIntegrationsCatalog from "./list-integrations-catalog.js";
29
38
  import listLinkedIdentities from "./list-linked-identities.js";
30
39
  import listVaultAudit from "./list-vault-audit.js";
@@ -35,23 +44,31 @@ import listVaultSecrets from "./list-vault-secrets.js";
35
44
  import listWorkspaceApps from "./list-workspace-apps.js";
36
45
  import listWorkspaceResourceOptions from "./list-workspace-resource-options.js";
37
46
  import listWorkspaceResourceGrants from "./list-workspace-resource-grants.js";
47
+ import listWorkspaceResourcesForApp from "./list-workspace-resources-for-app.js";
38
48
  import listWorkspaceResources from "./list-workspace-resources.js";
39
49
  import navigate from "./navigate.js";
50
+ import applyDreamProposal from "./apply-dream-proposal.js";
51
+ import previewDreamProposal from "./preview-dream-proposal.js";
52
+ import previewWorkspaceResourceChange from "./preview-workspace-resource-change.js";
40
53
  import rejectDispatchChange from "./reject-dispatch-change.js";
54
+ import rejectDreamProposal from "./reject-dream-proposal.js";
41
55
  import removePendingWorkspaceApp from "./remove-pending-workspace-app.js";
42
56
  import requestVaultSecret from "./request-vault-secret.js";
43
57
  import revokeVaultGrant from "./revoke-vault-grant.js";
44
58
  import revokeWorkspaceResourceGrant from "./revoke-workspace-resource-grant.js";
59
+ import restoreStarterWorkspaceResources from "./restore-starter-workspace-resources.js";
45
60
  import scaffoldWorkspaceApp from "./scaffold-workspace-app.js";
46
61
  import searchAgentThreads from "./search-agent-threads.js";
62
+ import sendCodeAgentRemoteCommand from "./send-code-agent-remote-command.js";
47
63
  import sendPlatformMessage from "./send-platform-message.js";
48
64
  import setAppCreationSettings from "./set-app-creation-settings.js";
49
65
  import setDispatchApprovalPolicy from "./set-dispatch-approval-policy.js";
66
+ import setDreamSettings from "./set-dream-settings.js";
67
+ import setVaultAccessSettings from "./set-vault-access-settings.js";
50
68
  import startWorkspaceAppCreation from "./start-workspace-app-creation.js";
51
69
  import syncVaultToApp from "./sync-vault-to-app.js";
52
- import syncWorkspaceResourcesToAll from "./sync-workspace-resources-to-all.js";
53
- import syncWorkspaceResourcesToApp from "./sync-workspace-resources-to-app.js";
54
70
  import unarchiveWorkspaceApp from "./unarchive-workspace-app.js";
71
+ import updateWorkspaceAppMetadata from "./update-workspace-app-metadata.js";
55
72
  import updateVaultSecret from "./update-vault-secret.js";
56
73
  import updateWorkspaceResource from "./update-workspace-resource.js";
57
74
  import upsertDestination from "./upsert-destination.js";
@@ -68,17 +85,25 @@ export const dispatchActions: Record<string, ActionEntry> = {
68
85
  "approve-vault-request": approveVaultRequest,
69
86
  "archive-workspace-app": archiveWorkspaceApp,
70
87
  "create-link-token": createLinkToken,
88
+ "create-pylon-ticket": createPylonTicket,
71
89
  "create-vault-grant": createVaultGrant,
72
90
  "create-vault-secret": createVaultSecret,
73
91
  "create-workspace-resource-grant": createWorkspaceResourceGrant,
74
92
  "create-workspace-resource": createWorkspaceResource,
93
+ "create-dream-report": createDreamReport,
75
94
  "delete-destination": deleteDestination,
76
95
  "delete-vault-secret": deleteVaultSecret,
77
96
  "delete-workspace-resource": deleteWorkspaceResource,
78
97
  "deny-vault-request": denyVaultRequest,
98
+ "ensure-dream-job": ensureDreamJob,
79
99
  "get-app-creation-settings": getAppCreationSettings,
80
100
  "get-agent-thread-debug": getAgentThreadDebug,
101
+ "get-dream": getDream,
102
+ "get-dream-settings": getDreamSettings,
81
103
  "get-dispatch-settings": getDispatchSettings,
104
+ "get-vault-access-settings": getVaultAccessSettings,
105
+ "get-workspace-resource-effective-context":
106
+ getWorkspaceResourceEffectiveContext,
82
107
  "get-workspace-info": getWorkspaceInfo,
83
108
  "grant-workspace-resources-to-app": grantWorkspaceResourcesToApp,
84
109
  "grant-vault-secrets-to-app": grantVaultSecretsToApp,
@@ -90,6 +115,8 @@ export const dispatchActions: Record<string, ActionEntry> = {
90
115
  "list-dispatch-audit": listDispatchAudit,
91
116
  "list-dispatch-overview": listDispatchOverview,
92
117
  "list-dispatch-usage-metrics": listDispatchUsageMetrics,
118
+ "list-dream-candidates": listDreamCandidates,
119
+ "list-dreams": listDreams,
93
120
  "list-integrations-catalog": listIntegrationsCatalog,
94
121
  "list-linked-identities": listLinkedIdentities,
95
122
  "list-vault-audit": listVaultAudit,
@@ -100,23 +127,31 @@ export const dispatchActions: Record<string, ActionEntry> = {
100
127
  "list-workspace-apps": listWorkspaceApps,
101
128
  "list-workspace-resource-options": listWorkspaceResourceOptions,
102
129
  "list-workspace-resource-grants": listWorkspaceResourceGrants,
130
+ "list-workspace-resources-for-app": listWorkspaceResourcesForApp,
103
131
  "list-workspace-resources": listWorkspaceResources,
104
132
  navigate: navigate,
133
+ "apply-dream-proposal": applyDreamProposal,
134
+ "preview-dream-proposal": previewDreamProposal,
135
+ "preview-workspace-resource-change": previewWorkspaceResourceChange,
105
136
  "reject-dispatch-change": rejectDispatchChange,
137
+ "reject-dream-proposal": rejectDreamProposal,
106
138
  "remove-pending-workspace-app": removePendingWorkspaceApp,
107
139
  "request-vault-secret": requestVaultSecret,
108
140
  "revoke-vault-grant": revokeVaultGrant,
109
141
  "revoke-workspace-resource-grant": revokeWorkspaceResourceGrant,
142
+ "restore-starter-workspace-resources": restoreStarterWorkspaceResources,
110
143
  "scaffold-workspace-app": scaffoldWorkspaceApp,
111
144
  "search-agent-threads": searchAgentThreads,
145
+ "send-code-agent-remote-command": sendCodeAgentRemoteCommand,
112
146
  "send-platform-message": sendPlatformMessage,
113
147
  "set-app-creation-settings": setAppCreationSettings,
114
148
  "set-dispatch-approval-policy": setDispatchApprovalPolicy,
149
+ "set-dream-settings": setDreamSettings,
150
+ "set-vault-access-settings": setVaultAccessSettings,
115
151
  "start-workspace-app-creation": startWorkspaceAppCreation,
116
152
  "sync-vault-to-app": syncVaultToApp,
117
- "sync-workspace-resources-to-all": syncWorkspaceResourcesToAll,
118
- "sync-workspace-resources-to-app": syncWorkspaceResourcesToApp,
119
153
  "unarchive-workspace-app": unarchiveWorkspaceApp,
154
+ "update-workspace-app-metadata": updateWorkspaceAppMetadata,
120
155
  "update-vault-secret": updateVaultSecret,
121
156
  "update-workspace-resource": updateWorkspaceResource,
122
157
  "upsert-destination": upsertDestination,
@@ -0,0 +1,77 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { listDreamCandidates } from "../server/lib/dreams-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "List recent agent threads worth reviewing in a Dispatch dream pass, scored from grounded signals like corrections, failures, tool errors, feedback, evals, and satisfaction.",
8
+ schema: z.object({
9
+ sourceId: z
10
+ .string()
11
+ .default("current")
12
+ .describe(
13
+ "Thread debug source id from list-agent-thread-sources. Use 'all' to scan every connected source.",
14
+ ),
15
+ sourceIds: z
16
+ .array(z.string().min(1))
17
+ .optional()
18
+ .describe(
19
+ "Optional explicit source ids to scan together. When provided, sourceId is treated as aggregate.",
20
+ ),
21
+ allSources: z.coerce
22
+ .boolean()
23
+ .default(false)
24
+ .describe(
25
+ "Scan every connected thread-debug source with partial results.",
26
+ ),
27
+ query: z
28
+ .string()
29
+ .optional()
30
+ .describe("Optional search term to focus candidate discovery."),
31
+ ownerEmail: z
32
+ .string()
33
+ .optional()
34
+ .describe(
35
+ "Optional owner email filter. Admins may pass '*' or omit to use their admin-visible scope.",
36
+ ),
37
+ limit: z.coerce.number().int().min(1).max(50).default(20),
38
+ sourceTimeoutMs: z.coerce
39
+ .number()
40
+ .int()
41
+ .min(1000)
42
+ .max(60000)
43
+ .default(15000)
44
+ .describe("Per-source timeout in milliseconds for partial scans."),
45
+ sourceConcurrency: z.coerce
46
+ .number()
47
+ .int()
48
+ .min(1)
49
+ .max(8)
50
+ .default(2)
51
+ .describe("How many thread-debug sources to scan at once."),
52
+ sourceStartStaggerMs: z.coerce
53
+ .number()
54
+ .int()
55
+ .min(0)
56
+ .max(5000)
57
+ .default(250)
58
+ .describe("Delay between source starts within a scan batch."),
59
+ threadConcurrency: z.coerce
60
+ .number()
61
+ .int()
62
+ .min(1)
63
+ .max(10)
64
+ .default(3)
65
+ .describe("How many threads to inspect at once within each source."),
66
+ threadTimeoutMs: z.coerce
67
+ .number()
68
+ .int()
69
+ .min(1000)
70
+ .max(30000)
71
+ .default(8000)
72
+ .describe("Per-thread debug timeout in milliseconds."),
73
+ }),
74
+ http: { method: "GET" },
75
+ readOnly: true,
76
+ run: async (input) => listDreamCandidates(input),
77
+ });
@@ -0,0 +1,17 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { listDreams } from "../server/lib/dreams-store.js";
4
+
5
+ export default defineAction({
6
+ description: "List Dispatch dream reports with proposal status counts.",
7
+ schema: z.object({
8
+ limit: z.coerce.number().int().min(1).max(100).default(25),
9
+ status: z
10
+ .enum(["running", "completed", "failed", "all"])
11
+ .default("all")
12
+ .describe("Optional dream status filter."),
13
+ }),
14
+ http: { method: "GET" },
15
+ readOnly: true,
16
+ run: async (input) => listDreams(input),
17
+ });
@@ -4,7 +4,7 @@ import { listIntegrationsCatalog } from "../server/lib/vault-store.js";
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "List all workspace apps and their credential/integration requirements. Shows which credentials are configured, which are granted from the vault, and which are missing.",
7
+ "List all workspace apps and their credential/integration requirements. Shows configured credentials and effective Dispatch vault access.",
8
8
  schema: z.object({}),
9
9
  http: { method: "GET" },
10
10
  run: async () => listIntegrationsCatalog(),
@@ -4,7 +4,7 @@ import { listGrants } from "../server/lib/vault-store.js";
4
4
 
5
5
  export default defineAction({
6
6
  description:
7
- "List vault grants which apps have access to which secrets. Optionally filter by app or secret.",
7
+ "List explicit vault grants used by manual vault access mode. Optionally filter by app or secret.",
8
8
  schema: z.object({
9
9
  appId: z.string().optional().describe("Filter by app ID"),
10
10
  secretId: z.string().optional().describe("Filter by secret ID"),
@@ -12,13 +12,17 @@ const httpBoolean = z.preprocess((value) => {
12
12
 
13
13
  export default defineAction({
14
14
  description:
15
- "List apps installed in this workspace, including mounted paths, absolute URLs, and agent-card/A2A metadata for ready apps by default. UI polling callers can pass includeAgentCards=false to skip network probes.",
15
+ "List apps installed in this workspace, including mounted paths, absolute URLs, audience (internal/public), page route access overrides, and agent-card/A2A metadata for ready apps by default. UI polling callers can pass includeAgentCards=false to skip network probes.",
16
16
  schema: z.object({
17
17
  includeAgentCards: httpBoolean
18
18
  .default(true)
19
19
  .describe(
20
20
  "Fetch each ready app's /.well-known/agent-card.json with a short non-throwing timeout and include agentCardUrl, agentCardReachable, a2aEndpointUrl, agentName, and agentSkillsCount. Defaults to true for agent calls; UI polling should pass false. Pending Builder apps are not probed.",
21
21
  ),
22
+ audience: z
23
+ .enum(["all", "internal", "public"])
24
+ .default("all")
25
+ .describe("Filter by workspace app audience."),
22
26
  }),
23
27
  http: { method: "GET" },
24
28
  run: async (input) => listWorkspaceApps(input),
@@ -0,0 +1,13 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { listWorkspaceResourcesForApp } from "../server/lib/workspace-resources-store.js";
4
+
5
+ export default defineAction({
6
+ description:
7
+ "List the inherited workspace and explicitly granted resources an app receives, including auto-loaded instructions.",
8
+ schema: z.object({
9
+ appId: z.string().describe("Workspace app ID"),
10
+ }),
11
+ http: { method: "GET" },
12
+ run: async (args) => listWorkspaceResourcesForApp(args.appId),
13
+ });