@unified-product-graph/core 0.14.1 → 0.15.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 +118 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -49
- package/dist/index.d.ts +4 -49
- package/dist/index.js +118 -20
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7381,6 +7381,118 @@ function getDeprecatedTypes() {
|
|
|
7381
7381
|
return deprecated;
|
|
7382
7382
|
}
|
|
7383
7383
|
var UPG_PROPERTY_MIGRATIONS = {
|
|
7384
|
+
// ── v0.15.0: Pattern D — collapse *_status shadows into the lifecycle ─────────
|
|
7385
|
+
//
|
|
7386
|
+
// 14 `*_status` enum properties whose values ARE the entity's own lifecycle
|
|
7387
|
+
// phase set (UPG-689 Pattern D, the T1.1 guardrail set). They re-encoded the
|
|
7388
|
+
// lifecycle as a property, shadowing the base-node `status` field that the
|
|
7389
|
+
// lifecycle already drives. Each property is removed and any authored value
|
|
7390
|
+
// LIFTS to `UPGBaseNode.status` (same convention as 0.9.14 kr_status). Two
|
|
7391
|
+
// diverge in vocabulary from their own lifecycle and remap on lift:
|
|
7392
|
+
// - marketing_channel.channel_status: deprecated -> sunset
|
|
7393
|
+
// - security_audit.audit_status: scheduled -> planning, in_progress -> active
|
|
7394
|
+
"0.15.0": [
|
|
7395
|
+
{
|
|
7396
|
+
kind: "lift_property_to_top_level",
|
|
7397
|
+
type: "agent_definition",
|
|
7398
|
+
from_property: "agent_status",
|
|
7399
|
+
to: "status",
|
|
7400
|
+
reason: "UPG-689 Pattern D: agent_status duplicated the agent_definition lifecycle (testing/active/disabled). Removed in 0.15.0; the authored value lifts to UPGBaseNode.status."
|
|
7401
|
+
},
|
|
7402
|
+
{
|
|
7403
|
+
kind: "lift_property_to_top_level",
|
|
7404
|
+
type: "data_pipeline",
|
|
7405
|
+
from_property: "pipeline_status",
|
|
7406
|
+
to: "status",
|
|
7407
|
+
reason: "UPG-689 Pattern D: pipeline_status duplicated the data_pipeline lifecycle (active/paused/failed/deprecated). Removed in 0.15.0; lifts to status."
|
|
7408
|
+
},
|
|
7409
|
+
{
|
|
7410
|
+
kind: "lift_property_to_top_level",
|
|
7411
|
+
type: "database_schema",
|
|
7412
|
+
from_property: "migration_status",
|
|
7413
|
+
to: "status",
|
|
7414
|
+
reason: "UPG-689 Pattern D: migration_status duplicated the database_schema lifecycle (current/pending/failed). Removed in 0.15.0; lifts to status."
|
|
7415
|
+
},
|
|
7416
|
+
{
|
|
7417
|
+
kind: "lift_property_to_top_level",
|
|
7418
|
+
type: "deployment",
|
|
7419
|
+
from_property: "deploy_status",
|
|
7420
|
+
to: "status",
|
|
7421
|
+
reason: "UPG-689 Pattern D: deploy_status duplicated the deployment lifecycle (rolling/success/failure). Removed in 0.15.0; lifts to status."
|
|
7422
|
+
},
|
|
7423
|
+
{
|
|
7424
|
+
kind: "lift_property_to_top_level",
|
|
7425
|
+
type: "external_api",
|
|
7426
|
+
from_property: "api_status",
|
|
7427
|
+
to: "status",
|
|
7428
|
+
reason: "UPG-689 Pattern D: api_status duplicated the external_api lifecycle (beta/active/deprecated/unavailable). Removed in 0.15.0; lifts to status."
|
|
7429
|
+
},
|
|
7430
|
+
{
|
|
7431
|
+
kind: "lift_property_to_top_level",
|
|
7432
|
+
type: "feature_area",
|
|
7433
|
+
from_property: "area_status",
|
|
7434
|
+
to: "status",
|
|
7435
|
+
reason: "UPG-689 Pattern D: area_status duplicated the feature_area lifecycle (planned/active/deprecated). Removed in 0.15.0; lifts to status."
|
|
7436
|
+
},
|
|
7437
|
+
{
|
|
7438
|
+
kind: "lift_property_to_top_level",
|
|
7439
|
+
type: "feature_flag",
|
|
7440
|
+
from_property: "flag_status",
|
|
7441
|
+
to: "status",
|
|
7442
|
+
reason: "UPG-689 Pattern D: flag_status duplicated the feature_flag lifecycle (off/rollout/on). Removed in 0.15.0; lifts to status."
|
|
7443
|
+
},
|
|
7444
|
+
{
|
|
7445
|
+
kind: "lift_property_to_top_level",
|
|
7446
|
+
type: "objective",
|
|
7447
|
+
from_property: "objective_status",
|
|
7448
|
+
to: "status",
|
|
7449
|
+
reason: "UPG-689 Pattern D: objective_status duplicated the objective lifecycle (active/achieved/deferred). Removed in 0.15.0; lifts to status."
|
|
7450
|
+
},
|
|
7451
|
+
{
|
|
7452
|
+
kind: "lift_property_to_top_level",
|
|
7453
|
+
type: "outcome",
|
|
7454
|
+
from_property: "outcome_status",
|
|
7455
|
+
to: "status",
|
|
7456
|
+
reason: "UPG-689 Pattern D: outcome_status duplicated the outcome lifecycle (identified/measuring/achieved/abandoned). Removed in 0.15.0; lifts to status."
|
|
7457
|
+
},
|
|
7458
|
+
{
|
|
7459
|
+
kind: "lift_property_to_top_level",
|
|
7460
|
+
type: "prototype",
|
|
7461
|
+
from_property: "test_status",
|
|
7462
|
+
to: "status",
|
|
7463
|
+
reason: "UPG-689 Pattern D: test_status duplicated the prototype lifecycle (untested/testing/passed/failed). Removed in 0.15.0; lifts to status."
|
|
7464
|
+
},
|
|
7465
|
+
{
|
|
7466
|
+
kind: "lift_property_to_top_level",
|
|
7467
|
+
type: "review_gate",
|
|
7468
|
+
from_property: "gate_status",
|
|
7469
|
+
to: "status",
|
|
7470
|
+
reason: "UPG-689 Pattern D: gate_status duplicated the review_gate lifecycle (pending/approved/rejected/bypassed). Removed in 0.15.0; lifts to status."
|
|
7471
|
+
},
|
|
7472
|
+
{
|
|
7473
|
+
kind: "lift_property_to_top_level",
|
|
7474
|
+
type: "roadmap_item",
|
|
7475
|
+
from_property: "item_status",
|
|
7476
|
+
to: "status",
|
|
7477
|
+
reason: "UPG-689 Pattern D: item_status duplicated the roadmap_item lifecycle (planned/in_progress/shipped/deferred). Removed in 0.15.0; lifts to status."
|
|
7478
|
+
},
|
|
7479
|
+
{
|
|
7480
|
+
kind: "lift_property_to_top_level",
|
|
7481
|
+
type: "marketing_channel",
|
|
7482
|
+
from_property: "channel_status",
|
|
7483
|
+
to: "status",
|
|
7484
|
+
value_map: { deprecated: "sunset" },
|
|
7485
|
+
reason: "UPG-689 Pattern D: channel_status (active/paused/deprecated) re-encoded the marketing_channel lifecycle (planning/active/paused/completed/sunset). Removed in 0.15.0; lifts to status with deprecated -> sunset."
|
|
7486
|
+
},
|
|
7487
|
+
{
|
|
7488
|
+
kind: "lift_property_to_top_level",
|
|
7489
|
+
type: "security_audit",
|
|
7490
|
+
from_property: "audit_status",
|
|
7491
|
+
to: "status",
|
|
7492
|
+
value_map: { scheduled: "planning", in_progress: "active" },
|
|
7493
|
+
reason: "UPG-689 Pattern D: audit_status (scheduled/in_progress/completed) re-encoded the security_audit lifecycle (planning/active/paused/completed/sunset). Removed in 0.15.0; lifts to status with scheduled -> planning, in_progress -> active."
|
|
7494
|
+
}
|
|
7495
|
+
],
|
|
7384
7496
|
// ── v0.14.0: Pattern E — remove deprecated/ghost properties (UPG-574) ────────
|
|
7385
7497
|
//
|
|
7386
7498
|
// Properties marked deprecated (some "Removed in 0.9.1") that were never
|
|
@@ -9906,7 +10018,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
9906
10018
|
max_execution_time_seconds: { type: "number", description: "Hard timeout for agent execution in seconds" },
|
|
9907
10019
|
allow_code_execution: { type: "boolean", description: "Whether the agent can execute generated code" },
|
|
9908
10020
|
multimodal: { type: "boolean", description: "Whether the agent can process images and other media" },
|
|
9909
|
-
agent_status: { type: "string", enum: ["active", "disabled", "testing"], description: "Operational status of this agent definition" },
|
|
9910
10021
|
version: { type: "string", description: 'Version label for this agent definition (e.g. "1.4.2")' }
|
|
9911
10022
|
},
|
|
9912
10023
|
// AgentHookProperties: Agent hook.
|
|
@@ -10607,7 +10718,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10607
10718
|
},
|
|
10608
10719
|
// DataPipelineProperties: DataPipeline entity.
|
|
10609
10720
|
data_pipeline: {
|
|
10610
|
-
pipeline_status: { type: "string", enum: ["active", "paused", "failed", "deprecated"], description: "Operational status of the pipeline" },
|
|
10611
10721
|
schedule: { type: "string", description: "Cron or scheduling expression" },
|
|
10612
10722
|
avg_runtime: { type: "string", description: "Average wall-clock runtime per execution" },
|
|
10613
10723
|
orchestrator: { type: "string", description: 'Orchestration tool (e.g. "Airflow", "Dagster", "dbt Cloud")' },
|
|
@@ -10642,7 +10752,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10642
10752
|
database_schema: {
|
|
10643
10753
|
db_type: { type: "string", enum: ["postgres", "mysql", "mongodb", "redis", "other"], description: "Engine" },
|
|
10644
10754
|
schema_version: { type: "string", description: "Current schema version" },
|
|
10645
|
-
migration_status: { type: "string", enum: ["current", "pending", "failed"], description: "Pending-migration status" },
|
|
10646
10755
|
owner: { type: "string", description: "Owning person or team responsible for design and migrations. Promote to a `node_owned_by_team` edge if ownership must be queryable." },
|
|
10647
10756
|
table_count: { type: "number", description: "Tables or collections in this schema. Useful for migration scope estimation.", modifier: "derived" }
|
|
10648
10757
|
},
|
|
@@ -10697,7 +10806,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
10697
10806
|
deployment: {
|
|
10698
10807
|
environment: { type: "string", enum: ["dev", "staging", "prod"], description: "Target environment" },
|
|
10699
10808
|
timestamp: { type: "string", description: "ISO timestamp" },
|
|
10700
|
-
deploy_status: { type: "string", enum: ["success", "failure", "rolling"], description: "Current status" },
|
|
10701
10809
|
sha: { type: "string", description: "Git SHA of the deployed commit" },
|
|
10702
10810
|
duration_seconds: { type: "number", description: "Wall-clock duration in seconds. Tracks deployment speed trends." },
|
|
10703
10811
|
deployer: { type: "string", description: "Triggering person or system. Promote to a `node_owned_by_person` edge if ownership must be queryable." }
|
|
@@ -11025,8 +11133,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11025
11133
|
provider: { type: "string", description: "Provider" },
|
|
11026
11134
|
base_url: { type: "string", description: "Base URL" },
|
|
11027
11135
|
auth_type: { type: "string", enum: ["api_key", "oauth2", "jwt", "basic", "none"], description: "Authentication method" },
|
|
11028
|
-
rate_limits: { type: "string", description: "Rate limit description" }
|
|
11029
|
-
api_status: { type: "string", enum: ["active", "deprecated", "beta", "unavailable"], description: "Availability" }
|
|
11136
|
+
rate_limits: { type: "string", description: "Rate limit description" }
|
|
11030
11137
|
},
|
|
11031
11138
|
// FeasibilityStudyProperties: FeasibilityStudy entity.
|
|
11032
11139
|
feasibility_study: {
|
|
@@ -11060,13 +11167,11 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11060
11167
|
feature_count: { type: "number", description: "Approximate feature count under this area. Snapshot; `feature_area_contains_feature` edges are the source of truth.", modifier: "derived" },
|
|
11061
11168
|
owner: { type: "string", description: "Area owner (handle or email). Promote to a `node_owned_by_team` edge if ownership must be queryable." },
|
|
11062
11169
|
priority: { type: "string", enum: ["urgent", "high", "medium", "low", "none"], description: "Importance to the product overall" },
|
|
11063
|
-
maturity: { type: "string", enum: ["nascent", "growing", "mature", "legacy"], description: "Maturity. `nascent` = newly-formed grouping. `mature` = established surface. `legacy` = being phased out for a successor." }
|
|
11064
|
-
area_status: { type: "string", enum: ["active", "planned", "deprecated"], description: "Status in the product structure" }
|
|
11170
|
+
maturity: { type: "string", enum: ["nascent", "growing", "mature", "legacy"], description: "Maturity. `nascent` = newly-formed grouping. `mature` = established surface. `legacy` = being phased out for a successor." }
|
|
11065
11171
|
},
|
|
11066
11172
|
// FeatureFlagProperties: Feature flag.
|
|
11067
11173
|
feature_flag: {
|
|
11068
11174
|
key: { type: "string", description: 'Required. Stable flag key used in code (e.g. "new-checkout-flow").' },
|
|
11069
|
-
flag_status: { type: "string", enum: ["on", "off", "rollout"], description: "Activation state. `on` = enabled for all. `off` = disabled for all. `rollout` = partial via targeting_rules." },
|
|
11070
11175
|
rollout_pct: { type: "number", description: "Percentage enabled (0\u2013100). Meaningful when `flag_status === 'rollout'`.", modifier: "snapshot" },
|
|
11071
11176
|
targeting_rules: { type: "string", description: "Human-readable targeting rules. Full rule evaluation happens in the flag service." },
|
|
11072
11177
|
owner: { type: "string", description: "Owning person or team responsible for the flag's lifecycle. Promote to a `node_owned_by_person` edge if ownership must be queryable." },
|
|
@@ -11673,8 +11778,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11673
11778
|
marketing_channel: {
|
|
11674
11779
|
channel_type: { type: "string", enum: ["social", "email", "seo", "sem", "content", "events", "other"], description: "Category of marketing channel" },
|
|
11675
11780
|
monthly_budget: { type: "number", description: "Monthly spend allocated to this channel", modifier: "snapshot" },
|
|
11676
|
-
roi: { type: "number", description: "Return on investment ratio" }
|
|
11677
|
-
channel_status: { type: "string", enum: ["active", "paused", "deprecated"], description: "Operational status of the channel" }
|
|
11781
|
+
roi: { type: "number", description: "Return on investment ratio" }
|
|
11678
11782
|
},
|
|
11679
11783
|
// MarketingStrategyProperties: Marketing strategy.
|
|
11680
11784
|
marketing_strategy: {
|
|
@@ -11832,7 +11936,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11832
11936
|
// ObjectiveProperties: A high-level strategic goal. The O in OKR.
|
|
11833
11937
|
objective: {
|
|
11834
11938
|
timeframe: { type: "string", description: 'Planning timeframe (e.g. "Q1 2026", "H1 2026")' },
|
|
11835
|
-
objective_status: { type: "string", enum: ["active", "achieved", "deferred"], description: "Current status" },
|
|
11836
11939
|
progress: { type: "number", description: "Overall progress (0\u2013100)" }
|
|
11837
11940
|
},
|
|
11838
11941
|
// ObservationProperties: Discrete observation captured during research. Absorbed from the deprecated Highlight entity.
|
|
@@ -11881,8 +11984,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
11881
11984
|
normalized: { type: "number", description: "Normalized 0-1 value for cross-tool comparison (optional)." }
|
|
11882
11985
|
},
|
|
11883
11986
|
required: ["value", "label"]
|
|
11884
|
-
}
|
|
11885
|
-
outcome_status: { type: "string", enum: ["identified", "measuring", "achieved", "abandoned"], description: "Current lifecycle phase, mirroring the `outcome` lifecycle in `grammar/lifecycles.ts` (UPG-579 Option B): `identified` -> `measuring` -> `achieved` | `abandoned`." }
|
|
11987
|
+
}
|
|
11886
11988
|
},
|
|
11887
11989
|
// ParticipantProperties: Research participant.
|
|
11888
11990
|
participant: {
|
|
@@ -12094,7 +12196,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12094
12196
|
// PrototypeProperties: Prototype.
|
|
12095
12197
|
prototype: {
|
|
12096
12198
|
fidelity: { type: "string", enum: ["low", "medium", "high"], description: "Detail level" },
|
|
12097
|
-
test_status: { type: "string", enum: ["untested", "testing", "passed", "failed"], description: "User-test status" },
|
|
12098
12199
|
tool: { type: "string", description: "Authoring tool" }
|
|
12099
12200
|
},
|
|
12100
12201
|
// QaSessionProperties: QA session.
|
|
@@ -12224,8 +12325,7 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12224
12325
|
// ReviewGateProperties: Review gate.
|
|
12225
12326
|
review_gate: {
|
|
12226
12327
|
gate_type: { type: "string", enum: ["human_review", "automated_check", "approval"], description: "Kind of review required at this gate" },
|
|
12227
|
-
required_approvers: { type: "string[]", description: "People or roles that must approve. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable." }
|
|
12228
|
-
gate_status: { type: "string", enum: ["pending", "approved", "rejected", "bypassed"], description: "Current approval status of the gate" }
|
|
12328
|
+
required_approvers: { type: "string[]", description: "People or roles that must approve. Promote to `node_owned_by_person` edges (one per name) if ownership must be queryable." }
|
|
12229
12329
|
},
|
|
12230
12330
|
// RiskProperties: Risk.
|
|
12231
12331
|
risk: {
|
|
@@ -12270,7 +12370,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12270
12370
|
roadmap_item: {
|
|
12271
12371
|
quarter: { type: "string", description: 'Planning quarter (e.g. "Q2 2026"). Pair with `start_date`/`target_date` for precise scheduling.' },
|
|
12272
12372
|
priority: { type: "string", enum: ["urgent", "high", "medium", "low", "none"], description: "Importance against other items" },
|
|
12273
|
-
item_status: { type: "string", enum: ["planned", "in_progress", "shipped", "deferred"], description: "Status. `deferred` = explicitly pushed to a later period." },
|
|
12274
12373
|
confidence: {
|
|
12275
12374
|
type: "assessment",
|
|
12276
12375
|
scale_id: "confidence_5",
|
|
@@ -12350,7 +12449,6 @@ var UPG_PROPERTY_SCHEMA = {
|
|
|
12350
12449
|
// SecurityAuditProperties: Security audit.
|
|
12351
12450
|
security_audit: {
|
|
12352
12451
|
audit_scope: { type: "string", description: "Systems or processes covered by the audit" },
|
|
12353
|
-
audit_status: { type: "string", enum: ["scheduled", "in_progress", "completed"], description: "Current progress of the audit" },
|
|
12354
12452
|
findings_count: { type: "number", description: "Total number of findings", modifier: "derived" },
|
|
12355
12453
|
critical_findings: { type: "number", description: "Number of critical-severity findings" }
|
|
12356
12454
|
},
|
|
@@ -29283,7 +29381,7 @@ function isCanonical(text) {
|
|
|
29283
29381
|
}
|
|
29284
29382
|
|
|
29285
29383
|
// src/index.ts
|
|
29286
|
-
var UPG_VERSION = "0.
|
|
29384
|
+
var UPG_VERSION = "0.15.0";
|
|
29287
29385
|
var UPG_FORMAT_VERSION = "0.4.0";
|
|
29288
29386
|
var MARKDOWN_FORMAT_VERSION = "0.1";
|
|
29289
29387
|
var UPG_TYPES = getTypes();
|