@letpeoplework/lighthouse-mcp-core 1.4.0 → 1.5.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/dist/index.cjs +68 -0
- package/dist/index.d.cts +27 -1
- package/dist/index.d.ts +27 -1
- package/dist/index.js +68 -0
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -226,6 +226,32 @@ var toolDefinitions = [
|
|
|
226
226
|
additionalProperties: false
|
|
227
227
|
}
|
|
228
228
|
},
|
|
229
|
+
{
|
|
230
|
+
name: "lighthouse_team_metrics_blockedCountHistory",
|
|
231
|
+
description: "Get the blocked-items-over-time trend for a team by ID: how many work items were blocked on each captured day, optionally filtered by start and end dates. To see what is blocked right now and for how long, read the team's current WIP \u2014 each item carries isBlocked and, when blocked, a blockedSince timestamp.",
|
|
232
|
+
inputSchema: {
|
|
233
|
+
type: "object",
|
|
234
|
+
properties: {
|
|
235
|
+
...idInputSchema.properties,
|
|
236
|
+
...dateRangeProperties
|
|
237
|
+
},
|
|
238
|
+
required: ["id"],
|
|
239
|
+
additionalProperties: false
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: "lighthouse_portfolio_metrics_blockedCountHistory",
|
|
244
|
+
description: "Get the blocked-items-over-time trend for a portfolio by ID: how many work items were blocked on each captured day, optionally filtered by start and end dates. To see what is blocked right now and for how long, read the portfolio's current WIP \u2014 each item carries isBlocked and, when blocked, a blockedSince timestamp.",
|
|
245
|
+
inputSchema: {
|
|
246
|
+
type: "object",
|
|
247
|
+
properties: {
|
|
248
|
+
...idInputSchema.properties,
|
|
249
|
+
...dateRangeProperties
|
|
250
|
+
},
|
|
251
|
+
required: ["id"],
|
|
252
|
+
additionalProperties: false
|
|
253
|
+
}
|
|
254
|
+
},
|
|
229
255
|
{
|
|
230
256
|
name: "lighthouse_portfolio_metrics_throughput",
|
|
231
257
|
description: "Get throughput run-chart data for a portfolio by ID, optionally filtered by start and end dates.",
|
|
@@ -641,6 +667,16 @@ var toolInputSchemas = {
|
|
|
641
667
|
startDate: isoDateStringSchema.optional(),
|
|
642
668
|
endDate: isoDateStringSchema.optional()
|
|
643
669
|
}),
|
|
670
|
+
lighthouse_team_metrics_blockedCountHistory: import_zod.z.object({
|
|
671
|
+
id: import_zod.z.number().int(),
|
|
672
|
+
startDate: isoDateStringSchema.optional(),
|
|
673
|
+
endDate: isoDateStringSchema.optional()
|
|
674
|
+
}),
|
|
675
|
+
lighthouse_portfolio_metrics_blockedCountHistory: import_zod.z.object({
|
|
676
|
+
id: import_zod.z.number().int(),
|
|
677
|
+
startDate: isoDateStringSchema.optional(),
|
|
678
|
+
endDate: isoDateStringSchema.optional()
|
|
679
|
+
}),
|
|
644
680
|
lighthouse_team_metrics_workItemAge: import_zod.z.object({
|
|
645
681
|
id: import_zod.z.number().int(),
|
|
646
682
|
startDate: isoDateStringSchema.optional(),
|
|
@@ -923,6 +959,38 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
923
959
|
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
924
960
|
);
|
|
925
961
|
}
|
|
962
|
+
if (name === "lighthouse_team_metrics_blockedCountHistory") {
|
|
963
|
+
const id = getNumericId(argumentsPayload);
|
|
964
|
+
if (id === null) {
|
|
965
|
+
return getErrorToolResult("team metrics: invalid id");
|
|
966
|
+
}
|
|
967
|
+
const range = getDateRange(argumentsPayload);
|
|
968
|
+
const result = await client.getTeamBlockedCountHistory(id, range);
|
|
969
|
+
if (result.ok) {
|
|
970
|
+
return getSuccessToolResult(
|
|
971
|
+
`team blockedCountHistory: ${encodePayload(result.value)}`
|
|
972
|
+
);
|
|
973
|
+
}
|
|
974
|
+
return getErrorToolResult(
|
|
975
|
+
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
976
|
+
);
|
|
977
|
+
}
|
|
978
|
+
if (name === "lighthouse_portfolio_metrics_blockedCountHistory") {
|
|
979
|
+
const id = getNumericId(argumentsPayload);
|
|
980
|
+
if (id === null) {
|
|
981
|
+
return getErrorToolResult("portfolio metrics: invalid id");
|
|
982
|
+
}
|
|
983
|
+
const range = getDateRange(argumentsPayload);
|
|
984
|
+
const result = await client.getPortfolioBlockedCountHistory(id, range);
|
|
985
|
+
if (result.ok) {
|
|
986
|
+
return getSuccessToolResult(
|
|
987
|
+
`portfolio blockedCountHistory: ${encodePayload(result.value)}`
|
|
988
|
+
);
|
|
989
|
+
}
|
|
990
|
+
return getErrorToolResult(
|
|
991
|
+
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
992
|
+
);
|
|
993
|
+
}
|
|
926
994
|
if (name === "lighthouse_team_metrics_cumulativeStateTime") {
|
|
927
995
|
const id = getNumericId(argumentsPayload);
|
|
928
996
|
if (id === null) {
|
package/dist/index.d.cts
CHANGED
|
@@ -15,7 +15,7 @@ type McpToolResult = {
|
|
|
15
15
|
readonly content: readonly McpToolContent[];
|
|
16
16
|
};
|
|
17
17
|
type McpToolDefinition = {
|
|
18
|
-
readonly name: "lighthouse_health_check" | "lighthouse_version_get" | "lighthouse_worktracking_list" | "lighthouse_worktracking_get" | "lighthouse_team_list" | "lighthouse_team_get" | "lighthouse_team_refresh" | "lighthouse_portfolio_list" | "lighthouse_portfolio_get" | "lighthouse_portfolio_refresh" | "lighthouse_team_metrics_throughput" | "lighthouse_team_metrics_cycleTimePercentiles" | "lighthouse_team_metrics_workItemAgePercentiles" | "lighthouse_portfolio_metrics_workItemAgePercentiles" | "lighthouse_team_metrics_workItemAge" | "lighthouse_team_metrics_totalWorkItemAge" | "lighthouse_portfolio_metrics_throughput" | "lighthouse_portfolio_metrics_workItemAge" | "lighthouse_portfolio_metrics_totalWorkItemAge" | "lighthouse_team_metrics_cumulativeStateTime" | "lighthouse_team_metrics_cumulativeStateTimeItems" | "lighthouse_team_metrics_cumulativeStateTimeCandidates" | "lighthouse_portfolio_metrics_cumulativeStateTime" | "lighthouse_portfolio_metrics_cumulativeStateTimeItems" | "lighthouse_portfolio_metrics_cumulativeStateTimeCandidates" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_blackout_list" | "lighthouse_blackout_create" | "lighthouse_blackout_update" | "lighthouse_blackout_delete" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
18
|
+
readonly name: "lighthouse_health_check" | "lighthouse_version_get" | "lighthouse_worktracking_list" | "lighthouse_worktracking_get" | "lighthouse_team_list" | "lighthouse_team_get" | "lighthouse_team_refresh" | "lighthouse_portfolio_list" | "lighthouse_portfolio_get" | "lighthouse_portfolio_refresh" | "lighthouse_team_metrics_throughput" | "lighthouse_team_metrics_cycleTimePercentiles" | "lighthouse_team_metrics_workItemAgePercentiles" | "lighthouse_portfolio_metrics_workItemAgePercentiles" | "lighthouse_team_metrics_workItemAge" | "lighthouse_team_metrics_totalWorkItemAge" | "lighthouse_portfolio_metrics_throughput" | "lighthouse_portfolio_metrics_workItemAge" | "lighthouse_portfolio_metrics_totalWorkItemAge" | "lighthouse_team_metrics_blockedCountHistory" | "lighthouse_portfolio_metrics_blockedCountHistory" | "lighthouse_team_metrics_cumulativeStateTime" | "lighthouse_team_metrics_cumulativeStateTimeItems" | "lighthouse_team_metrics_cumulativeStateTimeCandidates" | "lighthouse_portfolio_metrics_cumulativeStateTime" | "lighthouse_portfolio_metrics_cumulativeStateTimeItems" | "lighthouse_portfolio_metrics_cumulativeStateTimeCandidates" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_blackout_list" | "lighthouse_blackout_create" | "lighthouse_blackout_update" | "lighthouse_blackout_delete" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
19
19
|
readonly description: string;
|
|
20
20
|
readonly inputSchema: {
|
|
21
21
|
readonly type: "object";
|
|
@@ -236,6 +236,32 @@ type McpRuntimeClient = {
|
|
|
236
236
|
readonly reason: string;
|
|
237
237
|
};
|
|
238
238
|
}>;
|
|
239
|
+
readonly getTeamBlockedCountHistory: (id: number, range?: {
|
|
240
|
+
readonly startDate: string;
|
|
241
|
+
readonly endDate: string;
|
|
242
|
+
}) => Promise<{
|
|
243
|
+
readonly ok: true;
|
|
244
|
+
readonly value: readonly unknown[];
|
|
245
|
+
} | {
|
|
246
|
+
readonly ok: false;
|
|
247
|
+
readonly error: {
|
|
248
|
+
readonly category: string;
|
|
249
|
+
readonly reason: string;
|
|
250
|
+
};
|
|
251
|
+
}>;
|
|
252
|
+
readonly getPortfolioBlockedCountHistory: (id: number, range?: {
|
|
253
|
+
readonly startDate: string;
|
|
254
|
+
readonly endDate: string;
|
|
255
|
+
}) => Promise<{
|
|
256
|
+
readonly ok: true;
|
|
257
|
+
readonly value: readonly unknown[];
|
|
258
|
+
} | {
|
|
259
|
+
readonly ok: false;
|
|
260
|
+
readonly error: {
|
|
261
|
+
readonly category: string;
|
|
262
|
+
readonly reason: string;
|
|
263
|
+
};
|
|
264
|
+
}>;
|
|
239
265
|
readonly getTeamCumulativeStateTime: (id: number, range?: {
|
|
240
266
|
readonly startDate: string;
|
|
241
267
|
readonly endDate: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ type McpToolResult = {
|
|
|
15
15
|
readonly content: readonly McpToolContent[];
|
|
16
16
|
};
|
|
17
17
|
type McpToolDefinition = {
|
|
18
|
-
readonly name: "lighthouse_health_check" | "lighthouse_version_get" | "lighthouse_worktracking_list" | "lighthouse_worktracking_get" | "lighthouse_team_list" | "lighthouse_team_get" | "lighthouse_team_refresh" | "lighthouse_portfolio_list" | "lighthouse_portfolio_get" | "lighthouse_portfolio_refresh" | "lighthouse_team_metrics_throughput" | "lighthouse_team_metrics_cycleTimePercentiles" | "lighthouse_team_metrics_workItemAgePercentiles" | "lighthouse_portfolio_metrics_workItemAgePercentiles" | "lighthouse_team_metrics_workItemAge" | "lighthouse_team_metrics_totalWorkItemAge" | "lighthouse_portfolio_metrics_throughput" | "lighthouse_portfolio_metrics_workItemAge" | "lighthouse_portfolio_metrics_totalWorkItemAge" | "lighthouse_team_metrics_cumulativeStateTime" | "lighthouse_team_metrics_cumulativeStateTimeItems" | "lighthouse_team_metrics_cumulativeStateTimeCandidates" | "lighthouse_portfolio_metrics_cumulativeStateTime" | "lighthouse_portfolio_metrics_cumulativeStateTimeItems" | "lighthouse_portfolio_metrics_cumulativeStateTimeCandidates" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_blackout_list" | "lighthouse_blackout_create" | "lighthouse_blackout_update" | "lighthouse_blackout_delete" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
18
|
+
readonly name: "lighthouse_health_check" | "lighthouse_version_get" | "lighthouse_worktracking_list" | "lighthouse_worktracking_get" | "lighthouse_team_list" | "lighthouse_team_get" | "lighthouse_team_refresh" | "lighthouse_portfolio_list" | "lighthouse_portfolio_get" | "lighthouse_portfolio_refresh" | "lighthouse_team_metrics_throughput" | "lighthouse_team_metrics_cycleTimePercentiles" | "lighthouse_team_metrics_workItemAgePercentiles" | "lighthouse_portfolio_metrics_workItemAgePercentiles" | "lighthouse_team_metrics_workItemAge" | "lighthouse_team_metrics_totalWorkItemAge" | "lighthouse_portfolio_metrics_throughput" | "lighthouse_portfolio_metrics_workItemAge" | "lighthouse_portfolio_metrics_totalWorkItemAge" | "lighthouse_team_metrics_blockedCountHistory" | "lighthouse_portfolio_metrics_blockedCountHistory" | "lighthouse_team_metrics_cumulativeStateTime" | "lighthouse_team_metrics_cumulativeStateTimeItems" | "lighthouse_team_metrics_cumulativeStateTimeCandidates" | "lighthouse_portfolio_metrics_cumulativeStateTime" | "lighthouse_portfolio_metrics_cumulativeStateTimeItems" | "lighthouse_portfolio_metrics_cumulativeStateTimeCandidates" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_blackout_list" | "lighthouse_blackout_create" | "lighthouse_blackout_update" | "lighthouse_blackout_delete" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
19
19
|
readonly description: string;
|
|
20
20
|
readonly inputSchema: {
|
|
21
21
|
readonly type: "object";
|
|
@@ -236,6 +236,32 @@ type McpRuntimeClient = {
|
|
|
236
236
|
readonly reason: string;
|
|
237
237
|
};
|
|
238
238
|
}>;
|
|
239
|
+
readonly getTeamBlockedCountHistory: (id: number, range?: {
|
|
240
|
+
readonly startDate: string;
|
|
241
|
+
readonly endDate: string;
|
|
242
|
+
}) => Promise<{
|
|
243
|
+
readonly ok: true;
|
|
244
|
+
readonly value: readonly unknown[];
|
|
245
|
+
} | {
|
|
246
|
+
readonly ok: false;
|
|
247
|
+
readonly error: {
|
|
248
|
+
readonly category: string;
|
|
249
|
+
readonly reason: string;
|
|
250
|
+
};
|
|
251
|
+
}>;
|
|
252
|
+
readonly getPortfolioBlockedCountHistory: (id: number, range?: {
|
|
253
|
+
readonly startDate: string;
|
|
254
|
+
readonly endDate: string;
|
|
255
|
+
}) => Promise<{
|
|
256
|
+
readonly ok: true;
|
|
257
|
+
readonly value: readonly unknown[];
|
|
258
|
+
} | {
|
|
259
|
+
readonly ok: false;
|
|
260
|
+
readonly error: {
|
|
261
|
+
readonly category: string;
|
|
262
|
+
readonly reason: string;
|
|
263
|
+
};
|
|
264
|
+
}>;
|
|
239
265
|
readonly getTeamCumulativeStateTime: (id: number, range?: {
|
|
240
266
|
readonly startDate: string;
|
|
241
267
|
readonly endDate: string;
|
package/dist/index.js
CHANGED
|
@@ -200,6 +200,32 @@ var toolDefinitions = [
|
|
|
200
200
|
additionalProperties: false
|
|
201
201
|
}
|
|
202
202
|
},
|
|
203
|
+
{
|
|
204
|
+
name: "lighthouse_team_metrics_blockedCountHistory",
|
|
205
|
+
description: "Get the blocked-items-over-time trend for a team by ID: how many work items were blocked on each captured day, optionally filtered by start and end dates. To see what is blocked right now and for how long, read the team's current WIP \u2014 each item carries isBlocked and, when blocked, a blockedSince timestamp.",
|
|
206
|
+
inputSchema: {
|
|
207
|
+
type: "object",
|
|
208
|
+
properties: {
|
|
209
|
+
...idInputSchema.properties,
|
|
210
|
+
...dateRangeProperties
|
|
211
|
+
},
|
|
212
|
+
required: ["id"],
|
|
213
|
+
additionalProperties: false
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
name: "lighthouse_portfolio_metrics_blockedCountHistory",
|
|
218
|
+
description: "Get the blocked-items-over-time trend for a portfolio by ID: how many work items were blocked on each captured day, optionally filtered by start and end dates. To see what is blocked right now and for how long, read the portfolio's current WIP \u2014 each item carries isBlocked and, when blocked, a blockedSince timestamp.",
|
|
219
|
+
inputSchema: {
|
|
220
|
+
type: "object",
|
|
221
|
+
properties: {
|
|
222
|
+
...idInputSchema.properties,
|
|
223
|
+
...dateRangeProperties
|
|
224
|
+
},
|
|
225
|
+
required: ["id"],
|
|
226
|
+
additionalProperties: false
|
|
227
|
+
}
|
|
228
|
+
},
|
|
203
229
|
{
|
|
204
230
|
name: "lighthouse_portfolio_metrics_throughput",
|
|
205
231
|
description: "Get throughput run-chart data for a portfolio by ID, optionally filtered by start and end dates.",
|
|
@@ -615,6 +641,16 @@ var toolInputSchemas = {
|
|
|
615
641
|
startDate: isoDateStringSchema.optional(),
|
|
616
642
|
endDate: isoDateStringSchema.optional()
|
|
617
643
|
}),
|
|
644
|
+
lighthouse_team_metrics_blockedCountHistory: z.object({
|
|
645
|
+
id: z.number().int(),
|
|
646
|
+
startDate: isoDateStringSchema.optional(),
|
|
647
|
+
endDate: isoDateStringSchema.optional()
|
|
648
|
+
}),
|
|
649
|
+
lighthouse_portfolio_metrics_blockedCountHistory: z.object({
|
|
650
|
+
id: z.number().int(),
|
|
651
|
+
startDate: isoDateStringSchema.optional(),
|
|
652
|
+
endDate: isoDateStringSchema.optional()
|
|
653
|
+
}),
|
|
618
654
|
lighthouse_team_metrics_workItemAge: z.object({
|
|
619
655
|
id: z.number().int(),
|
|
620
656
|
startDate: isoDateStringSchema.optional(),
|
|
@@ -897,6 +933,38 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
897
933
|
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
898
934
|
);
|
|
899
935
|
}
|
|
936
|
+
if (name === "lighthouse_team_metrics_blockedCountHistory") {
|
|
937
|
+
const id = getNumericId(argumentsPayload);
|
|
938
|
+
if (id === null) {
|
|
939
|
+
return getErrorToolResult("team metrics: invalid id");
|
|
940
|
+
}
|
|
941
|
+
const range = getDateRange(argumentsPayload);
|
|
942
|
+
const result = await client.getTeamBlockedCountHistory(id, range);
|
|
943
|
+
if (result.ok) {
|
|
944
|
+
return getSuccessToolResult(
|
|
945
|
+
`team blockedCountHistory: ${encodePayload(result.value)}`
|
|
946
|
+
);
|
|
947
|
+
}
|
|
948
|
+
return getErrorToolResult(
|
|
949
|
+
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
950
|
+
);
|
|
951
|
+
}
|
|
952
|
+
if (name === "lighthouse_portfolio_metrics_blockedCountHistory") {
|
|
953
|
+
const id = getNumericId(argumentsPayload);
|
|
954
|
+
if (id === null) {
|
|
955
|
+
return getErrorToolResult("portfolio metrics: invalid id");
|
|
956
|
+
}
|
|
957
|
+
const range = getDateRange(argumentsPayload);
|
|
958
|
+
const result = await client.getPortfolioBlockedCountHistory(id, range);
|
|
959
|
+
if (result.ok) {
|
|
960
|
+
return getSuccessToolResult(
|
|
961
|
+
`portfolio blockedCountHistory: ${encodePayload(result.value)}`
|
|
962
|
+
);
|
|
963
|
+
}
|
|
964
|
+
return getErrorToolResult(
|
|
965
|
+
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
966
|
+
);
|
|
967
|
+
}
|
|
900
968
|
if (name === "lighthouse_team_metrics_cumulativeStateTime") {
|
|
901
969
|
const id = getNumericId(argumentsPayload);
|
|
902
970
|
if (id === null) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@letpeoplework/lighthouse-mcp-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Shared MCP semantics for Lighthouse",
|
|
5
5
|
"repository": "https://github.com/LetPeopleWork/lighthouse-clients",
|
|
6
6
|
"type": "module",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
27
27
|
"@toon-format/toon": "^2.1.0",
|
|
28
28
|
"zod": "^3.24.1",
|
|
29
|
-
"@letpeoplework/lighthouse-client": "1.
|
|
29
|
+
"@letpeoplework/lighthouse-client": "1.6.0"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "tsup src/index.ts --format esm,cjs --dts --clean",
|