@unified-product-graph/mcp-server 0.8.1 → 0.8.4
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 +22 -0
- package/README.md +1 -1
- package/TOOLS.md +79 -16
- package/dist/index.js +1440 -290
- package/dist/index.js.map +1 -1
- package/dist/tools-manifest.json +197 -82
- package/package.json +1 -1
- package/scripts/claudemd-snippet.md +7 -7
- package/scripts/install-skills.sh +2 -2
- package/skills/upg/SKILL.md +41 -41
- package/skills/{upg-gaps → upg-check-gaps}/SKILL.md +40 -43
- package/skills/{upg-schema-health → upg-check-schema}/SKILL.md +7 -7
- package/skills/{upg-schema-evolve → upg-check-schema-coverage}/SKILL.md +12 -12
- package/skills/{upg-schema-edges → upg-check-schema-edges}/SKILL.md +3 -3
- package/skills/{upg-schema-consolidate → upg-check-schema-merge}/SKILL.md +5 -5
- package/skills/upg-context/SKILL.md +96 -72
- package/skills/upg-context-intelligence/SKILL.md +23 -27
- package/skills/upg-design-system/SKILL.md +21 -26
- package/skills/{upg-verify → upg-find-untracked}/SKILL.md +7 -12
- package/skills/{upg-rollback → upg-fix-rollback}/SKILL.md +6 -12
- package/skills/{upg-migrate → upg-fix-types}/SKILL.md +5 -9
- package/skills/upg-link/SKILL.md +125 -0
- package/skills/{upg-discover → upg-new-discovery}/SKILL.md +42 -58
- package/skills/{upg-capture → upg-new-from-session}/SKILL.md +13 -15
- package/skills/{upg-template → upg-new-from-template}/SKILL.md +8 -12
- package/skills/{upg-init → upg-new-graph}/SKILL.md +50 -82
- package/skills/{upg-hypothesis → upg-new-hypothesis}/SKILL.md +27 -36
- package/skills/{upg-launch → upg-new-launch}/SKILL-DETAIL.md +36 -92
- package/skills/{upg-launch → upg-new-launch}/SKILL.md +8 -18
- package/skills/{upg-okr → upg-new-okr}/SKILL-DETAIL.md +28 -46
- package/skills/{upg-okr → upg-new-okr}/SKILL.md +3 -3
- package/skills/{upg-persona → upg-new-persona}/SKILL.md +35 -67
- package/skills/{upg-research → upg-new-research}/SKILL.md +25 -33
- package/skills/{upg-schema-update → upg-new-schema-type}/SKILL.md +2 -2
- package/skills/{upg-strategy → upg-new-strategy}/SKILL.md +21 -27
- package/skills/upg-prioritise/SKILL.md +4 -4
- package/skills/upg-reflect/SKILL.md +7 -7
- package/skills/{upg-feedback → upg-send-feedback}/SKILL.md +30 -51
- package/skills/{upg-diff → upg-show-diff}/SKILL.md +6 -12
- package/skills/{upg-inspect → upg-show-entity}/SKILL.md +7 -9
- package/skills/{upg-impact → upg-show-impact}/SKILL.md +11 -15
- package/skills/{upg-journey → upg-show-journey}/SKILL.md +31 -32
- package/skills/{upg-analytics → upg-show-metrics}/SKILL.md +9 -12
- package/skills/{upg-schema-changelog → upg-show-schema-changelog}/SKILL.md +5 -5
- package/skills/{upg-status → upg-show-status}/SKILL.md +39 -40
- package/skills/{upg-tree → upg-show-tree}/SKILL.md +15 -15
- package/skills/{upg-export → upg-sync-export}/SKILL.md +10 -13
- package/skills/{upg-import → upg-sync-import}/SKILL.md +7 -13
- package/skills/{upg-pull → upg-sync-pull}/SKILL-DETAIL.md +13 -17
- package/skills/{upg-pull → upg-sync-pull}/SKILL.md +3 -3
- package/skills/{upg-push → upg-sync-push}/SKILL-DETAIL.md +4 -10
- package/skills/{upg-push → upg-sync-push}/SKILL.md +4 -4
- package/skills/{upg-snapshot → upg-sync-snapshot}/SKILL.md +2 -6
- package/skills/upg-trace/SKILL.md +7 -7
- package/skills/{upg-workspace → upg-use-workspace}/SKILL.md +8 -14
- package/skills/{upg-run → upg-walk-playbook}/SKILL.md +10 -10
- package/skills/upg-walk-region/SKILL-DETAIL.md +320 -0
- package/skills/upg-walk-region/SKILL.md +89 -0
- package/skills/upg-connect/SKILL.md +0 -167
- package/skills/upg-explore/SKILL-DETAIL.md +0 -481
- package/skills/upg-explore/SKILL.md +0 -297
package/dist/tools-manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "2",
|
|
3
3
|
"package": "@unified-product-graph/mcp-server",
|
|
4
|
-
"package_version": "0.8.
|
|
5
|
-
"tool_count":
|
|
4
|
+
"package_version": "0.8.4",
|
|
5
|
+
"tool_count": 96,
|
|
6
6
|
"domains": [
|
|
7
7
|
"context",
|
|
8
8
|
"nodes",
|
|
@@ -153,11 +153,11 @@
|
|
|
153
153
|
"properties": {
|
|
154
154
|
"skill_invoked": {
|
|
155
155
|
"type": "string",
|
|
156
|
-
"description": "Register that this skill was just invoked (e.g. \"upg-status\")"
|
|
156
|
+
"description": "Register that this skill was just invoked (e.g. \"upg-show-status\")"
|
|
157
157
|
},
|
|
158
158
|
"recommendation": {
|
|
159
159
|
"type": "string",
|
|
160
|
-
"description": "Record a recommendation given to the user (e.g. \"Run /upg-strategy to fill strategy gap\")"
|
|
160
|
+
"description": "Record a recommendation given to the user (e.g. \"Run /upg-new-strategy to fill strategy gap\")"
|
|
161
161
|
},
|
|
162
162
|
"focus_area": {
|
|
163
163
|
"type": "string",
|
|
@@ -167,11 +167,15 @@
|
|
|
167
167
|
"type": "string",
|
|
168
168
|
"enum": [
|
|
169
169
|
"product",
|
|
170
|
+
"ux_design",
|
|
170
171
|
"engineering",
|
|
171
|
-
"
|
|
172
|
-
"
|
|
172
|
+
"growth",
|
|
173
|
+
"business",
|
|
174
|
+
"research",
|
|
175
|
+
"marketing",
|
|
176
|
+
"full"
|
|
173
177
|
],
|
|
174
|
-
"description": "Switch the active lens. Changes what context, skills, and gaps are surfaced first."
|
|
178
|
+
"description": "Switch the active lens. Changes what context, skills, and gaps are surfaced first. Canonical lens ids (derived from core): product, ux_design, engineering, growth, business, research, marketing, full."
|
|
175
179
|
},
|
|
176
180
|
"persist_lens": {
|
|
177
181
|
"type": "boolean",
|
|
@@ -304,7 +308,7 @@
|
|
|
304
308
|
"create_node",
|
|
305
309
|
"batch_create_edges"
|
|
306
310
|
],
|
|
307
|
-
"source": "src/tools/nodes.ts:
|
|
311
|
+
"source": "src/tools/nodes.ts:1013",
|
|
308
312
|
"symbol": "batchCreateNodes",
|
|
309
313
|
"returns": "JSON: `{ created, edges_created, count, edges_count, warnings? }`.",
|
|
310
314
|
"return_shape": "{ created, edges_created, count, edges_count, warnings? }",
|
|
@@ -343,7 +347,7 @@
|
|
|
343
347
|
"see": [
|
|
344
348
|
"delete_node"
|
|
345
349
|
],
|
|
346
|
-
"source": "src/tools/nodes.ts:
|
|
350
|
+
"source": "src/tools/nodes.ts:1117",
|
|
347
351
|
"symbol": "batchDeleteNodes",
|
|
348
352
|
"returns": "JSON: `{ deleted, edges_removed, count }`.",
|
|
349
353
|
"return_shape": "{ deleted, edges_removed, count }",
|
|
@@ -404,7 +408,7 @@
|
|
|
404
408
|
"see": [
|
|
405
409
|
"update_node"
|
|
406
410
|
],
|
|
407
|
-
"source": "src/tools/nodes.ts:
|
|
411
|
+
"source": "src/tools/nodes.ts:1041",
|
|
408
412
|
"symbol": "batchUpdateNodes",
|
|
409
413
|
"returns": "JSON: `{ updated, count, warnings? }`. `warnings` carries\nlifecycle-phase hints aggregated across the batch.",
|
|
410
414
|
"return_shape": "{ updated, count, warnings? }",
|
|
@@ -528,7 +532,7 @@
|
|
|
528
532
|
"batch_delete_nodes",
|
|
529
533
|
"validate_graph"
|
|
530
534
|
],
|
|
531
|
-
"source": "src/tools/nodes.ts:
|
|
535
|
+
"source": "src/tools/nodes.ts:1362",
|
|
532
536
|
"symbol": "deduplicateNodes",
|
|
533
537
|
"returns": "JSON: with `dry_run: true`, `{ duplicates, total_groups,\ntotal_duplicate_nodes, dry_run, message }`. With `dry_run: false`,\n`{ merged: true, groups_merged, nodes_removed, edges_redirected,\nstrategy }`.",
|
|
534
538
|
"return_notes": [
|
|
@@ -567,7 +571,7 @@
|
|
|
567
571
|
"see": [
|
|
568
572
|
"batch_delete_nodes"
|
|
569
573
|
],
|
|
570
|
-
"source": "src/tools/nodes.ts:
|
|
574
|
+
"source": "src/tools/nodes.ts:987",
|
|
571
575
|
"symbol": "deleteNode",
|
|
572
576
|
"returns": "JSON: `{ node, removed_edge_ids }`.",
|
|
573
577
|
"return_shape": "{ node, removed_edge_ids }",
|
|
@@ -769,7 +773,7 @@
|
|
|
769
773
|
"validate_graph",
|
|
770
774
|
"list_type_migrations"
|
|
771
775
|
],
|
|
772
|
-
"source": "src/tools/nodes.ts:
|
|
776
|
+
"source": "src/tools/nodes.ts:1308",
|
|
773
777
|
"symbol": "migrateProperties",
|
|
774
778
|
"returns": "JSON: `{ top_level_renames, lifted_properties, dropped_props,\ndropped_self_referential, dry_run }`.",
|
|
775
779
|
"return_shape": "{ top_level_renames, lifted_properties, dropped_props, dropped_self_referential, dry_run }",
|
|
@@ -868,7 +872,7 @@
|
|
|
868
872
|
"export_edges",
|
|
869
873
|
"update_node"
|
|
870
874
|
],
|
|
871
|
-
"source": "src/tools/nodes.ts:
|
|
875
|
+
"source": "src/tools/nodes.ts:1171",
|
|
872
876
|
"symbol": "migrateType",
|
|
873
877
|
"returns": "JSON: `{ migrated_nodes, migrated_edges, edge_renames,\ndropped_edges, unmapped_legacy_edges, defaults_applied, dry_run }`.\n`edge_renames` is `[{ id, from, to, flipped }]`; `dropped_edges` is\n`[{ id, from }]`; `unmapped_legacy_edges` is `[{ type, count }]`.\n`migrated_edges` is the total mutated count (renames + drops).",
|
|
874
878
|
"return_shape": "{ migrated_nodes, migrated_edges, edge_renames, dropped_edges, unmapped_legacy_edges, defaults_applied, dry_run }",
|
|
@@ -1046,6 +1050,13 @@
|
|
|
1046
1050
|
"properties": {
|
|
1047
1051
|
"type": "object",
|
|
1048
1052
|
"description": "Merged with existing properties"
|
|
1053
|
+
},
|
|
1054
|
+
"unset_properties": {
|
|
1055
|
+
"type": "array",
|
|
1056
|
+
"items": {
|
|
1057
|
+
"type": "string"
|
|
1058
|
+
},
|
|
1059
|
+
"description": "Property keys to DELETE. Applied after the `properties` merge, so one call can set some keys and drop others. Writing `{ key: null }` only stores a literal null; use this to actually remove a key. Unknown keys are ignored."
|
|
1049
1060
|
}
|
|
1050
1061
|
},
|
|
1051
1062
|
"required": [
|
|
@@ -1053,7 +1064,7 @@
|
|
|
1053
1064
|
]
|
|
1054
1065
|
},
|
|
1055
1066
|
"throws": [
|
|
1056
|
-
"Returns a textError when `node_id` is missing, the type migration\nfails,
|
|
1067
|
+
"Returns a textError when `node_id` is missing, the type migration\nfails, the `status` is not a valid lifecycle phase for the type, when\n`strict: true` and unknown properties are present, or when the underlying\nstore rejects the patch."
|
|
1057
1068
|
],
|
|
1058
1069
|
"examples": [
|
|
1059
1070
|
{
|
|
@@ -1067,13 +1078,14 @@
|
|
|
1067
1078
|
"migrate_type",
|
|
1068
1079
|
"batch_update_nodes"
|
|
1069
1080
|
],
|
|
1070
|
-
"source": "src/tools/nodes.ts:
|
|
1081
|
+
"source": "src/tools/nodes.ts:880",
|
|
1071
1082
|
"symbol": "updateNode",
|
|
1072
|
-
"returns": "JSON: `{ node, warning?, unknown_properties? }`. `warning`\naggregates
|
|
1073
|
-
"return_shape": "{ node, warning?, unknown_properties? }",
|
|
1083
|
+
"returns": "JSON: `{ node, warning?, unknown_properties?, unset? }`. `warning`\naggregates migration warnings and any unknown-property notice.\n`unknown_properties` lists property keys not in the entity's schema.\n`unset` lists the keys actually removed. Pass `strict: true` to reject\nunknown properties instead of warning.",
|
|
1084
|
+
"return_shape": "{ node, warning?, unknown_properties?, unset? }",
|
|
1074
1085
|
"return_notes": [
|
|
1075
|
-
"`warning` aggregates
|
|
1086
|
+
"`warning` aggregates migration warnings and any unknown-property notice.",
|
|
1076
1087
|
"`unknown_properties` lists property keys not in the entity's schema.",
|
|
1088
|
+
"`unset` lists the keys actually removed.",
|
|
1077
1089
|
"Pass `strict: true` to reject unknown properties instead of warning."
|
|
1078
1090
|
],
|
|
1079
1091
|
"atomicity": "atomic-with-rollback (when `type` is changed); atomic for\nshallow-merge patches."
|
|
@@ -1123,7 +1135,7 @@
|
|
|
1123
1135
|
"see": [
|
|
1124
1136
|
"create_edge"
|
|
1125
1137
|
],
|
|
1126
|
-
"source": "src/tools/edges.ts:
|
|
1138
|
+
"source": "src/tools/edges.ts:210",
|
|
1127
1139
|
"symbol": "batchCreateEdges",
|
|
1128
1140
|
"returns": "JSON: `{ created, count }`.",
|
|
1129
1141
|
"return_shape": "{ created, count }",
|
|
@@ -1162,7 +1174,7 @@
|
|
|
1162
1174
|
"see": [
|
|
1163
1175
|
"delete_edge"
|
|
1164
1176
|
],
|
|
1165
|
-
"source": "src/tools/edges.ts:
|
|
1177
|
+
"source": "src/tools/edges.ts:298",
|
|
1166
1178
|
"symbol": "batchDeleteEdges",
|
|
1167
1179
|
"returns": "JSON: `{ deleted, count }`.",
|
|
1168
1180
|
"return_shape": "{ deleted, count }",
|
|
@@ -1213,7 +1225,7 @@
|
|
|
1213
1225
|
"see": [
|
|
1214
1226
|
"move_node"
|
|
1215
1227
|
],
|
|
1216
|
-
"source": "src/tools/edges.ts:
|
|
1228
|
+
"source": "src/tools/edges.ts:178",
|
|
1217
1229
|
"symbol": "batchMoveNodes",
|
|
1218
1230
|
"returns": "JSON: `{ moves, warnings? }` mirroring the per-move result of\n`move_node`.",
|
|
1219
1231
|
"return_shape": "{ moves, warnings? }",
|
|
@@ -1248,6 +1260,10 @@
|
|
|
1248
1260
|
"type": {
|
|
1249
1261
|
"type": "string",
|
|
1250
1262
|
"description": "Edge type. Auto-inferred if omitted."
|
|
1263
|
+
},
|
|
1264
|
+
"properties": {
|
|
1265
|
+
"type": "object",
|
|
1266
|
+
"description": "Edge-scoped properties. Only permitted on edge types that opt in (currently framework_exercise_includes_node); rejected on plain semantic edges."
|
|
1251
1267
|
}
|
|
1252
1268
|
},
|
|
1253
1269
|
"required": [
|
|
@@ -1301,7 +1317,7 @@
|
|
|
1301
1317
|
"export_edges",
|
|
1302
1318
|
"repair_dangling_edges"
|
|
1303
1319
|
],
|
|
1304
|
-
"source": "src/tools/edges.ts:
|
|
1320
|
+
"source": "src/tools/edges.ts:123",
|
|
1305
1321
|
"symbol": "deleteEdge",
|
|
1306
1322
|
"returns": "JSON: the removed edge object.",
|
|
1307
1323
|
"return_notes": [
|
|
@@ -1352,7 +1368,7 @@
|
|
|
1352
1368
|
"query",
|
|
1353
1369
|
"list_nodes"
|
|
1354
1370
|
],
|
|
1355
|
-
"source": "src/tools/edges.ts:
|
|
1371
|
+
"source": "src/tools/edges.ts:408",
|
|
1356
1372
|
"symbol": "exportEdges",
|
|
1357
1373
|
"returns": "JSON: `{ edges, total, offset, limit, types?, _hash }`. Each edge\ncarries `{ id, source, target, type, mapping_confidence? }`.",
|
|
1358
1374
|
"return_shape": "{ edges, total, offset, limit, types?, _hash }",
|
|
@@ -1398,7 +1414,7 @@
|
|
|
1398
1414
|
"see": [
|
|
1399
1415
|
"batch_move_nodes"
|
|
1400
1416
|
],
|
|
1401
|
-
"source": "src/tools/edges.ts:
|
|
1417
|
+
"source": "src/tools/edges.ts:150",
|
|
1402
1418
|
"symbol": "moveNode",
|
|
1403
1419
|
"returns": "JSON: `{ moved: true, node_id, new_parent_id, new_edge,\nold_edge_id?, warning? }`. The internal `removed_edge` field is stripped\nfrom the wire payload.",
|
|
1404
1420
|
"return_shape": "{ moved: true, node_id, new_parent_id, new_edge, old_edge_id?, warning? }",
|
|
@@ -1445,7 +1461,7 @@
|
|
|
1445
1461
|
"migrate_type",
|
|
1446
1462
|
"export_edges"
|
|
1447
1463
|
],
|
|
1448
|
-
"source": "src/tools/edges.ts:
|
|
1464
|
+
"source": "src/tools/edges.ts:495",
|
|
1449
1465
|
"symbol": "renameEdgeType",
|
|
1450
1466
|
"returns": "JSON: with `dry_run: true`, `{ dry_run, from, to, flip, would_rename, sample }`.\nWith `dry_run: false`, `{ dry_run, from, to, flip, renamed, ids }`.",
|
|
1451
1467
|
"return_notes": [
|
|
@@ -1493,7 +1509,7 @@
|
|
|
1493
1509
|
"Dropping `corrupt` edges is irreversible. The integrity stamp is\nre-computed on next save; a subsequent reload won't bring them back."
|
|
1494
1510
|
],
|
|
1495
1511
|
"see": [],
|
|
1496
|
-
"source": "src/tools/edges.ts:
|
|
1512
|
+
"source": "src/tools/edges.ts:342",
|
|
1497
1513
|
"symbol": "repairDanglingEdges",
|
|
1498
1514
|
"returns": "JSON: `{ dry_run, report, dropped?, remaining? }`. `report` is\nthe pre-action classification. With `dry_run: false`, `dropped` is the\ncount of edges removed and `remaining` is the post-action report.",
|
|
1499
1515
|
"return_shape": "{ dry_run, report, dropped?, remaining? }",
|
|
@@ -1742,7 +1758,7 @@
|
|
|
1742
1758
|
"list_portfolio_cross_edges",
|
|
1743
1759
|
"migrate_cross_edges"
|
|
1744
1760
|
],
|
|
1745
|
-
"source": "src/tools/workspace.ts:
|
|
1761
|
+
"source": "src/tools/workspace.ts:403",
|
|
1746
1762
|
"symbol": "createCrossProductEdge",
|
|
1747
1763
|
"returns": "JSON: `{ edge, portfolio_file }`.",
|
|
1748
1764
|
"return_shape": "{ edge, portfolio_file }",
|
|
@@ -1794,7 +1810,7 @@
|
|
|
1794
1810
|
"see": [
|
|
1795
1811
|
"init_workspace"
|
|
1796
1812
|
],
|
|
1797
|
-
"source": "src/tools/workspace.ts:
|
|
1813
|
+
"source": "src/tools/workspace.ts:283",
|
|
1798
1814
|
"symbol": "createProductTool",
|
|
1799
1815
|
"returns": "JSON: `{ message, ...result }`. `result` carries `id`, `title`,\n`slug`, `file_path`, and the optional portfolio edge.",
|
|
1800
1816
|
"return_shape": "{ message,...result }",
|
|
@@ -1823,7 +1839,7 @@
|
|
|
1823
1839
|
"see": [
|
|
1824
1840
|
"list_portfolios"
|
|
1825
1841
|
],
|
|
1826
|
-
"source": "src/tools/workspace.ts:
|
|
1842
|
+
"source": "src/tools/workspace.ts:352",
|
|
1827
1843
|
"symbol": "getOrganization",
|
|
1828
1844
|
"returns": "JSON: `{ organization: UPGOrganization | null, portfolio_file? }`.\nReturns `{ organization: null }` when no portfolio document exists yet.",
|
|
1829
1845
|
"return_shape": "{ organization: UPGOrganization | null, portfolio_file? }",
|
|
@@ -1852,7 +1868,7 @@
|
|
|
1852
1868
|
"see": [
|
|
1853
1869
|
"init_workspace"
|
|
1854
1870
|
],
|
|
1855
|
-
"source": "src/tools/workspace.ts:
|
|
1871
|
+
"source": "src/tools/workspace.ts:171",
|
|
1856
1872
|
"symbol": "getWorkspaceInfo",
|
|
1857
1873
|
"returns": "JSON: `{ mode, workspace_path?, current_product?, current_file?,\nproducts }`. The shape depends on whether `.upg/workspace.json` exists.",
|
|
1858
1874
|
"return_shape": "{ mode, workspace_path?, current_product?, current_file?, products }",
|
|
@@ -1892,7 +1908,7 @@
|
|
|
1892
1908
|
"switch_product",
|
|
1893
1909
|
"get_workspace_info"
|
|
1894
1910
|
],
|
|
1895
|
-
"source": "src/tools/workspace.ts:
|
|
1911
|
+
"source": "src/tools/workspace.ts:247",
|
|
1896
1912
|
"symbol": "initWorkspaceTool",
|
|
1897
1913
|
"returns": "JSON: `{ message, ...result }`. `result` carries the workspace\npath and the moved file's new location.",
|
|
1898
1914
|
"return_shape": "{ message,...result }",
|
|
@@ -1922,10 +1938,13 @@
|
|
|
1922
1938
|
"switch_product",
|
|
1923
1939
|
"get_workspace_info"
|
|
1924
1940
|
],
|
|
1925
|
-
"source": "src/tools/workspace.ts:
|
|
1941
|
+
"source": "src/tools/workspace.ts:44",
|
|
1926
1942
|
"symbol": "listLocalProducts",
|
|
1927
|
-
"returns": "JSON: `{ products: Array<{ file, title, stage, nodes, edges }> }
|
|
1943
|
+
"returns": "JSON: `{ products: Array<{ file, title, stage, nodes, edges }> }`.\n`stage` is the CANONICAL UPGProductStage (legacy values like `idea` are\ncoerced to `concept`), or `null` when unset — matching what\n`get_product_context` reports for the same product (UPG-611 / DT-MCP-3).",
|
|
1928
1944
|
"return_shape": "{ products: Array<{ file, title, stage, nodes, edges }> }",
|
|
1945
|
+
"return_notes": [
|
|
1946
|
+
"`stage` is the CANONICAL UPGProductStage (legacy values like `idea` are coerced to `concept`), or `null` when unset — matching what `get_product_context` reports for the same product (UPG-611 / DT-MCP-3)."
|
|
1947
|
+
],
|
|
1929
1948
|
"atomicity": "atomic (read-only)"
|
|
1930
1949
|
},
|
|
1931
1950
|
{
|
|
@@ -1942,7 +1961,7 @@
|
|
|
1942
1961
|
"see": [
|
|
1943
1962
|
"create_cross_product_edge"
|
|
1944
1963
|
],
|
|
1945
|
-
"source": "src/tools/workspace.ts:
|
|
1964
|
+
"source": "src/tools/workspace.ts:542",
|
|
1946
1965
|
"symbol": "listPortfolioCrossEdges",
|
|
1947
1966
|
"returns": "JSON: `{ cross_edges: UPGCrossEdge[], total, portfolio_file? }`.",
|
|
1948
1967
|
"return_shape": "{ cross_edges: UPGCrossEdge[], total, portfolio_file? }",
|
|
@@ -1969,7 +1988,7 @@
|
|
|
1969
1988
|
"create_cross_product_edge",
|
|
1970
1989
|
"get_organization"
|
|
1971
1990
|
],
|
|
1972
|
-
"source": "src/tools/workspace.ts:
|
|
1991
|
+
"source": "src/tools/workspace.ts:325",
|
|
1973
1992
|
"symbol": "listPortfolios",
|
|
1974
1993
|
"returns": "JSON: `{ portfolios: Array<{ id, title, description?,\nparent_portfolio_id?, hierarchy_model?, products? }>, total }`.",
|
|
1975
1994
|
"return_shape": "{ portfolios: Array<{ id, title, description?, parent_portfolio_id?, hierarchy_model?, products? }>, total }",
|
|
@@ -2012,7 +2031,7 @@
|
|
|
2012
2031
|
"list_cross_edge_types",
|
|
2013
2032
|
"init_workspace"
|
|
2014
2033
|
],
|
|
2015
|
-
"source": "src/tools/workspace.ts:
|
|
2034
|
+
"source": "src/tools/workspace.ts:611",
|
|
2016
2035
|
"symbol": "migrateCrossEdges",
|
|
2017
2036
|
"returns": "JSON: `{ migrated, skipped, dry_run, portfolio_file? }`.",
|
|
2018
2037
|
"return_shape": "{ migrated, skipped, dry_run, portfolio_file? }",
|
|
@@ -2046,7 +2065,7 @@
|
|
|
2046
2065
|
"list_local_products",
|
|
2047
2066
|
"init_workspace"
|
|
2048
2067
|
],
|
|
2049
|
-
"source": "src/tools/workspace.ts:
|
|
2068
|
+
"source": "src/tools/workspace.ts:116",
|
|
2050
2069
|
"symbol": "switchProduct",
|
|
2051
2070
|
"returns": "JSON: `{ message, file, product: { title, stage }, entities }`.",
|
|
2052
2071
|
"return_shape": "{ message, file, product: { title, stage }, entities }",
|
|
@@ -2094,6 +2113,51 @@
|
|
|
2094
2113
|
"return_shape": "{ type, alias_of?, domain, expected_properties, edges_out, edges_in, phases?, initial_phase?, terminal_phases?, domain_guide? }",
|
|
2095
2114
|
"atomicity": "atomic (read-only)"
|
|
2096
2115
|
},
|
|
2116
|
+
{
|
|
2117
|
+
"name": "apply_framework",
|
|
2118
|
+
"description": "Apply a framework (MoSCoW, RICE, Kano, ...) to a set of entities: creates a framework_exercise node and an `includes` edge to each entity. The per-entity result is recorded on the edge via score_entity, never on the entity node, so the same entity can sit in many exercises and any entity type can be scored. Returns { exercise_id, exercise, included, warnings }.",
|
|
2119
|
+
"domain": "spec",
|
|
2120
|
+
"inputSchema": {
|
|
2121
|
+
"type": "object",
|
|
2122
|
+
"properties": {
|
|
2123
|
+
"framework_id": {
|
|
2124
|
+
"type": "string",
|
|
2125
|
+
"description": "Required. UPGFramework.id (e.g. \"moscow\", \"rice-scoring\")."
|
|
2126
|
+
},
|
|
2127
|
+
"title": {
|
|
2128
|
+
"type": "string",
|
|
2129
|
+
"description": "Human label for the exercise (default \"<Framework> exercise\")."
|
|
2130
|
+
},
|
|
2131
|
+
"entity_ids": {
|
|
2132
|
+
"type": "array",
|
|
2133
|
+
"items": {
|
|
2134
|
+
"type": "string"
|
|
2135
|
+
},
|
|
2136
|
+
"description": "Entities to pull into the exercise (any type)."
|
|
2137
|
+
},
|
|
2138
|
+
"status": {
|
|
2139
|
+
"type": "string",
|
|
2140
|
+
"description": "Lifecycle phase: draft | active | archived (default draft)."
|
|
2141
|
+
}
|
|
2142
|
+
},
|
|
2143
|
+
"required": [
|
|
2144
|
+
"framework_id"
|
|
2145
|
+
]
|
|
2146
|
+
},
|
|
2147
|
+
"throws": [
|
|
2148
|
+
"textError on a missing/unknown framework_id."
|
|
2149
|
+
],
|
|
2150
|
+
"examples": [],
|
|
2151
|
+
"warnings": [],
|
|
2152
|
+
"see": [
|
|
2153
|
+
"score_entity"
|
|
2154
|
+
],
|
|
2155
|
+
"source": "src/tools/frameworks.ts:22",
|
|
2156
|
+
"symbol": "applyFramework",
|
|
2157
|
+
"returns": "JSON: `{ exercise_id, exercise, included: [{ edge_id, entity_id }], warnings }`.",
|
|
2158
|
+
"return_shape": "{ exercise_id, exercise, included: [{ edge_id, entity_id }], warnings }",
|
|
2159
|
+
"atomicity": "atomic."
|
|
2160
|
+
},
|
|
2097
2161
|
{
|
|
2098
2162
|
"name": "get_anti_pattern",
|
|
2099
2163
|
"description": "Return one curated anti-pattern by id (kebab-case slug, e.g. \"features-without-hypotheses\", \"personas-without-jobs\"). Includes structured condition, why-it-matters, remediation, applicable stages, severity, optional source citation. IDs are stable URL fragments.",
|
|
@@ -2127,7 +2191,7 @@
|
|
|
2127
2191
|
"inspect",
|
|
2128
2192
|
"validate_graph"
|
|
2129
2193
|
],
|
|
2130
|
-
"source": "src/tools/spec.ts:
|
|
2194
|
+
"source": "src/tools/spec.ts:1440",
|
|
2131
2195
|
"symbol": "getAntiPattern",
|
|
2132
2196
|
"returns": "JSON: `UPGCuratedAntiPattern`",
|
|
2133
2197
|
"return_notes": [
|
|
@@ -2218,7 +2282,7 @@
|
|
|
2218
2282
|
"list_anti_patterns",
|
|
2219
2283
|
"get_playbook"
|
|
2220
2284
|
],
|
|
2221
|
-
"source": "src/tools/spec.ts:
|
|
2285
|
+
"source": "src/tools/spec.ts:761",
|
|
2222
2286
|
"symbol": "getDomainGuide",
|
|
2223
2287
|
"returns": "JSON: the full `UPGDomainUsageGuide` record.",
|
|
2224
2288
|
"return_notes": [
|
|
@@ -2256,7 +2320,7 @@
|
|
|
2256
2320
|
"list_domains",
|
|
2257
2321
|
"get_domain_guide"
|
|
2258
2322
|
],
|
|
2259
|
-
"source": "src/tools/spec.ts:
|
|
2323
|
+
"source": "src/tools/spec.ts:1896",
|
|
2260
2324
|
"symbol": "getDomainRing",
|
|
2261
2325
|
"returns": "JSON: the full `UPGDomainRing` record.",
|
|
2262
2326
|
"return_notes": [
|
|
@@ -2297,7 +2361,7 @@
|
|
|
2297
2361
|
"list_edge_migrations",
|
|
2298
2362
|
"rename_edge_type"
|
|
2299
2363
|
],
|
|
2300
|
-
"source": "src/tools/spec.ts:
|
|
2364
|
+
"source": "src/tools/spec.ts:892",
|
|
2301
2365
|
"symbol": "getEdgeType",
|
|
2302
2366
|
"returns": "JSON: `{ type, forward_verb, reverse_verb, classification, source_type, target_type }`",
|
|
2303
2367
|
"return_shape": "{ type, forward_verb, reverse_verb, classification, source_type, target_type }",
|
|
@@ -2336,7 +2400,7 @@
|
|
|
2336
2400
|
"get_entity_schema",
|
|
2337
2401
|
"list_type_migrations"
|
|
2338
2402
|
],
|
|
2339
|
-
"source": "src/tools/spec.ts:
|
|
2403
|
+
"source": "src/tools/spec.ts:1355",
|
|
2340
2404
|
"symbol": "getEntityMeta",
|
|
2341
2405
|
"returns": "JSON: `EntityTypeMeta & { domain_id: string | null }`",
|
|
2342
2406
|
"return_notes": [
|
|
@@ -2377,7 +2441,7 @@
|
|
|
2377
2441
|
"get_playbook",
|
|
2378
2442
|
"get_approach"
|
|
2379
2443
|
],
|
|
2380
|
-
"source": "src/tools/spec.ts:
|
|
2444
|
+
"source": "src/tools/spec.ts:829",
|
|
2381
2445
|
"symbol": "getFramework",
|
|
2382
2446
|
"returns": "JSON: the full `UPGFramework` record.",
|
|
2383
2447
|
"return_notes": [
|
|
@@ -2418,7 +2482,7 @@
|
|
|
2418
2482
|
"get_framework",
|
|
2419
2483
|
"list_entity_types"
|
|
2420
2484
|
],
|
|
2421
|
-
"source": "src/tools/spec.ts:
|
|
2485
|
+
"source": "src/tools/spec.ts:1149",
|
|
2422
2486
|
"symbol": "getLensTool",
|
|
2423
2487
|
"returns": "JSON: `{ ...UPGLens, visible_types: string[] }`",
|
|
2424
2488
|
"return_shape": "{...UPGLens, visible_types: string[] }",
|
|
@@ -2454,7 +2518,7 @@
|
|
|
2454
2518
|
"get_entity_meta",
|
|
2455
2519
|
"get_entity_schema"
|
|
2456
2520
|
],
|
|
2457
|
-
"source": "src/tools/spec.ts:
|
|
2521
|
+
"source": "src/tools/spec.ts:1766",
|
|
2458
2522
|
"symbol": "getLifecycle",
|
|
2459
2523
|
"returns": "JSON: the full `UPGLifecycle` record, or a descriptive message.",
|
|
2460
2524
|
"return_notes": [
|
|
@@ -2536,7 +2600,7 @@
|
|
|
2536
2600
|
"get_playbook",
|
|
2537
2601
|
"list_lenses"
|
|
2538
2602
|
],
|
|
2539
|
-
"source": "src/tools/spec.ts:
|
|
2603
|
+
"source": "src/tools/spec.ts:951",
|
|
2540
2604
|
"symbol": "getRegion",
|
|
2541
2605
|
"returns": "JSON: the full `UPGRegion` record.",
|
|
2542
2606
|
"return_notes": [
|
|
@@ -2577,7 +2641,7 @@
|
|
|
2577
2641
|
"get_entity_meta",
|
|
2578
2642
|
"list_entity_types"
|
|
2579
2643
|
],
|
|
2580
|
-
"source": "src/tools/spec.ts:
|
|
2644
|
+
"source": "src/tools/spec.ts:973",
|
|
2581
2645
|
"symbol": "getRegionForEntity",
|
|
2582
2646
|
"returns": "JSON: the full `UPGRegion` record.",
|
|
2583
2647
|
"return_notes": [
|
|
@@ -2608,7 +2672,7 @@
|
|
|
2608
2672
|
"list_scales",
|
|
2609
2673
|
"get_entity_schema"
|
|
2610
2674
|
],
|
|
2611
|
-
"source": "src/tools/spec.ts:
|
|
2675
|
+
"source": "src/tools/spec.ts:1812",
|
|
2612
2676
|
"symbol": "getScale",
|
|
2613
2677
|
"returns": "JSON: the full `UPGScaleDefinition` record including all points.",
|
|
2614
2678
|
"return_notes": [
|
|
@@ -2639,7 +2703,7 @@
|
|
|
2639
2703
|
"list_edge_types",
|
|
2640
2704
|
"list_regions"
|
|
2641
2705
|
],
|
|
2642
|
-
"source": "src/tools/spec.ts:
|
|
2706
|
+
"source": "src/tools/spec.ts:1001",
|
|
2643
2707
|
"symbol": "getSpecVersion",
|
|
2644
2708
|
"returns": "JSON: `{ upg_version, markdown_format_version, entity_count, edge_count, domain_count, region_count }`",
|
|
2645
2709
|
"return_shape": "{ upg_version, markdown_format_version, entity_count, edge_count, domain_count, region_count }",
|
|
@@ -2685,7 +2749,7 @@
|
|
|
2685
2749
|
"get_entity_meta",
|
|
2686
2750
|
"list_frameworks"
|
|
2687
2751
|
],
|
|
2688
|
-
"source": "src/tools/spec.ts:
|
|
2752
|
+
"source": "src/tools/spec.ts:1217",
|
|
2689
2753
|
"symbol": "getTypeLabel",
|
|
2690
2754
|
"returns": "JSON: `{ ...UPGTypeLabel, resolved_label: string }`",
|
|
2691
2755
|
"return_shape": "{...UPGTypeLabel, resolved_label: string }",
|
|
@@ -2724,7 +2788,7 @@
|
|
|
2724
2788
|
"get_entity_meta",
|
|
2725
2789
|
"create_node"
|
|
2726
2790
|
],
|
|
2727
|
-
"source": "src/tools/spec.ts:
|
|
2791
|
+
"source": "src/tools/spec.ts:1247",
|
|
2728
2792
|
"symbol": "getValidChildrenTool",
|
|
2729
2793
|
"returns": "JSON: `{ parent_type, valid_children: string[] }`",
|
|
2730
2794
|
"return_shape": "{ parent_type, valid_children: string[] }",
|
|
@@ -2732,7 +2796,7 @@
|
|
|
2732
2796
|
},
|
|
2733
2797
|
{
|
|
2734
2798
|
"name": "inspect",
|
|
2735
|
-
"description": "[LLM-mediated] This tool returns a routing envelope, not computed results. For user-facing inspection, invoke the /upg-
|
|
2799
|
+
"description": "[LLM-mediated] This tool returns a routing envelope, not computed results. For user-facing inspection, invoke the /upg-show-entity skill instead of calling this tool directly. Inspect approach: path of arrival to \"what's broken?\". Returns the Inspect record + invocation params in the family-resemblance envelope. The LLM consumes `signature_hint` and emits `{ violations: [{ severity, kind, entity_id, description, fix_hint }] }` against `UPG_ANTI_PATTERNS` + the live graph. Optional `region` or `entities[]` scope the audit.",
|
|
2736
2800
|
"domain": "spec",
|
|
2737
2801
|
"inputSchema": {
|
|
2738
2802
|
"type": "object",
|
|
@@ -2762,7 +2826,7 @@
|
|
|
2762
2826
|
"plan",
|
|
2763
2827
|
"reflect"
|
|
2764
2828
|
],
|
|
2765
|
-
"source": "src/tools/spec.ts:
|
|
2829
|
+
"source": "src/tools/spec.ts:468",
|
|
2766
2830
|
"symbol": "inspect",
|
|
2767
2831
|
"returns": "JSON envelope: `{ approach_id, scope, generated_at, approach,\nparams, violations, summary, execution_mode: \"execution_v0_4_0\" }`",
|
|
2768
2832
|
"return_notes": [
|
|
@@ -2827,7 +2891,7 @@
|
|
|
2827
2891
|
"inspect",
|
|
2828
2892
|
"get_domain_guide"
|
|
2829
2893
|
],
|
|
2830
|
-
"source": "src/tools/spec.ts:
|
|
2894
|
+
"source": "src/tools/spec.ts:1398",
|
|
2831
2895
|
"symbol": "listAntiPatterns",
|
|
2832
2896
|
"returns": "JSON: `{ total, count, next_cursor?, anti_patterns: UPGCuratedAntiPattern[] }`",
|
|
2833
2897
|
"return_shape": "{ total, count, next_cursor?, anti_patterns: UPGCuratedAntiPattern[] }",
|
|
@@ -2928,7 +2992,7 @@
|
|
|
2928
2992
|
"list_domains",
|
|
2929
2993
|
"list_anti_patterns"
|
|
2930
2994
|
],
|
|
2931
|
-
"source": "src/tools/spec.ts:
|
|
2995
|
+
"source": "src/tools/spec.ts:1487",
|
|
2932
2996
|
"symbol": "listBenchmarks",
|
|
2933
2997
|
"returns": "JSON: `{ kind, total, count, benchmarks: ... }`",
|
|
2934
2998
|
"return_shape": "{ kind, total, count, benchmarks:... }",
|
|
@@ -2956,7 +3020,7 @@
|
|
|
2956
3020
|
"list_portfolio_cross_edges",
|
|
2957
3021
|
"migrate_cross_edges"
|
|
2958
3022
|
],
|
|
2959
|
-
"source": "src/tools/spec.ts:
|
|
3023
|
+
"source": "src/tools/spec.ts:1087",
|
|
2960
3024
|
"symbol": "listCrossEdgeTypes",
|
|
2961
3025
|
"returns": "JSON: `{ count, types: readonly UPGCrossEdgeType[] }`",
|
|
2962
3026
|
"return_shape": "{ count, types: readonly UPGCrossEdgeType[] }",
|
|
@@ -2984,7 +3048,7 @@
|
|
|
2984
3048
|
"list_domains",
|
|
2985
3049
|
"get_domain_guide"
|
|
2986
3050
|
],
|
|
2987
|
-
"source": "src/tools/spec.ts:
|
|
3051
|
+
"source": "src/tools/spec.ts:1875",
|
|
2988
3052
|
"symbol": "listDomainRings",
|
|
2989
3053
|
"returns": "JSON: `{ rings: UPGDomainRing[], total: number }`",
|
|
2990
3054
|
"return_shape": "{ rings: UPGDomainRing[], total: number }",
|
|
@@ -3019,7 +3083,7 @@
|
|
|
3019
3083
|
"list_regions",
|
|
3020
3084
|
"list_entity_types"
|
|
3021
3085
|
],
|
|
3022
|
-
"source": "src/tools/spec.ts:
|
|
3086
|
+
"source": "src/tools/spec.ts:726",
|
|
3023
3087
|
"symbol": "listDomains",
|
|
3024
3088
|
"returns": "JSON: `{ count, domains: Array<{ domain_id, anchor_entity, creation_sequence } | { domain_id, label, description, types, has_guide }> }`",
|
|
3025
3089
|
"return_shape": "{ count, domains: Array<{ domain_id, anchor_entity, creation_sequence } | { domain_id, label, description, types, has_guide }> }",
|
|
@@ -3054,7 +3118,7 @@
|
|
|
3054
3118
|
"list_edge_types",
|
|
3055
3119
|
"validate_graph"
|
|
3056
3120
|
],
|
|
3057
|
-
"source": "src/tools/spec.ts:
|
|
3121
|
+
"source": "src/tools/spec.ts:1659",
|
|
3058
3122
|
"symbol": "listEdgeMigrations",
|
|
3059
3123
|
"returns": "JSON: `{ migrations: [{ kind, from, to?, since }], total: number }`",
|
|
3060
3124
|
"return_shape": "{ migrations: [{ kind, from, to?, since }], total: number }",
|
|
@@ -3093,7 +3157,7 @@
|
|
|
3093
3157
|
"list_edge_migrations",
|
|
3094
3158
|
"create_edge"
|
|
3095
3159
|
],
|
|
3096
|
-
"source": "src/tools/spec.ts:
|
|
3160
|
+
"source": "src/tools/spec.ts:873",
|
|
3097
3161
|
"symbol": "listEdgeTypes",
|
|
3098
3162
|
"returns": "JSON: `{ count, edges: Array<{ type, forward_verb, reverse_verb, classification, source_type, target_type }> }`",
|
|
3099
3163
|
"return_shape": "{ count, edges: Array<{ type, forward_verb, reverse_verb, classification, source_type, target_type }> }",
|
|
@@ -3151,7 +3215,7 @@
|
|
|
3151
3215
|
"list_type_migrations",
|
|
3152
3216
|
"list_domains"
|
|
3153
3217
|
],
|
|
3154
|
-
"source": "src/tools/spec.ts:
|
|
3218
|
+
"source": "src/tools/spec.ts:1299",
|
|
3155
3219
|
"symbol": "listEntityTypes",
|
|
3156
3220
|
"returns": "JSON: `{ total, count, next_cursor?, types: Array<EntityTypeMeta & { domain_id: string | null }> }`",
|
|
3157
3221
|
"return_shape": "{ total, count, next_cursor?, types: Array<EntityTypeMeta & { domain_id: string | null }> }",
|
|
@@ -3178,7 +3242,7 @@
|
|
|
3178
3242
|
"list_frameworks",
|
|
3179
3243
|
"list_framework_structure_patterns"
|
|
3180
3244
|
],
|
|
3181
|
-
"source": "src/tools/spec.ts:
|
|
3245
|
+
"source": "src/tools/spec.ts:1831",
|
|
3182
3246
|
"symbol": "listFrameworkCategories",
|
|
3183
3247
|
"returns": "JSON: `{ categories: string[], total: number }`",
|
|
3184
3248
|
"return_shape": "{ categories: string[], total: number }",
|
|
@@ -3206,7 +3270,7 @@
|
|
|
3206
3270
|
"list_framework_categories",
|
|
3207
3271
|
"get_framework"
|
|
3208
3272
|
],
|
|
3209
|
-
"source": "src/tools/spec.ts:
|
|
3273
|
+
"source": "src/tools/spec.ts:1852",
|
|
3210
3274
|
"symbol": "listFrameworkStructurePatterns",
|
|
3211
3275
|
"returns": "JSON: `{ patterns: string[], total: number }`",
|
|
3212
3276
|
"return_shape": "{ patterns: string[], total: number }",
|
|
@@ -3249,7 +3313,7 @@
|
|
|
3249
3313
|
"prioritise",
|
|
3250
3314
|
"list_approaches"
|
|
3251
3315
|
],
|
|
3252
|
-
"source": "src/tools/spec.ts:
|
|
3316
|
+
"source": "src/tools/spec.ts:793",
|
|
3253
3317
|
"symbol": "listFrameworks",
|
|
3254
3318
|
"returns": "JSON: `{ total, count, next_cursor?, frameworks: UPGFramework[] }`",
|
|
3255
3319
|
"return_shape": "{ total, count, next_cursor?, frameworks: UPGFramework[] }",
|
|
@@ -3278,7 +3342,7 @@
|
|
|
3278
3342
|
"list_playbooks",
|
|
3279
3343
|
"list_frameworks"
|
|
3280
3344
|
],
|
|
3281
|
-
"source": "src/tools/spec.ts:
|
|
3345
|
+
"source": "src/tools/spec.ts:1116",
|
|
3282
3346
|
"symbol": "listLenses",
|
|
3283
3347
|
"returns": "JSON: `{ count, lenses: Array<{ id, name, description, icon, audience, perspective, framework_id?, playbook_id?, visible_domain_count, intelligence_prompt_count }> }`",
|
|
3284
3348
|
"return_shape": "{ count, lenses: Array<{ id, name, description, icon, audience, perspective, framework_id?, playbook_id?, visible_domain_count, intelligence_prompt_count }> }",
|
|
@@ -3315,7 +3379,7 @@
|
|
|
3315
3379
|
"list_entity_types",
|
|
3316
3380
|
"get_entity_meta"
|
|
3317
3381
|
],
|
|
3318
|
-
"source": "src/tools/spec.ts:
|
|
3382
|
+
"source": "src/tools/spec.ts:1724",
|
|
3319
3383
|
"symbol": "listLifecycles",
|
|
3320
3384
|
"returns": "JSON: `{ lifecycles, total, free_types: string[], planned_types: string[] }`",
|
|
3321
3385
|
"return_shape": "{ lifecycles, total, free_types: string[], planned_types: string[] }",
|
|
@@ -3386,7 +3450,7 @@
|
|
|
3386
3450
|
"list_domain_rings",
|
|
3387
3451
|
"create_product"
|
|
3388
3452
|
],
|
|
3389
|
-
"source": "src/tools/spec.ts:
|
|
3453
|
+
"source": "src/tools/spec.ts:1595",
|
|
3390
3454
|
"symbol": "listProductStages",
|
|
3391
3455
|
"returns": "JSON: `{ count, stages: readonly UPGProductStage[] }`",
|
|
3392
3456
|
"return_shape": "{ count, stages: readonly UPGProductStage[] }",
|
|
@@ -3415,7 +3479,7 @@
|
|
|
3415
3479
|
"list_domains",
|
|
3416
3480
|
"list_playbooks"
|
|
3417
3481
|
],
|
|
3418
|
-
"source": "src/tools/spec.ts:
|
|
3482
|
+
"source": "src/tools/spec.ts:919",
|
|
3419
3483
|
"symbol": "listRegions",
|
|
3420
3484
|
"returns": "JSON: `{ count, regions: Array<{ id, label, order, shape, mental_model, anchor_type, composes_atomic_domains, entity_count, intra_edge_count, boundary_edge_count }> }`",
|
|
3421
3485
|
"return_shape": "{ count, regions: Array<{ id, label, order, shape, mental_model, anchor_type, composes_atomic_domains, entity_count, intra_edge_count, boundary_edge_count }> }",
|
|
@@ -3442,7 +3506,7 @@
|
|
|
3442
3506
|
"get_scale",
|
|
3443
3507
|
"get_entity_schema"
|
|
3444
3508
|
],
|
|
3445
|
-
"source": "src/tools/spec.ts:
|
|
3509
|
+
"source": "src/tools/spec.ts:1797",
|
|
3446
3510
|
"symbol": "listScales",
|
|
3447
3511
|
"returns": "JSON: `{ scales: UPGScaleDefinition[], total: number }`",
|
|
3448
3512
|
"return_shape": "{ scales: UPGScaleDefinition[], total: number }",
|
|
@@ -3471,7 +3535,7 @@
|
|
|
3471
3535
|
"migrate_type",
|
|
3472
3536
|
"validate_graph"
|
|
3473
3537
|
],
|
|
3474
|
-
"source": "src/tools/spec.ts:
|
|
3538
|
+
"source": "src/tools/spec.ts:1696",
|
|
3475
3539
|
"symbol": "listSplitMigrations",
|
|
3476
3540
|
"returns": "JSON: `{ splits: [...], total: number }`",
|
|
3477
3541
|
"return_shape": "{ splits: [...], total: number }",
|
|
@@ -3508,7 +3572,7 @@
|
|
|
3508
3572
|
"list_entity_types",
|
|
3509
3573
|
"get_entity_meta"
|
|
3510
3574
|
],
|
|
3511
|
-
"source": "src/tools/spec.ts:
|
|
3575
|
+
"source": "src/tools/spec.ts:1182",
|
|
3512
3576
|
"symbol": "listTypeLabels",
|
|
3513
3577
|
"returns": "JSON: `{ total, count, next_cursor?, labels: UPGTypeLabel[] }`",
|
|
3514
3578
|
"return_shape": "{ total, count, next_cursor?, labels: UPGTypeLabel[] }",
|
|
@@ -3544,7 +3608,7 @@
|
|
|
3544
3608
|
"validate_graph",
|
|
3545
3609
|
"list_entity_types"
|
|
3546
3610
|
],
|
|
3547
|
-
"source": "src/tools/spec.ts:
|
|
3611
|
+
"source": "src/tools/spec.ts:1628",
|
|
3548
3612
|
"symbol": "listTypeMigrations",
|
|
3549
3613
|
"returns": "JSON: `{ migrations: [{ from, to, since }], total: number }`",
|
|
3550
3614
|
"return_shape": "{ migrations: [{ from, to, since }], total: number }",
|
|
@@ -3552,14 +3616,18 @@
|
|
|
3552
3616
|
},
|
|
3553
3617
|
{
|
|
3554
3618
|
"name": "plan",
|
|
3555
|
-
"description": "Plan approach: path of arrival to \"what should I build next?\". Returns the Plan record + invocation params wrapped in `{ approach_id, scope, generated_at, approach, params }`. The LLM consumes `signature_hint` and synthesises `{ missing_entities, coverage_score }` against the live graph. Optional `region` narrows scope.",
|
|
3619
|
+
"description": "Plan approach: path of arrival to \"what should I build next?\". Returns the Plan record + invocation params wrapped in `{ approach_id, scope, generated_at, approach, params }`. The LLM consumes `signature_hint` and synthesises `{ missing_entities, coverage_score }` against the live graph. Optional `region` narrows scope; omit `region` to scope to the product's ACTIVE regions; pass `exhaustive:true` to score the full type universe (UPG-601).",
|
|
3556
3620
|
"domain": "spec",
|
|
3557
3621
|
"inputSchema": {
|
|
3558
3622
|
"type": "object",
|
|
3559
3623
|
"properties": {
|
|
3560
3624
|
"region": {
|
|
3561
3625
|
"type": "string",
|
|
3562
|
-
"description": "Optional UPGRegionId. Narrows planning scope to a single region (e.g. \"users_needs\", \"business_gtm_growth\"). Omit
|
|
3626
|
+
"description": "Optional UPGRegionId or atomic-domain id. Narrows planning scope to a single region (e.g. \"users_needs\", \"business_gtm_growth\"). Omit to scope to the product's active regions."
|
|
3627
|
+
},
|
|
3628
|
+
"exhaustive": {
|
|
3629
|
+
"type": "boolean",
|
|
3630
|
+
"description": "If true, score against the entire 312-type universe (every domain creation sequence). Off by default; whole-universe gap scoring is noisy for a focused product. Only applies when `region` is omitted."
|
|
3563
3631
|
}
|
|
3564
3632
|
}
|
|
3565
3633
|
},
|
|
@@ -3599,15 +3667,18 @@
|
|
|
3599
3667
|
"items": {
|
|
3600
3668
|
"type": "string"
|
|
3601
3669
|
},
|
|
3602
|
-
"description": "
|
|
3670
|
+
"description": "entity_id[] to rank. Optional when exercise_id is given (the exercise supplies them)."
|
|
3603
3671
|
},
|
|
3604
3672
|
"framework_id": {
|
|
3605
3673
|
"type": "string",
|
|
3606
3674
|
"description": "Required. UPGFramework.id of the scoring lens (e.g. \"rice-scoring\", \"ice-scoring\", \"kano-model\", \"cost-of-delay\", \"wsjf\")."
|
|
3675
|
+
},
|
|
3676
|
+
"exercise_id": {
|
|
3677
|
+
"type": "string",
|
|
3678
|
+
"description": "Optional (0.8.4). A framework_exercise id: reads each candidate's scoring inputs from its includes-edge properties instead of node.properties, and bypasses the target-type guard so any entity type can be scored."
|
|
3607
3679
|
}
|
|
3608
3680
|
},
|
|
3609
3681
|
"required": [
|
|
3610
|
-
"candidates",
|
|
3611
3682
|
"framework_id"
|
|
3612
3683
|
]
|
|
3613
3684
|
},
|
|
@@ -3623,7 +3694,7 @@
|
|
|
3623
3694
|
"plan",
|
|
3624
3695
|
"trace"
|
|
3625
3696
|
],
|
|
3626
|
-
"source": "src/tools/spec.ts:
|
|
3697
|
+
"source": "src/tools/spec.ts:527",
|
|
3627
3698
|
"symbol": "prioritise",
|
|
3628
3699
|
"returns": "JSON envelope: `{ approach_id, scope, generated_at, approach,\nparams, framework_resolved, ranked?, required_properties?,\nhint?, execution_mode }`. Execution mode is `\"execution_v0_4_0\"` when\nthe framework has an expression, `\"definition_lookup_v0_4_0\"` otherwise.",
|
|
3629
3700
|
"return_notes": [
|
|
@@ -3675,7 +3746,7 @@
|
|
|
3675
3746
|
"plan",
|
|
3676
3747
|
"get_anti_pattern"
|
|
3677
3748
|
],
|
|
3678
|
-
"source": "src/tools/spec.ts:
|
|
3749
|
+
"source": "src/tools/spec.ts:676",
|
|
3679
3750
|
"symbol": "reflect",
|
|
3680
3751
|
"returns": "JSON envelope: `{ approach_id, scope, generated_at, approach,\nparams, prompts, execution_mode: \"execution_v0_4_0\" }`",
|
|
3681
3752
|
"return_notes": [
|
|
@@ -3723,12 +3794,56 @@
|
|
|
3723
3794
|
"create_edge",
|
|
3724
3795
|
"trace"
|
|
3725
3796
|
],
|
|
3726
|
-
"source": "src/tools/spec.ts:
|
|
3797
|
+
"source": "src/tools/spec.ts:1055",
|
|
3727
3798
|
"symbol": "resolveEdgeForPair",
|
|
3728
3799
|
"returns": "JSON: `{ source_type, target_type, edge_type: string | null,\nanchor_hint?, alternate_anchors?, adjacent_edges? }`",
|
|
3729
3800
|
"return_shape": "{ source_type, target_type, edge_type: string | null, anchor_hint?, alternate_anchors?, adjacent_edges? }",
|
|
3730
3801
|
"atomicity": "atomic (read-only)"
|
|
3731
3802
|
},
|
|
3803
|
+
{
|
|
3804
|
+
"name": "score_entity",
|
|
3805
|
+
"description": "Record a framework's result for one entity on the exercise's includes edge (a MoSCoW bucket, a RICE score, a canvas slot). Auto-includes the entity if not already in scope. Merges into existing edge properties unless replace is set. Returns { edge, warnings }.",
|
|
3806
|
+
"domain": "spec",
|
|
3807
|
+
"inputSchema": {
|
|
3808
|
+
"type": "object",
|
|
3809
|
+
"properties": {
|
|
3810
|
+
"exercise_id": {
|
|
3811
|
+
"type": "string",
|
|
3812
|
+
"description": "Required. The framework_exercise id."
|
|
3813
|
+
},
|
|
3814
|
+
"entity_id": {
|
|
3815
|
+
"type": "string",
|
|
3816
|
+
"description": "Required. The entity being scored."
|
|
3817
|
+
},
|
|
3818
|
+
"values": {
|
|
3819
|
+
"type": "object",
|
|
3820
|
+
"description": "Required. The result as { input: value }, e.g. { \"moscow\": \"must\" } or { \"reach\": 800, \"impact\": 3 }."
|
|
3821
|
+
},
|
|
3822
|
+
"replace": {
|
|
3823
|
+
"type": "boolean",
|
|
3824
|
+
"description": "Replace the edge properties instead of merging (default false)."
|
|
3825
|
+
}
|
|
3826
|
+
},
|
|
3827
|
+
"required": [
|
|
3828
|
+
"exercise_id",
|
|
3829
|
+
"entity_id",
|
|
3830
|
+
"values"
|
|
3831
|
+
]
|
|
3832
|
+
},
|
|
3833
|
+
"throws": [
|
|
3834
|
+
"textError when the exercise/entity is missing or the node is not a\nframework_exercise."
|
|
3835
|
+
],
|
|
3836
|
+
"examples": [],
|
|
3837
|
+
"warnings": [],
|
|
3838
|
+
"see": [
|
|
3839
|
+
"apply_framework"
|
|
3840
|
+
],
|
|
3841
|
+
"source": "src/tools/frameworks.ts:63",
|
|
3842
|
+
"symbol": "scoreEntity",
|
|
3843
|
+
"returns": "JSON: `{ edge, warnings }`.",
|
|
3844
|
+
"return_shape": "{ edge, warnings }",
|
|
3845
|
+
"atomicity": "atomic."
|
|
3846
|
+
},
|
|
3732
3847
|
{
|
|
3733
3848
|
"name": "trace",
|
|
3734
3849
|
"description": "[LLM-mediated] This tool returns a routing envelope, not computed results. For user-facing tracing, invoke the /upg-trace skill instead of calling this tool directly. Trace approach: path of arrival to \"walk a meaningful path through existing graph\". Returns the Trace record + invocation params in the family-resemblance envelope. The LLM uses `anchor` + `path` to compose `query()` calls and emits `{ trail: [{ depth, entity_id, edge_type_in }], reached: entity_id[] }`. `path` is type-shorthand: `[\"persona\",\"job\",\"feature\"]` walks persona→job→feature using the canonical edge per pair (via `resolve_edge_for_pair`). Optional `edges_override` selects non-canonical edges per hop; `null` per element means \"use canonical\".",
|
|
@@ -3782,7 +3897,7 @@
|
|
|
3782
3897
|
"plan",
|
|
3783
3898
|
"prioritise"
|
|
3784
3899
|
],
|
|
3785
|
-
"source": "src/tools/spec.ts:
|
|
3900
|
+
"source": "src/tools/spec.ts:613",
|
|
3786
3901
|
"symbol": "trace",
|
|
3787
3902
|
"returns": "JSON envelope: `{ approach_id, scope, generated_at, approach,\nparams, trail, reached, error?, halted_at_depth?,\nexecution_mode: \"execution_v0_4_0\" }`",
|
|
3788
3903
|
"return_notes": [
|
|
@@ -3999,7 +4114,7 @@
|
|
|
3999
4114
|
],
|
|
4000
4115
|
"warnings": [],
|
|
4001
4116
|
"see": [],
|
|
4002
|
-
"source": "src/tools/skills.ts:
|
|
4117
|
+
"source": "src/tools/skills.ts:207",
|
|
4003
4118
|
"symbol": "skillAudit",
|
|
4004
4119
|
"returns": "`{ skills: SkillAuditRecord[] }`",
|
|
4005
4120
|
"return_shape": "{ skills: SkillAuditRecord[] }",
|