@ourroadmaps/mcp 0.19.0 → 0.21.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.js +102 -101
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -22,10 +22,28 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
|
22
22
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
23
23
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
24
24
|
// ../../packages/shared/src/schemas/audience.ts
|
|
25
|
-
import { z as z2 } from "zod";
|
|
26
|
-
|
|
27
|
-
// ../../packages/shared/src/schemas/constants.ts
|
|
28
25
|
import { z } from "zod";
|
|
26
|
+
var audienceSchema = z.object({
|
|
27
|
+
id: z.string().uuid(),
|
|
28
|
+
organizationId: z.string(),
|
|
29
|
+
name: z.string(),
|
|
30
|
+
description: z.string().nullable(),
|
|
31
|
+
order: z.number().int(),
|
|
32
|
+
createdAt: z.string(),
|
|
33
|
+
updatedAt: z.string().nullable()
|
|
34
|
+
});
|
|
35
|
+
var createAudienceSchema = z.object({
|
|
36
|
+
name: z.string().min(1),
|
|
37
|
+
description: z.string().nullable().optional()
|
|
38
|
+
});
|
|
39
|
+
var updateAudienceSchema = z.object({
|
|
40
|
+
name: z.string().min(1).optional(),
|
|
41
|
+
description: z.string().nullable().optional(),
|
|
42
|
+
order: z.number().int().optional()
|
|
43
|
+
});
|
|
44
|
+
var audienceListSchema = z.array(audienceSchema);
|
|
45
|
+
// ../../packages/shared/src/schemas/constants.ts
|
|
46
|
+
import { z as z2 } from "zod";
|
|
29
47
|
var HORIZONS = [
|
|
30
48
|
"inbox",
|
|
31
49
|
"now",
|
|
@@ -36,7 +54,7 @@ var HORIZONS = [
|
|
|
36
54
|
"done",
|
|
37
55
|
"cancelled"
|
|
38
56
|
];
|
|
39
|
-
var horizonSchema =
|
|
57
|
+
var horizonSchema = z2.enum(HORIZONS);
|
|
40
58
|
var ROADMAP_STATUSES = [
|
|
41
59
|
"not_started",
|
|
42
60
|
"planning",
|
|
@@ -46,17 +64,17 @@ var ROADMAP_STATUSES = [
|
|
|
46
64
|
"done",
|
|
47
65
|
"cancelled"
|
|
48
66
|
];
|
|
49
|
-
var roadmapStatusSchema =
|
|
67
|
+
var roadmapStatusSchema = z2.enum(ROADMAP_STATUSES);
|
|
50
68
|
var EFFORT_SIZES = ["xs", "s", "m", "l", "xl"];
|
|
51
|
-
var effortSchema =
|
|
69
|
+
var effortSchema = z2.enum(EFFORT_SIZES);
|
|
52
70
|
var DATE_GRANULARITIES = ["day", "month", "quarter", "half-year", "year"];
|
|
53
|
-
var dateGranularitySchema =
|
|
71
|
+
var dateGranularitySchema = z2.enum(DATE_GRANULARITIES);
|
|
54
72
|
var PRD_STATUSES = ["draft", "completed"];
|
|
55
|
-
var prdStatusSchema =
|
|
73
|
+
var prdStatusSchema = z2.enum(PRD_STATUSES);
|
|
56
74
|
var IDEA_STATUSES = ["new", "under-review", "planned", "declined", "done"];
|
|
57
|
-
var ideaStatusSchema =
|
|
75
|
+
var ideaStatusSchema = z2.enum(IDEA_STATUSES);
|
|
58
76
|
var FEATURE_TYPES = ["area", "feature"];
|
|
59
|
-
var featureTypeSchema =
|
|
77
|
+
var featureTypeSchema = z2.enum(FEATURE_TYPES);
|
|
60
78
|
var PRODUCT_TYPES = [
|
|
61
79
|
"brand",
|
|
62
80
|
"product",
|
|
@@ -65,41 +83,11 @@ var PRODUCT_TYPES = [
|
|
|
65
83
|
"landing_page",
|
|
66
84
|
"service"
|
|
67
85
|
];
|
|
68
|
-
var productTypeSchema =
|
|
86
|
+
var productTypeSchema = z2.enum(PRODUCT_TYPES);
|
|
69
87
|
var AUDIENCE_TYPES = ["stakeholder", "user_persona"];
|
|
70
|
-
var audienceTypeSchema =
|
|
88
|
+
var audienceTypeSchema = z2.enum(AUDIENCE_TYPES);
|
|
71
89
|
var BRAINSTORM_MEDIA_TYPES = ["image", "video"];
|
|
72
|
-
var brainstormMediaTypeSchema =
|
|
73
|
-
|
|
74
|
-
// ../../packages/shared/src/schemas/audience.ts
|
|
75
|
-
var audienceSchema = z2.object({
|
|
76
|
-
id: z2.string().uuid(),
|
|
77
|
-
organizationId: z2.string(),
|
|
78
|
-
type: audienceTypeSchema,
|
|
79
|
-
role: z2.string().nullable(),
|
|
80
|
-
likes: z2.string().nullable(),
|
|
81
|
-
dislikes: z2.string().nullable(),
|
|
82
|
-
priorities: z2.string().nullable(),
|
|
83
|
-
order: z2.number().int(),
|
|
84
|
-
deletedAt: z2.string().nullable(),
|
|
85
|
-
createdAt: z2.string()
|
|
86
|
-
});
|
|
87
|
-
var createAudienceSchema = z2.object({
|
|
88
|
-
type: audienceTypeSchema,
|
|
89
|
-
role: z2.string().min(1),
|
|
90
|
-
likes: z2.string().nullable().optional(),
|
|
91
|
-
dislikes: z2.string().nullable().optional(),
|
|
92
|
-
priorities: z2.string().nullable().optional()
|
|
93
|
-
});
|
|
94
|
-
var updateAudienceSchema = z2.object({
|
|
95
|
-
type: audienceTypeSchema.optional(),
|
|
96
|
-
role: z2.string().min(1).optional(),
|
|
97
|
-
likes: z2.string().nullable().optional(),
|
|
98
|
-
dislikes: z2.string().nullable().optional(),
|
|
99
|
-
priorities: z2.string().nullable().optional(),
|
|
100
|
-
order: z2.number().int().optional()
|
|
101
|
-
});
|
|
102
|
-
var audienceListSchema = z2.array(audienceSchema);
|
|
90
|
+
var brainstormMediaTypeSchema = z2.enum(BRAINSTORM_MEDIA_TYPES);
|
|
103
91
|
// ../../packages/shared/src/schemas/context.ts
|
|
104
92
|
import { z as z3 } from "zod";
|
|
105
93
|
var domainContextSchema = z3.object({
|
|
@@ -1382,13 +1370,21 @@ function registerCreateRoadmapItem(server) {
|
|
|
1382
1370
|
title: z11.string().describe("Title of the roadmap item"),
|
|
1383
1371
|
status: roadmapStatusSchema.optional().describe('Status (defaults to "not_started")'),
|
|
1384
1372
|
horizon: horizonSchema.optional().describe('Planning horizon (defaults to "inbox")'),
|
|
1385
|
-
initiativeId: z11.string().optional().describe("UUID of initiative to link this item to on creation")
|
|
1373
|
+
initiativeId: z11.string().optional().describe("UUID of initiative to link this item to on creation"),
|
|
1374
|
+
dateGranularity: dateGranularitySchema2.optional().describe("Planned date granularity: day, month, quarter, half-year, or year"),
|
|
1375
|
+
dateValue: z11.string().optional().describe('Planned date value matching granularity (e.g., "2024-03-15" for day, "2024-Q1" for quarter)'),
|
|
1376
|
+
targetGranularity: dateGranularitySchema2.optional().describe("Deadline/target date granularity: day, month, quarter, half-year, or year"),
|
|
1377
|
+
targetValue: z11.string().optional().describe('Deadline/target date value matching granularity (e.g., "2024-03-15" for day, "2024-Q1" for quarter)')
|
|
1386
1378
|
}
|
|
1387
1379
|
}, async ({
|
|
1388
1380
|
title,
|
|
1389
1381
|
status,
|
|
1390
1382
|
horizon,
|
|
1391
|
-
initiativeId
|
|
1383
|
+
initiativeId,
|
|
1384
|
+
dateGranularity,
|
|
1385
|
+
dateValue,
|
|
1386
|
+
targetGranularity,
|
|
1387
|
+
targetValue
|
|
1392
1388
|
}) => {
|
|
1393
1389
|
const client2 = getApiClient();
|
|
1394
1390
|
const createData = {
|
|
@@ -1399,6 +1395,18 @@ function registerCreateRoadmapItem(server) {
|
|
|
1399
1395
|
if (initiativeId) {
|
|
1400
1396
|
createData.initiativeId = initiativeId;
|
|
1401
1397
|
}
|
|
1398
|
+
if (dateGranularity && dateValue) {
|
|
1399
|
+
createData.date = {
|
|
1400
|
+
granularity: dateGranularity,
|
|
1401
|
+
value: dateValue
|
|
1402
|
+
};
|
|
1403
|
+
}
|
|
1404
|
+
if (targetGranularity && targetValue) {
|
|
1405
|
+
createData.target = {
|
|
1406
|
+
granularity: targetGranularity,
|
|
1407
|
+
value: targetValue
|
|
1408
|
+
};
|
|
1409
|
+
}
|
|
1402
1410
|
const roadmap2 = await client2.createRoadmap(createData);
|
|
1403
1411
|
return {
|
|
1404
1412
|
content: [
|
|
@@ -1410,7 +1418,9 @@ function registerCreateRoadmapItem(server) {
|
|
|
1410
1418
|
id: roadmap2.id,
|
|
1411
1419
|
title: roadmap2.title,
|
|
1412
1420
|
status: roadmap2.status,
|
|
1413
|
-
horizon: roadmap2.horizon
|
|
1421
|
+
horizon: roadmap2.horizon,
|
|
1422
|
+
date: roadmap2.date,
|
|
1423
|
+
target: roadmap2.target
|
|
1414
1424
|
}
|
|
1415
1425
|
}, null, 2)
|
|
1416
1426
|
}
|
|
@@ -1421,7 +1431,7 @@ function registerCreateRoadmapItem(server) {
|
|
|
1421
1431
|
var effortSizeSchema = z11.enum(["xs", "s", "m", "l", "xl"]);
|
|
1422
1432
|
function registerUpdateRoadmapItem(server) {
|
|
1423
1433
|
server.registerTool("update_roadmap_item", {
|
|
1424
|
-
description: "Update an existing roadmap item. Can update title, status, horizon, value, effort, order, prompt, initiative link, or brainstorm notes.",
|
|
1434
|
+
description: "Update an existing roadmap item. Can update title, status, horizon, value, effort, order, prompt, initiative link, target date, or brainstorm notes.",
|
|
1425
1435
|
inputSchema: {
|
|
1426
1436
|
id: z11.string().describe("The UUID of the roadmap item to update"),
|
|
1427
1437
|
title: z11.string().optional().describe("New title"),
|
|
@@ -1435,7 +1445,11 @@ function registerUpdateRoadmapItem(server) {
|
|
|
1435
1445
|
planDescription: z11.string().nullable().optional().describe("Description for the Planning phase"),
|
|
1436
1446
|
buildDescription: z11.string().nullable().optional().describe("Description for the Build phase"),
|
|
1437
1447
|
releaseDescription: z11.string().nullable().optional().describe("Description for the Release phase"),
|
|
1438
|
-
prompt: z11.string().nullable().optional().describe("Build prompt for the roadmap item")
|
|
1448
|
+
prompt: z11.string().nullable().optional().describe("Build prompt for the roadmap item"),
|
|
1449
|
+
dateGranularity: dateGranularitySchema2.nullable().optional().describe("Planned date granularity: day, month, quarter, half-year, or year"),
|
|
1450
|
+
dateValue: z11.string().nullable().optional().describe('Planned date value matching granularity (e.g., "2024-03-15" for day, "2024-Q1" for quarter)'),
|
|
1451
|
+
targetGranularity: dateGranularitySchema2.nullable().optional().describe("Deadline/target date granularity: day, month, quarter, half-year, or year"),
|
|
1452
|
+
targetValue: z11.string().nullable().optional().describe('Deadline/target date value matching granularity (e.g., "2024-03-15" for day, "2024-Q1" for quarter)')
|
|
1439
1453
|
}
|
|
1440
1454
|
}, async ({
|
|
1441
1455
|
id,
|
|
@@ -1450,7 +1464,11 @@ function registerUpdateRoadmapItem(server) {
|
|
|
1450
1464
|
planDescription,
|
|
1451
1465
|
buildDescription,
|
|
1452
1466
|
releaseDescription,
|
|
1453
|
-
prompt
|
|
1467
|
+
prompt,
|
|
1468
|
+
dateGranularity,
|
|
1469
|
+
dateValue,
|
|
1470
|
+
targetGranularity,
|
|
1471
|
+
targetValue
|
|
1454
1472
|
}) => {
|
|
1455
1473
|
const client2 = getApiClient();
|
|
1456
1474
|
const updates = {};
|
|
@@ -1468,6 +1486,18 @@ function registerUpdateRoadmapItem(server) {
|
|
|
1468
1486
|
updates.order = order;
|
|
1469
1487
|
if (initiativeId !== undefined)
|
|
1470
1488
|
updates.initiativeId = initiativeId;
|
|
1489
|
+
if (dateGranularity !== undefined || dateValue !== undefined) {
|
|
1490
|
+
updates.date = {
|
|
1491
|
+
granularity: dateGranularity ?? null,
|
|
1492
|
+
value: dateValue ?? null
|
|
1493
|
+
};
|
|
1494
|
+
}
|
|
1495
|
+
if (targetGranularity !== undefined || targetValue !== undefined) {
|
|
1496
|
+
updates.target = {
|
|
1497
|
+
granularity: targetGranularity ?? null,
|
|
1498
|
+
value: targetValue ?? null
|
|
1499
|
+
};
|
|
1500
|
+
}
|
|
1471
1501
|
const roadmap2 = Object.keys(updates).length > 0 ? await client2.updateRoadmap(id, updates) : await client2.getRoadmap(id);
|
|
1472
1502
|
const phaseUpdates = {};
|
|
1473
1503
|
if (designDescription !== undefined) {
|
|
@@ -1507,7 +1537,9 @@ function registerUpdateRoadmapItem(server) {
|
|
|
1507
1537
|
horizon: roadmap2.horizon,
|
|
1508
1538
|
value: roadmap2.value,
|
|
1509
1539
|
effort: roadmap2.effort,
|
|
1510
|
-
order: roadmap2.order
|
|
1540
|
+
order: roadmap2.order,
|
|
1541
|
+
date: roadmap2.date,
|
|
1542
|
+
target: roadmap2.target
|
|
1511
1543
|
},
|
|
1512
1544
|
phaseDescriptionsUpdated: phaseUpdates
|
|
1513
1545
|
}, null, 2)
|
|
@@ -2247,31 +2279,18 @@ function registerUpdateProductDocumentation(server) {
|
|
|
2247
2279
|
};
|
|
2248
2280
|
});
|
|
2249
2281
|
}
|
|
2250
|
-
var audienceTypeSchema2 = z11.enum(["stakeholder", "user_persona"]);
|
|
2251
2282
|
function registerCreateAudience(server) {
|
|
2252
2283
|
server.registerTool("create_audience", {
|
|
2253
|
-
description: "Create a new audience member
|
|
2284
|
+
description: "Create a new audience member. Audiences represent who the product serves.",
|
|
2254
2285
|
inputSchema: {
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
likes: z11.string().nullable().optional().describe("What this audience likes or values"),
|
|
2258
|
-
dislikes: z11.string().nullable().optional().describe("What this audience dislikes or avoids"),
|
|
2259
|
-
priorities: z11.string().nullable().optional().describe("Key priorities for this audience")
|
|
2286
|
+
name: z11.string().describe('Name of the audience (e.g., "Product Manager", "End User")'),
|
|
2287
|
+
description: z11.string().nullable().optional().describe("Description of the audience")
|
|
2260
2288
|
}
|
|
2261
|
-
}, async ({
|
|
2262
|
-
type,
|
|
2263
|
-
role,
|
|
2264
|
-
likes,
|
|
2265
|
-
dislikes,
|
|
2266
|
-
priorities
|
|
2267
|
-
}) => {
|
|
2289
|
+
}, async ({ name, description }) => {
|
|
2268
2290
|
const client2 = getApiClient();
|
|
2269
2291
|
const audience2 = await client2.createAudience({
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
likes: likes ?? null,
|
|
2273
|
-
dislikes: dislikes ?? null,
|
|
2274
|
-
priorities: priorities ?? null
|
|
2292
|
+
name,
|
|
2293
|
+
description: description ?? null
|
|
2275
2294
|
});
|
|
2276
2295
|
return {
|
|
2277
2296
|
content: [
|
|
@@ -2281,11 +2300,8 @@ function registerCreateAudience(server) {
|
|
|
2281
2300
|
success: true,
|
|
2282
2301
|
audience: {
|
|
2283
2302
|
id: audience2.id,
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
likes: audience2.likes,
|
|
2287
|
-
dislikes: audience2.dislikes,
|
|
2288
|
-
priorities: audience2.priorities
|
|
2303
|
+
name: audience2.name,
|
|
2304
|
+
description: audience2.description
|
|
2289
2305
|
}
|
|
2290
2306
|
}, null, 2)
|
|
2291
2307
|
}
|
|
@@ -2298,32 +2314,20 @@ function registerUpdateAudience(server) {
|
|
|
2298
2314
|
description: "Update an existing audience member.",
|
|
2299
2315
|
inputSchema: {
|
|
2300
2316
|
id: z11.string().describe("The UUID of the audience to update"),
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
likes: z11.string().nullable().optional().describe("New likes"),
|
|
2304
|
-
dislikes: z11.string().nullable().optional().describe("New dislikes"),
|
|
2305
|
-
priorities: z11.string().nullable().optional().describe("New priorities")
|
|
2317
|
+
name: z11.string().optional().describe("New name"),
|
|
2318
|
+
description: z11.string().nullable().optional().describe("New description")
|
|
2306
2319
|
}
|
|
2307
2320
|
}, async ({
|
|
2308
2321
|
id,
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
likes,
|
|
2312
|
-
dislikes,
|
|
2313
|
-
priorities
|
|
2322
|
+
name,
|
|
2323
|
+
description
|
|
2314
2324
|
}) => {
|
|
2315
2325
|
const client2 = getApiClient();
|
|
2316
2326
|
const updates = {};
|
|
2317
|
-
if (
|
|
2318
|
-
updates.
|
|
2319
|
-
if (
|
|
2320
|
-
updates.
|
|
2321
|
-
if (likes !== undefined)
|
|
2322
|
-
updates.likes = likes;
|
|
2323
|
-
if (dislikes !== undefined)
|
|
2324
|
-
updates.dislikes = dislikes;
|
|
2325
|
-
if (priorities !== undefined)
|
|
2326
|
-
updates.priorities = priorities;
|
|
2327
|
+
if (name !== undefined)
|
|
2328
|
+
updates.name = name;
|
|
2329
|
+
if (description !== undefined)
|
|
2330
|
+
updates.description = description;
|
|
2327
2331
|
const audience2 = await client2.updateAudience(id, updates);
|
|
2328
2332
|
return {
|
|
2329
2333
|
content: [
|
|
@@ -2333,11 +2337,8 @@ function registerUpdateAudience(server) {
|
|
|
2333
2337
|
success: true,
|
|
2334
2338
|
audience: {
|
|
2335
2339
|
id: audience2.id,
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
likes: audience2.likes,
|
|
2339
|
-
dislikes: audience2.dislikes,
|
|
2340
|
-
priorities: audience2.priorities
|
|
2340
|
+
name: audience2.name,
|
|
2341
|
+
description: audience2.description
|
|
2341
2342
|
}
|
|
2342
2343
|
}, null, 2)
|
|
2343
2344
|
}
|
|
@@ -3114,7 +3115,7 @@ Expires: ${expiryDate}`
|
|
|
3114
3115
|
};
|
|
3115
3116
|
});
|
|
3116
3117
|
}
|
|
3117
|
-
var dateGranularitySchema2 = z11.enum(["day", "month", "quarter", "
|
|
3118
|
+
var dateGranularitySchema2 = z11.enum(["day", "month", "quarter", "half-year", "year"]);
|
|
3118
3119
|
function registerSearchInitiatives(server) {
|
|
3119
3120
|
server.registerTool("search_initiatives", {
|
|
3120
3121
|
description: "Search for initiatives by title or filter by horizon. Returns a list of matching initiatives with item counts.",
|
|
@@ -3194,7 +3195,7 @@ function registerCreateInitiative(server) {
|
|
|
3194
3195
|
title: z11.string().describe("Title of the initiative"),
|
|
3195
3196
|
description: z11.string().optional().describe("Description of the initiative (markdown)"),
|
|
3196
3197
|
horizon: horizonSchema.optional().describe('Planning horizon (defaults to "inbox")'),
|
|
3197
|
-
dateGranularity: dateGranularitySchema2.optional().describe("Target date granularity: day, month, quarter,
|
|
3198
|
+
dateGranularity: dateGranularitySchema2.optional().describe("Target date granularity: day, month, quarter, half-year, or year"),
|
|
3198
3199
|
dateValue: z11.string().optional().describe('Target date value matching granularity (e.g., "2024-Q1", "2024-03")'),
|
|
3199
3200
|
targetDate: z11.string().optional().describe("Target date in YYYY-MM-DD format")
|
|
3200
3201
|
}
|