pi-goal-list-loop-audit 0.27.4 → 0.27.5
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.
|
@@ -71,8 +71,13 @@ export interface Settings {
|
|
|
71
71
|
* its quota; "agent-default" restores upstream behavior. Applies to NEW
|
|
72
72
|
* sessions (pi-subagents registers agents at session start). */
|
|
73
73
|
/** v0.26.0: reviewer (post-completion follow-up enqueuer) config —
|
|
74
|
-
* project-scoped; see extensions/reviewer.ts DEFAULT_REVIEWER_CONFIG.
|
|
74
|
+
* project-scoped; see extensions/reviewer.ts DEFAULT_REVIEWER_CONFIG.
|
|
75
|
+
* v0.27.5: superseded by `postaudit` (same shape, terminology reflects
|
|
76
|
+
* the auditor-adjacent role). Both keys are read; `postaudit` wins
|
|
77
|
+
* when both are present. `reviewer` is kept for backwards compat. */
|
|
75
78
|
reviewer?: Record<string, unknown>;
|
|
79
|
+
/** v0.27.5: post-completion audit config. Same shape as `reviewer`. */
|
|
80
|
+
postaudit?: Record<string, unknown>;
|
|
76
81
|
subagentModelStrategy?: SubagentModelStrategy;
|
|
77
82
|
/** v0.24.6: per-agent-type model pin, e.g. { "Explore": "minimax/MiniMax-M3" }.
|
|
78
83
|
* Always wins over subagentModelStrategy — the managed override is written
|
|
@@ -140,6 +145,7 @@ export const SETTINGS_KEYS: Array<keyof Settings> = [
|
|
|
140
145
|
"stallEscalationRefires",
|
|
141
146
|
"stallShortWords",
|
|
142
147
|
"stallSimilarityThreshold",
|
|
148
|
+
"postaudit",
|
|
143
149
|
];
|
|
144
150
|
|
|
145
151
|
/** Where each effective setting comes from (for the /glla display). */
|
package/extensions/loops/goal.ts
CHANGED
|
@@ -683,7 +683,12 @@ function fireReviewer(
|
|
|
683
683
|
): void {
|
|
684
684
|
try {
|
|
685
685
|
const settings = loadSettings(ctx.cwd);
|
|
686
|
-
|
|
686
|
+
// v0.27.5: dual-read `reviewer` (legacy) and `postaudit` (new) settings
|
|
687
|
+
// keys. `postaudit` takes precedence when both are present — the
|
|
688
|
+
// existing settings file shape is preserved; the rename is purely
|
|
689
|
+
// vocabulary on the user-facing surface.
|
|
690
|
+
const reviewerBlock = (settings.postaudit ?? settings.reviewer) as Partial<ReviewerConfig> | undefined;
|
|
691
|
+
const config = resolveReviewerConfig(reviewerBlock);
|
|
687
692
|
if (opts.mode) config.mode = opts.mode;
|
|
688
693
|
const sources: Array<{ name: string; text: string }> = [];
|
|
689
694
|
try {
|
|
@@ -728,6 +733,19 @@ function fireReviewer(
|
|
|
728
733
|
if (!outcome.fired && outcome.suppressedReason && opts.manual) {
|
|
729
734
|
ctx.ui.notify(`Reviewer suppressed: ${outcome.suppressedReason}`, "info");
|
|
730
735
|
}
|
|
736
|
+
// v0.27.5: surface the silent review to interactive users. The internal
|
|
737
|
+
// runReviewer notify fires DURING the goal-completion handler, easy to
|
|
738
|
+
// miss because pi is busy transitioning state. The second notify
|
|
739
|
+
// arrives AFTER everything settles and points at the file directly.
|
|
740
|
+
// Skipped when manual=true (manual /review has its own UX already) and
|
|
741
|
+
// when the runner wasn't fired (suppressed / not applicable).
|
|
742
|
+
if (!opts.manual && outcome.fired && outcome.reportPath) {
|
|
743
|
+
const relPath = path.relative(ctx.cwd, outcome.reportPath) || outcome.reportPath;
|
|
744
|
+
ctx.ui.notify(
|
|
745
|
+
`↳ review written: ${relPath}${outcome.enqueued ? ` (${outcome.enqueued} enqueued to /list)` : ""}${outcome.proposed ? ` (${outcome.proposed} /goal proposed)` : ""}`,
|
|
746
|
+
"info",
|
|
747
|
+
);
|
|
748
|
+
}
|
|
731
749
|
} catch (err) {
|
|
732
750
|
ctx.ui.notify(`Reviewer failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`, "warning");
|
|
733
751
|
}
|
|
@@ -3216,6 +3234,13 @@ async function cmdSettings(args: string, ctx: ExtensionContext): Promise<void> {
|
|
|
3216
3234
|
await cmdReviewerSettings(ctx);
|
|
3217
3235
|
return;
|
|
3218
3236
|
}
|
|
3237
|
+
// v0.27.5: postaudit is the new vocabulary (the post-completion auditor).
|
|
3238
|
+
// Both keywords open the same config menu and resolve to the same settings
|
|
3239
|
+
// key — the legacy `reviewer` label is kept for backwards compatibility.
|
|
3240
|
+
if (/^postaudit\b/.test(trimmed)) {
|
|
3241
|
+
await cmdReviewerSettings(ctx);
|
|
3242
|
+
return;
|
|
3243
|
+
}
|
|
3219
3244
|
if (!trimmed) {
|
|
3220
3245
|
if (ctx.hasUI) {
|
|
3221
3246
|
await openSettingsUI(ctx);
|
|
@@ -3245,6 +3270,9 @@ async function cmdSettings(args: string, ctx: ExtensionContext): Promise<void> {
|
|
|
3245
3270
|
fmt("wedgeAlertMinutes", "wedgeAlert"),
|
|
3246
3271
|
fmt("stallShortWords", "stallShortWords"),
|
|
3247
3272
|
fmt("stallSimilarityThreshold", "stallSimilarityThreshold"),
|
|
3273
|
+
// v0.27.5: post-completion auditor config — read either the new
|
|
3274
|
+
// `postaudit` key or the legacy `reviewer` key (postaudit wins).
|
|
3275
|
+
`postaudit: ${JSON.stringify(loadSettings(ctx.cwd).postaudit ?? loadSettings(ctx.cwd).reviewer ?? {}) || '(unset — defaults)'}`,
|
|
3248
3276
|
// v0.25.6: effective per-type subagent model resolution.
|
|
3249
3277
|
...["Explore", "Plan", "general-purpose"].map(
|
|
3250
3278
|
(t) => `subagent ${t}: ${resolveEffectiveSubagentModel(t, loadSettings(ctx.cwd), (ctx.model as any)?.id ? `${(ctx.model as any).provider}/${(ctx.model as any).id}` : undefined)}`,
|
|
@@ -3576,7 +3604,8 @@ export default function (pi: ExtensionAPI): void {
|
|
|
3576
3604
|
["stats", "per-project ledger rollups: /glla stats [json|premature|project=<path>]"],
|
|
3577
3605
|
["audits", "audit-log browser: /glla audits [N|full] — recent verdicts from .pi-glla/audits.jsonl"],
|
|
3578
3606
|
["autoaccept=", "on: drafts activate without the Confirm dialog (unattended rigs)"],
|
|
3579
|
-
["reviewer", "reviewer config menu (post-completion follow-up enqueuer)"],
|
|
3607
|
+
["reviewer", "reviewer config menu (alias of postaudit — post-completion follow-up enqueuer)"],
|
|
3608
|
+
["postaudit", "post-completion audit config menu (the new name for /glla reviewer)"],
|
|
3580
3609
|
["project", "write a project override: /glla project key=value"],
|
|
3581
3610
|
]),
|
|
3582
3611
|
handler: settingsHandler,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-goal-list-loop-audit",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.5",
|
|
4
4
|
"description": "Goal. Loop. Audit. Done. — a pi-coding-agent extension that supervises long-running work, with isolated auditor on each completion. Beat bamboozling by design: the auditor runs in a fresh session with no extensions, no skills, no editor — only the read tools needed to verify your goal.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "dracon",
|