@lensmcp/protocol-types 1.25.12 → 1.25.14

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.
@@ -6,7 +6,7 @@
6
6
  * Why a file and not the event bus: the bus is ONE-WAY. Producers (the Vite
7
7
  * plugin, the NestJS instrumentation, the capture runner) append to
8
8
  * `LENSMCP_EVENT_FILE` / the UDS socket and the MCP session tails it — nothing
9
- * flows back. So `visual.capture_frame` publishing a `visual-capture-request`
9
+ * flows back. So `visual_capture_frame` publishing a `visual-capture-request`
10
10
  * onto the MCP's in-process bus was a DEAD LETTER: the runner never saw it,
11
11
  * which is why capture had to poll a live Chrome forever (measured on a real
12
12
  * machine, 2026-07-29: 2 runners + >1GB of Chrome resident for 1d8h with
@@ -26,7 +26,7 @@ export declare const CAPTURE_REQUEST_FILENAME = "capture-request.json";
26
26
  * Presence-file name (same directory). The runner writes it at startup and
27
27
  * removes it on a clean stop.
28
28
  *
29
- * Its job is to keep the requester honest: `visual.capture_frame` now WAITS for
29
+ * Its job is to keep the requester honest: `visual_capture_frame` now WAITS for
30
30
  * the fresh frame it asked for (a cold browser needs ~1s), and without a way to
31
31
  * tell "a runner is warming up" from "no runner exists" that wait would also be
32
32
  * paid by every workspace running with capture disabled or no Chrome installed
@@ -74,7 +74,7 @@ export declare function appMatchesPage(app: string, page: CapturePage): boolean;
74
74
  /**
75
75
  * Session-rules file name (same directory).
76
76
  *
77
- * `visual.register_rule` had the dead-letter problem this module describes for
77
+ * `visual_register_rule` had the dead-letter problem this module describes for
78
78
  * capture requests, and kept it after they were fixed: it published
79
79
  * `visual-rule-registered` onto the MCP's in-process bus, where only the
80
80
  * reducer heard it. The reducer listed the rule and counted it ("1 rule
@@ -86,7 +86,7 @@ export declare function appMatchesPage(app: string, page: CapturePage): boolean;
86
86
  * reads them before each capture.
87
87
  */
88
88
  export declare const CAPTURE_RULES_FILENAME = "capture-rules.json";
89
- /** One rule registered through `visual.register_rule`. */
89
+ /** One rule registered through `visual_register_rule`. */
90
90
  export interface CaptureSessionRule {
91
91
  /** The rule, in the `lensmcp.rules.json` shape. Validate on read — it crossed
92
92
  * a process boundary, and a hand-edited file must not crash a capture. */
@@ -1719,7 +1719,7 @@ export interface DashDbSchema {
1719
1719
  /** The newest read failed, and this is the last one that did not: why the newer failed, and when. */
1720
1720
  kept?: DashDbKept;
1721
1721
  }
1722
- /** One database's last read by LensMCP's own checks (`db.schema`), as `db://analysis` names it beside the analyzer's runs. */
1722
+ /** One database's last read by LensMCP's own checks (`db_schema`), as `db://analysis` names it beside the analyzer's runs. */
1723
1723
  export interface DashDbChecksSeen {
1724
1724
  store: string;
1725
1725
  database: string;
@@ -2718,10 +2718,12 @@ export interface DashSuggestion {
2718
2718
  current: boolean;
2719
2719
  /** A review newer than its state still asks for it — an applied change that did not do it (a closed one reopens as new). */
2720
2720
  askedAgainAt?: number;
2721
- /** What it is about and where to read more (`suggestion.get`, the dashboard's detail): its target, what its review rested on, what it names. */
2721
+ /** What it is about and where to read more (`suggestion_get`, the dashboard's detail): its target, what its review rested on, what it names. */
2722
2722
  refs?: DashSuggestionRef[];
2723
- /** The checks scheduled on it, newest first (`suggestion.get`, the dashboard's detail); in a list, how many wait. */
2723
+ /** The checks scheduled on it, newest first (`suggestion_get`, the dashboard's detail); in a list, how many wait. */
2724
2724
  checks?: DashSuggestionCheck[];
2725
+ /** A check to start from, read from its verify line (`suggestion_get`, the dashboard's Check a number…) — never scheduled by itself. */
2726
+ proposedCheck?: DashCheckProposal;
2725
2727
  checksWaiting?: number;
2726
2728
  }
2727
2729
  /** One thing a suggestion is about, or rests on — and how to read it. */
@@ -2760,6 +2762,12 @@ export interface DashCheckMeasure {
2760
2762
  /** How long since the check began before it can pass — an error not seen again needs time to pass (default 30 min for `occurrences`). */
2761
2763
  holdMs?: number;
2762
2764
  }
2765
+ /** A check read from a finding's own words: measures to schedule as they are, or its review run anew — and what they were read from. */
2766
+ export interface DashCheckProposal {
2767
+ measures?: DashCheckMeasure[];
2768
+ review?: true;
2769
+ from: string;
2770
+ }
2763
2771
  /** What one look of a check found. */
2764
2772
  export interface DashCheckResult {
2765
2773
  at: number;
@@ -2780,7 +2788,7 @@ export interface DashCheckResult {
2780
2788
  text: string;
2781
2789
  }
2782
2790
  /**
2783
- * A check scheduled on a suggestion (by a coding agent, `suggestion.check`, or a developer): LensMCP looks again — at
2791
+ * A check scheduled on a suggestion (by a coding agent, `suggestion_check`, or a developer): LensMCP looks again — at
2784
2792
  * the lens's numbers since it began (`measure`), or by reviewing its target anew (`review`, a paid run) — and closes
2785
2793
  * the suggestion when it passes. It looks first at `after`, then every `everyMs`, and gives up at `until`.
2786
2794
  */
@@ -3380,7 +3388,7 @@ export interface DashAgentEvent {
3380
3388
  at: number;
3381
3389
  /** `ask`: a prompt the person gave it (the Claude Code plugin's hook) — `result` holds its first line. */
3382
3390
  kind: 'tool' | 'read' | 'say' | 'ask';
3383
- /** The tool or the resource URI; `agent.task` for `say`; `prompt` for `ask`. */
3391
+ /** The tool or the resource URI; `agent_task` for `say`; `prompt` for `ask`. */
3384
3392
  name: string;
3385
3393
  /** Its arguments, redacted, as JSON (at most 2 KB). */
3386
3394
  args?: string;
@@ -3406,13 +3414,13 @@ export interface DashAgentSession {
3406
3414
  lastSeenAt: number;
3407
3415
  /** Ended: when its shim exited (or, without one, its last call). */
3408
3416
  endedAt?: number;
3409
- /** What it says it is doing (`agent.task`): the task's first line, and the step it is on. */
3417
+ /** What it says it is doing (`agent_task`): the task's first line, and the step it is on. */
3410
3418
  task?: string;
3411
3419
  step?: string;
3412
3420
  saidAt?: number;
3413
3421
  /**
3414
3422
  * What the person last asked it — the prompt's first line, recorded by the LensMCP Claude Code plugin's
3415
- * `UserPromptSubmit` hook, so a session shows its task even when the agent never calls `agent.task`.
3423
+ * `UserPromptSubmit` hook, so a session shows its task even when the agent never calls `agent_task`.
3416
3424
  */
3417
3425
  asked?: string;
3418
3426
  askedAt?: number;
@@ -18,7 +18,7 @@ import type { BaseEvent } from './event.js';
18
18
  * - **It is undone the same way** (`error-restored`), and what is hidden is still listed.
19
19
  *
20
20
  * WHO may write one: a person in the dashboard, a person at the CLI, and an agent through
21
- * `observe.dismiss_errors`. The last two name EVENTS, not a dashboard row, and must say why —
21
+ * `observe_dismiss_errors`. The last two name EVENTS, not a dashboard row, and must say why —
22
22
  * `by` and `reason` travel with the dismissal and are shown wherever it is listed, so a status
23
23
  * that went quiet because an agent dismissed something says exactly that.
24
24
  */
package/lib/sources.d.ts CHANGED
@@ -16,8 +16,8 @@
16
16
  * ({@link SourceDeclarationRaw}). A group's `key` travels as `group`: the bus redacts any field NAMED `key`
17
17
  * (`@lensmcp/core` `isSecretParam`), which would have turned every group into `[REDACTED]`. The cluster MIRRORS
18
18
  * these shapes (it does not depend on this package); a parity fixture pins both sides.
19
- * 3. The READ — `apps/agent` folds them into `process://sources` ({@link SourcesReport}); the `observe.sources` and
20
- * `source.get` tools, the status signal and the dashboard read that.
19
+ * 3. The READ — `apps/agent` folds them into `process://sources` ({@link SourcesReport}); the `observe_sources` and
20
+ * `source_get` tools, the status signal and the dashboard read that.
21
21
  *
22
22
  * Phase 2 adds:
23
23
  * - the `loop` kind — a background loop, scheduler or sweep answering `lensmcp.loop/v1` ({@link LoopSnapshotRaw});
@@ -546,7 +546,7 @@ export interface SourcePushedEvent {
546
546
  counterpart?: string;
547
547
  correlation?: string;
548
548
  error?: string;
549
- /** The flow it ran in — open it with flow.get. */
549
+ /** The flow it ran in — open it with flow_get. */
550
550
  flowId?: string;
551
551
  requestId?: string;
552
552
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lensmcp/protocol-types",
3
- "version": "1.25.12",
3
+ "version": "1.25.14",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "module": "./index.js",