@unified-product-graph/core 0.17.8 → 0.18.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 +56 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +119 -2
- package/dist/index.d.ts +119 -2
- package/dist/index.js +51 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -103,6 +103,7 @@ __export(index_exports, {
|
|
|
103
103
|
UPG_PLAYBOOKS: () => UPG_PLAYBOOKS,
|
|
104
104
|
UPG_POLYMORPHIC_EDGE_KEYS: () => UPG_POLYMORPHIC_EDGE_KEYS,
|
|
105
105
|
UPG_PORTFOLIO_KINDS: () => UPG_PORTFOLIO_KINDS,
|
|
106
|
+
UPG_PORTFOLIO_SHARED_TYPES: () => UPG_PORTFOLIO_SHARED_TYPES,
|
|
106
107
|
UPG_PRODUCT_STAGES: () => UPG_PRODUCT_STAGES,
|
|
107
108
|
UPG_PRODUCT_STAGE_COERCION_MAP: () => UPG_PRODUCT_STAGE_COERCION_MAP,
|
|
108
109
|
UPG_PROPERTY_MIGRATIONS: () => UPG_PROPERTY_MIGRATIONS,
|
|
@@ -141,6 +142,7 @@ __export(index_exports, {
|
|
|
141
142
|
concernEvaluatedFor: () => concernEvaluatedFor,
|
|
142
143
|
concernFor: () => concernFor,
|
|
143
144
|
concernGatesFor: () => concernGatesFor,
|
|
145
|
+
crossProductScope: () => crossProductScope,
|
|
144
146
|
describeTreePattern: () => describeTreePattern,
|
|
145
147
|
edgeCarriesProperties: () => edgeCarriesProperties,
|
|
146
148
|
evaluateAntiPatterns: () => evaluateAntiPatterns,
|
|
@@ -202,7 +204,9 @@ __export(index_exports, {
|
|
|
202
204
|
isCanonical: () => isCanonical,
|
|
203
205
|
isCanonicalProductStage: () => isCanonicalProductStage,
|
|
204
206
|
isContainmentFreeType: () => isContainmentFreeType,
|
|
207
|
+
isCrossCapable: () => isCrossCapable,
|
|
205
208
|
isCrossProductEligible: () => isCrossProductEligible,
|
|
209
|
+
isCuratedCrossEligible: () => isCuratedCrossEligible,
|
|
206
210
|
isDeliberateOnlyEdge: () => isDeliberateOnlyEdge,
|
|
207
211
|
isDeprecatedType: () => isDeprecatedType,
|
|
208
212
|
isDomainGuideStep: () => isDomainGuideStep,
|
|
@@ -213,6 +217,7 @@ __export(index_exports, {
|
|
|
213
217
|
isLifecyclePlannedType: () => isLifecyclePlannedType,
|
|
214
218
|
isPolymorphicEdge: () => isPolymorphicEdge,
|
|
215
219
|
isPortfolio: () => isPortfolio,
|
|
220
|
+
isPortfolioSharedType: () => isPortfolioSharedType,
|
|
216
221
|
isRecordEntity: () => isRecordEntity,
|
|
217
222
|
isRegisteredPolymorphicEdge: () => isRegisteredPolymorphicEdge,
|
|
218
223
|
isRuntimeStateShapedProperty: () => isRuntimeStateShapedProperty,
|
|
@@ -766,27 +771,27 @@ function getDomainIdForType(entityType) {
|
|
|
766
771
|
// src/registry/entity-meta.ts
|
|
767
772
|
var UPG_ENTITY_META = [
|
|
768
773
|
// Foundations (0.9.12): shared specifications + the primitives they define.
|
|
769
|
-
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12" },
|
|
770
|
-
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12" },
|
|
771
|
-
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6" },
|
|
772
|
-
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6" },
|
|
774
|
+
{ name: "specification", type_id: "ent_352", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
775
|
+
{ name: "primitive", type_id: "ent_353", maturity: "proposed", since: "0.9.12", portfolio_shared: true },
|
|
776
|
+
{ name: "operating_lifecycle", type_id: "ent_355", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
777
|
+
{ name: "operating_stage", type_id: "ent_356", maturity: "proposed", since: "0.11.6", portfolio_shared: true },
|
|
773
778
|
// ── Strategic ──
|
|
774
779
|
{ name: "product", type_id: "ent_001", maturity: "stable", since: "0.1.0" },
|
|
775
|
-
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0" },
|
|
780
|
+
{ name: "outcome", type_id: "ent_002", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
776
781
|
{ name: "kpi", type_id: "ent_003", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "metric" },
|
|
777
|
-
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0" },
|
|
778
|
-
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0" },
|
|
779
|
-
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0" },
|
|
782
|
+
{ name: "objective", type_id: "ent_004", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
783
|
+
{ name: "key_result", type_id: "ent_005", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
784
|
+
{ name: "metric", type_id: "ent_006", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
780
785
|
// F7 (UPG-673): graduated proposed → stable at v0.9.x — proposed since 0.2.2,
|
|
781
786
|
// the metric-quality assessment artefact is settled with no open restructure.
|
|
782
787
|
{ name: "metric_quality_assessment", type_id: "ent_339", maturity: "stable", since: "0.2.2" },
|
|
783
|
-
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0" },
|
|
784
|
-
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0" },
|
|
785
|
-
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0" },
|
|
786
|
-
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0" },
|
|
787
|
-
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0" },
|
|
788
|
+
{ name: "vision", type_id: "ent_007", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
789
|
+
{ name: "mission", type_id: "ent_008", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
790
|
+
{ name: "strategic_theme", type_id: "ent_009", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
791
|
+
{ name: "initiative", type_id: "ent_010", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
792
|
+
{ name: "capability", type_id: "ent_011", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
788
793
|
{ name: "value_stream", type_id: "ent_012", maturity: "stable", since: "0.1.0" },
|
|
789
|
-
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0" },
|
|
794
|
+
{ name: "strategic_pillar", type_id: "ent_013", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
790
795
|
{ name: "assumption", type_id: "ent_014", maturity: "stable", since: "0.1.0" },
|
|
791
796
|
{ name: "decision", type_id: "ent_015", maturity: "stable", since: "0.1.0" },
|
|
792
797
|
{ name: "constraint", type_id: "ent_348", maturity: "stable", since: "0.4.3" },
|
|
@@ -842,18 +847,18 @@ var UPG_ENTITY_META = [
|
|
|
842
847
|
{ name: "evidence", type_id: "ent_031", maturity: "stable", since: "0.1.0" },
|
|
843
848
|
{ name: "research_plan", type_id: "ent_032", maturity: "stable", since: "0.1.0" },
|
|
844
849
|
// ── Market Intelligence ──
|
|
845
|
-
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0" },
|
|
846
|
-
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0" },
|
|
847
|
-
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0" },
|
|
850
|
+
{ name: "competitor", type_id: "ent_033", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
851
|
+
{ name: "competitor_feature", type_id: "ent_034", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
852
|
+
{ name: "competitor_signal", type_id: "ent_354", maturity: "proposed", since: "0.10.0", portfolio_shared: true },
|
|
848
853
|
{ name: "market_trend", type_id: "ent_035", maturity: "stable", since: "0.1.0" },
|
|
849
|
-
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0" },
|
|
854
|
+
{ name: "market_segment", type_id: "ent_036", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
850
855
|
{ name: "competitive_analysis", type_id: "ent_037", maturity: "stable", since: "0.1.0" },
|
|
851
856
|
// Classification taxonomy hosted by competitive_analysis.
|
|
852
857
|
// F7 (UPG-673): graduated proposed → stable at v0.9.x — two minor releases
|
|
853
858
|
// stable since 0.4.0, the taxonomy-axis/value pair backs the competitive-
|
|
854
859
|
// analysis classification spine with no open rename/restructure ticket.
|
|
855
|
-
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0" },
|
|
856
|
-
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0" },
|
|
860
|
+
{ name: "classification_axis", type_id: "ent_346", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
861
|
+
{ name: "classification_value", type_id: "ent_347", maturity: "stable", since: "0.4.0", portfolio_shared: true },
|
|
857
862
|
// ── UX Research ──
|
|
858
863
|
{ name: "research_study", type_id: "ent_038", maturity: "stable", since: "0.1.0" },
|
|
859
864
|
{ name: "research_insight", type_id: "ent_039", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.1.0", replacement: "insight" },
|
|
@@ -875,9 +880,9 @@ var UPG_ENTITY_META = [
|
|
|
875
880
|
{ name: "how_might_we", type_id: "ent_333", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "design_question" },
|
|
876
881
|
{ name: "design_concept", type_id: "ent_054", maturity: "stable", since: "0.1.0" },
|
|
877
882
|
{ name: "prototype", type_id: "ent_055", maturity: "stable", since: "0.1.0" },
|
|
878
|
-
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0" },
|
|
883
|
+
{ name: "design_component", type_id: "ent_056", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
879
884
|
{ name: "design_token", type_id: "ent_057", maturity: "stable", since: "0.1.0" },
|
|
880
|
-
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0" },
|
|
885
|
+
{ name: "brand_identity", type_id: "ent_058", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
881
886
|
{ name: "brand_colour", type_id: "ent_059", maturity: "stable", since: "0.1.0" },
|
|
882
887
|
{ name: "brand_typography", type_id: "ent_060", maturity: "stable", since: "0.1.0" },
|
|
883
888
|
{ name: "brand_voice", type_id: "ent_061", maturity: "stable", since: "0.1.0" },
|
|
@@ -886,7 +891,7 @@ var UPG_ENTITY_META = [
|
|
|
886
891
|
{ name: "design_guideline", type_id: "ent_064", maturity: "stable", since: "0.1.0" },
|
|
887
892
|
{ name: "annotation", type_id: "ent_065", maturity: "stable", since: "0.1.0" },
|
|
888
893
|
{ name: "interaction_spec", type_id: "ent_066", maturity: "stable", since: "0.1.0" },
|
|
889
|
-
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0" },
|
|
894
|
+
{ name: "design_system", type_id: "ent_067", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
890
895
|
{ name: "user_flow", type_id: "ent_068", maturity: "stable", since: "0.1.0" },
|
|
891
896
|
{ name: "screen", type_id: "ent_069", maturity: "stable", since: "0.1.0" },
|
|
892
897
|
{ name: "screen_state", type_id: "ent_070", maturity: "stable", since: "0.1.0" },
|
|
@@ -1005,15 +1010,15 @@ var UPG_ENTITY_META = [
|
|
|
1005
1010
|
{ name: "rebuttal", type_id: "ent_140", maturity: "stable", since: "0.1.0" },
|
|
1006
1011
|
{ name: "proof_point", type_id: "ent_141", maturity: "stable", since: "0.1.0" },
|
|
1007
1012
|
// ── Team & Organisation ──
|
|
1008
|
-
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0" },
|
|
1013
|
+
{ name: "team", type_id: "ent_142", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1009
1014
|
{ name: "role", type_id: "ent_143", maturity: "stable", since: "0.1.0" },
|
|
1010
1015
|
{ name: "stakeholder", type_id: "ent_144", maturity: "stable", since: "0.1.0" },
|
|
1011
1016
|
{ name: "person", type_id: "ent_349", maturity: "stable", since: "0.5.0" },
|
|
1012
1017
|
{ name: "product_decision", type_id: "ent_145", maturity: "deprecated", since: "0.1.0", deprecated_in: "0.2.0", replacement: "decision" },
|
|
1013
1018
|
{ name: "team_okr", type_id: "ent_146", maturity: "stable", since: "0.1.0" },
|
|
1014
1019
|
{ name: "retrospective", type_id: "ent_147", maturity: "stable", since: "0.1.0" },
|
|
1015
|
-
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0" },
|
|
1016
|
-
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0" },
|
|
1020
|
+
{ name: "dependency", type_id: "ent_148", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1021
|
+
{ name: "department", type_id: "ent_149", maturity: "stable", since: "0.1.0", portfolio_shared: true },
|
|
1017
1022
|
{ name: "skill", type_id: "ent_150", maturity: "stable", since: "0.1.0" },
|
|
1018
1023
|
{ name: "ceremony", type_id: "ent_151", maturity: "stable", since: "0.1.0" },
|
|
1019
1024
|
{ name: "capacity_plan", type_id: "ent_152", maturity: "stable", since: "0.1.0" },
|
|
@@ -1225,6 +1230,10 @@ var UPG_ENTITY_META_BY_ID = new Map(
|
|
|
1225
1230
|
);
|
|
1226
1231
|
var UPG_ACTIVE_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "stable" || m.maturity === "proposed").map((m) => m.name);
|
|
1227
1232
|
var UPG_DEPRECATED_TYPES = UPG_ENTITY_META.filter((m) => m.maturity === "deprecated").map((m) => m.name);
|
|
1233
|
+
var UPG_PORTFOLIO_SHARED_TYPES = UPG_ENTITY_META.filter((m) => m.portfolio_shared === true).map((m) => m.name);
|
|
1234
|
+
function isPortfolioSharedType(name) {
|
|
1235
|
+
return UPG_ENTITY_META_BY_NAME.get(name)?.portfolio_shared === true;
|
|
1236
|
+
}
|
|
1228
1237
|
function isDeprecatedType(name) {
|
|
1229
1238
|
const meta = UPG_ENTITY_META_BY_NAME.get(name);
|
|
1230
1239
|
return meta?.maturity === "deprecated";
|
|
@@ -10319,6 +10328,21 @@ function rotateSlug(node, next) {
|
|
|
10319
10328
|
return node;
|
|
10320
10329
|
}
|
|
10321
10330
|
|
|
10331
|
+
// src/grammar/cross-scope.ts
|
|
10332
|
+
var CURATED_CROSS_EDGE_SET = new Set(UPG_CROSS_EDGE_TYPES);
|
|
10333
|
+
function isCrossCapable(sourceType, targetType) {
|
|
10334
|
+
return isPortfolioSharedType(sourceType) || isPortfolioSharedType(targetType);
|
|
10335
|
+
}
|
|
10336
|
+
function isCuratedCrossEligible(edgeType) {
|
|
10337
|
+
return CURATED_CROSS_EDGE_SET.has(edgeType);
|
|
10338
|
+
}
|
|
10339
|
+
function crossProductScope(edgeType) {
|
|
10340
|
+
if (CURATED_CROSS_EDGE_SET.has(edgeType)) return "curated";
|
|
10341
|
+
const def = UPG_EDGE_CATALOG[edgeType];
|
|
10342
|
+
if (def && isCrossCapable(def.source_type, def.target_type)) return "provisional";
|
|
10343
|
+
return "resident";
|
|
10344
|
+
}
|
|
10345
|
+
|
|
10322
10346
|
// src/properties/property-schema.ts
|
|
10323
10347
|
var UPG_PROPERTY_SCHEMA = {
|
|
10324
10348
|
// A11yAnnotationProperties: Accessibility annotation.
|
|
@@ -29975,7 +29999,7 @@ function isCanonical(text) {
|
|
|
29975
29999
|
}
|
|
29976
30000
|
|
|
29977
30001
|
// src/index.ts
|
|
29978
|
-
var UPG_VERSION = "0.
|
|
30002
|
+
var UPG_VERSION = "0.18.0";
|
|
29979
30003
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
29980
30004
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
29981
30005
|
var UPG_TYPES = getTypes();
|
|
@@ -30113,6 +30137,7 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
30113
30137
|
UPG_PLAYBOOKS,
|
|
30114
30138
|
UPG_POLYMORPHIC_EDGE_KEYS,
|
|
30115
30139
|
UPG_PORTFOLIO_KINDS,
|
|
30140
|
+
UPG_PORTFOLIO_SHARED_TYPES,
|
|
30116
30141
|
UPG_PRODUCT_STAGES,
|
|
30117
30142
|
UPG_PRODUCT_STAGE_COERCION_MAP,
|
|
30118
30143
|
UPG_PROPERTY_MIGRATIONS,
|
|
@@ -30151,6 +30176,7 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
30151
30176
|
concernEvaluatedFor,
|
|
30152
30177
|
concernFor,
|
|
30153
30178
|
concernGatesFor,
|
|
30179
|
+
crossProductScope,
|
|
30154
30180
|
describeTreePattern,
|
|
30155
30181
|
edgeCarriesProperties,
|
|
30156
30182
|
evaluateAntiPatterns,
|
|
@@ -30212,7 +30238,9 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
30212
30238
|
isCanonical,
|
|
30213
30239
|
isCanonicalProductStage,
|
|
30214
30240
|
isContainmentFreeType,
|
|
30241
|
+
isCrossCapable,
|
|
30215
30242
|
isCrossProductEligible,
|
|
30243
|
+
isCuratedCrossEligible,
|
|
30216
30244
|
isDeliberateOnlyEdge,
|
|
30217
30245
|
isDeprecatedType,
|
|
30218
30246
|
isDomainGuideStep,
|
|
@@ -30223,6 +30251,7 @@ var UPG_META_COUNT = UPG_ENTITY_META.length;
|
|
|
30223
30251
|
isLifecyclePlannedType,
|
|
30224
30252
|
isPolymorphicEdge,
|
|
30225
30253
|
isPortfolio,
|
|
30254
|
+
isPortfolioSharedType,
|
|
30226
30255
|
isRecordEntity,
|
|
30227
30256
|
isRegisteredPolymorphicEdge,
|
|
30228
30257
|
isRuntimeStateShapedProperty,
|