geobuke-code 0.2.3 → 0.2.4
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 +3 -1
- package/dist/cli.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -61,6 +61,8 @@ gbc init
|
|
|
61
61
|
|
|
62
62
|
> ⚠️ **native Windows에선 API 키를 권장한다.** 키 없는 `claude -p` 폴백도 지원하지만(win32에선 `claude.cmd` 실행을 위해 셸 경유, 프롬프트는 인젝션 회피로 stdin 전달, 무응답 방지 kill-timeout), 폴백은 느리므로(~13–20s) 위 키 파일로 API 경로(~1–3s)를 쓰는 편이 빠르고 확실하다.
|
|
63
63
|
|
|
64
|
+
> 🔒 **회사·보안통제(EDR/그룹정책) 환경에선 API 키가 사실상 필수다.** native Windows에서 `claude.exe`가 EDR·정책에 막히면(증상: `claude exited 1: 액세스가 거부되었습니다`), 키 없는 `claude -p` 폴백 호출이 매번 실패해 게이트가 **조용히 fail-open**된다 — 게이트가 느려지는 게 아니라 **꺼진다**(`.gbc/failopen.log`에 누적). 이때 `ANTHROPIC_API_KEY`(또는 키 파일)를 설정하면 CLI spawn을 건너뛰고 직접 API로 판정하므로 **막힌 환경에서도 게이트가 살아 있다**. 즉 이 경우 키는 속도가 아니라 **게이트 작동 자체**의 문제다. (깨끗한 native Windows에선 keyless 폴백도 정상 동작함이 검증됨 — 실패는 환경의 CLI 차단에서 비롯된다.)
|
|
65
|
+
|
|
64
66
|
키 해석 순서: `ANTHROPIC_API_KEY` 환경변수 > `~/.gbc/api-key` 파일.
|
|
65
67
|
|
|
66
68
|
```bash
|
|
@@ -98,7 +100,7 @@ phase-protocol/계획 → /plan(SubTask) → 【게이트: 구현 직전 케이
|
|
|
98
100
|
| **코드 변경 직전** | PreToolUse (`Edit\|Write\|MultiEdit`) | 명세 ↔ 변경 ↔ defer 대조 → 통과(침묵)/차단(시나리오 도출 지시)/fail-open |
|
|
99
101
|
| **작업단위당 1회** | (PreToolUse 캐시) | 같은 명세 해시 내에선 첫 편집만 판정, 이후 통과 → 매 편집 지연 회피 |
|
|
100
102
|
| **응답 종료** | Stop | 계측 flush(`events.jsonl`) |
|
|
101
|
-
| **업데이트 필요 시** | (PreToolUse·SessionStart
|
|
103
|
+
| **업데이트 필요 시** | (PreToolUse·SessionStart) | hook 구버전(②) 또는 신버전 출시(①)면 갱신 안내. PreToolUse는 세션당 1회(`systemMessage` 비차단), SessionStart는 진입 시 표시. `gbc status`는 캐시만 갱신하고 안내는 **표시하지 않는다**(명시 진단 명령). 게이트 통과/차단 동작은 불변 |
|
|
102
104
|
|
|
103
105
|
> 세션 진입 알림만 끄려면 `GBC_NO_SESSION_HINT=1`. 업데이트 안내만 끄려면 `GBC_NO_UPDATE_NOTICE=1`.
|
|
104
106
|
> 프로젝트 hook이 구식이거나(SessionStart 누락·옛 명령) 새 버전이 나오면 gbc가 감지해 `gbc init --yes` 재실행 또는 `npm i -g geobuke-code@latest`를 안내한다. PreToolUse 경로로도 알리므로 "설치만 하고 init 안 한" 경우에도 도달한다.
|
package/dist/cli.js
CHANGED
|
@@ -10,7 +10,7 @@ import { loadState, resetGate } from "./state.js";
|
|
|
10
10
|
import { addDefer, loadDefers, resolveDefer } from "./defer.js";
|
|
11
11
|
import { selectedTransport } from "./judge.js";
|
|
12
12
|
import { buildPreCommand, normalizeHooks, ensureSessionStartHook } from "./install.js";
|
|
13
|
-
import { isCacheStale, readVersionCache, refreshVersionCache,
|
|
13
|
+
import { isCacheStale, readVersionCache, refreshVersionCache, } from "./version.js";
|
|
14
14
|
import { logEvent, parseEvents, computeMetrics } from "./metrics.js";
|
|
15
15
|
const CLI_PATH = fileURLToPath(import.meta.url);
|
|
16
16
|
const PKG_ROOT = join(dirname(CLI_PATH), ".."); // dist/cli.js → 패키지 루트
|
|
@@ -181,9 +181,9 @@ async function cmdStatus() {
|
|
|
181
181
|
if (unresolved.length > 0) {
|
|
182
182
|
console.log(unresolved.map((d, i) => ` ${i + 1}. ${d.item}`).join("\n"));
|
|
183
183
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
184
|
+
// 신버전 업데이트 안내(buildVersionNotice)는 여기서 출력하지 않는다 — 안내 자리는
|
|
185
|
+
// SessionStart·PreToolUse 자동 채널 전용이고, status는 명시 진단 명령이라 나그 부적절.
|
|
186
|
+
// (캐시 stale-refresh는 위에서 유지: SessionStart seed 신선도 목적, 표시와 무관.)
|
|
187
187
|
}
|
|
188
188
|
// ---------- gbc defer ----------
|
|
189
189
|
function cmdDefer(args) {
|