pleumrouter 0.5.14 → 0.5.15

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
@@ -88,3 +88,15 @@ env(또는 격리된 `CODEX_HOME`/임시 설정 문자열)만 세팅하고 바
88
88
  npm test # node --test (의존성 0)
89
89
  npm link # 로컬에서 pleum 명령 노출
90
90
  ```
91
+
92
+ ## npm 게시 (운영)
93
+
94
+ 정상 경로는 **태그 → GitHub Actions** (`.github/workflows/publish-cli.yml`).
95
+
96
+ 1. `npm version patch` (또는 minor/major)로 `package.json` bump 후 커밋.
97
+ 2. `git tag cli-v$(node -p "require('./package.json').version")` → `git push origin HEAD --tags`.
98
+ 3. 워크플로가 `secrets.NPM_TOKEN`으로 `npm publish --provenance` 실행.
99
+
100
+ 태그 규칙: `cli-v{semver}` (예: `cli-v0.5.15`).
101
+
102
+ 로컬 `npm publish`는 GHA/SAS 불가 시 **비상만**. 토큰 유출 시 npm에서 즉시 Revoke.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pleumrouter",
3
- "version": "0.5.14",
3
+ "version": "0.5.15",
4
4
  "description": "Official PleumRouter terminal CLI — launch any coding agent against PleumRouter.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/balance.mjs CHANGED
@@ -10,5 +10,5 @@ export async function balance() {
10
10
  const data = await res.json();
11
11
  const plm = data.balance_krw;
12
12
  const usd = data.balance_usd != null ? ` / $${data.balance_usd.toFixed(4)}` : "";
13
- console.log(`잔액: ₩${plm.toLocaleString("ko-KR")}${usd}`);
13
+ console.log(`잔액: ${plm.toLocaleString("ko-KR")} 크레딧${usd}`);
14
14
  }
package/src/models.mjs CHANGED
@@ -45,7 +45,7 @@ export function fmtPrice(model) {
45
45
  if (v == null) return "—";
46
46
  const n = Number(v) * 1_000_000;
47
47
  if (!Number.isFinite(n)) return "—";
48
- return sym === "₩" ? `₩${Math.round(n).toLocaleString("en-US")}` : `$${n.toFixed(2)}`;
48
+ return sym === "₩" ? `${Math.round(n).toLocaleString("en-US")} 크레딧` : `$${n.toFixed(2)}`;
49
49
  };
50
50
  const kr = model.pricing_krw || {};
51
51
  if (kr.prompt != null || kr.completion != null) return [per1m(kr.prompt, "₩"), per1m(kr.completion, "₩")];
package/src/run.mjs CHANGED
@@ -165,7 +165,7 @@ export function buildContent(text, { attachments = [], lstat = lstatSync, read =
165
165
  // 응답 후 한 줄 통계(순수 함수 — 테스트 대상). verbose일 때만 토큰/속도 표시.
166
166
  export function formatStats({ cost, usage, ms, tokPerSec, verbose }) {
167
167
  const bits = [];
168
- if (cost != null && cost !== "") bits.push(`₩${fmtCost(cost)}`);
168
+ if (cost != null && cost !== "") bits.push(`${fmtCost(cost)} 크레딧`);
169
169
  if (verbose && usage) {
170
170
  bits.push(`↑${sanitizeTerminalText(usage.prompt_tokens ?? "?")} ↓${sanitizeTerminalText(usage.completion_tokens ?? "?")} tok`);
171
171
  if (tokPerSec) bits.push(`${tokPerSec.toFixed(1)} tok/s`);
package/src/usage.mjs CHANGED
@@ -19,7 +19,7 @@ export function parseUsageArgs(rest = []) {
19
19
  return { by, days };
20
20
  }
21
21
 
22
- const fmtKrw = (n) => `₩${Math.round(n).toLocaleString("en-US")}`;
22
+ const fmtKrw = (n) => `${Math.round(n).toLocaleString("en-US")} 크레딧`;
23
23
 
24
24
  // report 응답 → 표시 문자열(순수 함수 — fixture 테스트 대상).
25
25
  export function renderUsage(data, styler = style) {