@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
package/README.md CHANGED
@@ -98,7 +98,7 @@ Connect any data source, prompt for any chart. Build reusable dashboards, not th
98
98
 
99
99
  **Clips**
100
100
 
101
- <a href="https://agent-native.com/templates/clips"><img src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F7366585df5a545e697e254bb0138182d?format=webp&width=800" alt="Clips template" width="100%" /></a>
101
+ <a href="https://agent-native.com/templates/clips"><img src="https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F678be5a501a14ab8a508e5f7bc92c468?format=webp&width=800" alt="Clips template" width="100%" /></a>
102
102
 
103
103
  **Agent-Native Loom**
104
104
 
@@ -164,6 +164,43 @@ Want a single app, no monorepo? Use `--standalone`:
164
164
  npx @agent-native/core create my-app --standalone --template mail
165
165
  ```
166
166
 
167
+ Need a coding agent workspace? `agent-native` or `agent-native code` opens an open-source Claude Code/Codex-like Code workspace with no prompt required. From there, type a task, run slash goals interactively, or call them directly from your shell:
168
+
169
+ ```bash
170
+ npx @agent-native/core@latest
171
+ npx @agent-native/core@latest "fix the failing auth tests"
172
+ npx @agent-native/core@latest code
173
+ npx @agent-native/core@latest code "fix the failing auth tests"
174
+ npx @agent-native/core@latest code exec "fix the failing auth tests"
175
+ npx @agent-native/core@latest code -p "fix the failing auth tests"
176
+ npx @agent-native/core@latest code --plan "explain the auth test failures"
177
+ npx @agent-native/core@latest code --auto "fix the failing auth tests"
178
+ npx @agent-native/core@latest code /migrate ./my-next-app --out ../migrated-app
179
+ npx @agent-native/core@latest code /migrate ./my-next-app --emit ../migration-dossier
180
+ npx @agent-native/core@latest code list
181
+ npx @agent-native/core@latest code attach --last
182
+ npx @agent-native/core@latest code logs --last
183
+ npx @agent-native/core@latest code approve --last
184
+ npx @agent-native/core@latest code resume --last
185
+ npx @agent-native/core@latest code --continue "check the auth edge cases next"
186
+ npx @agent-native/core@latest code resume --last "check the auth edge cases next"
187
+ ```
188
+
189
+ Slash goals can run from the interactive shell or directly from the command line, and `agent-native code goals` shows the goals registered in your checkout. A bare prompt starts a local coding-agent session, streams work, records transcript/status/tool events, and accepts follow-up prompts; `/migrate` is one specialized capability inside that general Code workspace. Project-specific slash commands live in `.agents/commands/*.md`, so teams can add prompts such as `/release-check` or `/migrate-commerce` without changing the framework. Bare `agent-native` launches the Code workspace in builds with the top-level entrypoint, while a bare prompt such as `agent-native "fix tests"` starts an Agent-Native Code task directly.
190
+
191
+ The Code workspace is adding the familiar Codex/Claude-style session loop: pick a previous session, list runs, attach to live output, print logs, resume with context, and continue the same run from Desktop or CLI. The primary modes are intentionally simple:
192
+
193
+ - **Plan mode** (`--plan`) inspects, explains, and proposes without writing files.
194
+ - **Auto mode** (`--auto`, default) edits files, runs checks, and only pauses for genuinely destructive file, git, publish, or data operations.
195
+
196
+ `agent-native migrate` still works as a direct shortcut; `code /migrate` is the Agent-Native Code entrypoint for the migration goal. By default it creates an Agent-Native Code session and portable migration dossier, not a scaffolded app/template. `resume --last` reopens the latest run handoff; adding a quoted prompt records it as a follow-up transcript event for that run so the next active coding agent can pick it up. If a high-risk command is paused for approval, `code approve --last` runs that one pending command and then points you back to resume the session. Use `--app-surface` only when you want the legacy hidden migration detail app for assessment, approval, tasks, artifacts, and verification.
197
+ Use `--emit` when you want only the portable dossier for Codex, Claude Code, Cursor, or another coding agent.
198
+ Agent-Native Code also includes lightweight goals such as `/audit`:
199
+
200
+ ```bash
201
+ npx @agent-native/core@latest code /audit --url https://example.com
202
+ ```
203
+
167
204
  ## Workspaces (Monorepo)
168
205
 
169
206
  A workspace is the default shape of an agent-native project. Every app sits under `apps/`, and `packages/shared/` is available for the small amount of code, instructions, skills, or branding that should truly apply to every app.
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=apply-dream-proposal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-dream-proposal.d.ts","sourceRoot":"","sources":["../../src/actions/apply-dream-proposal.ts"],"names":[],"mappings":";AAIA,wBAOG"}
@@ -0,0 +1,11 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { applyDreamProposal } from "../server/lib/dreams-store.js";
4
+ export default defineAction({
5
+ description: "Apply one pending Dispatch dream proposal. Personal memory applies directly; shared LEARNINGS.md and workspace resource proposals queue an approval request when approval policy is enabled.",
6
+ schema: z.object({
7
+ id: z.string().min(1).describe("Dream proposal id."),
8
+ }),
9
+ run: async ({ id }) => applyDreamProposal(id),
10
+ });
11
+ //# sourceMappingURL=apply-dream-proposal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-dream-proposal.js","sourceRoot":"","sources":["../../src/actions/apply-dream-proposal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8LAA8L;IAChM,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACrD,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;CAC9C,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { applyDreamProposal } from \"../server/lib/dreams-store.js\";\n\nexport default defineAction({\n description:\n \"Apply one pending Dispatch dream proposal. Personal memory applies directly; shared LEARNINGS.md and workspace resource proposals queue an approval request when approval policy is enabled.\",\n schema: z.object({\n id: z.string().min(1).describe(\"Dream proposal id.\"),\n }),\n run: async ({ id }) => applyDreamProposal(id),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=create-dream-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dream-report.d.ts","sourceRoot":"","sources":["../../src/actions/create-dream-report.ts"],"names":[],"mappings":";AAIA,wBAuEG"}
@@ -0,0 +1,67 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { createDreamReport } from "../server/lib/dreams-store.js";
4
+ export default defineAction({
5
+ description: "Create a Dispatch dream report from existing thread-debug records and produce pending, evidence-backed memory proposals without calling an LLM.",
6
+ schema: z.object({
7
+ sourceId: z
8
+ .string()
9
+ .default("current")
10
+ .describe("Thread debug source id from list-agent-thread-sources. Use 'all' to scan every connected source."),
11
+ sourceIds: z
12
+ .array(z.string().min(1))
13
+ .optional()
14
+ .describe("Optional explicit source ids to scan together. When provided, sourceId is treated as aggregate."),
15
+ allSources: z.coerce
16
+ .boolean()
17
+ .default(false)
18
+ .describe("Scan every connected thread-debug source with partial results."),
19
+ query: z
20
+ .string()
21
+ .optional()
22
+ .describe("Optional search term to focus dream candidate discovery."),
23
+ ownerEmail: z
24
+ .string()
25
+ .optional()
26
+ .describe("Optional owner email filter. Admins may pass '*' or omit to use their admin-visible scope."),
27
+ limit: z.coerce.number().int().min(1).max(50).default(20),
28
+ sourceTimeoutMs: z.coerce
29
+ .number()
30
+ .int()
31
+ .min(1000)
32
+ .max(60000)
33
+ .default(15000)
34
+ .describe("Per-source timeout in milliseconds for partial scans."),
35
+ sourceConcurrency: z.coerce
36
+ .number()
37
+ .int()
38
+ .min(1)
39
+ .max(8)
40
+ .default(2)
41
+ .describe("How many thread-debug sources to scan at once."),
42
+ sourceStartStaggerMs: z.coerce
43
+ .number()
44
+ .int()
45
+ .min(0)
46
+ .max(5000)
47
+ .default(250)
48
+ .describe("Delay between source starts within a scan batch."),
49
+ threadConcurrency: z.coerce
50
+ .number()
51
+ .int()
52
+ .min(1)
53
+ .max(10)
54
+ .default(3)
55
+ .describe("How many threads to inspect at once within each source."),
56
+ threadTimeoutMs: z.coerce
57
+ .number()
58
+ .int()
59
+ .min(1000)
60
+ .max(30000)
61
+ .default(8000)
62
+ .describe("Per-thread debug timeout in milliseconds."),
63
+ title: z.string().optional().describe("Optional title for the dream pass."),
64
+ }),
65
+ run: async (input) => createDreamReport(input),
66
+ });
67
+ //# sourceMappingURL=create-dream-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dream-report.js","sourceRoot":"","sources":["../../src/actions/create-dream-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,iJAAiJ;IACnJ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,OAAO,CAAC,SAAS,CAAC;aAClB,QAAQ,CACP,kGAAkG,CACnG;QACH,SAAS,EAAE,CAAC;aACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB,QAAQ,EAAE;aACV,QAAQ,CACP,iGAAiG,CAClG;QACH,UAAU,EAAE,CAAC,CAAC,MAAM;aACjB,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CACP,gEAAgE,CACjE;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,4FAA4F,CAC7F;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,eAAe,EAAE,CAAC,CAAC,MAAM;aACtB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,KAAK,CAAC;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,uDAAuD,CAAC;QACpE,iBAAiB,EAAE,CAAC,CAAC,MAAM;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,gDAAgD,CAAC;QAC7D,oBAAoB,EAAE,CAAC,CAAC,MAAM;aAC3B,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,IAAI,CAAC;aACT,OAAO,CAAC,GAAG,CAAC;aACZ,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,iBAAiB,EAAE,CAAC,CAAC,MAAM;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,yDAAyD,CAAC;QACtE,eAAe,EAAE,CAAC,CAAC,MAAM;aACtB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,KAAK,CAAC;aACV,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,2CAA2C,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC5E,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;CAC/C,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createDreamReport } from \"../server/lib/dreams-store.js\";\n\nexport default defineAction({\n description:\n \"Create a Dispatch dream report from existing thread-debug records and produce pending, evidence-backed memory proposals without calling an LLM.\",\n schema: z.object({\n sourceId: z\n .string()\n .default(\"current\")\n .describe(\n \"Thread debug source id from list-agent-thread-sources. Use 'all' to scan every connected source.\",\n ),\n sourceIds: z\n .array(z.string().min(1))\n .optional()\n .describe(\n \"Optional explicit source ids to scan together. When provided, sourceId is treated as aggregate.\",\n ),\n allSources: z.coerce\n .boolean()\n .default(false)\n .describe(\n \"Scan every connected thread-debug source with partial results.\",\n ),\n query: z\n .string()\n .optional()\n .describe(\"Optional search term to focus dream candidate discovery.\"),\n ownerEmail: z\n .string()\n .optional()\n .describe(\n \"Optional owner email filter. Admins may pass '*' or omit to use their admin-visible scope.\",\n ),\n limit: z.coerce.number().int().min(1).max(50).default(20),\n sourceTimeoutMs: z.coerce\n .number()\n .int()\n .min(1000)\n .max(60000)\n .default(15000)\n .describe(\"Per-source timeout in milliseconds for partial scans.\"),\n sourceConcurrency: z.coerce\n .number()\n .int()\n .min(1)\n .max(8)\n .default(2)\n .describe(\"How many thread-debug sources to scan at once.\"),\n sourceStartStaggerMs: z.coerce\n .number()\n .int()\n .min(0)\n .max(5000)\n .default(250)\n .describe(\"Delay between source starts within a scan batch.\"),\n threadConcurrency: z.coerce\n .number()\n .int()\n .min(1)\n .max(10)\n .default(3)\n .describe(\"How many threads to inspect at once within each source.\"),\n threadTimeoutMs: z.coerce\n .number()\n .int()\n .min(1000)\n .max(30000)\n .default(8000)\n .describe(\"Per-thread debug timeout in milliseconds.\"),\n title: z.string().optional().describe(\"Optional title for the dream pass.\"),\n }),\n run: async (input) => createDreamReport(input),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=create-pylon-ticket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-pylon-ticket.d.ts","sourceRoot":"","sources":["../../src/actions/create-pylon-ticket.ts"],"names":[],"mappings":";AAOA,wBAqGG"}
@@ -0,0 +1,94 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { recordAudit } from "../server/lib/dispatch-store.js";
4
+ const PYLON_API_BASE = process.env.PYLON_API_BASE_URL || "https://api.usepylon.com";
5
+ export default defineAction({
6
+ description: "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.",
7
+ schema: z.object({
8
+ title: z.string().min(1).describe("Short ticket title"),
9
+ bodyHtml: z
10
+ .string()
11
+ .min(1)
12
+ .describe("HTML body — Pylon renders this in the ticket"),
13
+ requesterEmail: z
14
+ .string()
15
+ .email()
16
+ .optional()
17
+ .describe("Email of the person the ticket is on behalf of"),
18
+ requesterName: z.string().optional(),
19
+ accountId: z
20
+ .string()
21
+ .optional()
22
+ .describe("Pylon account ID — provide either this OR requesterEmail to identify the subject"),
23
+ priority: z.enum(["urgent", "high", "medium", "low"]).optional(),
24
+ tags: z.array(z.string()).optional(),
25
+ assigneeId: z.string().optional(),
26
+ teamId: z.string().optional(),
27
+ }),
28
+ run: async (input) => {
29
+ const apiKey = process.env.PYLON_API_KEY;
30
+ if (!apiKey) {
31
+ throw new Error("PYLON_API_KEY is not set. Add it to the Dispatch Vault.");
32
+ }
33
+ if (!input.accountId && !input.requesterEmail) {
34
+ throw new Error("Pylon requires either accountId or requesterEmail to identify the ticket subject.");
35
+ }
36
+ const payload = {
37
+ title: input.title,
38
+ body_html: input.bodyHtml,
39
+ };
40
+ if (input.accountId)
41
+ payload.account_id = input.accountId;
42
+ if (input.requesterEmail)
43
+ payload.requester_email = input.requesterEmail;
44
+ if (input.requesterName)
45
+ payload.requester_name = input.requesterName;
46
+ if (input.priority)
47
+ payload.priority = input.priority;
48
+ if (input.tags?.length)
49
+ payload.tags = input.tags;
50
+ if (input.assigneeId)
51
+ payload.assignee_id = input.assigneeId;
52
+ if (input.teamId)
53
+ payload.team_id = input.teamId;
54
+ const res = await fetch(`${PYLON_API_BASE}/issues`, {
55
+ method: "POST",
56
+ headers: {
57
+ Authorization: `Bearer ${apiKey}`,
58
+ "Content-Type": "application/json",
59
+ },
60
+ body: JSON.stringify(payload),
61
+ });
62
+ if (!res.ok) {
63
+ const text = await res.text().catch(() => "");
64
+ throw new Error(`Pylon ticket creation failed (HTTP ${res.status})${text ? `: ${text.slice(0, 500)}` : ""}`);
65
+ }
66
+ const data = (await res.json().catch(() => null));
67
+ const issue = data && typeof data === "object" && "issue" in data
68
+ ? (data.issue ?? {})
69
+ : (data ?? {});
70
+ const ticketId = issue && typeof issue.id === "string"
71
+ ? issue.id
72
+ : "";
73
+ await recordAudit({
74
+ action: "pylon.ticket.created",
75
+ targetType: "pylon-ticket",
76
+ targetId: ticketId || null,
77
+ summary: `Created Pylon ticket: ${input.title}`,
78
+ metadata: {
79
+ title: input.title,
80
+ priority: input.priority,
81
+ tags: input.tags,
82
+ accountId: input.accountId,
83
+ requesterEmail: input.requesterEmail,
84
+ ticketId,
85
+ },
86
+ });
87
+ return {
88
+ ok: true,
89
+ ticketId,
90
+ ticket: issue,
91
+ };
92
+ },
93
+ });
94
+ //# sourceMappingURL=create-pylon-ticket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-pylon-ticket.js","sourceRoot":"","sources":["../../src/actions/create-pylon-ticket.ts"],"names":[],"mappings":"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","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { recordAudit } from \"../server/lib/dispatch-store.js\";\n\nconst PYLON_API_BASE =\n process.env.PYLON_API_BASE_URL || \"https://api.usepylon.com\";\n\nexport default defineAction({\n description:\n \"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.\",\n schema: z.object({\n title: z.string().min(1).describe(\"Short ticket title\"),\n bodyHtml: z\n .string()\n .min(1)\n .describe(\"HTML body — Pylon renders this in the ticket\"),\n requesterEmail: z\n .string()\n .email()\n .optional()\n .describe(\"Email of the person the ticket is on behalf of\"),\n requesterName: z.string().optional(),\n accountId: z\n .string()\n .optional()\n .describe(\n \"Pylon account ID — provide either this OR requesterEmail to identify the subject\",\n ),\n priority: z.enum([\"urgent\", \"high\", \"medium\", \"low\"]).optional(),\n tags: z.array(z.string()).optional(),\n assigneeId: z.string().optional(),\n teamId: z.string().optional(),\n }),\n run: async (input) => {\n const apiKey = process.env.PYLON_API_KEY;\n if (!apiKey) {\n throw new Error(\n \"PYLON_API_KEY is not set. Add it to the Dispatch Vault.\",\n );\n }\n if (!input.accountId && !input.requesterEmail) {\n throw new Error(\n \"Pylon requires either accountId or requesterEmail to identify the ticket subject.\",\n );\n }\n\n const payload: Record<string, unknown> = {\n title: input.title,\n body_html: input.bodyHtml,\n };\n if (input.accountId) payload.account_id = input.accountId;\n if (input.requesterEmail) payload.requester_email = input.requesterEmail;\n if (input.requesterName) payload.requester_name = input.requesterName;\n if (input.priority) payload.priority = input.priority;\n if (input.tags?.length) payload.tags = input.tags;\n if (input.assigneeId) payload.assignee_id = input.assigneeId;\n if (input.teamId) payload.team_id = input.teamId;\n\n const res = await fetch(`${PYLON_API_BASE}/issues`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(payload),\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => \"\");\n throw new Error(\n `Pylon ticket creation failed (HTTP ${res.status})${text ? `: ${text.slice(0, 500)}` : \"\"}`,\n );\n }\n\n const data = (await res.json().catch(() => null)) as Record<\n string,\n unknown\n > | null;\n const issue =\n data && typeof data === \"object\" && \"issue\" in data\n ? ((data as { issue?: Record<string, unknown> }).issue ?? {})\n : (data ?? {});\n const ticketId =\n issue && typeof (issue as { id?: unknown }).id === \"string\"\n ? (issue as { id: string }).id\n : \"\";\n\n await recordAudit({\n action: \"pylon.ticket.created\",\n targetType: \"pylon-ticket\",\n targetId: ticketId || null,\n summary: `Created Pylon ticket: ${input.title}`,\n metadata: {\n title: input.title,\n priority: input.priority,\n tags: input.tags,\n accountId: input.accountId,\n requesterEmail: input.requesterEmail,\n ticketId,\n },\n });\n\n return {\n ok: true as const,\n ticketId,\n ticket: issue,\n };\n },\n});\n"]}
@@ -2,7 +2,7 @@ import { defineAction } from "@agent-native/core";
2
2
  import { z } from "zod";
3
3
  import { createGrant } from "../server/lib/vault-store.js";
4
4
  export default defineAction({
5
- description: "Grant an app access to a vault secret. The secret can then be synced to the app. Admin only.",
5
+ description: "Grant an app access to a vault secret in manual vault access mode. Admin only.",
6
6
  schema: z.object({
7
7
  secretId: z.string().describe("ID of the secret to grant"),
8
8
  appId: z
@@ -1 +1 @@
1
- {"version":3,"file":"create-vault-grant.js","sourceRoot":"","sources":["../../src/actions/create-vault-grant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8FAA8F;IAChG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1D,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,gDAAgD,CAAC;KAC9D,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;CAC5D,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createGrant } from \"../server/lib/vault-store.js\";\n\nexport default defineAction({\n description:\n \"Grant an app access to a vault secret. The secret can then be synced to the app. Admin only.\",\n schema: z.object({\n secretId: z.string().describe(\"ID of the secret to grant\"),\n appId: z\n .string()\n .describe(\"App ID to grant access to, e.g. mail, calendar\"),\n }),\n run: async (args) => createGrant(args.secretId, args.appId),\n});\n"]}
1
+ {"version":3,"file":"create-vault-grant.js","sourceRoot":"","sources":["../../src/actions/create-vault-grant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,gFAAgF;IAClF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1D,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CAAC,gDAAgD,CAAC;KAC9D,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC;CAC5D,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createGrant } from \"../server/lib/vault-store.js\";\n\nexport default defineAction({\n description:\n \"Grant an app access to a vault secret in manual vault access mode. Admin only.\",\n schema: z.object({\n secretId: z.string().describe(\"ID of the secret to grant\"),\n appId: z\n .string()\n .describe(\"App ID to grant access to, e.g. mail, calendar\"),\n }),\n run: async (args) => createGrant(args.secretId, args.appId),\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"create-vault-secret.d.ts","sourceRoot":"","sources":["../../src/actions/create-vault-secret.ts"],"names":[],"mappings":";AAIA,wBAgBG"}
1
+ {"version":3,"file":"create-vault-secret.d.ts","sourceRoot":"","sources":["../../src/actions/create-vault-secret.ts"],"names":[],"mappings":";AAIA,wBAiBG"}
@@ -2,13 +2,14 @@ import { defineAction } from "@agent-native/core";
2
2
  import { z } from "zod";
3
3
  import { createSecret } from "../server/lib/vault-store.js";
4
4
  export default defineAction({
5
- description: "Store a new secret in the workspace vault. Admin only. The secret can then be granted to specific apps.",
5
+ description: "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.",
6
6
  schema: z.object({
7
7
  credentialKey: z
8
8
  .string()
9
+ .min(1)
9
10
  .describe("Environment variable name, e.g. GOOGLE_CLIENT_ID"),
10
- value: z.string().describe("The secret value"),
11
- name: z.string().describe("Human-readable label for this secret"),
11
+ value: z.string().min(1).describe("The secret value"),
12
+ name: z.string().min(1).describe("Human-readable label for this secret"),
12
13
  provider: z
13
14
  .string()
14
15
  .optional()
@@ -1 +1 @@
1
- {"version":3,"file":"create-vault-secret.js","sourceRoot":"","sources":["../../src/actions/create-vault-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,yGAAyG;IAC3G,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACjE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACpE,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;CACxC,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createSecret } from \"../server/lib/vault-store.js\";\n\nexport default defineAction({\n description:\n \"Store a new secret in the workspace vault. Admin only. The secret can then be granted to specific apps.\",\n schema: z.object({\n credentialKey: z\n .string()\n .describe(\"Environment variable name, e.g. GOOGLE_CLIENT_ID\"),\n value: z.string().describe(\"The secret value\"),\n name: z.string().describe(\"Human-readable label for this secret\"),\n provider: z\n .string()\n .optional()\n .describe(\"Provider grouping tag, e.g. google, sendgrid, slack\"),\n description: z.string().optional().describe(\"Optional description\"),\n }),\n run: async (args) => createSecret(args),\n});\n"]}
1
+ {"version":3,"file":"create-vault-secret.js","sourceRoot":"","sources":["../../src/actions/create-vault-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8LAA8L;IAChM,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC;aACb,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACxE,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACpE,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;CACxC,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createSecret } from \"../server/lib/vault-store.js\";\n\nexport default defineAction({\n description:\n \"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.\",\n schema: z.object({\n credentialKey: z\n .string()\n .min(1)\n .describe(\"Environment variable name, e.g. GOOGLE_CLIENT_ID\"),\n value: z.string().min(1).describe(\"The secret value\"),\n name: z.string().min(1).describe(\"Human-readable label for this secret\"),\n provider: z\n .string()\n .optional()\n .describe(\"Provider grouping tag, e.g. google, sendgrid, slack\"),\n description: z.string().optional().describe(\"Optional description\"),\n }),\n run: async (args) => createSecret(args),\n});\n"]}
@@ -2,7 +2,7 @@ import { defineAction } from "@agent-native/core";
2
2
  import { z } from "zod";
3
3
  import { createWorkspaceResource } from "../server/lib/workspace-resources-store.js";
4
4
  export default defineAction({
5
- description: '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.',
5
+ description: '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.',
6
6
  schema: z.object({
7
7
  kind: z
8
8
  .enum(["skill", "instruction", "agent", "knowledge"])
@@ -11,13 +11,13 @@ export default defineAction({
11
11
  description: z.string().optional().describe("Short description"),
12
12
  path: z
13
13
  .string()
14
- .describe('Resource path, e.g. "skills/designer.md", "agents/researcher.md", "context/gtm-messaging.md", or "remote-agents/researcher.json"'),
14
+ .describe('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.'),
15
15
  content: z
16
16
  .string()
17
17
  .describe("Full resource content (markdown or remote-agent JSON)"),
18
18
  scope: z
19
19
  .enum(["all", "selected"])
20
- .describe('"all" = push to every app, "selected" = only apps with explicit grants'),
20
+ .describe('"all" = inherited by every app at runtime, "selected" = only apps with explicit grants'),
21
21
  }),
22
22
  run: async (args) => createWorkspaceResource(args),
23
23
  });
@@ -1 +1 @@
1
- {"version":3,"file":"create-workspace-resource.js","sourceRoot":"","sources":["../../src/actions/create-workspace-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,wJAAwJ;IAC1J,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;aACpD,QAAQ,CAAC,wDAAwD,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CACP,kIAAkI,CACnI;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CAAC,uDAAuD,CAAC;QACpE,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACzB,QAAQ,CACP,wEAAwE,CACzE;KACJ,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;CACnD,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createWorkspaceResource } from \"../server/lib/workspace-resources-store.js\";\n\nexport default defineAction({\n description:\n '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.',\n schema: z.object({\n kind: z\n .enum([\"skill\", \"instruction\", \"agent\", \"knowledge\"])\n .describe(\"Resource kind: skill, instruction, agent, or knowledge\"),\n name: z.string().describe(\"Human-readable name\"),\n description: z.string().optional().describe(\"Short description\"),\n path: z\n .string()\n .describe(\n 'Resource path, e.g. \"skills/designer.md\", \"agents/researcher.md\", \"context/gtm-messaging.md\", or \"remote-agents/researcher.json\"',\n ),\n content: z\n .string()\n .describe(\"Full resource content (markdown or remote-agent JSON)\"),\n scope: z\n .enum([\"all\", \"selected\"])\n .describe(\n '\"all\" = push to every app, \"selected\" = only apps with explicit grants',\n ),\n }),\n run: async (args) => createWorkspaceResource(args),\n});\n"]}
1
+ {"version":3,"file":"create-workspace-resource.js","sourceRoot":"","sources":["../../src/actions/create-workspace-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,sRAAsR;IACxR,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;aACpD,QAAQ,CAAC,wDAAwD,CAAC;QACrE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAChE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,CACP,iOAAiO,CAClO;QACH,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,QAAQ,CAAC,uDAAuD,CAAC;QACpE,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;aACzB,QAAQ,CACP,wFAAwF,CACzF;KACJ,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC;CACnD,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { createWorkspaceResource } from \"../server/lib/workspace-resources-store.js\";\n\nexport default defineAction({\n description:\n '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.',\n schema: z.object({\n kind: z\n .enum([\"skill\", \"instruction\", \"agent\", \"knowledge\"])\n .describe(\"Resource kind: skill, instruction, agent, or knowledge\"),\n name: z.string().describe(\"Human-readable name\"),\n description: z.string().optional().describe(\"Short description\"),\n path: z\n .string()\n .describe(\n '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.',\n ),\n content: z\n .string()\n .describe(\"Full resource content (markdown or remote-agent JSON)\"),\n scope: z\n .enum([\"all\", \"selected\"])\n .describe(\n '\"all\" = inherited by every app at runtime, \"selected\" = only apps with explicit grants',\n ),\n }),\n run: async (args) => createWorkspaceResource(args),\n});\n"]}
@@ -2,7 +2,7 @@ import { defineAction } from "@agent-native/core";
2
2
  import { z } from "zod";
3
3
  import { deleteWorkspaceResource } from "../server/lib/workspace-resources-store.js";
4
4
  export default defineAction({
5
- description: "Delete a workspace resource and revoke all its grants. Admin only.",
5
+ description: "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.",
6
6
  schema: z.object({
7
7
  id: z.string().describe("Resource ID to delete"),
8
8
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"delete-workspace-resource.js","sourceRoot":"","sources":["../../src/actions/delete-workspace-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,oEAAoE;IACtE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACjD,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;CACtD,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { deleteWorkspaceResource } from \"../server/lib/workspace-resources-store.js\";\n\nexport default defineAction({\n description:\n \"Delete a workspace resource and revoke all its grants. Admin only.\",\n schema: z.object({\n id: z.string().describe(\"Resource ID to delete\"),\n }),\n run: async (args) => deleteWorkspaceResource(args.id),\n});\n"]}
1
+ {"version":3,"file":"delete-workspace-resource.js","sourceRoot":"","sources":["../../src/actions/delete-workspace-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,gLAAgL;IAClL,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACjD,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;CACtD,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { deleteWorkspaceResource } from \"../server/lib/workspace-resources-store.js\";\n\nexport default defineAction({\n description:\n \"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.\",\n schema: z.object({\n id: z.string().describe(\"Resource ID to delete\"),\n }),\n run: async (args) => deleteWorkspaceResource(args.id),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=ensure-dream-job.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-dream-job.d.ts","sourceRoot":"","sources":["../../src/actions/ensure-dream-job.ts"],"names":[],"mappings":";AAIA,wBAuEG"}
@@ -0,0 +1,73 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { ensureDreamJob } from "../server/lib/dreams-store.js";
4
+ export default defineAction({
5
+ description: "Create or update the personal recurring Dispatch dream job resource at jobs/dispatch-dream.md.",
6
+ schema: z.object({
7
+ schedule: z
8
+ .string()
9
+ .optional()
10
+ .describe('Optional five-field cron schedule. Defaults to weekly: "0 9 * * 1".'),
11
+ sourceId: z
12
+ .string()
13
+ .default("all")
14
+ .describe("Thread debug source id for the recurring dream pass."),
15
+ sourceIds: z
16
+ .array(z.string().min(1))
17
+ .optional()
18
+ .describe("Optional explicit source ids for recurring dream passes."),
19
+ allSources: z.coerce
20
+ .boolean()
21
+ .default(true)
22
+ .describe("Scan every connected source for recurring dream passes."),
23
+ query: z
24
+ .string()
25
+ .optional()
26
+ .describe("Optional search term to focus recurring dream passes."),
27
+ limit: z.coerce.number().int().min(1).max(50).default(8),
28
+ sourceTimeoutMs: z.coerce
29
+ .number()
30
+ .int()
31
+ .min(1000)
32
+ .max(60000)
33
+ .default(30000)
34
+ .describe("Per-source timeout in milliseconds."),
35
+ sourceConcurrency: z.coerce
36
+ .number()
37
+ .int()
38
+ .min(1)
39
+ .max(8)
40
+ .default(2)
41
+ .describe("How many sources to scan at once."),
42
+ sourceStartStaggerMs: z.coerce
43
+ .number()
44
+ .int()
45
+ .min(0)
46
+ .max(5000)
47
+ .default(250)
48
+ .describe("Delay between source starts within each scan batch."),
49
+ threadConcurrency: z.coerce
50
+ .number()
51
+ .int()
52
+ .min(1)
53
+ .max(10)
54
+ .default(3)
55
+ .describe("How many threads to inspect at once within each source."),
56
+ threadTimeoutMs: z.coerce
57
+ .number()
58
+ .int()
59
+ .min(1000)
60
+ .max(30000)
61
+ .default(8000)
62
+ .describe("Per-thread debug timeout in milliseconds."),
63
+ minCandidateCount: z.coerce
64
+ .number()
65
+ .int()
66
+ .min(0)
67
+ .max(50)
68
+ .default(1)
69
+ .describe("Skip recurring report creation below this candidate count."),
70
+ }),
71
+ run: async (input) => ensureDreamJob(input),
72
+ });
73
+ //# sourceMappingURL=ensure-dream-job.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-dream-job.js","sourceRoot":"","sources":["../../src/actions/ensure-dream-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,gGAAgG;IAClG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,qEAAqE,CACtE;QACH,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,sDAAsD,CAAC;QACnE,SAAS,EAAE,CAAC;aACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxB,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM;aACjB,OAAO,EAAE;aACT,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,yDAAyD,CAAC;QACtE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uDAAuD,CAAC;QACpE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,eAAe,EAAE,CAAC,CAAC,MAAM;aACtB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,KAAK,CAAC;aACV,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,qCAAqC,CAAC;QAClD,iBAAiB,EAAE,CAAC,CAAC,MAAM;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,mCAAmC,CAAC;QAChD,oBAAoB,EAAE,CAAC,CAAC,MAAM;aAC3B,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,IAAI,CAAC;aACT,OAAO,CAAC,GAAG,CAAC;aACZ,QAAQ,CAAC,qDAAqD,CAAC;QAClE,iBAAiB,EAAE,CAAC,CAAC,MAAM;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,yDAAyD,CAAC;QACtE,eAAe,EAAE,CAAC,CAAC,MAAM;aACtB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,IAAI,CAAC;aACT,GAAG,CAAC,KAAK,CAAC;aACV,OAAO,CAAC,IAAI,CAAC;aACb,QAAQ,CAAC,2CAA2C,CAAC;QACxD,iBAAiB,EAAE,CAAC,CAAC,MAAM;aACxB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { ensureDreamJob } from \"../server/lib/dreams-store.js\";\n\nexport default defineAction({\n description:\n \"Create or update the personal recurring Dispatch dream job resource at jobs/dispatch-dream.md.\",\n schema: z.object({\n schedule: z\n .string()\n .optional()\n .describe(\n 'Optional five-field cron schedule. Defaults to weekly: \"0 9 * * 1\".',\n ),\n sourceId: z\n .string()\n .default(\"all\")\n .describe(\"Thread debug source id for the recurring dream pass.\"),\n sourceIds: z\n .array(z.string().min(1))\n .optional()\n .describe(\"Optional explicit source ids for recurring dream passes.\"),\n allSources: z.coerce\n .boolean()\n .default(true)\n .describe(\"Scan every connected source for recurring dream passes.\"),\n query: z\n .string()\n .optional()\n .describe(\"Optional search term to focus recurring dream passes.\"),\n limit: z.coerce.number().int().min(1).max(50).default(8),\n sourceTimeoutMs: z.coerce\n .number()\n .int()\n .min(1000)\n .max(60000)\n .default(30000)\n .describe(\"Per-source timeout in milliseconds.\"),\n sourceConcurrency: z.coerce\n .number()\n .int()\n .min(1)\n .max(8)\n .default(2)\n .describe(\"How many sources to scan at once.\"),\n sourceStartStaggerMs: z.coerce\n .number()\n .int()\n .min(0)\n .max(5000)\n .default(250)\n .describe(\"Delay between source starts within each scan batch.\"),\n threadConcurrency: z.coerce\n .number()\n .int()\n .min(1)\n .max(10)\n .default(3)\n .describe(\"How many threads to inspect at once within each source.\"),\n threadTimeoutMs: z.coerce\n .number()\n .int()\n .min(1000)\n .max(30000)\n .default(8000)\n .describe(\"Per-thread debug timeout in milliseconds.\"),\n minCandidateCount: z.coerce\n .number()\n .int()\n .min(0)\n .max(50)\n .default(1)\n .describe(\"Skip recurring report creation below this candidate count.\"),\n }),\n run: async (input) => ensureDreamJob(input),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=get-dream-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dream-settings.d.ts","sourceRoot":"","sources":["../../src/actions/get-dream-settings.ts"],"names":[],"mappings":";AAIA,wBAOG"}
@@ -0,0 +1,11 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getDreamSettings } from "../server/lib/dreams-store.js";
4
+ export default defineAction({
5
+ description: "Read recurring Dispatch dream settings, including schedule, source scope, timeout, and minimum candidate threshold.",
6
+ schema: z.object({}),
7
+ http: { method: "GET" },
8
+ readOnly: true,
9
+ run: async () => getDreamSettings(),
10
+ });
11
+ //# sourceMappingURL=get-dream-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dream-settings.js","sourceRoot":"","sources":["../../src/actions/get-dream-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,qHAAqH;IACvH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,EAAE;CACpC,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { getDreamSettings } from \"../server/lib/dreams-store.js\";\n\nexport default defineAction({\n description:\n \"Read recurring Dispatch dream settings, including schedule, source scope, timeout, and minimum candidate threshold.\",\n schema: z.object({}),\n http: { method: \"GET\" },\n readOnly: true,\n run: async () => getDreamSettings(),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=get-dream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dream.d.ts","sourceRoot":"","sources":["../../src/actions/get-dream.ts"],"names":[],"mappings":";AAIA,wBASG"}
@@ -0,0 +1,13 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getDream } from "../server/lib/dreams-store.js";
4
+ export default defineAction({
5
+ description: "Get one Dispatch dream report and its evidence-backed proposals.",
6
+ schema: z.object({
7
+ id: z.string().min(1).describe("Dream id."),
8
+ }),
9
+ http: { method: "GET" },
10
+ readOnly: true,
11
+ run: async ({ id }) => getDream(id),
12
+ });
13
+ //# sourceMappingURL=get-dream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-dream.js","sourceRoot":"","sources":["../../src/actions/get-dream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,kEAAkE;IACpE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;KAC5C,CAAC;IACF,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;CACpC,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { getDream } from \"../server/lib/dreams-store.js\";\n\nexport default defineAction({\n description:\n \"Get one Dispatch dream report and its evidence-backed proposals.\",\n schema: z.object({\n id: z.string().min(1).describe(\"Dream id.\"),\n }),\n http: { method: \"GET\" },\n readOnly: true,\n run: async ({ id }) => getDream(id),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=get-vault-access-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-vault-access-settings.d.ts","sourceRoot":"","sources":["../../src/actions/get-vault-access-settings.ts"],"names":[],"mappings":";AAIA,wBAMG"}
@@ -0,0 +1,10 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { z } from "zod";
3
+ import { getVaultAccessSettings } from "../server/lib/vault-store.js";
4
+ export default defineAction({
5
+ description: "Get the Dispatch vault access mode. Defaults to all-apps, where every workspace app can use every vault key.",
6
+ schema: z.object({}),
7
+ http: { method: "GET" },
8
+ run: async () => getVaultAccessSettings(),
9
+ });
10
+ //# sourceMappingURL=get-vault-access-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-vault-access-settings.js","sourceRoot":"","sources":["../../src/actions/get-vault-access-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8GAA8G;IAChH,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACpB,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,sBAAsB,EAAE;CAC1C,CAAC,CAAC","sourcesContent":["import { defineAction } from \"@agent-native/core\";\nimport { z } from \"zod\";\nimport { getVaultAccessSettings } from \"../server/lib/vault-store.js\";\n\nexport default defineAction({\n description:\n \"Get the Dispatch vault access mode. Defaults to all-apps, where every workspace app can use every vault key.\",\n schema: z.object({}),\n http: { method: \"GET\" },\n run: async () => getVaultAccessSettings(),\n});\n"]}
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=get-workspace-resource-effective-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-workspace-resource-effective-context.d.ts","sourceRoot":"","sources":["../../src/actions/get-workspace-resource-effective-context.ts"],"names":[],"mappings":";AAIA,wBA6BG"}