mimi-seed 0.13.19 → 0.14.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.
@@ -756,7 +756,7 @@ async function detectHints(cwd) {
756
756
  /<key>CFBundleIdentifier<\/key>\s*<string>([^<]+)<\/string>/
757
757
  );
758
758
  if (m?.[1]) {
759
- let bid = m[1];
759
+ const bid = m[1];
760
760
  if (bid.includes("$(PRODUCT_BUNDLE_IDENTIFIER)")) continue;
761
761
  if (!hints.some((h) => h.bundleId === bid)) {
762
762
  hints.push({ bundleId: bid, source: [path4.relative(cwd, f)] });
@@ -1360,7 +1360,7 @@ function resolveCi(ciOption, jenkins, ciProvider) {
1360
1360
  throw new Error(M2().noCiConfig);
1361
1361
  }
1362
1362
  async function runGitProviderBuild(cfg, args) {
1363
- let runUrl = "";
1363
+ let runUrl;
1364
1364
  let runId;
1365
1365
  if (cfg.provider === "github") {
1366
1366
  if (!args.workflow) {
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  runMcpBin,
23
23
  tryCredById,
24
24
  writeConfig
25
- } from "./chunk-3FZH2LZB.js";
25
+ } from "./chunk-XOELSMVF.js";
26
26
  import {
27
27
  catalog,
28
28
  isLang,
@@ -97,7 +97,8 @@ async function awaitHandshake(timeoutMs) {
97
97
  server.close();
98
98
  reject(new Error(M().timeout(timeoutMs / 1e3)));
99
99
  }, timeoutMs);
100
- promise.finally(() => clearTimeout(timer));
100
+ void promise.finally(() => clearTimeout(timer)).catch(() => {
101
+ });
101
102
  return { port, promise };
102
103
  }
103
104
 
@@ -432,6 +433,11 @@ async function cmdCheck(argv) {
432
433
  import { createInterface } from "readline/promises";
433
434
  import Anthropic from "@anthropic-ai/sdk";
434
435
  import kleur3 from "kleur";
436
+
437
+ // src/ai-model.ts
438
+ var CLI_AI_MODEL = "claude-haiku-4-5-20251001";
439
+
440
+ // src/notes.ts
435
441
  var M3 = catalog(
436
442
  {
437
443
  // Claude 프롬프트
@@ -570,8 +576,10 @@ async function generateWithClaude(commitsText, locales) {
570
576
  const client = new Anthropic({ apiKey: process.env.ANTHROPIC_API_KEY });
571
577
  const localeList = locales.map((l) => M3().localeHint(l)).join(",\n ");
572
578
  const response = await client.messages.create({
573
- model: "claude-haiku-4-5-20251001",
574
- max_tokens: 1500,
579
+ model: CLI_AI_MODEL,
580
+ // mcp-server 의 generateReleaseNotes 기본값과 같아야 한다 — 낮으면 다국어 JSON 이
581
+ // CLI 경로에서만 잘린다. ai-parity.test.ts 가 두 값의 일치를 강제한다.
582
+ max_tokens: 2e3,
575
583
  system: M3().system,
576
584
  messages: [{
577
585
  role: "user",
@@ -854,7 +862,7 @@ async function generateReply(opts) {
854
862
  const stars = opts.rating !== void 0 ? m.starsLabel(`${"\u2605".repeat(opts.rating)}${"\u2606".repeat(5 - opts.rating)}`, opts.rating) : "";
855
863
  const langName = localeNames[opts.language] ?? opts.language;
856
864
  const response = await client.messages.create({
857
- model: "claude-haiku-4-5-20251001",
865
+ model: CLI_AI_MODEL,
858
866
  max_tokens: 500,
859
867
  system: m.system(langName, toneGuide, opts.developerName ?? m.defaultDeveloper),
860
868
  messages: [{
@@ -1053,11 +1061,11 @@ async function cmdAuth(args) {
1053
1061
  if (sub === "jenkins") return void exitWith(await runMcpBin("mimi-seed-jenkins-auth", rest));
1054
1062
  if (sub === "googleads") return void exitWith(await runMcpBin("mimi-seed-googleads-auth", rest));
1055
1063
  if (sub === "meta") return void exitWith(await runMcpBin("mimi-seed-social-auth", ["all", ...rest]));
1056
- if (sub === "facebook") return void exitWith(await runMcpBin("mimi-seed-social-auth", ["facebook"]));
1064
+ if (sub === "facebook") return void exitWith(await runMcpBin("mimi-seed-social-auth", ["facebook", ...rest]));
1057
1065
  if (sub === "instagram") return void exitWith(await runMcpBin("mimi-seed-social-auth", ["instagram", ...rest]));
1058
1066
  if (sub === "threads") return void exitWith(await runMcpBin("mimi-seed-social-auth", ["threads", ...rest]));
1059
1067
  if (sub === "ci") {
1060
- const { cmdSetup: cmdSetup2 } = await import("./setup-VP5WRSXY.js");
1068
+ const { cmdSetup: cmdSetup2 } = await import("./setup-MH3XTOBW.js");
1061
1069
  await cmdSetup2(["--only", "github,gitlab", "--reconnect", "github,gitlab"]);
1062
1070
  return;
1063
1071
  }
@@ -1118,32 +1126,17 @@ async function cmdLang(args) {
1118
1126
  }
1119
1127
 
1120
1128
  // src/cloud.ts
1121
- import { spawn } from "child_process";
1122
- var MCP_PKG2 = "@yoonion/mimi-seed-mcp";
1123
- async function runMcpBin2(bin, extraArgs) {
1124
- return new Promise((resolve) => {
1125
- const child = spawn("npx", ["-y", `${MCP_PKG2}`, bin, ...extraArgs], {
1126
- stdio: "inherit",
1127
- shell: true
1128
- });
1129
- child.on("error", (e) => {
1130
- process.stderr.write(t().auth.npxFailed("npx", e.message));
1131
- resolve(1);
1132
- });
1133
- child.on("exit", (code) => resolve(code ?? 0));
1134
- });
1135
- }
1136
1129
  function exitWith2(code) {
1137
1130
  if (code !== 0) process.exit(code);
1138
1131
  }
1139
1132
  async function cmdFirebase(args) {
1140
- exitWith2(await runMcpBin2("mimi-seed-firebase", args));
1133
+ exitWith2(await runMcpBin("mimi-seed-firebase", args));
1141
1134
  }
1142
1135
  async function cmdAdmob(args) {
1143
- exitWith2(await runMcpBin2("mimi-seed-admob", args));
1136
+ exitWith2(await runMcpBin("mimi-seed-admob", args));
1144
1137
  }
1145
1138
  async function cmdGa4(args) {
1146
- exitWith2(await runMcpBin2("mimi-seed-ga4", args));
1139
+ exitWith2(await runMcpBin("mimi-seed-ga4", args));
1147
1140
  }
1148
1141
 
1149
1142
  // src/mcp-restart.ts
@@ -1213,7 +1206,7 @@ function killByMarker(marker) {
1213
1206
  const isWin = os.platform() === "win32";
1214
1207
  if (isWin) {
1215
1208
  const escaped = marker.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
1216
- let pids = [];
1209
+ let pids;
1217
1210
  try {
1218
1211
  const out = execSync2(
1219
1212
  `powershell -NoProfile -Command "Get-WmiObject Win32_Process | Where-Object { $_.CommandLine -like '*${escaped}*' } | Select-Object -ExpandProperty ProcessId"`,
@@ -1357,7 +1350,7 @@ async function writeCodexMcpConfig(cfg) {
1357
1350
  const configDir = path2.join(os2.homedir(), ".codex");
1358
1351
  const configPath = path2.join(configDir, "config.toml");
1359
1352
  await fs2.mkdir(configDir, { recursive: true });
1360
- let current = "";
1353
+ let current;
1361
1354
  try {
1362
1355
  current = await fs2.readFile(configPath, "utf8");
1363
1356
  } catch {
@@ -3,7 +3,7 @@ import {
3
3
  cmdSetup,
4
4
  parseSetupArgs,
5
5
  resolveMode
6
- } from "./chunk-3FZH2LZB.js";
6
+ } from "./chunk-XOELSMVF.js";
7
7
  import "./chunk-ZGMPOJRY.js";
8
8
  export {
9
9
  cmdSetup,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mimi-seed",
3
- "version": "0.13.19",
4
- "description": "Mimi Seed CLI Claude Code Codex에서 출시 운영을 관리합니다.",
3
+ "version": "0.14.1",
4
+ "description": "Mimi Seed CLI \u2014 Claude Code\uc640 Codex\uc5d0\uc11c \uc571 \ucd9c\uc2dc \uc6b4\uc601\uc744 \uad00\ub9ac\ud569\ub2c8\ub2e4.",
5
5
  "bin": {
6
6
  "mimi-seed": "dist/index.js"
7
7
  },
@@ -20,8 +20,10 @@
20
20
  "scripts": {
21
21
  "build": "tsup",
22
22
  "dev": "tsx src/index.ts",
23
- "test": "vitest run",
24
- "test:watch": "vitest"
23
+ "typecheck": "tsc --noEmit",
24
+ "test": "npm run typecheck && npm run lint && vitest run",
25
+ "test:watch": "vitest",
26
+ "lint": "eslint ."
25
27
  },
26
28
  "engines": {
27
29
  "node": ">=20"
@@ -32,10 +34,13 @@
32
34
  "open": "^10.1.0"
33
35
  },
34
36
  "devDependencies": {
37
+ "@eslint/js": "^10.0.1",
35
38
  "@types/node": "^20.11.0",
39
+ "eslint": "^10.8.0",
36
40
  "tsup": "^8.0.0",
37
41
  "tsx": "^4.7.0",
38
42
  "typescript": "^5.4.0",
43
+ "typescript-eslint": "^8.65.0",
39
44
  "vitest": "^4.1.5"
40
45
  },
41
46
  "publishConfig": {