@agent-native/core 0.195.0 → 0.195.1-nightly-20260927200151
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/design/app/components/design/design-canvas/LocalNetworkAccessPrompt.tsx +82 -18
- package/corpus/templates/design/app/i18n/en-US.ts +6 -1
- package/corpus/templates/design/changelog/2026-09-27-local-access-setup-shows-chrome-permission-screenshots-and-c.md +6 -0
- package/corpus/templates/mail/app/components/onboarding/AiInboxSetup.tsx +4 -0
- package/corpus/templates/mail/changelog/2026-09-27-mail-setup-waits-for-first-run-onboarding-and-empty-importan.md +6 -0
- package/dist/automation/index.d.ts +1 -1
- package/dist/client/onboarding/first-run-startup-gate.js +3 -2
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +4 -4
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
- package/package.json +3 -3
package/corpus/README.md
CHANGED
package/corpus/templates/design/app/components/design/design-canvas/LocalNetworkAccessPrompt.tsx
CHANGED
|
@@ -4,7 +4,18 @@ import {
|
|
|
4
4
|
IconPlugConnectedX,
|
|
5
5
|
IconX,
|
|
6
6
|
} from "@tabler/icons-react";
|
|
7
|
+
import { useState } from "react";
|
|
7
8
|
|
|
9
|
+
import {
|
|
10
|
+
AlertDialog,
|
|
11
|
+
AlertDialogAction,
|
|
12
|
+
AlertDialogCancel,
|
|
13
|
+
AlertDialogContent,
|
|
14
|
+
AlertDialogDescription,
|
|
15
|
+
AlertDialogFooter,
|
|
16
|
+
AlertDialogHeader,
|
|
17
|
+
AlertDialogTitle,
|
|
18
|
+
} from "@/components/ui/alert-dialog";
|
|
8
19
|
import { Button } from "@/components/ui/button";
|
|
9
20
|
import {
|
|
10
21
|
Dialog,
|
|
@@ -30,6 +41,7 @@ export function LocalNetworkAccessPrompt({
|
|
|
30
41
|
proactive?: boolean;
|
|
31
42
|
}) {
|
|
32
43
|
const t = useT();
|
|
44
|
+
const [confirmClose, setConfirmClose] = useState(false);
|
|
33
45
|
// "unreachable" is the one confident case (permission is confirmed
|
|
34
46
|
// granted, so it's confirmed NOT the cause) — every other kind is
|
|
35
47
|
// deliberately hedged copy, never a diagnosed permission claim. See
|
|
@@ -69,35 +81,87 @@ export function LocalNetworkAccessPrompt({
|
|
|
69
81
|
"designCanvas.localBridge.permissionPromptSettingsInstructions",
|
|
70
82
|
{
|
|
71
83
|
defaultValue:
|
|
72
|
-
"Click the site
|
|
84
|
+
"Click the site controls icon to the left of the address bar, open Site settings, then allow access to apps on your device.",
|
|
73
85
|
},
|
|
74
86
|
);
|
|
75
87
|
const permissionHelp = showPermissionHelp ? (
|
|
76
88
|
<details className="text-xs text-muted-foreground">
|
|
77
89
|
<summary className="cursor-pointer">{noPromptLabel}</summary>
|
|
78
90
|
<p className="mt-2 leading-relaxed">{permissionSettingsInstructions}</p>
|
|
91
|
+
<img
|
|
92
|
+
src="/local-network-access-settings.jpg"
|
|
93
|
+
alt={permissionSettingsInstructions}
|
|
94
|
+
className="mt-3 block w-full rounded-md border border-border"
|
|
95
|
+
width={200}
|
|
96
|
+
height={140}
|
|
97
|
+
loading="lazy"
|
|
98
|
+
/>
|
|
79
99
|
</details>
|
|
80
100
|
) : null;
|
|
81
101
|
|
|
82
102
|
if (proactive) {
|
|
83
103
|
return (
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
104
|
+
<>
|
|
105
|
+
<Dialog
|
|
106
|
+
open
|
|
107
|
+
onOpenChange={(open) => {
|
|
108
|
+
if (!open) setConfirmClose(true);
|
|
109
|
+
}}
|
|
110
|
+
>
|
|
111
|
+
<DialogContent
|
|
112
|
+
className="sm:max-w-md"
|
|
113
|
+
overlayClassName="bg-[color-mix(in_srgb,var(--design-editor-accent-color)_22%,transparent)] backdrop-blur-[2px]"
|
|
114
|
+
>
|
|
115
|
+
<DialogHeader>
|
|
116
|
+
<DialogTitle className="flex items-center gap-2">
|
|
117
|
+
<IconPlugConnected className="size-4" />
|
|
118
|
+
{title}
|
|
119
|
+
</DialogTitle>
|
|
120
|
+
<DialogDescription>{description}</DialogDescription>
|
|
121
|
+
</DialogHeader>
|
|
122
|
+
<img
|
|
123
|
+
src="/local-network-access-permission.jpg"
|
|
124
|
+
alt={description}
|
|
125
|
+
className="block w-full rounded-md border border-border"
|
|
126
|
+
width={240}
|
|
127
|
+
height={150}
|
|
128
|
+
/>
|
|
129
|
+
{permissionHelp}
|
|
130
|
+
</DialogContent>
|
|
131
|
+
</Dialog>
|
|
132
|
+
<AlertDialog open={confirmClose} onOpenChange={setConfirmClose}>
|
|
133
|
+
<AlertDialogContent>
|
|
134
|
+
<AlertDialogHeader>
|
|
135
|
+
<AlertDialogTitle>
|
|
136
|
+
{t("designCanvas.localBridge.permissionCloseTitle", {
|
|
137
|
+
defaultValue: "Close setup?",
|
|
138
|
+
})}
|
|
139
|
+
</AlertDialogTitle>
|
|
140
|
+
<AlertDialogDescription>
|
|
141
|
+
{t("designCanvas.localBridge.permissionCloseDescription", {
|
|
142
|
+
defaultValue:
|
|
143
|
+
"Live editing won't work until you allow access in Chrome.",
|
|
144
|
+
})}
|
|
145
|
+
</AlertDialogDescription>
|
|
146
|
+
</AlertDialogHeader>
|
|
147
|
+
<AlertDialogFooter>
|
|
148
|
+
<AlertDialogCancel>
|
|
149
|
+
{t("designCanvas.localBridge.permissionCloseStay", {
|
|
150
|
+
defaultValue: "Keep setup open",
|
|
151
|
+
})}
|
|
152
|
+
</AlertDialogCancel>
|
|
153
|
+
<AlertDialogAction
|
|
154
|
+
className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
|
|
155
|
+
onClick={onDismiss}
|
|
156
|
+
>
|
|
157
|
+
{t("designCanvas.localBridge.permissionCloseAnyway", {
|
|
158
|
+
defaultValue: "Close anyway",
|
|
159
|
+
})}
|
|
160
|
+
</AlertDialogAction>
|
|
161
|
+
</AlertDialogFooter>
|
|
162
|
+
</AlertDialogContent>
|
|
163
|
+
</AlertDialog>
|
|
164
|
+
</>
|
|
101
165
|
);
|
|
102
166
|
}
|
|
103
167
|
|
|
@@ -1478,7 +1478,12 @@ export default {
|
|
|
1478
1478
|
"Choose Allow in Chrome's prompt to enable live editing.",
|
|
1479
1479
|
permissionPromptNoPrompt: "No Chrome prompt?",
|
|
1480
1480
|
permissionPromptSettingsInstructions:
|
|
1481
|
-
"Click the site
|
|
1481
|
+
"Click the site controls icon to the left of the address bar, open Site settings, then allow access to apps on your device.",
|
|
1482
|
+
permissionCloseTitle: "Close setup?",
|
|
1483
|
+
permissionCloseDescription:
|
|
1484
|
+
"Live editing won't work until you allow access in Chrome.",
|
|
1485
|
+
permissionCloseStay: "Keep setup open",
|
|
1486
|
+
permissionCloseAnyway: "Close anyway",
|
|
1482
1487
|
permissionPromptRetry: "Retry connection",
|
|
1483
1488
|
confirmationRetryExhausted:
|
|
1484
1489
|
"Live editor bridge did not confirm after several attempts.",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { sendToAgentChat } from "@agent-native/core/client/agent-chat";
|
|
2
2
|
import { useActionQuery } from "@agent-native/core/client/hooks";
|
|
3
3
|
import { useT } from "@agent-native/core/client/i18n";
|
|
4
|
+
import { useFirstRunOnboardingGateOwnsSurface } from "@agent-native/core/client/onboarding";
|
|
4
5
|
import { AI_FILTER_LABEL } from "@shared/ai-filter";
|
|
5
6
|
import type { AiFilterBackfillStatus } from "@shared/ai-filter-backfill";
|
|
6
7
|
import {
|
|
@@ -402,6 +403,7 @@ export function AiInboxSetup({
|
|
|
402
403
|
onSkipSetup?: () => void;
|
|
403
404
|
}) {
|
|
404
405
|
const t = useT();
|
|
406
|
+
const firstRunOnboardingOwnsSurface = useFirstRunOnboardingGateOwnsSurface();
|
|
405
407
|
const { data: settings } = useSettings();
|
|
406
408
|
const { data: rules = [], isLoading: rulesLoading } = useAutomations();
|
|
407
409
|
const googleStatus = useGoogleAuthStatus();
|
|
@@ -467,6 +469,7 @@ export function AiInboxSetup({
|
|
|
467
469
|
[rules],
|
|
468
470
|
);
|
|
469
471
|
const visible =
|
|
472
|
+
!firstRunOnboardingOwnsSurface &&
|
|
470
473
|
connected &&
|
|
471
474
|
!googleStatus.isLoading &&
|
|
472
475
|
!jevAvailability.isLoading &&
|
|
@@ -960,6 +963,7 @@ export function AiInboxSetup({
|
|
|
960
963
|
step < 3 &&
|
|
961
964
|
(saving ||
|
|
962
965
|
customTagIncomplete ||
|
|
966
|
+
(step === 1 && !importantPrompt.trim()) ||
|
|
963
967
|
(step === 2 && (!jevConfigured || rulesLoading)))
|
|
964
968
|
}
|
|
965
969
|
aria-busy={saving || (step === 2 && rulesLoading)}
|
|
@@ -139,8 +139,8 @@ export declare function createAutomationCallbackHandler(runtime: AutomationRunti
|
|
|
139
139
|
duplicate?: undefined;
|
|
140
140
|
eventId?: undefined;
|
|
141
141
|
} | {
|
|
142
|
-
error?: undefined;
|
|
143
142
|
accepted: boolean;
|
|
144
143
|
duplicate: boolean;
|
|
145
144
|
eventId: string;
|
|
145
|
+
error?: undefined;
|
|
146
146
|
}>;
|
|
@@ -71,12 +71,13 @@ export function FirstRunOnboardingStartupGate({ children, fallback = _jsx(AppShe
|
|
|
71
71
|
};
|
|
72
72
|
}, [shouldResolve]);
|
|
73
73
|
const ownsSurface = decision === "eligible";
|
|
74
|
-
const
|
|
74
|
+
const gateOwnsSurface = decision !== "ineligible";
|
|
75
|
+
const hideApp = gateOwnsSurface;
|
|
75
76
|
const app = shouldResolve ? (_jsx("div", { "aria-hidden": hideApp ? "true" : undefined, "data-first-run-app-hidden": hideApp ? "true" : undefined, style: {
|
|
76
77
|
display: "contents",
|
|
77
78
|
...(hideApp ? { visibility: "hidden" } : {}),
|
|
78
79
|
}, children: children })) : (children);
|
|
79
|
-
return (_jsxs(FirstRunOnboardingGateContext.Provider, { value:
|
|
80
|
+
return (_jsxs(FirstRunOnboardingGateContext.Provider, { value: gateOwnsSurface, children: [app, decision === "pending" && (_jsx(FirstRunOnboardingStartupLoading, { fallback: fallback })), ownsSurface && (_jsx(Suspense, { fallback: _jsx(FirstRunOnboardingStartupLoading, { fallback: fallback }), children: _jsx(FirstRunOnboarding, { initialFirstRun: true }) }))] }));
|
|
80
81
|
}
|
|
81
82
|
function FirstRunOnboardingStartupLoading({ fallback, }) {
|
|
82
83
|
return (_jsx("div", { role: "status", "aria-label": "Loading application", "data-first-run-startup-loading": "true", className: "fixed inset-0 z-[110] bg-background", children: _jsx("div", { inert: true, children: fallback }) }));
|
|
@@ -35,9 +35,9 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
35
35
|
} | {
|
|
36
36
|
error: string;
|
|
37
37
|
url?: undefined;
|
|
38
|
+
id?: undefined;
|
|
38
39
|
provider?: undefined;
|
|
39
40
|
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;
|
|
49
50
|
provider?: undefined;
|
|
50
51
|
error: string;
|
|
51
52
|
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
|
-
error?: undefined;
|
|
5
4
|
ok?: undefined;
|
|
5
|
+
error?: undefined;
|
|
6
6
|
} | {
|
|
7
7
|
count?: undefined;
|
|
8
8
|
updated: number;
|
|
9
|
-
error?: undefined;
|
|
10
9
|
ok?: undefined;
|
|
10
|
+
error?: 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
|
-
error?: undefined;
|
|
20
19
|
ok: boolean;
|
|
20
|
+
error?: undefined;
|
|
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;
|
|
23
24
|
summary: import("./types.js").TraceSummary;
|
|
24
25
|
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;
|
|
35
36
|
summary?: undefined;
|
|
36
37
|
spans?: undefined;
|
|
37
|
-
id?: undefined;
|
|
38
38
|
error: any;
|
|
39
39
|
ok?: undefined;
|
|
40
40
|
} | {
|
|
41
|
+
id?: undefined;
|
|
41
42
|
summary?: undefined;
|
|
42
43
|
spans?: undefined;
|
|
43
|
-
id?: undefined;
|
|
44
|
-
error?: undefined;
|
|
45
44
|
ok: boolean;
|
|
45
|
+
error?: undefined;
|
|
46
46
|
}>>;
|
package/dist/secrets/routes.d.ts
CHANGED
|
@@ -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
|
-
ok?: undefined;
|
|
36
35
|
status?: undefined;
|
|
36
|
+
ok?: undefined;
|
|
37
37
|
} | {
|
|
38
|
-
error?: undefined;
|
|
39
38
|
ok: boolean;
|
|
40
39
|
status: string;
|
|
40
|
+
error?: undefined;
|
|
41
41
|
} | {
|
|
42
|
-
ok?: undefined;
|
|
43
42
|
error: string;
|
|
44
43
|
removed?: undefined;
|
|
44
|
+
ok?: undefined;
|
|
45
45
|
} | {
|
|
46
|
-
error?: undefined;
|
|
47
46
|
ok: boolean;
|
|
48
47
|
removed: boolean;
|
|
48
|
+
error?: undefined;
|
|
49
49
|
}>>;
|
|
50
50
|
export declare function createTestSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
51
|
-
ok?: undefined;
|
|
52
51
|
error: string;
|
|
53
52
|
note?: undefined;
|
|
53
|
+
ok?: undefined;
|
|
54
54
|
} | {
|
|
55
|
-
error?: undefined;
|
|
56
55
|
ok: boolean;
|
|
57
56
|
note?: undefined;
|
|
58
|
-
} | {
|
|
59
57
|
error?: undefined;
|
|
58
|
+
} | {
|
|
60
59
|
ok: boolean;
|
|
61
60
|
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;
|
|
82
81
|
ok: boolean;
|
|
83
82
|
key: string;
|
|
84
|
-
} | {
|
|
85
83
|
error?: undefined;
|
|
84
|
+
} | {
|
|
86
85
|
ok: boolean;
|
|
87
86
|
removed: boolean;
|
|
87
|
+
error?: undefined;
|
|
88
88
|
}>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.195.
|
|
3
|
+
"version": "0.195.1-nightly-20260927200151",
|
|
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/recap-cli": "0.5.47",
|
|
521
520
|
"@agent-native/agentkit": "^0.4.1",
|
|
522
|
-
"@agent-native/toolkit": "^0.22.3"
|
|
521
|
+
"@agent-native/toolkit": "^0.22.3",
|
|
522
|
+
"@agent-native/recap-cli": "0.5.47"
|
|
523
523
|
},
|
|
524
524
|
"devDependencies": {
|
|
525
525
|
"@ai-sdk/anthropic": "^3.0.71",
|