@rayadesu/dsh-client-ui-billing 0.3.1 → 0.3.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.i18n.yaml CHANGED
@@ -2,5 +2,5 @@
2
2
  # last confirmed-consistent state. Both languages carry equal authority; after
3
3
  # editing either side, bring the other along and re-record both hashes with:
4
4
  # git hash-object README.md README.zh.md
5
- README.md: 7d0fbbf1aac701d3c0a8bdaa6be7ad2f1b2775bb
6
- README.zh.md: 77ceda46ac61f1ed1bf2cb869bad7b2bb40598f3
5
+ README.md: 810f4112da977585631e6bc692b3e1ec74ec401e
6
+ README.zh.md: 130a25cb4a16059ee1d1618c039105cc3a5ea43c
package/README.md CHANGED
@@ -4,7 +4,7 @@ English | [中文](README.zh.md)
4
4
 
5
5
  Web billing feature owner: contributes one entry to `conversation.session.header.utilities` that mounts its own `billing` Remote, reads the DeepSeek account balance, this session's billed spend, today's spend across every session, today's per-session ranking, and one turn's cost through `billing/getBalance`, `billing/getSessionSpend`, `billing/getTodaySpend`, `billing/getTodaySessionsSpend`, and `billing/getTurnSpend`, and renders them as a top-right label box. The host half of the capability lives in [`dsh-llm-billing`](../llm-billing/README.md), which owns the `/user/balance` transport, the peak/off-peak pricing table, and the `billing` Remote namespace; this package mounts that Remote and renders what it returns.
6
6
 
7
- The trigger shows two lines — the remaining balance and this conversation's billed spend ("本轮对话花费 ¥X") — and renders nothing while the first fetch is in flight. Clicking it opens a label box with the remaining amount, this session's billed spend (本会话花费, priced per message at the official peak/off-peak rate — peak windows apply weekdays Mon–Fri only, weekends are off-peak) with today's all-session spend beside it (今日共花费), one priced row per model with the cache-hit / cache-miss-input / output cost breakdown ("缓存命中 ¥X · 未命中输入 ¥Y · 输出 ¥Z"), a manual refresh action, and a spend disclaimer. Below the model rows the panel ends with the **today session-spend ranking** (`今日会话花费`): sessions sorted by today's cost, highest first, each row carrying the session's durable title (renames sync automatically) and its amount; at most `SESSION_RANKING_LIMIT` (10) rows render, with a "…还有 N 个会话" hint for the rest. Refreshing keeps the last values visible rather than blanking them, and a refresh failure retains the last good value. A session or day without priced usage shows a "no usage recorded" word rather than a fabricated figure. A failure — no API key configured, a rejected credential, a transport error — renders a muted "Balance unavailable" word whose tooltip carries the Remote's own error message.
7
+ The trigger shows two lines — the remaining balance and this conversation's billed spend ("本轮对话花费 ¥X") — and renders nothing while the first fetch is in flight. Clicking it opens a label box with the remaining amount, this session's billed spend (本会话花费, priced per message at the official peak/off-peak rate — peak windows apply weekdays Mon–Fri only, weekends are off-peak) with today's all-session spend beside it (今日共花费), one priced row per model with the cache-hit / cache-miss-input / output cost breakdown ("缓存命中 ¥X · 未命中输入 ¥Y · 输出 ¥Z"), a manual refresh action, and a spend disclaimer. The remaining-amount row (`API 剩余金额`) renders larger than the spend rows below it. Below the model rows the panel ends with the **today session-spend ranking** (`今日会话花费`): sessions sorted by today's cost, highest first, each row a fixed right-aligned rank column, then the same middot separator the cost breakdown uses ("·" with the same size, tone, and spacing), then the session's durable title (renames sync automatically), then its amount — the title keeps its indented rank column; at most `SESSION_RANKING_LIMIT` (10) rows render, with a "…还有 N 个会话" hint for the rest. Refreshing keeps the last values visible rather than blanking them, and a refresh failure retains the last good value. A session or day without priced usage shows a "no usage recorded" word rather than a fabricated figure. A failure — no API key configured, a rejected credential, a transport error — renders a muted "Balance unavailable" word whose tooltip carries the Remote's own error message.
8
8
 
9
9
  The package also contributes the **turn-cost entry** (`billing-turn-cost`, order 20) to ui-chat's `conversation.chat.assistant-actions` list slot — the same strip `ui-message-feedback` uses, so entries coexist; the entry uses flex `order: -1` to sit at the **front** of the actions row (before the copy control). For each completed turn's closing assistant message, the entry reads `billing/getTurnSpend` (memoized per session + message, since settled turns never change) and renders `本轮花费 ¥X` — the "本轮花费" word in the usage-card title tone and the amount in the summary tone, **always visible** (the hover rule only targets the clock text). Turns that priced to zero (no DeepSeek usage) and failed loads render nothing, so a Remote outage never clutters the row.
10
10
 
package/README.zh.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Web 额度特性的归属方:向 `conversation.session.header.utilities` 贡献一个条目,自己挂载 `billing` Remote,通过 `billing/getBalance`、`billing/getSessionSpend`、`billing/getTodaySpend`、`billing/getTodaySessionsSpend` 与 `billing/getTurnSpend` 读取 DeepSeek 账户余额、本会话的计费花费、今日所有会话的计费花费、今日按会话的排行与单个回合的花费,并在右上角渲染成一个标签框。该能力的宿主侧在 [`dsh-llm-billing`](../llm-billing/README.md),它拥有 `/user/balance` 传输、峰谷计价表与 `billing` Remote 命名空间;本包挂载那个 Remote 并渲染它返回的内容。
6
6
 
7
- 触发器显示两行——剩余额度与本轮对话的计费花费(「本轮对话花费 ¥X」)——首个请求在途时不渲染任何东西。点击后展开一个标签框:剩余金额、本会话的计费花费(本会话花费,按官方峰/谷单价逐条消息计价——高峰窗口仅周一至周五适用,周末按低谷价——右侧并列今日所有会话的合计「今日共花费」)、每个模型一行的花费及其缓存命中/未命中输入/输出分项(「缓存命中 ¥X · 未命中输入 ¥Y · 输出 ¥Z」)、手动刷新按钮与花费说明。模型行下方是**今日会话花费排行**(`今日会话花费`):按今日花费从高到低排列的会话列表,每行带会话的持久标题(重命名自动同步)与金额;最多渲染 `SESSION_RANKING_LIMIT`(10)行,其余以「…还有 N 个会话」提示。刷新时旧值不消失,刷新失败保留上一次有效值。没有可计价消耗的会话或日子显示「暂无消耗记录」而不是编造数字。失败——未配置 API key、凭据被拒绝、传输错误——渲染弱化的「额度不可用」,其提示携带 Remote 自己的错误信息。
7
+ 触发器显示两行——剩余额度与本轮对话的计费花费(「本轮对话花费 ¥X」)——首个请求在途时不渲染任何东西。点击后展开一个标签框:剩余金额、本会话的计费花费(本会话花费,按官方峰/谷单价逐条消息计价——高峰窗口仅周一至周五适用,周末按低谷价——右侧并列今日所有会话的合计「今日共花费」)、每个模型一行的花费及其缓存命中/未命中输入/输出分项(「缓存命中 ¥X · 未命中输入 ¥Y · 输出 ¥Z」)、手动刷新按钮与花费说明。剩余金额行(`API 剩余金额`)字号大于下方花费行。模型行下方是**今日会话花费排行**(`今日会话花费`):按今日花费从高到低排列的会话列表,每行以右对齐的名次列开头,后接与花费分项相同的小圆点分隔符(「·」,字号、色调与间距一致),再是会话的持久标题(重命名自动同步),最后是金额——标题在名次列后缩进对齐;最多渲染 `SESSION_RANKING_LIMIT`(10)行,其余以「…还有 N 个会话」提示。刷新时旧值不消失,刷新失败保留上一次有效值。没有可计价消耗的会话或日子显示「暂无消耗记录」而不是编造数字。失败——未配置 API key、凭据被拒绝、传输错误——渲染弱化的「额度不可用」,其提示携带 Remote 自己的错误信息。
8
8
 
9
9
  本包还贡献**本轮花费条目**(`billing-turn-cost`,order 20)到 ui-chat 的 `conversation.chat.assistant-actions` list slot——与 `ui-message-feedback` 同一条操作条,多条目共存;条目经 CSS `order: -1` 排到操作行**最前**(复制按钮之前)。对每条已完成回合的收尾助手消息,条目通过 `billing/getTurnSpend` 读取花费(按会话 + 消息 memo,回合落定后不再变化),渲染「本轮花费 ¥X」——「本轮花费」用卡片标题色、金额用卡片摘要色,**始终显示**(悬停规则只作用于时钟文本)。回合没有 DeepSeek 用量(花费为 0)或加载失败时不渲染,Remote 故障不会污染操作行。
10
10
 
package/lib/client.js CHANGED
@@ -4297,8 +4297,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4297
4297
  ]
4298
4298
  };
4299
4299
  //#endregion
4300
- //#region \0dsh-css:C:\Users\admin\Desktop\me\code\DeepSeek-Harness-chat-billing\packages\ui-billing\src\client\BalanceBadge.module.css.mjs
4301
- const css$1 = "._4_Wqcq_root{position:relative}._4_Wqcq_trigger{background:var(--dsw-alias-fill-l2);min-height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:4px;padding:4px 8px;display:inline-flex}._4_Wqcq_trigger:hover,._4_Wqcq_trigger:focus-visible{color:var(--dsw-alias-label-primary)}._4_Wqcq_trigger svg{transition:transform .12s}._4_Wqcq_chevronOpen{transform:rotate(180deg)}._4_Wqcq_triggerLines{text-align:left;flex-direction:column;align-items:flex-start;gap:0;display:flex}._4_Wqcq_linePrimary{font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}._4_Wqcq_lineSecondary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:15px}._4_Wqcq_unavailable{color:var(--dsw-alias-label-tertiary)}._4_Wqcq_inlineIcon{color:var(--dsw-alias-label-tertiary);flex:none}._4_Wqcq_spinning{color:var(--dsw-alias-label-tertiary);flex:none;animation:.8s linear infinite _4_Wqcq_spin}@keyframes _4_Wqcq_spin{to{transform:rotate(360deg)}}._4_Wqcq_panel{z-index:100;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);width:336px;max-width:min(360px,100vw - 32px);box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}._4_Wqcq_amountRow{border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}._4_Wqcq_amountLabel{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:13px;line-height:18px}._4_Wqcq_spendRow{border-top:1px solid var(--dsw-alias-border-l2);border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}._4_Wqcq_costRow{align-items:center;padding:2px 8px 6px;display:flex}._4_Wqcq_costBreakdown{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}._4_Wqcq_amountActions{align-items:center;gap:2px;display:inline-flex}._4_Wqcq_infoButton,._4_Wqcq_refreshButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}._4_Wqcq_infoButton:hover,._4_Wqcq_infoButton:focus-visible,._4_Wqcq_refreshButton:hover,._4_Wqcq_refreshButton:focus-visible{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-l2)}._4_Wqcq_modelRow{border-radius:8px;justify-content:space-between;align-items:baseline;gap:8px;padding:6px 8px;display:flex}._4_Wqcq_modelName{color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}._4_Wqcq_tasks{text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:12px;line-height:18px}._4_Wqcq_ranking{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:0;padding-top:2px;display:flex}._4_Wqcq_rankingTitle{color:var(--dsw-alias-label-secondary);padding:6px 8px 2px;font-size:12px;line-height:18px}._4_Wqcq_rankingRow{border-radius:8px;align-items:baseline;gap:8px;min-width:0;padding:3px 8px;display:flex}._4_Wqcq_rankingRow:hover{background:var(--dsw-alias-fill-l2)}._4_Wqcq_rankingIndex{width:16px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;flex:none;font-size:11px;line-height:16px}._4_Wqcq_rankingName{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;line-height:16px;overflow:hidden}._4_Wqcq_rankingAmount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;font-size:11px;line-height:16px}._4_Wqcq_rankingMore{color:var(--dsw-alias-label-tertiary);padding:2px 8px 4px;font-size:11px;line-height:16px}";
4300
+ //#region \0dsh-css:/Users/raya/Developer/DeepSeek-Harness-chat-billing/packages/ui-billing/src/client/BalanceBadge.module.css.mjs
4301
+ const css$1 = ".F7tDLW_root{position:relative}.F7tDLW_trigger{background:var(--dsw-alias-fill-l2);min-height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;border:0;border-radius:8px;align-items:center;gap:4px;padding:4px 8px;display:inline-flex}.F7tDLW_trigger:hover,.F7tDLW_trigger:focus-visible{color:var(--dsw-alias-label-primary)}.F7tDLW_trigger svg{transition:transform .12s}.F7tDLW_chevronOpen{transform:rotate(180deg)}.F7tDLW_triggerLines{text-align:left;flex-direction:column;align-items:flex-start;gap:0;display:flex}.F7tDLW_linePrimary{font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F7tDLW_lineSecondary{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:15px}.F7tDLW_unavailable{color:var(--dsw-alias-label-tertiary)}.F7tDLW_inlineIcon{color:var(--dsw-alias-label-tertiary);flex:none}.F7tDLW_spinning{color:var(--dsw-alias-label-tertiary);flex:none;animation:.8s linear infinite F7tDLW_spin}@keyframes F7tDLW_spin{to{transform:rotate(360deg)}}.F7tDLW_panel{z-index:100;box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-specific-menu);width:336px;max-width:min(360px,100vw - 32px);box-shadow:var(--dsw-shadow-lv3);border-radius:12px;flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.F7tDLW_amountRow{border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.F7tDLW_amountLabel{color:var(--dsw-alias-label-primary);font-variant-numeric:tabular-nums;font-size:13px;line-height:18px}.F7tDLW_amountRow>.F7tDLW_amountLabel{font-size:15px;line-height:22px}.F7tDLW_spendRow{border-top:1px solid var(--dsw-alias-border-l2);border-radius:0;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.F7tDLW_costRow{align-items:center;padding:2px 8px 6px;display:flex}.F7tDLW_costBreakdown{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:16px}.F7tDLW_amountActions{align-items:center;gap:2px;display:inline-flex}.F7tDLW_infoButton,.F7tDLW_refreshButton{width:24px;height:24px;color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.F7tDLW_infoButton:hover,.F7tDLW_infoButton:focus-visible,.F7tDLW_refreshButton:hover,.F7tDLW_refreshButton:focus-visible{color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-fill-l2)}.F7tDLW_modelRow{border-radius:8px;justify-content:space-between;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F7tDLW_modelName{color:var(--dsw-alias-label-secondary);flex:none;font-size:12px;line-height:18px}.F7tDLW_tasks{text-align:right;min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:12px;line-height:18px}.F7tDLW_ranking{border-top:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:0;padding-top:2px;display:flex}.F7tDLW_rankingTitle{color:var(--dsw-alias-label-secondary);padding:6px 8px 2px;font-size:12px;line-height:18px}.F7tDLW_rankingRow{border-radius:8px;align-items:baseline;gap:0;min-width:0;padding:3px 8px;display:flex}.F7tDLW_rankingRow:hover{background:var(--dsw-alias-fill-l2)}.F7tDLW_rankingIndex{width:16px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-align:right;flex:none;font-size:11px;line-height:16px}.F7tDLW_rankingDot{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;white-space:pre;flex:none;font-size:11px;line-height:16px}.F7tDLW_rankingName{min-width:0;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;line-height:16px;overflow:hidden}.F7tDLW_rankingAmount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:8px;font-size:11px;line-height:16px}.F7tDLW_rankingMore{color:var(--dsw-alias-label-tertiary);padding:2px 8px 4px;font-size:11px;line-height:16px}";
4302
4302
  const tagId$1 = "@rayadesu/dsh-client-ui-billing/BalanceBadge.module.css";
4303
4303
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
4304
4304
  const tag = document.createElement("style");
@@ -4308,35 +4308,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4308
4308
  document.head.appendChild(tag);
4309
4309
  }
4310
4310
  var BalanceBadge_module_css_default = {
4311
- "amountActions": "_4_Wqcq_amountActions",
4312
- "amountLabel": "_4_Wqcq_amountLabel",
4313
- "amountRow": "_4_Wqcq_amountRow",
4314
- "chevronOpen": "_4_Wqcq_chevronOpen",
4315
- "costBreakdown": "_4_Wqcq_costBreakdown",
4316
- "costRow": "_4_Wqcq_costRow",
4317
- "infoButton": "_4_Wqcq_infoButton",
4318
- "inlineIcon": "_4_Wqcq_inlineIcon",
4319
- "linePrimary": "_4_Wqcq_linePrimary",
4320
- "lineSecondary": "_4_Wqcq_lineSecondary",
4321
- "modelName": "_4_Wqcq_modelName",
4322
- "modelRow": "_4_Wqcq_modelRow",
4323
- "panel": "_4_Wqcq_panel",
4324
- "ranking": "_4_Wqcq_ranking",
4325
- "rankingAmount": "_4_Wqcq_rankingAmount",
4326
- "rankingIndex": "_4_Wqcq_rankingIndex",
4327
- "rankingMore": "_4_Wqcq_rankingMore",
4328
- "rankingName": "_4_Wqcq_rankingName",
4329
- "rankingRow": "_4_Wqcq_rankingRow",
4330
- "rankingTitle": "_4_Wqcq_rankingTitle",
4331
- "refreshButton": "_4_Wqcq_refreshButton",
4332
- "root": "_4_Wqcq_root",
4333
- "spendRow": "_4_Wqcq_spendRow",
4334
- "spin": "_4_Wqcq_spin",
4335
- "spinning": "_4_Wqcq_spinning",
4336
- "tasks": "_4_Wqcq_tasks",
4337
- "trigger": "_4_Wqcq_trigger",
4338
- "triggerLines": "_4_Wqcq_triggerLines",
4339
- "unavailable": "_4_Wqcq_unavailable"
4311
+ "amountActions": "F7tDLW_amountActions",
4312
+ "amountLabel": "F7tDLW_amountLabel",
4313
+ "amountRow": "F7tDLW_amountRow",
4314
+ "chevronOpen": "F7tDLW_chevronOpen",
4315
+ "costBreakdown": "F7tDLW_costBreakdown",
4316
+ "costRow": "F7tDLW_costRow",
4317
+ "infoButton": "F7tDLW_infoButton",
4318
+ "inlineIcon": "F7tDLW_inlineIcon",
4319
+ "linePrimary": "F7tDLW_linePrimary",
4320
+ "lineSecondary": "F7tDLW_lineSecondary",
4321
+ "modelName": "F7tDLW_modelName",
4322
+ "modelRow": "F7tDLW_modelRow",
4323
+ "panel": "F7tDLW_panel",
4324
+ "ranking": "F7tDLW_ranking",
4325
+ "rankingAmount": "F7tDLW_rankingAmount",
4326
+ "rankingDot": "F7tDLW_rankingDot",
4327
+ "rankingIndex": "F7tDLW_rankingIndex",
4328
+ "rankingMore": "F7tDLW_rankingMore",
4329
+ "rankingName": "F7tDLW_rankingName",
4330
+ "rankingRow": "F7tDLW_rankingRow",
4331
+ "rankingTitle": "F7tDLW_rankingTitle",
4332
+ "refreshButton": "F7tDLW_refreshButton",
4333
+ "root": "F7tDLW_root",
4334
+ "spendRow": "F7tDLW_spendRow",
4335
+ "spin": "F7tDLW_spin",
4336
+ "spinning": "F7tDLW_spinning",
4337
+ "tasks": "F7tDLW_tasks",
4338
+ "trigger": "F7tDLW_trigger",
4339
+ "triggerLines": "F7tDLW_triggerLines",
4340
+ "unavailable": "F7tDLW_unavailable"
4340
4341
  };
4341
4342
  //#endregion
4342
4343
  //#region lib/types/client/BalanceBadge.js
@@ -4592,6 +4593,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4592
4593
  className: BalanceBadge_module_css_default.rankingIndex,
4593
4594
  children: index + 1
4594
4595
  }),
4596
+ (0, react_jsx_runtime.jsx)("span", {
4597
+ className: BalanceBadge_module_css_default.rankingDot,
4598
+ "aria-hidden": true,
4599
+ children: " · "
4600
+ }),
4595
4601
  (0, react_jsx_runtime.jsx)("span", {
4596
4602
  className: BalanceBadge_module_css_default.rankingName,
4597
4603
  title: row.title ?? void 0,
@@ -4614,8 +4620,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4614
4620
  });
4615
4621
  }
4616
4622
  //#endregion
4617
- //#region \0dsh-css:C:\Users\admin\Desktop\me\code\DeepSeek-Harness-chat-billing\packages\ui-billing\src\client\TurnCostAction.module.css.mjs
4618
- const css = ".l2XZIa_cost{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);font-variant-numeric:tabular-nums;line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:none;order:-1;align-items:center;margin-left:6px;display:inline-flex;overflow:hidden}.l2XZIa_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex}.l2XZIa_leading svg{width:16px;height:16px}.l2XZIa_costLabel{color:var(--dsw-alias-label-secondary);flex:none}.l2XZIa_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.l2XZIa_costValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}";
4623
+ //#region \0dsh-css:/Users/raya/Developer/DeepSeek-Harness-chat-billing/packages/ui-billing/src/client/TurnCostAction.module.css.mjs
4624
+ const css = "._8yL56a_cost{min-width:0;color:var(--dsw-alias-label-tertiary);font-size:var(--dsh-content-font-size-secondary,13px);font-variant-numeric:tabular-nums;line-height:calc(24px + var(--dsh-content-font-delta,0px));text-overflow:ellipsis;white-space:nowrap;flex:none;order:-1;align-items:center;margin-left:6px;display:inline-flex;overflow:hidden}._8yL56a_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex}._8yL56a_leading svg{width:16px;height:16px}._8yL56a_costLabel{color:var(--dsw-alias-label-secondary);flex:none}._8yL56a_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}._8yL56a_costValue{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}";
4619
4625
  const tagId = "@rayadesu/dsh-client-ui-billing/TurnCostAction.module.css";
4620
4626
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
4621
4627
  const tag = document.createElement("style");
@@ -4625,11 +4631,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
4625
4631
  document.head.appendChild(tag);
4626
4632
  }
4627
4633
  var TurnCostAction_module_css_default = {
4628
- "cost": "l2XZIa_cost",
4629
- "costLabel": "l2XZIa_costLabel",
4630
- "costValue": "l2XZIa_costValue",
4631
- "leading": "l2XZIa_leading",
4632
- "separator": "l2XZIa_separator"
4634
+ "cost": "_8yL56a_cost",
4635
+ "costLabel": "_8yL56a_costLabel",
4636
+ "costValue": "_8yL56a_costValue",
4637
+ "leading": "_8yL56a_leading",
4638
+ "separator": "_8yL56a_separator"
4633
4639
  };
4634
4640
  //#endregion
4635
4641
  //#region lib/types/client/TurnCostAction.js
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rayadesu/dsh-client-ui-billing",
3
3
  "description": "Session-header DeepSeek account-balance and conversation-spend badge over the billing Remote",
4
- "version": "0.3.1",
4
+ "version": "0.3.2",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/types/index.d.ts",
@@ -32,6 +32,11 @@
32
32
  "platform": "web"
33
33
  }
34
34
  },
35
+ "scripts": {
36
+ "bundle": "tsdown",
37
+ "watch": "tsdown --watch",
38
+ "prepublishOnly": "node ../../scripts/verify-packages.mjs"
39
+ },
35
40
  "license": "MIT",
36
41
  "repository": {
37
42
  "type": "git",
@@ -42,7 +47,7 @@
42
47
  "access": "public"
43
48
  },
44
49
  "peerDependencies": {
45
- "@rayadesu/dsh-llm-billing": "^0.3.0",
50
+ "@rayadesu/dsh-llm-billing": "^0.3.2",
46
51
  "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2",
47
52
  "@deepseek-ai/dsh-client-ui-conversation": "^0.1.1-rc.2",
48
53
  "@deepseek-ai/dsh-typert-protocol": "^0.1.1-rc.2",
@@ -53,7 +58,7 @@
53
58
  "@deepseek-ai/dsh-session": "^0.1.1-rc.2"
54
59
  },
55
60
  "devDependencies": {
56
- "@rayadesu/dsh-llm-billing": "^0.3.0",
61
+ "@rayadesu/dsh-llm-billing": "^0.3.2",
57
62
  "@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2",
58
63
  "@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
59
64
  "@deepseek-ai/dsh-client-test-runtime": "^0.1.1-rc.2",
@@ -78,9 +83,5 @@
78
83
  "lib/invariant.js",
79
84
  "lib/client.js",
80
85
  "lib/types/**/*.d.ts"
81
- ],
82
- "scripts": {
83
- "bundle": "tsdown",
84
- "watch": "tsdown --watch"
85
- }
86
- }
86
+ ]
87
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 WilliamLIiii
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.