mimi-seed 0.19.11 → 0.19.13

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.
@@ -3,8 +3,7 @@ import {
3
3
  cmdSetup,
4
4
  parseSetupArgs,
5
5
  resolveMode
6
- } from "./chunk-UKNCSE4V.js";
7
- import "./chunk-TQHLWSFR.js";
6
+ } from "./chunk-YIVIN2XR.js";
8
7
  export {
9
8
  cmdSetup,
10
9
  parseSetupArgs,
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "mimi-seed",
3
- "version": "0.19.11",
4
- "description": "Mimi Seed CLI \u2014 Claude Code\uc640 Codex\uc5d0\uc11c \uc571 \ucd9c\uc2dc \uc6b4\uc601\uc744 \uad00\ub9ac\ud569\ub2c8\ub2e4.",
3
+ "keywords": ["release-doctor", "expo", "react-native", "unity", "google-play", "app-store", "release-readiness", "mcp", "cli"],
4
+ "version": "0.19.13",
5
+ "description": "Release Doctor: check Expo, React Native and Unity release risks before connecting app stores.",
5
6
  "bin": {
6
7
  "mimi-seed": "dist/index.js"
7
8
  },
@@ -1,56 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- catalog
4
- } from "./chunk-TQHLWSFR.js";
5
-
6
- // src/mcp-client.ts
7
- var M = catalog(
8
- { noSseData: "MCP SSE \uC751\uB2F5\uC5D0 data \uC5C6\uC74C" },
9
- { noSseData: "No data in the MCP SSE response" }
10
- );
11
- async function mcpCall(endpoint, token, name, args) {
12
- const res = await fetch(endpoint, {
13
- method: "POST",
14
- headers: {
15
- "Content-Type": "application/json",
16
- Accept: "application/json, text/event-stream",
17
- Authorization: `Bearer ${token}`
18
- },
19
- body: JSON.stringify({
20
- jsonrpc: "2.0",
21
- id: 1,
22
- method: "tools/call",
23
- params: { name, arguments: args }
24
- })
25
- });
26
- if (!res.ok) {
27
- const raw = await res.text();
28
- let msg = raw;
29
- try {
30
- const parsed = JSON.parse(raw);
31
- if (typeof parsed.error === "string") msg = parsed.error;
32
- } catch {
33
- }
34
- return { text: `HTTP ${res.status}: ${msg}`, isError: true };
35
- }
36
- const contentType = res.headers.get("content-type") ?? "";
37
- let payload;
38
- if (contentType.includes("text/event-stream")) {
39
- const text2 = await res.text();
40
- const line = text2.split("\n").map((l) => l.trim()).find((l) => l.startsWith("data:"));
41
- if (!line) throw new Error(M().noSseData);
42
- payload = JSON.parse(line.slice(5).trim());
43
- } else {
44
- payload = await res.json();
45
- }
46
- if (payload.error) {
47
- return { text: payload.error.message, isError: true };
48
- }
49
- const content = payload.result?.content ?? [];
50
- const text = content.filter((c) => c.type === "text").map((c) => c.text ?? "").join("\n");
51
- return { text, isError: payload.result?.isError ?? false };
52
- }
53
-
54
- export {
55
- mcpCall
56
- };
@@ -1,260 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- // src/settings.ts
4
- import fs from "fs";
5
- import os from "os";
6
- import path from "path";
7
- var DEFAULT_LANG = "ko";
8
- function settingsPath(home) {
9
- return path.join(home, ".mimi-seed", "settings.json");
10
- }
11
- function readSettings(home = os.homedir()) {
12
- try {
13
- return JSON.parse(fs.readFileSync(settingsPath(home), "utf-8"));
14
- } catch {
15
- return {};
16
- }
17
- }
18
- function writeSettings(next, home = os.homedir()) {
19
- const dir = path.join(home, ".mimi-seed");
20
- fs.mkdirSync(dir, { recursive: true, mode: 448 });
21
- const merged = { ...readSettings(home), ...next };
22
- fs.writeFileSync(settingsPath(home), JSON.stringify(merged, null, 2));
23
- }
24
- function isLangUnset(home = os.homedir()) {
25
- return !process.env.MIMI_SEED_LANG && !readSettings(home).lang;
26
- }
27
- function isLang(v) {
28
- return v === "ko" || v === "en";
29
- }
30
- function resolveLang(home = os.homedir()) {
31
- const env = process.env.MIMI_SEED_LANG?.toLowerCase();
32
- if (isLang(env)) return env;
33
- const saved = readSettings(home).lang;
34
- if (isLang(saved)) return saved;
35
- return DEFAULT_LANG;
36
- }
37
-
38
- // src/i18n.ts
39
- function catalog(ko2, en2) {
40
- return () => resolveLang() === "en" ? en2 : ko2;
41
- }
42
- var ko = {
43
- common: {
44
- yes: "y",
45
- optional: "\uC120\uD0DD",
46
- required: "\uD544\uC218",
47
- skip: "\uAC74\uB108\uB700",
48
- cancelled: "\uCDE8\uC18C\uB428",
49
- unknownCommand: (cmd) => `\uC54C \uC218 \uC5C6\uB294 \uBA85\uB839: ${cmd}`,
50
- error: (msg) => `\uC624\uB958: ${msg}`,
51
- checkWith: "\uC810\uAC80: mimi-seed doctor"
52
- },
53
- lang: {
54
- ask: " \uC5B8\uC5B4\uB97C \uC120\uD0DD\uD574\uC918 [1] \uD55C\uAD6D\uC5B4 [2] English (\uC5D4\uD130=\uD55C\uAD6D\uC5B4): ",
55
- saved: (l) => ` \u2705 \uC5B8\uC5B4: ${l === "ko" ? "\uD55C\uAD6D\uC5B4" : "English"} (\uB098\uC911\uC5D0 \uBC14\uAFB8\uAE30: mimi-seed lang en)`,
56
- usage: `${"mimi-seed lang"} \u2014 CLI \uCD9C\uB825 \uC5B8\uC5B4
57
-
58
- mimi-seed lang \uD604\uC7AC \uC5B8\uC5B4 \uD45C\uC2DC
59
- mimi-seed lang ko \uD55C\uAD6D\uC5B4
60
- mimi-seed lang en English
61
-
62
- \uD658\uACBD\uBCC0\uC218 MIMI_SEED_LANG \uAC00 \uC788\uC73C\uBA74 \uADF8\uAC8C \uC6B0\uC120\uD569\uB2C8\uB2E4.`,
63
- current: (l) => `\uD604\uC7AC \uC5B8\uC5B4: ${l === "ko" ? "\uD55C\uAD6D\uC5B4 (ko)" : "English (en)"}`,
64
- invalid: (v) => `\uC54C \uC218 \uC5C6\uB294 \uC5B8\uC5B4: ${v} (ko \uB610\uB294 en)`
65
- },
66
- setup: {
67
- title: "mimi-seed setup",
68
- platformsDetected: (p) => ` \uAC10\uC9C0\uB41C \uD50C\uB7AB\uD3FC: ${p}`,
69
- statusTitle: "\uC5F0\uACB0 \uC0C1\uD0DC",
70
- statusDir: "(~/.mimi-seed)",
71
- groupCore: "\uD575\uC2EC",
72
- groupCi: "\uBE4C\uB4DC / CI",
73
- groupMarketing: "\uB9C8\uCF00\uD305 \xB7 AI",
74
- fallbackWorking: "\uD3F4\uBC31\uC73C\uB85C \uB3D9\uC791 \uC911",
75
- missingRequired: " \uD544\uC218 \uD56D\uBAA9 \uB204\uB77D:",
76
- cannotInteract: " \u2717 \uC774 \uC790\uACA9\uC99D\uBA85\uC740 \uB300\uD654\uD615 \uC785\uB825\uC774 \uD544\uC694\uD574\uC11C \uC5EC\uAE30\uC11C\uB294 \uC124\uC815\uD560 \uC218 \uC5C6\uC5B4:",
77
- cannotInteractHint: " \uD130\uBBF8\uB110\uC5D0\uC11C \uC2E4\uD589\uD574\uC918 (Git Bash \uB4F1 TTY \uBBF8\uAC10\uC9C0 \uD658\uACBD\uC774\uBA74 --interactive).",
78
- runInTerminal: " \uB300\uD654\uD615\uC73C\uB85C \uC5F0\uACB0\uD558\uB824\uBA74 \uD130\uBBF8\uB110\uC5D0\uC11C: mimi-seed setup (Git Bash/mintty \uB294 TTY \uBBF8\uAC10\uC9C0 \u2014 --interactive \uB97C \uBD99\uC774\uAC70\uB098 PowerShell \uC5D0\uC11C)",
79
- onlyAlreadyDone: " \u2705 \uC694\uCCAD\uD55C \uD56D\uBAA9\uC740 \uC774\uBBF8 \uC5F0\uACB0\uB3FC \uC788\uC5B4.",
80
- onlyReconnectHint: " \uB2E4\uC2DC \uC124\uC815\uD558\uB824\uBA74: mimi-seed setup --reconnect <id>",
81
- tokenExpired: "\uD1A0\uD070 \uB9CC\uB8CC \u2014 \uB2E4\uC2DC \uC5F0\uACB0 \uD544\uC694",
82
- tokenExpiring: (days) => `\uD1A0\uD070 ${days}\uC77C \uD6C4 \uB9CC\uB8CC \u2014 \uC9C0\uAE08 \uAC31\uC2E0 \uAD8C\uC7A5`,
83
- allDone: " \u2705 \uC5F0\uACB0\uD560 \uAC8C \uB354 \uC5C6\uC5B4. \uB2E4 \uB410\uB2E4.",
84
- planCount: (n) => ` ${n}\uAC1C \uD56D\uBAA9\uC744 \uC21C\uC11C\uB300\uB85C \uBB3C\uC5B4\uBCFC\uAC8C. \uC5B8\uC81C\uB4E0 s=\uAC74\uB108\uB6F0\uAE30, q=\uC885\uB8CC.`,
85
- prompt: " [c] \uC5F0\uACB0 [s] \uAC74\uB108\uB6F0\uAE30 [?] \uC774\uAC74 \uC5B4\uB5BB\uAC8C \uAD6C\uD558\uB098\uC694 [q] \uC885\uB8CC : ",
86
- promptInvalid: " c / s / ? / q \uC911\uC5D0\uC11C \uACE8\uB77C\uC918.",
87
- quit: " \uC911\uB2E8\uD588\uC5B4. \uC774\uC5B4\uC11C \uD558\uB824\uBA74 \uB2E4\uC2DC: mimi-seed setup",
88
- skipped: (fix) => ` \uAC74\uB108\uB700. \uB098\uC911\uC5D0: ${fix}`,
89
- obtainTitle: (label) => ` ${label} \u2014 \uBBF8\uB9AC \uC900\uBE44\uD560 \uAC83`,
90
- obtainMore: (anchor) => ` \uC790\uC138\uD788: docs/credentials.md#${anchor}`,
91
- neededFor: (platform) => `(${platform} \uBC30\uD3EC\uC5D0 \uD544\uC694)`,
92
- binFailed: (label, code, fix) => ` \u26A0 ${label} \uC124\uC815\uC774 \uC644\uB8CC\uB418\uC9C0 \uC54A\uC558\uC5B4 (exit ${code}). \uB098\uC911\uC5D0 \uB2E4\uC2DC: ${fix}`,
93
- verifying: " \u{1F50E} \uD1A0\uD070 \uAC80\uC99D \uC911...",
94
- verifyFailed: (reason) => ` \u274C \uD1A0\uD070 \uAC80\uC99D \uC2E4\uD328: ${reason}`,
95
- notSaved: (fix) => ` \uC800\uC7A5\uD558\uC9C0 \uC54A\uC558\uC5B4. \uB2E4\uC2DC: ${fix}`,
96
- ciSaved: (label, who) => ` \u2705 ${label} \uC5F0\uACB0\uB428${who} \u2192 ~/.mimi-seed/ci.json`,
97
- runSeparately: (cmd) => ` \uC774\uAC74 \uBCC4\uB3C4 \uBA85\uB839\uC73C\uB85C \uC2E4\uD589\uD574\uC918: ${cmd}`,
98
- envVar: " \uD658\uACBD\uBCC0\uC218\uB85C \uC124\uC815\uD558\uB294 \uD56D\uBAA9\uC774\uC57C:",
99
- pressEnter: " (\uC5D4\uD130\uB97C \uB204\uB974\uBA74 \uACC4\uC18D) ",
100
- stillMissing: " \uC544\uC9C1 \uD544\uC218 \uD56D\uBAA9\uC774 \uB0A8\uC544 \uC788\uC5B4:",
101
- requiredDone: " \u2705 \uD544\uC218 \uC5F0\uACB0 \uC644\uB8CC.",
102
- nextSteps: " \uC810\uAC80: mimi-seed doctor \xB7 \uBC30\uD3EC: mimi-seed deploy",
103
- tryPrompt: ' \uCCAB \uD504\uB86C\uD504\uD2B8 \u2014 Claude Code / Codex \uC0C8 \uC138\uC158\uC5D0\uC11C: "\uB0B4 \uC571 \uCD9C\uC2DC \uC900\uBE44\uB410\uC5B4?"'
104
- },
105
- doctor: {
106
- title: "mimi-seed doctor",
107
- secAuth: "\uC778\uC99D",
108
- secCreds: "\uB85C\uCEEC \uC790\uACA9\uC99D\uBA85 (~/.mimi-seed)",
109
- secEnv: "\uB85C\uCEEC \uD658\uACBD",
110
- secApps: "\uC571 \uAC10\uC9C0",
111
- noToken: "Mimi Seed \uD1A0\uD070 \uC5C6\uC74C",
112
- noTokenFix: "`mimi-seed init` \uC2E4\uD589 \uD544\uC694",
113
- tokenSaved: "\uD1A0\uD070 \uC800\uC7A5\uB428",
114
- endpoint: "\uC5D4\uB4DC\uD3EC\uC778\uD2B8",
115
- ciMode: "CI \uBAA8\uB4DC",
116
- ciModeDetail: "MIMI_SEED_TOKEN \uD658\uACBD\uBCC0\uC218 \uC0AC\uC6A9 \uC911",
117
- tokenInvalid: "\uD1A0\uD070 \uAC80\uC99D \uC2E4\uD328",
118
- serverOk: "Mimi Seed \uC11C\uBC84 \uC5F0\uACB0\uB428",
119
- appCount: (n) => `\uC571 ${n}\uAC1C`,
120
- unknownService: (id) => `${id} (\uC54C \uC218 \uC5C6\uB294 \uC11C\uBE44\uC2A4)`,
121
- credentialMismatch: (field, expected, actual) => `${field} \uBD88\uC77C\uCE58 \u2014 \uC694\uAD6C\uAC12 ${expected}, \uD604\uC7AC\uAC12 ${actual ?? "\uC5C6\uC74C"}`,
122
- credsHint: " \uC804\uBD80 \uC5F0\uACB0\uD558\uAE30: mimi-seed setup \xB7 OAuth \uC2E0\uC120\uB3C4: mimi-seed auth status\n",
123
- nodeTooOld: (v) => `${v} \u2014 v20 \uC774\uC0C1 \uD544\uC694 (.nvmrc \uCC38\uACE0)`,
124
- gitRepo: "Git \uC800\uC7A5\uC18C",
125
- gitTag: (t2) => `\uCD5C\uC2E0 \uD0DC\uADF8: ${t2}`,
126
- gitCommits: (n) => `\uCEE4\uBC0B ${n}\uAC1C`,
127
- noGit: "Git \uC800\uC7A5\uC18C \uC5C6\uC74C",
128
- noGitDetail: "mimi-seed notes \uC0AC\uC6A9 \uBD88\uAC00",
129
- noApp: "\uC571 \uAC10\uC9C0 \uC5C6\uC74C",
130
- noAppDetail: "Expo / Gradle / Xcode / Unity \uC571 \uC124\uC815 \uC5C6\uC74C",
131
- unnamed: "(\uC774\uB984 \uBBF8\uC0C1)",
132
- requirements: (proj) => `${proj} \uC694\uAD6C\uC0AC\uD56D (.mimi-seed.json)`,
133
- thisProject: "\uC774 \uD504\uB85C\uC81D\uD2B8"
134
- },
135
- auth: {
136
- title: "mimi-seed auth \u2014 \uB85C\uCEEC \uC790\uACA9\uC99D\uBA85 \uC778\uC99D/\uAD00\uB9AC",
137
- statusTitle: "\uB85C\uCEEC \uC790\uACA9\uC99D\uBA85 \uC0C1\uD0DC",
138
- connectAll: "\n \uD55C \uBC88\uC5D0 \uC5F0\uACB0: mimi-seed setup",
139
- unknownSub: (sub) => `\uC54C \uC218 \uC5C6\uB294 auth \uC11C\uBE0C\uBA85\uB839: ${sub}`,
140
- npxFailed: (cmd, msg) => `
141
- \u274C ${cmd} \uC2E4\uD589 \uC2E4\uD328: ${msg}
142
- `
143
- }
144
- };
145
- var en = {
146
- common: {
147
- yes: "y",
148
- optional: "optional",
149
- required: "required",
150
- skip: "skipped",
151
- cancelled: "Cancelled",
152
- unknownCommand: (cmd) => `Unknown command: ${cmd}`,
153
- error: (msg) => `Error: ${msg}`,
154
- checkWith: "Check with: mimi-seed doctor"
155
- },
156
- lang: {
157
- ask: " Choose a language [1] \uD55C\uAD6D\uC5B4 [2] English (Enter = \uD55C\uAD6D\uC5B4): ",
158
- saved: (l) => ` \u2705 Language: ${l === "ko" ? "\uD55C\uAD6D\uC5B4" : "English"} (change later: mimi-seed lang ko)`,
159
- usage: `mimi-seed lang \u2014 CLI output language
160
-
161
- mimi-seed lang show current language
162
- mimi-seed lang ko \uD55C\uAD6D\uC5B4
163
- mimi-seed lang en English
164
-
165
- MIMI_SEED_LANG takes precedence when set.`,
166
- current: (l) => `Current language: ${l === "ko" ? "\uD55C\uAD6D\uC5B4 (ko)" : "English (en)"}`,
167
- invalid: (v) => `Unknown language: ${v} (use ko or en)`
168
- },
169
- setup: {
170
- title: "mimi-seed setup",
171
- platformsDetected: (p) => ` Detected platforms: ${p}`,
172
- statusTitle: "Connection status",
173
- statusDir: "(~/.mimi-seed)",
174
- groupCore: "Core",
175
- groupCi: "Build / CI",
176
- groupMarketing: "Marketing \xB7 AI",
177
- fallbackWorking: "working via fallback",
178
- missingRequired: " Missing required:",
179
- cannotInteract: " \u2717 These need interactive input and cannot be set up here:",
180
- cannotInteractHint: " Run it in a terminal (add --interactive if your shell hides the TTY, e.g. Git Bash).",
181
- runInTerminal: " To connect interactively, run: mimi-seed setup (Git Bash/mintty hide the TTY \u2014 add --interactive, or use PowerShell)",
182
- onlyAlreadyDone: " \u2705 What you asked for is already connected.",
183
- onlyReconnectHint: " To redo it: mimi-seed setup --reconnect <id>",
184
- tokenExpired: "token expired \u2014 reconnect required",
185
- tokenExpiring: (days) => `token expires in ${days} day(s) \u2014 refresh now`,
186
- allDone: " \u2705 Nothing left to connect. You're set.",
187
- planCount: (n) => ` I'll walk you through ${n} item(s). s = skip, q = quit, anytime.`,
188
- prompt: " [c] connect [s] skip [?] how do I get this [q] quit : ",
189
- promptInvalid: " Please choose c / s / ? / q.",
190
- quit: " Stopped. To pick up where you left off: mimi-seed setup",
191
- skipped: (fix) => ` Skipped. Later: ${fix}`,
192
- obtainTitle: (label) => ` ${label} \u2014 what to get first`,
193
- obtainMore: (anchor) => ` Details: docs/credentials.md#${anchor}`,
194
- neededFor: (platform) => `(needed to ship to ${platform})`,
195
- binFailed: (label, code, fix) => ` \u26A0 ${label} was not completed (exit ${code}). Try again later: ${fix}`,
196
- verifying: " \u{1F50E} Verifying token...",
197
- verifyFailed: (reason) => ` \u274C Token verification failed: ${reason}`,
198
- notSaved: (fix) => ` Nothing was saved. Retry: ${fix}`,
199
- ciSaved: (label, who) => ` \u2705 ${label} connected${who} \u2192 ~/.mimi-seed/ci.json`,
200
- runSeparately: (cmd) => ` Run this one separately: ${cmd}`,
201
- envVar: " This one is set through an environment variable:",
202
- pressEnter: " (press Enter to continue) ",
203
- stillMissing: " Still missing, and required:",
204
- requiredDone: " \u2705 All required credentials connected.",
205
- nextSteps: " Check: mimi-seed doctor \xB7 Ship: mimi-seed deploy",
206
- tryPrompt: ' First prompt \u2014 in a new Claude Code / Codex session: "Is my app ready to ship?"'
207
- },
208
- doctor: {
209
- title: "mimi-seed doctor",
210
- secAuth: "Account",
211
- secCreds: "Local credentials (~/.mimi-seed)",
212
- secEnv: "Environment",
213
- secApps: "App detection",
214
- noToken: "No Mimi Seed token",
215
- noTokenFix: "run `mimi-seed init`",
216
- tokenSaved: "Token stored",
217
- endpoint: "Endpoint",
218
- ciMode: "CI mode",
219
- ciModeDetail: "using MIMI_SEED_TOKEN",
220
- tokenInvalid: "Token rejected",
221
- serverOk: "Connected to Mimi Seed",
222
- appCount: (n) => `${n} app(s)`,
223
- unknownService: (id) => `${id} (unknown service)`,
224
- credentialMismatch: (field, expected, actual) => `${field} mismatch \u2014 expected ${expected}, current ${actual ?? "missing"}`,
225
- credsHint: " Connect everything: mimi-seed setup \xB7 OAuth freshness: mimi-seed auth status\n",
226
- nodeTooOld: (v) => `${v} \u2014 v20+ required (see .nvmrc)`,
227
- gitRepo: "Git repository",
228
- gitTag: (t2) => `latest tag: ${t2}`,
229
- gitCommits: (n) => `${n} commit(s)`,
230
- noGit: "Not a git repository",
231
- noGitDetail: "mimi-seed notes is unavailable",
232
- noApp: "No app detected",
233
- noAppDetail: "no Expo / Gradle / Xcode / Unity app configuration",
234
- unnamed: "(unnamed)",
235
- requirements: (proj) => `${proj} requirements (.mimi-seed.json)`,
236
- thisProject: "This project"
237
- },
238
- auth: {
239
- title: "mimi-seed auth \u2014 local credential setup",
240
- statusTitle: "Local credential status",
241
- connectAll: "\n Connect everything at once: mimi-seed setup",
242
- unknownSub: (sub) => `Unknown auth subcommand: ${sub}`,
243
- npxFailed: (cmd, msg) => `
244
- \u274C Failed to run ${cmd}: ${msg}
245
- `
246
- }
247
- };
248
- var CATALOGS = { ko, en };
249
- function t() {
250
- return CATALOGS[resolveLang()];
251
- }
252
-
253
- export {
254
- writeSettings,
255
- isLangUnset,
256
- isLang,
257
- resolveLang,
258
- catalog,
259
- t
260
- };
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env node
2
- import {
3
- mcpCall
4
- } from "./chunk-2FKWHED2.js";
5
- import "./chunk-TQHLWSFR.js";
6
- export {
7
- mcpCall
8
- };