@lensmcp/protocol-types 1.25.38 → 1.25.39

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/team.d.ts CHANGED
@@ -8,7 +8,7 @@
8
8
  * What kind of work a task is: it names the role that takes it. `goal`: what a manager breaks into the others' tasks;
9
9
  * `marketing`: telling people about the product (launch posts, release notes, landing and store copy).
10
10
  */
11
- export declare const DASH_TEAM_KINDS: readonly ["goal", "build", "bug", "review", "test", "docs", "marketing", "research", "chore"];
11
+ export declare const DASH_TEAM_KINDS: readonly ["goal", "build", "bug", "review", "test", "qa", "docs", "marketing", "research", "chore"];
12
12
  export type DashTeamKind = (typeof DASH_TEAM_KINDS)[number];
13
13
  export type DashTeamTaskState = 'open' | 'claimed' | 'recovery' | 'completed' | 'cancelled';
14
14
  export type DashTeamOutcome = 'done' | 'approved' | 'changes-requested' | 'passed' | 'failed' | 'wontfix';
@@ -66,6 +66,52 @@ export interface DashTeamTask {
66
66
  completedHead?: string | null;
67
67
  paths?: string[];
68
68
  tags?: string[];
69
+ /** A review's items, whole (the drawer): each point it checks and its verdict (planning/team/06-team-operations.md OP-D3). */
70
+ items?: DashTeamReviewItem[];
71
+ /** A review's items as counts (the board). */
72
+ itemStats?: {
73
+ total: number;
74
+ pass: number;
75
+ fail: number;
76
+ open: number;
77
+ };
78
+ /** What its holder's tool calls did in its newest claim, as the hooks saw them (the drawer). */
79
+ work?: DashTeamTaskWork;
80
+ }
81
+ /** One claim's work, from its holder's hooks: the files edited, commits, the checks and the whole suites run, workspace actions. */
82
+ export interface DashTeamTaskWork {
83
+ sessionId: string;
84
+ at: number;
85
+ edits: number;
86
+ edited: string[];
87
+ outside?: string[];
88
+ commits?: number;
89
+ checks?: string[];
90
+ suites?: string[];
91
+ actions?: number;
92
+ }
93
+ /**
94
+ * «Are they doing the right things» (planning/team/06-team-operations.md O5): what a task's record and its holder's tool
95
+ * calls raise — a review or QA run that edited, a test author that ran a whole suite, edits outside the task's paths, a
96
+ * change completed with no commit or no check, a QA pass naming no run, a claim with no line in ten minutes, a holder
97
+ * whose process ended. Hints, never verdicts.
98
+ */
99
+ export type DashTeamConductKind = 'checker-edited' | 'whole-suite' | 'outside-paths' | 'no-commit' | 'unchecked' | 'qa-unrun' | 'quiet-claim' | 'host-gone';
100
+ export interface DashTeamFlag {
101
+ kind: DashTeamConductKind;
102
+ severity: 'info' | 'warn';
103
+ taskId: string;
104
+ /** The agent it is about: the task's holder. */
105
+ sessionId?: string;
106
+ text: string;
107
+ }
108
+ /** One point a review checks: from the work's «Done means», its tests, a review before it that sent it back, or the reviewer. */
109
+ export interface DashTeamReviewItem {
110
+ id: string;
111
+ text: string;
112
+ from: 'done-means' | 'tests' | 'recheck' | 'reviewer';
113
+ verdict?: 'pass' | 'fail' | 'n/a';
114
+ note?: string;
69
115
  }
70
116
  /** A task named in another's chain: its parent, its children, a blocker. */
71
117
  export interface DashTeamTaskRef {
@@ -81,6 +127,25 @@ export interface DashTeamTaskRef {
81
127
  export interface DashTeamTreeNode extends DashTeamTaskRef {
82
128
  children: DashTeamTreeNode[];
83
129
  }
130
+ /**
131
+ * The OS process agents run in (planning/team/06-team-operations.md OP-D2): a Claude Code or Codex CLI — the person's
132
+ * terminal or a launch. An in-process subagent has no process of its own: it runs in its parent's host. One process,
133
+ * not a reused pid: the pid with the time it started.
134
+ */
135
+ export interface DashTeamHost {
136
+ /** `<pid>@<startedAt>`. */
137
+ key: string;
138
+ pid: number;
139
+ /** The client binary: `claude`, `codex`, or another's name. */
140
+ bin: string;
141
+ startedAt: number;
142
+ /** It runs now — the same binary, started then. Undefined: it could not be checked (no `ps`). */
143
+ alive?: boolean;
144
+ /** Its resident memory in MB, while it runs. */
145
+ rssMb?: number;
146
+ }
147
+ /** Why a session ended: closed by itself or the person, its CLI's SessionEnd, a subagent that stopped, its host process gone, a join never used, quiet past the lease with no host to vouch for it. */
148
+ export type DashTeamClosedReason = 'closed' | 'session-end' | 'stopped' | 'host-gone' | 'unused' | 'lost';
84
149
  /** One coordination session: an agent on the team (a role), or one outside it (no role). */
85
150
  export interface DashTeamSession {
86
151
  id: string;
@@ -95,8 +160,17 @@ export interface DashTeamSession {
95
160
  listening?: boolean;
96
161
  objective?: string;
97
162
  step?: string;
98
- /** `stale`: active, but not heard from within its lease. */
99
- presence: 'active' | 'stale' | 'closed';
163
+ /**
164
+ * `active`: heard from within its lease. `idle`: not heard from within it, but its host process runs — a session at
165
+ * the prompt, waiting for the person. `stale`: not heard from within it and no host to vouch for it — lost; LensMCP
166
+ * closes it an hour after its lease. `closed`: ended (closedReason says how).
167
+ */
168
+ presence: 'active' | 'idle' | 'stale' | 'closed';
169
+ /** The process it runs in — a key of the board's `hosts`. None: unknown (an older LensMCP's session, or no `ps`). */
170
+ host?: string;
171
+ /** The session it is a subagent of: it runs inside that session's process. */
172
+ parent?: string;
173
+ closedReason?: DashTeamClosedReason;
100
174
  worktreeId: string;
101
175
  createdAt: number;
102
176
  lastSeenAt: number;
@@ -161,11 +235,15 @@ export interface DashTeamBoard {
161
235
  revision: number;
162
236
  observedAt: number;
163
237
  sessions: DashTeamSession[];
238
+ /** The processes the board's sessions run in — running ones first. */
239
+ hosts: DashTeamHost[];
164
240
  worktrees: DashTeamWorktree[];
165
241
  /** Live tasks first, then finished ones, newest first. */
166
242
  tasks: DashTeamTask[];
167
243
  notes: DashTeamNote[];
168
244
  roles: DashTeamRole[];
245
+ /** What the board's tasks raise about the agents that hold or held them. */
246
+ flags?: DashTeamFlag[];
169
247
  /** More sessions or tasks than the board carries. */
170
248
  truncated: boolean;
171
249
  }
@@ -440,7 +518,7 @@ export interface DashTeamReviewDelegation {
440
518
  }
441
519
  /** What the run says about the process — a hint for the person reviewing it, never a verdict. */
442
520
  export interface DashTeamReviewFlag {
443
- kind: 'self-review' | 'manager-did-work' | 'same-model' | 'role-model-mismatch' | 'unjoined-agent' | 'long-wait' | 'silent-claim' | 'rework' | 'no-evidence' | 'recovery' | 'open-under-closed' | 'serial' | 'idle-agent';
521
+ kind: 'self-review' | 'manager-did-work' | 'same-model' | 'role-model-mismatch' | 'unjoined-agent' | 'long-wait' | 'silent-claim' | 'rework' | 'no-evidence' | 'recovery' | 'open-under-closed' | 'serial' | 'idle-agent' | DashTeamConductKind;
444
522
  severity: 'info' | 'warn';
445
523
  text: string;
446
524
  taskId?: string;
package/lib/team.js CHANGED
@@ -1 +1 @@
1
- "use strict";export const DASH_TEAM_KINDS=["goal","build","bug","review","test","docs","marketing","research","chore"],DASH_TEAM_LINK_KINDS=["task","flow","error","suggestion","ai-call","review","page","route","commit","branch","worktree","file"];
1
+ "use strict";export const DASH_TEAM_KINDS=["goal","build","bug","review","test","qa","docs","marketing","research","chore"],DASH_TEAM_LINK_KINDS=["task","flow","error","suggestion","ai-call","review","page","route","commit","branch","worktree","file"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lensmcp/protocol-types",
3
- "version": "1.25.38",
3
+ "version": "1.25.39",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "module": "./index.js",