@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 +5 -0
- package/README.md +1 -1
- package/dist/cli.js +2 -1
- package/dist/tui.js +4 -1
- package/package.json +1 -1
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) : [],
|