@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.
- package/lib/capture-demand.d.ts +4 -4
- package/lib/dashboard.d.ts +15 -7
- package/lib/error-dismissal.d.ts +1 -1
- package/lib/sources.d.ts +3 -3
- package/package.json +1 -1
package/lib/capture-demand.d.ts
CHANGED
|
@@ -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 `
|
|
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: `
|
|
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
|
-
* `
|
|
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 `
|
|
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. */
|
package/lib/dashboard.d.ts
CHANGED
|
@@ -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 (`
|
|
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 (`
|
|
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 (`
|
|
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, `
|
|
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; `
|
|
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 (`
|
|
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 `
|
|
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;
|
package/lib/error-dismissal.d.ts
CHANGED
|
@@ -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
|
-
* `
|
|
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 `
|
|
20
|
-
* `
|
|
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
|
|
549
|
+
/** The flow it ran in — open it with flow_get. */
|
|
550
550
|
flowId?: string;
|
|
551
551
|
requestId?: string;
|
|
552
552
|
}
|