source dump of claude code
at main 65 lines 1.8 kB view raw
1import type { ContentBlockParam } from '@anthropic-ai/sdk/resources/messages.js' 2import type { Command } from '../commands.js' 3import type { ToolUseContext } from '../Tool.js' 4 5type Options = { 6 name: string 7 description: string 8 progressMessage: string 9 pluginName: string 10 pluginCommand: string 11 /** 12 * The prompt to use while the marketplace is private. 13 * External users will get this prompt. Once the marketplace is public, 14 * this parameter and the fallback logic can be removed. 15 */ 16 getPromptWhileMarketplaceIsPrivate: ( 17 args: string, 18 context: ToolUseContext, 19 ) => Promise<ContentBlockParam[]> 20} 21 22export function createMovedToPluginCommand({ 23 name, 24 description, 25 progressMessage, 26 pluginName, 27 pluginCommand, 28 getPromptWhileMarketplaceIsPrivate, 29}: Options): Command { 30 return { 31 type: 'prompt', 32 name, 33 description, 34 progressMessage, 35 contentLength: 0, // Dynamic content 36 userFacingName() { 37 return name 38 }, 39 source: 'builtin', 40 async getPromptForCommand( 41 args: string, 42 context: ToolUseContext, 43 ): Promise<ContentBlockParam[]> { 44 if (process.env.USER_TYPE === 'ant') { 45 return [ 46 { 47 type: 'text', 48 text: `This command has been moved to a plugin. Tell the user: 49 501. To install the plugin, run: 51 claude plugin install ${pluginName}@claude-code-marketplace 52 532. After installation, use /${pluginName}:${pluginCommand} to run this command 54 553. For more information, see: https://github.com/anthropics/claude-code-marketplace/blob/main/${pluginName}/README.md 56 57Do not attempt to run the command. Simply inform the user about the plugin installation.`, 58 }, 59 ] 60 } 61 62 return getPromptWhileMarketplaceIsPrivate(args, context) 63 }, 64 } 65}