@agent-native/core 0.191.0 → 0.192.0-nightly-20260926045737
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/corpus/README.md +1 -1
- package/corpus/templates/analytics/CHANGELOG.md +4 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +41 -12
- package/corpus/templates/analytics/app/lib/chat-handoff.ts +62 -0
- package/corpus/templates/analytics/changelog/2026-09-25-chat-sidebar-stays-closed-in-settings.md +6 -0
- package/corpus/templates/analytics/changelog/2026-09-25-show-one-recent-prompt-per-chat-turn.md +6 -0
- package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +74 -11
- package/corpus/templates/clips/app/i18n/en-US.ts +6 -0
- package/corpus/templates/clips/changelog/2026-09-25-one-click-builder-storage.md +6 -0
- package/corpus/templates/design/actions/get-design.schema.ts +19 -0
- package/corpus/templates/design/actions/get-design.ts +16 -19
- package/corpus/templates/mail/actions/apply-ai-filter.ts +8 -0
- package/corpus/templates/mail/actions/create-automation.ts +7 -1
- package/corpus/templates/mail/actions/manage-ai-filter-rule-undo.ts +34 -0
- package/corpus/templates/mail/actions/manage-automations.ts +21 -44
- package/corpus/templates/mail/app/components/email/EmailList.tsx +35 -0
- package/corpus/templates/mail/app/components/onboarding/AiInboxSetup.tsx +116 -34
- package/corpus/templates/mail/app/components/settings/AiFilterSection.tsx +108 -70
- package/corpus/templates/mail/app/components/settings/AiRulePromptField.tsx +8 -1
- package/corpus/templates/mail/app/components/settings/JevConnectionPrompt.tsx +171 -0
- package/corpus/templates/mail/app/hooks/use-automations.ts +24 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +8 -2
- package/corpus/templates/mail/app/pages/InboxPage.tsx +12 -2
- package/corpus/templates/mail/changelog/2026-09-25-mail-now-guides-users-to-connect-jev-before-setting-up-triag.md +6 -0
- package/corpus/templates/mail/server/db/schema.ts +17 -0
- package/corpus/templates/mail/server/lib/ai-filter-rule-undo.ts +151 -0
- package/corpus/templates/mail/server/lib/automations.ts +34 -0
- package/corpus/templates/mail/server/plugins/db.ts +18 -0
- package/corpus/templates/mail/server/plugins/mail-jobs.ts +6 -0
- package/dist/client/AssistantChat.js +20 -3
- package/dist/client/BuilderReferralInviteRow.d.ts +3 -0
- package/dist/client/BuilderReferralInviteRow.js +16 -0
- package/dist/client/agent-chat-adapter.js +6 -5
- package/dist/client/chat/run-recovery.js +6 -5
- package/dist/client/settings/UsageSection.js +2 -1
- package/dist/client/settings/index.d.ts +1 -1
- package/dist/client/settings/index.js +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +4 -1
- package/dist/client/settings/useBuilderStatus.js +32 -16
- package/dist/client/use-agent-chat-running-threads.d.ts +2 -0
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/framework-tools.d.ts +3 -1
- package/dist/framework-tools.js +2 -0
- package/dist/localization/core-messages/ar-SA.js +4 -0
- package/dist/localization/core-messages/de-DE.js +4 -0
- package/dist/localization/core-messages/en-US.d.ts +4 -0
- package/dist/localization/core-messages/en-US.js +4 -0
- package/dist/localization/core-messages/es-ES.js +4 -0
- package/dist/localization/core-messages/fr-FR.js +4 -0
- package/dist/localization/core-messages/hi-IN.js +4 -0
- package/dist/localization/core-messages/ja-JP.js +4 -0
- package/dist/localization/core-messages/ko-KR.js +4 -0
- package/dist/localization/core-messages/pt-BR.js +4 -0
- package/dist/localization/core-messages/zh-CN.js +4 -0
- package/dist/localization/core-messages/zh-TW.js +4 -0
- package/dist/localization/core-messages.d.ts +4 -0
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +14 -14
- package/dist/secrets/routes.d.ts +3 -3
- package/dist/server/action-discovery.js +4 -0
- package/dist/server/agent-chat/plugin-options.d.ts +1 -1
- package/dist/server/agent-chat-plugin.js +6 -4
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
- package/dist/server/core-routes-plugin.d.ts +1 -1
- package/dist/server/fusion-app.d.ts +3 -0
- package/dist/server/fusion-app.js +17 -0
- package/dist/shared/builder-referrals.d.ts +10 -0
- package/dist/shared/builder-referrals.js +29 -0
- package/dist/usage/actions/get-builder-referral-info.d.ts +9 -0
- package/dist/usage/actions/get-builder-referral-info.js +26 -0
- package/dist/usage/metrics-store.js +142 -30
- package/dist/vite/action-types-plugin.js +4 -0
- package/docs/content/actions-agent-tools.mdx +2 -1
- package/package.json +3 -2
|
@@ -766,6 +766,10 @@ const messages = {
|
|
|
766
766
|
"settings.emailNewLabel": "البريد الإلكتروني الجديد",
|
|
767
767
|
"settings.emailNewPlaceholder": "أدخل بريدًا إلكترونيًا جديدًا",
|
|
768
768
|
"usage.builderCredits": "أرصدة Builder",
|
|
769
|
+
"usage.inviteFriends": "ادعُ الأصدقاء",
|
|
770
|
+
"usage.inviteCredits": "احصل على {{amount}} من أرصدة Builder عندما يشترك صديق.",
|
|
771
|
+
"usage.copyInviteLink": "نسخ رابط الدعوة",
|
|
772
|
+
"usage.inviteLinkCopied": "تم نسخ رابط الدعوة",
|
|
769
773
|
"usage.creditBalance": "رصيد مساحة العمل",
|
|
770
774
|
"usage.monthlyPlan": "الخطة الشهرية",
|
|
771
775
|
"usage.dailyFreeLimit": "الحد اليومي المجاني",
|
|
@@ -738,6 +738,10 @@ const messages = {
|
|
|
738
738
|
"settings.emailNewLabel": "Neue E-Mail-Adresse",
|
|
739
739
|
"settings.emailNewPlaceholder": "Neue E-Mail-Adresse eingeben",
|
|
740
740
|
"usage.builderCredits": "Builder-Credits",
|
|
741
|
+
"usage.inviteFriends": "Freunde einladen",
|
|
742
|
+
"usage.inviteCredits": "Erhalte {{amount}} Builder-Credits, wenn sich ein Freund anmeldet.",
|
|
743
|
+
"usage.copyInviteLink": "Einladungslink kopieren",
|
|
744
|
+
"usage.inviteLinkCopied": "Einladungslink kopiert",
|
|
741
745
|
"usage.creditBalance": "Workspace-Guthaben",
|
|
742
746
|
"usage.monthlyPlan": "Monatsplan",
|
|
743
747
|
"usage.dailyFreeLimit": "Tägliches Gratislimit",
|
|
@@ -738,6 +738,10 @@ declare const messages: {
|
|
|
738
738
|
readonly "settings.emailNewLabel": "New email";
|
|
739
739
|
readonly "settings.emailNewPlaceholder": "Enter new email";
|
|
740
740
|
readonly "usage.builderCredits": "Builder credits";
|
|
741
|
+
readonly "usage.inviteFriends": "Invite friends";
|
|
742
|
+
readonly "usage.inviteCredits": "Earn {{amount}} Builder credits when a friend subscribes.";
|
|
743
|
+
readonly "usage.copyInviteLink": "Copy invite link";
|
|
744
|
+
readonly "usage.inviteLinkCopied": "Invite link copied";
|
|
741
745
|
readonly "usage.creditBalance": "Workspace balance";
|
|
742
746
|
readonly "usage.monthlyPlan": "Monthly plan";
|
|
743
747
|
readonly "usage.dailyFreeLimit": "Free daily limit";
|
|
@@ -738,6 +738,10 @@ const messages = {
|
|
|
738
738
|
"settings.emailNewLabel": "New email",
|
|
739
739
|
"settings.emailNewPlaceholder": "Enter new email",
|
|
740
740
|
"usage.builderCredits": "Builder credits",
|
|
741
|
+
"usage.inviteFriends": "Invite friends",
|
|
742
|
+
"usage.inviteCredits": "Earn {{amount}} Builder credits when a friend subscribes.",
|
|
743
|
+
"usage.copyInviteLink": "Copy invite link",
|
|
744
|
+
"usage.inviteLinkCopied": "Invite link copied",
|
|
741
745
|
"usage.creditBalance": "Workspace balance",
|
|
742
746
|
"usage.monthlyPlan": "Monthly plan",
|
|
743
747
|
"usage.dailyFreeLimit": "Free daily limit",
|
|
@@ -745,6 +745,10 @@ const messages = {
|
|
|
745
745
|
"settings.emailNewLabel": "Correo electrónico nuevo",
|
|
746
746
|
"settings.emailNewPlaceholder": "Introduce un correo nuevo",
|
|
747
747
|
"usage.builderCredits": "Créditos de Builder",
|
|
748
|
+
"usage.inviteFriends": "Invita a tus amigos",
|
|
749
|
+
"usage.inviteCredits": "Gana {{amount}} créditos de Builder cuando un amigo se suscriba.",
|
|
750
|
+
"usage.copyInviteLink": "Copiar enlace de invitación",
|
|
751
|
+
"usage.inviteLinkCopied": "Enlace de invitación copiado",
|
|
748
752
|
"usage.creditBalance": "Saldo del espacio de trabajo",
|
|
749
753
|
"usage.monthlyPlan": "Plan mensual",
|
|
750
754
|
"usage.dailyFreeLimit": "Límite diario gratuito",
|
|
@@ -745,6 +745,10 @@ const messages = {
|
|
|
745
745
|
"settings.emailNewLabel": "Nouvelle adresse e-mail",
|
|
746
746
|
"settings.emailNewPlaceholder": "Saisissez une nouvelle adresse e-mail",
|
|
747
747
|
"usage.builderCredits": "Crédits Builder",
|
|
748
|
+
"usage.inviteFriends": "Inviter des amis",
|
|
749
|
+
"usage.inviteCredits": "Gagnez {{amount}} crédits Builder lorsqu’un ami s’abonne.",
|
|
750
|
+
"usage.copyInviteLink": "Copier le lien d’invitation",
|
|
751
|
+
"usage.inviteLinkCopied": "Lien d’invitation copié",
|
|
748
752
|
"usage.creditBalance": "Solde de l’espace de travail",
|
|
749
753
|
"usage.monthlyPlan": "Forfait mensuel",
|
|
750
754
|
"usage.dailyFreeLimit": "Limite quotidienne gratuite",
|
|
@@ -738,6 +738,10 @@ const messages = {
|
|
|
738
738
|
"settings.emailNewLabel": "नया ईमेल",
|
|
739
739
|
"settings.emailNewPlaceholder": "नया ईमेल दर्ज करें",
|
|
740
740
|
"usage.builderCredits": "Builder क्रेडिट",
|
|
741
|
+
"usage.inviteFriends": "दोस्तों को आमंत्रित करें",
|
|
742
|
+
"usage.inviteCredits": "दोस्त के सदस्यता लेने पर {{amount}} Builder क्रेडिट पाएं।",
|
|
743
|
+
"usage.copyInviteLink": "आमंत्रण लिंक कॉपी करें",
|
|
744
|
+
"usage.inviteLinkCopied": "आमंत्रण लिंक कॉपी हो गया",
|
|
741
745
|
"usage.creditBalance": "वर्कस्पेस बैलेंस",
|
|
742
746
|
"usage.monthlyPlan": "मासिक प्लान",
|
|
743
747
|
"usage.dailyFreeLimit": "मुफ़्त दैनिक सीमा",
|
|
@@ -731,6 +731,10 @@ const messages = {
|
|
|
731
731
|
"settings.emailNewLabel": "新しいメールアドレス",
|
|
732
732
|
"settings.emailNewPlaceholder": "新しいメールアドレスを入力",
|
|
733
733
|
"usage.builderCredits": "Builder クレジット",
|
|
734
|
+
"usage.inviteFriends": "友だちを招待",
|
|
735
|
+
"usage.inviteCredits": "友だちが登録すると Builder クレジットを {{amount}} 獲得できます。",
|
|
736
|
+
"usage.copyInviteLink": "招待リンクをコピー",
|
|
737
|
+
"usage.inviteLinkCopied": "招待リンクをコピーしました",
|
|
734
738
|
"usage.creditBalance": "ワークスペース残高",
|
|
735
739
|
"usage.monthlyPlan": "月間プラン",
|
|
736
740
|
"usage.dailyFreeLimit": "無料の日次上限",
|
|
@@ -731,6 +731,10 @@ const messages = {
|
|
|
731
731
|
"settings.emailNewLabel": "새 이메일",
|
|
732
732
|
"settings.emailNewPlaceholder": "새 이메일 입력",
|
|
733
733
|
"usage.builderCredits": "Builder 크레딧",
|
|
734
|
+
"usage.inviteFriends": "친구 초대",
|
|
735
|
+
"usage.inviteCredits": "친구가 구독하면 Builder 크레딧 {{amount}}개를 받을 수 있습니다.",
|
|
736
|
+
"usage.copyInviteLink": "초대 링크 복사",
|
|
737
|
+
"usage.inviteLinkCopied": "초대 링크를 복사했습니다",
|
|
734
738
|
"usage.creditBalance": "워크스페이스 잔액",
|
|
735
739
|
"usage.monthlyPlan": "월간 플랜",
|
|
736
740
|
"usage.dailyFreeLimit": "무료 일일 한도",
|
|
@@ -745,6 +745,10 @@ const messages = {
|
|
|
745
745
|
"settings.emailNewLabel": "Novo e-mail",
|
|
746
746
|
"settings.emailNewPlaceholder": "Digite o novo e-mail",
|
|
747
747
|
"usage.builderCredits": "Créditos do Builder",
|
|
748
|
+
"usage.inviteFriends": "Convide amigos",
|
|
749
|
+
"usage.inviteCredits": "Ganhe {{amount}} créditos do Builder quando um amigo assinar.",
|
|
750
|
+
"usage.copyInviteLink": "Copiar link de convite",
|
|
751
|
+
"usage.inviteLinkCopied": "Link de convite copiado",
|
|
748
752
|
"usage.creditBalance": "Saldo do workspace",
|
|
749
753
|
"usage.monthlyPlan": "Plano mensal",
|
|
750
754
|
"usage.dailyFreeLimit": "Limite diário gratuito",
|
|
@@ -731,6 +731,10 @@ const messages = {
|
|
|
731
731
|
"settings.emailNewLabel": "新电子邮件",
|
|
732
732
|
"settings.emailNewPlaceholder": "输入新电子邮件",
|
|
733
733
|
"usage.builderCredits": "Builder 积分",
|
|
734
|
+
"usage.inviteFriends": "邀请好友",
|
|
735
|
+
"usage.inviteCredits": "好友订阅后可获得 {{amount}} 个 Builder 积分。",
|
|
736
|
+
"usage.copyInviteLink": "复制邀请链接",
|
|
737
|
+
"usage.inviteLinkCopied": "邀请链接已复制",
|
|
734
738
|
"usage.creditBalance": "工作区余额",
|
|
735
739
|
"usage.monthlyPlan": "月度套餐",
|
|
736
740
|
"usage.dailyFreeLimit": "免费每日上限",
|
|
@@ -731,6 +731,10 @@ const messages = {
|
|
|
731
731
|
"settings.emailNewLabel": "新電子郵件",
|
|
732
732
|
"settings.emailNewPlaceholder": "輸入新電子郵件",
|
|
733
733
|
"usage.builderCredits": "Builder 點數",
|
|
734
|
+
"usage.inviteFriends": "邀請朋友",
|
|
735
|
+
"usage.inviteCredits": "朋友訂閱後可獲得 {{amount}} 點 Builder 點數。",
|
|
736
|
+
"usage.copyInviteLink": "複製邀請連結",
|
|
737
|
+
"usage.inviteLinkCopied": "邀請連結已複製",
|
|
734
738
|
"usage.creditBalance": "工作區餘額",
|
|
735
739
|
"usage.monthlyPlan": "月度方案",
|
|
736
740
|
"usage.dailyFreeLimit": "免費每日上限",
|
|
@@ -740,6 +740,10 @@ export declare const englishAgentChatMessages: {
|
|
|
740
740
|
readonly "settings.emailNewLabel": "New email";
|
|
741
741
|
readonly "settings.emailNewPlaceholder": "Enter new email";
|
|
742
742
|
readonly "usage.builderCredits": "Builder credits";
|
|
743
|
+
readonly "usage.inviteFriends": "Invite friends";
|
|
744
|
+
readonly "usage.inviteCredits": "Earn {{amount}} Builder credits when a friend subscribes.";
|
|
745
|
+
readonly "usage.copyInviteLink": "Copy invite link";
|
|
746
|
+
readonly "usage.inviteLinkCopied": "Invite link copied";
|
|
743
747
|
readonly "usage.creditBalance": "Workspace balance";
|
|
744
748
|
readonly "usage.monthlyPlan": "Monthly plan";
|
|
745
749
|
readonly "usage.dailyFreeLimit": "Free daily limit";
|
|
@@ -17,17 +17,17 @@ export declare function createNotificationsHandler(): import("h3").EventHandlerW
|
|
|
17
17
|
ok?: undefined;
|
|
18
18
|
} | {
|
|
19
19
|
error?: undefined;
|
|
20
|
+
count?: undefined;
|
|
20
21
|
updated: number;
|
|
21
22
|
ok?: undefined;
|
|
22
|
-
count?: undefined;
|
|
23
23
|
} | {
|
|
24
|
+
count?: undefined;
|
|
24
25
|
updated?: undefined;
|
|
25
26
|
error: string;
|
|
26
27
|
ok?: undefined;
|
|
27
|
-
count?: undefined;
|
|
28
28
|
} | {
|
|
29
29
|
error?: undefined;
|
|
30
|
+
count?: undefined;
|
|
30
31
|
updated?: undefined;
|
|
31
32
|
ok: boolean;
|
|
32
|
-
count?: undefined;
|
|
33
33
|
}>>;
|
|
@@ -41,27 +41,27 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
41
41
|
thumbsUpRate: number;
|
|
42
42
|
avgEvalScore: number;
|
|
43
43
|
} | {
|
|
44
|
+
error?: undefined;
|
|
45
|
+
ok?: undefined;
|
|
44
46
|
summary: import("./types.js").TraceSummary;
|
|
45
47
|
spans: import("./types.js").TraceSpan[];
|
|
46
48
|
id?: undefined;
|
|
49
|
+
} | {
|
|
47
50
|
error?: undefined;
|
|
48
51
|
ok?: undefined;
|
|
49
|
-
} | {
|
|
50
52
|
summary?: undefined;
|
|
51
53
|
spans?: undefined;
|
|
52
54
|
id: string;
|
|
53
|
-
error?: undefined;
|
|
54
|
-
ok?: undefined;
|
|
55
55
|
} | {
|
|
56
|
+
ok?: undefined;
|
|
56
57
|
summary?: undefined;
|
|
57
58
|
spans?: undefined;
|
|
58
59
|
id?: undefined;
|
|
59
60
|
error: any;
|
|
60
|
-
ok?: undefined;
|
|
61
61
|
} | {
|
|
62
|
+
error?: undefined;
|
|
62
63
|
summary?: undefined;
|
|
63
64
|
spans?: undefined;
|
|
64
65
|
id?: undefined;
|
|
65
|
-
error?: undefined;
|
|
66
66
|
ok: boolean;
|
|
67
67
|
}>>;
|
|
@@ -76,8 +76,8 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
76
76
|
}>>;
|
|
77
77
|
}, z.core.$strip>>, {
|
|
78
78
|
id?: undefined;
|
|
79
|
+
provider?: undefined;
|
|
79
80
|
deleted?: undefined;
|
|
80
|
-
found?: undefined;
|
|
81
81
|
providers: {
|
|
82
82
|
id: string;
|
|
83
83
|
label: string;
|
|
@@ -88,7 +88,7 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
88
88
|
updatedAt: number;
|
|
89
89
|
}[];
|
|
90
90
|
count: number;
|
|
91
|
-
|
|
91
|
+
found?: undefined;
|
|
92
92
|
registered?: undefined;
|
|
93
93
|
label?: undefined;
|
|
94
94
|
message?: undefined;
|
|
@@ -103,31 +103,31 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
|
|
|
103
103
|
label?: undefined;
|
|
104
104
|
message?: undefined;
|
|
105
105
|
} | {
|
|
106
|
+
provider?: undefined;
|
|
106
107
|
deleted?: undefined;
|
|
107
108
|
count?: undefined;
|
|
108
109
|
providers?: undefined;
|
|
109
|
-
provider?: undefined;
|
|
110
110
|
found: boolean;
|
|
111
111
|
id: string;
|
|
112
112
|
registered?: undefined;
|
|
113
113
|
label?: undefined;
|
|
114
114
|
message?: undefined;
|
|
115
115
|
} | {
|
|
116
|
+
provider?: undefined;
|
|
116
117
|
count?: undefined;
|
|
117
|
-
found?: undefined;
|
|
118
118
|
providers?: undefined;
|
|
119
|
-
|
|
119
|
+
found?: undefined;
|
|
120
120
|
deleted: boolean;
|
|
121
121
|
id: string;
|
|
122
122
|
registered?: undefined;
|
|
123
123
|
label?: undefined;
|
|
124
124
|
message?: undefined;
|
|
125
125
|
} | {
|
|
126
|
+
provider?: undefined;
|
|
126
127
|
deleted?: undefined;
|
|
127
128
|
count?: undefined;
|
|
128
|
-
found?: undefined;
|
|
129
129
|
providers?: undefined;
|
|
130
|
-
|
|
130
|
+
found?: undefined;
|
|
131
131
|
registered: boolean;
|
|
132
132
|
id: string;
|
|
133
133
|
label: string;
|
|
@@ -311,10 +311,9 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
311
311
|
notes?: string | undefined;
|
|
312
312
|
scope?: "org" | "user" | undefined;
|
|
313
313
|
}, {
|
|
314
|
-
message?: undefined;
|
|
315
314
|
id?: undefined;
|
|
316
315
|
deleted?: undefined;
|
|
317
|
-
|
|
316
|
+
provider?: undefined;
|
|
318
317
|
providers: {
|
|
319
318
|
id: string;
|
|
320
319
|
label: string;
|
|
@@ -325,45 +324,46 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
|
|
|
325
324
|
updatedAt: number;
|
|
326
325
|
}[];
|
|
327
326
|
count: number;
|
|
328
|
-
|
|
327
|
+
found?: undefined;
|
|
329
328
|
registered?: undefined;
|
|
330
329
|
label?: undefined;
|
|
331
|
-
} | {
|
|
332
330
|
message?: undefined;
|
|
331
|
+
} | {
|
|
333
332
|
id?: undefined;
|
|
334
|
-
count?: undefined;
|
|
335
333
|
deleted?: undefined;
|
|
336
334
|
providers?: undefined;
|
|
335
|
+
count?: undefined;
|
|
337
336
|
found: boolean;
|
|
338
337
|
provider: import("../custom-registry.js").CustomProviderConfig;
|
|
339
338
|
registered?: undefined;
|
|
340
339
|
label?: undefined;
|
|
341
|
-
} | {
|
|
342
340
|
message?: undefined;
|
|
343
|
-
|
|
341
|
+
} | {
|
|
344
342
|
deleted?: undefined;
|
|
345
|
-
providers?: undefined;
|
|
346
343
|
provider?: undefined;
|
|
344
|
+
providers?: undefined;
|
|
345
|
+
count?: undefined;
|
|
347
346
|
found: boolean;
|
|
348
347
|
id: string;
|
|
349
348
|
registered?: undefined;
|
|
350
349
|
label?: undefined;
|
|
351
|
-
} | {
|
|
352
350
|
message?: undefined;
|
|
351
|
+
} | {
|
|
352
|
+
provider?: undefined;
|
|
353
|
+
providers?: undefined;
|
|
353
354
|
count?: undefined;
|
|
354
355
|
found?: undefined;
|
|
355
|
-
providers?: undefined;
|
|
356
|
-
provider?: undefined;
|
|
357
356
|
deleted: boolean;
|
|
358
357
|
id: string;
|
|
359
358
|
registered?: undefined;
|
|
360
359
|
label?: undefined;
|
|
360
|
+
message?: undefined;
|
|
361
361
|
} | {
|
|
362
|
-
count?: undefined;
|
|
363
362
|
deleted?: undefined;
|
|
364
|
-
found?: undefined;
|
|
365
|
-
providers?: undefined;
|
|
366
363
|
provider?: undefined;
|
|
364
|
+
providers?: undefined;
|
|
365
|
+
count?: undefined;
|
|
366
|
+
found?: undefined;
|
|
367
367
|
registered: boolean;
|
|
368
368
|
id: string;
|
|
369
369
|
label: string;
|
package/dist/secrets/routes.d.ts
CHANGED
|
@@ -57,16 +57,16 @@ export declare function createListSecretsHandler(): import("h3").EventHandlerWit
|
|
|
57
57
|
/** POST /_agent-native/secrets/:key — write a secret. */
|
|
58
58
|
export declare function createWriteSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
59
59
|
error: string;
|
|
60
|
-
status?: undefined;
|
|
61
60
|
ok?: undefined;
|
|
61
|
+
status?: undefined;
|
|
62
62
|
} | {
|
|
63
63
|
ok: boolean;
|
|
64
64
|
status: string;
|
|
65
65
|
error?: undefined;
|
|
66
66
|
} | {
|
|
67
|
+
ok?: undefined;
|
|
67
68
|
error: string;
|
|
68
69
|
removed?: undefined;
|
|
69
|
-
ok?: undefined;
|
|
70
70
|
} | {
|
|
71
71
|
ok: boolean;
|
|
72
72
|
removed: boolean;
|
|
@@ -77,9 +77,9 @@ export declare function createWriteSecretHandler(): import("h3").EventHandlerWit
|
|
|
77
77
|
* or the current stored value without changing anything.
|
|
78
78
|
*/
|
|
79
79
|
export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
80
|
+
ok?: undefined;
|
|
80
81
|
error: string;
|
|
81
82
|
note?: undefined;
|
|
82
|
-
ok?: undefined;
|
|
83
83
|
} | {
|
|
84
84
|
ok: boolean;
|
|
85
85
|
note?: undefined;
|
|
@@ -716,6 +716,10 @@ export async function mergeCoreSharingActions(registry) {
|
|
|
716
716
|
"get-builder-credit-usage",
|
|
717
717
|
() => import("../usage/actions/get-builder-credit-usage.js"),
|
|
718
718
|
],
|
|
719
|
+
[
|
|
720
|
+
"get-builder-referral-info",
|
|
721
|
+
() => import("../usage/actions/get-builder-referral-info.js"),
|
|
722
|
+
],
|
|
719
723
|
[
|
|
720
724
|
"context-manifest-get",
|
|
721
725
|
() => import("../agent/context-xray/actions/context-manifest-get.js"),
|
|
@@ -280,7 +280,7 @@ export interface AgentChatPluginOptions {
|
|
|
280
280
|
* Which of the framework's OWN agent tools this app exposes — raw SQL,
|
|
281
281
|
* extensions, sharing, review comments, version history, feature flags,
|
|
282
282
|
* localization, audit, context X-Ray, profile, automations, docs, resources,
|
|
283
|
-
* web, cross-app delegation, chat, email.
|
|
283
|
+
* browser-session controls, web, cross-app delegation, chat, email.
|
|
284
284
|
*
|
|
285
285
|
* Every group defaults to today's behavior, so omitting this leaves the tool
|
|
286
286
|
* surface unchanged. `"minimal"` (or `{ preset: "minimal" }`) turns them all
|
|
@@ -1223,10 +1223,12 @@ export function createAgentChatPlugin(options) {
|
|
|
1223
1223
|
}
|
|
1224
1224
|
let browserSessionTools = {};
|
|
1225
1225
|
try {
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1226
|
+
if (frameworkTools.isEnabled("browserSessions")) {
|
|
1227
|
+
const { createBrowserSessionActionEntries } = await import("../browser-sessions/actions.js");
|
|
1228
|
+
browserSessionTools = createBrowserSessionActionEntries({
|
|
1229
|
+
getOwnerEmail: () => requireCurrentRunOwner("use browser sessions"),
|
|
1230
|
+
});
|
|
1231
|
+
}
|
|
1230
1232
|
}
|
|
1231
1233
|
catch { }
|
|
1232
1234
|
let remoteBrowserTools = {};
|
|
@@ -56,10 +56,10 @@ export declare function createAgentEngineApiKeyHandler(): import("h3").EventHand
|
|
|
56
56
|
ok: boolean;
|
|
57
57
|
error: string;
|
|
58
58
|
} | {
|
|
59
|
+
error?: undefined;
|
|
59
60
|
ok: boolean;
|
|
60
61
|
key: string;
|
|
61
62
|
baseUrlKey?: string;
|
|
62
63
|
scope: AgentEngineApiKeyScope;
|
|
63
|
-
error?: undefined;
|
|
64
64
|
}>>;
|
|
65
65
|
export {};
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* static suggestion list in `model-config.ts`.
|
|
6
6
|
*/
|
|
7
7
|
export declare function createAgentEngineOllamaModelsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
8
|
-
error: string;
|
|
9
8
|
ok?: undefined;
|
|
9
|
+
error: string;
|
|
10
10
|
models?: undefined;
|
|
11
11
|
} | {
|
|
12
12
|
ok: boolean;
|
|
@@ -419,8 +419,8 @@ export declare function createPublicRemoteAgentsHandler(discover?: PublicAgentDi
|
|
|
419
419
|
error: string;
|
|
420
420
|
agents?: undefined;
|
|
421
421
|
} | {
|
|
422
|
-
agents: Omit<import("./agent-discovery.js").DiscoveredAgent, "auth" | "kind">[];
|
|
423
422
|
error?: undefined;
|
|
423
|
+
agents: Omit<import("./agent-discovery.js").DiscoveredAgent, "auth" | "kind">[];
|
|
424
424
|
}>>;
|
|
425
425
|
export declare function getBuilderConnectErrorDisposition(error: unknown, connectAttemptId: string | null): "correlated" | "legacy" | null;
|
|
426
426
|
export declare function getBuilderConnectErrorKey(ownerEmail: string, connectAttemptId?: string | null): string;
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* respond with newline-delimited JSON over chunked HTTP.
|
|
25
25
|
*/
|
|
26
26
|
import { z } from "zod";
|
|
27
|
+
import { type BuilderReferralInfo } from "../shared/builder-referrals.js";
|
|
27
28
|
export interface FusionBranchRef {
|
|
28
29
|
projectId: string;
|
|
29
30
|
branchName: string;
|
|
@@ -65,6 +66,8 @@ declare const builderCreditUsageSchema: z.ZodObject<{
|
|
|
65
66
|
export type BuilderCreditUsage = z.infer<typeof builderCreditUsageSchema>;
|
|
66
67
|
/** Current Builder balance and the active free-daily or paid-monthly quota. */
|
|
67
68
|
export declare function getBuilderCreditUsage(): Promise<BuilderCreditUsage | null>;
|
|
69
|
+
/** The connected Builder workspace's eligible referral link and credit totals. */
|
|
70
|
+
export declare function getBuilderReferralInfo(): Promise<BuilderReferralInfo | null>;
|
|
68
71
|
/** The Builder visual-editor URL for a fusion branch. */
|
|
69
72
|
export declare function getFusionBranchEditorUrl(ref: FusionBranchRef): string;
|
|
70
73
|
/** Public URL for a reserved fusion hosting slug. */
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { z } from "zod";
|
|
27
27
|
import { withBuilderUtmTrackingParams } from "../shared/builder-link-tracking.js";
|
|
28
|
+
import { builderReferralInfoSchema, } from "../shared/builder-referrals.js";
|
|
28
29
|
import { resolveBuilderRequestAuthorization, } from "./builder-api-auth.js";
|
|
29
30
|
import { getBuilderApiHost, getBuilderAppHost } from "./builder-browser.js";
|
|
30
31
|
async function resolveFusionAuth(requiredScope) {
|
|
@@ -78,6 +79,22 @@ export async function getBuilderCreditUsage() {
|
|
|
78
79
|
}
|
|
79
80
|
return builderCreditUsageSchema.parse(await response.json());
|
|
80
81
|
}
|
|
82
|
+
/** The connected Builder workspace's eligible referral link and credit totals. */
|
|
83
|
+
export async function getBuilderReferralInfo() {
|
|
84
|
+
const authorization = await resolveBuilderRequestAuthorization({
|
|
85
|
+
requiredScope: "builder:ai:invoke",
|
|
86
|
+
});
|
|
87
|
+
if (!authorization)
|
|
88
|
+
return null;
|
|
89
|
+
const response = await fetch(fusionUrl("/agent-native/credits/v1/referrals", authorization), {
|
|
90
|
+
headers: { Authorization: authorization.authorization },
|
|
91
|
+
signal: AbortSignal.timeout(5000),
|
|
92
|
+
});
|
|
93
|
+
if (!response.ok) {
|
|
94
|
+
throw new Error(`Builder referral info failed (${response.status}).`);
|
|
95
|
+
}
|
|
96
|
+
return builderReferralInfoSchema.parse(await response.json());
|
|
97
|
+
}
|
|
81
98
|
/** The Builder visual-editor URL for a fusion branch. */
|
|
82
99
|
export function getFusionBranchEditorUrl(ref) {
|
|
83
100
|
const host = getBuilderAppHost().replace(/\/+$/, "");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const builderReferralInfoSchema: z.ZodObject<{
|
|
3
|
+
eligible: z.ZodBoolean;
|
|
4
|
+
inviteUrl: z.ZodNullable<z.ZodString>;
|
|
5
|
+
creditsPerReferral: z.ZodNumber;
|
|
6
|
+
completedReferrals: z.ZodNumber;
|
|
7
|
+
pendingReferrals: z.ZodNumber;
|
|
8
|
+
creditsEarned: z.ZodNumber;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
export type BuilderReferralInfo = z.infer<typeof builderReferralInfoSchema>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const safeCount = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
|
|
3
|
+
const inviteUrlSchema = z
|
|
4
|
+
.string()
|
|
5
|
+
.url()
|
|
6
|
+
.refine((value) => {
|
|
7
|
+
const url = new URL(value);
|
|
8
|
+
return (url.origin === "https://builder.io" &&
|
|
9
|
+
url.pathname === "/signup" &&
|
|
10
|
+
/^[0-9a-f]{32}$/i.test(url.searchParams.get("fus_ref") ?? ""));
|
|
11
|
+
});
|
|
12
|
+
export const builderReferralInfoSchema = z
|
|
13
|
+
.object({
|
|
14
|
+
eligible: z.boolean(),
|
|
15
|
+
inviteUrl: inviteUrlSchema.nullable(),
|
|
16
|
+
creditsPerReferral: safeCount,
|
|
17
|
+
completedReferrals: safeCount,
|
|
18
|
+
pendingReferrals: safeCount,
|
|
19
|
+
creditsEarned: safeCount,
|
|
20
|
+
})
|
|
21
|
+
.superRefine((info, context) => {
|
|
22
|
+
if (info.eligible !== Boolean(info.inviteUrl)) {
|
|
23
|
+
context.addIssue({
|
|
24
|
+
code: "custom",
|
|
25
|
+
message: "Referral eligibility and invite URL must agree.",
|
|
26
|
+
path: ["inviteUrl"],
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const _default: import("../../action.js").ActionDefinition<Record<string, never>, {
|
|
2
|
+
eligible: boolean;
|
|
3
|
+
inviteUrl?: string;
|
|
4
|
+
creditsPerReferral: number;
|
|
5
|
+
completedReferrals: number;
|
|
6
|
+
pendingReferrals: number;
|
|
7
|
+
creditsEarned: number;
|
|
8
|
+
}>;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineAction } from "../../action.js";
|
|
3
|
+
import { BUILDER_CREDIT_USAGE_REPORTING_FLAG } from "../../feature-flags/registry.js";
|
|
4
|
+
import { isFeatureFlagEnabled } from "../../feature-flags/store.js";
|
|
5
|
+
import { getBuilderReferralInfo } from "../../server/fusion-app.js";
|
|
6
|
+
import { ForbiddenError } from "../../sharing/access.js";
|
|
7
|
+
import { canViewWorkspaceUsage } from "../metrics-store.js";
|
|
8
|
+
export default defineAction({
|
|
9
|
+
description: "Get the connected Builder workspace's referral eligibility, invite link, and aggregate referral credit totals. The invite link is only available for eligible paid Builder workspaces; the workspace is resolved from the connected Builder credentials.",
|
|
10
|
+
http: { method: "GET" },
|
|
11
|
+
schema: z.object({}),
|
|
12
|
+
run: async (_input, ctx) => {
|
|
13
|
+
if (!ctx?.userEmail)
|
|
14
|
+
throw new Error("Not authenticated.");
|
|
15
|
+
const enabled = await isFeatureFlagEnabled(BUILDER_CREDIT_USAGE_REPORTING_FLAG, { userEmail: ctx.userEmail, orgId: ctx.orgId });
|
|
16
|
+
if (!enabled)
|
|
17
|
+
return null;
|
|
18
|
+
if (!(await canViewWorkspaceUsage({
|
|
19
|
+
ownerEmail: ctx.userEmail,
|
|
20
|
+
orgId: ctx.orgId,
|
|
21
|
+
}))) {
|
|
22
|
+
throw new ForbiddenError("Only organization owners and admins can view workspace referral information.");
|
|
23
|
+
}
|
|
24
|
+
return getBuilderReferralInfo();
|
|
25
|
+
},
|
|
26
|
+
});
|