summaryrefslogtreecommitdiffhomepage
path: root/src/core/metrics/format.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-12 01:01:32 +0900
committerAdam Malczewski <[email protected]>2026-06-12 01:01:32 +0900
commit4bc02b0102e45dc8cce97b7fc8499e0ab23d862f (patch)
tree8d8c40ca4f2951a68ec812fb3d0f31c044a76599 /src/core/metrics/format.ts
parent4866ebe724d247ab9c1a7615104712cf0ff2e508 (diff)
downloaddispatch-web-4bc02b0102e45dc8cce97b7fc8499e0ab23d862f.tar.gz
dispatch-web-4bc02b0102e45dc8cce97b7fc8499e0ab23d862f.zip
feat(metrics): consume contextSize — current context-usage readout
Backend context-size handoff: re-pin [email protected] / [email protected] (+ re-mirror .dispatch reference snapshots). Thread the optional contextSize through core/metrics (done fold + durable + selectCurrentContextSize: latest turn's defined value, undefined=>unknown never 0, durable-wins-over-live). Chat store exposes currentContextSize; ContextSizeBadge renders "N tokens in context" / "context size unknown" above the composer. GLOSSARY: add context size / context window. 533 tests green.
Diffstat (limited to 'src/core/metrics/format.ts')
-rw-r--r--src/core/metrics/format.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/core/metrics/format.ts b/src/core/metrics/format.ts
index ee8db60..d8dd2cc 100644
--- a/src/core/metrics/format.ts
+++ b/src/core/metrics/format.ts
@@ -17,6 +17,17 @@ function formatTps(tps: number | null): string | null {
return `${Math.round(tps)} tok/s`;
}
+/**
+ * Format the current context size for display. A defined count renders as
+ * `"<n> tokens in context"` (thousands-separated); `undefined` ("unknown" — no
+ * per-step usage reported yet) renders the placeholder `"context size unknown"`.
+ * Never renders `0` for the unknown case.
+ */
+export function formatContextSize(n: number | undefined): string {
+ if (n === undefined) return "context size unknown";
+ return `${formatTokens(n)} tokens in context`;
+}
+
/** Compute tokens-per-second. Returns null when elapsed time is absent or zero. */
export function computeTps(outputTokens: number, elapsedMs: number | undefined): number | null {
if (elapsedMs === undefined || elapsedMs <= 0) return null;