@cesarus777/opencode-cgp 0.4.2 → 0.4.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3 — 2026-11-08
4
+
5
+ - Restore Live TPS, average model/session TPS, and observed TTFT for the main agent and each visible subagent in the sidebar and native panel agent rows. Preserve estimated, waiting, and partial labels, with wrapping at narrow widths.
6
+ - Update current metric documentation and verify all five native formatting surfaces at 16, 20, 35, and 80 cells.
7
+
3
8
  ## 0.4.2 — 2026-11-08
4
9
 
5
10
  - Share bounded revisioned archive reads between History and Models, stream/cancel scans, reuse model facts and bucket variants, and preserve authorization and request accounting. Cache limits and cold-start tradeoffs are recorded in the [performance delivery report](docs/validation/dashboard-performance-2026-11-08.md).
package/README.md CHANGED
@@ -163,7 +163,7 @@ Press **?** in the native panel for scrollable help; **?** or **Escape** returns
163
163
 
164
164
  Enabling Context Guard after work has already started also shows the last reported prompt usage for idle sessions and subagents. Opening the sidebar or panel restores it from the public session context, preserving its original age and **out of date** label. Stale usage still shows tokens and occupancy percentage. Restoration respects model changes, reverts and completed compactions; unavailable provider usage stays unknown. These reads never request compaction, and transcript content is never retained or sent through the plugin RPC.
165
165
 
166
- Per-session live TPS, average model throughput, average session throughput and observed TTFT appear in panel Details, alongside explicitly labeled route-family statistics independent of selection or folded branches. Live TPS and TTFT use `~` to mark estimates; completed rates use provider totals. Configurable local history defaults to seven days with a 64 MiB total cap, independently of diagnostic telemetry. See [metric definitions and history exports](docs/configuration.md#live-performance-and-retained-history).
166
+ Per-session live TPS, average model throughput, average session throughput and observed TTFT appear for the main agent and each visible subagent in the sidebar and native panel agent rows. They also appear in panel Details, alongside explicitly labeled route-family statistics independent of selection or folded branches. Live TPS and TTFT use `~` to mark estimates; completed rates use provider totals. Configurable local history defaults to seven days with a 64 MiB total cap, independently of diagnostic telemetry. See [metric definitions and history exports](docs/configuration.md#live-performance-and-retained-history).
167
167
 
168
168
  Compare models across retained sessions with `bun run inspect models /absolute/history-directory --model provider/model` (installed: `context-guard models ...`). JSON/CSV summaries include weighted request TPS, TTFT mean/median/p95, eligibility counts and coverage limits. Use `--from`, `--to` and `--agent` to scope the analysis. The standalone dashboard's Models screen shares these definitions; see [analytics definitions](docs/configuration.md#offline-model-analytics).
169
169
 
package/dist/cli.js CHANGED
@@ -2772,7 +2772,7 @@ function performanceLines(row2, width) {
2772
2772
  return [];
2773
2773
  const value = (n) => n === undefined ? "?" : n.toFixed(1);
2774
2774
  return [
2775
- ...wrap(`TPS ${p.status === "waiting" ? "waiting" : `${p.status === "streaming" ? "~" : ""}${value(p.liveTps)}`} \xB7 ${p.status}${p.partial ? " \xB7 partial" : ""}`, width),
2775
+ ...wrap(`Live TPS ${p.status === "waiting" ? "waiting" : `${p.status === "streaming" ? "~" : ""}${value(p.liveTps)}`} \xB7 ${p.status}${p.partial ? " \xB7 partial" : ""}`, width),
2776
2776
  ...wrap(`Avg model ${value(p.averageModelTps)} \xB7 Avg session ${value(p.averageSessionTps)}`, width),
2777
2777
  ...wrap(`TTFT ${p.ttftMs === undefined ? "?" : `~${(p.ttftMs / 1000).toFixed(2)}s`}${p.latestRequestTps === undefined ? "" : ` \xB7 Last ${value(p.latestRequestTps)} t/s`}`, width)
2778
2778
  ];
@@ -3047,6 +3047,7 @@ function panelRowLines(row2, width, selected) {
3047
3047
  `${pad(identity, Math.max(1, width - status.length - 1))} ${status}`,
3048
3048
  clip(`${percent} context \xB7 ${distance}`, width)
3049
3049
  ];
3050
+ lines.push(...performanceLines(row2, width));
3050
3051
  const exception = [
3051
3052
  freshnessLabel(row2),
3052
3053
  compactionLabel(row2),
package/dist/tui.js CHANGED
@@ -1178,7 +1178,7 @@ function performanceLines(row2, width) {
1178
1178
  return [];
1179
1179
  const value = (n) => n === undefined ? "?" : n.toFixed(1);
1180
1180
  return [
1181
- ...wrap(`TPS ${p.status === "waiting" ? "waiting" : `${p.status === "streaming" ? "~" : ""}${value(p.liveTps)}`} \xB7 ${p.status}${p.partial ? " \xB7 partial" : ""}`, width),
1181
+ ...wrap(`Live TPS ${p.status === "waiting" ? "waiting" : `${p.status === "streaming" ? "~" : ""}${value(p.liveTps)}`} \xB7 ${p.status}${p.partial ? " \xB7 partial" : ""}`, width),
1182
1182
  ...wrap(`Avg model ${value(p.averageModelTps)} \xB7 Avg session ${value(p.averageSessionTps)}`, width),
1183
1183
  ...wrap(`TTFT ${p.ttftMs === undefined ? "?" : `~${(p.ttftMs / 1000).toFixed(2)}s`}${p.latestRequestTps === undefined ? "" : ` \xB7 Last ${value(p.latestRequestTps)} t/s`}`, width)
1184
1184
  ];
@@ -1242,6 +1242,7 @@ function panelRowLines(row2, width, selected) {
1242
1242
  `${pad(identity, Math.max(1, width - status.length - 1))} ${status}`,
1243
1243
  clip(`${percent} context \xB7 ${distance}`, width)
1244
1244
  ];
1245
+ lines.push(...performanceLines(row2, width));
1245
1246
  const exception = [
1246
1247
  freshnessLabel(row2),
1247
1248
  compactionLabel(row2),
@@ -2010,6 +2011,7 @@ function mainSections(row2, width, age) {
2010
2011
  lines: columns(row2.freshness === "stale" ? "Last measured" : "Context", `${m?.confidence === "approximate" && valid2 ? "~" : ""}${tokens(measured)} / ${tokens(s?.capacityTokens)}`, width)
2011
2012
  },
2012
2013
  { tone: "measurement", lines: [progress(ratio, width)] },
2014
+ { tone: "base", lines: performanceLines(row2, width) },
2013
2015
  {
2014
2016
  tone: "pressure",
2015
2017
  lines: [
@@ -2072,6 +2074,7 @@ function agentLines(row2, width) {
2072
2074
  return [
2073
2075
  progress(valid2 && row2.utilizationPercent !== undefined ? row2.utilizationPercent / 100 : undefined, width),
2074
2076
  ...wrap(cells(full) <= width ? full : short, width),
2077
+ ...performanceLines(row2, width),
2075
2078
  ...row2.node.status === "failed" || row2.node.status === "unknown" ? wrap(row2.node.status.toUpperCase(), width) : [],
2076
2079
  ...row2.freshness !== "fresh" ? wrap(freshnessLabel(row2) ?? "", width) : [],
2077
2080
  ...row2.node.interrupted ? wrap("Interrupted", width) : [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cesarus777/opencode-cgp",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {