@agent-native/dispatch 0.10.1 → 0.10.3

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 (228) hide show
  1. package/README.md +5 -5
  2. package/dist/actions/apply-dream-proposal.d.ts +27 -1
  3. package/dist/actions/apply-dream-proposal.d.ts.map +1 -1
  4. package/dist/actions/approve-dispatch-change.d.ts +20 -1
  5. package/dist/actions/approve-dispatch-change.d.ts.map +1 -1
  6. package/dist/actions/approve-vault-request.d.ts +18 -1
  7. package/dist/actions/approve-vault-request.d.ts.map +1 -1
  8. package/dist/actions/archive-workspace-app.d.ts +5 -1
  9. package/dist/actions/archive-workspace-app.d.ts.map +1 -1
  10. package/dist/actions/ask_app.d.ts +8 -1
  11. package/dist/actions/ask_app.d.ts.map +1 -1
  12. package/dist/actions/create-dream-report.d.ts +57 -1
  13. package/dist/actions/create-dream-report.d.ts.map +1 -1
  14. package/dist/actions/create-link-token.d.ts +8 -1
  15. package/dist/actions/create-link-token.d.ts.map +1 -1
  16. package/dist/actions/create-pylon-ticket.d.ts +15 -1
  17. package/dist/actions/create-pylon-ticket.d.ts.map +1 -1
  18. package/dist/actions/create-vault-grant.d.ts +15 -1
  19. package/dist/actions/create-vault-grant.d.ts.map +1 -1
  20. package/dist/actions/create-vault-secret.d.ts +19 -1
  21. package/dist/actions/create-vault-secret.d.ts.map +1 -1
  22. package/dist/actions/create-workspace-resource-grant.d.ts +14 -1
  23. package/dist/actions/create-workspace-resource-grant.d.ts.map +1 -1
  24. package/dist/actions/create-workspace-resource.d.ts +38 -1
  25. package/dist/actions/create-workspace-resource.d.ts.map +1 -1
  26. package/dist/actions/create_embed_session.d.ts +11 -1
  27. package/dist/actions/create_embed_session.d.ts.map +1 -1
  28. package/dist/actions/delete-destination.d.ts +32 -1
  29. package/dist/actions/delete-destination.d.ts.map +1 -1
  30. package/dist/actions/delete-vault-secret.d.ts +15 -1
  31. package/dist/actions/delete-vault-secret.d.ts.map +1 -1
  32. package/dist/actions/delete-workspace-resource.d.ts +33 -1
  33. package/dist/actions/delete-workspace-resource.d.ts.map +1 -1
  34. package/dist/actions/deny-vault-request.d.ts +17 -1
  35. package/dist/actions/deny-vault-request.d.ts.map +1 -1
  36. package/dist/actions/ensure-dream-job.d.ts +31 -1
  37. package/dist/actions/ensure-dream-job.d.ts.map +1 -1
  38. package/dist/actions/get-agent-thread-debug.d.ts +53 -1
  39. package/dist/actions/get-agent-thread-debug.d.ts.map +1 -1
  40. package/dist/actions/get-app-creation-settings.d.ts +1 -1
  41. package/dist/actions/get-dispatch-settings.d.ts +1 -1
  42. package/dist/actions/get-dream-settings.d.ts +1 -1
  43. package/dist/actions/get-dream.d.ts +46 -1
  44. package/dist/actions/get-dream.d.ts.map +1 -1
  45. package/dist/actions/get-vault-access-settings.d.ts +1 -1
  46. package/dist/actions/get-workspace-info.d.ts +1 -1
  47. package/dist/actions/get-workspace-resource-effective-context.d.ts +6 -1
  48. package/dist/actions/get-workspace-resource-effective-context.d.ts.map +1 -1
  49. package/dist/actions/grant-vault-secrets-to-app.d.ts +25 -1
  50. package/dist/actions/grant-vault-secrets-to-app.d.ts.map +1 -1
  51. package/dist/actions/grant-workspace-resources-to-app.d.ts +15 -1
  52. package/dist/actions/grant-workspace-resources-to-app.d.ts.map +1 -1
  53. package/dist/actions/list-agent-thread-sources.d.ts +7 -1
  54. package/dist/actions/list-agent-thread-sources.d.ts.map +1 -1
  55. package/dist/actions/list-available-workspace-templates.d.ts +1 -1
  56. package/dist/actions/list-connected-agents.d.ts +11 -1
  57. package/dist/actions/list-connected-agents.d.ts.map +1 -1
  58. package/dist/actions/list-destinations.d.ts +13 -1
  59. package/dist/actions/list-destinations.d.ts.map +1 -1
  60. package/dist/actions/list-dispatch-approvals.d.ts +18 -1
  61. package/dist/actions/list-dispatch-approvals.d.ts.map +1 -1
  62. package/dist/actions/list-dispatch-audit.d.ts +14 -1
  63. package/dist/actions/list-dispatch-audit.d.ts.map +1 -1
  64. package/dist/actions/list-dispatch-overview.d.ts +59 -1
  65. package/dist/actions/list-dispatch-overview.d.ts.map +1 -1
  66. package/dist/actions/list-dispatch-usage-metrics.d.ts +3 -1
  67. package/dist/actions/list-dispatch-usage-metrics.d.ts.map +1 -1
  68. package/dist/actions/list-dream-candidates.d.ts +22 -1
  69. package/dist/actions/list-dream-candidates.d.ts.map +1 -1
  70. package/dist/actions/list-dreams.d.ts +27 -1
  71. package/dist/actions/list-dreams.d.ts.map +1 -1
  72. package/dist/actions/list-integrations-catalog.d.ts +1 -1
  73. package/dist/actions/list-linked-identities.d.ts +27 -1
  74. package/dist/actions/list-linked-identities.d.ts.map +1 -1
  75. package/dist/actions/list-mcp-app-access.d.ts +12 -1
  76. package/dist/actions/list-mcp-app-access.d.ts.map +1 -1
  77. package/dist/actions/list-vault-audit.d.ts +14 -1
  78. package/dist/actions/list-vault-audit.d.ts.map +1 -1
  79. package/dist/actions/list-vault-grants.d.ts +15 -1
  80. package/dist/actions/list-vault-grants.d.ts.map +1 -1
  81. package/dist/actions/list-vault-requests.d.ts +16 -1
  82. package/dist/actions/list-vault-requests.d.ts.map +1 -1
  83. package/dist/actions/list-vault-secret-options.d.ts +7 -1
  84. package/dist/actions/list-vault-secret-options.d.ts.map +1 -1
  85. package/dist/actions/list-vault-secrets.d.ts +11 -1
  86. package/dist/actions/list-vault-secrets.d.ts.map +1 -1
  87. package/dist/actions/list-workspace-apps.d.ts +4 -1
  88. package/dist/actions/list-workspace-apps.d.ts.map +1 -1
  89. package/dist/actions/list-workspace-resource-grants.d.ts +14 -1
  90. package/dist/actions/list-workspace-resource-grants.d.ts.map +1 -1
  91. package/dist/actions/list-workspace-resource-options.d.ts +3 -1
  92. package/dist/actions/list-workspace-resource-options.d.ts.map +1 -1
  93. package/dist/actions/list-workspace-resources-for-app.d.ts +13 -1
  94. package/dist/actions/list-workspace-resources-for-app.d.ts.map +1 -1
  95. package/dist/actions/list-workspace-resources.d.ts +16 -1
  96. package/dist/actions/list-workspace-resources.d.ts.map +1 -1
  97. package/dist/actions/list_apps.d.ts +12 -1
  98. package/dist/actions/list_apps.d.ts.map +1 -1
  99. package/dist/actions/navigate.d.ts +4 -1
  100. package/dist/actions/navigate.d.ts.map +1 -1
  101. package/dist/actions/open_app.d.ts +18 -1
  102. package/dist/actions/open_app.d.ts.map +1 -1
  103. package/dist/actions/preview-dream-proposal.d.ts +41 -1
  104. package/dist/actions/preview-dream-proposal.d.ts.map +1 -1
  105. package/dist/actions/preview-workspace-resource-change.d.ts +6 -1
  106. package/dist/actions/preview-workspace-resource-change.d.ts.map +1 -1
  107. package/dist/actions/provider-api-catalog.d.ts +21 -1
  108. package/dist/actions/provider-api-catalog.d.ts.map +1 -1
  109. package/dist/actions/provider-api-docs.d.ts +5 -1
  110. package/dist/actions/provider-api-docs.d.ts.map +1 -1
  111. package/dist/actions/provider-api-register.d.ts +83 -1
  112. package/dist/actions/provider-api-register.d.ts.map +1 -1
  113. package/dist/actions/provider-api-request.d.ts +20 -1
  114. package/dist/actions/provider-api-request.d.ts.map +1 -1
  115. package/dist/actions/reject-dispatch-change.d.ts +21 -1
  116. package/dist/actions/reject-dispatch-change.d.ts.map +1 -1
  117. package/dist/actions/reject-dream-proposal.d.ts +25 -1
  118. package/dist/actions/reject-dream-proposal.d.ts.map +1 -1
  119. package/dist/actions/remove-pending-workspace-app.d.ts +5 -1
  120. package/dist/actions/remove-pending-workspace-app.d.ts.map +1 -1
  121. package/dist/actions/request-vault-secret.d.ts +18 -1
  122. package/dist/actions/request-vault-secret.d.ts.map +1 -1
  123. package/dist/actions/restore-starter-workspace-resources.d.ts +7 -1
  124. package/dist/actions/restore-starter-workspace-resources.d.ts.map +1 -1
  125. package/dist/actions/revoke-vault-grant.d.ts +14 -1
  126. package/dist/actions/revoke-vault-grant.d.ts.map +1 -1
  127. package/dist/actions/revoke-workspace-resource-grant.d.ts +13 -1
  128. package/dist/actions/revoke-workspace-resource-grant.d.ts.map +1 -1
  129. package/dist/actions/scaffold-workspace-app.d.ts +8 -1
  130. package/dist/actions/scaffold-workspace-app.d.ts.map +1 -1
  131. package/dist/actions/scaffold-workspace-app.js +17 -4
  132. package/dist/actions/scaffold-workspace-app.js.map +1 -1
  133. package/dist/actions/search-agent-threads.d.ts +30 -1
  134. package/dist/actions/search-agent-threads.d.ts.map +1 -1
  135. package/dist/actions/send-code-agent-remote-command.d.ts +32 -1
  136. package/dist/actions/send-code-agent-remote-command.d.ts.map +1 -1
  137. package/dist/actions/send-platform-message.d.ts +12 -1
  138. package/dist/actions/send-platform-message.d.ts.map +1 -1
  139. package/dist/actions/set-app-creation-settings.d.ts +3 -1
  140. package/dist/actions/set-app-creation-settings.d.ts.map +1 -1
  141. package/dist/actions/set-dispatch-approval-policy.d.ts +21 -1
  142. package/dist/actions/set-dispatch-approval-policy.d.ts.map +1 -1
  143. package/dist/actions/set-dream-settings.d.ts +15 -1
  144. package/dist/actions/set-dream-settings.d.ts.map +1 -1
  145. package/dist/actions/set-mcp-app-access.d.ts +15 -1
  146. package/dist/actions/set-mcp-app-access.d.ts.map +1 -1
  147. package/dist/actions/set-vault-access-settings.d.ts +3 -1
  148. package/dist/actions/set-vault-access-settings.d.ts.map +1 -1
  149. package/dist/actions/start-workspace-app-creation.d.ts +52 -1
  150. package/dist/actions/start-workspace-app-creation.d.ts.map +1 -1
  151. package/dist/actions/sync-vault-to-app.d.ts +30 -1
  152. package/dist/actions/sync-vault-to-app.d.ts.map +1 -1
  153. package/dist/actions/unarchive-workspace-app.d.ts +5 -1
  154. package/dist/actions/unarchive-workspace-app.d.ts.map +1 -1
  155. package/dist/actions/update-vault-secret.d.ts +20 -1
  156. package/dist/actions/update-vault-secret.d.ts.map +1 -1
  157. package/dist/actions/update-workspace-app-metadata.d.ts +5 -1
  158. package/dist/actions/update-workspace-app-metadata.d.ts.map +1 -1
  159. package/dist/actions/update-workspace-resource.d.ts +37 -1
  160. package/dist/actions/update-workspace-resource.d.ts.map +1 -1
  161. package/dist/actions/upsert-destination.d.ts +37 -1
  162. package/dist/actions/upsert-destination.d.ts.map +1 -1
  163. package/dist/actions/view-screen.d.ts +1 -1
  164. package/dist/components/ui/alert.d.ts +3 -3
  165. package/dist/components/ui/alert.d.ts.map +1 -1
  166. package/dist/components/ui/badge.d.ts +3 -3
  167. package/dist/components/ui/badge.d.ts.map +1 -1
  168. package/dist/components/ui/button.d.ts +4 -4
  169. package/dist/components/ui/button.d.ts.map +1 -1
  170. package/dist/components/ui/chart.d.ts +3 -3
  171. package/dist/components/ui/chart.d.ts.map +1 -1
  172. package/dist/components/ui/label.d.ts +1 -1
  173. package/dist/components/ui/label.d.ts.map +1 -1
  174. package/dist/components/ui/navigation-menu.d.ts +1 -1
  175. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  176. package/dist/components/ui/sheet.d.ts +3 -3
  177. package/dist/components/ui/sheet.d.ts.map +1 -1
  178. package/dist/components/ui/sidebar.d.ts +5 -5
  179. package/dist/components/ui/sidebar.d.ts.map +1 -1
  180. package/dist/components/ui/toast.d.ts +3 -3
  181. package/dist/components/ui/toast.d.ts.map +1 -1
  182. package/dist/components/ui/toggle-group.d.ts +8 -8
  183. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  184. package/dist/components/ui/toggle.d.ts +8 -8
  185. package/dist/components/ui/toggle.d.ts.map +1 -1
  186. package/dist/components/workspace-resource-impact-preview.d.ts +1 -1
  187. package/dist/components/workspace-resource-impact-preview.d.ts.map +1 -1
  188. package/dist/db/schema.d.ts +123 -123
  189. package/dist/routes/pages/$appId.d.ts +1 -1
  190. package/dist/routes/pages/$appId.d.ts.map +1 -1
  191. package/dist/routes/pages/_index.d.ts +1 -1
  192. package/dist/routes/pages/_index.d.ts.map +1 -1
  193. package/dist/routes/pages/approval.js.map +1 -1
  194. package/dist/routes/pages/approvals.js.map +1 -1
  195. package/dist/routes/pages/audit.js.map +1 -1
  196. package/dist/routes/pages/destinations.js.map +1 -1
  197. package/dist/routes/pages/identities.js.map +1 -1
  198. package/dist/routes/pages/overview.js.map +1 -1
  199. package/dist/server/lib/app-creation-store.d.ts +1 -1
  200. package/dist/server/lib/app-creation-store.d.ts.map +1 -1
  201. package/dist/server/lib/app-creation-store.js +3 -1
  202. package/dist/server/lib/app-creation-store.js.map +1 -1
  203. package/dist/server/lib/dispatch-store.d.ts +76 -76
  204. package/dist/server/lib/dispatch-store.d.ts.map +1 -1
  205. package/dist/server/lib/dreams-store.d.ts +52 -52
  206. package/dist/server/lib/dreams-store.d.ts.map +1 -1
  207. package/dist/server/lib/dreams-store.js +1 -1
  208. package/dist/server/lib/dreams-store.js.map +1 -1
  209. package/dist/server/lib/provider-api.d.ts +2 -2
  210. package/dist/server/lib/thread-debug-store.d.ts +13 -5
  211. package/dist/server/lib/thread-debug-store.d.ts.map +1 -1
  212. package/dist/server/lib/thread-debug-store.js.map +1 -1
  213. package/dist/server/lib/vault-store.d.ts +61 -50
  214. package/dist/server/lib/vault-store.d.ts.map +1 -1
  215. package/dist/server/lib/workspace-resources-store.d.ts +42 -42
  216. package/package.json +1 -1
  217. package/src/actions/scaffold-workspace-app.spec.ts +33 -0
  218. package/src/actions/scaffold-workspace-app.ts +20 -5
  219. package/src/routes/pages/approval.tsx +1 -1
  220. package/src/routes/pages/approvals.tsx +1 -1
  221. package/src/routes/pages/audit.tsx +1 -1
  222. package/src/routes/pages/destinations.tsx +1 -1
  223. package/src/routes/pages/identities.tsx +2 -2
  224. package/src/routes/pages/overview.tsx +1 -1
  225. package/src/server/lib/app-creation-store.spec.ts +13 -0
  226. package/src/server/lib/app-creation-store.ts +8 -3
  227. package/src/server/lib/dreams-store.ts +11 -1
  228. package/src/server/lib/thread-debug-store.ts +1 -1
@@ -98,10 +98,10 @@ export declare function listWorkspaceResources(filter?: {
98
98
  }): Promise<{
99
99
  id: string;
100
100
  ownerEmail: string;
101
- orgId: string;
101
+ orgId: string | null;
102
102
  kind: string;
103
103
  name: string;
104
- description: string;
104
+ description: string | null;
105
105
  path: string;
106
106
  content: string;
107
107
  scope: string;
@@ -138,10 +138,10 @@ export declare function getWorkspaceResourceEffectiveContext(input: {
138
138
  export declare function getWorkspaceResource(resourceId: string, ctx?: WorkspaceResourceCtx): Promise<{
139
139
  id: string;
140
140
  ownerEmail: string;
141
- orgId: string;
141
+ orgId: string | null;
142
142
  kind: string;
143
143
  name: string;
144
- description: string;
144
+ description: string | null;
145
145
  path: string;
146
146
  content: string;
147
147
  scope: string;
@@ -152,10 +152,10 @@ export declare function getWorkspaceResource(resourceId: string, ctx?: Workspace
152
152
  export declare function applyWorkspaceResourceCreate(input: WorkspaceResourceInput, actor?: string, ctx?: WorkspaceResourceCtx): Promise<{
153
153
  id: string;
154
154
  ownerEmail: string;
155
- orgId: string;
155
+ orgId: string | null;
156
156
  kind: string;
157
157
  name: string;
158
- description: string;
158
+ description: string | null;
159
159
  path: string;
160
160
  content: string;
161
161
  scope: string;
@@ -166,10 +166,10 @@ export declare function applyWorkspaceResourceCreate(input: WorkspaceResourceInp
166
166
  export declare function createWorkspaceResource(input: WorkspaceResourceInput): Promise<{
167
167
  id: string;
168
168
  ownerEmail: string;
169
- orgId: string;
169
+ orgId: string | null;
170
170
  kind: string;
171
171
  name: string;
172
- description: string;
172
+ description: string | null;
173
173
  path: string;
174
174
  content: string;
175
175
  scope: string;
@@ -179,28 +179,28 @@ export declare function createWorkspaceResource(input: WorkspaceResourceInput):
179
179
  } | {
180
180
  id: string;
181
181
  ownerEmail: string;
182
- orgId: string;
182
+ orgId: string | null;
183
183
  changeType: string;
184
184
  targetType: string;
185
- targetId: string;
185
+ targetId: string | null;
186
186
  status: string;
187
187
  summary: string;
188
188
  payload: string;
189
- beforeValue: string;
190
- afterValue: string;
189
+ beforeValue: string | null;
190
+ afterValue: string | null;
191
191
  requestedBy: string;
192
- reviewedBy: string;
193
- reviewedAt: number;
192
+ reviewedBy: string | null;
193
+ reviewedAt: number | null;
194
194
  createdAt: number;
195
195
  updatedAt: number;
196
196
  }>;
197
197
  export declare function applyWorkspaceResourceUpdate(resourceId: string, input: Partial<Pick<WorkspaceResourceInput, "name" | "description" | "content" | "scope">>, actor?: string, ctx?: WorkspaceResourceCtx): Promise<{
198
198
  id: string;
199
199
  ownerEmail: string;
200
- orgId: string;
200
+ orgId: string | null;
201
201
  kind: string;
202
202
  name: string;
203
- description: string;
203
+ description: string | null;
204
204
  path: string;
205
205
  content: string;
206
206
  scope: string;
@@ -211,10 +211,10 @@ export declare function applyWorkspaceResourceUpdate(resourceId: string, input:
211
211
  export declare function updateWorkspaceResource(resourceId: string, input: Partial<Pick<WorkspaceResourceInput, "name" | "description" | "content" | "scope">>): Promise<{
212
212
  id: string;
213
213
  ownerEmail: string;
214
- orgId: string;
214
+ orgId: string | null;
215
215
  kind: string;
216
216
  name: string;
217
- description: string;
217
+ description: string | null;
218
218
  path: string;
219
219
  content: string;
220
220
  scope: string;
@@ -224,28 +224,28 @@ export declare function updateWorkspaceResource(resourceId: string, input: Parti
224
224
  } | {
225
225
  id: string;
226
226
  ownerEmail: string;
227
- orgId: string;
227
+ orgId: string | null;
228
228
  changeType: string;
229
229
  targetType: string;
230
- targetId: string;
230
+ targetId: string | null;
231
231
  status: string;
232
232
  summary: string;
233
233
  payload: string;
234
- beforeValue: string;
235
- afterValue: string;
234
+ beforeValue: string | null;
235
+ afterValue: string | null;
236
236
  requestedBy: string;
237
- reviewedBy: string;
238
- reviewedAt: number;
237
+ reviewedBy: string | null;
238
+ reviewedAt: number | null;
239
239
  createdAt: number;
240
240
  updatedAt: number;
241
241
  }>;
242
242
  export declare function applyWorkspaceResourceDelete(resourceId: string, actor?: string, ctx?: WorkspaceResourceCtx): Promise<{
243
243
  id: string;
244
244
  ownerEmail: string;
245
- orgId: string;
245
+ orgId: string | null;
246
246
  kind: string;
247
247
  name: string;
248
- description: string;
248
+ description: string | null;
249
249
  path: string;
250
250
  content: string;
251
251
  scope: string;
@@ -256,10 +256,10 @@ export declare function applyWorkspaceResourceDelete(resourceId: string, actor?:
256
256
  export declare function deleteWorkspaceResource(resourceId: string): Promise<{
257
257
  id: string;
258
258
  ownerEmail: string;
259
- orgId: string;
259
+ orgId: string | null;
260
260
  kind: string;
261
261
  name: string;
262
- description: string;
262
+ description: string | null;
263
263
  path: string;
264
264
  content: string;
265
265
  scope: string;
@@ -269,18 +269,18 @@ export declare function deleteWorkspaceResource(resourceId: string): Promise<{
269
269
  } | {
270
270
  id: string;
271
271
  ownerEmail: string;
272
- orgId: string;
272
+ orgId: string | null;
273
273
  changeType: string;
274
274
  targetType: string;
275
- targetId: string;
275
+ targetId: string | null;
276
276
  status: string;
277
277
  summary: string;
278
278
  payload: string;
279
- beforeValue: string;
280
- afterValue: string;
279
+ beforeValue: string | null;
280
+ afterValue: string | null;
281
281
  requestedBy: string;
282
- reviewedBy: string;
283
- reviewedAt: number;
282
+ reviewedBy: string | null;
283
+ reviewedAt: number | null;
284
284
  createdAt: number;
285
285
  updatedAt: number;
286
286
  }>;
@@ -290,33 +290,33 @@ export declare function listResourceGrants(filter?: {
290
290
  }): Promise<{
291
291
  id: string;
292
292
  ownerEmail: string;
293
- orgId: string;
293
+ orgId: string | null;
294
294
  resourceId: string;
295
295
  appId: string;
296
296
  status: string;
297
- syncedAt: number;
297
+ syncedAt: number | null;
298
298
  createdAt: number;
299
299
  updatedAt: number;
300
300
  }[]>;
301
301
  export declare function getResourceGrant(grantId: string, ctx?: WorkspaceResourceCtx): Promise<{
302
302
  id: string;
303
303
  ownerEmail: string;
304
- orgId: string;
304
+ orgId: string | null;
305
305
  resourceId: string;
306
306
  appId: string;
307
307
  status: string;
308
- syncedAt: number;
308
+ syncedAt: number | null;
309
309
  createdAt: number;
310
310
  updatedAt: number;
311
311
  }>;
312
312
  export declare function createResourceGrant(resourceId: string, appId: string): Promise<{
313
313
  id: string;
314
314
  ownerEmail: string;
315
- orgId: string;
315
+ orgId: string | null;
316
316
  resourceId: string;
317
317
  appId: string;
318
318
  status: string;
319
- syncedAt: number;
319
+ syncedAt: number | null;
320
320
  createdAt: number;
321
321
  updatedAt: number;
322
322
  }>;
@@ -338,11 +338,11 @@ export declare function grantWorkspaceResourcesToApp(input: {
338
338
  export declare function revokeResourceGrant(grantId: string, ctx?: WorkspaceResourceCtx): Promise<{
339
339
  id: string;
340
340
  ownerEmail: string;
341
- orgId: string;
341
+ orgId: string | null;
342
342
  resourceId: string;
343
343
  appId: string;
344
344
  status: string;
345
- syncedAt: number;
345
+ syncedAt: number | null;
346
346
  createdAt: number;
347
347
  updatedAt: number;
348
348
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/dispatch",
3
- "version": "0.10.1",
3
+ "version": "0.10.3",
4
4
  "type": "module",
5
5
  "description": "Dispatch — workspace control plane for agent-native apps. Vault, integrations, destinations, scheduled jobs, and cross-app delegation, shipped as a single drop-in package.",
6
6
  "license": "MIT",
@@ -0,0 +1,33 @@
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
+
3
+ const mocks = vi.hoisted(() => ({
4
+ scaffoldWorkspaceAppFromTemplate: vi.fn(),
5
+ }));
6
+
7
+ vi.mock("../server/lib/app-creation-store.js", () => ({
8
+ scaffoldWorkspaceAppFromTemplate: mocks.scaffoldWorkspaceAppFromTemplate,
9
+ }));
10
+
11
+ import action from "./scaffold-workspace-app.js";
12
+
13
+ describe("scaffold-workspace-app action", () => {
14
+ beforeEach(() => {
15
+ vi.clearAllMocks();
16
+ });
17
+
18
+ it("surfaces scaffold failures as user-facing action errors", async () => {
19
+ mocks.scaffoldWorkspaceAppFromTemplate.mockRejectedValueOnce(
20
+ new Error(
21
+ "Scaffolding from Dispatch is only available in local development.",
22
+ ),
23
+ );
24
+
25
+ await expect(
26
+ action.run({ template: "brain", appId: null }),
27
+ ).rejects.toMatchObject({
28
+ message:
29
+ "Scaffolding from Dispatch is only available in local development.",
30
+ statusCode: 400,
31
+ });
32
+ });
33
+ });
@@ -3,6 +3,16 @@ import { getWorkspaceAppIdValidationError } from "@agent-native/core/shared";
3
3
  import { z } from "zod";
4
4
  import { scaffoldWorkspaceAppFromTemplate } from "../server/lib/app-creation-store.js";
5
5
 
6
+ function userFacingActionError(err: unknown): Error & { statusCode: number } {
7
+ const message =
8
+ err instanceof Error && err.message ? err.message : String(err);
9
+ const error = new Error(
10
+ message || "Could not scaffold workspace app.",
11
+ ) as Error & { statusCode: number };
12
+ error.statusCode = 400;
13
+ return error;
14
+ }
15
+
6
16
  export default defineAction({
7
17
  description:
8
18
  "Scaffold a first-party template (mail, calendar, slides, etc.) into apps/<id>/ in the current workspace. Local-dev only — runs `agent-native add-app` as a subprocess. The workspace gateway picks the new app up automatically and serves it at /<id>. For natural-language app creation, call start-workspace-app-creation instead.",
@@ -26,9 +36,14 @@ export default defineAction({
26
36
  "Optional override for the apps/<id>/ directory name; defaults to the template name",
27
37
  ),
28
38
  }),
29
- run: async (input) =>
30
- scaffoldWorkspaceAppFromTemplate({
31
- template: input.template,
32
- appId: input.appId ?? null,
33
- }),
39
+ run: async (input) => {
40
+ try {
41
+ return await scaffoldWorkspaceAppFromTemplate({
42
+ template: input.template,
43
+ appId: input.appId ?? null,
44
+ });
45
+ } catch (err) {
46
+ throw userFacingActionError(err);
47
+ }
48
+ },
34
49
  });
@@ -79,7 +79,7 @@ export default function ApprovalPreviewRoute() {
79
79
 
80
80
  const inEmbed = isInAgentEmbed();
81
81
 
82
- const approval = approvals?.find((item) => item.id === id) ?? null;
82
+ const approval = approvals?.find((item: any) => item.id === id) ?? null;
83
83
 
84
84
  if (!id) {
85
85
  return (
@@ -105,7 +105,7 @@ export default function ApprovalsRoute() {
105
105
  Pending and recent requests
106
106
  </h2>
107
107
  <div className="mt-4 space-y-3">
108
- {(approvals || []).map((approval) => (
108
+ {(approvals || []).map((approval: any) => (
109
109
  <div
110
110
  key={approval.id}
111
111
  className="rounded-xl border bg-muted/30 px-4 py-3"
@@ -15,7 +15,7 @@ export default function AuditRoute() {
15
15
  >
16
16
  <section className="rounded-2xl border bg-card p-5">
17
17
  <div className="space-y-3">
18
- {(data || []).map((event) => (
18
+ {(data || []).map((event: any) => (
19
19
  <div
20
20
  key={event.id}
21
21
  className="rounded-xl border bg-muted/30 px-4 py-3"
@@ -104,7 +104,7 @@ export default function DestinationsRoute() {
104
104
  Saved destinations
105
105
  </h2>
106
106
  <div className="mt-4 space-y-3">
107
- {(data || []).map((destination) => (
107
+ {(data || []).map((destination: any) => (
108
108
  <div
109
109
  key={destination.id}
110
110
  className="rounded-xl border bg-muted/30 p-4"
@@ -39,7 +39,7 @@ export default function IdentitiesRoute() {
39
39
  </div>
40
40
  </div>
41
41
  <div className="mt-4 space-y-3">
42
- {(data?.links || []).map((link) => (
42
+ {(data?.links || []).map((link: any) => (
43
43
  <div
44
44
  key={link.id}
45
45
  className="rounded-xl border bg-muted/30 px-4 py-3"
@@ -64,7 +64,7 @@ export default function IdentitiesRoute() {
64
64
  <section className="rounded-2xl border bg-card p-5">
65
65
  <h2 className="text-lg font-semibold text-foreground">Link tokens</h2>
66
66
  <div className="mt-4 space-y-3">
67
- {(data?.tokens || []).map((token) => (
67
+ {(data?.tokens || []).map((token: any) => (
68
68
  <div key={token.id} className="rounded-xl border px-4 py-3">
69
69
  <div className="text-sm font-medium text-foreground">
70
70
  /link {token.token}
@@ -734,7 +734,7 @@ export default function OverviewRoute() {
734
734
  </p>
735
735
  </div>
736
736
  <div className="mt-4 space-y-2">
737
- {(data?.recentApprovals || []).map((approval) => (
737
+ {(data?.recentApprovals || []).map((approval: any) => (
738
738
  <div
739
739
  key={approval.id}
740
740
  className="rounded-xl border px-4 py-3"
@@ -362,4 +362,17 @@ describe("listWorkspaceApps", () => {
362
362
  expect.arrayContaining(["brain", "assets"]),
363
363
  );
364
364
  });
365
+
366
+ it("hides local scaffold templates in hosted runtimes", async () => {
367
+ stubNoPendingContext();
368
+ vi.stubEnv("NETLIFY", "1");
369
+ stubManifest([{ id: "dispatch", name: "Dispatch", path: "/dispatch" }]);
370
+
371
+ const templates = await runWithRequestContext(
372
+ { userEmail: "dev@example.test" },
373
+ () => listAvailableWorkspaceTemplates(),
374
+ );
375
+
376
+ expect(templates).toEqual([]);
377
+ });
365
378
  });
@@ -487,8 +487,8 @@ function parseWorkspaceAppsManifest(parsed: any): WorkspaceAppSummary[] | null {
487
487
  : null;
488
488
  if (!rawApps) return null;
489
489
 
490
- const apps = rawApps
491
- .map((entry): WorkspaceAppSummary | null => {
490
+ const apps: WorkspaceAppSummary[] = rawApps
491
+ .map((entry: any): WorkspaceAppSummary | null => {
492
492
  if (!entry || typeof entry !== "object") return null;
493
493
  const id = typeof entry.id === "string" ? entry.id.trim() : "";
494
494
  const pathValue = typeof entry.path === "string" ? entry.path.trim() : "";
@@ -516,7 +516,10 @@ function parseWorkspaceAppsManifest(parsed: any): WorkspaceAppSummary[] | null {
516
516
  status: "ready",
517
517
  } satisfies WorkspaceAppSummary;
518
518
  })
519
- .filter((app): app is WorkspaceAppSummary => !!app)
519
+ .filter(
520
+ (app: WorkspaceAppSummary | null): app is WorkspaceAppSummary =>
521
+ app !== null,
522
+ )
520
523
  .sort(sortWorkspaceApps);
521
524
 
522
525
  return apps.length ? apps : null;
@@ -1361,6 +1364,8 @@ const ADDABLE_TEMPLATES: AvailableWorkspaceTemplate[] = [
1361
1364
  export async function listAvailableWorkspaceTemplates(): Promise<
1362
1365
  AvailableWorkspaceTemplate[]
1363
1366
  > {
1367
+ if (!isLocalAppCreationRuntime()) return [];
1368
+
1364
1369
  const installed = new Set(
1365
1370
  (await listWorkspaceApps({ includeArchived: true })).map((app) => app.id),
1366
1371
  );
@@ -1272,7 +1272,17 @@ async function inspectDreamSource(
1272
1272
  candidateCount: candidates.length,
1273
1273
  errors: inspected
1274
1274
  .map((entry) => entry.error)
1275
- .filter((entry): entry is Record<string, unknown> => Boolean(entry)),
1275
+ .filter(
1276
+ (
1277
+ entry,
1278
+ ): entry is {
1279
+ threadId: string;
1280
+ sourceId: string;
1281
+ durationMs: number;
1282
+ timedOut: boolean;
1283
+ message: string;
1284
+ } => entry !== null,
1285
+ ) as Array<Record<string, unknown>>,
1276
1286
  candidates,
1277
1287
  };
1278
1288
  }
@@ -30,7 +30,7 @@ export interface ThreadDebugSource {
30
30
  canInspectAll: boolean;
31
31
  }
32
32
 
33
- interface DebugAccess {
33
+ export interface DebugAccess {
34
34
  viewerEmail: string;
35
35
  orgId: string | null;
36
36
  role: string | null;