@obov/mext 0.0.0-stage → 0.2.0

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 (155) hide show
  1. package/dist/build-cli.d.ts +39 -0
  2. package/dist/build-cli.js +167 -0
  3. package/dist/build-cli.js.map +1 -0
  4. package/dist/build.d.ts +65 -0
  5. package/dist/build.js +252 -0
  6. package/dist/build.js.map +1 -0
  7. package/dist/cli/args.d.ts +107 -0
  8. package/dist/cli/args.js +621 -0
  9. package/dist/cli/args.js.map +1 -0
  10. package/dist/cli/bin.d.ts +2 -0
  11. package/dist/cli/bin.js +13 -0
  12. package/dist/cli/bin.js.map +1 -0
  13. package/dist/cli/build.d.ts +11 -0
  14. package/dist/cli/build.js +87 -0
  15. package/dist/cli/build.js.map +1 -0
  16. package/dist/cli/dev-lock.d.ts +23 -0
  17. package/dist/cli/dev-lock.js +68 -0
  18. package/dist/cli/dev-lock.js.map +1 -0
  19. package/dist/cli/dev-server.d.ts +20 -0
  20. package/dist/cli/dev-server.js +75 -0
  21. package/dist/cli/dev-server.js.map +1 -0
  22. package/dist/cli/dev.d.ts +21 -0
  23. package/dist/cli/dev.js +565 -0
  24. package/dist/cli/dev.js.map +1 -0
  25. package/dist/cli/help.d.ts +31 -0
  26. package/dist/cli/help.js +238 -0
  27. package/dist/cli/help.js.map +1 -0
  28. package/dist/cli/io.d.ts +26 -0
  29. package/dist/cli/io.js +74 -0
  30. package/dist/cli/io.js.map +1 -0
  31. package/dist/cli/login.d.ts +32 -0
  32. package/dist/cli/login.js +284 -0
  33. package/dist/cli/login.js.map +1 -0
  34. package/dist/cli/logout.d.ts +9 -0
  35. package/dist/cli/logout.js +105 -0
  36. package/dist/cli/logout.js.map +1 -0
  37. package/dist/cli/main.d.ts +19 -0
  38. package/dist/cli/main.js +77 -0
  39. package/dist/cli/main.js.map +1 -0
  40. package/dist/cli/mcp.d.ts +16 -0
  41. package/dist/cli/mcp.js +92 -0
  42. package/dist/cli/mcp.js.map +1 -0
  43. package/dist/cli/output.d.ts +78 -0
  44. package/dist/cli/output.js +229 -0
  45. package/dist/cli/output.js.map +1 -0
  46. package/dist/cli/remote.d.ts +17 -0
  47. package/dist/cli/remote.js +35 -0
  48. package/dist/cli/remote.js.map +1 -0
  49. package/dist/cli/run.d.ts +14 -0
  50. package/dist/cli/run.js +218 -0
  51. package/dist/cli/run.js.map +1 -0
  52. package/dist/cli/start.d.ts +8 -0
  53. package/dist/cli/start.js +37 -0
  54. package/dist/cli/start.js.map +1 -0
  55. package/dist/client/cache.d.ts +104 -0
  56. package/dist/client/cache.js +208 -0
  57. package/dist/client/cache.js.map +1 -0
  58. package/dist/client/main.d.ts +31 -0
  59. package/dist/client/main.js +101 -0
  60. package/dist/client/main.js.map +1 -0
  61. package/dist/client/manifest.d.ts +19 -0
  62. package/dist/client/manifest.js +68 -0
  63. package/dist/client/manifest.js.map +1 -0
  64. package/dist/client/runner.d.ts +52 -0
  65. package/dist/client/runner.js +563 -0
  66. package/dist/client/runner.js.map +1 -0
  67. package/dist/command.d.ts +75 -0
  68. package/dist/command.js +44 -0
  69. package/dist/command.js.map +1 -0
  70. package/dist/config.d.ts +111 -0
  71. package/dist/config.js +197 -0
  72. package/dist/config.js.map +1 -0
  73. package/dist/errors.d.ts +74 -0
  74. package/dist/errors.js +38 -0
  75. package/dist/errors.js.map +1 -0
  76. package/dist/ids.d.ts +6 -0
  77. package/dist/ids.js +12 -0
  78. package/dist/ids.js.map +1 -0
  79. package/dist/index.d.ts +46 -0
  80. package/dist/index.js +27 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/instrumentation.d.ts +97 -0
  83. package/dist/instrumentation.js +165 -0
  84. package/dist/instrumentation.js.map +1 -0
  85. package/dist/invoke.d.ts +64 -0
  86. package/dist/invoke.js +152 -0
  87. package/dist/invoke.js.map +1 -0
  88. package/dist/lookup.d.ts +9 -0
  89. package/dist/lookup.js +27 -0
  90. package/dist/lookup.js.map +1 -0
  91. package/dist/manifest.d.ts +68 -0
  92. package/dist/manifest.js +77 -0
  93. package/dist/manifest.js.map +1 -0
  94. package/dist/mcp/constants.d.ts +9 -0
  95. package/dist/mcp/constants.js +10 -0
  96. package/dist/mcp/constants.js.map +1 -0
  97. package/dist/mcp/dispatch.d.ts +66 -0
  98. package/dist/mcp/dispatch.js +249 -0
  99. package/dist/mcp/dispatch.js.map +1 -0
  100. package/dist/mcp/help.d.ts +57 -0
  101. package/dist/mcp/help.js +136 -0
  102. package/dist/mcp/help.js.map +1 -0
  103. package/dist/mcp/http.d.ts +96 -0
  104. package/dist/mcp/http.js +368 -0
  105. package/dist/mcp/http.js.map +1 -0
  106. package/dist/mcp/index.d.ts +15 -0
  107. package/dist/mcp/index.js +9 -0
  108. package/dist/mcp/index.js.map +1 -0
  109. package/dist/mcp/install.d.ts +17 -0
  110. package/dist/mcp/install.js +36 -0
  111. package/dist/mcp/install.js.map +1 -0
  112. package/dist/mcp/mrtr.d.ts +82 -0
  113. package/dist/mcp/mrtr.js +130 -0
  114. package/dist/mcp/mrtr.js.map +1 -0
  115. package/dist/mcp/server.d.ts +63 -0
  116. package/dist/mcp/server.js +210 -0
  117. package/dist/mcp/server.js.map +1 -0
  118. package/dist/mcp/stdio.d.ts +75 -0
  119. package/dist/mcp/stdio.js +222 -0
  120. package/dist/mcp/stdio.js.map +1 -0
  121. package/dist/principal.d.ts +16 -0
  122. package/dist/principal.js +24 -0
  123. package/dist/principal.js.map +1 -0
  124. package/dist/registry.d.ts +90 -0
  125. package/dist/registry.js +169 -0
  126. package/dist/registry.js.map +1 -0
  127. package/dist/remote/browser.d.ts +15 -0
  128. package/dist/remote/browser.js +47 -0
  129. package/dist/remote/browser.js.map +1 -0
  130. package/dist/remote/client.d.ts +113 -0
  131. package/dist/remote/client.js +312 -0
  132. package/dist/remote/client.js.map +1 -0
  133. package/dist/remote/credentials.d.ts +48 -0
  134. package/dist/remote/credentials.js +196 -0
  135. package/dist/remote/credentials.js.map +1 -0
  136. package/dist/remote/index.d.ts +8 -0
  137. package/dist/remote/index.js +5 -0
  138. package/dist/remote/index.js.map +1 -0
  139. package/dist/remote/oauth.d.ts +186 -0
  140. package/dist/remote/oauth.js +507 -0
  141. package/dist/remote/oauth.js.map +1 -0
  142. package/dist/scan.d.ts +34 -0
  143. package/dist/scan.js +155 -0
  144. package/dist/scan.js.map +1 -0
  145. package/dist/start.d.ts +63 -0
  146. package/dist/start.js +269 -0
  147. package/dist/start.js.map +1 -0
  148. package/dist/suggest.d.ts +7 -0
  149. package/dist/suggest.js +45 -0
  150. package/dist/suggest.js.map +1 -0
  151. package/dist/version.d.ts +4 -0
  152. package/dist/version.js +13 -0
  153. package/dist/version.js.map +1 -0
  154. package/package.json +49 -4
  155. package/README.md +0 -3
@@ -0,0 +1,107 @@
1
+ import type { InputSchema } from "../command.ts";
2
+ import { MextError, type ArgumentIssue, type BuildIssue } from "../errors.ts";
3
+ import type { JsonSchema, RegisteredCommand, Registry } from "../registry.ts";
4
+ /**
5
+ * CLI 입력 변환 (spec §4).
6
+ * 필드 종류는 Zod def 로, 설명 · 기본값 · 필수 여부는 input JSON Schema 로 판단한다.
7
+ * 파서는 문자열을 객체로 모으기만 하고 (스키마 모양에 따른 number · boolean · enum 변환 포함) 검증은 invoke 의 Zod safeParse 1회.
8
+ */
9
+ export type Primitive = string | number | boolean;
10
+ export type ScalarKind = {
11
+ type: "string";
12
+ } | {
13
+ type: "number";
14
+ } | {
15
+ type: "boolean";
16
+ } | {
17
+ type: "enum";
18
+ values: readonly Primitive[];
19
+ };
20
+ export type FieldKind = ScalarKind
21
+ /** 원시 타입 배열. 플래그 반복 */
22
+ | {
23
+ type: "array";
24
+ item: ScalarKind;
25
+ }
26
+ /** z.object 1단. 점 플래그 (--filter.status) 또는 JSON 문자열 */
27
+ | {
28
+ type: "object";
29
+ fields: readonly CliField[];
30
+ }
31
+ /** 2단 이상 · union · record 등. JSON 문자열 */
32
+ | {
33
+ type: "json";
34
+ };
35
+ export interface CliField {
36
+ /** input 키 (camelCase) */
37
+ key: string;
38
+ /** 플래그 이름 (kebab-case, "--" 제외) */
39
+ flag: string;
40
+ kind: FieldKind;
41
+ description: string | undefined;
42
+ required: boolean;
43
+ hasDefault: boolean;
44
+ default: unknown;
45
+ }
46
+ export interface CliSpec {
47
+ fields: readonly CliField[];
48
+ /** positional 로 받는 input 키 순서 */
49
+ positional: readonly string[];
50
+ }
51
+ /** mext run 이 명령어 플래그 위치에서도 가로채는 플래그. input 키와 겹치면 빌드 오류 */
52
+ export declare const RESERVED_FLAGS: readonly string[];
53
+ export interface ParsedArgs {
54
+ /** invoke 에 넘길 원본 입력 (검증 전) */
55
+ input: unknown;
56
+ json: boolean;
57
+ yes: boolean;
58
+ help: boolean;
59
+ }
60
+ export interface ParseArgsOptions {
61
+ /** stdin (-) · --input-json - 입력. 기본 = 빈 문자열 */
62
+ readStdin?: () => Promise<string>;
63
+ }
64
+ /** camelCase → kebab-case (userId → user-id · URLPath → url-path) */
65
+ export declare function toKebab(key: string): string;
66
+ /**
67
+ * input 스키마 → CLI 필드. problems = 변환 불가 (any · 함수 등) · 플래그로 쓸 수 없는 키 · 플래그 충돌 · 예약 플래그.
68
+ * jsonSchema = input JSON Schema (io input). 설명 · 기본값 · 필수 여부의 원본
69
+ */
70
+ export declare function analyzeInput(schema: InputSchema, jsonSchema: JsonSchema | undefined, positional?: readonly string[]): {
71
+ spec: CliSpec;
72
+ problems: string[];
73
+ };
74
+ /**
75
+ * Registry 밖 명령어 (원격 help 로 만든 항목) 의 CLI 필드 지정. 이후 cliSpec · parseArgs · help 가 이 값을 쓴다.
76
+ * 로컬 명령어는 Zod 스키마로 분석하므로 쓰지 않는다
77
+ */
78
+ export declare function defineCliSpec(entry: RegisteredCommand, spec: CliSpec): void;
79
+ /**
80
+ * input JSON Schema (원격 help 의 inputSchema) → CLI 필드. 로컬 (Zod) 분석과 같은 규칙을 JSON Schema 모양으로:
81
+ * type string · number · integer · boolean · enum · const · 리터럴 anyOf = 원시, nullable (anyOf null) 은 벗김,
82
+ * 원시 배열 = 반복, 최상위 1단 객체 (하위 전부 원시 · 원시 배열) = 점 플래그, 그 외 = JSON 문자열.
83
+ * 플래그로 쓸 수 없는 키 · 예약 플래그 · 충돌 키는 건너뛴다 (--input-json 으로 전달)
84
+ */
85
+ export declare function cliSpecFromJsonSchema(jsonSchema: JsonSchema, positional?: readonly string[]): CliSpec;
86
+ /** 명령어의 CLI 필드 (캐시) */
87
+ export declare function cliSpec(entry: RegisteredCommand): CliSpec;
88
+ /** Registry 전체의 CLI 변환 불가 문제 (빌드 오류 issues) */
89
+ export declare function cliBuildIssues(registry: Registry): BuildIssue[];
90
+ /** 변환 불가 타입이 있으면 MextBuildError */
91
+ export declare function assertCliConvertible(registry: Registry): void;
92
+ /** 원시 · 배열 · 객체 · JSON 필드 종류에 맞춘 문자열 변환. JSON 파싱 실패 = undefined (호출자가 오류) */
93
+ export declare function coerceValue(kind: FieldKind, raw: string): {
94
+ ok: true;
95
+ value: unknown;
96
+ } | {
97
+ ok: false;
98
+ };
99
+ /** 파서 단계 INVALID_ARGUMENT */
100
+ export declare function argumentError(entry: RegisteredCommand, issues: ArgumentIssue[]): MextError<"INVALID_ARGUMENT">;
101
+ /**
102
+ * 명령어 경로 뒤의 argv → 원본 입력.
103
+ * --flag v · --flag=v · boolean --x · --x=true|false · --no-x · 반복 (배열) · --obj.key v · JSON 문자열 ·
104
+ * --input-json <json|-> · - (stdin) · positional · -- 이후 = positional. 모르는 플래그는 항상 오류.
105
+ * 개별 플래그는 --input-json · stdin 입력의 같은 키를 덮어쓴다 (점 플래그는 객체 안에 병합).
106
+ */
107
+ export declare function parseArgs(entry: RegisteredCommand, argv: readonly string[], options?: ParseArgsOptions): Promise<ParsedArgs>;