@burdenoff/microfe-planmagnet 2026.925.5 → 2026.925.7

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.
@@ -97,6 +97,11 @@ export type Board = {
97
97
  projectId: Scalars['String']['output'];
98
98
  /** Board type */
99
99
  type: BoardType;
100
+ /**
101
+ * Live work items of the board's project that are on no column: their status
102
+ * has no column and they were never placed on one
103
+ */
104
+ unplacedCount: Scalars['Int']['output'];
100
105
  /** Last update timestamp */
101
106
  updatedAt: Scalars['DateTime']['output'];
102
107
  /** Actor who last updated this board */
@@ -109,6 +114,12 @@ export type BoardColumn = {
109
114
  __typename?: 'BoardColumn';
110
115
  /** Parent board ID */
111
116
  boardId: Scalars['String']['output'];
117
+ /**
118
+ * The work items this column shows. An item placed in a column stays there
119
+ * unless the column maps to a status the item no longer has; otherwise it is
120
+ * in the first column mapped to its status.
121
+ */
122
+ cards: PlanmagnetWorkItemList;
112
123
  /** Creation timestamp */
113
124
  createdAt: Scalars['DateTime']['output'];
114
125
  /** Unique identifier */
@@ -128,6 +139,10 @@ export type BoardColumn = {
128
139
  /** Work-in-progress limit (0 = unlimited) */
129
140
  wipLimit?: Maybe<Scalars['Int']['output']>;
130
141
  };
142
+ /** A column within a board representing a workflow stage. */
143
+ export type BoardColumnCardsArgs = {
144
+ pagination?: InputMaybe<PlanmagnetPaginationInput>;
145
+ };
131
146
  export declare enum BoardColumnType {
132
147
  Custom = "CUSTOM",
133
148
  Done = "DONE",
@@ -1263,6 +1278,54 @@ export declare enum ObjectiveStatus {
1263
1278
  Completed = "COMPLETED",
1264
1279
  Draft = "DRAFT"
1265
1280
  }
1281
+ /**
1282
+ * One recorded AI call. Every call is written, success or failure, by
1283
+ * AiGatewayService.completeWithDecision.
1284
+ *
1285
+ * `inputRefs` is deliberately NOT exposed: the column is classified L3 in the
1286
+ * Prisma schema, and a ledger read should not become the easiest way to pull
1287
+ * classified input back out.
1288
+ */
1289
+ export type PlanmagnetAgentRun = {
1290
+ __typename?: 'PlanmagnetAgentRun';
1291
+ actorId: Scalars['String']['output'];
1292
+ actorType: Scalars['String']['output'];
1293
+ createdAt: Scalars['DateTime']['output'];
1294
+ /** What the model decided (e.g. the suggestions it returned), as recorded. */
1295
+ decision?: Maybe<Scalars['JSON']['output']>;
1296
+ error?: Maybe<Scalars['String']['output']>;
1297
+ id: Scalars['ID']['output'];
1298
+ latencyMs?: Maybe<Scalars['Int']['output']>;
1299
+ model: Scalars['String']['output'];
1300
+ promptSummary: Scalars['String']['output'];
1301
+ provider: Scalars['String']['output'];
1302
+ status: PlanmagnetAgentRunStatus;
1303
+ tokensIn?: Maybe<Scalars['Int']['output']>;
1304
+ tokensOut?: Maybe<Scalars['Int']['output']>;
1305
+ trigger: PlanmagnetAgentRunTrigger;
1306
+ workspaceId: Scalars['ID']['output'];
1307
+ };
1308
+ export type PlanmagnetAgentRunFilter = {
1309
+ status?: InputMaybe<PlanmagnetAgentRunStatus>;
1310
+ };
1311
+ export type PlanmagnetAgentRunList = {
1312
+ __typename?: 'PlanmagnetAgentRunList';
1313
+ items: Array<PlanmagnetAgentRun>;
1314
+ pageInfo: PlanmagnetPageInfo;
1315
+ totalCount: Scalars['Int']['output'];
1316
+ };
1317
+ /**
1318
+ * Values mirror the Prisma enum exactly. Enum drift between the two layers is
1319
+ * how every dependency write in this service 500'd for months — see
1320
+ * 20260924130000 — so do not add a value here without the migration.
1321
+ */
1322
+ export declare enum PlanmagnetAgentRunStatus {
1323
+ Failed = "FAILED",
1324
+ Succeeded = "SUCCEEDED"
1325
+ }
1326
+ export declare enum PlanmagnetAgentRunTrigger {
1327
+ Manual = "MANUAL"
1328
+ }
1266
1329
  export type PlanmagnetApplyTemplateInput = {
1267
1330
  ownerId: Scalars['String']['input'];
1268
1331
  projectDescription?: InputMaybe<Scalars['String']['input']>;
@@ -1598,6 +1661,8 @@ export type PlanmagnetCreateBoardInput = {
1598
1661
  name: Scalars['String']['input'];
1599
1662
  projectId: Scalars['String']['input'];
1600
1663
  type: BoardType;
1664
+ /** Also create one column per status of the default workflow (Backlog, To Do, In Progress, In Review, Testing, Done), each mapped to its status */
1665
+ withDefaultColumns?: InputMaybe<Scalars['Boolean']['input']>;
1601
1666
  };
1602
1667
  export type PlanmagnetCreateBudgetInput = {
1603
1668
  currency: Scalars['String']['input'];
@@ -3125,6 +3190,22 @@ export type PlanmagnetWorkItemBreakdownResult = {
3125
3190
  provider: Scalars['String']['output'];
3126
3191
  suggestions: Array<PlanmagnetWorkItemSuggestion>;
3127
3192
  };
3193
+ /**
3194
+ * Server-side counts of the work items matching a filter. The list query returns
3195
+ * at most 100 rows per page, so a count taken from a page undercounts any
3196
+ * workspace with more than 100 items.
3197
+ */
3198
+ export type PlanmagnetWorkItemCounts = {
3199
+ __typename?: 'PlanmagnetWorkItemCounts';
3200
+ /** Matching work items per project and status */
3201
+ byProject: Array<PlanmagnetWorkItemProjectStatusCount>;
3202
+ /** Matching work items per status (statuses with no items are omitted) */
3203
+ byStatus: Array<PlanmagnetWorkItemStatusCount>;
3204
+ /** Sum of story points over every matching work item */
3205
+ points: Scalars['Int']['output'];
3206
+ /** Every matching work item */
3207
+ total: Scalars['Int']['output'];
3208
+ };
3128
3209
  export type PlanmagnetWorkItemDependencyList = {
3129
3210
  __typename?: 'PlanmagnetWorkItemDependencyList';
3130
3211
  items: Array<WorkItemDependency>;
@@ -3161,6 +3242,22 @@ export type PlanmagnetWorkItemList = {
3161
3242
  pageInfo: PlanmagnetPageInfo;
3162
3243
  totalCount: Scalars['Int']['output'];
3163
3244
  };
3245
+ export type PlanmagnetWorkItemProjectStatusCount = {
3246
+ __typename?: 'PlanmagnetWorkItemProjectStatusCount';
3247
+ count: Scalars['Int']['output'];
3248
+ /** Sum of story points of these work items (items without an estimate count as 0) */
3249
+ points: Scalars['Int']['output'];
3250
+ projectId: Scalars['String']['output'];
3251
+ status: Scalars['String']['output'];
3252
+ };
3253
+ export type PlanmagnetWorkItemStatusCount = {
3254
+ __typename?: 'PlanmagnetWorkItemStatusCount';
3255
+ count: Scalars['Int']['output'];
3256
+ /** Sum of story points of these work items (items without an estimate count as 0) */
3257
+ points: Scalars['Int']['output'];
3258
+ /** A WorkItemStatus value. A String, not the enum, so a stored status the API does not expose yet (BLOCKED) cannot fail the whole query */
3259
+ status: Scalars['String']['output'];
3260
+ };
3164
3261
  export type PlanmagnetWorkItemSuggestion = {
3165
3262
  __typename?: 'PlanmagnetWorkItemSuggestion';
3166
3263
  description?: Maybe<Scalars['String']['output']>;
@@ -3492,6 +3589,21 @@ export type Query = {
3492
3589
  planmagnetMilestone?: Maybe<Milestone>;
3493
3590
  /** List milestones in a workspace */
3494
3591
  planmagnetMilestones: PlanmagnetMilestoneList;
3592
+ /**
3593
+ * The CALLING actor's own AI calls in this workspace, newest first.
3594
+ *
3595
+ * Until 2026-09-24 the ledger was write-only: every AI call was recorded and
3596
+ * nothing could read the record back.
3597
+ *
3598
+ * Two checks, deliberately both. The directive requires read on planmagnet-ai
3599
+ * in this workspace, so someone removed from the workspace loses access to it.
3600
+ * The resolver then filters on the caller's own actorId, which is what makes
3601
+ * this a personal list — the rows are other people's prompts otherwise, and a
3602
+ * workspace-wide view needs its own policy decision (see BOFF-7868: every
3603
+ * member currently holds VIEWER on planmagnet-admin, so gating on that would
3604
+ * show everyone's prompts to everyone).
3605
+ */
3606
+ planmagnetMyAgentRuns: PlanmagnetAgentRunList;
3495
3607
  planmagnetObjective?: Maybe<PlanmagnetObjective>;
3496
3608
  planmagnetObjectives: PlanmagnetObjectiveList;
3497
3609
  /** Get a single portfolio by ID */
@@ -3566,6 +3678,11 @@ export type Query = {
3566
3678
  planmagnetVelocity: PlanmagnetVelocity;
3567
3679
  /** Get a single work item by ID */
3568
3680
  planmagnetWorkItem?: Maybe<WorkItem>;
3681
+ /**
3682
+ * Count work items matching a filter, in total, per status and per project,
3683
+ * computed on the server
3684
+ */
3685
+ planmagnetWorkItemCounts: PlanmagnetWorkItemCounts;
3569
3686
  /** Docs currently linked to a given work item. */
3570
3687
  planmagnetWorkItemDocs: Array<PlanmagnetDoc>;
3571
3688
  /** Get a single work item link by ID */
@@ -3711,6 +3828,11 @@ export type QueryPlanmagnetMilestonesArgs = {
3711
3828
  pagination?: InputMaybe<PlanmagnetPaginationInput>;
3712
3829
  workspaceId: Scalars['ID']['input'];
3713
3830
  };
3831
+ export type QueryPlanmagnetMyAgentRunsArgs = {
3832
+ filter?: InputMaybe<PlanmagnetAgentRunFilter>;
3833
+ pagination?: InputMaybe<PlanmagnetPaginationInput>;
3834
+ workspaceId: Scalars['ID']['input'];
3835
+ };
3714
3836
  export type QueryPlanmagnetObjectiveArgs = {
3715
3837
  id: Scalars['ID']['input'];
3716
3838
  };
@@ -3836,6 +3958,10 @@ export type QueryPlanmagnetVelocityArgs = {
3836
3958
  export type QueryPlanmagnetWorkItemArgs = {
3837
3959
  id: Scalars['ID']['input'];
3838
3960
  };
3961
+ export type QueryPlanmagnetWorkItemCountsArgs = {
3962
+ filter?: InputMaybe<PlanmagnetWorkItemFilter>;
3963
+ workspaceId: Scalars['ID']['input'];
3964
+ };
3839
3965
  export type QueryPlanmagnetWorkItemDocsArgs = {
3840
3966
  workItemId: Scalars['ID']['input'];
3841
3967
  };