@asnd/skill-creator 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  declare function run(argv?: string[]): Promise<number>;
3
+ declare function isCliEntrypoint(metaUrl: string, argv1?: string | undefined): boolean;
3
4
 
4
- export { run };
5
+ export { isCliEntrypoint, run };
package/dist/cli/main.js CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/cli/main.ts
4
+ import { realpathSync } from "fs";
4
5
  import { homedir } from "os";
5
- import { join } from "path";
6
+ import { join, resolve } from "path";
7
+ import { fileURLToPath } from "url";
6
8
  import { parseArgs as parseArgs2 } from "util";
7
9
 
8
10
  // src/core/cache.ts
@@ -1238,7 +1240,7 @@ async function run(argv = process.argv.slice(2)) {
1238
1240
  const { globalArgv, commandArgv } = splitAtSubcommand(argv, GLOBAL_OPTION_SPEC);
1239
1241
  const globals = parseGlobalArgs(globalArgv);
1240
1242
  if (globals.version) {
1241
- const pkg = await import("./package-4Q4VX3O2.js");
1243
+ const pkg = await import("./package-4N3JKWJZ.js");
1242
1244
  writeStdout2(`skill-creator ${pkg.default.version}
1243
1245
  `);
1244
1246
  return 0;
@@ -1609,11 +1611,21 @@ Options:
1609
1611
  function writeStdout2(text) {
1610
1612
  console.log(text.replace(/\n$/, ""));
1611
1613
  }
1612
- if (import.meta.url === `file://${process.argv[1]}`) {
1614
+ function isCliEntrypoint(metaUrl, argv1 = process.argv[1]) {
1615
+ if (!argv1) return false;
1616
+ const modulePath = fileURLToPath(metaUrl);
1617
+ try {
1618
+ return realpathSync(argv1) === realpathSync(modulePath);
1619
+ } catch {
1620
+ return resolve(argv1) === modulePath;
1621
+ }
1622
+ }
1623
+ if (isCliEntrypoint(import.meta.url)) {
1613
1624
  const code = await run();
1614
1625
  process.exitCode = code;
1615
1626
  }
1616
1627
  export {
1628
+ isCliEntrypoint,
1617
1629
  run
1618
1630
  };
1619
1631
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/main.ts","../../src/core/cache.ts","../../src/core/coerce.ts","../../src/core/secrets.ts","../../src/graphql/execute.ts","../../src/graphql/extract.ts","../../src/core/names.ts","../../src/graphql/load.ts","../../src/openapi/load.ts","../../src/openapi/refs.ts","../../src/openapi/extract.ts","../../src/openapi/execute.ts","../../src/openapi/params.ts","../../src/mcp/extract.ts","../../src/mcp/http.ts","../../src/mcp/stdio.ts","../../src/cli/dynamic.ts","../../src/core/filter.ts","../../src/core/output.ts","../../src/cli/parse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { parseArgs } from 'node:util';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\nimport { coerceAndValidateValue } from '../core/coerce.js';\nimport { resolveSecret } from '../core/secrets.js';\nimport { executeGraphql } from '../graphql/execute.js';\nimport { extractGraphqlCommands } from '../graphql/extract.js';\nimport { loadGraphqlSchema } from '../graphql/load.js';\nimport { loadOpenApiSpec, type OpenApiSpec } from '../openapi/load.js';\nimport { extractOpenApiCommands } from '../openapi/extract.js';\nimport { executeOpenApi } from '../openapi/execute.js';\nimport { extractMcpCommands } from '../mcp/extract.js';\nimport { callHttpTool, listHttpTools, type McpHttpTransport } from '../mcp/http.js';\nimport { callStdioTool, listStdioTools, type McpTool } from '../mcp/stdio.js';\nimport type { CommandDef } from '../core/types.js';\nimport { runDynamicMode } from './dynamic.js';\nimport { splitAtSubcommand } from './parse.js';\n\nconst GLOBAL_OPTION_SPEC = {\n valueOptions: [\n '--spec',\n '--mcp',\n '--mcp-stdio',\n '--graphql',\n '--graphql-schema',\n '--base-url',\n '--auth-header',\n '--transport',\n '--cache-key',\n '--cache-ttl',\n '--search',\n '--include',\n '--exclude',\n '--methods',\n '--fields',\n '--selection-depth',\n '--head',\n ],\n boolOptions: ['--list', '--pretty', '--raw', '--refresh', '--stdin', '--version', '--help', '-h'],\n};\n\ntype GlobalArgs = {\n spec?: string;\n mcp?: string;\n mcpStdio?: string;\n graphql?: string;\n graphqlSchema?: string;\n baseUrl?: string;\n authHeaders: Array<[string, string]>;\n transport: McpHttpTransport;\n cacheKey?: string;\n cacheTtl: number;\n refresh: boolean;\n list: boolean;\n search?: string;\n include?: string[];\n exclude?: string[];\n methods?: string[];\n fields?: string;\n selectionDepth: number;\n stdin: boolean;\n pretty: boolean;\n raw: boolean;\n head?: number;\n help: boolean;\n version: boolean;\n};\n\nexport async function run(argv = process.argv.slice(2)): Promise<number> {\n if (argv[0] === '--') argv = argv.slice(1);\n const { globalArgv, commandArgv } = splitAtSubcommand(argv, GLOBAL_OPTION_SPEC);\n const globals = parseGlobalArgs(globalArgv);\n\n if (globals.version) {\n const pkg = await import('../../package.json', { with: { type: 'json' } });\n writeStdout(`skill-creator ${pkg.default.version}\\n`);\n return 0;\n }\n\n if (globals.help && commandArgv.length === 0) {\n printHelp();\n return 0;\n }\n\n try {\n validateSourceModes(globals);\n globals.authHeaders = await resolveAuthHeaders(globals.authHeaders);\n\n if (globals.spec !== undefined) {\n await handleOpenApiMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.mcpStdio !== undefined) {\n await handleMcpStdioMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.mcp !== undefined) {\n await handleMcpHttpMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.graphql !== undefined) {\n await handleGraphqlMode(globals, commandArgv);\n return 0;\n }\n\n console.error(\n 'Error: only --spec, --mcp-stdio, --mcp, and --graphql modes are implemented in this TypeScript port so far.',\n );\n return 1;\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);\n return 1;\n }\n}\n\nasync function handleOpenApiMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.spec === undefined) throw new Error('--spec is required');\n const source = globals.spec;\n\n const spec = await loadOpenApiSpec(source, {\n authHeaders: globals.authHeaders,\n cacheDir: defaultCacheDir(),\n ...(globals.cacheKey === undefined ? {} : { cacheKey: globals.cacheKey }),\n ttlSeconds: globals.cacheTtl,\n refresh: globals.refresh,\n });\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: () => extractOpenApiCommands(spec),\n renderCommands: renderOpenApiCommands,\n onEmptyCommand: () => {\n printHelp();\n throw new Error('provide a subcommand, or use --list to see available commands');\n },\n executeCommand: async (command, values) => {\n const baseUrl = determineBaseUrl(spec, source, globals.baseUrl);\n const response = await executeOpenApi(command, values, {\n baseUrl,\n authHeaders: globals.authHeaders,\n });\n\n if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.text}`);\n return response.text;\n },\n });\n}\n\nasync function handleGraphqlMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.graphql === undefined) throw new Error('--graphql is required');\n const endpoint = globals.graphql;\n\n const schema = await loadGraphqlSchema(endpoint, {\n authHeaders: globals.authHeaders,\n cacheDir: defaultCacheDir(),\n ...(globals.cacheKey === undefined ? {} : { cacheKey: globals.cacheKey }),\n ttlSeconds: globals.cacheTtl,\n refresh: globals.refresh,\n ...(globals.graphqlSchema === undefined ? {} : { schemaSource: globals.graphqlSchema }),\n onWarning: (message) => console.error(message),\n });\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: () => extractGraphqlCommands(schema),\n renderCommands: renderGraphqlCommands,\n prepareCommandArgs: async (argv) => {\n const stdinFlag = stripFlag(argv, '--stdin');\n const stdinValues = globals.stdin || stdinFlag.enabled ? await readStdinJson() : {};\n return { argv: stdinFlag.argv, initialValues: stdinValues };\n },\n executeCommand: (command, values) =>\n executeGraphql(command, values, {\n endpoint,\n authHeaders: globals.authHeaders,\n ...(globals.fields === undefined ? {} : { fields: globals.fields }),\n selectionDepth: globals.selectionDepth,\n }),\n });\n}\n\nasync function handleMcpHttpMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.mcp === undefined) throw new Error('--mcp is required');\n const endpoint = globals.mcp;\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: async () => extractMcpCommands(await loadMcpHttpTools(globals)),\n renderCommands: renderMcpCommands,\n executeCommand: async (command, values) => {\n const toolArgs = collectMcpToolArgs(command, values);\n return callHttpTool(endpoint, command.toolName ?? command.name, toolArgs, {\n headers: globals.authHeaders,\n transport: globals.transport,\n });\n },\n });\n}\n\nasync function loadMcpHttpTools(globals: GlobalArgs): Promise<McpTool[]> {\n if (globals.mcp === undefined) throw new Error('--mcp is required');\n\n const cacheKey = `mcp-${\n globals.cacheKey ??\n cacheKeyFor({\n source: globals.mcp,\n authHeaders: globals.authHeaders,\n transport: globals.transport,\n })\n }`;\n const cacheDir = defaultCacheDir();\n\n if (!globals.refresh) {\n const cached = await loadCached<McpTool[]>(cacheDir, cacheKey, globals.cacheTtl);\n if (cached !== null) return cached;\n }\n\n const tools = await listHttpTools(globals.mcp, {\n headers: globals.authHeaders,\n transport: globals.transport,\n });\n await saveCache(cacheDir, cacheKey, tools);\n return tools;\n}\n\nasync function handleMcpStdioMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.mcpStdio === undefined) throw new Error('--mcp-stdio is required');\n const commandLine = globals.mcpStdio;\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: async () => extractMcpCommands(await listStdioTools(commandLine)),\n renderCommands: renderMcpCommands,\n executeCommand: async (command, values) => {\n const toolArgs = collectMcpToolArgs(command, values);\n return callStdioTool(commandLine, command.toolName ?? command.name, toolArgs);\n },\n });\n}\n\nfunction collectMcpToolArgs(\n command: CommandDef,\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const args: Record<string, unknown> = {};\n for (const param of command.params) {\n if (values[param.name] !== undefined) {\n args[param.originalName] = coerceAndValidateValue(\n values[param.name],\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n return args;\n}\n\nfunction parseGlobalArgs(argv: string[]): GlobalArgs {\n assertKnownValueOptionsHaveValues(argv, GLOBAL_OPTION_SPEC.valueOptions);\n\n const { values } = parseArgs({\n args: argv,\n options: {\n spec: { type: 'string' },\n mcp: { type: 'string' },\n 'mcp-stdio': { type: 'string' },\n graphql: { type: 'string' },\n 'graphql-schema': { type: 'string' },\n 'base-url': { type: 'string' },\n 'auth-header': { type: 'string', multiple: true },\n transport: { type: 'string' },\n 'cache-key': { type: 'string' },\n 'cache-ttl': { type: 'string' },\n search: { type: 'string' },\n include: { type: 'string' },\n exclude: { type: 'string' },\n methods: { type: 'string' },\n fields: { type: 'string' },\n 'selection-depth': { type: 'string' },\n head: { type: 'string' },\n list: { type: 'boolean' },\n pretty: { type: 'boolean' },\n raw: { type: 'boolean' },\n refresh: { type: 'boolean' },\n stdin: { type: 'boolean' },\n version: { type: 'boolean' },\n help: { type: 'boolean', short: 'h' },\n },\n strict: false,\n allowPositionals: false,\n });\n\n const authHeaders = stringListOption(values['auth-header']).map(parseHeader);\n const search = stringOption(values.search);\n return {\n ...optionalStringProperty('spec', stringOption(values.spec)),\n ...optionalStringProperty('mcp', stringOption(values.mcp)),\n ...optionalStringProperty('mcpStdio', stringOption(values['mcp-stdio'])),\n ...optionalStringProperty('graphql', stringOption(values.graphql)),\n ...optionalStringProperty('graphqlSchema', stringOption(values['graphql-schema'])),\n ...optionalStringProperty('baseUrl', stringOption(values['base-url'])),\n authHeaders,\n transport: parseTransport(stringOption(values.transport) ?? 'auto'),\n ...optionalStringProperty('cacheKey', stringOption(values['cache-key'])),\n cacheTtl: Number.parseInt(stringOption(values['cache-ttl']) ?? '3600', 10),\n refresh: values.refresh === true,\n list: values.list === true || search !== undefined,\n ...optionalStringProperty('search', search),\n ...optionalStringArrayProperty('include', parseOptionalCommaList(values.include)),\n ...optionalStringArrayProperty('exclude', parseOptionalCommaList(values.exclude)),\n ...optionalStringArrayProperty('methods', parseOptionalCommaList(values.methods)),\n ...optionalStringProperty('fields', stringOption(values.fields)),\n selectionDepth: Number.parseInt(stringOption(values['selection-depth']) ?? '2', 10),\n stdin: values.stdin === true,\n pretty: values.pretty === true,\n raw: values.raw === true,\n ...optionalNumberProperty('head', parseOptionalInteger(values.head)),\n help: values.help === true,\n version: values.version === true,\n };\n}\n\nfunction renderOpenApiCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No commands found.\\n';\n return `${commands\n .map((command) =>\n `${command.name.padEnd(32)} ${(command.method ?? '').toUpperCase().padEnd(6)} ${command.description ?? ''}`.trimEnd(),\n )\n .join('\\n')}\\n`;\n}\n\nfunction renderMcpCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No tools found.\\n';\n return `${commands\n .map((command) => `${command.name.padEnd(32)} ${command.description ?? ''}`.trimEnd())\n .join('\\n')}\\n`;\n}\n\nfunction renderGraphqlCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No GraphQL operations found.\\n';\n return `${commands\n .map((command) =>\n `${command.name.padEnd(32)} ${(command.graphqlOperationType ?? '').padEnd(8)} ${command.description ?? ''}`.trimEnd(),\n )\n .join('\\n')}\\n`;\n}\n\nfunction determineBaseUrl(spec: OpenApiSpec, source: string, override: string | undefined): string {\n if (override !== undefined) return override;\n const servers = Array.isArray(spec.servers) ? spec.servers : [];\n const firstServer = servers[0];\n const serverUrl =\n typeof firstServer === 'object' && firstServer !== null && 'url' in firstServer\n ? String((firstServer as { url: unknown }).url)\n : '';\n if (serverUrl.startsWith('http://') || serverUrl.startsWith('https://')) return serverUrl;\n if (source.startsWith('http://') || source.startsWith('https://')) {\n const origin = new URL(source).origin;\n return serverUrl ? `${origin}${serverUrl}` : origin;\n }\n throw new Error('cannot determine base URL. Use --base-url.');\n}\n\nfunction validateSourceModes(globals: GlobalArgs): void {\n const active = [globals.spec, globals.mcp, globals.mcpStdio, globals.graphql].filter(\n (value) => value !== undefined,\n ).length;\n if (active === 0) {\n printHelp();\n throw new Error('one of --spec, --mcp, --mcp-stdio, or --graphql is required.');\n }\n if (active > 1)\n throw new Error('--spec, --mcp, --mcp-stdio, and --graphql are mutually exclusive.');\n}\n\nfunction assertKnownValueOptionsHaveValues(argv: string[], options: Iterable<string>): void {\n const valueOptions = new Set(options);\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined || !token.startsWith('--')) continue;\n\n const option = token.includes('=') ? token.slice(0, token.indexOf('=')) : token;\n if (!valueOptions.has(option) || token.includes('=')) continue;\n if (argv[index + 1] === undefined) throw new Error(`missing value for ${option}`);\n }\n}\n\nfunction stringOption(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction stringListOption(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((item): item is string => typeof item === 'string');\n const single = stringOption(value);\n return single === undefined ? [] : [single];\n}\n\nfunction optionalStringProperty<K extends string>(\n key: K,\n value: string | undefined,\n): Partial<Record<K, string>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, string>);\n}\n\nfunction optionalStringArrayProperty<K extends string>(\n key: K,\n value: string[] | undefined,\n): Partial<Record<K, string[]>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, string[]>);\n}\n\nfunction optionalNumberProperty<K extends string>(\n key: K,\n value: number | undefined,\n): Partial<Record<K, number>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, number>);\n}\n\nfunction parseOptionalCommaList(value: unknown): string[] | undefined {\n const raw = stringOption(value);\n return raw === undefined ? undefined : parseCommaList(raw);\n}\n\nfunction parseOptionalInteger(value: unknown): number | undefined {\n const raw = stringOption(value);\n return raw === undefined ? undefined : Number.parseInt(raw, 10);\n}\n\nfunction stripFlag(argv: string[], flag: string): { argv: string[]; enabled: boolean } {\n let enabled = false;\n const filtered = argv.filter((token) => {\n if (token !== flag) return true;\n enabled = true;\n return false;\n });\n return { argv: filtered, enabled };\n}\n\nasync function readStdinJson(): Promise<Record<string, unknown>> {\n let raw = '';\n for await (const chunk of process.stdin) raw += String(chunk);\n if (raw.trim().length === 0) return {};\n\n const parsed = JSON.parse(raw) as unknown;\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('--stdin must contain a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction parseCommaList(value: string): string[] {\n return value\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0);\n}\n\nfunction parseTransport(value: string): McpHttpTransport {\n if (value === 'auto' || value === 'streamable' || value === 'sse') return value;\n throw new Error('--transport must be one of: auto, streamable, sse');\n}\n\nfunction parseHeader(header: string): [string, string] {\n const colon = header.indexOf(':');\n if (colon === -1) throw new Error(`invalid auth header format: ${header}`);\n return [header.slice(0, colon).trim(), header.slice(colon + 1).trim()];\n}\n\nasync function resolveAuthHeaders(\n headers: Array<[string, string]>,\n): Promise<Array<[string, string]>> {\n return Promise.all(headers.map(async ([key, value]) => [key, await resolveSecret(value)]));\n}\n\nfunction defaultCacheDir(): string {\n return process.env.SKILL_CREATOR_CACHE_DIR ?? join(homedir(), '.cache', 'skill-creator');\n}\n\nfunction printHelp(): void {\n writeStdout(`skill-creator [global options] <subcommand> [command options]\n\nSource (mutually exclusive, one required):\n --spec URL|FILE OpenAPI spec (JSON or YAML, local or remote)\n --mcp URL MCP server URL (HTTP/SSE)\n --mcp-stdio CMD MCP server command (stdio transport)\n --graphql URL GraphQL endpoint URL\n\nOptions:\n --auth-header K:V HTTP header (repeatable)\n --transport TYPE MCP HTTP transport: auto|streamable|sse (default: auto)\n --base-url URL Override base URL from spec\n --graphql-schema SRC GraphQL SDL or introspection JSON schema FILE|URL\n --cache-key KEY Custom cache key\n --cache-ttl SECONDS Cache TTL (default: 3600)\n --refresh Bypass cache\n --list List available subcommands\n --search PATTERN Search commands by name or description\n --include GLOBS Include command globs (comma-separated)\n --exclude GLOBS Exclude command globs (comma-separated)\n --methods METHODS OpenAPI method filter, e.g. GET,POST\n --fields FIELDS Override GraphQL selection set\n --selection-depth N GraphQL default selection depth (default: 2)\n --stdin Read GraphQL variables from stdin JSON\n --pretty Pretty-print JSON output\n --raw Print raw response body\n --head N Limit output to first N array records\n --help, -h Show help\n --version Show version\n`);\n}\n\nfunction writeStdout(text: string): void {\n console.log(text.replace(/\\n$/, ''));\n}\n\nif (import.meta.url === `file://${process.argv[1]}`) {\n const code = await run();\n process.exitCode = code;\n}\n","import { createHash } from 'node:crypto';\nimport * as cacache from 'cacache';\n\nconst CACHE_IGNORED_FIELDS = new Set([\n 'cacheTtl',\n 'cache_ttl',\n 'description',\n 'include',\n 'exclude',\n 'methods',\n]);\n\nexport function cacheKeyFor(config: Record<string, unknown>): string {\n const normalized = normalizeConfig(config);\n return createHash('sha256').update(JSON.stringify(normalized)).digest('hex').slice(0, 16);\n}\n\nexport async function loadCached<T = unknown>(\n cacheDir: string,\n key: string,\n ttlSeconds: number,\n): Promise<T | null> {\n try {\n const info = await cacache.get.info(cacheDir, key);\n if (info === null) return null;\n\n const ageSeconds = (Date.now() - info.time) / 1000;\n if (ageSeconds >= ttlSeconds) return null;\n\n const entry = await cacache.get(cacheDir, key);\n return JSON.parse(entry.data.toString('utf8')) as T;\n } catch {\n return null;\n }\n}\n\nexport async function saveCache(cacheDir: string, key: string, data: unknown): Promise<void> {\n await cacache.put(cacheDir, key, JSON.stringify(data));\n}\n\nfunction normalizeConfig(input: Record<string, unknown>): Record<string, unknown> {\n const output: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n if (CACHE_IGNORED_FIELDS.has(key)) continue;\n if (key === 'authHeaders' || key === 'auth_headers') {\n output[key] = normalizeAuthHeaders(value);\n } else {\n output[key] = value;\n }\n }\n return Object.fromEntries(Object.entries(output).sort(([a], [b]) => a.localeCompare(b)));\n}\n\nfunction normalizeAuthHeaders(value: unknown): unknown {\n if (!Array.isArray(value)) return value;\n return [...value].sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));\n}\n","import { Ajv, type ErrorObject, type ValidateFunction } from 'ajv';\nimport addFormatsPlugin from 'ajv-formats';\nimport type { CliValueType, JsonSchema } from './types.js';\n\nconst ajv = new Ajv({ allErrors: true, strict: false });\nconst addFormats = addFormatsPlugin as unknown as (instance: Ajv) => Ajv;\naddFormats(ajv);\nconst validatorCache = new WeakMap<JsonSchema, ValidateFunction>();\n\nexport function schemaTypeToCliType(schema: JsonSchema): {\n type: CliValueType;\n suffix: string;\n} {\n switch (schema.type) {\n case 'integer':\n return { type: 'integer', suffix: '' };\n case 'number':\n return { type: 'number', suffix: '' };\n case 'boolean':\n return { type: 'boolean', suffix: '' };\n case 'array':\n return { type: 'string', suffix: ' (JSON array)' };\n case 'object':\n return { type: 'string', suffix: ' (JSON object)' };\n default:\n return { type: 'string', suffix: '' };\n }\n}\n\nexport function coerceAndValidateValue(\n value: unknown,\n schema: JsonSchema = {},\n label = 'value',\n): unknown {\n const coerced = coerceValue(value, schema);\n validateValue(coerced, schema, label);\n return coerced;\n}\n\nexport function validateValue(value: unknown, schema: JsonSchema = {}, label = 'value'): void {\n if (Object.keys(schema).length === 0) return;\n\n const validate = validatorFor(schema);\n if (validate(value)) return;\n\n throw new Error(`${label} failed validation: ${formatAjvErrors(validate.errors ?? [], label)}`);\n}\n\nfunction validatorFor(schema: JsonSchema): ValidateFunction {\n const cached = validatorCache.get(schema);\n if (cached !== undefined) return cached;\n\n const validate = ajv.compile(normalizeSchema(schema));\n validatorCache.set(schema, validate);\n return validate;\n}\n\nfunction normalizeSchema(schema: JsonSchema): object {\n if (schema.nullable === true && typeof schema.type === 'string') {\n return { ...schema, type: [schema.type, 'null'] };\n }\n return schema;\n}\n\nfunction formatAjvErrors(errors: readonly ErrorObject[], label: string): string {\n return errors\n .map((error) => {\n const path = error.instancePath.length > 0 ? `${label}${error.instancePath}` : label;\n return `${path} ${error.message ?? 'is invalid'}`;\n })\n .join('; ');\n}\n\nexport function coerceValue(value: unknown, schema: JsonSchema = {}): unknown {\n if (value === null || value === undefined) return null;\n\n switch (schema.type) {\n case 'array':\n return coerceArray(value, schema.items);\n case 'object':\n return coerceObject(value);\n case 'boolean':\n return Boolean(value);\n case 'integer':\n return typeof value === 'number' ? Math.trunc(value) : Number.parseInt(String(value), 10);\n case 'number':\n return typeof value === 'number' ? value : Number.parseFloat(String(value));\n default:\n return coerceSchemaless(value);\n }\n}\n\nfunction coerceArray(value: unknown, itemSchema?: JsonSchema): unknown[] | unknown {\n if (Array.isArray(value)) return value;\n if (typeof value !== 'string') return value;\n\n try {\n const parsed: unknown = JSON.parse(value);\n if (Array.isArray(parsed)) return parsed;\n } catch {\n // Fall back to comma/single value handling below.\n }\n\n const values = value.includes(',') ? value.split(',').map((part) => part.trim()) : [value];\n return values.map((item) => coerceItem(item, itemSchema?.type));\n}\n\nfunction coerceItem(value: string, type: string | undefined): unknown {\n switch (type) {\n case 'integer':\n return Number.parseInt(value, 10);\n case 'number':\n return Number.parseFloat(value);\n case 'boolean':\n return ['true', '1', 'yes'].includes(value.toLowerCase());\n default:\n return value;\n }\n}\n\nfunction coerceObject(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction coerceSchemaless(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed || !['{', '['].includes(trimmed[0] ?? '')) return value;\n try {\n const parsed: unknown = JSON.parse(trimmed);\n return typeof parsed === 'object' && parsed !== null ? parsed : value;\n } catch {\n return value;\n }\n}\n","import { readFile } from 'node:fs/promises';\n\nexport async function resolveSecret(value: string): Promise<string> {\n if (value.startsWith('env:')) {\n const name = value.slice(4);\n const resolved = process.env[name];\n if (resolved === undefined)\n throw new Error(`environment variable ${JSON.stringify(name)} is not set`);\n return resolved;\n }\n\n if (value.startsWith('file:')) {\n const path = value.slice(5);\n try {\n return (await readFile(path, 'utf8')).replace(/\\n$/, '');\n } catch {\n throw new Error(`secret file not found: ${path}`);\n }\n }\n\n return value;\n}\n","import {\n Kind,\n OperationTypeNode,\n parse,\n print,\n type DocumentNode,\n type FieldNode,\n type GraphQLOutputType,\n type OperationDefinitionNode,\n type SelectionSetNode,\n type TypeNode,\n type VariableDefinitionNode,\n} from 'graphql';\nimport { ClientError, GraphQLClient } from 'graphql-request';\nimport { coerceAndValidateValue } from '../core/coerce.js';\nimport type { CommandDef } from '../core/types.js';\nimport { buildGraphqlSelectionSet } from './extract.js';\n\nexport type ExecuteGraphqlOptions = {\n endpoint: string;\n authHeaders?: Array<[string, string]>;\n fields?: string;\n selectionDepth?: number;\n};\n\nexport async function executeGraphql(\n command: CommandDef,\n values: Record<string, unknown>,\n options: ExecuteGraphqlOptions,\n): Promise<unknown> {\n const fieldName = command.graphqlFieldName ?? command.name;\n const variables = collectVariables(command, values);\n const query = buildGraphqlOperation(\n command,\n fieldName,\n variables,\n options.fields,\n options.selectionDepth ?? 2,\n );\n const client = new GraphQLClient(options.endpoint, {\n headers: Object.fromEntries(options.authHeaders ?? []),\n });\n\n try {\n const data = await client.request<Record<string, unknown>>(query, variables);\n if (!isRecord(data)) return data;\n return data[fieldName];\n } catch (error) {\n throw normalizeGraphqlRequestError(error);\n }\n}\n\nfunction collectVariables(\n command: CommandDef,\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const variables: Record<string, unknown> = {};\n for (const param of command.params) {\n const value = values[param.name] ?? values[param.originalName];\n if (value !== undefined) {\n variables[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n return variables;\n}\n\nfunction buildGraphqlOperation(\n command: CommandDef,\n fieldName: string,\n variables: Record<string, unknown>,\n fields: string | undefined,\n selectionDepth: number,\n): string {\n const activeParams = command.params.filter(\n (param) => param.required || variables[param.originalName] !== undefined,\n );\n const variableDefinitions = activeParams.map(\n (param): VariableDefinitionNode => ({\n kind: Kind.VARIABLE_DEFINITION,\n variable: {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: param.originalName },\n },\n type: parseGraphqlType(graphqlParamType(param)),\n }),\n );\n const selectionSet = buildSelectionSetNode(command, fields, selectionDepth);\n const field: FieldNode = {\n kind: Kind.FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n arguments: activeParams.map((param) => ({\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: param.originalName },\n value: {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: param.originalName },\n },\n })),\n ...(selectionSet === undefined ? {} : { selectionSet }),\n };\n const operation: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation:\n command.graphqlOperationType === 'mutation'\n ? OperationTypeNode.MUTATION\n : OperationTypeNode.QUERY,\n name: { kind: Kind.NAME, value: commandName(command) },\n ...(variableDefinitions.length === 0 ? {} : { variableDefinitions }),\n selectionSet: { kind: Kind.SELECTION_SET, selections: [field] },\n };\n const document: DocumentNode = { kind: Kind.DOCUMENT, definitions: [operation] };\n return print(document);\n}\n\nfunction buildSelectionSetNode(\n command: CommandDef,\n fields: string | undefined,\n selectionDepth: number,\n): SelectionSetNode | undefined {\n if (command.graphqlReturnType === undefined) return undefined;\n\n const selectionSet = buildGraphqlSelectionSet(\n command.graphqlReturnType as GraphQLOutputType,\n fields,\n selectionDepth,\n );\n if (selectionSet.length === 0) return undefined;\n return parseSelectionSet(selectionSet);\n}\n\nfunction parseGraphqlType(type: string): TypeNode {\n const operation = parseSingleOperation(`query __Type($value: ${type}) { __typename }`);\n const variable = operation.variableDefinitions?.[0];\n if (variable === undefined) throw new Error(`invalid GraphQL variable type: ${type}`);\n return variable.type;\n}\n\nfunction parseSelectionSet(selectionSet: string): SelectionSetNode {\n const operation = parseSingleOperation(`query __Selection { _selection ${selectionSet} }`);\n const selection = operation.selectionSet.selections[0];\n if (selection?.kind !== Kind.FIELD || selection.selectionSet === undefined) {\n throw new Error('invalid GraphQL selection set');\n }\n return selection.selectionSet;\n}\n\nfunction parseSingleOperation(source: string): OperationDefinitionNode {\n const document = parse(source);\n const definition = document.definitions[0];\n if (definition?.kind !== Kind.OPERATION_DEFINITION) {\n throw new Error('failed to build GraphQL operation');\n }\n return definition;\n}\n\nfunction graphqlParamType(param: CommandDef['params'][number]): string {\n const type = param.schema?.graphqlType;\n return typeof type === 'string' ? type : jsonSchemaToGraphqlType(param.schema?.type);\n}\n\nfunction jsonSchemaToGraphqlType(type: string | undefined): string {\n switch (type) {\n case 'integer':\n return 'Int';\n case 'number':\n return 'Float';\n case 'boolean':\n return 'Boolean';\n default:\n return 'String';\n }\n}\n\nfunction commandName(command: CommandDef): string {\n return `${command.graphqlOperationType ?? 'query'}_${command.graphqlFieldName ?? command.name}`.replace(\n /[^_0-9A-Za-z]/g,\n '_',\n );\n}\n\nfunction normalizeGraphqlRequestError(error: unknown): Error {\n if (error instanceof ClientError) {\n if (error.response.errors !== undefined && error.response.errors.length > 0) {\n return new Error(`GraphQL error: ${formatGraphqlErrors(error.response.errors)}`);\n }\n\n return new Error(\n `GraphQL HTTP ${error.response.status}: ${JSON.stringify(error.response, null, 0)}`,\n );\n }\n\n return error instanceof Error ? error : new Error(String(error));\n}\n\nfunction formatGraphqlErrors(errors: ReadonlyArray<{ message?: string }>): string {\n return errors.map((error) => error.message ?? 'unknown error').join('; ');\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import {\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n type GraphQLFieldMap,\n type GraphQLInputType,\n type GraphQLOutputType,\n type GraphQLSchema,\n type GraphQLType,\n} from 'graphql';\nimport { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef } from '../core/types.js';\n\nexport function extractGraphqlCommands(schema: GraphQLSchema): CommandDef[] {\n const commands: CommandDef[] = [];\n addRootFields(commands, schema.getQueryType()?.getFields(), 'query');\n addRootFields(commands, schema.getMutationType()?.getFields(), 'mutation');\n return commands;\n}\n\nexport function buildGraphqlSelectionSet(\n type: GraphQLOutputType,\n fields?: string,\n depth = 2,\n): string {\n if (fields !== undefined && fields.trim().length > 0) return `{ ${fields.trim()} }`;\n return buildDefaultSelectionSet(type, depth, new Set());\n}\n\nfunction addRootFields(\n commands: CommandDef[],\n fields: GraphQLFieldMap<unknown, unknown> | undefined,\n operationType: 'query' | 'mutation',\n): void {\n if (fields === undefined) return;\n\n for (const field of Object.values(fields)) {\n const description = optionalString(field.description);\n commands.push({\n name: toKebab(field.name),\n ...(description === undefined ? {} : { description }),\n params: field.args.map((arg) =>\n graphqlArgToParam(arg.name, arg.type, optionalString(arg.description)),\n ),\n graphqlOperationType: operationType,\n graphqlFieldName: field.name,\n graphqlReturnType: field.type,\n });\n }\n}\n\nfunction graphqlArgToParam(\n name: string,\n type: GraphQLInputType,\n description: string | undefined,\n): ParamDef {\n const schema = graphqlInputTypeToJsonSchema(type);\n const cliType = schemaTypeToCliType(schema).type;\n return {\n name: toKebab(name),\n originalName: name,\n type: cliType,\n required: isNonNullType(type),\n ...(description === undefined ? {} : { description }),\n location: 'graphql_arg',\n schema,\n };\n}\n\nexport function graphqlInputTypeToJsonSchema(type: GraphQLInputType): JsonSchema {\n if (isNonNullType(type)) {\n return { ...graphqlInputTypeToJsonSchema(type.ofType), graphqlType: graphqlTypeToString(type) };\n }\n\n if (isListType(type)) {\n return {\n type: 'array',\n items: graphqlInputTypeToJsonSchema(type.ofType),\n graphqlType: graphqlTypeToString(type),\n };\n }\n\n const namedType = getNamedType(type);\n const base: JsonSchema = { graphqlType: graphqlTypeToString(type) };\n\n if (isEnumType(namedType)) {\n return { ...base, type: 'string', enum: namedType.getValues().map((value) => value.name) };\n }\n\n if (isInputObjectType(namedType)) return { ...base, type: 'object' };\n\n if (isScalarType(namedType)) {\n switch (namedType.name) {\n case 'Int':\n return { ...base, type: 'integer' };\n case 'Float':\n return { ...base, type: 'number' };\n case 'Boolean':\n return { ...base, type: 'boolean' };\n default:\n return { ...base, type: 'string' };\n }\n }\n\n return { ...base, type: 'string' };\n}\n\nexport function graphqlTypeToString(type: GraphQLType): string {\n if (isNonNullType(type)) return `${graphqlTypeToString(type.ofType)}!`;\n if (isListType(type)) return `[${graphqlTypeToString(type.ofType)}]`;\n return getNamedType(type).name;\n}\n\nfunction optionalString(value: string | null | undefined): string | undefined {\n return value ?? undefined;\n}\n\nfunction buildDefaultSelectionSet(\n type: GraphQLOutputType,\n depth: number,\n seenTypes: Set<string>,\n): string {\n const namedType = getNamedType(type);\n if (isScalarType(namedType) || isEnumType(namedType)) return '';\n if (depth <= 0) return '';\n if (!isObjectType(namedType) && !isInterfaceType(namedType)) return '{ __typename }';\n if (seenTypes.has(namedType.name)) return '';\n\n const nextSeen = new Set(seenTypes);\n nextSeen.add(namedType.name);\n\n const selections = Object.values(namedType.getFields())\n .filter((field) => field.args.length === 0)\n .map((field) => {\n const fieldNamedType = getNamedType(field.type);\n if (isScalarType(fieldNamedType) || isEnumType(fieldNamedType)) return field.name;\n\n const nested = buildDefaultSelectionSet(field.type, depth - 1, nextSeen);\n return nested ? `${field.name} ${nested}` : '';\n })\n .filter((field) => field.length > 0);\n\n return selections.length === 0 ? '' : `{ ${selections.join(' ')} }`;\n}\n","export function toKebab(name: string): string {\n return name\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/_/g, '-')\n .toLowerCase();\n}\n","import { readFile } from 'node:fs/promises';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport ky from 'ky';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema } from '@graphql-tools/load';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport {\n buildClientSchema,\n buildSchema,\n getIntrospectionQuery,\n introspectionFromSchema,\n type GraphQLSchema,\n type IntrospectionQuery,\n} from 'graphql';\nimport { GraphQLClient } from 'graphql-request';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\n\nexport type LoadGraphqlOptions = {\n authHeaders?: Array<[string, string]>;\n cacheDir?: string;\n cacheKey?: string;\n ttlSeconds?: number;\n refresh?: boolean;\n schemaSource?: string;\n onWarning?: (message: string) => void;\n};\n\nexport async function loadGraphqlSchema(\n endpoint: string,\n options: LoadGraphqlOptions = {},\n): Promise<GraphQLSchema> {\n const authHeaders = options.authHeaders ?? [];\n if (options.schemaSource !== undefined) {\n return loadProvidedGraphqlSchema(options.schemaSource, authHeaders);\n }\n\n const cacheKey = `graphql-${\n options.cacheKey ?? cacheKeyFor({ endpoint, authHeaders: options.authHeaders ?? [] })\n }`;\n const ttlSeconds = options.ttlSeconds ?? 3600;\n\n if (options.cacheDir !== undefined && !options.refresh) {\n const cached = await loadCached<IntrospectionQuery>(options.cacheDir, cacheKey, ttlSeconds);\n if (cached !== null) return buildClientSchema(cached);\n }\n\n try {\n const schema = await loadRemoteGraphqlSchema(endpoint, authHeaders);\n if (options.cacheDir !== undefined) {\n await saveCache(options.cacheDir, cacheKey, introspectionFromSchema(schema));\n }\n return schema;\n } catch (error) {\n if (options.cacheDir !== undefined) {\n const stale = await loadCached<IntrospectionQuery>(\n options.cacheDir,\n cacheKey,\n Number.POSITIVE_INFINITY,\n );\n if (stale !== null) {\n options.onWarning?.(\n `Warning: using stale cached GraphQL schema because introspection failed: ${formatError(error)}`,\n );\n return buildClientSchema(stale);\n }\n }\n\n throw new Error(\n `GraphQL introspection is disabled or unavailable. Provide a schema with --graphql-schema ./schema.graphql or --graphql-schema ./introspection.json. (${formatError(error)})`,\n );\n }\n}\n\nasync function loadRemoteGraphqlSchema(\n endpoint: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n const client = new GraphQLClient(endpoint, {\n headers: Object.fromEntries(authHeaders),\n });\n const introspection = await client.request<IntrospectionQuery>(getIntrospectionQuery());\n return buildClientSchema(introspection);\n}\n\nasync function loadProvidedGraphqlSchema(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n try {\n const schema = await loadSchema(source, {\n loaders: [new UrlLoader(), new GraphQLFileLoader(), new JsonFileLoader()],\n headers: Object.fromEntries(authHeaders),\n });\n return buildClientSchema(introspectionFromSchema(schema));\n } catch {\n return loadProvidedGraphqlSchemaFallback(source, authHeaders);\n }\n}\n\nasync function loadProvidedGraphqlSchemaFallback(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n const text = await readSchemaSource(source, authHeaders);\n const trimmed = text.trim();\n\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) {\n const parsed = JSON.parse(trimmed) as unknown;\n return buildClientSchema(extractIntrospection(parsed));\n }\n\n return buildSchema(text);\n}\n\nasync function readSchemaSource(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<string> {\n if (source.startsWith('http://') || source.startsWith('https://')) {\n const response = await ky.get(source, {\n headers: Object.fromEntries(authHeaders),\n throwHttpErrors: false,\n });\n if (!response.ok) throw new Error(`failed to fetch GraphQL schema: HTTP ${response.status}`);\n return response.text();\n }\n return readFile(source, 'utf8');\n}\n\nfunction extractIntrospection(value: unknown): IntrospectionQuery {\n if (!isRecord(value)) throw new Error('GraphQL schema JSON must be an object');\n\n if (isRecord(value.data)) return extractIntrospection(value.data);\n if (isRecord(value.__schema)) return value as unknown as IntrospectionQuery;\n\n throw new Error('GraphQL schema JSON must contain an introspection __schema object');\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { readFile } from 'node:fs/promises';\nimport ky from 'ky';\nimport YAML from 'yaml';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\nimport { resolveRefs } from './refs.js';\n\nexport type LoadOpenApiOptions = {\n authHeaders?: Array<[string, string]>;\n cacheDir?: string;\n cacheKey?: string;\n ttlSeconds?: number;\n refresh?: boolean;\n};\n\nexport type OpenApiSpec = Record<string, unknown> & {\n paths: Record<string, unknown>;\n};\n\nexport async function loadOpenApiSpec(\n source: string,\n options: LoadOpenApiOptions = {},\n): Promise<OpenApiSpec> {\n const isUrl = source.startsWith('http://') || source.startsWith('https://');\n const ttlSeconds = options.ttlSeconds ?? 3600;\n const key = options.cacheKey ?? cacheKeyFor({ source, authHeaders: options.authHeaders ?? [] });\n\n if (isUrl && options.cacheDir !== undefined && !options.refresh) {\n const cached = await loadCached<OpenApiSpec>(options.cacheDir, key, ttlSeconds);\n if (cached !== null) return cached;\n }\n\n const raw = isUrl\n ? await fetchRemoteSpec(source, options.authHeaders ?? [])\n : await readFile(source, 'utf8');\n const parsed = parseSpec(raw);\n const spec = await resolveRefs(parsed);\n\n if (!isOpenApiSpec(spec)) {\n throw new Error(\"spec must contain 'paths'\");\n }\n\n if (isUrl && options.cacheDir !== undefined) {\n await saveCache(options.cacheDir, key, spec);\n }\n\n return spec;\n}\n\nasync function fetchRemoteSpec(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<string> {\n const response = await ky.get(source, {\n headers: Object.fromEntries(authHeaders),\n throwHttpErrors: false,\n });\n if (!response.ok) throw new Error(`failed to fetch spec: HTTP ${response.status}`);\n return response.text();\n}\n\nfunction parseSpec(raw: string): unknown {\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return YAML.parse(raw) as unknown;\n }\n}\n\nfunction isOpenApiSpec(value: unknown): value is OpenApiSpec {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n 'paths' in value &&\n typeof (value as { paths?: unknown }).paths === 'object'\n );\n}\n","import $RefParser from '@apidevtools/json-schema-ref-parser';\n\nexport async function resolveRefs<T>(input: T): Promise<T> {\n return (await $RefParser.dereference(input as object, {\n mutateInputSchema: false,\n dereference: { circular: 'ignore' },\n })) as T;\n}\n","import { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef, ParamLocation } from '../core/types.js';\n\nconst HTTP_METHODS = new Set(['get', 'post', 'put', 'delete', 'patch']);\n\ntype JsonObject = Record<string, unknown>;\n\nexport function extractOpenApiCommands(spec: unknown): CommandDef[] {\n const commands: CommandDef[] = [];\n const seenNames = new Map<string, number>();\n const paths = isObject(spec) && isObject(spec.paths) ? spec.paths : {};\n\n for (const [path, methods] of Object.entries(paths)) {\n if (!isObject(methods)) continue;\n for (const [method, operation] of Object.entries(methods)) {\n if (!HTTP_METHODS.has(method) || !isObject(operation)) continue;\n\n let name =\n operation.operationId !== undefined\n ? toKebab(String(operation.operationId))\n : fallbackName(method, path);\n const seen = seenNames.get(name) ?? 0;\n seenNames.set(name, seen + 1);\n if (seen > 0) name = `${name}-${method}`;\n\n const params = extractParameters(operation);\n const body = extractRequestBodyParams(operation);\n params.push(...body.params);\n\n commands.push({\n name,\n description: String(\n operation.summary ?? operation.description ?? `${method.toUpperCase()} ${path}`,\n ),\n params,\n hasBody: body.params.length > 0,\n method,\n path,\n ...(body.contentType === undefined ? {} : { contentType: body.contentType }),\n });\n }\n }\n\n return commands;\n}\n\nfunction extractParameters(operation: JsonObject): ParamDef[] {\n const rawParams = Array.isArray(operation.parameters) ? operation.parameters : [];\n return rawParams.filter(isObject).map((param): ParamDef => {\n const schema = getSchema(param.schema);\n const { type, suffix } = schemaTypeToCliType(schema);\n const choices = Array.isArray(schema.enum) ? { choices: schema.enum } : {};\n return {\n name: toKebab(String(param.name)),\n originalName: String(param.name),\n type,\n required: Boolean(param.required),\n description: `${String(param.description ?? param.name)}${suffix}`,\n ...choices,\n location: normalizeLocation(param.in),\n schema,\n };\n });\n}\n\nfunction extractRequestBodyParams(operation: JsonObject): {\n params: ParamDef[];\n contentType?: string;\n} {\n const requestBody = isObject(operation.requestBody) ? operation.requestBody : undefined;\n const content =\n requestBody !== undefined && isObject(requestBody.content) ? requestBody.content : {};\n\n const multipartSchema = getContentSchema(content, 'multipart/form-data');\n const jsonSchema = getContentSchema(content, 'application/json');\n const multipartProps = getProperties(multipartSchema);\n const hasBinary = Object.values(multipartProps).some((schema) => schema.format === 'binary');\n\n let schema: JsonSchema = {};\n let contentType: string | undefined;\n if (hasBinary) {\n schema = multipartSchema;\n contentType = 'multipart/form-data';\n } else if (Object.keys(getProperties(jsonSchema)).length > 0) {\n schema = jsonSchema;\n } else if (Object.keys(multipartProps).length > 0) {\n schema = multipartSchema;\n contentType = 'multipart/form-data';\n }\n\n const required = new Set(Array.isArray(schema.required) ? schema.required : []);\n const properties = getProperties(schema);\n const params = Object.entries(properties).map(([propName, propSchema]): ParamDef => {\n const isBinary = contentType === 'multipart/form-data' && propSchema.format === 'binary';\n const { type, suffix } = isBinary\n ? { type: 'string' as const, suffix: ' (file path)' }\n : schemaTypeToCliType(propSchema);\n const choices = Array.isArray(propSchema.enum) ? { choices: propSchema.enum } : {};\n return {\n name: toKebab(propName),\n originalName: propName,\n type,\n required: required.has(propName),\n description: `${String(propSchema.description ?? propName)}${suffix}`,\n ...choices,\n location: isBinary ? 'file' : 'body',\n schema: propSchema,\n };\n });\n\n return contentType === undefined ? { params } : { params, contentType };\n}\n\nfunction getContentSchema(content: JsonObject, contentType: string): JsonSchema {\n const item = content[contentType];\n return isObject(item) ? getSchema(item.schema) : {};\n}\n\nfunction getProperties(schema: JsonSchema): Record<string, JsonSchema> {\n return isObject(schema.properties)\n ? Object.fromEntries(\n Object.entries(schema.properties).filter((entry): entry is [string, JsonSchema] =>\n isObject(entry[1]),\n ),\n )\n : {};\n}\n\nfunction getSchema(value: unknown): JsonSchema {\n return isObject(value) ? (value as JsonSchema) : {};\n}\n\nfunction normalizeLocation(value: unknown): ParamLocation {\n return value === 'path' || value === 'header' || value === 'body' || value === 'file'\n ? value\n : 'query';\n}\n\nfunction fallbackName(method: string, path: string): string {\n const slug = path\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/[{}]/g, '')\n .replace(/\\//g, '-');\n return slug ? `${method}-${slug}` : method;\n}\n\nfunction isObject(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import ky from 'ky';\nimport { collectOpenApiParams } from './params.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type ExecuteOpenApiOptions = {\n baseUrl: string;\n authHeaders?: Array<[string, string]>;\n stdinBody?: unknown;\n};\n\nexport async function executeOpenApi(\n command: CommandDef,\n values: Record<string, unknown>,\n options: ExecuteOpenApiOptions,\n): Promise<{ status: number; ok: boolean; text: string; contentType: string }> {\n const collected = collectOpenApiParams(command, values, {\n stdinBody: options.stdinBody,\n });\n const url = buildUrl(options.baseUrl, collected.path, collected.queryParams);\n const method = (command.method ?? 'get').toUpperCase();\n const headers: Record<string, string> = {\n ...Object.fromEntries(options.authHeaders ?? []),\n ...collected.headers,\n };\n\n const body =\n method !== 'GET' && collected.body !== null ? JSON.stringify(collected.body) : undefined;\n if (body !== undefined) headers['Content-Type'] ??= 'application/json';\n\n const response = await ky(url, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n throwHttpErrors: false,\n });\n return {\n status: response.status,\n ok: response.ok,\n text: await response.text(),\n contentType: response.headers.get('content-type') ?? '',\n };\n}\n\nfunction buildUrl(baseUrl: string, path: string, queryParams: Record<string, unknown>): string {\n const url = new URL(`${baseUrl.replace(/\\/$/, '')}${path}`);\n for (const [key, value] of Object.entries(queryParams)) {\n if (value === undefined || value === null) continue;\n if (Array.isArray(value)) {\n for (const item of value) url.searchParams.append(key, String(item));\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n return url.toString();\n}\n","import { coerceAndValidateValue } from '../core/coerce.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type CollectedOpenApiParams = {\n path: string;\n queryParams: Record<string, unknown>;\n headers: Record<string, string>;\n body: Record<string, unknown> | unknown[] | string | number | boolean | null;\n files: Record<string, unknown> | null;\n};\n\nexport type CollectOpenApiOptions = {\n stdinBody?: unknown;\n};\n\nexport function collectOpenApiParams(\n command: CommandDef,\n values: Record<string, unknown>,\n options: CollectOpenApiOptions = {},\n): CollectedOpenApiParams {\n let path = command.path ?? '';\n const queryParams: Record<string, unknown> = {};\n const headers: Record<string, string> = {};\n let body: CollectedOpenApiParams['body'] = null;\n const files: Record<string, unknown> | null = null;\n\n for (const param of command.params) {\n if (param.location !== 'path') continue;\n const value = values[param.name];\n if (value !== undefined && value !== null) {\n path = path.replace(`{${param.originalName}}`, encodeURIComponent(String(value)));\n }\n }\n\n for (const param of command.params) {\n const value = values[param.name];\n if (value === undefined || value === null) continue;\n\n if (param.location === 'query') {\n queryParams[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n } else if (param.location === 'header') {\n headers[param.originalName] = String(value);\n }\n }\n\n const method = command.method?.toLowerCase() ?? 'get';\n if (method !== 'get') {\n if (options.stdinBody !== undefined) {\n body = options.stdinBody as CollectedOpenApiParams['body'];\n } else {\n const collectedBody: Record<string, unknown> = {};\n for (const param of command.params) {\n if (param.location !== 'body') continue;\n const value = values[param.name];\n if (value !== undefined && value !== null) {\n collectedBody[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n body = Object.keys(collectedBody).length > 0 ? collectedBody : null;\n }\n }\n\n return { path, queryParams, headers, body, files };\n}\n","import { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef } from '../core/types.js';\n\ntype McpToolLike = {\n name: string;\n description?: string;\n inputSchema?: unknown;\n};\n\nexport function extractMcpCommands(tools: McpToolLike[]): CommandDef[] {\n return tools.map((tool): CommandDef => {\n const schema = isJsonSchema(tool.inputSchema) ? tool.inputSchema : {};\n const required = new Set(Array.isArray(schema.required) ? schema.required : []);\n const properties = getProperties(schema);\n const params = Object.entries(properties).map(([name, propSchema]): ParamDef => {\n const { type, suffix } = schemaTypeToCliType(propSchema);\n const choices = Array.isArray(propSchema.enum) ? { choices: propSchema.enum } : {};\n return {\n name: toKebab(name),\n originalName: name,\n type,\n required: required.has(name),\n description: `${String(propSchema.description ?? name)}${suffix}`,\n ...choices,\n location: 'tool_input',\n schema: propSchema,\n };\n });\n\n return {\n name: toKebab(tool.name),\n description: tool.description ?? '',\n params,\n hasBody: params.length > 0,\n toolName: tool.name,\n };\n });\n}\n\nfunction getProperties(schema: JsonSchema): Record<string, JsonSchema> {\n const properties = schema.properties;\n if (typeof properties !== 'object' || properties === null || Array.isArray(properties)) return {};\n return Object.fromEntries(\n Object.entries(properties).filter((entry): entry is [string, JsonSchema] =>\n isJsonSchema(entry[1]),\n ),\n );\n}\n\nfunction isJsonSchema(value: unknown): value is JsonSchema {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { extractMcpContent, type McpTool } from './stdio.js';\n\nexport type McpHttpTransport = 'auto' | 'streamable' | 'sse';\n\nexport type McpHttpOptions = {\n headers?: Array<[string, string]>;\n transport?: McpHttpTransport;\n};\n\nexport async function listHttpTools(\n url: string,\n optionsOrHeaders: McpHttpOptions | Array<[string, string]> = {},\n): Promise<McpTool[]> {\n const options = normalizeOptions(optionsOrHeaders);\n return withHttpClient(url, options, async (client) => {\n const result = await client.listTools();\n return result.tools.map((tool) => ({\n name: tool.name,\n ...(tool.description === undefined ? {} : { description: tool.description }),\n inputSchema: tool.inputSchema,\n }));\n });\n}\n\nexport async function callHttpTool(\n url: string,\n toolName: string,\n args: Record<string, unknown>,\n optionsOrHeaders: McpHttpOptions | Array<[string, string]> = {},\n): Promise<unknown> {\n const options = normalizeOptions(optionsOrHeaders);\n return withHttpClient(url, options, async (client) => {\n const result = await client.callTool({ name: toolName, arguments: args });\n return extractMcpContent(result.content);\n });\n}\n\nasync function withHttpClient<T>(\n url: string,\n options: Required<McpHttpOptions>,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n if (options.transport === 'auto') {\n try {\n return await withSingleHttpClient(url, { ...options, transport: 'streamable' }, fn);\n } catch (streamableError) {\n try {\n return await withSingleHttpClient(url, { ...options, transport: 'sse' }, fn);\n } catch (sseError) {\n throw new Error(\n `failed to connect using streamable HTTP or SSE (${formatError(streamableError)}; ${formatError(sseError)})`,\n );\n }\n }\n }\n\n return withSingleHttpClient(url, options, fn);\n}\n\nasync function withSingleHttpClient<T>(\n url: string,\n options: Required<McpHttpOptions>,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n const client = new Client({ name: 'skill-creator', version: '0.1.0' });\n const transport = createTransport(url, options);\n\n await client.connect(transport);\n try {\n return await fn(client);\n } finally {\n await client.close();\n }\n}\n\nfunction createTransport(url: string, options: Required<McpHttpOptions>): Transport {\n const headers = Object.fromEntries(options.headers);\n if (options.transport === 'sse') {\n const fetchWithHeaders: typeof fetch = (input, init) =>\n fetch(input, { ...init, headers: { ...headers, ...headersToObject(init?.headers) } });\n return new SSEClientTransport(new URL(url), {\n eventSourceInit: { fetch: fetchWithHeaders },\n requestInit: { headers },\n }) as unknown as Transport;\n }\n\n return new StreamableHTTPClientTransport(new URL(url), {\n requestInit: { headers },\n }) as unknown as Transport;\n}\n\nfunction normalizeOptions(\n optionsOrHeaders: McpHttpOptions | Array<[string, string]>,\n): Required<McpHttpOptions> {\n if (Array.isArray(optionsOrHeaders)) {\n return { headers: optionsOrHeaders, transport: 'auto' };\n }\n return {\n headers: optionsOrHeaders.headers ?? [],\n transport: optionsOrHeaders.transport ?? 'auto',\n };\n}\n\nfunction headersToObject(headers: HeadersInit | undefined): Record<string, string> {\n if (headers === undefined) return {};\n return Object.fromEntries(new Headers(headers).entries());\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport stringArgv from 'string-argv';\n\nexport type McpTool = {\n name: string;\n description?: string;\n inputSchema?: unknown;\n};\n\nexport async function listStdioTools(commandLine: string): Promise<McpTool[]> {\n return withStdioClient(commandLine, async (client) => {\n const result = await client.listTools();\n return result.tools.map((tool) => ({\n name: tool.name,\n ...(tool.description === undefined ? {} : { description: tool.description }),\n inputSchema: tool.inputSchema,\n }));\n });\n}\n\nexport async function callStdioTool(\n commandLine: string,\n toolName: string,\n args: Record<string, unknown>,\n): Promise<unknown> {\n return withStdioClient(commandLine, async (client) => {\n const result = await client.callTool({ name: toolName, arguments: args });\n return extractMcpContent(result.content);\n });\n}\n\nasync function withStdioClient<T>(\n commandLine: string,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n const [command, ...args] = splitCommandLine(commandLine);\n if (command === undefined) throw new Error('--mcp-stdio command cannot be empty');\n\n const client = new Client({ name: 'skill-creator', version: '0.1.0' });\n const transport = new StdioClientTransport({ command, args, stderr: 'pipe' });\n\n await client.connect(transport);\n try {\n return await fn(client);\n } finally {\n await client.close();\n }\n}\n\nexport function splitCommandLine(commandLine: string): string[] {\n return stringArgv(commandLine);\n}\n\ntype ContentPart = Record<string, unknown>;\n\nexport function extractMcpContent(content: unknown): unknown {\n if (!Array.isArray(content)) return content;\n\n const parts = content\n .map((part) => extractContentPart(part))\n .filter((part) => part !== undefined);\n if (parts.length === 0) return '';\n if (parts.every((part) => typeof part === 'string')) return parts.join('\\n');\n return parts;\n}\n\nfunction extractContentPart(part: unknown): unknown {\n if (!isObject(part)) return undefined;\n if (part.type === 'text' && typeof part.text === 'string') return part.text;\n if (typeof part.data === 'string') return part.data;\n\n if (part.type === 'resource' && isObject(part.resource)) {\n if (typeof part.resource.text === 'string') return part.resource.text;\n if (typeof part.resource.blob === 'string') return part.resource.blob;\n }\n\n return part;\n}\n\nfunction isObject(value: unknown): value is ContentPart {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parseArgs, type ParseArgsConfig } from 'node:util';\nimport { filterCommands } from '../core/filter.js';\nimport { formatOutput } from '../core/output.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type DynamicModeGlobals = {\n include?: string[];\n exclude?: string[];\n methods?: string[];\n list: boolean;\n search?: string;\n pretty: boolean;\n raw: boolean;\n head?: number;\n};\n\nexport type PreparedCommandArgs = {\n argv: string[];\n initialValues?: Record<string, unknown>;\n};\n\nexport type RunDynamicModeOptions = {\n globals: DynamicModeGlobals;\n commandArgv: string[];\n loadCommands: () => Promise<CommandDef[]> | CommandDef[];\n renderCommands: (commands: CommandDef[]) => string;\n executeCommand: (\n command: CommandDef,\n values: Record<string, unknown>,\n argv: string[],\n ) => Promise<unknown> | unknown;\n prepareCommandArgs?: (argv: string[]) => Promise<PreparedCommandArgs> | PreparedCommandArgs;\n onEmptyCommand?: (commands: CommandDef[]) => Promise<void> | void;\n};\n\nexport async function runDynamicMode(options: RunDynamicModeOptions): Promise<void> {\n let commands = filterCommands(await options.loadCommands(), options.globals);\n\n if (options.globals.search !== undefined) {\n commands = searchCommands(commands, options.globals.search);\n }\n\n if (options.globals.list || options.globals.search !== undefined) {\n writeStdout(options.renderCommands(commands));\n return;\n }\n\n if (options.commandArgv.length === 0) {\n if (options.onEmptyCommand !== undefined) {\n await options.onEmptyCommand(commands);\n return;\n }\n\n writeStdout(options.renderCommands(commands));\n return;\n }\n\n const commandName = options.commandArgv[0];\n if (commandName === undefined) throw new Error('missing subcommand');\n\n const command = commands.find((candidate) => candidate.name === commandName);\n if (command === undefined) throw new Error(`unknown subcommand: ${commandName}`);\n\n if (options.commandArgv.includes('--help') || options.commandArgv.includes('-h')) {\n writeStdout(renderCommandHelp(command));\n return;\n }\n\n const prepared = await prepareCommandArgs(options, options.commandArgv.slice(1));\n const values = parseCommandValues(command, prepared.argv, prepared.initialValues ?? {});\n const result = await options.executeCommand(command, values, prepared.argv);\n writeFormattedOutput(result, options.globals);\n}\n\nfunction searchCommands(commands: CommandDef[], search: string): CommandDef[] {\n const pattern = search.toLowerCase();\n return commands.filter(\n (command) =>\n command.name.toLowerCase().includes(pattern) ||\n (command.description ?? '').toLowerCase().includes(pattern),\n );\n}\n\nasync function prepareCommandArgs(\n options: RunDynamicModeOptions,\n argv: string[],\n): Promise<PreparedCommandArgs> {\n return options.prepareCommandArgs === undefined\n ? { argv }\n : await options.prepareCommandArgs(argv);\n}\n\nexport function parseCommandValues(\n command: CommandDef,\n argv: string[],\n initialValues: Record<string, unknown> = {},\n): Record<string, unknown> {\n const values: Record<string, unknown> = { ...initialValues };\n const params = new Map(command.params.map((param) => [param.name, param]));\n validateCommandOptions(command, argv, params);\n\n const { values: parsedValues } = parseArgs({\n args: normalizeStringOptionValues(argv, stringParamNames(command)),\n options: commandOptionSpec(command),\n strict: true,\n allowPositionals: true,\n });\n\n for (const param of command.params) {\n const value = parsedValues[param.name];\n if (value !== undefined) values[param.name] = value;\n }\n\n for (const param of command.params) {\n if (\n param.required &&\n values[param.name] === undefined &&\n values[param.originalName] === undefined &&\n param.location !== 'body'\n ) {\n throw new Error(`missing required option --${param.name}`);\n }\n }\n\n return values;\n}\n\nfunction validateCommandOptions(\n command: CommandDef,\n argv: string[],\n params: Map<string, CommandDef['params'][number]>,\n): void {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined || !token.startsWith('--')) continue;\n\n const rawFlag = token.slice(2);\n const flag = rawFlag.includes('=') ? rawFlag.slice(0, rawFlag.indexOf('=')) : rawFlag;\n const param = params.get(flag);\n if (param === undefined) throw new Error(`unknown option for ${command.name}: --${flag}`);\n if (param.type !== 'boolean' && !rawFlag.includes('=') && argv[index + 1] === undefined) {\n throw new Error(`missing value for --${flag}`);\n }\n }\n}\n\nfunction commandOptionSpec(command: CommandDef): NonNullable<ParseArgsConfig['options']> {\n return Object.fromEntries(\n command.params.map((param) => [\n param.name,\n { type: param.type === 'boolean' ? 'boolean' : 'string' },\n ]),\n ) as NonNullable<ParseArgsConfig['options']>;\n}\n\nfunction stringParamNames(command: CommandDef): Set<string> {\n return new Set(\n command.params.filter((param) => param.type !== 'boolean').map((param) => param.name),\n );\n}\n\nfunction normalizeStringOptionValues(argv: string[], optionNames: Set<string>): string[] {\n const result: string[] = [];\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n const next = argv[index + 1];\n if (\n token !== undefined &&\n next !== undefined &&\n token.startsWith('--') &&\n !token.includes('=') &&\n optionNames.has(token.slice(2)) &&\n next.startsWith('-')\n ) {\n result.push(`${token}=${next}`);\n index += 1;\n } else if (token !== undefined) {\n result.push(token);\n }\n }\n\n return result;\n}\n\nfunction renderCommandHelp(command: CommandDef): string {\n const lines = [`${command.name}: ${command.description ?? ''}`, '', 'Options:'];\n for (const param of command.params) {\n const required = param.required ? ' (required)' : '';\n lines.push(\n ` --${param.name.padEnd(24)} ${param.description ?? param.originalName}${required}`,\n );\n }\n return `${lines.join('\\n')}\\n`;\n}\n\nfunction writeFormattedOutput(data: unknown, globals: DynamicModeGlobals): void {\n const output = formatOutput(data, {\n pretty: globals.pretty,\n raw: globals.raw,\n ...(globals.head === undefined ? {} : { head: globals.head }),\n });\n if (output.stderr) console.error(output.stderr.replace(/\\n$/, ''));\n writeStdout(output.stdout);\n}\n\nfunction writeStdout(text: string): void {\n console.log(text.replace(/\\n$/, ''));\n}\n","import { minimatch } from 'minimatch';\nimport type { CommandDef } from './types.js';\n\nexport type CommandFilters = {\n include?: string[];\n exclude?: string[];\n methods?: string[];\n};\n\nexport function filterCommands(commands: CommandDef[], filters: CommandFilters = {}): CommandDef[] {\n let result = commands;\n\n if (filters.methods?.length) {\n const allowed = new Set(filters.methods.map((method) => method.toUpperCase()));\n result = result.filter(\n (command) => command.method === undefined || allowed.has(command.method.toUpperCase()),\n );\n }\n\n if (filters.include?.length) {\n result = result.filter(\n (command) => filters.include?.some((pattern) => minimatch(command.name, pattern)) ?? false,\n );\n }\n\n if (filters.exclude?.length) {\n result = result.filter(\n (command) => !(filters.exclude?.some((pattern) => minimatch(command.name, pattern)) ?? false),\n );\n }\n\n return result;\n}\n","export type OutputOptions = {\n pretty?: boolean;\n raw?: boolean;\n head?: number;\n toon?: boolean;\n};\n\nexport type FormattedOutput = {\n stdout: string;\n stderr: string;\n};\n\nexport function applyHead<T>(data: T, n: number): T {\n if (Array.isArray(data)) return data.slice(0, n) as T;\n return data;\n}\n\nexport function formatOutput(data: unknown, options: OutputOptions = {}): FormattedOutput {\n if (options.raw) {\n return {\n stdout: `${typeof data === 'string' ? data : JSON.stringify(data)}\\n`,\n stderr: '',\n };\n }\n\n let value = parseJsonStringIfPossible(data);\n if (options.head !== undefined) value = applyHead(value, options.head);\n\n if (typeof value === 'string') {\n return { stdout: `${value}\\n`, stderr: '' };\n }\n\n return {\n stdout: `${JSON.stringify(value, null, options.pretty ? 2 : 0)}\\n`,\n stderr: '',\n };\n}\n\nfunction parseJsonStringIfPossible(data: unknown): unknown {\n if (typeof data !== 'string') return data;\n try {\n return JSON.parse(data) as unknown;\n } catch {\n return data;\n }\n}\n","export type OptionSpec = {\n valueOptions: Iterable<string>;\n boolOptions: Iterable<string>;\n};\n\nexport type ArgvSplit = {\n globalArgv: string[];\n commandArgv: string[];\n};\n\nexport function splitAtSubcommand(argv: string[], spec: OptionSpec): ArgvSplit {\n const valueOptions = new Set(spec.valueOptions);\n const boolOptions = new Set(spec.boolOptions);\n\n let index = 0;\n while (index < argv.length) {\n const arg = argv[index];\n if (arg === undefined) break;\n\n if (arg === '--') {\n return {\n globalArgv: argv.slice(0, index),\n commandArgv: argv.slice(index + 1),\n };\n }\n\n if (arg.startsWith('-')) {\n const optionName =\n arg.startsWith('--') && arg.includes('=') ? arg.slice(0, arg.indexOf('=')) : arg;\n if (arg.startsWith('--') && arg.includes('=')) {\n index += 1;\n } else if (valueOptions.has(optionName)) {\n index += 2;\n } else if (boolOptions.has(optionName)) {\n index += 1;\n } else {\n index += 1;\n }\n continue;\n }\n\n return {\n globalArgv: argv.slice(0, index),\n commandArgv: argv.slice(index),\n };\n }\n\n return { globalArgv: argv, commandArgv: [] };\n}\n"],"mappings":";;;AAEA,SAAS,eAAe;AACxB,SAAS,YAAY;AACrB,SAAS,aAAAA,kBAAiB;;;ACJ1B,SAAS,kBAAkB;AAC3B,YAAY,aAAa;AAEzB,IAAM,uBAAuB,oBAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,YAAY,QAAyC;AACnE,QAAM,aAAa,gBAAgB,MAAM;AACzC,SAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,UAAU,UAAU,CAAC,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAC1F;AAEA,eAAsB,WACpB,UACA,KACA,YACmB;AACnB,MAAI;AACF,UAAM,OAAO,MAAc,YAAI,KAAK,UAAU,GAAG;AACjD,QAAI,SAAS,KAAM,QAAO;AAE1B,UAAM,cAAc,KAAK,IAAI,IAAI,KAAK,QAAQ;AAC9C,QAAI,cAAc,WAAY,QAAO;AAErC,UAAM,QAAQ,MAAc,YAAI,UAAU,GAAG;AAC7C,WAAO,KAAK,MAAM,MAAM,KAAK,SAAS,MAAM,CAAC;AAAA,EAC/C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,UAAU,UAAkB,KAAa,MAA8B;AAC3F,QAAc,YAAI,UAAU,KAAK,KAAK,UAAU,IAAI,CAAC;AACvD;AAEA,SAAS,gBAAgB,OAAyD;AAChF,QAAM,SAAkC,CAAC;AACzC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,qBAAqB,IAAI,GAAG,EAAG;AACnC,QAAI,QAAQ,iBAAiB,QAAQ,gBAAgB;AACnD,aAAO,GAAG,IAAI,qBAAqB,KAAK;AAAA,IAC1C,OAAO;AACL,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AACzF;AAEA,SAAS,qBAAqB,OAAyB;AACrD,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAClC,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,KAAK,UAAU,CAAC,EAAE,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC;AACrF;;;ACxDA,SAAS,WAAoD;AAC7D,OAAO,sBAAsB;AAG7B,IAAM,MAAM,IAAI,IAAI,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC;AACtD,IAAM,aAAa;AACnB,WAAW,GAAG;AACd,IAAM,iBAAiB,oBAAI,QAAsC;AAE1D,SAAS,oBAAoB,QAGlC;AACA,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,EAAE,MAAM,WAAW,QAAQ,GAAG;AAAA,IACvC,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,QAAQ,GAAG;AAAA,IACtC,KAAK;AACH,aAAO,EAAE,MAAM,WAAW,QAAQ,GAAG;AAAA,IACvC,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,QAAQ,gBAAgB;AAAA,IACnD,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,QAAQ,iBAAiB;AAAA,IACpD;AACE,aAAO,EAAE,MAAM,UAAU,QAAQ,GAAG;AAAA,EACxC;AACF;AAEO,SAAS,uBACd,OACA,SAAqB,CAAC,GACtB,QAAQ,SACC;AACT,QAAM,UAAU,YAAY,OAAO,MAAM;AACzC,gBAAc,SAAS,QAAQ,KAAK;AACpC,SAAO;AACT;AAEO,SAAS,cAAc,OAAgB,SAAqB,CAAC,GAAG,QAAQ,SAAe;AAC5F,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,EAAG;AAEtC,QAAM,WAAW,aAAa,MAAM;AACpC,MAAI,SAAS,KAAK,EAAG;AAErB,QAAM,IAAI,MAAM,GAAG,KAAK,uBAAuB,gBAAgB,SAAS,UAAU,CAAC,GAAG,KAAK,CAAC,EAAE;AAChG;AAEA,SAAS,aAAa,QAAsC;AAC1D,QAAM,SAAS,eAAe,IAAI,MAAM;AACxC,MAAI,WAAW,OAAW,QAAO;AAEjC,QAAM,WAAW,IAAI,QAAQ,gBAAgB,MAAM,CAAC;AACpD,iBAAe,IAAI,QAAQ,QAAQ;AACnC,SAAO;AACT;AAEA,SAAS,gBAAgB,QAA4B;AACnD,MAAI,OAAO,aAAa,QAAQ,OAAO,OAAO,SAAS,UAAU;AAC/D,WAAO,EAAE,GAAG,QAAQ,MAAM,CAAC,OAAO,MAAM,MAAM,EAAE;AAAA,EAClD;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,QAAgC,OAAuB;AAC9E,SAAO,OACJ,IAAI,CAAC,UAAU;AACd,UAAM,OAAO,MAAM,aAAa,SAAS,IAAI,GAAG,KAAK,GAAG,MAAM,YAAY,KAAK;AAC/E,WAAO,GAAG,IAAI,IAAI,MAAM,WAAW,YAAY;AAAA,EACjD,CAAC,EACA,KAAK,IAAI;AACd;AAEO,SAAS,YAAY,OAAgB,SAAqB,CAAC,GAAY;AAC5E,MAAI,UAAU,QAAQ,UAAU,OAAW,QAAO;AAElD,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK;AACH,aAAO,YAAY,OAAO,OAAO,KAAK;AAAA,IACxC,KAAK;AACH,aAAO,aAAa,KAAK;AAAA,IAC3B,KAAK;AACH,aAAO,QAAQ,KAAK;AAAA,IACtB,KAAK;AACH,aAAO,OAAO,UAAU,WAAW,KAAK,MAAM,KAAK,IAAI,OAAO,SAAS,OAAO,KAAK,GAAG,EAAE;AAAA,IAC1F,KAAK;AACH,aAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,WAAW,OAAO,KAAK,CAAC;AAAA,IAC5E;AACE,aAAO,iBAAiB,KAAK;AAAA,EACjC;AACF;AAEA,SAAS,YAAY,OAAgB,YAA8C;AACjF,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,MAAI;AACF,UAAM,SAAkB,KAAK,MAAM,KAAK;AACxC,QAAI,MAAM,QAAQ,MAAM,EAAG,QAAO;AAAA,EACpC,QAAQ;AAAA,EAER;AAEA,QAAM,SAAS,MAAM,SAAS,GAAG,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK;AACzF,SAAO,OAAO,IAAI,CAAC,SAAS,WAAW,MAAM,YAAY,IAAI,CAAC;AAChE;AAEA,SAAS,WAAW,OAAe,MAAmC;AACpE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,OAAO,SAAS,OAAO,EAAE;AAAA,IAClC,KAAK;AACH,aAAO,OAAO,WAAW,KAAK;AAAA,IAChC,KAAK;AACH,aAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,SAAS,MAAM,YAAY,CAAC;AAAA,IAC1D;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,aAAa,OAAyB;AAC7C,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACF,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,OAAyB;AACjD,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,EAAE,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAG,QAAO;AAC/D,MAAI;AACF,UAAM,SAAkB,KAAK,MAAM,OAAO;AAC1C,WAAO,OAAO,WAAW,YAAY,WAAW,OAAO,SAAS;AAAA,EAClE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AC3IA,SAAS,gBAAgB;AAEzB,eAAsB,cAAc,OAAgC;AAClE,MAAI,MAAM,WAAW,MAAM,GAAG;AAC5B,UAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,UAAM,WAAW,QAAQ,IAAI,IAAI;AACjC,QAAI,aAAa;AACf,YAAM,IAAI,MAAM,wBAAwB,KAAK,UAAU,IAAI,CAAC,aAAa;AAC3E,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,WAAW,OAAO,GAAG;AAC7B,UAAM,OAAO,MAAM,MAAM,CAAC;AAC1B,QAAI;AACF,cAAQ,MAAM,SAAS,MAAM,MAAM,GAAG,QAAQ,OAAO,EAAE;AAAA,IACzD,QAAQ;AACN,YAAM,IAAI,MAAM,0BAA0B,IAAI,EAAE;AAAA,IAClD;AAAA,EACF;AAEA,SAAO;AACT;;;ACrBA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AACP,SAAS,aAAa,qBAAqB;;;ACb3C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;;;ACdA,SAAS,QAAQ,MAAsB;AAC5C,SAAO,KACJ,QAAQ,sBAAsB,OAAO,EACrC,QAAQ,MAAM,GAAG,EACjB,YAAY;AACjB;;;ADcO,SAAS,uBAAuB,QAAqC;AAC1E,QAAM,WAAyB,CAAC;AAChC,gBAAc,UAAU,OAAO,aAAa,GAAG,UAAU,GAAG,OAAO;AACnE,gBAAc,UAAU,OAAO,gBAAgB,GAAG,UAAU,GAAG,UAAU;AACzE,SAAO;AACT;AAEO,SAAS,yBACd,MACA,QACA,QAAQ,GACA;AACR,MAAI,WAAW,UAAa,OAAO,KAAK,EAAE,SAAS,EAAG,QAAO,KAAK,OAAO,KAAK,CAAC;AAC/E,SAAO,yBAAyB,MAAM,OAAO,oBAAI,IAAI,CAAC;AACxD;AAEA,SAAS,cACP,UACA,QACA,eACM;AACN,MAAI,WAAW,OAAW;AAE1B,aAAW,SAAS,OAAO,OAAO,MAAM,GAAG;AACzC,UAAM,cAAc,eAAe,MAAM,WAAW;AACpD,aAAS,KAAK;AAAA,MACZ,MAAM,QAAQ,MAAM,IAAI;AAAA,MACxB,GAAI,gBAAgB,SAAY,CAAC,IAAI,EAAE,YAAY;AAAA,MACnD,QAAQ,MAAM,KAAK;AAAA,QAAI,CAAC,QACtB,kBAAkB,IAAI,MAAM,IAAI,MAAM,eAAe,IAAI,WAAW,CAAC;AAAA,MACvE;AAAA,MACA,sBAAsB;AAAA,MACtB,kBAAkB,MAAM;AAAA,MACxB,mBAAmB,MAAM;AAAA,IAC3B,CAAC;AAAA,EACH;AACF;AAEA,SAAS,kBACP,MACA,MACA,aACU;AACV,QAAM,SAAS,6BAA6B,IAAI;AAChD,QAAM,UAAU,oBAAoB,MAAM,EAAE;AAC5C,SAAO;AAAA,IACL,MAAM,QAAQ,IAAI;AAAA,IAClB,cAAc;AAAA,IACd,MAAM;AAAA,IACN,UAAU,cAAc,IAAI;AAAA,IAC5B,GAAI,gBAAgB,SAAY,CAAC,IAAI,EAAE,YAAY;AAAA,IACnD,UAAU;AAAA,IACV;AAAA,EACF;AACF;AAEO,SAAS,6BAA6B,MAAoC;AAC/E,MAAI,cAAc,IAAI,GAAG;AACvB,WAAO,EAAE,GAAG,6BAA6B,KAAK,MAAM,GAAG,aAAa,oBAAoB,IAAI,EAAE;AAAA,EAChG;AAEA,MAAI,WAAW,IAAI,GAAG;AACpB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,6BAA6B,KAAK,MAAM;AAAA,MAC/C,aAAa,oBAAoB,IAAI;AAAA,IACvC;AAAA,EACF;AAEA,QAAM,YAAY,aAAa,IAAI;AACnC,QAAM,OAAmB,EAAE,aAAa,oBAAoB,IAAI,EAAE;AAElE,MAAI,WAAW,SAAS,GAAG;AACzB,WAAO,EAAE,GAAG,MAAM,MAAM,UAAU,MAAM,UAAU,UAAU,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE;AAAA,EAC3F;AAEA,MAAI,kBAAkB,SAAS,EAAG,QAAO,EAAE,GAAG,MAAM,MAAM,SAAS;AAEnE,MAAI,aAAa,SAAS,GAAG;AAC3B,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK;AACH,eAAO,EAAE,GAAG,MAAM,MAAM,UAAU;AAAA,MACpC,KAAK;AACH,eAAO,EAAE,GAAG,MAAM,MAAM,SAAS;AAAA,MACnC,KAAK;AACH,eAAO,EAAE,GAAG,MAAM,MAAM,UAAU;AAAA,MACpC;AACE,eAAO,EAAE,GAAG,MAAM,MAAM,SAAS;AAAA,IACrC;AAAA,EACF;AAEA,SAAO,EAAE,GAAG,MAAM,MAAM,SAAS;AACnC;AAEO,SAAS,oBAAoB,MAA2B;AAC7D,MAAI,cAAc,IAAI,EAAG,QAAO,GAAG,oBAAoB,KAAK,MAAM,CAAC;AACnE,MAAI,WAAW,IAAI,EAAG,QAAO,IAAI,oBAAoB,KAAK,MAAM,CAAC;AACjE,SAAO,aAAa,IAAI,EAAE;AAC5B;AAEA,SAAS,eAAe,OAAsD;AAC5E,SAAO,SAAS;AAClB;AAEA,SAAS,yBACP,MACA,OACA,WACQ;AACR,QAAM,YAAY,aAAa,IAAI;AACnC,MAAI,aAAa,SAAS,KAAK,WAAW,SAAS,EAAG,QAAO;AAC7D,MAAI,SAAS,EAAG,QAAO;AACvB,MAAI,CAAC,aAAa,SAAS,KAAK,CAAC,gBAAgB,SAAS,EAAG,QAAO;AACpE,MAAI,UAAU,IAAI,UAAU,IAAI,EAAG,QAAO;AAE1C,QAAM,WAAW,IAAI,IAAI,SAAS;AAClC,WAAS,IAAI,UAAU,IAAI;AAE3B,QAAM,aAAa,OAAO,OAAO,UAAU,UAAU,CAAC,EACnD,OAAO,CAAC,UAAU,MAAM,KAAK,WAAW,CAAC,EACzC,IAAI,CAAC,UAAU;AACd,UAAM,iBAAiB,aAAa,MAAM,IAAI;AAC9C,QAAI,aAAa,cAAc,KAAK,WAAW,cAAc,EAAG,QAAO,MAAM;AAE7E,UAAM,SAAS,yBAAyB,MAAM,MAAM,QAAQ,GAAG,QAAQ;AACvE,WAAO,SAAS,GAAG,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA,EAC9C,CAAC,EACA,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC;AAErC,SAAO,WAAW,WAAW,IAAI,KAAK,KAAK,WAAW,KAAK,GAAG,CAAC;AACjE;;;AD5HA,eAAsB,eACpB,SACA,QACA,SACkB;AAClB,QAAM,YAAY,QAAQ,oBAAoB,QAAQ;AACtD,QAAM,YAAY,iBAAiB,SAAS,MAAM;AAClD,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,QAAQ,kBAAkB;AAAA,EAC5B;AACA,QAAM,SAAS,IAAI,cAAc,QAAQ,UAAU;AAAA,IACjD,SAAS,OAAO,YAAY,QAAQ,eAAe,CAAC,CAAC;AAAA,EACvD,CAAC;AAED,MAAI;AACF,UAAM,OAAO,MAAM,OAAO,QAAiC,OAAO,SAAS;AAC3E,QAAI,CAAC,SAAS,IAAI,EAAG,QAAO;AAC5B,WAAO,KAAK,SAAS;AAAA,EACvB,SAAS,OAAO;AACd,UAAM,6BAA6B,KAAK;AAAA,EAC1C;AACF;AAEA,SAAS,iBACP,SACA,QACyB;AACzB,QAAM,YAAqC,CAAC;AAC5C,aAAW,SAAS,QAAQ,QAAQ;AAClC,UAAM,QAAQ,OAAO,MAAM,IAAI,KAAK,OAAO,MAAM,YAAY;AAC7D,QAAI,UAAU,QAAW;AACvB,gBAAU,MAAM,YAAY,IAAI;AAAA,QAC9B;AAAA,QACA,MAAM,UAAU,CAAC;AAAA,QACjB,KAAK,MAAM,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBACP,SACA,WACA,WACA,QACA,gBACQ;AACR,QAAM,eAAe,QAAQ,OAAO;AAAA,IAClC,CAAC,UAAU,MAAM,YAAY,UAAU,MAAM,YAAY,MAAM;AAAA,EACjE;AACA,QAAM,sBAAsB,aAAa;AAAA,IACvC,CAAC,WAAmC;AAAA,MAClC,MAAM,KAAK;AAAA,MACX,UAAU;AAAA,QACR,MAAM,KAAK;AAAA,QACX,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAAA,MACrD;AAAA,MACA,MAAM,iBAAiB,iBAAiB,KAAK,CAAC;AAAA,IAChD;AAAA,EACF;AACA,QAAM,eAAe,sBAAsB,SAAS,QAAQ,cAAc;AAC1E,QAAM,QAAmB;AAAA,IACvB,MAAM,KAAK;AAAA,IACX,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,UAAU;AAAA,IAC1C,WAAW,aAAa,IAAI,CAAC,WAAW;AAAA,MACtC,MAAM,KAAK;AAAA,MACX,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAAA,MACnD,OAAO;AAAA,QACL,MAAM,KAAK;AAAA,QACX,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,MAAM,aAAa;AAAA,MACrD;AAAA,IACF,EAAE;AAAA,IACF,GAAI,iBAAiB,SAAY,CAAC,IAAI,EAAE,aAAa;AAAA,EACvD;AACA,QAAM,YAAqC;AAAA,IACzC,MAAM,KAAK;AAAA,IACX,WACE,QAAQ,yBAAyB,aAC7B,kBAAkB,WAClB,kBAAkB;AAAA,IACxB,MAAM,EAAE,MAAM,KAAK,MAAM,OAAO,YAAY,OAAO,EAAE;AAAA,IACrD,GAAI,oBAAoB,WAAW,IAAI,CAAC,IAAI,EAAE,oBAAoB;AAAA,IAClE,cAAc,EAAE,MAAM,KAAK,eAAe,YAAY,CAAC,KAAK,EAAE;AAAA,EAChE;AACA,QAAM,WAAyB,EAAE,MAAM,KAAK,UAAU,aAAa,CAAC,SAAS,EAAE;AAC/E,SAAO,MAAM,QAAQ;AACvB;AAEA,SAAS,sBACP,SACA,QACA,gBAC8B;AAC9B,MAAI,QAAQ,sBAAsB,OAAW,QAAO;AAEpD,QAAM,eAAe;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AACA,MAAI,aAAa,WAAW,EAAG,QAAO;AACtC,SAAO,kBAAkB,YAAY;AACvC;AAEA,SAAS,iBAAiB,MAAwB;AAChD,QAAM,YAAY,qBAAqB,wBAAwB,IAAI,kBAAkB;AACrF,QAAM,WAAW,UAAU,sBAAsB,CAAC;AAClD,MAAI,aAAa,OAAW,OAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AACpF,SAAO,SAAS;AAClB;AAEA,SAAS,kBAAkB,cAAwC;AACjE,QAAM,YAAY,qBAAqB,kCAAkC,YAAY,IAAI;AACzF,QAAM,YAAY,UAAU,aAAa,WAAW,CAAC;AACrD,MAAI,WAAW,SAAS,KAAK,SAAS,UAAU,iBAAiB,QAAW;AAC1E,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,SAAO,UAAU;AACnB;AAEA,SAAS,qBAAqB,QAAyC;AACrE,QAAM,WAAW,MAAM,MAAM;AAC7B,QAAM,aAAa,SAAS,YAAY,CAAC;AACzC,MAAI,YAAY,SAAS,KAAK,sBAAsB;AAClD,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAA6C;AACrE,QAAM,OAAO,MAAM,QAAQ;AAC3B,SAAO,OAAO,SAAS,WAAW,OAAO,wBAAwB,MAAM,QAAQ,IAAI;AACrF;AAEA,SAAS,wBAAwB,MAAkC;AACjE,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,YAAY,SAA6B;AAChD,SAAO,GAAG,QAAQ,wBAAwB,OAAO,IAAI,QAAQ,oBAAoB,QAAQ,IAAI,GAAG;AAAA,IAC9F;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,6BAA6B,OAAuB;AAC3D,MAAI,iBAAiB,aAAa;AAChC,QAAI,MAAM,SAAS,WAAW,UAAa,MAAM,SAAS,OAAO,SAAS,GAAG;AAC3E,aAAO,IAAI,MAAM,kBAAkB,oBAAoB,MAAM,SAAS,MAAM,CAAC,EAAE;AAAA,IACjF;AAEA,WAAO,IAAI;AAAA,MACT,gBAAgB,MAAM,SAAS,MAAM,KAAK,KAAK,UAAU,MAAM,UAAU,MAAM,CAAC,CAAC;AAAA,IACnF;AAAA,EACF;AAEA,SAAO,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;AACjE;AAEA,SAAS,oBAAoB,QAAqD;AAChF,SAAO,OAAO,IAAI,CAAC,UAAU,MAAM,WAAW,eAAe,EAAE,KAAK,IAAI;AAC1E;AAEA,SAAS,SAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;AG5MA,SAAS,YAAAC,iBAAgB;AACzB,SAAS,yBAAyB;AAClC,OAAO,QAAQ;AACf,SAAS,sBAAsB;AAC/B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,iBAAAC,sBAAqB;AAa9B,eAAsB,kBACpB,UACA,UAA8B,CAAC,GACP;AACxB,QAAM,cAAc,QAAQ,eAAe,CAAC;AAC5C,MAAI,QAAQ,iBAAiB,QAAW;AACtC,WAAO,0BAA0B,QAAQ,cAAc,WAAW;AAAA,EACpE;AAEA,QAAM,WAAW,WACf,QAAQ,YAAY,YAAY,EAAE,UAAU,aAAa,QAAQ,eAAe,CAAC,EAAE,CAAC,CACtF;AACA,QAAM,aAAa,QAAQ,cAAc;AAEzC,MAAI,QAAQ,aAAa,UAAa,CAAC,QAAQ,SAAS;AACtD,UAAM,SAAS,MAAM,WAA+B,QAAQ,UAAU,UAAU,UAAU;AAC1F,QAAI,WAAW,KAAM,QAAO,kBAAkB,MAAM;AAAA,EACtD;AAEA,MAAI;AACF,UAAM,SAAS,MAAM,wBAAwB,UAAU,WAAW;AAClE,QAAI,QAAQ,aAAa,QAAW;AAClC,YAAM,UAAU,QAAQ,UAAU,UAAU,wBAAwB,MAAM,CAAC;AAAA,IAC7E;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,QAAQ,aAAa,QAAW;AAClC,YAAM,QAAQ,MAAM;AAAA,QAClB,QAAQ;AAAA,QACR;AAAA,QACA,OAAO;AAAA,MACT;AACA,UAAI,UAAU,MAAM;AAClB,gBAAQ;AAAA,UACN,4EAA4E,YAAY,KAAK,CAAC;AAAA,QAChG;AACA,eAAO,kBAAkB,KAAK;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,IAAI;AAAA,MACR,wJAAwJ,YAAY,KAAK,CAAC;AAAA,IAC5K;AAAA,EACF;AACF;AAEA,eAAe,wBACb,UACA,aACwB;AACxB,QAAM,SAAS,IAAIC,eAAc,UAAU;AAAA,IACzC,SAAS,OAAO,YAAY,WAAW;AAAA,EACzC,CAAC;AACD,QAAM,gBAAgB,MAAM,OAAO,QAA4B,sBAAsB,CAAC;AACtF,SAAO,kBAAkB,aAAa;AACxC;AAEA,eAAe,0BACb,QACA,aACwB;AACxB,MAAI;AACF,UAAM,SAAS,MAAM,WAAW,QAAQ;AAAA,MACtC,SAAS,CAAC,IAAI,UAAU,GAAG,IAAI,kBAAkB,GAAG,IAAI,eAAe,CAAC;AAAA,MACxE,SAAS,OAAO,YAAY,WAAW;AAAA,IACzC,CAAC;AACD,WAAO,kBAAkB,wBAAwB,MAAM,CAAC;AAAA,EAC1D,QAAQ;AACN,WAAO,kCAAkC,QAAQ,WAAW;AAAA,EAC9D;AACF;AAEA,eAAe,kCACb,QACA,aACwB;AACxB,QAAM,OAAO,MAAM,iBAAiB,QAAQ,WAAW;AACvD,QAAM,UAAU,KAAK,KAAK;AAE1B,MAAI,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,GAAG,GAAG;AACtD,UAAM,SAAS,KAAK,MAAM,OAAO;AACjC,WAAO,kBAAkB,qBAAqB,MAAM,CAAC;AAAA,EACvD;AAEA,SAAO,YAAY,IAAI;AACzB;AAEA,eAAe,iBACb,QACA,aACiB;AACjB,MAAI,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU,GAAG;AACjE,UAAM,WAAW,MAAM,GAAG,IAAI,QAAQ;AAAA,MACpC,SAAS,OAAO,YAAY,WAAW;AAAA,MACvC,iBAAiB;AAAA,IACnB,CAAC;AACD,QAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,wCAAwC,SAAS,MAAM,EAAE;AAC3F,WAAO,SAAS,KAAK;AAAA,EACvB;AACA,SAAOC,UAAS,QAAQ,MAAM;AAChC;AAEA,SAAS,qBAAqB,OAAoC;AAChE,MAAI,CAACC,UAAS,KAAK,EAAG,OAAM,IAAI,MAAM,uCAAuC;AAE7E,MAAIA,UAAS,MAAM,IAAI,EAAG,QAAO,qBAAqB,MAAM,IAAI;AAChE,MAAIA,UAAS,MAAM,QAAQ,EAAG,QAAO;AAErC,QAAM,IAAI,MAAM,mEAAmE;AACrF;AAEA,SAAS,YAAY,OAAwB;AAC3C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;AAEA,SAASA,UAAS,OAAkD;AAClE,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;AChJA,SAAS,YAAAC,iBAAgB;AACzB,OAAOC,SAAQ;AACf,OAAO,UAAU;;;ACFjB,OAAO,gBAAgB;AAEvB,eAAsB,YAAe,OAAsB;AACzD,SAAQ,MAAM,WAAW,YAAY,OAAiB;AAAA,IACpD,mBAAmB;AAAA,IACnB,aAAa,EAAE,UAAU,SAAS;AAAA,EACpC,CAAC;AACH;;;ADWA,eAAsB,gBACpB,QACA,UAA8B,CAAC,GACT;AACtB,QAAM,QAAQ,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU;AAC1E,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,MAAM,QAAQ,YAAY,YAAY,EAAE,QAAQ,aAAa,QAAQ,eAAe,CAAC,EAAE,CAAC;AAE9F,MAAI,SAAS,QAAQ,aAAa,UAAa,CAAC,QAAQ,SAAS;AAC/D,UAAM,SAAS,MAAM,WAAwB,QAAQ,UAAU,KAAK,UAAU;AAC9E,QAAI,WAAW,KAAM,QAAO;AAAA,EAC9B;AAEA,QAAM,MAAM,QACR,MAAM,gBAAgB,QAAQ,QAAQ,eAAe,CAAC,CAAC,IACvD,MAAMC,UAAS,QAAQ,MAAM;AACjC,QAAM,SAAS,UAAU,GAAG;AAC5B,QAAM,OAAO,MAAM,YAAY,MAAM;AAErC,MAAI,CAAC,cAAc,IAAI,GAAG;AACxB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,MAAI,SAAS,QAAQ,aAAa,QAAW;AAC3C,UAAM,UAAU,QAAQ,UAAU,KAAK,IAAI;AAAA,EAC7C;AAEA,SAAO;AACT;AAEA,eAAe,gBACb,QACA,aACiB;AACjB,QAAM,WAAW,MAAMC,IAAG,IAAI,QAAQ;AAAA,IACpC,SAAS,OAAO,YAAY,WAAW;AAAA,IACvC,iBAAiB;AAAA,EACnB,CAAC;AACD,MAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,8BAA8B,SAAS,MAAM,EAAE;AACjF,SAAO,SAAS,KAAK;AACvB;AAEA,SAAS,UAAU,KAAsB;AACvC,MAAI;AACF,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB;AACF;AAEA,SAAS,cAAc,OAAsC;AAC3D,SACE,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,WAAW,SACX,OAAQ,MAA8B,UAAU;AAEpD;;;AExEA,IAAM,eAAe,oBAAI,IAAI,CAAC,OAAO,QAAQ,OAAO,UAAU,OAAO,CAAC;AAI/D,SAAS,uBAAuB,MAA6B;AAClE,QAAM,WAAyB,CAAC;AAChC,QAAM,YAAY,oBAAI,IAAoB;AAC1C,QAAM,QAAQ,SAAS,IAAI,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AAErE,aAAW,CAAC,MAAM,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AACnD,QAAI,CAAC,SAAS,OAAO,EAAG;AACxB,eAAW,CAAC,QAAQ,SAAS,KAAK,OAAO,QAAQ,OAAO,GAAG;AACzD,UAAI,CAAC,aAAa,IAAI,MAAM,KAAK,CAAC,SAAS,SAAS,EAAG;AAEvD,UAAI,OACF,UAAU,gBAAgB,SACtB,QAAQ,OAAO,UAAU,WAAW,CAAC,IACrC,aAAa,QAAQ,IAAI;AAC/B,YAAM,OAAO,UAAU,IAAI,IAAI,KAAK;AACpC,gBAAU,IAAI,MAAM,OAAO,CAAC;AAC5B,UAAI,OAAO,EAAG,QAAO,GAAG,IAAI,IAAI,MAAM;AAEtC,YAAM,SAAS,kBAAkB,SAAS;AAC1C,YAAM,OAAO,yBAAyB,SAAS;AAC/C,aAAO,KAAK,GAAG,KAAK,MAAM;AAE1B,eAAS,KAAK;AAAA,QACZ;AAAA,QACA,aAAa;AAAA,UACX,UAAU,WAAW,UAAU,eAAe,GAAG,OAAO,YAAY,CAAC,IAAI,IAAI;AAAA,QAC/E;AAAA,QACA;AAAA,QACA,SAAS,KAAK,OAAO,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,QACA,GAAI,KAAK,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,KAAK,YAAY;AAAA,MAC5E,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,WAAmC;AAC5D,QAAM,YAAY,MAAM,QAAQ,UAAU,UAAU,IAAI,UAAU,aAAa,CAAC;AAChF,SAAO,UAAU,OAAO,QAAQ,EAAE,IAAI,CAAC,UAAoB;AACzD,UAAM,SAAS,UAAU,MAAM,MAAM;AACrC,UAAM,EAAE,MAAM,OAAO,IAAI,oBAAoB,MAAM;AACnD,UAAM,UAAU,MAAM,QAAQ,OAAO,IAAI,IAAI,EAAE,SAAS,OAAO,KAAK,IAAI,CAAC;AACzE,WAAO;AAAA,MACL,MAAM,QAAQ,OAAO,MAAM,IAAI,CAAC;AAAA,MAChC,cAAc,OAAO,MAAM,IAAI;AAAA,MAC/B;AAAA,MACA,UAAU,QAAQ,MAAM,QAAQ;AAAA,MAChC,aAAa,GAAG,OAAO,MAAM,eAAe,MAAM,IAAI,CAAC,GAAG,MAAM;AAAA,MAChE,GAAG;AAAA,MACH,UAAU,kBAAkB,MAAM,EAAE;AAAA,MACpC;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,yBAAyB,WAGhC;AACA,QAAM,cAAc,SAAS,UAAU,WAAW,IAAI,UAAU,cAAc;AAC9E,QAAM,UACJ,gBAAgB,UAAa,SAAS,YAAY,OAAO,IAAI,YAAY,UAAU,CAAC;AAEtF,QAAM,kBAAkB,iBAAiB,SAAS,qBAAqB;AACvE,QAAM,aAAa,iBAAiB,SAAS,kBAAkB;AAC/D,QAAM,iBAAiB,cAAc,eAAe;AACpD,QAAM,YAAY,OAAO,OAAO,cAAc,EAAE,KAAK,CAACC,YAAWA,QAAO,WAAW,QAAQ;AAE3F,MAAI,SAAqB,CAAC;AAC1B,MAAI;AACJ,MAAI,WAAW;AACb,aAAS;AACT,kBAAc;AAAA,EAChB,WAAW,OAAO,KAAK,cAAc,UAAU,CAAC,EAAE,SAAS,GAAG;AAC5D,aAAS;AAAA,EACX,WAAW,OAAO,KAAK,cAAc,EAAE,SAAS,GAAG;AACjD,aAAS;AACT,kBAAc;AAAA,EAChB;AAEA,QAAM,WAAW,IAAI,IAAI,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC;AAC9E,QAAM,aAAa,cAAc,MAAM;AACvC,QAAM,SAAS,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,UAAU,UAAU,MAAgB;AAClF,UAAM,WAAW,gBAAgB,yBAAyB,WAAW,WAAW;AAChF,UAAM,EAAE,MAAM,OAAO,IAAI,WACrB,EAAE,MAAM,UAAmB,QAAQ,eAAe,IAClD,oBAAoB,UAAU;AAClC,UAAM,UAAU,MAAM,QAAQ,WAAW,IAAI,IAAI,EAAE,SAAS,WAAW,KAAK,IAAI,CAAC;AACjF,WAAO;AAAA,MACL,MAAM,QAAQ,QAAQ;AAAA,MACtB,cAAc;AAAA,MACd;AAAA,MACA,UAAU,SAAS,IAAI,QAAQ;AAAA,MAC/B,aAAa,GAAG,OAAO,WAAW,eAAe,QAAQ,CAAC,GAAG,MAAM;AAAA,MACnE,GAAG;AAAA,MACH,UAAU,WAAW,SAAS;AAAA,MAC9B,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,SAAO,gBAAgB,SAAY,EAAE,OAAO,IAAI,EAAE,QAAQ,YAAY;AACxE;AAEA,SAAS,iBAAiB,SAAqB,aAAiC;AAC9E,QAAM,OAAO,QAAQ,WAAW;AAChC,SAAO,SAAS,IAAI,IAAI,UAAU,KAAK,MAAM,IAAI,CAAC;AACpD;AAEA,SAAS,cAAc,QAAgD;AACrE,SAAO,SAAS,OAAO,UAAU,IAC7B,OAAO;AAAA,IACL,OAAO,QAAQ,OAAO,UAAU,EAAE;AAAA,MAAO,CAAC,UACxC,SAAS,MAAM,CAAC,CAAC;AAAA,IACnB;AAAA,EACF,IACA,CAAC;AACP;AAEA,SAAS,UAAU,OAA4B;AAC7C,SAAO,SAAS,KAAK,IAAK,QAAuB,CAAC;AACpD;AAEA,SAAS,kBAAkB,OAA+B;AACxD,SAAO,UAAU,UAAU,UAAU,YAAY,UAAU,UAAU,UAAU,SAC3E,QACA;AACN;AAEA,SAAS,aAAa,QAAgB,MAAsB;AAC1D,QAAM,OAAO,KACV,QAAQ,cAAc,EAAE,EACxB,QAAQ,SAAS,EAAE,EACnB,QAAQ,OAAO,GAAG;AACrB,SAAO,OAAO,GAAG,MAAM,IAAI,IAAI,KAAK;AACtC;AAEA,SAAS,SAAS,OAAqC;AACrD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;ACrJA,OAAOC,SAAQ;;;ACeR,SAAS,qBACd,SACA,QACA,UAAiC,CAAC,GACV;AACxB,MAAI,OAAO,QAAQ,QAAQ;AAC3B,QAAM,cAAuC,CAAC;AAC9C,QAAM,UAAkC,CAAC;AACzC,MAAI,OAAuC;AAC3C,QAAM,QAAwC;AAE9C,aAAW,SAAS,QAAQ,QAAQ;AAClC,QAAI,MAAM,aAAa,OAAQ;AAC/B,UAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,QAAI,UAAU,UAAa,UAAU,MAAM;AACzC,aAAO,KAAK,QAAQ,IAAI,MAAM,YAAY,KAAK,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,IAClF;AAAA,EACF;AAEA,aAAW,SAAS,QAAQ,QAAQ;AAClC,UAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,QAAI,UAAU,UAAa,UAAU,KAAM;AAE3C,QAAI,MAAM,aAAa,SAAS;AAC9B,kBAAY,MAAM,YAAY,IAAI;AAAA,QAChC;AAAA,QACA,MAAM,UAAU,CAAC;AAAA,QACjB,KAAK,MAAM,IAAI;AAAA,MACjB;AAAA,IACF,WAAW,MAAM,aAAa,UAAU;AACtC,cAAQ,MAAM,YAAY,IAAI,OAAO,KAAK;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,SAAS,QAAQ,QAAQ,YAAY,KAAK;AAChD,MAAI,WAAW,OAAO;AACpB,QAAI,QAAQ,cAAc,QAAW;AACnC,aAAO,QAAQ;AAAA,IACjB,OAAO;AACL,YAAM,gBAAyC,CAAC;AAChD,iBAAW,SAAS,QAAQ,QAAQ;AAClC,YAAI,MAAM,aAAa,OAAQ;AAC/B,cAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,YAAI,UAAU,UAAa,UAAU,MAAM;AACzC,wBAAc,MAAM,YAAY,IAAI;AAAA,YAClC;AAAA,YACA,MAAM,UAAU,CAAC;AAAA,YACjB,KAAK,MAAM,IAAI;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AACA,aAAO,OAAO,KAAK,aAAa,EAAE,SAAS,IAAI,gBAAgB;AAAA,IACjE;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,aAAa,SAAS,MAAM,MAAM;AACnD;;;AD7DA,eAAsB,eACpB,SACA,QACA,SAC6E;AAC7E,QAAM,YAAY,qBAAqB,SAAS,QAAQ;AAAA,IACtD,WAAW,QAAQ;AAAA,EACrB,CAAC;AACD,QAAM,MAAM,SAAS,QAAQ,SAAS,UAAU,MAAM,UAAU,WAAW;AAC3E,QAAM,UAAU,QAAQ,UAAU,OAAO,YAAY;AACrD,QAAM,UAAkC;AAAA,IACtC,GAAG,OAAO,YAAY,QAAQ,eAAe,CAAC,CAAC;AAAA,IAC/C,GAAG,UAAU;AAAA,EACf;AAEA,QAAM,OACJ,WAAW,SAAS,UAAU,SAAS,OAAO,KAAK,UAAU,UAAU,IAAI,IAAI;AACjF,MAAI,SAAS,OAAW,SAAQ,cAAc,MAAM;AAEpD,QAAM,WAAW,MAAMC,IAAG,KAAK;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,GAAI,SAAS,SAAY,CAAC,IAAI,EAAE,KAAK;AAAA,IACrC,iBAAiB;AAAA,EACnB,CAAC;AACD,SAAO;AAAA,IACL,QAAQ,SAAS;AAAA,IACjB,IAAI,SAAS;AAAA,IACb,MAAM,MAAM,SAAS,KAAK;AAAA,IAC1B,aAAa,SAAS,QAAQ,IAAI,cAAc,KAAK;AAAA,EACvD;AACF;AAEA,SAAS,SAAS,SAAiB,MAAc,aAA8C;AAC7F,QAAM,MAAM,IAAI,IAAI,GAAG,QAAQ,QAAQ,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE;AAC1D,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,WAAW,GAAG;AACtD,QAAI,UAAU,UAAa,UAAU,KAAM;AAC3C,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAW,QAAQ,MAAO,KAAI,aAAa,OAAO,KAAK,OAAO,IAAI,CAAC;AAAA,IACrE,OAAO;AACL,UAAI,aAAa,IAAI,KAAK,OAAO,KAAK,CAAC;AAAA,IACzC;AAAA,EACF;AACA,SAAO,IAAI,SAAS;AACtB;;;AE5CO,SAAS,mBAAmB,OAAoC;AACrE,SAAO,MAAM,IAAI,CAAC,SAAqB;AACrC,UAAM,SAAS,aAAa,KAAK,WAAW,IAAI,KAAK,cAAc,CAAC;AACpE,UAAM,WAAW,IAAI,IAAI,MAAM,QAAQ,OAAO,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC;AAC9E,UAAM,aAAaC,eAAc,MAAM;AACvC,UAAM,SAAS,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,MAAM,UAAU,MAAgB;AAC9E,YAAM,EAAE,MAAM,OAAO,IAAI,oBAAoB,UAAU;AACvD,YAAM,UAAU,MAAM,QAAQ,WAAW,IAAI,IAAI,EAAE,SAAS,WAAW,KAAK,IAAI,CAAC;AACjF,aAAO;AAAA,QACL,MAAM,QAAQ,IAAI;AAAA,QAClB,cAAc;AAAA,QACd;AAAA,QACA,UAAU,SAAS,IAAI,IAAI;AAAA,QAC3B,aAAa,GAAG,OAAO,WAAW,eAAe,IAAI,CAAC,GAAG,MAAM;AAAA,QAC/D,GAAG;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,MAAM,QAAQ,KAAK,IAAI;AAAA,MACvB,aAAa,KAAK,eAAe;AAAA,MACjC;AAAA,MACA,SAAS,OAAO,SAAS;AAAA,MACzB,UAAU,KAAK;AAAA,IACjB;AAAA,EACF,CAAC;AACH;AAEA,SAASA,eAAc,QAAgD;AACrE,QAAM,aAAa,OAAO;AAC1B,MAAI,OAAO,eAAe,YAAY,eAAe,QAAQ,MAAM,QAAQ,UAAU,EAAG,QAAO,CAAC;AAChG,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,UAAU,EAAE;AAAA,MAAO,CAAC,UACjC,aAAa,MAAM,CAAC,CAAC;AAAA,IACvB;AAAA,EACF;AACF;AAEA,SAAS,aAAa,OAAqC;AACzD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;ACpDA,SAAS,UAAAC,eAAc;AACvB,SAAS,0BAA0B;AACnC,SAAS,qCAAqC;;;ACF9C,SAAS,cAAc;AACvB,SAAS,4BAA4B;AACrC,OAAO,gBAAgB;AAQvB,eAAsB,eAAe,aAAyC;AAC5E,SAAO,gBAAgB,aAAa,OAAO,WAAW;AACpD,UAAM,SAAS,MAAM,OAAO,UAAU;AACtC,WAAO,OAAO,MAAM,IAAI,CAAC,UAAU;AAAA,MACjC,MAAM,KAAK;AAAA,MACX,GAAI,KAAK,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,KAAK,YAAY;AAAA,MAC1E,aAAa,KAAK;AAAA,IACpB,EAAE;AAAA,EACJ,CAAC;AACH;AAEA,eAAsB,cACpB,aACA,UACA,MACkB;AAClB,SAAO,gBAAgB,aAAa,OAAO,WAAW;AACpD,UAAM,SAAS,MAAM,OAAO,SAAS,EAAE,MAAM,UAAU,WAAW,KAAK,CAAC;AACxE,WAAO,kBAAkB,OAAO,OAAO;AAAA,EACzC,CAAC;AACH;AAEA,eAAe,gBACb,aACA,IACY;AACZ,QAAM,CAAC,SAAS,GAAG,IAAI,IAAI,iBAAiB,WAAW;AACvD,MAAI,YAAY,OAAW,OAAM,IAAI,MAAM,qCAAqC;AAEhF,QAAM,SAAS,IAAI,OAAO,EAAE,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AACrE,QAAM,YAAY,IAAI,qBAAqB,EAAE,SAAS,MAAM,QAAQ,OAAO,CAAC;AAE5E,QAAM,OAAO,QAAQ,SAAS;AAC9B,MAAI;AACF,WAAO,MAAM,GAAG,MAAM;AAAA,EACxB,UAAE;AACA,UAAM,OAAO,MAAM;AAAA,EACrB;AACF;AAEO,SAAS,iBAAiB,aAA+B;AAC9D,SAAO,WAAW,WAAW;AAC/B;AAIO,SAAS,kBAAkB,SAA2B;AAC3D,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AAEpC,QAAM,QAAQ,QACX,IAAI,CAAC,SAAS,mBAAmB,IAAI,CAAC,EACtC,OAAO,CAAC,SAAS,SAAS,MAAS;AACtC,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,MAAI,MAAM,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,EAAG,QAAO,MAAM,KAAK,IAAI;AAC3E,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAwB;AAClD,MAAI,CAACC,UAAS,IAAI,EAAG,QAAO;AAC5B,MAAI,KAAK,SAAS,UAAU,OAAO,KAAK,SAAS,SAAU,QAAO,KAAK;AACvE,MAAI,OAAO,KAAK,SAAS,SAAU,QAAO,KAAK;AAE/C,MAAI,KAAK,SAAS,cAAcA,UAAS,KAAK,QAAQ,GAAG;AACvD,QAAI,OAAO,KAAK,SAAS,SAAS,SAAU,QAAO,KAAK,SAAS;AACjE,QAAI,OAAO,KAAK,SAAS,SAAS,SAAU,QAAO,KAAK,SAAS;AAAA,EACnE;AAEA,SAAO;AACT;AAEA,SAASA,UAAS,OAAsC;AACtD,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;ADrEA,eAAsB,cACpB,KACA,mBAA6D,CAAC,GAC1C;AACpB,QAAM,UAAU,iBAAiB,gBAAgB;AACjD,SAAO,eAAe,KAAK,SAAS,OAAO,WAAW;AACpD,UAAM,SAAS,MAAM,OAAO,UAAU;AACtC,WAAO,OAAO,MAAM,IAAI,CAAC,UAAU;AAAA,MACjC,MAAM,KAAK;AAAA,MACX,GAAI,KAAK,gBAAgB,SAAY,CAAC,IAAI,EAAE,aAAa,KAAK,YAAY;AAAA,MAC1E,aAAa,KAAK;AAAA,IACpB,EAAE;AAAA,EACJ,CAAC;AACH;AAEA,eAAsB,aACpB,KACA,UACA,MACA,mBAA6D,CAAC,GAC5C;AAClB,QAAM,UAAU,iBAAiB,gBAAgB;AACjD,SAAO,eAAe,KAAK,SAAS,OAAO,WAAW;AACpD,UAAM,SAAS,MAAM,OAAO,SAAS,EAAE,MAAM,UAAU,WAAW,KAAK,CAAC;AACxE,WAAO,kBAAkB,OAAO,OAAO;AAAA,EACzC,CAAC;AACH;AAEA,eAAe,eACb,KACA,SACA,IACY;AACZ,MAAI,QAAQ,cAAc,QAAQ;AAChC,QAAI;AACF,aAAO,MAAM,qBAAqB,KAAK,EAAE,GAAG,SAAS,WAAW,aAAa,GAAG,EAAE;AAAA,IACpF,SAAS,iBAAiB;AACxB,UAAI;AACF,eAAO,MAAM,qBAAqB,KAAK,EAAE,GAAG,SAAS,WAAW,MAAM,GAAG,EAAE;AAAA,MAC7E,SAAS,UAAU;AACjB,cAAM,IAAI;AAAA,UACR,mDAAmDC,aAAY,eAAe,CAAC,KAAKA,aAAY,QAAQ,CAAC;AAAA,QAC3G;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO,qBAAqB,KAAK,SAAS,EAAE;AAC9C;AAEA,eAAe,qBACb,KACA,SACA,IACY;AACZ,QAAM,SAAS,IAAIC,QAAO,EAAE,MAAM,iBAAiB,SAAS,QAAQ,CAAC;AACrE,QAAM,YAAY,gBAAgB,KAAK,OAAO;AAE9C,QAAM,OAAO,QAAQ,SAAS;AAC9B,MAAI;AACF,WAAO,MAAM,GAAG,MAAM;AAAA,EACxB,UAAE;AACA,UAAM,OAAO,MAAM;AAAA,EACrB;AACF;AAEA,SAAS,gBAAgB,KAAa,SAA8C;AAClF,QAAM,UAAU,OAAO,YAAY,QAAQ,OAAO;AAClD,MAAI,QAAQ,cAAc,OAAO;AAC/B,UAAM,mBAAiC,CAAC,OAAO,SAC7C,MAAM,OAAO,EAAE,GAAG,MAAM,SAAS,EAAE,GAAG,SAAS,GAAG,gBAAgB,MAAM,OAAO,EAAE,EAAE,CAAC;AACtF,WAAO,IAAI,mBAAmB,IAAI,IAAI,GAAG,GAAG;AAAA,MAC1C,iBAAiB,EAAE,OAAO,iBAAiB;AAAA,MAC3C,aAAa,EAAE,QAAQ;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,SAAO,IAAI,8BAA8B,IAAI,IAAI,GAAG,GAAG;AAAA,IACrD,aAAa,EAAE,QAAQ;AAAA,EACzB,CAAC;AACH;AAEA,SAAS,iBACP,kBAC0B;AAC1B,MAAI,MAAM,QAAQ,gBAAgB,GAAG;AACnC,WAAO,EAAE,SAAS,kBAAkB,WAAW,OAAO;AAAA,EACxD;AACA,SAAO;AAAA,IACL,SAAS,iBAAiB,WAAW,CAAC;AAAA,IACtC,WAAW,iBAAiB,aAAa;AAAA,EAC3C;AACF;AAEA,SAAS,gBAAgB,SAA0D;AACjF,MAAI,YAAY,OAAW,QAAO,CAAC;AACnC,SAAO,OAAO,YAAY,IAAI,QAAQ,OAAO,EAAE,QAAQ,CAAC;AAC1D;AAEA,SAASD,aAAY,OAAwB;AAC3C,SAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;;;AElHA,SAAS,iBAAuC;;;ACAhD,SAAS,iBAAiB;AASnB,SAAS,eAAe,UAAwB,UAA0B,CAAC,GAAiB;AACjG,MAAI,SAAS;AAEb,MAAI,QAAQ,SAAS,QAAQ;AAC3B,UAAM,UAAU,IAAI,IAAI,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,YAAY,CAAC,CAAC;AAC7E,aAAS,OAAO;AAAA,MACd,CAAC,YAAY,QAAQ,WAAW,UAAa,QAAQ,IAAI,QAAQ,OAAO,YAAY,CAAC;AAAA,IACvF;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,aAAS,OAAO;AAAA,MACd,CAAC,YAAY,QAAQ,SAAS,KAAK,CAAC,YAAY,UAAU,QAAQ,MAAM,OAAO,CAAC,KAAK;AAAA,IACvF;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,aAAS,OAAO;AAAA,MACd,CAAC,YAAY,EAAE,QAAQ,SAAS,KAAK,CAAC,YAAY,UAAU,QAAQ,MAAM,OAAO,CAAC,KAAK;AAAA,IACzF;AAAA,EACF;AAEA,SAAO;AACT;;;ACpBO,SAAS,UAAa,MAAS,GAAc;AAClD,MAAI,MAAM,QAAQ,IAAI,EAAG,QAAO,KAAK,MAAM,GAAG,CAAC;AAC/C,SAAO;AACT;AAEO,SAAS,aAAa,MAAe,UAAyB,CAAC,GAAoB;AACxF,MAAI,QAAQ,KAAK;AACf,WAAO;AAAA,MACL,QAAQ,GAAG,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,IAAI,CAAC;AAAA;AAAA,MACjE,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,MAAI,QAAQ,0BAA0B,IAAI;AAC1C,MAAI,QAAQ,SAAS,OAAW,SAAQ,UAAU,OAAO,QAAQ,IAAI;AAErE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,EAAE,QAAQ,GAAG,KAAK;AAAA,GAAM,QAAQ,GAAG;AAAA,EAC5C;AAEA,SAAO;AAAA,IACL,QAAQ,GAAG,KAAK,UAAU,OAAO,MAAM,QAAQ,SAAS,IAAI,CAAC,CAAC;AAAA;AAAA,IAC9D,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,0BAA0B,MAAwB;AACzD,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI;AACF,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AFVA,eAAsB,eAAe,SAA+C;AAClF,MAAI,WAAW,eAAe,MAAM,QAAQ,aAAa,GAAG,QAAQ,OAAO;AAE3E,MAAI,QAAQ,QAAQ,WAAW,QAAW;AACxC,eAAW,eAAe,UAAU,QAAQ,QAAQ,MAAM;AAAA,EAC5D;AAEA,MAAI,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,WAAW,QAAW;AAChE,gBAAY,QAAQ,eAAe,QAAQ,CAAC;AAC5C;AAAA,EACF;AAEA,MAAI,QAAQ,YAAY,WAAW,GAAG;AACpC,QAAI,QAAQ,mBAAmB,QAAW;AACxC,YAAM,QAAQ,eAAe,QAAQ;AACrC;AAAA,IACF;AAEA,gBAAY,QAAQ,eAAe,QAAQ,CAAC;AAC5C;AAAA,EACF;AAEA,QAAME,eAAc,QAAQ,YAAY,CAAC;AACzC,MAAIA,iBAAgB,OAAW,OAAM,IAAI,MAAM,oBAAoB;AAEnE,QAAM,UAAU,SAAS,KAAK,CAAC,cAAc,UAAU,SAASA,YAAW;AAC3E,MAAI,YAAY,OAAW,OAAM,IAAI,MAAM,uBAAuBA,YAAW,EAAE;AAE/E,MAAI,QAAQ,YAAY,SAAS,QAAQ,KAAK,QAAQ,YAAY,SAAS,IAAI,GAAG;AAChF,gBAAY,kBAAkB,OAAO,CAAC;AACtC;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,mBAAmB,SAAS,QAAQ,YAAY,MAAM,CAAC,CAAC;AAC/E,QAAM,SAAS,mBAAmB,SAAS,SAAS,MAAM,SAAS,iBAAiB,CAAC,CAAC;AACtF,QAAM,SAAS,MAAM,QAAQ,eAAe,SAAS,QAAQ,SAAS,IAAI;AAC1E,uBAAqB,QAAQ,QAAQ,OAAO;AAC9C;AAEA,SAAS,eAAe,UAAwB,QAA8B;AAC5E,QAAM,UAAU,OAAO,YAAY;AACnC,SAAO,SAAS;AAAA,IACd,CAAC,YACC,QAAQ,KAAK,YAAY,EAAE,SAAS,OAAO,MAC1C,QAAQ,eAAe,IAAI,YAAY,EAAE,SAAS,OAAO;AAAA,EAC9D;AACF;AAEA,eAAe,mBACb,SACA,MAC8B;AAC9B,SAAO,QAAQ,uBAAuB,SAClC,EAAE,KAAK,IACP,MAAM,QAAQ,mBAAmB,IAAI;AAC3C;AAEO,SAAS,mBACd,SACA,MACA,gBAAyC,CAAC,GACjB;AACzB,QAAM,SAAkC,EAAE,GAAG,cAAc;AAC3D,QAAM,SAAS,IAAI,IAAI,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC;AACzE,yBAAuB,SAAS,MAAM,MAAM;AAE5C,QAAM,EAAE,QAAQ,aAAa,IAAI,UAAU;AAAA,IACzC,MAAM,4BAA4B,MAAM,iBAAiB,OAAO,CAAC;AAAA,IACjE,SAAS,kBAAkB,OAAO;AAAA,IAClC,QAAQ;AAAA,IACR,kBAAkB;AAAA,EACpB,CAAC;AAED,aAAW,SAAS,QAAQ,QAAQ;AAClC,UAAM,QAAQ,aAAa,MAAM,IAAI;AACrC,QAAI,UAAU,OAAW,QAAO,MAAM,IAAI,IAAI;AAAA,EAChD;AAEA,aAAW,SAAS,QAAQ,QAAQ;AAClC,QACE,MAAM,YACN,OAAO,MAAM,IAAI,MAAM,UACvB,OAAO,MAAM,YAAY,MAAM,UAC/B,MAAM,aAAa,QACnB;AACA,YAAM,IAAI,MAAM,6BAA6B,MAAM,IAAI,EAAE;AAAA,IAC3D;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,SACA,MACA,QACM;AACN,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,UAAU,UAAa,CAAC,MAAM,WAAW,IAAI,EAAG;AAEpD,UAAM,UAAU,MAAM,MAAM,CAAC;AAC7B,UAAM,OAAO,QAAQ,SAAS,GAAG,IAAI,QAAQ,MAAM,GAAG,QAAQ,QAAQ,GAAG,CAAC,IAAI;AAC9E,UAAM,QAAQ,OAAO,IAAI,IAAI;AAC7B,QAAI,UAAU,OAAW,OAAM,IAAI,MAAM,sBAAsB,QAAQ,IAAI,OAAO,IAAI,EAAE;AACxF,QAAI,MAAM,SAAS,aAAa,CAAC,QAAQ,SAAS,GAAG,KAAK,KAAK,QAAQ,CAAC,MAAM,QAAW;AACvF,YAAM,IAAI,MAAM,uBAAuB,IAAI,EAAE;AAAA,IAC/C;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,SAA8D;AACvF,SAAO,OAAO;AAAA,IACZ,QAAQ,OAAO,IAAI,CAAC,UAAU;AAAA,MAC5B,MAAM;AAAA,MACN,EAAE,MAAM,MAAM,SAAS,YAAY,YAAY,SAAS;AAAA,IAC1D,CAAC;AAAA,EACH;AACF;AAEA,SAAS,iBAAiB,SAAkC;AAC1D,SAAO,IAAI;AAAA,IACT,QAAQ,OAAO,OAAO,CAAC,UAAU,MAAM,SAAS,SAAS,EAAE,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,EACtF;AACF;AAEA,SAAS,4BAA4B,MAAgB,aAAoC;AACvF,QAAM,SAAmB,CAAC;AAE1B,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,QAAQ,KAAK,KAAK;AACxB,UAAM,OAAO,KAAK,QAAQ,CAAC;AAC3B,QACE,UAAU,UACV,SAAS,UACT,MAAM,WAAW,IAAI,KACrB,CAAC,MAAM,SAAS,GAAG,KACnB,YAAY,IAAI,MAAM,MAAM,CAAC,CAAC,KAC9B,KAAK,WAAW,GAAG,GACnB;AACA,aAAO,KAAK,GAAG,KAAK,IAAI,IAAI,EAAE;AAC9B,eAAS;AAAA,IACX,WAAW,UAAU,QAAW;AAC9B,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,SAA6B;AACtD,QAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,KAAK,QAAQ,eAAe,EAAE,IAAI,IAAI,UAAU;AAC9E,aAAW,SAAS,QAAQ,QAAQ;AAClC,UAAM,WAAW,MAAM,WAAW,gBAAgB;AAClD,UAAM;AAAA,MACJ,OAAO,MAAM,KAAK,OAAO,EAAE,CAAC,IAAI,MAAM,eAAe,MAAM,YAAY,GAAG,QAAQ;AAAA,IACpF;AAAA,EACF;AACA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC5B;AAEA,SAAS,qBAAqB,MAAe,SAAmC;AAC9E,QAAM,SAAS,aAAa,MAAM;AAAA,IAChC,QAAQ,QAAQ;AAAA,IAChB,KAAK,QAAQ;AAAA,IACb,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,EAC7D,CAAC;AACD,MAAI,OAAO,OAAQ,SAAQ,MAAM,OAAO,OAAO,QAAQ,OAAO,EAAE,CAAC;AACjE,cAAY,OAAO,MAAM;AAC3B;AAEA,SAAS,YAAY,MAAoB;AACvC,UAAQ,IAAI,KAAK,QAAQ,OAAO,EAAE,CAAC;AACrC;;;AGtMO,SAAS,kBAAkB,MAAgB,MAA6B;AAC7E,QAAM,eAAe,IAAI,IAAI,KAAK,YAAY;AAC9C,QAAM,cAAc,IAAI,IAAI,KAAK,WAAW;AAE5C,MAAI,QAAQ;AACZ,SAAO,QAAQ,KAAK,QAAQ;AAC1B,UAAM,MAAM,KAAK,KAAK;AACtB,QAAI,QAAQ,OAAW;AAEvB,QAAI,QAAQ,MAAM;AAChB,aAAO;AAAA,QACL,YAAY,KAAK,MAAM,GAAG,KAAK;AAAA,QAC/B,aAAa,KAAK,MAAM,QAAQ,CAAC;AAAA,MACnC;AAAA,IACF;AAEA,QAAI,IAAI,WAAW,GAAG,GAAG;AACvB,YAAM,aACJ,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS,GAAG,IAAI,IAAI,MAAM,GAAG,IAAI,QAAQ,GAAG,CAAC,IAAI;AAC/E,UAAI,IAAI,WAAW,IAAI,KAAK,IAAI,SAAS,GAAG,GAAG;AAC7C,iBAAS;AAAA,MACX,WAAW,aAAa,IAAI,UAAU,GAAG;AACvC,iBAAS;AAAA,MACX,WAAW,YAAY,IAAI,UAAU,GAAG;AACtC,iBAAS;AAAA,MACX,OAAO;AACL,iBAAS;AAAA,MACX;AACA;AAAA,IACF;AAEA,WAAO;AAAA,MACL,YAAY,KAAK,MAAM,GAAG,KAAK;AAAA,MAC/B,aAAa,KAAK,MAAM,KAAK;AAAA,IAC/B;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,MAAM,aAAa,CAAC,EAAE;AAC7C;;;AnB3BA,IAAM,qBAAqB;AAAA,EACzB,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa,CAAC,UAAU,YAAY,SAAS,aAAa,WAAW,aAAa,UAAU,IAAI;AAClG;AA6BA,eAAsB,IAAI,OAAO,QAAQ,KAAK,MAAM,CAAC,GAAoB;AACvE,MAAI,KAAK,CAAC,MAAM,KAAM,QAAO,KAAK,MAAM,CAAC;AACzC,QAAM,EAAE,YAAY,YAAY,IAAI,kBAAkB,MAAM,kBAAkB;AAC9E,QAAM,UAAU,gBAAgB,UAAU;AAE1C,MAAI,QAAQ,SAAS;AACnB,UAAM,MAAM,MAAM,OAAO,uBAAgD;AACzE,IAAAC,aAAY,iBAAiB,IAAI,QAAQ,OAAO;AAAA,CAAI;AACpD,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,QAAQ,YAAY,WAAW,GAAG;AAC5C,cAAU;AACV,WAAO;AAAA,EACT;AAEA,MAAI;AACF,wBAAoB,OAAO;AAC3B,YAAQ,cAAc,MAAM,mBAAmB,QAAQ,WAAW;AAElE,QAAI,QAAQ,SAAS,QAAW;AAC9B,YAAM,kBAAkB,SAAS,WAAW;AAC5C,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,aAAa,QAAW;AAClC,YAAM,mBAAmB,SAAS,WAAW;AAC7C,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,QAAQ,QAAW;AAC7B,YAAM,kBAAkB,SAAS,WAAW;AAC5C,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,YAAY,QAAW;AACjC,YAAM,kBAAkB,SAAS,WAAW;AAC5C,aAAO;AAAA,IACT;AAEA,YAAQ;AAAA,MACN;AAAA,IACF;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAChF,WAAO;AAAA,EACT;AACF;AAEA,eAAe,kBAAkB,SAAqB,aAAsC;AAC1F,MAAI,QAAQ,SAAS,OAAW,OAAM,IAAI,MAAM,oBAAoB;AACpE,QAAM,SAAS,QAAQ;AAEvB,QAAM,OAAO,MAAM,gBAAgB,QAAQ;AAAA,IACzC,aAAa,QAAQ;AAAA,IACrB,UAAU,gBAAgB;AAAA,IAC1B,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,IACvE,YAAY,QAAQ;AAAA,IACpB,SAAS,QAAQ;AAAA,EACnB,CAAC;AAED,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,cAAc,MAAM,uBAAuB,IAAI;AAAA,IAC/C,gBAAgB;AAAA,IAChB,gBAAgB,MAAM;AACpB,gBAAU;AACV,YAAM,IAAI,MAAM,+DAA+D;AAAA,IACjF;AAAA,IACA,gBAAgB,OAAO,SAAS,WAAW;AACzC,YAAM,UAAU,iBAAiB,MAAM,QAAQ,QAAQ,OAAO;AAC9D,YAAM,WAAW,MAAM,eAAe,SAAS,QAAQ;AAAA,QACrD;AAAA,QACA,aAAa,QAAQ;AAAA,MACvB,CAAC;AAED,UAAI,CAAC,SAAS,GAAI,OAAM,IAAI,MAAM,QAAQ,SAAS,MAAM,KAAK,SAAS,IAAI,EAAE;AAC7E,aAAO,SAAS;AAAA,IAClB;AAAA,EACF,CAAC;AACH;AAEA,eAAe,kBAAkB,SAAqB,aAAsC;AAC1F,MAAI,QAAQ,YAAY,OAAW,OAAM,IAAI,MAAM,uBAAuB;AAC1E,QAAM,WAAW,QAAQ;AAEzB,QAAM,SAAS,MAAM,kBAAkB,UAAU;AAAA,IAC/C,aAAa,QAAQ;AAAA,IACrB,UAAU,gBAAgB;AAAA,IAC1B,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,IACvE,YAAY,QAAQ;AAAA,IACpB,SAAS,QAAQ;AAAA,IACjB,GAAI,QAAQ,kBAAkB,SAAY,CAAC,IAAI,EAAE,cAAc,QAAQ,cAAc;AAAA,IACrF,WAAW,CAAC,YAAY,QAAQ,MAAM,OAAO;AAAA,EAC/C,CAAC;AAED,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,cAAc,MAAM,uBAAuB,MAAM;AAAA,IACjD,gBAAgB;AAAA,IAChB,oBAAoB,OAAO,SAAS;AAClC,YAAM,YAAY,UAAU,MAAM,SAAS;AAC3C,YAAM,cAAc,QAAQ,SAAS,UAAU,UAAU,MAAM,cAAc,IAAI,CAAC;AAClF,aAAO,EAAE,MAAM,UAAU,MAAM,eAAe,YAAY;AAAA,IAC5D;AAAA,IACA,gBAAgB,CAAC,SAAS,WACxB,eAAe,SAAS,QAAQ;AAAA,MAC9B;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,GAAI,QAAQ,WAAW,SAAY,CAAC,IAAI,EAAE,QAAQ,QAAQ,OAAO;AAAA,MACjE,gBAAgB,QAAQ;AAAA,IAC1B,CAAC;AAAA,EACL,CAAC;AACH;AAEA,eAAe,kBAAkB,SAAqB,aAAsC;AAC1F,MAAI,QAAQ,QAAQ,OAAW,OAAM,IAAI,MAAM,mBAAmB;AAClE,QAAM,WAAW,QAAQ;AAEzB,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,cAAc,YAAY,mBAAmB,MAAM,iBAAiB,OAAO,CAAC;AAAA,IAC5E,gBAAgB;AAAA,IAChB,gBAAgB,OAAO,SAAS,WAAW;AACzC,YAAM,WAAW,mBAAmB,SAAS,MAAM;AACnD,aAAO,aAAa,UAAU,QAAQ,YAAY,QAAQ,MAAM,UAAU;AAAA,QACxE,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,MACrB,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEA,eAAe,iBAAiB,SAAyC;AACvE,MAAI,QAAQ,QAAQ,OAAW,OAAM,IAAI,MAAM,mBAAmB;AAElE,QAAM,WAAW,OACf,QAAQ,YACR,YAAY;AAAA,IACV,QAAQ,QAAQ;AAAA,IAChB,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ;AAAA,EACrB,CAAC,CACH;AACA,QAAM,WAAW,gBAAgB;AAEjC,MAAI,CAAC,QAAQ,SAAS;AACpB,UAAM,SAAS,MAAM,WAAsB,UAAU,UAAU,QAAQ,QAAQ;AAC/E,QAAI,WAAW,KAAM,QAAO;AAAA,EAC9B;AAEA,QAAM,QAAQ,MAAM,cAAc,QAAQ,KAAK;AAAA,IAC7C,SAAS,QAAQ;AAAA,IACjB,WAAW,QAAQ;AAAA,EACrB,CAAC;AACD,QAAM,UAAU,UAAU,UAAU,KAAK;AACzC,SAAO;AACT;AAEA,eAAe,mBAAmB,SAAqB,aAAsC;AAC3F,MAAI,QAAQ,aAAa,OAAW,OAAM,IAAI,MAAM,yBAAyB;AAC7E,QAAM,cAAc,QAAQ;AAE5B,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA,cAAc,YAAY,mBAAmB,MAAM,eAAe,WAAW,CAAC;AAAA,IAC9E,gBAAgB;AAAA,IAChB,gBAAgB,OAAO,SAAS,WAAW;AACzC,YAAM,WAAW,mBAAmB,SAAS,MAAM;AACnD,aAAO,cAAc,aAAa,QAAQ,YAAY,QAAQ,MAAM,QAAQ;AAAA,IAC9E;AAAA,EACF,CAAC;AACH;AAEA,SAAS,mBACP,SACA,QACyB;AACzB,QAAM,OAAgC,CAAC;AACvC,aAAW,SAAS,QAAQ,QAAQ;AAClC,QAAI,OAAO,MAAM,IAAI,MAAM,QAAW;AACpC,WAAK,MAAM,YAAY,IAAI;AAAA,QACzB,OAAO,MAAM,IAAI;AAAA,QACjB,MAAM,UAAU,CAAC;AAAA,QACjB,KAAK,MAAM,IAAI;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,MAA4B;AACnD,oCAAkC,MAAM,mBAAmB,YAAY;AAEvE,QAAM,EAAE,OAAO,IAAIC,WAAU;AAAA,IAC3B,MAAM;AAAA,IACN,SAAS;AAAA,MACP,MAAM,EAAE,MAAM,SAAS;AAAA,MACvB,KAAK,EAAE,MAAM,SAAS;AAAA,MACtB,aAAa,EAAE,MAAM,SAAS;AAAA,MAC9B,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,kBAAkB,EAAE,MAAM,SAAS;AAAA,MACnC,YAAY,EAAE,MAAM,SAAS;AAAA,MAC7B,eAAe,EAAE,MAAM,UAAU,UAAU,KAAK;AAAA,MAChD,WAAW,EAAE,MAAM,SAAS;AAAA,MAC5B,aAAa,EAAE,MAAM,SAAS;AAAA,MAC9B,aAAa,EAAE,MAAM,SAAS;AAAA,MAC9B,QAAQ,EAAE,MAAM,SAAS;AAAA,MACzB,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,SAAS,EAAE,MAAM,SAAS;AAAA,MAC1B,QAAQ,EAAE,MAAM,SAAS;AAAA,MACzB,mBAAmB,EAAE,MAAM,SAAS;AAAA,MACpC,MAAM,EAAE,MAAM,SAAS;AAAA,MACvB,MAAM,EAAE,MAAM,UAAU;AAAA,MACxB,QAAQ,EAAE,MAAM,UAAU;AAAA,MAC1B,KAAK,EAAE,MAAM,UAAU;AAAA,MACvB,SAAS,EAAE,MAAM,UAAU;AAAA,MAC3B,OAAO,EAAE,MAAM,UAAU;AAAA,MACzB,SAAS,EAAE,MAAM,UAAU;AAAA,MAC3B,MAAM,EAAE,MAAM,WAAW,OAAO,IAAI;AAAA,IACtC;AAAA,IACA,QAAQ;AAAA,IACR,kBAAkB;AAAA,EACpB,CAAC;AAED,QAAM,cAAc,iBAAiB,OAAO,aAAa,CAAC,EAAE,IAAI,WAAW;AAC3E,QAAM,SAAS,aAAa,OAAO,MAAM;AACzC,SAAO;AAAA,IACL,GAAG,uBAAuB,QAAQ,aAAa,OAAO,IAAI,CAAC;AAAA,IAC3D,GAAG,uBAAuB,OAAO,aAAa,OAAO,GAAG,CAAC;AAAA,IACzD,GAAG,uBAAuB,YAAY,aAAa,OAAO,WAAW,CAAC,CAAC;AAAA,IACvE,GAAG,uBAAuB,WAAW,aAAa,OAAO,OAAO,CAAC;AAAA,IACjE,GAAG,uBAAuB,iBAAiB,aAAa,OAAO,gBAAgB,CAAC,CAAC;AAAA,IACjF,GAAG,uBAAuB,WAAW,aAAa,OAAO,UAAU,CAAC,CAAC;AAAA,IACrE;AAAA,IACA,WAAW,eAAe,aAAa,OAAO,SAAS,KAAK,MAAM;AAAA,IAClE,GAAG,uBAAuB,YAAY,aAAa,OAAO,WAAW,CAAC,CAAC;AAAA,IACvE,UAAU,OAAO,SAAS,aAAa,OAAO,WAAW,CAAC,KAAK,QAAQ,EAAE;AAAA,IACzE,SAAS,OAAO,YAAY;AAAA,IAC5B,MAAM,OAAO,SAAS,QAAQ,WAAW;AAAA,IACzC,GAAG,uBAAuB,UAAU,MAAM;AAAA,IAC1C,GAAG,4BAA4B,WAAW,uBAAuB,OAAO,OAAO,CAAC;AAAA,IAChF,GAAG,4BAA4B,WAAW,uBAAuB,OAAO,OAAO,CAAC;AAAA,IAChF,GAAG,4BAA4B,WAAW,uBAAuB,OAAO,OAAO,CAAC;AAAA,IAChF,GAAG,uBAAuB,UAAU,aAAa,OAAO,MAAM,CAAC;AAAA,IAC/D,gBAAgB,OAAO,SAAS,aAAa,OAAO,iBAAiB,CAAC,KAAK,KAAK,EAAE;AAAA,IAClF,OAAO,OAAO,UAAU;AAAA,IACxB,QAAQ,OAAO,WAAW;AAAA,IAC1B,KAAK,OAAO,QAAQ;AAAA,IACpB,GAAG,uBAAuB,QAAQ,qBAAqB,OAAO,IAAI,CAAC;AAAA,IACnE,MAAM,OAAO,SAAS;AAAA,IACtB,SAAS,OAAO,YAAY;AAAA,EAC9B;AACF;AAEA,SAAS,sBAAsB,UAAgC;AAC7D,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,SAAO,GAAG,SACP;AAAA,IAAI,CAAC,YACJ,GAAG,QAAQ,KAAK,OAAO,EAAE,CAAC,KAAK,QAAQ,UAAU,IAAI,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,QAAQ,eAAe,EAAE,GAAG,QAAQ;AAAA,EACtH,EACC,KAAK,IAAI,CAAC;AAAA;AACf;AAEA,SAAS,kBAAkB,UAAgC;AACzD,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,SAAO,GAAG,SACP,IAAI,CAAC,YAAY,GAAG,QAAQ,KAAK,OAAO,EAAE,CAAC,IAAI,QAAQ,eAAe,EAAE,GAAG,QAAQ,CAAC,EACpF,KAAK,IAAI,CAAC;AAAA;AACf;AAEA,SAAS,sBAAsB,UAAgC;AAC7D,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,SAAO,GAAG,SACP;AAAA,IAAI,CAAC,YACJ,GAAG,QAAQ,KAAK,OAAO,EAAE,CAAC,KAAK,QAAQ,wBAAwB,IAAI,OAAO,CAAC,CAAC,IAAI,QAAQ,eAAe,EAAE,GAAG,QAAQ;AAAA,EACtH,EACC,KAAK,IAAI,CAAC;AAAA;AACf;AAEA,SAAS,iBAAiB,MAAmB,QAAgB,UAAsC;AACjG,MAAI,aAAa,OAAW,QAAO;AACnC,QAAM,UAAU,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,CAAC;AAC9D,QAAM,cAAc,QAAQ,CAAC;AAC7B,QAAM,YACJ,OAAO,gBAAgB,YAAY,gBAAgB,QAAQ,SAAS,cAChE,OAAQ,YAAiC,GAAG,IAC5C;AACN,MAAI,UAAU,WAAW,SAAS,KAAK,UAAU,WAAW,UAAU,EAAG,QAAO;AAChF,MAAI,OAAO,WAAW,SAAS,KAAK,OAAO,WAAW,UAAU,GAAG;AACjE,UAAM,SAAS,IAAI,IAAI,MAAM,EAAE;AAC/B,WAAO,YAAY,GAAG,MAAM,GAAG,SAAS,KAAK;AAAA,EAC/C;AACA,QAAM,IAAI,MAAM,4CAA4C;AAC9D;AAEA,SAAS,oBAAoB,SAA2B;AACtD,QAAM,SAAS,CAAC,QAAQ,MAAM,QAAQ,KAAK,QAAQ,UAAU,QAAQ,OAAO,EAAE;AAAA,IAC5E,CAAC,UAAU,UAAU;AAAA,EACvB,EAAE;AACF,MAAI,WAAW,GAAG;AAChB,cAAU;AACV,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AACA,MAAI,SAAS;AACX,UAAM,IAAI,MAAM,mEAAmE;AACvF;AAEA,SAAS,kCAAkC,MAAgB,SAAiC;AAC1F,QAAM,eAAe,IAAI,IAAI,OAAO;AAEpC,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,QAAQ,KAAK,KAAK;AACxB,QAAI,UAAU,UAAa,CAAC,MAAM,WAAW,IAAI,EAAG;AAEpD,UAAM,SAAS,MAAM,SAAS,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,GAAG,CAAC,IAAI;AAC1E,QAAI,CAAC,aAAa,IAAI,MAAM,KAAK,MAAM,SAAS,GAAG,EAAG;AACtD,QAAI,KAAK,QAAQ,CAAC,MAAM,OAAW,OAAM,IAAI,MAAM,qBAAqB,MAAM,EAAE;AAAA,EAClF;AACF;AAEA,SAAS,aAAa,OAAoC;AACxD,SAAO,OAAO,UAAU,WAAW,QAAQ;AAC7C;AAEA,SAAS,iBAAiB,OAA0B;AAClD,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,OAAO,CAAC,SAAyB,OAAO,SAAS,QAAQ;AAChG,QAAM,SAAS,aAAa,KAAK;AACjC,SAAO,WAAW,SAAY,CAAC,IAAI,CAAC,MAAM;AAC5C;AAEA,SAAS,uBACP,KACA,OAC4B;AAC5B,SAAO,UAAU,SAAY,CAAC,IAAK,EAAE,CAAC,GAAG,GAAG,MAAM;AACpD;AAEA,SAAS,4BACP,KACA,OAC8B;AAC9B,SAAO,UAAU,SAAY,CAAC,IAAK,EAAE,CAAC,GAAG,GAAG,MAAM;AACpD;AAEA,SAAS,uBACP,KACA,OAC4B;AAC5B,SAAO,UAAU,SAAY,CAAC,IAAK,EAAE,CAAC,GAAG,GAAG,MAAM;AACpD;AAEA,SAAS,uBAAuB,OAAsC;AACpE,QAAM,MAAM,aAAa,KAAK;AAC9B,SAAO,QAAQ,SAAY,SAAY,eAAe,GAAG;AAC3D;AAEA,SAAS,qBAAqB,OAAoC;AAChE,QAAM,MAAM,aAAa,KAAK;AAC9B,SAAO,QAAQ,SAAY,SAAY,OAAO,SAAS,KAAK,EAAE;AAChE;AAEA,SAAS,UAAU,MAAgB,MAAoD;AACrF,MAAI,UAAU;AACd,QAAM,WAAW,KAAK,OAAO,CAAC,UAAU;AACtC,QAAI,UAAU,KAAM,QAAO;AAC3B,cAAU;AACV,WAAO;AAAA,EACT,CAAC;AACD,SAAO,EAAE,MAAM,UAAU,QAAQ;AACnC;AAEA,eAAe,gBAAkD;AAC/D,MAAI,MAAM;AACV,mBAAiB,SAAS,QAAQ,MAAO,QAAO,OAAO,KAAK;AAC5D,MAAI,IAAI,KAAK,EAAE,WAAW,EAAG,QAAO,CAAC;AAErC,QAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E,UAAM,IAAI,MAAM,oCAAoC;AAAA,EACtD;AACA,SAAO;AACT;AAEA,SAAS,eAAe,OAAyB;AAC/C,SAAO,MACJ,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AACrC;AAEA,SAAS,eAAe,OAAiC;AACvD,MAAI,UAAU,UAAU,UAAU,gBAAgB,UAAU,MAAO,QAAO;AAC1E,QAAM,IAAI,MAAM,mDAAmD;AACrE;AAEA,SAAS,YAAY,QAAkC;AACrD,QAAM,QAAQ,OAAO,QAAQ,GAAG;AAChC,MAAI,UAAU,GAAI,OAAM,IAAI,MAAM,+BAA+B,MAAM,EAAE;AACzE,SAAO,CAAC,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,CAAC;AACvE;AAEA,eAAe,mBACb,SACkC;AAClC,SAAO,QAAQ,IAAI,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,cAAc,KAAK,CAAC,CAAC,CAAC;AAC3F;AAEA,SAAS,kBAA0B;AACjC,SAAO,QAAQ,IAAI,2BAA2B,KAAK,QAAQ,GAAG,UAAU,eAAe;AACzF;AAEA,SAAS,YAAkB;AACzB,EAAAD,aAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA6Bb;AACD;AAEA,SAASA,aAAY,MAAoB;AACvC,UAAQ,IAAI,KAAK,QAAQ,OAAO,EAAE,CAAC;AACrC;AAEA,IAAI,YAAY,QAAQ,UAAU,QAAQ,KAAK,CAAC,CAAC,IAAI;AACnD,QAAM,OAAO,MAAM,IAAI;AACvB,UAAQ,WAAW;AACrB;","names":["parseArgs","readFile","GraphQLClient","GraphQLClient","readFile","isRecord","readFile","ky","readFile","ky","schema","ky","ky","getProperties","Client","isObject","formatError","Client","commandName","writeStdout","parseArgs"]}
1
+ {"version":3,"sources":["../../src/cli/main.ts","../../src/core/cache.ts","../../src/core/coerce.ts","../../src/core/secrets.ts","../../src/graphql/execute.ts","../../src/graphql/extract.ts","../../src/core/names.ts","../../src/graphql/load.ts","../../src/openapi/load.ts","../../src/openapi/refs.ts","../../src/openapi/extract.ts","../../src/openapi/execute.ts","../../src/openapi/params.ts","../../src/mcp/extract.ts","../../src/mcp/http.ts","../../src/mcp/stdio.ts","../../src/cli/dynamic.ts","../../src/core/filter.ts","../../src/core/output.ts","../../src/cli/parse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { realpathSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { parseArgs } from 'node:util';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\nimport { coerceAndValidateValue } from '../core/coerce.js';\nimport { resolveSecret } from '../core/secrets.js';\nimport { executeGraphql } from '../graphql/execute.js';\nimport { extractGraphqlCommands } from '../graphql/extract.js';\nimport { loadGraphqlSchema } from '../graphql/load.js';\nimport { loadOpenApiSpec, type OpenApiSpec } from '../openapi/load.js';\nimport { extractOpenApiCommands } from '../openapi/extract.js';\nimport { executeOpenApi } from '../openapi/execute.js';\nimport { extractMcpCommands } from '../mcp/extract.js';\nimport { callHttpTool, listHttpTools, type McpHttpTransport } from '../mcp/http.js';\nimport { callStdioTool, listStdioTools, type McpTool } from '../mcp/stdio.js';\nimport type { CommandDef } from '../core/types.js';\nimport { runDynamicMode } from './dynamic.js';\nimport { splitAtSubcommand } from './parse.js';\n\nconst GLOBAL_OPTION_SPEC = {\n valueOptions: [\n '--spec',\n '--mcp',\n '--mcp-stdio',\n '--graphql',\n '--graphql-schema',\n '--base-url',\n '--auth-header',\n '--transport',\n '--cache-key',\n '--cache-ttl',\n '--search',\n '--include',\n '--exclude',\n '--methods',\n '--fields',\n '--selection-depth',\n '--head',\n ],\n boolOptions: ['--list', '--pretty', '--raw', '--refresh', '--stdin', '--version', '--help', '-h'],\n};\n\ntype GlobalArgs = {\n spec?: string;\n mcp?: string;\n mcpStdio?: string;\n graphql?: string;\n graphqlSchema?: string;\n baseUrl?: string;\n authHeaders: Array<[string, string]>;\n transport: McpHttpTransport;\n cacheKey?: string;\n cacheTtl: number;\n refresh: boolean;\n list: boolean;\n search?: string;\n include?: string[];\n exclude?: string[];\n methods?: string[];\n fields?: string;\n selectionDepth: number;\n stdin: boolean;\n pretty: boolean;\n raw: boolean;\n head?: number;\n help: boolean;\n version: boolean;\n};\n\nexport async function run(argv = process.argv.slice(2)): Promise<number> {\n if (argv[0] === '--') argv = argv.slice(1);\n const { globalArgv, commandArgv } = splitAtSubcommand(argv, GLOBAL_OPTION_SPEC);\n const globals = parseGlobalArgs(globalArgv);\n\n if (globals.version) {\n const pkg = await import('../../package.json', { with: { type: 'json' } });\n writeStdout(`skill-creator ${pkg.default.version}\\n`);\n return 0;\n }\n\n if (globals.help && commandArgv.length === 0) {\n printHelp();\n return 0;\n }\n\n try {\n validateSourceModes(globals);\n globals.authHeaders = await resolveAuthHeaders(globals.authHeaders);\n\n if (globals.spec !== undefined) {\n await handleOpenApiMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.mcpStdio !== undefined) {\n await handleMcpStdioMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.mcp !== undefined) {\n await handleMcpHttpMode(globals, commandArgv);\n return 0;\n }\n\n if (globals.graphql !== undefined) {\n await handleGraphqlMode(globals, commandArgv);\n return 0;\n }\n\n console.error(\n 'Error: only --spec, --mcp-stdio, --mcp, and --graphql modes are implemented in this TypeScript port so far.',\n );\n return 1;\n } catch (error) {\n console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);\n return 1;\n }\n}\n\nasync function handleOpenApiMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.spec === undefined) throw new Error('--spec is required');\n const source = globals.spec;\n\n const spec = await loadOpenApiSpec(source, {\n authHeaders: globals.authHeaders,\n cacheDir: defaultCacheDir(),\n ...(globals.cacheKey === undefined ? {} : { cacheKey: globals.cacheKey }),\n ttlSeconds: globals.cacheTtl,\n refresh: globals.refresh,\n });\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: () => extractOpenApiCommands(spec),\n renderCommands: renderOpenApiCommands,\n onEmptyCommand: () => {\n printHelp();\n throw new Error('provide a subcommand, or use --list to see available commands');\n },\n executeCommand: async (command, values) => {\n const baseUrl = determineBaseUrl(spec, source, globals.baseUrl);\n const response = await executeOpenApi(command, values, {\n baseUrl,\n authHeaders: globals.authHeaders,\n });\n\n if (!response.ok) throw new Error(`HTTP ${response.status}: ${response.text}`);\n return response.text;\n },\n });\n}\n\nasync function handleGraphqlMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.graphql === undefined) throw new Error('--graphql is required');\n const endpoint = globals.graphql;\n\n const schema = await loadGraphqlSchema(endpoint, {\n authHeaders: globals.authHeaders,\n cacheDir: defaultCacheDir(),\n ...(globals.cacheKey === undefined ? {} : { cacheKey: globals.cacheKey }),\n ttlSeconds: globals.cacheTtl,\n refresh: globals.refresh,\n ...(globals.graphqlSchema === undefined ? {} : { schemaSource: globals.graphqlSchema }),\n onWarning: (message) => console.error(message),\n });\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: () => extractGraphqlCommands(schema),\n renderCommands: renderGraphqlCommands,\n prepareCommandArgs: async (argv) => {\n const stdinFlag = stripFlag(argv, '--stdin');\n const stdinValues = globals.stdin || stdinFlag.enabled ? await readStdinJson() : {};\n return { argv: stdinFlag.argv, initialValues: stdinValues };\n },\n executeCommand: (command, values) =>\n executeGraphql(command, values, {\n endpoint,\n authHeaders: globals.authHeaders,\n ...(globals.fields === undefined ? {} : { fields: globals.fields }),\n selectionDepth: globals.selectionDepth,\n }),\n });\n}\n\nasync function handleMcpHttpMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.mcp === undefined) throw new Error('--mcp is required');\n const endpoint = globals.mcp;\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: async () => extractMcpCommands(await loadMcpHttpTools(globals)),\n renderCommands: renderMcpCommands,\n executeCommand: async (command, values) => {\n const toolArgs = collectMcpToolArgs(command, values);\n return callHttpTool(endpoint, command.toolName ?? command.name, toolArgs, {\n headers: globals.authHeaders,\n transport: globals.transport,\n });\n },\n });\n}\n\nasync function loadMcpHttpTools(globals: GlobalArgs): Promise<McpTool[]> {\n if (globals.mcp === undefined) throw new Error('--mcp is required');\n\n const cacheKey = `mcp-${\n globals.cacheKey ??\n cacheKeyFor({\n source: globals.mcp,\n authHeaders: globals.authHeaders,\n transport: globals.transport,\n })\n }`;\n const cacheDir = defaultCacheDir();\n\n if (!globals.refresh) {\n const cached = await loadCached<McpTool[]>(cacheDir, cacheKey, globals.cacheTtl);\n if (cached !== null) return cached;\n }\n\n const tools = await listHttpTools(globals.mcp, {\n headers: globals.authHeaders,\n transport: globals.transport,\n });\n await saveCache(cacheDir, cacheKey, tools);\n return tools;\n}\n\nasync function handleMcpStdioMode(globals: GlobalArgs, commandArgv: string[]): Promise<void> {\n if (globals.mcpStdio === undefined) throw new Error('--mcp-stdio is required');\n const commandLine = globals.mcpStdio;\n\n await runDynamicMode({\n globals,\n commandArgv,\n loadCommands: async () => extractMcpCommands(await listStdioTools(commandLine)),\n renderCommands: renderMcpCommands,\n executeCommand: async (command, values) => {\n const toolArgs = collectMcpToolArgs(command, values);\n return callStdioTool(commandLine, command.toolName ?? command.name, toolArgs);\n },\n });\n}\n\nfunction collectMcpToolArgs(\n command: CommandDef,\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const args: Record<string, unknown> = {};\n for (const param of command.params) {\n if (values[param.name] !== undefined) {\n args[param.originalName] = coerceAndValidateValue(\n values[param.name],\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n return args;\n}\n\nfunction parseGlobalArgs(argv: string[]): GlobalArgs {\n assertKnownValueOptionsHaveValues(argv, GLOBAL_OPTION_SPEC.valueOptions);\n\n const { values } = parseArgs({\n args: argv,\n options: {\n spec: { type: 'string' },\n mcp: { type: 'string' },\n 'mcp-stdio': { type: 'string' },\n graphql: { type: 'string' },\n 'graphql-schema': { type: 'string' },\n 'base-url': { type: 'string' },\n 'auth-header': { type: 'string', multiple: true },\n transport: { type: 'string' },\n 'cache-key': { type: 'string' },\n 'cache-ttl': { type: 'string' },\n search: { type: 'string' },\n include: { type: 'string' },\n exclude: { type: 'string' },\n methods: { type: 'string' },\n fields: { type: 'string' },\n 'selection-depth': { type: 'string' },\n head: { type: 'string' },\n list: { type: 'boolean' },\n pretty: { type: 'boolean' },\n raw: { type: 'boolean' },\n refresh: { type: 'boolean' },\n stdin: { type: 'boolean' },\n version: { type: 'boolean' },\n help: { type: 'boolean', short: 'h' },\n },\n strict: false,\n allowPositionals: false,\n });\n\n const authHeaders = stringListOption(values['auth-header']).map(parseHeader);\n const search = stringOption(values.search);\n return {\n ...optionalStringProperty('spec', stringOption(values.spec)),\n ...optionalStringProperty('mcp', stringOption(values.mcp)),\n ...optionalStringProperty('mcpStdio', stringOption(values['mcp-stdio'])),\n ...optionalStringProperty('graphql', stringOption(values.graphql)),\n ...optionalStringProperty('graphqlSchema', stringOption(values['graphql-schema'])),\n ...optionalStringProperty('baseUrl', stringOption(values['base-url'])),\n authHeaders,\n transport: parseTransport(stringOption(values.transport) ?? 'auto'),\n ...optionalStringProperty('cacheKey', stringOption(values['cache-key'])),\n cacheTtl: Number.parseInt(stringOption(values['cache-ttl']) ?? '3600', 10),\n refresh: values.refresh === true,\n list: values.list === true || search !== undefined,\n ...optionalStringProperty('search', search),\n ...optionalStringArrayProperty('include', parseOptionalCommaList(values.include)),\n ...optionalStringArrayProperty('exclude', parseOptionalCommaList(values.exclude)),\n ...optionalStringArrayProperty('methods', parseOptionalCommaList(values.methods)),\n ...optionalStringProperty('fields', stringOption(values.fields)),\n selectionDepth: Number.parseInt(stringOption(values['selection-depth']) ?? '2', 10),\n stdin: values.stdin === true,\n pretty: values.pretty === true,\n raw: values.raw === true,\n ...optionalNumberProperty('head', parseOptionalInteger(values.head)),\n help: values.help === true,\n version: values.version === true,\n };\n}\n\nfunction renderOpenApiCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No commands found.\\n';\n return `${commands\n .map((command) =>\n `${command.name.padEnd(32)} ${(command.method ?? '').toUpperCase().padEnd(6)} ${command.description ?? ''}`.trimEnd(),\n )\n .join('\\n')}\\n`;\n}\n\nfunction renderMcpCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No tools found.\\n';\n return `${commands\n .map((command) => `${command.name.padEnd(32)} ${command.description ?? ''}`.trimEnd())\n .join('\\n')}\\n`;\n}\n\nfunction renderGraphqlCommands(commands: CommandDef[]): string {\n if (commands.length === 0) return 'No GraphQL operations found.\\n';\n return `${commands\n .map((command) =>\n `${command.name.padEnd(32)} ${(command.graphqlOperationType ?? '').padEnd(8)} ${command.description ?? ''}`.trimEnd(),\n )\n .join('\\n')}\\n`;\n}\n\nfunction determineBaseUrl(spec: OpenApiSpec, source: string, override: string | undefined): string {\n if (override !== undefined) return override;\n const servers = Array.isArray(spec.servers) ? spec.servers : [];\n const firstServer = servers[0];\n const serverUrl =\n typeof firstServer === 'object' && firstServer !== null && 'url' in firstServer\n ? String((firstServer as { url: unknown }).url)\n : '';\n if (serverUrl.startsWith('http://') || serverUrl.startsWith('https://')) return serverUrl;\n if (source.startsWith('http://') || source.startsWith('https://')) {\n const origin = new URL(source).origin;\n return serverUrl ? `${origin}${serverUrl}` : origin;\n }\n throw new Error('cannot determine base URL. Use --base-url.');\n}\n\nfunction validateSourceModes(globals: GlobalArgs): void {\n const active = [globals.spec, globals.mcp, globals.mcpStdio, globals.graphql].filter(\n (value) => value !== undefined,\n ).length;\n if (active === 0) {\n printHelp();\n throw new Error('one of --spec, --mcp, --mcp-stdio, or --graphql is required.');\n }\n if (active > 1)\n throw new Error('--spec, --mcp, --mcp-stdio, and --graphql are mutually exclusive.');\n}\n\nfunction assertKnownValueOptionsHaveValues(argv: string[], options: Iterable<string>): void {\n const valueOptions = new Set(options);\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined || !token.startsWith('--')) continue;\n\n const option = token.includes('=') ? token.slice(0, token.indexOf('=')) : token;\n if (!valueOptions.has(option) || token.includes('=')) continue;\n if (argv[index + 1] === undefined) throw new Error(`missing value for ${option}`);\n }\n}\n\nfunction stringOption(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction stringListOption(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((item): item is string => typeof item === 'string');\n const single = stringOption(value);\n return single === undefined ? [] : [single];\n}\n\nfunction optionalStringProperty<K extends string>(\n key: K,\n value: string | undefined,\n): Partial<Record<K, string>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, string>);\n}\n\nfunction optionalStringArrayProperty<K extends string>(\n key: K,\n value: string[] | undefined,\n): Partial<Record<K, string[]>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, string[]>);\n}\n\nfunction optionalNumberProperty<K extends string>(\n key: K,\n value: number | undefined,\n): Partial<Record<K, number>> {\n return value === undefined ? {} : ({ [key]: value } as Record<K, number>);\n}\n\nfunction parseOptionalCommaList(value: unknown): string[] | undefined {\n const raw = stringOption(value);\n return raw === undefined ? undefined : parseCommaList(raw);\n}\n\nfunction parseOptionalInteger(value: unknown): number | undefined {\n const raw = stringOption(value);\n return raw === undefined ? undefined : Number.parseInt(raw, 10);\n}\n\nfunction stripFlag(argv: string[], flag: string): { argv: string[]; enabled: boolean } {\n let enabled = false;\n const filtered = argv.filter((token) => {\n if (token !== flag) return true;\n enabled = true;\n return false;\n });\n return { argv: filtered, enabled };\n}\n\nasync function readStdinJson(): Promise<Record<string, unknown>> {\n let raw = '';\n for await (const chunk of process.stdin) raw += String(chunk);\n if (raw.trim().length === 0) return {};\n\n const parsed = JSON.parse(raw) as unknown;\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('--stdin must contain a JSON object');\n }\n return parsed as Record<string, unknown>;\n}\n\nfunction parseCommaList(value: string): string[] {\n return value\n .split(',')\n .map((part) => part.trim())\n .filter((part) => part.length > 0);\n}\n\nfunction parseTransport(value: string): McpHttpTransport {\n if (value === 'auto' || value === 'streamable' || value === 'sse') return value;\n throw new Error('--transport must be one of: auto, streamable, sse');\n}\n\nfunction parseHeader(header: string): [string, string] {\n const colon = header.indexOf(':');\n if (colon === -1) throw new Error(`invalid auth header format: ${header}`);\n return [header.slice(0, colon).trim(), header.slice(colon + 1).trim()];\n}\n\nasync function resolveAuthHeaders(\n headers: Array<[string, string]>,\n): Promise<Array<[string, string]>> {\n return Promise.all(headers.map(async ([key, value]) => [key, await resolveSecret(value)]));\n}\n\nfunction defaultCacheDir(): string {\n return process.env.SKILL_CREATOR_CACHE_DIR ?? join(homedir(), '.cache', 'skill-creator');\n}\n\nfunction printHelp(): void {\n writeStdout(`skill-creator [global options] <subcommand> [command options]\n\nSource (mutually exclusive, one required):\n --spec URL|FILE OpenAPI spec (JSON or YAML, local or remote)\n --mcp URL MCP server URL (HTTP/SSE)\n --mcp-stdio CMD MCP server command (stdio transport)\n --graphql URL GraphQL endpoint URL\n\nOptions:\n --auth-header K:V HTTP header (repeatable)\n --transport TYPE MCP HTTP transport: auto|streamable|sse (default: auto)\n --base-url URL Override base URL from spec\n --graphql-schema SRC GraphQL SDL or introspection JSON schema FILE|URL\n --cache-key KEY Custom cache key\n --cache-ttl SECONDS Cache TTL (default: 3600)\n --refresh Bypass cache\n --list List available subcommands\n --search PATTERN Search commands by name or description\n --include GLOBS Include command globs (comma-separated)\n --exclude GLOBS Exclude command globs (comma-separated)\n --methods METHODS OpenAPI method filter, e.g. GET,POST\n --fields FIELDS Override GraphQL selection set\n --selection-depth N GraphQL default selection depth (default: 2)\n --stdin Read GraphQL variables from stdin JSON\n --pretty Pretty-print JSON output\n --raw Print raw response body\n --head N Limit output to first N array records\n --help, -h Show help\n --version Show version\n`);\n}\n\nfunction writeStdout(text: string): void {\n console.log(text.replace(/\\n$/, ''));\n}\n\nexport function isCliEntrypoint(metaUrl: string, argv1 = process.argv[1]): boolean {\n if (!argv1) return false;\n\n const modulePath = fileURLToPath(metaUrl);\n try {\n return realpathSync(argv1) === realpathSync(modulePath);\n } catch {\n return resolve(argv1) === modulePath;\n }\n}\n\nif (isCliEntrypoint(import.meta.url)) {\n const code = await run();\n process.exitCode = code;\n}\n","import { createHash } from 'node:crypto';\nimport * as cacache from 'cacache';\n\nconst CACHE_IGNORED_FIELDS = new Set([\n 'cacheTtl',\n 'cache_ttl',\n 'description',\n 'include',\n 'exclude',\n 'methods',\n]);\n\nexport function cacheKeyFor(config: Record<string, unknown>): string {\n const normalized = normalizeConfig(config);\n return createHash('sha256').update(JSON.stringify(normalized)).digest('hex').slice(0, 16);\n}\n\nexport async function loadCached<T = unknown>(\n cacheDir: string,\n key: string,\n ttlSeconds: number,\n): Promise<T | null> {\n try {\n const info = await cacache.get.info(cacheDir, key);\n if (info === null) return null;\n\n const ageSeconds = (Date.now() - info.time) / 1000;\n if (ageSeconds >= ttlSeconds) return null;\n\n const entry = await cacache.get(cacheDir, key);\n return JSON.parse(entry.data.toString('utf8')) as T;\n } catch {\n return null;\n }\n}\n\nexport async function saveCache(cacheDir: string, key: string, data: unknown): Promise<void> {\n await cacache.put(cacheDir, key, JSON.stringify(data));\n}\n\nfunction normalizeConfig(input: Record<string, unknown>): Record<string, unknown> {\n const output: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n if (CACHE_IGNORED_FIELDS.has(key)) continue;\n if (key === 'authHeaders' || key === 'auth_headers') {\n output[key] = normalizeAuthHeaders(value);\n } else {\n output[key] = value;\n }\n }\n return Object.fromEntries(Object.entries(output).sort(([a], [b]) => a.localeCompare(b)));\n}\n\nfunction normalizeAuthHeaders(value: unknown): unknown {\n if (!Array.isArray(value)) return value;\n return [...value].sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));\n}\n","import { Ajv, type ErrorObject, type ValidateFunction } from 'ajv';\nimport addFormatsPlugin from 'ajv-formats';\nimport type { CliValueType, JsonSchema } from './types.js';\n\nconst ajv = new Ajv({ allErrors: true, strict: false });\nconst addFormats = addFormatsPlugin as unknown as (instance: Ajv) => Ajv;\naddFormats(ajv);\nconst validatorCache = new WeakMap<JsonSchema, ValidateFunction>();\n\nexport function schemaTypeToCliType(schema: JsonSchema): {\n type: CliValueType;\n suffix: string;\n} {\n switch (schema.type) {\n case 'integer':\n return { type: 'integer', suffix: '' };\n case 'number':\n return { type: 'number', suffix: '' };\n case 'boolean':\n return { type: 'boolean', suffix: '' };\n case 'array':\n return { type: 'string', suffix: ' (JSON array)' };\n case 'object':\n return { type: 'string', suffix: ' (JSON object)' };\n default:\n return { type: 'string', suffix: '' };\n }\n}\n\nexport function coerceAndValidateValue(\n value: unknown,\n schema: JsonSchema = {},\n label = 'value',\n): unknown {\n const coerced = coerceValue(value, schema);\n validateValue(coerced, schema, label);\n return coerced;\n}\n\nexport function validateValue(value: unknown, schema: JsonSchema = {}, label = 'value'): void {\n if (Object.keys(schema).length === 0) return;\n\n const validate = validatorFor(schema);\n if (validate(value)) return;\n\n throw new Error(`${label} failed validation: ${formatAjvErrors(validate.errors ?? [], label)}`);\n}\n\nfunction validatorFor(schema: JsonSchema): ValidateFunction {\n const cached = validatorCache.get(schema);\n if (cached !== undefined) return cached;\n\n const validate = ajv.compile(normalizeSchema(schema));\n validatorCache.set(schema, validate);\n return validate;\n}\n\nfunction normalizeSchema(schema: JsonSchema): object {\n if (schema.nullable === true && typeof schema.type === 'string') {\n return { ...schema, type: [schema.type, 'null'] };\n }\n return schema;\n}\n\nfunction formatAjvErrors(errors: readonly ErrorObject[], label: string): string {\n return errors\n .map((error) => {\n const path = error.instancePath.length > 0 ? `${label}${error.instancePath}` : label;\n return `${path} ${error.message ?? 'is invalid'}`;\n })\n .join('; ');\n}\n\nexport function coerceValue(value: unknown, schema: JsonSchema = {}): unknown {\n if (value === null || value === undefined) return null;\n\n switch (schema.type) {\n case 'array':\n return coerceArray(value, schema.items);\n case 'object':\n return coerceObject(value);\n case 'boolean':\n return Boolean(value);\n case 'integer':\n return typeof value === 'number' ? Math.trunc(value) : Number.parseInt(String(value), 10);\n case 'number':\n return typeof value === 'number' ? value : Number.parseFloat(String(value));\n default:\n return coerceSchemaless(value);\n }\n}\n\nfunction coerceArray(value: unknown, itemSchema?: JsonSchema): unknown[] | unknown {\n if (Array.isArray(value)) return value;\n if (typeof value !== 'string') return value;\n\n try {\n const parsed: unknown = JSON.parse(value);\n if (Array.isArray(parsed)) return parsed;\n } catch {\n // Fall back to comma/single value handling below.\n }\n\n const values = value.includes(',') ? value.split(',').map((part) => part.trim()) : [value];\n return values.map((item) => coerceItem(item, itemSchema?.type));\n}\n\nfunction coerceItem(value: string, type: string | undefined): unknown {\n switch (type) {\n case 'integer':\n return Number.parseInt(value, 10);\n case 'number':\n return Number.parseFloat(value);\n case 'boolean':\n return ['true', '1', 'yes'].includes(value.toLowerCase());\n default:\n return value;\n }\n}\n\nfunction coerceObject(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n}\n\nfunction coerceSchemaless(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n const trimmed = value.trim();\n if (!trimmed || !['{', '['].includes(trimmed[0] ?? '')) return value;\n try {\n const parsed: unknown = JSON.parse(trimmed);\n return typeof parsed === 'object' && parsed !== null ? parsed : value;\n } catch {\n return value;\n }\n}\n","import { readFile } from 'node:fs/promises';\n\nexport async function resolveSecret(value: string): Promise<string> {\n if (value.startsWith('env:')) {\n const name = value.slice(4);\n const resolved = process.env[name];\n if (resolved === undefined)\n throw new Error(`environment variable ${JSON.stringify(name)} is not set`);\n return resolved;\n }\n\n if (value.startsWith('file:')) {\n const path = value.slice(5);\n try {\n return (await readFile(path, 'utf8')).replace(/\\n$/, '');\n } catch {\n throw new Error(`secret file not found: ${path}`);\n }\n }\n\n return value;\n}\n","import {\n Kind,\n OperationTypeNode,\n parse,\n print,\n type DocumentNode,\n type FieldNode,\n type GraphQLOutputType,\n type OperationDefinitionNode,\n type SelectionSetNode,\n type TypeNode,\n type VariableDefinitionNode,\n} from 'graphql';\nimport { ClientError, GraphQLClient } from 'graphql-request';\nimport { coerceAndValidateValue } from '../core/coerce.js';\nimport type { CommandDef } from '../core/types.js';\nimport { buildGraphqlSelectionSet } from './extract.js';\n\nexport type ExecuteGraphqlOptions = {\n endpoint: string;\n authHeaders?: Array<[string, string]>;\n fields?: string;\n selectionDepth?: number;\n};\n\nexport async function executeGraphql(\n command: CommandDef,\n values: Record<string, unknown>,\n options: ExecuteGraphqlOptions,\n): Promise<unknown> {\n const fieldName = command.graphqlFieldName ?? command.name;\n const variables = collectVariables(command, values);\n const query = buildGraphqlOperation(\n command,\n fieldName,\n variables,\n options.fields,\n options.selectionDepth ?? 2,\n );\n const client = new GraphQLClient(options.endpoint, {\n headers: Object.fromEntries(options.authHeaders ?? []),\n });\n\n try {\n const data = await client.request<Record<string, unknown>>(query, variables);\n if (!isRecord(data)) return data;\n return data[fieldName];\n } catch (error) {\n throw normalizeGraphqlRequestError(error);\n }\n}\n\nfunction collectVariables(\n command: CommandDef,\n values: Record<string, unknown>,\n): Record<string, unknown> {\n const variables: Record<string, unknown> = {};\n for (const param of command.params) {\n const value = values[param.name] ?? values[param.originalName];\n if (value !== undefined) {\n variables[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n return variables;\n}\n\nfunction buildGraphqlOperation(\n command: CommandDef,\n fieldName: string,\n variables: Record<string, unknown>,\n fields: string | undefined,\n selectionDepth: number,\n): string {\n const activeParams = command.params.filter(\n (param) => param.required || variables[param.originalName] !== undefined,\n );\n const variableDefinitions = activeParams.map(\n (param): VariableDefinitionNode => ({\n kind: Kind.VARIABLE_DEFINITION,\n variable: {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: param.originalName },\n },\n type: parseGraphqlType(graphqlParamType(param)),\n }),\n );\n const selectionSet = buildSelectionSetNode(command, fields, selectionDepth);\n const field: FieldNode = {\n kind: Kind.FIELD,\n name: { kind: Kind.NAME, value: fieldName },\n arguments: activeParams.map((param) => ({\n kind: Kind.ARGUMENT,\n name: { kind: Kind.NAME, value: param.originalName },\n value: {\n kind: Kind.VARIABLE,\n name: { kind: Kind.NAME, value: param.originalName },\n },\n })),\n ...(selectionSet === undefined ? {} : { selectionSet }),\n };\n const operation: OperationDefinitionNode = {\n kind: Kind.OPERATION_DEFINITION,\n operation:\n command.graphqlOperationType === 'mutation'\n ? OperationTypeNode.MUTATION\n : OperationTypeNode.QUERY,\n name: { kind: Kind.NAME, value: commandName(command) },\n ...(variableDefinitions.length === 0 ? {} : { variableDefinitions }),\n selectionSet: { kind: Kind.SELECTION_SET, selections: [field] },\n };\n const document: DocumentNode = { kind: Kind.DOCUMENT, definitions: [operation] };\n return print(document);\n}\n\nfunction buildSelectionSetNode(\n command: CommandDef,\n fields: string | undefined,\n selectionDepth: number,\n): SelectionSetNode | undefined {\n if (command.graphqlReturnType === undefined) return undefined;\n\n const selectionSet = buildGraphqlSelectionSet(\n command.graphqlReturnType as GraphQLOutputType,\n fields,\n selectionDepth,\n );\n if (selectionSet.length === 0) return undefined;\n return parseSelectionSet(selectionSet);\n}\n\nfunction parseGraphqlType(type: string): TypeNode {\n const operation = parseSingleOperation(`query __Type($value: ${type}) { __typename }`);\n const variable = operation.variableDefinitions?.[0];\n if (variable === undefined) throw new Error(`invalid GraphQL variable type: ${type}`);\n return variable.type;\n}\n\nfunction parseSelectionSet(selectionSet: string): SelectionSetNode {\n const operation = parseSingleOperation(`query __Selection { _selection ${selectionSet} }`);\n const selection = operation.selectionSet.selections[0];\n if (selection?.kind !== Kind.FIELD || selection.selectionSet === undefined) {\n throw new Error('invalid GraphQL selection set');\n }\n return selection.selectionSet;\n}\n\nfunction parseSingleOperation(source: string): OperationDefinitionNode {\n const document = parse(source);\n const definition = document.definitions[0];\n if (definition?.kind !== Kind.OPERATION_DEFINITION) {\n throw new Error('failed to build GraphQL operation');\n }\n return definition;\n}\n\nfunction graphqlParamType(param: CommandDef['params'][number]): string {\n const type = param.schema?.graphqlType;\n return typeof type === 'string' ? type : jsonSchemaToGraphqlType(param.schema?.type);\n}\n\nfunction jsonSchemaToGraphqlType(type: string | undefined): string {\n switch (type) {\n case 'integer':\n return 'Int';\n case 'number':\n return 'Float';\n case 'boolean':\n return 'Boolean';\n default:\n return 'String';\n }\n}\n\nfunction commandName(command: CommandDef): string {\n return `${command.graphqlOperationType ?? 'query'}_${command.graphqlFieldName ?? command.name}`.replace(\n /[^_0-9A-Za-z]/g,\n '_',\n );\n}\n\nfunction normalizeGraphqlRequestError(error: unknown): Error {\n if (error instanceof ClientError) {\n if (error.response.errors !== undefined && error.response.errors.length > 0) {\n return new Error(`GraphQL error: ${formatGraphqlErrors(error.response.errors)}`);\n }\n\n return new Error(\n `GraphQL HTTP ${error.response.status}: ${JSON.stringify(error.response, null, 0)}`,\n );\n }\n\n return error instanceof Error ? error : new Error(String(error));\n}\n\nfunction formatGraphqlErrors(errors: ReadonlyArray<{ message?: string }>): string {\n return errors.map((error) => error.message ?? 'unknown error').join('; ');\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import {\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n type GraphQLFieldMap,\n type GraphQLInputType,\n type GraphQLOutputType,\n type GraphQLSchema,\n type GraphQLType,\n} from 'graphql';\nimport { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef } from '../core/types.js';\n\nexport function extractGraphqlCommands(schema: GraphQLSchema): CommandDef[] {\n const commands: CommandDef[] = [];\n addRootFields(commands, schema.getQueryType()?.getFields(), 'query');\n addRootFields(commands, schema.getMutationType()?.getFields(), 'mutation');\n return commands;\n}\n\nexport function buildGraphqlSelectionSet(\n type: GraphQLOutputType,\n fields?: string,\n depth = 2,\n): string {\n if (fields !== undefined && fields.trim().length > 0) return `{ ${fields.trim()} }`;\n return buildDefaultSelectionSet(type, depth, new Set());\n}\n\nfunction addRootFields(\n commands: CommandDef[],\n fields: GraphQLFieldMap<unknown, unknown> | undefined,\n operationType: 'query' | 'mutation',\n): void {\n if (fields === undefined) return;\n\n for (const field of Object.values(fields)) {\n const description = optionalString(field.description);\n commands.push({\n name: toKebab(field.name),\n ...(description === undefined ? {} : { description }),\n params: field.args.map((arg) =>\n graphqlArgToParam(arg.name, arg.type, optionalString(arg.description)),\n ),\n graphqlOperationType: operationType,\n graphqlFieldName: field.name,\n graphqlReturnType: field.type,\n });\n }\n}\n\nfunction graphqlArgToParam(\n name: string,\n type: GraphQLInputType,\n description: string | undefined,\n): ParamDef {\n const schema = graphqlInputTypeToJsonSchema(type);\n const cliType = schemaTypeToCliType(schema).type;\n return {\n name: toKebab(name),\n originalName: name,\n type: cliType,\n required: isNonNullType(type),\n ...(description === undefined ? {} : { description }),\n location: 'graphql_arg',\n schema,\n };\n}\n\nexport function graphqlInputTypeToJsonSchema(type: GraphQLInputType): JsonSchema {\n if (isNonNullType(type)) {\n return { ...graphqlInputTypeToJsonSchema(type.ofType), graphqlType: graphqlTypeToString(type) };\n }\n\n if (isListType(type)) {\n return {\n type: 'array',\n items: graphqlInputTypeToJsonSchema(type.ofType),\n graphqlType: graphqlTypeToString(type),\n };\n }\n\n const namedType = getNamedType(type);\n const base: JsonSchema = { graphqlType: graphqlTypeToString(type) };\n\n if (isEnumType(namedType)) {\n return { ...base, type: 'string', enum: namedType.getValues().map((value) => value.name) };\n }\n\n if (isInputObjectType(namedType)) return { ...base, type: 'object' };\n\n if (isScalarType(namedType)) {\n switch (namedType.name) {\n case 'Int':\n return { ...base, type: 'integer' };\n case 'Float':\n return { ...base, type: 'number' };\n case 'Boolean':\n return { ...base, type: 'boolean' };\n default:\n return { ...base, type: 'string' };\n }\n }\n\n return { ...base, type: 'string' };\n}\n\nexport function graphqlTypeToString(type: GraphQLType): string {\n if (isNonNullType(type)) return `${graphqlTypeToString(type.ofType)}!`;\n if (isListType(type)) return `[${graphqlTypeToString(type.ofType)}]`;\n return getNamedType(type).name;\n}\n\nfunction optionalString(value: string | null | undefined): string | undefined {\n return value ?? undefined;\n}\n\nfunction buildDefaultSelectionSet(\n type: GraphQLOutputType,\n depth: number,\n seenTypes: Set<string>,\n): string {\n const namedType = getNamedType(type);\n if (isScalarType(namedType) || isEnumType(namedType)) return '';\n if (depth <= 0) return '';\n if (!isObjectType(namedType) && !isInterfaceType(namedType)) return '{ __typename }';\n if (seenTypes.has(namedType.name)) return '';\n\n const nextSeen = new Set(seenTypes);\n nextSeen.add(namedType.name);\n\n const selections = Object.values(namedType.getFields())\n .filter((field) => field.args.length === 0)\n .map((field) => {\n const fieldNamedType = getNamedType(field.type);\n if (isScalarType(fieldNamedType) || isEnumType(fieldNamedType)) return field.name;\n\n const nested = buildDefaultSelectionSet(field.type, depth - 1, nextSeen);\n return nested ? `${field.name} ${nested}` : '';\n })\n .filter((field) => field.length > 0);\n\n return selections.length === 0 ? '' : `{ ${selections.join(' ')} }`;\n}\n","export function toKebab(name: string): string {\n return name\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/_/g, '-')\n .toLowerCase();\n}\n","import { readFile } from 'node:fs/promises';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport ky from 'ky';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema } from '@graphql-tools/load';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport {\n buildClientSchema,\n buildSchema,\n getIntrospectionQuery,\n introspectionFromSchema,\n type GraphQLSchema,\n type IntrospectionQuery,\n} from 'graphql';\nimport { GraphQLClient } from 'graphql-request';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\n\nexport type LoadGraphqlOptions = {\n authHeaders?: Array<[string, string]>;\n cacheDir?: string;\n cacheKey?: string;\n ttlSeconds?: number;\n refresh?: boolean;\n schemaSource?: string;\n onWarning?: (message: string) => void;\n};\n\nexport async function loadGraphqlSchema(\n endpoint: string,\n options: LoadGraphqlOptions = {},\n): Promise<GraphQLSchema> {\n const authHeaders = options.authHeaders ?? [];\n if (options.schemaSource !== undefined) {\n return loadProvidedGraphqlSchema(options.schemaSource, authHeaders);\n }\n\n const cacheKey = `graphql-${\n options.cacheKey ?? cacheKeyFor({ endpoint, authHeaders: options.authHeaders ?? [] })\n }`;\n const ttlSeconds = options.ttlSeconds ?? 3600;\n\n if (options.cacheDir !== undefined && !options.refresh) {\n const cached = await loadCached<IntrospectionQuery>(options.cacheDir, cacheKey, ttlSeconds);\n if (cached !== null) return buildClientSchema(cached);\n }\n\n try {\n const schema = await loadRemoteGraphqlSchema(endpoint, authHeaders);\n if (options.cacheDir !== undefined) {\n await saveCache(options.cacheDir, cacheKey, introspectionFromSchema(schema));\n }\n return schema;\n } catch (error) {\n if (options.cacheDir !== undefined) {\n const stale = await loadCached<IntrospectionQuery>(\n options.cacheDir,\n cacheKey,\n Number.POSITIVE_INFINITY,\n );\n if (stale !== null) {\n options.onWarning?.(\n `Warning: using stale cached GraphQL schema because introspection failed: ${formatError(error)}`,\n );\n return buildClientSchema(stale);\n }\n }\n\n throw new Error(\n `GraphQL introspection is disabled or unavailable. Provide a schema with --graphql-schema ./schema.graphql or --graphql-schema ./introspection.json. (${formatError(error)})`,\n );\n }\n}\n\nasync function loadRemoteGraphqlSchema(\n endpoint: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n const client = new GraphQLClient(endpoint, {\n headers: Object.fromEntries(authHeaders),\n });\n const introspection = await client.request<IntrospectionQuery>(getIntrospectionQuery());\n return buildClientSchema(introspection);\n}\n\nasync function loadProvidedGraphqlSchema(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n try {\n const schema = await loadSchema(source, {\n loaders: [new UrlLoader(), new GraphQLFileLoader(), new JsonFileLoader()],\n headers: Object.fromEntries(authHeaders),\n });\n return buildClientSchema(introspectionFromSchema(schema));\n } catch {\n return loadProvidedGraphqlSchemaFallback(source, authHeaders);\n }\n}\n\nasync function loadProvidedGraphqlSchemaFallback(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<GraphQLSchema> {\n const text = await readSchemaSource(source, authHeaders);\n const trimmed = text.trim();\n\n if (trimmed.startsWith('{') || trimmed.startsWith('[')) {\n const parsed = JSON.parse(trimmed) as unknown;\n return buildClientSchema(extractIntrospection(parsed));\n }\n\n return buildSchema(text);\n}\n\nasync function readSchemaSource(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<string> {\n if (source.startsWith('http://') || source.startsWith('https://')) {\n const response = await ky.get(source, {\n headers: Object.fromEntries(authHeaders),\n throwHttpErrors: false,\n });\n if (!response.ok) throw new Error(`failed to fetch GraphQL schema: HTTP ${response.status}`);\n return response.text();\n }\n return readFile(source, 'utf8');\n}\n\nfunction extractIntrospection(value: unknown): IntrospectionQuery {\n if (!isRecord(value)) throw new Error('GraphQL schema JSON must be an object');\n\n if (isRecord(value.data)) return extractIntrospection(value.data);\n if (isRecord(value.__schema)) return value as unknown as IntrospectionQuery;\n\n throw new Error('GraphQL schema JSON must contain an introspection __schema object');\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { readFile } from 'node:fs/promises';\nimport ky from 'ky';\nimport YAML from 'yaml';\nimport { cacheKeyFor, loadCached, saveCache } from '../core/cache.js';\nimport { resolveRefs } from './refs.js';\n\nexport type LoadOpenApiOptions = {\n authHeaders?: Array<[string, string]>;\n cacheDir?: string;\n cacheKey?: string;\n ttlSeconds?: number;\n refresh?: boolean;\n};\n\nexport type OpenApiSpec = Record<string, unknown> & {\n paths: Record<string, unknown>;\n};\n\nexport async function loadOpenApiSpec(\n source: string,\n options: LoadOpenApiOptions = {},\n): Promise<OpenApiSpec> {\n const isUrl = source.startsWith('http://') || source.startsWith('https://');\n const ttlSeconds = options.ttlSeconds ?? 3600;\n const key = options.cacheKey ?? cacheKeyFor({ source, authHeaders: options.authHeaders ?? [] });\n\n if (isUrl && options.cacheDir !== undefined && !options.refresh) {\n const cached = await loadCached<OpenApiSpec>(options.cacheDir, key, ttlSeconds);\n if (cached !== null) return cached;\n }\n\n const raw = isUrl\n ? await fetchRemoteSpec(source, options.authHeaders ?? [])\n : await readFile(source, 'utf8');\n const parsed = parseSpec(raw);\n const spec = await resolveRefs(parsed);\n\n if (!isOpenApiSpec(spec)) {\n throw new Error(\"spec must contain 'paths'\");\n }\n\n if (isUrl && options.cacheDir !== undefined) {\n await saveCache(options.cacheDir, key, spec);\n }\n\n return spec;\n}\n\nasync function fetchRemoteSpec(\n source: string,\n authHeaders: Array<[string, string]>,\n): Promise<string> {\n const response = await ky.get(source, {\n headers: Object.fromEntries(authHeaders),\n throwHttpErrors: false,\n });\n if (!response.ok) throw new Error(`failed to fetch spec: HTTP ${response.status}`);\n return response.text();\n}\n\nfunction parseSpec(raw: string): unknown {\n try {\n return JSON.parse(raw) as unknown;\n } catch {\n return YAML.parse(raw) as unknown;\n }\n}\n\nfunction isOpenApiSpec(value: unknown): value is OpenApiSpec {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n 'paths' in value &&\n typeof (value as { paths?: unknown }).paths === 'object'\n );\n}\n","import $RefParser from '@apidevtools/json-schema-ref-parser';\n\nexport async function resolveRefs<T>(input: T): Promise<T> {\n return (await $RefParser.dereference(input as object, {\n mutateInputSchema: false,\n dereference: { circular: 'ignore' },\n })) as T;\n}\n","import { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef, ParamLocation } from '../core/types.js';\n\nconst HTTP_METHODS = new Set(['get', 'post', 'put', 'delete', 'patch']);\n\ntype JsonObject = Record<string, unknown>;\n\nexport function extractOpenApiCommands(spec: unknown): CommandDef[] {\n const commands: CommandDef[] = [];\n const seenNames = new Map<string, number>();\n const paths = isObject(spec) && isObject(spec.paths) ? spec.paths : {};\n\n for (const [path, methods] of Object.entries(paths)) {\n if (!isObject(methods)) continue;\n for (const [method, operation] of Object.entries(methods)) {\n if (!HTTP_METHODS.has(method) || !isObject(operation)) continue;\n\n let name =\n operation.operationId !== undefined\n ? toKebab(String(operation.operationId))\n : fallbackName(method, path);\n const seen = seenNames.get(name) ?? 0;\n seenNames.set(name, seen + 1);\n if (seen > 0) name = `${name}-${method}`;\n\n const params = extractParameters(operation);\n const body = extractRequestBodyParams(operation);\n params.push(...body.params);\n\n commands.push({\n name,\n description: String(\n operation.summary ?? operation.description ?? `${method.toUpperCase()} ${path}`,\n ),\n params,\n hasBody: body.params.length > 0,\n method,\n path,\n ...(body.contentType === undefined ? {} : { contentType: body.contentType }),\n });\n }\n }\n\n return commands;\n}\n\nfunction extractParameters(operation: JsonObject): ParamDef[] {\n const rawParams = Array.isArray(operation.parameters) ? operation.parameters : [];\n return rawParams.filter(isObject).map((param): ParamDef => {\n const schema = getSchema(param.schema);\n const { type, suffix } = schemaTypeToCliType(schema);\n const choices = Array.isArray(schema.enum) ? { choices: schema.enum } : {};\n return {\n name: toKebab(String(param.name)),\n originalName: String(param.name),\n type,\n required: Boolean(param.required),\n description: `${String(param.description ?? param.name)}${suffix}`,\n ...choices,\n location: normalizeLocation(param.in),\n schema,\n };\n });\n}\n\nfunction extractRequestBodyParams(operation: JsonObject): {\n params: ParamDef[];\n contentType?: string;\n} {\n const requestBody = isObject(operation.requestBody) ? operation.requestBody : undefined;\n const content =\n requestBody !== undefined && isObject(requestBody.content) ? requestBody.content : {};\n\n const multipartSchema = getContentSchema(content, 'multipart/form-data');\n const jsonSchema = getContentSchema(content, 'application/json');\n const multipartProps = getProperties(multipartSchema);\n const hasBinary = Object.values(multipartProps).some((schema) => schema.format === 'binary');\n\n let schema: JsonSchema = {};\n let contentType: string | undefined;\n if (hasBinary) {\n schema = multipartSchema;\n contentType = 'multipart/form-data';\n } else if (Object.keys(getProperties(jsonSchema)).length > 0) {\n schema = jsonSchema;\n } else if (Object.keys(multipartProps).length > 0) {\n schema = multipartSchema;\n contentType = 'multipart/form-data';\n }\n\n const required = new Set(Array.isArray(schema.required) ? schema.required : []);\n const properties = getProperties(schema);\n const params = Object.entries(properties).map(([propName, propSchema]): ParamDef => {\n const isBinary = contentType === 'multipart/form-data' && propSchema.format === 'binary';\n const { type, suffix } = isBinary\n ? { type: 'string' as const, suffix: ' (file path)' }\n : schemaTypeToCliType(propSchema);\n const choices = Array.isArray(propSchema.enum) ? { choices: propSchema.enum } : {};\n return {\n name: toKebab(propName),\n originalName: propName,\n type,\n required: required.has(propName),\n description: `${String(propSchema.description ?? propName)}${suffix}`,\n ...choices,\n location: isBinary ? 'file' : 'body',\n schema: propSchema,\n };\n });\n\n return contentType === undefined ? { params } : { params, contentType };\n}\n\nfunction getContentSchema(content: JsonObject, contentType: string): JsonSchema {\n const item = content[contentType];\n return isObject(item) ? getSchema(item.schema) : {};\n}\n\nfunction getProperties(schema: JsonSchema): Record<string, JsonSchema> {\n return isObject(schema.properties)\n ? Object.fromEntries(\n Object.entries(schema.properties).filter((entry): entry is [string, JsonSchema] =>\n isObject(entry[1]),\n ),\n )\n : {};\n}\n\nfunction getSchema(value: unknown): JsonSchema {\n return isObject(value) ? (value as JsonSchema) : {};\n}\n\nfunction normalizeLocation(value: unknown): ParamLocation {\n return value === 'path' || value === 'header' || value === 'body' || value === 'file'\n ? value\n : 'query';\n}\n\nfunction fallbackName(method: string, path: string): string {\n const slug = path\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/[{}]/g, '')\n .replace(/\\//g, '-');\n return slug ? `${method}-${slug}` : method;\n}\n\nfunction isObject(value: unknown): value is JsonObject {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import ky from 'ky';\nimport { collectOpenApiParams } from './params.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type ExecuteOpenApiOptions = {\n baseUrl: string;\n authHeaders?: Array<[string, string]>;\n stdinBody?: unknown;\n};\n\nexport async function executeOpenApi(\n command: CommandDef,\n values: Record<string, unknown>,\n options: ExecuteOpenApiOptions,\n): Promise<{ status: number; ok: boolean; text: string; contentType: string }> {\n const collected = collectOpenApiParams(command, values, {\n stdinBody: options.stdinBody,\n });\n const url = buildUrl(options.baseUrl, collected.path, collected.queryParams);\n const method = (command.method ?? 'get').toUpperCase();\n const headers: Record<string, string> = {\n ...Object.fromEntries(options.authHeaders ?? []),\n ...collected.headers,\n };\n\n const body =\n method !== 'GET' && collected.body !== null ? JSON.stringify(collected.body) : undefined;\n if (body !== undefined) headers['Content-Type'] ??= 'application/json';\n\n const response = await ky(url, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n throwHttpErrors: false,\n });\n return {\n status: response.status,\n ok: response.ok,\n text: await response.text(),\n contentType: response.headers.get('content-type') ?? '',\n };\n}\n\nfunction buildUrl(baseUrl: string, path: string, queryParams: Record<string, unknown>): string {\n const url = new URL(`${baseUrl.replace(/\\/$/, '')}${path}`);\n for (const [key, value] of Object.entries(queryParams)) {\n if (value === undefined || value === null) continue;\n if (Array.isArray(value)) {\n for (const item of value) url.searchParams.append(key, String(item));\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n return url.toString();\n}\n","import { coerceAndValidateValue } from '../core/coerce.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type CollectedOpenApiParams = {\n path: string;\n queryParams: Record<string, unknown>;\n headers: Record<string, string>;\n body: Record<string, unknown> | unknown[] | string | number | boolean | null;\n files: Record<string, unknown> | null;\n};\n\nexport type CollectOpenApiOptions = {\n stdinBody?: unknown;\n};\n\nexport function collectOpenApiParams(\n command: CommandDef,\n values: Record<string, unknown>,\n options: CollectOpenApiOptions = {},\n): CollectedOpenApiParams {\n let path = command.path ?? '';\n const queryParams: Record<string, unknown> = {};\n const headers: Record<string, string> = {};\n let body: CollectedOpenApiParams['body'] = null;\n const files: Record<string, unknown> | null = null;\n\n for (const param of command.params) {\n if (param.location !== 'path') continue;\n const value = values[param.name];\n if (value !== undefined && value !== null) {\n path = path.replace(`{${param.originalName}}`, encodeURIComponent(String(value)));\n }\n }\n\n for (const param of command.params) {\n const value = values[param.name];\n if (value === undefined || value === null) continue;\n\n if (param.location === 'query') {\n queryParams[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n } else if (param.location === 'header') {\n headers[param.originalName] = String(value);\n }\n }\n\n const method = command.method?.toLowerCase() ?? 'get';\n if (method !== 'get') {\n if (options.stdinBody !== undefined) {\n body = options.stdinBody as CollectedOpenApiParams['body'];\n } else {\n const collectedBody: Record<string, unknown> = {};\n for (const param of command.params) {\n if (param.location !== 'body') continue;\n const value = values[param.name];\n if (value !== undefined && value !== null) {\n collectedBody[param.originalName] = coerceAndValidateValue(\n value,\n param.schema ?? {},\n `--${param.name}`,\n );\n }\n }\n body = Object.keys(collectedBody).length > 0 ? collectedBody : null;\n }\n }\n\n return { path, queryParams, headers, body, files };\n}\n","import { schemaTypeToCliType } from '../core/coerce.js';\nimport { toKebab } from '../core/names.js';\nimport type { CommandDef, JsonSchema, ParamDef } from '../core/types.js';\n\ntype McpToolLike = {\n name: string;\n description?: string;\n inputSchema?: unknown;\n};\n\nexport function extractMcpCommands(tools: McpToolLike[]): CommandDef[] {\n return tools.map((tool): CommandDef => {\n const schema = isJsonSchema(tool.inputSchema) ? tool.inputSchema : {};\n const required = new Set(Array.isArray(schema.required) ? schema.required : []);\n const properties = getProperties(schema);\n const params = Object.entries(properties).map(([name, propSchema]): ParamDef => {\n const { type, suffix } = schemaTypeToCliType(propSchema);\n const choices = Array.isArray(propSchema.enum) ? { choices: propSchema.enum } : {};\n return {\n name: toKebab(name),\n originalName: name,\n type,\n required: required.has(name),\n description: `${String(propSchema.description ?? name)}${suffix}`,\n ...choices,\n location: 'tool_input',\n schema: propSchema,\n };\n });\n\n return {\n name: toKebab(tool.name),\n description: tool.description ?? '',\n params,\n hasBody: params.length > 0,\n toolName: tool.name,\n };\n });\n}\n\nfunction getProperties(schema: JsonSchema): Record<string, JsonSchema> {\n const properties = schema.properties;\n if (typeof properties !== 'object' || properties === null || Array.isArray(properties)) return {};\n return Object.fromEntries(\n Object.entries(properties).filter((entry): entry is [string, JsonSchema] =>\n isJsonSchema(entry[1]),\n ),\n );\n}\n\nfunction isJsonSchema(value: unknown): value is JsonSchema {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { extractMcpContent, type McpTool } from './stdio.js';\n\nexport type McpHttpTransport = 'auto' | 'streamable' | 'sse';\n\nexport type McpHttpOptions = {\n headers?: Array<[string, string]>;\n transport?: McpHttpTransport;\n};\n\nexport async function listHttpTools(\n url: string,\n optionsOrHeaders: McpHttpOptions | Array<[string, string]> = {},\n): Promise<McpTool[]> {\n const options = normalizeOptions(optionsOrHeaders);\n return withHttpClient(url, options, async (client) => {\n const result = await client.listTools();\n return result.tools.map((tool) => ({\n name: tool.name,\n ...(tool.description === undefined ? {} : { description: tool.description }),\n inputSchema: tool.inputSchema,\n }));\n });\n}\n\nexport async function callHttpTool(\n url: string,\n toolName: string,\n args: Record<string, unknown>,\n optionsOrHeaders: McpHttpOptions | Array<[string, string]> = {},\n): Promise<unknown> {\n const options = normalizeOptions(optionsOrHeaders);\n return withHttpClient(url, options, async (client) => {\n const result = await client.callTool({ name: toolName, arguments: args });\n return extractMcpContent(result.content);\n });\n}\n\nasync function withHttpClient<T>(\n url: string,\n options: Required<McpHttpOptions>,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n if (options.transport === 'auto') {\n try {\n return await withSingleHttpClient(url, { ...options, transport: 'streamable' }, fn);\n } catch (streamableError) {\n try {\n return await withSingleHttpClient(url, { ...options, transport: 'sse' }, fn);\n } catch (sseError) {\n throw new Error(\n `failed to connect using streamable HTTP or SSE (${formatError(streamableError)}; ${formatError(sseError)})`,\n );\n }\n }\n }\n\n return withSingleHttpClient(url, options, fn);\n}\n\nasync function withSingleHttpClient<T>(\n url: string,\n options: Required<McpHttpOptions>,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n const client = new Client({ name: 'skill-creator', version: '0.1.0' });\n const transport = createTransport(url, options);\n\n await client.connect(transport);\n try {\n return await fn(client);\n } finally {\n await client.close();\n }\n}\n\nfunction createTransport(url: string, options: Required<McpHttpOptions>): Transport {\n const headers = Object.fromEntries(options.headers);\n if (options.transport === 'sse') {\n const fetchWithHeaders: typeof fetch = (input, init) =>\n fetch(input, { ...init, headers: { ...headers, ...headersToObject(init?.headers) } });\n return new SSEClientTransport(new URL(url), {\n eventSourceInit: { fetch: fetchWithHeaders },\n requestInit: { headers },\n }) as unknown as Transport;\n }\n\n return new StreamableHTTPClientTransport(new URL(url), {\n requestInit: { headers },\n }) as unknown as Transport;\n}\n\nfunction normalizeOptions(\n optionsOrHeaders: McpHttpOptions | Array<[string, string]>,\n): Required<McpHttpOptions> {\n if (Array.isArray(optionsOrHeaders)) {\n return { headers: optionsOrHeaders, transport: 'auto' };\n }\n return {\n headers: optionsOrHeaders.headers ?? [],\n transport: optionsOrHeaders.transport ?? 'auto',\n };\n}\n\nfunction headersToObject(headers: HeadersInit | undefined): Record<string, string> {\n if (headers === undefined) return {};\n return Object.fromEntries(new Headers(headers).entries());\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';\nimport stringArgv from 'string-argv';\n\nexport type McpTool = {\n name: string;\n description?: string;\n inputSchema?: unknown;\n};\n\nexport async function listStdioTools(commandLine: string): Promise<McpTool[]> {\n return withStdioClient(commandLine, async (client) => {\n const result = await client.listTools();\n return result.tools.map((tool) => ({\n name: tool.name,\n ...(tool.description === undefined ? {} : { description: tool.description }),\n inputSchema: tool.inputSchema,\n }));\n });\n}\n\nexport async function callStdioTool(\n commandLine: string,\n toolName: string,\n args: Record<string, unknown>,\n): Promise<unknown> {\n return withStdioClient(commandLine, async (client) => {\n const result = await client.callTool({ name: toolName, arguments: args });\n return extractMcpContent(result.content);\n });\n}\n\nasync function withStdioClient<T>(\n commandLine: string,\n fn: (client: Client) => Promise<T>,\n): Promise<T> {\n const [command, ...args] = splitCommandLine(commandLine);\n if (command === undefined) throw new Error('--mcp-stdio command cannot be empty');\n\n const client = new Client({ name: 'skill-creator', version: '0.1.0' });\n const transport = new StdioClientTransport({ command, args, stderr: 'pipe' });\n\n await client.connect(transport);\n try {\n return await fn(client);\n } finally {\n await client.close();\n }\n}\n\nexport function splitCommandLine(commandLine: string): string[] {\n return stringArgv(commandLine);\n}\n\ntype ContentPart = Record<string, unknown>;\n\nexport function extractMcpContent(content: unknown): unknown {\n if (!Array.isArray(content)) return content;\n\n const parts = content\n .map((part) => extractContentPart(part))\n .filter((part) => part !== undefined);\n if (parts.length === 0) return '';\n if (parts.every((part) => typeof part === 'string')) return parts.join('\\n');\n return parts;\n}\n\nfunction extractContentPart(part: unknown): unknown {\n if (!isObject(part)) return undefined;\n if (part.type === 'text' && typeof part.text === 'string') return part.text;\n if (typeof part.data === 'string') return part.data;\n\n if (part.type === 'resource' && isObject(part.resource)) {\n if (typeof part.resource.text === 'string') return part.resource.text;\n if (typeof part.resource.blob === 'string') return part.resource.blob;\n }\n\n return part;\n}\n\nfunction isObject(value: unknown): value is ContentPart {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n","import { parseArgs, type ParseArgsConfig } from 'node:util';\nimport { filterCommands } from '../core/filter.js';\nimport { formatOutput } from '../core/output.js';\nimport type { CommandDef } from '../core/types.js';\n\nexport type DynamicModeGlobals = {\n include?: string[];\n exclude?: string[];\n methods?: string[];\n list: boolean;\n search?: string;\n pretty: boolean;\n raw: boolean;\n head?: number;\n};\n\nexport type PreparedCommandArgs = {\n argv: string[];\n initialValues?: Record<string, unknown>;\n};\n\nexport type RunDynamicModeOptions = {\n globals: DynamicModeGlobals;\n commandArgv: string[];\n loadCommands: () => Promise<CommandDef[]> | CommandDef[];\n renderCommands: (commands: CommandDef[]) => string;\n executeCommand: (\n command: CommandDef,\n values: Record<string, unknown>,\n argv: string[],\n ) => Promise<unknown> | unknown;\n prepareCommandArgs?: (argv: string[]) => Promise<PreparedCommandArgs> | PreparedCommandArgs;\n onEmptyCommand?: (commands: CommandDef[]) => Promise<void> | void;\n};\n\nexport async function runDynamicMode(options: RunDynamicModeOptions): Promise<void> {\n let commands = filterCommands(await options.loadCommands(), options.globals);\n\n if (options.globals.search !== undefined) {\n commands = searchCommands(commands, options.globals.search);\n }\n\n if (options.globals.list || options.globals.search !== undefined) {\n writeStdout(options.renderCommands(commands));\n return;\n }\n\n if (options.commandArgv.length === 0) {\n if (options.onEmptyCommand !== undefined) {\n await options.onEmptyCommand(commands);\n return;\n }\n\n writeStdout(options.renderCommands(commands));\n return;\n }\n\n const commandName = options.commandArgv[0];\n if (commandName === undefined) throw new Error('missing subcommand');\n\n const command = commands.find((candidate) => candidate.name === commandName);\n if (command === undefined) throw new Error(`unknown subcommand: ${commandName}`);\n\n if (options.commandArgv.includes('--help') || options.commandArgv.includes('-h')) {\n writeStdout(renderCommandHelp(command));\n return;\n }\n\n const prepared = await prepareCommandArgs(options, options.commandArgv.slice(1));\n const values = parseCommandValues(command, prepared.argv, prepared.initialValues ?? {});\n const result = await options.executeCommand(command, values, prepared.argv);\n writeFormattedOutput(result, options.globals);\n}\n\nfunction searchCommands(commands: CommandDef[], search: string): CommandDef[] {\n const pattern = search.toLowerCase();\n return commands.filter(\n (command) =>\n command.name.toLowerCase().includes(pattern) ||\n (command.description ?? '').toLowerCase().includes(pattern),\n );\n}\n\nasync function prepareCommandArgs(\n options: RunDynamicModeOptions,\n argv: string[],\n): Promise<PreparedCommandArgs> {\n return options.prepareCommandArgs === undefined\n ? { argv }\n : await options.prepareCommandArgs(argv);\n}\n\nexport function parseCommandValues(\n command: CommandDef,\n argv: string[],\n initialValues: Record<string, unknown> = {},\n): Record<string, unknown> {\n const values: Record<string, unknown> = { ...initialValues };\n const params = new Map(command.params.map((param) => [param.name, param]));\n validateCommandOptions(command, argv, params);\n\n const { values: parsedValues } = parseArgs({\n args: normalizeStringOptionValues(argv, stringParamNames(command)),\n options: commandOptionSpec(command),\n strict: true,\n allowPositionals: true,\n });\n\n for (const param of command.params) {\n const value = parsedValues[param.name];\n if (value !== undefined) values[param.name] = value;\n }\n\n for (const param of command.params) {\n if (\n param.required &&\n values[param.name] === undefined &&\n values[param.originalName] === undefined &&\n param.location !== 'body'\n ) {\n throw new Error(`missing required option --${param.name}`);\n }\n }\n\n return values;\n}\n\nfunction validateCommandOptions(\n command: CommandDef,\n argv: string[],\n params: Map<string, CommandDef['params'][number]>,\n): void {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === undefined || !token.startsWith('--')) continue;\n\n const rawFlag = token.slice(2);\n const flag = rawFlag.includes('=') ? rawFlag.slice(0, rawFlag.indexOf('=')) : rawFlag;\n const param = params.get(flag);\n if (param === undefined) throw new Error(`unknown option for ${command.name}: --${flag}`);\n if (param.type !== 'boolean' && !rawFlag.includes('=') && argv[index + 1] === undefined) {\n throw new Error(`missing value for --${flag}`);\n }\n }\n}\n\nfunction commandOptionSpec(command: CommandDef): NonNullable<ParseArgsConfig['options']> {\n return Object.fromEntries(\n command.params.map((param) => [\n param.name,\n { type: param.type === 'boolean' ? 'boolean' : 'string' },\n ]),\n ) as NonNullable<ParseArgsConfig['options']>;\n}\n\nfunction stringParamNames(command: CommandDef): Set<string> {\n return new Set(\n command.params.filter((param) => param.type !== 'boolean').map((param) => param.name),\n );\n}\n\nfunction normalizeStringOptionValues(argv: string[], optionNames: Set<string>): string[] {\n const result: string[] = [];\n\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n const next = argv[index + 1];\n if (\n token !== undefined &&\n next !== undefined &&\n token.startsWith('--') &&\n !token.includes('=') &&\n optionNames.has(token.slice(2)) &&\n next.startsWith('-')\n ) {\n result.push(`${token}=${next}`);\n index += 1;\n } else if (token !== undefined) {\n result.push(token);\n }\n }\n\n return result;\n}\n\nfunction renderCommandHelp(command: CommandDef): string {\n const lines = [`${command.name}: ${command.description ?? ''}`, '', 'Options:'];\n for (const param of command.params) {\n const required = param.required ? ' (required)' : '';\n lines.push(\n ` --${param.name.padEnd(24)} ${param.description ?? param.originalName}${required}`,\n );\n }\n return `${lines.join('\\n')}\\n`;\n}\n\nfunction writeFormattedOutput(data: unknown, globals: DynamicModeGlobals): void {\n const output = formatOutput(data, {\n pretty: globals.pretty,\n raw: globals.raw,\n ...(globals.head === undefined ? {} : { head: globals.head }),\n });\n if (output.stderr) console.error(output.stderr.replace(/\\n$/, ''));\n writeStdout(output.stdout);\n}\n\nfunction writeStdout(text: string): void {\n console.log(text.replace(/\\n$/, ''));\n}\n","import { minimatch } from 'minimatch';\nimport type { CommandDef } from './types.js';\n\nexport type CommandFilters = {\n include?: string[];\n exclude?: string[];\n methods?: string[];\n};\n\nexport function filterCommands(commands: CommandDef[], filters: CommandFilters = {}): CommandDef[] {\n let result = commands;\n\n if (filters.methods?.length) {\n const allowed = new Set(filters.methods.map((method) => method.toUpperCase()));\n result = result.filter(\n (command) => command.method === undefined || allowed.has(command.method.toUpperCase()),\n );\n }\n\n if (filters.include?.length) {\n result = result.filter(\n (command) => filters.include?.some((pattern) => minimatch(command.name, pattern)) ?? false,\n );\n }\n\n if (filters.exclude?.length) {\n result = result.filter(\n (command) => !(filters.exclude?.some((pattern) => minimatch(command.name, pattern)) ?? false),\n );\n }\n\n return result;\n}\n","export type OutputOptions = {\n pretty?: boolean;\n raw?: boolean;\n head?: number;\n toon?: boolean;\n};\n\nexport type FormattedOutput = {\n stdout: string;\n stderr: string;\n};\n\nexport function applyHead<T>(data: T, n: number): T {\n if (Array.isArray(data)) return data.slice(0, n) as T;\n return data;\n}\n\nexport function formatOutput(data: unknown, options: OutputOptions = {}): FormattedOutput {\n if (options.raw) {\n return {\n stdout: `${typeof data === 'string' ? data : JSON.stringify(data)}\\n`,\n stderr: '',\n };\n }\n\n let value = parseJsonStringIfPossible(data);\n if (options.head !== undefined) value = applyHead(value, options.head);\n\n if (typeof value === 'string') {\n return { stdout: `${value}\\n`, stderr: '' };\n }\n\n return {\n stdout: `${JSON.stringify(value, null, options.pretty ? 2 : 0)}\\n`,\n stderr: '',\n };\n}\n\nfunction parseJsonStringIfPossible(data: unknown): unknown {\n if (typeof data !== 'string') return data;\n try {\n return JSON.parse(data) as unknown;\n } catch {\n return data;\n }\n}\n","export type OptionSpec = {\n valueOptions: Iterable<string>;\n boolOptions: Iterable<string>;\n};\n\nexport type ArgvSplit = {\n globalArgv: string[];\n commandArgv: string[];\n};\n\nexport function splitAtSubcommand(argv: string[], spec: OptionSpec): ArgvSplit {\n const valueOptions = new Set(spec.valueOptions);\n const boolOptions = new Set(spec.boolOptions);\n\n let index = 0;\n while (index < argv.length) {\n const arg = argv[index];\n if (arg === undefined) break;\n\n if (arg === '--') {\n return {\n globalArgv: argv.slice(0, index),\n commandArgv: argv.slice(index + 1),\n };\n }\n\n if (arg.startsWith('-')) {\n const optionName =\n arg.startsWith('--') && arg.includes('=') ? arg.slice(0, arg.indexOf('=')) : arg;\n if (arg.startsWith('--') && arg.includes('=')) {\n index += 1;\n } else if (valueOptions.has(optionName)) {\n index += 2;\n } else if (boolOptions.has(optionName)) {\n index += 1;\n } else {\n index += 1;\n }\n continue;\n }\n\n return {\n globalArgv: argv.slice(0, index),\n commandArgv: argv.slice(index),\n };\n }\n\n return { globalArgv: argv, commandArgv: [] };\n}\n"],"mappings":"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","names":["parseArgs","readFile","GraphQLClient","GraphQLClient","readFile","isRecord","readFile","ky","readFile","ky","schema","ky","ky","getProperties","Client","isObject","formatError","Client","commandName","writeStdout","parseArgs"]}
@@ -1,7 +1,7 @@
1
1
  // package.json
2
2
  var package_default = {
3
3
  name: "@asnd/skill-creator",
4
- version: "0.1.0",
4
+ version: "0.1.1",
5
5
  description: "Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI at runtime.",
6
6
  keywords: [
7
7
  "graphql",
@@ -20,8 +20,8 @@ var package_default = {
20
20
  url: "git+https://github.com/sandiiarov/skill-creator.git"
21
21
  },
22
22
  bin: {
23
- sc: "./dist/cli/main.js",
24
- "skill-creator": "./dist/cli/main.js"
23
+ sc: "dist/cli/main.js",
24
+ "skill-creator": "dist/cli/main.js"
25
25
  },
26
26
  files: [
27
27
  "dist",
@@ -87,4 +87,4 @@ var package_default = {
87
87
  export {
88
88
  package_default as default
89
89
  };
90
- //# sourceMappingURL=package-4Q4VX3O2.js.map
90
+ //# sourceMappingURL=package-4N3JKWJZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../package.json"],"sourcesContent":["{\n \"name\": \"@asnd/skill-creator\",\n \"version\": \"0.1.1\",\n \"description\": \"Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI at runtime.\",\n \"keywords\": [\n \"graphql\",\n \"mcp\",\n \"openapi\",\n \"pi-package\",\n \"skills\"\n ],\n \"homepage\": \"https://github.com/sandiiarov/skill-creator#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/sandiiarov/skill-creator/issues\"\n },\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/sandiiarov/skill-creator.git\"\n },\n \"bin\": {\n \"sc\": \"dist/cli/main.js\",\n \"skill-creator\": \"dist/cli/main.js\"\n },\n \"files\": [\n \"dist\",\n \"skills\",\n \"prompts\",\n \"LICENSE\",\n \"README.md\"\n ],\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsx src/cli/main.ts\",\n \"fmt\": \"oxfmt\",\n \"fmt:check\": \"oxfmt --check\",\n \"lint\": \"oxlint\",\n \"lint:fix\": \"oxlint --fix\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@apidevtools/json-schema-ref-parser\": \"^14.2.1\",\n \"@graphql-tools/graphql-file-loader\": \"^8.1.14\",\n \"@graphql-tools/json-file-loader\": \"^8.0.28\",\n \"@graphql-tools/load\": \"^8.1.10\",\n \"@graphql-tools/url-loader\": \"^9.1.2\",\n \"@modelcontextprotocol/sdk\": \"^1.23.0\",\n \"ajv\": \"^8.20.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"cacache\": \"^21.0.0\",\n \"graphql\": \"^16.14.0\",\n \"graphql-request\": \"^7.4.0\",\n \"ky\": \"^2.0.2\",\n \"minimatch\": \"^10.1.1\",\n \"string-argv\": \"^0.3.2\",\n \"yaml\": \"^2.8.1\",\n \"zod\": \"^4.1.13\"\n },\n \"devDependencies\": {\n \"@types/cacache\": \"^20.0.1\",\n \"@types/node\": \"^24.10.1\",\n \"execa\": \"^9.6.0\",\n \"oxfmt\": \"^0.51.0\",\n \"oxlint\": \"^1.66.0\",\n \"tsup\": \"^8.5.1\",\n \"tsx\": \"^4.20.6\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.14\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"packageManager\": \"pnpm@10.1.0\",\n \"pi\": {\n \"skills\": [\n \"./skills\"\n ],\n \"prompts\": [\n \"./prompts\"\n ]\n }\n}\n"],"mappings":";AAAA;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,aAAe;AAAA,EACf,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAY;AAAA,EACZ,MAAQ;AAAA,IACN,KAAO;AAAA,EACT;AAAA,EACA,SAAW;AAAA,EACX,YAAc;AAAA,IACZ,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,KAAO;AAAA,IACL,IAAM;AAAA,IACN,iBAAiB;AAAA,EACnB;AAAA,EACA,OAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,EACR,SAAW;AAAA,IACT,OAAS;AAAA,IACT,KAAO;AAAA,IACP,KAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAQ;AAAA,IACR,YAAY;AAAA,IACZ,MAAQ;AAAA,IACR,cAAc;AAAA,IACd,WAAa;AAAA,EACf;AAAA,EACA,cAAgB;AAAA,IACd,uCAAuC;AAAA,IACvC,sCAAsC;AAAA,IACtC,mCAAmC;AAAA,IACnC,uBAAuB;AAAA,IACvB,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,IAC7B,KAAO;AAAA,IACP,eAAe;AAAA,IACf,SAAW;AAAA,IACX,SAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,IAAM;AAAA,IACN,WAAa;AAAA,IACb,eAAe;AAAA,IACf,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,iBAAmB;AAAA,IACjB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,OAAS;AAAA,IACT,OAAS;AAAA,IACT,QAAU;AAAA,IACV,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,YAAc;AAAA,IACd,QAAU;AAAA,EACZ;AAAA,EACA,SAAW;AAAA,IACT,MAAQ;AAAA,EACV;AAAA,EACA,gBAAkB;AAAA,EAClB,IAAM;AAAA,IACJ,QAAU;AAAA,MACR;AAAA,IACF;AAAA,IACA,SAAW;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asnd/skill-creator",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI at runtime.",
5
5
  "keywords": [
6
6
  "graphql",
@@ -19,8 +19,8 @@
19
19
  "url": "git+https://github.com/sandiiarov/skill-creator.git"
20
20
  },
21
21
  "bin": {
22
- "sc": "./dist/cli/main.js",
23
- "skill-creator": "./dist/cli/main.js"
22
+ "sc": "dist/cli/main.js",
23
+ "skill-creator": "dist/cli/main.js"
24
24
  },
25
25
  "files": [
26
26
  "dist",
@@ -30,6 +30,17 @@
30
30
  "README.md"
31
31
  ],
32
32
  "type": "module",
33
+ "scripts": {
34
+ "build": "tsup",
35
+ "dev": "tsx src/cli/main.ts",
36
+ "fmt": "oxfmt",
37
+ "fmt:check": "oxfmt --check",
38
+ "lint": "oxlint",
39
+ "lint:fix": "oxlint --fix",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "typecheck": "tsc --noEmit"
43
+ },
33
44
  "dependencies": {
34
45
  "@apidevtools/json-schema-ref-parser": "^14.2.1",
35
46
  "@graphql-tools/graphql-file-loader": "^8.1.14",
@@ -62,6 +73,7 @@
62
73
  "engines": {
63
74
  "node": ">=20"
64
75
  },
76
+ "packageManager": "pnpm@10.1.0",
65
77
  "pi": {
66
78
  "skills": [
67
79
  "./skills"
@@ -69,16 +81,5 @@
69
81
  "prompts": [
70
82
  "./prompts"
71
83
  ]
72
- },
73
- "scripts": {
74
- "build": "tsup",
75
- "dev": "tsx src/cli/main.ts",
76
- "fmt": "oxfmt",
77
- "fmt:check": "oxfmt --check",
78
- "lint": "oxlint",
79
- "lint:fix": "oxlint --fix",
80
- "test": "vitest run",
81
- "test:watch": "vitest",
82
- "typecheck": "tsc --noEmit"
83
84
  }
84
- }
85
+ }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../package.json"],"sourcesContent":["{\n \"name\": \"@asnd/skill-creator\",\n \"version\": \"0.1.0\",\n \"description\": \"Turn any MCP server, OpenAPI spec, or GraphQL endpoint into a CLI at runtime.\",\n \"keywords\": [\n \"graphql\",\n \"mcp\",\n \"openapi\",\n \"pi-package\",\n \"skills\"\n ],\n \"homepage\": \"https://github.com/sandiiarov/skill-creator#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/sandiiarov/skill-creator/issues\"\n },\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/sandiiarov/skill-creator.git\"\n },\n \"bin\": {\n \"sc\": \"./dist/cli/main.js\",\n \"skill-creator\": \"./dist/cli/main.js\"\n },\n \"files\": [\n \"dist\",\n \"skills\",\n \"prompts\",\n \"LICENSE\",\n \"README.md\"\n ],\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsx src/cli/main.ts\",\n \"fmt\": \"oxfmt\",\n \"fmt:check\": \"oxfmt --check\",\n \"lint\": \"oxlint\",\n \"lint:fix\": \"oxlint --fix\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@apidevtools/json-schema-ref-parser\": \"^14.2.1\",\n \"@graphql-tools/graphql-file-loader\": \"^8.1.14\",\n \"@graphql-tools/json-file-loader\": \"^8.0.28\",\n \"@graphql-tools/load\": \"^8.1.10\",\n \"@graphql-tools/url-loader\": \"^9.1.2\",\n \"@modelcontextprotocol/sdk\": \"^1.23.0\",\n \"ajv\": \"^8.20.0\",\n \"ajv-formats\": \"^3.0.1\",\n \"cacache\": \"^21.0.0\",\n \"graphql\": \"^16.14.0\",\n \"graphql-request\": \"^7.4.0\",\n \"ky\": \"^2.0.2\",\n \"minimatch\": \"^10.1.1\",\n \"string-argv\": \"^0.3.2\",\n \"yaml\": \"^2.8.1\",\n \"zod\": \"^4.1.13\"\n },\n \"devDependencies\": {\n \"@types/cacache\": \"^20.0.1\",\n \"@types/node\": \"^24.10.1\",\n \"execa\": \"^9.6.0\",\n \"oxfmt\": \"^0.51.0\",\n \"oxlint\": \"^1.66.0\",\n \"tsup\": \"^8.5.1\",\n \"tsx\": \"^4.20.6\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.14\"\n },\n \"engines\": {\n \"node\": \">=20\"\n },\n \"packageManager\": \"pnpm@10.1.0\",\n \"pi\": {\n \"skills\": [\n \"./skills\"\n ],\n \"prompts\": [\n \"./prompts\"\n ]\n }\n}\n"],"mappings":";AAAA;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,aAAe;AAAA,EACf,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAY;AAAA,EACZ,MAAQ;AAAA,IACN,KAAO;AAAA,EACT;AAAA,EACA,SAAW;AAAA,EACX,YAAc;AAAA,IACZ,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,KAAO;AAAA,IACL,IAAM;AAAA,IACN,iBAAiB;AAAA,EACnB;AAAA,EACA,OAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,EACR,SAAW;AAAA,IACT,OAAS;AAAA,IACT,KAAO;AAAA,IACP,KAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAQ;AAAA,IACR,YAAY;AAAA,IACZ,MAAQ;AAAA,IACR,cAAc;AAAA,IACd,WAAa;AAAA,EACf;AAAA,EACA,cAAgB;AAAA,IACd,uCAAuC;AAAA,IACvC,sCAAsC;AAAA,IACtC,mCAAmC;AAAA,IACnC,uBAAuB;AAAA,IACvB,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,IAC7B,KAAO;AAAA,IACP,eAAe;AAAA,IACf,SAAW;AAAA,IACX,SAAW;AAAA,IACX,mBAAmB;AAAA,IACnB,IAAM;AAAA,IACN,WAAa;AAAA,IACb,eAAe;AAAA,IACf,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,iBAAmB;AAAA,IACjB,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,OAAS;AAAA,IACT,OAAS;AAAA,IACT,QAAU;AAAA,IACV,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,YAAc;AAAA,IACd,QAAU;AAAA,EACZ;AAAA,EACA,SAAW;AAAA,IACT,MAAQ;AAAA,EACV;AAAA,EACA,gBAAkB;AAAA,EAClB,IAAM;AAAA,IACJ,QAAU;AAAA,MACR;AAAA,IACF;AAAA,IACA,SAAW;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;","names":[]}