pi-condense 2.10.5 → 2.10.6
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 +6 -0
- package/index.ts +16 -14
- package/package.json +1 -1
- package/src/reload-rearm.integration.test.ts +15 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,12 @@ Published to npm as [`pi-condense`](https://www.npmjs.com/package/pi-condense) (
|
|
|
7
7
|
Pushing a `vX.Y.Z` tag triggers `.github/workflows/release.yml`, which runs the tests and
|
|
8
8
|
publishes via OIDC trusted publishing. See `.agents/skills/release/SKILL.md`.
|
|
9
9
|
|
|
10
|
+
## [2.10.6] - 2026-09-19
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- `showPruneStatusLine: false` now also suppresses the transient `pruner loaded` startup widget on new and restored sessions.
|
|
15
|
+
|
|
10
16
|
## [2.10.5] - 2026-09-15
|
|
11
17
|
|
|
12
18
|
### Fixed
|
package/index.ts
CHANGED
|
@@ -827,20 +827,22 @@ export default function (pi: ExtensionAPI) {
|
|
|
827
827
|
// Update footer status
|
|
828
828
|
setPruneStatusWidget(ctx, currentConfig.value, statsAccum.getLiveReclaim(), diagnostics.counts());
|
|
829
829
|
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
830
|
+
if (currentConfig.value.showPruneStatusLine) {
|
|
831
|
+
ctx.ui.setWidget(
|
|
832
|
+
"pruner-boot",
|
|
833
|
+
[
|
|
834
|
+
`pruner loaded — pruning ${currentConfig.value.enabled ? "ON" : "OFF"} | model: ${currentConfig.value.summarizerModel}`,
|
|
835
|
+
],
|
|
836
|
+
{ placement: "belowEditor" },
|
|
837
|
+
);
|
|
838
|
+
setTimeout(() => {
|
|
839
|
+
try {
|
|
840
|
+
ctx.ui.setWidget("pruner-boot", undefined);
|
|
841
|
+
} catch {
|
|
842
|
+
// UI owner may be gone after session replacement.
|
|
843
|
+
}
|
|
844
|
+
}, 10000).unref?.();
|
|
845
|
+
}
|
|
844
846
|
});
|
|
845
847
|
|
|
846
848
|
// Rebuild index and stats after tree navigation too (branch may have different history)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-condense",
|
|
3
|
-
"version": "2.10.
|
|
3
|
+
"version": "2.10.6",
|
|
4
4
|
"description": "Pi coding-agent extension that summarizes completed tool-call batches, replaces raw outputs with short stubs, compresses closed tool-call chains, and recovers any original on demand via context_tree_query.",
|
|
5
5
|
"author": "Jacek Juraszek",
|
|
6
6
|
"license": "MIT",
|
|
@@ -218,6 +218,7 @@ function bootExtension(
|
|
|
218
218
|
autoBudgetThreshold?: number | null;
|
|
219
219
|
budgetTurnDelta?: number | null;
|
|
220
220
|
frontierGapThresholdTokens?: number | null;
|
|
221
|
+
showPruneStatusLine?: boolean;
|
|
221
222
|
} = {},
|
|
222
223
|
) {
|
|
223
224
|
const agentDir = mkdtempSync(join(tmpdir(), "pi-condense-rearm-"));
|
|
@@ -229,7 +230,7 @@ function bootExtension(
|
|
|
229
230
|
autoBudgetThreshold: options.autoBudgetThreshold === undefined ? 0.5 : options.autoBudgetThreshold,
|
|
230
231
|
summarizerModel: "default",
|
|
231
232
|
minBatchChars: 1,
|
|
232
|
-
showPruneStatusLine: true,
|
|
233
|
+
showPruneStatusLine: options.showPruneStatusLine ?? true,
|
|
233
234
|
protectedTools: options.protectedTools ?? [],
|
|
234
235
|
chainCompression: {
|
|
235
236
|
enabled: options.chainCompressionEnabled ?? false,
|
|
@@ -258,6 +259,7 @@ function bootExtension(
|
|
|
258
259
|
const handlers = new Map<string, (event: any, ctx: any) => any>();
|
|
259
260
|
const commands = new Map<string, (args: string, ctx: any) => Promise<void>>();
|
|
260
261
|
const notifications: string[] = [];
|
|
262
|
+
const widgets: Array<{ id: string; content: unknown }> = [];
|
|
261
263
|
|
|
262
264
|
const pushPi = (type: string, data?: unknown) => {
|
|
263
265
|
piAppended.push({ type, data });
|
|
@@ -307,7 +309,9 @@ function bootExtension(
|
|
|
307
309
|
},
|
|
308
310
|
ui: {
|
|
309
311
|
setStatus() {},
|
|
310
|
-
setWidget() {
|
|
312
|
+
setWidget(id: string, content: unknown) {
|
|
313
|
+
widgets.push({ id, content });
|
|
314
|
+
},
|
|
311
315
|
notify(message: string) {
|
|
312
316
|
notifications.push(message);
|
|
313
317
|
},
|
|
@@ -315,7 +319,7 @@ function bootExtension(
|
|
|
315
319
|
},
|
|
316
320
|
};
|
|
317
321
|
|
|
318
|
-
return { handlers, commands, notifications, ctx, pi, piAppended, sessionAppended, appended, branch };
|
|
322
|
+
return { handlers, commands, notifications, widgets, ctx, pi, piAppended, sessionAppended, appended, branch };
|
|
319
323
|
}
|
|
320
324
|
|
|
321
325
|
async function boot(options?: Parameters<typeof bootExtension>[0]) {
|
|
@@ -326,6 +330,14 @@ async function boot(options?: Parameters<typeof bootExtension>[0]) {
|
|
|
326
330
|
}
|
|
327
331
|
|
|
328
332
|
describe("reload rearm (issue #6)", () => {
|
|
333
|
+
it("hides the startup widget when the prune status line is disabled", async () => {
|
|
334
|
+
const { handlers, ctx, widgets } = await boot({ showPruneStatusLine: false });
|
|
335
|
+
|
|
336
|
+
await handlers.get("session_start")!({}, ctx);
|
|
337
|
+
|
|
338
|
+
expect(widgets.some(({ id }) => id === "pruner-boot")).toBe(false);
|
|
339
|
+
});
|
|
340
|
+
|
|
329
341
|
it("falls back to the run-local index at capture when getBranch throws, and the flush-time rescan re-derives the session-wide index", async () => {
|
|
330
342
|
const { handlers, ctx, notifications, appended } = await boot();
|
|
331
343
|
|