@simplysm/sd-cli 12.6.9 → 12.7.3

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,4 +1,3 @@
1
1
  export declare class SdAiCommand {
2
- #private;
3
- static commitAsync(): Promise<void>;
2
+ static commitMessageAsync(): Promise<void>;
4
3
  }
@@ -2,8 +2,8 @@ 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
- static async commitAsync() {
6
- if (StringUtil.isNullOrEmpty(process.env['ANTHROPIC_API_KEY'])) {
5
+ static async commitMessageAsync() {
6
+ if (StringUtil.isNullOrEmpty(process.env["ANTHROPIC_API_KEY"])) {
7
7
  throw new Error("ANTHROPIC_API_KEY 환경변수가 설정되어 있지 않습니다.");
8
8
  }
9
9
  process.stdout.write("실행중: git add .\n");
@@ -13,61 +13,37 @@ export class SdAiCommand {
13
13
  if (StringUtil.isNullOrEmpty(diff.trim())) {
14
14
  throw new Error("변경사항이 없습니다.");
15
15
  }
16
- const client = new Anthropic({ apiKey: process.env['ANTHROPIC_API_KEY'] });
16
+ const client = new Anthropic({ apiKey: process.env["ANTHROPIC_API_KEY"] });
17
17
  process.stdout.write("AI를 통해 커밋 메시지 생성중...\n");
18
18
  const message = await client.messages.create({
19
- model: 'claude-3-5-haiku-latest',
19
+ model: "claude-3-5-haiku-latest",
20
20
  max_tokens: 1024,
21
- system: "당신은 코드 리뷰 전문가입니다",
22
21
  messages: [
23
22
  {
24
23
  role: "user",
25
24
  content: `
26
- 다음 Git diff 분석하고 커밋메시지를 한글로 작성해 주세요:
25
+ 다음 Git diff 내용을 "packages"의 "서브디렉토리명"별로 분석하고, 각각에 대한 적절한 커밋메시지를 작성해줘
26
+ - "packages"의 "서브디렉토리명"별로 변경사항을 종합해서 각각 하나의 적절한 커밋메시지를 작성해줘.
27
+ - "packages"폴더의 내용이 아닌 변경사항이 있는경우, 해당 변경사항은 "프로젝트"로 적절한 커밋메시지를 작성해줘.
28
+ - "packages"폴더의 내용이 아닌 변경사항이 없는경우, "프로젝트" 커밋메시지는 필요 없어
29
+ - 각각의 커밋메시지는 코드블록으로 감싸서 답변해줘.
27
30
 
28
- Git diff 내용:
29
-
30
- ${diff}
31
-
32
- 답변방법:
33
- - 형식: <type>(<scope>): <description>
31
+ 커밋메시지를 작성하는 방법:
32
+ - 한국어로 작성
33
+ - 첫줄형식: <type>(<scope>): <description>
34
+ - 첫줄은 100자 이내로 요약
35
+ - 첫줄 아래 한줄 비우고, 자세한 설명 포함
34
36
  - 변경사항을 명확하고 간결하게 설명
35
- - 한글로 작성
36
37
  - 수동적인 표현 대신 능동적 표현 사용
37
- - packages폴더내 패키지별로 작성
38
- - 커밋메시지 텍스트만으로 답변`.trim(),
38
+
39
+ ${diff}`,
39
40
  },
40
41
  ],
41
42
  });
42
43
  if (message.content[0].type !== "text") {
43
44
  throw new NeverEntryError();
44
45
  }
45
- const messageText = message.content[0].text;
46
- process.stdout.write("커밋 메시지:\n----\n");
47
- process.stdout.write(messageText + "\n----\n");
48
- process.stdout.write("커밋 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
49
- await this.#waitInputEnterKey();
50
- process.stdout.write("커밋 중...\n");
51
- await SdProcess.spawnAsync(`git commit -m "${messageText}"`, { cwd: process.cwd() });
52
- process.stdout.write("커밋되었습니다. 푸쉬 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
53
- await this.#waitInputEnterKey();
54
- process.stdout.write("푸쉬 중...\n");
55
- await SdProcess.spawnAsync("git push", { cwd: process.cwd() });
56
- await SdProcess.spawnAsync("git push --tags", { cwd: process.cwd() });
57
- process.stdout.write("완료\n");
58
- process.exit(0);
59
- }
60
- static async #waitInputEnterKey() {
61
- await new Promise((resolve, reject) => {
62
- process.stdin.setRawMode(true);
63
- process.stdin.once("data", (key) => {
64
- process.stdin.setRawMode(false);
65
- if (key.toString() === "\r" || key.toString() === "\n")
66
- resolve();
67
- else
68
- reject(new Error("취소되었습니다."));
69
- });
70
- });
46
+ process.stdout.write(message.content[0].text);
71
47
  }
72
48
  }
73
49
  //# sourceMappingURL=SdAiCommand.js.map
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,kBAAkB;QAC7B,IAAI,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEhE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sHAAsH,CAAC,CAAC;QAC7I,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,UAAU,CACrC,8GAA8G,EAC9G,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CACvB,CAAC;QAEF,IAAI,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAE3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3C,KAAK,EAAE,yBAAyB;YAChC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE;;;;;;;;;;;;;;;EAejB,IAAI,EAAE;iBACC;aACF;SACF,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACvC,MAAM,IAAI,eAAe,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF"}
package/dist/sd-cli.js CHANGED
@@ -221,7 +221,7 @@ else if (argv._[0] === "run-cordova") {
221
221
  });
222
222
  }
223
223
  else if (argv._[0] === "commit") {
224
- await SdAiCommand.commitAsync();
224
+ await SdAiCommand.commitMessageAsync();
225
225
  }
226
226
  else {
227
227
  throw new Error(`명령어가 잘못 되었습니다.\n\t${argv._[0]}\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"sd-cli.js","sourceRoot":"","sources":["../src/sd-cli.ts"],"names":[],"mappings":"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"}
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.9",
3
+ "version": "12.7.3",
4
4
  "description": "심플리즘 패키지 - CLI",
5
5
  "author": "김석래",
6
6
  "repository": {
@@ -22,23 +22,23 @@
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.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
- "browserslist": "^4.24.2",
25
+ "@simplysm/sd-core-common": "12.7.3",
26
+ "@simplysm/sd-core-node": "12.7.3",
27
+ "@simplysm/sd-service-server": "12.7.3",
28
+ "@simplysm/sd-storage": "12.7.3",
29
+ "browserslist": "^4.24.3",
30
30
  "cordova": "^12.0.0",
31
- "css-has-pseudo": "^7.0.1",
31
+ "css-has-pseudo": "^7.0.2",
32
32
  "electron": "^33.3.0",
33
33
  "electron-builder": "^25.1.8",
34
34
  "esbuild": "^0.24.0",
35
- "eslint": "^9.16.0",
35
+ "eslint": "^9.17.0",
36
36
  "glob": "^11.0.0",
37
37
  "jszip": "^3.10.1",
38
38
  "node-stdlib-browser": "^1.3.0",
39
39
  "postcss": "^8.4.49",
40
40
  "rxjs": "^7.8.1",
41
- "sass": "^1.82.0",
41
+ "sass": "^1.83.0",
42
42
  "semver": "^7.6.3",
43
43
  "specifier-resolution-node": "^1.1.4",
44
44
  "typescript": "~5.5.4",
@@ -3,8 +3,8 @@ import { NeverEntryError, StringUtil } from "@simplysm/sd-core-common";
3
3
  import Anthropic from "@anthropic-ai/sdk";
4
4
 
5
5
  export class SdAiCommand {
6
- static async commitAsync(): Promise<void> {
7
- if (StringUtil.isNullOrEmpty(process.env['ANTHROPIC_API_KEY'])) {
6
+ static async commitMessageAsync(): Promise<void> {
7
+ if (StringUtil.isNullOrEmpty(process.env["ANTHROPIC_API_KEY"])) {
8
8
  throw new Error("ANTHROPIC_API_KEY 환경변수가 설정되어 있지 않습니다.");
9
9
  }
10
10
 
@@ -21,66 +21,37 @@ export class SdAiCommand {
21
21
  throw new Error("변경사항이 없습니다.");
22
22
  }
23
23
 
24
- const client = new Anthropic({ apiKey: process.env['ANTHROPIC_API_KEY'] });
24
+ const client = new Anthropic({ apiKey: process.env["ANTHROPIC_API_KEY"] });
25
25
 
26
26
  process.stdout.write("AI를 통해 커밋 메시지 생성중...\n");
27
27
  const message = await client.messages.create({
28
- model: 'claude-3-5-haiku-latest',
28
+ model: "claude-3-5-haiku-latest",
29
29
  max_tokens: 1024,
30
- system: "당신은 코드 리뷰 전문가입니다",
31
30
  messages: [
32
31
  {
33
32
  role: "user",
34
33
  content: `
35
- 다음 Git diff 분석하고 커밋메시지를 한글로 작성해 주세요:
36
-
37
- Git diff 내용:
38
-
39
- ${diff}
40
-
41
- 답변방법:
42
- - 형식: <type>(<scope>): <description>
34
+ 다음 Git diff 내용을 "packages"의 "서브디렉토리명"별로 분석하고, 각각에 대한 적절한 커밋메시지를 작성해줘
35
+ - "packages"의 "서브디렉토리명"별로 변경사항을 종합해서 각각 하나의 적절한 커밋메시지를 작성해줘.
36
+ - "packages"폴더의 내용이 아닌 변경사항이 있는경우, 해당 변경사항은 "프로젝트"로 적절한 커밋메시지를 작성해줘.
37
+ - "packages"폴더의 내용이 아닌 변경사항이 없는경우, "프로젝트" 커밋메시지는 필요 없어
38
+ - 각각의 커밋메시지는 코드블록으로 감싸서 답변해줘.
39
+
40
+ 각 커밋메시지를 작성하는 방법:
41
+ - 한국어로 작성
42
+ - 첫줄형식: <type>(<scope>): <description>
43
+ - 첫줄은 100자 이내로 요약
44
+ - 첫줄 아래 한줄 비우고, 자세한 설명 포함
43
45
  - 변경사항을 명확하고 간결하게 설명
44
- - 한글로 작성
45
46
  - 수동적인 표현 대신 능동적 표현 사용
46
- - packages폴더내 패키지별로 작성
47
- - 커밋메시지 텍스트만으로 답변`.trim(),
47
+
48
+ ${diff}`,
48
49
  },
49
50
  ],
50
51
  });
51
52
  if (message.content[0].type !== "text") {
52
53
  throw new NeverEntryError();
53
54
  }
54
- const messageText = message.content[0].text;
55
-
56
- process.stdout.write("커밋 메시지:\n----\n");
57
- process.stdout.write(messageText + "\n----\n");
58
-
59
- process.stdout.write("커밋 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
60
- await this.#waitInputEnterKey();
61
-
62
- process.stdout.write("커밋 중...\n");
63
- await SdProcess.spawnAsync(`git commit -m "${messageText}"`, { cwd: process.cwd() });
64
-
65
- process.stdout.write("커밋되었습니다. 푸쉬 하려면 ENTER를 입력하세요. (취소: CTRL+C)\n\n");
66
- await this.#waitInputEnterKey();
67
-
68
- process.stdout.write("푸쉬 중...\n");
69
- await SdProcess.spawnAsync("git push", { cwd: process.cwd() });
70
- await SdProcess.spawnAsync("git push --tags", { cwd: process.cwd() });
71
-
72
- process.stdout.write("완료\n");
73
- process.exit(0);
74
- }
75
-
76
- static async #waitInputEnterKey(): Promise<void> {
77
- await new Promise<void>((resolve, reject) => {
78
- process.stdin.setRawMode(true);
79
- process.stdin.once("data", (key) => {
80
- process.stdin.setRawMode(false);
81
- if (key.toString() === "\r" || key.toString() === "\n") resolve();
82
- else reject(new Error("취소되었습니다."));
83
- });
84
- });
55
+ process.stdout.write(message.content[0].text);
85
56
  }
86
57
  }
package/src/sd-cli.ts CHANGED
@@ -246,7 +246,7 @@ else if (argv._[0] === "run-cordova") {
246
246
  });
247
247
  }
248
248
  else if (argv._[0] === "commit") {
249
- await SdAiCommand.commitAsync();
249
+ await SdAiCommand.commitMessageAsync();
250
250
  }
251
251
  else {
252
252
  throw new Error(`명령어가 잘못 되었습니다.\n\t${argv._[0]}\n`);