@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.
- package/dist/action.js +30 -11
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts +14 -2
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +70 -54
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts +1 -6
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +3 -14
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/builtin.d.ts.map +1 -1
- package/dist/agent/engine/builtin.js +3 -0
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/provider-env-vars.d.ts +21 -0
- package/dist/agent/engine/provider-env-vars.d.ts.map +1 -0
- package/dist/agent/engine/provider-env-vars.js +50 -0
- package/dist/agent/engine/provider-env-vars.js.map +1 -0
- package/dist/agent/engine/registry.d.ts +18 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +54 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.d.ts +35 -10
- package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
- package/dist/agent/engine/translate-ai-sdk.js +190 -91
- package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
- package/dist/agent/engine/types.d.ts +10 -1
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/production-agent.d.ts +21 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +72 -21
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.js +1 -1
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +4 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/application-state/script-helpers.d.ts +12 -5
- package/dist/application-state/script-helpers.d.ts.map +1 -1
- package/dist/application-state/script-helpers.js +41 -20
- package/dist/application-state/script-helpers.js.map +1 -1
- package/dist/catalog.json +15 -0
- package/dist/checkpoints/index.d.ts +3 -0
- package/dist/checkpoints/index.d.ts.map +1 -0
- package/dist/checkpoints/index.js +3 -0
- package/dist/checkpoints/index.js.map +1 -0
- package/dist/checkpoints/service.d.ts +6 -0
- package/dist/checkpoints/service.d.ts.map +1 -0
- package/dist/checkpoints/service.js +107 -0
- package/dist/checkpoints/service.js.map +1 -0
- package/dist/checkpoints/store.d.ts +27 -0
- package/dist/checkpoints/store.d.ts.map +1 -0
- package/dist/checkpoints/store.js +92 -0
- package/dist/checkpoints/store.js.map +1 -0
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +191 -2
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +63 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/templates-meta.d.ts +2 -0
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +35 -0
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/cli/workspacify.d.ts.map +1 -1
- package/dist/cli/workspacify.js +7 -3
- package/dist/cli/workspacify.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +3 -1
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +15 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +162 -67
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +9 -5
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/ConnectBuilderCard.js +1 -1
- package/dist/client/ConnectBuilderCard.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +89 -4
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +6 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +4 -0
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +12 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +87 -5
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/notifications/NotificationsBell.d.ts +23 -0
- package/dist/client/notifications/NotificationsBell.d.ts.map +1 -0
- package/dist/client/notifications/NotificationsBell.js +165 -0
- package/dist/client/notifications/NotificationsBell.js.map +1 -0
- package/dist/client/notifications/index.d.ts +2 -0
- package/dist/client/notifications/index.d.ts.map +1 -0
- package/dist/client/notifications/index.js +2 -0
- package/dist/client/notifications/index.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.js +6 -3
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +18 -0
- package/dist/client/progress/RunsTray.d.ts.map +1 -0
- package/dist/client/progress/RunsTray.js +70 -0
- package/dist/client/progress/RunsTray.js.map +1 -0
- package/dist/client/progress/index.d.ts +2 -0
- package/dist/client/progress/index.d.ts.map +1 -0
- package/dist/client/progress/index.js +2 -0
- package/dist/client/progress/index.js.map +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +19 -4
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AutomationsSection.d.ts +2 -0
- package/dist/client/settings/AutomationsSection.d.ts.map +1 -0
- package/dist/client/settings/AutomationsSection.js +214 -0
- package/dist/client/settings/AutomationsSection.js.map +1 -0
- package/dist/client/settings/ComingSoonSection.d.ts.map +1 -1
- package/dist/client/settings/ComingSoonSection.js +2 -1
- package/dist/client/settings/ComingSoonSection.js.map +1 -1
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +122 -3
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +252 -14
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/use-pausing-interval.d.ts +11 -0
- package/dist/client/use-pausing-interval.d.ts.map +1 -0
- package/dist/client/use-pausing-interval.js +49 -0
- package/dist/client/use-pausing-interval.js.map +1 -0
- package/dist/db/client.d.ts +26 -0
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +84 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/drizzle-config.d.ts +33 -0
- package/dist/db/drizzle-config.d.ts.map +1 -0
- package/dist/db/drizzle-config.js +132 -0
- package/dist/db/drizzle-config.js.map +1 -0
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +11 -6
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/build.js +2 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/event-bus/bus.d.ts +20 -0
- package/dist/event-bus/bus.d.ts.map +1 -0
- package/dist/event-bus/bus.js +108 -0
- package/dist/event-bus/bus.js.map +1 -0
- package/dist/event-bus/index.d.ts +4 -0
- package/dist/event-bus/index.d.ts.map +1 -0
- package/dist/event-bus/index.js +3 -0
- package/dist/event-bus/index.js.map +1 -0
- package/dist/event-bus/registry.d.ts +22 -0
- package/dist/event-bus/registry.d.ts.map +1 -0
- package/dist/event-bus/registry.js +63 -0
- package/dist/event-bus/registry.js.map +1 -0
- package/dist/event-bus/types.d.ts +27 -0
- package/dist/event-bus/types.d.ts.map +1 -0
- package/dist/event-bus/types.js +2 -0
- package/dist/event-bus/types.js.map +1 -0
- package/dist/integrations/config-store.d.ts.map +1 -1
- package/dist/integrations/config-store.js +16 -12
- package/dist/integrations/config-store.js.map +1 -1
- package/dist/integrations/google-docs-poller.d.ts.map +1 -1
- package/dist/integrations/google-docs-poller.js +5 -1
- package/dist/integrations/google-docs-poller.js.map +1 -1
- package/dist/jobs/scheduler.d.ts.map +1 -1
- package/dist/jobs/scheduler.js +7 -3
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/notifications/actions.d.ts +10 -0
- package/dist/notifications/actions.d.ts.map +1 -0
- package/dist/notifications/actions.js +114 -0
- package/dist/notifications/actions.js.map +1 -0
- package/dist/notifications/channels.d.ts +15 -0
- package/dist/notifications/channels.d.ts.map +1 -0
- package/dist/notifications/channels.js +97 -0
- package/dist/notifications/channels.js.map +1 -0
- package/dist/notifications/index.d.ts +4 -0
- package/dist/notifications/index.d.ts.map +1 -0
- package/dist/notifications/index.js +3 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/notifications/registry.d.ts +9 -0
- package/dist/notifications/registry.d.ts.map +1 -0
- package/dist/notifications/registry.js +146 -0
- package/dist/notifications/registry.js.map +1 -0
- package/dist/notifications/routes.d.ts +34 -0
- package/dist/notifications/routes.d.ts.map +1 -0
- package/dist/notifications/routes.js +69 -0
- package/dist/notifications/routes.js.map +1 -0
- package/dist/notifications/store.d.ts +25 -0
- package/dist/notifications/store.d.ts.map +1 -0
- package/dist/notifications/store.js +158 -0
- package/dist/notifications/store.js.map +1 -0
- package/dist/notifications/types.d.ts +43 -0
- package/dist/notifications/types.d.ts.map +1 -0
- package/dist/notifications/types.js +2 -0
- package/dist/notifications/types.js.map +1 -0
- package/dist/onboarding/default-steps.d.ts.map +1 -1
- package/dist/onboarding/default-steps.js +63 -20
- package/dist/onboarding/default-steps.js.map +1 -1
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +7 -26
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/actions.d.ts +8 -0
- package/dist/progress/actions.d.ts.map +1 -0
- package/dist/progress/actions.js +158 -0
- package/dist/progress/actions.js.map +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.d.ts.map +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/registry.d.ts +22 -0
- package/dist/progress/registry.d.ts.map +1 -0
- package/dist/progress/registry.js +98 -0
- package/dist/progress/registry.js.map +1 -0
- package/dist/progress/routes.d.ts +21 -0
- package/dist/progress/routes.d.ts.map +1 -0
- package/dist/progress/routes.js +59 -0
- package/dist/progress/routes.js.map +1 -0
- package/dist/progress/store.d.ts +7 -0
- package/dist/progress/store.d.ts.map +1 -0
- package/dist/progress/store.js +195 -0
- package/dist/progress/store.js.map +1 -0
- package/dist/progress/types.d.ts +49 -0
- package/dist/progress/types.d.ts.map +1 -0
- package/dist/progress/types.js +7 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/resources/store.d.ts.map +1 -1
- package/dist/resources/store.js +19 -15
- package/dist/resources/store.js.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +19 -5
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
- package/dist/scripts/agent-engines/set-agent-engine.js +8 -7
- package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
- package/dist/secrets/index.d.ts +3 -2
- package/dist/secrets/index.d.ts.map +1 -1
- package/dist/secrets/index.js +3 -2
- package/dist/secrets/index.js.map +1 -1
- package/dist/secrets/routes.d.ts +41 -2
- package/dist/secrets/routes.d.ts.map +1 -1
- package/dist/secrets/routes.js +167 -1
- package/dist/secrets/routes.js.map +1 -1
- package/dist/secrets/schema.d.ts +39 -1
- package/dist/secrets/schema.d.ts.map +1 -1
- package/dist/secrets/schema.js +6 -0
- package/dist/secrets/schema.js.map +1 -1
- package/dist/secrets/storage.d.ts +26 -0
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +111 -5
- package/dist/secrets/storage.js.map +1 -1
- package/dist/secrets/substitution.d.ts +39 -0
- package/dist/secrets/substitution.d.ts.map +1 -0
- package/dist/secrets/substitution.js +93 -0
- package/dist/secrets/substitution.js.map +1 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +1684 -1410
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +17 -6
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/analytics.d.ts +8 -5
- package/dist/server/analytics.d.ts.map +1 -1
- package/dist/server/analytics.js +17 -8
- package/dist/server/analytics.js.map +1 -1
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +7 -4
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts +11 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +74 -21
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +34 -16
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +179 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/email-templates.d.ts +43 -0
- package/dist/server/email-templates.d.ts.map +1 -0
- package/dist/server/email-templates.js +86 -0
- package/dist/server/email-templates.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts +15 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +64 -1
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +11 -0
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +275 -16
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/schema-prompt.d.ts.map +1 -1
- package/dist/server/schema-prompt.js +5 -0
- package/dist/server/schema-prompt.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/truncate.d.ts +8 -0
- package/dist/shared/truncate.d.ts.map +1 -0
- package/dist/shared/truncate.js +12 -0
- package/dist/shared/truncate.js.map +1 -0
- package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
- package/dist/templates/default/.agents/skills/notifications/SKILL.md +95 -0
- package/dist/templates/default/.agents/skills/progress/SKILL.md +97 -0
- package/dist/templates/default/AGENTS.md +12 -10
- package/dist/templates/default/package.json +10 -10
- package/dist/templates/workspace-core/package.json +5 -5
- package/dist/templates/workspace-root/package.json +1 -1
- package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/dist/templates/workspace-root/tsconfig.base.json +1 -2
- package/dist/tools/fetch-tool.d.ts +22 -0
- package/dist/tools/fetch-tool.d.ts.map +1 -0
- package/dist/tools/fetch-tool.js +156 -0
- package/dist/tools/fetch-tool.js.map +1 -0
- package/dist/tracking/index.d.ts +4 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +3 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/providers.d.ts +15 -0
- package/dist/tracking/providers.d.ts.map +1 -0
- package/dist/tracking/providers.js +195 -0
- package/dist/tracking/providers.js.map +1 -0
- package/dist/tracking/registry.d.ts +10 -0
- package/dist/tracking/registry.d.ts.map +1 -0
- package/dist/tracking/registry.js +75 -0
- package/dist/tracking/registry.js.map +1 -0
- package/dist/tracking/types.d.ts +13 -0
- package/dist/tracking/types.d.ts.map +1 -0
- package/dist/tracking/types.js +2 -0
- package/dist/tracking/types.js.map +1 -0
- package/dist/triggers/actions.d.ts +10 -0
- package/dist/triggers/actions.d.ts.map +1 -0
- package/dist/triggers/actions.js +277 -0
- package/dist/triggers/actions.js.map +1 -0
- package/dist/triggers/condition-evaluator.d.ts +15 -0
- package/dist/triggers/condition-evaluator.d.ts.map +1 -0
- package/dist/triggers/condition-evaluator.js +107 -0
- package/dist/triggers/condition-evaluator.js.map +1 -0
- package/dist/triggers/dispatcher.d.ts +32 -0
- package/dist/triggers/dispatcher.d.ts.map +1 -0
- package/dist/triggers/dispatcher.js +291 -0
- package/dist/triggers/dispatcher.js.map +1 -0
- package/dist/triggers/index.d.ts +5 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +4 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/types.d.ts +35 -0
- package/dist/triggers/types.d.ts.map +1 -0
- package/dist/triggers/types.js +9 -0
- package/dist/triggers/types.js.map +1 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +66 -16
- package/dist/vite/client.js.map +1 -1
- package/docs/content/automations.md +239 -0
- package/docs/content/multi-tenancy.md +88 -0
- package/docs/content/notifications.md +199 -0
- package/docs/content/progress.md +176 -0
- package/docs/content/tracking.md +168 -0
- package/package.json +59 -35
- package/src/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
- package/src/templates/default/.agents/skills/notifications/SKILL.md +95 -0
- package/src/templates/default/.agents/skills/progress/SKILL.md +97 -0
- package/src/templates/default/AGENTS.md +12 -10
- package/src/templates/default/package.json +10 -10
- package/src/templates/workspace-core/package.json +5 -5
- package/src/templates/workspace-root/package.json +1 -1
- package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
- package/src/templates/workspace-root/tsconfig.base.json +1 -2
- package/tsconfig.base.json +1 -1
- package/dist/client/settings/LLMSection.d.ts +0 -2
- package/dist/client/settings/LLMSection.d.ts.map +0 -1
- package/dist/client/settings/LLMSection.js +0 -64
- 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":"AAEA,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAKxE,SAAS,WAAW;IAClB,MAAM,CAAC,GAAG,UAA2C,CAAC;IACtD,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QAAE,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;IAClD,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAA0B;IACjE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IACD,WAAW,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,OAAO,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,UAAoC,EACpC,IAA0B;IAE1B,MAAM,KAAK,GAAkB;QAC3B,IAAI;QACJ,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,MAAM;KACrB,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,IAAI,MAAM,IAAI,OAAQ,MAAwB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnE,MAAwB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACtC,OAAO,CAAC,KAAK,CACX,wBAAwB,QAAQ,CAAC,IAAI,aAAa,EAClD,GAAG,CACJ,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,QAAQ,CAAC,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,MAAgC;IAEhC,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAAE,SAAS;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,MAAM,IAAI,OAAQ,MAAwB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;gBACnE,MAAwB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,QAAQ,IAAI,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,SAAS;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -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 @@
|
|
|
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"}
|