@agent-native/core 0.7.10 → 0.7.12

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 (375) hide show
  1. package/dist/action.js +30 -11
  2. package/dist/action.js.map +1 -1
  3. package/dist/agent/engine/ai-sdk-engine.d.ts +14 -2
  4. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  5. package/dist/agent/engine/ai-sdk-engine.js +70 -54
  6. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  7. package/dist/agent/engine/anthropic-engine.d.ts +1 -6
  8. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  9. package/dist/agent/engine/anthropic-engine.js +3 -14
  10. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  11. package/dist/agent/engine/builtin.d.ts.map +1 -1
  12. package/dist/agent/engine/builtin.js +3 -0
  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 +18 -0
  23. package/dist/agent/engine/registry.d.ts.map +1 -1
  24. package/dist/agent/engine/registry.js +54 -4
  25. package/dist/agent/engine/registry.js.map +1 -1
  26. package/dist/agent/engine/translate-ai-sdk.d.ts +35 -10
  27. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  28. package/dist/agent/engine/translate-ai-sdk.js +190 -91
  29. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  30. package/dist/agent/engine/types.d.ts +10 -1
  31. package/dist/agent/engine/types.d.ts.map +1 -1
  32. package/dist/agent/production-agent.d.ts +21 -1
  33. package/dist/agent/production-agent.d.ts.map +1 -1
  34. package/dist/agent/production-agent.js +72 -21
  35. package/dist/agent/production-agent.js.map +1 -1
  36. package/dist/agent/thread-data-builder.js +1 -1
  37. package/dist/agent/thread-data-builder.js.map +1 -1
  38. package/dist/agent/types.d.ts +4 -0
  39. package/dist/agent/types.d.ts.map +1 -1
  40. package/dist/application-state/script-helpers.d.ts +12 -5
  41. package/dist/application-state/script-helpers.d.ts.map +1 -1
  42. package/dist/application-state/script-helpers.js +41 -20
  43. package/dist/application-state/script-helpers.js.map +1 -1
  44. package/dist/catalog.json +15 -0
  45. package/dist/checkpoints/index.d.ts +3 -0
  46. package/dist/checkpoints/index.d.ts.map +1 -0
  47. package/dist/checkpoints/index.js +3 -0
  48. package/dist/checkpoints/index.js.map +1 -0
  49. package/dist/checkpoints/service.d.ts +6 -0
  50. package/dist/checkpoints/service.d.ts.map +1 -0
  51. package/dist/checkpoints/service.js +107 -0
  52. package/dist/checkpoints/service.js.map +1 -0
  53. package/dist/checkpoints/store.d.ts +27 -0
  54. package/dist/checkpoints/store.d.ts.map +1 -0
  55. package/dist/checkpoints/store.js +92 -0
  56. package/dist/checkpoints/store.js.map +1 -0
  57. package/dist/cli/create.d.ts.map +1 -1
  58. package/dist/cli/create.js +191 -2
  59. package/dist/cli/create.js.map +1 -1
  60. package/dist/cli/index.js +63 -3
  61. package/dist/cli/index.js.map +1 -1
  62. package/dist/cli/templates-meta.d.ts +2 -0
  63. package/dist/cli/templates-meta.d.ts.map +1 -1
  64. package/dist/cli/templates-meta.js +35 -0
  65. package/dist/cli/templates-meta.js.map +1 -1
  66. package/dist/cli/workspacify.d.ts.map +1 -1
  67. package/dist/cli/workspacify.js +7 -3
  68. package/dist/cli/workspacify.js.map +1 -1
  69. package/dist/client/AgentPanel.d.ts.map +1 -1
  70. package/dist/client/AgentPanel.js +3 -1
  71. package/dist/client/AgentPanel.js.map +1 -1
  72. package/dist/client/AssistantChat.d.ts +15 -0
  73. package/dist/client/AssistantChat.d.ts.map +1 -1
  74. package/dist/client/AssistantChat.js +162 -67
  75. package/dist/client/AssistantChat.js.map +1 -1
  76. package/dist/client/CommandMenu.d.ts.map +1 -1
  77. package/dist/client/CommandMenu.js +9 -5
  78. package/dist/client/CommandMenu.js.map +1 -1
  79. package/dist/client/ConnectBuilderCard.js +1 -1
  80. package/dist/client/ConnectBuilderCard.js.map +1 -1
  81. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  82. package/dist/client/MultiTabAssistantChat.js +89 -4
  83. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  84. package/dist/client/agent-chat-adapter.d.ts +6 -0
  85. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  86. package/dist/client/agent-chat-adapter.js +4 -0
  87. package/dist/client/agent-chat-adapter.js.map +1 -1
  88. package/dist/client/composer/TiptapComposer.d.ts +12 -1
  89. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  90. package/dist/client/composer/TiptapComposer.js +87 -5
  91. package/dist/client/composer/TiptapComposer.js.map +1 -1
  92. package/dist/client/notifications/NotificationsBell.d.ts +23 -0
  93. package/dist/client/notifications/NotificationsBell.d.ts.map +1 -0
  94. package/dist/client/notifications/NotificationsBell.js +165 -0
  95. package/dist/client/notifications/NotificationsBell.js.map +1 -0
  96. package/dist/client/notifications/index.d.ts +2 -0
  97. package/dist/client/notifications/index.d.ts.map +1 -0
  98. package/dist/client/notifications/index.js +2 -0
  99. package/dist/client/notifications/index.js.map +1 -0
  100. package/dist/client/onboarding/OnboardingPanel.js +6 -3
  101. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  102. package/dist/client/progress/RunsTray.d.ts +18 -0
  103. package/dist/client/progress/RunsTray.d.ts.map +1 -0
  104. package/dist/client/progress/RunsTray.js +70 -0
  105. package/dist/client/progress/RunsTray.js.map +1 -0
  106. package/dist/client/progress/index.d.ts +2 -0
  107. package/dist/client/progress/index.d.ts.map +1 -0
  108. package/dist/client/progress/index.js +2 -0
  109. package/dist/client/progress/index.js.map +1 -0
  110. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  111. package/dist/client/resources/ResourcesPanel.js +19 -4
  112. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  113. package/dist/client/settings/AutomationsSection.d.ts +2 -0
  114. package/dist/client/settings/AutomationsSection.d.ts.map +1 -0
  115. package/dist/client/settings/AutomationsSection.js +214 -0
  116. package/dist/client/settings/AutomationsSection.js.map +1 -0
  117. package/dist/client/settings/ComingSoonSection.d.ts.map +1 -1
  118. package/dist/client/settings/ComingSoonSection.js +2 -1
  119. package/dist/client/settings/ComingSoonSection.js.map +1 -1
  120. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  121. package/dist/client/settings/SecretsSection.js +122 -3
  122. package/dist/client/settings/SecretsSection.js.map +1 -1
  123. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  124. package/dist/client/settings/SettingsPanel.js +252 -14
  125. package/dist/client/settings/SettingsPanel.js.map +1 -1
  126. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  127. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  128. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  129. package/dist/client/use-pausing-interval.d.ts +11 -0
  130. package/dist/client/use-pausing-interval.d.ts.map +1 -0
  131. package/dist/client/use-pausing-interval.js +49 -0
  132. package/dist/client/use-pausing-interval.js.map +1 -0
  133. package/dist/db/client.d.ts +26 -0
  134. package/dist/db/client.d.ts.map +1 -1
  135. package/dist/db/client.js +84 -2
  136. package/dist/db/client.js.map +1 -1
  137. package/dist/db/drizzle-config.d.ts +33 -0
  138. package/dist/db/drizzle-config.d.ts.map +1 -0
  139. package/dist/db/drizzle-config.js +132 -0
  140. package/dist/db/drizzle-config.js.map +1 -0
  141. package/dist/db/migrations.d.ts.map +1 -1
  142. package/dist/db/migrations.js +11 -6
  143. package/dist/db/migrations.js.map +1 -1
  144. package/dist/deploy/build.js +2 -1
  145. package/dist/deploy/build.js.map +1 -1
  146. package/dist/event-bus/bus.d.ts +20 -0
  147. package/dist/event-bus/bus.d.ts.map +1 -0
  148. package/dist/event-bus/bus.js +108 -0
  149. package/dist/event-bus/bus.js.map +1 -0
  150. package/dist/event-bus/index.d.ts +4 -0
  151. package/dist/event-bus/index.d.ts.map +1 -0
  152. package/dist/event-bus/index.js +3 -0
  153. package/dist/event-bus/index.js.map +1 -0
  154. package/dist/event-bus/registry.d.ts +22 -0
  155. package/dist/event-bus/registry.d.ts.map +1 -0
  156. package/dist/event-bus/registry.js +63 -0
  157. package/dist/event-bus/registry.js.map +1 -0
  158. package/dist/event-bus/types.d.ts +27 -0
  159. package/dist/event-bus/types.d.ts.map +1 -0
  160. package/dist/event-bus/types.js +2 -0
  161. package/dist/event-bus/types.js.map +1 -0
  162. package/dist/integrations/config-store.d.ts.map +1 -1
  163. package/dist/integrations/config-store.js +16 -12
  164. package/dist/integrations/config-store.js.map +1 -1
  165. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  166. package/dist/integrations/google-docs-poller.js +5 -1
  167. package/dist/integrations/google-docs-poller.js.map +1 -1
  168. package/dist/jobs/scheduler.d.ts.map +1 -1
  169. package/dist/jobs/scheduler.js +7 -3
  170. package/dist/jobs/scheduler.js.map +1 -1
  171. package/dist/notifications/actions.d.ts +10 -0
  172. package/dist/notifications/actions.d.ts.map +1 -0
  173. package/dist/notifications/actions.js +114 -0
  174. package/dist/notifications/actions.js.map +1 -0
  175. package/dist/notifications/channels.d.ts +15 -0
  176. package/dist/notifications/channels.d.ts.map +1 -0
  177. package/dist/notifications/channels.js +97 -0
  178. package/dist/notifications/channels.js.map +1 -0
  179. package/dist/notifications/index.d.ts +4 -0
  180. package/dist/notifications/index.d.ts.map +1 -0
  181. package/dist/notifications/index.js +3 -0
  182. package/dist/notifications/index.js.map +1 -0
  183. package/dist/notifications/registry.d.ts +9 -0
  184. package/dist/notifications/registry.d.ts.map +1 -0
  185. package/dist/notifications/registry.js +146 -0
  186. package/dist/notifications/registry.js.map +1 -0
  187. package/dist/notifications/routes.d.ts +34 -0
  188. package/dist/notifications/routes.d.ts.map +1 -0
  189. package/dist/notifications/routes.js +69 -0
  190. package/dist/notifications/routes.js.map +1 -0
  191. package/dist/notifications/store.d.ts +25 -0
  192. package/dist/notifications/store.d.ts.map +1 -0
  193. package/dist/notifications/store.js +158 -0
  194. package/dist/notifications/store.js.map +1 -0
  195. package/dist/notifications/types.d.ts +43 -0
  196. package/dist/notifications/types.d.ts.map +1 -0
  197. package/dist/notifications/types.js +2 -0
  198. package/dist/notifications/types.js.map +1 -0
  199. package/dist/onboarding/default-steps.d.ts.map +1 -1
  200. package/dist/onboarding/default-steps.js +63 -20
  201. package/dist/onboarding/default-steps.js.map +1 -1
  202. package/dist/org/handlers.d.ts.map +1 -1
  203. package/dist/org/handlers.js +7 -26
  204. package/dist/org/handlers.js.map +1 -1
  205. package/dist/progress/actions.d.ts +8 -0
  206. package/dist/progress/actions.d.ts.map +1 -0
  207. package/dist/progress/actions.js +158 -0
  208. package/dist/progress/actions.js.map +1 -0
  209. package/dist/progress/index.d.ts +3 -0
  210. package/dist/progress/index.d.ts.map +1 -0
  211. package/dist/progress/index.js +2 -0
  212. package/dist/progress/index.js.map +1 -0
  213. package/dist/progress/registry.d.ts +22 -0
  214. package/dist/progress/registry.d.ts.map +1 -0
  215. package/dist/progress/registry.js +98 -0
  216. package/dist/progress/registry.js.map +1 -0
  217. package/dist/progress/routes.d.ts +21 -0
  218. package/dist/progress/routes.d.ts.map +1 -0
  219. package/dist/progress/routes.js +59 -0
  220. package/dist/progress/routes.js.map +1 -0
  221. package/dist/progress/store.d.ts +7 -0
  222. package/dist/progress/store.d.ts.map +1 -0
  223. package/dist/progress/store.js +195 -0
  224. package/dist/progress/store.js.map +1 -0
  225. package/dist/progress/types.d.ts +49 -0
  226. package/dist/progress/types.d.ts.map +1 -0
  227. package/dist/progress/types.js +7 -0
  228. package/dist/progress/types.js.map +1 -0
  229. package/dist/resources/store.d.ts.map +1 -1
  230. package/dist/resources/store.js +19 -15
  231. package/dist/resources/store.js.map +1 -1
  232. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  233. package/dist/scripts/agent-engines/list-agent-engines.js +19 -5
  234. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  235. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  236. package/dist/scripts/agent-engines/set-agent-engine.js +8 -7
  237. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  238. package/dist/secrets/index.d.ts +3 -2
  239. package/dist/secrets/index.d.ts.map +1 -1
  240. package/dist/secrets/index.js +3 -2
  241. package/dist/secrets/index.js.map +1 -1
  242. package/dist/secrets/routes.d.ts +41 -2
  243. package/dist/secrets/routes.d.ts.map +1 -1
  244. package/dist/secrets/routes.js +167 -1
  245. package/dist/secrets/routes.js.map +1 -1
  246. package/dist/secrets/schema.d.ts +39 -1
  247. package/dist/secrets/schema.d.ts.map +1 -1
  248. package/dist/secrets/schema.js +6 -0
  249. package/dist/secrets/schema.js.map +1 -1
  250. package/dist/secrets/storage.d.ts +26 -0
  251. package/dist/secrets/storage.d.ts.map +1 -1
  252. package/dist/secrets/storage.js +111 -5
  253. package/dist/secrets/storage.js.map +1 -1
  254. package/dist/secrets/substitution.d.ts +39 -0
  255. package/dist/secrets/substitution.d.ts.map +1 -0
  256. package/dist/secrets/substitution.js +93 -0
  257. package/dist/secrets/substitution.js.map +1 -0
  258. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  259. package/dist/server/agent-chat-plugin.js +1684 -1410
  260. package/dist/server/agent-chat-plugin.js.map +1 -1
  261. package/dist/server/agent-teams.d.ts.map +1 -1
  262. package/dist/server/agent-teams.js +17 -6
  263. package/dist/server/agent-teams.js.map +1 -1
  264. package/dist/server/analytics.d.ts +8 -5
  265. package/dist/server/analytics.d.ts.map +1 -1
  266. package/dist/server/analytics.js +17 -8
  267. package/dist/server/analytics.js.map +1 -1
  268. package/dist/server/app-url.d.ts.map +1 -1
  269. package/dist/server/app-url.js +7 -4
  270. package/dist/server/app-url.js.map +1 -1
  271. package/dist/server/auth.d.ts +11 -0
  272. package/dist/server/auth.d.ts.map +1 -1
  273. package/dist/server/auth.js +74 -21
  274. package/dist/server/auth.js.map +1 -1
  275. package/dist/server/better-auth-instance.d.ts.map +1 -1
  276. package/dist/server/better-auth-instance.js +34 -16
  277. package/dist/server/better-auth-instance.js.map +1 -1
  278. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  279. package/dist/server/core-routes-plugin.js +179 -2
  280. package/dist/server/core-routes-plugin.js.map +1 -1
  281. package/dist/server/email-templates.d.ts +43 -0
  282. package/dist/server/email-templates.d.ts.map +1 -0
  283. package/dist/server/email-templates.js +86 -0
  284. package/dist/server/email-templates.js.map +1 -0
  285. package/dist/server/framework-request-handler.d.ts +15 -0
  286. package/dist/server/framework-request-handler.d.ts.map +1 -1
  287. package/dist/server/framework-request-handler.js +64 -1
  288. package/dist/server/framework-request-handler.js.map +1 -1
  289. package/dist/server/onboarding-html.d.ts +11 -0
  290. package/dist/server/onboarding-html.d.ts.map +1 -1
  291. package/dist/server/onboarding-html.js +275 -16
  292. package/dist/server/onboarding-html.js.map +1 -1
  293. package/dist/server/schema-prompt.d.ts.map +1 -1
  294. package/dist/server/schema-prompt.js +5 -0
  295. package/dist/server/schema-prompt.js.map +1 -1
  296. package/dist/shared/index.d.ts +1 -0
  297. package/dist/shared/index.d.ts.map +1 -1
  298. package/dist/shared/index.js +1 -0
  299. package/dist/shared/index.js.map +1 -1
  300. package/dist/shared/truncate.d.ts +8 -0
  301. package/dist/shared/truncate.d.ts.map +1 -0
  302. package/dist/shared/truncate.js +12 -0
  303. package/dist/shared/truncate.js.map +1 -0
  304. package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
  305. package/dist/templates/default/.agents/skills/notifications/SKILL.md +95 -0
  306. package/dist/templates/default/.agents/skills/progress/SKILL.md +97 -0
  307. package/dist/templates/default/AGENTS.md +12 -10
  308. package/dist/templates/default/package.json +10 -10
  309. package/dist/templates/workspace-core/package.json +5 -5
  310. package/dist/templates/workspace-root/package.json +1 -1
  311. package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
  312. package/dist/templates/workspace-root/tsconfig.base.json +1 -2
  313. package/dist/tools/fetch-tool.d.ts +22 -0
  314. package/dist/tools/fetch-tool.d.ts.map +1 -0
  315. package/dist/tools/fetch-tool.js +156 -0
  316. package/dist/tools/fetch-tool.js.map +1 -0
  317. package/dist/tracking/index.d.ts +4 -0
  318. package/dist/tracking/index.d.ts.map +1 -0
  319. package/dist/tracking/index.js +3 -0
  320. package/dist/tracking/index.js.map +1 -0
  321. package/dist/tracking/providers.d.ts +15 -0
  322. package/dist/tracking/providers.d.ts.map +1 -0
  323. package/dist/tracking/providers.js +195 -0
  324. package/dist/tracking/providers.js.map +1 -0
  325. package/dist/tracking/registry.d.ts +10 -0
  326. package/dist/tracking/registry.d.ts.map +1 -0
  327. package/dist/tracking/registry.js +75 -0
  328. package/dist/tracking/registry.js.map +1 -0
  329. package/dist/tracking/types.d.ts +13 -0
  330. package/dist/tracking/types.d.ts.map +1 -0
  331. package/dist/tracking/types.js +2 -0
  332. package/dist/tracking/types.js.map +1 -0
  333. package/dist/triggers/actions.d.ts +10 -0
  334. package/dist/triggers/actions.d.ts.map +1 -0
  335. package/dist/triggers/actions.js +277 -0
  336. package/dist/triggers/actions.js.map +1 -0
  337. package/dist/triggers/condition-evaluator.d.ts +15 -0
  338. package/dist/triggers/condition-evaluator.d.ts.map +1 -0
  339. package/dist/triggers/condition-evaluator.js +107 -0
  340. package/dist/triggers/condition-evaluator.js.map +1 -0
  341. package/dist/triggers/dispatcher.d.ts +32 -0
  342. package/dist/triggers/dispatcher.d.ts.map +1 -0
  343. package/dist/triggers/dispatcher.js +291 -0
  344. package/dist/triggers/dispatcher.js.map +1 -0
  345. package/dist/triggers/index.d.ts +5 -0
  346. package/dist/triggers/index.d.ts.map +1 -0
  347. package/dist/triggers/index.js +4 -0
  348. package/dist/triggers/index.js.map +1 -0
  349. package/dist/triggers/types.d.ts +35 -0
  350. package/dist/triggers/types.d.ts.map +1 -0
  351. package/dist/triggers/types.js +9 -0
  352. package/dist/triggers/types.js.map +1 -0
  353. package/dist/vite/client.d.ts.map +1 -1
  354. package/dist/vite/client.js +66 -16
  355. package/dist/vite/client.js.map +1 -1
  356. package/docs/content/automations.md +239 -0
  357. package/docs/content/multi-tenancy.md +88 -0
  358. package/docs/content/notifications.md +199 -0
  359. package/docs/content/progress.md +176 -0
  360. package/docs/content/tracking.md +168 -0
  361. package/package.json +59 -35
  362. package/src/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
  363. package/src/templates/default/.agents/skills/notifications/SKILL.md +95 -0
  364. package/src/templates/default/.agents/skills/progress/SKILL.md +97 -0
  365. package/src/templates/default/AGENTS.md +12 -10
  366. package/src/templates/default/package.json +10 -10
  367. package/src/templates/workspace-core/package.json +5 -5
  368. package/src/templates/workspace-root/package.json +1 -1
  369. package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
  370. package/src/templates/workspace-root/tsconfig.base.json +1 -2
  371. package/tsconfig.base.json +1 -1
  372. package/dist/client/settings/LLMSection.d.ts +0 -2
  373. package/dist/client/settings/LLMSection.d.ts.map +0 -1
  374. package/dist/client/settings/LLMSection.js +0 -64
  375. package/dist/client/settings/LLMSection.js.map +0 -1
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Built-in tracking providers that auto-register from env vars.
3
+ *
4
+ * No SDK dependencies — uses raw HTTP to keep core lightweight.
5
+ * Set the env var and tracking starts automatically.
6
+ *
7
+ * POSTHOG_API_KEY + POSTHOG_HOST → PostHog
8
+ * MIXPANEL_TOKEN → Mixpanel
9
+ * AMPLITUDE_API_KEY → Amplitude
10
+ *
11
+ * Call `registerBuiltinProviders()` at server startup (done
12
+ * automatically by the core-routes plugin).
13
+ */
14
+ import { registerTrackingProvider } from "./registry.js";
15
+ const POSTHOG_DEFAULT_HOST = "https://us.i.posthog.com";
16
+ const BATCH_INTERVAL_MS = 10_000;
17
+ const MAX_BATCH_SIZE = 50;
18
+ let _queue = [];
19
+ let _timer = null;
20
+ function enqueue(url, body, headers) {
21
+ _queue.push({ url, body, headers });
22
+ if (_queue.length >= MAX_BATCH_SIZE) {
23
+ drainQueue();
24
+ }
25
+ else if (!_timer) {
26
+ _timer = setTimeout(drainQueue, BATCH_INTERVAL_MS);
27
+ }
28
+ }
29
+ function drainQueue() {
30
+ if (_timer) {
31
+ clearTimeout(_timer);
32
+ _timer = null;
33
+ }
34
+ const batch = _queue;
35
+ _queue = [];
36
+ for (const item of batch) {
37
+ fetch(item.url, {
38
+ method: "POST",
39
+ headers: { "Content-Type": "application/json", ...item.headers },
40
+ body: item.body,
41
+ }).catch(() => { });
42
+ }
43
+ }
44
+ // ─── PostHog ───────────────────────────────────────────────────────────────
45
+ function createPostHogProvider(apiKey, host) {
46
+ return {
47
+ name: "posthog",
48
+ track(event) {
49
+ enqueue(`${host}/capture/`, JSON.stringify({
50
+ api_key: apiKey,
51
+ event: event.name,
52
+ distinct_id: event.userId || "anonymous",
53
+ properties: {
54
+ ...event.properties,
55
+ timestamp: event.timestamp,
56
+ },
57
+ }));
58
+ },
59
+ identify(userId, traits) {
60
+ enqueue(`${host}/capture/`, JSON.stringify({
61
+ api_key: apiKey,
62
+ event: "$identify",
63
+ distinct_id: userId,
64
+ properties: { $set: traits },
65
+ }));
66
+ },
67
+ flush: () => {
68
+ drainQueue();
69
+ return Promise.resolve();
70
+ },
71
+ };
72
+ }
73
+ // ─── Mixpanel ──────────────────────────────────────────────────────────────
74
+ function createMixpanelProvider(token) {
75
+ return {
76
+ name: "mixpanel",
77
+ track(event) {
78
+ const data = {
79
+ event: event.name,
80
+ properties: {
81
+ token,
82
+ distinct_id: event.userId || "anonymous",
83
+ time: event.timestamp
84
+ ? new Date(event.timestamp).getTime() / 1000
85
+ : undefined,
86
+ ...event.properties,
87
+ },
88
+ };
89
+ enqueue("https://api.mixpanel.com/track", JSON.stringify([data]));
90
+ },
91
+ identify(userId, traits) {
92
+ const data = {
93
+ $token: token,
94
+ $distinct_id: userId,
95
+ $set: traits,
96
+ };
97
+ enqueue("https://api.mixpanel.com/engage", JSON.stringify([data]));
98
+ },
99
+ flush: () => {
100
+ drainQueue();
101
+ return Promise.resolve();
102
+ },
103
+ };
104
+ }
105
+ // ─── Amplitude ─────────────────────────────────────────────────────────────
106
+ function createAmplitudeProvider(apiKey) {
107
+ return {
108
+ name: "amplitude",
109
+ track(event) {
110
+ const data = {
111
+ api_key: apiKey,
112
+ events: [
113
+ {
114
+ event_type: event.name,
115
+ user_id: event.userId || "anonymous",
116
+ event_properties: event.properties,
117
+ time: event.timestamp
118
+ ? new Date(event.timestamp).getTime()
119
+ : undefined,
120
+ },
121
+ ],
122
+ };
123
+ enqueue("https://api2.amplitude.com/2/httpapi", JSON.stringify(data));
124
+ },
125
+ identify(userId, traits) {
126
+ const data = {
127
+ api_key: apiKey,
128
+ events: [
129
+ {
130
+ event_type: "$identify",
131
+ user_id: userId,
132
+ user_properties: { $set: traits },
133
+ },
134
+ ],
135
+ };
136
+ enqueue("https://api2.amplitude.com/2/httpapi", JSON.stringify(data));
137
+ },
138
+ flush: () => {
139
+ drainQueue();
140
+ return Promise.resolve();
141
+ },
142
+ };
143
+ }
144
+ // ─── Webhook (custom HTTP endpoint) ───────────────────────────────────────
145
+ function createWebhookProvider(url, authHeader) {
146
+ const extra = authHeader ? { Authorization: authHeader } : undefined;
147
+ return {
148
+ name: "webhook",
149
+ track(event) {
150
+ enqueue(url, JSON.stringify({
151
+ event: event.name,
152
+ properties: event.properties,
153
+ userId: event.userId,
154
+ timestamp: event.timestamp,
155
+ }), extra);
156
+ },
157
+ identify(userId, traits) {
158
+ enqueue(url, JSON.stringify({
159
+ event: "$identify",
160
+ userId,
161
+ traits,
162
+ timestamp: new Date().toISOString(),
163
+ }), extra);
164
+ },
165
+ flush: () => {
166
+ drainQueue();
167
+ return Promise.resolve();
168
+ },
169
+ };
170
+ }
171
+ // ─── Auto-registration ────────────────────────────────────────────────────
172
+ let _registered = false;
173
+ export function registerBuiltinProviders() {
174
+ if (_registered)
175
+ return;
176
+ _registered = true;
177
+ const posthogKey = process.env.POSTHOG_API_KEY;
178
+ if (posthogKey) {
179
+ const host = (process.env.POSTHOG_HOST || POSTHOG_DEFAULT_HOST).replace(/\/+$/, "");
180
+ registerTrackingProvider(createPostHogProvider(posthogKey, host));
181
+ }
182
+ const mixpanelToken = process.env.MIXPANEL_TOKEN;
183
+ if (mixpanelToken) {
184
+ registerTrackingProvider(createMixpanelProvider(mixpanelToken));
185
+ }
186
+ const amplitudeKey = process.env.AMPLITUDE_API_KEY;
187
+ if (amplitudeKey) {
188
+ registerTrackingProvider(createAmplitudeProvider(amplitudeKey));
189
+ }
190
+ const webhookUrl = process.env.TRACKING_WEBHOOK_URL;
191
+ if (webhookUrl) {
192
+ registerTrackingProvider(createWebhookProvider(webhookUrl, process.env.TRACKING_WEBHOOK_AUTH));
193
+ }
194
+ }
195
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/tracking/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { TrackingProvider } from "./types.js";
2
+ export declare function registerTrackingProvider(provider: TrackingProvider): void;
3
+ export declare function unregisterTrackingProvider(name: string): boolean;
4
+ export declare function listTrackingProviders(): string[];
5
+ export declare function track(name: string, properties?: Record<string, unknown>, meta?: {
6
+ userId?: string;
7
+ }): void;
8
+ export declare function identify(userId: string, traits?: Record<string, unknown>): void;
9
+ export declare function flushTracking(): Promise<void[]>;
10
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tracking/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AAalE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAUzE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,IAAI,CAuBN;AAED,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAYN;AAED,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAY/C"}
@@ -0,0 +1,75 @@
1
+ const REGISTRY_KEY = Symbol.for("@agent-native/core/tracking.registry");
2
+ function getRegistry() {
3
+ const g = globalThis;
4
+ if (!g[REGISTRY_KEY])
5
+ g[REGISTRY_KEY] = new Map();
6
+ return g[REGISTRY_KEY];
7
+ }
8
+ export function registerTrackingProvider(provider) {
9
+ if (!provider?.name) {
10
+ throw new Error("registerTrackingProvider: provider.name is required");
11
+ }
12
+ if (typeof provider.track !== "function") {
13
+ throw new Error("registerTrackingProvider: provider.track must be a function");
14
+ }
15
+ getRegistry().set(provider.name, provider);
16
+ }
17
+ export function unregisterTrackingProvider(name) {
18
+ return getRegistry().delete(name);
19
+ }
20
+ export function listTrackingProviders() {
21
+ return Array.from(getRegistry().keys());
22
+ }
23
+ export function track(name, properties, meta) {
24
+ const event = {
25
+ name,
26
+ properties,
27
+ timestamp: new Date().toISOString(),
28
+ userId: meta?.userId,
29
+ };
30
+ for (const provider of getRegistry().values()) {
31
+ try {
32
+ const result = provider.track(event);
33
+ if (result && typeof result.catch === "function") {
34
+ result.catch((err) => {
35
+ console.error(`[tracking] Provider "${provider.name}" rejected:`, err);
36
+ });
37
+ }
38
+ }
39
+ catch (err) {
40
+ console.error(`[tracking] Provider "${provider.name}" threw:`, err);
41
+ }
42
+ }
43
+ }
44
+ export function identify(userId, traits) {
45
+ for (const provider of getRegistry().values()) {
46
+ if (!provider.identify)
47
+ continue;
48
+ try {
49
+ const result = provider.identify(userId, traits);
50
+ if (result && typeof result.catch === "function") {
51
+ result.catch(() => { });
52
+ }
53
+ }
54
+ catch {
55
+ // best-effort
56
+ }
57
+ }
58
+ }
59
+ export function flushTracking() {
60
+ const promises = [];
61
+ for (const provider of getRegistry().values()) {
62
+ if (!provider.flush)
63
+ continue;
64
+ try {
65
+ const result = provider.flush();
66
+ if (result)
67
+ promises.push(result);
68
+ }
69
+ catch {
70
+ // best-effort
71
+ }
72
+ }
73
+ return Promise.all(promises);
74
+ }
75
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tracking/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface TrackingEvent {
2
+ name: string;
3
+ properties?: Record<string, unknown>;
4
+ timestamp?: string;
5
+ userId?: string;
6
+ }
7
+ export interface TrackingProvider {
8
+ name: string;
9
+ track(event: TrackingEvent): void | Promise<void>;
10
+ identify?(userId: string, traits?: Record<string, unknown>): void | Promise<void>;
11
+ flush?(): void | Promise<void>;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracking/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,QAAQ,CAAC,CACP,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tracking/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Framework-level agent actions for the automations system.
3
+ *
4
+ * These are registered as native tools (not template actions) so they're
5
+ * available in every template. The agent uses them to create, list, and
6
+ * manage automations from chat.
7
+ */
8
+ import type { ActionEntry } from "../agent/production-agent.js";
9
+ export declare function createAutomationToolEntries(getCurrentUser: () => string): Record<string, ActionEntry>;
10
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/triggers/actions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAahE,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,MAAM,MAAM,GAC3B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA8S7B"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Framework-level agent actions for the automations system.
3
+ *
4
+ * These are registered as native tools (not template actions) so they're
5
+ * available in every template. The agent uses them to create, list, and
6
+ * manage automations from chat.
7
+ */
8
+ import { listEvents } from "../event-bus/index.js";
9
+ import { resourceListAllOwners, resourcePut, resourceDelete, resourceGetByPath, } from "../resources/store.js";
10
+ import { parseTriggerFrontmatter, buildTriggerContent } from "./dispatcher.js";
11
+ import { refreshEventSubscriptions } from "./dispatcher.js";
12
+ export function createAutomationToolEntries(getCurrentUser) {
13
+ 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": {
46
+ tool: {
47
+ description: "List all automations (triggers). Shows name, event, condition, mode, status, and domain.",
48
+ parameters: {
49
+ type: "object",
50
+ properties: {
51
+ domain: {
52
+ type: "string",
53
+ description: "Filter by domain (mail, calendar, clips, etc.). Omit for all.",
54
+ },
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
+ name: {
105
+ type: "string",
106
+ description: "Slug name for the automation (lowercase, hyphens). Example: slack-on-builder-booking",
107
+ },
108
+ trigger_type: {
109
+ type: "string",
110
+ description: '"event" or "schedule".',
111
+ enum: ["event", "schedule"],
112
+ },
113
+ event: {
114
+ type: "string",
115
+ description: "For event triggers: the event name to subscribe to. Call list-automation-events first to see available events.",
116
+ },
117
+ schedule: {
118
+ type: "string",
119
+ description: 'For schedule triggers: cron expression. Example: "0 9 * * 1-5" (9am weekdays).',
120
+ },
121
+ condition: {
122
+ type: "string",
123
+ description: 'Natural-language condition. Example: "attendee email ends with @builder.io". Leave empty for unconditional.',
124
+ },
125
+ mode: {
126
+ type: "string",
127
+ description: '"agentic" (full agent loop, can use tools) or "deterministic" (fixed actions only).',
128
+ enum: ["agentic", "deterministic"],
129
+ },
130
+ domain: {
131
+ type: "string",
132
+ description: "Domain tag for grouping (mail, calendar, clips, etc.).",
133
+ },
134
+ body: {
135
+ 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.",
184
+ },
185
+ enabled: {
186
+ 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.",
196
+ },
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: {
229
+ type: "string",
230
+ description: "Name of the automation to delete.",
231
+ },
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
+ data: {
253
+ type: "string",
254
+ description: 'JSON data to include as the event payload. Example: \'{"email": "test@example.com"}\'.',
255
+ },
256
+ },
257
+ },
258
+ },
259
+ 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
+ }
270
+ }
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
+ },
274
+ },
275
+ };
276
+ }
277
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/triggers/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Haiku-based natural-language condition evaluator.
3
+ *
4
+ * Given an event payload and a natural-language condition string, asks
5
+ * Haiku whether the condition is satisfied. Results are memoized to
6
+ * avoid redundant API calls for identical (condition, payload) pairs.
7
+ */
8
+ /**
9
+ * Evaluate whether a natural-language condition matches an event payload.
10
+ * Returns true if the condition is empty/undefined (unconditional trigger).
11
+ */
12
+ export declare function evaluateCondition(condition: string | undefined, payload: unknown, apiKey: string): Promise<boolean>;
13
+ /** Clear the condition cache (for testing). */
14
+ export declare function __clearConditionCache(): void;
15
+ //# sourceMappingURL=condition-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition-evaluator.d.ts","sourceRoot":"","sources":["../../src/triggers/condition-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAclB;AA+DD,+CAA+C;AAC/C,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}