@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
package/state/useChatSend.js
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
import { asRecord } from "@elizaos/shared";
|
|
8
8
|
import { useCallback, useEffect, useRef } from "react";
|
|
9
9
|
import { client, } from "../api/index.js";
|
|
10
|
-
import {
|
|
10
|
+
import { isLimitedCloudAgentApiBase } from "../api/app-shell-capabilities.js";
|
|
11
11
|
import { expandSavedCustomCommand, loadSavedCustomCommands, normalizeSlashCommandName, } from "../chat/index.js";
|
|
12
|
+
import { CLOUD_HANDOFF_PHASE_EVENT, } from "../events/index.js";
|
|
12
13
|
import { getWindowNavigationPath } from "../navigation/index.js";
|
|
13
|
-
import { isDedicatedCloudAgentBase } from "../utils/cloud-agent-base.js";
|
|
14
14
|
import { clearChatDraft } from "./ChatComposerContext.hooks.js";
|
|
15
15
|
import { isConversationRecord } from "./chat-conversation-guards.js";
|
|
16
16
|
import { applyStreamingTextModification, filterRenderableConversationMessages, formatSearchBullet, mergeStreamingText, normalizeCustomActionName, parseCustomActionParams, parseSlashCommandInput, shouldApplyFinalStreamText, } from "./internal.js";
|
|
@@ -37,11 +37,7 @@ function optimisticAttachmentKind(mimeType) {
|
|
|
37
37
|
* user's message must NOT be silently dropped.
|
|
38
38
|
*/
|
|
39
39
|
function isCloudAgentBase(value) {
|
|
40
|
-
|
|
41
|
-
return false;
|
|
42
|
-
// Either the shared-runtime REST adapter or a dedicated <id>.elizacloud.ai
|
|
43
|
-
// subdomain; control-plane hosts are excluded by isDedicatedCloudAgentBase.
|
|
44
|
-
return (isDirectCloudSharedAgentBase(value) || isDedicatedCloudAgentBase(value));
|
|
40
|
+
return isLimitedCloudAgentApiBase(value);
|
|
45
41
|
}
|
|
46
42
|
function uniq(values) {
|
|
47
43
|
const seen = new Set();
|
|
@@ -211,6 +207,18 @@ export function useChatSend(deps) {
|
|
|
211
207
|
const { t, uiLanguage, tab, activeConversationId, ptySessionsRef, setChatInput, setChatSending, setChatFirstTokenReceived, setServerTurnStatus, setChatLastUsage, setChatPendingImages, setConversations, setActiveConversationId, setCompanionMessageCutoffTs, setConversationMessages, setUnreadConversations, setActionNotice, activeConversationIdRef, chatInputRef, chatPendingImagesRef, conversationsRef, conversationMessagesRef, chatAbortRef, chatSendBusyRef, chatSendNonceRef, loadConversations, loadConversationMessages, elizaCloudEnabled, elizaCloudConnected, pollCloudCredits, } = deps;
|
|
212
208
|
const chatSendQueueRef = useRef([]);
|
|
213
209
|
const activeChatTurnRef = useRef(null);
|
|
210
|
+
// Freeze-on-shared (cloud-agent handoff, PR2). While a shared→dedicated
|
|
211
|
+
// handoff is migrating, the user is still pointed at the SHARED agent but the
|
|
212
|
+
// shared transcript has already been (or is about to be) snapshotted. The
|
|
213
|
+
// import endpoint is populated-room skip-all idempotent, so any message that
|
|
214
|
+
// reaches the shared history AFTER the snapshot is silently lost — a re-import
|
|
215
|
+
// inserts zero. To guarantee no loss we DON'T send outgoing messages to the
|
|
216
|
+
// shared agent during the window: they sit in `chatSendQueueRef` (un-drained)
|
|
217
|
+
// and are flushed once `onSwitch` has re-pointed the client at the dedicated
|
|
218
|
+
// container (which already holds the copied history). When no handoff is in
|
|
219
|
+
// flight this stays false → the drain runs exactly as before (byte-identical
|
|
220
|
+
// when `preferSharedCloudTier` is off, since no `migrating` phase ever fires).
|
|
221
|
+
const handoffFrozenRef = useRef(false);
|
|
214
222
|
// Streaming-commit throttle.
|
|
215
223
|
// The SSE `onToken` callback fires once per token (often >60/sec on a fast
|
|
216
224
|
// model). Instead of committing each one, the latest cumulative text is parked
|
|
@@ -686,7 +694,8 @@ export function useChatSend(deps) {
|
|
|
686
694
|
if (userMessageCount === 1 &&
|
|
687
695
|
data.completed !== false &&
|
|
688
696
|
data.text.trim() &&
|
|
689
|
-
!data.failureKind
|
|
697
|
+
!data.failureKind &&
|
|
698
|
+
!isCloudAgentBase(client.getBaseUrl())) {
|
|
690
699
|
void client
|
|
691
700
|
.renameConversation(convId, "", { generate: true })
|
|
692
701
|
.then(() => {
|
|
@@ -853,10 +862,31 @@ export function useChatSend(deps) {
|
|
|
853
862
|
const flushQueuedChatSends = useCallback(async () => {
|
|
854
863
|
if (chatSendBusyRef.current)
|
|
855
864
|
return;
|
|
865
|
+
// Handoff in progress: hold the queue. We must NOT dispatch to the network
|
|
866
|
+
// here — the live client still points at the shared agent, and anything that
|
|
867
|
+
// lands on the shared history after its snapshot is lost to the skip-all
|
|
868
|
+
// import. The queued turns stay put and are drained when the switch settles
|
|
869
|
+
// (the freeze is cleared and this is re-invoked, now pointed at the
|
|
870
|
+
// dedicated container). The composer is already cleared + `setChatSending`
|
|
871
|
+
// is on, so the user sees their message accepted, not dropped.
|
|
872
|
+
if (handoffFrozenRef.current) {
|
|
873
|
+
setChatSending(true);
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
856
876
|
chatSendBusyRef.current = true;
|
|
857
877
|
setChatSending(true);
|
|
858
878
|
try {
|
|
859
879
|
while (chatSendQueueRef.current.length > 0) {
|
|
880
|
+
// Re-check the freeze EACH iteration: a handoff can begin (`migrating`)
|
|
881
|
+
// while an earlier turn is mid-`await` here, and `sendChatText` can
|
|
882
|
+
// enqueue a new turn during that await. Without this guard the loop
|
|
883
|
+
// would drain that newly-queued turn to the SHARED agent after its
|
|
884
|
+
// snapshot — re-opening the skip-all-import loss window the freeze
|
|
885
|
+
// exists to close. `break` leaves the not-yet-shifted turns queued; the
|
|
886
|
+
// terminal-phase handler re-invokes this flush after the client base is
|
|
887
|
+
// repointed at the dedicated, so they land there exactly once.
|
|
888
|
+
if (handoffFrozenRef.current)
|
|
889
|
+
break;
|
|
860
890
|
const nextTurn = chatSendQueueRef.current.shift();
|
|
861
891
|
if (!nextTurn)
|
|
862
892
|
break;
|
|
@@ -880,6 +910,40 @@ export function useChatSend(deps) {
|
|
|
880
910
|
setChatFirstTokenReceived,
|
|
881
911
|
setChatSending,
|
|
882
912
|
]);
|
|
913
|
+
// Drive the freeze off the existing shared→dedicated handoff lifecycle
|
|
914
|
+
// (CLOUD_HANDOFF_PHASE_EVENT). `migrating` opens the window (stop draining to
|
|
915
|
+
// the shared agent); every terminal phase closes it and drains:
|
|
916
|
+
// - `switched` / `switched-empty`: `onSwitch` has already re-pointed the
|
|
917
|
+
// client at the dedicated container (it runs INSIDE the handoff before the
|
|
918
|
+
// phase is dispatched), so the drain now delivers the queued messages to
|
|
919
|
+
// the dedicated — exactly where the copied history lives.
|
|
920
|
+
// - `timed-out` / `failed`: no switch happened, the user safely stays on the
|
|
921
|
+
// working shared agent, so unfreeze and let the queue flow to the shared
|
|
922
|
+
// agent as normal (the snapshot never landed, nothing to lose).
|
|
923
|
+
// Without a handoff this listener never fires, so the queue drains inline as
|
|
924
|
+
// before — no behavior change when the shared-tier flag is off.
|
|
925
|
+
useEffect(() => {
|
|
926
|
+
if (typeof window === "undefined")
|
|
927
|
+
return;
|
|
928
|
+
const onPhase = (event) => {
|
|
929
|
+
const detail = event.detail;
|
|
930
|
+
if (!detail)
|
|
931
|
+
return;
|
|
932
|
+
if (detail.phase === "migrating") {
|
|
933
|
+
handoffFrozenRef.current = true;
|
|
934
|
+
return;
|
|
935
|
+
}
|
|
936
|
+
// Any terminal phase ends the window. Drain whatever queued up — by now
|
|
937
|
+
// the client base is the dedicated container (on a switch) or unchanged
|
|
938
|
+
// (on timeout/failure), so the flush targets the right agent either way.
|
|
939
|
+
if (handoffFrozenRef.current) {
|
|
940
|
+
handoffFrozenRef.current = false;
|
|
941
|
+
void flushQueuedChatSends();
|
|
942
|
+
}
|
|
943
|
+
};
|
|
944
|
+
window.addEventListener(CLOUD_HANDOFF_PHASE_EVENT, onPhase);
|
|
945
|
+
return () => window.removeEventListener(CLOUD_HANDOFF_PHASE_EVENT, onPhase);
|
|
946
|
+
}, [flushQueuedChatSends]);
|
|
883
947
|
const sendChatText = useCallback(async (rawInput, options) => {
|
|
884
948
|
const hasAttachedImages = Boolean(options?.images?.length);
|
|
885
949
|
if (!rawInput.trim() && !hasAttachedImages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCloudState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useCloudState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"useCloudState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useCloudState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA+LH,UAAU,gBAAgB;IACxB,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,OAAO,KACX,IAAI,CAAC;IACV,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gEAAgE;IAChE,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3B,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAID,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,gBAAgB,EAChB,CAAC,EACD,gBAAwB,GACzB,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDA+EwB,OAAO,CAAC,IAAI,CAAC;4BAIP,OAAO,CAAC,OAAO,CAAC;yCA0HrC,MAAM,GAAG,IAAI;mCAuUvB;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,OAAO,CAAC,IAAI,CAAC;EAiR/D"}
|
package/state/useCloudState.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
import { readStoredStewardToken, writeStoredStewardToken, } from "@elizaos/shared/steward-session-client";
|
|
20
20
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
21
21
|
import { client } from "../api/index.js";
|
|
22
|
+
import { supportsFullAppShellRoutes } from "../api/app-shell-capabilities.js";
|
|
22
23
|
import { cloudTokenSecsRemaining, refreshCloudStewardSession, } from "../api/client-cloud.js";
|
|
23
24
|
import { invokeDesktopBridgeRequestWithTimeout, isElectrobunRuntime, } from "../bridge/index.js";
|
|
24
25
|
import { getBootConfig, setBootConfig } from "../config/boot-config.js";
|
|
@@ -59,6 +60,11 @@ function isSameOriginLocalHttpBackend() {
|
|
|
59
60
|
}
|
|
60
61
|
return isPrivateNetworkHost(hostname);
|
|
61
62
|
}
|
|
63
|
+
function isDevUiPortWithoutEmbeddedBackend() {
|
|
64
|
+
if (typeof window === "undefined")
|
|
65
|
+
return false;
|
|
66
|
+
return window.location.port === "2138";
|
|
67
|
+
}
|
|
62
68
|
function isCapacitorNativeRuntime() {
|
|
63
69
|
if (typeof globalThis === "undefined")
|
|
64
70
|
return false;
|
|
@@ -111,8 +117,18 @@ function hasCloudLoginBackend() {
|
|
|
111
117
|
return (!isConfiguredCloudSiteBase(explicitBase) &&
|
|
112
118
|
!isCapacitorAssetBase(explicitBase));
|
|
113
119
|
}
|
|
120
|
+
if (isDevUiPortWithoutEmbeddedBackend())
|
|
121
|
+
return false;
|
|
114
122
|
return isSameOriginLocalHttpBackend();
|
|
115
123
|
}
|
|
124
|
+
function canPollCloudStatus() {
|
|
125
|
+
const explicitBase = typeof client.getBaseUrl === "function" ? client.getBaseUrl().trim() : "";
|
|
126
|
+
if (isCapacitorNativeRuntime())
|
|
127
|
+
return true;
|
|
128
|
+
if (explicitBase && isConfiguredCloudSiteBase(explicitBase))
|
|
129
|
+
return true;
|
|
130
|
+
return hasCloudLoginBackend() && supportsFullAppShellRoutes(explicitBase);
|
|
131
|
+
}
|
|
116
132
|
/**
|
|
117
133
|
* Resolve the Steward refresh endpoint for the current target. On hosted web
|
|
118
134
|
* the same-origin cookie path works (the HttpOnly `steward-refresh-token`
|
|
@@ -202,6 +218,13 @@ export function useCloudState({ setActionNotice, loadWalletConfig, t, disconnect
|
|
|
202
218
|
const handleCloudLoginRef = useRef(async () => { });
|
|
203
219
|
// ── Callbacks ──────────────────────────────────────────────────────
|
|
204
220
|
const pollCloudCredits = useCallback(async () => {
|
|
221
|
+
if (!canPollCloudStatus()) {
|
|
222
|
+
if (elizaCloudPollInterval.current) {
|
|
223
|
+
clearInterval(elizaCloudPollInterval.current);
|
|
224
|
+
elizaCloudPollInterval.current = null;
|
|
225
|
+
}
|
|
226
|
+
return lastElizaCloudPollConnectedRef.current;
|
|
227
|
+
}
|
|
205
228
|
if (elizaCloudDisconnectInFlightRef.current) {
|
|
206
229
|
return lastElizaCloudPollConnectedRef.current;
|
|
207
230
|
}
|
|
@@ -392,9 +415,14 @@ export function useCloudState({ setActionNotice, loadWalletConfig, t, disconnect
|
|
|
392
415
|
// direct cloud auth (no local backend) or go through the agent proxy.
|
|
393
416
|
const hasBackend = hasCloudLoginBackend();
|
|
394
417
|
const cloudApiBase = getBootConfig().cloudApiBase ?? "https://www.elizacloud.ai";
|
|
395
|
-
|
|
418
|
+
let useDirectAuth = !hasBackend;
|
|
396
419
|
if (hasBackend) {
|
|
397
420
|
const cloudStatus = await client.getCloudStatus().catch(() => null);
|
|
421
|
+
if (cloudStatus === null) {
|
|
422
|
+
// Browser/dev shells can run on localhost without a local agent proxy.
|
|
423
|
+
// In that case, keep first-run Cloud usable via the direct Cloud flow.
|
|
424
|
+
useDirectAuth = true;
|
|
425
|
+
}
|
|
398
426
|
const alreadyAuthenticated = isCloudStatusAuthenticated(Boolean(cloudStatus?.connected), cloudStatus?.reason);
|
|
399
427
|
if (alreadyAuthenticated) {
|
|
400
428
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDataLoaders.d.ts","sourceRoot":"","sources":["../../../../../src/state/useDataLoaders.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AACf,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAExB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EAExB,KAAK,YAAY,EACjB,KAAK,4BAA4B,EACjC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACvB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"useDataLoaders.d.ts","sourceRoot":"","sources":["../../../../../src/state/useDataLoaders.ts"],"names":[],"mappings":"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"}
|
package/state/useDataLoaders.js
CHANGED
|
@@ -10,6 +10,7 @@ import { logger } from "@elizaos/logger";
|
|
|
10
10
|
import { resolveStylePresetByAvatarIndex } from "@elizaos/shared";
|
|
11
11
|
import { useCallback, useEffect, useRef, useState, } from "react";
|
|
12
12
|
import { client, } from "../api/index.js";
|
|
13
|
+
import { supportsFullAppShellRoutes } from "../api/app-shell-capabilities.js";
|
|
13
14
|
import { normalizeOwnerName } from "../utils/owner-name.js";
|
|
14
15
|
import { buildAutonomyGapReplayRequests, hasPendingAutonomyGaps, markPendingAutonomyGapsPartial, mergeAutonomyEvents, } from "./autonomy.js";
|
|
15
16
|
import { normalizeConversationList } from "./chat-conversation-guards.js";
|
|
@@ -378,6 +379,14 @@ export function useDataLoaders(deps) {
|
|
|
378
379
|
const [workbenchTriggersAvailable, setWorkbenchTriggersAvailable] = useState(false);
|
|
379
380
|
const [workbenchTodosAvailable, setWorkbenchTodosAvailable] = useState(false);
|
|
380
381
|
const loadWorkbench = useCallback(async () => {
|
|
382
|
+
if (!supportsFullAppShellRoutes(client.getBaseUrl())) {
|
|
383
|
+
setWorkbench(null);
|
|
384
|
+
setWorkbenchTasksAvailable(false);
|
|
385
|
+
setWorkbenchTriggersAvailable(false);
|
|
386
|
+
setWorkbenchTodosAvailable(false);
|
|
387
|
+
setWorkbenchLoading(false);
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
381
390
|
setWorkbenchLoading(true);
|
|
382
391
|
try {
|
|
383
392
|
const result = await client.getWorkbenchOverview();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFirstRunCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/state/useFirstRunCallbacks.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useFirstRunCallbacks.d.ts","sourceRoot":"","sources":["../../../../../src/state/useFirstRunCallbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -412,6 +412,11 @@ export function useFirstRunCallbacks(deps) {
|
|
|
412
412
|
name: firstRunName,
|
|
413
413
|
bio: style?.bio ?? ["An autonomous AI agent."],
|
|
414
414
|
...(preferAgentId ? { preferAgentId } : {}),
|
|
415
|
+
// Phase-0 MVP: boot-config flag → request a SHARED (instant,
|
|
416
|
+
// container-free) agent on create. Default off → dedicated, unchanged.
|
|
417
|
+
...(getBootConfig().preferSharedCloudTier
|
|
418
|
+
? { preferSharedTier: true }
|
|
419
|
+
: {}),
|
|
415
420
|
onProgress: () => { },
|
|
416
421
|
});
|
|
417
422
|
const iosCloudLocalAgent = shouldUseIosCloudLocalAgent();
|
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
* reducer + dispatch, cutting hook count and making state transitions explicit.
|
|
6
6
|
*/
|
|
7
7
|
import type { AgentStatus } from "../api/index.js";
|
|
8
|
-
import { type CloudHandoffPhaseDetail } from "../events/index.js";
|
|
9
8
|
import type { ActionBanner, ActionNotice, AppState, LifecycleAction, StartupErrorState, StartupPhase } from "./types.js";
|
|
10
9
|
export interface LifecycleState {
|
|
11
10
|
connected: boolean;
|
|
12
11
|
agentStatus: AgentStatus | null;
|
|
13
|
-
/** Latest shared→dedicated cloud-agent handoff phase (see CLOUD_HANDOFF_PHASE_EVENT). */
|
|
14
|
-
cloudHandoffPhase: CloudHandoffPhaseDetail | null;
|
|
15
12
|
firstRunComplete: boolean;
|
|
16
13
|
firstRunUiRevealNonce: number;
|
|
17
14
|
firstRunLoading: boolean;
|
|
@@ -36,9 +33,6 @@ type LifecycleAction_ = {
|
|
|
36
33
|
} | {
|
|
37
34
|
type: "SET_AGENT_STATUS";
|
|
38
35
|
value: AgentStatus | null;
|
|
39
|
-
} | {
|
|
40
|
-
type: "SET_CLOUD_HANDOFF_PHASE";
|
|
41
|
-
value: CloudHandoffPhaseDetail | null;
|
|
42
36
|
} | {
|
|
43
37
|
type: "SET_FIRST_RUN_COMPLETE";
|
|
44
38
|
value: boolean;
|
|
@@ -105,7 +99,6 @@ export interface LifecycleStateHook {
|
|
|
105
99
|
setAgentStatus: (v: AgentStatus | null) => void;
|
|
106
100
|
/** Only calls setAgentStatus when the payload has materially changed. */
|
|
107
101
|
setAgentStatusIfChanged: (next: AgentStatus | null) => void;
|
|
108
|
-
setCloudHandoffPhase: (v: CloudHandoffPhaseDetail | null) => void;
|
|
109
102
|
setFirstRunComplete: (v: boolean) => void;
|
|
110
103
|
incrementFirstRunRevealNonce: () => void;
|
|
111
104
|
setFirstRunLoading: (v: boolean) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLifecycleState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useLifecycleState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"useLifecycleState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useLifecycleState.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,11 @@
|
|
|
5
5
|
* reducer + dispatch, cutting hook count and making state transitions explicit.
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback, useEffect, useMemo, useReducer, useRef } from "react";
|
|
8
|
-
import { CLOUD_HANDOFF_PHASE_EVENT, } from "../events/index.js";
|
|
9
8
|
import { TOAST_TTL_MS } from "./action-notice.js";
|
|
10
9
|
import { loadPersistedFirstRunComplete, savePersistedFirstRunComplete, } from "./persistence.js";
|
|
11
10
|
const INITIAL_LIFECYCLE_STATE = {
|
|
12
11
|
connected: false,
|
|
13
12
|
agentStatus: null,
|
|
14
|
-
cloudHandoffPhase: null,
|
|
15
13
|
firstRunComplete: loadPersistedFirstRunComplete(),
|
|
16
14
|
firstRunUiRevealNonce: 0,
|
|
17
15
|
firstRunLoading: true,
|
|
@@ -41,10 +39,6 @@ function lifecycleReducer(state, action) {
|
|
|
41
39
|
return { ...state, connected: action.value };
|
|
42
40
|
case "SET_AGENT_STATUS":
|
|
43
41
|
return { ...state, agentStatus: action.value };
|
|
44
|
-
case "SET_CLOUD_HANDOFF_PHASE":
|
|
45
|
-
if (state.cloudHandoffPhase === action.value)
|
|
46
|
-
return state;
|
|
47
|
-
return { ...state, cloudHandoffPhase: action.value };
|
|
48
42
|
case "SET_FIRST_RUN_COMPLETE":
|
|
49
43
|
return { ...state, firstRunComplete: action.value };
|
|
50
44
|
case "INCREMENT_FIRST_RUN_REVEAL_NONCE":
|
|
@@ -174,23 +168,6 @@ export function useLifecycleState() {
|
|
|
174
168
|
agentStatusRef.current = next;
|
|
175
169
|
dispatch({ type: "SET_AGENT_STATUS", value: next });
|
|
176
170
|
}, []);
|
|
177
|
-
const setCloudHandoffPhase = useCallback((v) => dispatch({ type: "SET_CLOUD_HANDOFF_PHASE", value: v }), []);
|
|
178
|
-
// Single subscriber for the shared→dedicated handoff phase. Mirroring it into
|
|
179
|
-
// lifecycle state (rather than each surface subscribing to the window event on
|
|
180
|
-
// its own) is what lets the chat shell + Settings cloud-agents row read one
|
|
181
|
-
// unified "shared-now / dedicated-pending" signal. The CloudHandoffBanner keeps
|
|
182
|
-
// its own display-lingering hook; this is the canonical app-state copy.
|
|
183
|
-
useEffect(() => {
|
|
184
|
-
if (typeof window === "undefined")
|
|
185
|
-
return;
|
|
186
|
-
const onPhase = (event) => {
|
|
187
|
-
const detail = event.detail;
|
|
188
|
-
if (detail)
|
|
189
|
-
dispatch({ type: "SET_CLOUD_HANDOFF_PHASE", value: detail });
|
|
190
|
-
};
|
|
191
|
-
window.addEventListener(CLOUD_HANDOFF_PHASE_EVENT, onPhase);
|
|
192
|
-
return () => window.removeEventListener(CLOUD_HANDOFF_PHASE_EVENT, onPhase);
|
|
193
|
-
}, []);
|
|
194
171
|
const setFirstRunComplete = useCallback((v) => {
|
|
195
172
|
savePersistedFirstRunComplete(v);
|
|
196
173
|
dispatch({ type: "SET_FIRST_RUN_COMPLETE", value: v });
|
|
@@ -280,7 +257,6 @@ export function useLifecycleState() {
|
|
|
280
257
|
setConnected,
|
|
281
258
|
setAgentStatus,
|
|
282
259
|
setAgentStatusIfChanged,
|
|
283
|
-
setCloudHandoffPhase,
|
|
284
260
|
setFirstRunComplete,
|
|
285
261
|
incrementFirstRunRevealNonce,
|
|
286
262
|
setFirstRunLoading,
|
|
@@ -33,8 +33,8 @@ export declare function usePluginsSkillsState({ setActionNotice, setPendingResta
|
|
|
33
33
|
pluginsLoaded: boolean;
|
|
34
34
|
pluginFilter: "streaming" | "all" | "ai-provider" | "connector" | "feature";
|
|
35
35
|
setPluginFilter: import("react").Dispatch<import("react").SetStateAction<"streaming" | "all" | "ai-provider" | "connector" | "feature">>;
|
|
36
|
-
pluginStatusFilter: "
|
|
37
|
-
setPluginStatusFilter: import("react").Dispatch<import("react").SetStateAction<"
|
|
36
|
+
pluginStatusFilter: "disabled" | "all" | "enabled";
|
|
37
|
+
setPluginStatusFilter: import("react").Dispatch<import("react").SetStateAction<"disabled" | "all" | "enabled">>;
|
|
38
38
|
pluginSearch: string;
|
|
39
39
|
setPluginSearch: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
40
40
|
pluginSettingsOpen: Set<string>;
|
|
@@ -27,8 +27,10 @@ interface WalletStateParams {
|
|
|
27
27
|
agentName: string | undefined;
|
|
28
28
|
/** Current character draft name (from characterDraft?.name) */
|
|
29
29
|
characterName: string | undefined;
|
|
30
|
+
/** Hydrate capability flags from the running backend config. */
|
|
31
|
+
hydrateServerConfig?: boolean;
|
|
30
32
|
}
|
|
31
|
-
export declare function useWalletState({ setActionNotice, promptModal, agentName, characterName, }: WalletStateParams): {
|
|
33
|
+
export declare function useWalletState({ setActionNotice, promptModal, agentName, characterName, hydrateServerConfig, }: WalletStateParams): {
|
|
32
34
|
state: {
|
|
33
35
|
browserEnabled: boolean;
|
|
34
36
|
computerUseEnabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useWalletState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAUrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,UAAU,iBAAiB;IACzB,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,OAAO,KACX,IAAI,CAAC;IACV,mEAAmE;IACnE,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"useWalletState.d.ts","sourceRoot":"","sources":["../../../../../src/state/useWalletState.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAUrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,UAAU,iBAAiB;IACzB,eAAe,EAAE,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,EACnC,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,OAAO,KACX,IAAI,CAAC;IACV,mEAAmE;IACnE,WAAW,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7D,uDAAuD;IACvD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,+DAA+D;IAC/D,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAID,wBAAgB,cAAc,CAAC,EAC7B,eAAe,EACf,WAAW,EACX,SAAS,EACT,aAAa,EACb,mBAA0B,GAC3B,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAYwB,OAAO;+BAWH,OAAO;0BApBZ,OAAO;;;;;;;;;;;;;qCAgQ/B,yBAAyB;8BAyF1B,eAAe,UAAU,YAAY;wBAArC,eAAe,UAAU,YAAY;;;;;;;;0BA4JrC,OAAO;;EA0GxB"}
|
package/state/useWalletState.js
CHANGED
|
@@ -21,7 +21,7 @@ import { isApiError } from "../api/client-types-core.js";
|
|
|
21
21
|
import { confirmDesktopAction } from "../utils/desktop-dialogs.js";
|
|
22
22
|
import { loadBrowserEnabled, loadComputerUseEnabled, loadWalletEnabled, saveBrowserEnabled, saveComputerUseEnabled, saveWalletEnabled, } from "./persistence.js";
|
|
23
23
|
// ── Hook ──────────────────────────────────────────────────────────────
|
|
24
|
-
export function useWalletState({ setActionNotice, promptModal, agentName, characterName, }) {
|
|
24
|
+
export function useWalletState({ setActionNotice, promptModal, agentName, characterName, hydrateServerConfig = true, }) {
|
|
25
25
|
// ── Feature toggles ────────────────────────────────────────────────
|
|
26
26
|
const [walletEnabled, setWalletEnabledRaw] = useState(loadWalletEnabled);
|
|
27
27
|
const setWalletEnabled = useCallback((v) => {
|
|
@@ -51,6 +51,8 @@ export function useWalletState({ setActionNotice, promptModal, agentName, charac
|
|
|
51
51
|
// Server config (written by TOGGLE_CAPABILITY agent action) wins on
|
|
52
52
|
// first load; localStorage remains a fallback for offline / stale.
|
|
53
53
|
useEffect(() => {
|
|
54
|
+
if (!hydrateServerConfig)
|
|
55
|
+
return;
|
|
54
56
|
let cancelled = false;
|
|
55
57
|
void client
|
|
56
58
|
.getConfig()
|
|
@@ -77,7 +79,7 @@ export function useWalletState({ setActionNotice, promptModal, agentName, charac
|
|
|
77
79
|
return () => {
|
|
78
80
|
cancelled = true;
|
|
79
81
|
};
|
|
80
|
-
}, []);
|
|
82
|
+
}, [hydrateServerConfig]);
|
|
81
83
|
// ── Wallet / Inventory ─────────────────────────────────────────────
|
|
82
84
|
const [walletAddresses, setWalletAddresses] = useState(null);
|
|
83
85
|
const [walletConfig, setWalletConfig] = useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-providers.d.ts","sourceRoot":"","sources":["../../../../../src/storybook/mock-providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAM5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,KAAK,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACjD,KAAK,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG;IACnE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC,CAAC;
|
|
1
|
+
{"version":3,"file":"mock-providers.d.ts","sourceRoot":"","sources":["../../../../../src/storybook/mock-providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAM5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,KAAK,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AACjD,KAAK,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC5E,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,GAAG;IACnE,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC,CAAC;AA0EF;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,UAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,2CASA;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,2CAaA"}
|
|
@@ -64,6 +64,13 @@ html.eliza-electrobun-macos-titlebar [data-window-titlebar-banner="true"] {
|
|
|
64
64
|
);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
html.eliza-electrobun-macos-titlebar .eliza-content-layout {
|
|
68
|
+
padding-inline-start: max(
|
|
69
|
+
env(safe-area-inset-left, 0px),
|
|
70
|
+
var(--eliza-macos-frame-left-inset)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
67
74
|
html.eliza-electrobun-macos-titlebar a,
|
|
68
75
|
html.eliza-electrobun-macos-titlebar button,
|
|
69
76
|
html.eliza-electrobun-macos-titlebar input,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetHost.d.ts","sourceRoot":"","sources":["../../../../../src/widgets/WidgetHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"WidgetHost.d.ts","sourceRoot":"","sources":["../../../../../src/widgets/WidgetHost.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAchE,OAAO,KAAK,EAAE,uBAAuB,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AAGhF,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAyFD,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,IAAI,EAAE,UAAU,CAAC;IACjB,qEAAqE;IACrE,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,uBAAuB,KAAK,OAAO,CAAC;CAC5D;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,MAAM,EACN,WAAW,EACX,SAAS,EACT,MAAgB,EAChB,aAAoB,EACpB,MAAM,GACP,EAAE,eAAe,kDAoMjB"}
|
package/widgets/WidgetHost.js
CHANGED
|
@@ -12,6 +12,8 @@ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
|
12
12
|
*/
|
|
13
13
|
import { isViewVisible } from "@elizaos/core";
|
|
14
14
|
import { Component, useMemo, useRef, } from "react";
|
|
15
|
+
import { client } from "../api/index.js";
|
|
16
|
+
import { supportsFullAppShellRoutes } from "../api/app-shell-capabilities.js";
|
|
15
17
|
import { UiRenderer } from "../components/config-ui/ui-renderer.js";
|
|
16
18
|
import { useNow } from "../hooks/useNow.js";
|
|
17
19
|
import { useAppSelectorShallow } from "../state/index.js";
|
|
@@ -62,11 +64,23 @@ const WIDGET_SLOTS = new Set([
|
|
|
62
64
|
"nav-page",
|
|
63
65
|
"home",
|
|
64
66
|
]);
|
|
67
|
+
const FULL_APP_SHELL_WIDGET_PLUGIN_IDS = new Set([
|
|
68
|
+
"agent-orchestrator",
|
|
69
|
+
"calendar",
|
|
70
|
+
"finances",
|
|
71
|
+
"goals",
|
|
72
|
+
"health",
|
|
73
|
+
"inbox",
|
|
74
|
+
"needs-attention",
|
|
75
|
+
"relationships",
|
|
76
|
+
"todo",
|
|
77
|
+
]);
|
|
65
78
|
function isWidgetSlot(value) {
|
|
66
79
|
return WIDGET_SLOTS.has(value);
|
|
67
80
|
}
|
|
68
81
|
export function WidgetHost({ slot, events, clearEvents, className, layout = "stack", hideWhenEmpty = true, filter, }) {
|
|
69
|
-
const plugins = useAppSelectorShallow((s) => s.plugins);
|
|
82
|
+
const plugins = useAppSelectorShallow((s) => Array.isArray(s.plugins) ? s.plugins : []);
|
|
83
|
+
const currentBaseUrl = useAppSelectorShallow(() => client.getBaseUrl());
|
|
70
84
|
const enabledKinds = useEnabledViewKinds();
|
|
71
85
|
// Live importance inputs for the home ranker. Subscribed unconditionally
|
|
72
86
|
// (hooks can't be conditional) but only consumed for the `home` slot below.
|
|
@@ -88,9 +102,13 @@ export function WidgetHost({ slot, events, clearEvents, className, layout = "sta
|
|
|
88
102
|
}, [plugins]);
|
|
89
103
|
const resolved = useMemo(() => {
|
|
90
104
|
const all = resolveWidgetsForSlot(slot, plugins ?? [], serverDeclarations);
|
|
91
|
-
const
|
|
105
|
+
const fullAppShellRoutesEnabled = supportsFullAppShellRoutes(currentBaseUrl);
|
|
106
|
+
const gated = all.filter((entry) => isViewVisible(entry.declaration, enabledKinds) &&
|
|
107
|
+
(fullAppShellRoutesEnabled ||
|
|
108
|
+
(!FULL_APP_SHELL_WIDGET_PLUGIN_IDS.has(entry.declaration.pluginId) &&
|
|
109
|
+
entry.defaultWidgetSink !== "activity")));
|
|
92
110
|
return filter ? gated.filter((entry) => filter(entry.declaration)) : gated;
|
|
93
|
-
}, [slot, plugins, serverDeclarations, filter, enabledKinds]);
|
|
111
|
+
}, [slot, plugins, serverDeclarations, filter, enabledKinds, currentBaseUrl]);
|
|
94
112
|
// Notification → signal inputs, memoized so the `now` tick (which re-runs the
|
|
95
113
|
// component) doesn't rebuild this array each minute — it changes only when the
|
|
96
114
|
// inbox itself changes.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Documents (Knowledge) cloud route entry.
|
|
3
|
-
*
|
|
4
|
-
* Lifted from `@elizaos/cloud-frontend/src/dashboard/documents/Page.tsx`. Gates
|
|
5
|
-
* on the Steward session, loads the caller's characters with {@link useMyAgents}
|
|
6
|
-
* (the per-character scope selector), and renders {@link DocumentsPageClient}.
|
|
7
|
-
* Loading uses the cloud-ui dashboard placeholder; the page title is set via
|
|
8
|
-
* {@link useDocumentTitle} (no Helmet).
|
|
9
|
-
*
|
|
10
|
-
* The same {@link DocumentsSurface} is exported for both the registered
|
|
11
|
-
* standalone route and the Wave-3 settings-section wrapper (see `index.ts`).
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* The Documents/Knowledge surface. Embeddable: used directly by the Wave-3
|
|
15
|
-
* settings section and wrapped by {@link DocumentsRoute} for the standalone
|
|
16
|
-
* route.
|
|
17
|
-
*/
|
|
18
|
-
export declare function DocumentsSurface(): import("react/jsx-runtime").JSX.Element;
|
|
19
|
-
/** Default export consumed by the cloud-route registry. */
|
|
20
|
-
export default function DocumentsRoute(): import("react/jsx-runtime").JSX.Element;
|
|
21
|
-
//# sourceMappingURL=DocumentsRoute.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentsRoute.d.ts","sourceRoot":"","sources":["../../../../../../src/cloud/documents/DocumentsRoute.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAYH;;;;GAIG;AACH,wBAAgB,gBAAgB,4CAyB/B;AAED,2DAA2D;AAC3D,MAAM,CAAC,OAAO,UAAU,cAAc,4CAErC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Documents (Knowledge) cloud route entry.
|
|
4
|
-
*
|
|
5
|
-
* Lifted from `@elizaos/cloud-frontend/src/dashboard/documents/Page.tsx`. Gates
|
|
6
|
-
* on the Steward session, loads the caller's characters with {@link useMyAgents}
|
|
7
|
-
* (the per-character scope selector), and renders {@link DocumentsPageClient}.
|
|
8
|
-
* Loading uses the cloud-ui dashboard placeholder; the page title is set via
|
|
9
|
-
* {@link useDocumentTitle} (no Helmet).
|
|
10
|
-
*
|
|
11
|
-
* The same {@link DocumentsSurface} is exported for both the registered
|
|
12
|
-
* standalone route and the Wave-3 settings-section wrapper (see `index.ts`).
|
|
13
|
-
*/
|
|
14
|
-
import { DashboardLoadingState } from "../../cloud-ui/components/dashboard/route-placeholders.js";
|
|
15
|
-
import { useDocumentTitle } from "../lib/use-document-title.js";
|
|
16
|
-
import { useRequireAuth } from "../lib/use-session-auth.js";
|
|
17
|
-
import { useCloudT } from "../shell/CloudI18nProvider.js";
|
|
18
|
-
import { DocumentsPageClient, } from "./components/documents-page-client.js";
|
|
19
|
-
import { useMyAgents } from "./lib/agents.js";
|
|
20
|
-
/**
|
|
21
|
-
* The Documents/Knowledge surface. Embeddable: used directly by the Wave-3
|
|
22
|
-
* settings section and wrapped by {@link DocumentsRoute} for the standalone
|
|
23
|
-
* route.
|
|
24
|
-
*/
|
|
25
|
-
export function DocumentsSurface() {
|
|
26
|
-
const t = useCloudT();
|
|
27
|
-
const { ready, authenticated } = useRequireAuth();
|
|
28
|
-
const agentsQuery = useMyAgents();
|
|
29
|
-
useDocumentTitle(t("cloud.documents.metaTitle", { defaultValue: "Knowledge" }));
|
|
30
|
-
const loadingLabel = t("cloud.documents.loading", {
|
|
31
|
-
defaultValue: "Loading Knowledge",
|
|
32
|
-
});
|
|
33
|
-
if (!ready || !authenticated) {
|
|
34
|
-
return _jsx(DashboardLoadingState, { label: loadingLabel });
|
|
35
|
-
}
|
|
36
|
-
if (agentsQuery.isLoading) {
|
|
37
|
-
return _jsx(DashboardLoadingState, { label: loadingLabel });
|
|
38
|
-
}
|
|
39
|
-
const characters = agentsQuery.data?.map((a) => ({ id: a.id, name: a.name })) ?? [];
|
|
40
|
-
return _jsx(DocumentsPageClient, { initialCharacters: characters });
|
|
41
|
-
}
|
|
42
|
-
/** Default export consumed by the cloud-route registry. */
|
|
43
|
-
export default function DocumentsRoute() {
|
|
44
|
-
return _jsx(DocumentsSurface, {});
|
|
45
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Settings-section / view wrapper for the Documents (Knowledge) surface
|
|
3
|
-
* (Wave-3 mount point).
|
|
4
|
-
*
|
|
5
|
-
* Documents is an agent-scoped view (PLAN §"`dashboard/documents` → AGENT-VIEW
|
|
6
|
-
* (Knowledge)"); the per-character selector is the scope. The settings-section
|
|
7
|
-
* registry renders a no-prop `Component`, so this is the zero-prop adapter
|
|
8
|
-
* Wave 3 hands to `registerSettingsSection({ id: "documents", Component:
|
|
9
|
-
* DocumentsSection, ... })` (or mounts as a standalone view).
|
|
10
|
-
*
|
|
11
|
-
* It reuses the exact same {@link DocumentsSurface} as the standalone route, so
|
|
12
|
-
* the section and any direct mount stay identical.
|
|
13
|
-
*/
|
|
14
|
-
export declare function DocumentsSection(): import("react/jsx-runtime").JSX.Element;
|
|
15
|
-
//# sourceMappingURL=DocumentsSection.d.ts.map
|