@juanibiapina/pi-powerbar 0.7.2 → 0.9.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/powerbar/index.d.ts.map +1 -1
- package/dist/powerbar/index.js +0 -6
- package/dist/powerbar/index.js.map +1 -1
- package/dist/powerbar-context/index.d.ts.map +1 -1
- package/dist/powerbar-context/index.js +0 -1
- package/dist/powerbar-context/index.js.map +1 -1
- package/dist/powerbar-git/index.d.ts.map +1 -1
- package/dist/powerbar-git/index.js +0 -3
- package/dist/powerbar-git/index.js.map +1 -1
- package/dist/powerbar-model/index.d.ts.map +1 -1
- package/dist/powerbar-model/index.js +0 -3
- package/dist/powerbar-model/index.js.map +1 -1
- package/dist/powerbar-provider/index.d.ts.map +1 -1
- package/dist/powerbar-provider/index.js +0 -3
- package/dist/powerbar-provider/index.js.map +1 -1
- package/dist/powerbar-tokens/index.d.ts.map +1 -1
- package/dist/powerbar-tokens/index.js +0 -1
- package/dist/powerbar-tokens/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,+BAA+B,CAAC;AAoB7F,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAA6B,MAAM,+BAA+B,CAAC;AAoB7F,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkF9D"}
|
package/dist/powerbar/index.js
CHANGED
|
@@ -72,12 +72,6 @@ export default function createExtension(pi) {
|
|
|
72
72
|
hideFooter(ctx);
|
|
73
73
|
refresh();
|
|
74
74
|
});
|
|
75
|
-
pi.on("session_switch", async (_event, ctx) => {
|
|
76
|
-
settings = loadSettings();
|
|
77
|
-
currentCtx = ctx;
|
|
78
|
-
hideFooter(ctx);
|
|
79
|
-
refresh();
|
|
80
|
-
});
|
|
81
75
|
pi.on("session_shutdown", async (_event, ctx) => {
|
|
82
76
|
if (ctx.hasUI) {
|
|
83
77
|
ctx.ui.setWidget("powerbar", undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Powerbar Core Extension\n *\n * Listens for \"powerbar:update\" events from producer extensions,\n * maintains a segment store, and renders a powerline-style widget.\n */\n\nimport type { OrderedListOption } from \"@juanibiapina/pi-extension-settings\";\nimport type { ExtensionAPI, ExtensionUIContext, Theme } from \"@mariozechner/pi-coding-agent\";\nimport type { Component, TUI } from \"@mariozechner/pi-tui\";\nimport { renderBar, type Segment } from \"./render.js\";\nimport { loadSettings, type PowerbarSettings, registerSettings } from \"./settings.js\";\n\ninterface PowerbarUpdatePayload {\n\tid: string;\n\ttext?: string;\n\tsuffix?: string;\n\ticon?: string;\n\tcolor?: string;\n\tbar?: number;\n\tbarSegments?: number;\n}\n\ninterface SegmentRegistration {\n\tid: string;\n\tlabel: string;\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tconst segments: Map<string, Segment> = new Map();\n\tconst segmentCatalog: Map<string, OrderedListOption> = new Map();\n\tlet settings: PowerbarSettings;\n\tlet currentCtx: { ui: { setWidget: (...args: any[]) => void }; hasUI: boolean } | undefined;\n\n\t// Register settings with empty options initially (no segments known yet)\n\tregisterSettings(pi, []);\n\n\t// Listen for segment registrations from producer extensions\n\tpi.events.on(\"powerbar:register-segment\", (data: unknown) => {\n\t\tconst { id, label } = data as SegmentRegistration;\n\t\tsegmentCatalog.set(id, { id, label });\n\t\t// Re-register settings with updated segment options\n\t\tregisterSettings(pi, Array.from(segmentCatalog.values()));\n\t});\n\n\tfunction refresh(): void {\n\t\tif (!currentCtx?.hasUI) return;\n\n\t\tcurrentCtx.ui.setWidget(\n\t\t\t\"powerbar\",\n\t\t\t(_tui: TUI, theme: Theme): Component & { dispose?(): void } => {\n\t\t\t\treturn {\n\t\t\t\t\trender(width: number): string[] {\n\t\t\t\t\t\tconst line = renderBar(segments, settings, theme, width);\n\t\t\t\t\t\treturn [line];\n\t\t\t\t\t},\n\t\t\t\t\tinvalidate(): void {\n\t\t\t\t\t\t// No cached state to clear\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t},\n\t\t\t{ placement: settings.placement },\n\t\t);\n\t}\n\n\t// Listen for segment updates from any extension\n\tpi.events.on(\"powerbar:update\", (data: unknown) => {\n\t\tconst payload = data as PowerbarUpdatePayload;\n\t\tif (!payload?.id) return;\n\n\t\tif (!payload.text && payload.bar === undefined) {\n\t\t\tsegments.delete(payload.id);\n\t\t} else {\n\t\t\tsegments.set(payload.id, {\n\t\t\t\tid: payload.id,\n\t\t\t\ttext: payload.text ?? \"\",\n\t\t\t\tsuffix: payload.suffix,\n\t\t\t\ticon: payload.icon,\n\t\t\t\tcolor: payload.color,\n\t\t\t\tbar: payload.bar,\n\t\t\t\tbarSegments: payload.barSegments,\n\t\t\t});\n\t\t}\n\n\t\trefresh();\n\t});\n\n\tfunction hideFooter(ctx: { ui: ExtensionUIContext; hasUI: boolean }): void {\n\t\tif (!ctx.hasUI) return;\n\t\tctx.ui.setFooter((_tui, _theme, _footerData) => ({\n\t\t\trender(): string[] {\n\t\t\t\treturn [];\n\t\t\t},\n\t\t\tinvalidate(): void {},\n\t\t}));\n\t}\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\tsettings = loadSettings();\n\t\tcurrentCtx = ctx;\n\t\thideFooter(ctx);\n\t\trefresh();\n\t});\n\n\tpi.on(\"session_shutdown\", async (_event, ctx) => {\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.setWidget(\"powerbar\", undefined);\n\t\t}\n\t\tcurrentCtx = undefined;\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAgCpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAgCpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAU9D"}
|
|
@@ -37,7 +37,6 @@ export default function createExtension(pi) {
|
|
|
37
37
|
pi.events.emit("powerbar:register-segment", { id: "context-usage", label: "Context Usage" });
|
|
38
38
|
// Reset on new/switched session
|
|
39
39
|
pi.on("session_start", async () => resetContextUsage(pi));
|
|
40
|
-
pi.on("session_switch", async () => resetContextUsage(pi));
|
|
41
40
|
// Update frequently during agent work
|
|
42
41
|
pi.on("turn_start", async (_event, ctx) => emitContextUsage(pi, ctx));
|
|
43
42
|
pi.on("tool_result", async (_event, ctx) => emitContextUsage(pi, ctx));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,SAAS,QAAQ,CAAC,GAAW;IAC5B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAgB,EAAE,GAAqB;IAChE,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IACpC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QACnE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,GAAG,GAAG,GAAG;YACjB,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;YACxD,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;SACpB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAgB;IAC1C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,SAAS;KACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7F,gCAAgC;IAChC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,UAAU,GAAG,OAAO,CAAC;AAE3B,SAAS,QAAQ,CAAC,GAAW;IAC5B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IAC7B,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAgB,EAAE,GAAqB;IAChE,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;IACpC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;QACnE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,eAAe;YACnB,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,GAAG,GAAG,GAAG;YACjB,GAAG,EAAE,GAAG;YACR,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,UAAU,CAAC;YACxD,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;SACpB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAgB;IAC1C,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,SAAS;KACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7F,gCAAgC;IAChC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;IAE1D,sCAAsC;IACtC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACtE,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC","sourcesContent":["/**\n * Powerbar Context Producer\n *\n * Shows context window usage as a progress bar with percentage.\n * Color changes based on usage level: accent → warning → error.\n * Segment ID: \"context-usage\"\n */\n\nimport type { ExtensionAPI, ExtensionContext } from \"@mariozechner/pi-coding-agent\";\n\nconst CHUNK_SIZE = 100_000;\n\nfunction getColor(pct: number): string {\n\tif (pct > 80) return \"error\";\n\tif (pct > 60) return \"warning\";\n\treturn \"muted\";\n}\n\nfunction emitContextUsage(pi: ExtensionAPI, ctx: ExtensionContext): void {\n\tconst usage = ctx.getContextUsage();\n\tif (usage && usage.tokens != null) {\n\t\tconst pct = Math.round((usage.tokens / usage.contextWindow) * 100);\n\t\tpi.events.emit(\"powerbar:update\", {\n\t\t\tid: \"context-usage\",\n\t\t\ttext: \"\",\n\t\t\tsuffix: `${pct}%`,\n\t\t\tbar: pct,\n\t\t\tbarSegments: Math.ceil(usage.contextWindow / CHUNK_SIZE),\n\t\t\tcolor: getColor(pct),\n\t\t});\n\t}\n}\n\nfunction resetContextUsage(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:update\", {\n\t\tid: \"context-usage\",\n\t\ttext: undefined,\n\t});\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:register-segment\", { id: \"context-usage\", label: \"Context Usage\" });\n\n\t// Reset on new/switched session\n\tpi.on(\"session_start\", async () => resetContextUsage(pi));\n\n\t// Update frequently during agent work\n\tpi.on(\"turn_start\", async (_event, ctx) => emitContextUsage(pi, ctx));\n\tpi.on(\"tool_result\", async (_event, ctx) => emitContextUsage(pi, ctx));\n\tpi.on(\"turn_end\", async (_event, ctx) => emitContextUsage(pi, ctx));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-git/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAkCpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-git/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAkCpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAa9D"}
|
|
@@ -41,9 +41,6 @@ export default function createExtension(pi) {
|
|
|
41
41
|
pi.on("session_start", async (_event, ctx) => {
|
|
42
42
|
emitBranch(pi, ctx);
|
|
43
43
|
});
|
|
44
|
-
pi.on("session_switch", async (_event, ctx) => {
|
|
45
|
-
emitBranch(pi, ctx);
|
|
46
|
-
});
|
|
47
44
|
// Refresh after bash commands (user may have changed branches)
|
|
48
45
|
pi.on("tool_result", async (event, ctx) => {
|
|
49
46
|
if (event.toolName === "bash") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-git/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,SAAS,YAAY,CAAC,GAAW;IAChC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,kCAAkC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,EAAgB,EAAE,GAAqB;IAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,OAAO;SACd,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAEvF,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-git/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,SAAS,YAAY,CAAC,GAAW;IAChC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;QACD,kCAAkC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AACF,CAAC;AAED,SAAS,UAAU,CAAC,EAAgB,EAAE,GAAqB;IAC1D,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,OAAO;SACd,CAAC,CAAC;IACJ,CAAC;SAAM,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACjC,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,SAAS;SACf,CAAC,CAAC;IACJ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAEvF,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,+DAA+D;IAC/D,EAAE,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/B,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrB,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Powerbar Git Producer\n *\n * Shows the current git branch.\n * Segment ID: \"git-branch\"\n */\n\nimport type { ExtensionAPI, ExtensionContext } from \"@mariozechner/pi-coding-agent\";\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\n\nfunction getGitBranch(cwd: string): string | undefined {\n\ttry {\n\t\tconst head = readFileSync(join(cwd, \".git\", \"HEAD\"), \"utf-8\").trim();\n\t\tif (head.startsWith(\"ref: refs/heads/\")) {\n\t\t\treturn head.slice(16);\n\t\t}\n\t\t// Detached HEAD — show short hash\n\t\treturn head.slice(0, 8);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction emitBranch(pi: ExtensionAPI, ctx: ExtensionContext): void {\n\tconst branch = getGitBranch(ctx.cwd);\n\tif (branch) {\n\t\tpi.events.emit(\"powerbar:update\", {\n\t\t\tid: \"git-branch\",\n\t\t\ttext: branch,\n\t\t\ticon: \"⎇\",\n\t\t\tcolor: \"muted\",\n\t\t});\n\t} else {\n\t\tpi.events.emit(\"powerbar:update\", {\n\t\t\tid: \"git-branch\",\n\t\t\ttext: undefined,\n\t\t});\n\t}\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:register-segment\", { id: \"git-branch\", label: \"Git Branch\" });\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\temitBranch(pi, ctx);\n\t});\n\n\t// Refresh after bash commands (user may have changed branches)\n\tpi.on(\"tool_result\", async (event, ctx) => {\n\t\tif (event.toolName === \"bash\") {\n\t\t\temitBranch(pi, ctx);\n\t\t}\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-model/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAsBpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-model/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAsBpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAc9D"}
|
|
@@ -26,9 +26,6 @@ export default function createExtension(pi) {
|
|
|
26
26
|
pi.on("session_start", async (_event, ctx) => {
|
|
27
27
|
emitModel(pi, ctx);
|
|
28
28
|
});
|
|
29
|
-
pi.on("session_switch", async (_event, ctx) => {
|
|
30
|
-
emitModel(pi, ctx);
|
|
31
|
-
});
|
|
32
29
|
pi.on("model_select", async (_event, ctx) => {
|
|
33
30
|
emitModel(pi, ctx);
|
|
34
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-model/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,SAAS,CAAC,EAAgB,EAAE,GAAqB;IACzD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,IAAI,IAAI,GAAG,OAAO,CAAC;IAEnB,iDAAiD;IACjD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,OAAO;QACX,IAAI;QACJ,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE7E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-model/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,SAAS,CAAC,EAAgB,EAAE,GAAqB;IACzD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,IAAI,IAAI,GAAG,OAAO,CAAC;IAEnB,iDAAiD;IACjD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACpC,IAAI,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,OAAO;QACX,IAAI;QACJ,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAE7E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Powerbar Model Producer\n *\n * Shows the current model name and thinking level.\n * Segment ID: \"model\"\n */\n\nimport type { ExtensionAPI, ExtensionContext } from \"@mariozechner/pi-coding-agent\";\n\nfunction emitModel(pi: ExtensionAPI, ctx: ExtensionContext): void {\n\tconst model = ctx.model;\n\tif (!model) return;\n\n\tconst modelId = model.id;\n\tlet text = modelId;\n\n\t// Add thinking level if model supports reasoning\n\tif (model.reasoning) {\n\t\tconst level = pi.getThinkingLevel();\n\t\ttext = level === \"off\" ? `${modelId} · off` : `${modelId} · ${level}`;\n\t}\n\n\tpi.events.emit(\"powerbar:update\", {\n\t\tid: \"model\",\n\t\ttext,\n\t\tcolor: \"dim\",\n\t});\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:register-segment\", { id: \"model\", label: \"Model\" });\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\temitModel(pi, ctx);\n\t});\n\n\tpi.on(\"model_select\", async (_event, ctx) => {\n\t\temitModel(pi, ctx);\n\t});\n\n\tpi.on(\"turn_start\", async (_event, ctx) => {\n\t\temitModel(pi, ctx);\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-provider/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAapF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-provider/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAapF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAc9D"}
|
|
@@ -19,9 +19,6 @@ export default function createExtension(pi) {
|
|
|
19
19
|
pi.on("session_start", async (_event, ctx) => {
|
|
20
20
|
emitProvider(pi, ctx);
|
|
21
21
|
});
|
|
22
|
-
pi.on("session_switch", async (_event, ctx) => {
|
|
23
|
-
emitProvider(pi, ctx);
|
|
24
|
-
});
|
|
25
22
|
pi.on("model_select", async (_event, ctx) => {
|
|
26
23
|
emitProvider(pi, ctx);
|
|
27
24
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-provider/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,YAAY,CAAC,EAAgB,EAAE,GAAqB;IAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAEnF,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-provider/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,YAAY,CAAC,EAAgB,EAAE,GAAqB;IAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,KAAK,CAAC,QAAQ;QACpB,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAEnF,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC5C,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Powerbar Provider Producer\n *\n * Shows the current LLM provider name.\n * Segment ID: \"provider\"\n */\n\nimport type { ExtensionAPI, ExtensionContext } from \"@mariozechner/pi-coding-agent\";\n\nfunction emitProvider(pi: ExtensionAPI, ctx: ExtensionContext): void {\n\tconst model = ctx.model;\n\tif (!model) return;\n\n\tpi.events.emit(\"powerbar:update\", {\n\t\tid: \"provider\",\n\t\ttext: model.provider,\n\t\tcolor: \"dim\",\n\t});\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:register-segment\", { id: \"provider\", label: \"Provider\" });\n\n\tpi.on(\"session_start\", async (_event, ctx) => {\n\t\temitProvider(pi, ctx);\n\t});\n\n\tpi.on(\"model_select\", async (_event, ctx) => {\n\t\temitProvider(pi, ctx);\n\t});\n\n\tpi.on(\"turn_start\", async (_event, ctx) => {\n\t\temitProvider(pi, ctx);\n\t});\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAgDpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/powerbar-tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AAgDpF,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAS9D"}
|
|
@@ -51,7 +51,6 @@ export default function createExtension(pi) {
|
|
|
51
51
|
pi.events.emit("powerbar:register-segment", { id: "tokens", label: "Tokens" });
|
|
52
52
|
// Reset on new/switched session
|
|
53
53
|
pi.on("session_start", async () => resetTokens(pi));
|
|
54
|
-
pi.on("session_switch", async () => resetTokens(pi));
|
|
55
54
|
// Update frequently during agent work
|
|
56
55
|
pi.on("tool_result", async (_event, ctx) => emitTokens(pi, ctx));
|
|
57
56
|
pi.on("turn_end", async (_event, ctx) => emitTokens(pi, ctx));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-tokens/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,SAAS,YAAY,CAAC,KAAa;IAClC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1C,IAAI,KAAK,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,IAAI,KAAK,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3D,IAAI,KAAK,GAAG,QAAQ;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,EAAgB,EAAE,GAAqB;IAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;IAEhD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACxC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7C,CAAC;IACF,CAAC;IAED,IAAI,UAAU,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO;IAElD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACrB,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAgB;IACpC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;QACjC,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,SAAS;KACf,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EAAgB;IACvD,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE/E,gCAAgC;IAChC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/powerbar-tokens/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Powerbar Tokens Producer\n *\n * Shows cumulative token stats and session cost.\n * Segment ID: \"tokens\"\n */\n\nimport type { ExtensionAPI, ExtensionContext } from \"@mariozechner/pi-coding-agent\";\n\nfunction formatTokens(count: number): string {\n\tif (count < 1000) return count.toString();\n\tif (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n\tif (count < 1000000) return `${Math.round(count / 1000)}k`;\n\tif (count < 10000000) return `${(count / 1000000).toFixed(1)}M`;\n\treturn `${Math.round(count / 1000000)}M`;\n}\n\nfunction emitTokens(pi: ExtensionAPI, ctx: ExtensionContext): void {\n\tconst entries = ctx.sessionManager.getEntries();\n\n\tlet totalInput = 0;\n\tlet totalOutput = 0;\n\tlet totalCost = 0;\n\n\tfor (const entry of entries) {\n\t\tif (entry.type === \"message\" && entry.message.role === \"assistant\") {\n\t\t\ttotalInput += entry.message.usage.input;\n\t\t\ttotalOutput += entry.message.usage.output;\n\t\t\ttotalCost += entry.message.usage.cost.total;\n\t\t}\n\t}\n\n\tif (totalInput === 0 && totalOutput === 0) return;\n\n\tconst parts: string[] = [];\n\tparts.push(`↑${formatTokens(totalInput)}`);\n\tparts.push(`↓${formatTokens(totalOutput)}`);\n\tif (totalCost > 0) {\n\t\tparts.push(`$${totalCost.toFixed(2)}`);\n\t}\n\n\tpi.events.emit(\"powerbar:update\", {\n\t\tid: \"tokens\",\n\t\ttext: parts.join(\" \"),\n\t\tcolor: \"dim\",\n\t});\n}\n\nfunction resetTokens(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:update\", {\n\t\tid: \"tokens\",\n\t\ttext: undefined,\n\t});\n}\n\nexport default function createExtension(pi: ExtensionAPI): void {\n\tpi.events.emit(\"powerbar:register-segment\", { id: \"tokens\", label: \"Tokens\" });\n\n\t// Reset on new/switched session\n\tpi.on(\"session_start\", async () => resetTokens(pi));\n\n\t// Update frequently during agent work\n\tpi.on(\"tool_result\", async (_event, ctx) => emitTokens(pi, ctx));\n\tpi.on(\"turn_end\", async (_event, ctx) => emitTokens(pi, ctx));\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juanibiapina/pi-powerbar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Pi extension that renders a persistent powerline status bar with left/right segments updated via events",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -43,13 +43,13 @@
|
|
|
43
43
|
"@mariozechner/pi-tui": "*"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
+
"@juanibiapina/pi-extension-settings": "^0.6.1",
|
|
46
47
|
"@marckrenn/pi-sub-core": "^1.3.0"
|
|
47
48
|
},
|
|
48
49
|
"devDependencies": {
|
|
49
|
-
"@biomejs/biome": "2.4.
|
|
50
|
-
"@juanibiapina/pi-extension-settings": "^0.6.0",
|
|
50
|
+
"@biomejs/biome": "2.4.12",
|
|
51
51
|
"@marckrenn/pi-sub-shared": "^1.3.0",
|
|
52
|
-
"@mariozechner/pi-coding-agent": "^0.
|
|
52
|
+
"@mariozechner/pi-coding-agent": "^0.67.3",
|
|
53
53
|
"@types/node": "^25.2.3",
|
|
54
54
|
"typescript": "^6.0.2"
|
|
55
55
|
}
|