@oneciel-ai/claude-any 0.1.43 → 0.1.44

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
@@ -48,7 +48,7 @@ arguments through unchanged.
48
48
 
49
49
  Credits: One Ciel LLC
50
50
 
51
- Current version: `0.1.43`
51
+ Current version: `0.1.44`
52
52
 
53
53
  ## Why This Exists
54
54
 
@@ -381,6 +381,12 @@ steps under that larger model's supervision.
381
381
 
382
382
  ## Changelog
383
383
 
384
+ ### 0.1.44
385
+
386
+ - **Statusline split**: turning Rate Limit status off now hides only RPM,
387
+ server-limit, and wait counters. Upstream progress, retry, error, and token
388
+ diagnostics remain visible.
389
+
384
390
  ### 0.1.43
385
391
 
386
392
  - **429 backoff retry**: upstream `429 Too Many Requests` responses are now
package/claude_any.py CHANGED
@@ -85,7 +85,7 @@ PROVIDER_LABELS = {
85
85
  "self-hosted-nim": "Self Hosted NIM",
86
86
  }
87
87
  APP_NAME = "Claude Any"
88
- VERSION = "0.1.43"
88
+ VERSION = "0.1.44"
89
89
  CREDITS = "Credits: One Ciel LLC"
90
90
 
91
91
  LOG_LEVELS = {"SILENT": 0, "ERROR": 1, "WARN": 2, "INFO": 3, "DEBUG": 4, "TRACE": 5}
@@ -1249,10 +1249,11 @@ def main():
1249
1249
  except Exception:
1250
1250
  session = {}
1251
1251
  cfg = load_json(CONFIG_PATH, {})
1252
- providers = cfg.get("providers") if isinstance(cfg.get("providers"), dict) else {}
1253
- provider = str(cfg.get("current_provider") or "")
1254
- pcfg = providers.get(provider) if isinstance(providers.get(provider), dict) else {}
1255
- model = str(pcfg.get("current_model") or "")
1252
+ providers = cfg.get("providers") if isinstance(cfg.get("providers"), dict) else {}
1253
+ provider = str(cfg.get("current_provider") or "")
1254
+ pcfg = providers.get(provider) if isinstance(providers.get(provider), dict) else {}
1255
+ rpm_status = bool(pcfg.get("rate_limit_status", True))
1256
+ model = str(pcfg.get("current_model") or "")
1256
1257
  raw_rpm = pcfg.get("rate_limit_rpm")
1257
1258
  if raw_rpm is None and provider in ("nvidia-hosted", "self-hosted-nim", "ollama", "ollama-cloud"):
1258
1259
  raw_rpm = 40
@@ -1303,29 +1304,33 @@ def main():
1303
1304
  left = f"[{model_name}]"
1304
1305
  if dir_name:
1305
1306
  left += f" {dir_name}"
1306
- if rpm > 0:
1307
- shown_limit = display_capacity(rpm)
1308
- shown_used = min(used, shown_limit)
1309
- rpm_text = f"RPM used: {shown_used}/{shown_limit}"
1310
- else:
1311
- rpm_text = f"RPM used: {used}/min (unlimited)"
1312
- if server_rpm or server_remaining is not None or server_reset_seconds is not None:
1313
- parts = []
1314
- if server_remaining is not None:
1315
- parts.append(f"remaining {server_remaining}")
1316
- if server_rpm:
1317
- parts.append(f"limit {server_rpm}")
1318
- try:
1319
- if server_reset_seconds is not None and float(server_reset_seconds) > 0:
1320
- parts.append(f"reset {float(server_reset_seconds):.0f}s")
1321
- except Exception:
1322
- pass
1323
- if parts:
1324
- rpm_text += " | server " + ", ".join(parts)
1325
- if penalty_until > now:
1326
- rpm_text += f" | wait {max(0.0, penalty_until - now):.0f}s"
1327
- elif last_wait >= 0.5 and 0.0 <= now - updated_at < 60.0:
1328
- rpm_text += f" | wait {last_wait:.1f}s"
1307
+ status_parts = []
1308
+ if rpm_status:
1309
+ if rpm > 0:
1310
+ shown_limit = display_capacity(rpm)
1311
+ shown_used = min(used, shown_limit)
1312
+ rpm_text = f"RPM used: {shown_used}/{shown_limit}"
1313
+ else:
1314
+ rpm_text = f"RPM used: {used}/min (unlimited)"
1315
+ if server_rpm or server_remaining is not None or server_reset_seconds is not None:
1316
+ parts = []
1317
+ if server_remaining is not None:
1318
+ parts.append(f"remaining {server_remaining}")
1319
+ if server_rpm:
1320
+ parts.append(f"limit {server_rpm}")
1321
+ try:
1322
+ if server_reset_seconds is not None and float(server_reset_seconds) > 0:
1323
+ parts.append(f"reset {float(server_reset_seconds):.0f}s")
1324
+ except Exception:
1325
+ pass
1326
+ if parts:
1327
+ rpm_text += " | server " + ", ".join(parts)
1328
+ if penalty_until > now:
1329
+ rpm_text += f" | wait {max(0.0, penalty_until - now):.0f}s"
1330
+ elif last_wait >= 0.5 and 0.0 <= now - updated_at < 60.0:
1331
+ rpm_text += f" | wait {last_wait:.1f}s"
1332
+ status_parts.append(rpm_text)
1333
+ activity_text = ""
1329
1334
  if isinstance(activity, dict):
1330
1335
  try:
1331
1336
  age = now - float(activity.get("updated_at") or 0)
@@ -1334,30 +1339,48 @@ def main():
1334
1339
  if 0 <= age < 180:
1335
1340
  event = str(activity.get("event") or "")
1336
1341
  if event == "retry":
1337
- rpm_text += f" | retry {activity.get('attempt')}/{activity.get('total')}"
1342
+ activity_text = f"retry {activity.get('attempt')}/{activity.get('total')}"
1343
+ wait = activity.get("wait")
1344
+ try:
1345
+ if wait is not None and float(wait) > 0:
1346
+ activity_text += f" wait {float(wait):.0f}s"
1347
+ except Exception:
1348
+ pass
1349
+ tokens = activity.get("tokens")
1350
+ if tokens:
1351
+ try:
1352
+ activity_text += f" last input {int(tokens):,} tok"
1353
+ except Exception:
1354
+ activity_text += f" last input {tokens} tok"
1338
1355
  elif event == "request":
1339
1356
  tokens = activity.get("tokens")
1340
- rpm_text += f" | upstream {age:.0f}s"
1357
+ activity_text = f"upstream {age:.0f}s"
1341
1358
  if tokens:
1342
1359
  try:
1343
- rpm_text += f" {int(tokens):,} tok"
1360
+ activity_text += f" {int(tokens):,} tok"
1344
1361
  except Exception:
1345
- rpm_text += f" {tokens} tok"
1362
+ activity_text += f" {tokens} tok"
1346
1363
  output_tokens = activity.get("output_tokens")
1347
1364
  if output_tokens:
1348
1365
  try:
1349
- rpm_text += f" -> {int(output_tokens):,} tok"
1366
+ activity_text += f" -> {int(output_tokens):,} tok"
1350
1367
  except Exception:
1351
- rpm_text += f" -> {output_tokens} tok"
1368
+ activity_text += f" -> {output_tokens} tok"
1352
1369
  chunks = activity.get("chunks")
1353
1370
  if chunks:
1354
1371
  try:
1355
- rpm_text += f" ({int(chunks):,} chunks)"
1372
+ activity_text += f" ({int(chunks):,} chunks)"
1356
1373
  except Exception:
1357
- rpm_text += f" ({chunks} chunks)"
1374
+ activity_text += f" ({chunks} chunks)"
1358
1375
  elif event in ("success", "error"):
1359
- rpm_text += f" | {event} {age:.0f}s"
1360
- print(f"{left} | {color(rpm_text)}")
1376
+ activity_text = f"{event} {age:.0f}s"
1377
+ if activity_text:
1378
+ status_parts.append(activity_text)
1379
+ status_text = " | ".join(status_parts)
1380
+ if status_text:
1381
+ print(f"{left} | {color(status_text)}")
1382
+ else:
1383
+ print(left)
1361
1384
 
1362
1385
 
1363
1386
  if __name__ == "__main__":
package/docs/README.ja.md CHANGED
@@ -47,7 +47,7 @@ vLLM、NVIDIA hosted、self-hosted NIM を選択し、通常の Claude Code 引
47
47
 
48
48
  Credits: One Ciel LLC
49
49
 
50
- 現在のバージョン: `0.1.43`
50
+ 現在のバージョン: `0.1.44`
51
51
 
52
52
  ## 作られた理由
53
53
 
@@ -351,6 +351,12 @@ Windows/Linux 管理、クリーンアップスクリプト、定期的なセキ
351
351
 
352
352
  ## 変更履歴
353
353
 
354
+ ### 0.1.44
355
+
356
+ - **Statusline split**: Rate Limit status を off にした場合、RPM、server-limit、
357
+ wait counter だけを非表示にします。Upstream 進捗、retry、error、token 診断は
358
+ 引き続き表示されます。
359
+
354
360
  ### 0.1.43
355
361
 
356
362
  - **429 backoff retry**: upstream `429 Too Many Requests` 応答を初回 backoff 後に
package/docs/README.ko.md CHANGED
@@ -47,7 +47,7 @@ NVIDIA hosted, self-hosted NIM을 선택하고, Claude Code의 일반 인자는
47
47
 
48
48
  Credits: One Ciel LLC
49
49
 
50
- 현재 버전: `0.1.43`
50
+ 현재 버전: `0.1.44`
51
51
 
52
52
  ## 왜 만들었나
53
53
 
@@ -351,6 +351,12 @@ Windows 이벤트 로그 리뷰, 바이러스/랜섬웨어 침입 시도 정리,
351
351
 
352
352
  ## 변경 이력
353
353
 
354
+ ### 0.1.44
355
+
356
+ - **Statusline 분리**: Rate Limit status를 off로 바꾸면 RPM, server-limit,
357
+ wait 카운터만 숨깁니다. Upstream 진행, retry, error, token 진단은 계속
358
+ 표시됩니다.
359
+
354
360
  ### 0.1.43
355
361
 
356
362
  - **429 backoff retry**: upstream `429 Too Many Requests` 응답을 첫 backoff 이후
package/docs/README.zh.md CHANGED
@@ -47,7 +47,7 @@ NIM,并把普通 Claude Code 参数原样传递。
47
47
 
48
48
  Credits: One Ciel LLC
49
49
 
50
- 当前版本: `0.1.43`
50
+ 当前版本: `0.1.44`
51
51
 
52
52
  ## 为什么存在
53
53
 
@@ -337,6 +337,11 @@ Hermes 格式模型或部分较旧的 Qwen tool template。
337
337
 
338
338
  ## 更新日志
339
339
 
340
+ ### 0.1.44
341
+
342
+ - **Statusline split**:关闭 Rate Limit status 后只隐藏 RPM、server-limit 和
343
+ wait 计数。Upstream 进度、retry、error 和 token 诊断仍会显示。
344
+
340
345
  ### 0.1.43
341
346
 
342
347
  - **429 backoff retry**:upstream `429 Too Many Requests` 响应现在会在所有 retry
package/docs/manual.md CHANGED
@@ -10,7 +10,7 @@ Code starts, while passing normal Claude Code arguments through unchanged.
10
10
 
11
11
  Credits: One Ciel LLC
12
12
 
13
- Current version: `0.1.43`
13
+ Current version: `0.1.44`
14
14
 
15
15
  ## Install
16
16
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneciel-ai/claude-any",
3
- "version": "0.1.43",
3
+ "version": "0.1.44",
4
4
  "description": "Claude Code provider selector for Anthropic, Ollama, Ollama Cloud, vLLM, NVIDIA hosted, and self-hosted NIM.",
5
5
  "license": "MIT",
6
6
  "author": "One Ciel LLC",