@elizaos/ui 2.0.3-beta.5 → 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/config/boot-config-store.js +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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../../../../src/cloud-ui/components/drawer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAIjD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAEnD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAEtD;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,2CAErD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAWtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../../../../src/cloud-ui/components/drawer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAIjD,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAEnD;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAEtD;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,2CAErD;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAEpD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAWtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,2CAgCtD;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWzE;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQzE;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,2CAQ1D;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAC"}
|
|
@@ -22,7 +22,7 @@ function DrawerOverlay({ className, ...props }) {
|
|
|
22
22
|
return (_jsx(DrawerPrimitive.Overlay, { "data-slot": "drawer-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className), ...props }));
|
|
23
23
|
}
|
|
24
24
|
function DrawerContent({ className, children, ...props }) {
|
|
25
|
-
return (_jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [_jsx(DrawerOverlay, {}), _jsxs(DrawerPrimitive.Content, { "data-slot": "drawer-content", className: cn("group/drawer-content fixed z-50 flex h-auto flex-col bg-neutral-950/95 text-white", "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-white/10", "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-white/10", "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-white/10 data-[vaul-drawer-direction=right]:sm:max-w-sm", "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-white/10 data-[vaul-drawer-direction=left]:sm:max-w-sm", className), ...props, children: [_jsx("
|
|
25
|
+
return (_jsxs(DrawerPortal, { "data-slot": "drawer-portal", children: [_jsx(DrawerOverlay, {}), _jsxs(DrawerPrimitive.Content, { "data-slot": "drawer-content", className: cn("group/drawer-content fixed z-50 flex h-auto flex-col bg-neutral-950/95 text-white", "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b data-[vaul-drawer-direction=top]:border-white/10", "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t data-[vaul-drawer-direction=bottom]:border-white/10", "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:border-white/10 data-[vaul-drawer-direction=right]:sm:max-w-sm", "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:border-white/10 data-[vaul-drawer-direction=left]:sm:max-w-sm", className), ...props, children: [_jsx(DrawerClose, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Close drawer", className: "group mx-auto mb-2 mt-2 hidden h-8 w-32 shrink-0 cursor-pointer items-center justify-center rounded-full transition-colors hover:bg-white/10 group-data-[vaul-drawer-direction=bottom]/drawer-content:flex", children: _jsx("span", { className: "h-1.5 w-[100px] rounded-full bg-white/15 transition-all group-hover:w-[112px] group-hover:bg-white/35", "aria-hidden": true }) }) }), children] })] }));
|
|
26
26
|
}
|
|
27
27
|
function DrawerHeader({ className, ...props }) {
|
|
28
28
|
return (_jsx("div", { "data-slot": "drawer-header", className: cn("flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left", className), ...props }));
|
package/cloud-ui/index.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export { type ApiKeyDisplay, type ApiKeyStatus, ApiKeysSummary, type ApiKeysSumm
|
|
|
14
14
|
export type { ApiEndpointCardEndpoint, ApiEndpointCardPricing, ApiParameterSelectOption, ApiParameterSelectProps, DocsFrontmatter, DocsLayoutProps, EndpointCardProps, MdxModule, NavItem, OpenApiViewerProps, } from "./components/docs/index.js";
|
|
15
15
|
export { ApiParameterSelect, DocsLayout, EndpointCard, LlmsTxtBadge, OpenApiViewer, } from "./components/docs/index.js";
|
|
16
16
|
export * from "./components/icons.js";
|
|
17
|
-
export * from "./components/image-gen/index.js";
|
|
18
17
|
export * from "./components/layout/index.js";
|
|
19
18
|
export * from "./components/log-viewer.js";
|
|
20
19
|
export * from "./components/monetization/index.js";
|
package/cloud-ui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud-ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cloud-ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,YAAY,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EACL,cAAc,EACd,KAAK,mBAAmB,EACxB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,4BAA4B,EAC5B,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,sBAAsB,GACvB,MAAM,mDAAmD,CAAC;AAC3D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,OAAO,EACP,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
|
package/cloud-ui/index.js
CHANGED
|
@@ -12,7 +12,6 @@ export * from "./components/data-list/index.js";
|
|
|
12
12
|
export { ApiKeysSummary, ApiKeysTable, AppsListView, } from "./components/data-list/index.js";
|
|
13
13
|
export { ApiParameterSelect, DocsLayout, EndpointCard, LlmsTxtBadge, OpenApiViewer, } from "./components/docs/index.js";
|
|
14
14
|
export * from "./components/icons.js";
|
|
15
|
-
export * from "./components/image-gen/index.js";
|
|
16
15
|
export * from "./components/layout/index.js";
|
|
17
16
|
export * from "./components/log-viewer.js";
|
|
18
17
|
export * from "./components/monetization/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-identity.helpers.d.ts","sourceRoot":"","sources":["../../../../../../src/components/apps/app-identity.helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAIhB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"app-identity.helpers.d.ts","sourceRoot":"","sources":["../../../../../../src/components/apps/app-identity.helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAIhB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC9B,MAAM,GAAG,IAAI,CAWf;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiB5D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,GAAG,UAAU,CAiBrE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getAppHeroThemeKey } from "@elizaos/shared";
|
|
2
2
|
import { Bot, Briefcase, Gamepad2, Globe2, Sparkles, Wallet, Wrench, } from "lucide-react";
|
|
3
|
+
import { client } from "../../api/index.js";
|
|
4
|
+
import { isLimitedCloudAgentApiResourceUrl, supportsFullAppShellRoutes, } from "../../api/app-shell-capabilities.js";
|
|
3
5
|
import { resolveApiUrl, resolveAppAssetUrl } from "../../utils/asset-url.js";
|
|
4
6
|
export function iconImageSource(icon) {
|
|
5
7
|
const value = icon?.trim();
|
|
@@ -20,10 +22,16 @@ export function iconImageSource(icon) {
|
|
|
20
22
|
export function resolveRuntimeImageUrl(value) {
|
|
21
23
|
// Absolute URLs, data/blob URIs, and custom schemes are already runtime-safe.
|
|
22
24
|
if (/^(https?:|data:|blob:|file:|capacitor:|electrobun:|app:)/i.test(value)) {
|
|
25
|
+
if (isLimitedCloudAgentApiResourceUrl(value)) {
|
|
26
|
+
return "";
|
|
27
|
+
}
|
|
23
28
|
return value;
|
|
24
29
|
}
|
|
25
30
|
// API-served hero endpoints must hit the API base, not the asset CDN.
|
|
26
31
|
if (value.startsWith("/api/") || value.startsWith("api/")) {
|
|
32
|
+
if (!supportsFullAppShellRoutes(client.getBaseUrl())) {
|
|
33
|
+
return "";
|
|
34
|
+
}
|
|
27
35
|
return resolveApiUrl(value.startsWith("/") ? value : `/${value}`);
|
|
28
36
|
}
|
|
29
37
|
// Static asset under apps/app/public/ — resolves to CDN base in releases.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-unread.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/inbox-unread.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inbox-unread.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/inbox-unread.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AA2E1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,kDA2E7D;AAED,eAAO,MAAM,iBAAiB;;;;;;CAMpB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { Inbox } from "lucide-react";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
4
4
|
import { client } from "../../../api/index.js";
|
|
5
|
+
import { supportsFullAppShellRoutes } from "../../../api/app-shell-capabilities.js";
|
|
5
6
|
import { useIntervalWhenDocumentVisible } from "../../../hooks/index.js";
|
|
6
7
|
import { usePublishHomeAttention } from "../../../widgets/home-attention-store.js";
|
|
7
8
|
import { HOME_SIGNAL_WEIGHTS } from "../../../widgets/home-priority.js";
|
|
@@ -69,8 +70,14 @@ export function InboxUnreadWidget(_props) {
|
|
|
69
70
|
const [loaded, setLoaded] = useState(false);
|
|
70
71
|
const nav = useWidgetNavigation();
|
|
71
72
|
const loadInbox = useCallback(async () => {
|
|
73
|
+
const baseUrl = client.getBaseUrl();
|
|
74
|
+
if (!supportsFullAppShellRoutes(baseUrl)) {
|
|
75
|
+
setLoaded(true);
|
|
76
|
+
setUnread([]);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
72
79
|
try {
|
|
73
|
-
const response = await fetch(`${
|
|
80
|
+
const response = await fetch(`${baseUrl}/api/lifeops/inbox`);
|
|
74
81
|
if (!response.ok)
|
|
75
82
|
return;
|
|
76
83
|
const next = parseUnread(await response.json());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/needs-attention.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"needs-attention.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/needs-attention.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AASvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAgB1D,qFAAqF;AACrF,eAAO,MAAM,oBAAoB,QAAc,CAAC;AAkBhD;;;;GAIG;AACH,wBAAgB,YAAY,IAAI;IAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB,CAuCA;AAgBD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,kDA4ChE;AAED,eAAO,MAAM,2BAA2B;;;;;;CAM9B,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { CircleHelp } from "lucide-react";
|
|
3
|
-
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { client } from "../../../api/index.js";
|
|
5
|
+
import { supportsFullAppShellRoutes } from "../../../api/app-shell-capabilities.js";
|
|
5
6
|
import { dispatchChatPrefill } from "../../../events/index.js";
|
|
6
7
|
import { useIntervalWhenDocumentVisible } from "../../../hooks/index.js";
|
|
7
8
|
import { usePublishHomeAttention } from "../../../widgets/home-attention-store.js";
|
|
@@ -40,18 +41,33 @@ function pendingEqual(a, b) {
|
|
|
40
41
|
export function useApprovals() {
|
|
41
42
|
const [pending, setPending] = useState([]);
|
|
42
43
|
const [loaded, setLoaded] = useState(false);
|
|
44
|
+
const mountedRef = useRef(true);
|
|
43
45
|
const load = useCallback(async () => {
|
|
46
|
+
if (!supportsFullAppShellRoutes(client.getBaseUrl())) {
|
|
47
|
+
if (mountedRef.current) {
|
|
48
|
+
setPending([]);
|
|
49
|
+
setLoaded(true);
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
44
53
|
try {
|
|
45
54
|
const { pending: next } = await client.listPendingActions();
|
|
55
|
+
if (!mountedRef.current)
|
|
56
|
+
return;
|
|
46
57
|
setPending((prev) => (pendingEqual(prev, next) ? prev : next));
|
|
47
58
|
}
|
|
48
59
|
catch {
|
|
49
60
|
// Best-effort: keep the last good data on a transient fetch failure.
|
|
50
61
|
}
|
|
51
62
|
finally {
|
|
52
|
-
|
|
63
|
+
if (mountedRef.current) {
|
|
64
|
+
setLoaded(true);
|
|
65
|
+
}
|
|
53
66
|
}
|
|
54
67
|
}, []);
|
|
68
|
+
useEffect(() => () => {
|
|
69
|
+
mountedRef.current = false;
|
|
70
|
+
}, []);
|
|
55
71
|
useEffect(() => {
|
|
56
72
|
void load();
|
|
57
73
|
}, [load]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationships-attention.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/relationships-attention.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"relationships-attention.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/chat/widgets/relationships-attention.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAmG1D;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,kDAiF1E;AAED,eAAO,MAAM,yBAAyB;;;;;;CAM5B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { Users } from "lucide-react";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
4
4
|
import { client } from "../../../api/index.js";
|
|
5
|
+
import { supportsFullAppShellRoutes } from "../../../api/app-shell-capabilities.js";
|
|
5
6
|
import { useIntervalWhenDocumentVisible } from "../../../hooks/index.js";
|
|
6
7
|
import { usePublishHomeAttention } from "../../../widgets/home-attention-store.js";
|
|
7
8
|
import { HOME_SIGNAL_WEIGHTS } from "../../../widgets/home-priority.js";
|
|
@@ -83,6 +84,10 @@ export function RelationshipsAttentionWidget({ slot }) {
|
|
|
83
84
|
const [data, setData] = useState(EMPTY_DATA);
|
|
84
85
|
const nav = useWidgetNavigation();
|
|
85
86
|
const load = useCallback(async () => {
|
|
87
|
+
if (!supportsFullAppShellRoutes(client.getBaseUrl())) {
|
|
88
|
+
setData(EMPTY_DATA);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
86
91
|
try {
|
|
87
92
|
const [peopleResult, candidates] = await Promise.all([
|
|
88
93
|
client.getRelationshipsPeople(),
|
|
@@ -6,7 +6,7 @@ import { Textarea } from "../../ui/textarea.js";
|
|
|
6
6
|
const INLINE_TEXTAREA_MIN_HEIGHT_PX = 32;
|
|
7
7
|
const INLINE_TEXTAREA_MAX_HEIGHT_PX = 128;
|
|
8
8
|
const INLINE_STACKED_INLINE_PADDING_PX = 12;
|
|
9
|
-
const inlineTextareaClass = "block h-8 max-h-[128px] min-h-0 w-full min-w-0 resize-none overflow-y-hidden appearance-none rounded-none border-0 bg-transparent px-2 py-[6px] text-sm leading-5 text-txt outline-none placeholder:text-muted-strong ";
|
|
9
|
+
const inlineTextareaClass = "block h-8 max-h-[128px] min-h-0 w-full min-w-0 resize-none overflow-y-hidden appearance-none rounded-none border-0 bg-transparent px-2 py-[6px] text-sm leading-5 text-txt outline-none placeholder:text-muted-strong pointer-coarse:text-[16px] ";
|
|
10
10
|
const inlineMeasureTextareaClass = `${inlineTextareaClass} pointer-events-none fixed left-0 top-0 z-[-1] opacity-0`;
|
|
11
11
|
const inlineComposerSurfaceClass = "border-[color-mix(in_srgb,var(--border)_62%,var(--txt)_38%)] bg-[color-mix(in_srgb,var(--bg)_78%,var(--txt)_16%)] ";
|
|
12
12
|
function getTextareaVerticalPadding(textarea) {
|
|
@@ -215,22 +215,22 @@ export function ChatComposer({ variant, layout = "default", textareaRef, chatInp
|
|
|
215
215
|
void voice.startListening("compose");
|
|
216
216
|
};
|
|
217
217
|
if (isInline) {
|
|
218
|
-
const inlineAttachButton = !isGameModal && !hideAttachButton ? (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm bg-bg p-0 text-muted shadow-none transition-colors hover:bg-bg hover:text-txt ${chatPendingImagesCount > 0 ? "text-accent hover:text-accent" : ""}`, onClick: onAttachImage, "aria-label": t("aria.attachImage"), title: t("aria.attachImage"), disabled: isComposerLocked, children: _jsx(Plus, { className: "h-5 w-5" }) })) : null;
|
|
218
|
+
const inlineAttachButton = !isGameModal && !hideAttachButton ? (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm bg-bg p-0 text-muted shadow-none transition-colors hover:bg-bg hover:text-txt pointer-coarse:min-h-touch pointer-coarse:min-w-touch ${chatPendingImagesCount > 0 ? "text-accent hover:text-accent" : ""}`, onClick: onAttachImage, "aria-label": t("aria.attachImage"), title: t("aria.attachImage"), disabled: isComposerLocked, children: _jsx(Plus, { className: "h-5 w-5" }) })) : null;
|
|
219
219
|
const inlineTextarea = (_jsxs("div", { className: isInlineMultiline
|
|
220
220
|
? "relative min-w-0 w-full"
|
|
221
221
|
: "relative min-w-0 flex-1", children: [_jsx(Textarea, { ref: textareaRef, value: chatInput, onChange: (event) => onChatInputChange(event.target.value), onKeyDown: onKeyDown, onPaste: onPaste, "data-testid": "chat-composer-textarea", "aria-label": textareaAriaLabel, variant: null, density: null, className: inlineTextareaClass, placeholder: placeholder ?? defaultTextareaPlaceholder, rows: 1, disabled: isComposerLocked }), voice.isListening && voice.interimTranscript ? (_jsx("div", { className: isInlineMultiline
|
|
222
222
|
? "pointer-events-none absolute inset-x-3 bottom-2 truncate text-xs text-muted"
|
|
223
223
|
: "pointer-events-none absolute inset-x-2 bottom-2 truncate text-xs text-muted", children: voice.interimTranscript })) : null] }));
|
|
224
|
-
const inlineMicButton = (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm p-0 shadow-none transition-colors active:scale-95 ${voice.isListening
|
|
224
|
+
const inlineMicButton = (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm p-0 shadow-none transition-colors active:scale-95 pointer-coarse:min-h-touch pointer-coarse:min-w-touch ${voice.isListening
|
|
225
225
|
? "bg-accent text-bg hover:bg-accent/90 hover:text-bg"
|
|
226
226
|
: "bg-bg text-muted hover:bg-bg hover:text-txt"}`, "data-testid": "chat-composer-mic", onClick: handleMicClick, onPointerDown: handleMicPointerDown, onPointerUp: handleMicPointerUp, onPointerCancel: handleMicPointerCancel, onPointerLeave: handleMicPointerCancel, disabled: isComposerLocked || !voice.supported, title: voiceButtonTitle, "aria-label": voiceButtonTitle, "aria-pressed": voice.isListening, children: _jsx(Mic, { className: "h-4.5 w-4.5" }) }));
|
|
227
|
-
const inlineSendButton = (_jsx(Button, { variant: "ghost", "data-testid": "chat-composer-action", size: "icon", className: "h-8 w-8 shrink-0 rounded-sm bg-txt p-0 text-bg shadow-none transition-transform active:scale-95 disabled:opacity-40", onClick: onSend,
|
|
227
|
+
const inlineSendButton = (_jsx(Button, { variant: "ghost", "data-testid": "chat-composer-action", size: "icon", className: "h-8 w-8 shrink-0 rounded-sm bg-txt p-0 text-bg shadow-none transition-transform active:scale-95 disabled:opacity-40 pointer-coarse:min-h-touch pointer-coarse:min-w-touch", onClick: onSend,
|
|
228
228
|
// Keep the textarea focused through the tap: without this, tapping the
|
|
229
229
|
// send button blurs the composer (the keyboard starts to dismiss) and the
|
|
230
230
|
// send handler then re-focuses it — the keyboard "flips" closed/open.
|
|
231
231
|
onMouseDown: (e) => e.preventDefault(), disabled: isComposerLocked || !hasDraft, title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(ArrowUp, { className: "h-4.5 w-4.5" }) }));
|
|
232
|
-
const inlineStopButton = (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25", onClick: onStop, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: "h-3.5 w-3.5 fill-current" }) }));
|
|
233
|
-
const inlineStopSpeakingButton = (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25", onClick: onStopSpeaking, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: "h-3.5 w-3.5 fill-current" }) }));
|
|
232
|
+
const inlineStopButton = (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25 pointer-coarse:min-h-touch pointer-coarse:min-w-touch", onClick: onStop, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: "h-3.5 w-3.5 fill-current" }) }));
|
|
233
|
+
const inlineStopSpeakingButton = (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25 pointer-coarse:min-h-touch pointer-coarse:min-w-touch", onClick: onStopSpeaking, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: "h-3.5 w-3.5 fill-current" }) }));
|
|
234
234
|
const inlineTrailingActions = shouldShowStopButton ? (inlineStopButton) : !isGameModal && voice.isSpeaking && !hasDraft ? (inlineStopSpeakingButton) : isInlineMultiline ? (_jsxs(_Fragment, { children: [inlineMicButton, inlineSendButton] })) : voice.isListening ? (
|
|
235
235
|
// Keep the mic (release) button mounted while a push-to-talk turn is held,
|
|
236
236
|
// even after live STT text fills the draft — otherwise the composer swaps
|
|
@@ -246,23 +246,23 @@ export function ChatComposer({ variant, layout = "default", textareaRef, chatInp
|
|
|
246
246
|
? `h-8 w-8 shrink-0 rounded-sm bg-bg p-0 text-muted shadow-none transition-colors hover:bg-bg hover:text-txt ${chatPendingImagesCount > 0
|
|
247
247
|
? "text-accent hover:text-accent"
|
|
248
248
|
: ""}`
|
|
249
|
-
: `h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt ${chatPendingImagesCount > 0
|
|
249
|
+
: `h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt pointer-coarse:min-h-touch pointer-coarse:min-w-touch ${chatPendingImagesCount > 0
|
|
250
250
|
? "text-accent hover:text-accent"
|
|
251
251
|
: ""}`, onClick: onAttachImage, "aria-label": t("aria.attachImage"), title: t("aria.attachImage"), disabled: isComposerLocked, children: isInline ? (_jsx(Plus, { className: "h-5 w-5" })) : (_jsx(Paperclip, { className: "h-6 w-6" })) })) : null, !isInline && showVoiceButton ? (_jsx(Button, { variant: "ghost", size: "icon", className: isGameModal
|
|
252
252
|
? `flex items-center justify-center h-[46px] w-[46px] shrink-0 ${voice.isListening
|
|
253
253
|
? "animate-pulse select-none rounded-sm border border-border/28 bg-card text-txt transition-all duration-300 active:scale-95 "
|
|
254
254
|
: "select-none rounded-sm border border-transparent bg-transparent text-muted-strong shadow-none transition-[border-color,background-color,color,transform,box-shadow] duration-300 hover:border-border/28 hover:bg-card hover:text-txt active:scale-95"} ${isComposerLocked ? "opacity-50" : ""}`
|
|
255
|
-
: `h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt ${voice.isListening ? "text-accent hover:text-accent" : ""}`, "data-testid": "chat-composer-mic", onClick: handleMicClick, onPointerDown: handleMicPointerDown, onPointerUp: handleMicPointerUp, onPointerCancel: handleMicPointerCancel, onPointerLeave: handleMicPointerCancel, "aria-label": isAgentStarting
|
|
255
|
+
: `h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt pointer-coarse:min-h-touch pointer-coarse:min-w-touch ${voice.isListening ? "text-accent hover:text-accent" : ""}`, "data-testid": "chat-composer-mic", onClick: handleMicClick, onPointerDown: handleMicPointerDown, onPointerUp: handleMicPointerUp, onPointerCancel: handleMicPointerCancel, onPointerLeave: handleMicPointerCancel, "aria-label": isAgentStarting
|
|
256
256
|
? t("chat.agentStarting")
|
|
257
257
|
: voice.isListening
|
|
258
258
|
? voice.captureMode === "push-to-talk"
|
|
259
259
|
? t("chat.releaseToSend")
|
|
260
260
|
: t("chat.stopListening")
|
|
261
261
|
: t("chat.voiceInput"), "aria-pressed": isGameModal ? undefined : voice.isListening, title: voiceButtonTitle, disabled: isComposerLocked, children: _jsx(Mic, { className: "h-6 w-6" }) })) : null, _jsxs("div", { className: "relative min-w-0 flex-1", children: [_jsx(Textarea, { ref: textareaRef, value: chatInput, onChange: (event) => onChatInputChange(event.target.value), onKeyDown: onKeyDown, onPaste: onPaste, "data-testid": "chat-composer-textarea", "aria-label": textareaAriaLabel, variant: isInline ? null : undefined, density: isInline ? null : undefined, className: isGameModal
|
|
262
|
-
? "w-full min-w-0 min-h-0 h-[46px] resize-none overflow-y-hidden max-h-[200px] outline-none font-[var(--font-chat)] disabled:opacity-50 rounded-sm border border-transparent bg-transparent px-4 pb-[13px] pt-[13px] text-[15px] leading-[1.55] text-txt-strong placeholder:text-muted"
|
|
262
|
+
? "w-full min-w-0 min-h-0 h-[46px] resize-none overflow-y-hidden max-h-[200px] outline-none font-[var(--font-chat)] disabled:opacity-50 rounded-sm border border-transparent bg-transparent px-4 pb-[13px] pt-[13px] text-[15px] leading-[1.55] text-txt-strong placeholder:text-muted pointer-coarse:text-[16px]"
|
|
263
263
|
: isInline
|
|
264
264
|
? inlineTextareaClass
|
|
265
|
-
: "w-full min-w-0 min-h-0 h-[38px] resize-none overflow-y-hidden max-h-[200px] outline-none font-[var(--font-chat)] disabled:opacity-50 rounded-sm border-0 bg-card/40 px-4 py-[8px] text-[15px] leading-[1.55] text-txt placeholder:text-muted", placeholder: placeholder ?? defaultTextareaPlaceholder, rows: 1, disabled: isComposerLocked }), voice.isListening && voice.interimTranscript ? (_jsx("div", { className: isInline
|
|
265
|
+
: "w-full min-w-0 min-h-0 h-[38px] resize-none overflow-y-hidden max-h-[200px] outline-none font-[var(--font-chat)] disabled:opacity-50 rounded-sm border-0 bg-card/40 px-4 py-[8px] text-[15px] leading-[1.55] text-txt placeholder:text-muted pointer-coarse:text-[16px]", placeholder: placeholder ?? defaultTextareaPlaceholder, rows: 1, disabled: isComposerLocked }), voice.isListening && voice.interimTranscript ? (_jsx("div", { className: isInline
|
|
266
266
|
? "pointer-events-none absolute inset-x-2 bottom-2 truncate text-xs text-muted"
|
|
267
267
|
: "pointer-events-none absolute inset-x-4 bottom-2.5 truncate text-xs-tight text-muted", children: voice.interimTranscript })) : null] }), !isInline && showAgentVoiceToggle ? (_jsx(Button, { variant: isGameModal
|
|
268
268
|
? "ghost"
|
|
@@ -273,22 +273,22 @@ export function ChatComposer({ variant, layout = "default", textareaRef, chatInp
|
|
|
273
273
|
? "select-none rounded-sm border border-border/28 bg-card text-txt transition-all duration-300 active:scale-95 "
|
|
274
274
|
: "select-none rounded-sm border border-transparent bg-transparent text-muted-strong shadow-none transition-[border-color,background-color,color,transform,box-shadow] duration-300 hover:border-border/28 hover:bg-card hover:text-txt active:scale-95"}`
|
|
275
275
|
: "h-[46px] w-[46px] shrink-0", onClick: onToggleAgentVoice, "aria-label": agentVoiceEnabled ? t("aria.agentVoiceOn") : t("aria.agentVoiceOff"), title: agentVoiceEnabled ? t("chat.agentVoiceOn") : t("chat.agentVoiceOff"), disabled: isComposerLocked, children: agentVoiceEnabled ? (_jsx(Volume2, { className: isGameModal ? "h-5 w-5" : "h-4 w-4" })) : (_jsx(VolumeX, { className: isGameModal ? "h-5 w-5" : "h-4 w-4" })) })) : null, shouldShowStopButton ? (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: isInline
|
|
276
|
-
? "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25"
|
|
276
|
+
? "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25 pointer-coarse:min-h-touch pointer-coarse:min-w-touch"
|
|
277
277
|
: "ml-1 flex items-center justify-center rounded-sm transition-all duration-300 select-none active:scale-95 h-[46px] w-[46px] shrink-0", onClick: onStop, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: isInline
|
|
278
278
|
? "h-3.5 w-3.5 fill-current"
|
|
279
279
|
: isGameModal
|
|
280
280
|
? "h-4.5 w-4.5"
|
|
281
281
|
: "h-4 w-4" }) })) : !isGameModal && voice.isSpeaking && !hasDraft ? (_jsx(Button, { variant: "surfaceDestructive", "data-testid": "chat-composer-action", className: isInline
|
|
282
|
-
? "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25"
|
|
283
|
-
: "ml-1 flex items-center justify-center rounded-sm transition-all duration-300 select-none active:scale-95 h-[46px] w-[46px] shrink-0", onClick: onStopSpeaking, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: isInline ? "h-3.5 w-3.5 fill-current" : "h-4 w-4" }) })) : isInline && !hasDraft ? (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm p-0 shadow-none transition-colors active:scale-95 ${voice.isListening
|
|
282
|
+
? "h-8 w-8 shrink-0 rounded-sm bg-danger/15 p-0 text-danger shadow-none transition-colors hover:bg-danger/25 pointer-coarse:min-h-touch pointer-coarse:min-w-touch"
|
|
283
|
+
: "ml-1 flex items-center justify-center rounded-sm transition-all duration-300 select-none active:scale-95 h-[46px] w-[46px] shrink-0", onClick: onStopSpeaking, size: "icon", title: actionButtonLabel, "aria-label": actionButtonLabel, children: _jsx(Square, { className: isInline ? "h-3.5 w-3.5 fill-current" : "h-4 w-4" }) })) : isInline && !hasDraft ? (_jsx(Button, { variant: "ghost", size: "icon", className: `h-8 w-8 shrink-0 rounded-sm p-0 shadow-none transition-colors active:scale-95 pointer-coarse:min-h-touch pointer-coarse:min-w-touch ${voice.isListening
|
|
284
284
|
? "bg-accent text-bg hover:bg-accent/90 hover:text-bg"
|
|
285
285
|
: "bg-bg text-muted hover:bg-bg hover:text-txt"}`, "data-testid": "chat-composer-mic", onClick: handleMicClick, onPointerDown: handleMicPointerDown, onPointerUp: handleMicPointerUp, onPointerCancel: handleMicPointerCancel, onPointerLeave: handleMicPointerCancel, disabled: isComposerLocked || !voice.supported, title: voiceButtonTitle, "aria-label": voiceButtonTitle, "aria-pressed": voice.isListening, children: _jsx(Mic, { className: "h-4.5 w-4.5" }) })) : (_jsx(Button, { variant: isGameModal ? "default" : "ghost", "data-testid": "chat-composer-action", size: "icon", className: isGameModal
|
|
286
286
|
? `ml-1 flex items-center justify-center rounded-sm transition-all duration-300 select-none active:scale-95 h-[46px] w-[46px] shrink-0 ${hasDraft
|
|
287
287
|
? "select-none rounded-sm border border-border/28 bg-card text-txt transition-all duration-300 active:scale-95 "
|
|
288
288
|
: "select-none rounded-sm border border-transparent bg-transparent text-muted-strong shadow-none transition-[border-color,background-color,color,transform,box-shadow] duration-300 hover:border-border/28 hover:bg-card hover:text-txt active:scale-95 opacity-80"}`
|
|
289
289
|
: isInline
|
|
290
|
-
? "h-8 w-8 shrink-0 rounded-sm bg-txt p-0 text-bg shadow-none transition-transform active:scale-95 disabled:opacity-40"
|
|
291
|
-
: "ml-1 h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt transition-colors select-none active:scale-95 disabled:opacity-40", onClick: onSend,
|
|
290
|
+
? "h-8 w-8 shrink-0 rounded-sm bg-txt p-0 text-bg shadow-none transition-transform active:scale-95 disabled:opacity-40 pointer-coarse:min-h-touch pointer-coarse:min-w-touch"
|
|
291
|
+
: "ml-1 h-[38px] w-9 shrink-0 bg-transparent p-0 shadow-none border-0 text-muted hover:bg-transparent hover:text-txt transition-colors select-none active:scale-95 disabled:opacity-40 pointer-coarse:min-h-touch pointer-coarse:min-w-touch", onClick: onSend,
|
|
292
292
|
// Keep the textarea focused through the tap so the keyboard doesn't
|
|
293
293
|
// flicker closed/open on send (see the inline send button).
|
|
294
294
|
onMouseDown: (e) => e.preventDefault(), disabled: isComposerLocked || !hasDraft, title: actionButtonLabel, "aria-label": actionButtonLabel, children: isInline ? (_jsx(ArrowUp, { className: "h-4.5 w-4.5" })) : (_jsx(Send, { className: isGameModal ? "h-4.5 w-4.5" : "h-6 w-6" })) }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-renderer.d.ts","sourceRoot":"","sources":["../../../../../../src/components/config-ui/ui-renderer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,SAAS,EAKT,MAAM,EACP,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-renderer.d.ts","sourceRoot":"","sources":["../../../../../../src/components/config-ui/ui-renderer.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,SAAS,EAKT,MAAM,EACP,MAAM,sBAAsB,CAAC;AAwhD9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CACjB,MAAM,EACN,CACE,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAChC,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,UAAU,GACX,EAAE,eAAe,2CAsEjB"}
|
|
@@ -571,7 +571,7 @@ const DrawerComponent = (props, children, ctx) => {
|
|
|
571
571
|
e.preventDefault();
|
|
572
572
|
close();
|
|
573
573
|
}
|
|
574
|
-
}, role: "dialog", "aria-modal": "true", children: _jsxs("div", { className: "w-full max-h-[80vh] bg-card p-5 overflow-y-auto animate-[slide-up_200ms_ease]", children: [_jsx("
|
|
574
|
+
}, role: "dialog", "aria-modal": "true", children: _jsxs("div", { className: "w-full max-h-[80vh] bg-card p-5 overflow-y-auto animate-[slide-up_200ms_ease]", children: [_jsx("button", { type: "button", "aria-label": "Close drawer", onClick: close, className: "group mx-auto mb-3 flex h-8 w-32 cursor-pointer items-center justify-center rounded-full transition-colors hover:bg-surface/70", children: _jsx("span", { className: "h-1 w-10 rounded-full bg-border transition-all group-hover:w-14 group-hover:bg-accent/70", "aria-hidden": true }) }), props.title ? (_jsx("div", { className: "font-bold text-sm", children: String(props.title) })) : null, props.description ? (_jsx("div", { className: "text-xs text-muted mt-0.5 mb-3", children: String(props.description) })) : null, children] }) }));
|
|
575
575
|
};
|
|
576
576
|
// ── Component map ───────────────────────────────────────────────────
|
|
577
577
|
const COMPONENTS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHomeModelStatus.d.ts","sourceRoot":"","sources":["../../../../../../src/components/local-inference/useHomeModelStatus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useHomeModelStatus.d.ts","sourceRoot":"","sources":["../../../../../../src/components/local-inference/useHomeModelStatus.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,kDAAkD,CAAC;AA2B1D;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAoEpD"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { client } from "../../api/index.js";
|
|
3
|
+
import { supportsFullAppShellRoutes } from "../../api/app-shell-capabilities.js";
|
|
4
|
+
import { isDesktopExternalApiBaseUrl } from "../../api/desktop-external-api-base.js";
|
|
5
|
+
import { useRuntimeMode } from "../../hooks/useRuntimeMode.js";
|
|
3
6
|
import { deriveHomeModelStatus, } from "../../services/local-inference/home-model-status.js";
|
|
4
7
|
import { resolveApiUrl } from "../../utils/asset-url.js";
|
|
5
8
|
import { getElizaApiToken } from "../../utils/eliza-globals.js";
|
|
@@ -18,6 +21,10 @@ function appendTokenParam(url) {
|
|
|
18
21
|
return url;
|
|
19
22
|
return `${url}${url.includes("?") ? "&" : "?"}token=${encodeURIComponent(token)}`;
|
|
20
23
|
}
|
|
24
|
+
function supportsLocalInferenceStatus() {
|
|
25
|
+
const baseUrl = client.getBaseUrl();
|
|
26
|
+
return (supportsFullAppShellRoutes(baseUrl) && !isDesktopExternalApiBaseUrl(baseUrl));
|
|
27
|
+
}
|
|
21
28
|
/**
|
|
22
29
|
* Collapses the local-inference hub's per-slot text readiness into a single
|
|
23
30
|
* home-surface status, refreshed live from the download stream. Defaults to
|
|
@@ -27,9 +34,22 @@ function appendTokenParam(url) {
|
|
|
27
34
|
export function useHomeModelStatus() {
|
|
28
35
|
const [status, setStatus] = useState(NOT_REQUIRED);
|
|
29
36
|
const refreshTimerRef = useRef(null);
|
|
37
|
+
const runtimeMode = useRuntimeMode();
|
|
30
38
|
useEffect(() => {
|
|
39
|
+
if (runtimeMode.state.phase === "loading" ||
|
|
40
|
+
runtimeMode.isCloudMode ||
|
|
41
|
+
runtimeMode.isRemoteMode ||
|
|
42
|
+
!supportsLocalInferenceStatus()) {
|
|
43
|
+
setStatus(NOT_REQUIRED);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
31
46
|
let cancelled = false;
|
|
32
47
|
const refresh = async () => {
|
|
48
|
+
if (!supportsLocalInferenceStatus()) {
|
|
49
|
+
if (!cancelled)
|
|
50
|
+
setStatus(NOT_REQUIRED);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
33
53
|
try {
|
|
34
54
|
const hub = await client.getLocalInferenceHub();
|
|
35
55
|
if (!cancelled)
|
|
@@ -40,6 +60,12 @@ export function useHomeModelStatus() {
|
|
|
40
60
|
}
|
|
41
61
|
};
|
|
42
62
|
void refresh();
|
|
63
|
+
if (!supportsLocalInferenceStatus()) {
|
|
64
|
+
setStatus(NOT_REQUIRED);
|
|
65
|
+
return () => {
|
|
66
|
+
cancelled = true;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
43
69
|
const url = appendTokenParam(resolveApiUrl("/api/local-inference/downloads/stream"));
|
|
44
70
|
// On-device runtimes are addressed via the native IPC base, which
|
|
45
71
|
// EventSource cannot open — fall back to the one-shot `refresh()` above.
|
|
@@ -60,6 +86,10 @@ export function useHomeModelStatus() {
|
|
|
60
86
|
clearTimeout(refreshTimerRef.current);
|
|
61
87
|
es?.close();
|
|
62
88
|
};
|
|
63
|
-
}, [
|
|
89
|
+
}, [
|
|
90
|
+
runtimeMode.isCloudMode,
|
|
91
|
+
runtimeMode.isRemoteMode,
|
|
92
|
+
runtimeMode.state.phase,
|
|
93
|
+
]);
|
|
64
94
|
return status;
|
|
65
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/SettingsView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SettingsView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/SettingsView.tsx"],"names":[],"mappings":"AAiXA,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,cAAc,GACf,GAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACpB,2CA2GL"}
|
|
@@ -3,10 +3,7 @@ import { isViewVisible } from "@elizaos/core";
|
|
|
3
3
|
import { ArrowLeft } from "lucide-react";
|
|
4
4
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { useAgentElement } from "../../agent-surface/index.js";
|
|
6
|
-
|
|
7
|
-
// settings sections (side effect), then exposes the extra-group list the
|
|
8
|
-
// grouping below reads — so the cloud sections render whenever Settings mounts.
|
|
9
|
-
import { listExtraSettingsGroups } from "../../cloud/settings/index.js";
|
|
6
|
+
import { listExtraSettingsGroups } from "../../cloud/settings/cloud-settings-group.js";
|
|
10
7
|
import { useMediaQuery } from "../../hooks/useMediaQuery.js";
|
|
11
8
|
import { ContentLayout } from "../../layouts/content-layout/index.js";
|
|
12
9
|
import { cn } from "../../lib/utils.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Springboard.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/Springboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAc1D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;+CAC2C;IAC3C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"Springboard.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/Springboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAc1D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;+CAC2C;IAC3C,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2LD,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,OAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,IAAI,EAAE,QAAQ,EACd,YAAY,EACZ,iBAAiB,EACjB,OAAO,EAAE,WAAW,EACpB,eAAe,EACf,YAAmB,EACnB,SAAS,GACV,EAAE,gBAAgB,2CA0UlB"}
|
|
@@ -24,11 +24,27 @@ const LONG_PRESS_MS = 450;
|
|
|
24
24
|
/** Finger travel (px) that aborts a long-press — a pan/swipe is not a press, so
|
|
25
25
|
* a horizontal swipe-back can never ghost-fire edit mode mid-gesture. */
|
|
26
26
|
const LONG_PRESS_MOVE_SLOP = 10;
|
|
27
|
+
function viewKindBadge(entry) {
|
|
28
|
+
if (entry.viewKind === "preview") {
|
|
29
|
+
return {
|
|
30
|
+
label: "Preview",
|
|
31
|
+
title: `${entry.label} is marked preview`,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (entry.viewKind === "developer" || entry.developerOnly === true) {
|
|
35
|
+
return {
|
|
36
|
+
label: "Dev",
|
|
37
|
+
title: `${entry.label} is marked developer`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
27
42
|
// Memoized so a layout reconcile (install/uninstall/sort) re-renders only the
|
|
28
43
|
// tiles whose props actually changed, not all ~20 on a page.
|
|
29
44
|
const IconTile = memo(function IconTile({ entry, editing, favorited, manageable, onLaunch, onToggleFavorite, onEdit, onDelete, onLongPress, }) {
|
|
30
45
|
const timer = useRef(null);
|
|
31
46
|
const pressStart = useRef(null);
|
|
47
|
+
const badge = viewKindBadge(entry);
|
|
32
48
|
const clear = () => {
|
|
33
49
|
if (timer.current !== null) {
|
|
34
50
|
clearTimeout(timer.current);
|
|
@@ -64,7 +80,7 @@ const IconTile = memo(function IconTile({ entry, editing, favorited, manageable,
|
|
|
64
80
|
// ViewTileImage renders this surface as an app icon, not as a
|
|
65
81
|
// cropped catalog preview. The button stays one constant hit target
|
|
66
82
|
// and owns hover/focus chrome; the inner visual owns color/glyph.
|
|
67
|
-
"h-16 w-16 overflow-hidden rounded-2xl border border-white/10 bg-black/35 text-white transition-colors hover:bg-black/45", editing && "animate-pulse"), children: _jsx(ViewTileImage, { entry: entry, source: "springboard", containerClassName: "grid h-full w-full place-items-center", glyphClassName: "h-7 w-7", imageTestId: `springboard-image-${entry.id}` }) }), editing ? (_jsx("button", { type: "button", "aria-label": favorited ? `Unpin ${entry.label}` : `Pin ${entry.label}`, "data-testid": `springboard-fav-${entry.id}`, onClick: (e) => {
|
|
83
|
+
"h-16 w-16 overflow-hidden rounded-2xl border border-white/10 bg-black/35 text-white transition-colors hover:bg-black/45", editing && "animate-pulse"), children: _jsx(ViewTileImage, { entry: entry, source: "springboard", containerClassName: "grid h-full w-full place-items-center", glyphClassName: "h-7 w-7", imageTestId: `springboard-image-${entry.id}` }) }), badge ? (_jsx("span", { "data-testid": `springboard-kind-${entry.id}`, title: badge.title, className: "pointer-events-none absolute -left-1.5 -bottom-1 max-w-[3.75rem] truncate rounded-full border border-black/20 bg-white/90 px-1.5 py-0.5 text-[9px] font-semibold uppercase leading-none text-neutral-900 shadow-sm", children: badge.label })) : null, editing ? (_jsx("button", { type: "button", "aria-label": favorited ? `Unpin ${entry.label}` : `Pin ${entry.label}`, "data-testid": `springboard-fav-${entry.id}`, onClick: (e) => {
|
|
68
84
|
e.stopPropagation();
|
|
69
85
|
onToggleFavorite(entry.id);
|
|
70
86
|
}, className: cn(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpringboardSurface.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/SpringboardSurface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SpringboardSurface.d.ts","sourceRoot":"","sources":["../../../../../../src/components/pages/SpringboardSurface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgJ/B,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACrC;AAED,eAAO,MAAM,kBAAkB,0DAE5B,uBAAuB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuR5C,CAAC"}
|
|
@@ -28,6 +28,9 @@ const HIDDEN_SPRINGBOARD_PATHS = new Set([
|
|
|
28
28
|
"/background",
|
|
29
29
|
]);
|
|
30
30
|
const SPRINGBOARD_SYSTEM_ENTRY_IDS = new Set([
|
|
31
|
+
"phone",
|
|
32
|
+
"messages",
|
|
33
|
+
"contacts",
|
|
31
34
|
"settings",
|
|
32
35
|
"tasks",
|
|
33
36
|
"automations",
|
|
@@ -69,6 +72,13 @@ function compareEntryLabels(left, right) {
|
|
|
69
72
|
sensitivity: "base",
|
|
70
73
|
});
|
|
71
74
|
}
|
|
75
|
+
function compareSpringboardEntries(left, right) {
|
|
76
|
+
const leftOrder = left.order ?? (left.kind === "view" ? 500 : 1000);
|
|
77
|
+
const rightOrder = right.order ?? (right.kind === "view" ? 500 : 1000);
|
|
78
|
+
if (leftOrder !== rightOrder)
|
|
79
|
+
return leftOrder - rightOrder;
|
|
80
|
+
return compareEntryLabels(left, right);
|
|
81
|
+
}
|
|
72
82
|
function dedupeEntries(entries) {
|
|
73
83
|
const seen = new Set();
|
|
74
84
|
const out = [];
|
|
@@ -113,12 +123,13 @@ export const SpringboardSurface = React.memo(function SpringboardSurface({ onNav
|
|
|
113
123
|
const showDynamicViewControls = developerMode && dynamicViewBridgeAvailable();
|
|
114
124
|
const loadedEntries = React.useMemo(() => views
|
|
115
125
|
.filter((view) => isVisibleSpringboardView(view, enabledKinds, activeModality))
|
|
116
|
-
.map(viewToEntry)
|
|
126
|
+
.map(viewToEntry)
|
|
127
|
+
.sort(compareSpringboardEntries), [activeModality, enabledKinds, views]);
|
|
117
128
|
const availableEntries = React.useMemo(() => catalogEntries
|
|
118
129
|
.filter((entry) => entry.state !== "loaded")
|
|
119
130
|
.filter((entry) => entry.modality === activeModality)
|
|
120
|
-
.sort(
|
|
121
|
-
const entries = React.useMemo(() => dedupeEntries([...loadedEntries, ...availableEntries]), [availableEntries, loadedEntries]);
|
|
131
|
+
.sort(compareSpringboardEntries), [activeModality, catalogEntries]);
|
|
132
|
+
const entries = React.useMemo(() => dedupeEntries([...loadedEntries, ...availableEntries]).sort(compareSpringboardEntries), [availableEntries, loadedEntries]);
|
|
122
133
|
const entryById = React.useMemo(() => new Map(entries.map((entry) => [entry.id, entry])), [entries]);
|
|
123
134
|
const refreshDynamicViews = React.useCallback(() => {
|
|
124
135
|
refreshViews();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudAgentsSection.d.ts","sourceRoot":"","sources":["../../../../../../src/components/settings/CloudAgentsSection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CloudAgentsSection.d.ts","sourceRoot":"","sources":["../../../../../../src/components/settings/CloudAgentsSection.tsx"],"names":[],"mappings":"AAmFA;;;;GAIG;AACH,wBAAgB,kBAAkB,4CAmoBjC"}
|
|
@@ -7,7 +7,6 @@ import { getBootConfig } from "../../config/boot-config.js";
|
|
|
7
7
|
import { useBranding } from "../../config/branding.js";
|
|
8
8
|
import { useAppSelector } from "../../state/index.js";
|
|
9
9
|
import { createPersistedActiveServer, loadPersistedActiveServer, savePersistedActiveServer, } from "../../state/persistence.js";
|
|
10
|
-
import { isCloudAgentWaking } from "../../state/types.js";
|
|
11
10
|
import { Button } from "../ui/button.js";
|
|
12
11
|
import { Input } from "../ui/input.js";
|
|
13
12
|
import { StatusBadge } from "../ui/status-badge.js";
|
|
@@ -67,7 +66,6 @@ function currentCloudToken() {
|
|
|
67
66
|
export function CloudAgentsSection() {
|
|
68
67
|
const elizaCloudConnected = useAppSelector((s) => s.elizaCloudConnected);
|
|
69
68
|
const setActionNotice = useAppSelector((s) => s.setActionNotice);
|
|
70
|
-
const cloudHandoffPhase = useAppSelector((s) => s.cloudHandoffPhase);
|
|
71
69
|
const { appName } = useBranding();
|
|
72
70
|
const [agents, setAgents] = useState([]);
|
|
73
71
|
const [loading, setLoading] = useState(true);
|
|
@@ -390,12 +388,12 @@ export function CloudAgentsSection() {
|
|
|
390
388
|
}, children: [_jsx(RefreshCw, { className: "mr-1 h-4 w-4", "aria-hidden": true }), "Try again"] })] })) : agents.length === 0 ? (_jsx("p", { className: "px-4 py-3 text-sm text-txt-muted", "data-testid": "cloud-agents-empty", children: "No cloud agents yet \u2014 create your first one below." })) : (agents.map((agent) => {
|
|
391
389
|
const isActive = agent.agent_id === activeId;
|
|
392
390
|
const busy = busyId === agent.agent_id;
|
|
393
|
-
// Show "Waking…" for a locally-driven resume (wakingId)
|
|
394
|
-
// first-run shared→dedicated handoff
|
|
395
|
-
//
|
|
396
|
-
//
|
|
397
|
-
|
|
398
|
-
|
|
391
|
+
// Show "Waking…" for a locally-driven resume (wakingId). The
|
|
392
|
+
// first-run shared→dedicated handoff no longer surfaces here: it
|
|
393
|
+
// re-points the live client SILENTLY (no row-level "waking" state),
|
|
394
|
+
// and its in-flight progress is shown by the chat-shell handoff
|
|
395
|
+
// toast (CloudHandoffBanner), not this Settings row.
|
|
396
|
+
const waking = wakingId === agent.agent_id;
|
|
399
397
|
const status = (agent.status || "").toLowerCase();
|
|
400
398
|
const canSuspend = status === "running";
|
|
401
399
|
const canResume = NON_RUNNING_STATES.has(status);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudOverviewSection.d.ts","sourceRoot":"","sources":["../../../../../../src/components/settings/CloudOverviewSection.tsx"],"names":[],"mappings":"AAgDA,wBAAgB,oBAAoB,4CAkGnC"}
|