@teambit/cli-mcp-server 0.0.27 → 0.0.29

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.
@@ -1 +1 @@
1
- {"version":3,"names":["_chai","data","require","_index","_stdio","_workspaceTesting","_componentTesting","_harmonyTesting","_fsExtra","_interopRequireDefault","_path","_cliMcpServer","e","__esModule","default","describe","timeout","workspaceData","mcpClient","workspacePath","before","mockWorkspace","mockComponents","after","destroyWorkspace","beforeEach","transport","StdioClientTransport","command","args","cwd","Client","name","version","capabilities","connect","afterEach","close","it","response","listTools","expect","tools","to","be","an","length","greaterThan","toolNames","map","tool","include","consumerProjectClient","not","have","lengthOf","result","callTool","arguments","queryStr","property","content","includeStatus","includeList","JSON","parse","text","firstComponentId","componentName","includeSchema","a","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeSettingsPath","path","join","settingsExists","fs","pathExists","true","settings","readJson","mcp","servers","deep","equal","consumerProject","includeAdditional","cursorConfigPath","configExists","config","mcpServers","bit","type","windsurfConfigPath","rooConfigPath","ensureDir","dirname","writeJson"],"sources":["cli-mcp-server.spec.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { expect } from 'chai';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockComponents } from '@teambit/component.testing.mock-components';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\ndescribe('CliMcpServer Integration Tests', function () {\n this.timeout(30000); // Increased timeout for MCP server operations\n\n let workspaceData: WorkspaceData;\n let mcpClient: Client;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n beforeEach(async () => {\n // Create MCP client and connect directly to the MCP server command\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start'],\n cwd: workspacePath,\n });\n\n mcpClient = new Client(\n {\n name: 'test-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await mcpClient.connect(transport);\n });\n\n afterEach(async () => {\n // Clean up MCP client\n if (mcpClient) {\n await mcpClient.close();\n }\n });\n\n describe('MCP Server Protocol', () => {\n it('should list available tools', async () => {\n const response = await mcpClient.listTools();\n\n expect(response.tools).to.be.an('array');\n expect(response.tools.length).to.be.greaterThan(0);\n\n // Check for essential MCP tools\n const toolNames = response.tools.map((tool) => tool.name);\n expect(toolNames).to.include('bit_workspace_info');\n expect(toolNames).to.include('bit_component_details');\n expect(toolNames).to.include('bit_commands_list');\n expect(toolNames).to.include('bit_query');\n expect(toolNames).to.include('bit_execute');\n });\n });\n\n describe('Consumer Project Mode', () => {\n let consumerProjectClient: Client;\n\n beforeEach(async () => {\n // Create MCP client for consumer project mode\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start', '--consumer-project'],\n cwd: workspacePath,\n });\n\n consumerProjectClient = new Client(\n {\n name: 'test-consumer-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await consumerProjectClient.connect(transport);\n });\n\n afterEach(async () => {\n if (consumerProjectClient) {\n await consumerProjectClient.close();\n }\n });\n\n it('should only enable bit_remote_search and bit_remote_component_details tools', async () => {\n const response = await consumerProjectClient.listTools();\n\n expect(response.tools).to.be.an('array');\n\n const toolNames = response.tools.map((tool) => tool.name);\n\n // Should include only these two tools\n expect(toolNames).to.include('bit_remote_search');\n expect(toolNames).to.include('bit_remote_component_details');\n\n // Should NOT include these tools that are available in regular mode\n expect(toolNames).to.not.include('bit_workspace_info');\n expect(toolNames).to.not.include('bit_component_details');\n expect(toolNames).to.not.include('bit_commands_list');\n expect(toolNames).to.not.include('bit_command_help');\n expect(toolNames).to.not.include('bit_query');\n expect(toolNames).to.not.include('bit_execute');\n\n // Should NOT include the old separate tools\n expect(toolNames).to.not.include('bit_show');\n expect(toolNames).to.not.include('bit_schema');\n\n // Should have exactly 2 tools\n expect(toolNames).to.have.lengthOf(2);\n });\n\n it('should work with bit_remote_search tool', async () => {\n const result = (await consumerProjectClient.callTool({\n name: 'bit_remote_search',\n arguments: {\n queryStr: 'button',\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n });\n });\n\n describe('bit_workspace_info tool', () => {\n it('should get workspace information', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n includeStatus: true,\n includeList: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n expect(content).to.have.property('list');\n });\n\n it('should handle workspace info without optional parameters', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for an existing component', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('id');\n expect(content).to.have.property('env');\n });\n\n it('should get component details with schema', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('id');\n expect(content).to.have.property('publicAPI');\n });\n\n it('should handle non-existent component gracefully', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: 'non-existent/component',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information or component details\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('bit_commands_list tool', () => {\n it('should get basic commands list', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {},\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n\n // Check command structure\n const firstCommand = content.commands[0];\n expect(firstCommand).to.have.property('name');\n expect(firstCommand).to.have.property('description');\n });\n\n it('should get commands info with extended description', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {\n extendedDescription: true,\n internal: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n });\n });\n\n describe('bit_command_help tool', () => {\n it('should get help for a main command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'status');\n expect(content).to.have.property('description');\n expect(content).to.have.property('options');\n });\n\n it('should get help for lane switch subcommand (private command)', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'switch',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane switch');\n expect(content).to.have.property('description');\n expect(content.description).to.include('switch to the specified lane');\n expect(content).to.have.property('arguments');\n expect(content.arguments).to.be.an('array');\n expect(content.arguments[0]).to.have.property('name', 'lane');\n expect(content.arguments[0]).to.have.property('description');\n });\n\n it('should get help for a subcommand that exists', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'show',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane show');\n expect(content).to.have.property('description');\n });\n\n it('should return error for non-existent command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: nonexistent');\n });\n\n it('should return error for non-existent subcommand', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: lane nonexistent');\n });\n });\n\n describe('bit_query tool', () => {\n it('should execute read-only commands', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return command output\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n\n it('should handle commands with arguments and flags', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'list',\n args: [],\n flags: {\n json: true,\n },\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('Error Handling', () => {\n it('should handle invalid tool calls gracefully', async () => {\n try {\n await mcpClient.callTool({\n name: 'non_existent_tool',\n arguments: {},\n });\n expect.fail('Should have thrown an error for non-existent tool');\n } catch (error) {\n expect(error).to.exist;\n }\n });\n\n it('should handle invalid workspace directory', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: '/non/existent/path',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n});\n\ndescribe('CliMcpServer Direct Aspect Tests', function () {\n this.timeout(30000);\n\n let workspaceData: WorkspaceData;\n let mcpServer: CliMcpServerMain;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n\n // Load the aspect directly\n mcpServer = await loadAspect(CliMcpServerAspect, workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('Setup Editor Methods', () => {\n let setupWorkspaceData: WorkspaceData;\n let setupWorkspacePath: string;\n let setupMcpServer: CliMcpServerMain;\n\n beforeEach(async () => {\n // Create a separate mock workspace for setup testing\n setupWorkspaceData = mockWorkspace();\n setupWorkspacePath = setupWorkspaceData.workspacePath;\n await mockComponents(setupWorkspacePath);\n\n // Load the aspect for this workspace\n setupMcpServer = await loadAspect(CliMcpServerAspect, setupWorkspacePath);\n });\n\n afterEach(async () => {\n // Clean up the setup workspace\n if (setupWorkspaceData) {\n await destroyWorkspace(setupWorkspaceData);\n }\n });\n\n it('should handle unsupported editor gracefully', async () => {\n try {\n await mcpServer.setupEditor('unsupported-editor', {\n isGlobal: false,\n });\n expect.fail('Should have thrown an error for unsupported editor');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Editor \"unsupported-editor\" is not supported yet');\n expect((error as Error).message).to.include('Currently supported: vscode, cursor, windsurf, roo');\n }\n });\n\n it('should setup VS Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the settings.json file was created in the workspace directory\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settingsExists = await fs.pathExists(vscodeSettingsPath);\n expect(settingsExists).to.be.true;\n\n // Verify the content of the settings file\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('mcp');\n expect(settings.mcp).to.have.property('servers');\n expect(settings.mcp.servers).to.have.property('bit-cli');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup VS Code integration with consumer project options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n consumerProject: true,\n includeAdditional: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settings = await fs.readJson(vscodeSettingsPath);\n\n expect(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--include-additional');\n expect(settings.mcp.servers['bit-cli'].args).to.include('status,list');\n });\n\n it('should setup Cursor integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'cursor',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const cursorConfigPath = path.join(setupWorkspacePath, '.cursor', 'mcp.json');\n const configExists = await fs.pathExists(cursorConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(cursorConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup Windsurf integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'windsurf',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const windsurfConfigPath = path.join(setupWorkspacePath, '.windsurf', 'mcp.json');\n const configExists = await fs.pathExists(windsurfConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(windsurfConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup Roo Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const rooConfigPath = path.join(setupWorkspacePath, '.roo', 'mcp.json');\n const configExists = await fs.pathExists(rooConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(rooConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should throw error when trying to setup Roo Code globally', async () => {\n try {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: true,\n },\n setupWorkspacePath\n );\n expect.fail('Should have thrown an error for global Roo Code setup');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Roo Code global configuration is not supported');\n expect((error as Error).message).to.include('VS Code internal storage that cannot be accessed');\n }\n });\n\n it('should merge with existing VS Code settings', async () => {\n // First, create existing settings\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n await fs.ensureDir(path.dirname(vscodeSettingsPath));\n await fs.writeJson(vscodeSettingsPath, {\n 'editor.formatOnSave': true,\n 'typescript.preferences.includePackageJsonAutoImports': 'off',\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing settings are preserved and MCP config is added\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('editor.formatOnSave', true);\n expect(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');\n expect(settings).to.have.property('mcp');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chai","data","require","_index","_stdio","_workspaceTesting","_componentTesting","_harmonyTesting","_fsExtra","_interopRequireDefault","_path","_cliMcpServer","e","__esModule","default","describe","timeout","workspaceData","mcpClient","workspacePath","before","mockWorkspace","mockComponents","after","destroyWorkspace","beforeEach","transport","StdioClientTransport","command","args","cwd","Client","name","version","capabilities","connect","afterEach","close","it","response","listTools","expect","tools","to","be","an","length","greaterThan","toolNames","map","tool","include","consumerProjectClient","not","have","lengthOf","result","callTool","arguments","queryStr","property","content","includeStatus","includeList","JSON","parse","text","firstComponentId","componentName","includeSchema","a","commands","firstCommand","extendedDescription","internal","subcommand","description","flags","json","fail","error","exist","mcpServer","loadAspect","CliMcpServerAspect","setupWorkspaceData","setupWorkspacePath","setupMcpServer","setupEditor","isGlobal","message","vscodeSettingsPath","path","join","settingsExists","fs","pathExists","true","settings","readJson","mcp","servers","deep","equal","consumerProject","includeAdditional","cursorConfigPath","configExists","config","mcpServers","bit","type","windsurfConfigPath","rooConfigPath","ensureDir","dirname","writeJson"],"sources":["cli-mcp-server.spec.ts"],"sourcesContent":["/* eslint-disable import/extensions */\n/* eslint-disable import/no-unresolved */\n\nimport { expect } from 'chai';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport { mockWorkspace, destroyWorkspace, WorkspaceData } from '@teambit/workspace.testing.mock-workspace';\nimport { mockComponents } from '@teambit/component.testing.mock-components';\nimport { loadAspect } from '@teambit/harmony.testing.load-aspect';\nimport fs from 'fs-extra';\nimport path from 'path';\n\nimport { CliMcpServerAspect } from './cli-mcp-server.aspect';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\ndescribe('CliMcpServer Integration Tests', function () {\n this.timeout(30000); // Increased timeout for MCP server operations\n\n let workspaceData: WorkspaceData;\n let mcpClient: Client;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n beforeEach(async () => {\n // Create MCP client and connect directly to the MCP server command\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start'],\n cwd: workspacePath,\n });\n\n mcpClient = new Client(\n {\n name: 'test-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await mcpClient.connect(transport);\n });\n\n afterEach(async () => {\n // Clean up MCP client\n if (mcpClient) {\n await mcpClient.close();\n }\n });\n\n describe('MCP Server Protocol', () => {\n it('should list available tools', async () => {\n const response = await mcpClient.listTools();\n\n expect(response.tools).to.be.an('array');\n expect(response.tools.length).to.be.greaterThan(0);\n\n // Check for essential MCP tools\n const toolNames = response.tools.map((tool) => tool.name);\n expect(toolNames).to.include('bit_workspace_info');\n expect(toolNames).to.include('bit_component_details');\n expect(toolNames).to.include('bit_commands_list');\n expect(toolNames).to.include('bit_query');\n expect(toolNames).to.include('bit_execute');\n });\n });\n\n describe('Consumer Project Mode', () => {\n let consumerProjectClient: Client;\n\n beforeEach(async () => {\n // Create MCP client for consumer project mode\n const transport = new StdioClientTransport({\n command: 'bit',\n args: ['mcp-server', 'start', '--consumer-project'],\n cwd: workspacePath,\n });\n\n consumerProjectClient = new Client(\n {\n name: 'test-consumer-client',\n version: '1.0.0',\n },\n {\n capabilities: {},\n }\n );\n\n await consumerProjectClient.connect(transport);\n });\n\n afterEach(async () => {\n if (consumerProjectClient) {\n await consumerProjectClient.close();\n }\n });\n\n it('should only enable bit_remote_search and bit_remote_component_details tools', async () => {\n const response = await consumerProjectClient.listTools();\n\n expect(response.tools).to.be.an('array');\n\n const toolNames = response.tools.map((tool) => tool.name);\n\n // Should include only these two tools\n expect(toolNames).to.include('bit_remote_search');\n expect(toolNames).to.include('bit_remote_component_details');\n\n // Should NOT include these tools that are available in regular mode\n expect(toolNames).to.not.include('bit_workspace_info');\n expect(toolNames).to.not.include('bit_component_details');\n expect(toolNames).to.not.include('bit_commands_list');\n expect(toolNames).to.not.include('bit_command_help');\n expect(toolNames).to.not.include('bit_query');\n expect(toolNames).to.not.include('bit_execute');\n\n // Should NOT include the old separate tools\n expect(toolNames).to.not.include('bit_show');\n expect(toolNames).to.not.include('bit_schema');\n\n // Should have exactly 2 tools\n expect(toolNames).to.have.lengthOf(2);\n });\n\n it('should work with bit_remote_search tool', async () => {\n const result = (await consumerProjectClient.callTool({\n name: 'bit_remote_search',\n arguments: {\n queryStr: 'button',\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n });\n });\n\n describe('bit_workspace_info tool', () => {\n it('should get workspace information', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n includeStatus: true,\n includeList: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n expect(content).to.have.property('list');\n });\n\n it('should handle workspace info without optional parameters', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: workspacePath,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('status');\n });\n });\n\n describe('bit_component_details tool', () => {\n it('should get component details for an existing component', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('id');\n expect(content).to.have.property('env');\n });\n\n it('should get component details with schema', async () => {\n const firstComponentId = 'comp1';\n\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: firstComponentId,\n includeSchema: true,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('id');\n expect(content).to.have.property('publicAPI');\n });\n\n it('should handle non-existent component gracefully', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_component_details',\n arguments: {\n cwd: workspacePath,\n componentName: 'non-existent/component',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information or component details\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('bit_commands_list tool', () => {\n it('should get basic commands list', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {},\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n\n // Check command structure\n const firstCommand = content.commands[0];\n expect(firstCommand).to.have.property('name');\n expect(firstCommand).to.have.property('description');\n });\n\n it('should get commands info with extended description', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_commands_list',\n arguments: {\n extendedDescription: true,\n internal: false,\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('commands');\n expect(content.commands).to.be.an('array');\n expect(content.commands.length).to.be.greaterThan(0);\n });\n });\n\n describe('bit_command_help tool', () => {\n it('should get help for a main command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'status');\n expect(content).to.have.property('description');\n expect(content).to.have.property('options');\n });\n\n it('should get help for lane switch subcommand (private command)', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'switch',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane switch');\n expect(content).to.have.property('description');\n expect(content.description).to.include('switch to the specified lane');\n expect(content).to.have.property('arguments');\n expect(content.arguments).to.be.an('array');\n expect(content.arguments[0]).to.have.property('name', 'lane');\n expect(content.arguments[0]).to.have.property('description');\n });\n\n it('should get help for a subcommand that exists', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'show',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = JSON.parse((result.content[0] as any).text);\n expect(content).to.have.property('name', 'lane show');\n expect(content).to.have.property('description');\n });\n\n it('should return error for non-existent command', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: nonexistent');\n });\n\n it('should return error for non-existent subcommand', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_command_help',\n arguments: {\n command: 'lane',\n subcommand: 'nonexistent',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.include('Command not found: lane nonexistent');\n });\n });\n\n describe('bit_query tool', () => {\n it('should execute read-only commands', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'status',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return command output\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n\n it('should handle commands with arguments and flags', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_query',\n arguments: {\n cwd: workspacePath,\n command: 'list',\n args: [],\n flags: {\n json: true,\n },\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n\n describe('Error Handling', () => {\n it('should handle invalid tool calls gracefully', async () => {\n try {\n await mcpClient.callTool({\n name: 'non_existent_tool',\n arguments: {},\n });\n expect.fail('Should have thrown an error for non-existent tool');\n } catch (error) {\n expect(error).to.exist;\n }\n });\n\n it('should handle invalid workspace directory', async () => {\n const result = (await mcpClient.callTool({\n name: 'bit_workspace_info',\n arguments: {\n cwd: '/non/existent/path',\n },\n })) as CallToolResult;\n\n expect(result).to.have.property('content');\n expect(result.content).to.be.an('array');\n expect(result.content[0]).to.have.property('type', 'text');\n\n // Should return error information\n const content = (result.content[0] as any).text;\n expect(content).to.be.a('string');\n });\n });\n});\n\ndescribe('CliMcpServer Direct Aspect Tests', function () {\n this.timeout(30000);\n\n let workspaceData: WorkspaceData;\n let mcpServer: CliMcpServerMain;\n let workspacePath: string;\n\n before(async () => {\n // Set up mock workspace with components\n workspaceData = mockWorkspace();\n workspacePath = workspaceData.workspacePath;\n await mockComponents(workspacePath);\n\n // Load the aspect directly\n mcpServer = await loadAspect(CliMcpServerAspect, workspacePath);\n });\n\n after(async () => {\n await destroyWorkspace(workspaceData);\n });\n\n describe('Setup Editor Methods', () => {\n let setupWorkspaceData: WorkspaceData;\n let setupWorkspacePath: string;\n let setupMcpServer: CliMcpServerMain;\n\n beforeEach(async () => {\n // Create a separate mock workspace for setup testing\n setupWorkspaceData = mockWorkspace();\n setupWorkspacePath = setupWorkspaceData.workspacePath;\n await mockComponents(setupWorkspacePath);\n\n // Load the aspect for this workspace\n setupMcpServer = await loadAspect(CliMcpServerAspect, setupWorkspacePath);\n });\n\n afterEach(async () => {\n // Clean up the setup workspace\n if (setupWorkspaceData) {\n await destroyWorkspace(setupWorkspaceData);\n }\n });\n\n it('should handle unsupported editor gracefully', async () => {\n try {\n await mcpServer.setupEditor('unsupported-editor', {\n isGlobal: false,\n });\n expect.fail('Should have thrown an error for unsupported editor');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Editor \"unsupported-editor\" is not supported yet');\n expect((error as Error).message).to.include('Currently supported: vscode, cursor, windsurf, roo, cline');\n }\n });\n\n it('should setup VS Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the settings.json file was created in the workspace directory\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settingsExists = await fs.pathExists(vscodeSettingsPath);\n expect(settingsExists).to.be.true;\n\n // Verify the content of the settings file\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('mcp');\n expect(settings.mcp).to.have.property('servers');\n expect(settings.mcp.servers).to.have.property('bit-cli');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup VS Code integration with consumer project options', async () => {\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n consumerProject: true,\n includeAdditional: 'status,list',\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n const settings = await fs.readJson(vscodeSettingsPath);\n\n expect(settings.mcp.servers['bit-cli'].args).to.include('--consumer-project');\n expect(settings.mcp.servers['bit-cli'].args).to.include('--include-additional');\n expect(settings.mcp.servers['bit-cli'].args).to.include('status,list');\n });\n\n it('should setup Cursor integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'cursor',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const cursorConfigPath = path.join(setupWorkspacePath, '.cursor', 'mcp.json');\n const configExists = await fs.pathExists(cursorConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(cursorConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup Windsurf integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'windsurf',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const windsurfConfigPath = path.join(setupWorkspacePath, '.windsurf', 'mcp.json');\n const configExists = await fs.pathExists(windsurfConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(windsurfConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should setup Roo Code integration directly', async () => {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that the mcp.json file was created in the workspace directory\n const rooConfigPath = path.join(setupWorkspacePath, '.roo', 'mcp.json');\n const configExists = await fs.pathExists(rooConfigPath);\n expect(configExists).to.be.true;\n\n // Verify the content of the config file\n const config = await fs.readJson(rooConfigPath);\n expect(config).to.have.property('mcpServers');\n expect(config.mcpServers).to.have.property('bit');\n expect(config.mcpServers.bit).to.deep.equal({\n type: 'stdio',\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n\n it('should throw error when trying to setup Roo Code globally', async () => {\n try {\n await setupMcpServer.setupEditor(\n 'roo',\n {\n isGlobal: true,\n },\n setupWorkspacePath\n );\n expect.fail('Should have thrown an error for global Roo Code setup');\n } catch (error) {\n expect(error).to.exist;\n expect((error as Error).message).to.include('Roo Code global configuration is not supported');\n expect((error as Error).message).to.include('VS Code internal storage that cannot be accessed');\n }\n });\n\n it('should merge with existing VS Code settings', async () => {\n // First, create existing settings\n const vscodeSettingsPath = path.join(setupWorkspacePath, '.vscode', 'settings.json');\n await fs.ensureDir(path.dirname(vscodeSettingsPath));\n await fs.writeJson(vscodeSettingsPath, {\n 'editor.formatOnSave': true,\n 'typescript.preferences.includePackageJsonAutoImports': 'off',\n });\n\n // Run setup\n await setupMcpServer.setupEditor(\n 'vscode',\n {\n isGlobal: false,\n },\n setupWorkspacePath\n );\n\n // Verify that existing settings are preserved and MCP config is added\n const settings = await fs.readJson(vscodeSettingsPath);\n expect(settings).to.have.property('editor.formatOnSave', true);\n expect(settings).to.have.property('typescript.preferences.includePackageJsonAutoImports', 'off');\n expect(settings).to.have.property('mcp');\n expect(settings.mcp.servers['bit-cli']).to.deep.equal({\n command: 'bit',\n args: ['mcp-server', 'start'],\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  ;
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.27/dist/README.docs.mdx';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.mcp_cli-mcp-server@0.0.29/dist/README.docs.mdx';
3
3
 
4
4
  export const compositions = [];
5
5
  export const overview = [overview_0];
package/dist/rules-cmd.js CHANGED
@@ -19,11 +19,11 @@ class McpRulesCmd {
19
19
  constructor(mcpServerMain) {
20
20
  this.mcpServerMain = mcpServerMain;
21
21
  _defineProperty(this, "name", 'rules [editor]');
22
- _defineProperty(this, "description", 'Write Bit MCP rules/instructions file for VS Code, Cursor, or print to screen');
23
- _defineProperty(this, "extendedDescription", 'Creates or updates rules/instructions markdown files to provide AI assistants with guidance on using Bit MCP server. Currently supports VS Code and Cursor. Use --print to display content on screen. Use --consumer-project for non-Bit workspaces that only consume components as packages.');
22
+ _defineProperty(this, "description", 'Write Bit MCP rules/instructions file for VS Code, Cursor, Roo Code, Cline, or print to screen');
23
+ _defineProperty(this, "extendedDescription", 'Creates or updates rules/instructions markdown files to provide AI assistants with guidance on using Bit MCP server. Currently supports VS Code, Cursor, Roo Code, and Cline. Use --print to display content on screen. Use --consumer-project for non-Bit workspaces that only consume components as packages.');
24
24
  _defineProperty(this, "arguments", [{
25
25
  name: 'editor',
26
- description: 'Editor to write rules for (default: vscode). Available: vscode, cursor'
26
+ description: 'Editor to write rules for (default: vscode). Available: vscode, cursor, roo, cline'
27
27
  }]);
28
28
  _defineProperty(this, "options", [['g', 'global', 'Write rules to global configuration (default: workspace-specific)'], ['p', 'print', 'Print rules content to screen instead of writing to file'], ['', 'consumer-project', 'Generate rules for consumer projects that only use Bit components as packages']]);
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","McpRulesCmd","constructor","mcpServerMain","name","description","report","editor","global","isGlobal","print","shouldPrint","consumerProject","toLowerCase","chalk","yellow","rulesContent","getRulesContent","writeRulesFile","scope","editorName","getEditorDisplayName","green","error","red","message","exports"],"sources":["rules-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\nexport type McpRulesCmdOptions = {\n global?: boolean;\n print?: boolean;\n consumerProject?: boolean;\n};\n\nexport class McpRulesCmd implements Command {\n name = 'rules [editor]';\n description = 'Write Bit MCP rules/instructions file for VS Code, Cursor, or print to screen';\n extendedDescription =\n 'Creates or updates rules/instructions markdown files to provide AI assistants with guidance on using Bit MCP server. Currently supports VS Code and Cursor. Use --print to display content on screen. Use --consumer-project for non-Bit workspaces that only consume components as packages.';\n arguments = [\n {\n name: 'editor',\n description: 'Editor to write rules for (default: vscode). Available: vscode, cursor',\n },\n ];\n options = [\n ['g', 'global', 'Write rules to global configuration (default: workspace-specific)'],\n ['p', 'print', 'Print rules content to screen instead of writing to file'],\n ['', 'consumer-project', 'Generate rules for consumer projects that only use Bit components as packages'],\n ] as CommandOptions;\n\n constructor(private mcpServerMain: CliMcpServerMain) {}\n\n async report(\n [editor = 'vscode']: [string],\n { global: isGlobal = false, print: shouldPrint = false, consumerProject = false }: McpRulesCmdOptions\n ): Promise<string> {\n try {\n // Handle Windsurf requests by directing to print option\n if (editor.toLowerCase() === 'windsurf') {\n if (!shouldPrint) {\n return chalk.yellow(\n '⚠️ Windsurf uses a single-file configuration (.windsurfrules) that is complex to manage automatically.\\n' +\n 'Please use --print flag to get the rules content and manually add it to your .windsurfrules file.'\n );\n }\n // If print is requested, we'll show the content below\n }\n\n if (shouldPrint) {\n const rulesContent = await this.mcpServerMain.getRulesContent(consumerProject);\n return rulesContent;\n }\n\n await this.mcpServerMain.writeRulesFile(editor, {\n isGlobal,\n consumerProject,\n });\n\n const scope = isGlobal ? 'global' : 'workspace';\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.green(`✓ Successfully wrote ${editorName} Bit MCP rules file (${scope})`);\n } catch (error) {\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.red(`Error writing ${editorName} rules file: ${(error as Error).message}`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","McpRulesCmd","constructor","mcpServerMain","name","description","report","editor","global","isGlobal","print","shouldPrint","consumerProject","toLowerCase","chalk","yellow","rulesContent","getRulesContent","writeRulesFile","scope","editorName","getEditorDisplayName","green","error","red","message","exports"],"sources":["rules-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\nexport type McpRulesCmdOptions = {\n global?: boolean;\n print?: boolean;\n consumerProject?: boolean;\n};\n\nexport class McpRulesCmd implements Command {\n name = 'rules [editor]';\n description = 'Write Bit MCP rules/instructions file for VS Code, Cursor, Roo Code, Cline, or print to screen';\n extendedDescription =\n 'Creates or updates rules/instructions markdown files to provide AI assistants with guidance on using Bit MCP server. Currently supports VS Code, Cursor, Roo Code, and Cline. Use --print to display content on screen. Use --consumer-project for non-Bit workspaces that only consume components as packages.';\n arguments = [\n {\n name: 'editor',\n description: 'Editor to write rules for (default: vscode). Available: vscode, cursor, roo, cline',\n },\n ];\n options = [\n ['g', 'global', 'Write rules to global configuration (default: workspace-specific)'],\n ['p', 'print', 'Print rules content to screen instead of writing to file'],\n ['', 'consumer-project', 'Generate rules for consumer projects that only use Bit components as packages'],\n ] as CommandOptions;\n\n constructor(private mcpServerMain: CliMcpServerMain) {}\n\n async report(\n [editor = 'vscode']: [string],\n { global: isGlobal = false, print: shouldPrint = false, consumerProject = false }: McpRulesCmdOptions\n ): Promise<string> {\n try {\n // Handle Windsurf requests by directing to print option\n if (editor.toLowerCase() === 'windsurf') {\n if (!shouldPrint) {\n return chalk.yellow(\n '⚠️ Windsurf uses a single-file configuration (.windsurfrules) that is complex to manage automatically.\\n' +\n 'Please use --print flag to get the rules content and manually add it to your .windsurfrules file.'\n );\n }\n // If print is requested, we'll show the content below\n }\n\n if (shouldPrint) {\n const rulesContent = await this.mcpServerMain.getRulesContent(consumerProject);\n return rulesContent;\n }\n\n await this.mcpServerMain.writeRulesFile(editor, {\n isGlobal,\n consumerProject,\n });\n\n const scope = isGlobal ? 'global' : 'workspace';\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.green(`✓ Successfully wrote ${editorName} Bit MCP rules file (${scope})`);\n } catch (error) {\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.red(`Error writing ${editorName} rules file: ${(error as Error).message}`);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/setup-cmd.js CHANGED
@@ -19,11 +19,11 @@ class McpSetupCmd {
19
19
  constructor(mcpServerMain) {
20
20
  this.mcpServerMain = mcpServerMain;
21
21
  _defineProperty(this, "name", 'setup [editor]');
22
- _defineProperty(this, "description", 'Setup MCP integration with VS Code, Cursor, Windsurf, Roo Code, or other editors');
23
- _defineProperty(this, "extendedDescription", 'Creates or updates configuration files to integrate Bit MCP server with supported editors. Currently supports VS Code, Cursor, Windsurf, and Roo Code.');
22
+ _defineProperty(this, "description", 'Setup MCP integration with VS Code, Cursor, Windsurf, Roo Code, Cline, or other editors');
23
+ _defineProperty(this, "extendedDescription", 'Creates or updates configuration files to integrate Bit MCP server with supported editors. Currently supports VS Code, Cursor, Windsurf, Roo Code, and Cline.');
24
24
  _defineProperty(this, "arguments", [{
25
25
  name: 'editor',
26
- description: 'Editor to setup (default: vscode). Available: vscode, cursor, windsurf, roo'
26
+ description: 'Editor to setup (default: vscode). Available: vscode, cursor, windsurf, roo, cline'
27
27
  }]);
28
28
  _defineProperty(this, "options", [['', 'consumer-project', 'Configure for non-Bit workspaces that only consume Bit component packages'], ['', 'include-additional <commands>', 'Add specific commands to the default MCP tools set. Use comma-separated list in quotes'], ['g', 'global', 'Setup global configuration (default: workspace-specific)']]);
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","McpSetupCmd","constructor","mcpServerMain","name","description","report","editor","consumerProject","includeAdditional","global","isGlobal","setupEditor","scope","editorName","getEditorDisplayName","configPath","getEditorConfigPath","chalk","green","cyan","error","red","message","exports"],"sources":["setup-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\nexport type McpSetupCmdOptions = {\n consumerProject?: boolean;\n includeAdditional?: string;\n global?: boolean;\n};\n\nexport class McpSetupCmd implements Command {\n name = 'setup [editor]';\n description = 'Setup MCP integration with VS Code, Cursor, Windsurf, Roo Code, or other editors';\n extendedDescription =\n 'Creates or updates configuration files to integrate Bit MCP server with supported editors. Currently supports VS Code, Cursor, Windsurf, and Roo Code.';\n arguments = [\n {\n name: 'editor',\n description: 'Editor to setup (default: vscode). Available: vscode, cursor, windsurf, roo',\n },\n ];\n options = [\n ['', 'consumer-project', 'Configure for non-Bit workspaces that only consume Bit component packages'],\n [\n '',\n 'include-additional <commands>',\n 'Add specific commands to the default MCP tools set. Use comma-separated list in quotes',\n ],\n ['g', 'global', 'Setup global configuration (default: workspace-specific)'],\n ] as CommandOptions;\n\n constructor(private mcpServerMain: CliMcpServerMain) {}\n\n async report(\n [editor = 'vscode']: [string],\n { consumerProject, includeAdditional, global: isGlobal = false }: McpSetupCmdOptions\n ): Promise<string> {\n try {\n await this.mcpServerMain.setupEditor(editor, {\n consumerProject,\n includeAdditional,\n isGlobal,\n });\n\n const scope = isGlobal ? 'global' : 'workspace';\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n\n // Get the config file path based on the editor type\n const configPath = this.mcpServerMain.getEditorConfigPath(editor, isGlobal);\n\n return chalk.green(\n `✓ Successfully configured ${editorName} MCP integration (${scope})\\n` +\n ` Configuration written to: ${chalk.cyan(configPath)}`\n );\n } catch (error) {\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.red(`Error setting up ${editorName} integration: ${(error as Error).message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AASnB,MAAMgB,WAAW,CAAoB;EAqB1CC,WAAWA,CAASC,aAA+B,EAAE;IAAA,KAAjCA,aAA+B,GAA/BA,aAA+B;IAAApB,eAAA,eApB5C,gBAAgB;IAAAA,eAAA,sBACT,kFAAkF;IAAAA,eAAA,8BAE9F,wJAAwJ;IAAAA,eAAA,oBAC9I,CACV;MACEqB,IAAI,EAAE,QAAQ;MACdC,WAAW,EAAE;IACf,CAAC,CACF;IAAAtB,eAAA,kBACS,CACR,CAAC,EAAE,EAAE,kBAAkB,EAAE,2EAA2E,CAAC,EACrG,CACE,EAAE,EACF,+BAA+B,EAC/B,wFAAwF,CACzF,EACD,CAAC,GAAG,EAAE,QAAQ,EAAE,0DAA0D,CAAC,CAC5E;EAEqD;EAEtD,MAAMuB,MAAMA,CACV,CAACC,MAAM,GAAG,QAAQ,CAAW,EAC7B;IAAEC,eAAe;IAAEC,iBAAiB;IAAEC,MAAM,EAAEC,QAAQ,GAAG;EAA0B,CAAC,EACnE;IACjB,IAAI;MACF,MAAM,IAAI,CAACR,aAAa,CAACS,WAAW,CAACL,MAAM,EAAE;QAC3CC,eAAe;QACfC,iBAAiB;QACjBE;MACF,CAAC,CAAC;MAEF,MAAME,KAAK,GAAGF,QAAQ,GAAG,QAAQ,GAAG,WAAW;MAC/C,MAAMG,UAAU,GAAG,IAAI,CAACX,aAAa,CAACY,oBAAoB,CAACR,MAAM,CAAC;;MAElE;MACA,MAAMS,UAAU,GAAG,IAAI,CAACb,aAAa,CAACc,mBAAmB,CAACV,MAAM,EAAEI,QAAQ,CAAC;MAE3E,OAAOO,gBAAK,CAACC,KAAK,CAChB,6BAA6BL,UAAU,qBAAqBD,KAAK,KAAK,GACpE,+BAA+BK,gBAAK,CAACE,IAAI,CAACJ,UAAU,CAAC,EACzD,CAAC;IACH,CAAC,CAAC,OAAOK,KAAK,EAAE;MACd,MAAMP,UAAU,GAAG,IAAI,CAACX,aAAa,CAACY,oBAAoB,CAACR,MAAM,CAAC;MAClE,OAAOW,gBAAK,CAACI,GAAG,CAAC,oBAAoBR,UAAU,iBAAkBO,KAAK,CAAWE,OAAO,EAAE,CAAC;IAC7F;EACF;AACF;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","McpSetupCmd","constructor","mcpServerMain","name","description","report","editor","consumerProject","includeAdditional","global","isGlobal","setupEditor","scope","editorName","getEditorDisplayName","configPath","getEditorConfigPath","chalk","green","cyan","error","red","message","exports"],"sources":["setup-cmd.ts"],"sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { CliMcpServerMain } from './cli-mcp-server.main.runtime';\n\nexport type McpSetupCmdOptions = {\n consumerProject?: boolean;\n includeAdditional?: string;\n global?: boolean;\n};\n\nexport class McpSetupCmd implements Command {\n name = 'setup [editor]';\n description = 'Setup MCP integration with VS Code, Cursor, Windsurf, Roo Code, Cline, or other editors';\n extendedDescription =\n 'Creates or updates configuration files to integrate Bit MCP server with supported editors. Currently supports VS Code, Cursor, Windsurf, Roo Code, and Cline.';\n arguments = [\n {\n name: 'editor',\n description: 'Editor to setup (default: vscode). Available: vscode, cursor, windsurf, roo, cline',\n },\n ];\n options = [\n ['', 'consumer-project', 'Configure for non-Bit workspaces that only consume Bit component packages'],\n [\n '',\n 'include-additional <commands>',\n 'Add specific commands to the default MCP tools set. Use comma-separated list in quotes',\n ],\n ['g', 'global', 'Setup global configuration (default: workspace-specific)'],\n ] as CommandOptions;\n\n constructor(private mcpServerMain: CliMcpServerMain) {}\n\n async report(\n [editor = 'vscode']: [string],\n { consumerProject, includeAdditional, global: isGlobal = false }: McpSetupCmdOptions\n ): Promise<string> {\n try {\n await this.mcpServerMain.setupEditor(editor, {\n consumerProject,\n includeAdditional,\n isGlobal,\n });\n\n const scope = isGlobal ? 'global' : 'workspace';\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n\n // Get the config file path based on the editor type\n const configPath = this.mcpServerMain.getEditorConfigPath(editor, isGlobal);\n\n return chalk.green(\n `✓ Successfully configured ${editorName} MCP integration (${scope})\\n` +\n ` Configuration written to: ${chalk.cyan(configPath)}`\n );\n } catch (error) {\n const editorName = this.mcpServerMain.getEditorDisplayName(editor);\n return chalk.red(`Error setting up ${editorName} integration: ${(error as Error).message}`);\n }\n }\n}\n"],"mappings":";;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AASnB,MAAMgB,WAAW,CAAoB;EAqB1CC,WAAWA,CAASC,aAA+B,EAAE;IAAA,KAAjCA,aAA+B,GAA/BA,aAA+B;IAAApB,eAAA,eApB5C,gBAAgB;IAAAA,eAAA,sBACT,yFAAyF;IAAAA,eAAA,8BAErG,+JAA+J;IAAAA,eAAA,oBACrJ,CACV;MACEqB,IAAI,EAAE,QAAQ;MACdC,WAAW,EAAE;IACf,CAAC,CACF;IAAAtB,eAAA,kBACS,CACR,CAAC,EAAE,EAAE,kBAAkB,EAAE,2EAA2E,CAAC,EACrG,CACE,EAAE,EACF,+BAA+B,EAC/B,wFAAwF,CACzF,EACD,CAAC,GAAG,EAAE,QAAQ,EAAE,0DAA0D,CAAC,CAC5E;EAEqD;EAEtD,MAAMuB,MAAMA,CACV,CAACC,MAAM,GAAG,QAAQ,CAAW,EAC7B;IAAEC,eAAe;IAAEC,iBAAiB;IAAEC,MAAM,EAAEC,QAAQ,GAAG;EAA0B,CAAC,EACnE;IACjB,IAAI;MACF,MAAM,IAAI,CAACR,aAAa,CAACS,WAAW,CAACL,MAAM,EAAE;QAC3CC,eAAe;QACfC,iBAAiB;QACjBE;MACF,CAAC,CAAC;MAEF,MAAME,KAAK,GAAGF,QAAQ,GAAG,QAAQ,GAAG,WAAW;MAC/C,MAAMG,UAAU,GAAG,IAAI,CAACX,aAAa,CAACY,oBAAoB,CAACR,MAAM,CAAC;;MAElE;MACA,MAAMS,UAAU,GAAG,IAAI,CAACb,aAAa,CAACc,mBAAmB,CAACV,MAAM,EAAEI,QAAQ,CAAC;MAE3E,OAAOO,gBAAK,CAACC,KAAK,CAChB,6BAA6BL,UAAU,qBAAqBD,KAAK,KAAK,GACpE,+BAA+BK,gBAAK,CAACE,IAAI,CAACJ,UAAU,CAAC,EACzD,CAAC;IACH,CAAC,CAAC,OAAOK,KAAK,EAAE;MACd,MAAMP,UAAU,GAAG,IAAI,CAACX,aAAa,CAACY,oBAAoB,CAACR,MAAM,CAAC;MAClE,OAAOW,gBAAK,CAACI,GAAG,CAAC,oBAAoBR,UAAU,iBAAkBO,KAAK,CAAWE,OAAO,EAAE,CAAC;IAC7F;EACF;AACF;AAACC,OAAA,CAAAvB,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -63,6 +63,10 @@ export declare class McpSetupUtils {
63
63
  * Get Cursor prompts path based on global/workspace scope
64
64
  */
65
65
  static getCursorPromptsPath(isGlobal: boolean, workspaceDir?: string): string;
66
+ /**
67
+ * Get Roo Code prompts path based on global/workspace scope
68
+ */
69
+ static getRooCodePromptsPath(isGlobal: boolean, workspaceDir?: string): string;
66
70
  /**
67
71
  * Get default Bit MCP rules content from template file
68
72
  */
@@ -75,6 +79,14 @@ export declare class McpSetupUtils {
75
79
  * Write Bit MCP rules file for Cursor
76
80
  */
77
81
  static writeCursorRules(options: RulesOptions): Promise<void>;
82
+ /**
83
+ * Write Bit MCP rules file for Roo Code
84
+ */
85
+ static writeRooCodeRules(options: RulesOptions): Promise<void>;
86
+ /**
87
+ * Write Bit MCP rules file for Cline
88
+ */
89
+ static writeClineRules(options: RulesOptions): Promise<void>;
78
90
  /**
79
91
  * Get Roo Code mcp.json path based on global/workspace scope
80
92
  */
@@ -83,4 +95,8 @@ export declare class McpSetupUtils {
83
95
  * Setup Roo Code MCP integration
84
96
  */
85
97
  static setupRooCode(options: SetupOptions): Promise<void>;
98
+ /**
99
+ * Get Cline prompts path based on global/workspace scope
100
+ */
101
+ static getClinePromptsPath(isGlobal: boolean, workspaceDir?: string): string;
86
102
  }
@@ -84,6 +84,8 @@ class McpSetupUtils {
84
84
  return 'Windsurf';
85
85
  case 'roo':
86
86
  return 'Roo Code';
87
+ case 'cline':
88
+ return 'Cline';
87
89
  default:
88
90
  return editor;
89
91
  }
@@ -284,6 +286,20 @@ class McpSetupUtils {
284
286
  }
285
287
  }
286
288
 
289
+ /**
290
+ * Get Roo Code prompts path based on global/workspace scope
291
+ */
292
+ static getRooCodePromptsPath(isGlobal, workspaceDir) {
293
+ if (isGlobal) {
294
+ // Global Roo Code rules
295
+ return _path().default.join((0, _os().homedir)(), '.roo', 'rules', 'bit.instructions.md');
296
+ } else {
297
+ // Workspace-specific rules
298
+ const targetDir = workspaceDir || process.cwd();
299
+ return _path().default.join(targetDir, '.roo', 'rules', 'bit.instructions.md');
300
+ }
301
+ }
302
+
287
303
  /**
288
304
  * Get default Bit MCP rules content from template file
289
305
  */
@@ -335,6 +351,48 @@ class McpSetupUtils {
335
351
  await _fsExtra().default.writeFile(promptsPath, rulesContent);
336
352
  }
337
353
 
354
+ /**
355
+ * Write Bit MCP rules file for Roo Code
356
+ */
357
+ static async writeRooCodeRules(options) {
358
+ const {
359
+ isGlobal,
360
+ workspaceDir,
361
+ consumerProject = false
362
+ } = options;
363
+
364
+ // Determine prompts file path
365
+ const promptsPath = this.getRooCodePromptsPath(isGlobal, workspaceDir);
366
+
367
+ // Ensure directory exists
368
+ await _fsExtra().default.ensureDir(_path().default.dirname(promptsPath));
369
+
370
+ // Write rules content
371
+ const rulesContent = await this.getDefaultRulesContent(consumerProject);
372
+ await _fsExtra().default.writeFile(promptsPath, rulesContent);
373
+ }
374
+
375
+ /**
376
+ * Write Bit MCP rules file for Cline
377
+ */
378
+ static async writeClineRules(options) {
379
+ const {
380
+ isGlobal,
381
+ workspaceDir,
382
+ consumerProject = false
383
+ } = options;
384
+
385
+ // Determine prompts file path
386
+ const promptsPath = this.getClinePromptsPath(isGlobal, workspaceDir);
387
+
388
+ // Ensure directory exists
389
+ await _fsExtra().default.ensureDir(_path().default.dirname(promptsPath));
390
+
391
+ // Write rules content
392
+ const rulesContent = await this.getDefaultRulesContent(consumerProject);
393
+ await _fsExtra().default.writeFile(promptsPath, rulesContent);
394
+ }
395
+
338
396
  /**
339
397
  * Get Roo Code mcp.json path based on global/workspace scope
340
398
  */
@@ -386,6 +444,25 @@ class McpSetupUtils {
386
444
  // Write updated MCP configuration
387
445
  await _fsExtra().default.writeFile(mcpConfigPath, JSON.stringify(mcpConfig, null, 2));
388
446
  }
447
+
448
+ /**
449
+ * Get Cline prompts path based on global/workspace scope
450
+ */
451
+ static getClinePromptsPath(isGlobal, workspaceDir) {
452
+ if (isGlobal) {
453
+ // Global Cline rules - using Mac path as specified, error for others
454
+ const platform = process.platform;
455
+ if (platform === 'darwin') {
456
+ return _path().default.join((0, _os().homedir)(), 'Documents', 'Cline', 'Rules', 'bit.instructions.md');
457
+ } else {
458
+ throw new Error(`Global Cline rules configuration is not supported on ${platform}. ` + 'The global path is only known for macOS (~/Documents/Cline/Rules/). ' + 'For other operating systems, please use the --print flag to get the rules content ' + 'and add it manually to your global Cline configuration.');
459
+ }
460
+ } else {
461
+ // Workspace-specific rules
462
+ const targetDir = workspaceDir || process.cwd();
463
+ return _path().default.join(targetDir, '.clinerules', 'bit.instructions.md');
464
+ }
465
+ }
389
466
  }
390
467
  exports.McpSetupUtils = McpSetupUtils;
391
468