@obov/mext 0.5.0 → 0.7.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.
Files changed (177) hide show
  1. package/dist/approval.d.ts +33 -0
  2. package/dist/approval.js +36 -0
  3. package/dist/approval.js.map +1 -0
  4. package/dist/audit.d.ts +123 -0
  5. package/dist/audit.js +221 -0
  6. package/dist/audit.js.map +1 -0
  7. package/dist/build-cli.d.ts +1 -0
  8. package/dist/build-cli.js.map +1 -1
  9. package/dist/build.d.ts +2 -0
  10. package/dist/build.js +46 -5
  11. package/dist/build.js.map +1 -1
  12. package/dist/caller.d.ts +53 -0
  13. package/dist/caller.js +51 -0
  14. package/dist/caller.js.map +1 -0
  15. package/dist/cli/args.js +1 -2
  16. package/dist/cli/args.js.map +1 -1
  17. package/dist/cli/build.js +26 -4
  18. package/dist/cli/build.js.map +1 -1
  19. package/dist/cli/dev-audit.d.ts +25 -0
  20. package/dist/cli/dev-audit.js +84 -0
  21. package/dist/cli/dev-audit.js.map +1 -0
  22. package/dist/cli/dev-lock.d.ts +3 -1
  23. package/dist/cli/dev-lock.js +12 -5
  24. package/dist/cli/dev-lock.js.map +1 -1
  25. package/dist/cli/dev-server.d.ts +9 -0
  26. package/dist/cli/dev-server.js +27 -3
  27. package/dist/cli/dev-server.js.map +1 -1
  28. package/dist/cli/dev-tap.d.ts +20 -0
  29. package/dist/cli/dev-tap.js +70 -0
  30. package/dist/cli/dev-tap.js.map +1 -0
  31. package/dist/cli/dev.d.ts +6 -0
  32. package/dist/cli/dev.js +20 -8
  33. package/dist/cli/dev.js.map +1 -1
  34. package/dist/cli/help.js +2 -0
  35. package/dist/cli/help.js.map +1 -1
  36. package/dist/cli/inspect.d.ts +7 -0
  37. package/dist/cli/inspect.js +699 -0
  38. package/dist/cli/inspect.js.map +1 -0
  39. package/dist/cli/main.js +10 -0
  40. package/dist/cli/main.js.map +1 -1
  41. package/dist/cli/media.d.ts +19 -0
  42. package/dist/cli/media.js +77 -0
  43. package/dist/cli/media.js.map +1 -0
  44. package/dist/cli/output.d.ts +1 -1
  45. package/dist/cli/output.js +3 -2
  46. package/dist/cli/output.js.map +1 -1
  47. package/dist/cli/run.js +33 -4
  48. package/dist/cli/run.js.map +1 -1
  49. package/dist/cli/serve.d.ts +10 -0
  50. package/dist/cli/serve.js +114 -0
  51. package/dist/cli/serve.js.map +1 -0
  52. package/dist/cli/types.d.ts +9 -0
  53. package/dist/cli/types.js +77 -0
  54. package/dist/cli/types.js.map +1 -0
  55. package/dist/client/index.d.ts +11 -0
  56. package/dist/client/index.js +7 -0
  57. package/dist/client/index.js.map +1 -0
  58. package/dist/client/manifest.js +6 -2
  59. package/dist/client/manifest.js.map +1 -1
  60. package/dist/client/runner.js +40 -3
  61. package/dist/client/runner.js.map +1 -1
  62. package/dist/client/typed.d.ts +56 -0
  63. package/dist/client/typed.js +526 -0
  64. package/dist/client/typed.js.map +1 -0
  65. package/dist/client/types.d.ts +225 -0
  66. package/dist/client/types.js +2 -0
  67. package/dist/client/types.js.map +1 -0
  68. package/dist/command.d.ts +61 -5
  69. package/dist/command.js +42 -1
  70. package/dist/command.js.map +1 -1
  71. package/dist/config.d.ts +59 -10
  72. package/dist/config.js +67 -7
  73. package/dist/config.js.map +1 -1
  74. package/dist/content.d.ts +65 -0
  75. package/dist/content.js +99 -0
  76. package/dist/content.js.map +1 -0
  77. package/dist/errors.d.ts +21 -3
  78. package/dist/errors.js +13 -0
  79. package/dist/errors.js.map +1 -1
  80. package/dist/expose.d.ts +9 -0
  81. package/dist/expose.js +52 -0
  82. package/dist/expose.js.map +1 -0
  83. package/dist/index.d.ts +18 -7
  84. package/dist/index.js +8 -2
  85. package/dist/index.js.map +1 -1
  86. package/dist/inspect/agent.d.ts +104 -0
  87. package/dist/inspect/agent.js +125 -0
  88. package/dist/inspect/agent.js.map +1 -0
  89. package/dist/inspect/audit.d.ts +46 -0
  90. package/dist/inspect/audit.js +133 -0
  91. package/dist/inspect/audit.js.map +1 -0
  92. package/dist/inspect/compare.d.ts +12 -0
  93. package/dist/inspect/compare.js +31 -0
  94. package/dist/inspect/compare.js.map +1 -0
  95. package/dist/inspect/index.d.ts +17 -0
  96. package/dist/inspect/index.js +12 -0
  97. package/dist/inspect/index.js.map +1 -0
  98. package/dist/inspect/inspector.d.ts +168 -0
  99. package/dist/inspect/inspector.js +392 -0
  100. package/dist/inspect/inspector.js.map +1 -0
  101. package/dist/inspect/profiles.d.ts +95 -0
  102. package/dist/inspect/profiles.js +235 -0
  103. package/dist/inspect/profiles.js.map +1 -0
  104. package/dist/inspect/scenario.d.ts +126 -0
  105. package/dist/inspect/scenario.js +555 -0
  106. package/dist/inspect/scenario.js.map +1 -0
  107. package/dist/inspect/ui-server.d.ts +31 -0
  108. package/dist/inspect/ui-server.js +378 -0
  109. package/dist/inspect/ui-server.js.map +1 -0
  110. package/dist/inspect/ui.html +917 -0
  111. package/dist/instrumentation.d.ts +13 -2
  112. package/dist/instrumentation.js +11 -1
  113. package/dist/instrumentation.js.map +1 -1
  114. package/dist/invoke.d.ts +36 -5
  115. package/dist/invoke.js +162 -21
  116. package/dist/invoke.js.map +1 -1
  117. package/dist/manifest.d.ts +19 -3
  118. package/dist/manifest.js +5 -1
  119. package/dist/manifest.js.map +1 -1
  120. package/dist/mcp/constants.d.ts +7 -0
  121. package/dist/mcp/constants.js +7 -0
  122. package/dist/mcp/constants.js.map +1 -1
  123. package/dist/mcp/dispatch.d.ts +10 -4
  124. package/dist/mcp/dispatch.js +24 -7
  125. package/dist/mcp/dispatch.js.map +1 -1
  126. package/dist/mcp/help.d.ts +2 -0
  127. package/dist/mcp/help.js +6 -1
  128. package/dist/mcp/help.js.map +1 -1
  129. package/dist/mcp/host.d.ts +14 -0
  130. package/dist/mcp/host.js +48 -0
  131. package/dist/mcp/host.js.map +1 -0
  132. package/dist/mcp/http.d.ts +38 -7
  133. package/dist/mcp/http.js +199 -23
  134. package/dist/mcp/http.js.map +1 -1
  135. package/dist/mcp/index.d.ts +2 -1
  136. package/dist/mcp/index.js +2 -1
  137. package/dist/mcp/index.js.map +1 -1
  138. package/dist/mcp/server.d.ts +12 -1
  139. package/dist/mcp/server.js +63 -17
  140. package/dist/mcp/server.js.map +1 -1
  141. package/dist/mcp/stdio.d.ts +4 -0
  142. package/dist/mcp/stdio.js +3 -0
  143. package/dist/mcp/stdio.js.map +1 -1
  144. package/dist/mcp/tasks.d.ts +3 -1
  145. package/dist/mcp/tasks.js +7 -4
  146. package/dist/mcp/tasks.js.map +1 -1
  147. package/dist/principal.d.ts +22 -0
  148. package/dist/principal.js +29 -0
  149. package/dist/principal.js.map +1 -1
  150. package/dist/registry.d.ts +5 -0
  151. package/dist/registry.js +21 -0
  152. package/dist/registry.js.map +1 -1
  153. package/dist/remote/client.d.ts +26 -1
  154. package/dist/remote/client.js +180 -55
  155. package/dist/remote/client.js.map +1 -1
  156. package/dist/remote/index.d.ts +1 -1
  157. package/dist/remote/index.js.map +1 -1
  158. package/dist/remote/oauth.d.ts +1 -1
  159. package/dist/remote/oauth.js +1 -1
  160. package/dist/remote/oauth.js.map +1 -1
  161. package/dist/route.d.ts +40 -2
  162. package/dist/route.js +128 -8
  163. package/dist/route.js.map +1 -1
  164. package/dist/start.js +9 -4
  165. package/dist/start.js.map +1 -1
  166. package/dist/suggest.js +1 -1
  167. package/dist/suggest.js.map +1 -1
  168. package/dist/typegen.d.ts +27 -0
  169. package/dist/typegen.js +62 -0
  170. package/dist/typegen.js.map +1 -0
  171. package/dist/version-constant.d.ts +5 -0
  172. package/dist/version-constant.js +6 -0
  173. package/dist/version-constant.js.map +1 -0
  174. package/dist/version.d.ts +1 -2
  175. package/dist/version.js +1 -2
  176. package/dist/version.js.map +1 -1
  177. package/package.json +12 -2
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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","sourcesContent":["import { findCommand } from \"../lookup.ts\"\nimport type { NamespaceInfo, RegisteredCommand, Registry } from \"../registry.ts\"\nimport { cliSpec, type CliField, type FieldKind, type ScalarKind } from \"./args.ts\"\n\n/**\n * help 생성 (D2). 일반 텍스트, ANSI 색 없음, 같은 Registry 에 같은 출력.\n * 대상 = \"\" (루트) · 네임스페이스 ID · 명령어 ID (별칭 포함). prog = 명령어 앞 접두 (\"mext run\" · \"myapp\").\n */\n\nexport interface HelpOptions {\n /** 명령어 경로 앞에 붙는 실행 접두. 예: \"mext run\" */\n prog: string\n}\n\nexport type HelpTarget =\n | { kind: \"namespace\"; namespace: NamespaceInfo; command: RegisteredCommand | undefined }\n | { kind: \"command\"; command: RegisteredCommand }\n\n/** 대상 해석. 네임스페이스가 우선 (users = 네임스페이스 + index.ts 명령어면 둘 다). 없으면 UNKNOWN_COMMAND */\nexport function resolveHelpTarget(registry: Registry, target: string): HelpTarget {\n const ns = registry.namespaces.get(target)\n if (ns) return { kind: \"namespace\", namespace: ns, command: target === \"\" ? undefined : registry.commands.get(target) }\n return { kind: \"command\", command: findCommand(registry, target) }\n}\n\n/** 대상의 help 텍스트 (끝 줄바꿈 포함) */\nexport function renderHelp(registry: Registry, target: string, options: HelpOptions): string {\n const t = resolveHelpTarget(registry, target)\n if (t.kind === \"command\") return renderCommandHelp(t.command, options)\n const text = renderNamespaceHelp(registry, t.namespace, options)\n return t.command ? `${text}\\n${renderCommandHelp(t.command, options)}` : text\n}\n\nexport function renderNamespaceHelp(registry: Registry, ns: NamespaceInfo, options: HelpOptions): string {\n const out: string[] = []\n const path = cliPath(ns.id)\n const prefix = path === \"\" ? options.prog : `${options.prog} ${path}`\n if (ns.id !== \"\") out.push(`Namespace: ${path}`, \"\")\n if (ns.description) out.push(ns.description, \"\")\n out.push(\"Usage:\")\n out.push(` ${prefix} <command> [args] [flags]`)\n if (ns.id === \"\" && ns.namespaces.length > 0) out.push(` ${prefix} <namespace> --help`)\n out.push(` ${prefix} <command> --help`, \"\")\n if (ns.namespaces.length > 0) {\n out.push(\"Namespaces:\")\n out.push(\n ...table(ns.namespaces.map((id) => [lastSegment(id), summaryOf(registry.namespaces.get(id)) ?? \"\"])).map(\n (l) => ` ${l}`,\n ),\n \"\",\n )\n }\n if (ns.commands.length > 0) {\n out.push(\"Commands:\")\n out.push(\n ...table(\n ns.commands.map((id) => {\n const c = registry.commands.get(id)!.command\n return [lastSegment(id), c.description]\n }),\n ).map((l) => ` ${l}`),\n \"\",\n )\n }\n out.push(\"Global flags:\", ...globalFlagLines(false), \"\")\n return finish(out)\n}\n\nexport function renderCommandHelp(entry: RegisteredCommand, options: HelpOptions): string {\n const c = entry.command\n const spec = cliSpec(entry)\n const path = cliPath(entry.id)\n const out: string[] = [c.description, \"\"]\n\n const positional = spec.positional.map((k) => spec.fields.find((f) => f.key === k)!).filter(Boolean)\n const usageArgs = positional.map((f) => {\n const name = f.kind.type === \"array\" ? `${f.flag}...` : f.flag\n return f.required ? `<${name}>` : `[${name}]`\n })\n out.push(\"Usage:\", ` ${[options.prog, path, ...usageArgs, \"[flags]\"].join(\" \")}`, \"\")\n\n if (positional.length > 0) {\n out.push(\"Arguments:\")\n out.push(\n ...table(positional.map((f) => [`<${f.flag}>`, annotate(f, [`or --${f.flag}`])])).map((l) => ` ${l}`),\n \"\",\n )\n }\n\n const flagRows: string[][] = []\n for (const f of spec.fields) {\n if (spec.positional.includes(f.key)) continue\n flagRows.push(...fieldRows(f, \"\"))\n }\n if (flagRows.length > 0) out.push(\"Flags:\", ...table(flagRows).map((l) => ` ${l}`), \"\")\n\n out.push(\"Global flags:\", ...globalFlagLines(true), \"\")\n\n const safety = [c.readOnly ? \"read-only\" : \"writes\"]\n if (c.destructive) safety.push(\"destructive\")\n if (c.requiresConfirmation) safety.push(\"requires confirmation (--yes to approve)\")\n if (c.scopes.length > 0) safety.push(`scopes: ${c.scopes.join(\", \")}`)\n out.push(`Safety: ${safety.join(\", \")}`)\n if (entry.aliases.length > 0) out.push(`Aliases: ${entry.aliases.map(cliPath).join(\", \")}`)\n out.push(\"\")\n\n if (c.examples.length > 0) {\n out.push(\"Examples:\", ...c.examples.map((e) => ` ${formatInvocation(entry, e, options)}`), \"\")\n }\n return finish(out)\n}\n\n/** 입력 객체 → CLI 호출 문자열 (positional · 점 플래그 · 반복 · JSON 문자열) */\nexport function formatInvocation(entry: RegisteredCommand, input: unknown, options: HelpOptions): string {\n const spec = cliSpec(entry)\n const parts = [options.prog, cliPath(entry.id)]\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return [...parts, \"--input-json\", shellQuote(JSON.stringify(input))].join(\" \")\n }\n const obj = input as Record<string, unknown>\n const flags: string[] = []\n const known = new Set(spec.fields.map((f) => f.key))\n if (Object.keys(obj).some((k) => !known.has(k))) {\n return [...parts, \"--input-json\", shellQuote(JSON.stringify(input))].join(\" \")\n }\n let positionalOpen = true\n for (const key of spec.positional) {\n const f = spec.fields.find((x) => x.key === key)!\n const v = obj[key]\n if (!positionalOpen || v === undefined) {\n positionalOpen = false\n continue\n }\n if (f.kind.type === \"array\" && Array.isArray(v) && key === spec.positional.at(-1)) {\n parts.push(...v.map((x) => shellQuote(String(x))))\n } else if (isScalarKind(f.kind) && isScalarValue(v)) {\n parts.push(shellQuote(String(v)))\n } else {\n positionalOpen = false\n continue\n }\n known.delete(key)\n }\n for (const f of spec.fields) {\n if (!known.has(f.key) || obj[f.key] === undefined) continue\n flags.push(...flagTokens(f, `--${f.flag}`, obj[f.key]))\n }\n return [...parts, ...flags].join(\" \")\n}\n\nfunction flagTokens(f: CliField, flag: string, v: unknown): string[] {\n const kind = f.kind\n if (kind.type === \"boolean\" && typeof v === \"boolean\") return [v ? flag : `--no-${flag.slice(2)}`]\n if (kind.type === \"array\" && Array.isArray(v) && v.every(isScalarValue)) {\n return v.flatMap((x) => (kind.item.type === \"boolean\" ? [`${flag}=${x}`] : [flag, shellQuote(String(x))]))\n }\n if (kind.type === \"object\" && typeof v === \"object\" && v !== null && !Array.isArray(v)) {\n const entries = Object.entries(v as Record<string, unknown>)\n const subs = kind.fields\n if (entries.every(([k]) => subs.some((s) => s.key === k))) {\n return entries\n .filter(([, x]) => x !== undefined)\n .flatMap(([k, x]) => {\n const s = subs.find((y) => y.key === k)!\n return flagTokens(s, `${flag}.${s.flag}`, x)\n })\n }\n }\n if (isScalarKind(kind) && isScalarValue(v)) return [flag, shellQuote(String(v))]\n return [flag, shellQuote(JSON.stringify(v))]\n}\n\nfunction fieldRows(f: CliField, parent: string): string[][] {\n const name = parent === \"\" ? f.flag : `${parent}.${f.flag}`\n const kind = f.kind\n if (kind.type === \"object\") {\n const rows = [[`--${name} <json>`, annotate(f, [])]]\n for (const s of kind.fields) rows.push(...fieldRows(s, name))\n return rows\n }\n if (kind.type === \"boolean\") return [[`--[no-]${name}`, annotate(f, [])]]\n if (kind.type === \"array\") {\n const left = kind.item.type === \"boolean\" ? `--${name}[=true|false]` : `--${name} <${metavar(kind.item)}>`\n return [[left, annotate(f, [\"repeatable\"])]]\n }\n return [[`--${name} <${metavar(kind)}>`, annotate(f, [])]]\n}\n\nfunction metavar(kind: FieldKind): string {\n switch (kind.type) {\n case \"string\":\n return \"string\"\n case \"number\":\n return \"number\"\n case \"boolean\":\n return \"true|false\"\n case \"enum\":\n return kind.values.map(String).join(\"|\")\n case \"array\":\n return metavar(kind.item)\n case \"object\":\n case \"json\":\n return \"json\"\n }\n}\n\nfunction annotate(f: CliField, extra: string[]): string {\n const notes: string[] = []\n if (f.required) notes.push(\"required\")\n if (f.hasDefault) notes.push(`default: ${JSON.stringify(f.default)}`)\n notes.push(...extra)\n const tail = notes.length > 0 ? `(${notes.join(\", \")})` : \"\"\n return [f.description ?? \"\", tail].filter((s) => s !== \"\").join(\" \")\n}\n\nfunction globalFlagLines(command: boolean): string[] {\n const rows: string[][] = []\n if (command) rows.push([\"--input-json <json>\", 'Whole input as a JSON object (\"-\" = read stdin)'], [\"-\", \"Read the whole input as JSON from stdin\"])\n rows.push(\n [\"--json\", \"Print the result as JSON (errors as JSON on stderr)\"],\n [\"--yes\", \"Approve confirmation requests\"],\n [\"-h, --help\", \"Show help\"],\n )\n return table(rows).map((l) => ` ${l}`)\n}\n\nfunction isScalarKind(kind: FieldKind): kind is ScalarKind {\n return kind.type === \"string\" || kind.type === \"number\" || kind.type === \"boolean\" || kind.type === \"enum\"\n}\n\nfunction isScalarValue(v: unknown): v is string | number | boolean {\n return typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\"\n}\n\n/** 명령어 · 네임스페이스 ID → CLI 경로 (\"users.get\" → \"users get\") */\nexport function cliPath(id: string): string {\n return id.split(\".\").join(\" \")\n}\n\nfunction lastSegment(id: string): string {\n return id.slice(id.lastIndexOf(\".\") + 1)\n}\n\n/** _index.md 첫 줄 (markdown 제목 기호 제거) */\nfunction summaryOf(ns: NamespaceInfo | undefined): string | undefined {\n const line = ns?.description?.split(\"\\n\").find((l) => l.trim() !== \"\")\n return line?.replace(/^#+\\s*/, \"\").trim()\n}\n\n/** 두 칸 간격 정렬 표. 끝 공백 제거 */\nexport function table(rows: readonly (readonly string[])[]): string[] {\n const widths: number[] = []\n for (const row of rows) row.forEach((cell, i) => (widths[i] = Math.max(widths[i] ?? 0, cell.length)))\n return rows.map((row) =>\n row\n .map((cell, i) => (i === row.length - 1 ? cell : cell.padEnd(widths[i]!)))\n .join(\" \")\n .trimEnd(),\n )\n}\n\n/** 셸에 그대로 붙여 넣을 수 있는 인용 */\nexport function shellQuote(value: string): string {\n if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) return value\n return `'${value.replace(/'/g, `'\\\\''`)}'`\n}\n\nfunction finish(lines: string[]): string {\n while (lines.length > 0 && lines.at(-1) === \"\") lines.pop()\n return `${lines.join(\"\\n\")}\\n`\n}\n"]}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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","sourcesContent":["import { findCommand } from \"../lookup.ts\"\nimport type { NamespaceInfo, RegisteredCommand, Registry } from \"../registry.ts\"\nimport { cliSpec, type CliField, type FieldKind, type ScalarKind } from \"./args.ts\"\n\n/**\n * help 생성 (D2). 일반 텍스트, ANSI 색 없음, 같은 Registry 에 같은 출력.\n * 대상 = \"\" (루트) · 네임스페이스 ID · 명령어 ID (별칭 포함). prog = 명령어 앞 접두 (\"mext run\" · \"myapp\").\n */\n\nexport interface HelpOptions {\n /** 명령어 경로 앞에 붙는 실행 접두. 예: \"mext run\" */\n prog: string\n}\n\nexport type HelpTarget =\n | { kind: \"namespace\"; namespace: NamespaceInfo; command: RegisteredCommand | undefined }\n | { kind: \"command\"; command: RegisteredCommand }\n\n/** 대상 해석. 네임스페이스가 우선 (users = 네임스페이스 + index.ts 명령어면 둘 다). 없으면 UNKNOWN_COMMAND */\nexport function resolveHelpTarget(registry: Registry, target: string): HelpTarget {\n const ns = registry.namespaces.get(target)\n if (ns) return { kind: \"namespace\", namespace: ns, command: target === \"\" ? undefined : registry.commands.get(target) }\n return { kind: \"command\", command: findCommand(registry, target) }\n}\n\n/** 대상의 help 텍스트 (끝 줄바꿈 포함) */\nexport function renderHelp(registry: Registry, target: string, options: HelpOptions): string {\n const t = resolveHelpTarget(registry, target)\n if (t.kind === \"command\") return renderCommandHelp(t.command, options)\n const text = renderNamespaceHelp(registry, t.namespace, options)\n return t.command ? `${text}\\n${renderCommandHelp(t.command, options)}` : text\n}\n\nexport function renderNamespaceHelp(registry: Registry, ns: NamespaceInfo, options: HelpOptions): string {\n const out: string[] = []\n const path = cliPath(ns.id)\n const prefix = path === \"\" ? options.prog : `${options.prog} ${path}`\n if (ns.id !== \"\") out.push(`Namespace: ${path}`, \"\")\n if (ns.description) out.push(ns.description, \"\")\n out.push(\"Usage:\")\n out.push(` ${prefix} <command> [args] [flags]`)\n if (ns.id === \"\" && ns.namespaces.length > 0) out.push(` ${prefix} <namespace> --help`)\n out.push(` ${prefix} <command> --help`, \"\")\n if (ns.namespaces.length > 0) {\n out.push(\"Namespaces:\")\n out.push(\n ...table(ns.namespaces.map((id) => [lastSegment(id), summaryOf(registry.namespaces.get(id)) ?? \"\"])).map(\n (l) => ` ${l}`,\n ),\n \"\",\n )\n }\n if (ns.commands.length > 0) {\n out.push(\"Commands:\")\n out.push(\n ...table(\n ns.commands.map((id) => {\n const c = registry.commands.get(id)!.command\n return [lastSegment(id), c.description]\n }),\n ).map((l) => ` ${l}`),\n \"\",\n )\n }\n out.push(\"Global flags:\", ...globalFlagLines(false), \"\")\n return finish(out)\n}\n\nexport function renderCommandHelp(entry: RegisteredCommand, options: HelpOptions): string {\n const c = entry.command\n const spec = cliSpec(entry)\n const path = cliPath(entry.id)\n const out: string[] = [c.description, \"\"]\n\n const positional = spec.positional.map((k) => spec.fields.find((f) => f.key === k)!).filter(Boolean)\n const usageArgs = positional.map((f) => {\n const name = f.kind.type === \"array\" ? `${f.flag}...` : f.flag\n return f.required ? `<${name}>` : `[${name}]`\n })\n out.push(\"Usage:\", ` ${[options.prog, path, ...usageArgs, \"[flags]\"].join(\" \")}`, \"\")\n\n if (positional.length > 0) {\n out.push(\"Arguments:\")\n out.push(\n ...table(positional.map((f) => [`<${f.flag}>`, annotate(f, [`or --${f.flag}`])])).map((l) => ` ${l}`),\n \"\",\n )\n }\n\n const flagRows: string[][] = []\n for (const f of spec.fields) {\n if (spec.positional.includes(f.key)) continue\n flagRows.push(...fieldRows(f, \"\"))\n }\n if (flagRows.length > 0) out.push(\"Flags:\", ...table(flagRows).map((l) => ` ${l}`), \"\")\n\n out.push(\"Global flags:\", ...globalFlagLines(true), \"\")\n\n const safety = [c.readOnly ? \"read-only\" : \"writes\"]\n if (c.destructive) safety.push(\"destructive\")\n if (c.requiresConfirmation) safety.push(\"requires confirmation (--yes to approve)\")\n else if (c.needsApproval !== undefined) safety.push(\"may require confirmation (--yes to approve)\")\n if (c.scopes.length > 0) safety.push(`scopes: ${c.scopes.join(\", \")}`)\n out.push(`Safety: ${safety.join(\", \")}`)\n if (entry.aliases.length > 0) out.push(`Aliases: ${entry.aliases.map(cliPath).join(\", \")}`)\n out.push(\"\")\n\n if (c.examples.length > 0) {\n out.push(\"Examples:\", ...c.examples.map((e) => ` ${formatInvocation(entry, e, options)}`), \"\")\n }\n return finish(out)\n}\n\n/** 입력 객체 → CLI 호출 문자열 (positional · 점 플래그 · 반복 · JSON 문자열) */\nexport function formatInvocation(entry: RegisteredCommand, input: unknown, options: HelpOptions): string {\n const spec = cliSpec(entry)\n const parts = [options.prog, cliPath(entry.id)]\n if (typeof input !== \"object\" || input === null || Array.isArray(input)) {\n return [...parts, \"--input-json\", shellQuote(JSON.stringify(input))].join(\" \")\n }\n const obj = input as Record<string, unknown>\n const flags: string[] = []\n const known = new Set(spec.fields.map((f) => f.key))\n if (Object.keys(obj).some((k) => !known.has(k))) {\n return [...parts, \"--input-json\", shellQuote(JSON.stringify(input))].join(\" \")\n }\n let positionalOpen = true\n for (const key of spec.positional) {\n const f = spec.fields.find((x) => x.key === key)!\n const v = obj[key]\n if (!positionalOpen || v === undefined) {\n positionalOpen = false\n continue\n }\n if (f.kind.type === \"array\" && Array.isArray(v) && key === spec.positional.at(-1)) {\n parts.push(...v.map((x) => shellQuote(String(x))))\n } else if (isScalarKind(f.kind) && isScalarValue(v)) {\n parts.push(shellQuote(String(v)))\n } else {\n positionalOpen = false\n continue\n }\n known.delete(key)\n }\n for (const f of spec.fields) {\n if (!known.has(f.key) || obj[f.key] === undefined) continue\n flags.push(...flagTokens(f, `--${f.flag}`, obj[f.key]))\n }\n return [...parts, ...flags].join(\" \")\n}\n\nfunction flagTokens(f: CliField, flag: string, v: unknown): string[] {\n const kind = f.kind\n if (kind.type === \"boolean\" && typeof v === \"boolean\") return [v ? flag : `--no-${flag.slice(2)}`]\n if (kind.type === \"array\" && Array.isArray(v) && v.every(isScalarValue)) {\n return v.flatMap((x) => (kind.item.type === \"boolean\" ? [`${flag}=${x}`] : [flag, shellQuote(String(x))]))\n }\n if (kind.type === \"object\" && typeof v === \"object\" && v !== null && !Array.isArray(v)) {\n const entries = Object.entries(v as Record<string, unknown>)\n const subs = kind.fields\n if (entries.every(([k]) => subs.some((s) => s.key === k))) {\n return entries\n .filter(([, x]) => x !== undefined)\n .flatMap(([k, x]) => {\n const s = subs.find((y) => y.key === k)!\n return flagTokens(s, `${flag}.${s.flag}`, x)\n })\n }\n }\n if (isScalarKind(kind) && isScalarValue(v)) return [flag, shellQuote(String(v))]\n return [flag, shellQuote(JSON.stringify(v))]\n}\n\nfunction fieldRows(f: CliField, parent: string): string[][] {\n const name = parent === \"\" ? f.flag : `${parent}.${f.flag}`\n const kind = f.kind\n if (kind.type === \"object\") {\n const rows = [[`--${name} <json>`, annotate(f, [])]]\n for (const s of kind.fields) rows.push(...fieldRows(s, name))\n return rows\n }\n if (kind.type === \"boolean\") return [[`--[no-]${name}`, annotate(f, [])]]\n if (kind.type === \"array\") {\n const left = kind.item.type === \"boolean\" ? `--${name}[=true|false]` : `--${name} <${metavar(kind.item)}>`\n return [[left, annotate(f, [\"repeatable\"])]]\n }\n return [[`--${name} <${metavar(kind)}>`, annotate(f, [])]]\n}\n\nfunction metavar(kind: FieldKind): string {\n switch (kind.type) {\n case \"string\":\n return \"string\"\n case \"number\":\n return \"number\"\n case \"boolean\":\n return \"true|false\"\n case \"enum\":\n return kind.values.map(String).join(\"|\")\n case \"array\":\n return metavar(kind.item)\n case \"object\":\n case \"json\":\n return \"json\"\n }\n}\n\nfunction annotate(f: CliField, extra: string[]): string {\n const notes: string[] = []\n if (f.required) notes.push(\"required\")\n if (f.hasDefault) notes.push(`default: ${JSON.stringify(f.default)}`)\n notes.push(...extra)\n const tail = notes.length > 0 ? `(${notes.join(\", \")})` : \"\"\n return [f.description ?? \"\", tail].filter((s) => s !== \"\").join(\" \")\n}\n\nfunction globalFlagLines(command: boolean): string[] {\n const rows: string[][] = []\n if (command) rows.push([\"--input-json <json>\", 'Whole input as a JSON object (\"-\" = read stdin)'], [\"-\", \"Read the whole input as JSON from stdin\"])\n rows.push(\n [\"--json\", \"Print the result as JSON (errors as JSON on stderr)\"],\n [\"--yes\", \"Approve confirmation requests\"],\n [\"-h, --help\", \"Show help\"],\n )\n return table(rows).map((l) => ` ${l}`)\n}\n\nfunction isScalarKind(kind: FieldKind): kind is ScalarKind {\n return kind.type === \"string\" || kind.type === \"number\" || kind.type === \"boolean\" || kind.type === \"enum\"\n}\n\nfunction isScalarValue(v: unknown): v is string | number | boolean {\n return typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\"\n}\n\n/** 명령어 · 네임스페이스 ID → CLI 경로 (\"users.get\" → \"users get\") */\nexport function cliPath(id: string): string {\n return id.split(\".\").join(\" \")\n}\n\nfunction lastSegment(id: string): string {\n return id.slice(id.lastIndexOf(\".\") + 1)\n}\n\n/** _index.md 첫 줄 (markdown 제목 기호 제거) */\nfunction summaryOf(ns: NamespaceInfo | undefined): string | undefined {\n const line = ns?.description?.split(\"\\n\").find((l) => l.trim() !== \"\")\n return line?.replace(/^#+\\s*/, \"\").trim()\n}\n\n/** 두 칸 간격 정렬 표. 끝 공백 제거 */\nexport function table(rows: readonly (readonly string[])[]): string[] {\n const widths: number[] = []\n for (const row of rows) row.forEach((cell, i) => (widths[i] = Math.max(widths[i] ?? 0, cell.length)))\n return rows.map((row) =>\n row\n .map((cell, i) => (i === row.length - 1 ? cell : cell.padEnd(widths[i]!)))\n .join(\" \")\n .trimEnd(),\n )\n}\n\n/** 셸에 그대로 붙여 넣을 수 있는 인용 */\nexport function shellQuote(value: string): string {\n if (/^[A-Za-z0-9_./:@%+=,-]+$/.test(value)) return value\n return `'${value.replace(/'/g, `'\\\\''`)}'`\n}\n\nfunction finish(lines: string[]): string {\n while (lines.length > 0 && lines.at(-1) === \"\") lines.pop()\n return `${lines.join(\"\\n\")}\\n`\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { CommandSummary } from "../client/types.ts";
2
+ import { type CliIo } from "./io.ts";
3
+ export declare const INSPECT_PROG = "mext inspect";
4
+ export declare function inspectCommand(argv: readonly string[], io: CliIo): Promise<number>;
5
+ /** 안전성 표시 (mext run --help 의 Safety 줄과 같은 말) */
6
+ export declare function safetyOf(c: CommandSummary): string[];
7
+ export declare function inspectHelp(): string;