@agent-native/core 0.195.0-nightly-20260927191158 → 0.195.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.
package/corpus/README.md CHANGED
@@ -31,4 +31,4 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core/corpus
31
31
 
32
32
  ## Generated Counts
33
33
 
34
- - template files: 10364
34
+ - template files: 10366
@@ -3,6 +3,24 @@
3
3
  All notable user-facing changes to Agent-Native Calendar 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-27
7
+
8
+ ### Improved
9
+
10
+ - Events created by the agent now show their date and time with a direct link to Calendar.
11
+ - Calendar shows cards for event changes and lets you start an event draft from a suggested time.
12
+
13
+ ### Fixed
14
+
15
+ - Calendar cards keep your booking link title when it matches the default label
16
+ - Calendar event cards retain Meet and Zoom links, show conferencing warnings, and format event times in your selected locale.
17
+ - Calendar event cards show times in the supplied offset or Calendar timezone and keep long working-location labels readable.
18
+ - Calendar time links keep separate drafts per timezone and preserve edits when reopened
19
+
20
+ ### Security
21
+
22
+ - Meeting links from invitations now open in a new tab that cannot redirect your Calendar tab
23
+
6
24
  ## 2026-09-26
7
25
 
8
26
  ### Improved
@@ -38,6 +38,7 @@ from the command menu (Cmd+K → "What's new") or from Settings.
38
38
 
39
39
  ### Fixed
40
40
 
41
+ - Fix Google sign-in and connect popups that stayed blank and asked you to allow pop-ups
41
42
  - Clips checks storage before upload and offers Builder.io or your own S3-compatible keys when storage is missing.
42
43
  - Clips desktop sign-in now accepts authenticator codes when two-step verification is enabled.
43
44
  - Keep Builder login state after blocked popups and show feedback while retrying storage connection checks
@@ -58,6 +58,12 @@ time from the command menu (Cmd+K → "What's new").
58
58
 
59
59
  - Search now ranks exact and partial title matches above incidental matches in document bodies.
60
60
 
61
+ ## 2026-09-18
62
+
63
+ ### Improved
64
+
65
+ - Mention a connected AI model in a comment, choose how it should respond, and keep the work in that thread.
66
+
61
67
  ## 2026-09-16
62
68
 
63
69
  ### Fixed
@@ -72,6 +78,10 @@ time from the command menu (Cmd+K → "What's new").
72
78
 
73
79
  ## 2026-09-14
74
80
 
81
+ ### Added
82
+
83
+ - Ask AI conversations now stay with the comment that started them, with inline progress, replies, recovery, and an explicit option to open the full conversation.
84
+
75
85
  ### Improved
76
86
 
77
87
  - Trash now uses table-native metadata filters to find nested Pages, preview their content, and empty reviewed scopes with progress that survives navigation.
@@ -7,6 +7,7 @@ from the command menu (Cmd+K → "What's new") or from Settings.
7
7
 
8
8
  ### Improved
9
9
 
10
+ - The Connect AI setup card now has even spacing above and below the composer.
10
11
  - Chrome local access guidance clarifies how to approve live editing
11
12
 
12
13
  ### Fixed
@@ -3,6 +3,22 @@
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-27
7
+
8
+ ### Improved
9
+
10
+ - Add AI inbox triage to Mail's first-run onboarding.
11
+ - Scheduled-send cards show the subject and local send time
12
+ - Successful draft, filter, and inbox rule changes now appear as concise action cards in chat.
13
+
14
+ ### Fixed
15
+
16
+ - Fixed the inbox crash when the sidebar is pinned
17
+ - Inbox navigation stays in a hamburger drawer, and filter tabs use available toolbar space before scrolling.
18
+ - Inbox sorting finishes reliably across larger mailboxes
19
+ - Scheduled email cards keep subjects that match the default label
20
+ - Scheduled sends reject timestamps outside the supported date range before saving.
21
+
6
22
  ## 2026-09-26
7
23
 
8
24
  ### Improved
@@ -40,6 +56,7 @@ time from the command menu (Cmd+K → "What's new") or from Settings.
40
56
 
41
57
  ### Fixed
42
58
 
59
+ - Fix Google sign-in and connect popups that stayed blank and asked you to allow pop-ups
43
60
  - Slack conversations can now use all available Mail actions
44
61
  - Editing importance rules preserves disabled instructions and recovers from duplicate-rule deletion failures
45
62
  - Handle astral Unicode letters in autocomplete word boundaries
@@ -20,6 +20,7 @@ import {
20
20
  import { useEffect, useMemo, useRef, useState } from "react";
21
21
  import { toast } from "sonner";
22
22
 
23
+ import { GoogleConnectBanner } from "@/components/GoogleConnectBanner";
23
24
  import { AiRulePromptField } from "@/components/settings/AiRulePromptField";
24
25
  import {
25
26
  JevAvailabilityError,
@@ -34,6 +35,7 @@ import {
34
35
  } from "@/components/ui/dialog";
35
36
  import { Input } from "@/components/ui/input";
36
37
  import { Progress } from "@/components/ui/progress";
38
+ import { Skeleton } from "@/components/ui/skeleton";
37
39
  import { Switch } from "@/components/ui/switch";
38
40
  import {
39
41
  useAiFilterBackfillStatus,
@@ -46,6 +48,7 @@ import {
46
48
  } from "@/hooks/use-automations";
47
49
  import { useSettings, useUpdateSettings } from "@/hooks/use-emails";
48
50
  import { useGoogleAuthStatus } from "@/hooks/use-google-auth";
51
+ import { shouldOfferGoogleOAuthSetup } from "@/lib/google-oauth-setup";
49
52
  import { labelTabHref } from "@/lib/inbox-tabs";
50
53
  import { getLabelStyle } from "@/lib/label-colors";
51
54
  import { cn } from "@/lib/utils";
@@ -131,6 +134,31 @@ function SetupRuleRow({
131
134
  );
132
135
  }
133
136
 
137
+ function SetupSurface({
138
+ embedded,
139
+ visible,
140
+ onClose,
141
+ children,
142
+ }: {
143
+ embedded: boolean;
144
+ visible: boolean;
145
+ onClose: () => void;
146
+ children: React.ReactNode;
147
+ }) {
148
+ if (!visible) return null;
149
+ if (embedded) return children;
150
+ return (
151
+ <Dialog
152
+ open={visible}
153
+ onOpenChange={(open) => {
154
+ if (!open) onClose();
155
+ }}
156
+ >
157
+ <DialogContent className="max-w-3xl">{children}</DialogContent>
158
+ </Dialog>
159
+ );
160
+ }
161
+
134
162
  function SetupResults({
135
163
  status,
136
164
  loading,
@@ -362,16 +390,26 @@ function SetupResults({
362
390
 
363
391
  export function AiInboxSetup({
364
392
  forceOpen = false,
393
+ embedded = false,
365
394
  onOpenChange,
395
+ onComplete,
396
+ onSkipSetup,
366
397
  }: {
367
398
  forceOpen?: boolean;
399
+ embedded?: boolean;
368
400
  onOpenChange?: (open: boolean) => void;
401
+ onComplete?: () => void;
402
+ onSkipSetup?: () => void;
369
403
  }) {
370
404
  const t = useT();
371
405
  const { data: settings } = useSettings();
372
406
  const { data: rules = [], isLoading: rulesLoading } = useAutomations();
373
407
  const googleStatus = useGoogleAuthStatus();
374
408
  const connected = (googleStatus.data?.accounts.length ?? 0) > 0;
409
+ const canOfferGoogleOAuthSetup = useMemo(
410
+ () => shouldOfferGoogleOAuthSetup(),
411
+ [],
412
+ );
375
413
  const jevAvailability = useActionQuery(
376
414
  "get-jev-availability",
377
415
  {},
@@ -455,6 +493,17 @@ export function AiInboxSetup({
455
493
  try {
456
494
  await updateSettings.mutateAsync({ aiSetupCompleted: true });
457
495
  onOpenChange?.(false);
496
+ onComplete?.();
497
+ } catch {
498
+ toast.error(t("mail.aiFilter.settingsFailed"));
499
+ }
500
+ };
501
+
502
+ const skipSetup = async () => {
503
+ if (saving || updateSettings.isPending) return;
504
+ try {
505
+ await updateSettings.mutateAsync({ aiSetupCompleted: true });
506
+ onSkipSetup?.();
458
507
  } catch {
459
508
  toast.error(t("mail.aiFilter.settingsFailed"));
460
509
  }
@@ -601,21 +650,81 @@ export function AiInboxSetup({
601
650
  customTagSelected &&
602
651
  (!customTagName.trim() || !customTagPrompt.trim());
603
652
 
653
+ if (
654
+ embedded &&
655
+ forceOpen &&
656
+ (googleStatus.isLoading || (connected && jevAvailability.isLoading))
657
+ ) {
658
+ return (
659
+ <div className="mx-auto w-full max-w-2xl space-y-6" aria-busy="true">
660
+ <Skeleton className="h-7 w-48" />
661
+ <Skeleton className="h-14 w-full" />
662
+ <Skeleton className="h-10 w-28" />
663
+ </div>
664
+ );
665
+ }
666
+
667
+ if (embedded && forceOpen && !connected) {
668
+ return (
669
+ <div className="mx-auto w-full max-w-2xl">
670
+ {googleStatus.data?.configured === true ||
671
+ canOfferGoogleOAuthSetup ||
672
+ googleStatus.isError ? (
673
+ <GoogleConnectBanner variant="hero" />
674
+ ) : (
675
+ <div className="py-6">
676
+ <h1 className="text-lg font-semibold">
677
+ {t("mail.googleConnect.connectTitle")}
678
+ </h1>
679
+ <p className="mt-2 text-sm text-muted-foreground">
680
+ {t("mail.googleConnect.connectionNotConfigured")}
681
+ </p>
682
+ </div>
683
+ )}
684
+ <div className="mt-6 flex justify-end">
685
+ <Button
686
+ variant="ghost"
687
+ size="sm"
688
+ onClick={() => void skipSetup()}
689
+ disabled={saving || updateSettings.isPending}
690
+ >
691
+ {t("mail.sort.aiSetupSkipSetup")}
692
+ </Button>
693
+ </div>
694
+ </div>
695
+ );
696
+ }
697
+
604
698
  return (
605
- <Dialog
606
- open={visible}
607
- onOpenChange={(open) => {
608
- if (!open) {
609
- onOpenChange?.(false);
610
- void complete();
611
- }
699
+ <SetupSurface
700
+ embedded={embedded}
701
+ visible={visible}
702
+ onClose={() => {
703
+ onOpenChange?.(false);
704
+ void complete();
612
705
  }}
613
706
  >
614
- <DialogContent className="max-w-3xl">
707
+ <>
615
708
  <div className="mx-auto flex w-full max-w-2xl flex-1 flex-col justify-center overflow-y-auto">
616
- <DialogHeader className="mb-6">
617
- <DialogTitle>{headline}</DialogTitle>
618
- </DialogHeader>
709
+ <div className="mb-6 flex items-center justify-between gap-3">
710
+ {embedded ? (
711
+ <h1 className="text-lg font-semibold">{headline}</h1>
712
+ ) : (
713
+ <DialogHeader>
714
+ <DialogTitle>{headline}</DialogTitle>
715
+ </DialogHeader>
716
+ )}
717
+ {embedded && step < 3 && onSkipSetup ? (
718
+ <Button
719
+ variant="ghost"
720
+ size="sm"
721
+ onClick={() => void skipSetup()}
722
+ disabled={saving || updateSettings.isPending}
723
+ >
724
+ {t("mail.sort.aiSetupSkipSetup")}
725
+ </Button>
726
+ ) : null}
727
+ </div>
619
728
  <div
620
729
  className="mb-8 flex items-center gap-2"
621
730
  role="progressbar"
@@ -866,7 +975,7 @@ export function AiInboxSetup({
866
975
  </Button>
867
976
  </div>
868
977
  </div>
869
- </DialogContent>
870
- </Dialog>
978
+ </>
979
+ </SetupSurface>
871
980
  );
872
981
  }
@@ -0,0 +1,25 @@
1
+ import {
2
+ registerFirstRunOnboardingExtension,
3
+ type FirstRunOnboardingExtensionProps,
4
+ } from "@agent-native/core/client/onboarding";
5
+
6
+ import { AiInboxSetup } from "./AiInboxSetup";
7
+
8
+ export function MailTriageFirstRun({
9
+ onComplete,
10
+ onSkip,
11
+ }: FirstRunOnboardingExtensionProps) {
12
+ return (
13
+ <AiInboxSetup
14
+ embedded
15
+ forceOpen
16
+ onComplete={onComplete}
17
+ onSkipSetup={onSkip}
18
+ />
19
+ );
20
+ }
21
+
22
+ registerFirstRunOnboardingExtension({
23
+ id: "mail-triage",
24
+ component: MailTriageFirstRun,
25
+ });
@@ -45,6 +45,7 @@ const messages = {
45
45
  aiSetupArchiveLabel: "Skip inbox",
46
46
  aiSetupSave: "Save setup",
47
47
  aiSetupSkip: "Skip for now",
48
+ aiSetupSkipSetup: "Skip inbox setup",
48
49
  aiSetupImportantHeadline: "What’s important",
49
50
  aiSetupSkipInboxHeadline: "What can skip your inbox",
50
51
  aiSetupTagsHeadline: "Pick your tabs",
@@ -446,6 +447,8 @@ const messages = {
446
447
  },
447
448
  googleConnect: {
448
449
  connectTitle: "Connect your Google account",
450
+ connectionNotConfigured:
451
+ "Gmail connection isn't configured for this app. Ask your administrator to enable it, or skip this step for now.",
449
452
  heroDescription:
450
453
  "Send and receive real email. Connect your Gmail account to get started.",
451
454
  setupIntro:
@@ -37,6 +37,7 @@ import {
37
37
  import type { LinksFunction } from "react-router";
38
38
 
39
39
  import { AppLayout } from "@/components/layout/AppLayout";
40
+ import "@/components/onboarding/register-first-run";
40
41
  import { Button } from "@/components/ui/button";
41
42
  import { Toaster } from "@/components/ui/sonner";
42
43
  import { AppToolkitProvider } from "@/components/ui/toolkit-provider";
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-09-27
4
+ ---
5
+
6
+ Add AI inbox triage to Mail's first-run onboarding.
@@ -3,6 +3,20 @@
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-27
7
+
8
+ ### Improved
9
+
10
+ - The Connect AI setup card now has even spacing above and below the composer.
11
+
12
+ ### Fixed
13
+
14
+ - Fixed deck edits that could be overwritten during unload
15
+ - Pagehide saves include queued edits and stay within the keepalive budget
16
+ - Text edits are preserved when leaving or reloading a deck, and link drops no longer navigate away.
17
+ - Text selection and bullet edits stay in their intended line and row
18
+ - The deck list stays available when a deck preview cannot be generated.
19
+
6
20
  ## 2026-09-26
7
21
 
8
22
  ### Added
@@ -25,6 +39,9 @@ time from the command menu (Cmd+K → "What's new").
25
39
 
26
40
  ### Fixed
27
41
 
42
+ - Clicking or double-clicking slide text near a box's edge now puts the caret or selection where you clicked, and pressing Enter in a styled bullet keeps its color and weight on the new bullet
43
+ - Reverted text edits no longer change slide spacing
44
+ - Slides keep their fit while text is edited and avoid saving changes that are erased.
28
45
  - Exports and Present are disabled when a deck has no slides
29
46
  - File uploads ask for storage only when requested, and chat stays disabled until an AI provider is connected.
30
47
  - Home suggestions and file imports handle provider failures more clearly.
@@ -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
  }>;
@@ -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;
@@ -16,6 +16,6 @@ export declare function createNotificationsHandler(): import("h3").EventHandlerW
16
16
  } | {
17
17
  count?: undefined;
18
18
  updated?: undefined;
19
- ok: boolean;
20
19
  error?: undefined;
20
+ ok: boolean;
21
21
  }>>;
@@ -20,9 +20,9 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
20
20
  thumbsUpRate: number;
21
21
  avgEvalScore: number;
22
22
  } | {
23
- id?: undefined;
24
23
  summary: import("./types.js").TraceSummary;
25
24
  spans: import("./types.js").TraceSpan[];
25
+ id?: undefined;
26
26
  error?: undefined;
27
27
  ok?: undefined;
28
28
  } | {
@@ -32,15 +32,15 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
32
32
  error?: undefined;
33
33
  ok?: undefined;
34
34
  } | {
35
- id?: undefined;
36
35
  summary?: undefined;
37
36
  spans?: undefined;
37
+ id?: undefined;
38
38
  error: any;
39
39
  ok?: undefined;
40
40
  } | {
41
- id?: undefined;
42
41
  summary?: undefined;
43
42
  spans?: undefined;
44
- ok: boolean;
43
+ id?: undefined;
45
44
  error?: undefined;
45
+ ok: boolean;
46
46
  }>>;
@@ -39,8 +39,8 @@ export declare function handleUpdateResource(event: any): Promise<import("./stor
39
39
  error: string;
40
40
  }>;
41
41
  export declare function handleDeleteResource(event: any): Promise<{
42
- error: string;
43
42
  ok?: undefined;
43
+ error: string;
44
44
  } | {
45
45
  error?: undefined;
46
46
  ok: boolean;
@@ -32,33 +32,33 @@ export declare function createListSecretsHandler(): import("h3").EventHandlerWit
32
32
  }>>;
33
33
  export declare function createWriteSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
34
34
  error: string;
35
- status?: undefined;
36
35
  ok?: undefined;
36
+ status?: undefined;
37
37
  } | {
38
+ error?: undefined;
38
39
  ok: boolean;
39
40
  status: string;
40
- error?: undefined;
41
41
  } | {
42
+ ok?: undefined;
42
43
  error: string;
43
44
  removed?: undefined;
44
- ok?: undefined;
45
45
  } | {
46
+ error?: undefined;
46
47
  ok: boolean;
47
48
  removed: boolean;
48
- error?: undefined;
49
49
  }>>;
50
50
  export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
51
+ ok?: undefined;
51
52
  error: string;
52
53
  note?: undefined;
53
- ok?: undefined;
54
54
  } | {
55
+ error?: undefined;
55
56
  ok: boolean;
56
57
  note?: undefined;
57
- error?: undefined;
58
58
  } | {
59
+ error?: undefined;
59
60
  ok: boolean;
60
61
  note: string;
61
- error?: undefined;
62
62
  } | {
63
63
  note?: undefined;
64
64
  ok: boolean;
@@ -78,11 +78,11 @@ export interface AdHocSecretPayload {
78
78
  export declare function createAdHocSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<AdHocSecretPayload[] | {
79
79
  error: string;
80
80
  } | {
81
+ error?: undefined;
81
82
  ok: boolean;
82
83
  key: string;
83
- error?: undefined;
84
84
  } | {
85
+ error?: undefined;
85
86
  ok: boolean;
86
87
  removed: boolean;
87
- error?: undefined;
88
88
  }>>;
@@ -1,9 +1,9 @@
1
1
  export declare function createAgentEngineOllamaModelsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
2
+ ok?: undefined;
2
3
  error: string;
3
4
  models?: undefined;
4
- ok?: undefined;
5
5
  } | {
6
+ error?: undefined;
6
7
  ok: boolean;
7
8
  models: string[];
8
- error?: undefined;
9
9
  }>>;
@@ -54,8 +54,8 @@ export declare function createRealtimeTokenHandler(): import("h3").EventHandlerW
54
54
  expiresAt?: undefined;
55
55
  ttlSeconds?: undefined;
56
56
  } | {
57
+ error?: undefined;
57
58
  token: string;
58
59
  expiresAt: string;
59
60
  ttlSeconds: number;
60
- error?: undefined;
61
61
  }>>;
@@ -13,7 +13,6 @@ declare const _default: import("../../action.js").ActionDefinition<{
13
13
  executionEngine?: string;
14
14
  executionCwd?: string;
15
15
  }, {
16
- deleted?: undefined;
17
16
  created: boolean;
18
17
  name: string;
19
18
  scope: "organization" | "personal";
@@ -24,6 +23,7 @@ declare const _default: import("../../action.js").ActionDefinition<{
24
23
  reasoningEffort: "auto" | "high" | "low" | "max" | "medium" | "minimal" | "none" | "xhigh";
25
24
  webhookPath: string;
26
25
  nextRun: string;
26
+ deleted?: undefined;
27
27
  enabled?: undefined;
28
28
  executionHostId?: undefined;
29
29
  executionEngine?: undefined;
@@ -45,11 +45,11 @@ declare const _default: import("../../action.js").ActionDefinition<{
45
45
  nextRun?: undefined;
46
46
  webhookPath?: undefined;
47
47
  } | {
48
- deleted?: undefined;
49
48
  created?: undefined;
50
49
  scope?: undefined;
51
50
  triggerType?: undefined;
52
51
  event?: undefined;
52
+ deleted?: undefined;
53
53
  name: string;
54
54
  enabled: boolean;
55
55
  schedule: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.195.0-nightly-20260927191158",
3
+ "version": "0.195.0",
4
4
  "description": "The agentic application framework for building autonomous agents with intuitive UIs",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -517,9 +517,9 @@
517
517
  "yaml": "^2.9.0",
518
518
  "yjs": "^13.6.32",
519
519
  "zod": "^4.3.6",
520
- "@agent-native/agentkit": "^0.4.1-nightly-20260927191158",
521
- "@agent-native/recap-cli": "0.5.46",
522
- "@agent-native/toolkit": "^0.22.3-nightly-20260927191158"
520
+ "@agent-native/recap-cli": "0.5.47",
521
+ "@agent-native/agentkit": "^0.4.1",
522
+ "@agent-native/toolkit": "^0.22.3"
523
523
  },
524
524
  "devDependencies": {
525
525
  "@ai-sdk/anthropic": "^3.0.71",