@burdenoff/microfe-planmagnet 2026.730.2 → 2026.731.1

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.
@@ -460,6 +460,17 @@ export type FeatureVote = {
460
460
  /** Vote weight (default 1) */
461
461
  weight: Scalars['Int']['output'];
462
462
  };
463
+ export declare enum KeyResultMetricType {
464
+ Boolean = "BOOLEAN",
465
+ Numeric = "NUMERIC",
466
+ Percentage = "PERCENTAGE"
467
+ }
468
+ export declare enum KeyResultStatus {
469
+ AtRisk = "AT_RISK",
470
+ Completed = "COMPLETED",
471
+ InProgress = "IN_PROGRESS",
472
+ NotStarted = "NOT_STARTED"
473
+ }
463
474
  /** A significant checkpoint or deliverable target within a project timeline. */
464
475
  export type Milestone = {
465
476
  __typename?: 'Milestone';
@@ -552,8 +563,12 @@ export type Mutation = {
552
563
  planmagnetCreateExternalSync: ExternalSync;
553
564
  /** Create a new feature request */
554
565
  planmagnetCreateFeatureRequest: FeatureRequest;
566
+ /** Create a new key result */
567
+ planmagnetCreateKeyResult: PlanmagnetKeyResult;
555
568
  /** Create a new milestone */
556
569
  planmagnetCreateMilestone: Milestone;
570
+ /** Create a new objective */
571
+ planmagnetCreateObjective: PlanmagnetObjective;
557
572
  /** Create a new portfolio */
558
573
  planmagnetCreatePortfolio: Portfolio;
559
574
  /** Create a new program */
@@ -604,8 +619,12 @@ export type Mutation = {
604
619
  planmagnetDeleteExternalSync: Scalars['Boolean']['output'];
605
620
  /** Delete a feature request */
606
621
  planmagnetDeleteFeatureRequest: Scalars['Boolean']['output'];
622
+ /** Only the key result's owner, its objective's owner, or its creator may delete it. */
623
+ planmagnetDeleteKeyResult: Scalars['Boolean']['output'];
607
624
  /** Delete a milestone */
608
625
  planmagnetDeleteMilestone: Scalars['Boolean']['output'];
626
+ /** Only the objective's owner or creator may delete it. */
627
+ planmagnetDeleteObjective: Scalars['Boolean']['output'];
609
628
  /** Delete a portfolio */
610
629
  planmagnetDeletePortfolio: Scalars['Boolean']['output'];
611
630
  /** Soft-delete a program */
@@ -660,6 +679,8 @@ export type Mutation = {
660
679
  planmagnetLinkCompetitorToFeature: FeatureRequest;
661
680
  /** Link a doc to a work item */
662
681
  planmagnetLinkDocToWorkItem: PlanmagnetDoc;
682
+ /** Link a key result to a work item (informational rollup only) */
683
+ planmagnetLinkKeyResultToWorkItem: PlanmagnetKeyResult;
663
684
  /** Link a work item to an external product entity */
664
685
  planmagnetLinkWorkItem: WorkItemLink;
665
686
  /** Log an expense against a budget */
@@ -709,6 +730,8 @@ export type Mutation = {
709
730
  planmagnetUnlinkCompetitorFromFeature: FeatureRequest;
710
731
  /** Unlink a doc from a work item */
711
732
  planmagnetUnlinkDocFromWorkItem: Scalars['Boolean']['output'];
733
+ /** Unlink a key result from a work item */
734
+ planmagnetUnlinkKeyResultFromWorkItem: Scalars['Boolean']['output'];
712
735
  /** Remove a work item link */
713
736
  planmagnetUnlinkWorkItem: Scalars['Boolean']['output'];
714
737
  /** Update an existing automation rule */
@@ -736,8 +759,16 @@ export type Mutation = {
736
759
  planmagnetUpdateExternalSync: ExternalSync;
737
760
  /** Update an existing feature request */
738
761
  planmagnetUpdateFeatureRequest: FeatureRequest;
762
+ /**
763
+ * Progress is updated manually here via `currentValue` -- see module deferral note
764
+ * re: automated roll-up from linked work item completion. Only the key result's
765
+ * owner, its objective's owner, or its creator may update it.
766
+ */
767
+ planmagnetUpdateKeyResult: PlanmagnetKeyResult;
739
768
  /** Update an existing milestone */
740
769
  planmagnetUpdateMilestone: Milestone;
770
+ /** Only the objective's owner or creator may update it. */
771
+ planmagnetUpdateObjective: PlanmagnetObjective;
741
772
  /** Update an existing portfolio */
742
773
  planmagnetUpdatePortfolio: Portfolio;
743
774
  /** Update an existing program */
@@ -827,9 +858,15 @@ export type MutationPlanmagnetCreateExternalSyncArgs = {
827
858
  export type MutationPlanmagnetCreateFeatureRequestArgs = {
828
859
  input: PlanmagnetCreateFeatureRequestInput;
829
860
  };
861
+ export type MutationPlanmagnetCreateKeyResultArgs = {
862
+ input: PlanmagnetCreateKeyResultInput;
863
+ };
830
864
  export type MutationPlanmagnetCreateMilestoneArgs = {
831
865
  input: PlanmagnetCreateMilestoneInput;
832
866
  };
867
+ export type MutationPlanmagnetCreateObjectiveArgs = {
868
+ input: PlanmagnetCreateObjectiveInput;
869
+ };
833
870
  export type MutationPlanmagnetCreatePortfolioArgs = {
834
871
  input: PlanmagnetCreatePortfolioInput;
835
872
  };
@@ -907,9 +944,15 @@ export type MutationPlanmagnetDeleteExternalSyncArgs = {
907
944
  export type MutationPlanmagnetDeleteFeatureRequestArgs = {
908
945
  id: Scalars['ID']['input'];
909
946
  };
947
+ export type MutationPlanmagnetDeleteKeyResultArgs = {
948
+ id: Scalars['ID']['input'];
949
+ };
910
950
  export type MutationPlanmagnetDeleteMilestoneArgs = {
911
951
  id: Scalars['ID']['input'];
912
952
  };
953
+ export type MutationPlanmagnetDeleteObjectiveArgs = {
954
+ id: Scalars['ID']['input'];
955
+ };
913
956
  export type MutationPlanmagnetDeletePortfolioArgs = {
914
957
  id: Scalars['ID']['input'];
915
958
  };
@@ -966,6 +1009,10 @@ export type MutationPlanmagnetLinkDocToWorkItemArgs = {
966
1009
  docId: Scalars['ID']['input'];
967
1010
  workItemId: Scalars['ID']['input'];
968
1011
  };
1012
+ export type MutationPlanmagnetLinkKeyResultToWorkItemArgs = {
1013
+ keyResultId: Scalars['ID']['input'];
1014
+ workItemId: Scalars['ID']['input'];
1015
+ };
969
1016
  export type MutationPlanmagnetLinkWorkItemArgs = {
970
1017
  input: PlanmagnetCreateWorkItemLinkInput;
971
1018
  };
@@ -1048,6 +1095,10 @@ export type MutationPlanmagnetUnlinkDocFromWorkItemArgs = {
1048
1095
  docId: Scalars['ID']['input'];
1049
1096
  workItemId: Scalars['ID']['input'];
1050
1097
  };
1098
+ export type MutationPlanmagnetUnlinkKeyResultFromWorkItemArgs = {
1099
+ keyResultId: Scalars['ID']['input'];
1100
+ workItemId: Scalars['ID']['input'];
1101
+ };
1051
1102
  export type MutationPlanmagnetUnlinkWorkItemArgs = {
1052
1103
  id: Scalars['ID']['input'];
1053
1104
  };
@@ -1095,10 +1146,18 @@ export type MutationPlanmagnetUpdateFeatureRequestArgs = {
1095
1146
  id: Scalars['ID']['input'];
1096
1147
  input: PlanmagnetUpdateFeatureRequestInput;
1097
1148
  };
1149
+ export type MutationPlanmagnetUpdateKeyResultArgs = {
1150
+ id: Scalars['ID']['input'];
1151
+ input: PlanmagnetUpdateKeyResultInput;
1152
+ };
1098
1153
  export type MutationPlanmagnetUpdateMilestoneArgs = {
1099
1154
  id: Scalars['ID']['input'];
1100
1155
  input: PlanmagnetUpdateMilestoneInput;
1101
1156
  };
1157
+ export type MutationPlanmagnetUpdateObjectiveArgs = {
1158
+ id: Scalars['ID']['input'];
1159
+ input: PlanmagnetUpdateObjectiveInput;
1160
+ };
1102
1161
  export type MutationPlanmagnetUpdatePortfolioArgs = {
1103
1162
  id: Scalars['ID']['input'];
1104
1163
  input: PlanmagnetUpdatePortfolioInput;
@@ -1155,6 +1214,12 @@ export type MutationPlanmagnetVoteOnFeatureArgs = {
1155
1214
  featureRequestId: Scalars['ID']['input'];
1156
1215
  input?: InputMaybe<PlanmagnetVoteOnFeatureInput>;
1157
1216
  };
1217
+ export declare enum ObjectiveStatus {
1218
+ Active = "ACTIVE",
1219
+ Cancelled = "CANCELLED",
1220
+ Completed = "COMPLETED",
1221
+ Draft = "DRAFT"
1222
+ }
1158
1223
  /** A submitted adapter awaiting admin approval. */
1159
1224
  export type PlanmagnetAdapterSubmission = {
1160
1225
  __typename?: 'PlanmagnetAdapterSubmission';
@@ -1566,6 +1631,17 @@ export type PlanmagnetCreateFeatureRequestInput = {
1566
1631
  title: Scalars['String']['input'];
1567
1632
  workItemId?: InputMaybe<Scalars['String']['input']>;
1568
1633
  };
1634
+ export type PlanmagnetCreateKeyResultInput = {
1635
+ currentValue?: InputMaybe<Scalars['Float']['input']>;
1636
+ description?: InputMaybe<Scalars['String']['input']>;
1637
+ metricType?: InputMaybe<KeyResultMetricType>;
1638
+ objectiveId: Scalars['String']['input'];
1639
+ ownerId?: InputMaybe<Scalars['String']['input']>;
1640
+ status?: InputMaybe<KeyResultStatus>;
1641
+ targetValue: Scalars['Float']['input'];
1642
+ title: Scalars['String']['input'];
1643
+ unit?: InputMaybe<Scalars['String']['input']>;
1644
+ };
1569
1645
  export type PlanmagnetCreateMilestoneInput = {
1570
1646
  description?: InputMaybe<Scalars['String']['input']>;
1571
1647
  dueDate?: InputMaybe<Scalars['DateTime']['input']>;
@@ -1580,6 +1656,15 @@ export type PlanmagnetCreateMilestoneInput = {
1580
1656
  /** Canonical universal-tag input (marqueue §251). Takes precedence over legacy `tags`. */
1581
1657
  tagsV2?: InputMaybe<Scalars['JSON']['input']>;
1582
1658
  };
1659
+ export type PlanmagnetCreateObjectiveInput = {
1660
+ description?: InputMaybe<Scalars['String']['input']>;
1661
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
1662
+ ownerId?: InputMaybe<Scalars['String']['input']>;
1663
+ periodLabel: Scalars['String']['input'];
1664
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
1665
+ status?: InputMaybe<ObjectiveStatus>;
1666
+ title: Scalars['String']['input'];
1667
+ };
1583
1668
  export type PlanmagnetCreatePortfolioInput = {
1584
1669
  alignment?: InputMaybe<StrategicAlignment>;
1585
1670
  alignmentLabel?: InputMaybe<Scalars['String']['input']>;
@@ -1948,6 +2033,39 @@ export type PlanmagnetImportResult = {
1948
2033
  skipped: Scalars['Int']['output'];
1949
2034
  workItemIds: Array<Scalars['String']['output']>;
1950
2035
  };
2036
+ /** A measurable target belonging to exactly one Objective (BOFF-4441). */
2037
+ export type PlanmagnetKeyResult = {
2038
+ __typename?: 'PlanmagnetKeyResult';
2039
+ createdAt: Scalars['DateTime']['output'];
2040
+ createdBy: Scalars['String']['output'];
2041
+ currentValue: Scalars['Float']['output'];
2042
+ description?: Maybe<Scalars['String']['output']>;
2043
+ id: Scalars['ID']['output'];
2044
+ /** Live rollup of linked work item completion -- informational only; it does NOT drive `currentValue`. */
2045
+ linkedWorkItemRollup: PlanmagnetKeyResultRollup;
2046
+ /** Work items currently linked to this key result. */
2047
+ linkedWorkItems: Array<WorkItem>;
2048
+ metricType: KeyResultMetricType;
2049
+ objectiveId: Scalars['String']['output'];
2050
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
2051
+ ownerId?: Maybe<Scalars['String']['output']>;
2052
+ /** Progress (0-100) computed live from startValue/currentValue/targetValue. */
2053
+ progress: Scalars['Float']['output'];
2054
+ startValue: Scalars['Float']['output'];
2055
+ status: KeyResultStatus;
2056
+ targetValue: Scalars['Float']['output'];
2057
+ title: Scalars['String']['output'];
2058
+ unit?: Maybe<Scalars['String']['output']>;
2059
+ updatedAt: Scalars['DateTime']['output'];
2060
+ updatedBy?: Maybe<Scalars['String']['output']>;
2061
+ workspaceId: Scalars['String']['output'];
2062
+ };
2063
+ export type PlanmagnetKeyResultRollup = {
2064
+ __typename?: 'PlanmagnetKeyResultRollup';
2065
+ completionRatio: Scalars['Float']['output'];
2066
+ doneCount: Scalars['Int']['output'];
2067
+ totalLinked: Scalars['Int']['output'];
2068
+ };
1951
2069
  export type PlanmagnetLinkCompetitorInput = {
1952
2070
  competitorId: Scalars['String']['input'];
1953
2071
  featureRequestId: Scalars['String']['input'];
@@ -2026,6 +2144,42 @@ export type PlanmagnetMoveWorkItemInput = {
2026
2144
  sprintId?: InputMaybe<Scalars['String']['input']>;
2027
2145
  status?: InputMaybe<WorkItemStatus>;
2028
2146
  };
2147
+ /**
2148
+ * A workspace-scoped goal for a given time period (BOFF-4441). `progress` is
2149
+ * the average of its non-deleted KeyResults' progress (0 when it has none),
2150
+ * computed live -- never stored.
2151
+ */
2152
+ export type PlanmagnetObjective = {
2153
+ __typename?: 'PlanmagnetObjective';
2154
+ createdAt: Scalars['DateTime']['output'];
2155
+ createdBy: Scalars['String']['output'];
2156
+ description?: Maybe<Scalars['String']['output']>;
2157
+ endDate?: Maybe<Scalars['DateTime']['output']>;
2158
+ id: Scalars['ID']['output'];
2159
+ keyResults: Array<PlanmagnetKeyResult>;
2160
+ onBehalfOf?: Maybe<Scalars['String']['output']>;
2161
+ ownerId: Scalars['String']['output'];
2162
+ periodLabel: Scalars['String']['output'];
2163
+ /** Average progress (0-100) across this objective's non-deleted key results. */
2164
+ progress: Scalars['Float']['output'];
2165
+ startDate?: Maybe<Scalars['DateTime']['output']>;
2166
+ status: ObjectiveStatus;
2167
+ title: Scalars['String']['output'];
2168
+ updatedAt: Scalars['DateTime']['output'];
2169
+ updatedBy?: Maybe<Scalars['String']['output']>;
2170
+ workspaceId: Scalars['String']['output'];
2171
+ };
2172
+ export type PlanmagnetObjectiveFilter = {
2173
+ ownerId?: InputMaybe<Scalars['String']['input']>;
2174
+ search?: InputMaybe<Scalars['String']['input']>;
2175
+ status?: InputMaybe<ObjectiveStatus>;
2176
+ };
2177
+ export type PlanmagnetObjectiveList = {
2178
+ __typename?: 'PlanmagnetObjectiveList';
2179
+ items: Array<PlanmagnetObjective>;
2180
+ pageInfo: PlanmagnetPageInfo;
2181
+ totalCount: Scalars['Int']['output'];
2182
+ };
2029
2183
  export type PlanmagnetPageInfo = {
2030
2184
  __typename?: 'PlanmagnetPageInfo';
2031
2185
  endCursor?: Maybe<Scalars['String']['output']>;
@@ -2595,6 +2749,15 @@ export type PlanmagnetUpdateFeatureRequestInput = {
2595
2749
  title?: InputMaybe<Scalars['String']['input']>;
2596
2750
  workItemId?: InputMaybe<Scalars['String']['input']>;
2597
2751
  };
2752
+ export type PlanmagnetUpdateKeyResultInput = {
2753
+ currentValue?: InputMaybe<Scalars['Float']['input']>;
2754
+ description?: InputMaybe<Scalars['String']['input']>;
2755
+ ownerId?: InputMaybe<Scalars['String']['input']>;
2756
+ status?: InputMaybe<KeyResultStatus>;
2757
+ targetValue?: InputMaybe<Scalars['Float']['input']>;
2758
+ title?: InputMaybe<Scalars['String']['input']>;
2759
+ unit?: InputMaybe<Scalars['String']['input']>;
2760
+ };
2598
2761
  export type PlanmagnetUpdateMilestoneInput = {
2599
2762
  completedAt?: InputMaybe<Scalars['DateTime']['input']>;
2600
2763
  description?: InputMaybe<Scalars['String']['input']>;
@@ -2609,6 +2772,15 @@ export type PlanmagnetUpdateMilestoneInput = {
2609
2772
  /** Canonical universal-tag input (marqueue §251). Takes precedence over legacy `tags`. */
2610
2773
  tagsV2?: InputMaybe<Scalars['JSON']['input']>;
2611
2774
  };
2775
+ export type PlanmagnetUpdateObjectiveInput = {
2776
+ description?: InputMaybe<Scalars['String']['input']>;
2777
+ endDate?: InputMaybe<Scalars['DateTime']['input']>;
2778
+ ownerId?: InputMaybe<Scalars['String']['input']>;
2779
+ periodLabel?: InputMaybe<Scalars['String']['input']>;
2780
+ startDate?: InputMaybe<Scalars['DateTime']['input']>;
2781
+ status?: InputMaybe<ObjectiveStatus>;
2782
+ title?: InputMaybe<Scalars['String']['input']>;
2783
+ };
2612
2784
  export type PlanmagnetUpdatePortfolioInput = {
2613
2785
  alignment?: InputMaybe<StrategicAlignment>;
2614
2786
  alignmentLabel?: InputMaybe<Scalars['String']['input']>;
@@ -3106,6 +3278,8 @@ export type Query = {
3106
3278
  planmagnetFeatureRequest?: Maybe<FeatureRequest>;
3107
3279
  /** List feature requests in a workspace */
3108
3280
  planmagnetFeatureRequests: PlanmagnetFeatureRequestList;
3281
+ /** Get a single key result by ID */
3282
+ planmagnetKeyResult?: Maybe<PlanmagnetKeyResult>;
3109
3283
  /** List adapter submissions for admin review. */
3110
3284
  planmagnetListAdapterSubmissions: PlanmagnetAdapterSubmissionConnection;
3111
3285
  /** List marketplace reports for admin moderation. */
@@ -3114,6 +3288,10 @@ export type Query = {
3114
3288
  planmagnetMilestone?: Maybe<Milestone>;
3115
3289
  /** List milestones in a workspace */
3116
3290
  planmagnetMilestones: PlanmagnetMilestoneList;
3291
+ /** Get a single objective by ID */
3292
+ planmagnetObjective?: Maybe<PlanmagnetObjective>;
3293
+ /** List objectives in a workspace */
3294
+ planmagnetObjectives: PlanmagnetObjectiveList;
3117
3295
  /** Get a single portfolio by ID */
3118
3296
  planmagnetPortfolio?: Maybe<Portfolio>;
3119
3297
  /** Get aggregated overview metrics for a portfolio */
@@ -3291,6 +3469,9 @@ export type QueryPlanmagnetFeatureRequestsArgs = {
3291
3469
  pagination?: InputMaybe<PlanmagnetPaginationInput>;
3292
3470
  workspaceId: Scalars['ID']['input'];
3293
3471
  };
3472
+ export type QueryPlanmagnetKeyResultArgs = {
3473
+ id: Scalars['ID']['input'];
3474
+ };
3294
3475
  export type QueryPlanmagnetListAdapterSubmissionsArgs = {
3295
3476
  pagination?: InputMaybe<PlanmagnetPaginationInput>;
3296
3477
  status?: InputMaybe<PlanmagnetSubmissionStatus>;
@@ -3307,6 +3488,14 @@ export type QueryPlanmagnetMilestonesArgs = {
3307
3488
  pagination?: InputMaybe<PlanmagnetPaginationInput>;
3308
3489
  workspaceId: Scalars['ID']['input'];
3309
3490
  };
3491
+ export type QueryPlanmagnetObjectiveArgs = {
3492
+ id: Scalars['ID']['input'];
3493
+ };
3494
+ export type QueryPlanmagnetObjectivesArgs = {
3495
+ filter?: InputMaybe<PlanmagnetObjectiveFilter>;
3496
+ pagination?: InputMaybe<PlanmagnetPaginationInput>;
3497
+ workspaceId: Scalars['ID']['input'];
3498
+ };
3310
3499
  export type QueryPlanmagnetPortfolioArgs = {
3311
3500
  id: Scalars['ID']['input'];
3312
3501
  };