@davidorex/pi-behavior-monitors 0.14.4 → 0.26.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.14.6] - 2026-04-27
4
+
5
+ ### Changed
6
+ - Monitor discovery uses a three-tier multi-location loader (project `.pi/monitors/` > global `~/.pi/agent/monitors/` > bundled `<package>/examples/`) instead of the prior copy-on-first-run `seedExamples()` pattern. Bundled monitor changes (e.g., the `agent_end` routing fix in commit affe992) now propagate to all installations automatically because the bundled tier reads the package examples directly. First match by `monitor.name` wins; same-name shadowing across tiers logs a one-line warning at session_start so drift is visible.
7
+ - Existing files in `.pi/monitors/` continue to work as project-level overrides under the new model. To receive bundled-monitor updates, delete the per-monitor files in `.pi/monitors/`. The override warning at session_start identifies which monitors are currently shadowed and where the bundled version lives.
8
+
9
+ ### Removed
10
+ - `seedExamples()` and the seeded-count notification — bundled monitors are no longer copied into user `.pi/monitors/` directories at first run.
11
+ - `resolveProjectMonitorsDir` export — replaced internally by a private `findProjectMonitorsDir(): string | null` helper that returns null instead of synthesizing a cwd-rooted fallback path.
12
+ - Internal `copyDirRecursive` helper — `scripts/generate-skills.js` retains its own private copy.
13
+
3
14
  ## [0.3.0] - 2026-03-18
4
15
 
5
16
  ## [0.2.0] - 2026-03-17
package/README.md CHANGED
@@ -12,7 +12,12 @@ pi install npm:@davidorex/pi-behavior-monitors
12
12
 
13
13
  Or install all three extensions at once: `pi install npm:@davidorex/pi-project-workflows`
14
14
 
15
- On first run, if no monitors exist in your project, example monitors are seeded into `.pi/monitors/`. Edit or delete them to customize.
15
+ Five example monitors ship bundled with the package and load by default from a
16
+ three-tier search (project `.pi/monitors/` > global `~/.pi/agent/monitors/` >
17
+ bundled `examples/`); first match by name wins. To customize one, create
18
+ `.pi/monitors/<name>.monitor.json` in your project — the override fully replaces
19
+ the bundled version by name. Delete the override to revert and pick up bundled
20
+ updates automatically.
16
21
 
17
22
  ## Bundled Example Monitors
18
23
 
@@ -62,6 +67,6 @@ Create a `.monitor.json` file in `.pi/monitors/` conforming to `schemas/monitor.
62
67
 
63
68
  ## Development
64
69
 
65
- Part of the [`pi-project-workflows`](../../README.md) monorepo. All three packages (pi-project, pi-workflows, pi-behavior-monitors) are versioned in lockstep at 0.9.1.
70
+ Part of the [`pi-project-workflows`](../../README.md) monorepo. All four packages (pi-context, pi-jit-agents, pi-workflows, pi-behavior-monitors) are versioned in lockstep (current version in each `package.json`).
66
71
 
67
72
  `npm run build` compiles TypeScript to `dist/` via `tsc`. The package ships `dist/`, not `src/`. Tests use `vitest run` (`npm test`).
@@ -1,7 +1,8 @@
1
1
  name: commit-hygiene-classifier
2
2
  role: sensor
3
3
  description: Classifies whether agent committed changes with proper hygiene
4
- model: claude-sonnet-4-6
4
+ # Route through openrouter (only credential in ~/.pi/agent/auth.json). Use dot form per openrouter registry; dash form (claude-sonnet-4-6) is the anthropic-direct id.
5
+ model: openrouter/anthropic/claude-sonnet-4.6
5
6
  thinking: "on"
6
7
  output:
7
8
  format: json
@@ -1,7 +1,8 @@
1
1
  name: fragility-classifier
2
2
  role: sensor
3
3
  description: Classifies whether agent left unaddressed fragilities
4
- model: claude-sonnet-4-6
4
+ # Route through openrouter (only credential in ~/.pi/agent/auth.json). Use dot form per openrouter registry; dash form (claude-sonnet-4-6) is the anthropic-direct id.
5
+ model: openrouter/anthropic/claude-sonnet-4.6
5
6
  thinking: "on"
6
7
  output:
7
8
  format: json
@@ -1,7 +1,8 @@
1
1
  name: hedge-classifier
2
2
  role: sensor
3
3
  description: Classifies whether assistant deviated from user intent
4
- model: claude-sonnet-4-6
4
+ # Route through openrouter (only credential in ~/.pi/agent/auth.json). Use dot form per openrouter registry; dash form (claude-sonnet-4-6) is the anthropic-direct id.
5
+ model: openrouter/anthropic/claude-sonnet-4.6
5
6
  thinking: "on"
6
7
  output:
7
8
  format: json
@@ -1,7 +1,8 @@
1
1
  name: unauthorized-action-classifier
2
2
  role: sensor
3
3
  description: Classifies whether agent is about to take an unauthorized action
4
- model: claude-sonnet-4-6
4
+ # Route through openrouter (only credential in ~/.pi/agent/auth.json). Use dot form per openrouter registry; dash form (claude-sonnet-4-6) is the anthropic-direct id.
5
+ model: openrouter/anthropic/claude-sonnet-4.6
5
6
  thinking: "on"
6
7
  output:
7
8
  format: json
@@ -1,7 +1,8 @@
1
1
  name: work-quality-classifier
2
2
  role: sensor
3
3
  description: Classifies work quality issues in agent output
4
- model: claude-sonnet-4-6
4
+ # Route through openrouter (only credential in ~/.pi/agent/auth.json). Use dot form per openrouter registry; dash form (claude-sonnet-4-6) is the anthropic-direct id.
5
+ model: openrouter/anthropic/claude-sonnet-4.6
5
6
  thinking: "on"
6
7
  output:
7
8
  format: json
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ExtensionAPI, SessionEntry } from "@mariozechner/pi-coding-agent";
1
+ import type { ExtensionAPI, SessionEntry } from "@earendil-works/pi-coding-agent";
2
2
  export interface CollectorDescriptor {
3
3
  name: string;
4
4
  description: string;
@@ -39,11 +39,24 @@ export interface MonitorScope {
39
39
  export interface MonitorAction {
40
40
  steer?: string | null;
41
41
  learn_pattern?: boolean;
42
+ /**
43
+ * Monitor write-action contract — closes issue-065 by routing through
44
+ * `@davidorex/pi-context/block-api` rather than raw fs.writeFileSync.
45
+ *
46
+ * `block` (replaces former `path`): the named .project/ block to write
47
+ * to; block-api derives the on-disk path as `<cwd>/.project/<block>.json`
48
+ * and the schema as `<cwd>/.project/schemas/<block>.schema.json`. Removing
49
+ * the explicit `path` + `schema` fields collapses the four prior bypass
50
+ * paths (no AJV, no lock, no DispatchContext stamping, no central choke
51
+ * point) into one validated, locked, attributed write surface.
52
+ *
53
+ * `merge`: "append" calls `appendToBlock`; "upsert" calls
54
+ * `upsertItemInBlock` keyed on `id`.
55
+ */
42
56
  write?: {
43
- path: string;
44
- schema?: string;
45
- merge: "append" | "upsert";
57
+ block: string;
46
58
  array_field: string;
59
+ merge: "append" | "upsert";
47
60
  template: Record<string, string>;
48
61
  };
49
62
  }
@@ -118,8 +131,78 @@ export interface MonitorMessageDetails {
118
131
  }
119
132
  type MonitorEvent = "message_end" | "turn_end" | "agent_end" | "command" | "tool_call";
120
133
  export declare const VALID_EVENTS: Set<string>;
121
- export declare function discoverMonitors(): Monitor[];
122
- export declare function resolveProjectMonitorsDir(): string;
134
+ /**
135
+ * Tracks a monitor in a lower-precedence tier whose `name` was shadowed by an
136
+ * earlier (higher-precedence) tier. Surfaced at session_start so users see when
137
+ * a project- or user-level override is hiding a (potentially newer) bundled
138
+ * version. The drift signal is the substitute for copy-on-first-run seeding:
139
+ * package examples now load directly as the third tier, and any project file
140
+ * keeping its older shape is reported here rather than silently winning forever.
141
+ */
142
+ export interface MonitorOverride {
143
+ name: string;
144
+ winnerDir: string;
145
+ losingDir: string;
146
+ }
147
+ /** Return value of `discoverMonitors`. `monitors` is the deduplicated set used
148
+ * by the runtime; `overrides` is the audit trail of shadowed lower-tier files. */
149
+ export interface MonitorDiscovery {
150
+ monitors: Monitor[];
151
+ overrides: MonitorOverride[];
152
+ }
153
+ /**
154
+ * Discover monitors across three tiers; first match by `name` wins.
155
+ *
156
+ * Precedence (highest first):
157
+ * 1. project `.pi/monitors/` (walk-up to .git boundary)
158
+ * 2. global `~/.pi/agent/monitors/` (via `getAgentDir()`)
159
+ * 3. bundled `<package>/examples/` (built-in defaults shipped with this extension)
160
+ *
161
+ * Any monitor file in a lower tier whose `name` matches an already-seen
162
+ * higher-tier monitor is recorded in `overrides` (not loaded). This replaces
163
+ * the prior `seedExamples()` copy-on-first-run pattern: bundled fixes (e.g.
164
+ * commit affe992 routing fragility/hedge classifiers through `agent_end`) now
165
+ * propagate to users automatically because tier 3 is read live, not copied.
166
+ */
167
+ export declare function discoverMonitors(): MonitorDiscovery;
168
+ /**
169
+ * Collect the assistant's response text for the current turn.
170
+ *
171
+ * Walks the branch backward from the tail and aggregates text from every
172
+ * assistant `MessageEntry` until it reaches the most recent user message
173
+ * (turn boundary), at which point the walk stops. Collected segments are
174
+ * reversed back to chronological order and joined with `\n\n`. Empty
175
+ * segments (from tool-call-only assistant messages with no text content)
176
+ * are dropped before joining.
177
+ *
178
+ * Encoded design decisions:
179
+ *
180
+ * - F-014 root-cause fix: previously the function returned from the FIRST
181
+ * assistant message it hit walking backward; when that latest assistant
182
+ * message was tool-call-only, the result was empty even though earlier
183
+ * assistant messages in the same turn carried the user-visible text.
184
+ * The walk now aggregates across all assistant messages in the turn so
185
+ * tool-call-only tail messages no longer mask prior text.
186
+ *
187
+ * - F-018 multi-message-turn semantics: "the assistant's response" is
188
+ * defined as all assistant text emitted from the most recent user
189
+ * message up to the present, joined with double-newline separator.
190
+ * Non-message entries (model_change, label, custom_message,
191
+ * branch_summary, etc.) are skipped — they are not part of the
192
+ * assistant's response.
193
+ *
194
+ * - `extractText` (text-only filter) is intentionally not modified here:
195
+ * tool-call blocks have no user-visible text, and thinking blocks are
196
+ * model-internal reasoning that should not leak into classifier prompts.
197
+ *
198
+ * Edge cases:
199
+ * - Empty branch: returns "".
200
+ * - No user message in branch (e.g., system-init turn): walks to start
201
+ * and returns all collected assistant text.
202
+ * - All assistant messages tool-call-only: returns "" (true empty
203
+ * response, distinct from the F-014 false-positive case).
204
+ */
205
+ export declare function collectAssistantText(branch: SessionEntry[]): string;
123
206
  /**
124
207
  * Detect whether the current user message references prior conversation context
125
208
  * via backreferences, affirmations, or short messages without action verbs.
@@ -129,6 +212,7 @@ export declare function isReferentialMessage(text: string): boolean;
129
212
  export declare function collectConversationHistory(branch: SessionEntry[]): string;
130
213
  /** Collector names derived from the runtime registry — used for consistency testing. */
131
214
  export declare const COLLECTOR_NAMES: string[];
215
+ export declare function saveInstructions(monitor: Monitor, instructions: MonitorInstruction[]): string | null;
132
216
  export type MonitorsCommand = {
133
217
  type: "list";
134
218
  } | {
@@ -189,7 +273,39 @@ export declare function extractResponseText(parts: readonly {
189
273
  * Handles case-insensitive verdict strings and optional fields.
190
274
  */
191
275
  export declare function mapVerdictToClassifyResult(parsed: Record<string, unknown>): ClassifyResult;
276
+ export declare function learnPattern(monitor: Monitor, description: string, severity?: string): void;
192
277
  export declare function generateFindingId(monitorName: string, _description: string): string;
278
+ /**
279
+ * Apply a monitor's write-action by routing through `@davidorex/pi-context/block-api`.
280
+ *
281
+ * Closes issue-065: the prior body wrote findings via `fs.writeFileSync`
282
+ * after manual JSON read+merge+write, bypassing AJV schema validation,
283
+ * proper-lockfile contention guards, DispatchContext author stamping, and
284
+ * any centralized "monitor wrote here" choke point. This refactor routes
285
+ * every monitor write through `appendToBlock` / `upsertItemInBlock` with
286
+ * a `DispatchContext.writer` of `{ kind: "monitor", monitor_name }` so:
287
+ *
288
+ * 1. AJV validates the entry against `.project/schemas/<block>.schema.json`
289
+ * before write — drift surfaces immediately, not on later reader load.
290
+ * 2. proper-lockfile guards concurrent monitor + LLM writes against the
291
+ * same block file.
292
+ * 3. created_by / created_at / modified_by / modified_at fields, when
293
+ * declared on the destination schema, are stamped with the monitor's
294
+ * writer string ("monitor/<name>") so monitor-authored entries are
295
+ * distinguishable from human / agent / workflow entries downstream.
296
+ * 4. All monitor writes funnel through one execute boundary — the future
297
+ * "detect monitor bypass" check has a single call site to inspect.
298
+ *
299
+ * Failure model: AJV ValidationError or any block-api error is logged via
300
+ * console.error with the monitor name and propagated NO FURTHER. This
301
+ * mirrors the previous fs-write failure handling — a monitor that cannot
302
+ * persist a finding does not crash the host turn; the operator sees the
303
+ * stderr line and can investigate. Re-raising would change the host
304
+ * extension's failure model and is out of scope for this refactor.
305
+ *
306
+ * Exported for unit-test access (Phase F of issue-065 closure plan).
307
+ */
308
+ export declare function executeWriteAction(monitor: Monitor, action: MonitorAction, result: ClassifyResult): void;
193
309
  /**
194
310
  * Programmatic monitor invocation — runs classification and write actions for
195
311
  * a named monitor, returning the verdict. Unlike activate(), this skips dedup,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}