unicommand 0.0.2 → 0.0.4

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 CHANGED
@@ -106,91 +106,6 @@ declare const setProgramHelpData: (program: Program, data: ProgramHelpData) => v
106
106
  declare const isGlobalHelpRequest: (args: readonly string[]) => boolean;
107
107
  declare const printProgramHelp: (program: Program) => Promise<void>;
108
108
 
109
- type CommandRegistrarContext$1<TContext> = {
110
- binName: string;
111
- getContext?: () => Promise<TContext> | TContext;
112
- };
113
- type CommandRegistrar<TContext> = (program: Program, context: CommandRegistrarContext$1<TContext>) => void;
114
- type RegisterCliCommandsFromDirectoryOptions<TContext> = {
115
- binName: string;
116
- commandsDir: string;
117
- getContext?: () => Promise<TContext> | TContext;
118
- program: Program;
119
- };
120
- type CreateCommandProgramOptions<TContext> = {
121
- binName: string;
122
- binNames?: readonly string[];
123
- commandsDir?: string;
124
- description: string;
125
- getContext?: () => Promise<TContext> | TContext;
126
- importMetaUrl: string;
127
- isDevRun?: boolean;
128
- packageName?: string;
129
- printVersion?: (version: string) => void;
130
- version?: string;
131
- };
132
- type RegisterParentCommandsFromDefinitionsOptions = {
133
- description?: (name: string) => string;
134
- print?: (message: string) => void;
135
- };
136
- declare const createCommandProgram: <TContext>({ binName, binNames, commandsDir, description, getContext, importMetaUrl, isDevRun, packageName, printVersion, version, }: CreateCommandProgramOptions<TContext>) => Promise<Program>;
137
- declare const registerParentCommandsFromDefinitions: (program: Program, definitions: readonly CommandDefinition[], options?: RegisterParentCommandsFromDefinitionsOptions) => void;
138
- declare const registerCliCommandsFromDirectory: <TContext>({ binName, commandsDir, getContext, program, }: RegisterCliCommandsFromDirectoryOptions<TContext>) => Promise<CommandDefinition[]>;
139
- declare const getProgramConstructor: () => new () => Program;
140
-
141
- type CliConfig<TProgram> = {
142
- createProgram: (binName: string) => TProgram | Promise<TProgram>;
143
- defaultBinName: string;
144
- envBinName: string;
145
- importMetaUrl: string;
146
- };
147
- declare const getProgramBin: (config: Pick<CliConfig<unknown>, "defaultBinName" | "envBinName" | "importMetaUrl">) => string;
148
- declare const isDirectRun: (importMetaUrl: string) => boolean;
149
-
150
- type CreateCommandCliRunnerOptions<TContext> = {
151
- binNames?: readonly string[];
152
- commandsDir?: string;
153
- defaultBinName: string;
154
- description: string;
155
- envBinName: string;
156
- getContext?: () => Promise<TContext> | TContext;
157
- importMetaUrl: string;
158
- isDevRun?: boolean;
159
- packageName?: string;
160
- printVersion?: (version: string) => void;
161
- version?: string;
162
- };
163
- type CreatePackageCommandCliRunnerOptions<TContext> = Omit<CreateCommandCliRunnerOptions<TContext>, 'defaultBinName' | 'description' | 'envBinName'> & {
164
- defaultBinName?: string;
165
- description?: string;
166
- envBinName?: string;
167
- };
168
- declare const createCliRunner: (config: CliConfig<Program>) => {
169
- isDirectRun: () => boolean;
170
- runCli: (args?: string[]) => Promise<number>;
171
- };
172
- declare const createPackageCommandCliRunner: <TContext>({ defaultBinName, envBinName, importMetaUrl, ...options }: CreatePackageCommandCliRunnerOptions<TContext>) => {
173
- isDirectRun: () => boolean;
174
- runCli: (args?: string[]) => Promise<number>;
175
- };
176
- declare const createCommandCliRunner: <TContext>({ binNames, commandsDir, defaultBinName, description, envBinName, getContext, importMetaUrl, isDevRun, packageName, printVersion, version, }: CreateCommandCliRunnerOptions<TContext>) => {
177
- isDirectRun: () => boolean;
178
- runCli: (args?: string[]) => Promise<number>;
179
- };
180
-
181
- declare enum PackageManager {
182
- Npm = "npm",
183
- Pnpm = "pnpm",
184
- Yarn = "yarn"
185
- }
186
- type RegisterUpdateCommandOptions = {
187
- isDevRun: boolean;
188
- packageName: string;
189
- version?: string;
190
- };
191
- declare const registerUpdateCommand: (program: Program, options: RegisterUpdateCommandOptions) => void;
192
- declare function getPackageManagerFromPath(globalBinPath: string): PackageManager | null;
193
-
194
109
  type McpToolDefinition = {
195
110
  name: string;
196
111
  description: string;
@@ -258,6 +173,7 @@ type CreateSingleToolMcpServerOptions = {
258
173
  type CreateCommandMcpServerOptions<TContext> = {
259
174
  commandsDir?: string;
260
175
  getContext?: () => Promise<TContext> | TContext;
176
+ importCommandModule?: CommandModuleImporter;
261
177
  importMetaUrl: string;
262
178
  name: string;
263
179
  prefix?: string;
@@ -286,12 +202,12 @@ type Handler<TInput, TResult> = {
286
202
  type ContextHandler<TContext, TInput, TResult> = {
287
203
  handle(context: TContext, input: TInput): Promise<TResult> | TResult;
288
204
  }['handle'];
289
- type CommandRegistrarContext<TContext> = {
205
+ type CommandRegistrarContext$1<TContext> = {
290
206
  binName?: string;
291
207
  getContext?: ContextFactory<TContext>;
292
208
  };
293
209
  type CommandAdaptersReturn<TContext, THandler> = {
294
- cli: (program: Program, context?: CommandRegistrarContext<TContext>) => void;
210
+ cli: (program: Program, context?: CommandRegistrarContext$1<TContext>) => void;
295
211
  handler: THandler;
296
212
  mcp: (getContext?: ContextFactory<TContext>) => CommandMcpRoute;
297
213
  metadata: CommandDefinition;
@@ -312,13 +228,102 @@ declare function createCommandAdapters<TInputSchema extends ZodType = ZodType<Re
312
228
  declare function createCommandAdapters<TContext, TInputSchema extends ZodType = ZodType<Record<string, unknown>>, TOutputSchema extends ZodType = ZodType, TResult = unknown>(options: ContextCommandAdaptersOptions<TContext, TInputSchema, TOutputSchema, TResult>): CommandAdaptersReturn<TContext, ContextHandler<TContext, z.infer<TInputSchema>, TResult>>;
313
229
 
314
230
  type CommandModule = Record<string, unknown>;
231
+ type CommandModuleImporter = (file: string) => Promise<CommandModule>;
315
232
  type CommandAdapterExport = Pick<CommandAdaptersReturn<unknown, unknown>, 'cli'> & Partial<Pick<CommandAdaptersReturn<unknown, unknown>, 'mcp' | 'metadata'>>;
316
- declare const loadCommandModules: (commandsDir: string) => Promise<CommandModule[]>;
317
- declare const loadCommandModulesFromFiles: (files: readonly string[]) => Promise<CommandModule[]>;
233
+ declare const loadCommandModules: (commandsDir: string, importModule?: CommandModuleImporter) => Promise<CommandModule[]>;
234
+ declare const loadCommandModulesFromFiles: (files: readonly string[], importModule?: CommandModuleImporter) => Promise<CommandModule[]>;
318
235
  declare const commandDefinitionsFromModules: (modules: readonly CommandModule[]) => CommandDefinition[];
319
236
  declare const commandExportsFromModules: <TExport>(modules: readonly CommandModule[], isExport: (name: string, value: unknown) => boolean) => TExport[];
320
237
  declare const isCommandAdapterExport: (value: unknown) => value is CommandAdapterExport;
321
238
 
239
+ type CommandRegistrarContext<TContext> = {
240
+ binName: string;
241
+ getContext?: () => Promise<TContext> | TContext;
242
+ };
243
+ type CommandRegistrar<TContext> = (program: Program, context: CommandRegistrarContext<TContext>) => void;
244
+ type RegisterCliCommandsFromDirectoryOptions<TContext> = {
245
+ binName: string;
246
+ commandsDir: string;
247
+ getContext?: () => Promise<TContext> | TContext;
248
+ importCommandModule?: CommandModuleImporter;
249
+ program: Program;
250
+ };
251
+ type CreateCommandProgramOptions<TContext> = {
252
+ binName: string;
253
+ binNames?: readonly string[];
254
+ commandsDir?: string;
255
+ description: string;
256
+ getContext?: () => Promise<TContext> | TContext;
257
+ importCommandModule?: CommandModuleImporter;
258
+ importMetaUrl: string;
259
+ isDevRun?: boolean;
260
+ packageName?: string;
261
+ printVersion?: (version: string) => void;
262
+ version?: string;
263
+ };
264
+ type RegisterParentCommandsFromDefinitionsOptions = {
265
+ description?: (name: string) => string;
266
+ print?: (message: string) => void;
267
+ };
268
+ declare const createCommandProgram: <TContext>({ binName, binNames, commandsDir, description, getContext, importCommandModule, importMetaUrl, isDevRun, packageName, printVersion, version, }: CreateCommandProgramOptions<TContext>) => Promise<Program>;
269
+ declare const registerParentCommandsFromDefinitions: (program: Program, definitions: readonly CommandDefinition[], options?: RegisterParentCommandsFromDefinitionsOptions) => void;
270
+ declare const registerCliCommandsFromDirectory: <TContext>({ binName, commandsDir, getContext, importCommandModule, program, }: RegisterCliCommandsFromDirectoryOptions<TContext>) => Promise<CommandDefinition[]>;
271
+ declare const getProgramConstructor: () => new () => Program;
272
+
273
+ type CliConfig<TProgram> = {
274
+ createProgram: (binName: string) => TProgram | Promise<TProgram>;
275
+ defaultBinName: string;
276
+ envBinName: string;
277
+ importMetaUrl: string;
278
+ };
279
+ declare const getProgramBin: (config: Pick<CliConfig<unknown>, "defaultBinName" | "envBinName" | "importMetaUrl">) => string;
280
+ declare const isDirectRun: (importMetaUrl: string) => boolean;
281
+
282
+ type CreateCommandCliRunnerOptions<TContext> = {
283
+ binNames?: readonly string[];
284
+ commandsDir?: string;
285
+ defaultBinName: string;
286
+ description: string;
287
+ envBinName: string;
288
+ getContext?: () => Promise<TContext> | TContext;
289
+ importCommandModule?: CommandModuleImporter;
290
+ importMetaUrl: string;
291
+ isDevRun?: boolean;
292
+ packageName?: string;
293
+ printVersion?: (version: string) => void;
294
+ version?: string;
295
+ };
296
+ type CreatePackageCommandCliRunnerOptions<TContext> = Omit<CreateCommandCliRunnerOptions<TContext>, 'defaultBinName' | 'description' | 'envBinName'> & {
297
+ defaultBinName?: string;
298
+ description?: string;
299
+ envBinName?: string;
300
+ };
301
+ declare const createCliRunner: (config: CliConfig<Program>) => {
302
+ isDirectRun: () => boolean;
303
+ runCli: (args?: string[]) => Promise<number>;
304
+ };
305
+ declare const createPackageCommandCliRunner: <TContext>({ defaultBinName, envBinName, importMetaUrl, ...options }: CreatePackageCommandCliRunnerOptions<TContext>) => {
306
+ isDirectRun: () => boolean;
307
+ runCli: (args?: string[]) => Promise<number>;
308
+ };
309
+ declare const createCommandCliRunner: <TContext>({ binNames, commandsDir, defaultBinName, description, envBinName, getContext, importCommandModule, importMetaUrl, isDevRun, packageName, printVersion, version, }: CreateCommandCliRunnerOptions<TContext>) => {
310
+ isDirectRun: () => boolean;
311
+ runCli: (args?: string[]) => Promise<number>;
312
+ };
313
+
314
+ declare enum PackageManager {
315
+ Npm = "npm",
316
+ Pnpm = "pnpm",
317
+ Yarn = "yarn"
318
+ }
319
+ type RegisterUpdateCommandOptions = {
320
+ isDevRun: boolean;
321
+ packageName: string;
322
+ version?: string;
323
+ };
324
+ declare const registerUpdateCommand: (program: Program, options: RegisterUpdateCommandOptions) => void;
325
+ declare function getPackageManagerFromPath(globalBinPath: string): PackageManager | null;
326
+
322
327
  declare const DEFAULT_COMMANDS_DIR = "commands";
323
328
  declare const PROGRAM_NAME_ENV_SUFFIX = "_PROG_NAME";
324
329
 
@@ -326,14 +331,15 @@ type GenerateReadmeCommandDocsOptions = {
326
331
  binName: string;
327
332
  commandDefinitions?: readonly CommandDefinition[];
328
333
  commandsDir?: string;
334
+ importCommandModule?: CommandModuleImporter;
329
335
  markerName?: string;
330
336
  readmePath?: string;
331
337
  };
332
- declare const generateReadmeCommandDocs: ({ binName, commandDefinitions, commandsDir, markerName, readmePath, }: GenerateReadmeCommandDocsOptions) => Promise<void>;
338
+ declare const generateReadmeCommandDocs: ({ binName, commandDefinitions, commandsDir, importCommandModule, markerName, readmePath, }: GenerateReadmeCommandDocsOptions) => Promise<void>;
333
339
  declare const formatCommandDocs: (commands: readonly CommandDefinition[], binName: string) => string;
334
340
 
335
- declare const loadCommandMcpRoutes: <TContext>(commandsDir: string, getContext?: () => Promise<TContext> | TContext) => Promise<CommandMcpRoute[]>;
336
- declare const createCommandMcpServer: <TContext>({ commandsDir, getContext, importMetaUrl, name, prefix, }: CreateCommandMcpServerOptions<TContext>) => Promise<{
341
+ declare const loadCommandMcpRoutes: <TContext>(commandsDir: string, getContext?: () => Promise<TContext> | TContext, importCommandModule?: CommandModuleImporter) => Promise<CommandMcpRoute[]>;
342
+ declare const createCommandMcpServer: <TContext>({ commandsDir, getContext, importCommandModule, importMetaUrl, name, prefix, }: CreateCommandMcpServerOptions<TContext>) => Promise<{
337
343
  start: () => Promise<void>;
338
344
  }>;
339
345
  declare const startCommandMcpServer: <TContext>(options: CreateCommandMcpServerOptions<TContext>) => Promise<void>;
@@ -613,4 +619,4 @@ type DevCommandShimConfig = {
613
619
  declare const installCommandShim: (binDir: string, config: DevCommandShimConfig) => void;
614
620
  declare const getBinDir: (envName: string) => string;
615
621
 
616
- export { type CliConfig, type CommandAdapterExport, type CommandAdaptersReturn, type CommandArgumentDefinition, type CommandCompletionDefinition, type CommandDefinition, type CommandExamplesDefinition, type CommandMcpMetadata, type CommandMcpResourceMetadata, type CommandMcpRoute, type CommandMcpRouteFactory, type CommandMcpToolMetadata, type CommandModule, type CommandOptionDefinition, type CommandRegistrar, type CommandRegistrarContext$1 as CommandRegistrarContext, type CommandResourceRoute, type CompletionConfig, type CreateCommandMcpRouterOptions, type CreateCommandMcpServerOptions, type CreateCommandProgramOptions, type CreateMcpServerOptions, type CreatePackageCommandMcpServerOptions, type CreateSingleToolMcpServerOptions, DEFAULT_COMMANDS_DIR, type DefineCommandDefinition, type DevCommandShimConfig, type GenerateReadmeCommandDocsOptions, type JsonRpcRequest, type JsonSchemaProperty, type McpResourceDefinition, type McpResourceTemplateDefinition, type McpResultEnvelope, type McpToolDefinition, PROGRAM_NAME_ENV_SUFFIX, type PackageBinEntry, type PackageCommandMetadata, type PackageJson, PackageManager, type RegisterCliCommandsFromDirectoryOptions, type RegisterParentCommandsFromDefinitionsOptions, type RegisterUpdateCommandOptions, type ResourceReadParams, type ShellCompletionSnippet, type ToolCallParams, assertToolName, commandActionInput, commandDefinitionToInputSchema, commandDefinitionToZodInputSchema, commandDefinitionsFromModules, commandExportsFromModules, commandInputString, commandInputValue, commandMcpRouteToResourceRoute, commandMcpRouteToTool, commandNameToMcpToolName, commandOptionSynopsis, commandResourceInput, commandResourceRouteToResource, commandResourceRouteToResourceTemplate, createCliRunner, createCommandAdapters, createCommandCliRunner, createCommandMcpRoute, createCommandMcpRouter, createCommandMcpServer, createCommandProgram, createMcpServer, createPackageCommandCliRunner, createSingleToolMcpServer, defineCommand, emptyMcpInputSchema, formatCommandDocs, generateReadmeCommandDocs, getBinDir, getPackageManagerFromPath, getProgramBin, getProgramConstructor, installCommandShim, installDevCommand, installPackageDevCommand, installPackageDevCommands, isCommandAdapterExport, isCommandMcpResourceMetadata, isCommandMcpToolMetadata, isDirectRun, isGlobalHelpRequest, isResourceTemplate, loadCommandMcpRoutes, loadCommandModules, loadCommandModulesFromFiles, mcpToolOutputSchema, normalizeCommandInputAliases, packageBinEntry, packageCommandMetadata, packageEnvPrefix, packageRoot, printProgramHelp, readPackageJson, registerCliCommandsFromDirectory, registerCommand, registerCompletionCommand, registerParentCommandsFromDefinitions, registerUpdateCommand, resourceResult, setProgramHelpData, shortPackageName, startCommandMcpServer, startPackageCommandMcpServer, throwUnknownTool, uninstallDevCommand, uninstallPackageDevCommand, uninstallPackageDevCommands };
622
+ export { type CliConfig, type CommandAdapterExport, type CommandAdaptersReturn, type CommandArgumentDefinition, type CommandCompletionDefinition, type CommandDefinition, type CommandExamplesDefinition, type CommandMcpMetadata, type CommandMcpResourceMetadata, type CommandMcpRoute, type CommandMcpRouteFactory, type CommandMcpToolMetadata, type CommandModule, type CommandModuleImporter, type CommandOptionDefinition, type CommandRegistrar, type CommandRegistrarContext, type CommandResourceRoute, type CompletionConfig, type CreateCommandMcpRouterOptions, type CreateCommandMcpServerOptions, type CreateCommandProgramOptions, type CreateMcpServerOptions, type CreatePackageCommandMcpServerOptions, type CreateSingleToolMcpServerOptions, DEFAULT_COMMANDS_DIR, type DefineCommandDefinition, type DevCommandShimConfig, type GenerateReadmeCommandDocsOptions, type JsonRpcRequest, type JsonSchemaProperty, type McpResourceDefinition, type McpResourceTemplateDefinition, type McpResultEnvelope, type McpToolDefinition, PROGRAM_NAME_ENV_SUFFIX, type PackageBinEntry, type PackageCommandMetadata, type PackageJson, PackageManager, type RegisterCliCommandsFromDirectoryOptions, type RegisterParentCommandsFromDefinitionsOptions, type RegisterUpdateCommandOptions, type ResourceReadParams, type ShellCompletionSnippet, type ToolCallParams, assertToolName, commandActionInput, commandDefinitionToInputSchema, commandDefinitionToZodInputSchema, commandDefinitionsFromModules, commandExportsFromModules, commandInputString, commandInputValue, commandMcpRouteToResourceRoute, commandMcpRouteToTool, commandNameToMcpToolName, commandOptionSynopsis, commandResourceInput, commandResourceRouteToResource, commandResourceRouteToResourceTemplate, createCliRunner, createCommandAdapters, createCommandCliRunner, createCommandMcpRoute, createCommandMcpRouter, createCommandMcpServer, createCommandProgram, createMcpServer, createPackageCommandCliRunner, createSingleToolMcpServer, defineCommand, emptyMcpInputSchema, formatCommandDocs, generateReadmeCommandDocs, getBinDir, getPackageManagerFromPath, getProgramBin, getProgramConstructor, installCommandShim, installDevCommand, installPackageDevCommand, installPackageDevCommands, isCommandAdapterExport, isCommandMcpResourceMetadata, isCommandMcpToolMetadata, isDirectRun, isGlobalHelpRequest, isResourceTemplate, loadCommandMcpRoutes, loadCommandModules, loadCommandModulesFromFiles, mcpToolOutputSchema, normalizeCommandInputAliases, packageBinEntry, packageCommandMetadata, packageEnvPrefix, packageRoot, printProgramHelp, readPackageJson, registerCliCommandsFromDirectory, registerCommand, registerCompletionCommand, registerParentCommandsFromDefinitions, registerUpdateCommand, resourceResult, setProgramHelpData, shortPackageName, startCommandMcpServer, startPackageCommandMcpServer, throwUnknownTool, uninstallDevCommand, uninstallPackageDevCommand, uninstallPackageDevCommands };
package/dist/index.js CHANGED
@@ -510,18 +510,17 @@ import { fileURLToPath } from "url";
510
510
 
511
511
  // src/command/loader.ts
512
512
  import { readdir } from "fs/promises";
513
- import { basename, join } from "path";
513
+ import { basename, extname, join } from "path";
514
514
  import { pathToFileURL } from "url";
515
- var COMMAND_FILE_EXTENSION = ".ts";
516
- var IGNORED_COMMAND_FILES = /* @__PURE__ */ new Set(["index.ts", "options.ts"]);
517
- var loadCommandModules = async (commandsDir) => {
518
- return loadCommandModulesFromFiles(await commandFiles(commandsDir));
519
- };
520
- var loadCommandModulesFromFiles = async (files) => {
521
- return Promise.all(
522
- files.map((file) => import(pathToFileURL(file).href))
523
- );
515
+ var COMMAND_FILE_EXTENSIONS = /* @__PURE__ */ new Set([".js", ".mjs", ".ts"]);
516
+ var IGNORED_COMMAND_FILE_NAMES = /* @__PURE__ */ new Set(["index", "options"]);
517
+ var loadCommandModules = async (commandsDir, importModule = importCommandModule) => {
518
+ return loadCommandModulesFromFiles(await commandFiles(commandsDir), importModule);
519
+ };
520
+ var loadCommandModulesFromFiles = async (files, importModule = importCommandModule) => {
521
+ return Promise.all(files.map(importModule));
524
522
  };
523
+ var importCommandModule = (file) => import(pathToFileURL(file).href);
525
524
  var commandDefinitionsFromModules = (modules) => {
526
525
  return modules.flatMap(
527
526
  (module) => Object.values(module).flatMap(
@@ -547,8 +546,12 @@ var commandFiles = async (dir) => {
547
546
  return nestedFiles.flat().sort();
548
547
  };
549
548
  var isCommandFile = (path) => {
550
- const fileName = basename(path);
551
- return path.endsWith(COMMAND_FILE_EXTENSION) && !IGNORED_COMMAND_FILES.has(fileName);
549
+ const extension = extname(path);
550
+ const fileName = basename(path, extension);
551
+ const isDeclarationFile = path.endsWith(".d.ts");
552
+ const isSupportedCommandFile = COMMAND_FILE_EXTENSIONS.has(extension);
553
+ const isIgnoredCommandFile = IGNORED_COMMAND_FILE_NAMES.has(fileName);
554
+ return !isDeclarationFile && isSupportedCommandFile && !isIgnoredCommandFile;
552
555
  };
553
556
  var isCommandAdapterExport = (value) => {
554
557
  if (!value || typeof value !== "object") return false;
@@ -808,6 +811,7 @@ var createCommandProgram = async ({
808
811
  commandsDir,
809
812
  description,
810
813
  getContext,
814
+ importCommandModule: importCommandModule2,
811
815
  importMetaUrl,
812
816
  isDevRun = false,
813
817
  packageName,
@@ -821,6 +825,7 @@ var createCommandProgram = async ({
821
825
  binName,
822
826
  commandsDir: commandsDir ?? defaultCommandsDir(importMetaUrl),
823
827
  getContext,
828
+ importCommandModule: importCommandModule2,
824
829
  program
825
830
  });
826
831
  registerUpdateCommand(program, { isDevRun, packageName: packageName ?? binName, version });
@@ -859,9 +864,10 @@ var registerCliCommandsFromDirectory = async ({
859
864
  binName,
860
865
  commandsDir,
861
866
  getContext,
867
+ importCommandModule: importCommandModule2,
862
868
  program
863
869
  }) => {
864
- const modules = await loadCommandModules(commandsDir);
870
+ const modules = await loadCommandModules(commandsDir, importCommandModule2);
865
871
  const definitions = commandDefinitionsFromModules(modules);
866
872
  registerParentCommandsFromDefinitions(program, definitions);
867
873
  const commands = commandExportsFromModules(
@@ -1053,6 +1059,7 @@ var createCommandCliRunner = ({
1053
1059
  description,
1054
1060
  envBinName,
1055
1061
  getContext,
1062
+ importCommandModule: importCommandModule2,
1056
1063
  importMetaUrl,
1057
1064
  isDevRun,
1058
1065
  packageName,
@@ -1066,6 +1073,7 @@ var createCommandCliRunner = ({
1066
1073
  commandsDir,
1067
1074
  description,
1068
1075
  getContext,
1076
+ importCommandModule: importCommandModule2,
1069
1077
  importMetaUrl,
1070
1078
  isDevRun,
1071
1079
  packageName,
@@ -1387,12 +1395,13 @@ var generateReadmeCommandDocs = async ({
1387
1395
  binName,
1388
1396
  commandDefinitions = [],
1389
1397
  commandsDir = join4(process.cwd(), "src", "commands"),
1398
+ importCommandModule: importCommandModule2,
1390
1399
  markerName = "COMMANDS",
1391
1400
  readmePath = "README.md"
1392
1401
  }) => {
1393
1402
  const readme = readFileSync2(readmePath, "utf8");
1394
1403
  const loadedCommandDefinitions = commandDefinitionsFromModules(
1395
- await loadCommandModules(commandsDir)
1404
+ await loadCommandModules(commandsDir, importCommandModule2)
1396
1405
  );
1397
1406
  const generated = formatCommandDocs(
1398
1407
  [...commandDefinitions, ...loadedCommandDefinitions],
@@ -1569,8 +1578,8 @@ var createMcpServer = ({
1569
1578
  };
1570
1579
 
1571
1580
  // src/mcp/command-server.ts
1572
- var loadCommandMcpRoutes = async (commandsDir, getContext = () => void 0) => {
1573
- const modules = await loadCommandModules(commandsDir);
1581
+ var loadCommandMcpRoutes = async (commandsDir, getContext = () => void 0, importCommandModule2) => {
1582
+ const modules = await loadCommandModules(commandsDir, importCommandModule2);
1574
1583
  const factories = commandExportsFromModules(
1575
1584
  modules,
1576
1585
  (_name, value) => isCommandAdapterExport(value)
@@ -1580,6 +1589,7 @@ var loadCommandMcpRoutes = async (commandsDir, getContext = () => void 0) => {
1580
1589
  var createCommandMcpServer = async ({
1581
1590
  commandsDir,
1582
1591
  getContext,
1592
+ importCommandModule: importCommandModule2,
1583
1593
  importMetaUrl,
1584
1594
  name,
1585
1595
  prefix
@@ -1587,7 +1597,7 @@ var createCommandMcpServer = async ({
1587
1597
  const commandDirectory = commandsDir ?? join5(dirname3(fileURLToPath4(importMetaUrl)), DEFAULT_COMMANDS_DIR);
1588
1598
  const { tools, resources, resourceTemplates, callTool, readResource } = createCommandMcpRouter({
1589
1599
  prefix,
1590
- routes: await loadCommandMcpRoutes(commandDirectory, getContext)
1600
+ routes: await loadCommandMcpRoutes(commandDirectory, getContext, importCommandModule2)
1591
1601
  });
1592
1602
  return createMcpServer({ name, tools, resources, resourceTemplates, callTool, readResource });
1593
1603
  };
package/dist/index.js.map CHANGED
@@ -1 +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/command/metadata.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/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';\nimport type { CommandDefinition } from '../command/metadata';\n\nconst COMMAND_COLUMN_WIDTH = 36;\nconst ANSI_CYAN = '\\u001b[36m';\nconst ANSI_GRAY = '\\u001b[90m';\nconst ANSI_RESET = '\\u001b[0m';\nconst programHelpData = new WeakMap<Program, ProgramHelpData>();\n\ntype ProgramHelpData = {\n binName: string;\n commands: readonly CommandDefinition[];\n description: string;\n examples: readonly string[];\n version: string;\n};\n\ntype CommandHelpRow = {\n name: string;\n description: string;\n};\n\nexport const setProgramHelpData = (program: Program, data: ProgramHelpData) => {\n programHelpData.set(program, data);\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 data = programHelpData.get(program);\n if (!data) throw new Error('Program help data was not registered');\n\n const capturedHelp = cleanHelp(await captureHelp(() => program.run(['--help'])));\n const capturedRows = parseCapturedCommandRows(capturedHelp);\n const output = [formatHelp(data, capturedRows), formatExamples(data.examples)]\n .filter(Boolean)\n .join('\\n');\n console.log(`${output}\\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 formatHelp(data: ProgramHelpData, capturedRows: readonly CommandHelpRow[]) {\n return [\n '',\n ` ${data.binName} ${data.version} — ${data.description}`,\n '',\n heading('USAGE'),\n ' ',\n ` ▸ ${data.binName} <command> [ARGUMENTS...] [OPTIONS...]`,\n '',\n heading('COMMANDS'),\n '',\n ...formatCommandRows(\n mergeCommandRows(data.commands.filter(isVisibleCommand).map(commandHelpRow), capturedRows),\n ),\n '',\n heading('GLOBAL OPTIONS'),\n '',\n ' -h, --help Display global help or command-related help. ',\n ' -v, --version Show version',\n ].join('\\n');\n}\n\nfunction mergeCommandRows(\n primaryRows: readonly CommandHelpRow[],\n fallbackRows: readonly CommandHelpRow[],\n) {\n const primaryNames = new Set(primaryRows.map((row) => row.name));\n return [...primaryRows, ...fallbackRows.filter((row) => !primaryNames.has(row.name))];\n}\n\nfunction parseCapturedCommandRows(help: string) {\n const lines = help.split('\\n');\n const commandsIndex = lines.findIndex((line) => line.trim() === 'COMMANDS');\n const globalOptionsIndex = lines.findIndex((line) => line.trim() === 'GLOBAL OPTIONS');\n const hasCommandSection = commandsIndex >= 0 && globalOptionsIndex > commandsIndex;\n if (!hasCommandSection) return [];\n\n return parseCommandRows(lines.slice(commandsIndex + 1, globalOptionsIndex));\n}\n\nfunction parseCommandRows(lines: readonly string[]) {\n return lines.reduce<CommandHelpRow[]>((rows, line) => {\n const row = parseCommandRow(line);\n if (row) {\n rows.push(row);\n return rows;\n }\n\n const previous = rows.at(-1);\n const continuation = line.trim();\n if (!previous || !continuation) return rows;\n\n previous.description = `${previous.description} ${continuation}`;\n return rows;\n }, []);\n}\n\nfunction parseCommandRow(line: string): CommandHelpRow | undefined {\n const match = line.match(/^ {4}(.+?) {2,}(.+?)\\s*$/);\n if (!match?.[1] || !match[2]) return undefined;\n return { name: match[1].trim(), description: match[2].trim() };\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 commandHelpRow(command: CommandDefinition): CommandHelpRow {\n return { name: command.name, description: command.description };\n}\n\nfunction isVisibleCommand(command: CommandDefinition) {\n return command.config?.visible !== false;\n}\n\nfunction formatCommandRows(rows: readonly CommandHelpRow[]) {\n const groups = commandGroups(rows);\n return groups.flatMap((group) => formatCommandGroup(group));\n}\n\nfunction commandGroups(rows: readonly CommandHelpRow[]) {\n const visibleRows = rows.filter((row) => !isHiddenCommand(row));\n const parentRows = new Map(\n visibleRows.filter((row) => !row.name.includes(' ')).map((row) => [row.name, row]),\n );\n const childRows = visibleRows.filter((row) => row.name.includes(' '));\n const childParents = new Set(childRows.map((row) => row.name.split(' ')[0]).filter(Boolean));\n const groupedParents = [...childParents].map((parent) => ({\n children: childRows.filter((row) => row.name.startsWith(`${parent} `)),\n parent: parentRows.get(parent) ?? { name: parent, description: `${parent} commands` },\n }));\n const standaloneRows = visibleRows.filter(\n (row) => !childParents.has(row.name.split(' ')[0] ?? row.name),\n );\n\n return [...groupedParents, ...standaloneRows.map((parent) => ({ children: [], parent }))];\n}\n\nfunction isHiddenCommand(row: CommandHelpRow) {\n return row.name === 'on-checkout' || row.name === 'on-commit';\n}\n\nfunction formatCommandGroup({\n children,\n parent,\n}: {\n children: readonly CommandHelpRow[];\n parent: CommandHelpRow;\n}) {\n if (children.length === 0) return [formatCommandLine(parent.name, parent.description)];\n\n return [\n formatCommandLine(parent.name, parentDescription(parent), 4, isSyntheticParent(parent)),\n ...children.map((child) =>\n formatCommandLine(child.name.split(' ').slice(1).join(' '), child.description, 6),\n ),\n ];\n}\n\nfunction parentDescription(parent: CommandHelpRow) {\n return isSyntheticParent(parent) ? '' : parent.description;\n}\n\nfunction isSyntheticParent(parent: CommandHelpRow) {\n return parent.description === `${parent.name} commands`;\n}\n\nfunction formatCommandLine(name: string, description: string, indent = 4, muted = false) {\n const paddedName = name.padEnd(COMMAND_COLUMN_WIDTH - indent);\n const displayName = muted ? gray(paddedName) : paddedName;\n return `${' '.repeat(indent)}${displayName}${description}`.trimEnd();\n}\n\nfunction heading(text: string) {\n return ` ${color(text)}`;\n}\n\nfunction color(text: string) {\n if (!process.stdout.isTTY || process.env.NO_COLOR) return text;\n return `${ANSI_CYAN}${text}${ANSI_RESET}`;\n}\n\nfunction gray(text: string) {\n if (!process.stdout.isTTY || process.env.NO_COLOR) return text;\n return `${ANSI_GRAY}${text}${ANSI_RESET}`;\n}\n\nfunction formatExamples(examples: readonly string[]) {\n if (examples.length === 0) return '';\n\n return [heading('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, defineCommand } from '../command/metadata';\nimport { DEFAULT_COMMANDS_DIR } from '../constants';\nimport { registerCompletionCommand } from './completion';\nimport { setProgramHelpData } 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 setProgramHelpData(program, {\n binName,\n commands: [\n ...commandDefinitions,\n defineCommand({\n name: 'update',\n description: `Update ${packageName ?? binName} to latest version`,\n }),\n defineCommand({\n name: 'completion',\n description: 'Generate shell completion scripts',\n }),\n ],\n description,\n examples: commandDefinitions.flatMap((command) => command.examples?.(binName) ?? []),\n version,\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","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_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","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","isVisibleCommand","parentCommands","dirname","join","fileURLToPath","EMPTY_DISPLAY_VALUE","join","dirname","fileURLToPath","rmSync","join","writeFileSync","join","rmSync","join"]}
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/command/metadata.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/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';\nimport type { CommandDefinition } from '../command/metadata';\n\nconst COMMAND_COLUMN_WIDTH = 36;\nconst ANSI_CYAN = '\\u001b[36m';\nconst ANSI_GRAY = '\\u001b[90m';\nconst ANSI_RESET = '\\u001b[0m';\nconst programHelpData = new WeakMap<Program, ProgramHelpData>();\n\ntype ProgramHelpData = {\n binName: string;\n commands: readonly CommandDefinition[];\n description: string;\n examples: readonly string[];\n version: string;\n};\n\ntype CommandHelpRow = {\n name: string;\n description: string;\n};\n\nexport const setProgramHelpData = (program: Program, data: ProgramHelpData) => {\n programHelpData.set(program, data);\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 data = programHelpData.get(program);\n if (!data) throw new Error('Program help data was not registered');\n\n const capturedHelp = cleanHelp(await captureHelp(() => program.run(['--help'])));\n const capturedRows = parseCapturedCommandRows(capturedHelp);\n const output = [formatHelp(data, capturedRows), formatExamples(data.examples)]\n .filter(Boolean)\n .join('\\n');\n console.log(`${output}\\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 formatHelp(data: ProgramHelpData, capturedRows: readonly CommandHelpRow[]) {\n return [\n '',\n ` ${data.binName} ${data.version} — ${data.description}`,\n '',\n heading('USAGE'),\n ' ',\n ` ▸ ${data.binName} <command> [ARGUMENTS...] [OPTIONS...]`,\n '',\n heading('COMMANDS'),\n '',\n ...formatCommandRows(\n mergeCommandRows(data.commands.filter(isVisibleCommand).map(commandHelpRow), capturedRows),\n ),\n '',\n heading('GLOBAL OPTIONS'),\n '',\n ' -h, --help Display global help or command-related help. ',\n ' -v, --version Show version',\n ].join('\\n');\n}\n\nfunction mergeCommandRows(\n primaryRows: readonly CommandHelpRow[],\n fallbackRows: readonly CommandHelpRow[],\n) {\n const primaryNames = new Set(primaryRows.map((row) => row.name));\n return [...primaryRows, ...fallbackRows.filter((row) => !primaryNames.has(row.name))];\n}\n\nfunction parseCapturedCommandRows(help: string) {\n const lines = help.split('\\n');\n const commandsIndex = lines.findIndex((line) => line.trim() === 'COMMANDS');\n const globalOptionsIndex = lines.findIndex((line) => line.trim() === 'GLOBAL OPTIONS');\n const hasCommandSection = commandsIndex >= 0 && globalOptionsIndex > commandsIndex;\n if (!hasCommandSection) return [];\n\n return parseCommandRows(lines.slice(commandsIndex + 1, globalOptionsIndex));\n}\n\nfunction parseCommandRows(lines: readonly string[]) {\n return lines.reduce<CommandHelpRow[]>((rows, line) => {\n const row = parseCommandRow(line);\n if (row) {\n rows.push(row);\n return rows;\n }\n\n const previous = rows.at(-1);\n const continuation = line.trim();\n if (!previous || !continuation) return rows;\n\n previous.description = `${previous.description} ${continuation}`;\n return rows;\n }, []);\n}\n\nfunction parseCommandRow(line: string): CommandHelpRow | undefined {\n const match = line.match(/^ {4}(.+?) {2,}(.+?)\\s*$/);\n if (!match?.[1] || !match[2]) return undefined;\n return { name: match[1].trim(), description: match[2].trim() };\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 commandHelpRow(command: CommandDefinition): CommandHelpRow {\n return { name: command.name, description: command.description };\n}\n\nfunction isVisibleCommand(command: CommandDefinition) {\n return command.config?.visible !== false;\n}\n\nfunction formatCommandRows(rows: readonly CommandHelpRow[]) {\n const groups = commandGroups(rows);\n return groups.flatMap((group) => formatCommandGroup(group));\n}\n\nfunction commandGroups(rows: readonly CommandHelpRow[]) {\n const visibleRows = rows.filter((row) => !isHiddenCommand(row));\n const parentRows = new Map(\n visibleRows.filter((row) => !row.name.includes(' ')).map((row) => [row.name, row]),\n );\n const childRows = visibleRows.filter((row) => row.name.includes(' '));\n const childParents = new Set(childRows.map((row) => row.name.split(' ')[0]).filter(Boolean));\n const groupedParents = [...childParents].map((parent) => ({\n children: childRows.filter((row) => row.name.startsWith(`${parent} `)),\n parent: parentRows.get(parent) ?? { name: parent, description: `${parent} commands` },\n }));\n const standaloneRows = visibleRows.filter(\n (row) => !childParents.has(row.name.split(' ')[0] ?? row.name),\n );\n\n return [...groupedParents, ...standaloneRows.map((parent) => ({ children: [], parent }))];\n}\n\nfunction isHiddenCommand(row: CommandHelpRow) {\n return row.name === 'on-checkout' || row.name === 'on-commit';\n}\n\nfunction formatCommandGroup({\n children,\n parent,\n}: {\n children: readonly CommandHelpRow[];\n parent: CommandHelpRow;\n}) {\n if (children.length === 0) return [formatCommandLine(parent.name, parent.description)];\n\n return [\n formatCommandLine(parent.name, parentDescription(parent), 4, isSyntheticParent(parent)),\n ...children.map((child) =>\n formatCommandLine(child.name.split(' ').slice(1).join(' '), child.description, 6),\n ),\n ];\n}\n\nfunction parentDescription(parent: CommandHelpRow) {\n return isSyntheticParent(parent) ? '' : parent.description;\n}\n\nfunction isSyntheticParent(parent: CommandHelpRow) {\n return parent.description === `${parent.name} commands`;\n}\n\nfunction formatCommandLine(name: string, description: string, indent = 4, muted = false) {\n const paddedName = name.padEnd(COMMAND_COLUMN_WIDTH - indent);\n const displayName = muted ? gray(paddedName) : paddedName;\n return `${' '.repeat(indent)}${displayName}${description}`.trimEnd();\n}\n\nfunction heading(text: string) {\n return ` ${color(text)}`;\n}\n\nfunction color(text: string) {\n if (!process.stdout.isTTY || process.env.NO_COLOR) return text;\n return `${ANSI_CYAN}${text}${ANSI_RESET}`;\n}\n\nfunction gray(text: string) {\n if (!process.stdout.isTTY || process.env.NO_COLOR) return text;\n return `${ANSI_GRAY}${text}${ANSI_RESET}`;\n}\n\nfunction formatExamples(examples: readonly string[]) {\n if (examples.length === 0) return '';\n\n return [heading('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 type CommandModuleImporter,\n commandDefinitionsFromModules,\n commandExportsFromModules,\n isCommandAdapterExport,\n loadCommandModules,\n} from '../command/loader';\nimport { type CommandDefinition, defineCommand } from '../command/metadata';\nimport { DEFAULT_COMMANDS_DIR } from '../constants';\nimport { registerCompletionCommand } from './completion';\nimport { setProgramHelpData } 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 importCommandModule?: CommandModuleImporter;\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 importCommandModule?: CommandModuleImporter;\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 importCommandModule,\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 importCommandModule,\n program,\n });\n registerUpdateCommand(program, { isDevRun, packageName: packageName ?? binName, version });\n registerCompletionCommand(program, { binNames });\n setProgramHelpData(program, {\n binName,\n commands: [\n ...commandDefinitions,\n defineCommand({\n name: 'update',\n description: `Update ${packageName ?? binName} to latest version`,\n }),\n defineCommand({\n name: 'completion',\n description: 'Generate shell completion scripts',\n }),\n ],\n description,\n examples: commandDefinitions.flatMap((command) => command.examples?.(binName) ?? []),\n version,\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 importCommandModule,\n program,\n}: RegisterCliCommandsFromDirectoryOptions<TContext>) => {\n const modules = await loadCommandModules(commandsDir, importCommandModule);\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, extname, join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { CommandAdaptersReturn } from './adapters';\n\nconst COMMAND_FILE_EXTENSIONS = new Set(['.js', '.mjs', '.ts']);\nconst IGNORED_COMMAND_FILE_NAMES = new Set(['index', 'options']);\n\nexport type CommandModule = Record<string, unknown>;\nexport type CommandModuleImporter = (file: string) => Promise<CommandModule>;\nexport type CommandAdapterExport = Pick<CommandAdaptersReturn<unknown, unknown>, 'cli'> &\n Partial<Pick<CommandAdaptersReturn<unknown, unknown>, 'mcp' | 'metadata'>>;\n\nexport const loadCommandModules = async (\n commandsDir: string,\n importModule: CommandModuleImporter = importCommandModule,\n) => {\n return loadCommandModulesFromFiles(await commandFiles(commandsDir), importModule);\n};\n\nexport const loadCommandModulesFromFiles = async (\n files: readonly string[],\n importModule: CommandModuleImporter = importCommandModule,\n) => {\n return Promise.all(files.map(importModule));\n};\n\nconst importCommandModule: CommandModuleImporter = (file) =>\n import(pathToFileURL(file).href) as Promise<CommandModule>;\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 extension = extname(path);\n const fileName = basename(path, extension);\n const isDeclarationFile = path.endsWith('.d.ts');\n const isSupportedCommandFile = COMMAND_FILE_EXTENSIONS.has(extension);\n const isIgnoredCommandFile = IGNORED_COMMAND_FILE_NAMES.has(fileName);\n return !isDeclarationFile && isSupportedCommandFile && !isIgnoredCommandFile;\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","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_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 type { CommandModuleImporter } from '../command/loader';\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 importCommandModule?: CommandModuleImporter;\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 importCommandModule,\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 importCommandModule,\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","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 {\n type CommandModuleImporter,\n commandDefinitionsFromModules,\n loadCommandModules,\n} 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 importCommandModule?: CommandModuleImporter;\n markerName?: string;\n readmePath?: string;\n};\n\nexport const generateReadmeCommandDocs = async ({\n binName,\n commandDefinitions = [],\n commandsDir = join(process.cwd(), 'src', 'commands'),\n importCommandModule,\n markerName = 'COMMANDS',\n readmePath = 'README.md',\n}: GenerateReadmeCommandDocsOptions) => {\n const readme = readFileSync(readmePath, 'utf8');\n const loadedCommandDefinitions = commandDefinitionsFromModules(\n await loadCommandModules(commandsDir, importCommandModule),\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 type CommandModuleImporter,\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 importCommandModule?: CommandModuleImporter,\n): Promise<CommandMcpRoute[]> => {\n const modules = await loadCommandModules(commandsDir, importCommandModule);\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 importCommandModule,\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, importCommandModule),\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","importCommandModule","require","join","dirname","join","fileURLToPath","fileURLToPath","pathToFileURL","importCommandModule","z","EMPTY_DISPLAY_VALUE","EMPTY_DISPLAY_VALUE","z","z","z","EMPTY_DISPLAY_VALUE","readFileSync","join","join","importCommandModule","readFileSync","isVisibleCommand","parentCommands","dirname","join","fileURLToPath","EMPTY_DISPLAY_VALUE","importCommandModule","join","dirname","fileURLToPath","rmSync","join","writeFileSync","join","rmSync","join"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unicommand",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {