@agent-native/core 0.197.0-nightly-20260929180759 → 0.197.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/CHANGELOG.md +10 -0
  3. package/corpus/templates/assets/CHANGELOG.md +8 -0
  4. package/corpus/templates/calendar/CHANGELOG.md +18 -0
  5. package/corpus/templates/clips/CHANGELOG.md +19 -0
  6. package/corpus/templates/content/CHANGELOG.md +16 -0
  7. package/corpus/templates/content/actions/_database-property-setup.ts +33 -2
  8. package/corpus/templates/content/actions/_database-setup-discovery.ts +4 -4
  9. package/corpus/templates/content/actions/_property-utils.ts +9 -1
  10. package/corpus/templates/content/actions/_relation-values.ts +291 -0
  11. package/corpus/templates/content/actions/configure-document-property.ts +53 -1
  12. package/corpus/templates/content/actions/search-content-database-rows.ts +124 -0
  13. package/corpus/templates/content/actions/set-document-property.ts +21 -1
  14. package/corpus/templates/content/agent-native.config.ts +5 -0
  15. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +892 -189
  16. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +7 -2
  17. package/corpus/templates/content/app/components/editor/database/navigation-state.ts +4 -1
  18. package/corpus/templates/content/app/hooks/use-content-database.ts +16 -2
  19. package/corpus/templates/content/app/hooks/use-document-properties.ts +65 -5
  20. package/corpus/templates/content/app/i18n-data.ts +28 -0
  21. package/corpus/templates/content/changelog/2026-09-28-link-rows-across-collections-with-relation-properties.md +6 -0
  22. package/corpus/templates/content/changelog/2026-09-29-related-pages-can-be-loaded-past-the-first-25-results.md +6 -0
  23. package/corpus/templates/content/parity/matrix.md +1 -1
  24. package/corpus/templates/content/parity/matrix.ts +1 -0
  25. package/corpus/templates/content/shared/api.ts +21 -0
  26. package/corpus/templates/content/shared/properties.ts +19 -0
  27. package/corpus/templates/crm/CHANGELOG.md +8 -0
  28. package/corpus/templates/design/CHANGELOG.md +33 -0
  29. package/corpus/templates/design/actions/clone-creative-context-design-native.ts +12 -3
  30. package/corpus/templates/design/actions/generate-design.ts +2 -29
  31. package/corpus/templates/design/actions/update-design.ts +33 -8
  32. package/corpus/templates/design/app/components/design/design-canvas/LocalNetworkAccessPrompt.tsx +2 -2
  33. package/corpus/templates/design/changelog/2026-09-29-design-tweak-controls-stay-intact-when-an-edit-contains-inva.md +6 -0
  34. package/corpus/templates/design/changelog/2026-09-29-the-chrome-fallback-guide-shows-the-local-network-allow-opti.md +6 -0
  35. package/corpus/templates/design/shared/tweak-definition-schema.ts +30 -0
  36. package/corpus/templates/dispatch/CHANGELOG.md +4 -0
  37. package/corpus/templates/mail/CHANGELOG.md +34 -0
  38. package/corpus/templates/mail/app/components/email/EmailList.tsx +29 -11
  39. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +4 -4
  40. package/corpus/templates/mail/app/pages/InboxPage.tsx +34 -10
  41. package/corpus/templates/mail/changelog/2026-09-29-mail-loading-layout.md +6 -0
  42. package/corpus/templates/slides/CHANGELOG.md +19 -0
  43. package/dist/automation/index.d.ts +1 -1
  44. package/dist/client/AppShellSkeleton.js +97 -54
  45. package/dist/collab/awareness.d.ts +2 -2
  46. package/dist/collab/struct-routes.d.ts +1 -1
  47. package/dist/file-upload/actions/upload-image.d.ts +2 -2
  48. package/dist/notifications/routes.d.ts +2 -2
  49. package/dist/observability/routes.d.ts +7 -7
  50. package/dist/secrets/routes.d.ts +6 -6
  51. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  52. package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
  53. package/dist/triggers/actions/manage-automation.d.ts +2 -2
  54. package/docs/content/versioning-and-stability.mdx +3 -2
  55. package/package.json +4 -4
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+
3
+ export const tweakDefinitionsSchema = z.array(
4
+ z.object({
5
+ id: z.string(),
6
+ label: z.string(),
7
+ type: z.enum([
8
+ "color-swatch",
9
+ "color-swatches",
10
+ "segment",
11
+ "slider",
12
+ "toggle",
13
+ ]),
14
+ options: z
15
+ .array(
16
+ z.object({
17
+ label: z.string(),
18
+ value: z.string(),
19
+ color: z.string().optional(),
20
+ }),
21
+ )
22
+ .optional(),
23
+ min: z.number().optional(),
24
+ max: z.number().optional(),
25
+ step: z.number().optional(),
26
+ defaultValue: z.union([z.string(), z.number(), z.boolean()]),
27
+ cssVar: z.string().optional(),
28
+ unit: z.string().optional(),
29
+ }),
30
+ );
@@ -5,6 +5,10 @@ time from the command menu (Cmd+K → "What's new").
5
5
 
6
6
  ## 2026-09-28
7
7
 
8
+ ### Improved
9
+
10
+ - Dispatch admin pages now use a consistent settings layout.
11
+
8
12
  ### Fixed
9
13
 
10
14
  - Desktop sign-in now carries over to Mail and other eligible apps.
@@ -3,16 +3,50 @@
3
3
  All notable user-facing changes to Agent-Native Mail are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new") or from Settings.
5
5
 
6
+ ## 2026-09-29
7
+
8
+ ### Improved
9
+
10
+ - Mail loading screens match the current inbox layout.
11
+ - Mail shows the first messages sooner and keeps them visible while background sync finishes.
12
+
13
+ ### Fixed
14
+
15
+ - Existing compose drafts keep their attachments when revised
16
+ - Scheduled email changes refresh the inbox and schedule list
17
+
6
18
  ## 2026-09-28
7
19
 
8
20
  ### Improved
9
21
 
22
+ - AI triage now appears before Automations in Mail settings.
23
+ - The app canvas now meets the right chat sidebar without a dark seam or rounded corner.
24
+ - Google sign-in shows progress while authentication finishes.
25
+ - General and AI triage settings now share a consistent full-width layout.
26
+ - Mail background work stays within its time budget and checks fewer connected accounts per sweep.
27
+ - Mail onboarding saves inbox rules before provider setup and sorts recent mail after connection.
28
+ - Mail syncs large inboxes progressively with shared Gmail quota control and resumable bulk archiving.
29
+ - Settings now opens in the new layout, with Account, Connections, Agent, Organization, and app sections.
10
30
  - Builder credit notices appear above sidebar actions in a full-width layout.
11
31
  - Mail automation rules use a consistent neutral color treatment.
12
32
  - Open the current agent conversation in a full-page view
13
33
 
14
34
  ### Fixed
15
35
 
36
+ - Your inbox now loads without getting stuck on loading placeholders.
37
+ - Inbox category tabs stay in the inbox view
38
+ - Inbox rule sorting now offers a retry when starting fails and reports undo errors.
39
+ - Large archives finish without manual retries
40
+ - Mail actions follow the active inbox tab and ignore rows retained from previous filters
41
+ - Mail automations start from the current inbox point after setup or a sync gap.
42
+ - Mail preserves sorting progress and undo access when a retry is needed
43
+ - Mail retries Gmail status errors and avoids repeating Google sign-in in manual setup.
44
+ - Mail setup keeps saved rules available when browser storage or onboarding completion fails.
45
+ - Mail setup stays recoverable when model settings or sorting status checks fail.
46
+ - Mail updates an existing compose draft in place when you ask for a revision.
47
+ - Rule backfills show why recent mail could not be processed
48
+ - Scheduled Mail jobs recover after interrupted sweeps without duplicating sends
49
+ - Search results no longer trigger a duplicate mailbox fetch
16
50
  - Avoid automatic retries after Gmail quota cooldowns
17
51
 
18
52
  ## 2026-09-27
@@ -350,22 +350,40 @@ function MailLoadingState({
350
350
  return (
351
351
  <div className="flex h-full flex-col" ref={containerRef}>
352
352
  <div className="flex-1 overflow-y-auto">
353
- {Array.from({ length: 12 }).map((_, i) => (
354
- <div
355
- key={i}
356
- className="flex h-[48px] items-center gap-3 px-4 sm:h-[38px]"
357
- >
358
- <div className="h-2 w-2 shrink-0 animate-pulse rounded-full bg-muted" />
359
- <div className="h-3 w-28 animate-pulse rounded bg-muted" />
360
- <div className="h-3 flex-1 animate-pulse rounded bg-muted" />
361
- <div className="h-3 w-12 animate-pulse rounded bg-muted" />
362
- </div>
363
- ))}
353
+ <MailLoadingRows count={12} />
364
354
  </div>
365
355
  </div>
366
356
  );
367
357
  }
368
358
 
359
+ function MailLoadingRows({ count }: { count: number }) {
360
+ return (
361
+ <div aria-hidden="true">
362
+ {Array.from({ length: count }, (_, index) => (
363
+ <div
364
+ key={index}
365
+ className="email-list-row flex h-[48px] items-center px-3 sm:h-[38px]"
366
+ >
367
+ <div className="me-2 flex h-full w-5 shrink-0 items-center justify-center">
368
+ <div className="h-[7px] w-[7px] animate-pulse rounded-full bg-muted" />
369
+ </div>
370
+ <div className="me-3 flex w-[100px] shrink-0 items-center sm:w-[160px]">
371
+ <div className="h-3 w-3/4 animate-pulse rounded bg-muted" />
372
+ </div>
373
+ {index % 2 === 1 && (
374
+ <div className="me-2 h-4 w-14 shrink-0 animate-pulse rounded bg-muted" />
375
+ )}
376
+ <div className="flex min-w-0 flex-1 items-center gap-1.5 overflow-hidden">
377
+ <div className="h-3 w-36 shrink-0 animate-pulse rounded bg-muted" />
378
+ <div className="h-3 min-w-0 flex-1 animate-pulse rounded bg-muted" />
379
+ </div>
380
+ <div className="ms-2 h-3 w-12 shrink-0 animate-pulse rounded bg-muted" />
381
+ </div>
382
+ ))}
383
+ </div>
384
+ );
385
+ }
386
+
369
387
  const RATE_LIMIT_RETRY_MS = 60_000;
370
388
 
371
389
  function getRateLimitRetryMs(error: {
@@ -1607,11 +1607,11 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1607
1607
  <>
1608
1608
  {tabsLoading ? (
1609
1609
  <nav className="flex w-max shrink-0 items-center gap-2 sm:w-auto sm:flex-1 sm:min-w-0 sm:overflow-x-auto sm:hide-scrollbar">
1610
- {[1, 2, 3].map((i) => (
1610
+ {[96, 128, 98, 72, 84, 62].map((width, index) => (
1611
1611
  <span
1612
- key={i}
1613
- className="h-4 shrink-0 rounded bg-muted animate-pulse"
1614
- style={{ width: `${48 + i * 12}px` }}
1612
+ key={index}
1613
+ className="h-8 shrink-0 rounded-md bg-muted animate-pulse"
1614
+ style={{ width }}
1615
1615
  />
1616
1616
  ))}
1617
1617
  </nav>
@@ -14,6 +14,7 @@ import { EmailList, InboxZero } from "@/components/email/EmailList";
14
14
  import { EmailThread } from "@/components/email/EmailThread";
15
15
  import { IntegrationsSidebar } from "@/components/email/IntegrationsSidebar";
16
16
  import { GoogleConnectBanner } from "@/components/GoogleConnectBanner";
17
+ import { Skeleton } from "@/components/ui/skeleton";
17
18
  import { useAccountFilter } from "@/hooks/use-account-filter";
18
19
  import {
19
20
  FOCUS_COMPOSE_DRAFT_EVENT,
@@ -170,6 +171,26 @@ function ContactPanel({
170
171
  );
171
172
  }
172
173
 
174
+ function ContactPanelSkeleton() {
175
+ return (
176
+ <div aria-hidden="true" className="flex h-full flex-col">
177
+ <div className="space-y-1.5 px-4 pt-4 pb-3">
178
+ <Skeleton className="h-4 w-8" />
179
+ <Skeleton className="h-3 w-40 max-w-full" />
180
+ <Skeleton className="h-3 w-28" />
181
+ </div>
182
+ <div className="flex items-center gap-2 px-4 py-2">
183
+ <Skeleton className="size-5 rounded-md" />
184
+ <Skeleton className="h-3 w-14" />
185
+ </div>
186
+ <div className="mx-4 h-px bg-border/30" />
187
+ <div className="px-4 py-2">
188
+ <Skeleton className="h-3 w-20" />
189
+ </div>
190
+ </div>
191
+ );
192
+ }
193
+
173
194
  function formatSidebarSender(thread: ThreadSummary): string {
174
195
  if (thread.messageCount <= 1) {
175
196
  return thread.latestMessage.from.name || thread.latestMessage.from.email;
@@ -1115,17 +1136,20 @@ export function InboxPage() {
1115
1136
  )}
1116
1137
  </div>
1117
1138
 
1118
- {/* Right contact panel — hidden during initial load or when maximized */}
1119
- {!emailListLoading && !(hasThread && isMaximized) && (
1139
+ {!(hasThread && isMaximized) && (
1120
1140
  <div className="mail-contact-side-panel hidden w-[260px] shrink-0 flex-col border-s border-border/30 bg-muted/50 dark:bg-[var(--mail-sidebar-surface)]">
1121
- <ContactPanel
1122
- emailId={contactEmailId}
1123
- contactEmail={sidebarContactEmail}
1124
- emails={emails}
1125
- allowEmailSearch={
1126
- !isInboxView || (googleStatus.isSuccess && !isGoogleConnected)
1127
- }
1128
- />
1141
+ {emailListLoading ? (
1142
+ <ContactPanelSkeleton />
1143
+ ) : (
1144
+ <ContactPanel
1145
+ emailId={contactEmailId}
1146
+ contactEmail={sidebarContactEmail}
1147
+ emails={emails}
1148
+ allowEmailSearch={
1149
+ !isInboxView || (googleStatus.isSuccess && !isGoogleConnected)
1150
+ }
1151
+ />
1152
+ )}
1129
1153
  </div>
1130
1154
  )}
1131
1155
  </div>
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-09-29
4
+ ---
5
+
6
+ Mail loading screens match the current inbox layout.
@@ -3,15 +3,34 @@
3
3
  All notable user-facing changes to Agent-Native Slides are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
+ ## 2026-09-29
7
+
8
+ ### Improved
9
+
10
+ - Settings pages now share the account layout, with dated updates that load in batches.
11
+
6
12
  ## 2026-09-28
7
13
 
8
14
  ### Improved
9
15
 
16
+ - The app canvas now meets the right chat sidebar without a dark seam or rounded corner.
17
+ - Center the home search field and keep prompt submission responsive while AI readiness is checked.
18
+ - Rotation controls are smaller and easier to see.
19
+ - Settings now opens in the new layout, with Account, Connections, Agent, Organization, and app sections.
20
+ - Slides now batch short deck creation and explain when layout measurements are not available.
10
21
  - Starter prompts now sit below the chat composer
11
22
  - The deck list search and import controls stay legible on narrow screens.
12
23
 
13
24
  ### Fixed
14
25
 
26
+ - Canceling reference selection restores the prompt and its attachments.
27
+ - Deck editor waits for sign-in before loading its workspace shell.
28
+ - Existing decks open to Recent, and the home prompt stays interactive while AI readiness is checked.
29
+ - Preserve home prompt state across imports and clarify upload, website, and template search results.
30
+ - Slides preserves backward text selections when editing starts
31
+ - Slides text editing keeps the caret steady through focus changes and input-method composition
32
+ - The home import control no longer clips its label
33
+ - Typing in Slides agent chat keeps every character in order
15
34
  - The model picker shows available models when AI is configured.
16
35
  - Reference attachments stay available when a new deck prompt starts a chat.
17
36
  - Template menus stay available when you hover over a card.
@@ -139,8 +139,8 @@ export declare function createAutomationCallbackHandler(runtime: AutomationRunti
139
139
  duplicate?: undefined;
140
140
  eventId?: undefined;
141
141
  } | {
142
+ error?: undefined;
142
143
  accepted: boolean;
143
144
  duplicate: boolean;
144
145
  eventId: string;
145
- error?: undefined;
146
146
  }>;
@@ -69,68 +69,102 @@ function PromptLibraryLayout() {
69
69
  }, "data-agent-native-app-skeleton-gallery-grid": "true", children: Array.from({ length: 8 }, (_, index) => (_jsxs("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [_jsx(Block, { style: { width: "100%", height: 144, borderRadius: 12 } }), _jsx(Block, { style: { width: `${56 + (index % 3) * 12}%`, height: 12 } })] }, index))) })] }) })] }));
70
70
  }
71
71
  function MailLayout() {
72
- return (_jsxs(_Fragment, { children: [_jsxs("aside", { "aria-hidden": "true", "data-agent-native-app-skeleton-sidebar": "true", style: {
72
+ return (_jsxs("div", { style: {
73
+ display: "flex",
74
+ minWidth: 0,
75
+ flex: 1,
76
+ flexDirection: "column",
77
+ containerName: "agent-native-main",
78
+ containerType: "inline-size",
79
+ }, children: [_jsxs("header", { "aria-hidden": "true", "data-agent-native-mail-header": "true", style: {
73
80
  display: "flex",
74
- width: 56,
81
+ height: 48,
75
82
  flexShrink: 0,
76
- flexDirection: "column",
77
83
  alignItems: "center",
78
- gap: 20,
79
- borderRight: BORDER,
80
- padding: "16px 8px",
81
- }, children: [_jsx(Block, { style: { width: 32, height: 32, borderRadius: 8 } }), Array.from({ length: 6 }, (_, index) => (_jsx(Block, { style: { width: 28, height: 28, borderRadius: 8 } }, index)))] }), _jsxs("aside", { "aria-hidden": "true", "data-agent-native-mail-folders": "true", style: {
82
- display: "flex",
83
- width: 216,
84
- flexShrink: 0,
85
- flexDirection: "column",
86
- gap: 14,
87
- borderRight: BORDER,
88
- padding: 16,
89
- }, children: [_jsx(Block, { style: { width: 112, height: 16, marginBottom: 8 } }), Array.from({ length: 9 }, (_, index) => (_jsxs("div", { style: { display: "flex", alignItems: "center", gap: 10 }, children: [_jsx(Block, { style: { width: 16, height: 16, borderRadius: 5 } }), _jsx(Block, { style: { width: `${50 + (index % 3) * 12}%`, height: 13 } })] }, index)))] }), _jsxs("main", { style: {
84
+ gap: 4,
85
+ borderBottom: BORDER,
86
+ padding: "0 8px",
87
+ overflowX: "auto",
88
+ overflowY: "hidden",
89
+ overscrollBehaviorX: "contain",
90
+ scrollbarWidth: "none",
91
+ }, children: [_jsx("div", { style: {
92
+ position: "sticky",
93
+ insetInlineStart: 0,
94
+ zIndex: 1,
95
+ flexShrink: 0,
96
+ backgroundColor: "hsl(var(--background, 0 0% 100%))",
97
+ }, children: _jsx(Block, { style: { width: 32, height: 36, borderRadius: 6 } }) }), _jsxs("div", { style: {
98
+ display: "flex",
99
+ width: "max-content",
100
+ flexShrink: 0,
101
+ alignItems: "center",
102
+ gap: 8,
103
+ }, children: [_jsx(Block, { style: { width: 112, height: 32, borderRadius: 8 } }), [96, 128, 98, 72, 84, 62].map((width, index) => (_jsx(Block, { style: { width, height: 32, borderRadius: 8, flexShrink: 0 } }, index)))] }), _jsx("div", { style: { flex: 1, minWidth: 16 } }), _jsx(Block, { style: { width: 32, height: 36, borderRadius: 8, flexShrink: 0 } }), _jsx(Block, { style: { width: 32, height: 36, borderRadius: 8, flexShrink: 0 } }), _jsx(Block, { style: { width: 84, height: 32, borderRadius: 8, flexShrink: 0 } }), _jsx(Block, { style: { width: 26, height: 26, borderRadius: "50%", flexShrink: 0 } }), _jsx(Block, { style: { width: 32, height: 36, borderRadius: 8, flexShrink: 0 } }), _jsx(Block, { style: { width: 32, height: 36, borderRadius: 8, flexShrink: 0 } })] }), _jsxs("main", { style: {
90
104
  display: "flex",
91
105
  minWidth: 0,
92
106
  flex: 1,
93
- flexDirection: "column",
94
- }, children: [_jsxs("header", { "aria-hidden": "true", style: {
107
+ minHeight: 0,
108
+ }, children: [_jsx("section", { "aria-hidden": "true", "data-agent-native-mail-list": "true", style: {
95
109
  display: "flex",
96
- height: 52,
110
+ minWidth: 0,
111
+ flex: 1,
112
+ flexDirection: "column",
113
+ overflow: "hidden",
114
+ }, children: Array.from({ length: 12 }, (_, index) => (_jsxs("div", { style: {
115
+ display: "flex",
116
+ minHeight: 48,
117
+ flexShrink: 0,
118
+ alignItems: "center",
119
+ borderBottom: BORDER,
120
+ padding: "0 12px",
121
+ }, children: [_jsx("div", { style: {
122
+ display: "flex",
123
+ width: 20,
124
+ flexShrink: 0,
125
+ alignItems: "center",
126
+ justifyContent: "center",
127
+ marginRight: 8,
128
+ }, children: _jsx(Block, { style: { width: 7, height: 7, borderRadius: "50%" } }) }), _jsx("div", { "data-agent-native-mail-sender": "true", style: {
129
+ display: "flex",
130
+ width: 160,
131
+ flexShrink: 0,
132
+ alignItems: "center",
133
+ marginRight: 12,
134
+ }, children: _jsx(Block, { style: { width: `${88 + (index % 3) * 12}px`, height: 12 } }) }), index % 2 === 1 && (_jsx("div", { "data-agent-native-mail-label": "true", children: _jsx(Block, { style: {
135
+ width: 58,
136
+ height: 16,
137
+ borderRadius: 4,
138
+ marginRight: 8,
139
+ } }) })), _jsxs("div", { style: {
140
+ display: "flex",
141
+ minWidth: 0,
142
+ flex: 1,
143
+ alignItems: "center",
144
+ gap: 8,
145
+ }, children: [_jsx("div", { style: { width: 164, maxWidth: "75%", flexShrink: 0 }, children: _jsx(Block, { style: { width: "100%", height: 12 } }) }), _jsx("div", { style: { flex: 1, minWidth: 0 }, children: _jsx(Block, { style: { width: "100%", height: 12 } }) })] }), _jsx("div", { "data-agent-native-mail-time": "true", style: {
146
+ width: 52,
147
+ flexShrink: 0,
148
+ marginLeft: 8,
149
+ }, children: _jsx(Block, { style: { width: "100%", height: 11 } }) })] }, index))) }), _jsxs("aside", { "aria-hidden": "true", "data-agent-native-mail-inspector": "true", style: {
150
+ display: "flex",
151
+ width: 260,
97
152
  flexShrink: 0,
98
- alignItems: "center",
99
- gap: 12,
100
- borderBottom: BORDER,
101
- padding: "0 16px",
102
- }, children: [_jsx(Block, { style: { width: "min(55%, 440px)", height: 32, borderRadius: 10 } }), _jsx("div", { style: { flex: 1 } }), _jsx(Block, { style: { width: 32, height: 32, borderRadius: 8 } }), _jsx(Block, { style: { width: 32, height: 32, borderRadius: 8 } })] }), _jsxs("section", { "aria-hidden": "true", style: { display: "flex", minHeight: 0, flex: 1 }, children: [_jsxs("div", { "data-agent-native-mail-list": "true", style: {
153
+ flexDirection: "column",
154
+ borderLeft: BORDER,
155
+ padding: 16,
156
+ }, children: [_jsxs("div", { style: {
103
157
  display: "flex",
104
- width: 360,
105
- flexShrink: 0,
106
158
  flexDirection: "column",
107
- gap: 1,
108
- overflow: "hidden",
109
- borderRight: BORDER,
110
- padding: "8px 12px",
111
- }, children: [_jsxs("div", { style: { display: "flex", gap: 8, padding: "4px 0 12px" }, children: [_jsx(Block, { style: { width: 68, height: 24, borderRadius: 12 } }), _jsx(Block, { style: { width: 72, height: 24, borderRadius: 12 } })] }), Array.from({ length: 8 }, (_, index) => (_jsxs("div", { style: {
112
- display: "flex",
113
- minHeight: 76,
114
- flexDirection: "column",
115
- justifyContent: "center",
116
- gap: 9,
117
- borderBottom: BORDER,
118
- padding: "10px 4px",
119
- }, children: [_jsxs("div", { style: {
120
- display: "flex",
121
- justifyContent: "space-between",
122
- gap: 12,
123
- }, children: [_jsx(Block, { style: { width: `${42 + (index % 3) * 10}%`, height: 13 } }), _jsx(Block, { style: { width: 36, height: 10 } })] }), _jsx(Block, { style: { width: `${66 + (index % 3) * 8}%`, height: 12 } }), _jsx(Block, { style: { width: `${52 + (index % 4) * 8}%`, height: 10 } })] }, index)))] }), _jsxs("div", { style: {
159
+ alignItems: "flex-start",
160
+ gap: 6,
161
+ padding: "16px 0 12px",
162
+ }, children: [_jsx(Block, { style: { width: 32, height: 14 } }), _jsx(Block, { style: { width: 160, height: 12 } }), _jsx(Block, { style: { width: 112, height: 11 } })] }), _jsxs("div", { style: {
124
163
  display: "flex",
125
- minWidth: 0,
126
- flex: 1,
127
- flexDirection: "column",
128
- padding: 32,
129
- }, children: [_jsx(Block, { style: { width: "62%", height: 24, marginBottom: 12 } }), _jsx(Block, { style: { width: "38%", height: 13, marginBottom: 32 } }), Array.from({ length: 7 }, (_, index) => (_jsx(Block, { style: {
130
- width: `${92 - (index % 3) * 8}%`,
131
- height: 13,
132
- marginBottom: 14,
133
- } }, index)))] })] })] })] }));
164
+ alignItems: "center",
165
+ gap: 8,
166
+ padding: "8px 0",
167
+ }, children: [_jsx(Block, { style: { width: 20, height: 20, borderRadius: 6 } }), _jsx(Block, { style: { width: 56, height: 11 } })] }), _jsx("div", { style: { height: 1, margin: "0 0 0", borderTop: BORDER } }), _jsx(Block, { style: { width: 84, height: 11, marginTop: 8 } })] })] })] }));
134
168
  }
135
169
  function CalendarLayout() {
136
170
  return (_jsxs(_Fragment, { children: [_jsx(Sidebar, {}), _jsx(Frame, { children: _jsxs("section", { "aria-hidden": "true", style: {
@@ -451,12 +485,21 @@ export function AppShellSkeleton({ ariaLabel = "Loading application", height = "
451
485
  padding: 24px 0 0;
452
486
  }
453
487
  }
488
+ @container agent-native-main (max-width: 979px) {
489
+ [data-agent-native-mail-inspector] { display: none !important; }
490
+ }
491
+ [data-agent-native-mail-header]::-webkit-scrollbar { display: none; }
454
492
  @media (max-width: 767px) {
455
- [data-agent-native-app-skeleton-sidebar],
456
- [data-agent-native-mail-folders] { display: none !important; }
493
+ [data-agent-native-app-skeleton-sidebar] { display: none !important; }
457
494
  [data-agent-native-mail-list] { width: 100% !important; }
458
495
  [data-agent-native-app-skeleton-layout="mail"] [data-agent-native-mail-list] { flex: 1; }
459
- [data-agent-native-app-skeleton-layout="mail"] [data-agent-native-mail-list] + div { display: none !important; }
496
+ }
497
+ @media (max-width: 639px) {
498
+ [data-agent-native-mail-sender] { width: 100px !important; }
499
+ [data-agent-native-mail-label] { display: none !important; }
500
+ }
501
+ @media (min-width: 640px) {
502
+ [data-agent-native-mail-list] > div { min-height: 38px !important; }
460
503
  }
461
504
  ` }), content ?? _jsx(DefaultLayout, {})] }));
462
505
  }
@@ -38,19 +38,19 @@ export declare const postAwareness: import("h3").EventHandlerWithFetch<import("h
38
38
  error: string;
39
39
  states?: undefined;
40
40
  } | {
41
+ error?: undefined;
41
42
  states: {
42
43
  clientId: number;
43
44
  state: string;
44
45
  }[];
45
- error?: undefined;
46
46
  }>>;
47
47
  export declare const getActiveUsers: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
48
48
  error: string;
49
49
  users?: undefined;
50
50
  } | {
51
+ error?: undefined;
51
52
  users: {
52
53
  clientId: number;
53
54
  lastSeen: number;
54
55
  }[];
55
- error?: undefined;
56
56
  }>>;
@@ -1,6 +1,6 @@
1
1
  export declare const postCollabJson: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
2
- error: string;
3
2
  ok?: undefined;
3
+ error: string;
4
4
  } | {
5
5
  error?: undefined;
6
6
  ok: boolean;
@@ -35,9 +35,9 @@ declare const _default: import("../../action.js").ActionDefinition<{
35
35
  } | {
36
36
  error: string;
37
37
  url?: undefined;
38
- id?: undefined;
39
38
  provider?: undefined;
40
39
  configured?: undefined;
40
+ id?: undefined;
41
41
  } | {
42
42
  url: string;
43
43
  id: string;
@@ -46,9 +46,9 @@ declare const _default: import("../../action.js").ActionDefinition<{
46
46
  error?: undefined;
47
47
  } | {
48
48
  url?: undefined;
49
- id?: undefined;
50
49
  provider?: undefined;
51
50
  error: string;
52
51
  configured: boolean;
52
+ id?: undefined;
53
53
  }>;
54
54
  export default _default;
@@ -1,13 +1,13 @@
1
1
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
2
2
  count: number;
3
3
  updated?: undefined;
4
- ok?: undefined;
5
4
  error?: undefined;
5
+ ok?: undefined;
6
6
  } | {
7
7
  count?: undefined;
8
8
  updated: number;
9
- ok?: undefined;
10
9
  error?: undefined;
10
+ ok?: undefined;
11
11
  } | {
12
12
  count?: undefined;
13
13
  updated?: undefined;
@@ -27,38 +27,38 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
27
27
  thumbsUpRate: number;
28
28
  avgEvalScore: number;
29
29
  } | {
30
- id?: undefined;
31
30
  error: string;
32
31
  message: string;
33
32
  summary?: undefined;
34
33
  spans?: undefined;
34
+ id?: undefined;
35
35
  ok?: undefined;
36
36
  } | {
37
- id?: undefined;
38
- error?: undefined;
39
37
  message?: undefined;
40
38
  summary: import("./types.js").TraceSummary;
41
39
  spans: import("./types.js").TraceSpan[];
40
+ id?: undefined;
41
+ error?: undefined;
42
42
  ok?: undefined;
43
43
  } | {
44
- error?: undefined;
45
44
  message?: undefined;
46
45
  summary?: undefined;
47
46
  spans?: undefined;
48
47
  id: string;
48
+ error?: undefined;
49
49
  ok?: undefined;
50
50
  } | {
51
- id?: undefined;
52
51
  message?: undefined;
53
52
  summary?: undefined;
54
53
  spans?: undefined;
54
+ id?: undefined;
55
55
  error: any;
56
56
  ok?: undefined;
57
57
  } | {
58
- id?: undefined;
59
- error?: undefined;
60
58
  message?: undefined;
61
59
  summary?: undefined;
62
60
  spans?: undefined;
61
+ id?: undefined;
62
+ error?: undefined;
63
63
  ok: boolean;
64
64
  }>>;
@@ -63,31 +63,31 @@ export declare function createWriteSecretHandler(): import("h3").EventHandlerWit
63
63
  status?: undefined;
64
64
  ok?: undefined;
65
65
  } | {
66
+ error?: undefined;
66
67
  errorCode?: undefined;
67
68
  ok: boolean;
68
69
  status: string;
69
- error?: undefined;
70
70
  } | {
71
71
  error: string;
72
72
  removed?: undefined;
73
73
  ok?: undefined;
74
74
  } | {
75
+ error?: undefined;
75
76
  ok: boolean;
76
77
  removed: boolean;
77
- error?: undefined;
78
78
  }>>;
79
79
  export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
80
80
  error: string;
81
81
  note?: undefined;
82
82
  ok?: undefined;
83
83
  } | {
84
+ error?: undefined;
84
85
  ok: boolean;
85
86
  note?: undefined;
86
- error?: undefined;
87
87
  } | {
88
+ error?: undefined;
88
89
  ok: boolean;
89
90
  note: string;
90
- error?: undefined;
91
91
  } | {
92
92
  note?: undefined;
93
93
  ok: boolean;
@@ -115,11 +115,11 @@ export declare function createAdHocSecretHandler(): import("h3").EventHandlerWit
115
115
  } | {
116
116
  error: string;
117
117
  } | {
118
+ error?: undefined;
118
119
  ok: boolean;
119
120
  key: string;
120
- error?: undefined;
121
121
  } | {
122
+ error?: undefined;
122
123
  ok: boolean;
123
124
  removed: boolean;
124
- error?: undefined;
125
125
  }>>;
@@ -66,12 +66,12 @@ export declare function createAgentEngineApiKeyHandler(): import("h3").EventHand
66
66
  code: any;
67
67
  } | {
68
68
  errorCode?: undefined;
69
- error?: undefined;
70
69
  code?: undefined;
71
70
  ok: boolean;
72
71
  key: string;
73
72
  baseUrlKey?: string;
74
73
  scope: AgentEngineApiKeyScope;
75
74
  defaultModel?: import("./agent-engine-default-model-route.js").SavedKeyDefaultModelOutcome;
75
+ error?: undefined;
76
76
  }>>;
77
77
  export {};