pi-goal-list-loop-audit 0.38.1 → 0.38.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
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.38.3 — truncate picker/settings titles to terminal width (PR #41) (2026-09-02)
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
`Rendered line N exceeds terminal width` crash when opening `Main/Auditor fallback models` (and `ModelPicker` / `SettingsMenu`) — long help titles now truncated with `truncateToWidth(…, "…")` to the available width, matching existing picker-row truncation. Prevents `pi` TUI crash that made the `glla: [LIVE]` widget disappear between audit/loop iterations and after `page.reload()`/`/reload` (Next item `audit ended between loops, and the ui disappeared` / Screenshot_20260902_121313). Regression test `multi-model-picker: render truncates a long title to the terminal width` pins 140-col rendering.
|
|
7
|
+
|
|
8
|
+
## 0.38.2 — thinking selected with model, remove standalone rows (2026-09-02)
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
`Drafter thinking` and `Auditor thinking` standalone rows removed from `/glla` — thinking is now selected **with** the model pick (the existing `Drafter agent` / `Auditor agent` flows already prompt for thinking immediately after the model, and that ladder is model-aware via `auditorThinkingLevels`). Main had no standalone thinking row; Drafter/Auditor now match it. Stored `drafterThinkingLevel` / `auditorThinkingLevel` keys remain read for fallback-chain rendering (`modelThinkingText`) and for the model-pick ladder, but there is no separate editor — re-pick the model to change thinking. Prevents stale thinking selection and the "Main has no selector, others do" inconsistency.
|
|
12
|
+
|
|
3
13
|
## 0.38.1 — drafter/auditor fallback parity with Main (2026-09-02)
|
|
4
14
|
|
|
5
15
|
### Fixed
|
package/docs/INDEX.md
CHANGED
|
@@ -18,7 +18,7 @@ For shipped docs, the relevant entry points are:
|
|
|
18
18
|
failback; v0.35.9 hardened cross-version npm tarball checks; v0.35.10
|
|
19
19
|
handles multi-entry npm dry-run reports; v0.35.11 accepts both npm report
|
|
20
20
|
shapes; v0.35.12 supports npm 12's keyed pack reports; v0.35.13 fixes stale-API recovery loops.
|
|
21
|
-
v0.35.14–v0.38.
|
|
21
|
+
v0.35.14–v0.38.3 continue through the supervisor freeze (`/glla pause`),
|
|
22
22
|
load hold, auditor picker parity, Windows launch fix, zombie-watchdog
|
|
23
23
|
subagent carve-out, due-wait backstop, the `/glla agents` visibility panel,
|
|
24
24
|
durable state-root selection, blank-until-resume auditor context, frozen
|
|
@@ -1187,40 +1187,6 @@ export async function handleSettingChoice(id: string, ctx: ExtensionContext): Pr
|
|
|
1187
1187
|
);
|
|
1188
1188
|
return;
|
|
1189
1189
|
}
|
|
1190
|
-
case "drafterThinkingLevel": {
|
|
1191
|
-
const settings = loadSettings(ctx.cwd);
|
|
1192
|
-
const pickedModel = settings.drafterModel
|
|
1193
|
-
? resolvePickedModel(ctx, { kind: "ref", ref: settings.drafterModel })
|
|
1194
|
-
: (ctx.model as any);
|
|
1195
|
-
const levels = auditorThinkingLevels(pickedModel);
|
|
1196
|
-
if (levels.length <= 1) {
|
|
1197
|
-
ctx.ui.notify(
|
|
1198
|
-
`Drafter agent ${pickedModel ? `${pickedModel.provider}/${pickedModel.id}` : "(session)"} exposes no thinking levels — drafting runs with thinking off.`,
|
|
1199
|
-
"info",
|
|
1200
|
-
);
|
|
1201
|
-
return;
|
|
1202
|
-
}
|
|
1203
|
-
const preferred = settings.drafterThinkingLevel ?? ctx.thinkingLevel ?? "high";
|
|
1204
|
-
const thinking = await ctx.ui.select(
|
|
1205
|
-
"Drafter thinking — TEMPORARY DRAFTING AGENT ONLY (your session thinking is restored afterward)",
|
|
1206
|
-
drafterThinkingChoiceOptions(
|
|
1207
|
-
levels,
|
|
1208
|
-
levels.includes(preferred) ? preferred : levels.includes("high") ? "high" : levels[levels.length - 1],
|
|
1209
|
-
settings.drafterThinkingLevel === undefined,
|
|
1210
|
-
),
|
|
1211
|
-
);
|
|
1212
|
-
if (thinking) {
|
|
1213
|
-
if (thinking.startsWith("session —")) {
|
|
1214
|
-
saveSettings("global", ctx.cwd, { drafterThinkingLevel: undefined });
|
|
1215
|
-
ctx.ui.notify("Drafter thinking: inherited from the session.", "info");
|
|
1216
|
-
} else {
|
|
1217
|
-
const level = thinking.split(" ")[0] as ConfiguredThinkingLevel;
|
|
1218
|
-
saveSettings("global", ctx.cwd, { drafterThinkingLevel: level });
|
|
1219
|
-
ctx.ui.notify(`Drafter thinking: ${level}.`, "info");
|
|
1220
|
-
}
|
|
1221
|
-
}
|
|
1222
|
-
return;
|
|
1223
|
-
}
|
|
1224
1190
|
case "drafterModelFallbacks": {
|
|
1225
1191
|
const global = loadGlobalSettings();
|
|
1226
1192
|
const current = normalizeMainModelFallbackRefs(global.drafterModelFallbacks);
|
|
@@ -1316,30 +1282,6 @@ export async function handleSettingChoice(id: string, ctx: ExtensionContext): Pr
|
|
|
1316
1282
|
ctx.ui.notify(`Auditor model: ${pick.kind === "session" ? "session model (override cleared)" : pick.ref}${t ? ` · thinking ${t.split(" ")[0]}` : ""}`, "info");
|
|
1317
1283
|
return;
|
|
1318
1284
|
}
|
|
1319
|
-
case "auditorThinkingLevel": {
|
|
1320
|
-
// v0.34.127: standalone path — the v0.31.4 comment claimed "/glla
|
|
1321
|
-
// thinking=" is the direct path, but no such action ever existed; the
|
|
1322
|
-
// ONLY way to change the level was re-picking the auditor model. The
|
|
1323
|
-
// Auditor thinking row fixes that with the same ladder + dialog the
|
|
1324
|
-
// model flow uses.
|
|
1325
|
-
const curThinking = loadSettings(ctx.cwd).auditorThinkingLevel;
|
|
1326
|
-
const inheritedThinking = ctx.thinkingLevel ?? "max";
|
|
1327
|
-
const resolved = resolveAuditorModel(ctx);
|
|
1328
|
-
const levels = auditorThinkingLevels(resolved.model);
|
|
1329
|
-
if (levels.length <= 1) {
|
|
1330
|
-
ctx.ui.notify(
|
|
1331
|
-
`Auditor model ${resolved.model ? `${resolved.model.provider}/${resolved.model.id}` : "(session)"} exposes no thinking levels — the auditor runs with thinking off.`,
|
|
1332
|
-
"info",
|
|
1333
|
-
);
|
|
1334
|
-
return;
|
|
1335
|
-
}
|
|
1336
|
-
const t = await ctx.ui.select(
|
|
1337
|
-
"Auditor thinking — DETACHED auditor worker ONLY (your session model's thinking is untouched)",
|
|
1338
|
-
levels.map((lv) => `${lv} — ${THINKING_DESCR[lv] ?? ""}${lv === (curThinking ?? inheritedThinking) ? " (current)" : ""}`),
|
|
1339
|
-
);
|
|
1340
|
-
if (t) saveSettings("global", ctx.cwd, { auditorThinkingLevel: t.split(" ")[0] as Settings["auditorThinkingLevel"] });
|
|
1341
|
-
return;
|
|
1342
|
-
}
|
|
1343
1285
|
case "auditorModelFallbacks": {
|
|
1344
1286
|
const settings = loadGlobalSettings();
|
|
1345
1287
|
const current = normalizeMainModelFallbackRefs(settings.auditorModelFallbacks);
|
|
@@ -210,7 +210,7 @@ export class ModelPickerComponent {
|
|
|
210
210
|
render(width: number): string[] {
|
|
211
211
|
const w = Math.max(20, width - 2);
|
|
212
212
|
const lines: string[] = [];
|
|
213
|
-
lines.push(this.theme.fg("accent", this.theme.bold(this.title)));
|
|
213
|
+
lines.push(this.theme.fg("accent", this.theme.bold(truncateToWidth(this.title, w, "…"))));
|
|
214
214
|
lines.push("");
|
|
215
215
|
const searchLine = `search: ${this.query}`;
|
|
216
216
|
lines.push(this.theme.fg("muted", truncateToWidth(searchLine, w, "…") + "▏"));
|
|
@@ -322,7 +322,7 @@ export class MultiModelPickerComponent {
|
|
|
322
322
|
render(width: number): string[] {
|
|
323
323
|
const w = Math.max(20, width - 2);
|
|
324
324
|
const lines: string[] = [];
|
|
325
|
-
lines.push(this.theme.fg("accent", this.theme.bold(this.title)));
|
|
325
|
+
lines.push(this.theme.fg("accent", this.theme.bold(truncateToWidth(this.title, w, "…"))));
|
|
326
326
|
if (this.unorderedSet) {
|
|
327
327
|
lines.push(this.theme.fg("muted", "selected extensions are loaded by the auditor; order does not matter:"));
|
|
328
328
|
} else if (this.currentRef) {
|
|
@@ -311,14 +311,6 @@ export function buildSettingsRows(
|
|
|
311
311
|
sourceText: src("drafterModel"),
|
|
312
312
|
description: "temporary agent/model used only during /goal, /list, and /loop drafting; after confirmation or interruption the session agent is restored",
|
|
313
313
|
},
|
|
314
|
-
{
|
|
315
|
-
id: "drafterThinkingLevel",
|
|
316
|
-
section: "drafter",
|
|
317
|
-
label: "Drafter thinking",
|
|
318
|
-
valueText: settings.drafterThinkingLevel ? settings.drafterThinkingLevel : `inherit ${sessionThinking}`,
|
|
319
|
-
sourceText: src("drafterThinkingLevel"),
|
|
320
|
-
description: "requested drafting-agent reasoning level — the same request follows the drafter fallback chain and Pi clamps it per model; unset inherits the session level",
|
|
321
|
-
},
|
|
322
314
|
{
|
|
323
315
|
id: "drafterModelFallbacks",
|
|
324
316
|
section: "drafter",
|
|
@@ -358,14 +350,6 @@ export function buildSettingsRows(
|
|
|
358
350
|
sourceText: src("auditorModel"),
|
|
359
351
|
description: "provider/model override for the isolated auditor agent — the fallback chain below runs after this primary; its thinking defaults to the parent session",
|
|
360
352
|
},
|
|
361
|
-
{
|
|
362
|
-
id: "auditorThinkingLevel",
|
|
363
|
-
section: "auditor",
|
|
364
|
-
label: "Auditor thinking",
|
|
365
|
-
valueText: settings.auditorThinkingLevel ?? sessionThinking,
|
|
366
|
-
sourceText: src("auditorThinkingLevel"),
|
|
367
|
-
description: "DETACHED auditor worker's reasoning level — unset inherits the parent session dial (including max); an explicit value overrides it",
|
|
368
|
-
},
|
|
369
353
|
{
|
|
370
354
|
id: "auditorModelFallbacks",
|
|
371
355
|
section: "auditor",
|
|
@@ -778,7 +762,7 @@ export class SettingsMenuComponent implements Component {
|
|
|
778
762
|
|
|
779
763
|
const lines: string[] = [];
|
|
780
764
|
|
|
781
|
-
lines.push(this.theme.fg("accent", this.theme.bold(this.title)));
|
|
765
|
+
lines.push(this.theme.fg("accent", this.theme.bold(truncateToWidth(this.title, Math.max(20, width - 2), "…"))));
|
|
782
766
|
|
|
783
767
|
// v0.28.19: color-only tabs (user call: "dropping the brackets") —
|
|
784
768
|
// active = accent + bold, inactive = dim. No bracket chrome.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-goal-list-loop-audit",
|
|
3
|
-
"version": "0.38.
|
|
3
|
+
"version": "0.38.3",
|
|
4
4
|
"description": "Mission control for autonomous pi: interview-drafted goals, an audited task queue, and forever-loops (metric, spec, project-audit) that run for hours. A detached extension-less auditor process re-verifies every completion with raw evidence without holding the main pi turn; confirmed drafts, decision pauses and consent gates keep you in charge.",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"author": "dracon",
|