@agent-native/core 0.130.0 → 0.130.2
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/core/CHANGELOG.md +12 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/integrations/a2a-continuation-processor.ts +481 -122
- package/corpus/core/src/integrations/a2a-continuations-store.ts +345 -14
- package/corpus/core/src/integrations/adapters/slack.ts +243 -53
- package/corpus/core/src/integrations/integration-campaign-recovery.ts +4 -1
- package/corpus/core/src/integrations/plugin.ts +39 -21
- package/corpus/core/src/integrations/task-queue-stats.ts +146 -0
- package/corpus/core/src/integrations/types.ts +25 -4
- package/corpus/core/src/integrations/webhook-handler.ts +18 -5
- package/corpus/core/src/server/email-template.ts +43 -13
- package/corpus/core/src/sharing/actions/share-resource.ts +26 -4
- package/corpus/core/src/sharing/index.ts +1 -0
- package/corpus/core/src/sharing/registry.ts +23 -0
- package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +3 -1
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
- package/corpus/templates/clips/app/components/meetings/day-header.tsx +1 -1
- package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +1 -22
- package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +26 -1
- package/corpus/templates/clips/app/components/workspace/organization-identity-card.tsx +107 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +3 -4
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +0 -10
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +23 -51
- package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +1 -8
- package/corpus/templates/clips/changelog/2026-07-29-clearing-all-recording-edits-no-longer-leaves-the-editor-unr.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-clip-share-emails-now-open-with-who-shared-the-clip-add-a-su.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-finished-meeting-pills-now-have-a-clear-close-button.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-meeting-cards-no-longer-flicker-or-disappear-when-hovered-in.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-organization-name-logo-brand-color-and-default-visibility-no.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-transcript-lines-on-the-meeting-page-no-longer-jump-to-the-r.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-29-when-a-meeting-wraps-up-the-recording-pill-now-shows-a-green.md +6 -0
- package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +6 -3
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +112 -32
- package/corpus/templates/clips/desktop/src/styles.css +42 -2
- package/corpus/templates/clips/server/db/index.ts +6 -0
- package/corpus/templates/clips/server/lib/share-email-hero.ts +33 -0
- package/corpus/templates/clips/shared/clips-ai-prefs.ts +0 -1
- package/corpus/templates/dispatch/changelog/2026-07-26-slack-replies-recover-after-connected-app-updates.md +6 -0
- package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +15 -0
- package/corpus/templates/slides/actions/delete-design-system.ts +145 -0
- package/corpus/templates/slides/actions/list-design-systems.ts +94 -2
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +43 -1
- package/corpus/templates/slides/app/hooks/use-design-systems.ts +2 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +7 -0
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +56 -1
- package/corpus/templates/slides/changelog/2026-07-28-delete-a-design-system-you-own-from-the-design-systems-page-.md +6 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/a2a-continuation-processor.d.ts +5 -0
- package/dist/integrations/a2a-continuation-processor.d.ts.map +1 -1
- package/dist/integrations/a2a-continuation-processor.js +293 -79
- package/dist/integrations/a2a-continuation-processor.js.map +1 -1
- package/dist/integrations/a2a-continuations-store.d.ts +23 -1
- package/dist/integrations/a2a-continuations-store.d.ts.map +1 -1
- package/dist/integrations/a2a-continuations-store.js +249 -15
- package/dist/integrations/a2a-continuations-store.js.map +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +155 -31
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/integration-campaign-recovery.d.ts.map +1 -1
- package/dist/integrations/integration-campaign-recovery.js +3 -1
- package/dist/integrations/integration-campaign-recovery.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +29 -12
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/task-queue-stats.d.ts +12 -0
- package/dist/integrations/task-queue-stats.d.ts.map +1 -1
- package/dist/integrations/task-queue-stats.js +106 -0
- package/dist/integrations/task-queue-stats.js.map +1 -1
- package/dist/integrations/types.d.ts +24 -6
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/types.js.map +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +12 -3
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +3 -3
- package/dist/server/email-template.d.ts +4 -0
- package/dist/server/email-template.d.ts.map +1 -1
- package/dist/server/email-template.js +25 -8
- package/dist/server/email-template.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.js +23 -4
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/sharing/index.d.ts +1 -1
- package/dist/sharing/index.d.ts.map +1 -1
- package/dist/sharing/index.js.map +1 -1
- package/dist/sharing/registry.d.ts +23 -0
- package/dist/sharing/registry.d.ts.map +1 -1
- package/dist/sharing/registry.js.map +1 -1
- package/package.json +1 -1
- package/src/integrations/a2a-continuation-processor.ts +481 -122
- package/src/integrations/a2a-continuations-store.ts +345 -14
- package/src/integrations/adapters/slack.ts +243 -53
- package/src/integrations/integration-campaign-recovery.ts +4 -1
- package/src/integrations/plugin.ts +39 -21
- package/src/integrations/task-queue-stats.ts +146 -0
- package/src/integrations/types.ts +25 -4
- package/src/integrations/webhook-handler.ts +18 -5
- package/src/server/email-template.ts +43 -13
- package/src/sharing/actions/share-resource.ts +26 -4
- package/src/sharing/index.ts +1 -0
- package/src/sharing/registry.ts +23 -0
- package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +0 -232
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { useActionQuery, useSession } from "@agent-native/core/client/hooks";
|
|
2
|
-
import { useT } from "@agent-native/core/client/i18n";
|
|
3
|
-
import { IconMailFast, IconUsers } from "@tabler/icons-react";
|
|
4
|
-
import { useMemo } from "react";
|
|
5
|
-
|
|
6
|
-
import { PageHeader } from "@/components/library/page-header";
|
|
7
|
-
import { Badge } from "@/components/ui/badge";
|
|
8
|
-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
9
|
-
import { Skeleton } from "@/components/ui/skeleton";
|
|
10
|
-
import {
|
|
11
|
-
Table,
|
|
12
|
-
TableBody,
|
|
13
|
-
TableCell,
|
|
14
|
-
TableHead,
|
|
15
|
-
TableHeader,
|
|
16
|
-
TableRow,
|
|
17
|
-
} from "@/components/ui/table";
|
|
18
|
-
import {
|
|
19
|
-
BrandingEditor,
|
|
20
|
-
type RecordingVisibility,
|
|
21
|
-
} from "@/components/workspace/branding-editor";
|
|
22
|
-
import { InviteDialog } from "@/components/workspace/invite-dialog";
|
|
23
|
-
import {
|
|
24
|
-
MembersList,
|
|
25
|
-
type MemberRole,
|
|
26
|
-
} from "@/components/workspace/members-list";
|
|
27
|
-
import enMessages from "@/i18n/en-US";
|
|
28
|
-
|
|
29
|
-
export function meta() {
|
|
30
|
-
return [{ title: enMessages.organizationSettings.pageTitle }];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
interface OrganizationStateResponse {
|
|
34
|
-
organization: {
|
|
35
|
-
id: string;
|
|
36
|
-
name: string;
|
|
37
|
-
brandColor: string;
|
|
38
|
-
brandLogoUrl: string | null;
|
|
39
|
-
defaultVisibility: RecordingVisibility;
|
|
40
|
-
ownerEmail?: string;
|
|
41
|
-
} | null;
|
|
42
|
-
members: {
|
|
43
|
-
id: string;
|
|
44
|
-
email: string;
|
|
45
|
-
role: MemberRole;
|
|
46
|
-
joinedAt: string | null;
|
|
47
|
-
invitedAt: string | null;
|
|
48
|
-
}[];
|
|
49
|
-
invites: {
|
|
50
|
-
id: string;
|
|
51
|
-
email: string;
|
|
52
|
-
role: MemberRole;
|
|
53
|
-
createdAt: string;
|
|
54
|
-
}[];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export default function OrganizationSettingsRoute() {
|
|
58
|
-
const t = useT();
|
|
59
|
-
const { session } = useSession();
|
|
60
|
-
const email = session?.email ?? "";
|
|
61
|
-
|
|
62
|
-
const { data, isLoading } = useActionQuery<OrganizationStateResponse>(
|
|
63
|
-
"list-organization-state",
|
|
64
|
-
undefined,
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const organization = data?.organization ?? null;
|
|
68
|
-
const members = data?.members ?? [];
|
|
69
|
-
const invites = data?.invites ?? [];
|
|
70
|
-
|
|
71
|
-
const isOwner = !!(
|
|
72
|
-
organization?.ownerEmail && organization.ownerEmail === email
|
|
73
|
-
);
|
|
74
|
-
const currentRole: MemberRole = useMemo(() => {
|
|
75
|
-
const me = members.find((m) => m.email === email);
|
|
76
|
-
if (me) return me.role;
|
|
77
|
-
if (isOwner) return "admin";
|
|
78
|
-
return "member";
|
|
79
|
-
}, [members, email, isOwner]);
|
|
80
|
-
|
|
81
|
-
const isAdmin = currentRole === "admin" || currentRole === "owner" || isOwner;
|
|
82
|
-
|
|
83
|
-
if (isLoading) {
|
|
84
|
-
return (
|
|
85
|
-
<>
|
|
86
|
-
<PageHeader>
|
|
87
|
-
<h1 className="text-base font-semibold tracking-tight truncate">
|
|
88
|
-
{t("organizationSettings.title")}
|
|
89
|
-
</h1>
|
|
90
|
-
</PageHeader>
|
|
91
|
-
<div className="p-6 max-w-3xl mx-auto space-y-4">
|
|
92
|
-
<Skeleton className="h-10 w-64" />
|
|
93
|
-
<Skeleton className="h-32 w-full" />
|
|
94
|
-
<Skeleton className="h-48 w-full" />
|
|
95
|
-
</div>
|
|
96
|
-
</>
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (!organization) {
|
|
101
|
-
return (
|
|
102
|
-
<>
|
|
103
|
-
<PageHeader>
|
|
104
|
-
<h1 className="text-base font-semibold tracking-tight truncate">
|
|
105
|
-
{t("organizationSettings.title")}
|
|
106
|
-
</h1>
|
|
107
|
-
</PageHeader>
|
|
108
|
-
<div className="p-6 max-w-2xl mx-auto">
|
|
109
|
-
<Card>
|
|
110
|
-
<CardContent className="py-12 text-center text-sm text-muted-foreground">
|
|
111
|
-
{t("organizationSettings.noOrganization")}
|
|
112
|
-
</CardContent>
|
|
113
|
-
</Card>
|
|
114
|
-
</div>
|
|
115
|
-
</>
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return (
|
|
120
|
-
<>
|
|
121
|
-
<PageHeader>
|
|
122
|
-
<h1 className="text-base font-semibold tracking-tight truncate">
|
|
123
|
-
{t("organizationSettings.namedTitle", { name: organization.name })}
|
|
124
|
-
</h1>
|
|
125
|
-
</PageHeader>
|
|
126
|
-
<div className="p-6 max-w-3xl mx-auto space-y-6">
|
|
127
|
-
<p className="text-sm text-muted-foreground">
|
|
128
|
-
{t("organizationSettings.description")}
|
|
129
|
-
</p>
|
|
130
|
-
|
|
131
|
-
{isAdmin ? (
|
|
132
|
-
<BrandingEditor
|
|
133
|
-
organizationId={organization.id}
|
|
134
|
-
initialName={organization.name}
|
|
135
|
-
initialBrandColor={organization.brandColor}
|
|
136
|
-
initialBrandLogoUrl={organization.brandLogoUrl}
|
|
137
|
-
initialDefaultVisibility={organization.defaultVisibility}
|
|
138
|
-
/>
|
|
139
|
-
) : (
|
|
140
|
-
<Card>
|
|
141
|
-
<CardHeader>
|
|
142
|
-
<CardTitle className="text-base">
|
|
143
|
-
{t("brandingEditor.title")}
|
|
144
|
-
</CardTitle>
|
|
145
|
-
</CardHeader>
|
|
146
|
-
<CardContent>
|
|
147
|
-
<div className="flex items-center gap-3">
|
|
148
|
-
<div
|
|
149
|
-
className="h-10 w-10 rounded"
|
|
150
|
-
style={{ background: organization.brandColor }}
|
|
151
|
-
/>
|
|
152
|
-
<div>
|
|
153
|
-
<div className="font-medium">{organization.name}</div>
|
|
154
|
-
<div className="text-xs text-muted-foreground">
|
|
155
|
-
{t("organizationSettings.adminsOnlyBranding")}
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
</div>
|
|
159
|
-
</CardContent>
|
|
160
|
-
</Card>
|
|
161
|
-
)}
|
|
162
|
-
|
|
163
|
-
<Card>
|
|
164
|
-
<CardHeader className="flex flex-row items-center justify-between">
|
|
165
|
-
<CardTitle className="text-base flex items-center gap-2">
|
|
166
|
-
<IconUsers className="size-4 text-primary" />
|
|
167
|
-
{t("organizationSettings.members")}
|
|
168
|
-
</CardTitle>
|
|
169
|
-
{isAdmin ? <InviteDialog organizationId={organization.id} /> : null}
|
|
170
|
-
</CardHeader>
|
|
171
|
-
<CardContent>
|
|
172
|
-
<MembersList
|
|
173
|
-
organizationId={organization.id}
|
|
174
|
-
members={members}
|
|
175
|
-
currentUserEmail={email}
|
|
176
|
-
currentUserRole={currentRole}
|
|
177
|
-
/>
|
|
178
|
-
</CardContent>
|
|
179
|
-
</Card>
|
|
180
|
-
|
|
181
|
-
<Card>
|
|
182
|
-
<CardHeader>
|
|
183
|
-
<CardTitle className="text-base flex items-center gap-2">
|
|
184
|
-
<IconMailFast className="size-4 text-primary" />
|
|
185
|
-
{t("organizationSettings.pendingInvites")}
|
|
186
|
-
</CardTitle>
|
|
187
|
-
</CardHeader>
|
|
188
|
-
<CardContent>
|
|
189
|
-
{invites.length === 0 ? (
|
|
190
|
-
<div className="py-4 text-center text-sm text-muted-foreground">
|
|
191
|
-
{t("organizationSettings.noPendingInvites")}
|
|
192
|
-
</div>
|
|
193
|
-
) : (
|
|
194
|
-
<div className="rounded-md border">
|
|
195
|
-
<Table>
|
|
196
|
-
<TableHeader>
|
|
197
|
-
<TableRow>
|
|
198
|
-
<TableHead>{t("organizationSettings.email")}</TableHead>
|
|
199
|
-
<TableHead className="w-32">
|
|
200
|
-
{t("organizationSettings.role")}
|
|
201
|
-
</TableHead>
|
|
202
|
-
<TableHead className="w-32">
|
|
203
|
-
{t("organizationSettings.sent")}
|
|
204
|
-
</TableHead>
|
|
205
|
-
</TableRow>
|
|
206
|
-
</TableHeader>
|
|
207
|
-
<TableBody>
|
|
208
|
-
{invites.map((inv) => (
|
|
209
|
-
<TableRow key={inv.id}>
|
|
210
|
-
<TableCell className="font-medium">
|
|
211
|
-
{inv.email}
|
|
212
|
-
</TableCell>
|
|
213
|
-
<TableCell>
|
|
214
|
-
<Badge variant="outline" className="capitalize">
|
|
215
|
-
{inv.role.replace("-", " ")}
|
|
216
|
-
</Badge>
|
|
217
|
-
</TableCell>
|
|
218
|
-
<TableCell className="text-muted-foreground text-sm">
|
|
219
|
-
{new Date(inv.createdAt).toLocaleDateString()}
|
|
220
|
-
</TableCell>
|
|
221
|
-
</TableRow>
|
|
222
|
-
))}
|
|
223
|
-
</TableBody>
|
|
224
|
-
</Table>
|
|
225
|
-
</div>
|
|
226
|
-
)}
|
|
227
|
-
</CardContent>
|
|
228
|
-
</Card>
|
|
229
|
-
</div>
|
|
230
|
-
</>
|
|
231
|
-
);
|
|
232
|
-
}
|