@tpmjs/cli 0.1.2 → 0.1.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.
Files changed (78) hide show
  1. package/dist/commands/agent/chat.js +68 -2
  2. package/dist/commands/agent/chat.js.map +1 -1
  3. package/dist/commands/agent/create.js +68 -2
  4. package/dist/commands/agent/create.js.map +1 -1
  5. package/dist/commands/agent/delete.js +68 -2
  6. package/dist/commands/agent/delete.js.map +1 -1
  7. package/dist/commands/agent/list.js +68 -2
  8. package/dist/commands/agent/list.js.map +1 -1
  9. package/dist/commands/agent/update.js +68 -2
  10. package/dist/commands/agent/update.js.map +1 -1
  11. package/dist/commands/auth/login.js +99 -17
  12. package/dist/commands/auth/login.js.map +1 -1
  13. package/dist/commands/auth/logout.js +16 -0
  14. package/dist/commands/auth/logout.js.map +1 -1
  15. package/dist/commands/auth/status.js +68 -2
  16. package/dist/commands/auth/status.js.map +1 -1
  17. package/dist/commands/auth/whoami.js +68 -2
  18. package/dist/commands/auth/whoami.js.map +1 -1
  19. package/dist/commands/collection/add.js +68 -2
  20. package/dist/commands/collection/add.js.map +1 -1
  21. package/dist/commands/collection/create.js +68 -2
  22. package/dist/commands/collection/create.js.map +1 -1
  23. package/dist/commands/collection/delete.js +68 -2
  24. package/dist/commands/collection/delete.js.map +1 -1
  25. package/dist/commands/collection/import.js +68 -2
  26. package/dist/commands/collection/import.js.map +1 -1
  27. package/dist/commands/collection/list.js +68 -2
  28. package/dist/commands/collection/list.js.map +1 -1
  29. package/dist/commands/collection/remove.js +68 -2
  30. package/dist/commands/collection/remove.js.map +1 -1
  31. package/dist/commands/collection/update.js +68 -2
  32. package/dist/commands/collection/update.js.map +1 -1
  33. package/dist/commands/doctor.js +68 -2
  34. package/dist/commands/doctor.js.map +1 -1
  35. package/dist/commands/mcp/config.js +16 -0
  36. package/dist/commands/mcp/config.js.map +1 -1
  37. package/dist/commands/mcp/serve.js +68 -2
  38. package/dist/commands/mcp/serve.js.map +1 -1
  39. package/dist/commands/playground.js +68 -2
  40. package/dist/commands/playground.js.map +1 -1
  41. package/dist/commands/publish/check.js +68 -2
  42. package/dist/commands/publish/check.js.map +1 -1
  43. package/dist/commands/publish/preview.js +16 -0
  44. package/dist/commands/publish/preview.js.map +1 -1
  45. package/dist/commands/scenario/generate.d.ts +19 -0
  46. package/dist/commands/scenario/generate.js +633 -0
  47. package/dist/commands/scenario/generate.js.map +1 -0
  48. package/dist/commands/scenario/info.d.ts +18 -0
  49. package/dist/commands/scenario/info.js +636 -0
  50. package/dist/commands/scenario/info.js.map +1 -0
  51. package/dist/commands/scenario/list.d.ts +20 -0
  52. package/dist/commands/scenario/list.js +652 -0
  53. package/dist/commands/scenario/list.js.map +1 -0
  54. package/dist/commands/scenario/run.d.ts +18 -0
  55. package/dist/commands/scenario/run.js +663 -0
  56. package/dist/commands/scenario/run.js.map +1 -0
  57. package/dist/commands/scenario/test.d.ts +17 -0
  58. package/dist/commands/scenario/test.js +620 -0
  59. package/dist/commands/scenario/test.js.map +1 -0
  60. package/dist/commands/tool/execute.js +68 -2
  61. package/dist/commands/tool/execute.js.map +1 -1
  62. package/dist/commands/tool/info.js +68 -2
  63. package/dist/commands/tool/info.js.map +1 -1
  64. package/dist/commands/tool/init.js +16 -0
  65. package/dist/commands/tool/init.js.map +1 -1
  66. package/dist/commands/tool/search.js +68 -2
  67. package/dist/commands/tool/search.js.map +1 -1
  68. package/dist/commands/tool/trending.js +68 -2
  69. package/dist/commands/tool/trending.js.map +1 -1
  70. package/dist/commands/tool/validate.js +68 -2
  71. package/dist/commands/tool/validate.js.map +1 -1
  72. package/dist/commands/update.js +16 -0
  73. package/dist/commands/update.js.map +1 -1
  74. package/dist/index.d.ts +80 -0
  75. package/dist/index.js +68 -2
  76. package/dist/index.js.map +1 -1
  77. package/oclif.manifest.json +290 -1
  78. package/package.json +4 -1
@@ -142,6 +142,22 @@ var OutputFormatter = class {
142
142
  link(text, url) {
143
143
  return `\x1B]8;;${url}\x07${pc.underline(pc.blue(text))}\x1B]8;;\x07`;
144
144
  }
145
+ // Color helpers
146
+ green(text) {
147
+ return pc.green(text);
148
+ }
149
+ red(text) {
150
+ return pc.red(text);
151
+ }
152
+ yellow(text) {
153
+ return pc.yellow(text);
154
+ }
155
+ blue(text) {
156
+ return pc.blue(text);
157
+ }
158
+ cyan(text) {
159
+ return pc.cyan(text);
160
+ }
145
161
  };
146
162
  function createOutput(flags) {
147
163
  return new OutputFormatter({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/output.ts","../../../src/commands/publish/preview.ts"],"names":[],"mappings":"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","file":"preview.js","sourcesContent":["import Table from 'cli-table3';\nimport ora, { type Ora } from 'ora';\nimport pc from 'picocolors';\n\nexport interface OutputOptions {\n json?: boolean;\n verbose?: boolean;\n noColor?: boolean;\n}\n\nexport class OutputFormatter {\n private options: OutputOptions;\n\n constructor(options: OutputOptions = {}) {\n this.options = options;\n }\n\n // Output as JSON\n json(data: unknown): void {\n console.log(JSON.stringify(data, null, 2));\n }\n\n // Output a table\n table<T extends Record<string, unknown>>(\n data: T[],\n columns: { key: keyof T; header: string; width?: number }[]\n ): void {\n if (this.options.json) {\n this.json(data);\n return;\n }\n\n const table = new Table({\n head: columns.map((col) => pc.bold(col.header)),\n colWidths: columns.map((col) => col.width ?? null),\n style: {\n head: [],\n border: [],\n },\n });\n\n for (const row of data) {\n table.push(columns.map((col) => String(row[col.key] ?? '')));\n }\n\n console.log(table.toString());\n }\n\n // Success message\n success(message: string): void {\n if (this.options.json) return;\n console.log(pc.green('✓'), message);\n }\n\n // Error message\n error(message: string, details?: string): void {\n if (this.options.json) {\n this.json({ error: message, details });\n return;\n }\n console.error(pc.red('✗'), message);\n if (details && this.options.verbose) {\n console.error(pc.dim(details));\n }\n }\n\n // Warning message\n warning(message: string): void {\n if (this.options.json) return;\n console.log(pc.yellow('⚠'), message);\n }\n\n // Info message\n info(message: string): void {\n if (this.options.json) return;\n console.log(pc.blue('ℹ'), message);\n }\n\n // Debug message (only in verbose mode)\n debug(message: string): void {\n if (this.options.json) return;\n if (this.options.verbose) {\n console.log(pc.dim(`[debug] ${message}`));\n }\n }\n\n // Plain text output\n text(message: string): void {\n if (this.options.json) return;\n console.log(message);\n }\n\n // Heading\n heading(text: string): void {\n if (this.options.json) return;\n console.log();\n console.log(pc.bold(pc.underline(text)));\n console.log();\n }\n\n // Subheading\n subheading(text: string): void {\n if (this.options.json) return;\n console.log(pc.bold(text));\n }\n\n // Key-value pair\n keyValue(key: string, value: string | number | boolean | undefined): void {\n if (this.options.json) return;\n console.log(`${pc.dim(key + ':')} ${value ?? pc.dim('(not set)')}`);\n }\n\n // List item\n listItem(text: string, indent = 0): void {\n if (this.options.json) return;\n const prefix = ' '.repeat(indent) + '•';\n console.log(`${prefix} ${text}`);\n }\n\n // Spinner\n spinner(message: string): Ora {\n return ora({\n text: message,\n isSilent: this.options.json,\n }).start();\n }\n\n // Blank line\n newLine(): void {\n if (this.options.json) return;\n console.log();\n }\n\n // Horizontal rule\n hr(): void {\n if (this.options.json) return;\n console.log(pc.dim('─'.repeat(50)));\n }\n\n // Alias for hr\n divider(): void {\n this.hr();\n }\n\n // Code block\n code(text: string, language?: string): void {\n if (this.options.json) {\n this.json({ code: text, language });\n return;\n }\n console.log(pc.dim('```' + (language ?? '')));\n console.log(text);\n console.log(pc.dim('```'));\n }\n\n // Highlight text\n highlight(text: string): string {\n return pc.cyan(text);\n }\n\n // Dim text\n dim(text: string): string {\n return pc.dim(text);\n }\n\n // Bold text\n bold(text: string): string {\n return pc.bold(text);\n }\n\n // Link (just returns text in terminal)\n link(text: string, url: string): string {\n // OSC 8 hyperlink support for modern terminals\n return `\\x1b]8;;${url}\\x07${pc.underline(pc.blue(text))}\\x1b]8;;\\x07`;\n }\n}\n\n// Convenience function to create formatter from command flags\nexport function createOutput(flags: { json?: boolean; verbose?: boolean }): OutputFormatter {\n return new OutputFormatter({\n json: flags.json,\n verbose: flags.verbose,\n });\n}\n","import { Command, Flags } from '@oclif/core';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { createOutput } from '../../lib/output.js';\n\nexport default class PublishPreview extends Command {\n static description = 'Preview how your tool will appear on tpmjs.com';\n\n static examples = [\n '<%= config.bin %> <%= command.id %>',\n '<%= config.bin %> <%= command.id %> --path ./my-tool',\n ];\n\n static flags = {\n path: Flags.string({\n char: 'p',\n description: 'Path to package directory',\n default: '.',\n }),\n json: Flags.boolean({\n description: 'Output in JSON format',\n default: false,\n }),\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show verbose output',\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(PublishPreview);\n const output = createOutput(flags);\n\n const packagePath = path.resolve(flags.path, 'package.json');\n\n if (!fs.existsSync(packagePath)) {\n output.error(`No package.json found at ${packagePath}`);\n return;\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));\n const tpmjs = packageJson.tpmjs;\n\n if (!tpmjs) {\n output.error('No tpmjs field found in package.json');\n output.text('Run `tpm tool validate` for detailed validation');\n return;\n }\n\n // Build preview data\n const preview = {\n name: tpmjs.name || packageJson.name,\n description: tpmjs.description || packageJson.description,\n category: tpmjs.category,\n tier: this.determineTier(tpmjs),\n slug: this.generateSlug(tpmjs.name || packageJson.name),\n version: packageJson.version,\n author: this.extractAuthor(packageJson),\n repository: this.extractRepo(packageJson),\n tools: tpmjs.tools || [],\n tags: tpmjs.tags || [],\n documentation: tpmjs.documentation,\n examples: tpmjs.examples,\n };\n\n if (flags.json) {\n output.json(preview);\n return;\n }\n\n // Display preview\n output.heading('Tool Preview');\n output.divider();\n\n output.text(`Name: ${preview.name}`);\n output.text(`Slug: ${preview.slug}`);\n output.text(`Version: ${preview.version}`);\n output.text(`Category: ${preview.category}`);\n output.text(`Tier: ${preview.tier}`);\n output.text('');\n output.text(`Description:`);\n output.text(` ${preview.description || '(none)'}`);\n\n if (preview.author) {\n output.text('');\n output.text(`Author: ${preview.author}`);\n }\n\n if (preview.repository) {\n output.text(`Repository: ${preview.repository}`);\n }\n\n if (preview.tools.length > 0) {\n output.text('');\n output.text(`Tools (${preview.tools.length}):`);\n for (const tool of preview.tools) {\n if (typeof tool === 'string') {\n output.listItem(tool);\n } else {\n output.listItem(`${tool.name}: ${tool.description || ''}`);\n }\n }\n }\n\n if (preview.tags.length > 0) {\n output.text('');\n output.text(`Tags: ${preview.tags.join(', ')}`);\n }\n\n if (preview.documentation) {\n output.text('');\n output.text(`Documentation: ${preview.documentation}`);\n }\n\n if (preview.examples && preview.examples.length > 0) {\n output.text('');\n output.text(`Examples: ${preview.examples.length} example(s) provided`);\n }\n\n output.divider();\n output.text('');\n output.info('This is how your tool will appear on tpmjs.com');\n output.text('Run `tpm tool validate` to check for issues before publishing');\n }\n\n private determineTier(tpmjs: Record<string, unknown>): string {\n // Rich tier requires: tools array with schemas, examples, documentation\n const hasTools = Array.isArray(tpmjs.tools) && tpmjs.tools.length > 0;\n const hasExamples = Array.isArray(tpmjs.examples) && tpmjs.examples.length > 0;\n const hasDocumentation = Boolean(tpmjs.documentation);\n\n if (hasTools && hasExamples && hasDocumentation) {\n return 'rich';\n }\n return 'minimal';\n }\n\n private generateSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/@/g, '')\n .replace(/\\//g, '-')\n .replace(/[^a-z0-9-]/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '');\n }\n\n private extractAuthor(packageJson: Record<string, unknown>): string | undefined {\n const author = packageJson.author;\n if (typeof author === 'string') {\n return author;\n }\n if (author && typeof author === 'object') {\n const authorObj = author as Record<string, string>;\n return authorObj.name || authorObj.email;\n }\n return undefined;\n }\n\n private extractRepo(packageJson: Record<string, unknown>): string | undefined {\n const repo = packageJson.repository;\n if (typeof repo === 'string') {\n return repo;\n }\n if (repo && typeof repo === 'object') {\n return (repo as Record<string, string>).url;\n }\n return undefined;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/lib/output.ts","../../../src/commands/publish/preview.ts"],"names":[],"mappings":"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","file":"preview.js","sourcesContent":["import Table from 'cli-table3';\nimport ora, { type Ora } from 'ora';\nimport pc from 'picocolors';\n\nexport interface OutputOptions {\n json?: boolean;\n verbose?: boolean;\n noColor?: boolean;\n}\n\nexport class OutputFormatter {\n private options: OutputOptions;\n\n constructor(options: OutputOptions = {}) {\n this.options = options;\n }\n\n // Output as JSON\n json(data: unknown): void {\n console.log(JSON.stringify(data, null, 2));\n }\n\n // Output a table\n table<T extends Record<string, unknown>>(\n data: T[],\n columns: { key: keyof T; header: string; width?: number }[]\n ): void {\n if (this.options.json) {\n this.json(data);\n return;\n }\n\n const table = new Table({\n head: columns.map((col) => pc.bold(col.header)),\n colWidths: columns.map((col) => col.width ?? null),\n style: {\n head: [],\n border: [],\n },\n });\n\n for (const row of data) {\n table.push(columns.map((col) => String(row[col.key] ?? '')));\n }\n\n console.log(table.toString());\n }\n\n // Success message\n success(message: string): void {\n if (this.options.json) return;\n console.log(pc.green('✓'), message);\n }\n\n // Error message\n error(message: string, details?: string): void {\n if (this.options.json) {\n this.json({ error: message, details });\n return;\n }\n console.error(pc.red('✗'), message);\n if (details && this.options.verbose) {\n console.error(pc.dim(details));\n }\n }\n\n // Warning message\n warning(message: string): void {\n if (this.options.json) return;\n console.log(pc.yellow('⚠'), message);\n }\n\n // Info message\n info(message: string): void {\n if (this.options.json) return;\n console.log(pc.blue('ℹ'), message);\n }\n\n // Debug message (only in verbose mode)\n debug(message: string): void {\n if (this.options.json) return;\n if (this.options.verbose) {\n console.log(pc.dim(`[debug] ${message}`));\n }\n }\n\n // Plain text output\n text(message: string): void {\n if (this.options.json) return;\n console.log(message);\n }\n\n // Heading\n heading(text: string): void {\n if (this.options.json) return;\n console.log();\n console.log(pc.bold(pc.underline(text)));\n console.log();\n }\n\n // Subheading\n subheading(text: string): void {\n if (this.options.json) return;\n console.log(pc.bold(text));\n }\n\n // Key-value pair\n keyValue(key: string, value: string | number | boolean | undefined): void {\n if (this.options.json) return;\n console.log(`${pc.dim(key + ':')} ${value ?? pc.dim('(not set)')}`);\n }\n\n // List item\n listItem(text: string, indent = 0): void {\n if (this.options.json) return;\n const prefix = ' '.repeat(indent) + '•';\n console.log(`${prefix} ${text}`);\n }\n\n // Spinner\n spinner(message: string): Ora {\n return ora({\n text: message,\n isSilent: this.options.json,\n }).start();\n }\n\n // Blank line\n newLine(): void {\n if (this.options.json) return;\n console.log();\n }\n\n // Horizontal rule\n hr(): void {\n if (this.options.json) return;\n console.log(pc.dim('─'.repeat(50)));\n }\n\n // Alias for hr\n divider(): void {\n this.hr();\n }\n\n // Code block\n code(text: string, language?: string): void {\n if (this.options.json) {\n this.json({ code: text, language });\n return;\n }\n console.log(pc.dim('```' + (language ?? '')));\n console.log(text);\n console.log(pc.dim('```'));\n }\n\n // Highlight text\n highlight(text: string): string {\n return pc.cyan(text);\n }\n\n // Dim text\n dim(text: string): string {\n return pc.dim(text);\n }\n\n // Bold text\n bold(text: string): string {\n return pc.bold(text);\n }\n\n // Link (just returns text in terminal)\n link(text: string, url: string): string {\n // OSC 8 hyperlink support for modern terminals\n return `\\x1b]8;;${url}\\x07${pc.underline(pc.blue(text))}\\x1b]8;;\\x07`;\n }\n\n // Color helpers\n green(text: string): string {\n return pc.green(text);\n }\n\n red(text: string): string {\n return pc.red(text);\n }\n\n yellow(text: string): string {\n return pc.yellow(text);\n }\n\n blue(text: string): string {\n return pc.blue(text);\n }\n\n cyan(text: string): string {\n return pc.cyan(text);\n }\n}\n\n// Convenience function to create formatter from command flags\nexport function createOutput(flags: { json?: boolean; verbose?: boolean }): OutputFormatter {\n return new OutputFormatter({\n json: flags.json,\n verbose: flags.verbose,\n });\n}\n","import { Command, Flags } from '@oclif/core';\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport { createOutput } from '../../lib/output.js';\n\nexport default class PublishPreview extends Command {\n static description = 'Preview how your tool will appear on tpmjs.com';\n\n static examples = [\n '<%= config.bin %> <%= command.id %>',\n '<%= config.bin %> <%= command.id %> --path ./my-tool',\n ];\n\n static flags = {\n path: Flags.string({\n char: 'p',\n description: 'Path to package directory',\n default: '.',\n }),\n json: Flags.boolean({\n description: 'Output in JSON format',\n default: false,\n }),\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show verbose output',\n default: false,\n }),\n };\n\n async run(): Promise<void> {\n const { flags } = await this.parse(PublishPreview);\n const output = createOutput(flags);\n\n const packagePath = path.resolve(flags.path, 'package.json');\n\n if (!fs.existsSync(packagePath)) {\n output.error(`No package.json found at ${packagePath}`);\n return;\n }\n\n const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));\n const tpmjs = packageJson.tpmjs;\n\n if (!tpmjs) {\n output.error('No tpmjs field found in package.json');\n output.text('Run `tpm tool validate` for detailed validation');\n return;\n }\n\n // Build preview data\n const preview = {\n name: tpmjs.name || packageJson.name,\n description: tpmjs.description || packageJson.description,\n category: tpmjs.category,\n tier: this.determineTier(tpmjs),\n slug: this.generateSlug(tpmjs.name || packageJson.name),\n version: packageJson.version,\n author: this.extractAuthor(packageJson),\n repository: this.extractRepo(packageJson),\n tools: tpmjs.tools || [],\n tags: tpmjs.tags || [],\n documentation: tpmjs.documentation,\n examples: tpmjs.examples,\n };\n\n if (flags.json) {\n output.json(preview);\n return;\n }\n\n // Display preview\n output.heading('Tool Preview');\n output.divider();\n\n output.text(`Name: ${preview.name}`);\n output.text(`Slug: ${preview.slug}`);\n output.text(`Version: ${preview.version}`);\n output.text(`Category: ${preview.category}`);\n output.text(`Tier: ${preview.tier}`);\n output.text('');\n output.text(`Description:`);\n output.text(` ${preview.description || '(none)'}`);\n\n if (preview.author) {\n output.text('');\n output.text(`Author: ${preview.author}`);\n }\n\n if (preview.repository) {\n output.text(`Repository: ${preview.repository}`);\n }\n\n if (preview.tools.length > 0) {\n output.text('');\n output.text(`Tools (${preview.tools.length}):`);\n for (const tool of preview.tools) {\n if (typeof tool === 'string') {\n output.listItem(tool);\n } else {\n output.listItem(`${tool.name}: ${tool.description || ''}`);\n }\n }\n }\n\n if (preview.tags.length > 0) {\n output.text('');\n output.text(`Tags: ${preview.tags.join(', ')}`);\n }\n\n if (preview.documentation) {\n output.text('');\n output.text(`Documentation: ${preview.documentation}`);\n }\n\n if (preview.examples && preview.examples.length > 0) {\n output.text('');\n output.text(`Examples: ${preview.examples.length} example(s) provided`);\n }\n\n output.divider();\n output.text('');\n output.info('This is how your tool will appear on tpmjs.com');\n output.text('Run `tpm tool validate` to check for issues before publishing');\n }\n\n private determineTier(tpmjs: Record<string, unknown>): string {\n // Rich tier requires: tools array with schemas, examples, documentation\n const hasTools = Array.isArray(tpmjs.tools) && tpmjs.tools.length > 0;\n const hasExamples = Array.isArray(tpmjs.examples) && tpmjs.examples.length > 0;\n const hasDocumentation = Boolean(tpmjs.documentation);\n\n if (hasTools && hasExamples && hasDocumentation) {\n return 'rich';\n }\n return 'minimal';\n }\n\n private generateSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/@/g, '')\n .replace(/\\//g, '-')\n .replace(/[^a-z0-9-]/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '');\n }\n\n private extractAuthor(packageJson: Record<string, unknown>): string | undefined {\n const author = packageJson.author;\n if (typeof author === 'string') {\n return author;\n }\n if (author && typeof author === 'object') {\n const authorObj = author as Record<string, string>;\n return authorObj.name || authorObj.email;\n }\n return undefined;\n }\n\n private extractRepo(packageJson: Record<string, unknown>): string | undefined {\n const repo = packageJson.repository;\n if (typeof repo === 'string') {\n return repo;\n }\n if (repo && typeof repo === 'object') {\n return (repo as Record<string, string>).url;\n }\n return undefined;\n }\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import * as _oclif_core_interfaces from '@oclif/core/interfaces';
2
+ import { Command } from '@oclif/core';
3
+
4
+ declare class ScenarioGenerate extends Command {
5
+ static description: string;
6
+ static examples: string[];
7
+ static args: {
8
+ collection: _oclif_core_interfaces.Arg<string, Record<string, unknown>>;
9
+ };
10
+ static flags: {
11
+ count: _oclif_core_interfaces.OptionFlag<number, _oclif_core_interfaces.CustomOptions>;
12
+ 'skip-similarity-check': _oclif_core_interfaces.BooleanFlag<boolean>;
13
+ json: _oclif_core_interfaces.BooleanFlag<boolean>;
14
+ verbose: _oclif_core_interfaces.BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
18
+
19
+ export { ScenarioGenerate as default };