@ashx-j/lunr 0.2.27 → 0.2.28
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 +10 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.d.ts.map +1 -1
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js +5 -2
- package/dist/builtin-extensions/narumiruna-pi-goal/src/accounting.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/chain-root-attachment.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +2 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +5 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +68 -40
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +28 -4
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts +7 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js +70 -38
- package/dist/builtin-extensions/pi-subagents/src/shared/session-tokens.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +9 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +13 -62
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-tps.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-tps.js +10 -2
- package/dist/builtin-extensions/pi-tps.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/google-vertex.json +1 -1
- package/dist/catalog/providers/google.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +6 -15
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +35 -50
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/cache-stats.d.ts +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +5 -11
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +38 -92
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +2 -2
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +22 -20
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/extensions/types.d.ts +3 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/session-manager.d.ts +5 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +16 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/usage-accounting.d.ts +47 -0
- package/dist/core/usage-accounting.d.ts.map +1 -0
- package/dist/core/usage-accounting.js +205 -0
- package/dist/core/usage-accounting.js.map +1 -0
- package/dist/core/usage-history.d.ts +1 -18
- package/dist/core/usage-history.d.ts.map +1 -1
- package/dist/core/usage-history.js +46 -114
- package/dist/core/usage-history.js.map +1 -1
- package/dist/gateway/mobile-commands.d.ts.map +1 -1
- package/dist/gateway/mobile-commands.js +13 -1
- package/dist/gateway/mobile-commands.js.map +1 -1
- package/dist/modes/interactive/components/context-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/context-view.js +2 -2
- package/dist/modes/interactive/components/context-view.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +8 -12
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +5 -0
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +21 -6
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -5
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -22
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/node-runtime/{agent-session-services-KDMSPQDY.js → agent-session-services-RTUGP3XR.js} +5 -4
- package/dist/node-runtime/{builtin-extensions-OX6KELNX.js → builtin-extensions-N4EUD6SB.js} +1 -1
- package/dist/node-runtime/{chunk-A2WO6WIN.js → chunk-4QRUZ64T.js} +11 -5
- package/dist/node-runtime/{chunk-ZDJUR45D.js → chunk-BMRXLQWQ.js} +41 -38
- package/dist/node-runtime/{chunk-MQPKUHRN.js → chunk-DFMPRAQQ.js} +8 -8
- package/dist/node-runtime/{chunk-C3P6Q3B2.js → chunk-E5DQGNJI.js} +10 -10
- package/dist/node-runtime/{chunk-FIRA54AC.js → chunk-ICKGAKWX.js} +22 -55
- package/dist/node-runtime/{chunk-JWEVT363.js → chunk-JEK35V2M.js} +14 -8
- package/dist/node-runtime/{chunk-EPR2F3GU.js → chunk-PWHTSQC4.js} +15 -1
- package/dist/node-runtime/{chunk-AYHH7YSD.js → chunk-QT3F6UEV.js} +61 -30
- package/dist/node-runtime/{chunk-JQYNHAKX.js → chunk-RY3FJ6WI.js} +29 -27
- package/dist/node-runtime/{chunk-I2H5QMWW.js → chunk-STMX7W5I.js} +1 -1
- package/dist/node-runtime/chunk-SWWHZ2RI.js +158 -0
- package/dist/node-runtime/{chunk-QNVMKNNN.js → chunk-U3YVZ6UC.js} +4 -4
- package/dist/node-runtime/{command-3HMSY6W2.js → command-YRT7I2BW.js} +1 -1
- package/dist/node-runtime/{commands-OCSSEEWJ.js → commands-2ETOWWRA.js} +5 -5
- package/dist/node-runtime/{export-html-BRWF5AHI.js → export-html-DBQRRMAY.js} +1 -1
- package/dist/node-runtime/{gateway-6623C2U3.js → gateway-V6K2CDWN.js} +9 -9
- package/dist/node-runtime/{goal-AIHEDUYA.js → goal-J7TYMOBK.js} +9 -3
- package/dist/node-runtime/index.js +9 -8
- package/dist/node-runtime/{interactive-mode-FM5DNUSW.js → interactive-mode-ASZ7APYP.js} +7 -6
- package/dist/node-runtime/{lunr-cron-LKVA5CZZ.js → lunr-cron-WD3YH4CR.js} +4 -4
- package/dist/node-runtime/main.js +7 -6
- package/dist/node-runtime/{mobile-commands-XT3NQXLD.js → mobile-commands-ICUXFW5V.js} +2 -2
- package/dist/node-runtime/{pi-subagents-LT3CTO4E.js → pi-subagents-QPU3OXE4.js} +17 -62
- package/dist/node-runtime/rpc-entry.js +7 -6
- package/dist/node-runtime/{session-handoff-LNSPDTKY.js → session-handoff-LYH53ESV.js} +2 -2
- package/dist/node-runtime/{session-manager-YIFIAVGC.js → session-manager-ZJ3N5Q74.js} +1 -1
- package/dist/node-runtime/{subagent-executor-Q5F7DBVM.js → subagent-executor-UI6SHG3X.js} +294 -231
- package/docs/features.md +10 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/install-lock/package-lock.json +24 -24
- package/install-lock/package.json +2 -2
- package/npm-shrinkwrap.json +21 -21
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-tps.d.ts","sourceRoot":"","sources":["../../src/builtin-extensions/pi-tps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAuBpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"pi-tps.d.ts","sourceRoot":"","sources":["../../src/builtin-extensions/pi-tps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAuBpE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAsFxC","sourcesContent":["import type { ExtensionAPI } from \"@ashx-j/lunr\";\n\n// ── Spinner frames for streaming animation ──\nconst spinner = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\n\n// ── ANSI color helpers ──\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\nconst RED = \"\\x1b[31m\";\nconst RESET = \"\\x1b[0m\";\n\nfunction colorForTps(tps: number): string {\n\tif (tps >= 100) return GREEN;\n\tif (tps >= 30) return YELLOW;\n\treturn RED;\n}\n\n// ── Compact token formatting ──\nfunction formatTokens(n: number): string {\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nexport default function (pi: ExtensionAPI) {\n\tlet messageStartTime = 0;\n\tlet lastAvgTps = 0;\n\tlet lastOutputTokens = 0;\n\tlet spinnerIdx = 0;\n\tlet spinnerInterval: ReturnType<typeof setInterval> | undefined;\n\n\tfunction stopAnimation(): void {\n\t\tif (spinnerInterval !== undefined) {\n\t\t\tclearInterval(spinnerInterval);\n\t\t\tspinnerInterval = undefined;\n\t\t}\n\t}\n\n\tpi.on(\"session_start\", stopAnimation);\n\tpi.on(\"session_shutdown\", stopAnimation);\n\tpi.on(\"agent_end\", stopAnimation);\n\n\tpi.on(\"agent_start\", async (_event, ctx) => {\n\t\tstopAnimation();\n\t\tlastAvgTps = 0;\n\t\tlastOutputTokens = 0;\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.setStatus(\"tps\", \"\");\n\t\t}\n\t});\n\n\tpi.on(\"message_start\", (event, ctx) => {\n\t\tif (event.message.role === \"assistant\") {\n\t\t\tmessageStartTime = Date.now();\n\t\t\tlastAvgTps = 0;\n\t\t\tlastOutputTokens = 0;\n\t\t\tstopAnimation();\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tspinnerIdx = 0;\n\t\t\t// Start spinner animation\n\t\t\tspinnerInterval = setInterval(() => {\n\t\t\t\tspinnerIdx = (spinnerIdx + 1) % spinner.length;\n\t\t\t}, 80);\n\t\t\tspinnerInterval.unref();\n\t\t}\n\t});\n\n\tpi.on(\"message_update\", (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst usage = (event.message as { usage?: { output: number } }).usage;\n\t\tif (!usage) return;\n\n\t\tconst outputTokens = usage.output;\n\t\tif (outputTokens === 0) return;\n\n\t\tconst elapsed = (Date.now() - messageStartTime) / 1000;\n\t\tif (elapsed <= 0) return;\n\t\tconst tps = outputTokens / elapsed;\n\t\tconst color = colorForTps(tps);\n\t\tconst frame = spinner[spinnerIdx % spinner.length];\n\n\t\tctx.ui.setStatus(\"tps\", `${color}${frame} ${tps.toFixed(1)} output t/s overall${RESET} ↓ ${formatTokens(outputTokens)} tokens`);\n\t});\n\n\tpi.on(\"message_end\", (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tstopAnimation();\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst elapsed = (Date.now() - messageStartTime) / 1000;\n\t\tconst usage = (event.message as { usage?: { output: number } }).usage;\n\t\tconst outputTokens = usage?.output ?? 0;\n\n\t\tif (elapsed > 0 && outputTokens > 0) {\n\t\t\tlastAvgTps = outputTokens / elapsed;\n\t\t\tlastOutputTokens = outputTokens;\n\t\t}\n\n\t\tif (outputTokens === 0) {\n\t\t\tctx.ui.setStatus(\"tps\", \"\");\n\t\t\treturn;\n\t\t}\n\t\tconst color = colorForTps(lastAvgTps);\n\t\tctx.ui.setStatus(\n\t\t\t\"tps\",\n\t\t\t`${color}✓ ${lastAvgTps.toFixed(1)} output t/s overall · ${formatTokens(lastOutputTokens)} tokens in ${elapsed.toFixed(1)}s${RESET}`,\n\t\t);\n\t});\n}\n"]}
|
|
@@ -44,6 +44,8 @@ export default function (pi) {
|
|
|
44
44
|
pi.on("message_start", (event, ctx) => {
|
|
45
45
|
if (event.message.role === "assistant") {
|
|
46
46
|
messageStartTime = Date.now();
|
|
47
|
+
lastAvgTps = 0;
|
|
48
|
+
lastOutputTokens = 0;
|
|
47
49
|
stopAnimation();
|
|
48
50
|
if (!ctx.hasUI)
|
|
49
51
|
return;
|
|
@@ -67,10 +69,12 @@ export default function (pi) {
|
|
|
67
69
|
if (outputTokens === 0)
|
|
68
70
|
return;
|
|
69
71
|
const elapsed = (Date.now() - messageStartTime) / 1000;
|
|
72
|
+
if (elapsed <= 0)
|
|
73
|
+
return;
|
|
70
74
|
const tps = outputTokens / elapsed;
|
|
71
75
|
const color = colorForTps(tps);
|
|
72
76
|
const frame = spinner[spinnerIdx % spinner.length];
|
|
73
|
-
ctx.ui.setStatus("tps", `${color}${frame} ${tps.toFixed(1)} t/s${RESET} ↓ ${formatTokens(outputTokens)} tokens`);
|
|
77
|
+
ctx.ui.setStatus("tps", `${color}${frame} ${tps.toFixed(1)} output t/s overall${RESET} ↓ ${formatTokens(outputTokens)} tokens`);
|
|
74
78
|
});
|
|
75
79
|
pi.on("message_end", (event, ctx) => {
|
|
76
80
|
if (event.message.role !== "assistant")
|
|
@@ -85,8 +89,12 @@ export default function (pi) {
|
|
|
85
89
|
lastAvgTps = outputTokens / elapsed;
|
|
86
90
|
lastOutputTokens = outputTokens;
|
|
87
91
|
}
|
|
92
|
+
if (outputTokens === 0) {
|
|
93
|
+
ctx.ui.setStatus("tps", "");
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
88
96
|
const color = colorForTps(lastAvgTps);
|
|
89
|
-
ctx.ui.setStatus("tps", `${color}✓ ${lastAvgTps.toFixed(1)} t/s · ${formatTokens(lastOutputTokens)} tokens in ${elapsed.toFixed(1)}s${RESET}`);
|
|
97
|
+
ctx.ui.setStatus("tps", `${color}✓ ${lastAvgTps.toFixed(1)} output t/s overall · ${formatTokens(lastOutputTokens)} tokens in ${elapsed.toFixed(1)}s${RESET}`);
|
|
90
98
|
});
|
|
91
99
|
}
|
|
92
100
|
//# sourceMappingURL=pi-tps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-tps.js","sourceRoot":"","sources":["../../src/builtin-extensions/pi-tps.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pi-tps.js","sourceRoot":"","sources":["../../src/builtin-extensions/pi-tps.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExtensionAPI } from \"@ashx-j/lunr\";\n\n// ── Spinner frames for streaming animation ──\nconst spinner = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\n\n// ── ANSI color helpers ──\nconst GREEN = \"\\x1b[32m\";\nconst YELLOW = \"\\x1b[33m\";\nconst RED = \"\\x1b[31m\";\nconst RESET = \"\\x1b[0m\";\n\nfunction colorForTps(tps: number): string {\n\tif (tps >= 100) return GREEN;\n\tif (tps >= 30) return YELLOW;\n\treturn RED;\n}\n\n// ── Compact token formatting ──\nfunction formatTokens(n: number): string {\n\tif (n >= 1000) return `${(n / 1000).toFixed(1)}k`;\n\treturn String(n);\n}\n\nexport default function (pi: ExtensionAPI) {\n\tlet messageStartTime = 0;\n\tlet lastAvgTps = 0;\n\tlet lastOutputTokens = 0;\n\tlet spinnerIdx = 0;\n\tlet spinnerInterval: ReturnType<typeof setInterval> | undefined;\n\n\tfunction stopAnimation(): void {\n\t\tif (spinnerInterval !== undefined) {\n\t\t\tclearInterval(spinnerInterval);\n\t\t\tspinnerInterval = undefined;\n\t\t}\n\t}\n\n\tpi.on(\"session_start\", stopAnimation);\n\tpi.on(\"session_shutdown\", stopAnimation);\n\tpi.on(\"agent_end\", stopAnimation);\n\n\tpi.on(\"agent_start\", async (_event, ctx) => {\n\t\tstopAnimation();\n\t\tlastAvgTps = 0;\n\t\tlastOutputTokens = 0;\n\t\tif (ctx.hasUI) {\n\t\t\tctx.ui.setStatus(\"tps\", \"\");\n\t\t}\n\t});\n\n\tpi.on(\"message_start\", (event, ctx) => {\n\t\tif (event.message.role === \"assistant\") {\n\t\t\tmessageStartTime = Date.now();\n\t\t\tlastAvgTps = 0;\n\t\t\tlastOutputTokens = 0;\n\t\t\tstopAnimation();\n\t\t\tif (!ctx.hasUI) return;\n\t\t\tspinnerIdx = 0;\n\t\t\t// Start spinner animation\n\t\t\tspinnerInterval = setInterval(() => {\n\t\t\t\tspinnerIdx = (spinnerIdx + 1) % spinner.length;\n\t\t\t}, 80);\n\t\t\tspinnerInterval.unref();\n\t\t}\n\t});\n\n\tpi.on(\"message_update\", (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst usage = (event.message as { usage?: { output: number } }).usage;\n\t\tif (!usage) return;\n\n\t\tconst outputTokens = usage.output;\n\t\tif (outputTokens === 0) return;\n\n\t\tconst elapsed = (Date.now() - messageStartTime) / 1000;\n\t\tif (elapsed <= 0) return;\n\t\tconst tps = outputTokens / elapsed;\n\t\tconst color = colorForTps(tps);\n\t\tconst frame = spinner[spinnerIdx % spinner.length];\n\n\t\tctx.ui.setStatus(\"tps\", `${color}${frame} ${tps.toFixed(1)} output t/s overall${RESET} ↓ ${formatTokens(outputTokens)} tokens`);\n\t});\n\n\tpi.on(\"message_end\", (event, ctx) => {\n\t\tif (event.message.role !== \"assistant\") return;\n\t\tstopAnimation();\n\t\tif (!ctx.hasUI) return;\n\n\t\tconst elapsed = (Date.now() - messageStartTime) / 1000;\n\t\tconst usage = (event.message as { usage?: { output: number } }).usage;\n\t\tconst outputTokens = usage?.output ?? 0;\n\n\t\tif (elapsed > 0 && outputTokens > 0) {\n\t\t\tlastAvgTps = outputTokens / elapsed;\n\t\t\tlastOutputTokens = outputTokens;\n\t\t}\n\n\t\tif (outputTokens === 0) {\n\t\t\tctx.ui.setStatus(\"tps\", \"\");\n\t\t\treturn;\n\t\t}\n\t\tconst color = colorForTps(lastAvgTps);\n\t\tctx.ui.setStatus(\n\t\t\t\"tps\",\n\t\t\t`${color}✓ ${lastAvgTps.toFixed(1)} output t/s overall · ${formatTokens(lastOutputTokens)} tokens in ${elapsed.toFixed(1)}s${RESET}`,\n\t\t);\n\t});\n}\n"]}
|