agent-relay 2.0.21 → 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 +21 -1
- package/packages/daemon/dist/router.d.ts +5 -0
- package/packages/daemon/dist/router.js +31 -0
- package/packages/daemon/dist/server.d.ts +5 -0
- package/packages/daemon/dist/server.js +131 -1
- package/packages/daemon/package.json +12 -12
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/dist/client.d.ts +15 -0
- package/packages/mcp/dist/client.js +9 -0
- package/packages/mcp/dist/server.js +13 -1
- package/packages/mcp/dist/tools/index.d.ts +2 -0
- package/packages/mcp/dist/tools/index.js +2 -0
- package/packages/mcp/dist/tools/relay-connected.d.ts +17 -0
- package/packages/mcp/dist/tools/relay-connected.js +40 -0
- package/packages/mcp/dist/tools/relay-remove-agent.d.ts +20 -0
- package/packages/mcp/dist/tools/relay-remove-agent.js +50 -0
- package/packages/mcp/package.json +2 -2
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/dist/types.d.ts +46 -1
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/dist/client.d.ts +22 -1
- package/packages/sdk/dist/client.js +31 -0
- package/packages/sdk/dist/protocol/index.d.ts +1 -1
- package/packages/sdk/dist/protocol/types.d.ts +35 -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/dist/adapter.d.ts +4 -0
- package/packages/storage/dist/sqlite-adapter.d.ts +10 -0
- package/packages/storage/dist/sqlite-adapter.js +26 -0
- 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/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
- package/dist/dashboard/out/_next/static/7MZPqYkVGw3EGzVBkVmY9/_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/7MZPqYkVGw3EGzVBkVmY9/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/7MZPqYkVGw3EGzVBkVmY9/_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/iJ3Uiz3IrqUJL7IxKZHiV/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/iJ3Uiz3IrqUJL7IxKZHiV/_ssgManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_buildManifest.js +0 -1
- package/packages/dashboard/ui-dist/_next/static/l-jd878zUJ_IlraqEWMZc/_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
|
Binary file
|
package/dist/src/cli/index.d.ts
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Agent Relay CLI
|
|
4
4
|
*
|
|
5
5
|
* Commands:
|
|
6
|
-
* relay claude - Start daemon
|
|
7
|
-
* relay codex - Start daemon
|
|
6
|
+
* relay claude - Start daemon with Claude coordinator
|
|
7
|
+
* relay codex - Start daemon with Codex coordinator
|
|
8
8
|
* relay create-agent <cmd> - Wrap agent with real-time messaging
|
|
9
9
|
* relay create-agent -n Name cmd - Wrap with specific agent name
|
|
10
|
-
* relay up - Start daemon
|
|
10
|
+
* relay up - Start daemon
|
|
11
11
|
* relay read <id> - Read full message by ID
|
|
12
12
|
* relay agents - List connected agents
|
|
13
13
|
* relay who - Show currently active agents
|
package/dist/src/cli/index.js
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
* Agent Relay CLI
|
|
4
4
|
*
|
|
5
5
|
* Commands:
|
|
6
|
-
* relay claude - Start daemon
|
|
7
|
-
* relay codex - Start daemon
|
|
6
|
+
* relay claude - Start daemon with Claude coordinator
|
|
7
|
+
* relay codex - Start daemon with Codex coordinator
|
|
8
8
|
* relay create-agent <cmd> - Wrap agent with real-time messaging
|
|
9
9
|
* relay create-agent -n Name cmd - Wrap with specific agent name
|
|
10
|
-
* relay up - Start daemon
|
|
10
|
+
* relay up - Start daemon
|
|
11
11
|
* relay read <id> - Read full message by ID
|
|
12
12
|
* relay agents - List connected agents
|
|
13
13
|
* relay who - Show currently active agents
|
|
@@ -26,10 +26,11 @@ import fs from 'node:fs';
|
|
|
26
26
|
import path from 'node:path';
|
|
27
27
|
import readline from 'node:readline';
|
|
28
28
|
import { promisify } from 'node:util';
|
|
29
|
-
import { exec
|
|
29
|
+
import { exec } from 'node:child_process';
|
|
30
30
|
import { fileURLToPath } from 'node:url';
|
|
31
|
+
const RELAY_DASHBOARD_REPO = 'https://github.com/AgentWorkforce/relay-dashboard';
|
|
31
32
|
/**
|
|
32
|
-
* Prompt user to choose how to handle missing dashboard package
|
|
33
|
+
* Prompt user to choose how to handle missing dashboard package.
|
|
33
34
|
* Returns: 'install' | 'skip'
|
|
34
35
|
*/
|
|
35
36
|
async function promptDashboardInstall() {
|
|
@@ -38,11 +39,11 @@ async function promptDashboardInstall() {
|
|
|
38
39
|
output: process.stdout,
|
|
39
40
|
});
|
|
40
41
|
console.log(`
|
|
41
|
-
|
|
42
|
+
The web dashboard is now an external package.
|
|
42
43
|
|
|
43
44
|
How would you like to proceed?
|
|
44
|
-
1.
|
|
45
|
-
2.
|
|
45
|
+
1. View installation instructions for relay-dashboard
|
|
46
|
+
2. Skip and continue without dashboard
|
|
46
47
|
`);
|
|
47
48
|
return new Promise((resolve) => {
|
|
48
49
|
rl.question('Choose [1/2]: ', (answer) => {
|
|
@@ -58,29 +59,24 @@ How would you like to proceed?
|
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
61
|
-
*
|
|
62
|
+
* Show instructions for installing the external relay-dashboard package.
|
|
62
63
|
*/
|
|
63
|
-
|
|
64
|
-
console.log(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
proc.on('error', () => {
|
|
80
|
-
console.error('\n✗ Installation failed. Try running manually:\n npm install -g @agent-relay/dashboard\n');
|
|
81
|
-
resolve(false);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
64
|
+
function showDashboardInstallInstructions() {
|
|
65
|
+
console.log(`
|
|
66
|
+
To install the relay-dashboard, visit:
|
|
67
|
+
|
|
68
|
+
${RELAY_DASHBOARD_REPO}
|
|
69
|
+
|
|
70
|
+
Install via npm:
|
|
71
|
+
|
|
72
|
+
npm install -g relay-dashboard
|
|
73
|
+
|
|
74
|
+
Then start the dashboard alongside the daemon:
|
|
75
|
+
|
|
76
|
+
relay-dashboard --port 3888
|
|
77
|
+
|
|
78
|
+
See the repository README for full configuration options.
|
|
79
|
+
`);
|
|
84
80
|
}
|
|
85
81
|
dotenvConfig();
|
|
86
82
|
const DEFAULT_DASHBOARD_PORT = process.env.AGENT_RELAY_DASHBOARD_PORT || '3888';
|
|
@@ -492,76 +488,7 @@ program
|
|
|
492
488
|
try {
|
|
493
489
|
await daemon.start();
|
|
494
490
|
console.log('Daemon started.');
|
|
495
|
-
|
|
496
|
-
// Dashboard is disabled by default (use --dashboard to enable)
|
|
497
|
-
// Dashboard is an optional separate package: @agent-relay/dashboard
|
|
498
|
-
if (options.dashboard === true) {
|
|
499
|
-
const port = parseInt(options.port, 10);
|
|
500
|
-
try {
|
|
501
|
-
const { startDashboard } = await import('@agent-relay/dashboard');
|
|
502
|
-
dashboardPort = await startDashboard({
|
|
503
|
-
port,
|
|
504
|
-
dataDir: paths.dataDir,
|
|
505
|
-
teamDir: paths.teamDir,
|
|
506
|
-
dbPath,
|
|
507
|
-
enableSpawner: true,
|
|
508
|
-
projectRoot: paths.projectRoot,
|
|
509
|
-
// Pass spawn tracking callbacks so messages can be queued before HELLO completes
|
|
510
|
-
onMarkSpawning: (name) => daemon.markSpawning(name),
|
|
511
|
-
onClearSpawning: (name) => daemon.clearSpawning(name),
|
|
512
|
-
});
|
|
513
|
-
console.log(`Dashboard: http://localhost:${dashboardPort}`);
|
|
514
|
-
// Hook daemon log output to dashboard WebSocket
|
|
515
|
-
daemon.onLogOutput = (agentName, data, _timestamp) => {
|
|
516
|
-
const broadcast = global.__broadcastLogOutput;
|
|
517
|
-
if (broadcast) {
|
|
518
|
-
broadcast(agentName, data);
|
|
519
|
-
}
|
|
520
|
-
};
|
|
521
|
-
}
|
|
522
|
-
catch (err) {
|
|
523
|
-
const error = err;
|
|
524
|
-
if (error.code === 'ERR_MODULE_NOT_FOUND' || error.code === 'MODULE_NOT_FOUND') {
|
|
525
|
-
// Interactive prompt for dashboard installation
|
|
526
|
-
const choice = await promptDashboardInstall();
|
|
527
|
-
if (choice === 'install') {
|
|
528
|
-
const installed = await installDashboardGlobally();
|
|
529
|
-
if (installed) {
|
|
530
|
-
// Retry import after installation
|
|
531
|
-
try {
|
|
532
|
-
const { startDashboard } = await import('@agent-relay/dashboard');
|
|
533
|
-
dashboardPort = await startDashboard({
|
|
534
|
-
port,
|
|
535
|
-
dataDir: paths.dataDir,
|
|
536
|
-
teamDir: paths.teamDir,
|
|
537
|
-
dbPath,
|
|
538
|
-
enableSpawner: true,
|
|
539
|
-
projectRoot: paths.projectRoot,
|
|
540
|
-
onMarkSpawning: (name) => daemon.markSpawning(name),
|
|
541
|
-
onClearSpawning: (name) => daemon.clearSpawning(name),
|
|
542
|
-
});
|
|
543
|
-
console.log(`Dashboard: http://localhost:${dashboardPort}`);
|
|
544
|
-
daemon.onLogOutput = (agentName, data, _timestamp) => {
|
|
545
|
-
const broadcast = global.__broadcastLogOutput;
|
|
546
|
-
if (broadcast) {
|
|
547
|
-
broadcast(agentName, data);
|
|
548
|
-
}
|
|
549
|
-
};
|
|
550
|
-
}
|
|
551
|
-
catch {
|
|
552
|
-
console.error('Dashboard still not found after installation. Continuing without dashboard.');
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
else {
|
|
557
|
-
console.log('\nContinuing without dashboard...\n');
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
else {
|
|
561
|
-
throw err;
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
}
|
|
491
|
+
const dashboardPort = undefined;
|
|
565
492
|
// Determine if we should auto-spawn agents
|
|
566
493
|
// --spawn: force spawn
|
|
567
494
|
// --no-spawn: never spawn
|
|
@@ -1519,6 +1446,10 @@ program
|
|
|
1519
1446
|
console.log(`\nCleaned up ${killed}/${orphaned.length} session(s).`);
|
|
1520
1447
|
});
|
|
1521
1448
|
async function discoverRelaySessions() {
|
|
1449
|
+
// Skip tmux discovery in test environments to avoid hangs
|
|
1450
|
+
if (process.env.AGENT_RELAY_SKIP_TMUX === '1') {
|
|
1451
|
+
return [];
|
|
1452
|
+
}
|
|
1522
1453
|
try {
|
|
1523
1454
|
const tmuxPath = getTmuxPath();
|
|
1524
1455
|
const { stdout } = await execAsync(`"${tmuxPath}" list-sessions -F "#{session_name}"`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Real-time agent-to-agent communication system",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
},
|
|
17
17
|
"scripts": {
|
|
18
18
|
"postinstall": "npm rebuild better-sqlite3 && node scripts/postinstall.js",
|
|
19
|
-
"build": "npm run clean && npm run build:rust && turbo run build --filter='./packages/*' && tsc
|
|
20
|
-
"build:sequential": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:cloud && npm run build:daemon && npm run build:sdk && npm run build:
|
|
21
|
-
"build:workspace": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:cloud && npm run build:daemon && npm run build:sdk && npm run build:
|
|
19
|
+
"build": "npm run clean && npm run build:rust && turbo run build --filter='./packages/*' && tsc",
|
|
20
|
+
"build:sequential": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:cloud && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && tsc",
|
|
21
|
+
"build:workspace": "npm run clean && npm run build:rust && npm run build:protocol && npm run build:config && npm run build:storage && npm run build:state && npm run build:policy && npm run build:trajectory && npm run build:hooks && npm run build:memory && npm run build:utils && npm run build:continuity && npm run build:resiliency && npm run build:user-directory && npm run build:wrapper && npm run build:mcp && npm run build:bridge && npm run build:telemetry && npm run build:cloud && npm run build:daemon && npm run build:sdk && npm run build:api-types && npm run build:spawner && tsc",
|
|
22
22
|
"build:packages": "turbo run build --filter='./packages/*'",
|
|
23
23
|
"build:packages:watch": "turbo run build --filter='./packages/*' --watch",
|
|
24
24
|
"build:mcp": "cd packages/mcp && npm run build",
|
|
@@ -38,27 +38,20 @@
|
|
|
38
38
|
"build:wrapper": "cd packages/wrapper && npm run build",
|
|
39
39
|
"build:cloud": "cd packages/cloud && npm run build",
|
|
40
40
|
"build:daemon": "cd packages/daemon && npm run build",
|
|
41
|
-
"build:dashboard-server": "cd packages/dashboard-server && npm run build",
|
|
42
|
-
"build:dashboard-pkg": "cd packages/dashboard && npm run build:server",
|
|
43
41
|
"build:sdk": "cd packages/sdk && npm run build",
|
|
44
42
|
"build:api-types": "cd packages/api-types && npm run build",
|
|
45
43
|
"build:spawner": "cd packages/spawner && npm run build",
|
|
46
44
|
"build:telemetry": "cd packages/telemetry && npm run build",
|
|
47
|
-
"
|
|
48
|
-
"postbuild": "chmod +x dist/src/cli/index.js && mkdir -p dist/dashboard && cp -r packages/dashboard/ui/out dist/dashboard/ && mkdir -p packages/dashboard/ui-dist && cp -r packages/dashboard/ui/out/* packages/dashboard/ui-dist/",
|
|
45
|
+
"postbuild": "chmod +x dist/src/cli/index.js",
|
|
49
46
|
"dev:watch": "tsc -w",
|
|
50
47
|
"predev": "npm run clean && npm run build:packages && tsc && chmod +x dist/src/cli/index.js",
|
|
51
|
-
"dev": "
|
|
52
|
-
"dev:daemon": "node dist/src/cli/index.js up --dashboard --port 3889",
|
|
53
|
-
"dev:next": "cd packages/dashboard/ui && npm run dev",
|
|
54
|
-
"dev:simple": "node dist/src/cli/index.js up --dashboard --port 3888",
|
|
48
|
+
"dev": "node dist/src/cli/index.js up --dashboard --port 3888",
|
|
55
49
|
"dev:local": "npm run build && npm link && echo '✓ agent-relay linked globally'",
|
|
56
50
|
"dev:unlink": "npm unlink -g agent-relay && echo '✓ agent-relay unlinked'",
|
|
57
51
|
"dev:rebuild": "npm run build && echo '✓ Rebuilt (linked version updated)'",
|
|
58
52
|
"build:rust": "if command -v ~/.cargo/bin/cargo >/dev/null 2>&1; then cd relay-pty && ~/.cargo/bin/cargo build --release && cp target/release/relay-pty ../bin/relay-pty && node -e \"const os=require('os'); const fs=require('fs'); const p=os.platform(); const a=os.arch(); const name='relay-pty-'+p+'-'+a; fs.copyFileSync('target/release/relay-pty', '../bin/'+name); console.log('✓ relay-pty binary built and copied to bin/ and bin/'+name)\"; else echo '⚠ Rust not installed, using prebuilt binaries from bin/'; fi",
|
|
59
53
|
"start": "node dist/src/cli/index.js",
|
|
60
54
|
"daemon": "node packages/daemon/dist/server.js",
|
|
61
|
-
"dashboard": "node packages/dashboard-server/dist/start.js",
|
|
62
55
|
"pretest": "npm run build",
|
|
63
56
|
"test": "vitest run",
|
|
64
57
|
"test:integration": "vitest run test/cloud/*.integration.test.ts",
|
|
@@ -84,7 +77,7 @@
|
|
|
84
77
|
"cloud:setup": "./scripts/cloud-setup.sh",
|
|
85
78
|
"cloud:api": "WORKSPACE_IMAGE=relay-workspace:local WORKSPACE_DEV_MOUNT=true node -r dotenv/config packages/cloud/dist/index.js",
|
|
86
79
|
"precloud": "./scripts/cloud-setup.sh --skip-data",
|
|
87
|
-
"cloud": "
|
|
80
|
+
"cloud": "npm run cloud:api",
|
|
88
81
|
"docs:dev": "cd docs && npm run dev",
|
|
89
82
|
"cli-tester:start": "cd packages/cli-tester && ./scripts/start.sh",
|
|
90
83
|
"cli-tester:start:clean": "cd packages/cli-tester && ./scripts/start.sh --clean",
|
|
@@ -114,21 +107,21 @@
|
|
|
114
107
|
},
|
|
115
108
|
"homepage": "https://github.com/AgentWorkforce/relay#readme",
|
|
116
109
|
"dependencies": {
|
|
117
|
-
"@agent-relay/bridge": "2.0.
|
|
118
|
-
"@agent-relay/config": "2.0.
|
|
119
|
-
"@agent-relay/continuity": "2.0.
|
|
120
|
-
"@agent-relay/daemon": "2.0.
|
|
121
|
-
"@agent-relay/hooks": "2.0.
|
|
122
|
-
"@agent-relay/mcp": "2.0.
|
|
123
|
-
"@agent-relay/protocol": "2.0.
|
|
124
|
-
"@agent-relay/resiliency": "2.0.
|
|
125
|
-
"@agent-relay/sdk": "2.0.
|
|
126
|
-
"@agent-relay/storage": "2.0.
|
|
127
|
-
"@agent-relay/telemetry": "2.0.
|
|
128
|
-
"@agent-relay/trajectory": "2.0.
|
|
129
|
-
"@agent-relay/user-directory": "2.0.
|
|
130
|
-
"@agent-relay/utils": "2.0.
|
|
131
|
-
"@agent-relay/wrapper": "2.0.
|
|
110
|
+
"@agent-relay/bridge": "2.0.23",
|
|
111
|
+
"@agent-relay/config": "2.0.23",
|
|
112
|
+
"@agent-relay/continuity": "2.0.23",
|
|
113
|
+
"@agent-relay/daemon": "2.0.23",
|
|
114
|
+
"@agent-relay/hooks": "2.0.23",
|
|
115
|
+
"@agent-relay/mcp": "2.0.23",
|
|
116
|
+
"@agent-relay/protocol": "2.0.23",
|
|
117
|
+
"@agent-relay/resiliency": "2.0.23",
|
|
118
|
+
"@agent-relay/sdk": "2.0.23",
|
|
119
|
+
"@agent-relay/storage": "2.0.23",
|
|
120
|
+
"@agent-relay/telemetry": "2.0.23",
|
|
121
|
+
"@agent-relay/trajectory": "2.0.23",
|
|
122
|
+
"@agent-relay/user-directory": "2.0.23",
|
|
123
|
+
"@agent-relay/utils": "2.0.23",
|
|
124
|
+
"@agent-relay/wrapper": "2.0.23",
|
|
132
125
|
"@nangohq/node": "^0.69.20",
|
|
133
126
|
"@types/jsonwebtoken": "^9.0.10",
|
|
134
127
|
"agent-trajectories": "^0.2.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/bridge",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Multi-project bridge client utilities for Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/protocol": "2.0.
|
|
26
|
-
"@agent-relay/config": "2.0.
|
|
27
|
-
"@agent-relay/utils": "2.0.
|
|
28
|
-
"@agent-relay/policy": "2.0.
|
|
29
|
-
"@agent-relay/user-directory": "2.0.
|
|
30
|
-
"@agent-relay/wrapper": "2.0.
|
|
31
|
-
"@agent-relay/mcp": "2.0.
|
|
25
|
+
"@agent-relay/protocol": "2.0.23",
|
|
26
|
+
"@agent-relay/config": "2.0.23",
|
|
27
|
+
"@agent-relay/utils": "2.0.23",
|
|
28
|
+
"@agent-relay/policy": "2.0.23",
|
|
29
|
+
"@agent-relay/user-directory": "2.0.23",
|
|
30
|
+
"@agent-relay/wrapper": "2.0.23",
|
|
31
|
+
"@agent-relay/mcp": "2.0.23"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^22.19.3",
|
|
@@ -1153,10 +1153,31 @@ export async function createServer() {
|
|
|
1153
1153
|
// Teams router - MUST BE LAST among /api routes
|
|
1154
1154
|
// Handles /workspaces/:id/members and /invites with requireAuth on all routes
|
|
1155
1155
|
app.use('/api', teamsRouter);
|
|
1156
|
-
// Serve static dashboard files
|
|
1157
|
-
//
|
|
1158
|
-
|
|
1159
|
-
|
|
1156
|
+
// Serve static dashboard files from @agent-relay/dashboard npm package
|
|
1157
|
+
// The npm package exports pre-built Next.js static files in its 'out' directory
|
|
1158
|
+
const npmDashboardPaths = [
|
|
1159
|
+
// When running from packages/cloud/dist/server.js
|
|
1160
|
+
path.join(__dirname, '../../../node_modules/@agent-relay/dashboard/out'),
|
|
1161
|
+
// When running from root node_modules (monorepo hoisting)
|
|
1162
|
+
path.join(__dirname, '../../../../node_modules/@agent-relay/dashboard/out'),
|
|
1163
|
+
// Docker deployment path
|
|
1164
|
+
'/app/node_modules/@agent-relay/dashboard/out',
|
|
1165
|
+
];
|
|
1166
|
+
// Find the first path that exists
|
|
1167
|
+
let dashboardPath = null;
|
|
1168
|
+
for (const npmPath of npmDashboardPaths) {
|
|
1169
|
+
if (fs.existsSync(npmPath)) {
|
|
1170
|
+
dashboardPath = npmPath;
|
|
1171
|
+
console.log(`[cloud] Serving dashboard from: ${npmPath}`);
|
|
1172
|
+
break;
|
|
1173
|
+
}
|
|
1174
|
+
}
|
|
1175
|
+
if (!dashboardPath) {
|
|
1176
|
+
console.error(`[cloud] Dashboard not found! Install @agent-relay/dashboard package.`);
|
|
1177
|
+
console.error(`[cloud] Checked paths: ${npmDashboardPaths.join(', ')}`);
|
|
1178
|
+
// Use first path as fallback (will 404 but won't crash)
|
|
1179
|
+
dashboardPath = npmDashboardPaths[0];
|
|
1180
|
+
}
|
|
1160
1181
|
// Serve static files (JS, CSS, images, etc.)
|
|
1161
1182
|
app.use(express.static(dashboardPath));
|
|
1162
1183
|
// Handle clean URLs for Next.js static export
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/cloud",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Cloud API server and services for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"test:watch": "vitest"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@agent-relay/wrapper": "2.0.
|
|
42
|
-
"@agent-relay/config": "2.0.
|
|
43
|
-
"@agent-relay/resiliency": "2.0.
|
|
44
|
-
"@agent-relay/storage": "2.0.
|
|
45
|
-
"@agent-relay/protocol": "2.0.
|
|
41
|
+
"@agent-relay/wrapper": "2.0.23",
|
|
42
|
+
"@agent-relay/config": "2.0.23",
|
|
43
|
+
"@agent-relay/resiliency": "2.0.23",
|
|
44
|
+
"@agent-relay/storage": "2.0.23",
|
|
45
|
+
"@agent-relay/protocol": "2.0.23"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/config",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Shared configuration schemas and loaders for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"test:watch": "vitest"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@agent-relay/protocol": "2.0.
|
|
86
|
+
"@agent-relay/protocol": "2.0.23",
|
|
87
87
|
"zod": "^3.23.8",
|
|
88
88
|
"zod-to-json-schema": "^3.23.1"
|
|
89
89
|
},
|
|
@@ -19,9 +19,27 @@ const logger = createLogger('orchestrator');
|
|
|
19
19
|
function generateId() {
|
|
20
20
|
return Math.random().toString(36).substring(2, 15);
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Determine the default host binding.
|
|
24
|
+
* - In cloud environments (Fly.io, Docker with WORKSPACE_ID), bind to 0.0.0.0 for external access
|
|
25
|
+
* - Locally, bind to localhost for security
|
|
26
|
+
* - Can be overridden with AGENT_RELAY_API_HOST env var
|
|
27
|
+
*/
|
|
28
|
+
function getDefaultHost() {
|
|
29
|
+
// Explicit override
|
|
30
|
+
if (process.env.AGENT_RELAY_API_HOST) {
|
|
31
|
+
return process.env.AGENT_RELAY_API_HOST;
|
|
32
|
+
}
|
|
33
|
+
// Cloud environment detection - bind to all interfaces for load balancer access
|
|
34
|
+
const isCloudEnvironment = process.env.FLY_APP_NAME || // Fly.io
|
|
35
|
+
process.env.WORKSPACE_ID || // Agent Relay workspace
|
|
36
|
+
process.env.RELAY_WORKSPACE_ID || // Alternative workspace ID
|
|
37
|
+
process.env.RUNNING_IN_DOCKER === 'true'; // Docker container
|
|
38
|
+
return isCloudEnvironment ? '0.0.0.0' : 'localhost';
|
|
39
|
+
}
|
|
22
40
|
const DEFAULT_CONFIG = {
|
|
23
41
|
port: 3456,
|
|
24
|
-
host:
|
|
42
|
+
host: getDefaultHost(),
|
|
25
43
|
dataDir: path.join(process.env.HOME || '', '.agent-relay', 'orchestrator'),
|
|
26
44
|
autoStartDaemons: true,
|
|
27
45
|
};
|
|
@@ -971,6 +989,8 @@ export class Orchestrator extends EventEmitter {
|
|
|
971
989
|
likelyCause: crashContext.likelyCause,
|
|
972
990
|
crashType: 'heartbeat_failure',
|
|
973
991
|
});
|
|
992
|
+
// Remove the stale agent from the router so connected-agents.json is accurate
|
|
993
|
+
workspace?.daemon?.removeStaleAgent(health.agentName);
|
|
974
994
|
logger.error('Agent crashed', {
|
|
975
995
|
workspaceId: health.workspaceId,
|
|
976
996
|
agentName: health.agentName,
|
|
@@ -225,6 +225,11 @@ export declare class Router {
|
|
|
225
225
|
* Get connection by agent name.
|
|
226
226
|
*/
|
|
227
227
|
getConnection(agentName: string): RoutableConnection | undefined;
|
|
228
|
+
/**
|
|
229
|
+
* Force remove an agent from the router (used when process dies without clean disconnect).
|
|
230
|
+
* This cleans up the agent's connection and subscriptions without needing the connection object.
|
|
231
|
+
*/
|
|
232
|
+
forceRemoveAgent(agentName: string): boolean;
|
|
228
233
|
/**
|
|
229
234
|
* Get number of active connections.
|
|
230
235
|
*/
|
|
@@ -876,6 +876,37 @@ export class Router {
|
|
|
876
876
|
getConnection(agentName) {
|
|
877
877
|
return this.agents.get(agentName);
|
|
878
878
|
}
|
|
879
|
+
/**
|
|
880
|
+
* Force remove an agent from the router (used when process dies without clean disconnect).
|
|
881
|
+
* This cleans up the agent's connection and subscriptions without needing the connection object.
|
|
882
|
+
*/
|
|
883
|
+
forceRemoveAgent(agentName) {
|
|
884
|
+
const connection = this.agents.get(agentName);
|
|
885
|
+
if (!connection) {
|
|
886
|
+
routerLog.debug(`forceRemoveAgent: agent ${agentName} not found in router`);
|
|
887
|
+
return false;
|
|
888
|
+
}
|
|
889
|
+
routerLog.info(`Force removing stale agent: ${agentName}`);
|
|
890
|
+
// Remove from agents map
|
|
891
|
+
this.agents.delete(agentName);
|
|
892
|
+
// Remove from all channel subscriptions
|
|
893
|
+
for (const [channel, subscribers] of this.subscriptions) {
|
|
894
|
+
if (subscribers.delete(agentName)) {
|
|
895
|
+
routerLog.debug(`Removed ${agentName} from channel ${channel}`);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
// Remove from connections map
|
|
899
|
+
this.connections.delete(connection.id);
|
|
900
|
+
// Clear any pending deliveries
|
|
901
|
+
this.deliveryTracker.clearPendingForConnection(connection.id);
|
|
902
|
+
// Clean up channel memberships (same as unregister)
|
|
903
|
+
this.removeFromAllChannels(agentName);
|
|
904
|
+
// Clean up shadow relationships
|
|
905
|
+
this.unbindShadow(agentName);
|
|
906
|
+
// Clear processing state
|
|
907
|
+
this.clearProcessing(agentName);
|
|
908
|
+
return true;
|
|
909
|
+
}
|
|
879
910
|
/**
|
|
880
911
|
* Get number of active connections.
|
|
881
912
|
*/
|
|
@@ -80,6 +80,11 @@ export declare class Daemon {
|
|
|
80
80
|
* Called when spawn fails or is cancelled (successful registration clears automatically).
|
|
81
81
|
*/
|
|
82
82
|
clearSpawning(agentName: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* Remove a stale agent from the router (used when process dies without clean disconnect).
|
|
85
|
+
* This is called by the orchestrator's health monitoring when a PID is detected as dead.
|
|
86
|
+
*/
|
|
87
|
+
removeStaleAgent(agentName: string): boolean;
|
|
83
88
|
/**
|
|
84
89
|
* Initialize storage adapter (called during start).
|
|
85
90
|
*/
|