@team-semicolon/semo-cli 3.0.21 → 3.0.23

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 (2) hide show
  1. package/dist/index.js +50 -16
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -375,16 +375,23 @@ const EXTENSION_PACKAGES = {
375
375
  // Meta
376
376
  meta: { name: "Meta", desc: "SEMO 프레임워크 자체 개발/관리", layer: "meta", detect: ["semo-core", "semo-skills"] },
377
377
  };
378
- // 레거시 패키지 패키지 매핑 (하위호환성)
379
- const LEGACY_MAPPING = {
380
- next: "eng/nextjs",
381
- backend: "eng/spring",
378
+ // 단축명전체 패키지 경로 매핑
379
+ const SHORTNAME_MAPPING = {
380
+ // 하위 패키지명 단축 (discovery → biz/discovery)
381
+ discovery: "biz/discovery",
382
+ design: "biz/design",
383
+ management: "biz/management",
384
+ poc: "biz/poc",
385
+ nextjs: "eng/nextjs",
386
+ spring: "eng/spring",
382
387
  ms: "eng/ms",
383
388
  infra: "eng/infra",
384
389
  qa: "ops/qa",
385
- po: "biz/discovery",
386
- pm: "biz/management",
387
- design: "biz/design",
390
+ monitor: "ops/monitor",
391
+ improve: "ops/improve",
392
+ // 추가 별칭
393
+ next: "eng/nextjs",
394
+ backend: "eng/spring",
388
395
  mvp: "biz/poc",
389
396
  };
390
397
  // 그룹 이름 목록 (biz, eng, ops)
@@ -411,9 +418,9 @@ function resolvePackageInput(input) {
411
418
  groupName = part;
412
419
  continue;
413
420
  }
414
- // 2. 레거시 매핑 확인
415
- if (part in LEGACY_MAPPING) {
416
- resolvedPackages.push(LEGACY_MAPPING[part]);
421
+ // 2. 단축명 매핑 확인 (discovery → biz/discovery 등)
422
+ if (part in SHORTNAME_MAPPING) {
423
+ resolvedPackages.push(SHORTNAME_MAPPING[part]);
417
424
  continue;
418
425
  }
419
426
  // 3. 직접 패키지명 확인
@@ -759,6 +766,33 @@ program
759
766
  extensionsToInstall = detected;
760
767
  }
761
768
  }
769
+ else {
770
+ // 프로젝트 유형이 감지되지 않은 경우 패키지 선택 프롬프트
771
+ console.log(chalk_1.default.cyan("\n📦 추가 패키지 선택"));
772
+ console.log(chalk_1.default.gray(" 기본 설치 (semo-core + semo-skills) 외에 추가할 패키지를 선택하세요.\n"));
773
+ // 그룹별로 패키지 구성
774
+ const packageChoices = [
775
+ new inquirer_1.default.Separator(chalk_1.default.yellow("── Engineering ──")),
776
+ { name: `eng/nextjs - ${EXTENSION_PACKAGES["eng/nextjs"].desc}`, value: "eng/nextjs" },
777
+ { name: `eng/spring - ${EXTENSION_PACKAGES["eng/spring"].desc}`, value: "eng/spring" },
778
+ { name: `eng/infra - ${EXTENSION_PACKAGES["eng/infra"].desc}`, value: "eng/infra" },
779
+ new inquirer_1.default.Separator(chalk_1.default.yellow("── Business ──")),
780
+ { name: `biz/discovery - ${EXTENSION_PACKAGES["biz/discovery"].desc}`, value: "biz/discovery" },
781
+ { name: `biz/management - ${EXTENSION_PACKAGES["biz/management"].desc}`, value: "biz/management" },
782
+ { name: `biz/design - ${EXTENSION_PACKAGES["biz/design"].desc}`, value: "biz/design" },
783
+ new inquirer_1.default.Separator(chalk_1.default.yellow("── Operations ──")),
784
+ { name: `ops/qa - ${EXTENSION_PACKAGES["ops/qa"].desc}`, value: "ops/qa" },
785
+ ];
786
+ const { selectedPackages } = await inquirer_1.default.prompt([
787
+ {
788
+ type: "checkbox",
789
+ name: "selectedPackages",
790
+ message: "설치할 패키지 선택 (Space로 선택, Enter로 완료):",
791
+ choices: packageChoices,
792
+ },
793
+ ]);
794
+ extensionsToInstall = selectedPackages;
795
+ }
762
796
  // 3. .claude 디렉토리 생성
763
797
  const claudeDir = path.join(cwd, ".claude");
764
798
  if (!fs.existsSync(claudeDir)) {
@@ -2091,7 +2125,7 @@ program
2091
2125
  console.log(chalk_1.default.red(`\n알 수 없는 패키지: ${packagesInput}`));
2092
2126
  console.log(chalk_1.default.gray(`사용 가능한 그룹: ${PACKAGE_GROUPS.join(", ")}`));
2093
2127
  console.log(chalk_1.default.gray(`사용 가능한 패키지: ${Object.keys(EXTENSION_PACKAGES).join(", ")}`));
2094
- console.log(chalk_1.default.gray(`레거시 별칭: ${Object.keys(LEGACY_MAPPING).join(", ")}\n`));
2128
+ console.log(chalk_1.default.gray(`단축명: ${Object.keys(SHORTNAME_MAPPING).join(", ")}\n`));
2095
2129
  process.exit(1);
2096
2130
  }
2097
2131
  // 그룹 설치인 경우 안내
@@ -2205,12 +2239,12 @@ program
2205
2239
  console.log(chalk_1.default.gray(" semo add eng → Engineering 전체 (nextjs, spring, ms, infra)"));
2206
2240
  console.log(chalk_1.default.gray(" semo add ops → Operations 전체 (qa, monitor, improve)"));
2207
2241
  console.log();
2208
- // 레거시 호환성 안내
2242
+ // 단축명 안내
2209
2243
  console.log(chalk_1.default.gray("─".repeat(50)));
2210
- console.log(chalk_1.default.gray("레거시 명령어도 지원됩니다:"));
2211
- console.log(chalk_1.default.gray(" semo add next eng/nextjs"));
2212
- console.log(chalk_1.default.gray(" semo add backend eng/spring"));
2213
- console.log(chalk_1.default.gray(" semo add mvp biz/poc\n"));
2244
+ console.log(chalk_1.default.white.bold(" 단축명 지원"));
2245
+ console.log(chalk_1.default.gray(" semo add discovery biz/discovery"));
2246
+ console.log(chalk_1.default.gray(" semo add qa ops/qa"));
2247
+ console.log(chalk_1.default.gray(" semo add nextjs eng/nextjs\n"));
2214
2248
  });
2215
2249
  // === status 명령어 ===
2216
2250
  program
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@team-semicolon/semo-cli",
3
- "version": "3.0.21",
3
+ "version": "3.0.23",
4
4
  "description": "SEMO CLI - AI Agent Orchestration Framework Installer",
5
5
  "main": "dist/index.js",
6
6
  "bin": {