unicommand 0.0.1
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/dist/index.d.ts +609 -0
- package/dist/index.js +1671 -0
- package/dist/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/command/runtime-metadata.ts","../src/cli/completion.ts","../src/cli/help.ts","../src/cli/program.ts","../src/command/loader.ts","../src/constants.ts","../src/cli/update.ts","../src/package/json.ts","../src/package/metadata.ts","../src/cli/runtime.ts","../src/cli/runner.ts","../src/mcp/router.ts","../src/command/metadata.ts","../src/mcp/constants.ts","../src/mcp/errors.ts","../src/mcp/progress.ts","../src/mcp/resources.ts","../src/mcp/schema.ts","../src/command/adapters.ts","../src/docs/readme.ts","../src/mcp/command-server.ts","../src/mcp/server.ts","../src/scripts/dev-command.ts","../src/scripts/shims.ts"],"sourcesContent":["export { z } from 'zod';\nexport * from './cli/completion';\nexport * from './cli/help';\nexport * from './cli/program';\nexport * from './cli/runner';\nexport * from './cli/runtime';\nexport * from './cli/update';\nexport * from './command/adapters';\nexport * from './command/loader';\nexport * from './command/metadata';\nexport * from './constants';\nexport * from './docs/readme';\nexport * from './mcp/command-server';\nexport * from './mcp/errors';\nexport * from './mcp/resources';\nexport * from './mcp/router';\nexport * from './mcp/schema';\nexport * from './mcp/server';\nexport * from './mcp/types';\nexport * from './package/json';\nexport * from './package/metadata';\nexport * from './scripts/dev-command';\nexport * from './scripts/shims';\n","import type { Command } from '@caporal/core';\nimport type { CommandDefinition } from './metadata';\n\nconst commandMetadata = new WeakMap<object, CommandDefinition>();\n\nexport const setCommandMetadata = (command: Command, metadata: CommandDefinition) => {\n commandMetadata.set(command as object, metadata);\n};\n\nexport const getCommandMetadata = (command: Command) => commandMetadata.get(command as object);\n","import type { Command, Program } from '@caporal/core';\nimport { getCommandMetadata } from '../command/runtime-metadata';\n\ntype CompletionGroup = {\n description?: string;\n name: string;\n};\n\nenum CompletionShell {\n Bash = 'bash',\n Fish = 'fish',\n Zsh = 'zsh',\n}\n\nconst COMPLETION_COMMAND_NAME = 'completion';\nconst COMPLETION_COMMAND_DESCRIPTION = 'Generate shell completion scripts';\nconst COMPLETION_SHELL_ARGUMENT = '[shell]';\nconst COMPLETION_SHELL_DESCRIPTION = 'Shell to generate completion for';\nconst EMPTY_DISPLAY_VALUE = '<empty>';\nexport type CompletionConfig = {\n binNames?: readonly string[];\n};\n\nconst completionShells = Object.values(CompletionShell);\nconst completionScriptGenerators = {\n [CompletionShell.Bash]: getBashCompletionScript,\n [CompletionShell.Fish]: getFishCompletionScript,\n [CompletionShell.Zsh]: getZshCompletionScript,\n} as const satisfies Record<\n CompletionShell,\n (\n binNames: readonly string[],\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n ) => string\n>;\n\nexport const registerCompletionCommand = (program: Program, config: CompletionConfig = {}) => {\n program\n .command(COMPLETION_COMMAND_NAME, COMPLETION_COMMAND_DESCRIPTION)\n .argument(COMPLETION_SHELL_ARGUMENT, COMPLETION_SHELL_DESCRIPTION)\n .strict(false)\n .action(async ({ args, program }) => {\n const shell = args.shell ? String(args.shell) : '';\n\n if (isCompletionShell(shell)) {\n console.log(await getCompletionScript(program, shell, config));\n return 0;\n }\n\n console.log(`error: unsupported shell '${shell || EMPTY_DISPLAY_VALUE}'`);\n console.log(`supported: ${completionShells.join(', ')}`);\n return 1;\n });\n};\n\nconst isCompletionShell = (value: string): value is CompletionShell => {\n return (completionShells as readonly string[]).includes(value);\n};\n\nconst getCompletionScript = async (\n program: Program,\n shell: CompletionShell,\n config: CompletionConfig,\n) => {\n const binName = program.getBin();\n const binNames = uniqueBinNames([binName, ...(config.binNames ?? [])]);\n const commands = sortCommands(\n (await program.getAllCommands()).filter(\n (command) => command.visible && command.name !== COMPLETION_COMMAND_NAME,\n ),\n );\n const roots = getRootCommands(commands);\n const subcommands = getSubcommandGroups(commands);\n const options = getCommandOptions(commands);\n\n return completionScriptGenerators[shell](binNames, roots, subcommands, options, commands);\n};\n\nfunction getZshCompletionScript(\n binNames: readonly string[],\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n) {\n return binNames\n .map((binName) => formatZshCompletionScript(binName, roots, subcommands, options, commands))\n .join('\\n\\n');\n}\n\nfunction getBashCompletionScript(\n binNames: readonly string[],\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n) {\n return binNames\n .map((binName) => formatBashCompletionScript(binName, roots, subcommands, options, commands))\n .join('\\n\\n');\n}\n\nfunction formatZshCompletionScript(\n binName: string,\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n) {\n const functionName = completionFunctionName(binName);\n\n return `#compdef ${binName}\n\n_${functionName}() {\n local -a commands\n commands=(\n${formatZshItems(roots)}\n )\n${formatSubcommandArrays(subcommands)}\n${formatOptionArrays(options)}\n${formatZshCustomCompletions(binName, commands)}\n\n if [[ \"$words[$CURRENT]\" == -* ]]; then\n local command_key=\"$words[2]\"\n if [[ -n \"$words[3]\" && \"$words[3]\" != -* ]]; then\n command_key=\"$command_key $words[3]\"\n fi\n case \"$command_key\" in\n${formatOptionCases(binName, options)}\n esac\n fi\n\n _arguments -C \\\\\n '1:command:->command' \\\\\n '2:subcommand:->subcommand'\n\n case $state in\n command)\n _describe '${binName} commands' commands\n ;;\n subcommand)\n case $words[2] in\n${formatZshCustomCases(binName, commands)}\n${formatSubcommandCases(binName, subcommands)}\n esac\n ;;\n esac\n}\n\ncompdef _${functionName} ${binName}`;\n}\n\nfunction formatBashCompletionScript(\n binName: string,\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n) {\n const functionName = `${completionFunctionName(binName)}_completion`;\n\n return `_${functionName}() {\n local cur command_key\n cur=\"\\${COMP_WORDS[COMP_CWORD]}\"\n command_key=\"\\${COMP_WORDS[1]}\"\n if [[ -n \"\\${COMP_WORDS[2]}\" && \"\\${COMP_WORDS[2]}\" != -* ]]; then\n command_key=\"\\${command_key} \\${COMP_WORDS[2]}\"\n fi\n COMPREPLY=()\n\n if [[ \"$cur\" == -* ]]; then\n case \"$command_key\" in\n${formatBashOptionCases(options)}\n esac\n return 0\n fi\n\n case \"$COMP_CWORD\" in\n 1)\n COMPREPLY=($(compgen -W \"${roots.map((item) => item.name).join(' ')}\" -- \"$cur\"))\n ;;\n 2)\n case \"\\${COMP_WORDS[1]}\" in\n${formatBashCustomCases(binName, commands)}\n${formatBashSubcommandCases(subcommands)}\n esac\n ;;\n esac\n}\n\ncomplete -F _${functionName} ${binName}`;\n}\n\nfunction getFishCompletionScript(\n binNames: readonly string[],\n roots: CompletionGroup[],\n subcommands: Map<string, CompletionGroup[]>,\n options: Map<string, CompletionGroup[]>,\n commands: Command[],\n) {\n const rootNames = roots.map((item) => item.name).join(' ');\n\n return `${binNames.map((name) => formatFishFunctions(name, rootNames)).join('\\n')}\n${binNames.map((name) => formatFishCustomFunctions(name, commands)).join('\\n')}\n${binNames.map((name) => `complete -c ${name} -f`).join('\\n')}\n${binNames.map((name) => formatFishRootCompletions(name, roots)).join('\\n')}\n${binNames.map((name) => formatFishSubcommandCompletions(name, subcommands)).join('\\n')}\n${binNames.map((name) => formatFishOptionCompletions(name, options)).join('\\n')}\n${binNames.map((name) => formatFishCustomCompletions(name, commands)).join('\\n')}`;\n}\n\nconst uniqueBinNames = (binNames: readonly string[]) => [...new Set(binNames)];\n\nconst sortCommands = (commands: Command[]) => {\n return [...commands].sort((left, right) => {\n const leftOrder = getCommandMetadata(left)?.order;\n const rightOrder = getCommandMetadata(right)?.order;\n if (leftOrder !== undefined || rightOrder !== undefined) {\n return (leftOrder ?? Number.MAX_SAFE_INTEGER) - (rightOrder ?? Number.MAX_SAFE_INTEGER);\n }\n return left.name.localeCompare(right.name);\n });\n};\n\nconst getRootCommands = (commands: Command[]) => {\n const roots = new Map<string, CompletionGroup>();\n\n for (const command of commands) {\n const parts = command.name.split(' ');\n const root = parts[0];\n\n if (!root || roots.has(root)) {\n continue;\n }\n\n roots.set(root, {\n name: root,\n description: parts.length === 1 ? command.description : `${root} commands`,\n });\n }\n\n return [...roots.values()];\n};\n\nconst getSubcommandGroups = (commands: Command[]) => {\n const groups = new Map<string, CompletionGroup[]>();\n\n for (const command of commands) {\n const [root, subcommand] = command.name.split(' ');\n\n if (!root || !subcommand) {\n continue;\n }\n\n const group = groups.get(root) ?? [];\n\n if (!group.some((item) => item.name === subcommand)) {\n group.push({ name: subcommand, description: command.description });\n }\n\n groups.set(root, group);\n }\n\n return groups;\n};\n\nconst getCommandOptions = (commands: Command[]) => {\n const commandOptions = new Map<string, CompletionGroup[]>();\n\n for (const command of commands) {\n const options = command.options\n .filter((option) => option.visible)\n .flatMap((option) =>\n option.allNotations.map((notation) => ({\n name: notation,\n description: option.description,\n })),\n );\n\n if (options.length > 0) {\n commandOptions.set(command.name, options);\n }\n }\n\n return commandOptions;\n};\n\nconst formatZshItems = (items: CompletionGroup[]) => {\n return items.map((item) => ` '${escapeZshItem(item)}'`).join('\\n');\n};\n\nconst formatSubcommandArrays = (groups: Map<string, CompletionGroup[]>) => {\n return [...groups.entries()]\n .map(\n ([root, items]) => `\n local -a ${root}_commands\n ${root}_commands=(\n${formatZshItems(items)}\n )`,\n )\n .join('\\n');\n};\n\nconst formatZshCustomCompletions = (binName: string, commands: Command[]) => {\n return commands\n .flatMap((command) => {\n const functions = getCommandMetadata(command)?.completion?.zsh?.(binName).functions;\n return functions ? [functions] : [];\n })\n .join('\\n');\n};\n\nconst formatZshCustomCases = (binName: string, commands: Command[]) => {\n return commands\n .flatMap((command) => {\n const complete = getCommandMetadata(command)?.completion?.zsh?.(binName).complete;\n return complete\n ? [\n ` ${command.name})\n${complete}\n ;;`,\n ]\n : [];\n })\n .join('\\n');\n};\n\nconst formatSubcommandCases = (binName: string, groups: Map<string, CompletionGroup[]>) => {\n return [...groups.keys()]\n .map(\n (root) => ` ${root})\n _describe '${binName} ${root} commands' ${root}_commands\n ;;`,\n )\n .join('\\n');\n};\n\nconst formatOptionArrays = (groups: Map<string, CompletionGroup[]>) => {\n return [...groups.entries()]\n .map(\n ([command, items]) => `\n local -a ${optionVariable(command)}\n ${optionVariable(command)}=(\n${formatZshItems(items)}\n )`,\n )\n .join('\\n');\n};\n\nconst formatOptionCases = (binName: string, groups: Map<string, CompletionGroup[]>) => {\n return [...groups.keys()]\n .map(\n (command) => ` ${JSON.stringify(command)})\n _describe '${binName} ${command} options' ${optionVariable(command)}\n return\n ;;`,\n )\n .join('\\n');\n};\n\nconst formatBashCustomCases = (binName: string, commands: Command[]) => {\n return commands\n .flatMap((command) => {\n const complete = getCommandMetadata(command)?.completion?.bash?.(binName);\n return complete\n ? [\n ` ${command.name})\n${complete}\n ;;`,\n ]\n : [];\n })\n .join('\\n');\n};\n\nconst formatBashSubcommandCases = (groups: Map<string, CompletionGroup[]>) => {\n return [...groups.entries()]\n .map(\n ([root, items]) => ` ${root})\n COMPREPLY=($(compgen -W \"${items.map((item) => item.name).join(' ')}\" -- \"$cur\"))\n ;;`,\n )\n .join('\\n');\n};\n\nconst formatFishFunctions = (binName: string, rootNames: string) => {\n return `function __${binName}_seen_command\n set -l tokens (commandline -opc)\n for token in $tokens[2..-1]\n switch $token\n case ${rootNames}\n return 0\n end\n end\n return 1\nend\n\nfunction __${binName}_using_command\n set -l tokens (commandline -opc)\n test (count $tokens) -ge 2; and test \"$tokens[2]\" = \"$argv[1]\"\nend`;\n};\n\nconst formatFishCustomFunctions = (binName: string, commands: Command[]) => {\n return commands\n .flatMap((command) => {\n const functions = getCommandMetadata(command)?.completion?.fish?.(binName).functions;\n return functions ? [functions] : [];\n })\n .join('\\n');\n};\n\nconst formatFishCustomCompletions = (binName: string, commands: Command[]) => {\n return commands\n .flatMap((command) => {\n const complete = getCommandMetadata(command)?.completion?.fish?.(binName).complete;\n return complete ? [complete] : [];\n })\n .join('\\n');\n};\n\nconst formatFishRootCompletions = (binName: string, roots: CompletionGroup[]) => {\n return roots\n .map(\n (item) =>\n `complete -c ${binName} -f -n \"not __${binName}_seen_command\" -a ${quoteFish(item.name)} -d ${quoteFish(item.description ?? '')}`,\n )\n .join('\\n');\n};\n\nconst formatFishSubcommandCompletions = (\n binName: string,\n groups: Map<string, CompletionGroup[]>,\n) => {\n return [...groups.entries()]\n .flatMap(([root, items]) =>\n items.map(\n (item) =>\n `complete -c ${binName} -f -n \"__${binName}_using_command ${quoteFish(root)}\" -a ${quoteFish(item.name)} -d ${quoteFish(item.description ?? '')}`,\n ),\n )\n .join('\\n');\n};\n\nconst formatBashOptionCases = (groups: Map<string, CompletionGroup[]>) => {\n return [...groups.entries()]\n .map(\n ([command, items]) => ` ${JSON.stringify(command)})\n COMPREPLY=($(compgen -W \"${items.map((item) => item.name).join(' ')}\" -- \"$cur\"))\n ;;`,\n )\n .join('\\n');\n};\n\nconst formatFishOptionCompletions = (binName: string, groups: Map<string, CompletionGroup[]>) => {\n return [...groups.entries()]\n .flatMap(([command, items]) =>\n items.map((item) => {\n const nameOption = fishOptionName(item.name);\n return `complete -c ${binName} -f -n \"__${binName}_using_command ${quoteFish(command)}\" ${nameOption} -d ${quoteFish(item.description ?? '')}`;\n }),\n )\n .join('\\n');\n};\n\nconst fishOptionName = (name: string) => {\n if (name.startsWith('--')) return `-l ${quoteFish(name.slice(2))}`;\n if (name.startsWith('-')) return `-s ${quoteFish(name.slice(1))}`;\n return `-a ${quoteFish(name)}`;\n};\n\nconst completionFunctionName = (binName: string) => {\n return binName.replace(/\\W/g, '_');\n};\n\nconst optionVariable = (command: string) => {\n return `${command.replace(/\\W/g, '_')}_options`;\n};\n\nconst escapeZshItem = (item: CompletionGroup) => {\n const text = item.description ? `${item.name}:${item.description}` : item.name;\n\n return text.replace(/'/g, \"'\\\\''\");\n};\n\nconst quoteFish = (value: string) => {\n return `'${value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\")}'`;\n};\n","import type { Program } from '@caporal/core';\n\nconst programExamples = new WeakMap<Program, string[]>();\n\nexport const setProgramExamples = (program: Program, examples: string[]) => {\n programExamples.set(program, examples);\n};\n\nexport const isGlobalHelpRequest = (args: readonly string[]) =>\n args.length === 0 || (args.length === 1 && ['--help', '-h'].includes(args[0] ?? ''));\n\nexport const printProgramHelp = async (program: Program) => {\n const help = cleanHelp(await captureHelp(() => program.run(['--help'])));\n const examples = programExamples.get(program) ?? [];\n\n console.log([help.trimEnd(), formatExamples(examples)].filter(Boolean).join('\\n\\n'));\n};\n\nasync function captureHelp(callback: () => Promise<unknown>) {\n const originalLog = console.log;\n const lines: string[] = [];\n console.log = (...args: unknown[]) => {\n lines.push(args.map(String).join(' '));\n };\n\n try {\n await callback();\n } finally {\n console.log = originalLog;\n }\n\n return lines.join('\\n');\n}\n\nfunction cleanHelp(help: string) {\n return help.replace(\n /COMMANDS\\s+—\\s+Type '[^']+ help <command>' to get some help about a command/g,\n 'COMMANDS',\n );\n}\n\nfunction formatExamples(examples: readonly string[]) {\n if (examples.length === 0) return '';\n\n return [' EXAMPLES', '', ...examples.map((example) => ` ${example}`)].join('\\n');\n}\n","import { createRequire } from 'node:module';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { Program as CaporalProgram } from '@caporal/core';\nimport {\n type CommandAdapterExport,\n commandDefinitionsFromModules,\n commandExportsFromModules,\n isCommandAdapterExport,\n loadCommandModules,\n} from '../command/loader';\nimport type { CommandDefinition } from '../command/metadata';\nimport { DEFAULT_COMMANDS_DIR } from '../constants';\nimport { registerCompletionCommand } from './completion';\nimport { setProgramExamples } from './help';\nimport { registerUpdateCommand } from './update';\n\nconst VERSION_OPTION = '-v, --version';\nconst DISABLED_GLOBAL_OPTIONS = ['--no-color', '--quiet', '--silent', '-v', '-V'];\nconst DEFAULT_CLI_VERSION = '0.0.0';\n\nexport type CommandRegistrarContext<TContext> = {\n binName: string;\n getContext?: () => Promise<TContext> | TContext;\n};\n\nexport type CommandRegistrar<TContext> = (\n program: CaporalProgram,\n context: CommandRegistrarContext<TContext>,\n) => void;\n\nexport type RegisterCliCommandsFromDirectoryOptions<TContext> = {\n binName: string;\n commandsDir: string;\n getContext?: () => Promise<TContext> | TContext;\n program: CaporalProgram;\n};\n\nexport type CreateCommandProgramOptions<TContext> = {\n binName: string;\n binNames?: readonly string[];\n commandsDir?: string;\n description: string;\n getContext?: () => Promise<TContext> | TContext;\n importMetaUrl: string;\n isDevRun?: boolean;\n packageName?: string;\n printVersion?: (version: string) => void;\n version?: string;\n};\n\nexport type RegisterParentCommandsFromDefinitionsOptions = {\n description?: (name: string) => string;\n print?: (message: string) => void;\n};\n\nexport const createCommandProgram = async <TContext>({\n binName,\n binNames,\n commandsDir,\n description,\n getContext,\n importMetaUrl,\n isDevRun = false,\n packageName,\n printVersion = console.log,\n version = DEFAULT_CLI_VERSION,\n}: CreateCommandProgramOptions<TContext>) => {\n const program = new (getProgramConstructor())()\n .bin(binName)\n .name(binName)\n .description(description)\n .version(version);\n\n disableDefaultGlobalOptions(program);\n registerVersionOption(program, version, printVersion);\n\n const commandDefinitions = await registerCliCommandsFromDirectory<TContext>({\n binName,\n commandsDir: commandsDir ?? defaultCommandsDir(importMetaUrl),\n getContext,\n program,\n });\n registerUpdateCommand(program, { isDevRun, packageName: packageName ?? binName, version });\n registerCompletionCommand(program, { binNames });\n setProgramExamples(\n program,\n commandDefinitions.flatMap((command) => command.examples?.(binName) ?? []),\n );\n\n return program;\n};\n\nexport const registerParentCommandsFromDefinitions = (\n program: CaporalProgram,\n definitions: readonly CommandDefinition[],\n options: RegisterParentCommandsFromDefinitionsOptions = {},\n) => {\n const description = options.description ?? parentCommandDescription;\n const print = options.print ?? console.log;\n\n for (const [name, subcommands] of parentCommands(definitions)) {\n program.command(name, description(name)).action(() => {\n print(`Usage: ${program.getBin()} ${name} <command>`);\n print('');\n print(`Available commands: ${subcommands.join(', ')}`);\n });\n }\n};\n\nexport const registerCliCommandsFromDirectory = async <TContext>({\n binName,\n commandsDir,\n getContext,\n program,\n}: RegisterCliCommandsFromDirectoryOptions<TContext>) => {\n const modules = await loadCommandModules(commandsDir);\n const definitions = commandDefinitionsFromModules(modules);\n registerParentCommandsFromDefinitions(program, definitions);\n\n const commands = commandExportsFromModules<CommandAdapterExport>(modules, (_name, value) =>\n isCommandAdapterExport(value),\n );\n\n for (const command of commands.sort(compareCommands)) {\n command.cli(program, { binName, getContext });\n }\n\n return definitions;\n};\n\nexport const getProgramConstructor = () => {\n const require = createRequire(import.meta.url);\n const module = require('@caporal/core') as { Program: new () => CaporalProgram };\n return module.Program;\n};\n\nconst disableDefaultGlobalOptions = (program: CaporalProgram) => {\n for (const option of DISABLED_GLOBAL_OPTIONS) {\n program.disableGlobalOption(option);\n }\n};\n\nconst registerVersionOption = (\n program: CaporalProgram,\n version: string,\n printVersion: (version: string) => void,\n) => {\n program.option(VERSION_OPTION, 'Show version', {\n global: true,\n action: () => {\n printVersion(version);\n return false;\n },\n });\n};\n\nconst defaultCommandsDir = (importMetaUrl: string) =>\n join(dirname(fileURLToPath(importMetaUrl)), DEFAULT_COMMANDS_DIR);\n\nconst compareCommands = (left: CommandAdapterExport, right: CommandAdapterExport) => {\n const leftName = left.metadata?.name ?? '';\n const rightName = right.metadata?.name ?? '';\n const leftOrder = left.metadata?.order;\n const rightOrder = right.metadata?.order;\n if (leftOrder !== undefined || rightOrder !== undefined) {\n return (leftOrder ?? Number.MAX_SAFE_INTEGER) - (rightOrder ?? Number.MAX_SAFE_INTEGER);\n }\n return leftName.localeCompare(rightName);\n};\n\nconst parentCommandDescription = (name: string) => `${name} commands`;\n\nconst parentCommands = (definitions: readonly CommandDefinition[]) => {\n const groups = new Map<string, string[]>();\n const commandNames = new Set(definitions.map((definition) => definition.name));\n\n for (const definition of definitions) {\n const [parent, subcommand] = definition.name.split(' ');\n const hasGeneratedParentCommand = parent && subcommand && !commandNames.has(parent);\n if (!hasGeneratedParentCommand) continue;\n groups.set(parent, [...(groups.get(parent) ?? []), subcommand]);\n }\n\n return [...groups.entries()].sort(([left], [right]) => left.localeCompare(right));\n};\n","import { readdir } from 'node:fs/promises';\nimport { basename, join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { CommandAdaptersReturn } from './adapters';\n\nconst COMMAND_FILE_EXTENSION = '.ts';\nconst IGNORED_COMMAND_FILES = new Set(['index.ts', 'options.ts']);\n\nexport type CommandModule = Record<string, unknown>;\nexport type CommandAdapterExport = Pick<CommandAdaptersReturn<unknown, unknown>, 'cli'> &\n Partial<Pick<CommandAdaptersReturn<unknown, unknown>, 'mcp' | 'metadata'>>;\n\nexport const loadCommandModules = async (commandsDir: string) => {\n return loadCommandModulesFromFiles(await commandFiles(commandsDir));\n};\n\nexport const loadCommandModulesFromFiles = async (files: readonly string[]) => {\n return Promise.all(\n files.map((file) => import(pathToFileURL(file).href) as Promise<CommandModule>),\n );\n};\n\nexport const commandDefinitionsFromModules = (modules: readonly CommandModule[]) => {\n return modules.flatMap((module) =>\n Object.values(module).flatMap((value) =>\n isCommandAdapterExport(value) && value.metadata ? [value.metadata] : [],\n ),\n );\n};\n\nexport const commandExportsFromModules = <TExport>(\n modules: readonly CommandModule[],\n isExport: (name: string, value: unknown) => boolean,\n) => {\n return modules.flatMap((module) =>\n Object.entries(module)\n .filter(([name, value]) => isExport(name, value))\n .map(([, value]) => value as TExport),\n );\n};\n\nconst commandFiles = async (dir: string): Promise<string[]> => {\n const entries = await readdir(dir, { withFileTypes: true });\n const nestedFiles = await Promise.all(\n entries.map((entry) => {\n const path = join(dir, entry.name);\n if (entry.isDirectory()) return commandFiles(path);\n if (entry.isFile() && isCommandFile(path)) return [path];\n return [];\n }),\n );\n\n return nestedFiles.flat().sort();\n};\n\nconst isCommandFile = (path: string) => {\n const fileName = basename(path);\n return path.endsWith(COMMAND_FILE_EXTENSION) && !IGNORED_COMMAND_FILES.has(fileName);\n};\n\nexport const isCommandAdapterExport = (value: unknown): value is CommandAdapterExport => {\n if (!value || typeof value !== 'object') return false;\n const command = value as Partial<CommandAdapterExport>;\n return typeof command.cli === 'function';\n};\n","export const DEFAULT_COMMANDS_DIR = 'commands';\nexport const PROGRAM_NAME_ENV_SUFFIX = '_PROG_NAME';\n","import { exec } from 'node:child_process';\nimport { platform } from 'node:os';\nimport { promisify } from 'node:util';\nimport type { Program } from '@caporal/core';\n\nconst execAsync = promisify(exec);\n\nexport enum PackageManager {\n Npm = 'npm',\n Pnpm = 'pnpm',\n Yarn = 'yarn',\n}\n\nexport type RegisterUpdateCommandOptions = {\n isDevRun: boolean;\n packageName: string;\n version?: string;\n};\n\nexport const registerUpdateCommand = (program: Program, options: RegisterUpdateCommandOptions) => {\n program.command('update', `Update ${options.packageName} to latest version`).action(async () => {\n if (options.isDevRun) {\n console.log('Skipping update because this is a dev command');\n return 0;\n }\n\n console.log('Checking current version...');\n const currentVersion = options.version ?? '0.0.0';\n\n console.log('Checking latest version...');\n const latestVersion = await getLatestVersion(options.packageName);\n if (!latestVersion) {\n console.log('error: could not fetch latest version from npm');\n return 1;\n }\n\n console.log(`Current version: ${currentVersion}`);\n console.log(`Latest version: ${latestVersion}`);\n\n if (currentVersion === latestVersion) {\n console.log(`${options.packageName} is already up to date`);\n return 0;\n }\n\n console.log('Detecting package manager...');\n const packageManager = await detectPackageManager(options.packageName);\n\n if (!packageManager) {\n console.log(`error: could not detect how ${options.packageName} was installed`);\n console.log('Please update manually using your package manager');\n return 1;\n }\n\n console.log(`Detected package manager: ${packageManager}`);\n console.log(`Updating ${options.packageName} from ${currentVersion} to ${latestVersion}...`);\n\n const { stdout, stderr } = await execAsync(updateCommand(packageManager, options.packageName));\n\n console.log(\n `${options.packageName} updated successfully from ${currentVersion} to ${latestVersion}`,\n );\n if (stdout) console.log(stdout.trim());\n if (stderr) console.log(stderr.trim());\n return 0;\n });\n};\n\nasync function detectPackageManager(packageName: string): Promise<PackageManager | null> {\n const globalBinPath = await getGlobalBinPath(packageName);\n if (!globalBinPath) return (await isInstalledWithNpm(packageName)) ? PackageManager.Npm : null;\n\n return getPackageManagerFromPath(globalBinPath) ?? PackageManager.Npm;\n}\n\nexport function getPackageManagerFromPath(globalBinPath: string): PackageManager | null {\n const possiblePaths = [\n { manager: PackageManager.Yarn, patterns: ['/yarn/', '\\\\yarn\\\\', '/.yarn/', '\\\\.yarn\\\\'] },\n { manager: PackageManager.Pnpm, patterns: ['/pnpm/', '\\\\pnpm\\\\', '/.pnpm/', '\\\\.pnpm\\\\'] },\n {\n manager: PackageManager.Npm,\n patterns: ['/npm/', '\\\\npm\\\\', '/node/', '\\\\node\\\\', '/node_modules/'],\n },\n ] as const;\n\n for (const { manager, patterns } of possiblePaths) {\n if (patterns.some((pattern) => globalBinPath.includes(pattern))) return manager;\n }\n\n return null;\n}\n\nasync function getGlobalBinPath(binName: string): Promise<string | null> {\n const isWindows = platform() === 'win32';\n\n try {\n const whereCommand = isWindows ? 'where' : 'which';\n const { stdout } = await execAsync(`${whereCommand} ${binName}`);\n const execPath = stdout.trim();\n if (!execPath) return null;\n\n if (isWindows) return execPath;\n\n try {\n const { stdout: realPath } = await execAsync(`readlink -f \"${execPath}\"`);\n return realPath.trim() || execPath;\n } catch {\n return execPath;\n }\n } catch {\n return null;\n }\n}\n\nasync function isInstalledWithNpm(packageName: string) {\n try {\n const { stdout } = await execAsync(`npm list -g --depth=0 ${packageName}`);\n return stdout.includes(packageName);\n } catch {\n return false;\n }\n}\n\nasync function getLatestVersion(packageName: string): Promise<string | null> {\n try {\n const { stdout } = await execAsync(`npm view ${packageName} version`);\n return stdout.trim();\n } catch {\n return null;\n }\n}\n\nfunction updateCommand(packageManager: PackageManager, packageName: string) {\n return {\n [PackageManager.Npm]: `npm update -g ${packageName}`,\n [PackageManager.Pnpm]: `pnpm update -g ${packageName}`,\n [PackageManager.Yarn]: `yarn global upgrade ${packageName}`,\n }[packageManager];\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst PACKAGE_JSON_FILE = 'package.json';\nconst PACKAGE_JSON_ENCODING = 'utf8';\n\nexport type PackageJson = {\n bin?: Record<string, string>;\n description?: string;\n name?: string;\n version?: string;\n};\n\nexport type PackageBinEntry = {\n binPath: string;\n commandName: string;\n};\n\nexport const packageRoot = (importMetaUrl: string) => {\n const startDir = dirname(fileURLToPath(importMetaUrl));\n\n return findPackageRoot(startDir);\n};\n\nexport const readPackageJson = (packageDir: string): PackageJson => {\n return JSON.parse(\n readFileSync(join(packageDir, PACKAGE_JSON_FILE), PACKAGE_JSON_ENCODING),\n ) as PackageJson;\n};\n\nexport const shortPackageName = (name?: string) => {\n const packageName = name?.split('/').at(-1);\n\n if (!packageName) {\n throw new Error('Missing package name');\n }\n\n return packageName;\n};\n\nexport const packageEnvPrefix = (name?: string) =>\n shortPackageName(name).replaceAll('-', '_').toUpperCase();\n\nexport const packageBinEntry = (packageDir: string, packageJson: PackageJson): PackageBinEntry => {\n const [commandName, binPath] = Object.entries(packageJson.bin ?? {})[0] ?? [];\n\n if (!commandName || !binPath) {\n throw new Error(`Missing bin in ${join(packageDir, PACKAGE_JSON_FILE)}`);\n }\n\n return { binPath, commandName };\n};\n\nfunction findPackageRoot(startDir: string): string {\n const packageJsonPath = join(startDir, PACKAGE_JSON_FILE);\n if (existsSync(packageJsonPath)) return startDir;\n\n const parentDir = dirname(startDir);\n if (parentDir === startDir) throw new Error(`Missing ${PACKAGE_JSON_FILE}`);\n\n return findPackageRoot(parentDir);\n}\n","import { PROGRAM_NAME_ENV_SUFFIX } from '../constants';\nimport {\n packageBinEntry,\n packageEnvPrefix,\n packageRoot,\n readPackageJson,\n shortPackageName,\n} from './json';\n\nexport type PackageCommandMetadata = {\n binName: string;\n binNames: string[];\n description?: string;\n envBinName: string;\n mcpPrefix: string;\n mcpServerName: string;\n packageDir: string;\n packageName: string;\n version?: string;\n};\n\ntype PackageCommandMetadataOptions = {\n mcpServerPrefix?: string;\n};\n\nexport const packageCommandMetadata = (\n importMetaUrl: string,\n options: PackageCommandMetadataOptions = {},\n): PackageCommandMetadata => {\n const packageDir = packageRoot(importMetaUrl);\n const packageJson = readPackageJson(packageDir);\n const packageName = shortPackageName(packageJson.name);\n const { commandName } = packageBinEntry(packageDir, packageJson);\n\n return {\n binName: commandName,\n binNames: Object.keys(packageJson.bin ?? {}),\n description: packageJson.description,\n envBinName: `${packageEnvPrefix(packageName)}${PROGRAM_NAME_ENV_SUFFIX}`,\n mcpPrefix: packageName,\n mcpServerName: mcpServerName(packageName, options.mcpServerPrefix),\n packageDir,\n packageName,\n version: packageJson.version,\n };\n};\n\nconst mcpServerName = (packageName: string, prefix: string | undefined) =>\n prefix ? `${prefix}-${packageName}` : packageName;\n","import { realpathSync } from 'node:fs';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\n\nexport type CliConfig<TProgram> = {\n createProgram: (binName: string) => TProgram | Promise<TProgram>;\n defaultBinName: string;\n envBinName: string;\n importMetaUrl: string;\n};\n\nexport const getProgramBin = (\n config: Pick<CliConfig<unknown>, 'defaultBinName' | 'envBinName' | 'importMetaUrl'>,\n) => {\n const envBinName = process.env[config.envBinName];\n\n if (envBinName) {\n return envBinName;\n }\n\n return config.defaultBinName;\n};\n\nexport const isDirectRun = (importMetaUrl: string) => {\n if (!process.argv[1]) {\n return false;\n }\n\n try {\n return realpathSync(process.argv[1]) === realpathSync(fileURLToPath(importMetaUrl));\n } catch {\n return importMetaUrl === pathToFileURL(process.argv[1]).href;\n }\n};\n","import type { Program as CaporalProgram } from '@caporal/core';\nimport { packageCommandMetadata } from '../package/metadata';\nimport { isGlobalHelpRequest, printProgramHelp } from './help';\nimport { createCommandProgram } from './program';\nimport { type CliConfig, getProgramBin, isDirectRun } from './runtime';\n\ntype CreateCommandCliRunnerOptions<TContext> = {\n binNames?: readonly string[];\n commandsDir?: string;\n defaultBinName: string;\n description: string;\n envBinName: string;\n getContext?: () => Promise<TContext> | TContext;\n importMetaUrl: string;\n isDevRun?: boolean;\n packageName?: string;\n printVersion?: (version: string) => void;\n version?: string;\n};\n\ntype CreatePackageCommandCliRunnerOptions<TContext> = Omit<\n CreateCommandCliRunnerOptions<TContext>,\n 'defaultBinName' | 'description' | 'envBinName'\n> & {\n defaultBinName?: string;\n description?: string;\n envBinName?: string;\n};\n\nexport const createCliRunner = (config: CliConfig<CaporalProgram>) => {\n let programInstance: CaporalProgram | undefined;\n let programInstanceBin: string | undefined;\n\n const getProgram = async (): Promise<CaporalProgram> => {\n const binName = getProgramBin(config);\n const shouldCreateProgram = !programInstance || programInstanceBin !== binName;\n\n if (shouldCreateProgram) {\n const program = await config.createProgram(binName);\n programInstance = program;\n programInstanceBin = binName;\n\n return program;\n }\n\n return programInstance as CaporalProgram;\n };\n\n const runCli = async (args = process.argv.slice(2)) => {\n try {\n const program = await getProgram();\n if (isGlobalHelpRequest(args)) {\n await printProgramHelp(program);\n return 0;\n }\n\n const result = await program.run(args);\n return typeof result === 'number' && result > 0 ? result : 0;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.log(`error: ${message}`);\n return 1;\n }\n };\n\n return { isDirectRun: () => isDirectRun(config.importMetaUrl), runCli };\n};\n\nexport const createPackageCommandCliRunner = <TContext>({\n defaultBinName,\n envBinName,\n importMetaUrl,\n ...options\n}: CreatePackageCommandCliRunnerOptions<TContext>) => {\n const metadata = packageCommandMetadata(importMetaUrl);\n\n return createCommandCliRunner({\n ...options,\n binNames: options.binNames ?? metadata.binNames,\n defaultBinName: defaultBinName ?? metadata.binName,\n description: options.description ?? metadata.description ?? metadata.packageName,\n envBinName: envBinName ?? metadata.envBinName,\n importMetaUrl,\n isDevRun: process.env[envBinName ?? metadata.envBinName] !== undefined,\n packageName: metadata.packageName,\n version: options.version ?? metadata.version,\n });\n};\n\nexport const createCommandCliRunner = <TContext>({\n binNames,\n commandsDir,\n defaultBinName,\n description,\n envBinName,\n getContext,\n importMetaUrl,\n isDevRun,\n packageName,\n printVersion,\n version,\n}: CreateCommandCliRunnerOptions<TContext>) => {\n return createCliRunner({\n createProgram: (binName) =>\n createCommandProgram({\n binName,\n binNames,\n commandsDir,\n description,\n getContext,\n importMetaUrl,\n isDevRun,\n packageName,\n printVersion,\n version,\n }),\n defaultBinName,\n envBinName,\n importMetaUrl,\n });\n};\n","import { z } from 'zod';\nimport { type CommandDefinition, isCommandMcpToolMetadata } from '../command/metadata';\nimport { COMMAND_NAME_SEPARATOR, EMPTY_DISPLAY_VALUE, TOOL_NAME_SEPARATOR } from './constants';\nimport { throwUnknownTool } from './errors';\nimport { commandProgressSummary } from './progress';\nimport {\n commandMcpRouteToResourceRoute,\n commandResourceInput,\n commandResourceRouteToResource,\n commandResourceRouteToResourceTemplate,\n isResourceTemplate,\n} from './resources';\nimport { mcpToolOutputSchema } from './schema';\nimport type { CommandMcpRoute, CreateCommandMcpRouterOptions, ToolCallParams } from './types';\n\nexport const createCommandMcpRoute = ({\n command,\n handler,\n inputSchema,\n outputSchema,\n}: CommandMcpRoute): CommandMcpRoute => ({\n command,\n handler,\n inputSchema,\n outputSchema,\n});\n\nexport const commandMcpRouteToTool = (route: CommandMcpRoute, prefix?: string) => ({\n name: commandNameToMcpToolName(route.command.name, prefix),\n description: route.command.description,\n inputSchema: z.toJSONSchema(route.inputSchema),\n outputSchema: mcpToolOutputSchema(route.outputSchema),\n annotations: commandMcpAnnotations(route.command),\n});\n\nexport const commandNameToMcpToolName = (name: string, prefix?: string) => {\n const baseName = name.replaceAll(COMMAND_NAME_SEPARATOR, TOOL_NAME_SEPARATOR);\n return prefix ? `${prefix}_${baseName}` : baseName;\n};\n\nexport const createCommandMcpRouter = ({ prefix, routes }: CreateCommandMcpRouterOptions) => {\n const mcpRoutes = routes.filter((route) => route.command.mcp);\n const toolRoutes = mcpRoutes.filter((route) => isCommandMcpToolMetadata(route.command.mcp));\n const resourceRoutes = mcpRoutes.flatMap(commandMcpRouteToResourceRoute);\n\n return {\n tools: toolRoutes.map((route) => commandMcpRouteToTool(route, prefix)),\n resources: resourceRoutes\n .filter((route) => !isResourceTemplate(route.uriTemplate))\n .map(commandResourceRouteToResource),\n resourceTemplates: resourceRoutes\n .filter((route) => isResourceTemplate(route.uriTemplate))\n .map(commandResourceRouteToResourceTemplate),\n callTool: async (params: unknown) => {\n const toolCall = params as ToolCallParams;\n const route = toolRoutes.find(\n (candidate) => toolCall.name === commandNameToMcpToolName(candidate.command.name, prefix),\n );\n\n if (!route) {\n return throwUnknownTool(toolCall.name);\n }\n\n const input = route.inputSchema.parse(toolCall.arguments ?? {});\n const data = route.outputSchema.parse(await route.handler(input as Record<string, unknown>));\n\n return { data, progress: commandProgressSummary(data, route.command) };\n },\n readResource: async (params: unknown) => {\n const resourceRead = params as { uri?: string };\n const routeMatch = resourceRoutes\n .map((route) => ({ input: commandResourceInput(route, resourceRead.uri), route }))\n .find((candidate) => candidate.input !== undefined);\n\n if (!routeMatch?.input) {\n throw new Error(`Unknown resource: ${resourceRead.uri ?? EMPTY_DISPLAY_VALUE}`);\n }\n\n return routeMatch.route.command.outputSchema.parse(\n await routeMatch.route.handler(routeMatch.input),\n );\n },\n };\n};\n\nconst commandMcpAnnotations = (command: CommandDefinition) => {\n const mcp = command.mcp;\n if (!isCommandMcpToolMetadata(mcp)) return undefined;\n\n return {\n readOnlyHint: mcp.readOnly,\n destructiveHint: mcp.destructive,\n idempotentHint: mcp.idempotent,\n openWorldHint: mcp.openWorld,\n requiresConfirmation: mcp.requiresConfirmation,\n sideEffects: mcp.sideEffects,\n };\n};\n","import type { Command, CreateOptionCommandOpts, Program } from '@caporal/core';\nimport { type ZodType, z } from 'zod';\nimport { setCommandMetadata } from './runtime-metadata';\n\nexport type JsonSchemaProperty = {\n type: 'array' | 'boolean' | 'number' | 'string';\n description?: string;\n items?: { type: 'string' };\n};\n\nexport type CommandArgumentDefinition = {\n synopsis: string;\n description: string;\n};\n\nexport type CommandOptionDefinition = {\n name: string;\n description: string;\n aliases?: readonly string[];\n config?: CreateOptionCommandOpts;\n negated?: boolean;\n schema?: JsonSchemaProperty;\n value?: string;\n};\n\nexport type CommandMcpToolMetadata = {\n kind: 'tool';\n readOnly: boolean;\n destructive: boolean;\n idempotent: boolean;\n openWorld: boolean;\n requiresConfirmation: boolean;\n sideEffects?: string[];\n};\n\nexport type CommandMcpResourceMetadata = {\n kind: 'resource';\n uriTemplate: string;\n mimeType?: string;\n};\n\nexport type CommandMcpMetadata = false | CommandMcpToolMetadata | CommandMcpResourceMetadata;\n\nexport const isCommandMcpToolMetadata = (\n metadata: CommandMcpMetadata | undefined,\n): metadata is CommandMcpToolMetadata =>\n metadata !== undefined && metadata !== false && metadata.kind === 'tool';\n\nexport const isCommandMcpResourceMetadata = (\n metadata: CommandMcpMetadata | undefined,\n): metadata is CommandMcpResourceMetadata =>\n metadata !== undefined && metadata !== false && metadata.kind === 'resource';\n\nexport type ShellCompletionSnippet = {\n complete: string;\n functions?: string;\n};\n\nexport type CommandCompletionDefinition = {\n bash?: (binName: string) => string;\n fish?: (binName: string) => ShellCompletionSnippet;\n zsh?: (binName: string) => ShellCompletionSnippet;\n};\n\nexport type CommandExamplesDefinition = (binName: string) => readonly string[];\n\nexport type CommandDefinition<\n TInputSchema extends ZodType = ZodType,\n TOutputSchema extends ZodType = ZodType,\n> = {\n name: string;\n description: string;\n aliases?: readonly string[];\n arguments?: readonly CommandArgumentDefinition[];\n completion?: CommandCompletionDefinition;\n config?: Parameters<Program['command']>[2];\n examples?: CommandExamplesDefinition;\n inputSchema: TInputSchema;\n mcp?: CommandMcpMetadata;\n options?: readonly CommandOptionDefinition[];\n order?: number;\n outputSchema: TOutputSchema;\n};\n\nexport type DefineCommandDefinition<\n TInputSchema extends ZodType = ZodType,\n TOutputSchema extends ZodType = ZodType,\n> = Omit<CommandDefinition<TInputSchema, TOutputSchema>, 'inputSchema' | 'outputSchema'> & {\n inputSchema?: TInputSchema;\n outputSchema?: TOutputSchema;\n};\n\nexport const defineCommand = <\n TInputSchema extends ZodType = ZodType,\n TOutputSchema extends ZodType = ZodType,\n>(\n definition: DefineCommandDefinition<TInputSchema, TOutputSchema>,\n): CommandDefinition<TInputSchema, TOutputSchema> => {\n const command = {\n outputSchema: z.unknown(),\n ...definition,\n } as CommandDefinition<TInputSchema, TOutputSchema>;\n\n return {\n ...command,\n inputSchema: definition.inputSchema ?? commandDefinitionToZodInputSchema(command),\n } as CommandDefinition<TInputSchema, TOutputSchema>;\n};\n\nexport const registerCommand = (program: Program, definition: CommandDefinition): Command => {\n const command =\n definition.arguments?.reduce<Command>(\n (currentCommand, argument) =>\n currentCommand.argument(argument.synopsis, argument.description),\n program.command(definition.name, definition.description, definition.config),\n ) ?? program.command(definition.name, definition.description, definition.config);\n\n const commandWithOptions =\n definition.options?.reduce<Command>(\n (currentCommand, option) =>\n currentCommand.option(commandOptionSynopsis(option), option.description, option.config),\n command,\n ) ?? command;\n\n const registeredCommand =\n definition.aliases?.reduce<Command>(\n (currentCommand, alias) => currentCommand.alias(alias),\n commandWithOptions,\n ) ?? commandWithOptions;\n\n setCommandMetadata(registeredCommand, definition);\n return registeredCommand;\n};\n\nexport const commandInputValue = (args: Record<string, unknown>, name: string) => args[name];\n\nexport const commandInputString = (args: Record<string, unknown>, name: string) => {\n const value = commandInputValue(args, name);\n return value === undefined ? '' : String(value);\n};\n\nexport const commandActionInput = (\n definition: CommandDefinition,\n args: Record<string, unknown>,\n options: Record<string, unknown>,\n) =>\n normalizeCommandInputAliases(definition, {\n ...normalizeArgumentInput(definition, args),\n ...options,\n });\n\nexport const normalizeCommandInputAliases = <TInput extends Record<string, unknown>>(\n definition: CommandDefinition,\n input: TInput,\n) => ({\n ...input,\n ...Object.fromEntries(\n (definition.options ?? []).flatMap((option) => {\n const name = optionInputName(option);\n if (input[name] !== undefined) return [];\n\n const alias = optionAliasInputNames(option).find(\n (candidate) => input[candidate] !== undefined,\n );\n return alias ? [[name, input[alias]]] : [];\n }),\n ),\n});\n\nconst normalizeArgumentInput = (definition: CommandDefinition, args: Record<string, unknown>) => ({\n ...args,\n ...Object.fromEntries(\n (definition.arguments ?? [])\n .map((argument): [string, unknown] | undefined => {\n const name = argumentName(argument.synopsis);\n const value = commandInputValue(args, name);\n return value === undefined ? undefined : [name, value];\n })\n .filter((entry): entry is [string, unknown] => entry !== undefined),\n ),\n});\n\nexport const commandDefinitionToZodInputSchema = (definition: CommandDefinition) => {\n const jsonSchema = commandDefinitionToInputSchema(definition);\n const shape = Object.fromEntries(\n Object.entries(jsonSchema.properties).map(([name, property]) => [\n name,\n zodInputProperty(property as JsonSchemaProperty, jsonSchema.required.includes(name)),\n ]),\n );\n\n return z.object(shape);\n};\n\nexport const commandDefinitionToInputSchema = (definition: CommandDefinition) => ({\n type: 'object',\n properties: Object.fromEntries([\n ...(definition.arguments ?? []).map((argument) => [\n argumentName(argument.synopsis),\n argumentSchema(argument),\n ]),\n ...(definition.options ?? []).map((option) => [\n optionInputName(option),\n option.schema ?? optionSchema(option),\n ]),\n ]),\n required: [\n ...(definition.arguments ?? [])\n .filter((argument) => isRequiredSynopsis(argument.synopsis))\n .map((argument) => argumentName(argument.synopsis)),\n ...(definition.options ?? []).filter((option) => option.config?.required).map(optionInputName),\n ],\n additionalProperties: false,\n});\n\nconst zodInputProperty = (property: JsonSchemaProperty, required: boolean) => {\n const schema = zodProperty(property);\n const describedSchema = property.description ? schema.describe(property.description) : schema;\n\n return required ? describedSchema : describedSchema.optional();\n};\n\nconst zodProperty = (property: JsonSchemaProperty): ZodType => {\n if (property.type === 'array') return z.array(z.string());\n if (property.type === 'boolean') return z.boolean();\n if (property.type === 'number') return z.number();\n return z.string();\n};\n\nconst argumentSchema = (argument: CommandArgumentDefinition): JsonSchemaProperty => ({\n type: isVariadicSynopsis(argument.synopsis) ? 'array' : 'string',\n description: argument.description,\n ...(isVariadicSynopsis(argument.synopsis) ? { items: { type: 'string' as const } } : {}),\n});\n\nconst optionSchema = (option: CommandOptionDefinition): JsonSchemaProperty => ({\n type: option.value ? 'string' : 'boolean',\n description: option.description,\n});\n\nconst argumentName = (synopsis: string) => {\n return kebabToCamel(\n synopsis\n .replace(/[<>[\\].]/g, '')\n .replace(/_([a-z])/g, (_match, letter: string) => letter.toUpperCase()),\n );\n};\n\nexport const commandOptionSynopsis = (option: CommandOptionDefinition) => {\n const longName = `${option.negated ? '--no-' : '--'}${option.name}`;\n const aliases = (option.aliases ?? []).map((alias) =>\n alias.length === 1 ? `-${alias}` : `--${alias}`,\n );\n return [...aliases, `${longName}${option.value ? ` ${option.value}` : ''}`].join(', ');\n};\n\nconst optionInputName = (option: CommandOptionDefinition) => kebabToCamel(option.name);\n\nconst optionAliasInputNames = (option: CommandOptionDefinition) =>\n (option.aliases ?? []).map(kebabToCamel);\n\nconst kebabToCamel = (value: string) =>\n value.replace(/-([a-z])/g, (_match, letter: string) => letter.toUpperCase());\n\nconst isRequiredSynopsis = (synopsis: string) => synopsis.trim().startsWith('<');\n\nconst isVariadicSynopsis = (synopsis: string) => synopsis.includes('...');\n","export const DEFAULT_MCP_SERVER_VERSION = '0.0.0';\nexport const DEFAULT_RESOURCE_MIME_TYPE = 'application/json';\nexport const MCP_PROTOCOL_VERSION = '2024-11-05';\nexport const JSON_RPC_METHOD_NOT_FOUND = -32601;\nexport const JSON_RPC_INTERNAL_ERROR = -32603;\nexport const JSON_RPC_VERSION = '2.0';\nexport const MCP_STATUS_COMPLETED = 'completed';\nexport const MCP_STATUS_ERROR = 'error';\nexport const MCP_TEXT_CONTENT_TYPE = 'text';\nexport const TOOL_NAME_SEPARATOR = '_';\nexport const COMMAND_NAME_SEPARATOR = ' ';\nexport const EMPTY_DISPLAY_VALUE = '<empty>';\nexport const RESULT_ENVELOPE_DATA_KEY = 'data';\nexport const RESULT_ENVELOPE_PROGRESS_KEY = 'progress';\nexport const PROGRESS_LIST_KEYS = ['items', 'threads', 'files', 'events', 'messages'];\nexport const CURSOR_KEYS = ['nextCursor', 'nextPageToken'];\nexport const MCP_METHOD_INITIALIZE = 'initialize';\nexport const MCP_METHOD_TOOLS_LIST = 'tools/list';\nexport const MCP_METHOD_TOOLS_CALL = 'tools/call';\nexport const MCP_METHOD_RESOURCES_LIST = 'resources/list';\nexport const MCP_METHOD_RESOURCES_TEMPLATES_LIST = 'resources/templates/list';\nexport const MCP_METHOD_RESOURCES_READ = 'resources/read';\n","import { EMPTY_DISPLAY_VALUE } from './constants';\n\nexport const assertToolName = (expectedName: string, actualName: string | undefined) => {\n if (actualName !== expectedName) {\n throwUnknownTool(actualName);\n }\n};\n\nexport const throwUnknownTool = (name: string | undefined): never => {\n throw new Error(`Unknown tool: ${name ?? EMPTY_DISPLAY_VALUE}`);\n};\n","import { type CommandDefinition, isCommandMcpToolMetadata } from '../command/metadata';\nimport {\n CURSOR_KEYS,\n MCP_STATUS_COMPLETED,\n MCP_STATUS_ERROR,\n MCP_TEXT_CONTENT_TYPE,\n PROGRESS_LIST_KEYS,\n RESULT_ENVELOPE_DATA_KEY,\n RESULT_ENVELOPE_PROGRESS_KEY,\n} from './constants';\nimport type { McpResultEnvelope } from './types';\n\nexport const toolResult = (result: unknown, startedAt: number) => {\n const envelope = resultEnvelope(result);\n const data = envelope.data;\n const structuredContent = {\n status: MCP_STATUS_COMPLETED,\n progress: progressSummary(data, startedAt, envelope.progress),\n data,\n };\n return {\n structuredContent,\n content: [{ type: MCP_TEXT_CONTENT_TYPE, text: JSON.stringify(structuredContent, null, 2) }],\n };\n};\n\nexport const toolErrorResult = (caught: unknown, startedAt = Date.now()) => {\n const message = caught instanceof Error ? caught.message : String(caught);\n const structuredContent = {\n status: MCP_STATUS_ERROR,\n progress: { elapsedMs: elapsedMs(startedAt), errors: [message] },\n error: { message },\n };\n return {\n structuredContent,\n content: [{ type: MCP_TEXT_CONTENT_TYPE, text: JSON.stringify(structuredContent, null, 2) }],\n };\n};\n\nexport const commandProgressSummary = (data: unknown, command: CommandDefinition) => {\n const mcp = command.mcp;\n if (!isCommandMcpToolMetadata(mcp) || mcp.readOnly) {\n return undefined;\n }\n\n const processed = processedOf(data) ?? countOf(data) ?? 1;\n return { changed: processed, matched: processed, processed, skipped: 0 };\n};\n\nconst progressSummary = (\n data: unknown,\n startedAt: number,\n progress: Record<string, unknown> | undefined,\n) => {\n const summary = {\n count: countOf(data),\n elapsedMs: elapsedMs(startedAt),\n errors: [] as string[],\n nextCursor: cursorOf(data),\n processed: processedOf(data),\n ...progress,\n };\n\n return Object.fromEntries(Object.entries(summary).filter(([, value]) => value !== undefined));\n};\n\nconst resultEnvelope = (result: unknown): McpResultEnvelope => {\n if (\n isRecord(result) &&\n RESULT_ENVELOPE_DATA_KEY in result &&\n RESULT_ENVELOPE_PROGRESS_KEY in result\n ) {\n return {\n data: result[RESULT_ENVELOPE_DATA_KEY],\n progress: recordOf(result[RESULT_ENVELOPE_PROGRESS_KEY]),\n };\n }\n\n return { data: result };\n};\n\nconst recordOf = (value: unknown) => (isRecord(value) ? value : undefined);\n\nconst elapsedMs = (startedAt: number) => Date.now() - startedAt;\n\nconst countOf = (data: unknown) => {\n if (!isRecord(data)) return undefined;\n return typeof data.count === 'number' ? data.count : processedOf(data);\n};\n\nconst processedOf = (data: unknown) => {\n if (Array.isArray(data)) return data.length;\n if (!isRecord(data)) return undefined;\n\n const list = PROGRESS_LIST_KEYS.map((key) => data[key]).find(Array.isArray);\n return list ? list.length : undefined;\n};\n\nconst cursorOf = (data: unknown) => {\n if (!isRecord(data)) return undefined;\n const cursor = CURSOR_KEYS.map((key) => data[key]).find((value) => typeof value === 'string');\n return typeof cursor === 'string' ? cursor : undefined;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n","import { isCommandMcpResourceMetadata } from '../command/metadata';\nimport { DEFAULT_RESOURCE_MIME_TYPE } from './constants';\nimport type {\n CommandMcpRoute,\n CommandResourceRoute,\n McpResourceDefinition,\n McpResourceTemplateDefinition,\n ResourceReadParams,\n} from './types';\n\nexport const commandMcpRouteToResourceRoute = (route: CommandMcpRoute): CommandResourceRoute[] => {\n const mcp = route.command.mcp;\n if (!isCommandMcpResourceMetadata(mcp)) return [];\n\n const inputNames = resourceInputNames(mcp.uriTemplate);\n\n return [\n {\n command: route.command,\n handler: route.handler,\n inputNames,\n mimeType: mcp.mimeType ?? DEFAULT_RESOURCE_MIME_TYPE,\n name: route.command.name,\n uriTemplate: mcp.uriTemplate,\n },\n ];\n};\n\nexport const commandResourceRouteToResource = (\n route: CommandResourceRoute,\n): McpResourceDefinition => ({\n uri: route.uriTemplate,\n name: route.name,\n description: route.command.description,\n mimeType: route.mimeType,\n});\n\nexport const commandResourceRouteToResourceTemplate = (\n route: CommandResourceRoute,\n): McpResourceTemplateDefinition => ({\n uriTemplate: route.uriTemplate,\n name: route.name,\n description: route.command.description,\n mimeType: route.mimeType,\n});\n\nexport const commandResourceInput = (route: CommandResourceRoute, uri: string | undefined) => {\n if (!uri) return undefined;\n\n const prefix = route.uriTemplate.split('{')[0] ?? '';\n if (!uri.startsWith(prefix)) return undefined;\n\n const values = uri.slice(prefix.length).split('/').filter(Boolean).map(decodeURIComponent);\n if (values.length !== route.inputNames.length) return undefined;\n\n return Object.fromEntries(\n route.inputNames.map((inputName, index) => [inputName, values[index] ?? '']),\n );\n};\n\nexport const isResourceTemplate = (uri: string) => resourceInputNames(uri).length > 0;\n\nexport const resourceResult = (params: unknown, data: unknown) => {\n const resourceRead = params as ResourceReadParams;\n return {\n contents: [\n {\n uri: resourceRead.uri ?? '',\n mimeType: DEFAULT_RESOURCE_MIME_TYPE,\n text: JSON.stringify({ data }, null, 2),\n },\n ],\n };\n};\n\nconst resourceInputNames = (uriTemplate: string) =>\n [...uriTemplate.matchAll(/\\{([^}]+)\\}/g)].flatMap((match) => {\n const inputName = match[1];\n return inputName ? [inputName] : [];\n });\n","import { type ZodType, z } from 'zod';\nimport { MCP_STATUS_COMPLETED, MCP_STATUS_ERROR } from './constants';\n\nexport const mcpToolOutputSchema = (dataSchema: ZodType) => ({\n type: 'object',\n properties: {\n data: z.toJSONSchema(dataSchema),\n progress: {\n type: 'object',\n properties: {\n count: { type: 'number' },\n elapsedMs: { type: 'number' },\n changed: { type: 'number' },\n errors: { type: 'array', items: { type: 'string' } },\n matched: { type: 'number' },\n nextCursor: { type: 'string' },\n processed: { type: 'number' },\n skipped: { type: 'number' },\n },\n required: ['elapsedMs', 'errors'],\n additionalProperties: false,\n },\n status: { type: 'string', enum: [MCP_STATUS_COMPLETED, MCP_STATUS_ERROR] },\n },\n required: ['data', 'progress', 'status'],\n additionalProperties: false,\n});\n\nexport const emptyMcpInputSchema = {\n type: 'object',\n properties: {},\n required: [],\n additionalProperties: false,\n} as const;\n","import type { Program } from '@caporal/core';\nimport type { ZodType, z } from 'zod';\nimport { createCommandMcpRoute } from '../mcp/router';\nimport type { CommandMcpRoute } from '../mcp/types';\nimport { type CommandDefinition, commandActionInput, registerCommand } from './metadata';\n\ntype CommandActionContext = {\n args: Record<string, unknown>;\n options: Record<string, unknown>;\n};\n\ntype ContextFactory<TContext> = () => Promise<TContext> | TContext;\n\ntype Handler<TInput, TResult> = {\n handle(input: TInput): Promise<TResult> | TResult;\n}['handle'];\n\ntype ContextHandler<TContext, TInput, TResult> = {\n handle(context: TContext, input: TInput): Promise<TResult> | TResult;\n}['handle'];\n\ntype CommandRegistrarContext<TContext> = {\n binName?: string;\n getContext?: ContextFactory<TContext>;\n};\n\nexport type CommandAdaptersReturn<TContext, THandler> = {\n cli: (program: Program, context?: CommandRegistrarContext<TContext>) => void;\n handler: THandler;\n mcp: (getContext?: ContextFactory<TContext>) => CommandMcpRoute;\n metadata: CommandDefinition;\n};\n\ntype CommandPrint<TContext, TInputSchema extends ZodType, TResult> = (\n output: TResult,\n input: z.infer<TInputSchema>,\n context?: TContext,\n) => Promise<void> | void;\n\ntype BaseCommandAdaptersOptions<\n TInputSchema extends ZodType,\n TOutputSchema extends ZodType,\n TResult,\n> = {\n metadata: CommandDefinition<TInputSchema, TOutputSchema>;\n print?: CommandPrint<unknown, TInputSchema, TResult>;\n};\n\ntype CommandAdaptersOptions<\n TInputSchema extends ZodType,\n TOutputSchema extends ZodType,\n TResult,\n> = BaseCommandAdaptersOptions<TInputSchema, TOutputSchema, TResult> & {\n handler: Handler<z.infer<TInputSchema>, TResult>;\n};\n\ntype ContextCommandAdaptersOptions<\n TContext,\n TInputSchema extends ZodType,\n TOutputSchema extends ZodType,\n TResult,\n> = Omit<BaseCommandAdaptersOptions<TInputSchema, TOutputSchema, TResult>, 'print'> & {\n handler: ContextHandler<TContext, z.infer<TInputSchema>, TResult>;\n print?: CommandPrint<TContext, TInputSchema, TResult>;\n};\n\nexport function createCommandAdapters<\n TInputSchema extends ZodType = ZodType<Record<string, unknown>>,\n TOutputSchema extends ZodType = ZodType,\n TResult = unknown,\n>(\n options: CommandAdaptersOptions<TInputSchema, TOutputSchema, TResult>,\n): CommandAdaptersReturn<unknown, Handler<z.infer<TInputSchema>, TResult>>;\nexport function createCommandAdapters<\n TContext,\n TInputSchema extends ZodType = ZodType<Record<string, unknown>>,\n TOutputSchema extends ZodType = ZodType,\n TResult = unknown,\n>(\n options: ContextCommandAdaptersOptions<TContext, TInputSchema, TOutputSchema, TResult>,\n): CommandAdaptersReturn<TContext, ContextHandler<TContext, z.infer<TInputSchema>, TResult>>;\nexport function createCommandAdapters<\n TContext,\n TInputSchema extends ZodType,\n TOutputSchema extends ZodType,\n TResult,\n>({\n handler,\n metadata,\n print,\n}:\n | CommandAdaptersOptions<TInputSchema, TOutputSchema, TResult>\n | ContextCommandAdaptersOptions<TContext, TInputSchema, TOutputSchema, TResult>) {\n const parseInput = ({ args, options }: CommandActionContext) =>\n metadata.inputSchema.parse(commandActionInput(metadata, args, options));\n\n const run = async (input: z.infer<TInputSchema>, context?: TContext) => {\n if (context === undefined) {\n return (handler as (input: z.infer<TInputSchema>) => Promise<TResult> | TResult)(input);\n }\n\n return (\n handler as (context: TContext, input: z.infer<TInputSchema>) => Promise<TResult> | TResult\n )(context, input);\n };\n\n return {\n metadata,\n cli: (program: Program, context?: CommandRegistrarContext<TContext>) => {\n registerCommand(program, metadata).action(async ({ args, options }) => {\n const input = parseInput({ args, options });\n const getContext = context?.getContext;\n const resolvedContext = getContext ? await getContext() : undefined;\n const output = await run(input, resolvedContext);\n\n await print?.(output, input, resolvedContext);\n return typeof output === 'number' ? output : undefined;\n });\n },\n handler,\n mcp: (getContext?: ContextFactory<TContext>): CommandMcpRoute =>\n createCommandMcpRoute({\n command: metadata,\n inputSchema: metadata.inputSchema,\n outputSchema: metadata.outputSchema,\n handler: async (args) =>\n run(args as z.infer<TInputSchema>, getContext ? await getContext() : undefined),\n }),\n };\n}\n","import { readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { commandDefinitionsFromModules, loadCommandModules } from '../command/loader';\nimport type { CommandDefinition } from '../command/metadata';\nimport { commandOptionSynopsis } from '../command/metadata';\n\nexport type GenerateReadmeCommandDocsOptions = {\n binName: string;\n commandDefinitions?: readonly CommandDefinition[];\n commandsDir?: string;\n markerName?: string;\n readmePath?: string;\n};\n\nexport const generateReadmeCommandDocs = async ({\n binName,\n commandDefinitions = [],\n commandsDir = join(process.cwd(), 'src', 'commands'),\n markerName = 'COMMANDS',\n readmePath = 'README.md',\n}: GenerateReadmeCommandDocsOptions) => {\n const readme = readFileSync(readmePath, 'utf8');\n const loadedCommandDefinitions = commandDefinitionsFromModules(\n await loadCommandModules(commandsDir),\n );\n const generated = formatCommandDocs(\n [...commandDefinitions, ...loadedCommandDefinitions],\n binName,\n );\n writeFileSync(readmePath, replaceMarker(readme, markerName, generated), 'utf8');\n};\n\nexport const formatCommandDocs = (commands: readonly CommandDefinition[], binName: string) => {\n const visibleCommands = commands.filter(isVisibleCommand).sort(commandSort);\n const groups = [...parentCommands(visibleCommands)].map(([parent, subcommands]) =>\n parentCommandDocs(parent, subcommands, binName),\n );\n const standaloneCommands = visibleCommands.filter((command) => !command.name.includes(' '));\n if (standaloneCommands.length > 0) groups.push(otherCommandDocs(standaloneCommands, binName));\n\n const lines = groups.flatMap((commandLines, index) =>\n index === 0 ? commandLines : ['', ...commandLines],\n );\n return ['```sh', ...lines, '```'].join('\\n');\n};\n\nconst isVisibleCommand = (command: CommandDefinition) => command.config?.visible !== false;\n\nconst commandSort = (left: CommandDefinition, right: CommandDefinition) =>\n (left.order ?? 0) - (right.order ?? 0) || left.name.localeCompare(right.name);\n\nconst parentCommands = (commands: readonly CommandDefinition[]) => {\n const groups = new Map<string, CommandDefinition[]>();\n for (const command of commands) {\n const [parent, subcommand] = command.name.split(' ');\n if (!parent || !subcommand) continue;\n groups.set(parent, [...(groups.get(parent) ?? []), command]);\n }\n return [...groups.entries()].sort(([left], [right]) => left.localeCompare(right));\n};\n\nconst parentCommandDocs = (\n parent: string,\n commands: readonly CommandDefinition[],\n binName: string,\n) => [`# ${parent} commands`, ...commands.flatMap((command) => commandDocs(command, binName))];\n\nconst otherCommandDocs = (commands: readonly CommandDefinition[], binName: string) => [\n '# other commands',\n ...commands.flatMap((command) => commandDocs(command, binName)),\n];\n\nconst commandDocs = (command: CommandDefinition, binName: string) => [\n `${binName} ${command.name}${usageSuffix(command)}`,\n];\n\nconst usageSuffix = (command: CommandDefinition) => {\n const args = command.arguments?.map((arg) => arg.synopsis) ?? [];\n const options = command.options?.map((option) => optionUsage(option)) ?? [];\n const usage = [...args, ...options];\n return usage.length > 0 ? ` ${usage.join(' ')}` : '';\n};\n\nconst optionUsage = (option: NonNullable<CommandDefinition['options']>[number]) => {\n const synopsis = option.value ? commandOptionSynopsis(option) : `--${option.name}`;\n return option.config?.required ? synopsis : `[${synopsis}]`;\n};\n\nconst replaceMarker = (source: string, markerName: string, replacement: string) => {\n const startMarker = `<!-- <DYNFIELD:${markerName}> -->`;\n const endMarker = `<!-- </DYNFIELD:${markerName}> -->`;\n const hasOneMarkerPair =\n countOccurrences(source, startMarker) === 1 && countOccurrences(source, endMarker) === 1;\n if (!hasOneMarkerPair) throw new Error(`${readmeMarkerError(startMarker, endMarker)}`);\n\n const before = source.slice(0, source.indexOf(startMarker) + startMarker.length);\n const after = source.slice(source.indexOf(endMarker));\n return `${before}\\n${replacement}\\n${after}`;\n};\n\nconst readmeMarkerError = (startMarker: string, endMarker: string) =>\n `README must contain one ${startMarker} and one ${endMarker}`;\n\nconst countOccurrences = (source: string, value: string) => source.split(value).length - 1;\n","import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport {\n type CommandAdapterExport,\n commandExportsFromModules,\n isCommandAdapterExport,\n loadCommandModules,\n} from '../command/loader';\nimport { DEFAULT_COMMANDS_DIR } from '../constants';\nimport { packageCommandMetadata } from '../package/metadata';\nimport { createCommandMcpRouter } from './router';\nimport { createMcpServer } from './server';\nimport type {\n CommandMcpRoute,\n CommandMcpRouteFactory,\n CreateCommandMcpServerOptions,\n CreatePackageCommandMcpServerOptions,\n} from './types';\n\nexport const loadCommandMcpRoutes = async <TContext>(\n commandsDir: string,\n getContext: () => Promise<TContext> | TContext = () => undefined as TContext,\n): Promise<CommandMcpRoute[]> => {\n const modules = await loadCommandModules(commandsDir);\n const factories = commandExportsFromModules<CommandAdapterExport>(modules, (_name, value) =>\n isCommandAdapterExport(value),\n ).flatMap((command) => (command.mcp ? [command.mcp as CommandMcpRouteFactory<TContext>] : []));\n\n return factories.map((factory) => factory(getContext)).filter((route) => route.command.mcp);\n};\n\nexport const createCommandMcpServer = async <TContext>({\n commandsDir,\n getContext,\n importMetaUrl,\n name,\n prefix,\n}: CreateCommandMcpServerOptions<TContext>) => {\n const commandDirectory =\n commandsDir ?? join(dirname(fileURLToPath(importMetaUrl)), DEFAULT_COMMANDS_DIR);\n const { tools, resources, resourceTemplates, callTool, readResource } = createCommandMcpRouter({\n prefix,\n routes: await loadCommandMcpRoutes(commandDirectory, getContext),\n });\n\n return createMcpServer({ name, tools, resources, resourceTemplates, callTool, readResource });\n};\n\nexport const startCommandMcpServer = async <TContext>(\n options: CreateCommandMcpServerOptions<TContext>,\n) => {\n await (await createCommandMcpServer(options)).start();\n};\n\nexport const startPackageCommandMcpServer = async <TContext>({\n importMetaUrl,\n mcpServerPrefix,\n name,\n prefix,\n ...options\n}: CreatePackageCommandMcpServerOptions<TContext>) => {\n const metadata = packageCommandMetadata(importMetaUrl, { mcpServerPrefix });\n\n await startCommandMcpServer({\n ...options,\n importMetaUrl,\n name: name ?? metadata.mcpServerName,\n prefix: prefix ?? metadata.mcpPrefix,\n });\n};\n","import { createInterface } from 'node:readline';\nimport {\n DEFAULT_MCP_SERVER_VERSION,\n EMPTY_DISPLAY_VALUE,\n JSON_RPC_INTERNAL_ERROR,\n JSON_RPC_METHOD_NOT_FOUND,\n JSON_RPC_VERSION,\n MCP_METHOD_INITIALIZE,\n MCP_METHOD_RESOURCES_LIST,\n MCP_METHOD_RESOURCES_READ,\n MCP_METHOD_RESOURCES_TEMPLATES_LIST,\n MCP_METHOD_TOOLS_CALL,\n MCP_METHOD_TOOLS_LIST,\n MCP_PROTOCOL_VERSION,\n} from './constants';\nimport { assertToolName } from './errors';\nimport { toolErrorResult, toolResult } from './progress';\nimport { resourceResult } from './resources';\nimport type {\n CreateMcpServerOptions,\n CreateSingleToolMcpServerOptions,\n JsonRpcRequest,\n ToolCallParams,\n} from './types';\n\nexport const createSingleToolMcpServer = ({\n serverName,\n tool,\n callTool,\n}: CreateSingleToolMcpServerOptions) => {\n return createMcpServer({\n name: serverName,\n tools: [tool],\n callTool: (params) => {\n const toolCall = params as ToolCallParams;\n assertToolName(tool.name, toolCall.name);\n return callTool(toolCall.arguments ?? {});\n },\n });\n};\n\nexport const createMcpServer = ({\n name,\n tools,\n resources = [],\n resourceTemplates = [],\n callTool,\n readResource,\n}: CreateMcpServerOptions) => {\n const send = (message: unknown) => {\n process.stdout.write(`${JSON.stringify(message)}\\n`);\n };\n\n const result = (id: JsonRpcRequest['id'], value: unknown) => {\n send({ jsonrpc: JSON_RPC_VERSION, id, result: value });\n };\n\n const error = (id: JsonRpcRequest['id'], code: number, message: string) => {\n send({ jsonrpc: JSON_RPC_VERSION, id, error: { code, message } });\n };\n\n const handleRequest = async (request: JsonRpcRequest) => {\n if (request.method === MCP_METHOD_INITIALIZE) {\n result(request.id, {\n protocolVersion: MCP_PROTOCOL_VERSION,\n capabilities: { resources: {}, tools: {} },\n serverInfo: { name, version: DEFAULT_MCP_SERVER_VERSION },\n });\n return;\n }\n\n if (request.method === MCP_METHOD_TOOLS_LIST) {\n result(request.id, { tools });\n return;\n }\n\n if (request.method === MCP_METHOD_RESOURCES_LIST) {\n result(request.id, { resources });\n return;\n }\n\n if (request.method === MCP_METHOD_RESOURCES_TEMPLATES_LIST) {\n result(request.id, { resourceTemplates });\n return;\n }\n\n if (request.method === MCP_METHOD_RESOURCES_READ) {\n if (!readResource) {\n error(\n request.id,\n JSON_RPC_METHOD_NOT_FOUND,\n `Method not found: ${MCP_METHOD_RESOURCES_READ}`,\n );\n return;\n }\n\n const startedAt = Date.now();\n try {\n result(request.id, resourceResult(request.params, await readResource(request.params)));\n } catch (caught) {\n result(request.id, toolErrorResult(caught, startedAt));\n }\n return;\n }\n\n if (request.method === MCP_METHOD_TOOLS_CALL) {\n const startedAt = Date.now();\n try {\n result(request.id, toolResult(await callTool(request.params), startedAt));\n } catch (caught) {\n result(request.id, toolErrorResult(caught, startedAt));\n }\n return;\n }\n\n if (request.id !== undefined) {\n error(\n request.id,\n JSON_RPC_METHOD_NOT_FOUND,\n `Method not found: ${request.method ?? EMPTY_DISPLAY_VALUE}`,\n );\n }\n };\n\n return {\n start: async () => {\n const input = createInterface({ input: process.stdin });\n\n for await (const line of input) {\n if (!line.trim()) continue;\n\n try {\n await handleRequest(JSON.parse(line) as JsonRpcRequest);\n } catch (caught) {\n error(\n undefined,\n JSON_RPC_INTERNAL_ERROR,\n caught instanceof Error ? caught.message : String(caught),\n );\n }\n }\n },\n };\n};\n","import { mkdirSync, rmSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { PROGRAM_NAME_ENV_SUFFIX } from '../constants';\nimport { packageEnvPrefix, packageRoot, readPackageJson } from '../package/json';\nimport { getBinDir, installCommandShim } from './shims';\n\nconst DEV_BIN_DIR_ENV_SUFFIX = '_DEV_BIN_DIR';\nconst SOURCE_CLI_PATH = 'src/cli.ts';\n\ntype DevCommandConfig = {\n binDirEnvName: string;\n cliPath: string;\n commandName: string;\n packageDir: string;\n programNameEnvName: string;\n};\n\ntype PackageDevCommandOptions = {\n commandName: string;\n};\n\ntype PackageDevCommandsOptions = {\n commandNames: readonly string[];\n};\n\nexport const installDevCommand = (config: DevCommandConfig) => {\n const binDir = getBinDir(config.binDirEnvName);\n mkdirSync(binDir, { recursive: true });\n installCommandShim(binDir, config);\n};\n\nexport const installPackageDevCommand = (\n importMetaUrl: string,\n options: PackageDevCommandOptions,\n) => {\n installDevCommand(packageDevCommandConfig(importMetaUrl, options));\n};\n\nexport const installPackageDevCommands = (\n importMetaUrl: string,\n options: PackageDevCommandsOptions,\n) => {\n for (const commandName of options.commandNames) {\n installPackageDevCommand(importMetaUrl, { commandName });\n }\n};\n\nexport const uninstallDevCommand = (\n config: Pick<DevCommandConfig, 'binDirEnvName' | 'commandName'>,\n) => {\n const binDir = getBinDir(config.binDirEnvName);\n\n rmSync(join(binDir, config.commandName), { force: true });\n rmSync(join(binDir, `${config.commandName}.cmd`), { force: true });\n};\n\nexport const uninstallPackageDevCommand = (\n importMetaUrl: string,\n options: PackageDevCommandOptions,\n) => {\n const { binDirEnvName, commandName } = packageDevCommandConfig(importMetaUrl, options);\n uninstallDevCommand({ binDirEnvName, commandName });\n};\n\nexport const uninstallPackageDevCommands = (\n importMetaUrl: string,\n options: PackageDevCommandsOptions,\n) => {\n for (const commandName of options.commandNames) {\n uninstallPackageDevCommand(importMetaUrl, { commandName });\n }\n};\n\nconst packageDevCommandConfig = (\n importMetaUrl: string,\n options: PackageDevCommandOptions,\n): DevCommandConfig => {\n const packageDir = packageRoot(importMetaUrl);\n const packageJson = readPackageJson(packageDir);\n const appEnvPrefix = packageEnvPrefix(packageJson.name);\n\n return {\n binDirEnvName: `${appEnvPrefix}${DEV_BIN_DIR_ENV_SUFFIX}`,\n cliPath: join(packageDir, SOURCE_CLI_PATH),\n commandName: options.commandName,\n packageDir,\n programNameEnvName: `${appEnvPrefix}${PROGRAM_NAME_ENV_SUFFIX}`,\n };\n};\n","import { execFileSync } from 'node:child_process';\nimport { chmodSync, rmSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nconst POSIX_SHIM_MODE = 0o755;\nconst WINDOWS_PLATFORM = 'win32';\nconst NPM_COMMAND = 'npm';\nconst NPM_WINDOWS_COMMAND = 'npm.cmd';\nconst NPM_PREFIX_ARGS = ['config', 'get', 'prefix'];\nconst COMMAND_OUTPUT_ENCODING = 'utf8';\nconst WINDOWS_NPM_DIR = ['AppData', 'Roaming', 'npm'];\nconst NODE_MODULES_BIN = ['node_modules', '.bin'];\nconst TSX_BIN = 'tsx';\nconst TSX_WINDOWS_BIN = 'tsx.cmd';\n\nexport type DevCommandShimConfig = {\n cliPath: string;\n commandName: string;\n packageDir: string;\n programNameEnvName: string;\n};\n\nexport const installCommandShim = (binDir: string, config: DevCommandShimConfig) => {\n if (process.platform === WINDOWS_PLATFORM) {\n installWindowsShim(binDir, config);\n return;\n }\n\n installPosixShim(binDir, config);\n};\n\nexport const getBinDir = (envName: string) => {\n const envValue = process.env[envName];\n\n if (envValue) {\n return envValue;\n }\n\n if (process.platform === WINDOWS_PLATFORM) {\n return getNpmPrefix() ?? join(homedir(), ...WINDOWS_NPM_DIR);\n }\n\n return join(homedir(), '.local', 'bin');\n};\n\nconst installPosixShim = (binDir: string, config: DevCommandShimConfig) => {\n const target = join(binDir, config.commandName);\n rmSync(target, { force: true });\n writeFileSync(target, getPosixShim(config));\n chmodSync(target, POSIX_SHIM_MODE);\n};\n\nconst installWindowsShim = (binDir: string, config: DevCommandShimConfig) => {\n const target = join(binDir, `${config.commandName}.cmd`);\n rmSync(target, { force: true });\n writeFileSync(target, getWindowsShim(config));\n};\n\nconst getNpmPrefix = () => {\n try {\n return execFileSync(\n process.platform === WINDOWS_PLATFORM ? NPM_WINDOWS_COMMAND : NPM_COMMAND,\n NPM_PREFIX_ARGS,\n {\n encoding: COMMAND_OUTPUT_ENCODING,\n stdio: ['ignore', 'pipe', 'ignore'],\n },\n ).trim();\n } catch {\n return null;\n }\n};\n\nconst getPosixShim = (config: DevCommandShimConfig) => {\n return `#!/usr/bin/env sh\nset -eu\nexport ${config.programNameEnvName}=${config.commandName}\nexec ${shellQuote(join(config.packageDir, ...NODE_MODULES_BIN, TSX_BIN))} ${shellQuote(config.cliPath)} \"$@\"\n`;\n};\n\nconst getWindowsShim = (config: DevCommandShimConfig) => {\n return `@echo off\nset \"${config.programNameEnvName}=${config.commandName}\"\n\"${join(config.packageDir, ...NODE_MODULES_BIN, TSX_WINDOWS_BIN)}\" \"${config.cliPath}\" %*\n`;\n};\n\nconst shellQuote = (value: string) => {\n return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n};\n"],"mappings":"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","names":["z","CompletionShell","program","join","PackageManager","require","join","dirname","join","fileURLToPath","fileURLToPath","pathToFileURL","z","EMPTY_DISPLAY_VALUE","EMPTY_DISPLAY_VALUE","z","z","z","EMPTY_DISPLAY_VALUE","readFileSync","join","join","readFileSync","parentCommands","dirname","join","fileURLToPath","EMPTY_DISPLAY_VALUE","join","dirname","fileURLToPath","rmSync","join","writeFileSync","join","rmSync","join"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "unicommand",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"import": "./dist/index.js"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@caporal/core": "^2.0.7",
|
|
13
|
+
"zod": "^4.4.3"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@biomejs/biome": "^2.4.12",
|
|
17
|
+
"@types/node": "^25.9.3",
|
|
18
|
+
"knip": "^6.4.1",
|
|
19
|
+
"tsup": "^8.5.1",
|
|
20
|
+
"typescript": "^6.0.3",
|
|
21
|
+
"@changesets/cli": "^2.31.0",
|
|
22
|
+
"husky": "^9.1.7",
|
|
23
|
+
"lint-staged": "^16.4.0"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"main": "./dist/index.js",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
33
|
+
"description": "Shared command framework for TypeScript CLIs and MCP servers",
|
|
34
|
+
"engines": {
|
|
35
|
+
"node": ">=22",
|
|
36
|
+
"pnpm": ">=10"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsup",
|
|
40
|
+
"changeset": "changeset",
|
|
41
|
+
"changeset:version": "changeset version",
|
|
42
|
+
"check": "biome check .",
|
|
43
|
+
"check:fix": "biome check --write .",
|
|
44
|
+
"knip": "knip --no-config-hints",
|
|
45
|
+
"lint-staged": "lint-staged",
|
|
46
|
+
"release": "changeset publish",
|
|
47
|
+
"typecheck": "tsc --noEmit"
|
|
48
|
+
}
|
|
49
|
+
}
|