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
|
@@ -178,6 +178,21 @@ export class Daemon {
|
|
|
178
178
|
clearSpawning(agentName) {
|
|
179
179
|
this.router.clearSpawning(agentName);
|
|
180
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Remove a stale agent from the router (used when process dies without clean disconnect).
|
|
183
|
+
* This is called by the orchestrator's health monitoring when a PID is detected as dead.
|
|
184
|
+
*/
|
|
185
|
+
removeStaleAgent(agentName) {
|
|
186
|
+
const removed = this.router.forceRemoveAgent(agentName);
|
|
187
|
+
if (removed) {
|
|
188
|
+
// Notify cloud sync about agent removal
|
|
189
|
+
this.notifyCloudSync();
|
|
190
|
+
// Update connected-agents.json to reflect the removal
|
|
191
|
+
this.writeConnectedAgentsFile();
|
|
192
|
+
log.info('Removed stale agent from router', { agentName });
|
|
193
|
+
}
|
|
194
|
+
return removed;
|
|
195
|
+
}
|
|
181
196
|
/**
|
|
182
197
|
* Initialize storage adapter (called during start).
|
|
183
198
|
*/
|
|
@@ -1170,7 +1185,8 @@ export class Daemon {
|
|
|
1170
1185
|
name,
|
|
1171
1186
|
cli: registryAgent?.cli,
|
|
1172
1187
|
idle: false, // Connected agents are not idle
|
|
1173
|
-
|
|
1188
|
+
// TODO: Add proper parent tracking via spawner relationship
|
|
1189
|
+
parent: undefined,
|
|
1174
1190
|
};
|
|
1175
1191
|
});
|
|
1176
1192
|
// Optionally include idle agents from registry
|
|
@@ -1196,6 +1212,120 @@ export class Daemon {
|
|
|
1196
1212
|
connection.send(response);
|
|
1197
1213
|
break;
|
|
1198
1214
|
}
|
|
1215
|
+
case 'LIST_CONNECTED_AGENTS': {
|
|
1216
|
+
// Returns only currently connected agents (not historical/registered agents)
|
|
1217
|
+
const connectedAgents = this.router.getAgents();
|
|
1218
|
+
const registryAgents = this.registry?.getAgents() ?? [];
|
|
1219
|
+
const registryMap = new Map(registryAgents.map(a => [a.name, a]));
|
|
1220
|
+
const agents = connectedAgents
|
|
1221
|
+
.filter(name => !this.isInternalAgent(name))
|
|
1222
|
+
.map(name => {
|
|
1223
|
+
const registryAgent = registryMap.get(name);
|
|
1224
|
+
return {
|
|
1225
|
+
name,
|
|
1226
|
+
cli: registryAgent?.cli,
|
|
1227
|
+
idle: false,
|
|
1228
|
+
// TODO: Add proper parent tracking via spawner relationship
|
|
1229
|
+
parent: undefined,
|
|
1230
|
+
};
|
|
1231
|
+
});
|
|
1232
|
+
const connectedResponse = {
|
|
1233
|
+
v: PROTOCOL_VERSION,
|
|
1234
|
+
type: 'LIST_CONNECTED_AGENTS_RESPONSE',
|
|
1235
|
+
id: envelope.id,
|
|
1236
|
+
ts: Date.now(),
|
|
1237
|
+
payload: { agents },
|
|
1238
|
+
};
|
|
1239
|
+
connection.send(connectedResponse);
|
|
1240
|
+
break;
|
|
1241
|
+
}
|
|
1242
|
+
case 'REMOVE_AGENT': {
|
|
1243
|
+
const removePayload = envelope.payload;
|
|
1244
|
+
const agentName = removePayload.name;
|
|
1245
|
+
// Validate agent name
|
|
1246
|
+
if (!agentName || typeof agentName !== 'string' || agentName.length === 0) {
|
|
1247
|
+
const errorResponse = {
|
|
1248
|
+
v: PROTOCOL_VERSION,
|
|
1249
|
+
type: 'REMOVE_AGENT_RESPONSE',
|
|
1250
|
+
id: envelope.id,
|
|
1251
|
+
ts: Date.now(),
|
|
1252
|
+
payload: { success: false, removed: false, message: 'Invalid agent name: name is required' },
|
|
1253
|
+
};
|
|
1254
|
+
connection.send(errorResponse);
|
|
1255
|
+
break;
|
|
1256
|
+
}
|
|
1257
|
+
if (agentName.length > 128) {
|
|
1258
|
+
const errorResponse = {
|
|
1259
|
+
v: PROTOCOL_VERSION,
|
|
1260
|
+
type: 'REMOVE_AGENT_RESPONSE',
|
|
1261
|
+
id: envelope.id,
|
|
1262
|
+
ts: Date.now(),
|
|
1263
|
+
payload: { success: false, removed: false, message: 'Invalid agent name: exceeds 128 characters' },
|
|
1264
|
+
};
|
|
1265
|
+
connection.send(errorResponse);
|
|
1266
|
+
break;
|
|
1267
|
+
}
|
|
1268
|
+
const doRemove = async () => {
|
|
1269
|
+
let removed = false;
|
|
1270
|
+
let message = '';
|
|
1271
|
+
// Remove from registry (agents.json)
|
|
1272
|
+
if (this.registry) {
|
|
1273
|
+
const wasInRegistry = this.registry.getAgents().some(a => a.name === agentName);
|
|
1274
|
+
if (wasInRegistry) {
|
|
1275
|
+
this.registry.remove(agentName);
|
|
1276
|
+
removed = true;
|
|
1277
|
+
message = `Removed ${agentName} from registry`;
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1280
|
+
// Remove from storage (sessions table) if storage is available
|
|
1281
|
+
if (this.storage?.removeAgent) {
|
|
1282
|
+
await this.storage.removeAgent(agentName);
|
|
1283
|
+
if (!removed) {
|
|
1284
|
+
removed = true;
|
|
1285
|
+
message = `Removed ${agentName} from storage`;
|
|
1286
|
+
}
|
|
1287
|
+
else {
|
|
1288
|
+
message += ' and storage';
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
// Optionally remove messages
|
|
1292
|
+
if (removePayload.removeMessages && this.storage?.removeMessagesForAgent) {
|
|
1293
|
+
await this.storage.removeMessagesForAgent(agentName);
|
|
1294
|
+
message += ' (including messages)';
|
|
1295
|
+
}
|
|
1296
|
+
// Force remove from router if still connected (shouldn't be, but just in case)
|
|
1297
|
+
if (this.router.forceRemoveAgent(agentName)) {
|
|
1298
|
+
message += ', disconnected from router';
|
|
1299
|
+
// Notify cloud sync and update connected-agents.json
|
|
1300
|
+
this.notifyCloudSync();
|
|
1301
|
+
this.writeConnectedAgentsFile();
|
|
1302
|
+
}
|
|
1303
|
+
if (!removed) {
|
|
1304
|
+
message = `Agent ${agentName} not found in registry or storage`;
|
|
1305
|
+
}
|
|
1306
|
+
return { removed, message };
|
|
1307
|
+
};
|
|
1308
|
+
doRemove().then(({ removed, message }) => {
|
|
1309
|
+
const removeResponse = {
|
|
1310
|
+
v: PROTOCOL_VERSION,
|
|
1311
|
+
type: 'REMOVE_AGENT_RESPONSE',
|
|
1312
|
+
id: envelope.id,
|
|
1313
|
+
ts: Date.now(),
|
|
1314
|
+
payload: { success: removed, removed, message },
|
|
1315
|
+
};
|
|
1316
|
+
connection.send(removeResponse);
|
|
1317
|
+
}).catch(err => {
|
|
1318
|
+
const removeResponse = {
|
|
1319
|
+
v: PROTOCOL_VERSION,
|
|
1320
|
+
type: 'REMOVE_AGENT_RESPONSE',
|
|
1321
|
+
id: envelope.id,
|
|
1322
|
+
ts: Date.now(),
|
|
1323
|
+
payload: { success: false, removed: false, message: `Error: ${err.message}` },
|
|
1324
|
+
};
|
|
1325
|
+
connection.send(removeResponse);
|
|
1326
|
+
});
|
|
1327
|
+
break;
|
|
1328
|
+
}
|
|
1199
1329
|
case 'HEALTH': {
|
|
1200
1330
|
const healthPayload = envelope.payload;
|
|
1201
1331
|
// Compute health based on available data
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/daemon",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Relay daemon server - agent coordination and message routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,17 +22,17 @@
|
|
|
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/storage": "2.0.
|
|
28
|
-
"@agent-relay/bridge": "2.0.
|
|
29
|
-
"@agent-relay/utils": "2.0.
|
|
30
|
-
"@agent-relay/policy": "2.0.
|
|
31
|
-
"@agent-relay/memory": "2.0.
|
|
32
|
-
"@agent-relay/resiliency": "2.0.
|
|
33
|
-
"@agent-relay/user-directory": "2.0.
|
|
34
|
-
"@agent-relay/wrapper": "2.0.
|
|
35
|
-
"@agent-relay/telemetry": "2.0.
|
|
25
|
+
"@agent-relay/protocol": "2.0.23",
|
|
26
|
+
"@agent-relay/config": "2.0.23",
|
|
27
|
+
"@agent-relay/storage": "2.0.23",
|
|
28
|
+
"@agent-relay/bridge": "2.0.23",
|
|
29
|
+
"@agent-relay/utils": "2.0.23",
|
|
30
|
+
"@agent-relay/policy": "2.0.23",
|
|
31
|
+
"@agent-relay/memory": "2.0.23",
|
|
32
|
+
"@agent-relay/resiliency": "2.0.23",
|
|
33
|
+
"@agent-relay/user-directory": "2.0.23",
|
|
34
|
+
"@agent-relay/wrapper": "2.0.23",
|
|
35
|
+
"@agent-relay/telemetry": "2.0.23",
|
|
36
36
|
"ws": "^8.18.3",
|
|
37
37
|
"better-sqlite3": "^12.6.2",
|
|
38
38
|
"pg": "^8.16.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/hooks",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Hook emitter, registry, and trajectory hooks for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"test:watch": "vitest"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@agent-relay/protocol": "2.0.
|
|
41
|
-
"@agent-relay/config": "2.0.
|
|
42
|
-
"@agent-relay/trajectory": "2.0.
|
|
40
|
+
"@agent-relay/protocol": "2.0.23",
|
|
41
|
+
"@agent-relay/config": "2.0.23",
|
|
42
|
+
"@agent-relay/trajectory": "2.0.23"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.19.3",
|
|
@@ -102,6 +102,21 @@ export interface RelayClient {
|
|
|
102
102
|
idle?: boolean;
|
|
103
103
|
parent?: string;
|
|
104
104
|
}>>;
|
|
105
|
+
listConnectedAgents(options?: {
|
|
106
|
+
project?: string;
|
|
107
|
+
}): Promise<Array<{
|
|
108
|
+
name: string;
|
|
109
|
+
cli?: string;
|
|
110
|
+
idle?: boolean;
|
|
111
|
+
parent?: string;
|
|
112
|
+
}>>;
|
|
113
|
+
removeAgent(name: string, options?: {
|
|
114
|
+
removeMessages?: boolean;
|
|
115
|
+
}): Promise<{
|
|
116
|
+
success: boolean;
|
|
117
|
+
removed: boolean;
|
|
118
|
+
message?: string;
|
|
119
|
+
}>;
|
|
105
120
|
getHealth(options?: {
|
|
106
121
|
include_crashes?: boolean;
|
|
107
122
|
include_alerts?: boolean;
|
|
@@ -252,6 +252,15 @@ export function createRelayClient(options) {
|
|
|
252
252
|
const response = await request('LIST_AGENTS', payload);
|
|
253
253
|
return response.agents || [];
|
|
254
254
|
},
|
|
255
|
+
async listConnectedAgents(opts = {}) {
|
|
256
|
+
const payload = { project: opts.project };
|
|
257
|
+
const response = await request('LIST_CONNECTED_AGENTS', payload);
|
|
258
|
+
return response.agents || [];
|
|
259
|
+
},
|
|
260
|
+
async removeAgent(name, opts = {}) {
|
|
261
|
+
const payload = { name, removeMessages: opts.removeMessages };
|
|
262
|
+
return request('REMOVE_AGENT', payload);
|
|
263
|
+
},
|
|
255
264
|
async getHealth(opts = {}) {
|
|
256
265
|
const payload = {
|
|
257
266
|
includeCrashes: opts.include_crashes,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
3
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
import { relaySendTool, relaySendSchema, handleRelaySend, relayInboxTool, relayInboxSchema, handleRelayInbox, relayWhoTool, relayWhoSchema, handleRelayWho, relaySpawnTool, relaySpawnSchema, handleRelaySpawn, relayReleaseTool, relayReleaseSchema, handleRelayRelease, relayStatusTool, relayStatusSchema, handleRelayStatus, relayLogsTool, relayLogsSchema, handleRelayLogs, relayMetricsTool, relayMetricsSchema, handleRelayMetrics, relayHealthTool, relayHealthSchema, handleRelayHealth, relayContinuityTool, relayContinuitySchema, handleRelayContinuity, } from './tools/index.js';
|
|
4
|
+
import { relaySendTool, relaySendSchema, handleRelaySend, relayInboxTool, relayInboxSchema, handleRelayInbox, relayWhoTool, relayWhoSchema, handleRelayWho, relaySpawnTool, relaySpawnSchema, handleRelaySpawn, relayReleaseTool, relayReleaseSchema, handleRelayRelease, relayStatusTool, relayStatusSchema, handleRelayStatus, relayLogsTool, relayLogsSchema, handleRelayLogs, relayMetricsTool, relayMetricsSchema, handleRelayMetrics, relayHealthTool, relayHealthSchema, handleRelayHealth, relayContinuityTool, relayContinuitySchema, handleRelayContinuity, relayConnectedTool, relayConnectedSchema, handleRelayConnected, relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, } from './tools/index.js';
|
|
5
5
|
import { protocolPrompt, getProtocolPrompt } from './prompts/index.js';
|
|
6
6
|
import { agentsResource, getAgentsResource, inboxResource, getInboxResource, projectResource, getProjectResource, } from './resources/index.js';
|
|
7
7
|
/**
|
|
@@ -11,8 +11,10 @@ const TOOLS = [
|
|
|
11
11
|
relaySendTool,
|
|
12
12
|
relayInboxTool,
|
|
13
13
|
relayWhoTool,
|
|
14
|
+
relayConnectedTool,
|
|
14
15
|
relaySpawnTool,
|
|
15
16
|
relayReleaseTool,
|
|
17
|
+
relayRemoveAgentTool,
|
|
16
18
|
relayStatusTool,
|
|
17
19
|
relayLogsTool,
|
|
18
20
|
relayMetricsTool,
|
|
@@ -68,6 +70,11 @@ export function createMCPServer(client, config) {
|
|
|
68
70
|
result = await handleRelayWho(client, input);
|
|
69
71
|
break;
|
|
70
72
|
}
|
|
73
|
+
case 'relay_connected': {
|
|
74
|
+
const input = relayConnectedSchema.parse(args);
|
|
75
|
+
result = await handleRelayConnected(client, input);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
71
78
|
case 'relay_spawn': {
|
|
72
79
|
const input = relaySpawnSchema.parse(args);
|
|
73
80
|
result = await handleRelaySpawn(client, input);
|
|
@@ -78,6 +85,11 @@ export function createMCPServer(client, config) {
|
|
|
78
85
|
result = await handleRelayRelease(client, input);
|
|
79
86
|
break;
|
|
80
87
|
}
|
|
88
|
+
case 'relay_remove_agent': {
|
|
89
|
+
const input = relayRemoveAgentSchema.parse(args);
|
|
90
|
+
result = await handleRelayRemoveAgent(client, input);
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
81
93
|
case 'relay_status': {
|
|
82
94
|
const input = relayStatusSchema.parse(args);
|
|
83
95
|
result = await handleRelayStatus(client, input);
|
|
@@ -8,4 +8,6 @@ export { relayLogsTool, relayLogsSchema, handleRelayLogs, type RelayLogsInput, }
|
|
|
8
8
|
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, type RelayMetricsInput, } from './relay-metrics.js';
|
|
9
9
|
export { relayHealthTool, relayHealthSchema, handleRelayHealth, type RelayHealthInput, } from './relay-health.js';
|
|
10
10
|
export { relayContinuityTool, relayContinuitySchema, handleRelayContinuity, type RelayContinuityInput, } from './relay-continuity.js';
|
|
11
|
+
export { relayConnectedTool, relayConnectedSchema, handleRelayConnected, type RelayConnectedInput, } from './relay-connected.js';
|
|
12
|
+
export { relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, type RelayRemoveAgentInput, } from './relay-remove-agent.js';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -8,4 +8,6 @@ export { relayLogsTool, relayLogsSchema, handleRelayLogs, } from './relay-logs.j
|
|
|
8
8
|
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, } from './relay-metrics.js';
|
|
9
9
|
export { relayHealthTool, relayHealthSchema, handleRelayHealth, } from './relay-health.js';
|
|
10
10
|
export { relayContinuityTool, relayContinuitySchema, handleRelayContinuity, } from './relay-continuity.js';
|
|
11
|
+
export { relayConnectedTool, relayConnectedSchema, handleRelayConnected, } from './relay-connected.js';
|
|
12
|
+
export { relayRemoveAgentTool, relayRemoveAgentSchema, handleRelayRemoveAgent, } from './relay-remove-agent.js';
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { RelayClient } from '../client.js';
|
|
4
|
+
export declare const relayConnectedSchema: z.ZodObject<{
|
|
5
|
+
project: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
project?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
project?: string | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
export type RelayConnectedInput = z.infer<typeof relayConnectedSchema>;
|
|
12
|
+
export declare const relayConnectedTool: Tool;
|
|
13
|
+
/**
|
|
14
|
+
* List only currently connected agents (not historical/registered).
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleRelayConnected(client: RelayClient, input: RelayConnectedInput): Promise<string>;
|
|
17
|
+
//# sourceMappingURL=relay-connected.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const relayConnectedSchema = z.object({
|
|
3
|
+
project: z.string().optional().describe('Filter by project (for multi-project setups)'),
|
|
4
|
+
});
|
|
5
|
+
export const relayConnectedTool = {
|
|
6
|
+
name: 'relay_connected',
|
|
7
|
+
description: `List only currently connected agents in the relay network.
|
|
8
|
+
|
|
9
|
+
Unlike relay_who which includes historical/registered agents, this only shows
|
|
10
|
+
agents that are actively connected right now. Use this for accurate liveness checks.
|
|
11
|
+
|
|
12
|
+
Example output:
|
|
13
|
+
- Alice (claude) - connected
|
|
14
|
+
- Bob (codex) - connected`,
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
properties: {
|
|
18
|
+
project: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'Filter by project',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: [],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* List only currently connected agents (not historical/registered).
|
|
28
|
+
*/
|
|
29
|
+
export async function handleRelayConnected(client, input) {
|
|
30
|
+
const agents = await client.listConnectedAgents(input);
|
|
31
|
+
if (agents.length === 0) {
|
|
32
|
+
return 'No agents currently connected.';
|
|
33
|
+
}
|
|
34
|
+
const formatted = agents.map((a) => {
|
|
35
|
+
const worker = a.parent ? ` [worker of: ${a.parent}]` : '';
|
|
36
|
+
return `- ${a.name} (${a.cli || 'unknown'}) - connected${worker}`;
|
|
37
|
+
});
|
|
38
|
+
return `${agents.length} agent(s) currently connected:\n${formatted.join('\n')}`;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=relay-connected.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import type { RelayClient } from '../client.js';
|
|
4
|
+
export declare const relayRemoveAgentSchema: z.ZodObject<{
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
remove_messages: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
name: string;
|
|
9
|
+
remove_messages: boolean;
|
|
10
|
+
}, {
|
|
11
|
+
name: string;
|
|
12
|
+
remove_messages?: boolean | undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export type RelayRemoveAgentInput = z.infer<typeof relayRemoveAgentSchema>;
|
|
15
|
+
export declare const relayRemoveAgentTool: Tool;
|
|
16
|
+
/**
|
|
17
|
+
* Remove an agent from the registry.
|
|
18
|
+
*/
|
|
19
|
+
export declare function handleRelayRemoveAgent(client: RelayClient, input: RelayRemoveAgentInput): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=relay-remove-agent.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const relayRemoveAgentSchema = z.object({
|
|
3
|
+
name: z.string().describe('Name of the agent to remove from the registry'),
|
|
4
|
+
remove_messages: z.boolean().optional().default(false).describe('Also remove all messages from/to this agent'),
|
|
5
|
+
});
|
|
6
|
+
export const relayRemoveAgentTool = {
|
|
7
|
+
name: 'relay_remove_agent',
|
|
8
|
+
description: `Remove a stale agent from the relay registry.
|
|
9
|
+
|
|
10
|
+
Use this to clean up agents that are no longer needed or have become stale.
|
|
11
|
+
This removes the agent from:
|
|
12
|
+
- The agent registry (agents.json)
|
|
13
|
+
- The sessions table in storage
|
|
14
|
+
- Optionally, all messages from/to this agent
|
|
15
|
+
|
|
16
|
+
WARNING: This permanently removes the agent's history. Use with caution.`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
name: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Name of the agent to remove',
|
|
23
|
+
},
|
|
24
|
+
remove_messages: {
|
|
25
|
+
type: 'boolean',
|
|
26
|
+
description: 'Also remove all messages from/to this agent',
|
|
27
|
+
default: false,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
required: ['name'],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Remove an agent from the registry.
|
|
35
|
+
*/
|
|
36
|
+
export async function handleRelayRemoveAgent(client, input) {
|
|
37
|
+
const result = await client.removeAgent(input.name, {
|
|
38
|
+
removeMessages: input.remove_messages,
|
|
39
|
+
});
|
|
40
|
+
if (result.success && result.removed) {
|
|
41
|
+
return `✓ ${result.message}`;
|
|
42
|
+
}
|
|
43
|
+
else if (result.success && !result.removed) {
|
|
44
|
+
return `Agent "${input.name}" was not found in registry or storage.`;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return `✗ Failed to remove agent: ${result.message}`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=relay-remove-agent.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/mcp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "MCP server for Agent Relay - native messaging tools for AI agents in Claude, Cursor, and VS Code",
|
|
5
5
|
"author": "Agent Workforce Inc.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"prepublishOnly": "npm run clean && npm run build && npm test"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@agent-relay/config": "2.0.
|
|
50
|
+
"@agent-relay/config": "2.0.23",
|
|
51
51
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
52
52
|
"smol-toml": "^1.6.0",
|
|
53
53
|
"zod": "^3.23.8"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/memory",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Semantic memory storage and retrieval system for agent-relay with multiple backend support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/hooks": "2.0.
|
|
25
|
+
"@agent-relay/hooks": "2.0.23"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/policy",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.23",
|
|
4
4
|
"description": "Agent policy management with multi-level fallback (repo, local PRPM, cloud workspace)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/config": "2.0.
|
|
25
|
+
"@agent-relay/config": "2.0.23"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* These types define the wire protocol for agent-to-agent communication.
|
|
6
6
|
*/
|
|
7
7
|
export declare const PROTOCOL_VERSION = 1;
|
|
8
|
-
export type MessageType = 'HELLO' | 'WELCOME' | 'SEND' | 'DELIVER' | 'ACK' | 'NACK' | 'PING' | 'PONG' | 'ERROR' | 'BUSY' | 'RESUME' | 'BYE' | 'STATE' | 'SYNC' | 'SYNC_SNAPSHOT' | 'SYNC_DELTA' | 'SUBSCRIBE' | 'UNSUBSCRIBE' | 'SHADOW_BIND' | 'SHADOW_UNBIND' | 'LOG' | 'CHANNEL_JOIN' | 'CHANNEL_LEAVE' | 'CHANNEL_MESSAGE' | 'CHANNEL_INFO' | 'CHANNEL_MEMBERS' | 'CHANNEL_TYPING' | 'SPAWN' | 'SPAWN_RESULT' | 'RELEASE' | 'RELEASE_RESULT' | 'STATUS' | 'STATUS_RESPONSE' | 'INBOX' | 'INBOX_RESPONSE' | 'LIST_AGENTS' | 'LIST_AGENTS_RESPONSE' | 'HEALTH' | 'HEALTH_RESPONSE' | 'METRICS' | 'METRICS_RESPONSE';
|
|
8
|
+
export type MessageType = 'HELLO' | 'WELCOME' | 'SEND' | 'DELIVER' | 'ACK' | 'NACK' | 'PING' | 'PONG' | 'ERROR' | 'BUSY' | 'RESUME' | 'BYE' | 'STATE' | 'SYNC' | 'SYNC_SNAPSHOT' | 'SYNC_DELTA' | 'SUBSCRIBE' | 'UNSUBSCRIBE' | 'SHADOW_BIND' | 'SHADOW_UNBIND' | 'LOG' | 'CHANNEL_JOIN' | 'CHANNEL_LEAVE' | 'CHANNEL_MESSAGE' | 'CHANNEL_INFO' | 'CHANNEL_MEMBERS' | 'CHANNEL_TYPING' | 'SPAWN' | 'SPAWN_RESULT' | 'RELEASE' | 'RELEASE_RESULT' | 'STATUS' | 'STATUS_RESPONSE' | 'INBOX' | 'INBOX_RESPONSE' | 'LIST_AGENTS' | 'LIST_AGENTS_RESPONSE' | 'LIST_CONNECTED_AGENTS' | 'LIST_CONNECTED_AGENTS_RESPONSE' | 'REMOVE_AGENT' | 'REMOVE_AGENT_RESPONSE' | 'HEALTH' | 'HEALTH_RESPONSE' | 'METRICS' | 'METRICS_RESPONSE';
|
|
9
9
|
export type PayloadKind = 'message' | 'action' | 'state' | 'thinking';
|
|
10
10
|
/**
|
|
11
11
|
* Base envelope structure for all protocol messages.
|
|
@@ -412,12 +412,57 @@ export interface ListAgentsResponsePayload {
|
|
|
412
412
|
parent?: string;
|
|
413
413
|
}>;
|
|
414
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* Payload for LIST_CONNECTED_AGENTS request.
|
|
417
|
+
* Returns only currently connected agents (not historical/registered agents).
|
|
418
|
+
*/
|
|
419
|
+
export interface ListConnectedAgentsPayload {
|
|
420
|
+
/** Filter by project */
|
|
421
|
+
project?: string;
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Payload for LIST_CONNECTED_AGENTS_RESPONSE.
|
|
425
|
+
*/
|
|
426
|
+
export interface ListConnectedAgentsResponsePayload {
|
|
427
|
+
/** List of currently connected agents */
|
|
428
|
+
agents: Array<{
|
|
429
|
+
name: string;
|
|
430
|
+
cli?: string;
|
|
431
|
+
idle?: boolean;
|
|
432
|
+
parent?: string;
|
|
433
|
+
}>;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Payload for REMOVE_AGENT request.
|
|
437
|
+
* Removes an agent from the registry (sessions, agents.json).
|
|
438
|
+
*/
|
|
439
|
+
export interface RemoveAgentPayload {
|
|
440
|
+
/** Agent name to remove */
|
|
441
|
+
name: string;
|
|
442
|
+
/** If true, also removes all messages from/to this agent */
|
|
443
|
+
removeMessages?: boolean;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Payload for REMOVE_AGENT_RESPONSE.
|
|
447
|
+
*/
|
|
448
|
+
export interface RemoveAgentResponsePayload {
|
|
449
|
+
/** Whether the operation succeeded */
|
|
450
|
+
success: boolean;
|
|
451
|
+
/** Whether an agent was actually removed */
|
|
452
|
+
removed: boolean;
|
|
453
|
+
/** Human-readable message */
|
|
454
|
+
message?: string;
|
|
455
|
+
}
|
|
415
456
|
export type StatusEnvelope = Envelope<StatusPayload>;
|
|
416
457
|
export type StatusResponseEnvelope = Envelope<StatusResponsePayload>;
|
|
417
458
|
export type InboxEnvelope = Envelope<InboxPayload>;
|
|
418
459
|
export type InboxResponseEnvelope = Envelope<InboxResponsePayload>;
|
|
419
460
|
export type ListAgentsEnvelope = Envelope<ListAgentsPayload>;
|
|
420
461
|
export type ListAgentsResponseEnvelope = Envelope<ListAgentsResponsePayload>;
|
|
462
|
+
export type ListConnectedAgentsEnvelope = Envelope<ListConnectedAgentsPayload>;
|
|
463
|
+
export type ListConnectedAgentsResponseEnvelope = Envelope<ListConnectedAgentsResponsePayload>;
|
|
464
|
+
export type RemoveAgentEnvelope = Envelope<RemoveAgentPayload>;
|
|
465
|
+
export type RemoveAgentResponseEnvelope = Envelope<RemoveAgentResponsePayload>;
|
|
421
466
|
/**
|
|
422
467
|
* Payload for HEALTH request.
|
|
423
468
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Lightweight client for agent-to-agent communication via Agent Relay daemon.
|
|
6
6
|
*/
|
|
7
|
-
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment, type SpawnResultPayload, type ReleaseResultPayload, type StatusResponsePayload, type InboxMessage, type AgentInfo, type HealthResponsePayload, type MetricsResponsePayload, type CreateProposalOptions, type VoteOptions } from './protocol/types.js';
|
|
7
|
+
import { type Envelope, type SendPayload, type SendMeta, type AckPayload, type PayloadKind, type SpeakOnTrigger, type EntityType, type ChannelMessagePayload, type MessageAttachment, type SpawnResultPayload, type ReleaseResultPayload, type StatusResponsePayload, type InboxMessage, type AgentInfo, type RemoveAgentResponsePayload, type HealthResponsePayload, type MetricsResponsePayload, type CreateProposalOptions, type VoteOptions } from './protocol/types.js';
|
|
8
8
|
export type ClientState = 'DISCONNECTED' | 'CONNECTING' | 'HANDSHAKING' | 'READY' | 'BACKOFF';
|
|
9
9
|
export interface SyncOptions {
|
|
10
10
|
timeoutMs?: number;
|
|
@@ -289,6 +289,27 @@ export declare class RelayClient {
|
|
|
289
289
|
getMetrics(options?: {
|
|
290
290
|
agent?: string;
|
|
291
291
|
}): Promise<MetricsResponsePayload>;
|
|
292
|
+
/**
|
|
293
|
+
* List only currently connected agents (not historical/registered agents).
|
|
294
|
+
* Use this instead of listAgents() when you need accurate liveness information.
|
|
295
|
+
* @param options - Filter options
|
|
296
|
+
* @param options.project - Filter by project
|
|
297
|
+
* @returns Array of currently connected agent info
|
|
298
|
+
*/
|
|
299
|
+
listConnectedAgents(options?: {
|
|
300
|
+
project?: string;
|
|
301
|
+
}): Promise<AgentInfo[]>;
|
|
302
|
+
/**
|
|
303
|
+
* Remove an agent from the registry (sessions, agents.json).
|
|
304
|
+
* Use this to clean up stale agents that are no longer needed.
|
|
305
|
+
* @param name - Agent name to remove
|
|
306
|
+
* @param options - Removal options
|
|
307
|
+
* @param options.removeMessages - Also remove all messages from/to this agent (default: false)
|
|
308
|
+
* @returns Result indicating if the agent was removed
|
|
309
|
+
*/
|
|
310
|
+
removeAgent(name: string, options?: {
|
|
311
|
+
removeMessages?: boolean;
|
|
312
|
+
}): Promise<RemoveAgentResponsePayload>;
|
|
292
313
|
private setState;
|
|
293
314
|
private sendHello;
|
|
294
315
|
private send;
|