@simplysm/sd-cli 12.6.8 → 12.6.9

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.
@@ -1,43 +1,41 @@
1
- import { Logger, SdProcess } from "@simplysm/sd-core-node";
1
+ import { SdProcess } from "@simplysm/sd-core-node";
2
2
  import { NeverEntryError, StringUtil } from "@simplysm/sd-core-common";
3
3
  import Anthropic from "@anthropic-ai/sdk";
4
4
  export class SdAiCommand {
5
5
  static async commitAsync() {
6
- const logger = Logger.get(["simplysm", "sd-cli", "SdAiCommand", "commitAsync"]);
7
6
  if (StringUtil.isNullOrEmpty(process.env['ANTHROPIC_API_KEY'])) {
8
7
  throw new Error("ANTHROPIC_API_KEY 환경변수가 설정되어 있지 않습니다.");
9
8
  }
10
- logger.debug("$ git add .");
9
+ process.stdout.write("실행중: git add .\n");
11
10
  await SdProcess.spawnAsync("git add .", { cwd: process.cwd() });
12
- logger.debug(`$ git diff --staged -- . ":(exclude).*/" ":(exclude)_*/"`);
13
- const diff = await SdProcess.spawnAsync(`git diff --staged -- . ":(exclude).*" ":(exclude)_*"`, { cwd: process.cwd() });
11
+ process.stdout.write(`실행중: git diff --staged -- . ":(exclude).*/" ":(exclude)_*/ ":(exclude)yarn.lock" ":(exclude)packages/*/styles.css"\n`);
12
+ const diff = await SdProcess.spawnAsync(`git diff --staged -- . ":(exclude).*" ":(exclude)_*" ":(exclude)yarn.lock" ":(exclude)packages/*/styles.css"`, { cwd: process.cwd() });
13
+ if (StringUtil.isNullOrEmpty(diff.trim())) {
14
+ throw new Error("변경사항이 없습니다.");
15
+ }
14
16
  const client = new Anthropic({ apiKey: process.env['ANTHROPIC_API_KEY'] });
15
- logger.log("AI를 통해 문제점 파악 및 커밋 메시지 생성중...");
17
+ process.stdout.write("AI를 통해 커밋 메시지 생성중...\n");
16
18
  const message = await client.messages.create({
17
- model: 'claude-3-5-sonnet-latest',
19
+ model: 'claude-3-5-haiku-latest',
18
20
  max_tokens: 1024,
21
+ system: "당신은 코드 리뷰 전문가입니다",
19
22
  messages: [
20
- {
21
- role: "assistant",
22
- content: "당신은 코드 리뷰 전문가입니다. Git diff를 분석하고 문제점과 커밋 메시지를 동시에 생성하세요.",
23
- },
24
23
  {
25
24
  role: "user",
26
25
  content: `
27
- 다음 Git diff를 분석하고 가지를 한글로 작성해 주세요:
28
- 1. 코드 변경의 문제점 및 개선점
29
- 2. Conventional Commits 규약에 따른 명확한 커밋 메시지
26
+ 다음 Git diff를 분석하고 커밋메시지를 한글로 작성해 주세요:
30
27
 
31
- Git diff 내용:\n\n${diff}
28
+ Git diff 내용:
32
29
 
33
- 분석결과 생성 가이드:
34
- - 코드 품질, 잠재적 버그, 성능 이슈 확인
30
+ ${diff}
35
31
 
36
- 커밋 메시지 생성 가이드:
37
- - 변경 타입(feat, fix, refactor 등) 명시
38
- - 변경사항의 본질을 간결하게 요약
39
-
40
- 분석결과와 커밋메시지 사이에 "----"로 구분하기만 하고, 요청한 제목은 제외하고 답변하세요.`.trim(),
32
+ 답변방법:
33
+ - 형식: <type>(<scope>): <description>
34
+ - 변경사항을 명확하고 간결하게 설명
35
+ - 한글로 작성
36
+ - 수동적인 표현 대신 능동적 표현 사용
37
+ - packages폴더내 패키지별로 작성
38
+ - 커밋메시지 텍스트만으로 답변`.trim(),
41
39
  },
42
40
  ],
43
41
  });
@@ -45,23 +43,18 @@ Git diff 내용:\n\n${diff}
45
43
  throw new NeverEntryError();
46
44
  }
47
45
  const messageText = message.content[0].text;
48
- const parts = messageText.split('----');
49
- process.stdout.write("문제점 및 개선점:\n----\n");
50
- process.stdout.write(parts[0].trim() + "\n----\n");
51
- process.stdout.write("커밋 메시지를 확인하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
52
- await this.#waitInputEnterKey();
53
46
  process.stdout.write("커밋 메시지:\n----\n");
54
- process.stdout.write(parts[1].trim() + "\n----\n");
47
+ process.stdout.write(messageText + "\n----\n");
55
48
  process.stdout.write("커밋 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
56
49
  await this.#waitInputEnterKey();
57
- logger.log("커밋 중...");
58
- await SdProcess.spawnAsync(`git commit -m "${parts[1].trim()}"`, { cwd: process.cwd() });
50
+ process.stdout.write("커밋 중...\n");
51
+ await SdProcess.spawnAsync(`git commit -m "${messageText}"`, { cwd: process.cwd() });
59
52
  process.stdout.write("커밋되었습니다. 푸쉬 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
60
53
  await this.#waitInputEnterKey();
61
- logger.log("푸쉬 중...");
54
+ process.stdout.write("푸쉬 중...\n");
62
55
  await SdProcess.spawnAsync("git push", { cwd: process.cwd() });
63
56
  await SdProcess.spawnAsync("git push --tags", { cwd: process.cwd() });
64
- logger.info("완료");
57
+ process.stdout.write("완료\n");
65
58
  process.exit(0);
66
59
  }
67
60
  static async #waitInputEnterKey() {
@@ -1 +1 @@
1
- {"version":3,"file":"SdAiCommand.js","sourceRoot":"","sources":["../../src/entry/SdAiCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SdAiCommand.js","sourceRoot":"","sources":["../../src/entry/SdAiCommand.ts"],"names":[],"mappings":"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"}
package/dist/sd-cli.js CHANGED
@@ -155,7 +155,7 @@ const argv = (await yargs(hideBin(process.argv))
155
155
  describe: "Webview로 오픈할 URL",
156
156
  demandOption: true,
157
157
  }))
158
- .command("commit", "AI를 통해 변경사항에 대한 문제점을 파악하고, 커밋 메시지를 작성하여, 커밋을 수행합니다.")
158
+ .command("commit", "AI를 통해 변경사항에 대한 커밋 메시지를 작성하여, 커밋 및 푸쉬를 수행합니다.")
159
159
  .parseAsync());
160
160
  if (Boolean(argv.debug)) {
161
161
  process.env["SD_DEBUG"] = "true";
@@ -1 +1 @@
1
- {"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC;AACjC,YAAY,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;KACnB,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;KAClB,OAAO,CAAC;IACP,KAAK,EAAE;QACL,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,oBAAoB;QAC9B,OAAO,EAAE,KAAK;KACf;CACF,CAAC;KACD,OAAO,CAAC,cAAc,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,EAAE,CACxD,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,IAAI,CAAC,MAAM,CAAC;KACZ,IAAI,CAAC,OAAO,CAAC;KACb,OAAO,CAAC;IACP,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC,CACL;KACA,OAAO,CAAC,OAAO,EAAE,iCAAiC,EAAE,CAAC,GAAG,EAAE,EAAE,CAC3D,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,IAAI,CAAC,MAAM,CAAC;KACZ,IAAI,CAAC,OAAO,CAAC;KACb,OAAO,CAAC;IACP,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,wBAAwB;KACnC;CACF,CAAC,CACL;KACA,OAAO,CAAC,OAAO,EAAE,4BAA4B,EAAE,CAAC,GAAG,EAAE,EAAE,CACtD,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,IAAI,CAAC,MAAM,CAAC;KACZ,IAAI,CAAC,OAAO,CAAC;KACb,OAAO,CAAC;IACP,MAAM,EAAE;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC,CACL;KACA,OAAO,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE,CACjD,GAAG;KACA,OAAO,CAAC,KAAK,CAAC;KACd,IAAI,CAAC,MAAM,CAAC;KACZ,IAAI,CAAC,OAAO,CAAC;KACb,OAAO,CAAC;IACP,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,KAAK;KACf;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC,CACL;KACA,OAAO,CAAC,wBAAwB,EAAE,kCAAkC,EAAE,CAAC,GAAG,EAAE,EAAE,CAC7E,GAAG;KACA,UAAU,CAAC,SAAS,EAAE;IACrB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,OAAO,CAAC;IACP,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC,CACL;KACA,OAAO,CAAC,kCAAkC,EAAE,kCAAkC,EAAE,CAAC,GAAG,EAAE,EAAE,CACvF,GAAG;KACA,UAAU,CAAC,SAAS,EAAE;IACrB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,OAAO,CAAC;IACP,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,mBAAmB;KAC9B;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,OAAO;KAClB;CACF,CAAC,CACL;KACA,OAAO,CACN,wCAAwC,EACxC,mCAAmC,EACnC,CAAC,GAAG,EAAE,EAAE,CACN,GAAG;KACA,UAAU,CAAC,UAAU,EAAE;IACtB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,qBAAqB;IAC/B,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,UAAU,CAAC,SAAS,EAAE;IACrB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,MAAM;IAChB,YAAY,EAAE,IAAI;CACnB,CAAC;KACD,UAAU,CAAC,KAAK,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,kBAAkB;IAC5B,YAAY,EAAE,IAAI;CACnB,CAAC,CACP;KACA,OAAO,CACN,QAAQ,EACR,qDAAqD,CACtD;KACA,UAAU,EAAE,CAAQ,CAAC;AAExB,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,SAAS,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,cAAc,CAAC,KAAK;SAC5B;KACF,CAAC,CAAC;AACL,CAAC;KACI,CAAC;IACJ,MAAM,CAAC,SAAS,CAAC;QACf,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;AACL,CAAC;AAED,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;IACjC,MAAM,gBAAgB,CAAC,QAAQ,CAAC;QAC9B,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAC/B,MAAM,YAAY,CAAC,UAAU,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;KAClC,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IAC/B,MAAM,YAAY,CAAC,UAAU,CAAC;QAC5B,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;KAC9B,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;IACjC,MAAM,YAAY,CAAC,YAAY,CAAC;QAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;KAC9B,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,EAAE,CAAC;IACtC,MAAM,aAAa,CAAC,QAAQ,CAAC;QAC3B,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,wBAAwB,EAAE,CAAC;IAChD,MAAM,aAAa,CAAC,gBAAgB,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;QAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;IACrC,MAAM,YAAY,CAAC,uBAAuB,CAAC;QACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAC;AACL,CAAC;KACI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;IAChC,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;KACI,CAAC;IACJ,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "12.6.8",
3
+ "version": "12.6.9",
4
4
  "description": "심플리즘 패키지 - CLI",
5
5
  "author": "김석래",
6
6
  "repository": {
@@ -22,14 +22,14 @@
22
22
  "@angular/compiler-cli": "^18.2.13",
23
23
  "@anthropic-ai/sdk": "^0.32.1",
24
24
  "@electron/rebuild": "^3.7.1",
25
- "@simplysm/sd-core-common": "12.6.8",
26
- "@simplysm/sd-core-node": "12.6.8",
27
- "@simplysm/sd-service-server": "12.6.8",
28
- "@simplysm/sd-storage": "12.6.8",
25
+ "@simplysm/sd-core-common": "12.6.9",
26
+ "@simplysm/sd-core-node": "12.6.9",
27
+ "@simplysm/sd-service-server": "12.6.9",
28
+ "@simplysm/sd-storage": "12.6.9",
29
29
  "browserslist": "^4.24.2",
30
30
  "cordova": "^12.0.0",
31
31
  "css-has-pseudo": "^7.0.1",
32
- "electron": "^33.2.1",
32
+ "electron": "^33.3.0",
33
33
  "electron-builder": "^25.1.8",
34
34
  "esbuild": "^0.24.0",
35
35
  "eslint": "^9.16.0",
@@ -1,52 +1,50 @@
1
- import { Logger, SdProcess } from "@simplysm/sd-core-node";
1
+ import { SdProcess } from "@simplysm/sd-core-node";
2
2
  import { NeverEntryError, StringUtil } from "@simplysm/sd-core-common";
3
3
  import Anthropic from "@anthropic-ai/sdk";
4
4
 
5
5
  export class SdAiCommand {
6
6
  static async commitAsync(): Promise<void> {
7
- const logger = Logger.get(["simplysm", "sd-cli", "SdAiCommand", "commitAsync"]);
8
-
9
7
  if (StringUtil.isNullOrEmpty(process.env['ANTHROPIC_API_KEY'])) {
10
8
  throw new Error("ANTHROPIC_API_KEY 환경변수가 설정되어 있지 않습니다.");
11
9
  }
12
10
 
13
- logger.debug("$ git add .");
11
+ process.stdout.write("실행중: git add .\n");
14
12
  await SdProcess.spawnAsync("git add .", { cwd: process.cwd() });
15
13
 
16
- logger.debug(`$ git diff --staged -- . ":(exclude).*/" ":(exclude)_*/"`);
14
+ process.stdout.write(`실행중: git diff --staged -- . ":(exclude).*/" ":(exclude)_*/ ":(exclude)yarn.lock" ":(exclude)packages/*/styles.css"\n`);
17
15
  const diff = await SdProcess.spawnAsync(
18
- `git diff --staged -- . ":(exclude).*" ":(exclude)_*"`,
16
+ `git diff --staged -- . ":(exclude).*" ":(exclude)_*" ":(exclude)yarn.lock" ":(exclude)packages/*/styles.css"`,
19
17
  { cwd: process.cwd() },
20
18
  );
21
19
 
20
+ if (StringUtil.isNullOrEmpty(diff.trim())) {
21
+ throw new Error("변경사항이 없습니다.");
22
+ }
23
+
22
24
  const client = new Anthropic({ apiKey: process.env['ANTHROPIC_API_KEY'] });
23
25
 
24
- logger.log("AI를 통해 문제점 파악 및 커밋 메시지 생성중...");
26
+ process.stdout.write("AI를 통해 커밋 메시지 생성중...\n");
25
27
  const message = await client.messages.create({
26
- model: 'claude-3-5-sonnet-latest',
28
+ model: 'claude-3-5-haiku-latest',
27
29
  max_tokens: 1024,
30
+ system: "당신은 코드 리뷰 전문가입니다",
28
31
  messages: [
29
- {
30
- role: "assistant",
31
- content: "당신은 코드 리뷰 전문가입니다. Git diff를 분석하고 문제점과 커밋 메시지를 동시에 생성하세요.",
32
- },
33
32
  {
34
33
  role: "user",
35
34
  content: `
36
- 다음 Git diff를 분석하고 가지를 한글로 작성해 주세요:
37
- 1. 코드 변경의 문제점 및 개선점
38
- 2. Conventional Commits 규약에 따른 명확한 커밋 메시지
35
+ 다음 Git diff를 분석하고 커밋메시지를 한글로 작성해 주세요:
39
36
 
40
- Git diff 내용:\n\n${diff}
37
+ Git diff 내용:
41
38
 
42
- 분석결과 생성 가이드:
43
- - 코드 품질, 잠재적 버그, 성능 이슈 확인
39
+ ${diff}
44
40
 
45
- 커밋 메시지 생성 가이드:
46
- - 변경 타입(feat, fix, refactor 등) 명시
47
- - 변경사항의 본질을 간결하게 요약
48
-
49
- 분석결과와 커밋메시지 사이에 "----"로 구분하기만 하고, 요청한 제목은 제외하고 답변하세요.`.trim(),
41
+ 답변방법:
42
+ - 형식: <type>(<scope>): <description>
43
+ - 변경사항을 명확하고 간결하게 설명
44
+ - 한글로 작성
45
+ - 수동적인 표현 대신 능동적 표현 사용
46
+ - packages폴더내 패키지별로 작성
47
+ - 커밋메시지 텍스트만으로 답변`.trim(),
50
48
  },
51
49
  ],
52
50
  });
@@ -54,31 +52,24 @@ Git diff 내용:\n\n${diff}
54
52
  throw new NeverEntryError();
55
53
  }
56
54
  const messageText = message.content[0].text;
57
- const parts = messageText.split('----');
58
-
59
- process.stdout.write("문제점 및 개선점:\n----\n");
60
- process.stdout.write(parts[0].trim() + "\n----\n");
61
-
62
- process.stdout.write("커밋 메시지를 확인하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
63
- await this.#waitInputEnterKey();
64
55
 
65
56
  process.stdout.write("커밋 메시지:\n----\n");
66
- process.stdout.write(parts[1].trim() + "\n----\n");
57
+ process.stdout.write(messageText + "\n----\n");
67
58
 
68
59
  process.stdout.write("커밋 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
69
60
  await this.#waitInputEnterKey();
70
61
 
71
- logger.log("커밋 중...");
72
- await SdProcess.spawnAsync(`git commit -m "${parts[1].trim()}"`, { cwd: process.cwd() });
62
+ process.stdout.write("커밋 중...\n");
63
+ await SdProcess.spawnAsync(`git commit -m "${messageText}"`, { cwd: process.cwd() });
73
64
 
74
65
  process.stdout.write("커밋되었습니다. 푸쉬 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
75
66
  await this.#waitInputEnterKey();
76
67
 
77
- logger.log("푸쉬 중...");
68
+ process.stdout.write("푸쉬 중...\n");
78
69
  await SdProcess.spawnAsync("git push", { cwd: process.cwd() });
79
70
  await SdProcess.spawnAsync("git push --tags", { cwd: process.cwd() });
80
71
 
81
- logger.info("완료");
72
+ process.stdout.write("완료\n");
82
73
  process.exit(0);
83
74
  }
84
75
 
package/src/sd-cli.ts CHANGED
@@ -177,7 +177,7 @@ const argv = (await yargs(hideBin(process.argv))
177
177
  )
178
178
  .command(
179
179
  "commit",
180
- "AI를 통해 변경사항에 대한 문제점을 파악하고, 커밋 메시지를 작성하여, 커밋을 수행합니다.",
180
+ "AI를 통해 변경사항에 대한 커밋 메시지를 작성하여, 커밋 및 푸쉬를 수행합니다.",
181
181
  )
182
182
  .parseAsync()) as any;
183
183