Skip to content

Commit 92255df

Browse files
committed
Merge remote-tracking branch 'origin/v5' into v5-ee
# Conflicts: # docs/docs/features/mcp-server.mdx # docs/docs/misc/service-ping.mdx # packages/web/src/app/(app)/settings/accountAskAgent/page.tsx # packages/web/src/app/(app)/settings/layout.tsx # packages/web/src/app/(app)/settings/license/types.ts # packages/web/src/app/(app)/settings/workspaceAskAgent/page.test.tsx # packages/web/src/app/(app)/settings/workspaceAskAgent/page.tsx # packages/web/src/app/(app)/settings/workspaceAskAgent/workspaceAskAgentPage.tsx # packages/web/src/app/api/(client)/client.ts # packages/web/src/app/api/(server)/ee/askmcp/callback/route.test.ts # packages/web/src/app/api/(server)/ee/askmcp/callback/route.ts # packages/web/src/app/api/(server)/ee/askmcp/configuration/route.test.ts # packages/web/src/app/api/(server)/ee/askmcp/configuration/route.ts # packages/web/src/app/api/(server)/ee/askmcp/connect/route.test.ts # packages/web/src/app/api/(server)/ee/askmcp/connect/route.ts # packages/web/src/app/api/(server)/ee/askmcp/servers/route.test.ts # packages/web/src/app/api/(server)/ee/askmcp/servers/route.ts # packages/web/src/app/api/(server)/ee/askmcp/tools/route.test.ts # packages/web/src/app/api/(server)/ee/askmcp/tools/route.ts # packages/web/src/app/api/(server)/ee/chat/route.ts # packages/web/src/ee/features/chat/agent.ts # packages/web/src/ee/features/chat/components/chatThread/chatThread.tsx # packages/web/src/ee/features/chat/components/chatThread/chatThreadListItem.tsx # packages/web/src/ee/features/chat/components/chatThread/detailsCard.test.tsx # packages/web/src/ee/features/chat/components/chatThread/mcpFailedServersBanner.tsx # packages/web/src/ee/features/chat/components/chatThread/toolApprovalBanner.tsx # packages/web/src/ee/features/chat/components/chatThread/tools/jsonHighlighter.tsx # packages/web/src/ee/features/chat/components/chatThread/tools/mcpToolComponent.tsx # packages/web/src/ee/features/chat/components/chatThread/tools/toolSearchToolComponent.tsx # packages/web/src/ee/features/chat/components/chatThreadPanel.test.tsx # packages/web/src/ee/features/chat/components/chatThreadPanel.tsx # packages/web/src/ee/features/chat/mcp/actions.test.ts # packages/web/src/ee/features/chat/mcp/actions.ts # packages/web/src/ee/features/chat/mcp/components/connectorCard.tsx # packages/web/src/ee/features/chat/mcp/components/connectorToolDisclosure.test.tsx # packages/web/src/ee/features/chat/mcp/components/connectorToolDisclosure.tsx # packages/web/src/ee/features/chat/mcp/components/connectorToolUsageDisclosure.tsx # packages/web/src/ee/features/chat/mcp/hooks/useMcpToolMetadata.ts # packages/web/src/ee/features/chat/mcp/mcpClientFactory.test.ts # packages/web/src/ee/features/chat/mcp/mcpClientFactory.ts # packages/web/src/ee/features/chat/mcp/mcpToolSets.ts # packages/web/src/ee/features/chat/mcp/types.ts # packages/web/src/features/billing/planComparisonTable.tsx # packages/web/src/features/chat/components/chatBox/chatBoxPlusButton.tsx # packages/web/src/features/chat/mcpOAuthDraft.test.ts # packages/web/src/features/chat/mcpOAuthDraft.ts # packages/web/src/middleware/withAuth.test.ts
2 parents 8e69633 + 4be401f commit 92255df

19 files changed

Lines changed: 2070 additions & 4 deletions

File tree

docs/docs/misc/service-ping.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
22
title: "Service Ping"
3-
api: "GET https://license.sourcebot.dev/schema"
3+
api: "GET https://deployments.sourcebot.dev/schema"
44
---
55

66
<Note>
77
No sensitive data (source code, AI inputs/outputs, credentials, user information, etc) is ever transmitted.
88
</Note>
99

10-
By default, all Sourcebot deployments will send a Service Ping, which is an HTTPS encrypted ping to `https://license.sourcebot.dev/ping` at port 443, every 24 hours.
10+
By default, all Sourcebot deployments will send a Service Ping, which is an HTTPS encrypted ping to `https://deployments.sourcebot.dev/ping` at port 443, every 24 hours.
1111

1212
The data contained within the Service Ping is limited to:
1313

@@ -26,7 +26,7 @@ The data contained within the Service Ping is limited to:
2626
| `activationCode` | `string` | Activation code, if your instance has one bound. |
2727

2828

29-
You can fetch the schema for the Service Ping by submitting a GET request to `https://license.sourcebot.dev/schema`
29+
You can fetch the schema for the Service Ping by submitting a GET request to `https://deployments.sourcebot.dev/schema`
3030

3131

3232
```json wrap icon="wifi" Example Service Ping
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
-- CreateEnum
2+
CREATE TYPE "McpServerClientInfoSource" AS ENUM ('DYNAMIC', 'STATIC');
3+
4+
-- CreateTable
5+
CREATE TABLE "McpServer" (
6+
"id" TEXT NOT NULL,
7+
"name" TEXT NOT NULL,
8+
"sanitizedName" TEXT NOT NULL,
9+
"serverUrl" TEXT NOT NULL,
10+
"clientInfo" TEXT,
11+
"clientInfoSource" "McpServerClientInfoSource" NOT NULL DEFAULT 'DYNAMIC',
12+
"orgId" INTEGER NOT NULL,
13+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
14+
"updatedAt" TIMESTAMP(3) NOT NULL,
15+
16+
CONSTRAINT "McpServer_pkey" PRIMARY KEY ("id")
17+
);
18+
19+
-- CreateTable
20+
CREATE TABLE "McpServerToolCallCount" (
21+
"mcpServerId" TEXT NOT NULL,
22+
"toolName" TEXT NOT NULL,
23+
"count" INTEGER NOT NULL DEFAULT 0,
24+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
25+
"updatedAt" TIMESTAMP(3) NOT NULL,
26+
27+
CONSTRAINT "McpServerToolCallCount_pkey" PRIMARY KEY ("mcpServerId","toolName")
28+
);
29+
30+
-- CreateTable
31+
CREATE TABLE "UserMcpServer" (
32+
"userId" TEXT NOT NULL,
33+
"serverId" TEXT NOT NULL,
34+
"tokens" TEXT,
35+
"tokensExpiresAt" TIMESTAMP(3),
36+
"codeVerifier" TEXT,
37+
"state" TEXT,
38+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
39+
"updatedAt" TIMESTAMP(3) NOT NULL,
40+
41+
CONSTRAINT "UserMcpServer_pkey" PRIMARY KEY ("userId","serverId")
42+
);
43+
44+
-- CreateIndex
45+
CREATE UNIQUE INDEX "McpServer_serverUrl_orgId_key" ON "McpServer"("serverUrl", "orgId");
46+
47+
-- CreateIndex
48+
CREATE UNIQUE INDEX "McpServer_orgId_sanitizedName_key" ON "McpServer"("orgId", "sanitizedName");
49+
50+
-- CreateIndex
51+
CREATE INDEX "UserMcpServer_serverId_idx" ON "UserMcpServer"("serverId");
52+
53+
-- CreateIndex
54+
CREATE INDEX "UserMcpServer_state_idx" ON "UserMcpServer"("state");
55+
56+
-- AddForeignKey
57+
ALTER TABLE "McpServer" ADD CONSTRAINT "McpServer_orgId_fkey" FOREIGN KEY ("orgId") REFERENCES "Org"("id") ON DELETE CASCADE ON UPDATE CASCADE;
58+
59+
-- AddForeignKey
60+
ALTER TABLE "McpServerToolCallCount" ADD CONSTRAINT "McpServerToolCallCount_mcpServerId_fkey" FOREIGN KEY ("mcpServerId") REFERENCES "McpServer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
61+
62+
-- AddForeignKey
63+
ALTER TABLE "UserMcpServer" ADD CONSTRAINT "UserMcpServer_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
64+
65+
-- AddForeignKey
66+
ALTER TABLE "UserMcpServer" ADD CONSTRAINT "UserMcpServer_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "McpServer"("id") ON DELETE CASCADE ON UPDATE CASCADE;

packages/shared/src/env.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ const options = {
317317

318318
SOURCEBOT_ENCRYPTION_KEY: z.string(),
319319
SOURCEBOT_INSTALL_ID: z.string().default("unknown"),
320-
SOURCEBOT_LIGHTHOUSE_URL: z.string().url().default("https://license.sourcebot.dev"),
320+
SOURCEBOT_LIGHTHOUSE_URL: z.string().url().default("https://deployments.sourcebot.dev"),
321321

322322
FALLBACK_GITHUB_CLOUD_TOKEN: z.string().optional(),
323323
FALLBACK_GITLAB_CLOUD_TOKEN: z.string().optional(),
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { afterEach, describe, expect, test, vi } from 'vitest';
2+
import { cleanup, render, screen } from '@testing-library/react';
3+
4+
vi.mock('@/app/api/(client)/client', () => ({
5+
getMcpServersWithStatus: vi.fn(),
6+
getMcpServerTools: vi.fn(),
7+
}));
8+
vi.mock('@/ee/features/chat/mcp/actions', () => ({
9+
disconnectMcpServer: vi.fn(),
10+
}));
11+
12+
const { AccountAskAgentEmptyState, AccountAskAgentOAuthUnavailableState } = await import('./accountAskAgentPage');
13+
14+
afterEach(() => {
15+
cleanup();
16+
});
17+
18+
describe('AccountAskAgentEmptyState', () => {
19+
test('points owners to workspace Ask Agent settings', () => {
20+
render(<AccountAskAgentEmptyState canManageConnectors={true} />);
21+
22+
expect(screen.getByText('No connectors configured yet')).toBeTruthy();
23+
expect(screen.getByText('Open Workspace Ask Agent to approve connectors for your workspace.')).toBeTruthy();
24+
expect(screen.getByRole('link', { name: /Open Workspace Ask Agent/ }).getAttribute('href')).toBe('/settings/workspaceAskAgent');
25+
});
26+
27+
test('tells members to contact an admin', () => {
28+
render(<AccountAskAgentEmptyState canManageConnectors={false} />);
29+
30+
expect(screen.getByText('No connectors available')).toBeTruthy();
31+
expect(screen.getByText(/Contact your workspace admin/)).toBeTruthy();
32+
expect(screen.queryByRole('link', { name: /Open Workspace Ask Agent/ })).toBeNull();
33+
});
34+
});
35+
36+
describe('AccountAskAgentOAuthUnavailableState', () => {
37+
test('points owners to workspace cleanup settings', () => {
38+
render(<AccountAskAgentOAuthUnavailableState canManageConnectors={true} />);
39+
40+
expect(screen.getByText('Connector OAuth is unavailable')).toBeTruthy();
41+
expect(screen.getByRole('link', { name: /Open Workspace Ask Agent/ }).getAttribute('href')).toBe('/settings/workspaceAskAgent');
42+
});
43+
44+
test('hides workspace cleanup link from members', () => {
45+
render(<AccountAskAgentOAuthUnavailableState canManageConnectors={false} />);
46+
47+
expect(screen.getByText('Connector setup is unavailable on this Sourcebot instance.')).toBeTruthy();
48+
expect(screen.queryByRole('link', { name: /Open Workspace Ask Agent/ })).toBeNull();
49+
});
50+
});

0 commit comments

Comments
 (0)