project-auto-wizard 0.12.1 → 0.12.2

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.
package/README.md CHANGED
@@ -15,7 +15,7 @@ npx project-auto-wizard
15
15
  [![node](https://img.shields.io/badge/node-%3E%3D20.12-brightgreen)](package.json)
16
16
 
17
17
  <!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->
18
- ## 최신 버전 : v0.12.0 (2026-09-24)
18
+ ## 최신 버전 : v0.12.1 (2026-09-26)
19
19
 
20
20
  [전체 버전 기록 보기](CHANGELOG.md)
21
21
 
@@ -195,7 +195,7 @@ flowchart LR
195
195
 
196
196
  - 기본값은 **규칙 기반 요약**입니다. 설치 마법사에서 Copilot을 켜면(`--copilot`, `version.yml`의 `copilot_ai: true`) Actions의 `GITHUB_TOKEN` + `permissions: copilot-requests: write`로 Copilot CLI가 요약을 생성합니다 — 별도 API 키는 필요 없습니다.
197
197
  - **Copilot은 GitHub Copilot AI Credits를 소비합니다.** 개인 저장소는 저장소 소유자의 Copilot 좌석에, 조직 저장소는 조직에 과금되며 조직은 "Allow use of Copilot CLI billed to the organization" 정책을 켜야 합니다. 사용할 수 없으면 자동으로 규칙 기반 요약으로 전환됩니다. PR에 푸시할 때마다 요약이 새로 생성되므로 그만큼 크레딧이 소비됩니다.
198
- - Copilot 모델은 저비용 소형 모델(`claude-haiku-4.5`)로 고정되어 있고, 저장소 변수 `COPILOT_MODEL`로 바꿀 수 있습니다.
198
+ - Copilot은 항상 `auto` 모델 선택으로 호출됩니다. Copilot Free·Student 계정은 모델명을 직접 지정하는 호출이 거부되고 `auto`만 허용되기 때문에, 모델을 바꾸는 옵션은 제공하지 않습니다.
199
199
  - GitHub은 Copilot CLI를 `run` 스텝에서 직접 호출하기보다 Agentic Workflows를 쓰라고 권고하지만, 이 프로젝트는 직접 호출을 택했습니다. 프롬프트 입력이 PR 제목·커밋 메시지·`git diff --stat`뿐이고, 빈 임시 디렉터리에서 shell/write/url 도구와 내장 MCP를 모두 막은 텍스트 생성 전용으로 호출하며, 포크 PR은 기존 가드로 건너뛰어 프롬프트 인젝션 위험을 낮췄기 때문입니다.
200
200
  - `AI_API_KEY`(**Secret**)와 `AI_API_BASE_URL`·`AI_MODEL`(**Variables**)을 **모두** 설정하면 OpenAI-호환 엔드포인트(Groq, Gemini 호환 모드, Ollama 등)를 최우선으로 사용합니다. 셋 중 하나라도 없으면 이 단계는 건너뜁니다.
201
201
  - 규칙 fallback 3단: 프로젝트 컨벤션 → Conventional Commits → 무형식 bullet. 커밋 컨벤션이 없어도 동작.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "project-auto-wizard",
3
- "version": "0.12.1",
3
+ "version": "0.12.2",
4
4
  "description": "One command DevOps: npx wizard that installs GitHub-native Release Automation (optional GitHub Copilot AI summaries) into any project",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -694,7 +694,8 @@ def cmd_export_release_notes(version: str, output_path: str | None) -> int:
694
694
 
695
695
  # ------------------------ ai-summary 엔진 체인 ------------------------
696
696
 
697
- _COPILOT_DEFAULT_MODEL = "claude-haiku-4.5"
697
+ # Copilot Free/Student 계정은 모델명 지정이 거부되고 auto 모델 선택만 허용된다 (#153).
698
+ _COPILOT_MODEL = "auto"
698
699
  _COPILOT_TIMEOUT_SECONDS = 90
699
700
 
700
701
 
@@ -729,14 +730,13 @@ def call_copilot_cli(prompt: str) -> str:
729
730
  빈 임시 디렉터리에서 실행하고, shell/write/url 도구를 거부하며, 내장 MCP와
730
731
  커스텀 지침 로딩을 끈다.
731
732
  실패(비정상 종료·타임아웃·CLI 없음)는 예외로 올려 호출부가 fallback한다."""
732
- model = os.environ.get('COPILOT_MODEL') or _COPILOT_DEFAULT_MODEL
733
733
  with tempfile.TemporaryDirectory() as workdir:
734
734
  result = subprocess.run(
735
735
  [
736
736
  'copilot', '-p', prompt, '-s',
737
737
  '--no-ask-user', '--no-color', '--no-custom-instructions', '--disable-builtin-mcps',
738
738
  '--deny-tool=shell', '--deny-tool=write', '--deny-tool=url',
739
- '--model', model,
739
+ '--model', _COPILOT_MODEL,
740
740
  ],
741
741
  cwd=workdir, stdin=subprocess.DEVNULL,
742
742
  capture_output=True, text=True, timeout=_COPILOT_TIMEOUT_SECONDS,
@@ -69,7 +69,6 @@ jobs:
69
69
  AI_MODEL: ${{ vars.AI_MODEL }}
70
70
  GITHUB_TOKEN: ${{ github.token }}
71
71
  COPILOT_AI: ${{ steps.copilot_options.outputs.copilot_ai }}
72
- COPILOT_MODEL: ${{ vars.COPILOT_MODEL }}
73
72
  run: |
74
73
  PR_NUMBER=${{ github.event.pull_request.number }}
75
74
  VERSION=$(python3 .github/scripts/version_manager.py get 2>/dev/null | tail -n 1)
@@ -34,7 +34,7 @@
34
34
  # {{MAIN_BRANCH}}-push workflows (e.g. RELEASE-PUBLISH) for that merge.
35
35
  # - secrets.AI_API_KEY (+ vars.AI_API_BASE_URL / vars.AI_MODEL, all three
36
36
  # required together): preferred summary engine. Falls back to Copilot CLI
37
- # (only when version.yml copilot_ai is true; optional vars.COPILOT_MODEL),
37
+ # (only when version.yml copilot_ai is true; always uses auto model selection),
38
38
  # then to rule-based.
39
39
  #
40
40
  # Without WORKFLOW_PAT, a wait-for-merge-and-trigger-release job
@@ -163,7 +163,6 @@ jobs:
163
163
  AI_MODEL: ${{ vars.AI_MODEL }}
164
164
  GITHUB_TOKEN: ${{ github.token }}
165
165
  COPILOT_AI: ${{ steps.copilot_options.outputs.copilot_ai }}
166
- COPILOT_MODEL: ${{ vars.COPILOT_MODEL }}
167
166
  run: |
168
167
  # Idempotency: if the PR head is already this workflow's own
169
168
  # version-confirm commit (re-run / synchronize retrigger), do not
@@ -200,7 +199,6 @@ jobs:
200
199
  AI_MODEL: ${{ vars.AI_MODEL }}
201
200
  GITHUB_TOKEN: ${{ github.token }}
202
201
  COPILOT_AI: ${{ steps.copilot_options.outputs.copilot_ai }}
203
- COPILOT_MODEL: ${{ vars.COPILOT_MODEL }}
204
202
  run: |
205
203
  VERSION=$(python3 .github/scripts/version_manager.py get | tail -n 1)
206
204
 
@@ -190,7 +190,6 @@ jobs:
190
190
  AI_MODEL: ${{ vars.AI_MODEL }}
191
191
  GITHUB_TOKEN: ${{ github.token }}
192
192
  COPILOT_AI: ${{ steps.copilot_options.outputs.copilot_ai }}
193
- COPILOT_MODEL: ${{ vars.COPILOT_MODEL }}
194
193
  run: |
195
194
  # Idempotency: on a re-run of a failed job the checked-out HEAD may
196
195
  # already be this workflow's own docs commit — never bump twice.