agent-relay 2.0.22 → 2.0.23
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/bin/relay-pty-linux-arm64 +0 -0
- package/dist/src/cli/index.d.ts +3 -3
- package/dist/src/cli/index.js +31 -100
- package/package.json +22 -29
- package/packages/api-types/package.json +1 -1
- package/packages/bridge/package.json +8 -8
- package/packages/cli-tester/package.json +1 -1
- package/packages/cloud/dist/server.js +25 -4
- package/packages/cloud/package.json +6 -6
- package/packages/config/package.json +2 -2
- package/packages/continuity/package.json +1 -1
- package/packages/daemon/dist/orchestrator.js +19 -1
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +2 -2
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/dist/update-checker.js +4 -0
- package/packages/utils/package.json +1 -1
- package/packages/wrapper/package.json +6 -6
- package/deploy/workspace/codex.config.toml +0 -20
- package/deploy/workspace/entrypoint-browser.sh +0 -118
- package/deploy/workspace/entrypoint.sh +0 -612
- package/deploy/workspace/gh-credential-relay +0 -90
- package/deploy/workspace/gh-relay +0 -156
- package/deploy/workspace/git-credential-relay +0 -330
- package/deploy/workspace/git-credential-relay.test.sh +0 -230
- package/dist/dashboard/out/404.html +0 -1
- package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
- package/dist/dashboard/out/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
- package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +0 -9
- package/dist/dashboard/out/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/847-f1f467060f32afff.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
- package/dist/dashboard/out/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
- package/dist/dashboard/out/_next/static/css/4034f236dd1a3178.css +0 -1
- package/dist/dashboard/out/_next/static/css/6892f8422896ef7a.css +0 -1
- package/dist/dashboard/out/alt-logos/agent-relay-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/agent-relay-logo.svg +0 -45
- package/dist/dashboard/out/alt-logos/logo.svg +0 -38
- package/dist/dashboard/out/alt-logos/monogram-logo-128.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-256.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-32.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-512.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo-64.png +0 -0
- package/dist/dashboard/out/alt-logos/monogram-logo.svg +0 -38
- package/dist/dashboard/out/app/onboarding.html +0 -1
- package/dist/dashboard/out/app/onboarding.txt +0 -7
- package/dist/dashboard/out/app.html +0 -1
- package/dist/dashboard/out/app.txt +0 -7
- package/dist/dashboard/out/apple-icon.png +0 -0
- package/dist/dashboard/out/cloud/link.html +0 -1
- package/dist/dashboard/out/cloud/link.txt +0 -7
- package/dist/dashboard/out/complete-profile.html +0 -5
- package/dist/dashboard/out/complete-profile.txt +0 -7
- package/dist/dashboard/out/connect-repos.html +0 -1
- package/dist/dashboard/out/connect-repos.txt +0 -7
- package/dist/dashboard/out/history.html +0 -1
- package/dist/dashboard/out/history.txt +0 -7
- package/dist/dashboard/out/index.html +0 -1
- package/dist/dashboard/out/index.txt +0 -7
- package/dist/dashboard/out/login.html +0 -5
- package/dist/dashboard/out/login.txt +0 -7
- package/dist/dashboard/out/metrics.html +0 -1
- package/dist/dashboard/out/metrics.txt +0 -7
- package/dist/dashboard/out/pricing.html +0 -13
- package/dist/dashboard/out/pricing.txt +0 -7
- package/dist/dashboard/out/providers/setup/claude.html +0 -1
- package/dist/dashboard/out/providers/setup/claude.txt +0 -8
- package/dist/dashboard/out/providers/setup/codex.html +0 -1
- package/dist/dashboard/out/providers/setup/codex.txt +0 -8
- package/dist/dashboard/out/providers/setup/cursor.html +0 -1
- package/dist/dashboard/out/providers/setup/cursor.txt +0 -8
- package/dist/dashboard/out/providers.html +0 -1
- package/dist/dashboard/out/providers.txt +0 -7
- package/dist/dashboard/out/signup.html +0 -6
- package/dist/dashboard/out/signup.txt +0 -7
- package/dist/src/dashboard-server/index.d.ts +0 -8
- package/dist/src/dashboard-server/index.js +0 -8
- package/packages/dashboard/README.md +0 -48
- package/packages/dashboard/dist/health-worker-manager.d.ts +0 -62
- package/packages/dashboard/dist/health-worker-manager.js +0 -144
- package/packages/dashboard/dist/health-worker.d.ts +0 -9
- package/packages/dashboard/dist/health-worker.js +0 -79
- package/packages/dashboard/dist/index.d.ts +0 -20
- package/packages/dashboard/dist/index.js +0 -19
- package/packages/dashboard/dist/metrics.d.ts +0 -105
- package/packages/dashboard/dist/metrics.js +0 -193
- package/packages/dashboard/dist/needs-attention.d.ts +0 -24
- package/packages/dashboard/dist/needs-attention.js +0 -78
- package/packages/dashboard/dist/server.d.ts +0 -25
- package/packages/dashboard/dist/server.js +0 -5270
- package/packages/dashboard/dist/start.d.ts +0 -6
- package/packages/dashboard/dist/start.js +0 -13
- package/packages/dashboard/dist/types/threading.d.ts +0 -8
- package/packages/dashboard/dist/types/threading.js +0 -2
- package/packages/dashboard/dist/user-bridge.d.ts +0 -154
- package/packages/dashboard/dist/user-bridge.js +0 -372
- package/packages/dashboard/package.json +0 -65
- package/packages/dashboard/ui/app/app/onboarding/page.tsx +0 -394
- package/packages/dashboard/ui/app/app/page.tsx +0 -667
- package/packages/dashboard/ui/app/apple-icon.png +0 -0
- package/packages/dashboard/ui/app/cloud/link/page.tsx +0 -464
- package/packages/dashboard/ui/app/complete-profile/page.tsx +0 -204
- package/packages/dashboard/ui/app/connect-repos/page.tsx +0 -410
- package/packages/dashboard/ui/app/favicon.png +0 -0
- package/packages/dashboard/ui/app/globals.css +0 -59
- package/packages/dashboard/ui/app/history/page.tsx +0 -658
- package/packages/dashboard/ui/app/layout.tsx +0 -25
- package/packages/dashboard/ui/app/login/page.tsx +0 -424
- package/packages/dashboard/ui/app/metrics/page.tsx +0 -751
- package/packages/dashboard/ui/app/page.tsx +0 -59
- package/packages/dashboard/ui/app/pricing/page.tsx +0 -7
- package/packages/dashboard/ui/app/providers/page.tsx +0 -193
- package/packages/dashboard/ui/app/providers/setup/[provider]/ProviderSetupClient.tsx +0 -148
- package/packages/dashboard/ui/app/providers/setup/[provider]/constants.ts +0 -35
- package/packages/dashboard/ui/app/providers/setup/[provider]/page.tsx +0 -42
- package/packages/dashboard/ui/app/signup/page.tsx +0 -533
- package/packages/dashboard/ui/index.ts +0 -49
- package/packages/dashboard/ui/landing/LandingPage.tsx +0 -713
- package/packages/dashboard/ui/landing/PricingPage.tsx +0 -559
- package/packages/dashboard/ui/landing/index.ts +0 -6
- package/packages/dashboard/ui/landing/styles.css +0 -2850
- package/packages/dashboard/ui/lib/agent-merge.ts +0 -35
- package/packages/dashboard/ui/lib/api.ts +0 -1155
- package/packages/dashboard/ui/lib/cloudApi.ts +0 -877
- package/packages/dashboard/ui/lib/colors.ts +0 -218
- package/packages/dashboard/ui/lib/hierarchy.ts +0 -242
- package/packages/dashboard/ui/lib/stuckDetection.ts +0 -142
- package/packages/dashboard/ui/next-env.d.ts +0 -5
- package/packages/dashboard/ui/next.config.js +0 -41
- package/packages/dashboard/ui/package-lock.json +0 -2882
- package/packages/dashboard/ui/package.json +0 -33
- package/packages/dashboard/ui/postcss.config.js +0 -5
- package/packages/dashboard/ui/react-components/ActivityFeed.tsx +0 -216
- package/packages/dashboard/ui/react-components/AddWorkspaceModal.tsx +0 -170
- package/packages/dashboard/ui/react-components/AgentCard.tsx +0 -587
- package/packages/dashboard/ui/react-components/AgentList.tsx +0 -411
- package/packages/dashboard/ui/react-components/AgentProfilePanel.tsx +0 -564
- package/packages/dashboard/ui/react-components/App.tsx +0 -3033
- package/packages/dashboard/ui/react-components/BillingPanel.tsx +0 -922
- package/packages/dashboard/ui/react-components/BillingResult.tsx +0 -447
- package/packages/dashboard/ui/react-components/BroadcastComposer.tsx +0 -690
- package/packages/dashboard/ui/react-components/ChannelAdminPanel.tsx +0 -773
- package/packages/dashboard/ui/react-components/ChannelBrowser.tsx +0 -385
- package/packages/dashboard/ui/react-components/ChannelChat.tsx +0 -261
- package/packages/dashboard/ui/react-components/ChannelSidebar.tsx +0 -399
- package/packages/dashboard/ui/react-components/CloudSessionProvider.tsx +0 -130
- package/packages/dashboard/ui/react-components/CommandPalette.tsx +0 -815
- package/packages/dashboard/ui/react-components/ConfirmationDialog.tsx +0 -133
- package/packages/dashboard/ui/react-components/ConversationHistory.tsx +0 -518
- package/packages/dashboard/ui/react-components/CoordinatorPanel.tsx +0 -944
- package/packages/dashboard/ui/react-components/DecisionQueue.tsx +0 -717
- package/packages/dashboard/ui/react-components/DirectMessageView.tsx +0 -164
- package/packages/dashboard/ui/react-components/FileAutocomplete.tsx +0 -368
- package/packages/dashboard/ui/react-components/FleetOverview.tsx +0 -278
- package/packages/dashboard/ui/react-components/LogViewer.tsx +0 -310
- package/packages/dashboard/ui/react-components/LogViewerPanel.tsx +0 -482
- package/packages/dashboard/ui/react-components/Logo.tsx +0 -284
- package/packages/dashboard/ui/react-components/MentionAutocomplete.tsx +0 -384
- package/packages/dashboard/ui/react-components/MessageComposer.tsx +0 -457
- package/packages/dashboard/ui/react-components/MessageList.tsx +0 -649
- package/packages/dashboard/ui/react-components/MessageSenderName.tsx +0 -91
- package/packages/dashboard/ui/react-components/MessageStatusIndicator.tsx +0 -142
- package/packages/dashboard/ui/react-components/NewConversationModal.tsx +0 -400
- package/packages/dashboard/ui/react-components/NotificationToast.tsx +0 -488
- package/packages/dashboard/ui/react-components/OnlineUsersIndicator.tsx +0 -164
- package/packages/dashboard/ui/react-components/Pagination.tsx +0 -124
- package/packages/dashboard/ui/react-components/PricingPlans.tsx +0 -386
- package/packages/dashboard/ui/react-components/ProjectList.tsx +0 -625
- package/packages/dashboard/ui/react-components/ProviderAuthFlow.tsx +0 -853
- package/packages/dashboard/ui/react-components/ProviderConnectionList.tsx +0 -378
- package/packages/dashboard/ui/react-components/ProvisioningProgress.tsx +0 -730
- package/packages/dashboard/ui/react-components/RepoAccessPanel.tsx +0 -549
- package/packages/dashboard/ui/react-components/ServerCard.tsx +0 -202
- package/packages/dashboard/ui/react-components/SessionExpiredModal.tsx +0 -128
- package/packages/dashboard/ui/react-components/SpawnModal.tsx +0 -804
- package/packages/dashboard/ui/react-components/TaskAssignmentUI.tsx +0 -375
- package/packages/dashboard/ui/react-components/TerminalProviderSetup.tsx +0 -608
- package/packages/dashboard/ui/react-components/ThemeProvider.tsx +0 -325
- package/packages/dashboard/ui/react-components/ThinkingIndicator.tsx +0 -231
- package/packages/dashboard/ui/react-components/ThreadList.tsx +0 -198
- package/packages/dashboard/ui/react-components/ThreadPanel.tsx +0 -346
- package/packages/dashboard/ui/react-components/TrajectoryViewer.tsx +0 -698
- package/packages/dashboard/ui/react-components/TypingIndicator.tsx +0 -69
- package/packages/dashboard/ui/react-components/UsageBanner.tsx +0 -231
- package/packages/dashboard/ui/react-components/UserProfilePanel.tsx +0 -233
- package/packages/dashboard/ui/react-components/WorkspaceContext.tsx +0 -107
- package/packages/dashboard/ui/react-components/WorkspaceSelector.tsx +0 -234
- package/packages/dashboard/ui/react-components/WorkspaceStatusIndicator.tsx +0 -370
- package/packages/dashboard/ui/react-components/XTermInteractive.tsx +0 -510
- package/packages/dashboard/ui/react-components/XTermLogViewer.tsx +0 -719
- package/packages/dashboard/ui/react-components/channels/ChannelDialogs.tsx +0 -1411
- package/packages/dashboard/ui/react-components/channels/ChannelHeader.tsx +0 -317
- package/packages/dashboard/ui/react-components/channels/ChannelMessageList.tsx +0 -463
- package/packages/dashboard/ui/react-components/channels/ChannelViewV1.tsx +0 -146
- package/packages/dashboard/ui/react-components/channels/MessageInput.tsx +0 -288
- package/packages/dashboard/ui/react-components/channels/SearchInput.tsx +0 -172
- package/packages/dashboard/ui/react-components/channels/SearchResults.tsx +0 -336
- package/packages/dashboard/ui/react-components/channels/api.ts +0 -697
- package/packages/dashboard/ui/react-components/channels/index.ts +0 -76
- package/packages/dashboard/ui/react-components/channels/mockApi.ts +0 -344
- package/packages/dashboard/ui/react-components/channels/types.ts +0 -566
- package/packages/dashboard/ui/react-components/hooks/index.ts +0 -57
- package/packages/dashboard/ui/react-components/hooks/useAgentLogs.ts +0 -394
- package/packages/dashboard/ui/react-components/hooks/useAgents.ts +0 -127
- package/packages/dashboard/ui/react-components/hooks/useBroadcastDedup.ts +0 -86
- package/packages/dashboard/ui/react-components/hooks/useChannelAdmin.ts +0 -329
- package/packages/dashboard/ui/react-components/hooks/useChannelBrowser.ts +0 -239
- package/packages/dashboard/ui/react-components/hooks/useChannelCommands.ts +0 -138
- package/packages/dashboard/ui/react-components/hooks/useChannels.ts +0 -328
- package/packages/dashboard/ui/react-components/hooks/useDebounce.ts +0 -29
- package/packages/dashboard/ui/react-components/hooks/useDirectMessage.ts +0 -141
- package/packages/dashboard/ui/react-components/hooks/useMessages.ts +0 -309
- package/packages/dashboard/ui/react-components/hooks/useOrchestrator.ts +0 -364
- package/packages/dashboard/ui/react-components/hooks/usePinnedAgents.ts +0 -140
- package/packages/dashboard/ui/react-components/hooks/usePresence.ts +0 -340
- package/packages/dashboard/ui/react-components/hooks/useRecentRepos.ts +0 -130
- package/packages/dashboard/ui/react-components/hooks/useSession.ts +0 -209
- package/packages/dashboard/ui/react-components/hooks/useTrajectory.ts +0 -265
- package/packages/dashboard/ui/react-components/hooks/useWebSocket.ts +0 -169
- package/packages/dashboard/ui/react-components/hooks/useWorkspaceMembers.ts +0 -120
- package/packages/dashboard/ui/react-components/hooks/useWorkspaceRepos.ts +0 -73
- package/packages/dashboard/ui/react-components/hooks/useWorkspaceStatus.ts +0 -237
- package/packages/dashboard/ui/react-components/index.ts +0 -81
- package/packages/dashboard/ui/react-components/layout/Header.tsx +0 -355
- package/packages/dashboard/ui/react-components/layout/RepoContextHeader.tsx +0 -361
- package/packages/dashboard/ui/react-components/layout/Sidebar.archive.test.tsx +0 -126
- package/packages/dashboard/ui/react-components/layout/Sidebar.test.tsx +0 -691
- package/packages/dashboard/ui/react-components/layout/Sidebar.tsx +0 -930
- package/packages/dashboard/ui/react-components/layout/index.ts +0 -7
- package/packages/dashboard/ui/react-components/settings/BillingSettingsPanel.tsx +0 -564
- package/packages/dashboard/ui/react-components/settings/SettingsPage.tsx +0 -544
- package/packages/dashboard/ui/react-components/settings/TeamSettingsPanel.tsx +0 -560
- package/packages/dashboard/ui/react-components/settings/WorkspaceSettingsPanel.tsx +0 -1386
- package/packages/dashboard/ui/react-components/settings/index.ts +0 -11
- package/packages/dashboard/ui/react-components/settings/types.ts +0 -53
- package/packages/dashboard/ui/react-components/utils/messageFormatting.tsx +0 -370
- package/packages/dashboard/ui/tailwind.config.js +0 -148
- package/packages/dashboard/ui/types/index.ts +0 -304
- package/packages/dashboard/ui/types/threading.ts +0 -7
- package/packages/dashboard/ui-dist/404.html +0 -1
- package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/91mkGYq3qbG8WHE6VytQ8/_ssgManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/T2rV14eEU5OweDeV29SvG/_ssgManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/116-a883fca163f3a5bc.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/117-c8afed19e821a35d.js +0 -2
- package/packages/dashboard/ui-dist/_next/static/chunks/282-980c2eb8fff20123.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/320-a6304232cd0ee2ce.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/532-bace199897eeab37.js +0 -9
- package/packages/dashboard/ui-dist/_next/static/chunks/631-16b905e5920f9b59.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/648-acb2ff9f77cbfbd3.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/766-2aea80818f7eb0d8.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/83-26d2bde54616ee90.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/847-f1f467060f32afff.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/891-5cb1513eeb97a891.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/_not-found/page-60501fddbafba9dc.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/app/onboarding/page-9914652442f7e4fb.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/app/page-366fb7c078d4e9e0.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/cloud/link/page-fa1d5842aa90e8a6.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/complete-profile/page-dd64bbdf66b639cd.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/connect-repos/page-113060009ef35bc2.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/history/page-9965d2483011b846.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/layout-6b91e33784c20610.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/login/page-435eceb0073be027.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/metrics/page-1e37ef8e73940b40.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/page-8119d4246743574e.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/pricing/page-9db3ebdfa567a7c9.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/page-ecb16ffd3b36262b.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/providers/setup/[provider]/page-4dbe33f0f7691b7c.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/app/signup/page-c7a0a28341365ae0.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/e868780c-48e5f147c90a3a41.js +0 -18
- package/packages/dashboard/ui-dist/_next/static/chunks/fd9d1056-609918ca7b6280bb.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/framework-f66176bb897dc684.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/main-311c3db74dcfadb7.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/main-app-fdbeb09028f57c9f.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/pages/_app-72b849fbd24ac258.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/pages/_error-7ba65e1336b92748.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/css/4034f236dd1a3178.css +0 -1
- package/packages/dashboard/ui-dist/_next/static/css/6892f8422896ef7a.css +0 -1
- package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/l8L2OscDSR2vsMIlWcC48/_ssgManifest.js +0 -1
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-128.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-256.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-32.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-512.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo-64.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/agent-relay-logo.svg +0 -45
- package/packages/dashboard/ui-dist/alt-logos/logo.svg +0 -38
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo-128.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo-256.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo-32.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo-512.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo-64.png +0 -0
- package/packages/dashboard/ui-dist/alt-logos/monogram-logo.svg +0 -38
- package/packages/dashboard/ui-dist/app/onboarding.html +0 -1
- package/packages/dashboard/ui-dist/app/onboarding.txt +0 -7
- package/packages/dashboard/ui-dist/app.html +0 -1
- package/packages/dashboard/ui-dist/app.txt +0 -7
- package/packages/dashboard/ui-dist/apple-icon.png +0 -0
- package/packages/dashboard/ui-dist/cloud/link.html +0 -1
- package/packages/dashboard/ui-dist/cloud/link.txt +0 -7
- package/packages/dashboard/ui-dist/complete-profile.html +0 -5
- package/packages/dashboard/ui-dist/complete-profile.txt +0 -7
- package/packages/dashboard/ui-dist/connect-repos.html +0 -1
- package/packages/dashboard/ui-dist/connect-repos.txt +0 -7
- package/packages/dashboard/ui-dist/history.html +0 -1
- package/packages/dashboard/ui-dist/history.txt +0 -7
- package/packages/dashboard/ui-dist/index.html +0 -1
- package/packages/dashboard/ui-dist/index.txt +0 -7
- package/packages/dashboard/ui-dist/login.html +0 -5
- package/packages/dashboard/ui-dist/login.txt +0 -7
- package/packages/dashboard/ui-dist/metrics.html +0 -1
- package/packages/dashboard/ui-dist/metrics.txt +0 -7
- package/packages/dashboard/ui-dist/pricing.html +0 -13
- package/packages/dashboard/ui-dist/pricing.txt +0 -7
- package/packages/dashboard/ui-dist/providers/setup/claude.html +0 -1
- package/packages/dashboard/ui-dist/providers/setup/claude.txt +0 -8
- package/packages/dashboard/ui-dist/providers/setup/codex.html +0 -1
- package/packages/dashboard/ui-dist/providers/setup/codex.txt +0 -8
- package/packages/dashboard/ui-dist/providers/setup/cursor.html +0 -1
- package/packages/dashboard/ui-dist/providers/setup/cursor.txt +0 -8
- package/packages/dashboard/ui-dist/providers.html +0 -1
- package/packages/dashboard/ui-dist/providers.txt +0 -7
- package/packages/dashboard/ui-dist/signup.html +0 -6
- package/packages/dashboard/ui-dist/signup.txt +0 -7
- package/packages/dashboard-server/dist/health-worker-manager.d.ts +0 -62
- package/packages/dashboard-server/dist/health-worker-manager.js +0 -144
- package/packages/dashboard-server/dist/health-worker.d.ts +0 -9
- package/packages/dashboard-server/dist/health-worker.js +0 -79
- package/packages/dashboard-server/dist/index.d.ts +0 -18
- package/packages/dashboard-server/dist/index.js +0 -17
- package/packages/dashboard-server/dist/metrics.d.ts +0 -105
- package/packages/dashboard-server/dist/metrics.js +0 -193
- package/packages/dashboard-server/dist/needs-attention.d.ts +0 -24
- package/packages/dashboard-server/dist/needs-attention.js +0 -78
- package/packages/dashboard-server/dist/server.d.ts +0 -25
- package/packages/dashboard-server/dist/server.js +0 -5158
- package/packages/dashboard-server/dist/start.d.ts +0 -6
- package/packages/dashboard-server/dist/start.js +0 -13
- package/packages/dashboard-server/dist/types/threading.d.ts +0 -8
- package/packages/dashboard-server/dist/types/threading.js +0 -2
- package/packages/dashboard-server/dist/user-bridge.d.ts +0 -158
- package/packages/dashboard-server/dist/user-bridge.js +0 -390
- package/packages/dashboard-server/package.json +0 -55
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useWorkspaceMembers Hook
|
|
3
|
-
*
|
|
4
|
-
* Fetches and caches workspace members for filtering online users.
|
|
5
|
-
* Returns the set of usernames that have access to the workspace.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { useState, useEffect, useCallback, useMemo } from 'react';
|
|
9
|
-
import { cloudApi } from '../../lib/cloudApi';
|
|
10
|
-
import type { UserPresence } from './usePresence';
|
|
11
|
-
|
|
12
|
-
interface WorkspaceMember {
|
|
13
|
-
id: string;
|
|
14
|
-
userId: string;
|
|
15
|
-
role: string;
|
|
16
|
-
isPending: boolean;
|
|
17
|
-
user?: {
|
|
18
|
-
githubUsername: string;
|
|
19
|
-
email?: string;
|
|
20
|
-
avatarUrl?: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export interface UseWorkspaceMembersOptions {
|
|
25
|
-
/** The workspace ID to fetch members for */
|
|
26
|
-
workspaceId?: string;
|
|
27
|
-
/** Whether to enable fetching (e.g., only in cloud mode) */
|
|
28
|
-
enabled?: boolean;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface UseWorkspaceMembersReturn {
|
|
32
|
-
/** Set of usernames with workspace access (lowercase for comparison) */
|
|
33
|
-
memberUsernames: Set<string>;
|
|
34
|
-
/** Whether members are currently loading */
|
|
35
|
-
isLoading: boolean;
|
|
36
|
-
/** Error message if fetch failed */
|
|
37
|
-
error: string | null;
|
|
38
|
-
/** Refetch workspace members */
|
|
39
|
-
refetch: () => Promise<void>;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Hook to fetch workspace members and provide a set of usernames with access.
|
|
44
|
-
* Used to filter online users to show only those with workspace access.
|
|
45
|
-
*/
|
|
46
|
-
export function useWorkspaceMembers(
|
|
47
|
-
options: UseWorkspaceMembersOptions = {}
|
|
48
|
-
): UseWorkspaceMembersReturn {
|
|
49
|
-
const { workspaceId, enabled = true } = options;
|
|
50
|
-
|
|
51
|
-
const [members, setMembers] = useState<WorkspaceMember[]>([]);
|
|
52
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
53
|
-
const [error, setError] = useState<string | null>(null);
|
|
54
|
-
|
|
55
|
-
const fetchMembers = useCallback(async () => {
|
|
56
|
-
if (!workspaceId || !enabled) {
|
|
57
|
-
setMembers([]);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
setIsLoading(true);
|
|
62
|
-
setError(null);
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
const result = await cloudApi.getWorkspaceMembers(workspaceId);
|
|
66
|
-
if (result.success) {
|
|
67
|
-
setMembers(result.data.members as WorkspaceMember[]);
|
|
68
|
-
} else {
|
|
69
|
-
setError(result.error);
|
|
70
|
-
setMembers([]);
|
|
71
|
-
}
|
|
72
|
-
} catch (err) {
|
|
73
|
-
setError(err instanceof Error ? err.message : 'Failed to fetch members');
|
|
74
|
-
setMembers([]);
|
|
75
|
-
} finally {
|
|
76
|
-
setIsLoading(false);
|
|
77
|
-
}
|
|
78
|
-
}, [workspaceId, enabled]);
|
|
79
|
-
|
|
80
|
-
// Fetch members when workspace changes
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
fetchMembers();
|
|
83
|
-
}, [fetchMembers]);
|
|
84
|
-
|
|
85
|
-
// Build set of member usernames (lowercase for case-insensitive comparison)
|
|
86
|
-
const memberUsernames = useMemo(() => {
|
|
87
|
-
const usernames = new Set<string>();
|
|
88
|
-
for (const member of members) {
|
|
89
|
-
if (member.user?.githubUsername) {
|
|
90
|
-
usernames.add(member.user.githubUsername.toLowerCase());
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return usernames;
|
|
94
|
-
}, [members]);
|
|
95
|
-
|
|
96
|
-
return {
|
|
97
|
-
memberUsernames,
|
|
98
|
-
isLoading,
|
|
99
|
-
error,
|
|
100
|
-
refetch: fetchMembers,
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Filter online users to only include those with workspace access.
|
|
106
|
-
* If no members are loaded (non-cloud mode or error), returns all users.
|
|
107
|
-
*/
|
|
108
|
-
export function filterOnlineUsersByWorkspace(
|
|
109
|
-
onlineUsers: UserPresence[],
|
|
110
|
-
memberUsernames: Set<string>
|
|
111
|
-
): UserPresence[] {
|
|
112
|
-
// If no members loaded, show all users (non-cloud mode fallback)
|
|
113
|
-
if (memberUsernames.size === 0) {
|
|
114
|
-
return onlineUsers;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return onlineUsers.filter((user) =>
|
|
118
|
-
memberUsernames.has(user.username.toLowerCase())
|
|
119
|
-
);
|
|
120
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Hook for fetching and managing workspace repositories
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
6
|
-
|
|
7
|
-
export interface WorkspaceRepo {
|
|
8
|
-
id: string;
|
|
9
|
-
githubFullName: string;
|
|
10
|
-
defaultBranch: string;
|
|
11
|
-
isPrivate: boolean;
|
|
12
|
-
syncStatus: string;
|
|
13
|
-
lastSyncedAt: string | null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface UseWorkspaceReposOptions {
|
|
17
|
-
workspaceId?: string;
|
|
18
|
-
apiBaseUrl?: string;
|
|
19
|
-
enabled?: boolean;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface UseWorkspaceReposReturn {
|
|
23
|
-
repos: WorkspaceRepo[];
|
|
24
|
-
isLoading: boolean;
|
|
25
|
-
error: string | null;
|
|
26
|
-
refetch: () => Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function useWorkspaceRepos({
|
|
30
|
-
workspaceId,
|
|
31
|
-
apiBaseUrl = '/api',
|
|
32
|
-
enabled = true,
|
|
33
|
-
}: UseWorkspaceReposOptions): UseWorkspaceReposReturn {
|
|
34
|
-
const [repos, setRepos] = useState<WorkspaceRepo[]>([]);
|
|
35
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
36
|
-
const [error, setError] = useState<string | null>(null);
|
|
37
|
-
|
|
38
|
-
const fetchRepos = useCallback(async () => {
|
|
39
|
-
if (!workspaceId || !enabled) return;
|
|
40
|
-
|
|
41
|
-
setIsLoading(true);
|
|
42
|
-
setError(null);
|
|
43
|
-
|
|
44
|
-
try {
|
|
45
|
-
const res = await fetch(`${apiBaseUrl}/workspaces/${workspaceId}/repos`, {
|
|
46
|
-
credentials: 'include',
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
if (!res.ok) {
|
|
50
|
-
throw new Error('Failed to fetch workspace repos');
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const data = await res.json();
|
|
54
|
-
setRepos(data.repositories || []);
|
|
55
|
-
} catch (err) {
|
|
56
|
-
setError(err instanceof Error ? err.message : 'Failed to fetch repos');
|
|
57
|
-
console.error('Error fetching workspace repos:', err);
|
|
58
|
-
} finally {
|
|
59
|
-
setIsLoading(false);
|
|
60
|
-
}
|
|
61
|
-
}, [workspaceId, apiBaseUrl, enabled]);
|
|
62
|
-
|
|
63
|
-
useEffect(() => {
|
|
64
|
-
fetchRepos();
|
|
65
|
-
}, [fetchRepos]);
|
|
66
|
-
|
|
67
|
-
return {
|
|
68
|
-
repos,
|
|
69
|
-
isLoading,
|
|
70
|
-
error,
|
|
71
|
-
refetch: fetchRepos,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useWorkspaceStatus Hook
|
|
3
|
-
*
|
|
4
|
-
* React hook for monitoring workspace status with auto-wakeup capability.
|
|
5
|
-
* Polls for status updates and can automatically restart stopped workspaces.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { useState, useEffect, useCallback, useRef } from 'react';
|
|
9
|
-
import { cloudApi } from '../../lib/cloudApi';
|
|
10
|
-
|
|
11
|
-
export interface WorkspaceStatus {
|
|
12
|
-
id: string;
|
|
13
|
-
name: string;
|
|
14
|
-
status: string;
|
|
15
|
-
publicUrl?: string;
|
|
16
|
-
isStopped: boolean;
|
|
17
|
-
isRunning: boolean;
|
|
18
|
-
isProvisioning: boolean;
|
|
19
|
-
hasError: boolean;
|
|
20
|
-
config: {
|
|
21
|
-
providers: string[];
|
|
22
|
-
repositories: string[];
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export interface UseWorkspaceStatusOptions {
|
|
27
|
-
/** Poll for status updates (default: true) */
|
|
28
|
-
autoRefresh?: boolean;
|
|
29
|
-
/** Interval to poll for status in ms (default: 30000) */
|
|
30
|
-
refreshInterval?: number;
|
|
31
|
-
/** Auto-wakeup when workspace is stopped (default: false) */
|
|
32
|
-
autoWakeup?: boolean;
|
|
33
|
-
/** Callback when workspace status changes */
|
|
34
|
-
onStatusChange?: (status: string, wasRestarted: boolean) => void;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface UseWorkspaceStatusReturn {
|
|
38
|
-
/** Current workspace data (null if no workspace) */
|
|
39
|
-
workspace: WorkspaceStatus | null;
|
|
40
|
-
/** Whether workspace exists */
|
|
41
|
-
exists: boolean;
|
|
42
|
-
/** Whether the status check is in progress */
|
|
43
|
-
isLoading: boolean;
|
|
44
|
-
/** Whether a wakeup is in progress */
|
|
45
|
-
isWakingUp: boolean;
|
|
46
|
-
/** Status message for display */
|
|
47
|
-
statusMessage: string;
|
|
48
|
-
/** Action needed (wakeup, check_error, etc) */
|
|
49
|
-
actionNeeded: 'wakeup' | 'check_error' | null;
|
|
50
|
-
/** Error if any */
|
|
51
|
-
error: string | null;
|
|
52
|
-
/** Manually refresh status */
|
|
53
|
-
refresh: () => Promise<void>;
|
|
54
|
-
/** Manually wake up workspace */
|
|
55
|
-
wakeup: () => Promise<{ success: boolean; message: string }>;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const DEFAULT_OPTIONS: Required<UseWorkspaceStatusOptions> = {
|
|
59
|
-
autoRefresh: true,
|
|
60
|
-
refreshInterval: 30000, // 30 seconds
|
|
61
|
-
autoWakeup: false,
|
|
62
|
-
onStatusChange: () => {},
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export function useWorkspaceStatus(
|
|
66
|
-
options: UseWorkspaceStatusOptions = {}
|
|
67
|
-
): UseWorkspaceStatusReturn {
|
|
68
|
-
// Stabilize options to prevent infinite re-renders
|
|
69
|
-
// Use refs for callbacks and useMemo for primitive values
|
|
70
|
-
const autoRefresh = options.autoRefresh ?? DEFAULT_OPTIONS.autoRefresh;
|
|
71
|
-
const refreshInterval = options.refreshInterval ?? DEFAULT_OPTIONS.refreshInterval;
|
|
72
|
-
const autoWakeup = options.autoWakeup ?? DEFAULT_OPTIONS.autoWakeup;
|
|
73
|
-
|
|
74
|
-
// Store callback in ref to avoid recreating refresh on every render
|
|
75
|
-
const onStatusChangeRef = useRef(options.onStatusChange ?? DEFAULT_OPTIONS.onStatusChange);
|
|
76
|
-
onStatusChangeRef.current = options.onStatusChange ?? DEFAULT_OPTIONS.onStatusChange;
|
|
77
|
-
|
|
78
|
-
const [workspace, setWorkspace] = useState<WorkspaceStatus | null>(null);
|
|
79
|
-
const [exists, setExists] = useState(false);
|
|
80
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
81
|
-
const [isWakingUp, setIsWakingUp] = useState(false);
|
|
82
|
-
const [statusMessage, setStatusMessage] = useState('');
|
|
83
|
-
const [actionNeeded, setActionNeeded] = useState<'wakeup' | 'check_error' | null>(null);
|
|
84
|
-
const [error, setError] = useState<string | null>(null);
|
|
85
|
-
|
|
86
|
-
const intervalRef = useRef<NodeJS.Timeout | null>(null);
|
|
87
|
-
const mountedRef = useRef(true);
|
|
88
|
-
const previousStatusRef = useRef<string | null>(null);
|
|
89
|
-
|
|
90
|
-
// Fetch workspace status
|
|
91
|
-
const refresh = useCallback(async () => {
|
|
92
|
-
try {
|
|
93
|
-
setIsLoading(true);
|
|
94
|
-
setError(null);
|
|
95
|
-
|
|
96
|
-
const result = await cloudApi.getPrimaryWorkspace();
|
|
97
|
-
|
|
98
|
-
if (!mountedRef.current) return;
|
|
99
|
-
|
|
100
|
-
if (result.success) {
|
|
101
|
-
setExists(result.data.exists);
|
|
102
|
-
setStatusMessage(result.data.statusMessage);
|
|
103
|
-
setActionNeeded(result.data.actionNeeded || null);
|
|
104
|
-
|
|
105
|
-
if (result.data.workspace) {
|
|
106
|
-
const ws = result.data.workspace;
|
|
107
|
-
setWorkspace(ws);
|
|
108
|
-
|
|
109
|
-
// Check for status change
|
|
110
|
-
if (previousStatusRef.current && previousStatusRef.current !== ws.status) {
|
|
111
|
-
onStatusChangeRef.current(ws.status, false);
|
|
112
|
-
}
|
|
113
|
-
previousStatusRef.current = ws.status;
|
|
114
|
-
} else {
|
|
115
|
-
setWorkspace(null);
|
|
116
|
-
}
|
|
117
|
-
} else {
|
|
118
|
-
setError(result.error);
|
|
119
|
-
}
|
|
120
|
-
} catch (_e) {
|
|
121
|
-
if (mountedRef.current) {
|
|
122
|
-
setError('Failed to fetch workspace status');
|
|
123
|
-
}
|
|
124
|
-
} finally {
|
|
125
|
-
if (mountedRef.current) {
|
|
126
|
-
setIsLoading(false);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}, []); // No dependencies - uses refs for callbacks
|
|
130
|
-
|
|
131
|
-
// Store refresh interval in ref for wakeup callback
|
|
132
|
-
const refreshIntervalRef = useRef(refreshInterval);
|
|
133
|
-
refreshIntervalRef.current = refreshInterval;
|
|
134
|
-
const autoRefreshRef = useRef(autoRefresh);
|
|
135
|
-
autoRefreshRef.current = autoRefresh;
|
|
136
|
-
|
|
137
|
-
// Wake up workspace
|
|
138
|
-
const wakeup = useCallback(async (): Promise<{ success: boolean; message: string }> => {
|
|
139
|
-
if (!workspace?.id) {
|
|
140
|
-
return { success: false, message: 'No workspace to wake up' };
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
try {
|
|
144
|
-
setIsWakingUp(true);
|
|
145
|
-
setError(null);
|
|
146
|
-
|
|
147
|
-
const result = await cloudApi.wakeupWorkspace(workspace.id);
|
|
148
|
-
|
|
149
|
-
if (!mountedRef.current) {
|
|
150
|
-
return { success: false, message: 'Component unmounted' };
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (result.success) {
|
|
154
|
-
// Update local state
|
|
155
|
-
if (result.data.wasRestarted) {
|
|
156
|
-
setStatusMessage(result.data.message);
|
|
157
|
-
setActionNeeded(null);
|
|
158
|
-
onStatusChangeRef.current('starting', true);
|
|
159
|
-
|
|
160
|
-
// Start more frequent polling to catch when workspace is ready
|
|
161
|
-
if (intervalRef.current) {
|
|
162
|
-
clearInterval(intervalRef.current);
|
|
163
|
-
}
|
|
164
|
-
intervalRef.current = setInterval(refresh, 5000); // Poll every 5s during startup
|
|
165
|
-
|
|
166
|
-
// Reset to normal interval after 2 minutes
|
|
167
|
-
setTimeout(() => {
|
|
168
|
-
if (mountedRef.current && intervalRef.current) {
|
|
169
|
-
clearInterval(intervalRef.current);
|
|
170
|
-
if (autoRefreshRef.current) {
|
|
171
|
-
intervalRef.current = setInterval(refresh, refreshIntervalRef.current);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}, 120000);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return { success: true, message: result.data.message };
|
|
178
|
-
} else {
|
|
179
|
-
setError(result.error);
|
|
180
|
-
return { success: false, message: result.error };
|
|
181
|
-
}
|
|
182
|
-
} catch (e) {
|
|
183
|
-
const message = e instanceof Error ? e.message : 'Failed to wake up workspace';
|
|
184
|
-
if (mountedRef.current) {
|
|
185
|
-
setError(message);
|
|
186
|
-
}
|
|
187
|
-
return { success: false, message };
|
|
188
|
-
} finally {
|
|
189
|
-
if (mountedRef.current) {
|
|
190
|
-
setIsWakingUp(false);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}, [workspace?.id, refresh]);
|
|
194
|
-
|
|
195
|
-
// Initial fetch
|
|
196
|
-
useEffect(() => {
|
|
197
|
-
mountedRef.current = true;
|
|
198
|
-
refresh();
|
|
199
|
-
|
|
200
|
-
return () => {
|
|
201
|
-
mountedRef.current = false;
|
|
202
|
-
};
|
|
203
|
-
}, [refresh]);
|
|
204
|
-
|
|
205
|
-
// Auto-refresh polling
|
|
206
|
-
useEffect(() => {
|
|
207
|
-
if (!autoRefresh) return;
|
|
208
|
-
|
|
209
|
-
intervalRef.current = setInterval(refresh, refreshInterval);
|
|
210
|
-
|
|
211
|
-
return () => {
|
|
212
|
-
if (intervalRef.current) {
|
|
213
|
-
clearInterval(intervalRef.current);
|
|
214
|
-
intervalRef.current = null;
|
|
215
|
-
}
|
|
216
|
-
};
|
|
217
|
-
}, [autoRefresh, refreshInterval, refresh]);
|
|
218
|
-
|
|
219
|
-
// Auto-wakeup when workspace is stopped
|
|
220
|
-
useEffect(() => {
|
|
221
|
-
if (autoWakeup && workspace?.isStopped && !isWakingUp) {
|
|
222
|
-
wakeup();
|
|
223
|
-
}
|
|
224
|
-
}, [autoWakeup, workspace?.isStopped, isWakingUp, wakeup]);
|
|
225
|
-
|
|
226
|
-
return {
|
|
227
|
-
workspace,
|
|
228
|
-
exists,
|
|
229
|
-
isLoading,
|
|
230
|
-
isWakingUp,
|
|
231
|
-
statusMessage,
|
|
232
|
-
actionNeeded,
|
|
233
|
-
error,
|
|
234
|
-
refresh,
|
|
235
|
-
wakeup,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dashboard V2 React Components
|
|
3
|
-
*
|
|
4
|
-
* This module requires React to be installed.
|
|
5
|
-
* Components now use Tailwind CSS for styling.
|
|
6
|
-
* Install with: npm install react react-dom
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
// Core Components
|
|
10
|
-
export { AgentCard, type AgentCardProps } from './AgentCard';
|
|
11
|
-
export { AgentList, type AgentListProps } from './AgentList';
|
|
12
|
-
export { ThinkingIndicator, ThinkingDot, type ThinkingIndicatorProps } from './ThinkingIndicator';
|
|
13
|
-
export { MessageStatusIndicator, type MessageStatusIndicatorProps } from './MessageStatusIndicator';
|
|
14
|
-
export { MessageList, type MessageListProps } from './MessageList';
|
|
15
|
-
export { ThreadPanel, type ThreadPanelProps } from './ThreadPanel';
|
|
16
|
-
export { CommandPalette, type CommandPaletteProps, type Command } from './CommandPalette';
|
|
17
|
-
export { SpawnModal, type SpawnModalProps, type SpawnConfig, type SpeakOnTrigger } from './SpawnModal';
|
|
18
|
-
export { NewConversationModal, type NewConversationModalProps } from './NewConversationModal';
|
|
19
|
-
export { TrajectoryViewer, type TrajectoryViewerProps, type TrajectoryStep } from './TrajectoryViewer';
|
|
20
|
-
export { DecisionQueue, type DecisionQueueProps, type Decision } from './DecisionQueue';
|
|
21
|
-
export { ServerCard, type ServerCardProps, type ServerInfo } from './ServerCard';
|
|
22
|
-
export { FleetOverview, type FleetOverviewProps } from './FleetOverview';
|
|
23
|
-
export { BroadcastComposer, type BroadcastComposerProps, type BroadcastTarget } from './BroadcastComposer';
|
|
24
|
-
export { defaultSettings, type Settings } from './settings';
|
|
25
|
-
export { NotificationToast, useToasts, type NotificationToastProps, type Toast } from './NotificationToast';
|
|
26
|
-
export { ThemeProvider, ThemeToggle, useTheme, type ThemeProviderProps, type Theme, type ResolvedTheme } from './ThemeProvider';
|
|
27
|
-
export { App, appStyles, type AppProps } from './App';
|
|
28
|
-
export { MentionAutocomplete, useMentionAutocomplete, getMentionQuery, completeMentionInValue, type MentionAutocompleteProps } from './MentionAutocomplete';
|
|
29
|
-
export { ProjectList, type ProjectListProps } from './ProjectList';
|
|
30
|
-
export { WorkspaceSelector, type WorkspaceSelectorProps, type Workspace } from './WorkspaceSelector';
|
|
31
|
-
export { WorkspaceSettingsPanel, type WorkspaceSettingsPanelProps } from './settings/WorkspaceSettingsPanel';
|
|
32
|
-
export { AddWorkspaceModal, type AddWorkspaceModalProps } from './AddWorkspaceModal';
|
|
33
|
-
export { PricingPlans, type PricingPlansProps, type Plan } from './PricingPlans';
|
|
34
|
-
export { BillingPanel, type BillingPanelProps, type Subscription, type Invoice, type PaymentMethod } from './BillingPanel';
|
|
35
|
-
export { SessionExpiredModal, type SessionExpiredModalProps } from './SessionExpiredModal';
|
|
36
|
-
export { ProvisioningProgress, type ProvisioningProgressProps } from './ProvisioningProgress';
|
|
37
|
-
export {
|
|
38
|
-
CloudSessionProvider,
|
|
39
|
-
useCloudSession,
|
|
40
|
-
useCloudSessionOptional,
|
|
41
|
-
type CloudSessionProviderProps,
|
|
42
|
-
} from './CloudSessionProvider';
|
|
43
|
-
export {
|
|
44
|
-
WorkspaceProvider,
|
|
45
|
-
useWorkspace,
|
|
46
|
-
useWorkspaceWsUrl,
|
|
47
|
-
type WorkspaceProviderProps,
|
|
48
|
-
} from './WorkspaceContext';
|
|
49
|
-
|
|
50
|
-
// Terminal Components
|
|
51
|
-
export { XTermLogViewer, type XTermLogViewerProps } from './XTermLogViewer';
|
|
52
|
-
export { XTermInteractive, type XTermInteractiveProps } from './XTermInteractive';
|
|
53
|
-
|
|
54
|
-
// Layout Components
|
|
55
|
-
export { Sidebar, type SidebarProps } from './layout/Sidebar';
|
|
56
|
-
export { Header, type HeaderProps } from './layout/Header';
|
|
57
|
-
|
|
58
|
-
// Hooks
|
|
59
|
-
export {
|
|
60
|
-
useWebSocket,
|
|
61
|
-
useAgents,
|
|
62
|
-
useMessages,
|
|
63
|
-
useOrchestrator,
|
|
64
|
-
useSession,
|
|
65
|
-
type UseWebSocketOptions,
|
|
66
|
-
type UseWebSocketReturn,
|
|
67
|
-
type UseAgentsOptions,
|
|
68
|
-
type UseAgentsReturn,
|
|
69
|
-
type UseMessagesOptions,
|
|
70
|
-
type UseMessagesReturn,
|
|
71
|
-
type UseOrchestratorOptions,
|
|
72
|
-
type UseOrchestratorResult,
|
|
73
|
-
type UseSessionOptions,
|
|
74
|
-
type UseSessionReturn,
|
|
75
|
-
type DashboardData,
|
|
76
|
-
type AgentWithColor,
|
|
77
|
-
type OrchestratorAgent,
|
|
78
|
-
type OrchestratorEvent,
|
|
79
|
-
type SessionError,
|
|
80
|
-
type CloudUser,
|
|
81
|
-
} from './hooks';
|