deel-local-cli 1.20.7 → 1.20.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.
package/src/ui/office.js CHANGED
@@ -577,7 +577,21 @@ export function 상태만들기(session, 일감, 틱 = 0, 할일들 = [], 도는
577
577
  const s = session ?? {};
578
578
  const 쓴것 = s.usage ?? {};
579
579
  const 총토큰 = (쓴것.in ?? 0) + (쓴것.out ?? 0);
580
- const 창크기 = s.conn?.ctx ?? 0;
580
+ /*
581
+ * 창밖 하늘은 **지금 창이 얼마나 찼나**다. 상태줄 게이지와 같은 값을 봐야 한다.
582
+ *
583
+ * 앞서는 누적 토큰(in+out)으로 셌다. 그건 부를 때마다 늘기만 하는 값이라
584
+ * 지금 창과 아무 상관이 없다 — 32k 모델에서 도구를 열 번 부르면 42,000 이
585
+ * 되어 창이 1.00, 하늘이 **밤으로 굳는다.** 같은 화면 아래쪽 게이지는 18%
586
+ * 초록이었다. 「노을이면 슬슬 접을 때고 밤이면 이미 늦은 것」 이라고 아래
587
+ * 주석에 뜻을 못 박아 둔 신호가, 켠 직후부터 거짓말을 하고 있었다.
588
+ * `/clear` 로도 안 밝아진다 — 누적은 지우지 않으니까.
589
+ *
590
+ * breakdown() 은 상태줄이 이미 프레임마다 부르는 것이다(ui/status.js).
591
+ * 여기서 한 번 더 부르는 값은 그 자리에서 본 값과 **어긋나지 않는 것**이다.
592
+ */
593
+ const 예산 = typeof s.breakdown === 'function' ? s.breakdown() : null;
594
+ const 창비율 = 예산 && 예산.total > 0 ? Math.min(1, 예산.used / 예산.total) : 0;
581
595
 
582
596
  /*
583
597
  * 자리에 앉는 사람들.
@@ -658,7 +672,7 @@ export function 상태만들기(session, 일감, 틱 = 0, 할일들 = [], 도는
658
672
  할일: 할일들.filter((t) => t.state !== 'done').length,
659
673
  부른횟수: 쓴것.calls ?? 0,
660
674
  토큰: 총토큰,
661
- 창: 창크기 ? Math.min(1, 총토큰 / 창크기) : 0,
675
+ 창: 창비율,
662
676
  틱,
663
677
  };
664
678
  }
package/src/ui/status.js CHANGED
@@ -142,7 +142,11 @@ export const SEGMENTS = {
142
142
  get desc() { return 말('seg.ctx'); },
143
143
  make: (s) => {
144
144
  const { r, pct, tone, b } = 참값(s);
145
- return `${눈금게이지(r, 10, [FOLD_AT, COMPACT_AT])} ${tone(pct + '%')} ${c.gray(short(b.used) + '/' + short(b.total))}`;
145
+ // 크기를 서버가 알려 줬으면 `32k?` 적는다 바로 옆 모델 급이
146
+ // 짐작일 때 `◈ 보통?` 인 것과 같은 규칙이다. 짐작을 잰 것처럼 적으면,
147
+ // 실제 창이 8k 라서 답이 잘리는 동안에도 게이지는 초록이다.
148
+ const 창말 = short(b.total) + (b.총잰것 === false ? '?' : '');
149
+ return `${눈금게이지(r, 10, [FOLD_AT, COMPACT_AT])} ${tone(pct + '%')} ${c.gray(short(b.used) + '/' + 창말)}`;
146
150
  },
147
151
  // 자리가 모자라면 정확한 숫자를 접는다. 게이지와 %가 이미 같은 말을 하고 있다.
148
152
  short: (s) => {
@@ -222,7 +226,17 @@ export const SEGMENTS = {
222
226
  make: (s) => {
223
227
  const 돈 = 돈셈(s.usage, 세션요금(s));
224
228
  if (!돈 || !(돈.달러 > 0)) return null;
225
- return c.gray(돈말(돈.달러));
229
+ /*
230
+ * 확정된 금액이 아닐 때는 물음표를 붙인다.
231
+ *
232
+ * 두 가지가 그렇게 만든다. 창구가 usage 를 안 준 부름(`못잰것`)은 그
233
+ * 몫이 **덜 세어졌고**, 캐시를 썼는데 캐시 요금을 모르는 경우
234
+ * (`캐시모름`)는 제값으로 세어 **더 많게** 나온다. `/cost` 는 이미
235
+ * 둘 다 적는다 — 그런데 늘 떠 있는 이 자리가 더 확정적으로 보이면
236
+ * 사람은 이쪽을 믿는다. 두 화면이 다른 말을 하면 안 된다.
237
+ */
238
+ const 흐린가 = (s.usage?.못잰것 ?? 0) > 0 || 돈.캐시모름 === true;
239
+ return c.gray(돈말(돈.달러) + (흐린가 ? '?' : ''));
226
240
  },
227
241
  },
228
242
 
@@ -457,7 +471,16 @@ export function statusLine(session, { segments = null, max = cols() - 2 } = {})
457
471
  // 여전히 모자라면 뒤에서부터 떨군다. 앞쪽(폴더·모델·컨텍스트)이 마지막까지 남는다.
458
472
  while (parts.length > 1 && !맞나(parts)) parts.pop();
459
473
 
460
- return ` ${c.gray('▏')}${parts.join(칸막이)}`;
474
+ /*
475
+ * 덩이가 **하나만 남아도** 폭을 넘을 수 있다.
476
+ *
477
+ * 위 고리는 `parts.length > 1` 에서 멈추므로, 첫 덩이 하나가 폭보다 넓으면
478
+ * 그대로 나간다 — 30칸으로 좁힌 창에서 32칸이 나왔다. 넘친 줄은 터미널이
479
+ * 두 줄로 접는데 입력 상자는 한 줄로 세고, 그만큼 커서를 덜 올려 위쪽
480
+ * 대화를 한 줄씩 갉아먹는다(ui/inputbox.js 의 프레임).
481
+ */
482
+ const 줄 = ` ${c.gray('▏')}${parts.join(칸막이)}`;
483
+ return width(줄) > max ? clip(줄, max) : 줄;
461
484
  }
462
485
 
463
486
  // 컨텍스트가 위험하면 한마디 붙인다. 상태줄만 보고 넘기지 않도록.