@elizaos/ui 2.0.3-beta.6 → 2.0.3-beta.7
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/App.d.ts.map +1 -1
- package/App.js +30 -4
- package/api/app-shell-capabilities.d.ts +9 -0
- package/api/app-shell-capabilities.d.ts.map +1 -0
- package/api/app-shell-capabilities.js +39 -0
- package/api/auth-client.d.ts.map +1 -1
- package/api/auth-client.js +4 -1
- package/api/client-agent.d.ts.map +1 -1
- package/api/client-agent.js +35 -24
- package/api/client-base.d.ts +36 -0
- package/api/client-base.d.ts.map +1 -1
- package/api/client-base.js +79 -0
- package/api/client-chat.d.ts.map +1 -1
- package/api/client-chat.js +14 -5
- package/api/client-cloud.d.ts +49 -0
- package/api/client-cloud.d.ts.map +1 -1
- package/api/client-cloud.js +73 -6
- package/api/client-local-inference.d.ts.map +1 -1
- package/api/client-local-inference.js +5 -1
- package/api/desktop-external-api-base.d.ts +4 -0
- package/api/desktop-external-api-base.d.ts.map +1 -0
- package/api/desktop-external-api-base.js +43 -0
- package/api/desktop-http-transport.d.ts.map +1 -1
- package/api/desktop-http-transport.js +2 -28
- package/api/i18n-locale-client.d.ts.map +1 -1
- package/api/i18n-locale-client.js +12 -0
- package/cloud/billing/components/billing-tab.d.ts.map +1 -1
- package/cloud/billing/components/billing-tab.js +11 -14
- package/cloud/connectors/discord-gateway-connection.d.ts.map +1 -1
- package/cloud/connectors/discord-gateway-connection.js +39 -5
- package/cloud/connectors/index.d.ts +9 -0
- package/cloud/connectors/index.d.ts.map +1 -1
- package/cloud/connectors/index.js +14 -1
- package/cloud/handoff/run-cloud-agent-handoff.d.ts +10 -1
- package/cloud/handoff/run-cloud-agent-handoff.d.ts.map +1 -1
- package/cloud/handoff/run-cloud-agent-handoff.js +43 -7
- package/cloud/handoff/silent-repoint.d.ts +33 -0
- package/cloud/handoff/silent-repoint.d.ts.map +1 -0
- package/cloud/handoff/silent-repoint.js +55 -0
- package/cloud/instances/AgentDetailPage.d.ts.map +1 -1
- package/cloud/instances/AgentDetailPage.js +2 -2
- package/cloud/instances/components/agent-actions.d.ts.map +1 -1
- package/cloud/instances/components/agent-actions.js +1 -4
- package/cloud/instances/components/eliza-agents-table.d.ts.map +1 -1
- package/cloud/instances/components/eliza-agents-table.js +1 -10
- package/cloud/instances/index.d.ts +2 -5
- package/cloud/instances/index.d.ts.map +1 -1
- package/cloud/instances/index.js +2 -12
- package/cloud/organization/invite-member-dialog.d.ts.map +1 -1
- package/cloud/organization/invite-member-dialog.js +2 -5
- package/cloud/organization/members-tab.d.ts.map +1 -1
- package/cloud/organization/members-tab.js +4 -7
- package/cloud/public-pages/pages/app-auth/app-authorize-page.d.ts +9 -0
- package/cloud/public-pages/pages/app-auth/app-authorize-page.d.ts.map +1 -1
- package/cloud/public-pages/pages/app-auth/app-authorize-page.js +11 -1
- package/cloud/register-all.d.ts +0 -1
- package/cloud/register-all.d.ts.map +1 -1
- package/cloud/register-all.js +3 -7
- package/cloud/settings/index.d.ts +5 -6
- package/cloud/settings/index.d.ts.map +1 -1
- package/cloud/settings/index.js +5 -6
- package/cloud/settings/register-cloud-settings.d.ts +2 -2
- package/cloud/settings/register-cloud-settings.d.ts.map +1 -1
- package/cloud/settings/register-cloud-settings.js +127 -121
- package/cloud/shell/CloudRouterShell.d.ts.map +1 -1
- package/cloud/shell/CloudRouterShell.js +5 -0
- package/cloud-ui/components/drawer.d.ts.map +1 -1
- package/cloud-ui/components/drawer.js +1 -1
- package/cloud-ui/index.d.ts +0 -1
- package/cloud-ui/index.d.ts.map +1 -1
- package/cloud-ui/index.js +0 -1
- package/components/apps/app-identity.helpers.d.ts.map +1 -1
- package/components/apps/app-identity.helpers.js +8 -0
- package/components/chat/widgets/inbox-unread.d.ts.map +1 -1
- package/components/chat/widgets/inbox-unread.js +8 -1
- package/components/chat/widgets/needs-attention.d.ts.map +1 -1
- package/components/chat/widgets/needs-attention.js +18 -2
- package/components/chat/widgets/relationships-attention.d.ts.map +1 -1
- package/components/chat/widgets/relationships-attention.js +5 -0
- package/components/composites/chat/chat-composer.js +15 -15
- package/components/config-ui/ui-renderer.d.ts.map +1 -1
- package/components/config-ui/ui-renderer.js +1 -1
- package/components/local-inference/useHomeModelStatus.d.ts.map +1 -1
- package/components/local-inference/useHomeModelStatus.js +31 -1
- package/components/pages/SettingsView.d.ts.map +1 -1
- package/components/pages/SettingsView.js +1 -4
- package/components/pages/Springboard.d.ts.map +1 -1
- package/components/pages/Springboard.js +17 -1
- package/components/pages/SpringboardSurface.d.ts.map +1 -1
- package/components/pages/SpringboardSurface.js +14 -3
- package/components/settings/CloudAgentsSection.d.ts.map +1 -1
- package/components/settings/CloudAgentsSection.js +6 -8
- package/components/settings/CloudOverviewSection.d.ts +2 -0
- package/components/settings/CloudOverviewSection.d.ts.map +1 -0
- package/components/settings/CloudOverviewSection.js +81 -0
- package/components/settings/ConnectorsSection.d.ts +19 -0
- package/components/settings/ConnectorsSection.d.ts.map +1 -1
- package/components/settings/ConnectorsSection.js +72 -27
- package/components/settings/settings-sections.d.ts.map +1 -1
- package/components/settings/settings-sections.js +26 -4
- package/components/shell/ComputerUseApprovalOverlay.d.ts.map +1 -1
- package/components/shell/ComputerUseApprovalOverlay.js +12 -2
- package/components/shell/ContinuousChatOverlay.d.ts.map +1 -1
- package/components/shell/ContinuousChatOverlay.js +41 -8
- package/components/shell/ShellHeaderControls.d.ts.map +1 -1
- package/components/shell/ShellHeaderControls.js +1 -1
- package/components/shell/StartupFailureView.d.ts.map +1 -1
- package/components/shell/StartupFailureView.js +4 -2
- package/components/shell/__e2e__/home-screen-fixture.catalog-stub.d.ts +2 -0
- package/components/shell/__e2e__/home-screen-fixture.catalog-stub.d.ts.map +1 -1
- package/components/shell/__e2e__/home-screen-fixture.catalog-stub.js +8 -0
- package/components/views/ViewTileImage.d.ts +4 -4
- package/components/views/ViewTileImage.d.ts.map +1 -1
- package/components/views/ViewTileImage.js +26 -9
- package/config/boot-config-store.d.ts +10 -0
- package/config/boot-config-store.d.ts.map +1 -1
- package/first-run/CompactOnboarding.d.ts.map +1 -1
- package/first-run/CompactOnboarding.js +4 -2
- package/first-run/use-first-run-controller.d.ts +1 -0
- package/first-run/use-first-run-controller.d.ts.map +1 -1
- package/first-run/use-first-run-controller.js +133 -56
- package/hooks/useAvailableViews.d.ts +11 -2
- package/hooks/useAvailableViews.d.ts.map +1 -1
- package/hooks/useAvailableViews.js +49 -7
- package/hooks/useHorizontalPager.d.ts.map +1 -1
- package/hooks/useHorizontalPager.js +11 -4
- package/hooks/useViewCatalog.d.ts.map +1 -1
- package/hooks/useViewCatalog.js +5 -2
- package/hooks/view-catalog.d.ts +2 -0
- package/hooks/view-catalog.d.ts.map +1 -1
- package/hooks/view-catalog.js +1 -0
- package/index.d.ts +0 -1
- package/index.d.ts.map +1 -1
- package/index.js +0 -1
- package/layouts/content-layout/content-layout.d.ts.map +1 -1
- package/layouts/content-layout/content-layout.js +2 -1
- package/package.json +10 -10
- package/platform/browser-launch.d.ts.map +1 -1
- package/platform/browser-launch.js +2 -0
- package/state/AppContext.js +6 -4
- package/state/startup-coordinator.d.ts +2 -0
- package/state/startup-coordinator.d.ts.map +1 -1
- package/state/startup-coordinator.js +8 -0
- package/state/startup-first-run-options.d.ts +4 -0
- package/state/startup-first-run-options.d.ts.map +1 -0
- package/state/startup-first-run-options.js +18 -0
- package/state/startup-phase-hydrate.d.ts.map +1 -1
- package/state/startup-phase-hydrate.js +25 -14
- package/state/startup-phase-poll.d.ts.map +1 -1
- package/state/startup-phase-poll.js +60 -0
- package/state/startup-phase-restore.d.ts.map +1 -1
- package/state/startup-phase-restore.js +6 -19
- package/state/types.d.ts +0 -17
- package/state/types.d.ts.map +1 -1
- package/state/types.js +0 -13
- package/state/use-startup-shell-controller.d.ts.map +1 -1
- package/state/use-startup-shell-controller.js +3 -2
- package/state/useAppShellState.d.ts +5 -1
- package/state/useAppShellState.d.ts.map +1 -1
- package/state/useAppShellState.js +11 -3
- package/state/useChatCallbacks.d.ts +1 -0
- package/state/useChatCallbacks.d.ts.map +1 -1
- package/state/useChatCallbacks.js +53 -8
- package/state/useChatLifecycle.d.ts +1 -0
- package/state/useChatLifecycle.d.ts.map +1 -1
- package/state/useChatLifecycle.js +2 -2
- package/state/useChatSend.d.ts.map +1 -1
- package/state/useChatSend.js +72 -8
- package/state/useCloudState.d.ts.map +1 -1
- package/state/useCloudState.js +29 -1
- package/state/useDataLoaders.d.ts.map +1 -1
- package/state/useDataLoaders.js +9 -0
- package/state/useFirstRunCallbacks.d.ts.map +1 -1
- package/state/useFirstRunCallbacks.js +5 -0
- package/state/useLifecycleState.d.ts +0 -7
- package/state/useLifecycleState.d.ts.map +1 -1
- package/state/useLifecycleState.js +0 -24
- package/state/usePluginsSkillsState.d.ts +2 -2
- package/state/useWalletState.d.ts +3 -1
- package/state/useWalletState.d.ts.map +1 -1
- package/state/useWalletState.js +4 -2
- package/storybook/mock-providers.d.ts.map +1 -1
- package/storybook/mock-providers.js +2 -0
- package/styles/electrobun-mac-window-drag.css +7 -0
- package/widgets/WidgetHost.d.ts.map +1 -1
- package/widgets/WidgetHost.js +21 -3
- package/cloud/documents/DocumentsRoute.d.ts +0 -21
- package/cloud/documents/DocumentsRoute.d.ts.map +0 -1
- package/cloud/documents/DocumentsRoute.js +0 -45
- package/cloud/documents/DocumentsSection.d.ts +0 -15
- package/cloud/documents/DocumentsSection.d.ts.map +0 -1
- package/cloud/documents/DocumentsSection.js +0 -18
- package/cloud/documents/components/document-list.d.ts +0 -19
- package/cloud/documents/components/document-list.d.ts.map +0 -1
- package/cloud/documents/components/document-list.js +0 -75
- package/cloud/documents/components/document-query.d.ts +0 -15
- package/cloud/documents/components/document-query.d.ts.map +0 -1
- package/cloud/documents/components/document-query.js +0 -92
- package/cloud/documents/components/document-upload.d.ts +0 -16
- package/cloud/documents/components/document-upload.d.ts.map +0 -1
- package/cloud/documents/components/document-upload.js +0 -180
- package/cloud/documents/components/documents-page-client.d.ts +0 -20
- package/cloud/documents/components/documents-page-client.d.ts.map +0 -1
- package/cloud/documents/components/documents-page-client.js +0 -80
- package/cloud/documents/index.d.ts +0 -37
- package/cloud/documents/index.d.ts.map +0 -1
- package/cloud/documents/index.js +0 -45
- package/cloud/documents/lib/agents.d.ts +0 -23
- package/cloud/documents/lib/agents.d.ts.map +0 -1
- package/cloud/documents/lib/agents.js +0 -26
- package/cloud/documents/lib/documents.d.ts +0 -54
- package/cloud/documents/lib/documents.d.ts.map +0 -1
- package/cloud/documents/lib/documents.js +0 -118
- package/cloud/instances/AgentChatPage.d.ts +0 -13
- package/cloud/instances/AgentChatPage.d.ts.map +0 -1
- package/cloud/instances/AgentChatPage.js +0 -217
- package/cloud-ui/components/image-gen/empty-state.d.ts +0 -3
- package/cloud-ui/components/image-gen/empty-state.d.ts.map +0 -1
- package/cloud-ui/components/image-gen/empty-state.js +0 -12
- package/cloud-ui/components/image-gen/enhanced-loading.d.ts +0 -14
- package/cloud-ui/components/image-gen/enhanced-loading.d.ts.map +0 -1
- package/cloud-ui/components/image-gen/enhanced-loading.js +0 -23
- package/cloud-ui/components/image-gen/index.d.ts +0 -5
- package/cloud-ui/components/image-gen/index.d.ts.map +0 -1
- package/cloud-ui/components/image-gen/index.js +0 -4
- package/cloud-ui/components/image-gen/loading-state.d.ts +0 -2
- package/cloud-ui/components/image-gen/loading-state.d.ts.map +0 -1
- package/cloud-ui/components/image-gen/loading-state.js +0 -11
- package/cloud-ui/components/image-gen/prompt-input.d.ts +0 -32
- package/cloud-ui/components/image-gen/prompt-input.d.ts.map +0 -1
- package/cloud-ui/components/image-gen/prompt-input.js +0 -24
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
|
+
import { client } from "../../api/index.js";
|
|
4
|
+
import { isLimitedCloudAgentApiResourceUrl, supportsFullAppShellRoutes, } from "../../api/app-shell-capabilities.js";
|
|
3
5
|
import { cn } from "../../lib/utils.js";
|
|
4
6
|
import { resolveApiUrl } from "../../utils/asset-url.js";
|
|
5
7
|
import { emitViewInteraction } from "../../view-telemetry.js";
|
|
@@ -42,17 +44,22 @@ function springboardIconStyle(entry) {
|
|
|
42
44
|
function resolveTileImageUrl(url) {
|
|
43
45
|
if (!url)
|
|
44
46
|
return undefined;
|
|
45
|
-
if (/^[a-z][a-z0-9+.-]*:/i.test(url) || url.startsWith("//"))
|
|
46
|
-
return url;
|
|
47
|
+
if (/^[a-z][a-z0-9+.-]*:/i.test(url) || url.startsWith("//")) {
|
|
48
|
+
return isLimitedCloudAgentApiResourceUrl(url) ? undefined : url;
|
|
49
|
+
}
|
|
50
|
+
if ((url.startsWith("/api/") || url.startsWith("api/")) &&
|
|
51
|
+
!supportsFullAppShellRoutes(client.getBaseUrl())) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
47
54
|
return resolveApiUrl(url);
|
|
48
55
|
}
|
|
49
56
|
/**
|
|
50
57
|
* The shared visual core for view launch surfaces.
|
|
51
58
|
*
|
|
52
|
-
* Springboard tiles are app icons: deterministic
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
59
|
+
* Springboard tiles are app icons: paint the deterministic glyph tile
|
|
60
|
+
* underneath the concrete hero or generated branded fallback so icons never
|
|
61
|
+
* appear blank while image decoding catches up after a swipe. Catalog cards are
|
|
62
|
+
* previews and use the same image/fallback order at their larger size.
|
|
56
63
|
*
|
|
57
64
|
* A load failure emits a `hero-image-error` interaction event (best-effort,
|
|
58
65
|
* client-only) from preview surfaces so broken hero endpoints are observable
|
|
@@ -60,13 +67,23 @@ function resolveTileImageUrl(url) {
|
|
|
60
67
|
*/
|
|
61
68
|
export function ViewTileImage({ entry, source, containerClassName, glyphClassName = "h-6 w-6", imageTestId, }) {
|
|
62
69
|
const [failure, setFailure] = useState("none");
|
|
63
|
-
if (source === "springboard") {
|
|
64
|
-
return (_jsxs("div", { className: cn(containerClassName, "relative overflow-hidden"), "data-view-visual": entry.id, style: springboardIconStyle(entry), children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute -right-4 -top-5 h-14 w-14 rounded-full bg-white/25" }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 bg-[linear-gradient(160deg,rgba(255,255,255,0.36)_0%,rgba(255,255,255,0.08)_42%,rgba(0,0,0,0.2)_100%)]" }), _jsx(ViewIcon, { icon: entry.icon, label: entry.label, id: entry.id, className: cn(glyphClassName, "relative z-10 drop-shadow-[0_1px_3px_rgba(0,0,0,0.35)]") })] }));
|
|
65
|
-
}
|
|
66
70
|
const primaryUrl = failure === "none" ? resolveTileImageUrl(entry.imageUrl) : undefined;
|
|
67
71
|
const fallbackUrl = failure !== "all" ? resolveTileImageUrl(entry.fallbackImageUrl) : undefined;
|
|
68
72
|
const url = primaryUrl ?? fallbackUrl;
|
|
69
73
|
const hasFallback = Boolean(fallbackUrl && fallbackUrl !== primaryUrl);
|
|
74
|
+
if (source === "springboard") {
|
|
75
|
+
if (url) {
|
|
76
|
+
return (_jsxs("div", { className: cn(containerClassName, "relative overflow-hidden"), "data-view-visual": entry.id, style: springboardIconStyle(entry), children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute -right-4 -top-5 h-14 w-14 rounded-full bg-white/25" }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 bg-[linear-gradient(160deg,rgba(255,255,255,0.36)_0%,rgba(255,255,255,0.08)_42%,rgba(0,0,0,0.2)_100%)]" }), _jsx(ViewIcon, { icon: entry.icon, label: entry.label, id: entry.id, className: cn(glyphClassName, "relative z-0 drop-shadow-[0_1px_3px_rgba(0,0,0,0.35)]") }), _jsx("img", { src: url, alt: "", draggable: false, loading: "eager", decoding: "async", onError: () => {
|
|
77
|
+
emitViewInteraction({
|
|
78
|
+
source,
|
|
79
|
+
action: "hero-image-error",
|
|
80
|
+
viewId: entry.id,
|
|
81
|
+
});
|
|
82
|
+
setFailure(primaryUrl && hasFallback ? "primary" : "all");
|
|
83
|
+
}, className: "absolute inset-0 z-10 h-full w-full object-cover", "data-testid": imageTestId })] }));
|
|
84
|
+
}
|
|
85
|
+
return (_jsxs("div", { className: cn(containerClassName, "relative overflow-hidden"), "data-view-visual": entry.id, style: springboardIconStyle(entry), children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute -right-4 -top-5 h-14 w-14 rounded-full bg-white/25" }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-0 bg-[linear-gradient(160deg,rgba(255,255,255,0.36)_0%,rgba(255,255,255,0.08)_42%,rgba(0,0,0,0.2)_100%)]" }), _jsx(ViewIcon, { icon: entry.icon, label: entry.label, id: entry.id, className: cn(glyphClassName, "relative z-10 drop-shadow-[0_1px_3px_rgba(0,0,0,0.35)]") })] }));
|
|
86
|
+
}
|
|
70
87
|
if (url) {
|
|
71
88
|
return (_jsx("div", { className: containerClassName, children: _jsx("img", { src: url, alt: "", draggable: false, loading: "lazy", decoding: "async", onError: () => {
|
|
72
89
|
emitViewInteraction({
|
|
@@ -252,6 +252,16 @@ export interface AppBootConfig {
|
|
|
252
252
|
shortcutFlags?: {
|
|
253
253
|
naturalLanguage?: boolean;
|
|
254
254
|
};
|
|
255
|
+
/**
|
|
256
|
+
* Phase-0 cloud tier flip (MVP). When true, the first-run cloud-create path
|
|
257
|
+
* requests a SHARED (container-free, in-Worker) agent so the user chats
|
|
258
|
+
* instantly with no provisioning wait, instead of the default DEDICATED
|
|
259
|
+
* always-on container. Off by default: the seamless shared→dedicated handoff
|
|
260
|
+
* is not built yet, so making everyone shared would strand them there — this
|
|
261
|
+
* flag is for the instant-shared demo only. When false the create request is
|
|
262
|
+
* byte-identical to the dedicated path (sends `alwaysOn: true`).
|
|
263
|
+
*/
|
|
264
|
+
preferSharedCloudTier?: boolean;
|
|
255
265
|
/** Character catalog data — replaces cross-package import of catalog.json. */
|
|
256
266
|
characterCatalog?: CharacterCatalogData;
|
|
257
267
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boot-config-store.d.ts","sourceRoot":"","sources":["../../../../../src/config/boot-config-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"boot-config-store.d.ts","sourceRoot":"","sources":["../../../../../src/config/boot-config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,2BAA2B,EAC3B,mBAAmB,EACnB,+BAA+B,EAChC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAMzE,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mEAAmE;AACnE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,oDAAoD;AACpD,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,GAAG,CAAC;IACT,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAED,+EAA+E;AAC/E,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,gFAAgF;AAChF,MAAM,WAAW,wBAAwB;IACvC,+CAA+C;IAC/C,UAAU,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClD,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,mCAAmC;IAClD,mBAAmB,EAAE,OAAO,CAAC;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,2BAA2B,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,oCAAoC;IACnD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,OAAO,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAClE,gBAAgB,EAAE,CAChB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACnD,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,KACZ,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACnD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;IACV,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,OAAO,CAAC;QACZ,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,KACX,IAAI,CAAC;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,0EAA0E;IAC1E,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC;IAC3B,iFAAiF;IACjF,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACrD;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,+DAA+D;IAC/D,cAAc,CAAC,EAAE,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAC7D,0EAA0E;IAC1E,+BAA+B,CAAC,EAAE,CAChC,IAAI,EAAE,mCAAmC,KACtC,wBAAwB,GAAG,IAAI,CAAC;IACrC,wEAAwE;IACxE,6BAA6B,CAAC,EAAE,aAAa,CAAC;QAC5C,MAAM,EAAE,wBAAwB,CAAC;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;KACjD,CAAC,CAAC;IACH,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,2DAA2D;IAC3D,uBAAuB,CAAC,EAAE,MAAM,oBAAoB,CAAC;IACrD,6DAA6D;IAC7D,sBAAsB,CAAC,EAAE,6BAA6B,CAAC;IACvD,yDAAyD;IACzD,qBAAqB,CAAC,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAClE,4DAA4D;IAC5D,0BAA0B,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,+DAA+D;IAC/D,sBAAsB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9D,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACxD,iDAAiD;IACjD,cAAc,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACpD,4DAA4D;IAC5D,wBAAwB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IACpE,8DAA8D;IAC9D,0BAA0B,CAAC,EAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;IAC5E,mDAAmD;IACnD,WAAW,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAC;IAChE,4DAA4D;IAC5D,yBAAyB,CAAC,EAAE,aAAa,CAAC,8BAA8B,CAAC,CAAC;IAC1E,iFAAiF;IACjF,aAAa,CAAC,EAAE;QACd,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF;;;;;;;;OAQG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IACpD,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAMD,eAAO,MAAM,mBAAmB,EAAE,aAGjC,CAAC;AA+CF,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAIzD;AAED,gDAAgD;AAChD,wBAAgB,aAAa,IAAI,aAAa,CAE7C;AAmBD,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG;IACtE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC5C,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,sBAAsB,GAAG,IAAI,CAAC;IACxD,oBAAoB,EAAE,CACpB,WAAW,EAAE,MAAM,KAChB,yBAAyB,GAAG,IAAI,CAAC;CACvC,CA6BA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompactOnboarding.d.ts","sourceRoot":"","sources":["../../../../../src/first-run/CompactOnboarding.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"CompactOnboarding.d.ts","sourceRoot":"","sources":["../../../../../src/first-run/CompactOnboarding.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,YAAY,CAyatD"}
|
|
@@ -10,7 +10,7 @@ import { trayActionToOnboardingChoice } from "./onboarding-intent.js";
|
|
|
10
10
|
import { useFirstRunController } from "./use-first-run-controller.js";
|
|
11
11
|
export function CompactOnboarding() {
|
|
12
12
|
const c = useFirstRunController();
|
|
13
|
-
const { busyText, cloudError, error, submitting, step, draft, cloudOnly } = c;
|
|
13
|
+
const { busyText, cloudError, cloudLoginFallbackUrl, error, submitting, step, draft, cloudOnly, } = c;
|
|
14
14
|
const busy = submitting;
|
|
15
15
|
// Brand wordmark from the active branding (whitelabel seam) — falls back to
|
|
16
16
|
// the elizaOS name when no host branding is configured.
|
|
@@ -93,9 +93,11 @@ export function CompactOnboarding() {
|
|
|
93
93
|
// unavailable. Pull the URL out so we can render a real tappable button
|
|
94
94
|
// instead of dumping the raw string at the user.
|
|
95
95
|
const cloudLoginUrl = React.useMemo(() => {
|
|
96
|
+
if (cloudLoginFallbackUrl)
|
|
97
|
+
return cloudLoginFallbackUrl;
|
|
96
98
|
const match = (cloudError ?? "").match(/https?:\/\/\S+/);
|
|
97
99
|
return match ? match[0] : null;
|
|
98
|
-
}, [cloudError]);
|
|
100
|
+
}, [cloudError, cloudLoginFallbackUrl]);
|
|
99
101
|
// While an action is in flight, show its progress (busyText) — a stale
|
|
100
102
|
// cloud error from a previous attempt must not shadow "Starting" etc. When
|
|
101
103
|
// idle, surface the error (cloud login URLs render as a button below, so
|
|
@@ -19,6 +19,7 @@ export interface FirstRunController {
|
|
|
19
19
|
submitting: boolean;
|
|
20
20
|
busyText: string | null;
|
|
21
21
|
error: string | null;
|
|
22
|
+
cloudLoginFallbackUrl: string | null;
|
|
22
23
|
cloudError: string | null | undefined;
|
|
23
24
|
voice: FirstRunVoiceState;
|
|
24
25
|
microphone: MicrophonePermissionController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-first-run-controller.d.ts","sourceRoot":"","sources":["../../../../../src/first-run/use-first-run-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-first-run-controller.d.ts","sourceRoot":"","sources":["../../../../../src/first-run/use-first-run-controller.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA2BlE,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,KAAK,YAAY,EAWlB,MAAM,aAAa,CAAC;AASrB,OAAO,EACL,KAAK,8BAA8B,EAEpC,MAAM,6BAA6B,CAAC;AAoCrC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,8BAA8B,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IAEjB,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,WAAW,EAAE,mBAAmB,CAAC;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAoLD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAwmC1D"}
|
|
@@ -9,12 +9,14 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
9
9
|
import { Capacitor } from "@capacitor/core";
|
|
10
10
|
import * as React from "react";
|
|
11
11
|
import { client } from "../api/index.js";
|
|
12
|
+
import { supportsFullAppShellRoutes } from "../api/app-shell-capabilities.js";
|
|
12
13
|
import { getCloudAuthToken, isDirectCloudSharedAgentBase, } from "../api/client-cloud.js";
|
|
13
14
|
import { getDesktopRuntimeMode, invokeDesktopBridgeRequest } from "../bridge/index.js";
|
|
14
15
|
import { runCloudAgentHandoff } from "../cloud/handoff/run-cloud-agent-handoff.js";
|
|
16
|
+
import { silentlyRepointToDedicated } from "../cloud/handoff/silent-repoint.js";
|
|
15
17
|
import { getBootConfig } from "../config/boot-config.js";
|
|
16
18
|
import { canSelectLocalRuntime, isAndroid, isDesktopPlatform, isIOS, } from "../platform/init.js";
|
|
17
|
-
import { addAgentProfile, createPersistedActiveServer, loadPersistedActiveServer, savePersistedActiveServer, useAppSelectorShallow, } from "../state/index.js";
|
|
19
|
+
import { addAgentProfile, createPersistedActiveServer, loadPersistedActiveServer, removeAgentProfile, savePersistedActiveServer, useAppSelectorShallow, } from "../state/index.js";
|
|
18
20
|
import { isCloudStatusAuthenticated, preOpenWindow } from "../utils/index.js";
|
|
19
21
|
import { createVoiceCapture, } from "../voice/index.js";
|
|
20
22
|
import { isLocalAsrCaptureSupported } from "../voice/local-asr-capture.js";
|
|
@@ -32,6 +34,22 @@ const FIRST_RUN_LOCAL_ASR_AUTO_STOP = {
|
|
|
32
34
|
silenceMs: 850,
|
|
33
35
|
maxSpeechMs: 10_000,
|
|
34
36
|
};
|
|
37
|
+
function canProbeCloudStatus() {
|
|
38
|
+
const baseUrl = typeof client.getBaseUrl === "function" ? client.getBaseUrl().trim() : "";
|
|
39
|
+
if (!supportsFullAppShellRoutes(baseUrl))
|
|
40
|
+
return false;
|
|
41
|
+
if (baseUrl)
|
|
42
|
+
return true;
|
|
43
|
+
if (typeof window !== "undefined" && window.location.port === "2138") {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
async function getCloudStatusIfSupported() {
|
|
49
|
+
if (!canProbeCloudStatus())
|
|
50
|
+
return null;
|
|
51
|
+
return client.getCloudStatus().catch(() => null);
|
|
52
|
+
}
|
|
35
53
|
function isFirstRunBrowserSpeechRecognitionSupported() {
|
|
36
54
|
if (typeof window === "undefined")
|
|
37
55
|
return false;
|
|
@@ -196,11 +214,12 @@ function normalizeRemoteTarget(value) {
|
|
|
196
214
|
return parsed.toString().replace(/\/+$/, "");
|
|
197
215
|
}
|
|
198
216
|
export function useFirstRunController() {
|
|
199
|
-
const { completeFirstRun, elizaCloudConnected, elizaCloudLoginBusy, elizaCloudLoginError, handleCloudLogin, firstRunName, showActionBanner, setTab, setState, switchAgentProfile, uiLanguage, } = useAppSelectorShallow((s) => ({
|
|
217
|
+
const { completeFirstRun, elizaCloudConnected, elizaCloudLoginBusy, elizaCloudLoginError, elizaCloudLoginFallbackUrl, handleCloudLogin, firstRunName, showActionBanner, setTab, setState, switchAgentProfile, uiLanguage, } = useAppSelectorShallow((s) => ({
|
|
200
218
|
completeFirstRun: s.completeFirstRun,
|
|
201
219
|
elizaCloudConnected: s.elizaCloudConnected,
|
|
202
220
|
elizaCloudLoginBusy: s.elizaCloudLoginBusy,
|
|
203
221
|
elizaCloudLoginError: s.elizaCloudLoginError,
|
|
222
|
+
elizaCloudLoginFallbackUrl: s.elizaCloudLoginFallbackUrl,
|
|
204
223
|
handleCloudLogin: s.handleCloudLogin,
|
|
205
224
|
firstRunName: s.firstRunName,
|
|
206
225
|
showActionBanner: s.showActionBanner,
|
|
@@ -399,7 +418,7 @@ export function useFirstRunController() {
|
|
|
399
418
|
setState("firstRunProvider", "elizacloud");
|
|
400
419
|
const authWindow = preOpenWindow();
|
|
401
420
|
await handleCloudLogin(authWindow);
|
|
402
|
-
const cloudStatus = await
|
|
421
|
+
const cloudStatus = await getCloudStatusIfSupported();
|
|
403
422
|
let cloudConnectedForFinish = isCloudStatusAuthenticated(Boolean(cloudStatus?.connected), cloudStatus?.reason);
|
|
404
423
|
if (!cloudConnectedForFinish && getCloudAuthToken(client)) {
|
|
405
424
|
cloudConnectedForFinish = true;
|
|
@@ -572,6 +591,12 @@ export function useFirstRunController() {
|
|
|
572
591
|
bio,
|
|
573
592
|
...(opts.preferAgentId ? { preferAgentId: opts.preferAgentId } : {}),
|
|
574
593
|
...(opts.forceCreate ? { forceCreate: true } : {}),
|
|
594
|
+
// Phase-0 MVP: when the boot-config flag is on, request a SHARED
|
|
595
|
+
// (instant, container-free) agent on create instead of a dedicated
|
|
596
|
+
// always-on container. Default off → unchanged dedicated behavior.
|
|
597
|
+
...(getBootConfig().preferSharedCloudTier
|
|
598
|
+
? { preferSharedTier: true }
|
|
599
|
+
: {}),
|
|
575
600
|
onProgress: (status, detail) => setBusyText(detail ?? status),
|
|
576
601
|
});
|
|
577
602
|
const cloudAgentApiBase = selectedAgent.apiBase;
|
|
@@ -591,7 +616,7 @@ export function useFirstRunController() {
|
|
|
591
616
|
accessToken: authToken,
|
|
592
617
|
});
|
|
593
618
|
savePersistedActiveServer(activeServer);
|
|
594
|
-
addAgentProfile({
|
|
619
|
+
const sharedAgentProfile = addAgentProfile({
|
|
595
620
|
kind: "cloud",
|
|
596
621
|
label: activeServer.label,
|
|
597
622
|
...(activeServer.apiBase ? { apiBase: activeServer.apiBase } : {}),
|
|
@@ -601,64 +626,115 @@ export function useFirstRunController() {
|
|
|
601
626
|
});
|
|
602
627
|
persistMobileRuntimeModeForServerTarget("elizacloud");
|
|
603
628
|
setBusyText("Saving first-run profile");
|
|
604
|
-
//
|
|
605
|
-
//
|
|
606
|
-
//
|
|
607
|
-
//
|
|
608
|
-
|
|
609
|
-
try {
|
|
629
|
+
// Direct Cloud agent bases (shared REST adapters and dedicated
|
|
630
|
+
// <agent>.elizacloud.ai hosts) are chat runtimes, not full app-shell
|
|
631
|
+
// setup servers. They do not own /api/first-run, and browser localhost
|
|
632
|
+
// cannot safely POST to dedicated agent subdomains because of CORS.
|
|
633
|
+
if (supportsFullAppShellRoutes(cloudAgentApiBase)) {
|
|
610
634
|
await client.submitFirstRun(plan.payload);
|
|
611
635
|
}
|
|
612
|
-
catch (err) {
|
|
613
|
-
if (!isDirectCloudSharedAgentBase(client.getBaseUrl()))
|
|
614
|
-
throw err;
|
|
615
|
-
}
|
|
616
636
|
clearPersistedFirstRunState();
|
|
617
637
|
setBusyText(null);
|
|
618
638
|
completeFirstRun("chat", { launchCompanionOverlay: true });
|
|
619
|
-
// Seamless shared→
|
|
620
|
-
//
|
|
621
|
-
//
|
|
622
|
-
//
|
|
623
|
-
//
|
|
624
|
-
//
|
|
625
|
-
//
|
|
626
|
-
|
|
639
|
+
// Seamless shared→dedicated cloud-agent handoff (Phase 1). A freshly
|
|
640
|
+
// created SHARED agent serves the user instantly from the container-free
|
|
641
|
+
// REST adapter — but, being container-free, it never grows a dedicated
|
|
642
|
+
// base on its own. So when the shared-tier flag is on we ALSO provision a
|
|
643
|
+
// SEPARATE dedicated agent in the background and arm the existing handoff
|
|
644
|
+
// supervisor to poll IT, copy the conversation across, and switch over
|
|
645
|
+
// once it's running. Without that separate dedicated target the supervisor
|
|
646
|
+
// would poll the shared agent forever and time out (the reconciliation's
|
|
647
|
+
// "the branch fires but never resolves"). Best-effort: on failure the user
|
|
648
|
+
// stays on the (working) shared adapter.
|
|
649
|
+
//
|
|
650
|
+
// Flag OFF → `preferSharedTier` was never sent, so `selectedAgent` is the
|
|
651
|
+
// dedicated agent itself (not a shared base) and this branch is skipped:
|
|
652
|
+
// byte-identical to pre-Phase-1.
|
|
653
|
+
if (getBootConfig().preferSharedCloudTier &&
|
|
654
|
+
selectedAgent.created &&
|
|
627
655
|
isDirectCloudSharedAgentBase(cloudAgentApiBase)) {
|
|
628
|
-
const
|
|
629
|
-
//
|
|
630
|
-
//
|
|
631
|
-
//
|
|
632
|
-
//
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
//
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
+
const sharedAgentId = selectedAgent.agentId;
|
|
657
|
+
// Provision the dedicated agent ONCE, here, so a handoff retry re-arms
|
|
658
|
+
// the supervisor against the same dedicated id instead of minting a new
|
|
659
|
+
// dedicated agent each time. A plain create (no `preferSharedTier`)
|
|
660
|
+
// yields the DEDICATED always-on container — the migration target.
|
|
661
|
+
const dedicated = await client
|
|
662
|
+
.createCloudCompatAgent({
|
|
663
|
+
agentName: name,
|
|
664
|
+
...(bio.length ? { agentConfig: { bio } } : {}),
|
|
665
|
+
// Bypass the backend reuse guard: the org already has a non-terminal
|
|
666
|
+
// agent (the SHARED bridge we just created), so without forceCreate
|
|
667
|
+
// the server hands that one back and dedicatedAgentId === sharedId —
|
|
668
|
+
// the handoff probe then polls the shared base (which never grows a
|
|
669
|
+
// dedicated container) and times out, so the switch never fires.
|
|
670
|
+
forceCreate: true,
|
|
671
|
+
})
|
|
672
|
+
.catch(() => null);
|
|
673
|
+
const dedicatedAgentId = dedicated?.success && dedicated.data.agentId
|
|
674
|
+
? dedicated.data.agentId
|
|
675
|
+
: null;
|
|
676
|
+
if (dedicatedAgentId) {
|
|
677
|
+
// Surface the handoff lifecycle (migrating → switched | timed-out |
|
|
678
|
+
// failed) as typed phase events instead of swapping silently, and
|
|
679
|
+
// keep a `timed-out`/`failed` retryable rather than a silent permanent
|
|
680
|
+
// fallback. The supervisor's import is idempotent, so a retry just
|
|
681
|
+
// re-runs the same call against the same dedicated agent.
|
|
682
|
+
const cloudApiBase = getBootConfig().cloudApiBase || "https://www.elizacloud.ai";
|
|
683
|
+
runCloudAgentHandoff(sharedAgentId, () => client.startCloudAgentHandoff({
|
|
684
|
+
// Source: the shared agent the user is chatting on right now.
|
|
685
|
+
agentId: sharedAgentId,
|
|
686
|
+
sharedApiBase: cloudAgentApiBase,
|
|
687
|
+
// The shared adapter keeps one canonical conversation per agent id.
|
|
688
|
+
conversationId: sharedAgentId,
|
|
689
|
+
// Target: the separate dedicated agent we just kicked off. The
|
|
690
|
+
// supervisor polls THIS record for its container base.
|
|
691
|
+
dedicatedAgentId,
|
|
692
|
+
cloudApiBase,
|
|
693
|
+
authToken,
|
|
694
|
+
// The invisible switch (PR3). switchAgentProfile() would
|
|
695
|
+
// clearAllChatDrafts() (wiping the composer) and dispatch
|
|
696
|
+
// SWITCH_AGENT (re-entering the coordinator → full-screen
|
|
697
|
+
// <StartupScreen/> + dropped WS). The handoff instead re-points
|
|
698
|
+
// SILENTLY in place: persist the dedicated profile, seamlessly
|
|
699
|
+
// swap the API/WS base (no visible disconnect), keep the same
|
|
700
|
+
// conversation id mounted, and DON'T touch drafts or the
|
|
701
|
+
// coordinator. The transcript was already copied to the dedicated
|
|
702
|
+
// agent, so the chat surface stays live throughout the swap.
|
|
703
|
+
onSwitch: (containerBase) => {
|
|
704
|
+
silentlyRepointToDedicated({
|
|
705
|
+
containerBase,
|
|
706
|
+
authToken,
|
|
707
|
+
dedicatedAgentId,
|
|
708
|
+
});
|
|
709
|
+
},
|
|
710
|
+
}),
|
|
711
|
+
// Gated on switch-SUCCESS (`switched`/`switched-empty`): only once
|
|
712
|
+
// the user is on the dedicated and the transcript was copied is the
|
|
713
|
+
// transient shared bridge safe to delete. On `timed-out`/`failed`
|
|
714
|
+
// this never runs, so the user keeps the working shared bridge (and
|
|
715
|
+
// their conversation). Fire-and-forget: a failed delete just leaks a
|
|
716
|
+
// shared row — never blocks the (already switched) user.
|
|
717
|
+
() => {
|
|
718
|
+
// Drop the now-dead shared profile from the local registry. The
|
|
719
|
+
// switch already activated the dedicated profile (silent-repoint's
|
|
720
|
+
// addAgentProfile), so removing the shared one by its captured id
|
|
721
|
+
// can't touch the active dedicated profile — it just stops the
|
|
722
|
+
// orphaned `cloud:<sharedId>` row from lingering in the picker.
|
|
723
|
+
removeAgentProfile(sharedAgentProfile.id);
|
|
724
|
+
void client
|
|
725
|
+
.deleteSharedBridgeAgent(sharedAgentId, {
|
|
726
|
+
cloudApiBase,
|
|
727
|
+
authToken,
|
|
728
|
+
})
|
|
729
|
+
.then((res) => {
|
|
730
|
+
if (!res.success) {
|
|
731
|
+
console.warn(`[useFirstRunController] shared bridge delete failed (leaked row ${sharedAgentId}): ${res.error ?? "unknown"}`);
|
|
732
|
+
}
|
|
656
733
|
});
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
}));
|
|
734
|
+
});
|
|
735
|
+
}
|
|
660
736
|
}
|
|
661
|
-
}, [completeFirstRun,
|
|
737
|
+
}, [completeFirstRun, uiLanguage]);
|
|
662
738
|
const finishCloud = React.useCallback(async (sourceDraft) => {
|
|
663
739
|
syncIdentity(sourceDraft);
|
|
664
740
|
setError(null);
|
|
@@ -666,13 +742,13 @@ export function useFirstRunController() {
|
|
|
666
742
|
setState("firstRunProvider", "elizacloud");
|
|
667
743
|
let cloudConnectedForFinish = elizaCloudConnected;
|
|
668
744
|
if (!cloudConnectedForFinish) {
|
|
669
|
-
const cloudStatus = await
|
|
745
|
+
const cloudStatus = await getCloudStatusIfSupported();
|
|
670
746
|
cloudConnectedForFinish = isCloudStatusAuthenticated(Boolean(cloudStatus?.connected), cloudStatus?.reason);
|
|
671
747
|
}
|
|
672
748
|
if (firstRunNeedsCloudConnect(sourceDraft, cloudConnectedForFinish)) {
|
|
673
749
|
const authWindow = preOpenWindow();
|
|
674
750
|
await handleCloudLogin(authWindow);
|
|
675
|
-
const cloudStatus = await
|
|
751
|
+
const cloudStatus = await getCloudStatusIfSupported();
|
|
676
752
|
cloudConnectedForFinish = isCloudStatusAuthenticated(Boolean(cloudStatus?.connected), cloudStatus?.reason);
|
|
677
753
|
// Cloud = Steward: a present session token is authoritative even if the
|
|
678
754
|
// status proxy lags right after sign-in.
|
|
@@ -1120,6 +1196,7 @@ export function useFirstRunController() {
|
|
|
1120
1196
|
submitting,
|
|
1121
1197
|
busyText,
|
|
1122
1198
|
error,
|
|
1199
|
+
cloudLoginFallbackUrl: elizaCloudLoginFallbackUrl ?? null,
|
|
1123
1200
|
cloudError: elizaCloudLoginError,
|
|
1124
1201
|
voice,
|
|
1125
1202
|
microphone,
|
|
@@ -46,6 +46,8 @@ export interface ViewRegistryEntry {
|
|
|
46
46
|
pluginName: string;
|
|
47
47
|
/** Freeform tags used for search and filtering. */
|
|
48
48
|
tags?: string[];
|
|
49
|
+
/** Sort priority for launcher/nav surfaces (lower = earlier). */
|
|
50
|
+
order?: number;
|
|
49
51
|
/**
|
|
50
52
|
* When true, the view only appears when Developer Mode is enabled.
|
|
51
53
|
* Equivalent to `viewKind: "developer"`.
|
|
@@ -79,8 +81,15 @@ interface UseAvailableViewsResult {
|
|
|
79
81
|
/** Re-fetches immediately. */
|
|
80
82
|
refresh: () => void;
|
|
81
83
|
}
|
|
84
|
+
interface UseAvailableViewsOptions {
|
|
85
|
+
/**
|
|
86
|
+
* Network calls to /api/views are only useful once a backend-backed shell is
|
|
87
|
+
* paintable. Local builtin/registered views remain available while disabled.
|
|
88
|
+
*/
|
|
89
|
+
networkEnabled?: boolean;
|
|
90
|
+
}
|
|
82
91
|
export declare function withBuiltinShellViews(views: ViewRegistryEntry[]): ViewRegistryEntry[];
|
|
83
|
-
export declare function useAvailableViews(): UseAvailableViewsResult;
|
|
84
|
-
export declare function useRoutableViews(): UseAvailableViewsResult;
|
|
92
|
+
export declare function useAvailableViews(options?: UseAvailableViewsOptions): UseAvailableViewsResult;
|
|
93
|
+
export declare function useRoutableViews(options?: UseAvailableViewsOptions): UseAvailableViewsResult;
|
|
85
94
|
export {};
|
|
86
95
|
//# sourceMappingURL=useAvailableViews.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAvailableViews.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useAvailableViews.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"useAvailableViews.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useAvailableViews.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmBxE,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAChC,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,8CAA8C;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yFAAyF;IACzF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAiPD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,iBAAiB,EAAE,GACzB,iBAAiB,EAAE,CAErB;AASD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CA4CzB;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAazB"}
|
|
@@ -10,10 +10,14 @@
|
|
|
10
10
|
* plugins are installed or uninstalled at runtime.
|
|
11
11
|
*/
|
|
12
12
|
import { useEffect, useMemo, useSyncExternalStore } from "react";
|
|
13
|
+
import { client } from "../api/index.js";
|
|
14
|
+
import { supportsFullAppShellRoutes } from "../api/app-shell-capabilities.js";
|
|
13
15
|
import { fetchWithCsrf } from "../api/csrf-client.js";
|
|
14
16
|
import { getAppShellPageRegistrySnapshot, listAppShellPages, subscribeAppShellPages, } from "../app-shell-registry.js";
|
|
15
17
|
import { TAB_PATHS, titleForTab } from "../navigation/index.js";
|
|
16
18
|
import { getFrontendPlatform } from "../platform/platform-guards.js";
|
|
19
|
+
import { useAppSelector } from "../state/app-store.js";
|
|
20
|
+
import { isShellPaintable } from "../state/startup-coordinator.js";
|
|
17
21
|
import { startPolling } from "./resource-cache.js";
|
|
18
22
|
import { useCachedResource } from "./useCachedResource.js";
|
|
19
23
|
const POLL_INTERVAL_MS = 30_000;
|
|
@@ -113,6 +117,30 @@ const TAB_ICON_NAMES = {
|
|
|
113
117
|
logs: "ScrollText",
|
|
114
118
|
background: "ImageIcon",
|
|
115
119
|
};
|
|
120
|
+
const BUILTIN_TAB_ORDER = Object.fromEntries([
|
|
121
|
+
"settings",
|
|
122
|
+
"phone",
|
|
123
|
+
"messages",
|
|
124
|
+
"contacts",
|
|
125
|
+
"tasks",
|
|
126
|
+
"files",
|
|
127
|
+
"documents",
|
|
128
|
+
"browser",
|
|
129
|
+
"inventory",
|
|
130
|
+
"transcripts",
|
|
131
|
+
"memories",
|
|
132
|
+
"relationships",
|
|
133
|
+
"automations",
|
|
134
|
+
"triggers",
|
|
135
|
+
"plugins",
|
|
136
|
+
"skills",
|
|
137
|
+
"trajectories",
|
|
138
|
+
"runtime",
|
|
139
|
+
"database",
|
|
140
|
+
"logs",
|
|
141
|
+
"stream",
|
|
142
|
+
"desktop",
|
|
143
|
+
].map((id, index) => [id, index * 10]));
|
|
116
144
|
const BUILTIN_SHELL_VIEW_ENTRIES = Object.entries(TAB_PATHS).map(([id, path]) => ({
|
|
117
145
|
id,
|
|
118
146
|
label: titleForTab(id),
|
|
@@ -122,6 +150,7 @@ const BUILTIN_SHELL_VIEW_ENTRIES = Object.entries(TAB_PATHS).map(([id, path]) =>
|
|
|
122
150
|
available: true,
|
|
123
151
|
pluginName: "@elizaos/builtin",
|
|
124
152
|
tags: [id],
|
|
153
|
+
order: BUILTIN_TAB_ORDER[id],
|
|
125
154
|
builtin: true,
|
|
126
155
|
visibleInManager: false,
|
|
127
156
|
desktopTabEnabled: true,
|
|
@@ -146,6 +175,7 @@ function appShellPageToViewEntry(page) {
|
|
|
146
175
|
pluginName: page.pluginId,
|
|
147
176
|
developerOnly: page.developerOnly,
|
|
148
177
|
viewKind: page.viewKind,
|
|
178
|
+
order: page.order,
|
|
149
179
|
backgroundPolicy: page.backgroundPolicy,
|
|
150
180
|
visibleInManager: true,
|
|
151
181
|
builtin: false,
|
|
@@ -199,19 +229,31 @@ function mergeWithAppShellViews(networkViews, appShellViews) {
|
|
|
199
229
|
export function withBuiltinShellViews(views) {
|
|
200
230
|
return mergeViewRegistryEntries(views, [BUILTIN_SHELL_VIEW_ENTRIES]);
|
|
201
231
|
}
|
|
202
|
-
|
|
232
|
+
function useDefaultViewsNetworkEnabled() {
|
|
233
|
+
const phase = useAppSelector((s) => s.startupCoordinator?.phase);
|
|
234
|
+
if (!supportsFullAppShellRoutes(client.getBaseUrl()))
|
|
235
|
+
return false;
|
|
236
|
+
if (typeof phase !== "string")
|
|
237
|
+
return true;
|
|
238
|
+
return isShellPaintable(phase);
|
|
239
|
+
}
|
|
240
|
+
export function useAvailableViews(options = {}) {
|
|
241
|
+
const defaultNetworkEnabled = useDefaultViewsNetworkEnabled();
|
|
242
|
+
const networkEnabled = options.networkEnabled ?? defaultNetworkEnabled;
|
|
203
243
|
// All mounts share one cache slot, so the router and the desktop-tab consumer
|
|
204
244
|
// (which both mount this hook) issue a single request and paint instantly on
|
|
205
245
|
// revisit instead of each re-fetching cold.
|
|
206
|
-
const resource = useCachedResource(VIEWS_CACHE_KEY, () => fetchViews(), { staleTime: POLL_INTERVAL_MS });
|
|
246
|
+
const resource = useCachedResource(VIEWS_CACHE_KEY, () => fetchViews(), { staleTime: POLL_INTERVAL_MS, enabled: networkEnabled });
|
|
207
247
|
// Runtime plugin install/uninstall changes the registry; keep a background
|
|
208
248
|
// poll so the list stays live. The poll is ref-counted in the cache layer
|
|
209
249
|
// keyed by VIEWS_CACHE_KEY, so the router and desktop-tab consumer (which
|
|
210
250
|
// both mount this hook) share a single timer instead of each running one.
|
|
211
251
|
const { refetch } = resource;
|
|
212
252
|
useEffect(() => {
|
|
253
|
+
if (!networkEnabled)
|
|
254
|
+
return;
|
|
213
255
|
return startPolling(VIEWS_CACHE_KEY, fetchViews, POLL_INTERVAL_MS);
|
|
214
|
-
}, []);
|
|
256
|
+
}, [networkEnabled]);
|
|
215
257
|
// In-process plugin views (registered via registerAppShellPage) are merged in
|
|
216
258
|
// so they appear in the manager even when the agent route filtered them out
|
|
217
259
|
// (mobile strips dynamic-bundle views). The snapshot is version-cached, so
|
|
@@ -221,13 +263,13 @@ export function useAvailableViews() {
|
|
|
221
263
|
const views = useMemo(() => mergeWithAppShellViews(networkViews, appShellViews), [networkViews, appShellViews]);
|
|
222
264
|
return {
|
|
223
265
|
views,
|
|
224
|
-
loading: resource.status === "loading",
|
|
266
|
+
loading: networkEnabled && resource.status === "loading",
|
|
225
267
|
error: resource.status === "error" ? resource.error : null,
|
|
226
|
-
refresh: refetch,
|
|
268
|
+
refresh: networkEnabled ? refetch : () => { },
|
|
227
269
|
};
|
|
228
270
|
}
|
|
229
|
-
export function useRoutableViews() {
|
|
230
|
-
const { views, loading, error, refresh } = useAvailableViews();
|
|
271
|
+
export function useRoutableViews(options = {}) {
|
|
272
|
+
const { views, loading, error, refresh } = useAvailableViews(options);
|
|
231
273
|
const routableViews = useMemo(() => withBuiltinShellViews(views), [views]);
|
|
232
274
|
return useMemo(() => ({
|
|
233
275
|
views: routableViews,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHorizontalPager.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useHorizontalPager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useHorizontalPager.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useHorizontalPager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAwB/B,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB,CACrC,SAAS,SAAS,WAAW,GAAG,cAAc;IAE9C,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAChD,QAAQ,EAAE;QACR,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACzD,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACzD,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACvD,eAAe,EAAE,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC3D,oBAAoB,EAAE,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;KACjE,CAAC;CACH;AAkBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,SAAS,WAAW,GAAG,cAAc,EAC9C,EACA,IAAI,EACJ,SAAS,EACT,OAAc,EACd,qBAA6B,EAC7B,YAAY,EACZ,gBAAgB,GACjB,EAAE,yBAAyB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAkQ/D"}
|