pi-goal-list-loop-audit 0.27.8 → 0.28.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.
@@ -104,6 +104,7 @@ function buildGoalAuditorPrompt(goal: Goal, completionSummary: string | null | u
104
104
  "You are the independent completion auditor for pi-goal-list-loop-audit.",
105
105
  "The executor claims the goal is complete. Your job is to decide whether the user's objective is actually satisfied.",
106
106
  "Be skeptical and semantic. Do not approve from paperwork, intent, file count, word count, build success, or a plausible summary alone.",
107
+ "Chunk output near context-full: prefer focused, evidence-quote-first replies (one tool call at a time, raw output inline) over mega-replies that hit the output-token cap. The orchestrator's auto-continue fires on stop_reason=\"length\" but pre-empting by chunking is cheaper than recovering from the cap.",
107
108
  "Use read/grep/find/ls/bash as needed to inspect real artifacts. Do not mutate files or run destructive commands.",
108
109
  "If the work is only an alpha scaffold, generated template, shallow draft, proxy milestone, or lacks the user-facing value requested, disapprove.",
109
110
  "If any explicit requirement is missing, weakly verified, contradicted, or not inspectable with the available evidence, disapprove.",
@@ -231,12 +231,19 @@ function goalLines(g: Goal, state: State, audit: AuditDisplayProgress | null | u
231
231
  });
232
232
  // v0.27.1: what survives the pause — the first question at a pause is
233
233
  // "did I lose the work?". Answer it on the card.
234
+ // v0.27.9: when the goal has no telemetry yet (restored-in-fresh-session
235
+ // before the first turn), render "awaiting first turn" instead of "saved"
236
+ // — the latter was misleading because no work was ever "saved" before the
237
+ // session ended.
234
238
  const spent: string[] = [];
235
239
  const tokUsed = g.usage?.tokensUsed ?? 0;
236
- if (tokUsed > 0) spent.push(`${fmtTokens(tokUsed)} tok spent`);
237
240
  const audits = g.auditHistory?.length ?? 0;
241
+ if (tokUsed > 0) spent.push(`${fmtTokens(tokUsed)} tok spent`);
238
242
  if (audits > 0) spent.push(`${audits} audit${audits === 1 ? "" : "s"}`);
239
- const savedLine = `saved${spent.length > 0 ? ` — ${spent.join(" · ")}` : ""} · resumes exactly here`;
243
+ const hasTelemetry = spent.length > 0;
244
+ const savedLine = hasTelemetry
245
+ ? `saved — ${spent.join(" · ")} · resumes exactly here`
246
+ : `awaiting first turn — resumes exactly here`;
240
247
  if (g.pauseSuggestedAction) {
241
248
  lines.push(`├─ ${paint(theme, "dim", truncate(savedLine, budget))}`);
242
249
  const wrapped = wrap(g.pauseSuggestedAction, budget, 3);
@@ -83,6 +83,18 @@ export interface Settings {
83
83
  * Always wins over subagentModelStrategy — the managed override is written
84
84
  * WITH this pin regardless of strategy. */
85
85
  subagentModelOverrides?: Record<string, string>;
86
+ /** v0.27.9: per-tool overrides — allowlist (force tools visible despite
87
+ * an external modlist), hidden (force tools hidden even when allowed by
88
+ * the session), and per-tool config (Record<toolName, Record<key, value>>
89
+ * — extensible for tool-specific knobs like timeouts, formats, etc.). */
90
+ toolOverrides?: {
91
+ /** Tools that MUST be active even when an external allowlist hides them. */
92
+ allow?: string[];
93
+ /** Tools that MUST be hidden even when the session allows them. */
94
+ hide?: string[];
95
+ /** Per-tool configuration knobs (extensible). */
96
+ perToolConfig?: Record<string, Record<string, unknown>>;
97
+ };
86
98
  }
87
99
 
88
100
  export const DEFAULT_SETTINGS: Settings = {
@@ -146,6 +158,7 @@ export const SETTINGS_KEYS: Array<keyof Settings> = [
146
158
  "stallShortWords",
147
159
  "stallSimilarityThreshold",
148
160
  "postaudit",
161
+ "toolOverrides",
149
162
  ];
150
163
 
151
164
  /** Where each effective setting comes from (for the /glla display). */