@unified-product-graph/mcp-server 0.8.8 → 0.8.9
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/CHANGELOG.md +8 -0
- package/TOOLS.md +4 -2
- package/dist/index.js +12 -8
- package/dist/index.js.map +1 -1
- package/dist/tools-manifest.json +14 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `@unified-product-graph/mcp-server` are documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
4
4
|
|
|
5
|
+
## [0.8.9] - 2026-06-03
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- `apply_framework` accepts `slot_roles` (entity id to role); `score_entity` accepts `slot_role` (Phase 3b-2), validated against the framework's declared slot roles.
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Bundles core 0.8.9 (scoring_lens to scoring_method rename; slot_role on the exercise edge).
|
|
12
|
+
|
|
5
13
|
## [0.8.8] - 2026-06-03
|
|
6
14
|
|
|
7
15
|
### Added
|
package/TOOLS.md
CHANGED
|
@@ -1410,12 +1410,13 @@ Apply a framework (MoSCoW, RICE, Kano, ...) to a set of entities: creates a fram
|
|
|
1410
1410
|
| ---- | ---- | -------- | ----------- |
|
|
1411
1411
|
| `entity_ids` | array | | Entities to pull into the exercise (any type). |
|
|
1412
1412
|
| `framework_id` | string | ✓ | Required. UPGFramework.id (e.g. "moscow", "rice-scoring"). |
|
|
1413
|
+
| `slot_roles` | object | | Optional map of entity id → framework slot role (e.g. { "feat_x": "pain_reliever" }), stamped onto each entity's includes edge. Validated against the framework's declared slot roles (warn-only). |
|
|
1413
1414
|
| `status` | string | | Lifecycle phase: draft \| active \| archived (default draft). |
|
|
1414
1415
|
| `title` | string | | Human label for the exercise (default "<Framework> exercise"). |
|
|
1415
1416
|
|
|
1416
1417
|
**Returns:**
|
|
1417
1418
|
|
|
1418
|
-
JSON: `{ exercise_id, exercise, included: [{ edge_id, entity_id, edge_type }], warnings }`
|
|
1419
|
+
JSON: `{ exercise_id, exercise, included: [{ edge_id, entity_id, edge_type, slot_role? }], warnings }`
|
|
1419
1420
|
(the shared cross-surface envelope; identical to CLI `apply --json`).
|
|
1420
1421
|
|
|
1421
1422
|
**Throws:**
|
|
@@ -2359,7 +2360,8 @@ Record a framework's result for one entity on the exercise's includes edge (a Mo
|
|
|
2359
2360
|
| `entity_id` | string | ✓ | Required. The entity being scored. |
|
|
2360
2361
|
| `exercise_id` | string | ✓ | Required. The framework_exercise id. |
|
|
2361
2362
|
| `replace` | boolean | | Replace the edge properties instead of merging (default false). |
|
|
2362
|
-
| `
|
|
2363
|
+
| `slot_role` | string | | Optional framework slot role this entity plays (e.g. "pain_reliever"). Rides the same edge as the scores; validated against the framework's declared slot roles (warn-only). |
|
|
2364
|
+
| `values` | object | ✓ | Required. The result as { input: value }, e.g. { "moscow": "must" } or { "reach": 4, "impact": 3 }. |
|
|
2363
2365
|
|
|
2364
2366
|
**Returns:**
|
|
2365
2367
|
|
package/dist/index.js
CHANGED
|
@@ -12521,7 +12521,7 @@ var UPG_FRAMEWORKS = [
|
|
|
12521
12521
|
"format": "number"
|
|
12522
12522
|
}
|
|
12523
12523
|
],
|
|
12524
|
-
"
|
|
12524
|
+
"scoring_method": {
|
|
12525
12525
|
"applies_to": [
|
|
12526
12526
|
"feature",
|
|
12527
12527
|
"opportunity",
|
|
@@ -12864,7 +12864,7 @@ var UPG_FRAMEWORKS = [
|
|
|
12864
12864
|
"format": "number"
|
|
12865
12865
|
}
|
|
12866
12866
|
],
|
|
12867
|
-
"
|
|
12867
|
+
"scoring_method": {
|
|
12868
12868
|
"applies_to": [
|
|
12869
12869
|
"feature"
|
|
12870
12870
|
],
|
|
@@ -14981,7 +14981,7 @@ var UPG_FRAMEWORKS = [
|
|
|
14981
14981
|
"format": "number"
|
|
14982
14982
|
}
|
|
14983
14983
|
],
|
|
14984
|
-
"
|
|
14984
|
+
"scoring_method": {
|
|
14985
14985
|
"applies_to": [
|
|
14986
14986
|
"risk"
|
|
14987
14987
|
],
|
|
@@ -15246,7 +15246,7 @@ var UPG_FRAMEWORKS = [
|
|
|
15246
15246
|
"format": "number"
|
|
15247
15247
|
}
|
|
15248
15248
|
],
|
|
15249
|
-
"
|
|
15249
|
+
"scoring_method": {
|
|
15250
15250
|
"applies_to": [
|
|
15251
15251
|
"feature",
|
|
15252
15252
|
"opportunity",
|
|
@@ -15502,7 +15502,7 @@ var UPG_FRAMEWORKS = [
|
|
|
15502
15502
|
"format": "number"
|
|
15503
15503
|
}
|
|
15504
15504
|
],
|
|
15505
|
-
"
|
|
15505
|
+
"scoring_method": {
|
|
15506
15506
|
"applies_to": [
|
|
15507
15507
|
"feature",
|
|
15508
15508
|
"opportunity"
|
|
@@ -15739,7 +15739,7 @@ var UPG_FRAMEWORKS = [
|
|
|
15739
15739
|
"format": "number"
|
|
15740
15740
|
}
|
|
15741
15741
|
],
|
|
15742
|
-
"
|
|
15742
|
+
"scoring_method": {
|
|
15743
15743
|
"applies_to": [
|
|
15744
15744
|
"feature",
|
|
15745
15745
|
"opportunity"
|
|
@@ -24365,7 +24365,7 @@ function serializePortfolioWithHeader(doc, opts) {
|
|
|
24365
24365
|
header.integrity = { algorithm: INTEGRITY_ALGORITHM, body: computeBodyChecksum(doc) };
|
|
24366
24366
|
return JSON.stringify({ $upg: header, ...body }, null, 2) + "\n";
|
|
24367
24367
|
}
|
|
24368
|
-
var UPG_VERSION = "0.8.
|
|
24368
|
+
var UPG_VERSION = "0.8.9";
|
|
24369
24369
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
24370
24370
|
var UPG_TYPES = getTypes();
|
|
24371
24371
|
var UPG_TYPES_SET = new Set(UPG_TYPES);
|
|
@@ -26892,6 +26892,7 @@ var applyFramework = (args, ctx) => {
|
|
|
26892
26892
|
framework_id: frameworkId,
|
|
26893
26893
|
title: args.title,
|
|
26894
26894
|
entity_ids: args.entity_ids ?? [],
|
|
26895
|
+
slot_roles: args.slot_roles,
|
|
26895
26896
|
status: args.status
|
|
26896
26897
|
});
|
|
26897
26898
|
return text(JSON.stringify(applyFrameworkEnvelope(result), null, 2));
|
|
@@ -26915,6 +26916,7 @@ var scoreEntity = (args, ctx) => {
|
|
|
26915
26916
|
exercise_id: exerciseId,
|
|
26916
26917
|
entity_id: entityId,
|
|
26917
26918
|
values,
|
|
26919
|
+
slot_role: args.slot_role,
|
|
26918
26920
|
replace: args.replace
|
|
26919
26921
|
});
|
|
26920
26922
|
if ("error" in result) return textError(result.error);
|
|
@@ -29299,6 +29301,7 @@ var TOOL_DEFINITIONS = [
|
|
|
29299
29301
|
framework_id: { type: "string", description: 'Required. UPGFramework.id (e.g. "moscow", "rice-scoring").' },
|
|
29300
29302
|
title: { type: "string", description: 'Human label for the exercise (default "<Framework> exercise").' },
|
|
29301
29303
|
entity_ids: { type: "array", items: { type: "string" }, description: "Entities to pull into the exercise (any type)." },
|
|
29304
|
+
slot_roles: { type: "object", description: `Optional map of entity id \u2192 framework slot role (e.g. { "feat_x": "pain_reliever" }), stamped onto each entity's includes edge. Validated against the framework's declared slot roles (warn-only).` },
|
|
29302
29305
|
status: { type: "string", description: "Lifecycle phase: draft | active | archived (default draft)." }
|
|
29303
29306
|
},
|
|
29304
29307
|
required: ["framework_id"]
|
|
@@ -29312,7 +29315,8 @@ var TOOL_DEFINITIONS = [
|
|
|
29312
29315
|
properties: {
|
|
29313
29316
|
exercise_id: { type: "string", description: "Required. The framework_exercise id." },
|
|
29314
29317
|
entity_id: { type: "string", description: "Required. The entity being scored." },
|
|
29315
|
-
values: { type: "object", description: 'Required. The result as { input: value }, e.g. { "moscow": "must" } or { "reach":
|
|
29318
|
+
values: { type: "object", description: 'Required. The result as { input: value }, e.g. { "moscow": "must" } or { "reach": 4, "impact": 3 }.' },
|
|
29319
|
+
slot_role: { type: "string", description: `Optional framework slot role this entity plays (e.g. "pain_reliever"). Rides the same edge as the scores; validated against the framework's declared slot roles (warn-only).` },
|
|
29316
29320
|
replace: { type: "boolean", description: "Replace the edge properties instead of merging (default false)." }
|
|
29317
29321
|
},
|
|
29318
29322
|
required: ["exercise_id", "entity_id", "values"]
|