@unified-product-graph/core 0.22.1 → 0.23.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/README.md +1 -1
- package/dist/index.cjs +23 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +16 -2
- package/dist/index.d.ts +16 -2
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1470,6 +1470,20 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
1470
1470
|
source_type: string;
|
|
1471
1471
|
target_type: string;
|
|
1472
1472
|
};
|
|
1473
|
+
epic_decomposes_into_task: {
|
|
1474
|
+
forward_verb: string;
|
|
1475
|
+
reverse_verb: string;
|
|
1476
|
+
classification: "hierarchy";
|
|
1477
|
+
source_type: string;
|
|
1478
|
+
target_type: string;
|
|
1479
|
+
};
|
|
1480
|
+
epic_affected_by_bug: {
|
|
1481
|
+
forward_verb: string;
|
|
1482
|
+
reverse_verb: string;
|
|
1483
|
+
classification: "hierarchy";
|
|
1484
|
+
source_type: string;
|
|
1485
|
+
target_type: string;
|
|
1486
|
+
};
|
|
1473
1487
|
task_has_subtask: {
|
|
1474
1488
|
forward_verb: string;
|
|
1475
1489
|
reverse_verb: string;
|
|
@@ -15405,7 +15419,7 @@ interface EventSchemaProperties {
|
|
|
15405
15419
|
*/
|
|
15406
15420
|
interface DashboardProperties {
|
|
15407
15421
|
/** Analytics tool hosting this dashboard */
|
|
15408
|
-
tool?: 'looker' | 'amplitude' | 'mixpanel' | 'posthog' | 'custom';
|
|
15422
|
+
tool?: 'looker' | 'amplitude' | 'mixpanel' | 'posthog' | 'omni' | 'custom';
|
|
15409
15423
|
/** URL to the live dashboard */
|
|
15410
15424
|
url?: string;
|
|
15411
15425
|
/** Intended audience for this dashboard */
|
|
@@ -22518,7 +22532,7 @@ declare function isCanonical(text: string): boolean;
|
|
|
22518
22532
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
22519
22533
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
22520
22534
|
*/
|
|
22521
|
-
declare const UPG_VERSION: "0.
|
|
22535
|
+
declare const UPG_VERSION: "0.23.0";
|
|
22522
22536
|
/**
|
|
22523
22537
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
22524
22538
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|
package/dist/index.d.ts
CHANGED
|
@@ -1470,6 +1470,20 @@ declare const UPG_EDGE_CATALOG: {
|
|
|
1470
1470
|
source_type: string;
|
|
1471
1471
|
target_type: string;
|
|
1472
1472
|
};
|
|
1473
|
+
epic_decomposes_into_task: {
|
|
1474
|
+
forward_verb: string;
|
|
1475
|
+
reverse_verb: string;
|
|
1476
|
+
classification: "hierarchy";
|
|
1477
|
+
source_type: string;
|
|
1478
|
+
target_type: string;
|
|
1479
|
+
};
|
|
1480
|
+
epic_affected_by_bug: {
|
|
1481
|
+
forward_verb: string;
|
|
1482
|
+
reverse_verb: string;
|
|
1483
|
+
classification: "hierarchy";
|
|
1484
|
+
source_type: string;
|
|
1485
|
+
target_type: string;
|
|
1486
|
+
};
|
|
1473
1487
|
task_has_subtask: {
|
|
1474
1488
|
forward_verb: string;
|
|
1475
1489
|
reverse_verb: string;
|
|
@@ -15405,7 +15419,7 @@ interface EventSchemaProperties {
|
|
|
15405
15419
|
*/
|
|
15406
15420
|
interface DashboardProperties {
|
|
15407
15421
|
/** Analytics tool hosting this dashboard */
|
|
15408
|
-
tool?: 'looker' | 'amplitude' | 'mixpanel' | 'posthog' | 'custom';
|
|
15422
|
+
tool?: 'looker' | 'amplitude' | 'mixpanel' | 'posthog' | 'omni' | 'custom';
|
|
15409
15423
|
/** URL to the live dashboard */
|
|
15410
15424
|
url?: string;
|
|
15411
15425
|
/** Intended audience for this dashboard */
|
|
@@ -22518,7 +22532,7 @@ declare function isCanonical(text: string): boolean;
|
|
|
22518
22532
|
* it stamps the `upg_version` field of every `.upg` file written by the SDK.
|
|
22519
22533
|
* The `check:version-lockstep` gate enforces this at release time.
|
|
22520
22534
|
*/
|
|
22521
|
-
declare const UPG_VERSION: "0.
|
|
22535
|
+
declare const UPG_VERSION: "0.23.0";
|
|
22522
22536
|
/**
|
|
22523
22537
|
* The `.upg` JSON document format version. Written to the `upg_version` field.
|
|
22524
22538
|
* Evolves independently from `UPG_VERSION` (the catalogue version).
|
package/dist/index.js
CHANGED
|
@@ -1429,6 +1429,17 @@ var UPG_EDGE_CATALOG = {
|
|
|
1429
1429
|
bug_affects_feature: { forward_verb: "affects", reverse_verb: "affected_by", classification: "cross-domain", source_type: "bug", target_type: "feature" },
|
|
1430
1430
|
roadmap_item_references_feature: { forward_verb: "references", reverse_verb: "referenced_by", classification: "cross-domain", source_type: "roadmap_item", target_type: "feature" },
|
|
1431
1431
|
feature_decomposes_into_task: { forward_verb: "decomposes_into", reverse_verb: "implements", classification: "hierarchy", source_type: "feature", target_type: "task" },
|
|
1432
|
+
// Epic-level mirrors of the feature→task / feature→bug hierarchy (feedback
|
|
1433
|
+
// df99026a). A `feature` is the flat planning root, but an `epic` is a body of
|
|
1434
|
+
// work under it, and real imported ticket sets (Linear/Jira) carry bugs and
|
|
1435
|
+
// pure engineering tasks that belong to ONE epic, not the feature as a whole.
|
|
1436
|
+
// Without these, such tickets had to be mislabelled `user_story` (the only
|
|
1437
|
+
// epic child) to keep the epic grouping. These are additive twins of the
|
|
1438
|
+
// feature-level edges (same verbs/classification), so `pickCanonicalEdge` /
|
|
1439
|
+
// `resolveContainmentEdge('epic', 'task'|'bug')` and the adapter import path
|
|
1440
|
+
// resolve them with no further wiring.
|
|
1441
|
+
epic_decomposes_into_task: { forward_verb: "decomposes_into", reverse_verb: "implements", classification: "hierarchy", source_type: "epic", target_type: "task" },
|
|
1442
|
+
epic_affected_by_bug: { forward_verb: "affected_by", reverse_verb: "affects", classification: "hierarchy", source_type: "epic", target_type: "bug" },
|
|
1432
1443
|
task_has_subtask: { forward_verb: "has_subtask", reverse_verb: "is_subtask_of", classification: "hierarchy", source_type: "task", target_type: "task" },
|
|
1433
1444
|
// ── Planning cadence (0.20.0) ────────────────────────────────────────────────
|
|
1434
1445
|
// The cadence axis. E1 self-nests the interval (a program-increment contains
|
|
@@ -3732,7 +3743,10 @@ var UPG_VALID_CHILDREN = {
|
|
|
3732
3743
|
// task_implements_user_story edge.
|
|
3733
3744
|
feature: ["epic", "bug", "task"],
|
|
3734
3745
|
feature_area: ["feature", "feature_area"],
|
|
3735
|
-
epic
|
|
3746
|
+
// epic owns user_story (the templated promise) and, mirroring feature, may
|
|
3747
|
+
// also directly contain bug/task — heterogeneous imported tickets that belong
|
|
3748
|
+
// to one epic rather than the feature as a whole (feedback df99026a).
|
|
3749
|
+
epic: ["user_story", "bug", "task"],
|
|
3736
3750
|
user_story: ["acceptance_criterion"],
|
|
3737
3751
|
task: ["task"],
|
|
3738
3752
|
// planning_cycle (0.20.0): the cadence axis self-nests (a program-increment
|
|
@@ -10717,7 +10731,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10717
10731
|
},
|
|
10718
10732
|
// DashboardProperties: Dashboard entity.
|
|
10719
10733
|
dashboard: {
|
|
10720
|
-
tool: { type: "string", enum: ["looker", "amplitude", "mixpanel", "posthog", "custom"], description: "Analytics tool hosting this dashboard" },
|
|
10734
|
+
tool: { type: "string", enum: ["looker", "amplitude", "mixpanel", "posthog", "omni", "custom"], description: "Analytics tool hosting this dashboard" },
|
|
10721
10735
|
url: { type: "string", description: "URL to the live dashboard", modifier: "volatile" },
|
|
10722
10736
|
audience: { type: "string", description: "Intended audience for this dashboard" },
|
|
10723
10737
|
element_count: { type: "number", description: "Number of widgets or panels on the dashboard", modifier: "derived" },
|
|
@@ -22876,6 +22890,12 @@ var PRODUCT_SPEC_GUIDE = {
|
|
|
22876
22890
|
entity_types: ["feature_area", "feature", "epic", "user_story", "task"],
|
|
22877
22891
|
edge_chain: ["feature_area_contains_feature", "feature_decomposed_into_epic", "epic_specified_by_user_story", "task_implements_user_story"]
|
|
22878
22892
|
},
|
|
22893
|
+
{
|
|
22894
|
+
name: "Epic Work Items",
|
|
22895
|
+
description: "A bug or a pure engineering/infra task that belongs to one specific epic (not the feature as a whole) attaches directly to that epic, mirroring how task and bug attach at the feature level. Use this when importing a real tracker (Linear/Jira) whose tickets are heterogeneous: keep genuine stories as user_story, but let bugs, spikes, and engineering tasks nest under their epic with their true type instead of being mislabelled to preserve the grouping.",
|
|
22896
|
+
entity_types: ["epic", "task", "bug"],
|
|
22897
|
+
edge_chain: ["epic_decomposes_into_task", "epic_affected_by_bug"]
|
|
22898
|
+
},
|
|
22879
22899
|
{
|
|
22880
22900
|
name: "Planning Cadence",
|
|
22881
22901
|
description: "The cadence axis. Create a planning_cycle (a sprint, iteration, quarter, or PI), nest finer cycles inside a coarse one, schedule the stories that flow through it, and scope the objectives the cycle serves. Scheduling and scoping are deliberate links, not containment: a story keeps its feature/epic parent.",
|
|
@@ -29692,7 +29712,7 @@ function isCanonical(text) {
|
|
|
29692
29712
|
}
|
|
29693
29713
|
|
|
29694
29714
|
// src/index.ts
|
|
29695
|
-
var UPG_VERSION = "0.
|
|
29715
|
+
var UPG_VERSION = "0.23.0";
|
|
29696
29716
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
29697
29717
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
29698
29718
|
var UPG_TYPES = getTypes();
|