@agent-native/core 0.7.11 → 0.7.13

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 (327) hide show
  1. package/README.md +1 -1
  2. package/dist/action.js +30 -11
  3. package/dist/action.js.map +1 -1
  4. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  5. package/dist/agent/engine/ai-sdk-engine.js +26 -8
  6. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  7. package/dist/agent/engine/builder-engine.d.ts +19 -0
  8. package/dist/agent/engine/builder-engine.d.ts.map +1 -0
  9. package/dist/agent/engine/builder-engine.js +430 -0
  10. package/dist/agent/engine/builder-engine.js.map +1 -0
  11. package/dist/agent/engine/builtin.d.ts.map +1 -1
  12. package/dist/agent/engine/builtin.js +26 -10
  13. package/dist/agent/engine/builtin.js.map +1 -1
  14. package/dist/agent/engine/index.d.ts +1 -1
  15. package/dist/agent/engine/index.d.ts.map +1 -1
  16. package/dist/agent/engine/index.js +1 -1
  17. package/dist/agent/engine/index.js.map +1 -1
  18. package/dist/agent/engine/provider-env-vars.d.ts +21 -0
  19. package/dist/agent/engine/provider-env-vars.d.ts.map +1 -0
  20. package/dist/agent/engine/provider-env-vars.js +50 -0
  21. package/dist/agent/engine/provider-env-vars.js.map +1 -0
  22. package/dist/agent/engine/registry.d.ts +37 -0
  23. package/dist/agent/engine/registry.d.ts.map +1 -1
  24. package/dist/agent/engine/registry.js +102 -4
  25. package/dist/agent/engine/registry.js.map +1 -1
  26. package/dist/agent/engine/types.d.ts +30 -0
  27. package/dist/agent/engine/types.d.ts.map +1 -1
  28. package/dist/agent/engine/types.js +19 -1
  29. package/dist/agent/engine/types.js.map +1 -1
  30. package/dist/agent/production-agent.d.ts +7 -1
  31. package/dist/agent/production-agent.d.ts.map +1 -1
  32. package/dist/agent/production-agent.js +67 -15
  33. package/dist/agent/production-agent.js.map +1 -1
  34. package/dist/agent/run-manager.d.ts.map +1 -1
  35. package/dist/agent/run-manager.js +11 -1
  36. package/dist/agent/run-manager.js.map +1 -1
  37. package/dist/agent/thread-data-builder.d.ts +4 -0
  38. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  39. package/dist/agent/thread-data-builder.js +1 -0
  40. package/dist/agent/thread-data-builder.js.map +1 -1
  41. package/dist/agent/types.d.ts +8 -0
  42. package/dist/agent/types.d.ts.map +1 -1
  43. package/dist/checkpoints/service.d.ts +1 -0
  44. package/dist/checkpoints/service.d.ts.map +1 -1
  45. package/dist/checkpoints/service.js +26 -2
  46. package/dist/checkpoints/service.js.map +1 -1
  47. package/dist/cli/create.d.ts +30 -0
  48. package/dist/cli/create.d.ts.map +1 -1
  49. package/dist/cli/create.js +127 -10
  50. package/dist/cli/create.js.map +1 -1
  51. package/dist/cli/index.js +19 -2
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/cli/templates-meta.d.ts +2 -0
  54. package/dist/cli/templates-meta.d.ts.map +1 -1
  55. package/dist/cli/templates-meta.js +2 -0
  56. package/dist/cli/templates-meta.js.map +1 -1
  57. package/dist/cli/workspacify.d.ts.map +1 -1
  58. package/dist/cli/workspacify.js +7 -3
  59. package/dist/cli/workspacify.js.map +1 -1
  60. package/dist/client/AgentPanel.js +1 -1
  61. package/dist/client/AgentPanel.js.map +1 -1
  62. package/dist/client/AssistantChat.d.ts.map +1 -1
  63. package/dist/client/AssistantChat.js +93 -37
  64. package/dist/client/AssistantChat.js.map +1 -1
  65. package/dist/client/ConnectBuilderCard.d.ts +1 -7
  66. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  67. package/dist/client/ConnectBuilderCard.js +30 -132
  68. package/dist/client/ConnectBuilderCard.js.map +1 -1
  69. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  70. package/dist/client/MultiTabAssistantChat.js +58 -26
  71. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  72. package/dist/client/analytics.d.ts +5 -8
  73. package/dist/client/analytics.d.ts.map +1 -1
  74. package/dist/client/analytics.js +53 -11
  75. package/dist/client/analytics.js.map +1 -1
  76. package/dist/client/builder-mark.d.ts +9 -0
  77. package/dist/client/builder-mark.d.ts.map +1 -0
  78. package/dist/client/builder-mark.js +10 -0
  79. package/dist/client/builder-mark.js.map +1 -0
  80. package/dist/client/components/ui/popover.d.ts +8 -0
  81. package/dist/client/components/ui/popover.d.ts.map +1 -0
  82. package/dist/client/components/ui/popover.js +11 -0
  83. package/dist/client/components/ui/popover.js.map +1 -0
  84. package/dist/client/composer/ComposerPlusMenu.d.ts +2 -0
  85. package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -0
  86. package/dist/client/composer/ComposerPlusMenu.js +244 -0
  87. package/dist/client/composer/ComposerPlusMenu.js.map +1 -0
  88. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  89. package/dist/client/composer/TiptapComposer.js +25 -7
  90. package/dist/client/composer/TiptapComposer.js.map +1 -1
  91. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  92. package/dist/client/composer/useVoiceDictation.js +4 -2
  93. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  94. package/dist/client/error-format.d.ts +2 -0
  95. package/dist/client/error-format.d.ts.map +1 -0
  96. package/dist/client/error-format.js +31 -0
  97. package/dist/client/error-format.js.map +1 -0
  98. package/dist/client/index.d.ts +3 -1
  99. package/dist/client/index.d.ts.map +1 -1
  100. package/dist/client/index.js +3 -1
  101. package/dist/client/index.js.map +1 -1
  102. package/dist/client/observability/ObservabilityDashboard.d.ts +5 -0
  103. package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -0
  104. package/dist/client/observability/ObservabilityDashboard.js +169 -0
  105. package/dist/client/observability/ObservabilityDashboard.js.map +1 -0
  106. package/dist/client/observability/ThumbsFeedback.d.ts +8 -0
  107. package/dist/client/observability/ThumbsFeedback.d.ts.map +1 -0
  108. package/dist/client/observability/ThumbsFeedback.js +64 -0
  109. package/dist/client/observability/ThumbsFeedback.js.map +1 -0
  110. package/dist/client/observability/index.d.ts +4 -0
  111. package/dist/client/observability/index.d.ts.map +1 -0
  112. package/dist/client/observability/index.js +4 -0
  113. package/dist/client/observability/index.js.map +1 -0
  114. package/dist/client/observability/useObservability.d.ts +128 -0
  115. package/dist/client/observability/useObservability.d.ts.map +1 -0
  116. package/dist/client/observability/useObservability.js +109 -0
  117. package/dist/client/observability/useObservability.js.map +1 -0
  118. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  119. package/dist/client/onboarding/OnboardingPanel.js +34 -92
  120. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  121. package/dist/client/org/RequireActiveOrg.d.ts +33 -0
  122. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -0
  123. package/dist/client/org/RequireActiveOrg.js +63 -0
  124. package/dist/client/org/RequireActiveOrg.js.map +1 -0
  125. package/dist/client/org/hooks.d.ts.map +1 -1
  126. package/dist/client/org/hooks.js +50 -15
  127. package/dist/client/org/hooks.js.map +1 -1
  128. package/dist/client/org/index.d.ts +1 -0
  129. package/dist/client/org/index.d.ts.map +1 -1
  130. package/dist/client/org/index.js +1 -0
  131. package/dist/client/org/index.js.map +1 -1
  132. package/dist/client/resources/ResourcesPanel.js +3 -3
  133. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  134. package/dist/client/settings/AutomationsSection.js +1 -1
  135. package/dist/client/settings/AutomationsSection.js.map +1 -1
  136. package/dist/client/settings/BrowserSection.js +1 -1
  137. package/dist/client/settings/BrowserSection.js.map +1 -1
  138. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  139. package/dist/client/settings/SettingsPanel.js +251 -42
  140. package/dist/client/settings/SettingsPanel.js.map +1 -1
  141. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  142. package/dist/client/settings/VoiceTranscriptionSection.js +10 -4
  143. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  144. package/dist/client/settings/useBuilderStatus.d.ts +26 -0
  145. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  146. package/dist/client/settings/useBuilderStatus.js +128 -4
  147. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  148. package/dist/client/sse-event-processor.d.ts +2 -0
  149. package/dist/client/sse-event-processor.d.ts.map +1 -1
  150. package/dist/client/sse-event-processor.js +6 -2
  151. package/dist/client/sse-event-processor.js.map +1 -1
  152. package/dist/client/transcription/BuilderTranscriptionCta.d.ts +9 -0
  153. package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -0
  154. package/dist/client/transcription/BuilderTranscriptionCta.js +18 -0
  155. package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -0
  156. package/dist/client/transcription/use-live-transcription.d.ts +29 -0
  157. package/dist/client/transcription/use-live-transcription.d.ts.map +1 -0
  158. package/dist/client/transcription/use-live-transcription.js +156 -0
  159. package/dist/client/transcription/use-live-transcription.js.map +1 -0
  160. package/dist/client/use-builder-enabled.d.ts +17 -0
  161. package/dist/client/use-builder-enabled.d.ts.map +1 -0
  162. package/dist/client/use-builder-enabled.js +36 -0
  163. package/dist/client/use-builder-enabled.js.map +1 -0
  164. package/dist/client/use-db-sync.d.ts.map +1 -1
  165. package/dist/client/use-db-sync.js +4 -2
  166. package/dist/client/use-db-sync.js.map +1 -1
  167. package/dist/client/useProductionAgent.d.ts.map +1 -1
  168. package/dist/client/useProductionAgent.js +3 -1
  169. package/dist/client/useProductionAgent.js.map +1 -1
  170. package/dist/db/migrations.d.ts +9 -0
  171. package/dist/db/migrations.d.ts.map +1 -1
  172. package/dist/db/migrations.js +75 -10
  173. package/dist/db/migrations.js.map +1 -1
  174. package/dist/file-upload/builder.d.ts.map +1 -1
  175. package/dist/file-upload/builder.js +11 -4
  176. package/dist/file-upload/builder.js.map +1 -1
  177. package/dist/jobs/tools.d.ts.map +1 -1
  178. package/dist/jobs/tools.js +137 -161
  179. package/dist/jobs/tools.js.map +1 -1
  180. package/dist/notifications/actions.d.ts +2 -2
  181. package/dist/notifications/actions.d.ts.map +1 -1
  182. package/dist/notifications/actions.js +77 -69
  183. package/dist/notifications/actions.js.map +1 -1
  184. package/dist/observability/evals.d.ts +22 -0
  185. package/dist/observability/evals.d.ts.map +1 -0
  186. package/dist/observability/evals.js +371 -0
  187. package/dist/observability/evals.js.map +1 -0
  188. package/dist/observability/experiments.d.ts +24 -0
  189. package/dist/observability/experiments.d.ts.map +1 -0
  190. package/dist/observability/experiments.js +274 -0
  191. package/dist/observability/experiments.js.map +1 -0
  192. package/dist/observability/feedback.d.ts +14 -0
  193. package/dist/observability/feedback.d.ts.map +1 -0
  194. package/dist/observability/feedback.js +256 -0
  195. package/dist/observability/feedback.js.map +1 -0
  196. package/dist/observability/index.d.ts +6 -0
  197. package/dist/observability/index.d.ts.map +1 -0
  198. package/dist/observability/index.js +5 -0
  199. package/dist/observability/index.js.map +1 -0
  200. package/dist/observability/plugin.d.ts +2 -0
  201. package/dist/observability/plugin.d.ts.map +1 -0
  202. package/dist/observability/plugin.js +12 -0
  203. package/dist/observability/plugin.js.map +1 -0
  204. package/dist/observability/routes.d.ts +68 -0
  205. package/dist/observability/routes.d.ts.map +1 -0
  206. package/dist/observability/routes.js +301 -0
  207. package/dist/observability/routes.js.map +1 -0
  208. package/dist/observability/store.d.ts +77 -0
  209. package/dist/observability/store.d.ts.map +1 -0
  210. package/dist/observability/store.js +976 -0
  211. package/dist/observability/store.js.map +1 -0
  212. package/dist/observability/traces.d.ts +37 -0
  213. package/dist/observability/traces.d.ts.map +1 -0
  214. package/dist/observability/traces.js +182 -0
  215. package/dist/observability/traces.js.map +1 -0
  216. package/dist/observability/types.d.ts +159 -0
  217. package/dist/observability/types.d.ts.map +1 -0
  218. package/dist/observability/types.js +16 -0
  219. package/dist/observability/types.js.map +1 -0
  220. package/dist/onboarding/default-steps.d.ts.map +1 -1
  221. package/dist/onboarding/default-steps.js +68 -24
  222. package/dist/onboarding/default-steps.js.map +1 -1
  223. package/dist/onboarding/types.d.ts +10 -1
  224. package/dist/onboarding/types.d.ts.map +1 -1
  225. package/dist/org/context.d.ts +8 -1
  226. package/dist/org/context.d.ts.map +1 -1
  227. package/dist/org/context.js +163 -6
  228. package/dist/org/context.js.map +1 -1
  229. package/dist/org/handlers.d.ts.map +1 -1
  230. package/dist/org/handlers.js +49 -30
  231. package/dist/org/handlers.js.map +1 -1
  232. package/dist/progress/actions.d.ts +3 -0
  233. package/dist/progress/actions.d.ts.map +1 -1
  234. package/dist/progress/actions.js +86 -110
  235. package/dist/progress/actions.js.map +1 -1
  236. package/dist/progress/routes.d.ts +1 -1
  237. package/dist/progress/routes.js +1 -1
  238. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  239. package/dist/scripts/agent-engines/list-agent-engines.js +20 -6
  240. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  241. package/dist/scripts/agent-engines/manage-agent-engine.d.ts +10 -0
  242. package/dist/scripts/agent-engines/manage-agent-engine.d.ts.map +1 -0
  243. package/dist/scripts/agent-engines/manage-agent-engine.js +47 -0
  244. package/dist/scripts/agent-engines/manage-agent-engine.js.map +1 -0
  245. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  246. package/dist/scripts/agent-engines/set-agent-engine.js +10 -9
  247. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  248. package/dist/server/agent-chat-plugin.d.ts +39 -0
  249. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  250. package/dist/server/agent-chat-plugin.js +743 -452
  251. package/dist/server/agent-chat-plugin.js.map +1 -1
  252. package/dist/server/agent-teams.d.ts.map +1 -1
  253. package/dist/server/agent-teams.js +18 -7
  254. package/dist/server/agent-teams.js.map +1 -1
  255. package/dist/server/analytics.d.ts +9 -7
  256. package/dist/server/analytics.d.ts.map +1 -1
  257. package/dist/server/analytics.js +12 -11
  258. package/dist/server/analytics.js.map +1 -1
  259. package/dist/server/app-name.d.ts +5 -2
  260. package/dist/server/app-name.d.ts.map +1 -1
  261. package/dist/server/app-name.js +14 -3
  262. package/dist/server/app-name.js.map +1 -1
  263. package/dist/server/app-url.d.ts.map +1 -1
  264. package/dist/server/app-url.js +17 -5
  265. package/dist/server/app-url.js.map +1 -1
  266. package/dist/server/auth.d.ts +2 -0
  267. package/dist/server/auth.d.ts.map +1 -1
  268. package/dist/server/auth.js +153 -2
  269. package/dist/server/auth.js.map +1 -1
  270. package/dist/server/better-auth-instance.d.ts +2 -0
  271. package/dist/server/better-auth-instance.d.ts.map +1 -1
  272. package/dist/server/better-auth-instance.js +4 -0
  273. package/dist/server/better-auth-instance.js.map +1 -1
  274. package/dist/server/builder-browser.d.ts +59 -1
  275. package/dist/server/builder-browser.d.ts.map +1 -1
  276. package/dist/server/builder-browser.js +127 -11
  277. package/dist/server/builder-browser.js.map +1 -1
  278. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  279. package/dist/server/core-routes-plugin.js +278 -13
  280. package/dist/server/core-routes-plugin.js.map +1 -1
  281. package/dist/server/credential-provider.d.ts +7 -0
  282. package/dist/server/credential-provider.d.ts.map +1 -1
  283. package/dist/server/credential-provider.js +10 -0
  284. package/dist/server/credential-provider.js.map +1 -1
  285. package/dist/server/onboarding-html.d.ts.map +1 -1
  286. package/dist/server/onboarding-html.js +29 -4
  287. package/dist/server/onboarding-html.js.map +1 -1
  288. package/dist/server/poll.d.ts.map +1 -1
  289. package/dist/server/poll.js +46 -5
  290. package/dist/server/poll.js.map +1 -1
  291. package/dist/server/ssr-handler.d.ts.map +1 -1
  292. package/dist/server/ssr-handler.js +2 -1
  293. package/dist/server/ssr-handler.js.map +1 -1
  294. package/dist/server/transcribe-voice.d.ts.map +1 -1
  295. package/dist/server/transcribe-voice.js +44 -5
  296. package/dist/server/transcribe-voice.js.map +1 -1
  297. package/dist/styles/agent-native.css +11 -2
  298. package/dist/templates/default/.agents/skills/progress/SKILL.md +14 -12
  299. package/dist/templates/default/app/root.tsx +7 -0
  300. package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
  301. package/dist/transcription/builder-transcription.d.ts +27 -0
  302. package/dist/transcription/builder-transcription.d.ts.map +1 -0
  303. package/dist/transcription/builder-transcription.js +41 -0
  304. package/dist/transcription/builder-transcription.js.map +1 -0
  305. package/dist/triggers/actions.d.ts +3 -0
  306. package/dist/triggers/actions.d.ts.map +1 -1
  307. package/dist/triggers/actions.js +189 -213
  308. package/dist/triggers/actions.js.map +1 -1
  309. package/docs/content/agent-mentions.md +1 -1
  310. package/docs/content/automations.md +22 -19
  311. package/docs/content/cloneable-saas.md +2 -2
  312. package/docs/content/deployment.md +21 -61
  313. package/docs/content/getting-started.md +1 -1
  314. package/docs/content/key-concepts.md +1 -1
  315. package/docs/content/{enterprise-workspace.md → multi-app-workspace.md} +3 -3
  316. package/docs/content/multi-tenancy.md +1 -1
  317. package/docs/content/progress.md +11 -11
  318. package/docs/content/template-dispatch.md +3 -3
  319. package/docs/content/workspace-management.md +1 -1
  320. package/package.json +13 -1
  321. package/src/templates/default/.agents/skills/progress/SKILL.md +14 -12
  322. package/src/templates/default/app/root.tsx +7 -0
  323. package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
  324. package/dist/client/settings/LLMSection.d.ts +0 -2
  325. package/dist/client/settings/LLMSection.d.ts.map +0 -1
  326. package/dist/client/settings/LLMSection.js +0 -191
  327. package/dist/client/settings/LLMSection.js.map +0 -1
@@ -4,115 +4,192 @@
4
4
  * These are registered as native tools (not template actions) so they're
5
5
  * available in every template. The agent uses them to create, list, and
6
6
  * manage automations from chat.
7
+ *
8
+ * All six operations are consolidated into a single `manage-automations` tool
9
+ * with an `action` discriminator to keep the tool registry compact.
7
10
  */
8
11
  import { listEvents } from "../event-bus/index.js";
9
12
  import { resourceListAllOwners, resourcePut, resourceDelete, resourceGetByPath, } from "../resources/store.js";
10
13
  import { parseTriggerFrontmatter, buildTriggerContent } from "./dispatcher.js";
11
14
  import { refreshEventSubscriptions } from "./dispatcher.js";
15
+ /* ------------------------------------------------------------------ */
16
+ /* Individual action handlers */
17
+ /* ------------------------------------------------------------------ */
18
+ async function handleListEvents() {
19
+ const events = listEvents();
20
+ if (events.length === 0) {
21
+ return "No events registered yet. Events are registered by integrations (mail, calendar, clips, etc.).";
22
+ }
23
+ const lines = events.map((e) => {
24
+ let schemaStr = "";
25
+ try {
26
+ const s = e.payloadSchema;
27
+ if (s?._zod?.def?.shape) {
28
+ const fields = Object.keys(s._zod.def.shape);
29
+ schemaStr = ` Fields: ${fields.join(", ")}`;
30
+ }
31
+ }
32
+ catch {
33
+ // ignore
34
+ }
35
+ const example = e.example
36
+ ? `\n Example: ${JSON.stringify(e.example)}`
37
+ : "";
38
+ return `- **${e.name}**: ${e.description}${schemaStr}${example}`;
39
+ });
40
+ return lines.join("\n");
41
+ }
42
+ async function handleList(args) {
43
+ const resources = await resourceListAllOwners("jobs/");
44
+ const triggers = resources
45
+ .filter((r) => r.path.endsWith(".md"))
46
+ .map((r) => {
47
+ const { meta, body } = parseTriggerFrontmatter(r.content);
48
+ const name = r.path.replace(/^jobs\//, "").replace(/\.md$/, "");
49
+ return { name, meta, body, owner: r.owner, id: r.id };
50
+ })
51
+ .filter((t) => {
52
+ if (args.domain && t.meta.domain !== args.domain)
53
+ return false;
54
+ if (args.enabled_only === "true" && !t.meta.enabled)
55
+ return false;
56
+ return true;
57
+ });
58
+ if (triggers.length === 0)
59
+ return "No automations found.";
60
+ const lines = triggers.map((t) => {
61
+ const type = t.meta.triggerType === "event"
62
+ ? `on ${t.meta.event || "?"}`
63
+ : `cron: ${t.meta.schedule}`;
64
+ const status = t.meta.enabled ? "enabled" : "disabled";
65
+ const lastStatus = t.meta.lastStatus ? ` (last: ${t.meta.lastStatus})` : "";
66
+ const condition = t.meta.condition
67
+ ? `\n Condition: "${t.meta.condition}"`
68
+ : "";
69
+ const domain = t.meta.domain ? ` [${t.meta.domain}]` : "";
70
+ return `- **${t.name}**${domain}: ${type} → ${t.meta.mode} (${status}${lastStatus})${condition}\n Body: ${t.body.slice(0, 100)}${t.body.length > 100 ? "..." : ""}`;
71
+ });
72
+ return lines.join("\n\n");
73
+ }
74
+ async function handleDefine(args, getCurrentUser) {
75
+ const owner = getCurrentUser();
76
+ const name = (args.name || "").replace(/[^a-z0-9-]/g, "-");
77
+ if (!name)
78
+ return "Error: name is required (lowercase, hyphens).";
79
+ const path = `jobs/${name}.md`;
80
+ // Check if it already exists
81
+ const existing = await resourceGetByPath(owner, path);
82
+ if (existing) {
83
+ return `Error: An automation named "${name}" already exists. Use a different name or delete the existing one first.`;
84
+ }
85
+ const triggerType = args.trigger_type === "schedule" ? "schedule" : "event";
86
+ const meta = {
87
+ schedule: args.schedule || "",
88
+ enabled: true,
89
+ triggerType,
90
+ event: args.event || undefined,
91
+ condition: args.condition || undefined,
92
+ mode: args.mode === "deterministic" ? "deterministic" : "agentic",
93
+ domain: args.domain || undefined,
94
+ createdBy: owner,
95
+ runAs: "creator",
96
+ };
97
+ const content = buildTriggerContent(meta, args.body || "");
98
+ await resourcePut(owner, path, content);
99
+ // Refresh event subscriptions so the new trigger is active immediately
100
+ await refreshEventSubscriptions();
101
+ const summary = triggerType === "event"
102
+ ? `on ${meta.event || "?"}${meta.condition ? ` when "${meta.condition}"` : ""}`
103
+ : `on schedule "${meta.schedule}"`;
104
+ return `Automation "${name}" created. Fires ${summary} in ${meta.mode} mode.`;
105
+ }
106
+ async function handleUpdate(args, getCurrentUser) {
107
+ const owner = getCurrentUser();
108
+ const name = args.name;
109
+ const path = `jobs/${name}.md`;
110
+ const resource = await resourceGetByPath(owner, path);
111
+ if (!resource) {
112
+ return `Automation "${name}" not found (or you don't own it).`;
113
+ }
114
+ const { meta, body } = parseTriggerFrontmatter(resource.content);
115
+ if (args.enabled !== undefined) {
116
+ meta.enabled = args.enabled !== "false";
117
+ }
118
+ if (args.condition !== undefined) {
119
+ meta.condition = args.condition || undefined;
120
+ }
121
+ const newBody = args.body ?? body;
122
+ await resourcePut(resource.owner, resource.path, buildTriggerContent(meta, newBody));
123
+ await refreshEventSubscriptions();
124
+ return `Automation "${name}" updated.`;
125
+ }
126
+ async function handleDelete(args, getCurrentUser) {
127
+ const owner = getCurrentUser();
128
+ const path = `jobs/${args.name}.md`;
129
+ const resource = await resourceGetByPath(owner, path);
130
+ if (!resource)
131
+ return `Automation "${args.name}" not found.`;
132
+ await resourceDelete(resource.id);
133
+ return `Automation "${args.name}" deleted.`;
134
+ }
135
+ async function handleFireTest(args) {
136
+ // Dynamic import to avoid circular dependency at module load time
137
+ const { emit } = await import("../event-bus/index.js");
138
+ let data = {};
139
+ if (args.data) {
140
+ try {
141
+ data = JSON.parse(args.data);
142
+ }
143
+ catch {
144
+ return "Error: invalid JSON in data parameter.";
145
+ }
146
+ }
147
+ emit("test.event.fired", { data });
148
+ return `Test event fired with payload: ${JSON.stringify({ data })}. Any automations subscribed to "test.event.fired" will be evaluated.`;
149
+ }
150
+ /* ------------------------------------------------------------------ */
151
+ /* Consolidated tool entry */
152
+ /* ------------------------------------------------------------------ */
153
+ const VALID_ACTIONS = [
154
+ "list-events",
155
+ "list",
156
+ "define",
157
+ "update",
158
+ "delete",
159
+ "fire-test",
160
+ ];
12
161
  export function createAutomationToolEntries(getCurrentUser) {
13
162
  return {
14
- "list-automation-events": {
15
- tool: {
16
- description: "List all registered event types that automations can subscribe to. Returns event names, descriptions, and payload schemas. Call this BEFORE defining an automation to discover available events.",
17
- parameters: { type: "object", properties: {} },
18
- },
19
- run: async () => {
20
- const events = listEvents();
21
- if (events.length === 0) {
22
- return "No events registered yet. Events are registered by integrations (mail, calendar, clips, etc.).";
23
- }
24
- const lines = events.map((e) => {
25
- let schemaStr = "";
26
- try {
27
- const s = e.payloadSchema;
28
- if (s?._zod?.def?.shape) {
29
- const fields = Object.keys(s._zod.def.shape);
30
- schemaStr = ` Fields: ${fields.join(", ")}`;
31
- }
32
- }
33
- catch {
34
- // ignore
35
- }
36
- const example = e.example
37
- ? `\n Example: ${JSON.stringify(e.example)}`
38
- : "";
39
- return `- **${e.name}**: ${e.description}${schemaStr}${example}`;
40
- });
41
- return lines.join("\n");
42
- },
43
- readOnly: true,
44
- },
45
- "list-automations": {
163
+ "manage-automations": {
46
164
  tool: {
47
- description: "List all automations (triggers). Shows name, event, condition, mode, status, and domain.",
165
+ description: `Manage automations (event-triggered and scheduled tasks). Use the "action" parameter to choose an operation:
166
+
167
+ - **list-events**: List all registered event types that automations can subscribe to. Returns event names, descriptions, and payload schemas. Call this BEFORE defining an automation to discover available events.
168
+ - **list**: List all automations (triggers). Shows name, event, condition, mode, status, and domain. Optional params: domain, enabled_only.
169
+ - **define**: Create a new automation. IMPORTANT: Always confirm with the user before calling — show them a summary of what will be created. Required params: name, trigger_type, body. Optional: event, schedule, condition, mode, domain.
170
+ - **update**: Update an existing automation's settings (enabled, condition, body, etc.). Required param: name. Optional: enabled, condition, body.
171
+ - **delete**: Delete an automation. Always confirm with the user first. Required param: name.
172
+ - **fire-test**: Fire a test event to validate automations. Emits a test.event.fired event. Optional param: data (JSON string).`,
48
173
  parameters: {
49
174
  type: "object",
50
175
  properties: {
51
- domain: {
176
+ action: {
52
177
  type: "string",
53
- description: "Filter by domain (mail, calendar, clips, etc.). Omit for all.",
178
+ description: "The operation to perform: list-events, list, define, update, delete, or fire-test.",
179
+ enum: [...VALID_ACTIONS],
54
180
  },
55
- enabled_only: {
56
- type: "string",
57
- description: '"true" to show only enabled automations.',
58
- },
59
- },
60
- },
61
- },
62
- run: async (args) => {
63
- const resources = await resourceListAllOwners("jobs/");
64
- const triggers = resources
65
- .filter((r) => r.path.endsWith(".md"))
66
- .map((r) => {
67
- const { meta, body } = parseTriggerFrontmatter(r.content);
68
- const name = r.path.replace(/^jobs\//, "").replace(/\.md$/, "");
69
- return { name, meta, body, owner: r.owner, id: r.id };
70
- })
71
- .filter((t) => {
72
- if (args.domain && t.meta.domain !== args.domain)
73
- return false;
74
- if (args.enabled_only === "true" && !t.meta.enabled)
75
- return false;
76
- return true;
77
- });
78
- if (triggers.length === 0)
79
- return "No automations found.";
80
- const lines = triggers.map((t) => {
81
- const type = t.meta.triggerType === "event"
82
- ? `on ${t.meta.event || "?"}`
83
- : `cron: ${t.meta.schedule}`;
84
- const status = t.meta.enabled ? "enabled" : "disabled";
85
- const lastStatus = t.meta.lastStatus
86
- ? ` (last: ${t.meta.lastStatus})`
87
- : "";
88
- const condition = t.meta.condition
89
- ? `\n Condition: "${t.meta.condition}"`
90
- : "";
91
- const domain = t.meta.domain ? ` [${t.meta.domain}]` : "";
92
- return `- **${t.name}**${domain}: ${type} → ${t.meta.mode} (${status}${lastStatus})${condition}\n Body: ${t.body.slice(0, 100)}${t.body.length > 100 ? "..." : ""}`;
93
- });
94
- return lines.join("\n\n");
95
- },
96
- readOnly: true,
97
- },
98
- "define-automation": {
99
- tool: {
100
- description: `Create a new automation. The automation is stored as a markdown resource and fires when the specified event occurs and the condition (if any) matches. IMPORTANT: Always confirm with the user before calling this — show them a summary of what will be created.`,
101
- parameters: {
102
- type: "object",
103
- properties: {
104
181
  name: {
105
182
  type: "string",
106
- description: "Slug name for the automation (lowercase, hyphens). Example: slack-on-builder-booking",
183
+ description: "Slug name for the automation (lowercase, hyphens). Used by define, update, and delete.",
107
184
  },
108
185
  trigger_type: {
109
186
  type: "string",
110
- description: '"event" or "schedule".',
187
+ description: '"event" or "schedule". Required for define.',
111
188
  enum: ["event", "schedule"],
112
189
  },
113
190
  event: {
114
191
  type: "string",
115
- description: "For event triggers: the event name to subscribe to. Call list-automation-events first to see available events.",
192
+ description: "For event triggers: the event name to subscribe to. Call with action=list-events first to see available events.",
116
193
  },
117
194
  schedule: {
118
195
  type: "string",
@@ -120,156 +197,55 @@ export function createAutomationToolEntries(getCurrentUser) {
120
197
  },
121
198
  condition: {
122
199
  type: "string",
123
- description: 'Natural-language condition. Example: "attendee email ends with @builder.io". Leave empty for unconditional.',
200
+ description: 'Natural-language condition. Example: "attendee email ends with @builder.io". Leave empty for unconditional. Used by define and update.',
124
201
  },
125
202
  mode: {
126
203
  type: "string",
127
- description: '"agentic" (full agent loop, can use tools) or "deterministic" (fixed actions only).',
204
+ description: '"agentic" (full agent loop, can use tools) or "deterministic" (fixed actions only). Used by define.',
128
205
  enum: ["agentic", "deterministic"],
129
206
  },
130
207
  domain: {
131
208
  type: "string",
132
- description: "Domain tag for grouping (mail, calendar, clips, etc.).",
209
+ description: "Domain tag for grouping (mail, calendar, clips, etc.). Used by define and list.",
133
210
  },
134
211
  body: {
135
212
  type: "string",
136
- description: "The natural-language instructions for what to do when the automation fires. This becomes the agent's prompt in agentic mode.",
137
- },
138
- },
139
- required: ["name", "trigger_type", "body"],
140
- },
141
- },
142
- run: async (args) => {
143
- const owner = getCurrentUser();
144
- const name = (args.name || "").replace(/[^a-z0-9-]/g, "-");
145
- if (!name)
146
- return "Error: name is required (lowercase, hyphens).";
147
- const path = `jobs/${name}.md`;
148
- // Check if it already exists
149
- const existing = await resourceGetByPath(owner, path);
150
- if (existing) {
151
- return `Error: An automation named "${name}" already exists. Use a different name or delete the existing one first.`;
152
- }
153
- const triggerType = args.trigger_type === "schedule" ? "schedule" : "event";
154
- const meta = {
155
- schedule: args.schedule || "",
156
- enabled: true,
157
- triggerType,
158
- event: args.event || undefined,
159
- condition: args.condition || undefined,
160
- mode: args.mode === "deterministic" ? "deterministic" : "agentic",
161
- domain: args.domain || undefined,
162
- createdBy: owner,
163
- runAs: "creator",
164
- };
165
- const content = buildTriggerContent(meta, args.body || "");
166
- await resourcePut(owner, path, content);
167
- // Refresh event subscriptions so the new trigger is active immediately
168
- await refreshEventSubscriptions();
169
- const summary = triggerType === "event"
170
- ? `on ${meta.event || "?"}${meta.condition ? ` when "${meta.condition}"` : ""}`
171
- : `on schedule "${meta.schedule}"`;
172
- return `Automation "${name}" created. Fires ${summary} in ${meta.mode} mode.`;
173
- },
174
- },
175
- "update-automation": {
176
- tool: {
177
- description: "Update an existing automation's settings (enabled, condition, body, etc.).",
178
- parameters: {
179
- type: "object",
180
- properties: {
181
- name: {
182
- type: "string",
183
- description: "Name of the automation to update.",
213
+ description: "The natural-language instructions for what to do when the automation fires. This becomes the agent's prompt in agentic mode. Used by define and update.",
184
214
  },
185
215
  enabled: {
186
216
  type: "string",
187
- description: '"true" or "false" to enable/disable.',
188
- },
189
- condition: {
190
- type: "string",
191
- description: "New natural-language condition (or empty to clear).",
192
- },
193
- body: {
194
- type: "string",
195
- description: "New automation body/instructions.",
217
+ description: '"true" or "false" to enable/disable. Used by update.',
196
218
  },
197
- },
198
- required: ["name"],
199
- },
200
- },
201
- run: async (args) => {
202
- const owner = getCurrentUser();
203
- const name = args.name;
204
- const path = `jobs/${name}.md`;
205
- const resource = await resourceGetByPath(owner, path);
206
- if (!resource) {
207
- return `Automation "${name}" not found (or you don't own it).`;
208
- }
209
- const { meta, body } = parseTriggerFrontmatter(resource.content);
210
- if (args.enabled !== undefined) {
211
- meta.enabled = args.enabled !== "false";
212
- }
213
- if (args.condition !== undefined) {
214
- meta.condition = args.condition || undefined;
215
- }
216
- const newBody = args.body ?? body;
217
- await resourcePut(resource.owner, resource.path, buildTriggerContent(meta, newBody));
218
- await refreshEventSubscriptions();
219
- return `Automation "${name}" updated.`;
220
- },
221
- },
222
- "delete-automation": {
223
- tool: {
224
- description: "Delete an automation. Always confirm with the user first.",
225
- parameters: {
226
- type: "object",
227
- properties: {
228
- name: {
219
+ enabled_only: {
229
220
  type: "string",
230
- description: "Name of the automation to delete.",
221
+ description: '"true" to show only enabled automations. Used by list.',
231
222
  },
232
- },
233
- required: ["name"],
234
- },
235
- },
236
- run: async (args) => {
237
- const owner = getCurrentUser();
238
- const path = `jobs/${args.name}.md`;
239
- const resource = await resourceGetByPath(owner, path);
240
- if (!resource)
241
- return `Automation "${args.name}" not found.`;
242
- await resourceDelete(resource.id);
243
- return `Automation "${args.name}" deleted.`;
244
- },
245
- },
246
- "fire-test-event": {
247
- tool: {
248
- description: "Fire a test event to validate automations. Emits a test.event.fired event with the provided data.",
249
- parameters: {
250
- type: "object",
251
- properties: {
252
223
  data: {
253
224
  type: "string",
254
- description: 'JSON data to include as the event payload. Example: \'{"email": "test@example.com"}\'.',
225
+ description: 'JSON data to include as the test event payload. Used by fire-test. Example: \'{"email": "test@example.com"}\'.',
255
226
  },
256
227
  },
228
+ required: ["action"],
257
229
  },
258
230
  },
259
231
  run: async (args) => {
260
- // Dynamic import to avoid circular dependency at module load time
261
- const { emit } = await import("../event-bus/index.js");
262
- let data = {};
263
- if (args.data) {
264
- try {
265
- data = JSON.parse(args.data);
266
- }
267
- catch {
268
- return "Error: invalid JSON in data parameter.";
269
- }
232
+ const action = args.action;
233
+ switch (action) {
234
+ case "list-events":
235
+ return handleListEvents();
236
+ case "list":
237
+ return handleList(args);
238
+ case "define":
239
+ return handleDefine(args, getCurrentUser);
240
+ case "update":
241
+ return handleUpdate(args, getCurrentUser);
242
+ case "delete":
243
+ return handleDelete(args, getCurrentUser);
244
+ case "fire-test":
245
+ return handleFireTest(args);
246
+ default:
247
+ return `Error: unknown action "${action}". Valid actions: ${VALID_ACTIONS.join(", ")}.`;
270
248
  }
271
- emit("test.event.fired", { data });
272
- return `Test event fired with payload: ${JSON.stringify({ data })}. Any automations subscribed to "test.event.fired" will be evaluated.`;
273
249
  },
274
250
  },
275
251
  };
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/triggers/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/triggers/actions.ts"],"names":[],"mappings":"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"}
@@ -166,6 +166,6 @@ All reference types follow the same pattern: select from the popover, and the re
166
166
 
167
167
  ## Sub-agent selection {#sub-agent-selection}
168
168
 
169
- The main agent can also use custom agents when spawning sub-agents with `spawn-task`.
169
+ The main agent can also use custom agents when spawning sub-agents with `agent-teams` (action: "spawn").
170
170
 
171
171
  Pass the `agent` parameter to choose a profile from `agents/*.md`. That profile's instructions are added to the delegated run, and its `model` frontmatter can override the default model for that sub-agent.
@@ -85,15 +85,15 @@ Integrations register events at module load time. The bus validates payloads aga
85
85
 
86
86
  ### Built-in events {#built-in-events}
87
87
 
88
- | Event | Source |
89
- | ---------------------- | ------------------------------- |
90
- | `test.event.fired` | Manual / `fire-test-event` tool |
91
- | `agent.turn.completed` | Agent chat |
92
- | `calendar.*` | Calendar integration |
93
- | `clip.*` | Clips integration |
94
- | `mail.*` | Mail integration |
88
+ | Event | Source |
89
+ | ---------------------- | ---------------------------------------------- |
90
+ | `test.event.fired` | Manual / `manage-automations` action=fire-test |
91
+ | `agent.turn.completed` | Agent chat |
92
+ | `calendar.*` | Calendar integration |
93
+ | `clip.*` | Clips integration |
94
+ | `mail.*` | Mail integration |
95
95
 
96
- Call `list-automation-events` from the agent to see all registered events with descriptions and payload schemas for the current template.
96
+ Call `manage-automations` with `action=list-events` from the agent to see all registered events with descriptions and payload schemas for the current template.
97
97
 
98
98
  ### Emitting custom events {#emitting-events}
99
99
 
@@ -183,15 +183,18 @@ Keys are ad-hoc secrets created by users or the agent for automation use (e.g. `
183
183
 
184
184
  ## Agent tools {#agent-tools}
185
185
 
186
- | Tool | Purpose |
187
- | ------------------------ | -------------------------------------------------------------------- |
188
- | `define-automation` | Create a new automation (name, trigger type, event, condition, body) |
189
- | `list-automation-events` | Discover all registered events with descriptions and payload schemas |
190
- | `list-automations` | List all automations with status; filter by domain or enabled |
191
- | `update-automation` | Update an existing automation (enabled, condition, body) |
192
- | `delete-automation` | Delete an automation (always confirms with user first) |
193
- | `fire-test-event` | Emit a `test.event.fired` event to validate automations |
194
- | `web-request` | Outbound HTTP with `${keys.NAME}` substitution |
186
+ All automation operations are accessed through a single `manage-automations` tool with an `action` parameter:
187
+
188
+ | Action | Purpose |
189
+ | ------------- | -------------------------------------------------------------------- |
190
+ | `list-events` | Discover all registered events with descriptions and payload schemas |
191
+ | `list` | List all automations with status; filter by domain or enabled |
192
+ | `define` | Create a new automation (name, trigger type, event, condition, body) |
193
+ | `update` | Update an existing automation (enabled, condition, body) |
194
+ | `delete` | Delete an automation (always confirms with user first) |
195
+ | `fire-test` | Emit a `test.event.fired` event to validate automations |
196
+
197
+ Additional tool: `web-request` — outbound HTTP with `${keys.NAME}` substitution.
195
198
 
196
199
  ## API endpoints {#api}
197
200
 
@@ -220,9 +223,9 @@ Keys are ad-hoc secrets created by users or the agent for automation use (e.g. `
220
223
 
221
224
  **Agent flow:**
222
225
 
223
- 1. Calls `list-automation-events` — finds `calendar.booking.created`.
226
+ 1. Calls `manage-automations` with `action=list-events` — finds `calendar.booking.created`.
224
227
  2. Confirms the plan with the user.
225
- 3. Calls `define-automation`:
228
+ 3. Calls `manage-automations` with `action=define`:
226
229
  - `name`: `slack-on-builder-booking`
227
230
  - `trigger_type`: `event`
228
231
  - `event`: `calendar.booking.created`
@@ -49,7 +49,7 @@ Every cloneable SaaS follows the same lifecycle:
49
49
  pnpm dlx @agent-native/core create my-platform
50
50
  ```
51
51
 
52
- The CLI shows a multi-select picker. Pick one app (standalone) or several (workspace — apps share auth, brand, agent config, and database). Each picked template is scaffolded into `apps/<name>/` with every file you need. See [Getting Started](/docs) for the full flow or [Enterprise Workspace](/docs/enterprise-workspace) for the workspace story.
52
+ The CLI shows a multi-select picker. Pick one app (standalone) or several (workspace — apps share auth, brand, agent config, and database). Each picked template is scaffolded into `apps/<name>/` with every file you need. See [Getting Started](/docs) for the full flow or [Multi-App Workspace](/docs/multi-app-workspace) for the workspace story.
53
53
 
54
54
  ### 2. Use it immediately
55
55
 
@@ -92,7 +92,7 @@ Want to publish a new template — your own cloneable SaaS? See [Creating Templa
92
92
 
93
93
  ## What's next
94
94
 
95
- - [**Enterprise Workspace**](/docs/enterprise-workspace) — bundle many cloneable-SaaS apps into one monorepo that shares auth, brand, and agent instructions
95
+ - [**Multi-App Workspace**](/docs/multi-app-workspace) — bundle many cloneable-SaaS apps into one monorepo that shares auth, brand, and agent instructions
96
96
  - [**Key Concepts**](/docs/key-concepts) — the architecture that makes this work
97
97
  - [**Deployment**](/docs/deployment) — ship your forked app
98
98
  - [**Creating Templates**](/docs/creating-templates) — author and publish a new cloneable SaaS