@letpeoplework/lighthouse-mcp-core 0.6.0 → 0.7.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 +55 -55
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +55 -55
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -60,57 +60,57 @@ var dateRangeProperties = {
|
|
|
60
60
|
};
|
|
61
61
|
var toolDefinitions = [
|
|
62
62
|
{
|
|
63
|
-
name: "
|
|
63
|
+
name: "lighthouse_health_check",
|
|
64
64
|
description: "Check connectivity to Lighthouse and return whether the configured endpoint is reachable.",
|
|
65
65
|
inputSchema: emptyInputSchema
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
|
-
name: "
|
|
68
|
+
name: "lighthouse_version_get",
|
|
69
69
|
description: "Retrieve the Lighthouse server version from the version endpoint.",
|
|
70
70
|
inputSchema: emptyInputSchema
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
|
-
name: "
|
|
73
|
+
name: "lighthouse_worktracking_list",
|
|
74
74
|
description: "List configured work-tracking system connections in Lighthouse.",
|
|
75
75
|
inputSchema: emptyInputSchema
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
|
-
name: "
|
|
78
|
+
name: "lighthouse_worktracking_get",
|
|
79
79
|
description: "Get a single work-tracking system connection by ID.",
|
|
80
80
|
inputSchema: idInputSchema
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
|
-
name: "
|
|
83
|
+
name: "lighthouse_team_list",
|
|
84
84
|
description: "List all teams available in Lighthouse.",
|
|
85
85
|
inputSchema: emptyInputSchema
|
|
86
86
|
},
|
|
87
87
|
{
|
|
88
|
-
name: "
|
|
88
|
+
name: "lighthouse_team_get",
|
|
89
89
|
description: "Get full details for one team by ID.",
|
|
90
90
|
inputSchema: idInputSchema
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
|
-
name: "
|
|
93
|
+
name: "lighthouse_team_refresh",
|
|
94
94
|
description: "Trigger data refresh for a team by ID.",
|
|
95
95
|
inputSchema: idInputSchema
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
|
-
name: "
|
|
98
|
+
name: "lighthouse_portfolio_list",
|
|
99
99
|
description: "List all portfolios in Lighthouse.",
|
|
100
100
|
inputSchema: emptyInputSchema
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
name: "
|
|
103
|
+
name: "lighthouse_portfolio_get",
|
|
104
104
|
description: "Get full details for one portfolio by ID.",
|
|
105
105
|
inputSchema: idInputSchema
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
|
-
name: "
|
|
108
|
+
name: "lighthouse_portfolio_refresh",
|
|
109
109
|
description: "Trigger data refresh for a portfolio by ID.",
|
|
110
110
|
inputSchema: idInputSchema
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
|
-
name: "
|
|
113
|
+
name: "lighthouse_team_metrics_throughput",
|
|
114
114
|
description: "Get throughput run-chart data for a team by ID, optionally filtered by start and end dates.",
|
|
115
115
|
inputSchema: {
|
|
116
116
|
type: "object",
|
|
@@ -123,7 +123,7 @@ var toolDefinitions = [
|
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
|
-
name: "
|
|
126
|
+
name: "lighthouse_team_metrics_cycleTimePercentiles",
|
|
127
127
|
description: "Get cycle-time percentiles for a team by ID, optionally filtered by start and end dates.",
|
|
128
128
|
inputSchema: {
|
|
129
129
|
type: "object",
|
|
@@ -136,7 +136,7 @@ var toolDefinitions = [
|
|
|
136
136
|
}
|
|
137
137
|
},
|
|
138
138
|
{
|
|
139
|
-
name: "
|
|
139
|
+
name: "lighthouse_portfolio_metrics_throughput",
|
|
140
140
|
description: "Get throughput run-chart data for a portfolio by ID, optionally filtered by start and end dates.",
|
|
141
141
|
inputSchema: {
|
|
142
142
|
type: "object",
|
|
@@ -149,7 +149,7 @@ var toolDefinitions = [
|
|
|
149
149
|
}
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
|
-
name: "
|
|
152
|
+
name: "lighthouse_feature_get",
|
|
153
153
|
description: "Get feature details by numeric IDs or external reference IDs.",
|
|
154
154
|
inputSchema: {
|
|
155
155
|
type: "object",
|
|
@@ -173,17 +173,17 @@ var toolDefinitions = [
|
|
|
173
173
|
}
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
|
-
name: "
|
|
176
|
+
name: "lighthouse_feature_workitems",
|
|
177
177
|
description: "Get work items linked to a feature by ID.",
|
|
178
178
|
inputSchema: idInputSchema
|
|
179
179
|
},
|
|
180
180
|
{
|
|
181
|
-
name: "
|
|
181
|
+
name: "lighthouse_delivery_list",
|
|
182
182
|
description: "List deliveries for a portfolio by portfolio ID.",
|
|
183
183
|
inputSchema: idInputSchema
|
|
184
184
|
},
|
|
185
185
|
{
|
|
186
|
-
name: "
|
|
186
|
+
name: "lighthouse_forecast_manual",
|
|
187
187
|
description: "Run a manual forecast for a team by ID with optional remaining items and target date.",
|
|
188
188
|
inputSchema: {
|
|
189
189
|
type: "object",
|
|
@@ -203,7 +203,7 @@ var toolDefinitions = [
|
|
|
203
203
|
}
|
|
204
204
|
},
|
|
205
205
|
{
|
|
206
|
-
name: "
|
|
206
|
+
name: "lighthouse_forecast_backtest",
|
|
207
207
|
description: "Run a forecast backtest for a team by ID using forecast and historical date ranges.",
|
|
208
208
|
inputSchema: {
|
|
209
209
|
type: "object",
|
|
@@ -288,43 +288,43 @@ var getDateRange = (argumentsPayload) => {
|
|
|
288
288
|
};
|
|
289
289
|
var isoDateStringSchema = import_zod.z.string().regex(/^\d{4}-\d{2}-\d{2}$/u, "Expected ISO date in YYYY-MM-DD format.");
|
|
290
290
|
var toolInputSchemas = {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
291
|
+
lighthouse_health_check: import_zod.z.object({}),
|
|
292
|
+
lighthouse_version_get: import_zod.z.object({}),
|
|
293
|
+
lighthouse_worktracking_list: import_zod.z.object({}),
|
|
294
|
+
lighthouse_worktracking_get: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
295
|
+
lighthouse_team_list: import_zod.z.object({}),
|
|
296
|
+
lighthouse_team_get: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
297
|
+
lighthouse_team_refresh: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
298
|
+
lighthouse_portfolio_list: import_zod.z.object({}),
|
|
299
|
+
lighthouse_portfolio_get: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
300
|
+
lighthouse_portfolio_refresh: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
301
|
+
lighthouse_team_metrics_throughput: import_zod.z.object({
|
|
302
302
|
id: import_zod.z.number().int(),
|
|
303
303
|
startDate: isoDateStringSchema.optional(),
|
|
304
304
|
endDate: isoDateStringSchema.optional()
|
|
305
305
|
}),
|
|
306
|
-
|
|
306
|
+
lighthouse_team_metrics_cycleTimePercentiles: import_zod.z.object({
|
|
307
307
|
id: import_zod.z.number().int(),
|
|
308
308
|
startDate: isoDateStringSchema.optional(),
|
|
309
309
|
endDate: isoDateStringSchema.optional()
|
|
310
310
|
}),
|
|
311
|
-
|
|
311
|
+
lighthouse_portfolio_metrics_throughput: import_zod.z.object({
|
|
312
312
|
id: import_zod.z.number().int(),
|
|
313
313
|
startDate: isoDateStringSchema.optional(),
|
|
314
314
|
endDate: isoDateStringSchema.optional()
|
|
315
315
|
}),
|
|
316
|
-
|
|
316
|
+
lighthouse_feature_get: import_zod.z.object({
|
|
317
317
|
ids: import_zod.z.array(import_zod.z.number().int()).optional(),
|
|
318
318
|
refs: import_zod.z.array(import_zod.z.string()).optional()
|
|
319
319
|
}),
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
320
|
+
lighthouse_feature_workitems: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
321
|
+
lighthouse_delivery_list: import_zod.z.object({ id: import_zod.z.number().int() }),
|
|
322
|
+
lighthouse_forecast_manual: import_zod.z.object({
|
|
323
323
|
id: import_zod.z.number().int(),
|
|
324
324
|
remainingItems: import_zod.z.number().int().optional(),
|
|
325
325
|
targetDate: isoDateStringSchema.optional()
|
|
326
326
|
}),
|
|
327
|
-
|
|
327
|
+
lighthouse_forecast_backtest: import_zod.z.object({
|
|
328
328
|
id: import_zod.z.number().int(),
|
|
329
329
|
startDate: isoDateStringSchema,
|
|
330
330
|
endDate: isoDateStringSchema,
|
|
@@ -332,12 +332,12 @@ var toolInputSchemas = {
|
|
|
332
332
|
historicalEndDate: isoDateStringSchema
|
|
333
333
|
})
|
|
334
334
|
};
|
|
335
|
-
var isReadOnlyTool = (toolName) => !toolName.endsWith("
|
|
335
|
+
var isReadOnlyTool = (toolName) => !toolName.endsWith("_refresh");
|
|
336
336
|
var createMcpCoreRuntime = (dependencies) => ({
|
|
337
337
|
listTools: () => toolDefinitions,
|
|
338
338
|
callTool: async (name, argumentsPayload) => {
|
|
339
339
|
const client = dependencies.createClient();
|
|
340
|
-
if (name === "
|
|
340
|
+
if (name === "lighthouse_health_check") {
|
|
341
341
|
const health = await client.checkConnectivity();
|
|
342
342
|
if (health.category === "success") {
|
|
343
343
|
return getSuccessToolResult("connectivity: success");
|
|
@@ -347,7 +347,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
347
347
|
`connectivity: ${health.category}${healthReasonSuffix}`
|
|
348
348
|
);
|
|
349
349
|
}
|
|
350
|
-
if (name === "
|
|
350
|
+
if (name === "lighthouse_version_get") {
|
|
351
351
|
const version = await client.getVersion();
|
|
352
352
|
if (version.ok) {
|
|
353
353
|
return getSuccessToolResult(`version: ${version.value}`);
|
|
@@ -356,7 +356,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
356
356
|
`version: ${version.error.category} (${version.error.reason})`
|
|
357
357
|
);
|
|
358
358
|
}
|
|
359
|
-
if (name === "
|
|
359
|
+
if (name === "lighthouse_worktracking_list") {
|
|
360
360
|
const connections = await client.listWorkTrackingConnections();
|
|
361
361
|
if (connections.ok) {
|
|
362
362
|
return getSuccessToolResult(
|
|
@@ -367,7 +367,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
367
367
|
`worktracking: ${connections.error.category} (${connections.error.reason})`
|
|
368
368
|
);
|
|
369
369
|
}
|
|
370
|
-
if (name === "
|
|
370
|
+
if (name === "lighthouse_worktracking_get") {
|
|
371
371
|
const id = getNumericId(argumentsPayload);
|
|
372
372
|
if (id === null) {
|
|
373
373
|
return getErrorToolResult("worktracking: invalid id");
|
|
@@ -382,7 +382,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
382
382
|
`worktracking: ${connection.error.category} (${connection.error.reason})`
|
|
383
383
|
);
|
|
384
384
|
}
|
|
385
|
-
if (name === "
|
|
385
|
+
if (name === "lighthouse_team_list") {
|
|
386
386
|
const teams = await client.listTeams();
|
|
387
387
|
if (teams.ok) {
|
|
388
388
|
return getSuccessToolResult(`teams: ${encodePayload(teams.value)}`);
|
|
@@ -391,7 +391,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
391
391
|
`teams: ${teams.error.category} (${teams.error.reason})`
|
|
392
392
|
);
|
|
393
393
|
}
|
|
394
|
-
if (name === "
|
|
394
|
+
if (name === "lighthouse_team_get") {
|
|
395
395
|
const id = getNumericId(argumentsPayload);
|
|
396
396
|
if (id === null) {
|
|
397
397
|
return getErrorToolResult("team: invalid id");
|
|
@@ -404,7 +404,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
404
404
|
`team: ${team.error.category} (${team.error.reason})`
|
|
405
405
|
);
|
|
406
406
|
}
|
|
407
|
-
if (name === "
|
|
407
|
+
if (name === "lighthouse_team_refresh") {
|
|
408
408
|
const id = getNumericId(argumentsPayload);
|
|
409
409
|
if (id === null) {
|
|
410
410
|
return getErrorToolResult("team: invalid id");
|
|
@@ -417,7 +417,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
417
417
|
`team refresh: ${result.error.category} (${result.error.reason})`
|
|
418
418
|
);
|
|
419
419
|
}
|
|
420
|
-
if (name === "
|
|
420
|
+
if (name === "lighthouse_portfolio_list") {
|
|
421
421
|
const portfolios = await client.listPortfolios();
|
|
422
422
|
if (portfolios.ok) {
|
|
423
423
|
return getSuccessToolResult(
|
|
@@ -428,7 +428,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
428
428
|
`portfolios: ${portfolios.error.category} (${portfolios.error.reason})`
|
|
429
429
|
);
|
|
430
430
|
}
|
|
431
|
-
if (name === "
|
|
431
|
+
if (name === "lighthouse_portfolio_get") {
|
|
432
432
|
const id = getNumericId(argumentsPayload);
|
|
433
433
|
if (id === null) {
|
|
434
434
|
return getErrorToolResult("portfolio: invalid id");
|
|
@@ -443,7 +443,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
443
443
|
`portfolio: ${portfolio.error.category} (${portfolio.error.reason})`
|
|
444
444
|
);
|
|
445
445
|
}
|
|
446
|
-
if (name === "
|
|
446
|
+
if (name === "lighthouse_portfolio_refresh") {
|
|
447
447
|
const id = getNumericId(argumentsPayload);
|
|
448
448
|
if (id === null) {
|
|
449
449
|
return getErrorToolResult("portfolio: invalid id");
|
|
@@ -456,7 +456,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
456
456
|
`portfolio refresh: ${result.error.category} (${result.error.reason})`
|
|
457
457
|
);
|
|
458
458
|
}
|
|
459
|
-
if (name === "
|
|
459
|
+
if (name === "lighthouse_team_metrics_throughput") {
|
|
460
460
|
const id = getNumericId(argumentsPayload);
|
|
461
461
|
if (id === null) {
|
|
462
462
|
return getErrorToolResult("team metrics: invalid id");
|
|
@@ -472,7 +472,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
472
472
|
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
473
473
|
);
|
|
474
474
|
}
|
|
475
|
-
if (name === "
|
|
475
|
+
if (name === "lighthouse_team_metrics_cycleTimePercentiles") {
|
|
476
476
|
const id = getNumericId(argumentsPayload);
|
|
477
477
|
if (id === null) {
|
|
478
478
|
return getErrorToolResult("team metrics: invalid id");
|
|
@@ -488,7 +488,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
488
488
|
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
489
489
|
);
|
|
490
490
|
}
|
|
491
|
-
if (name === "
|
|
491
|
+
if (name === "lighthouse_portfolio_metrics_throughput") {
|
|
492
492
|
const id = getNumericId(argumentsPayload);
|
|
493
493
|
if (id === null) {
|
|
494
494
|
return getErrorToolResult("portfolio metrics: invalid id");
|
|
@@ -504,7 +504,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
504
504
|
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
505
505
|
);
|
|
506
506
|
}
|
|
507
|
-
if (name === "
|
|
507
|
+
if (name === "lighthouse_feature_get") {
|
|
508
508
|
const payload = isObjectRecord(argumentsPayload) ? argumentsPayload : {};
|
|
509
509
|
const idsValue = payload.ids;
|
|
510
510
|
const refsValue = payload.refs;
|
|
@@ -538,7 +538,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
538
538
|
"features: provide ids (array of numbers) or refs (array of strings)"
|
|
539
539
|
);
|
|
540
540
|
}
|
|
541
|
-
if (name === "
|
|
541
|
+
if (name === "lighthouse_feature_workitems") {
|
|
542
542
|
const id = getNumericId(argumentsPayload);
|
|
543
543
|
if (id === null) {
|
|
544
544
|
return getErrorToolResult("feature workitems: invalid id");
|
|
@@ -553,7 +553,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
553
553
|
`feature workitems: ${result.error.category} (${result.error.reason})`
|
|
554
554
|
);
|
|
555
555
|
}
|
|
556
|
-
if (name === "
|
|
556
|
+
if (name === "lighthouse_delivery_list") {
|
|
557
557
|
const id = getNumericId(argumentsPayload);
|
|
558
558
|
if (id === null) {
|
|
559
559
|
return getErrorToolResult(
|
|
@@ -570,7 +570,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
570
570
|
`delivery: ${result.error.category} (${result.error.reason})`
|
|
571
571
|
);
|
|
572
572
|
}
|
|
573
|
-
if (name === "
|
|
573
|
+
if (name === "lighthouse_forecast_manual") {
|
|
574
574
|
const id = getNumericId(argumentsPayload);
|
|
575
575
|
if (id === null) {
|
|
576
576
|
return getErrorToolResult("forecast: invalid id (team id required)");
|
|
@@ -589,7 +589,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
589
589
|
`forecast: ${result.error.category} (${result.error.reason})`
|
|
590
590
|
);
|
|
591
591
|
}
|
|
592
|
-
if (name === "
|
|
592
|
+
if (name === "lighthouse_forecast_backtest") {
|
|
593
593
|
const id = getNumericId(argumentsPayload);
|
|
594
594
|
if (id === null) {
|
|
595
595
|
return getErrorToolResult("backtest: invalid id (team id required)");
|
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: "
|
|
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_portfolio_metrics_throughput" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
19
19
|
readonly description: string;
|
|
20
20
|
readonly inputSchema: {
|
|
21
21
|
readonly type: "object";
|
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: "
|
|
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_portfolio_metrics_throughput" | "lighthouse_feature_get" | "lighthouse_feature_workitems" | "lighthouse_delivery_list" | "lighthouse_forecast_manual" | "lighthouse_forecast_backtest";
|
|
19
19
|
readonly description: string;
|
|
20
20
|
readonly inputSchema: {
|
|
21
21
|
readonly type: "object";
|
package/dist/index.js
CHANGED
|
@@ -34,57 +34,57 @@ var dateRangeProperties = {
|
|
|
34
34
|
};
|
|
35
35
|
var toolDefinitions = [
|
|
36
36
|
{
|
|
37
|
-
name: "
|
|
37
|
+
name: "lighthouse_health_check",
|
|
38
38
|
description: "Check connectivity to Lighthouse and return whether the configured endpoint is reachable.",
|
|
39
39
|
inputSchema: emptyInputSchema
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
name: "
|
|
42
|
+
name: "lighthouse_version_get",
|
|
43
43
|
description: "Retrieve the Lighthouse server version from the version endpoint.",
|
|
44
44
|
inputSchema: emptyInputSchema
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
-
name: "
|
|
47
|
+
name: "lighthouse_worktracking_list",
|
|
48
48
|
description: "List configured work-tracking system connections in Lighthouse.",
|
|
49
49
|
inputSchema: emptyInputSchema
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
|
-
name: "
|
|
52
|
+
name: "lighthouse_worktracking_get",
|
|
53
53
|
description: "Get a single work-tracking system connection by ID.",
|
|
54
54
|
inputSchema: idInputSchema
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
|
-
name: "
|
|
57
|
+
name: "lighthouse_team_list",
|
|
58
58
|
description: "List all teams available in Lighthouse.",
|
|
59
59
|
inputSchema: emptyInputSchema
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
name: "
|
|
62
|
+
name: "lighthouse_team_get",
|
|
63
63
|
description: "Get full details for one team by ID.",
|
|
64
64
|
inputSchema: idInputSchema
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
|
-
name: "
|
|
67
|
+
name: "lighthouse_team_refresh",
|
|
68
68
|
description: "Trigger data refresh for a team by ID.",
|
|
69
69
|
inputSchema: idInputSchema
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
|
-
name: "
|
|
72
|
+
name: "lighthouse_portfolio_list",
|
|
73
73
|
description: "List all portfolios in Lighthouse.",
|
|
74
74
|
inputSchema: emptyInputSchema
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
|
-
name: "
|
|
77
|
+
name: "lighthouse_portfolio_get",
|
|
78
78
|
description: "Get full details for one portfolio by ID.",
|
|
79
79
|
inputSchema: idInputSchema
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
|
-
name: "
|
|
82
|
+
name: "lighthouse_portfolio_refresh",
|
|
83
83
|
description: "Trigger data refresh for a portfolio by ID.",
|
|
84
84
|
inputSchema: idInputSchema
|
|
85
85
|
},
|
|
86
86
|
{
|
|
87
|
-
name: "
|
|
87
|
+
name: "lighthouse_team_metrics_throughput",
|
|
88
88
|
description: "Get throughput run-chart data for a team by ID, optionally filtered by start and end dates.",
|
|
89
89
|
inputSchema: {
|
|
90
90
|
type: "object",
|
|
@@ -97,7 +97,7 @@ var toolDefinitions = [
|
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
{
|
|
100
|
-
name: "
|
|
100
|
+
name: "lighthouse_team_metrics_cycleTimePercentiles",
|
|
101
101
|
description: "Get cycle-time percentiles for a team by ID, optionally filtered by start and end dates.",
|
|
102
102
|
inputSchema: {
|
|
103
103
|
type: "object",
|
|
@@ -110,7 +110,7 @@ var toolDefinitions = [
|
|
|
110
110
|
}
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
|
-
name: "
|
|
113
|
+
name: "lighthouse_portfolio_metrics_throughput",
|
|
114
114
|
description: "Get throughput run-chart data for a portfolio by ID, optionally filtered by start and end dates.",
|
|
115
115
|
inputSchema: {
|
|
116
116
|
type: "object",
|
|
@@ -123,7 +123,7 @@ var toolDefinitions = [
|
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
|
-
name: "
|
|
126
|
+
name: "lighthouse_feature_get",
|
|
127
127
|
description: "Get feature details by numeric IDs or external reference IDs.",
|
|
128
128
|
inputSchema: {
|
|
129
129
|
type: "object",
|
|
@@ -147,17 +147,17 @@ var toolDefinitions = [
|
|
|
147
147
|
}
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
|
-
name: "
|
|
150
|
+
name: "lighthouse_feature_workitems",
|
|
151
151
|
description: "Get work items linked to a feature by ID.",
|
|
152
152
|
inputSchema: idInputSchema
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
|
-
name: "
|
|
155
|
+
name: "lighthouse_delivery_list",
|
|
156
156
|
description: "List deliveries for a portfolio by portfolio ID.",
|
|
157
157
|
inputSchema: idInputSchema
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
|
-
name: "
|
|
160
|
+
name: "lighthouse_forecast_manual",
|
|
161
161
|
description: "Run a manual forecast for a team by ID with optional remaining items and target date.",
|
|
162
162
|
inputSchema: {
|
|
163
163
|
type: "object",
|
|
@@ -177,7 +177,7 @@ var toolDefinitions = [
|
|
|
177
177
|
}
|
|
178
178
|
},
|
|
179
179
|
{
|
|
180
|
-
name: "
|
|
180
|
+
name: "lighthouse_forecast_backtest",
|
|
181
181
|
description: "Run a forecast backtest for a team by ID using forecast and historical date ranges.",
|
|
182
182
|
inputSchema: {
|
|
183
183
|
type: "object",
|
|
@@ -262,43 +262,43 @@ var getDateRange = (argumentsPayload) => {
|
|
|
262
262
|
};
|
|
263
263
|
var isoDateStringSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/u, "Expected ISO date in YYYY-MM-DD format.");
|
|
264
264
|
var toolInputSchemas = {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
265
|
+
lighthouse_health_check: z.object({}),
|
|
266
|
+
lighthouse_version_get: z.object({}),
|
|
267
|
+
lighthouse_worktracking_list: z.object({}),
|
|
268
|
+
lighthouse_worktracking_get: z.object({ id: z.number().int() }),
|
|
269
|
+
lighthouse_team_list: z.object({}),
|
|
270
|
+
lighthouse_team_get: z.object({ id: z.number().int() }),
|
|
271
|
+
lighthouse_team_refresh: z.object({ id: z.number().int() }),
|
|
272
|
+
lighthouse_portfolio_list: z.object({}),
|
|
273
|
+
lighthouse_portfolio_get: z.object({ id: z.number().int() }),
|
|
274
|
+
lighthouse_portfolio_refresh: z.object({ id: z.number().int() }),
|
|
275
|
+
lighthouse_team_metrics_throughput: z.object({
|
|
276
276
|
id: z.number().int(),
|
|
277
277
|
startDate: isoDateStringSchema.optional(),
|
|
278
278
|
endDate: isoDateStringSchema.optional()
|
|
279
279
|
}),
|
|
280
|
-
|
|
280
|
+
lighthouse_team_metrics_cycleTimePercentiles: z.object({
|
|
281
281
|
id: z.number().int(),
|
|
282
282
|
startDate: isoDateStringSchema.optional(),
|
|
283
283
|
endDate: isoDateStringSchema.optional()
|
|
284
284
|
}),
|
|
285
|
-
|
|
285
|
+
lighthouse_portfolio_metrics_throughput: z.object({
|
|
286
286
|
id: z.number().int(),
|
|
287
287
|
startDate: isoDateStringSchema.optional(),
|
|
288
288
|
endDate: isoDateStringSchema.optional()
|
|
289
289
|
}),
|
|
290
|
-
|
|
290
|
+
lighthouse_feature_get: z.object({
|
|
291
291
|
ids: z.array(z.number().int()).optional(),
|
|
292
292
|
refs: z.array(z.string()).optional()
|
|
293
293
|
}),
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
lighthouse_feature_workitems: z.object({ id: z.number().int() }),
|
|
295
|
+
lighthouse_delivery_list: z.object({ id: z.number().int() }),
|
|
296
|
+
lighthouse_forecast_manual: z.object({
|
|
297
297
|
id: z.number().int(),
|
|
298
298
|
remainingItems: z.number().int().optional(),
|
|
299
299
|
targetDate: isoDateStringSchema.optional()
|
|
300
300
|
}),
|
|
301
|
-
|
|
301
|
+
lighthouse_forecast_backtest: z.object({
|
|
302
302
|
id: z.number().int(),
|
|
303
303
|
startDate: isoDateStringSchema,
|
|
304
304
|
endDate: isoDateStringSchema,
|
|
@@ -306,12 +306,12 @@ var toolInputSchemas = {
|
|
|
306
306
|
historicalEndDate: isoDateStringSchema
|
|
307
307
|
})
|
|
308
308
|
};
|
|
309
|
-
var isReadOnlyTool = (toolName) => !toolName.endsWith("
|
|
309
|
+
var isReadOnlyTool = (toolName) => !toolName.endsWith("_refresh");
|
|
310
310
|
var createMcpCoreRuntime = (dependencies) => ({
|
|
311
311
|
listTools: () => toolDefinitions,
|
|
312
312
|
callTool: async (name, argumentsPayload) => {
|
|
313
313
|
const client = dependencies.createClient();
|
|
314
|
-
if (name === "
|
|
314
|
+
if (name === "lighthouse_health_check") {
|
|
315
315
|
const health = await client.checkConnectivity();
|
|
316
316
|
if (health.category === "success") {
|
|
317
317
|
return getSuccessToolResult("connectivity: success");
|
|
@@ -321,7 +321,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
321
321
|
`connectivity: ${health.category}${healthReasonSuffix}`
|
|
322
322
|
);
|
|
323
323
|
}
|
|
324
|
-
if (name === "
|
|
324
|
+
if (name === "lighthouse_version_get") {
|
|
325
325
|
const version = await client.getVersion();
|
|
326
326
|
if (version.ok) {
|
|
327
327
|
return getSuccessToolResult(`version: ${version.value}`);
|
|
@@ -330,7 +330,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
330
330
|
`version: ${version.error.category} (${version.error.reason})`
|
|
331
331
|
);
|
|
332
332
|
}
|
|
333
|
-
if (name === "
|
|
333
|
+
if (name === "lighthouse_worktracking_list") {
|
|
334
334
|
const connections = await client.listWorkTrackingConnections();
|
|
335
335
|
if (connections.ok) {
|
|
336
336
|
return getSuccessToolResult(
|
|
@@ -341,7 +341,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
341
341
|
`worktracking: ${connections.error.category} (${connections.error.reason})`
|
|
342
342
|
);
|
|
343
343
|
}
|
|
344
|
-
if (name === "
|
|
344
|
+
if (name === "lighthouse_worktracking_get") {
|
|
345
345
|
const id = getNumericId(argumentsPayload);
|
|
346
346
|
if (id === null) {
|
|
347
347
|
return getErrorToolResult("worktracking: invalid id");
|
|
@@ -356,7 +356,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
356
356
|
`worktracking: ${connection.error.category} (${connection.error.reason})`
|
|
357
357
|
);
|
|
358
358
|
}
|
|
359
|
-
if (name === "
|
|
359
|
+
if (name === "lighthouse_team_list") {
|
|
360
360
|
const teams = await client.listTeams();
|
|
361
361
|
if (teams.ok) {
|
|
362
362
|
return getSuccessToolResult(`teams: ${encodePayload(teams.value)}`);
|
|
@@ -365,7 +365,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
365
365
|
`teams: ${teams.error.category} (${teams.error.reason})`
|
|
366
366
|
);
|
|
367
367
|
}
|
|
368
|
-
if (name === "
|
|
368
|
+
if (name === "lighthouse_team_get") {
|
|
369
369
|
const id = getNumericId(argumentsPayload);
|
|
370
370
|
if (id === null) {
|
|
371
371
|
return getErrorToolResult("team: invalid id");
|
|
@@ -378,7 +378,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
378
378
|
`team: ${team.error.category} (${team.error.reason})`
|
|
379
379
|
);
|
|
380
380
|
}
|
|
381
|
-
if (name === "
|
|
381
|
+
if (name === "lighthouse_team_refresh") {
|
|
382
382
|
const id = getNumericId(argumentsPayload);
|
|
383
383
|
if (id === null) {
|
|
384
384
|
return getErrorToolResult("team: invalid id");
|
|
@@ -391,7 +391,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
391
391
|
`team refresh: ${result.error.category} (${result.error.reason})`
|
|
392
392
|
);
|
|
393
393
|
}
|
|
394
|
-
if (name === "
|
|
394
|
+
if (name === "lighthouse_portfolio_list") {
|
|
395
395
|
const portfolios = await client.listPortfolios();
|
|
396
396
|
if (portfolios.ok) {
|
|
397
397
|
return getSuccessToolResult(
|
|
@@ -402,7 +402,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
402
402
|
`portfolios: ${portfolios.error.category} (${portfolios.error.reason})`
|
|
403
403
|
);
|
|
404
404
|
}
|
|
405
|
-
if (name === "
|
|
405
|
+
if (name === "lighthouse_portfolio_get") {
|
|
406
406
|
const id = getNumericId(argumentsPayload);
|
|
407
407
|
if (id === null) {
|
|
408
408
|
return getErrorToolResult("portfolio: invalid id");
|
|
@@ -417,7 +417,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
417
417
|
`portfolio: ${portfolio.error.category} (${portfolio.error.reason})`
|
|
418
418
|
);
|
|
419
419
|
}
|
|
420
|
-
if (name === "
|
|
420
|
+
if (name === "lighthouse_portfolio_refresh") {
|
|
421
421
|
const id = getNumericId(argumentsPayload);
|
|
422
422
|
if (id === null) {
|
|
423
423
|
return getErrorToolResult("portfolio: invalid id");
|
|
@@ -430,7 +430,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
430
430
|
`portfolio refresh: ${result.error.category} (${result.error.reason})`
|
|
431
431
|
);
|
|
432
432
|
}
|
|
433
|
-
if (name === "
|
|
433
|
+
if (name === "lighthouse_team_metrics_throughput") {
|
|
434
434
|
const id = getNumericId(argumentsPayload);
|
|
435
435
|
if (id === null) {
|
|
436
436
|
return getErrorToolResult("team metrics: invalid id");
|
|
@@ -446,7 +446,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
446
446
|
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
447
447
|
);
|
|
448
448
|
}
|
|
449
|
-
if (name === "
|
|
449
|
+
if (name === "lighthouse_team_metrics_cycleTimePercentiles") {
|
|
450
450
|
const id = getNumericId(argumentsPayload);
|
|
451
451
|
if (id === null) {
|
|
452
452
|
return getErrorToolResult("team metrics: invalid id");
|
|
@@ -462,7 +462,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
462
462
|
`team metrics: ${result.error.category} (${result.error.reason})`
|
|
463
463
|
);
|
|
464
464
|
}
|
|
465
|
-
if (name === "
|
|
465
|
+
if (name === "lighthouse_portfolio_metrics_throughput") {
|
|
466
466
|
const id = getNumericId(argumentsPayload);
|
|
467
467
|
if (id === null) {
|
|
468
468
|
return getErrorToolResult("portfolio metrics: invalid id");
|
|
@@ -478,7 +478,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
478
478
|
`portfolio metrics: ${result.error.category} (${result.error.reason})`
|
|
479
479
|
);
|
|
480
480
|
}
|
|
481
|
-
if (name === "
|
|
481
|
+
if (name === "lighthouse_feature_get") {
|
|
482
482
|
const payload = isObjectRecord(argumentsPayload) ? argumentsPayload : {};
|
|
483
483
|
const idsValue = payload.ids;
|
|
484
484
|
const refsValue = payload.refs;
|
|
@@ -512,7 +512,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
512
512
|
"features: provide ids (array of numbers) or refs (array of strings)"
|
|
513
513
|
);
|
|
514
514
|
}
|
|
515
|
-
if (name === "
|
|
515
|
+
if (name === "lighthouse_feature_workitems") {
|
|
516
516
|
const id = getNumericId(argumentsPayload);
|
|
517
517
|
if (id === null) {
|
|
518
518
|
return getErrorToolResult("feature workitems: invalid id");
|
|
@@ -527,7 +527,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
527
527
|
`feature workitems: ${result.error.category} (${result.error.reason})`
|
|
528
528
|
);
|
|
529
529
|
}
|
|
530
|
-
if (name === "
|
|
530
|
+
if (name === "lighthouse_delivery_list") {
|
|
531
531
|
const id = getNumericId(argumentsPayload);
|
|
532
532
|
if (id === null) {
|
|
533
533
|
return getErrorToolResult(
|
|
@@ -544,7 +544,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
544
544
|
`delivery: ${result.error.category} (${result.error.reason})`
|
|
545
545
|
);
|
|
546
546
|
}
|
|
547
|
-
if (name === "
|
|
547
|
+
if (name === "lighthouse_forecast_manual") {
|
|
548
548
|
const id = getNumericId(argumentsPayload);
|
|
549
549
|
if (id === null) {
|
|
550
550
|
return getErrorToolResult("forecast: invalid id (team id required)");
|
|
@@ -563,7 +563,7 @@ var createMcpCoreRuntime = (dependencies) => ({
|
|
|
563
563
|
`forecast: ${result.error.category} (${result.error.reason})`
|
|
564
564
|
);
|
|
565
565
|
}
|
|
566
|
-
if (name === "
|
|
566
|
+
if (name === "lighthouse_forecast_backtest") {
|
|
567
567
|
const id = getNumericId(argumentsPayload);
|
|
568
568
|
if (id === null) {
|
|
569
569
|
return getErrorToolResult("backtest: invalid id (team id required)");
|
package/package.json
CHANGED