@hheei/pi-status 0.2.1 → 0.4.0
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/dist/extension.js +1 -1
- package/dist/footer.d.ts +2 -2
- package/dist/footer.js +13 -3
- package/package.json +6 -6
package/dist/extension.js
CHANGED
|
@@ -10,7 +10,7 @@ export default function piStatusExtension(pi) {
|
|
|
10
10
|
const sessionId = extension.sessionManager.getSessionId();
|
|
11
11
|
resources.add("response-status", () => status.dispose(sessionId));
|
|
12
12
|
if (extension.mode === "tui") {
|
|
13
|
-
extension.ui.setFooter((tui, theme, footerData) => new CompactFooterComponent(extension, tui, theme, footerData));
|
|
13
|
+
extension.ui.setFooter((tui, theme, footerData) => new CompactFooterComponent(extension, tui, theme, footerData, status));
|
|
14
14
|
resources.add("footer", () => {
|
|
15
15
|
extension.ui.setFooter(undefined);
|
|
16
16
|
});
|
package/dist/footer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
2
|
import { type Component } from "@earendil-works/pi-tui";
|
|
3
|
-
import { type ThemeLike } from "@hheei/pi-ext-core";
|
|
3
|
+
import { type ResponseStatusFeature, type ThemeLike } from "@hheei/pi-ext-core";
|
|
4
4
|
type FooterFactory = NonNullable<Parameters<ExtensionContext["ui"]["setFooter"]>[0]>;
|
|
5
5
|
export type ReadonlyFooterDataProvider = Parameters<FooterFactory>[2];
|
|
6
6
|
export type FooterTheme = Parameters<FooterFactory>[1];
|
|
@@ -55,7 +55,7 @@ export declare class CompactFooterComponent implements Component {
|
|
|
55
55
|
#private;
|
|
56
56
|
constructor(extension: ExtensionContext, tui: {
|
|
57
57
|
requestRender(): void;
|
|
58
|
-
}, theme: FooterTheme, footerData: ReadonlyFooterDataProvider);
|
|
58
|
+
}, theme: FooterTheme, footerData: ReadonlyFooterDataProvider, statusFeature?: ResponseStatusFeature);
|
|
59
59
|
invalidate(): void;
|
|
60
60
|
dispose(): void;
|
|
61
61
|
render(width: number): string[];
|
package/dist/footer.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
3
3
|
import { visibleWidth } from "@earendil-works/pi-tui";
|
|
4
|
-
import { fitRow, formatCompactNumber } from "@hheei/pi-ext-core";
|
|
4
|
+
import { fitRow, formatCompactNumber, } from "@hheei/pi-ext-core";
|
|
5
5
|
/** Pi native status keys owned by other extensions. */
|
|
6
6
|
const AUTO_TITLE_STATUS_KEY = "auto-title";
|
|
7
7
|
const AGENT_STATUS_KEY = "pi-subagents";
|
|
@@ -142,18 +142,25 @@ export class CompactFooterComponent {
|
|
|
142
142
|
#extension;
|
|
143
143
|
#footerData;
|
|
144
144
|
#theme;
|
|
145
|
+
#statusFeature;
|
|
145
146
|
#unsubscribeBranch;
|
|
146
|
-
|
|
147
|
+
#unsubscribeStatus;
|
|
148
|
+
constructor(extension, tui, theme, footerData, statusFeature) {
|
|
147
149
|
this.#extension = extension;
|
|
148
150
|
this.#footerData = footerData;
|
|
149
151
|
this.#theme = theme;
|
|
152
|
+
this.#statusFeature = statusFeature;
|
|
150
153
|
this.#unsubscribeBranch = footerData.onBranchChange(() => {
|
|
151
154
|
tui.requestRender();
|
|
152
155
|
});
|
|
156
|
+
this.#unsubscribeStatus = statusFeature?.onUpdate(() => {
|
|
157
|
+
tui.requestRender();
|
|
158
|
+
});
|
|
153
159
|
}
|
|
154
160
|
invalidate() { }
|
|
155
161
|
dispose() {
|
|
156
162
|
this.#unsubscribeBranch?.();
|
|
163
|
+
this.#unsubscribeStatus?.();
|
|
157
164
|
}
|
|
158
165
|
render(width) {
|
|
159
166
|
const cwd = this.#extension.sessionManager.getCwd();
|
|
@@ -172,7 +179,10 @@ export class CompactFooterComponent {
|
|
|
172
179
|
const routed = this.#extension.routedModel;
|
|
173
180
|
const modelPart = formatFooterModel(this.#extension.model, this.#extension.thinkingLevel, this.#theme, routed);
|
|
174
181
|
const contextPart = formatFooterContext(this.#extension.getContextUsage(), this.#extension.model?.contextWindow, this.#theme);
|
|
175
|
-
const
|
|
182
|
+
const telemetry = this.#statusFeature?.getStatus(this.#theme);
|
|
183
|
+
const line2Left = telemetry
|
|
184
|
+
? `${modelPart} ${this.#theme.fg("dim", "·")} ${contextPart} ${this.#theme.fg("dim", "·")} ${telemetry}`
|
|
185
|
+
: `${modelPart} ${this.#theme.fg("dim", "·")} ${contextPart}`;
|
|
176
186
|
// Line 2 right: running child agents then TODO, joined by a dim separator. A missing
|
|
177
187
|
// segment drops the separator with it. Any other extension status is only a fallback,
|
|
178
188
|
// so auto-title (line 1) and these two keys never leak in twice.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hheei/pi-status",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Response telemetry for Pi sessions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -35,15 +35,15 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@hheei/pi-ext-core": "^0.
|
|
38
|
+
"@hheei/pi-ext-core": "^0.6.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@earendil-works/pi-coding-agent": ">=1.
|
|
42
|
-
"@earendil-works/pi-tui": ">=1.
|
|
41
|
+
"@earendil-works/pi-coding-agent": ">=1.3.0",
|
|
42
|
+
"@earendil-works/pi-tui": ">=1.3.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@earendil-works/pi-coding-agent": "1.
|
|
46
|
-
"@earendil-works/pi-tui": "1.
|
|
45
|
+
"@earendil-works/pi-coding-agent": "1.3.0",
|
|
46
|
+
"@earendil-works/pi-tui": "1.3.0"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "node -e \"import { rmSync } from 'node:fs'; rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json"
|