aheizi 9 months ago
parent
commit
f534e80f78

File diff suppressed because it is too large
+ 448 - 1812
src/core/prompts/__tests__/__snapshots__/system.test.ts.snap


+ 74 - 4
src/core/prompts/__tests__/system.test.ts

@@ -225,6 +225,52 @@ describe("SYSTEM_PROMPT", () => {
 			true, // enableMcpServerCreation
 		)
 
+		// Verify basic MCP server info is included
+		expect(prompt).toContain("MCP SERVERS")
+		expect(prompt).toContain("The Model Context Protocol (MCP) enables communication")
+
+		// Verify server types are described
+		expect(prompt).toContain("Local (Stdio-based) servers")
+		expect(prompt).toContain("Remote (SSE-based) servers")
+
+		// Verify connected servers section exists
+		expect(prompt).toContain("Connected MCP Servers")
+		expect(prompt).toContain("When a server is connected")
+
+		// Verify server creation info is included
+		expect(prompt).toContain("Creating an MCP Server")
+		expect(prompt).toContain("MCP Server Types and Configuration")
+
+		// Verify configuration examples are included
+		expect(prompt).toContain("Local (Stdio) Server Configuration")
+		expect(prompt).toContain("Remote (SSE) Server Configuration")
+		expect(prompt).toContain("Common configuration options for both types")
+
+		// Verify example server info is included
+		expect(prompt).toContain("Example Local MCP Server")
+		expect(prompt).toContain("create-typescript-server")
+	})
+
+	it("should include MCP server creation info when enabled", async () => {
+		const mockMcpHub = createMockMcpHub()
+
+		const prompt = await SYSTEM_PROMPT(
+			mockContext,
+			"/test/path",
+			false,
+			mockMcpHub,
+			undefined,
+			undefined,
+			defaultModeSlug,
+			undefined,
+			undefined,
+			undefined,
+			undefined,
+			undefined,
+			experiments,
+			true,
+		)
+
 		expect(prompt).toMatchSnapshot()
 	})
 
@@ -246,7 +292,10 @@ describe("SYSTEM_PROMPT", () => {
 			true, // enableMcpServerCreation
 		)
 
-		expect(prompt).toMatchSnapshot()
+		// Should not contain any MCP server related content since mcpHub is undefined
+		expect(prompt).not.toContain("MCP SERVERS")
+		expect(prompt).not.toContain("Connected MCP Servers")
+		expect(prompt).not.toContain("Creating an MCP Server")
 	})
 
 	it("should handle different browser viewport sizes", async () => {
@@ -691,8 +740,18 @@ describe("addCustomInstructions", () => {
 			true, // enableMcpServerCreation
 		)
 
+		// Verify server creation info is included
 		expect(prompt).toContain("Creating an MCP Server")
-		expect(prompt).toMatchSnapshot()
+		expect(prompt).toContain("MCP Server Types and Configuration")
+
+		// Verify configuration examples are included
+		expect(prompt).toContain("Local (Stdio) Server Configuration")
+		expect(prompt).toContain("Remote (SSE) Server Configuration")
+		expect(prompt).toContain("Common configuration options for both types")
+
+		// Verify example server info is included
+		expect(prompt).toContain("Example Local MCP Server")
+		expect(prompt).toContain("create-typescript-server")
 	})
 
 	it("should exclude MCP server creation info when disabled", async () => {
@@ -716,12 +775,23 @@ describe("addCustomInstructions", () => {
 		)
 
 		expect(prompt).not.toContain("Creating an MCP Server")
-		expect(prompt).toMatchSnapshot()
+		expect(prompt).not.toContain("MCP Server Types and Configuration")
+		expect(prompt).toContain("MCP SERVERS")
+		expect(prompt).toContain("Connected MCP Servers")
 	})
 
 	it("should prioritize mode-specific rules for code mode", async () => {
 		const instructions = await addCustomInstructions("", "", "/test/path", defaultModeSlug)
-		expect(instructions).toMatchSnapshot()
+		const rulesSection = instructions.split("\n\n").find((section) => section.startsWith("Rules:"))
+		expect(rulesSection).toBeDefined()
+
+		// Get the rules as separate lines and filter for header lines only
+		const ruleLines = rulesSection?.split("\n").filter((line) => line.startsWith("#")) ?? []
+
+		// Verify we have both rule headers
+		expect(ruleLines).toHaveLength(2)
+		expect(ruleLines[0]).toContain(`Rules from .clinerules-${defaultModeSlug}`)
+		expect(ruleLines[1]).toContain("Rules from .clinerules")
 	})
 
 	it("should prioritize mode-specific rules for ask mode", async () => {

Some files were not shown because too many files changed in this diff