@bli-cockpit/mcp 0.1.39 → 0.1.41
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/dist/ops-tools.js +7 -0
- package/dist/usage-tools.js +5 -5
- package/package.json +2 -2
package/dist/ops-tools.js
CHANGED
|
@@ -73,6 +73,11 @@ export function registerOpsTools(server, deps) {
|
|
|
73
73
|
const lines = rows
|
|
74
74
|
.map((row) => `${(row.verdict ?? "?").padEnd(14)} ${row.id ?? "?"} ${row.detail ?? row.label ?? ""}`.trimEnd())
|
|
75
75
|
.join("\n");
|
|
76
|
+
// BLI-4341: the ladder queue's one server-written sentence, relayed
|
|
77
|
+
// verbatim, the same way the CLI prints it. An agent asking "has this
|
|
78
|
+
// been processed" gets the queue's answer and never computes one.
|
|
79
|
+
const ladder = asRecord(body.ladder);
|
|
80
|
+
const ladderLine = typeof ladder.summary === "string" ? `LADDER ${ladder.summary}` : "";
|
|
76
81
|
const memory = args.memory
|
|
77
82
|
? await callAgentDoor(session, deps.fetchImpl, "GET", "/api/ops/memory-usage") : null;
|
|
78
83
|
if (memory && !memory.ok)
|
|
@@ -90,6 +95,7 @@ export function registerOpsTools(server, deps) {
|
|
|
90
95
|
return textResult(`${rows.length} pipeline(s), ${unhealthy.length} unhealthy`
|
|
91
96
|
+ `${unhealthy.length > 0 ? `: ${unhealthy.map((row) => row.id ?? "?").join(", ")}` : "."}`
|
|
92
97
|
+ `${lines ? `\n${lines}` : ""}`
|
|
98
|
+
+ `${ladderLine ? `\n${ladderLine}` : ""}`
|
|
93
99
|
+ `${memoryLines ? `\n${memoryLines}` : ""}`
|
|
94
100
|
+ `${experienceLines ? `\n${experienceLines}` : ""}`,
|
|
95
101
|
// The API owns the wording and the timing boundary on every surface.
|
|
@@ -99,6 +105,7 @@ export function registerOpsTools(server, deps) {
|
|
|
99
105
|
...(body.fleet ? { fleet: body.fleet } : {}),
|
|
100
106
|
...(body.coverage ? { coverage: body.coverage } : {}),
|
|
101
107
|
...(body.skips ? { skips: body.skips } : {}),
|
|
108
|
+
...(body.ladder ? { ladder: body.ladder } : {}),
|
|
102
109
|
...(memory?.ok ? { memory: memory.body.memory, hooks: memory.body.hooks, experience: memory.body.experience } : {}),
|
|
103
110
|
});
|
|
104
111
|
}));
|
package/dist/usage-tools.js
CHANGED
|
@@ -5,7 +5,7 @@ export function registerUsageTools(server, deps) {
|
|
|
5
5
|
registrarFor(server)("usage_people", {
|
|
6
6
|
title: "Read usage by person",
|
|
7
7
|
description: "Per-person Claude Code and Codex token usage, list-price equivalent, and extraction coverage.",
|
|
8
|
-
inputSchema: { minConfidence: z.enum(["high", "medium", "low"]).optional(), groupBy: z.enum(["repo", "task_type", "topic"]).optional(), since: z.string().optional().describe("<n>d (1 to 365), <n>h (1 to 8760), or an ISO timestamp. Default 30d; invalid values return invalid_usage_window."), until: z.string().optional(), include_automated: z.boolean().optional() },
|
|
8
|
+
inputSchema: { minConfidence: z.enum(["high", "medium", "low"]).optional(), groupBy: z.enum(["repo", "task_type", "topic", "ticket"]).optional(), since: z.string().optional().describe("<n>d (1 to 365), <n>h (1 to 8760), or an ISO timestamp. Default 30d; invalid values return invalid_usage_window."), until: z.string().optional(), include_automated: z.boolean().optional() },
|
|
9
9
|
}, async (args) => withSession(deps, async (session) => {
|
|
10
10
|
const query = new URLSearchParams({ since: String(args.since ?? "30d") });
|
|
11
11
|
if (args.until)
|
|
@@ -23,12 +23,12 @@ export function registerUsageTools(server, deps) {
|
|
|
23
23
|
return textResult(`${coverage?.sessions_extracted ?? 0} of ${coverage?.sessions_observed ?? 0} sessions extracted.${args.groupBy === "task_type" ? ` ${coverage?.sessions_labelled ?? 0} of ${coverage?.sessions_observed ?? 0} sessions labelled by topic.` : ""}`, response.body);
|
|
24
24
|
}));
|
|
25
25
|
registrarFor(server)("usage_sessions", {
|
|
26
|
-
title: "Read subject sessions",
|
|
27
|
-
description: "List subject sessions with titles, tokens and work types; read digest windows on demand with session.",
|
|
28
|
-
inputSchema: { subject: z.string().optional(), repo: z.string().optional(), since: z.string().optional(), until: z.string().optional(), include_automated: z.boolean().optional(), session: z.string().optional(), fromWindow: z.number().int().positive().optional() },
|
|
26
|
+
title: "Read task or subject sessions",
|
|
27
|
+
description: "List task or subject sessions with titles, tokens and work types; read digest windows on demand with session.",
|
|
28
|
+
inputSchema: { task: z.string().regex(/^BLI-[0-9]+$/).optional(), subject: z.string().optional(), repo: z.string().optional(), since: z.string().optional(), until: z.string().optional(), include_automated: z.boolean().optional(), session: z.string().optional(), fromWindow: z.number().int().positive().optional() },
|
|
29
29
|
}, async (args) => withSession(deps, async (session) => {
|
|
30
30
|
const query = new URLSearchParams();
|
|
31
|
-
for (const key of ["subject", "repo", "since", "until", "session", "fromWindow"])
|
|
31
|
+
for (const key of ["task", "subject", "repo", "since", "until", "session", "fromWindow"])
|
|
32
32
|
if (args[key] !== undefined)
|
|
33
33
|
query.set(key, String(args[key]));
|
|
34
34
|
if (args.include_automated)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bli-cockpit/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "bli-tower: an MCP server over BLI Cockpit's agent doors: JARVIS (jarvis_*), documents (docs_*), channels (msg_*), issues (work_*), the daily page (brief_*), meeting notes (notes_*), the ops board (ops_status/slack_*), settings/team/model, Scout and the workbook, plus the legacy event-stream tools (emit_event, get_ticket_timeline, get_active_tickets).",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"readme": "npm run build && node scripts/write-readme-census.mjs"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@bli-cockpit/telemetry-core": "0.1.
|
|
33
|
+
"@bli-cockpit/telemetry-core": "0.1.47",
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
35
35
|
"zod": "^4.3.6"
|
|
36
36
|
},
|