@burdenoff/cli-sdk 2026.825.1 → 2026.928.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.
@@ -1,119 +1,119 @@
1
- import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var I="pageInfo { hasNextPage endCursor } totalCount",k=`
1
+ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var I="pageInfo { hasNextPage endCursor } totalCount",S=`
2
2
  id key name description status methodology ownerId programId
3
3
  startDate endDate tags createdAt updatedAt workspaceId
4
- `,H=`
4
+ `,X=`
5
5
  query PlanmagnetProjects($filter: PlanmagnetProjectFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
6
6
  planmagnetProjects(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
7
- items { ${k} }
7
+ items { ${S} }
8
8
  ${I}
9
9
  }
10
10
  }
11
- `,Z=`
11
+ `,z=`
12
12
  query PlanmagnetProject($id: ID!) {
13
- planmagnetProject(id: $id) { ${k} }
13
+ planmagnetProject(id: $id) { ${S} }
14
14
  }
15
- `,tt=`
15
+ `,H=`
16
16
  mutation PlanmagnetCreateProject($input: PlanmagnetCreateProjectInput!) {
17
- planmagnetCreateProject(input: $input) { ${k} }
17
+ planmagnetCreateProject(input: $input) { ${S} }
18
18
  }
19
- `,et=`
19
+ `,Z=`
20
20
  mutation PlanmagnetUpdateProject($id: ID!, $input: PlanmagnetUpdateProjectInput!) {
21
- planmagnetUpdateProject(id: $id, input: $input) { ${k} }
21
+ planmagnetUpdateProject(id: $id, input: $input) { ${S} }
22
22
  }
23
- `,nt=`
23
+ `,tt=`
24
24
  mutation PlanmagnetDeleteProject($id: ID!) {
25
25
  planmagnetDeleteProject(id: $id)
26
26
  }
27
27
  `,h=`
28
28
  id name description category isBuiltIn isPublished usageCount
29
29
  tags createdAt updatedAt workspaceId
30
- `,at=`
30
+ `,et=`
31
31
  query PlanmagnetProjectTemplates($filter: PlanmagnetProjectTemplateFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
32
32
  planmagnetProjectTemplates(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
33
33
  items { ${h} }
34
34
  ${I}
35
35
  }
36
36
  }
37
- `,it=`
37
+ `,nt=`
38
38
  query PlanmagnetProjectTemplate($id: ID!) {
39
39
  planmagnetProjectTemplate(id: $id) { ${h} configuration boardConfig sprintConfig customFieldsConfig }
40
40
  }
41
- `,ot=`
41
+ `,at=`
42
42
  mutation PlanmagnetCreateProjectTemplate($input: PlanmagnetCreateProjectTemplateInput!) {
43
43
  planmagnetCreateProjectTemplate(input: $input) { ${h} }
44
44
  }
45
- `,rt=`
45
+ `,it=`
46
46
  mutation PlanmagnetUpdateProjectTemplate($id: ID!, $input: PlanmagnetUpdateProjectTemplateInput!) {
47
47
  planmagnetUpdateProjectTemplate(id: $id, input: $input) { ${h} }
48
48
  }
49
- `,st=`
49
+ `,ot=`
50
50
  mutation PlanmagnetDeleteProjectTemplate($id: ID!) {
51
51
  planmagnetDeleteProjectTemplate(id: $id)
52
52
  }
53
- `,pt=`
53
+ `,rt=`
54
54
  mutation PlanmagnetApplyTemplate($input: PlanmagnetApplyTemplateInput!) {
55
- planmagnetApplyTemplate(input: $input) { ${k} }
55
+ planmagnetApplyTemplate(input: $input) { ${S} }
56
56
  }
57
- `,mt=`
57
+ `,st=`
58
58
  mutation PlanmagnetCreateTemplateFromProject($projectId: ID!, $name: String!, $description: String) {
59
59
  planmagnetCreateTemplateFromProject(projectId: $projectId, name: $name, description: $description) { ${h} }
60
60
  }
61
61
  `,j=`
62
62
  id name description status ownerId budgetTotal currency
63
63
  startDate endDate tags createdAt updatedAt workspaceId
64
- `,dt=`
64
+ `,pt=`
65
65
  query PlanmagnetPrograms($filter: PlanmagnetProgramFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
66
66
  planmagnetPrograms(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
67
67
  items { ${j} }
68
68
  ${I}
69
69
  }
70
70
  }
71
- `,ct=`
71
+ `,mt=`
72
72
  query PlanmagnetProgram($id: ID!) {
73
73
  planmagnetProgram(id: $id) { ${j} }
74
74
  }
75
- `,ut=`
75
+ `,dt=`
76
76
  mutation PlanmagnetCreateProgram($input: PlanmagnetCreateProgramInput!) {
77
77
  planmagnetCreateProgram(input: $input) { ${j} }
78
78
  }
79
- `,lt=`
79
+ `,ct=`
80
80
  mutation PlanmagnetUpdateProgram($id: ID!, $input: PlanmagnetUpdateProgramInput!) {
81
81
  planmagnetUpdateProgram(id: $id, input: $input) { ${j} }
82
82
  }
83
- `,gt=`
83
+ `,ut=`
84
84
  mutation PlanmagnetDeleteProgram($id: ID!) {
85
85
  planmagnetDeleteProgram(id: $id)
86
86
  }
87
87
  `,x=`
88
88
  id name description status ownerId alignment alignmentLabel
89
89
  budgetTotal currency fiscalPeriod tags createdAt updatedAt workspaceId
90
- `,ft=`
90
+ `,lt=`
91
91
  query PlanmagnetPortfolios($filter: PlanmagnetPortfolioFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
92
92
  planmagnetPortfolios(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
93
93
  items { ${x} }
94
94
  ${I}
95
95
  }
96
96
  }
97
- `,It=`
97
+ `,gt=`
98
98
  query PlanmagnetPortfolio($id: ID!) {
99
99
  planmagnetPortfolio(id: $id) { ${x} }
100
100
  }
101
- `,yt=`
101
+ `,ft=`
102
102
  query PlanmagnetPortfolioOverview($portfolioId: ID!) {
103
103
  planmagnetPortfolioOverview(portfolioId: $portfolioId) {
104
104
  portfolioId totalPrograms totalProjects atRiskCount overdueMilestones
105
105
  totalBudget totalSpent budgetUtilization healthScore projectsByStatus
106
106
  }
107
107
  }
108
- `,wt=`
108
+ `,It=`
109
109
  mutation PlanmagnetCreatePortfolio($input: PlanmagnetCreatePortfolioInput!) {
110
110
  planmagnetCreatePortfolio(input: $input) { ${x} }
111
111
  }
112
- `,Et=`
112
+ `,yt=`
113
113
  mutation PlanmagnetUpdatePortfolio($id: ID!, $input: PlanmagnetUpdatePortfolioInput!) {
114
114
  planmagnetUpdatePortfolio(id: $id, input: $input) { ${x} }
115
115
  }
116
- `,Dt=`
116
+ `,wt=`
117
117
  mutation PlanmagnetDeletePortfolio($id: ID!) {
118
118
  planmagnetDeletePortfolio(id: $id)
119
119
  }
@@ -121,242 +121,242 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
121
121
  id key title description type status priority projectId sprintId
122
122
  parentId assigneeId reporterId storyPoints estimateMinutes timeSpentMinutes
123
123
  dueDate labels tags sortOrder createdAt updatedAt workspaceId
124
- `,Tt=`
124
+ `,Et=`
125
125
  query PlanmagnetWorkItems($filter: PlanmagnetWorkItemFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
126
126
  planmagnetWorkItems(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
127
127
  items { ${R} }
128
128
  ${I}
129
129
  }
130
130
  }
131
- `,Rt=`
131
+ `,Dt=`
132
132
  query PlanmagnetWorkItem($id: ID!) {
133
133
  planmagnetWorkItem(id: $id) { ${R} }
134
134
  }
135
- `,Pt=`
135
+ `,Tt=`
136
136
  mutation PlanmagnetCreateWorkItem($input: PlanmagnetCreateWorkItemInput!) {
137
137
  planmagnetCreateWorkItem(input: $input) { ${R} }
138
138
  }
139
- `,Ot=`
139
+ `,Rt=`
140
140
  mutation PlanmagnetUpdateWorkItem($id: ID!, $input: PlanmagnetUpdateWorkItemInput!) {
141
141
  planmagnetUpdateWorkItem(id: $id, input: $input) { ${R} }
142
142
  }
143
- `,Ct=`
143
+ `,Pt=`
144
144
  mutation PlanmagnetDeleteWorkItem($id: ID!) {
145
145
  planmagnetDeleteWorkItem(id: $id)
146
146
  }
147
- `,$t=`
147
+ `,Ot=`
148
148
  mutation PlanmagnetAssignWorkItem($id: ID!, $input: PlanmagnetAssignWorkItemInput!) {
149
149
  planmagnetAssignWorkItem(id: $id, input: $input) { ${R} }
150
150
  }
151
- `,St=`
151
+ `,Ct=`
152
152
  mutation PlanmagnetMoveWorkItem($id: ID!, $input: PlanmagnetMoveWorkItemInput!) {
153
153
  planmagnetMoveWorkItem(id: $id, input: $input) { ${R} }
154
154
  }
155
- `,kt=`
155
+ `,$t=`
156
156
  mutation PlanmagnetBulkUpdateWorkItems($input: PlanmagnetBulkUpdateWorkItemsInput!) {
157
157
  planmagnetBulkUpdateWorkItems(input: $input) { ${R} }
158
158
  }
159
159
  `,F=`
160
160
  id sourceWorkItemId targetWorkItemId type status description
161
161
  createdAt updatedAt workspaceId
162
- `,ht=`
162
+ `,kt=`
163
163
  query PlanmagnetDependencies($filter: PlanmagnetDependencyFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
164
164
  planmagnetDependencies(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
165
165
  items { ${F} }
166
166
  ${I}
167
167
  }
168
168
  }
169
- `,At=`
169
+ `,St=`
170
170
  query PlanmagnetDependency($id: ID!) {
171
171
  planmagnetDependency(id: $id) { ${F} }
172
172
  }
173
- `,bt=`
173
+ `,ht=`
174
174
  mutation PlanmagnetCreateDependency($input: PlanmagnetCreateDependencyInput!) {
175
175
  planmagnetCreateDependency(input: $input) { ${F} }
176
176
  }
177
- `,_t=`
177
+ `,At=`
178
178
  mutation PlanmagnetUpdateDependency($id: ID!, $input: PlanmagnetUpdateDependencyInput!) {
179
179
  planmagnetUpdateDependency(id: $id, input: $input) { ${F} }
180
180
  }
181
- `,Ut=`
181
+ `,bt=`
182
182
  mutation PlanmagnetDeleteDependency($id: ID!) {
183
183
  planmagnetDeleteDependency(id: $id)
184
184
  }
185
185
  `,T=`
186
186
  id name goal status projectId capacity velocity sortOrder
187
187
  startDate endDate createdAt updatedAt workspaceId
188
- `,Lt=`
188
+ `,_t=`
189
189
  query PlanmagnetSprints($filter: PlanmagnetSprintFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
190
190
  planmagnetSprints(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
191
191
  items { ${T} }
192
192
  ${I}
193
193
  }
194
194
  }
195
- `,jt=`
195
+ `,Ut=`
196
196
  query PlanmagnetSprint($id: ID!) {
197
197
  planmagnetSprint(id: $id) { ${T} }
198
198
  }
199
- `,xt=`
199
+ `,Lt=`
200
200
  mutation PlanmagnetCreateSprint($input: PlanmagnetCreateSprintInput!) {
201
201
  planmagnetCreateSprint(input: $input) { ${T} }
202
202
  }
203
- `,Ft=`
203
+ `,jt=`
204
204
  mutation PlanmagnetUpdateSprint($id: ID!, $input: PlanmagnetUpdateSprintInput!) {
205
205
  planmagnetUpdateSprint(id: $id, input: $input) { ${T} }
206
206
  }
207
- `,Mt=`
207
+ `,xt=`
208
208
  mutation PlanmagnetDeleteSprint($id: ID!) {
209
209
  planmagnetDeleteSprint(id: $id)
210
210
  }
211
- `,Nt=`
211
+ `,Ft=`
212
212
  mutation PlanmagnetStartSprint($id: ID!) {
213
213
  planmagnetStartSprint(id: $id) { ${T} }
214
214
  }
215
- `,qt=`
215
+ `,Mt=`
216
216
  mutation PlanmagnetCompleteSprint($id: ID!) {
217
217
  planmagnetCompleteSprint(id: $id) { ${T} }
218
218
  }
219
- `,vt=`
219
+ `,Nt=`
220
220
  mutation PlanmagnetCancelSprint($id: ID!) {
221
221
  planmagnetCancelSprint(id: $id) { ${T} }
222
222
  }
223
- `,Bt=`
223
+ `,qt=`
224
224
  mutation PlanmagnetAddWorkItemsToSprint($id: ID!, $input: PlanmagnetSprintWorkItemsInput!) {
225
225
  planmagnetAddWorkItemsToSprint(id: $id, input: $input) { ${T} }
226
226
  }
227
- `,Gt=`
227
+ `,vt=`
228
228
  mutation PlanmagnetRemoveWorkItemsFromSprint($id: ID!, $input: PlanmagnetSprintWorkItemsInput!) {
229
229
  planmagnetRemoveWorkItemsFromSprint(id: $id, input: $input) { ${T} }
230
230
  }
231
231
  `,O=`
232
232
  id name description type isDefault projectId createdAt updatedAt workspaceId
233
233
  columns { id name type mappedStatus wipLimit sortOrder }
234
- `,Wt=`
234
+ `,Bt=`
235
235
  query PlanmagnetBoards($filter: PlanmagnetBoardFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
236
236
  planmagnetBoards(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
237
237
  items { ${O} }
238
238
  ${I}
239
239
  }
240
240
  }
241
- `,Vt=`
241
+ `,Gt=`
242
242
  query PlanmagnetBoard($id: ID!) {
243
243
  planmagnetBoard(id: $id) { ${O} }
244
244
  }
245
- `,Qt=`
245
+ `,Wt=`
246
246
  mutation PlanmagnetCreateBoard($input: PlanmagnetCreateBoardInput!) {
247
247
  planmagnetCreateBoard(input: $input) { ${O} }
248
248
  }
249
- `,Jt=`
249
+ `,Vt=`
250
250
  mutation PlanmagnetUpdateBoard($id: ID!, $input: PlanmagnetUpdateBoardInput!) {
251
251
  planmagnetUpdateBoard(id: $id, input: $input) { ${O} }
252
252
  }
253
- `,Yt=`
253
+ `,Qt=`
254
254
  mutation PlanmagnetDeleteBoard($id: ID!) {
255
255
  planmagnetDeleteBoard(id: $id)
256
256
  }
257
- `,Kt=`
257
+ `,Jt=`
258
258
  mutation PlanmagnetCreateBoardColumn($input: PlanmagnetCreateBoardColumnInput!) {
259
259
  planmagnetCreateBoardColumn(input: $input) {
260
260
  id boardId name type mappedStatus wipLimit sortOrder createdAt updatedAt
261
261
  }
262
262
  }
263
- `,Xt=`
263
+ `,Yt=`
264
264
  mutation PlanmagnetUpdateBoardColumn($id: ID!, $input: PlanmagnetUpdateBoardColumnInput!) {
265
265
  planmagnetUpdateBoardColumn(id: $id, input: $input) {
266
266
  id boardId name type mappedStatus wipLimit sortOrder updatedAt
267
267
  }
268
268
  }
269
- `,zt=`
269
+ `,Kt=`
270
270
  mutation PlanmagnetDeleteBoardColumn($id: ID!) {
271
271
  planmagnetDeleteBoardColumn(id: $id)
272
272
  }
273
- `,Ht=`
273
+ `,Xt=`
274
274
  mutation PlanmagnetMoveCard($boardId: ID!, $input: PlanmagnetMoveCardInput!) {
275
275
  planmagnetMoveCard(boardId: $boardId, input: $input) { ${O} }
276
276
  }
277
- `,Zt=`
277
+ `,zt=`
278
278
  mutation PlanmagnetReorderColumns($boardId: ID!, $input: PlanmagnetReorderColumnsInput!) {
279
279
  planmagnetReorderColumns(boardId: $boardId, input: $input) { ${O} }
280
280
  }
281
281
  `,M=`
282
282
  id name description status projectId ownerId dueDate completedAt
283
283
  sortOrder createdAt updatedAt workspaceId
284
- `,te=`
284
+ `,Ht=`
285
285
  query PlanmagnetMilestones($filter: PlanmagnetMilestoneFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
286
286
  planmagnetMilestones(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
287
287
  items { ${M} }
288
288
  ${I}
289
289
  }
290
290
  }
291
- `,ee=`
291
+ `,Zt=`
292
292
  query PlanmagnetMilestone($id: ID!) {
293
293
  planmagnetMilestone(id: $id) { ${M} }
294
294
  }
295
- `,ne=`
295
+ `,te=`
296
296
  mutation PlanmagnetCreateMilestone($input: PlanmagnetCreateMilestoneInput!) {
297
297
  planmagnetCreateMilestone(input: $input) { ${M} }
298
298
  }
299
- `,ae=`
299
+ `,ee=`
300
300
  mutation PlanmagnetUpdateMilestone($id: ID!, $input: PlanmagnetUpdateMilestoneInput!) {
301
301
  planmagnetUpdateMilestone(id: $id, input: $input) { ${M} }
302
302
  }
303
- `,ie=`
303
+ `,ne=`
304
304
  mutation PlanmagnetDeleteMilestone($id: ID!) {
305
305
  planmagnetDeleteMilestone(id: $id)
306
306
  }
307
307
  `,N=`
308
308
  id name version description status projectId ownerId plannedDate releasedAt
309
309
  releaseNotes tags createdAt updatedAt workspaceId
310
- `,oe=`
310
+ `,ae=`
311
311
  query PlanmagnetReleases($filter: PlanmagnetReleaseFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
312
312
  planmagnetReleases(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
313
313
  items { ${N} }
314
314
  ${I}
315
315
  }
316
316
  }
317
- `,re=`
317
+ `,ie=`
318
318
  query PlanmagnetRelease($id: ID!) {
319
319
  planmagnetRelease(id: $id) { ${N} }
320
320
  }
321
- `,se=`
321
+ `,oe=`
322
322
  mutation PlanmagnetCreateRelease($input: PlanmagnetCreateReleaseInput!) {
323
323
  planmagnetCreateRelease(input: $input) { ${N} }
324
324
  }
325
- `,pe=`
325
+ `,re=`
326
326
  mutation PlanmagnetUpdateRelease($id: ID!, $input: PlanmagnetUpdateReleaseInput!) {
327
327
  planmagnetUpdateRelease(id: $id, input: $input) { ${N} }
328
328
  }
329
- `,me=`
329
+ `,se=`
330
330
  mutation PlanmagnetDeleteRelease($id: ID!) {
331
331
  planmagnetDeleteRelease(id: $id)
332
332
  }
333
333
  `,A=`
334
334
  id name description status phase projectId milestoneId
335
335
  reviewNotes reviewedAt reviewerId sortOrder createdAt updatedAt workspaceId
336
- `,de=`
336
+ `,pe=`
337
337
  query PlanmagnetQualityGates($filter: PlanmagnetQualityGateFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
338
338
  planmagnetQualityGates(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
339
339
  items { ${A} }
340
340
  ${I}
341
341
  }
342
342
  }
343
- `,ce=`
343
+ `,me=`
344
344
  query PlanmagnetQualityGate($id: ID!) {
345
345
  planmagnetQualityGate(id: $id) { ${A} criteria }
346
346
  }
347
- `,ue=`
347
+ `,de=`
348
348
  mutation PlanmagnetCreateQualityGate($input: PlanmagnetCreateQualityGateInput!) {
349
349
  planmagnetCreateQualityGate(input: $input) { ${A} }
350
350
  }
351
- `,le=`
351
+ `,ce=`
352
352
  mutation PlanmagnetUpdateQualityGate($id: ID!, $input: PlanmagnetUpdateQualityGateInput!) {
353
353
  planmagnetUpdateQualityGate(id: $id, input: $input) { ${A} }
354
354
  }
355
- `,ge=`
355
+ `,ue=`
356
356
  mutation PlanmagnetDeleteQualityGate($id: ID!) {
357
357
  planmagnetDeleteQualityGate(id: $id)
358
358
  }
359
- `,fe=`
359
+ `,le=`
360
360
  mutation PlanmagnetReviewQualityGate($id: ID!, $input: PlanmagnetReviewQualityGateInput!) {
361
361
  planmagnetReviewQualityGate(id: $id, input: $input) { ${A} }
362
362
  }
@@ -367,49 +367,49 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
367
367
  `,Q=`
368
368
  id budgetId amount category description date referenceUrl workItemId
369
369
  createdAt updatedAt
370
- `,Ie=`
370
+ `,ge=`
371
371
  query PlanmagnetBudgets($filter: PlanmagnetBudgetFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
372
372
  planmagnetBudgets(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
373
373
  items { ${b} }
374
374
  ${I}
375
375
  }
376
376
  }
377
- `,ye=`
377
+ `,fe=`
378
378
  query PlanmagnetBudget($id: ID!) {
379
379
  planmagnetBudget(id: $id) { ${b} }
380
380
  }
381
- `,we=`
381
+ `,Ie=`
382
382
  query PlanmagnetBudgetExpenses($filter: PlanmagnetBudgetExpenseFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
383
383
  planmagnetBudgetExpenses(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
384
384
  items { ${Q} }
385
385
  ${I}
386
386
  }
387
387
  }
388
- `,Ee=`
388
+ `,ye=`
389
389
  mutation PlanmagnetCreateBudget($input: PlanmagnetCreateBudgetInput!) {
390
390
  planmagnetCreateBudget(input: $input) { ${b} }
391
391
  }
392
- `,De=`
392
+ `,we=`
393
393
  mutation PlanmagnetUpdateBudget($id: ID!, $input: PlanmagnetUpdateBudgetInput!) {
394
394
  planmagnetUpdateBudget(id: $id, input: $input) { ${b} }
395
395
  }
396
- `,Te=`
396
+ `,Ee=`
397
397
  mutation PlanmagnetDeleteBudget($id: ID!) {
398
398
  planmagnetDeleteBudget(id: $id)
399
399
  }
400
- `,Re=`
400
+ `,De=`
401
401
  mutation PlanmagnetApproveBudget($id: ID!) {
402
402
  planmagnetApproveBudget(id: $id) { ${b} }
403
403
  }
404
- `,Pe=`
404
+ `,Te=`
405
405
  mutation PlanmagnetLogExpense($input: PlanmagnetLogExpenseInput!) {
406
406
  planmagnetLogExpense(input: $input) { ${Q} }
407
407
  }
408
- `,Oe=`
408
+ `,Re=`
409
409
  mutation PlanmagnetUpdateExpense($id: ID!, $input: PlanmagnetUpdateExpenseInput!) {
410
410
  planmagnetUpdateExpense(id: $id, input: $input) { ${Q} }
411
411
  }
412
- `,Ce=`
412
+ `,Pe=`
413
413
  mutation PlanmagnetDeleteExpense($id: ID!) {
414
414
  planmagnetDeleteExpense(id: $id)
415
415
  }
@@ -419,57 +419,57 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
419
419
  `,C=`
420
420
  id userId status periodStart periodEnd totalMinutes billableMinutes
421
421
  approverId approvedAt rejectionReason createdAt updatedAt workspaceId
422
- `,$e=`
422
+ `,Oe=`
423
423
  query PlanmagnetTimeEntries($filter: PlanmagnetTimeEntryFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
424
424
  planmagnetTimeEntries(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
425
425
  items { ${_} }
426
426
  ${I}
427
427
  }
428
428
  }
429
- `,Se=`
429
+ `,Ce=`
430
430
  query PlanmagnetTimeEntry($id: ID!) {
431
431
  planmagnetTimeEntry(id: $id) { ${_} }
432
432
  }
433
- `,ke=`
433
+ `,$e=`
434
434
  query PlanmagnetTimesheets($filter: PlanmagnetTimesheetFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
435
435
  planmagnetTimesheets(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
436
436
  items { ${C} }
437
437
  ${I}
438
438
  }
439
439
  }
440
- `,he=`
440
+ `,ke=`
441
441
  query PlanmagnetTimesheet($id: ID!) {
442
442
  planmagnetTimesheet(id: $id) { ${C} }
443
443
  }
444
- `,Ae=`
444
+ `,Se=`
445
445
  mutation PlanmagnetCreateTimeEntry($input: PlanmagnetCreateTimeEntryInput!) {
446
446
  planmagnetCreateTimeEntry(input: $input) { ${_} }
447
447
  }
448
- `,be=`
448
+ `,he=`
449
449
  mutation PlanmagnetUpdateTimeEntry($id: ID!, $input: PlanmagnetUpdateTimeEntryInput!) {
450
450
  planmagnetUpdateTimeEntry(id: $id, input: $input) { ${_} }
451
451
  }
452
- `,_e=`
452
+ `,Ae=`
453
453
  mutation PlanmagnetDeleteTimeEntry($id: ID!) {
454
454
  planmagnetDeleteTimeEntry(id: $id)
455
455
  }
456
- `,Ue=`
456
+ `,be=`
457
457
  mutation PlanmagnetLogTime($input: PlanmagnetLogTimeInput!) {
458
458
  planmagnetLogTime(input: $input) { ${_} }
459
459
  }
460
- `,Le=`
460
+ `,_e=`
461
461
  mutation PlanmagnetCreateTimesheet($input: PlanmagnetCreateTimesheetInput!) {
462
462
  planmagnetCreateTimesheet(input: $input) { ${C} }
463
463
  }
464
- `,je=`
464
+ `,Ue=`
465
465
  mutation PlanmagnetSubmitTimesheet($id: ID!) {
466
466
  planmagnetSubmitTimesheet(id: $id) { ${C} }
467
467
  }
468
- `,xe=`
468
+ `,Le=`
469
469
  mutation PlanmagnetApproveTimesheet($id: ID!) {
470
470
  planmagnetApproveTimesheet(id: $id) { ${C} }
471
471
  }
472
- `,Fe=`
472
+ `,je=`
473
473
  mutation PlanmagnetRejectTimesheet($id: ID!, $reason: String) {
474
474
  planmagnetRejectTimesheet(id: $id, reason: $reason) { ${C} }
475
475
  }
@@ -477,32 +477,32 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
477
477
  id title description category status severity likelihood impact riskScore
478
478
  projectId ownerId mitigationPlan contingencyPlan dueDate resolvedAt
479
479
  tags createdAt updatedAt workspaceId
480
- `,Me=`
480
+ `,xe=`
481
481
  query PlanmagnetRisks($filter: PlanmagnetRiskFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
482
482
  planmagnetRisks(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
483
483
  items { ${q} }
484
484
  ${I}
485
485
  }
486
486
  }
487
- `,Ne=`
487
+ `,Fe=`
488
488
  query PlanmagnetRisk($id: ID!) {
489
489
  planmagnetRisk(id: $id) { ${q} }
490
490
  }
491
- `,qe=`
491
+ `,Me=`
492
492
  query PlanmagnetRiskMatrix($projectId: ID!) {
493
493
  planmagnetRiskMatrix(projectId: $projectId) {
494
494
  projectId totalRisks averageRiskScore bySeverity byStatus matrix
495
495
  }
496
496
  }
497
- `,ve=`
497
+ `,Ne=`
498
498
  mutation PlanmagnetCreateRisk($input: PlanmagnetCreateRiskInput!) {
499
499
  planmagnetCreateRisk(input: $input) { ${q} }
500
500
  }
501
- `,Be=`
501
+ `,qe=`
502
502
  mutation PlanmagnetUpdateRisk($id: ID!, $input: PlanmagnetUpdateRiskInput!) {
503
503
  planmagnetUpdateRisk(id: $id, input: $input) { ${q} }
504
504
  }
505
- `,Ge=`
505
+ `,ve=`
506
506
  mutation PlanmagnetDeleteRisk($id: ID!) {
507
507
  planmagnetDeleteRisk(id: $id)
508
508
  }
@@ -511,49 +511,49 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
511
511
  `,U=`
512
512
  id roadmapId title description status projectId milestoneId workItemId
513
513
  startDate endDate color swimlane sortOrder createdAt updatedAt
514
- `,We=`
514
+ `,Be=`
515
515
  query PlanmagnetRoadmaps($filter: PlanmagnetRoadmapFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
516
516
  planmagnetRoadmaps(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
517
517
  items { ${v} }
518
518
  ${I}
519
519
  }
520
520
  }
521
- `,Ve=`
521
+ `,Ge=`
522
522
  query PlanmagnetRoadmap($id: ID!) {
523
523
  planmagnetRoadmap(id: $id) { ${v} items { ${U} } }
524
524
  }
525
- `,Qe=`
525
+ `,We=`
526
526
  query PlanmagnetRoadmapItems($filter: PlanmagnetRoadmapItemFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
527
527
  planmagnetRoadmapItems(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
528
528
  items { ${U} }
529
529
  ${I}
530
530
  }
531
531
  }
532
- `,Je=`
532
+ `,Ve=`
533
533
  query PlanmagnetRoadmapItem($id: ID!) {
534
534
  planmagnetRoadmapItem(id: $id) { ${U} }
535
535
  }
536
- `,Ye=`
536
+ `,Qe=`
537
537
  mutation PlanmagnetCreateRoadmap($input: PlanmagnetCreateRoadmapInput!) {
538
538
  planmagnetCreateRoadmap(input: $input) { ${v} }
539
539
  }
540
- `,Ke=`
540
+ `,Je=`
541
541
  mutation PlanmagnetUpdateRoadmap($id: ID!, $input: PlanmagnetUpdateRoadmapInput!) {
542
542
  planmagnetUpdateRoadmap(id: $id, input: $input) { ${v} }
543
543
  }
544
- `,Xe=`
544
+ `,Ye=`
545
545
  mutation PlanmagnetDeleteRoadmap($id: ID!) {
546
546
  planmagnetDeleteRoadmap(id: $id)
547
547
  }
548
- `,ze=`
548
+ `,Ke=`
549
549
  mutation PlanmagnetCreateRoadmapItem($input: PlanmagnetCreateRoadmapItemInput!) {
550
550
  planmagnetCreateRoadmapItem(input: $input) { ${U} }
551
551
  }
552
- `,He=`
552
+ `,Xe=`
553
553
  mutation PlanmagnetUpdateRoadmapItem($id: ID!, $input: PlanmagnetUpdateRoadmapItemInput!) {
554
554
  planmagnetUpdateRoadmapItem(id: $id, input: $input) { ${U} }
555
555
  }
556
- `,Ze=`
556
+ `,ze=`
557
557
  mutation PlanmagnetDeleteRoadmapItem($id: ID!) {
558
558
  planmagnetDeleteRoadmapItem(id: $id)
559
559
  }
@@ -562,234 +562,213 @@ import {a,b as b$1,h as h$1,g as g$1,i,t,p}from'../../chunk-WXDQ3S5J.js';import
562
562
  priorityScore voteCount tags workItemId createdAt updatedAt workspaceId
563
563
  `,B=`
564
564
  id name description website tags createdAt updatedAt workspaceId
565
- `,tn=`
565
+ `,He=`
566
566
  query PlanmagnetFeatureRequests($filter: PlanmagnetFeatureRequestFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
567
567
  planmagnetFeatureRequests(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
568
568
  items { ${$} }
569
569
  ${I}
570
570
  }
571
571
  }
572
- `,en=`
572
+ `,Ze=`
573
573
  query PlanmagnetFeatureRequest($id: ID!) {
574
574
  planmagnetFeatureRequest(id: $id) { ${$} }
575
575
  }
576
- `,nn=`
576
+ `,tn=`
577
577
  mutation PlanmagnetCreateFeatureRequest($input: PlanmagnetCreateFeatureRequestInput!) {
578
578
  planmagnetCreateFeatureRequest(input: $input) { ${$} }
579
579
  }
580
- `,an=`
580
+ `,en=`
581
581
  mutation PlanmagnetUpdateFeatureRequest($id: ID!, $input: PlanmagnetUpdateFeatureRequestInput!) {
582
582
  planmagnetUpdateFeatureRequest(id: $id, input: $input) { ${$} }
583
583
  }
584
- `,on=`
584
+ `,nn=`
585
585
  mutation PlanmagnetDeleteFeatureRequest($id: ID!) {
586
586
  planmagnetDeleteFeatureRequest(id: $id)
587
587
  }
588
- `,rn=`
588
+ `,an=`
589
589
  mutation PlanmagnetVoteOnFeature($featureRequestId: ID!, $input: PlanmagnetVoteOnFeatureInput) {
590
590
  planmagnetVoteOnFeature(featureRequestId: $featureRequestId, input: $input) {
591
591
  id featureRequestId voterId weight comment createdAt
592
592
  }
593
593
  }
594
- `,sn=`
594
+ `,on=`
595
595
  mutation PlanmagnetRemoveFeatureVote($featureRequestId: ID!) {
596
596
  planmagnetRemoveFeatureVote(featureRequestId: $featureRequestId)
597
597
  }
598
- `,pn=`
598
+ `,rn=`
599
599
  mutation PlanmagnetLinkCompetitorToFeature($input: PlanmagnetLinkCompetitorInput!) {
600
600
  planmagnetLinkCompetitorToFeature(input: $input) { ${$} }
601
601
  }
602
- `,mn=`
602
+ `,sn=`
603
603
  mutation PlanmagnetUnlinkCompetitorFromFeature($input: PlanmagnetLinkCompetitorInput!) {
604
604
  planmagnetUnlinkCompetitorFromFeature(input: $input) { ${$} }
605
605
  }
606
- `,dn=`
606
+ `,pn=`
607
607
  query PlanmagnetCompetitors($filter: PlanmagnetCompetitorFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
608
608
  planmagnetCompetitors(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
609
609
  items { ${B} }
610
610
  ${I}
611
611
  }
612
612
  }
613
- `,cn=`
613
+ `,mn=`
614
614
  query PlanmagnetCompetitor($id: ID!) {
615
615
  planmagnetCompetitor(id: $id) { ${B} }
616
616
  }
617
- `,un=`
617
+ `,dn=`
618
618
  mutation PlanmagnetCreateCompetitor($input: PlanmagnetCreateCompetitorInput!) {
619
619
  planmagnetCreateCompetitor(input: $input) { ${B} }
620
620
  }
621
- `,ln=`
621
+ `,cn=`
622
622
  mutation PlanmagnetUpdateCompetitor($id: ID!, $input: PlanmagnetUpdateCompetitorInput!) {
623
623
  planmagnetUpdateCompetitor(id: $id, input: $input) { ${B} }
624
624
  }
625
- `,gn=`
625
+ `,un=`
626
626
  mutation PlanmagnetDeleteCompetitor($id: ID!) {
627
627
  planmagnetDeleteCompetitor(id: $id)
628
628
  }
629
629
  `,G=`
630
630
  id name description fieldType isRequired projectId sortOrder
631
631
  defaultValue options createdAt updatedAt workspaceId
632
- `,fn=`
632
+ `,ln=`
633
633
  id definitionId workItemId value setBy createdAt updatedAt
634
- `,In=`
634
+ `,gn=`
635
635
  query PlanmagnetCustomFieldDefinitions($filter: PlanmagnetCustomFieldDefinitionFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
636
636
  planmagnetCustomFieldDefinitions(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
637
637
  items { ${G} }
638
638
  ${I}
639
639
  }
640
640
  }
641
- `,yn=`
641
+ `,fn=`
642
642
  query PlanmagnetCustomFieldDefinition($id: ID!) {
643
643
  planmagnetCustomFieldDefinition(id: $id) { ${G} validationRules }
644
644
  }
645
- `,wn=`
645
+ `,In=`
646
646
  query PlanmagnetCustomFieldValues($filter: PlanmagnetCustomFieldValueFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
647
647
  planmagnetCustomFieldValues(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
648
- items { ${fn} }
648
+ items { ${ln} }
649
649
  ${I}
650
650
  }
651
651
  }
652
- `,En=`
652
+ `,yn=`
653
653
  mutation PlanmagnetCreateCustomFieldDefinition($input: PlanmagnetCreateCustomFieldDefinitionInput!) {
654
654
  planmagnetCreateCustomFieldDefinition(input: $input) { ${G} }
655
655
  }
656
- `,Dn=`
656
+ `,wn=`
657
657
  mutation PlanmagnetUpdateCustomFieldDefinition($id: ID!, $input: PlanmagnetUpdateCustomFieldDefinitionInput!) {
658
658
  planmagnetUpdateCustomFieldDefinition(id: $id, input: $input) { ${G} }
659
659
  }
660
- `,Tn=`
660
+ `,En=`
661
661
  mutation PlanmagnetDeleteCustomFieldDefinition($id: ID!) {
662
662
  planmagnetDeleteCustomFieldDefinition(id: $id)
663
663
  }
664
- `,Rn=`
664
+ `,Dn=`
665
665
  mutation PlanmagnetSetCustomFieldValue($input: PlanmagnetSetCustomFieldValueInput!) {
666
- planmagnetSetCustomFieldValue(input: $input) { ${fn} }
666
+ planmagnetSetCustomFieldValue(input: $input) { ${ln} }
667
667
  }
668
- `,Pn=`
668
+ `,Tn=`
669
669
  mutation PlanmagnetRemoveCustomFieldValue($workItemId: ID!, $definitionId: ID!) {
670
670
  planmagnetRemoveCustomFieldValue(workItemId: $workItemId, definitionId: $definitionId)
671
671
  }
672
672
  `,L=`
673
673
  id name description status triggerType projectId executionCount
674
674
  lastExecutedAt sortOrder createdAt updatedAt workspaceId
675
- `,On=`
675
+ `,Rn=`
676
676
  id ruleId status executedAt completedAt durationMs errorMessage
677
- `,Cn=`
677
+ `,Pn=`
678
678
  query PlanmagnetAutomationRules($filter: PlanmagnetAutomationRuleFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
679
679
  planmagnetAutomationRules(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
680
680
  items { ${L} }
681
681
  ${I}
682
682
  }
683
683
  }
684
- `,$n=`
684
+ `,On=`
685
685
  query PlanmagnetAutomationRule($id: ID!) {
686
686
  planmagnetAutomationRule(id: $id) { ${L} triggerConfig conditions actions }
687
687
  }
688
- `,Sn=`
688
+ `,Cn=`
689
689
  query PlanmagnetAutomationExecutions($filter: PlanmagnetAutomationExecutionFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
690
690
  planmagnetAutomationExecutions(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
691
- items { ${On} }
691
+ items { ${Rn} }
692
692
  ${I}
693
693
  }
694
694
  }
695
- `,kn=`
695
+ `,$n=`
696
696
  mutation PlanmagnetCreateAutomationRule($input: PlanmagnetCreateAutomationRuleInput!) {
697
697
  planmagnetCreateAutomationRule(input: $input) { ${L} }
698
698
  }
699
- `,hn=`
699
+ `,kn=`
700
700
  mutation PlanmagnetUpdateAutomationRule($id: ID!, $input: PlanmagnetUpdateAutomationRuleInput!) {
701
701
  planmagnetUpdateAutomationRule(id: $id, input: $input) { ${L} }
702
702
  }
703
- `,An=`
703
+ `,Sn=`
704
704
  mutation PlanmagnetDeleteAutomationRule($id: ID!) {
705
705
  planmagnetDeleteAutomationRule(id: $id)
706
706
  }
707
- `,bn=`
707
+ `,hn=`
708
708
  mutation PlanmagnetToggleAutomationRule($id: ID!, $status: AutomationStatus!) {
709
709
  planmagnetToggleAutomationRule(id: $id, status: $status) { ${L} }
710
710
  }
711
- `,_n=`
711
+ `,An=`
712
712
  mutation PlanmagnetExecuteAutomationRule($id: ID!, $triggerData: JSON) {
713
- planmagnetExecuteAutomationRule(id: $id, triggerData: $triggerData) { ${On} }
713
+ planmagnetExecuteAutomationRule(id: $id, triggerData: $triggerData) { ${Rn} }
714
714
  }
715
- `,S=`
715
+ `,k=`
716
716
  id provider direction status projectId externalProjectId externalProjectUrl
717
717
  lastSyncedAt lastSyncError totalItemsSynced createdAt updatedAt workspaceId
718
- `,Ia=`
718
+ `,ma=`
719
719
  id syncId internalType internalId externalType externalId externalUrl
720
720
  lastSyncDirection lastSyncedAt createdAt updatedAt
721
721
  `,J=`
722
722
  syncId success itemsCreated itemsUpdated itemsSkipped errorCount errors
723
723
  durationMs syncedAt
724
- `,Un=`
724
+ `,bn=`
725
725
  query PlanmagnetExternalSyncs($filter: PlanmagnetExternalSyncFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
726
726
  planmagnetExternalSyncs(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
727
- items { ${S} }
727
+ items { ${k} }
728
728
  ${I}
729
729
  }
730
730
  }
731
- `,Ln=`
731
+ `,_n=`
732
732
  query PlanmagnetExternalSync($id: ID!) {
733
- planmagnetExternalSync(id: $id) { ${S} fieldMapping syncFilters }
733
+ planmagnetExternalSync(id: $id) { ${k} fieldMapping syncFilters }
734
734
  }
735
- `,jn=`
735
+ `,Un=`
736
736
  query PlanmagnetExternalMappings($filter: PlanmagnetExternalMappingFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
737
737
  planmagnetExternalMappings(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
738
- items { ${Ia} }
738
+ items { ${ma} }
739
739
  ${I}
740
740
  }
741
741
  }
742
- `,xn=`
742
+ `,Ln=`
743
743
  mutation PlanmagnetCreateExternalSync($input: PlanmagnetCreateExternalSyncInput!) {
744
- planmagnetCreateExternalSync(input: $input) { ${S} }
744
+ planmagnetCreateExternalSync(input: $input) { ${k} }
745
745
  }
746
- `,Fn=`
746
+ `,jn=`
747
747
  mutation PlanmagnetUpdateExternalSync($id: ID!, $input: PlanmagnetUpdateExternalSyncInput!) {
748
- planmagnetUpdateExternalSync(id: $id, input: $input) { ${S} }
748
+ planmagnetUpdateExternalSync(id: $id, input: $input) { ${k} }
749
749
  }
750
- `,Mn=`
750
+ `,xn=`
751
751
  mutation PlanmagnetDeleteExternalSync($id: ID!) {
752
752
  planmagnetDeleteExternalSync(id: $id)
753
753
  }
754
- `,Nn=`
754
+ `,Fn=`
755
755
  mutation PlanmagnetPauseExternalSync($id: ID!) {
756
- planmagnetPauseExternalSync(id: $id) { ${S} }
756
+ planmagnetPauseExternalSync(id: $id) { ${k} }
757
757
  }
758
- `,qn=`
758
+ `,Mn=`
759
759
  mutation PlanmagnetResumeExternalSync($id: ID!) {
760
- planmagnetResumeExternalSync(id: $id) { ${S} }
760
+ planmagnetResumeExternalSync(id: $id) { ${k} }
761
761
  }
762
- `,vn=`
762
+ `,Nn=`
763
763
  mutation PlanmagnetStartSync($id: ID!) {
764
764
  planmagnetStartSync(id: $id) { ${J} }
765
765
  }
766
- `,Bn=`
766
+ `,qn=`
767
767
  mutation PlanmagnetExportToExternal($input: PlanmagnetExportToExternalInput!) {
768
768
  planmagnetExportToExternal(input: $input) { ${J} }
769
769
  }
770
- `,Gn=`
770
+ `,vn=`
771
771
  mutation PlanmagnetImportFromExternal($input: PlanmagnetImportFromExternalInput!) {
772
772
  planmagnetImportFromExternal(input: $input) { ${J} }
773
773
  }
774
- `,Y=`
775
- id userId state createdAt updatedAt workspaceId
776
- `,Wn=`
777
- query PlanmagnetUiSessions($filter: PlanmagnetUISessionFilter, $pagination: PlanmagnetPaginationInput, $workspaceId: ID!) {
778
- planmagnetUiSessions(filter: $filter, pagination: $pagination, workspaceId: $workspaceId) {
779
- items { ${Y} }
780
- ${I}
781
- }
782
- }
783
- `,Vn=`
784
- query PlanmagnetGetOrCreateUISession($workspaceId: ID!) {
785
- planmagnetGetOrCreateUISession(workspaceId: $workspaceId) { ${Y} }
786
- }
787
- `,Qn=`
788
- mutation PlanmagnetUpdateUISession($input: PlanmagnetUISessionViewStateInput!) {
789
- planmagnetUpdateUISession(input: $input) { ${Y} }
790
- }
791
- `,Jn=`
792
- mutation PlanmagnetDeleteUISession($id: ID!) {
793
- planmagnetDeleteUISession(id: $id)
794
- }
795
- `;function g(c,a){try{return JSON.parse(a)}catch{throw new o(`--${c} must be valid JSON`)}}function l(c){let a=Number.parseInt(c,10);if(Number.isNaN(a))throw new o(`Expected an integer but got "${c}"`);return a}function D(c){let a=Number.parseFloat(c);if(Number.isNaN(a))throw new o(`Expected a number but got "${c}"`);return a}function f(c){return c.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function K(c){let a=c??t()?.workspaceId;if(!a)throw new o("Workspace ID required \u2014 pass --workspace <id> or select a workspace via `auth login`.");return a}function ya(c){let a={};return c.limit!==void 0&&(a.first=c.limit),c.cursor&&(a.after=c.cursor),Object.keys(a).length?a:void 0}async function u(c,a,t,e,n){try{let d=K(t.workspace),W=(await b$1(c,{filter:e,pagination:ya(t),workspaceId:d}))[a];if(!W)throw new o(`No "${a}" payload returned`);h$1({format:t.format},W.items,{headers:n.headers,rows:W.items.map(n.row)});}catch(d){g$1(d);}}function Yn(c){let a=c.command("portfolios").description("Planmagnet portfolios");a.command("list").description("List portfolios in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by status").option("--alignment <a>","Filter by strategic alignment").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.alignment&&(e.alignment=t.alignment.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await u(ft,"planmagnetPortfolios",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Owner","Alignment","Budget"],row:n=>[p(n.id,12),n.name,n.status,p(n.ownerId,12),n.alignment??"-",n.budgetTotal==null?"-":String(n.budgetTotal)]});}),a.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(It,{id:t});if(!n.planmagnetPortfolio)throw new o(`Portfolio ${t} not found`);h$1(e,n.planmagnetPortfolio);}catch(n){g$1(n);}}),a.command("overview").description("Aggregated health & metrics overview for a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(yt,{portfolioId:t});h$1(e,n.planmagnetPortfolioOverview);}catch(n){g$1(n);}}),a.command("create").description("Create a portfolio").requiredOption("--name <name>","Portfolio name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--status <s>","Status").option("--alignment <a>","Strategic alignment").option("--alignment-label <s>","Custom alignment label").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--fiscal-period <s>","Fiscal period").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.alignment&&(e.alignment=t.alignment.toUpperCase()),t.alignmentLabel&&(e.alignmentLabel=t.alignmentLabel),t.budgetTotal!==void 0&&(e.budgetTotal=t.budgetTotal),t.currency&&(e.currency=t.currency),t.fiscalPeriod&&(e.fiscalPeriod=t.fiscalPeriod),t.tags&&(e.tags=f(t.tags));let n=await b$1(wt,{input:e});i(`Portfolio created: ${n.planmagnetCreatePortfolio.name}`),h$1(t,n.planmagnetCreatePortfolio);}catch(e){g$1(e);}}),a.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--name <name>","Portfolio name").option("--description <s>","Description").option("--status <s>","Status").option("--alignment <a>","Strategic alignment").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--owner <id>","Owner actor ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.alignment&&(n.alignment=e.alignment.toUpperCase()),e.budgetTotal!==void 0&&(n.budgetTotal=e.budgetTotal),e.currency&&(n.currency=e.currency),e.owner&&(n.ownerId=e.owner),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Et,{id:t,input:n});i("Portfolio updated"),h$1(e,d.planmagnetUpdatePortfolio);}catch(n){g$1(n);}}),a.command("delete").description("Delete a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Dt,{id:t});if(!n.planmagnetDeletePortfolio)throw new o(`Portfolio ${t} could not be deleted`);i(`Portfolio ${t} deleted`),h$1(e,{deleted:n.planmagnetDeletePortfolio});}catch(n){g$1(n);}});}function Kn(c){let a=c.command("programs").description("Planmagnet programs");a.command("list").description("List programs in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await u(dt,"planmagnetPrograms",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Owner","Budget","Currency"],row:n=>[p(n.id,12),n.name,n.status,p(n.ownerId,12),n.budgetTotal==null?"-":String(n.budgetTotal),n.currency??"-"]});}),a.command("get").description("Get a program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ct,{id:t});if(!n.planmagnetProgram)throw new o(`Program ${t} not found`);h$1(e,n.planmagnetProgram);}catch(n){g$1(n);}}),a.command("create").description("Create a program").requiredOption("--name <name>","Program name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--status <s>","Status").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.budgetTotal!==void 0&&(e.budgetTotal=t.budgetTotal),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(ut,{input:e});i(`Program created: ${n.planmagnetCreateProgram.name}`),h$1(t,n.planmagnetCreateProgram);}catch(e){g$1(e);}}),a.command("update").description("Update a program").argument("<id>","Program ID").option("--name <name>","Program name").option("--description <s>","Description").option("--status <s>","Status").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--owner <id>","Owner actor ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.budgetTotal!==void 0&&(n.budgetTotal=e.budgetTotal),e.currency&&(n.currency=e.currency),e.owner&&(n.ownerId=e.owner),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(lt,{id:t,input:n});i("Program updated"),h$1(e,d.planmagnetUpdateProgram);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(gt,{id:t});if(!n.planmagnetDeleteProgram)throw new o(`Program ${t} could not be deleted`);i(`Program ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProgram});}catch(n){g$1(n);}});}function Xn(c){let a=c.command("projects").description("Planmagnet projects");a.command("list").description("List projects in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by project status").option("--methodology <m>","Filter by methodology").option("--owner <id>","Filter by owner ID").option("--program <id>","Filter by program ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.methodology&&(e.methodology=t.methodology.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.program&&(e.programId=t.program),t.search&&(e.search=t.search),await u(H,"planmagnetProjects",t,Object.keys(e).length?e:void 0,{headers:["ID","Key","Name","Status","Methodology","Owner"],row:n=>[p(n.id,12),n.key,n.name,n.status,n.methodology,p(n.ownerId,12)]});}),a.command("get").description("Get a project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Z,{id:t});if(!n.planmagnetProject)throw new o(`Project ${t} not found`);h$1(e,n.planmagnetProject);}catch(n){g$1(n);}}),a.command("create").description("Create a project").requiredOption("--key <key>","Project key/prefix (e.g. PROJ)").requiredOption("--name <name>","Project name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--methodology <m>","Methodology (AGILE|SCRUM|KANBAN|WATERFALL|HYBRID|CUSTOM)").option("--status <s>","Initial status").option("--program <id>","Parent program ID").option("--default-assignee <id>","Default assignee actor ID").option("--start-date <iso>","Planned start date (ISO)").option("--end-date <iso>","Planned end date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={key:t.key,name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.methodology&&(e.methodology=t.methodology.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.program&&(e.programId=t.program),t.defaultAssignee&&(e.defaultAssigneeId=t.defaultAssignee),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(tt,{input:e});i(`Project created: ${n.planmagnetCreateProject.key}`),h$1(t,n.planmagnetCreateProject);}catch(e){g$1(e);}}),a.command("update").description("Update a project").argument("<id>","Project ID").option("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status").option("--methodology <m>","Methodology").option("--owner <id>","Owner actor ID").option("--program <id>","Parent program ID").option("--default-assignee <id>","Default assignee actor ID").option("--start-date <iso>","Planned start date (ISO)").option("--end-date <iso>","Planned end date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.methodology&&(n.methodology=e.methodology.toUpperCase()),e.owner&&(n.ownerId=e.owner),e.program&&(n.programId=e.program),e.defaultAssignee&&(n.defaultAssigneeId=e.defaultAssignee),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.tags&&(n.tags=f(e.tags)),e.metadata&&(n.metadata=g("metadata",e.metadata)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(et,{id:t,input:n});i("Project updated"),h$1(e,d.planmagnetUpdateProject);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(nt,{id:t});if(!n.planmagnetDeleteProject)throw new o(`Project ${t} could not be deleted`);i(`Project ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProject});}catch(n){g$1(n);}});}function zn(c){let a=c.command("templates").description("Planmagnet project templates");a.command("list").description("List project templates in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--category <c>","Filter by category").option("--built-in","Only built-in templates").option("--published","Only published templates").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.category&&(e.category=t.category),t.builtIn&&(e.isBuiltIn=true),t.published&&(e.isPublished=true),t.search&&(e.search=t.search),await u(at,"planmagnetProjectTemplates",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Category","Built-in","Published","Usage"],row:n=>[p(n.id,12),n.name,n.category??"-",String(n.isBuiltIn),String(n.isPublished),String(n.usageCount)]});}),a.command("get").description("Get a project template by id").argument("<id>","Template ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(it,{id:t});if(!n.planmagnetProjectTemplate)throw new o(`Template ${t} not found`);h$1(e,n.planmagnetProjectTemplate);}catch(n){g$1(n);}}),a.command("create").description("Create a project template").requiredOption("--name <name>","Template name").requiredOption("--configuration <json>","Template configuration JSON").option("--description <s>","Description").option("--category <c>","Category").option("--published","Mark as published").option("--board-config <json>","Board layout JSON").option("--sprint-config <json>","Sprint configuration JSON").option("--custom-fields-config <json>","Custom field definitions JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,configuration:g("configuration",t.configuration)};t.description&&(e.description=t.description),t.category&&(e.category=t.category),t.published&&(e.isPublished=!0),t.boardConfig&&(e.boardConfig=g("board-config",t.boardConfig)),t.sprintConfig&&(e.sprintConfig=g("sprint-config",t.sprintConfig)),t.customFieldsConfig&&(e.customFieldsConfig=g("custom-fields-config",t.customFieldsConfig)),t.tags&&(e.tags=f(t.tags));let n=await b$1(ot,{input:e});i(`Template created: ${n.planmagnetCreateProjectTemplate.name}`),h$1(t,n.planmagnetCreateProjectTemplate);}catch(e){g$1(e);}}),a.command("update").description("Update a project template").argument("<id>","Template ID").option("--name <name>","Template name").option("--description <s>","Description").option("--category <c>","Category").option("--published <bool>","Published flag (true|false)").option("--configuration <json>","Configuration JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.category&&(n.category=e.category),e.published!==void 0&&(n.isPublished=e.published==="true"),e.configuration&&(n.configuration=g("configuration",e.configuration)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(rt,{id:t,input:n});i("Template updated"),h$1(e,d.planmagnetUpdateProjectTemplate);}catch(n){g$1(n);}}),a.command("delete").description("Delete a project template").argument("<id>","Template ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(st,{id:t});if(!n.planmagnetDeleteProjectTemplate)throw new o(`Template ${t} could not be deleted`);i(`Template ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProjectTemplate});}catch(n){g$1(n);}}),a.command("apply").description("Apply a template to create a new project").requiredOption("--template <id>","Template ID").requiredOption("--name <name>","New project name").requiredOption("--owner <id>","Owner actor ID").option("--project-description <s>","New project description").option("-f, --format <format>","Output format").action(async t=>{try{let e={templateId:t.template,projectName:t.name,ownerId:t.owner};t.projectDescription&&(e.projectDescription=t.projectDescription);let n=await b$1(pt,{input:e});i(`Project created from template: ${n.planmagnetApplyTemplate.key}`),h$1(t,n.planmagnetApplyTemplate);}catch(e){g$1(e);}}),a.command("from-project").description("Create a template from an existing project").requiredOption("--project <id>","Source project ID").requiredOption("--name <name>","Template name").option("--description <s>","Template description").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(mt,{projectId:t.project,name:t.name,description:t.description});i(`Template created: ${e.planmagnetCreateTemplateFromProject.name}`),h$1(t,e.planmagnetCreateTemplateFromProject);}catch(e){g$1(e);}});}function Hn(c){let a=c.command("work-items").description("Planmagnet work items");a.command("list").description("List work items in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--sprint <id>","Filter by sprint ID").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--priority <p>","Filter by priority").option("--assignee <id>","Filter by assignee ID").option("--parent <id>","Filter by parent work item ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.sprint&&(e.sprintId=t.sprint),t.status&&(e.status=t.status.toUpperCase()),t.type&&(e.type=t.type.toUpperCase()),t.priority&&(e.priority=t.priority.toUpperCase()),t.assignee&&(e.assigneeId=t.assignee),t.parent&&(e.parentId=t.parent),t.search&&(e.search=t.search),await u(Tt,"planmagnetWorkItems",t,Object.keys(e).length?e:void 0,{headers:["ID","Key","Title","Type","Status","Priority"],row:n=>[p(n.id,12),n.key,p(n.title,32),n.type,n.status,n.priority]});}),a.command("get").description("Get a work item by id").argument("<id>","Work item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Rt,{id:t});if(!n.planmagnetWorkItem)throw new o(`Work item ${t} not found`);h$1(e,n.planmagnetWorkItem);}catch(n){g$1(n);}}),a.command("create").description("Create a work item").requiredOption("--project <id>","Project ID").requiredOption("--title <s>","Title").requiredOption("--type <t>","Type (EPIC|STORY|TASK|BUG|SUB_TASK)").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee actor ID").option("--reporter <id>","Reporter actor ID").option("--parent <id>","Parent work item ID").option("--sprint <id>","Sprint ID").option("--story-points <n>","Story points",l).option("--estimate-minutes <n>","Estimate in minutes",l).option("--due-date <iso>","Due date (ISO)").option("--labels <csv>","Comma-separated labels").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.priority&&(e.priority=t.priority.toUpperCase()),t.assignee&&(e.assigneeId=t.assignee),t.reporter&&(e.reporterId=t.reporter),t.parent&&(e.parentId=t.parent),t.sprint&&(e.sprintId=t.sprint),t.storyPoints!==void 0&&(e.storyPoints=t.storyPoints),t.estimateMinutes!==void 0&&(e.estimateMinutes=t.estimateMinutes),t.dueDate&&(e.dueDate=t.dueDate),t.labels&&(e.labels=f(t.labels)),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(Pt,{input:e});i(`Work item created: ${n.planmagnetCreateWorkItem.key}`),h$1(t,n.planmagnetCreateWorkItem);}catch(e){g$1(e);}}),a.command("update").description("Update a work item").argument("<id>","Work item ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--type <t>","Type").option("--assignee <id>","Assignee actor ID").option("--sprint <id>","Sprint ID").option("--story-points <n>","Story points",l).option("--estimate-minutes <n>","Estimate in minutes",l).option("--due-date <iso>","Due date (ISO)").option("--labels <csv>","Comma-separated labels").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.priority&&(n.priority=e.priority.toUpperCase()),e.type&&(n.type=e.type.toUpperCase()),e.assignee&&(n.assigneeId=e.assignee),e.sprint&&(n.sprintId=e.sprint),e.storyPoints!==void 0&&(n.storyPoints=e.storyPoints),e.estimateMinutes!==void 0&&(n.estimateMinutes=e.estimateMinutes),e.dueDate&&(n.dueDate=e.dueDate),e.labels&&(n.labels=f(e.labels)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Ot,{id:t,input:n});i("Work item updated"),h$1(e,d.planmagnetUpdateWorkItem);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a work item").argument("<id>","Work item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ct,{id:t});if(!n.planmagnetDeleteWorkItem)throw new o(`Work item ${t} could not be deleted`);i(`Work item ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteWorkItem});}catch(n){g$1(n);}}),a.command("assign").description("Assign a work item to an actor").argument("<id>","Work item ID").requiredOption("--assignee <id>","Assignee actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($t,{id:t,input:{assigneeId:e.assignee}});i(`Work item ${t} assigned to ${e.assignee}`),h$1(e,n.planmagnetAssignWorkItem);}catch(n){g$1(n);}}),a.command("move").description("Move a work item to a different status, sprint, or position").argument("<id>","Work item ID").option("--status <s>","Target status").option("--sprint <id>","Target sprint ID").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.status&&(n.status=e.status.toUpperCase()),e.sprint&&(n.sprintId=e.sprint),e.sortOrder!==void 0&&(n.sortOrder=e.sortOrder),!Object.keys(n).length)throw new o("Nothing to move \u2014 specify a target");let d=await b$1(St,{id:t,input:n});i("Work item moved"),h$1(e,d.planmagnetMoveWorkItem);}catch(n){g$1(n);}}),a.command("bulk-update").description("Bulk update multiple work items at once").requiredOption("--ids <csv>","Comma-separated work item IDs").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee actor ID").option("--sprint <id>","Sprint ID").option("--labels <csv>","Comma-separated labels").option("-f, --format <format>","Output format").action(async t=>{try{let e=f(t.ids);if(!e.length)throw new o("--ids must contain at least one ID");let n={ids:e};t.status&&(n.status=t.status.toUpperCase()),t.priority&&(n.priority=t.priority.toUpperCase()),t.assignee&&(n.assigneeId=t.assignee),t.sprint&&(n.sprintId=t.sprint),t.labels&&(n.labels=f(t.labels));let d=await b$1(kt,{input:n});i(`Updated ${d.planmagnetBulkUpdateWorkItems.length} work item(s)`),h$1(t,d.planmagnetBulkUpdateWorkItems);}catch(e){g$1(e);}});}function Zn(c){let a=c.command("dependencies").description("Planmagnet work item dependencies");a.command("list").description("List dependencies in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--source <id>","Filter by source work item ID").option("--target <id>","Filter by target work item ID").option("--type <t>","Filter by dependency type").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.source&&(e.sourceWorkItemId=t.source),t.target&&(e.targetWorkItemId=t.target),t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),await u(ht,"planmagnetDependencies",t,Object.keys(e).length?e:void 0,{headers:["ID","Source","Target","Type","Status"],row:n=>[p(n.id,12),p(n.sourceWorkItemId,12),p(n.targetWorkItemId,12),n.type,n.status]});}),a.command("get").description("Get a dependency by id").argument("<id>","Dependency ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(At,{id:t});if(!n.planmagnetDependency)throw new o(`Dependency ${t} not found`);h$1(e,n.planmagnetDependency);}catch(n){g$1(n);}}),a.command("create").description("Create a dependency between two work items").requiredOption("--source <id>","Source work item ID").requiredOption("--target <id>","Target work item ID").requiredOption("--type <t>","Type (BLOCKS|BLOCKED_BY|RELATES_TO|\u2026)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceWorkItemId:t.source,targetWorkItemId:t.target,type:t.type.toUpperCase()};t.description&&(e.description=t.description);let n=await b$1(bt,{input:e});i("Dependency created"),h$1(t,n.planmagnetCreateDependency);}catch(e){g$1(e);}}),a.command("update").description("Update a dependency").argument("<id>","Dependency ID").option("--type <t>","Type").option("--status <s>","Status").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(_t,{id:t,input:n});i("Dependency updated"),h$1(e,d.planmagnetUpdateDependency);}catch(n){g$1(n);}}),a.command("delete").description("Remove a dependency").argument("<id>","Dependency ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ut,{id:t});if(!n.planmagnetDeleteDependency)throw new o(`Dependency ${t} could not be removed`);i(`Dependency ${t} removed`),h$1(e,{removed:n.planmagnetDeleteDependency});}catch(n){g$1(n);}});}async function X(c,a,t,e,n){try{let P=(await b$1(c,{id:t}))[a];if(!P)throw new o(`Sprint ${t} could not be ${e}`);i(`Sprint ${t} ${e}`),h$1(n,P);}catch(d){g$1(d);}}function ta(c){let a=c.command("sprints").description("Planmagnet sprints");a.command("list").description("List sprints in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await u(Lt,"planmagnetSprints",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Project","Capacity","Velocity"],row:n=>[p(n.id,12),n.name,n.status,p(n.projectId,12),n.capacity==null?"-":String(n.capacity),n.velocity==null?"-":String(n.velocity)]});}),a.command("get").description("Get a sprint by id").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(jt,{id:t});if(!n.planmagnetSprint)throw new o(`Sprint ${t} not found`);h$1(e,n.planmagnetSprint);}catch(n){g$1(n);}}),a.command("create").description("Create a sprint").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Sprint name").option("--goal <s>","Sprint goal").option("--capacity <n>","Capacity (story points)",l).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name};t.goal&&(e.goal=t.goal),t.capacity!==void 0&&(e.capacity=t.capacity),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(xt,{input:e});i(`Sprint created: ${n.planmagnetCreateSprint.name}`),h$1(t,n.planmagnetCreateSprint);}catch(e){g$1(e);}}),a.command("update").description("Update a sprint").argument("<id>","Sprint ID").option("--name <name>","Sprint name").option("--goal <s>","Sprint goal").option("--capacity <n>","Capacity",l).option("--velocity <n>","Velocity",l).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.goal!==void 0&&(n.goal=e.goal),e.capacity!==void 0&&(n.capacity=e.capacity),e.velocity!==void 0&&(n.velocity=e.velocity),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Ft,{id:t,input:n});i("Sprint updated"),h$1(e,d.planmagnetUpdateSprint);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a sprint").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Mt,{id:t});if(!n.planmagnetDeleteSprint)throw new o(`Sprint ${t} could not be deleted`);i(`Sprint ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteSprint});}catch(n){g$1(n);}}),a.command("start").description("Start a sprint (transition to ACTIVE)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>X(Nt,"planmagnetStartSprint",t,"started",e)),a.command("complete").description("Complete a sprint (transition to COMPLETED)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>X(qt,"planmagnetCompleteSprint",t,"completed",e)),a.command("cancel").description("Cancel a sprint (transition to CANCELLED)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>X(vt,"planmagnetCancelSprint",t,"cancelled",e)),a.command("add-items").description("Add work items to a sprint").argument("<id>","Sprint ID").requiredOption("--work-items <csv>","Comma-separated work item IDs").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=f(e.workItems);if(!n.length)throw new o("--work-items must contain at least one ID");let d=await b$1(Bt,{id:t,input:{workItemIds:n}});i(`Added ${n.length} work item(s) to sprint ${t}`),h$1(e,d.planmagnetAddWorkItemsToSprint);}catch(n){g$1(n);}}),a.command("remove-items").description("Remove work items from a sprint").argument("<id>","Sprint ID").requiredOption("--work-items <csv>","Comma-separated work item IDs").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=f(e.workItems);if(!n.length)throw new o("--work-items must contain at least one ID");let d=await b$1(Gt,{id:t,input:{workItemIds:n}});i(`Removed ${n.length} work item(s) from sprint ${t}`),h$1(e,d.planmagnetRemoveWorkItemsFromSprint);}catch(n){g$1(n);}});}function ea(c){let a=c.command("boards").description("Planmagnet boards");a.command("list").description("List boards in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--type <t>","Filter by board type").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.type&&(e.type=t.type.toUpperCase()),t.search&&(e.search=t.search),await u(Wt,"planmagnetBoards",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Default","Project","Columns"],row:n=>[p(n.id,12),n.name,n.type,String(n.isDefault),p(n.projectId,12),String(n.columns?.length??0)]});}),a.command("get").description("Get a board by id").argument("<id>","Board ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Vt,{id:t});if(!n.planmagnetBoard)throw new o(`Board ${t} not found`);h$1(e,n.planmagnetBoard);}catch(n){g$1(n);}}),a.command("create").description("Create a board").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Board name").requiredOption("--type <t>","Board type (KANBAN|SCRUM|CUSTOM)").option("--description <s>","Description").option("--default","Make this the default board").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.default&&(e.isDefault=!0);let n=await b$1(Qt,{input:e});i(`Board created: ${n.planmagnetCreateBoard.name}`),h$1(t,n.planmagnetCreateBoard);}catch(e){g$1(e);}}),a.command("update").description("Update a board").argument("<id>","Board ID").option("--name <name>","Board name").option("--description <s>","Description").option("--type <t>","Board type").option("--default <bool>","Default flag (true|false)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.default!==void 0&&(n.isDefault=e.default==="true"),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Jt,{id:t,input:n});i("Board updated"),h$1(e,d.planmagnetUpdateBoard);}catch(n){g$1(n);}}),a.command("delete").description("Delete a board").argument("<id>","Board ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Yt,{id:t});if(!n.planmagnetDeleteBoard)throw new o(`Board ${t} could not be deleted`);i(`Board ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBoard});}catch(n){g$1(n);}}),a.command("create-column").description("Create a column on a board").requiredOption("--board <id>","Board ID").requiredOption("--name <name>","Column name").requiredOption("--type <t>","Column type (TODO|IN_PROGRESS|DONE|CUSTOM)").option("--mapped-status <s>","Mapped work item status").option("--wip-limit <n>","WIP limit (0 = unlimited)",l).option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={boardId:t.board,name:t.name,type:t.type.toUpperCase()};t.mappedStatus&&(e.mappedStatus=t.mappedStatus.toUpperCase()),t.wipLimit!==void 0&&(e.wipLimit=t.wipLimit),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Kt,{input:e});i(`Column created: ${n.planmagnetCreateBoardColumn.name}`),h$1(t,n.planmagnetCreateBoardColumn);}catch(e){g$1(e);}}),a.command("update-column").description("Update a board column").argument("<id>","Column ID").option("--name <name>","Column name").option("--type <t>","Column type").option("--mapped-status <s>","Mapped work item status").option("--wip-limit <n>","WIP limit",l).option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.type&&(n.type=e.type.toUpperCase()),e.mappedStatus&&(n.mappedStatus=e.mappedStatus.toUpperCase()),e.wipLimit!==void 0&&(n.wipLimit=e.wipLimit),e.sortOrder!==void 0&&(n.sortOrder=e.sortOrder),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Xt,{id:t,input:n});i("Column updated"),h$1(e,d.planmagnetUpdateBoardColumn);}catch(n){g$1(n);}}),a.command("delete-column").description("Delete a board column").argument("<id>","Column ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(zt,{id:t});if(!n.planmagnetDeleteBoardColumn)throw new o(`Column ${t} could not be deleted`);i(`Column ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBoardColumn});}catch(n){g$1(n);}}),a.command("move-card").description("Move a card (work item) to a different column and/or position").requiredOption("--board <id>","Board ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--column <id>","Target column ID").option("--sort-order <n>","Sort order within the column",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={workItemId:t.workItem,targetColumnId:t.column};t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Ht,{boardId:t.board,input:e});i("Card moved"),h$1(t,n.planmagnetMoveCard);}catch(e){g$1(e);}}),a.command("reorder-columns").description("Reorder columns on a board").requiredOption("--board <id>","Board ID").requiredOption("--columns <csv>","Comma-separated ordered column IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e=f(t.columns);if(!e.length)throw new o("--columns must contain at least one ID");let n=await b$1(Zt,{boardId:t.board,input:{columnIds:e}});i("Columns reordered"),h$1(t,n.planmagnetReorderColumns);}catch(e){g$1(e);}});}function na(c){let a=c.command("milestones").description("Planmagnet milestones");a.command("list").description("List milestones in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await u(te,"planmagnetMilestones",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Project","Due"],row:n=>[p(n.id,12),n.name,n.status,p(n.projectId,12),n.dueDate??"-"]});}),a.command("get").description("Get a milestone by id").argument("<id>","Milestone ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ee,{id:t});if(!n.planmagnetMilestone)throw new o(`Milestone ${t} not found`);h$1(e,n.planmagnetMilestone);}catch(n){g$1(n);}}),a.command("create").description("Create a milestone").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Milestone name").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--due-date <iso>","Target due date (ISO)").option("--sort-order <n>","Sort order",l).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.dueDate&&(e.dueDate=t.dueDate),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder),t.tags&&(e.tags=f(t.tags));let n=await b$1(ne,{input:e});i(`Milestone created: ${n.planmagnetCreateMilestone.name}`),h$1(t,n.planmagnetCreateMilestone);}catch(e){g$1(e);}}),a.command("update").description("Update a milestone").argument("<id>","Milestone ID").option("--name <name>","Milestone name").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--due-date <iso>","Target due date (ISO)").option("--completed-at <iso>","Completion date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.owner&&(n.ownerId=e.owner),e.dueDate&&(n.dueDate=e.dueDate),e.completedAt&&(n.completedAt=e.completedAt),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(ae,{id:t,input:n});i("Milestone updated"),h$1(e,d.planmagnetUpdateMilestone);}catch(n){g$1(n);}}),a.command("delete").description("Delete a milestone").argument("<id>","Milestone ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ie,{id:t});if(!n.planmagnetDeleteMilestone)throw new o(`Milestone ${t} could not be deleted`);i(`Milestone ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteMilestone});}catch(n){g$1(n);}});}function aa(c){let a=c.command("releases").description("Planmagnet releases");a.command("list").description("List releases in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await u(oe,"planmagnetReleases",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Version","Status","Project"],row:n=>[p(n.id,12),n.name,n.version,n.status,p(n.projectId,12)]});}),a.command("get").description("Get a release by id").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(re,{id:t});if(!n.planmagnetRelease)throw new o(`Release ${t} not found`);h$1(e,n.planmagnetRelease);}catch(n){g$1(n);}}),a.command("create").description("Create a release").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Release name").requiredOption("--version <v>","Release version (e.g. 1.2.0)").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--planned-date <iso>","Planned release date (ISO)").option("--release-notes <s>","Release notes (markdown)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,version:t.version};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.plannedDate&&(e.plannedDate=t.plannedDate),t.releaseNotes&&(e.releaseNotes=t.releaseNotes),t.tags&&(e.tags=f(t.tags));let n=await b$1(se,{input:e});i(`Release created: ${n.planmagnetCreateRelease.version}`),h$1(t,n.planmagnetCreateRelease);}catch(e){g$1(e);}}),a.command("update").description("Update a release").argument("<id>","Release ID").option("--name <name>","Release name").option("--version <v>","Version").option("--description <s>","Description").option("--status <s>","Status").option("--planned-date <iso>","Planned date (ISO)").option("--released-at <iso>","Actual release date (ISO)").option("--release-notes <s>","Release notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.version&&(n.version=e.version),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.plannedDate&&(n.plannedDate=e.plannedDate),e.releasedAt&&(n.releasedAt=e.releasedAt),e.releaseNotes&&(n.releaseNotes=e.releaseNotes),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(pe,{id:t,input:n});i("Release updated"),h$1(e,d.planmagnetUpdateRelease);}catch(n){g$1(n);}}),a.command("delete").description("Delete a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(me,{id:t});if(!n.planmagnetDeleteRelease)throw new o(`Release ${t} could not be deleted`);i(`Release ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRelease});}catch(n){g$1(n);}});}function ia(c){let a=c.command("quality-gates").description("Planmagnet quality gates");a.command("list").description("List quality gates in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--milestone <id>","Filter by milestone ID").option("--phase <p>","Filter by phase").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.phase&&(e.phase=t.phase),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await u(de,"planmagnetQualityGates",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Phase","Project"],row:n=>[p(n.id,12),n.name,n.status,n.phase??"-",p(n.projectId,12)]});}),a.command("get").description("Get a quality gate by id").argument("<id>","Quality gate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ce,{id:t});if(!n.planmagnetQualityGate)throw new o(`Quality gate ${t} not found`);h$1(e,n.planmagnetQualityGate);}catch(n){g$1(n);}}),a.command("create").description("Create a quality gate").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Gate name").requiredOption("--criteria <json>","Criteria JSON array").option("--description <s>","Description").option("--phase <p>","Phase / stage").option("--milestone <id>","Linked milestone ID").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,criteria:g("criteria",t.criteria)};t.description&&(e.description=t.description),t.phase&&(e.phase=t.phase),t.milestone&&(e.milestoneId=t.milestone),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(ue,{input:e});i(`Quality gate created: ${n.planmagnetCreateQualityGate.name}`),h$1(t,n.planmagnetCreateQualityGate);}catch(e){g$1(e);}}),a.command("update").description("Update a quality gate").argument("<id>","Quality gate ID").option("--name <name>","Gate name").option("--description <s>","Description").option("--phase <p>","Phase").option("--status <s>","Status").option("--criteria <json>","Criteria JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.phase&&(n.phase=e.phase),e.status&&(n.status=e.status.toUpperCase()),e.criteria&&(n.criteria=g("criteria",e.criteria)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(le,{id:t,input:n});i("Quality gate updated"),h$1(e,d.planmagnetUpdateQualityGate);}catch(n){g$1(n);}}),a.command("delete").description("Delete a quality gate").argument("<id>","Quality gate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ge,{id:t});if(!n.planmagnetDeleteQualityGate)throw new o(`Quality gate ${t} could not be deleted`);i(`Quality gate ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteQualityGate});}catch(n){g$1(n);}}),a.command("review").description("Review a quality gate (pass, fail, or waive)").argument("<id>","Quality gate ID").requiredOption("--status <s>","Review status (PASSED|FAILED|WAIVED|IN_REVIEW|PENDING)").option("--notes <s>","Review notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={status:e.status.toUpperCase()};e.notes&&(n.reviewNotes=e.notes);let d=await b$1(fe,{id:t,input:n});i(`Quality gate reviewed: ${d.planmagnetReviewQualityGate.status}`),h$1(e,d.planmagnetReviewQualityGate);}catch(n){g$1(n);}});}function oa(c){let a=c.command("budgets").description("Planmagnet budgets & expenses");a.command("list").description("List budgets in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await u(Ie,"planmagnetBudgets",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Currency","Planned","Spent","Remaining"],row:n=>[p(n.id,12),n.name,n.status,n.currency,String(n.plannedAmount),String(n.spentAmount),String(n.remainingAmount)]});}),a.command("get").description("Get a budget by id").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ye,{id:t});if(!n.planmagnetBudget)throw new o(`Budget ${t} not found`);h$1(e,n.planmagnetBudget);}catch(n){g$1(n);}}),a.command("create").description("Create a budget").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Budget name").requiredOption("--currency <c>","Currency code (e.g. USD)").requiredOption("--planned-amount <n>","Planned amount",D).option("--description <s>","Description").option("--period-start <iso>","Period start (ISO)").option("--period-end <iso>","Period end (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,currency:t.currency,plannedAmount:t.plannedAmount};t.description&&(e.description=t.description),t.periodStart&&(e.periodStart=t.periodStart),t.periodEnd&&(e.periodEnd=t.periodEnd);let n=await b$1(Ee,{input:e});i(`Budget created: ${n.planmagnetCreateBudget.name}`),h$1(t,n.planmagnetCreateBudget);}catch(e){g$1(e);}}),a.command("update").description("Update a budget").argument("<id>","Budget ID").option("--name <name>","Budget name").option("--description <s>","Description").option("--status <s>","Status").option("--currency <c>","Currency code").option("--planned-amount <n>","Planned amount",D).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.currency&&(n.currency=e.currency),e.plannedAmount!==void 0&&(n.plannedAmount=e.plannedAmount),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(De,{id:t,input:n});i("Budget updated"),h$1(e,d.planmagnetUpdateBudget);}catch(n){g$1(n);}}),a.command("delete").description("Delete a budget").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Te,{id:t});if(!n.planmagnetDeleteBudget)throw new o(`Budget ${t} could not be deleted`);i(`Budget ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBudget});}catch(n){g$1(n);}}),a.command("approve").description("Approve a budget").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Re,{id:t});i(`Budget ${t} approved`),h$1(e,n.planmagnetApproveBudget);}catch(n){g$1(n);}}),a.command("expenses").description("List budget expenses").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--budget <id>","Filter by budget ID").option("--category <c>","Filter by category").option("--date-from <iso>","Filter from date (ISO)").option("--date-to <iso>","Filter to date (ISO)").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.budget&&(e.budgetId=t.budget),t.category&&(e.category=t.category),t.dateFrom&&(e.dateFrom=t.dateFrom),t.dateTo&&(e.dateTo=t.dateTo),await u(we,"planmagnetBudgetExpenses",t,Object.keys(e).length?e:void 0,{headers:["ID","Budget","Amount","Category","Description","Date"],row:n=>[p(n.id,12),p(n.budgetId,12),String(n.amount),n.category??"-",p(n.description,24),n.date]});}),a.command("log-expense").description("Log an expense against a budget").requiredOption("--budget <id>","Budget ID").requiredOption("--amount <n>","Amount",D).requiredOption("--description <s>","Description").requiredOption("--date <iso>","Date (ISO)").option("--category <c>","Category").option("--reference-url <url>","Receipt / reference URL").option("--work-item <id>","Associated work item ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={budgetId:t.budget,amount:t.amount,description:t.description,date:t.date};t.category&&(e.category=t.category),t.referenceUrl&&(e.referenceUrl=t.referenceUrl),t.workItem&&(e.workItemId=t.workItem);let n=await b$1(Pe,{input:e});i("Expense logged"),h$1(t,n.planmagnetLogExpense);}catch(e){g$1(e);}}),a.command("update-expense").description("Update an expense").argument("<id>","Expense ID").option("--amount <n>","Amount",D).option("--category <c>","Category").option("--description <s>","Description").option("--date <iso>","Date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.amount!==void 0&&(n.amount=e.amount),e.category&&(n.category=e.category),e.description!==void 0&&(n.description=e.description),e.date&&(n.date=e.date),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Oe,{id:t,input:n});i("Expense updated"),h$1(e,d.planmagnetUpdateExpense);}catch(n){g$1(n);}}),a.command("delete-expense").description("Delete an expense").argument("<id>","Expense ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ce,{id:t});if(!n.planmagnetDeleteExpense)throw new o(`Expense ${t} could not be deleted`);i(`Expense ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteExpense});}catch(n){g$1(n);}});}function ra(c){let a=c.command("time").description("Planmagnet time tracking");a.command("entries").description("List time entries in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--work-item <id>","Filter by work item ID").option("--user <id>","Filter by user ID").option("--timesheet <id>","Filter by timesheet ID").option("--billing-type <t>","Filter by billing type").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.workItem&&(e.workItemId=t.workItem),t.user&&(e.userId=t.user),t.timesheet&&(e.timesheetId=t.timesheet),t.billingType&&(e.billingType=t.billingType.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),await u($e,"planmagnetTimeEntries",t,Object.keys(e).length?e:void 0,{headers:["ID","Project","Work Item","User","Minutes","Billing","Status"],row:n=>[p(n.id,12),p(n.projectId,12),p(n.workItemId,12),p(n.userId,12),String(n.durationMinutes),n.billingType,n.status]});}),a.command("entry").description("Get a time entry by id").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Se,{id:t});if(!n.planmagnetTimeEntry)throw new o(`Time entry ${t} not found`);h$1(e,n.planmagnetTimeEntry);}catch(n){g$1(n);}}),a.command("create-entry").description("Create a time entry").requiredOption("--project <id>","Project ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--date <iso>","Date worked (ISO)").requiredOption("--minutes <n>","Duration in minutes",l).option("--description <s>","Description").option("--billing-type <t>","Billing type (BILLABLE|NON_BILLABLE|INTERNAL)").option("--billing-rate <n>","Billing rate per hour",D).option("--timesheet <id>","Timesheet ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,workItemId:t.workItem,date:t.date,durationMinutes:t.minutes};t.description&&(e.description=t.description),t.billingType&&(e.billingType=t.billingType.toUpperCase()),t.billingRate!==void 0&&(e.billingRate=t.billingRate),t.timesheet&&(e.timesheetId=t.timesheet);let n=await b$1(Ae,{input:e});i("Time entry created"),h$1(t,n.planmagnetCreateTimeEntry);}catch(e){g$1(e);}}),a.command("update-entry").description("Update a time entry").argument("<id>","Time entry ID").option("--minutes <n>","Duration in minutes",l).option("--description <s>","Description").option("--billing-type <t>","Billing type").option("--status <s>","Status").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.minutes!==void 0&&(n.durationMinutes=e.minutes),e.description!==void 0&&(n.description=e.description),e.billingType&&(n.billingType=e.billingType.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(be,{id:t,input:n});i("Time entry updated"),h$1(e,d.planmagnetUpdateTimeEntry);}catch(n){g$1(n);}}),a.command("delete-entry").description("Delete a time entry").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(_e,{id:t});if(!n.planmagnetDeleteTimeEntry)throw new o(`Time entry ${t} could not be deleted`);i(`Time entry ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteTimeEntry});}catch(n){g$1(n);}}),a.command("log").description("Quick-log time against a work item").requiredOption("--project <id>","Project ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--date <iso>","Date (ISO)").requiredOption("--minutes <n>","Duration in minutes",l).option("--description <s>","Description").option("--billing-type <t>","Billing type").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,workItemId:t.workItem,date:t.date,durationMinutes:t.minutes};t.description&&(e.description=t.description),t.billingType&&(e.billingType=t.billingType.toUpperCase());let n=await b$1(Ue,{input:e});i("Time logged"),h$1(t,n.planmagnetLogTime);}catch(e){g$1(e);}}),a.command("timesheets").description("List timesheets in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--user <id>","Filter by user ID").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.user&&(e.userId=t.user),t.status&&(e.status=t.status.toUpperCase()),await u(ke,"planmagnetTimesheets",t,Object.keys(e).length?e:void 0,{headers:["ID","User","Status","Total Min","Billable Min"],row:n=>[p(n.id,12),p(n.userId,12),n.status,String(n.totalMinutes),String(n.billableMinutes)]});}),a.command("timesheet").description("Get a timesheet by id").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(he,{id:t});if(!n.planmagnetTimesheet)throw new o(`Timesheet ${t} not found`);h$1(e,n.planmagnetTimesheet);}catch(n){g$1(n);}}),a.command("create-timesheet").description("Create a timesheet").requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Le,{input:{periodStart:t.periodStart,periodEnd:t.periodEnd}});i("Timesheet created"),h$1(t,e.planmagnetCreateTimesheet);}catch(e){g$1(e);}}),a.command("submit-timesheet").description("Submit a timesheet for approval").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(je,{id:t});i(`Timesheet ${t} submitted`),h$1(e,n.planmagnetSubmitTimesheet);}catch(n){g$1(n);}}),a.command("approve-timesheet").description("Approve a submitted timesheet").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(xe,{id:t});i(`Timesheet ${t} approved`),h$1(e,n.planmagnetApproveTimesheet);}catch(n){g$1(n);}}),a.command("reject-timesheet").description("Reject a submitted timesheet").argument("<id>","Timesheet ID").option("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Fe,{id:t,reason:e.reason});i(`Timesheet ${t} rejected`),h$1(e,n.planmagnetRejectTimesheet);}catch(n){g$1(n);}});}function sa(c){let a=c.command("risks").description("Planmagnet risks");a.command("list").description("List risks in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--severity <s>","Filter by severity").option("--category <c>","Filter by category").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.severity&&(e.severity=t.severity.toUpperCase()),t.category&&(e.category=t.category),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await u(Me,"planmagnetRisks",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Severity","Status","Score","Project"],row:n=>[p(n.id,12),p(n.title,28),n.severity,n.status,String(n.riskScore),p(n.projectId,12)]});}),a.command("get").description("Get a risk by id").argument("<id>","Risk ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ne,{id:t});if(!n.planmagnetRisk)throw new o(`Risk ${t} not found`);h$1(e,n.planmagnetRisk);}catch(n){g$1(n);}}),a.command("matrix").description("Get the risk matrix for a project").argument("<projectId>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(qe,{projectId:t});h$1(e,n.planmagnetRiskMatrix);}catch(n){g$1(n);}}),a.command("create").description("Create a risk").requiredOption("--project <id>","Project ID").requiredOption("--title <s>","Risk title").requiredOption("--severity <s>","Severity (NEGLIGIBLE|LOW|MEDIUM|HIGH|CRITICAL)").requiredOption("--likelihood <n>","Likelihood (1-5)",l).requiredOption("--impact <n>","Impact (1-5)",l).option("--description <s>","Description").option("--category <c>","Category").option("--owner <id>","Owner actor ID").option("--mitigation-plan <s>","Mitigation plan").option("--contingency-plan <s>","Contingency plan").option("--due-date <iso>","Mitigation due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title,severity:t.severity.toUpperCase(),likelihood:t.likelihood,impact:t.impact};t.description&&(e.description=t.description),t.category&&(e.category=t.category),t.owner&&(e.ownerId=t.owner),t.mitigationPlan&&(e.mitigationPlan=t.mitigationPlan),t.contingencyPlan&&(e.contingencyPlan=t.contingencyPlan),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=f(t.tags));let n=await b$1(ve,{input:e});i(`Risk created: ${n.planmagnetCreateRisk.title}`),h$1(t,n.planmagnetCreateRisk);}catch(e){g$1(e);}}),a.command("update").description("Update a risk").argument("<id>","Risk ID").option("--title <s>","Title").option("--description <s>","Description").option("--severity <s>","Severity").option("--status <s>","Status").option("--likelihood <n>","Likelihood (1-5)",l).option("--impact <n>","Impact (1-5)",l).option("--mitigation-plan <s>","Mitigation plan").option("--owner <id>","Owner actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.severity&&(n.severity=e.severity.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.likelihood!==void 0&&(n.likelihood=e.likelihood),e.impact!==void 0&&(n.impact=e.impact),e.mitigationPlan&&(n.mitigationPlan=e.mitigationPlan),e.owner&&(n.ownerId=e.owner),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Be,{id:t,input:n});i("Risk updated"),h$1(e,d.planmagnetUpdateRisk);}catch(n){g$1(n);}}),a.command("delete").description("Delete a risk").argument("<id>","Risk ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ge,{id:t});if(!n.planmagnetDeleteRisk)throw new o(`Risk ${t} could not be deleted`);i(`Risk ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRisk});}catch(n){g$1(n);}});}function pa(c){let a=c.command("roadmaps").description("Planmagnet roadmaps & roadmap items");a.command("list").description("List roadmaps in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--type <t>","Filter by roadmap type").option("--owner <id>","Filter by owner ID").option("--public","Only public roadmaps").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.type&&(e.type=t.type.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.public&&(e.isPublic=true),t.search&&(e.search=t.search),await u(We,"planmagnetRoadmaps",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Public","Owner"],row:n=>[p(n.id,12),n.name,n.type,String(n.isPublic),p(n.ownerId,12)]});}),a.command("get").description("Get a roadmap by id").argument("<id>","Roadmap ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ve,{id:t});if(!n.planmagnetRoadmap)throw new o(`Roadmap ${t} not found`);h$1(e,n.planmagnetRoadmap);}catch(n){g$1(n);}}),a.command("create").description("Create a roadmap").requiredOption("--name <name>","Roadmap name").requiredOption("--type <t>","Type (TIMELINE|GANTT|SWIMLANE|CUSTOM)").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--public","Mark as publicly shared").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:t.type.toUpperCase(),ownerId:t.owner};t.description&&(e.description=t.description),t.public&&(e.isPublic=!0);let n=await b$1(Ye,{input:e});i(`Roadmap created: ${n.planmagnetCreateRoadmap.name}`),h$1(t,n.planmagnetCreateRoadmap);}catch(e){g$1(e);}}),a.command("update").description("Update a roadmap").argument("<id>","Roadmap ID").option("--name <name>","Roadmap name").option("--description <s>","Description").option("--type <t>","Type").option("--public <bool>","Public flag (true|false)").option("--owner <id>","Owner actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.public!==void 0&&(n.isPublic=e.public==="true"),e.owner&&(n.ownerId=e.owner),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Ke,{id:t,input:n});i("Roadmap updated"),h$1(e,d.planmagnetUpdateRoadmap);}catch(n){g$1(n);}}),a.command("delete").description("Delete a roadmap").argument("<id>","Roadmap ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Xe,{id:t});if(!n.planmagnetDeleteRoadmap)throw new o(`Roadmap ${t} could not be deleted`);i(`Roadmap ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRoadmap});}catch(n){g$1(n);}}),a.command("items").description("List roadmap items").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--roadmap <id>","Filter by roadmap ID").option("--project <id>","Filter by project ID").option("--milestone <id>","Filter by milestone ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.roadmap&&(e.roadmapId=t.roadmap),t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await u(Qe,"planmagnetRoadmapItems",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Status","Roadmap"],row:n=>[p(n.id,12),p(n.title,32),n.status,p(n.roadmapId,12)]});}),a.command("get-item").description("Get a roadmap item by id").argument("<id>","Roadmap item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Je,{id:t});if(!n.planmagnetRoadmapItem)throw new o(`Roadmap item ${t} not found`);h$1(e,n.planmagnetRoadmapItem);}catch(n){g$1(n);}}),a.command("create-item").description("Create a roadmap item").requiredOption("--roadmap <id>","Roadmap ID").requiredOption("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--project <id>","Linked project ID").option("--milestone <id>","Linked milestone ID").option("--work-item <id>","Linked work item ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--color <c>","Display color").option("--swimlane <s>","Swimlane / row").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={roadmapId:t.roadmap,title:t.title};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.workItem&&(e.workItemId=t.workItem),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.color&&(e.color=t.color),t.swimlane&&(e.swimlane=t.swimlane),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(ze,{input:e});i(`Roadmap item created: ${n.planmagnetCreateRoadmapItem.title}`),h$1(t,n.planmagnetCreateRoadmapItem);}catch(e){g$1(e);}}),a.command("update-item").description("Update a roadmap item").argument("<id>","Roadmap item ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--color <c>","Display color").option("--swimlane <s>","Swimlane / row").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.color&&(n.color=e.color),e.swimlane&&(n.swimlane=e.swimlane),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(He,{id:t,input:n});i("Roadmap item updated"),h$1(e,d.planmagnetUpdateRoadmapItem);}catch(n){g$1(n);}}),a.command("delete-item").description("Delete a roadmap item").argument("<id>","Roadmap item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ze,{id:t});if(!n.planmagnetDeleteRoadmapItem)throw new o(`Roadmap item ${t} could not be deleted`);i(`Roadmap item ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRoadmapItem});}catch(n){g$1(n);}});}function ma(c){let a=c.command("features").description("Planmagnet feature requests");a.command("list").description("List feature requests in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--submitted-by <id>","Filter by submitter ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.submittedBy&&(e.submittedBy=t.submittedBy),t.search&&(e.search=t.search),await u(tn,"planmagnetFeatureRequests",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Status","Votes","Priority","Submitter"],row:n=>[p(n.id,12),p(n.title,28),n.status,String(n.voteCount),n.priorityScore==null?"-":String(n.priorityScore),p(n.submittedBy,12)]});}),a.command("get").description("Get a feature request by id").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(en,{id:t});if(!n.planmagnetFeatureRequest)throw new o(`Feature request ${t} not found`);h$1(e,n.planmagnetFeatureRequest);}catch(n){g$1(n);}}),a.command("create").description("Create a feature request").requiredOption("--title <s>","Feature title").option("--description <s>","Description").option("--project <id>","Project ID").option("--status <s>","Status").option("--business-value <n>","Business value rating (1-10)",l).option("--effort-estimate <s>","Effort estimate (XS|S|M|L|XL)").option("--work-item <id>","Linked work item ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.businessValue!==void 0&&(e.businessValue=t.businessValue),t.effortEstimate&&(e.effortEstimate=t.effortEstimate),t.workItem&&(e.workItemId=t.workItem),t.tags&&(e.tags=f(t.tags));let n=await b$1(nn,{input:e});i(`Feature request created: ${n.planmagnetCreateFeatureRequest.title}`),h$1(t,n.planmagnetCreateFeatureRequest);}catch(e){g$1(e);}}),a.command("update").description("Update a feature request").argument("<id>","Feature request ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--business-value <n>","Business value (1-10)",l).option("--effort-estimate <s>","Effort estimate").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.businessValue!==void 0&&(n.businessValue=e.businessValue),e.effortEstimate&&(n.effortEstimate=e.effortEstimate),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(an,{id:t,input:n});i("Feature request updated"),h$1(e,d.planmagnetUpdateFeatureRequest);}catch(n){g$1(n);}}),a.command("delete").description("Delete a feature request").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(on,{id:t});if(!n.planmagnetDeleteFeatureRequest)throw new o(`Feature request ${t} could not be deleted`);i(`Feature request ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteFeatureRequest});}catch(n){g$1(n);}}),a.command("vote").description("Vote on a feature request").argument("<id>","Feature request ID").option("--weight <n>","Vote weight",l).option("--comment <s>","Optional comment").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.weight!==void 0&&(n.weight=e.weight),e.comment&&(n.comment=e.comment);let d=await b$1(rn,{featureRequestId:t,input:Object.keys(n).length?n:void 0});i(`Voted on feature request ${t}`),h$1(e,d.planmagnetVoteOnFeature);}catch(n){g$1(n);}}),a.command("remove-vote").description("Remove your vote from a feature request").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(sn,{featureRequestId:t});if(!n.planmagnetRemoveFeatureVote)throw new o(`No vote to remove from feature request ${t}`);i(`Vote removed from feature request ${t}`),h$1(e,{removed:n.planmagnetRemoveFeatureVote});}catch(n){g$1(n);}}),a.command("link-competitor").description("Link a competitor to a feature request").requiredOption("--feature <id>","Feature request ID").requiredOption("--competitor <id>","Competitor ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(pn,{input:{featureRequestId:t.feature,competitorId:t.competitor}});i("Competitor linked"),h$1(t,e.planmagnetLinkCompetitorToFeature);}catch(e){g$1(e);}}),a.command("unlink-competitor").description("Unlink a competitor from a feature request").requiredOption("--feature <id>","Feature request ID").requiredOption("--competitor <id>","Competitor ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(mn,{input:{featureRequestId:t.feature,competitorId:t.competitor}});i("Competitor unlinked"),h$1(t,e.planmagnetUnlinkCompetitorFromFeature);}catch(e){g$1(e);}});}function da(c){let a=c.command("competitors").description("Planmagnet competitors");a.command("list").description("List competitors in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.search&&(e.search=t.search),await u(dn,"planmagnetCompetitors",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Website"],row:n=>[p(n.id,12),n.name,n.website??"-"]});}),a.command("get").description("Get a competitor by id").argument("<id>","Competitor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(cn,{id:t});if(!n.planmagnetCompetitor)throw new o(`Competitor ${t} not found`);h$1(e,n.planmagnetCompetitor);}catch(n){g$1(n);}}),a.command("create").description("Create a competitor").requiredOption("--name <name>","Competitor name").option("--description <s>","Description / notes").option("--website <url>","Website URL").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.website&&(e.website=t.website),t.tags&&(e.tags=f(t.tags));let n=await b$1(un,{input:e});i(`Competitor created: ${n.planmagnetCreateCompetitor.name}`),h$1(t,n.planmagnetCreateCompetitor);}catch(e){g$1(e);}}),a.command("update").description("Update a competitor").argument("<id>","Competitor ID").option("--name <name>","Name").option("--description <s>","Description").option("--website <url>","Website URL").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.website&&(n.website=e.website),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(ln,{id:t,input:n});i("Competitor updated"),h$1(e,d.planmagnetUpdateCompetitor);}catch(n){g$1(n);}}),a.command("delete").description("Delete a competitor").argument("<id>","Competitor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(gn,{id:t});if(!n.planmagnetDeleteCompetitor)throw new o(`Competitor ${t} could not be deleted`);i(`Competitor ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteCompetitor});}catch(n){g$1(n);}});}function ca(c){let a=c.command("custom-fields").description("Planmagnet custom field definitions & values");a.command("list").description("List custom field definitions in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--field-type <t>","Filter by field type").option("--required","Only required fields").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.fieldType&&(e.fieldType=t.fieldType.toUpperCase()),t.required&&(e.isRequired=true),t.search&&(e.search=t.search),await u(In,"planmagnetCustomFieldDefinitions",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Required","Project"],row:n=>[p(n.id,12),n.name,n.fieldType,String(n.isRequired),p(n.projectId,12)]});}),a.command("get").description("Get a custom field definition by id").argument("<id>","Definition ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(yn,{id:t});if(!n.planmagnetCustomFieldDefinition)throw new o(`Custom field definition ${t} not found`);h$1(e,n.planmagnetCustomFieldDefinition);}catch(n){g$1(n);}}),a.command("create").description("Create a custom field definition").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Field name").requiredOption("--field-type <t>","Field type (TEXT|NUMBER|DATE|SELECT|\u2026)").option("--description <s>","Description").option("--required","Mark as required").option("--default-value <json>","Default value JSON").option("--options <json>","Options JSON (for SELECT/MULTI_SELECT)").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,fieldType:t.fieldType.toUpperCase()};t.description&&(e.description=t.description),t.required&&(e.isRequired=!0),t.defaultValue&&(e.defaultValue=g("default-value",t.defaultValue)),t.options&&(e.options=g("options",t.options)),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(En,{input:e});i(`Custom field created: ${n.planmagnetCreateCustomFieldDefinition.name}`),h$1(t,n.planmagnetCreateCustomFieldDefinition);}catch(e){g$1(e);}}),a.command("update").description("Update a custom field definition").argument("<id>","Definition ID").option("--name <name>","Field name").option("--description <s>","Description").option("--field-type <t>","Field type").option("--required <bool>","Required flag (true|false)").option("--options <json>","Options JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.fieldType&&(n.fieldType=e.fieldType.toUpperCase()),e.required!==void 0&&(n.isRequired=e.required==="true"),e.options&&(n.options=g("options",e.options)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Dn,{id:t,input:n});i("Custom field definition updated"),h$1(e,d.planmagnetUpdateCustomFieldDefinition);}catch(n){g$1(n);}}),a.command("delete").description("Delete a custom field definition").argument("<id>","Definition ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Tn,{id:t});if(!n.planmagnetDeleteCustomFieldDefinition)throw new o(`Custom field definition ${t} could not be deleted`);i(`Custom field definition ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteCustomFieldDefinition});}catch(n){g$1(n);}}),a.command("values").description("List custom field values").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--definition <id>","Filter by definition ID").option("--work-item <id>","Filter by work item ID").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.definition&&(e.definitionId=t.definition),t.workItem&&(e.workItemId=t.workItem),await u(wn,"planmagnetCustomFieldValues",t,Object.keys(e).length?e:void 0,{headers:["ID","Definition","Work Item","Set By"],row:n=>[p(n.id,12),p(n.definitionId,12),p(n.workItemId,12),p(n.setBy,12)]});}),a.command("set-value").description("Set a custom field value on a work item").requiredOption("--definition <id>","Definition ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--value <json>","Value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={definitionId:t.definition,workItemId:t.workItem,value:g("value",t.value)},n=await b$1(Rn,{input:e});i("Custom field value set"),h$1(t,n.planmagnetSetCustomFieldValue);}catch(e){g$1(e);}}),a.command("remove-value").description("Remove a custom field value from a work item").requiredOption("--definition <id>","Definition ID").requiredOption("--work-item <id>","Work item ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Pn,{workItemId:t.workItem,definitionId:t.definition});if(!e.planmagnetRemoveCustomFieldValue)throw new o("Custom field value could not be removed");i("Custom field value removed"),h$1(t,{removed:e.planmagnetRemoveCustomFieldValue});}catch(e){g$1(e);}});}function ua(c){let a=c.command("automations").description("Planmagnet automation rules");a.command("list").description("List automation rules in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--trigger-type <t>","Filter by trigger type").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.triggerType&&(e.triggerType=t.triggerType.toUpperCase()),t.search&&(e.search=t.search),await u(Cn,"planmagnetAutomationRules",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Trigger","Runs","Project"],row:n=>[p(n.id,12),n.name,n.status,n.triggerType,String(n.executionCount),p(n.projectId,12)]});}),a.command("get").description("Get an automation rule by id").argument("<id>","Automation rule ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($n,{id:t});if(!n.planmagnetAutomationRule)throw new o(`Automation rule ${t} not found`);h$1(e,n.planmagnetAutomationRule);}catch(n){g$1(n);}}),a.command("create").description("Create an automation rule").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Rule name").requiredOption("--trigger-type <t>","Trigger type (e.g. WORK_ITEM_CREATED)").requiredOption("--trigger-config <json>","Trigger configuration JSON").requiredOption("--actions <json>","Actions JSON array").option("--description <s>","Description").option("--conditions <json>","Conditions JSON array").option("--sort-order <n>","Sort order",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,triggerType:t.triggerType.toUpperCase(),triggerConfig:g("trigger-config",t.triggerConfig),actions:g("actions",t.actions)};t.description&&(e.description=t.description),t.conditions&&(e.conditions=g("conditions",t.conditions)),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(kn,{input:e});i(`Automation rule created: ${n.planmagnetCreateAutomationRule.name}`),h$1(t,n.planmagnetCreateAutomationRule);}catch(e){g$1(e);}}),a.command("update").description("Update an automation rule").argument("<id>","Automation rule ID").option("--name <name>","Rule name").option("--description <s>","Description").option("--trigger-type <t>","Trigger type").option("--trigger-config <json>","Trigger configuration JSON").option("--conditions <json>","Conditions JSON array").option("--actions <json>","Actions JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.triggerType&&(n.triggerType=e.triggerType.toUpperCase()),e.triggerConfig&&(n.triggerConfig=g("trigger-config",e.triggerConfig)),e.conditions&&(n.conditions=g("conditions",e.conditions)),e.actions&&(n.actions=g("actions",e.actions)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(hn,{id:t,input:n});i("Automation rule updated"),h$1(e,d.planmagnetUpdateAutomationRule);}catch(n){g$1(n);}}),a.command("delete").description("Delete an automation rule").argument("<id>","Automation rule ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(An,{id:t});if(!n.planmagnetDeleteAutomationRule)throw new o(`Automation rule ${t} could not be deleted`);i(`Automation rule ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteAutomationRule});}catch(n){g$1(n);}}),a.command("toggle").description("Toggle an automation rule (activate/pause)").argument("<id>","Automation rule ID").requiredOption("--status <s>","Status (ACTIVE|PAUSED|DISABLED|ERROR)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(bn,{id:t,status:e.status.toUpperCase()});i(`Automation rule ${t} \u2192 ${n.planmagnetToggleAutomationRule.status}`),h$1(e,n.planmagnetToggleAutomationRule);}catch(n){g$1(n);}}),a.command("execute").description("Manually execute an automation rule").argument("<id>","Automation rule ID").option("--trigger-data <json>","Trigger data JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=e.triggerData?g("trigger-data",e.triggerData):void 0,d=await b$1(_n,{id:t,triggerData:n});i(`Automation rule executed: ${d.planmagnetExecuteAutomationRule.status}`),h$1(e,d.planmagnetExecuteAutomationRule);}catch(n){g$1(n);}}),a.command("executions").description("List automation executions").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--rule <id>","Filter by rule ID").option("--status <s>","Filter by execution status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.rule&&(e.ruleId=t.rule),t.status&&(e.status=t.status.toUpperCase()),await u(Sn,"planmagnetAutomationExecutions",t,Object.keys(e).length?e:void 0,{headers:["ID","Rule","Status","Executed At","Duration (ms)"],row:n=>[p(n.id,12),p(n.ruleId,12),n.status,n.executedAt,n.durationMs==null?"-":String(n.durationMs)]});});}async function la(c,a,t,e,n){try{let P=(await b$1(c,{id:t}))[a];if(!P)throw new o(`Sync ${t} could not be ${e}`);i(`Sync ${t} ${e}`),h$1(n,P);}catch(d){g$1(d);}}function ga(c){let a=c.command("syncs").description("Planmagnet external syncs");a.command("list").description("List external syncs in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--provider <p>","Filter by provider").option("--direction <d>","Filter by direction").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.provider&&(e.provider=t.provider.toUpperCase()),t.direction&&(e.direction=t.direction.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await u(Un,"planmagnetExternalSyncs",t,Object.keys(e).length?e:void 0,{headers:["ID","Provider","Direction","Status","Project","Synced"],row:n=>[p(n.id,12),n.provider,n.direction,n.status,p(n.projectId,12),String(n.totalItemsSynced)]});}),a.command("get").description("Get an external sync by id").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ln,{id:t});if(!n.planmagnetExternalSync)throw new o(`Sync ${t} not found`);h$1(e,n.planmagnetExternalSync);}catch(n){g$1(n);}}),a.command("create").description("Create an external sync configuration").requiredOption("--project <id>","Project ID").requiredOption("--provider <p>","Provider (JIRA|GITHUB|LINEAR|\u2026)").requiredOption("--direction <d>","Direction (INBOUND|OUTBOUND|BIDIRECTIONAL)").requiredOption("--external-project <id>","External project/board ID").requiredOption("--connection-config <json>","Connection configuration JSON").option("--external-project-url <url>","External project URL").option("--field-mapping <json>","Field mapping JSON").option("--sync-filters <json>","Sync filter rules JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,provider:t.provider.toUpperCase(),direction:t.direction.toUpperCase(),externalProjectId:t.externalProject,connectionConfig:g("connection-config",t.connectionConfig)};t.externalProjectUrl&&(e.externalProjectUrl=t.externalProjectUrl),t.fieldMapping&&(e.fieldMapping=g("field-mapping",t.fieldMapping)),t.syncFilters&&(e.syncFilters=g("sync-filters",t.syncFilters));let n=await b$1(xn,{input:e});i(`Sync created: ${n.planmagnetCreateExternalSync.provider}`),h$1(t,n.planmagnetCreateExternalSync);}catch(e){g$1(e);}}),a.command("update").description("Update an external sync configuration").argument("<id>","Sync ID").option("--direction <d>","Direction").option("--external-project <id>","External project ID").option("--external-project-url <url>","External project URL").option("--connection-config <json>","Connection configuration JSON").option("--field-mapping <json>","Field mapping JSON").option("--sync-filters <json>","Sync filter rules JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.direction&&(n.direction=e.direction.toUpperCase()),e.externalProject&&(n.externalProjectId=e.externalProject),e.externalProjectUrl&&(n.externalProjectUrl=e.externalProjectUrl),e.connectionConfig&&(n.connectionConfig=g("connection-config",e.connectionConfig)),e.fieldMapping&&(n.fieldMapping=g("field-mapping",e.fieldMapping)),e.syncFilters&&(n.syncFilters=g("sync-filters",e.syncFilters)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Fn,{id:t,input:n});i("Sync updated"),h$1(e,d.planmagnetUpdateExternalSync);}catch(n){g$1(n);}}),a.command("delete").description("Delete an external sync configuration").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Mn,{id:t});if(!n.planmagnetDeleteExternalSync)throw new o(`Sync ${t} could not be deleted`);i(`Sync ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteExternalSync});}catch(n){g$1(n);}}),a.command("pause").description("Pause a sync").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action((t,e)=>la(Nn,"planmagnetPauseExternalSync",t,"paused",e)),a.command("resume").description("Resume a paused sync").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action((t,e)=>la(qn,"planmagnetResumeExternalSync",t,"resumed",e)),a.command("start").description("Start a sync operation").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(vn,{id:t});i(`Sync ${t} started`),h$1(e,n.planmagnetStartSync);}catch(n){g$1(n);}}),a.command("export").description("Export items to an external tool").requiredOption("--sync <id>","Sync ID").option("--all","Export all eligible items").option("--ids <csv>","Comma-separated internal IDs to export").option("-f, --format <format>","Output format").action(async t=>{try{let e={syncId:t.sync};t.all&&(e.exportAll=!0),t.ids&&(e.internalIds=f(t.ids));let n=await b$1(Bn,{input:e});i("Export started"),h$1(t,n.planmagnetExportToExternal);}catch(e){g$1(e);}}),a.command("import").description("Import items from an external tool").requiredOption("--sync <id>","Sync ID").option("--all","Import all eligible items").option("--ids <csv>","Comma-separated external IDs to import").option("-f, --format <format>","Output format").action(async t=>{try{let e={syncId:t.sync};t.all&&(e.importAll=!0),t.ids&&(e.externalIds=f(t.ids));let n=await b$1(Gn,{input:e});i("Import started"),h$1(t,n.planmagnetImportFromExternal);}catch(e){g$1(e);}}),a.command("mappings").description("List external mappings").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--sync <id>","Filter by sync ID").option("--internal-type <t>","Filter by internal type").option("--internal-id <id>","Filter by internal ID").option("--external-type <t>","Filter by external type").option("--external-id <id>","Filter by external ID").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.sync&&(e.syncId=t.sync),t.internalType&&(e.internalType=t.internalType),t.internalId&&(e.internalId=t.internalId),t.externalType&&(e.externalType=t.externalType),t.externalId&&(e.externalId=t.externalId),await u(jn,"planmagnetExternalMappings",t,Object.keys(e).length?e:void 0,{headers:["ID","Sync","Internal","Internal ID","External","External ID"],row:n=>[p(n.id,12),p(n.syncId,12),n.internalType,p(n.internalId,12),n.externalType,p(n.externalId,12)]});});}function fa(c){let a=c.command("ui-sessions").description("Planmagnet UI sessions");a.command("list").description("List UI sessions for the current user").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--user <id>","Filter by user ID").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.user&&(e.userId=t.user),await u(Wn,"planmagnetUiSessions",t,Object.keys(e).length?e:void 0,{headers:["ID","User","Workspace"],row:n=>[p(n.id,12),p(n.userId,12),p(n.workspaceId,12)]});}),a.command("get-or-create").description("Get or create a UI session for the current user").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("-f, --format <format>","Output format").action(async t=>{try{let e=K(t.workspace),n=await b$1(Vn,{workspaceId:e});h$1(t,n.planmagnetGetOrCreateUISession);}catch(e){g$1(e);}}),a.command("update").description("Update a UI session's view state").requiredOption("--view-state <json>","View state JSON (filters, columns, sort, etc.)").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={viewState:g("view-state",t.viewState)};t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(Qn,{input:e});i("UI session updated"),h$1(t,n.planmagnetUpdateUISession);}catch(e){g$1(e);}}),a.command("delete").description("Delete a UI session").argument("<id>","UI session ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Jn,{id:t});if(!n.planmagnetDeleteUISession)throw new o(`UI session ${t} could not be deleted`);i(`UI session ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteUISession});}catch(n){g$1(n);}});}var wa={id:"planmagnet",version:"1.0.0",displayName:"Planmagnet",dependsOn:["auth","workspaces"],register(c,a$1){a(a$1);let t=c.command("planmagnet").description("Planmagnet project & portfolio management");Yn(t),Kn(t),Xn(t),zn(t),Hn(t),Zn(t),ta(t),ea(t),na(t),aa(t),ia(t),oa(t),ra(t),sa(t),pa(t),ma(t),da(t),ca(t),ua(t),ga(t),fa(t);}},hi=wa;export{hi as default};
774
+ `;function g(c,a){try{return JSON.parse(a)}catch{throw new o(`--${c} must be valid JSON`)}}function u(c){let a=Number.parseInt(c,10);if(Number.isNaN(a))throw new o(`Expected an integer but got "${c}"`);return a}function D(c){let a=Number.parseFloat(c);if(Number.isNaN(a))throw new o(`Expected a number but got "${c}"`);return a}function f(c){return c.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function da(c){let a=c??t()?.workspaceId;if(!a)throw new o("Workspace ID required \u2014 pass --workspace <id> or select a workspace via `auth login`.");return a}function ca(c){let a={};return c.limit!==void 0&&(a.first=c.limit),c.cursor&&(a.after=c.cursor),Object.keys(a).length?a:void 0}async function l(c,a,t,e,n){try{let d=da(t.workspace),W=(await b$1(c,{filter:e,pagination:ca(t),workspaceId:d}))[a];if(!W)throw new o(`No "${a}" payload returned`);h$1({format:t.format},W.items,{headers:n.headers,rows:W.items.map(n.row)});}catch(d){g$1(d);}}function Bn(c){let a=c.command("portfolios").description("Planmagnet portfolios");a.command("list").description("List portfolios in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by status").option("--alignment <a>","Filter by strategic alignment").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.alignment&&(e.alignment=t.alignment.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await l(lt,"planmagnetPortfolios",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Owner","Alignment","Budget"],row:n=>[p(n.id,12),n.name,n.status,p(n.ownerId,12),n.alignment??"-",n.budgetTotal==null?"-":String(n.budgetTotal)]});}),a.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(gt,{id:t});if(!n.planmagnetPortfolio)throw new o(`Portfolio ${t} not found`);h$1(e,n.planmagnetPortfolio);}catch(n){g$1(n);}}),a.command("overview").description("Aggregated health & metrics overview for a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ft,{portfolioId:t});h$1(e,n.planmagnetPortfolioOverview);}catch(n){g$1(n);}}),a.command("create").description("Create a portfolio").requiredOption("--name <name>","Portfolio name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--status <s>","Status").option("--alignment <a>","Strategic alignment").option("--alignment-label <s>","Custom alignment label").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--fiscal-period <s>","Fiscal period").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.alignment&&(e.alignment=t.alignment.toUpperCase()),t.alignmentLabel&&(e.alignmentLabel=t.alignmentLabel),t.budgetTotal!==void 0&&(e.budgetTotal=t.budgetTotal),t.currency&&(e.currency=t.currency),t.fiscalPeriod&&(e.fiscalPeriod=t.fiscalPeriod),t.tags&&(e.tags=f(t.tags));let n=await b$1(It,{input:e});i(`Portfolio created: ${n.planmagnetCreatePortfolio.name}`),h$1(t,n.planmagnetCreatePortfolio);}catch(e){g$1(e);}}),a.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--name <name>","Portfolio name").option("--description <s>","Description").option("--status <s>","Status").option("--alignment <a>","Strategic alignment").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--owner <id>","Owner actor ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.alignment&&(n.alignment=e.alignment.toUpperCase()),e.budgetTotal!==void 0&&(n.budgetTotal=e.budgetTotal),e.currency&&(n.currency=e.currency),e.owner&&(n.ownerId=e.owner),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(yt,{id:t,input:n});i("Portfolio updated"),h$1(e,d.planmagnetUpdatePortfolio);}catch(n){g$1(n);}}),a.command("delete").description("Delete a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(wt,{id:t});if(!n.planmagnetDeletePortfolio)throw new o(`Portfolio ${t} could not be deleted`);i(`Portfolio ${t} deleted`),h$1(e,{deleted:n.planmagnetDeletePortfolio});}catch(n){g$1(n);}});}function Gn(c){let a=c.command("programs").description("Planmagnet programs");a.command("list").description("List programs in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await l(pt,"planmagnetPrograms",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Owner","Budget","Currency"],row:n=>[p(n.id,12),n.name,n.status,p(n.ownerId,12),n.budgetTotal==null?"-":String(n.budgetTotal),n.currency??"-"]});}),a.command("get").description("Get a program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(mt,{id:t});if(!n.planmagnetProgram)throw new o(`Program ${t} not found`);h$1(e,n.planmagnetProgram);}catch(n){g$1(n);}}),a.command("create").description("Create a program").requiredOption("--name <name>","Program name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--status <s>","Status").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.budgetTotal!==void 0&&(e.budgetTotal=t.budgetTotal),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(dt,{input:e});i(`Program created: ${n.planmagnetCreateProgram.name}`),h$1(t,n.planmagnetCreateProgram);}catch(e){g$1(e);}}),a.command("update").description("Update a program").argument("<id>","Program ID").option("--name <name>","Program name").option("--description <s>","Description").option("--status <s>","Status").option("--budget-total <n>","Total budget",D).option("--currency <c>","Currency code").option("--owner <id>","Owner actor ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.budgetTotal!==void 0&&(n.budgetTotal=e.budgetTotal),e.currency&&(n.currency=e.currency),e.owner&&(n.ownerId=e.owner),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(ct,{id:t,input:n});i("Program updated"),h$1(e,d.planmagnetUpdateProgram);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ut,{id:t});if(!n.planmagnetDeleteProgram)throw new o(`Program ${t} could not be deleted`);i(`Program ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProgram});}catch(n){g$1(n);}});}function Wn(c){let a=c.command("projects").description("Planmagnet projects");a.command("list").description("List projects in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--status <s>","Filter by project status").option("--methodology <m>","Filter by methodology").option("--owner <id>","Filter by owner ID").option("--program <id>","Filter by program ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.status&&(e.status=t.status.toUpperCase()),t.methodology&&(e.methodology=t.methodology.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.program&&(e.programId=t.program),t.search&&(e.search=t.search),await l(X,"planmagnetProjects",t,Object.keys(e).length?e:void 0,{headers:["ID","Key","Name","Status","Methodology","Owner"],row:n=>[p(n.id,12),n.key,n.name,n.status,n.methodology,p(n.ownerId,12)]});}),a.command("get").description("Get a project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(z,{id:t});if(!n.planmagnetProject)throw new o(`Project ${t} not found`);h$1(e,n.planmagnetProject);}catch(n){g$1(n);}}),a.command("create").description("Create a project").requiredOption("--key <key>","Project key/prefix (e.g. PROJ)").requiredOption("--name <name>","Project name").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--methodology <m>","Methodology (AGILE|SCRUM|KANBAN|WATERFALL|HYBRID|CUSTOM)").option("--status <s>","Initial status").option("--program <id>","Parent program ID").option("--default-assignee <id>","Default assignee actor ID").option("--start-date <iso>","Planned start date (ISO)").option("--end-date <iso>","Planned end date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={key:t.key,name:t.name,ownerId:t.owner};t.description&&(e.description=t.description),t.methodology&&(e.methodology=t.methodology.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.program&&(e.programId=t.program),t.defaultAssignee&&(e.defaultAssigneeId=t.defaultAssignee),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(H,{input:e});i(`Project created: ${n.planmagnetCreateProject.key}`),h$1(t,n.planmagnetCreateProject);}catch(e){g$1(e);}}),a.command("update").description("Update a project").argument("<id>","Project ID").option("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status").option("--methodology <m>","Methodology").option("--owner <id>","Owner actor ID").option("--program <id>","Parent program ID").option("--default-assignee <id>","Default assignee actor ID").option("--start-date <iso>","Planned start date (ISO)").option("--end-date <iso>","Planned end date (ISO)").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.methodology&&(n.methodology=e.methodology.toUpperCase()),e.owner&&(n.ownerId=e.owner),e.program&&(n.programId=e.program),e.defaultAssignee&&(n.defaultAssigneeId=e.defaultAssignee),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.tags&&(n.tags=f(e.tags)),e.metadata&&(n.metadata=g("metadata",e.metadata)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Z,{id:t,input:n});i("Project updated"),h$1(e,d.planmagnetUpdateProject);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(tt,{id:t});if(!n.planmagnetDeleteProject)throw new o(`Project ${t} could not be deleted`);i(`Project ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProject});}catch(n){g$1(n);}});}function Vn(c){let a=c.command("templates").description("Planmagnet project templates");a.command("list").description("List project templates in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--category <c>","Filter by category").option("--built-in","Only built-in templates").option("--published","Only published templates").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.category&&(e.category=t.category),t.builtIn&&(e.isBuiltIn=true),t.published&&(e.isPublished=true),t.search&&(e.search=t.search),await l(et,"planmagnetProjectTemplates",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Category","Built-in","Published","Usage"],row:n=>[p(n.id,12),n.name,n.category??"-",String(n.isBuiltIn),String(n.isPublished),String(n.usageCount)]});}),a.command("get").description("Get a project template by id").argument("<id>","Template ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(nt,{id:t});if(!n.planmagnetProjectTemplate)throw new o(`Template ${t} not found`);h$1(e,n.planmagnetProjectTemplate);}catch(n){g$1(n);}}),a.command("create").description("Create a project template").requiredOption("--name <name>","Template name").requiredOption("--configuration <json>","Template configuration JSON").option("--description <s>","Description").option("--category <c>","Category").option("--published","Mark as published").option("--board-config <json>","Board layout JSON").option("--sprint-config <json>","Sprint configuration JSON").option("--custom-fields-config <json>","Custom field definitions JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,configuration:g("configuration",t.configuration)};t.description&&(e.description=t.description),t.category&&(e.category=t.category),t.published&&(e.isPublished=!0),t.boardConfig&&(e.boardConfig=g("board-config",t.boardConfig)),t.sprintConfig&&(e.sprintConfig=g("sprint-config",t.sprintConfig)),t.customFieldsConfig&&(e.customFieldsConfig=g("custom-fields-config",t.customFieldsConfig)),t.tags&&(e.tags=f(t.tags));let n=await b$1(at,{input:e});i(`Template created: ${n.planmagnetCreateProjectTemplate.name}`),h$1(t,n.planmagnetCreateProjectTemplate);}catch(e){g$1(e);}}),a.command("update").description("Update a project template").argument("<id>","Template ID").option("--name <name>","Template name").option("--description <s>","Description").option("--category <c>","Category").option("--published <bool>","Published flag (true|false)").option("--configuration <json>","Configuration JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.category&&(n.category=e.category),e.published!==void 0&&(n.isPublished=e.published==="true"),e.configuration&&(n.configuration=g("configuration",e.configuration)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(it,{id:t,input:n});i("Template updated"),h$1(e,d.planmagnetUpdateProjectTemplate);}catch(n){g$1(n);}}),a.command("delete").description("Delete a project template").argument("<id>","Template ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ot,{id:t});if(!n.planmagnetDeleteProjectTemplate)throw new o(`Template ${t} could not be deleted`);i(`Template ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteProjectTemplate});}catch(n){g$1(n);}}),a.command("apply").description("Apply a template to create a new project").requiredOption("--template <id>","Template ID").requiredOption("--name <name>","New project name").requiredOption("--owner <id>","Owner actor ID").option("--project-description <s>","New project description").option("-f, --format <format>","Output format").action(async t=>{try{let e={templateId:t.template,projectName:t.name,ownerId:t.owner};t.projectDescription&&(e.projectDescription=t.projectDescription);let n=await b$1(rt,{input:e});i(`Project created from template: ${n.planmagnetApplyTemplate.key}`),h$1(t,n.planmagnetApplyTemplate);}catch(e){g$1(e);}}),a.command("from-project").description("Create a template from an existing project").requiredOption("--project <id>","Source project ID").requiredOption("--name <name>","Template name").option("--description <s>","Template description").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(st,{projectId:t.project,name:t.name,description:t.description});i(`Template created: ${e.planmagnetCreateTemplateFromProject.name}`),h$1(t,e.planmagnetCreateTemplateFromProject);}catch(e){g$1(e);}});}function Qn(c){let a=c.command("work-items").description("Planmagnet work items");a.command("list").description("List work items in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--sprint <id>","Filter by sprint ID").option("--status <s>","Filter by status").option("--type <t>","Filter by type").option("--priority <p>","Filter by priority").option("--assignee <id>","Filter by assignee ID").option("--parent <id>","Filter by parent work item ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.sprint&&(e.sprintId=t.sprint),t.status&&(e.status=t.status.toUpperCase()),t.type&&(e.type=t.type.toUpperCase()),t.priority&&(e.priority=t.priority.toUpperCase()),t.assignee&&(e.assigneeId=t.assignee),t.parent&&(e.parentId=t.parent),t.search&&(e.search=t.search),await l(Et,"planmagnetWorkItems",t,Object.keys(e).length?e:void 0,{headers:["ID","Key","Title","Type","Status","Priority"],row:n=>[p(n.id,12),n.key,p(n.title,32),n.type,n.status,n.priority]});}),a.command("get").description("Get a work item by id").argument("<id>","Work item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Dt,{id:t});if(!n.planmagnetWorkItem)throw new o(`Work item ${t} not found`);h$1(e,n.planmagnetWorkItem);}catch(n){g$1(n);}}),a.command("create").description("Create a work item").requiredOption("--project <id>","Project ID").requiredOption("--title <s>","Title").requiredOption("--type <t>","Type (EPIC|STORY|TASK|BUG|SUB_TASK)").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee actor ID").option("--reporter <id>","Reporter actor ID").option("--parent <id>","Parent work item ID").option("--sprint <id>","Sprint ID").option("--story-points <n>","Story points",u).option("--estimate-minutes <n>","Estimate in minutes",u).option("--due-date <iso>","Due date (ISO)").option("--labels <csv>","Comma-separated labels").option("--tags <csv>","Comma-separated tags").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.priority&&(e.priority=t.priority.toUpperCase()),t.assignee&&(e.assigneeId=t.assignee),t.reporter&&(e.reporterId=t.reporter),t.parent&&(e.parentId=t.parent),t.sprint&&(e.sprintId=t.sprint),t.storyPoints!==void 0&&(e.storyPoints=t.storyPoints),t.estimateMinutes!==void 0&&(e.estimateMinutes=t.estimateMinutes),t.dueDate&&(e.dueDate=t.dueDate),t.labels&&(e.labels=f(t.labels)),t.tags&&(e.tags=f(t.tags)),t.metadata&&(e.metadata=g("metadata",t.metadata));let n=await b$1(Tt,{input:e});i(`Work item created: ${n.planmagnetCreateWorkItem.key}`),h$1(t,n.planmagnetCreateWorkItem);}catch(e){g$1(e);}}),a.command("update").description("Update a work item").argument("<id>","Work item ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--type <t>","Type").option("--assignee <id>","Assignee actor ID").option("--sprint <id>","Sprint ID").option("--story-points <n>","Story points",u).option("--estimate-minutes <n>","Estimate in minutes",u).option("--due-date <iso>","Due date (ISO)").option("--labels <csv>","Comma-separated labels").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.priority&&(n.priority=e.priority.toUpperCase()),e.type&&(n.type=e.type.toUpperCase()),e.assignee&&(n.assigneeId=e.assignee),e.sprint&&(n.sprintId=e.sprint),e.storyPoints!==void 0&&(n.storyPoints=e.storyPoints),e.estimateMinutes!==void 0&&(n.estimateMinutes=e.estimateMinutes),e.dueDate&&(n.dueDate=e.dueDate),e.labels&&(n.labels=f(e.labels)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Rt,{id:t,input:n});i("Work item updated"),h$1(e,d.planmagnetUpdateWorkItem);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a work item").argument("<id>","Work item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Pt,{id:t});if(!n.planmagnetDeleteWorkItem)throw new o(`Work item ${t} could not be deleted`);i(`Work item ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteWorkItem});}catch(n){g$1(n);}}),a.command("assign").description("Assign a work item to an actor").argument("<id>","Work item ID").requiredOption("--assignee <id>","Assignee actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ot,{id:t,input:{assigneeId:e.assignee}});i(`Work item ${t} assigned to ${e.assignee}`),h$1(e,n.planmagnetAssignWorkItem);}catch(n){g$1(n);}}),a.command("move").description("Move a work item to a different status, sprint, or position").argument("<id>","Work item ID").option("--status <s>","Target status").option("--sprint <id>","Target sprint ID").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.status&&(n.status=e.status.toUpperCase()),e.sprint&&(n.sprintId=e.sprint),e.sortOrder!==void 0&&(n.sortOrder=e.sortOrder),!Object.keys(n).length)throw new o("Nothing to move \u2014 specify a target");let d=await b$1(Ct,{id:t,input:n});i("Work item moved"),h$1(e,d.planmagnetMoveWorkItem);}catch(n){g$1(n);}}),a.command("bulk-update").description("Bulk update multiple work items at once").requiredOption("--ids <csv>","Comma-separated work item IDs").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee actor ID").option("--sprint <id>","Sprint ID").option("--labels <csv>","Comma-separated labels").option("-f, --format <format>","Output format").action(async t=>{try{let e=f(t.ids);if(!e.length)throw new o("--ids must contain at least one ID");let n={ids:e};t.status&&(n.status=t.status.toUpperCase()),t.priority&&(n.priority=t.priority.toUpperCase()),t.assignee&&(n.assigneeId=t.assignee),t.sprint&&(n.sprintId=t.sprint),t.labels&&(n.labels=f(t.labels));let d=await b$1($t,{input:n});i(`Updated ${d.planmagnetBulkUpdateWorkItems.length} work item(s)`),h$1(t,d.planmagnetBulkUpdateWorkItems);}catch(e){g$1(e);}});}function Jn(c){let a=c.command("dependencies").description("Planmagnet work item dependencies");a.command("list").description("List dependencies in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--source <id>","Filter by source work item ID").option("--target <id>","Filter by target work item ID").option("--type <t>","Filter by dependency type").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.source&&(e.sourceWorkItemId=t.source),t.target&&(e.targetWorkItemId=t.target),t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),await l(kt,"planmagnetDependencies",t,Object.keys(e).length?e:void 0,{headers:["ID","Source","Target","Type","Status"],row:n=>[p(n.id,12),p(n.sourceWorkItemId,12),p(n.targetWorkItemId,12),n.type,n.status]});}),a.command("get").description("Get a dependency by id").argument("<id>","Dependency ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(St,{id:t});if(!n.planmagnetDependency)throw new o(`Dependency ${t} not found`);h$1(e,n.planmagnetDependency);}catch(n){g$1(n);}}),a.command("create").description("Create a dependency between two work items").requiredOption("--source <id>","Source work item ID").requiredOption("--target <id>","Target work item ID").requiredOption("--type <t>","Type (BLOCKS|BLOCKED_BY|RELATES_TO|\u2026)").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={sourceWorkItemId:t.source,targetWorkItemId:t.target,type:t.type.toUpperCase()};t.description&&(e.description=t.description);let n=await b$1(ht,{input:e});i("Dependency created"),h$1(t,n.planmagnetCreateDependency);}catch(e){g$1(e);}}),a.command("update").description("Update a dependency").argument("<id>","Dependency ID").option("--type <t>","Type").option("--status <s>","Status").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(At,{id:t,input:n});i("Dependency updated"),h$1(e,d.planmagnetUpdateDependency);}catch(n){g$1(n);}}),a.command("delete").description("Remove a dependency").argument("<id>","Dependency ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(bt,{id:t});if(!n.planmagnetDeleteDependency)throw new o(`Dependency ${t} could not be removed`);i(`Dependency ${t} removed`),h$1(e,{removed:n.planmagnetDeleteDependency});}catch(n){g$1(n);}});}async function Y(c,a,t,e,n){try{let P=(await b$1(c,{id:t}))[a];if(!P)throw new o(`Sprint ${t} could not be ${e}`);i(`Sprint ${t} ${e}`),h$1(n,P);}catch(d){g$1(d);}}function Yn(c){let a=c.command("sprints").description("Planmagnet sprints");a.command("list").description("List sprints in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await l(_t,"planmagnetSprints",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Project","Capacity","Velocity"],row:n=>[p(n.id,12),n.name,n.status,p(n.projectId,12),n.capacity==null?"-":String(n.capacity),n.velocity==null?"-":String(n.velocity)]});}),a.command("get").description("Get a sprint by id").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ut,{id:t});if(!n.planmagnetSprint)throw new o(`Sprint ${t} not found`);h$1(e,n.planmagnetSprint);}catch(n){g$1(n);}}),a.command("create").description("Create a sprint").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Sprint name").option("--goal <s>","Sprint goal").option("--capacity <n>","Capacity (story points)",u).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name};t.goal&&(e.goal=t.goal),t.capacity!==void 0&&(e.capacity=t.capacity),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Lt,{input:e});i(`Sprint created: ${n.planmagnetCreateSprint.name}`),h$1(t,n.planmagnetCreateSprint);}catch(e){g$1(e);}}),a.command("update").description("Update a sprint").argument("<id>","Sprint ID").option("--name <name>","Sprint name").option("--goal <s>","Sprint goal").option("--capacity <n>","Capacity",u).option("--velocity <n>","Velocity",u).option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.goal!==void 0&&(n.goal=e.goal),e.capacity!==void 0&&(n.capacity=e.capacity),e.velocity!==void 0&&(n.velocity=e.velocity),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(jt,{id:t,input:n});i("Sprint updated"),h$1(e,d.planmagnetUpdateSprint);}catch(n){g$1(n);}}),a.command("delete").description("Soft-delete a sprint").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(xt,{id:t});if(!n.planmagnetDeleteSprint)throw new o(`Sprint ${t} could not be deleted`);i(`Sprint ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteSprint});}catch(n){g$1(n);}}),a.command("start").description("Start a sprint (transition to ACTIVE)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>Y(Ft,"planmagnetStartSprint",t,"started",e)),a.command("complete").description("Complete a sprint (transition to COMPLETED)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>Y(Mt,"planmagnetCompleteSprint",t,"completed",e)),a.command("cancel").description("Cancel a sprint (transition to CANCELLED)").argument("<id>","Sprint ID").option("-f, --format <format>","Output format").action((t,e)=>Y(Nt,"planmagnetCancelSprint",t,"cancelled",e)),a.command("add-items").description("Add work items to a sprint").argument("<id>","Sprint ID").requiredOption("--work-items <csv>","Comma-separated work item IDs").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=f(e.workItems);if(!n.length)throw new o("--work-items must contain at least one ID");let d=await b$1(qt,{id:t,input:{workItemIds:n}});i(`Added ${n.length} work item(s) to sprint ${t}`),h$1(e,d.planmagnetAddWorkItemsToSprint);}catch(n){g$1(n);}}),a.command("remove-items").description("Remove work items from a sprint").argument("<id>","Sprint ID").requiredOption("--work-items <csv>","Comma-separated work item IDs").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=f(e.workItems);if(!n.length)throw new o("--work-items must contain at least one ID");let d=await b$1(vt,{id:t,input:{workItemIds:n}});i(`Removed ${n.length} work item(s) from sprint ${t}`),h$1(e,d.planmagnetRemoveWorkItemsFromSprint);}catch(n){g$1(n);}});}function Kn(c){let a=c.command("boards").description("Planmagnet boards");a.command("list").description("List boards in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--type <t>","Filter by board type").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.type&&(e.type=t.type.toUpperCase()),t.search&&(e.search=t.search),await l(Bt,"planmagnetBoards",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Default","Project","Columns"],row:n=>[p(n.id,12),n.name,n.type,String(n.isDefault),p(n.projectId,12),String(n.columns?.length??0)]});}),a.command("get").description("Get a board by id").argument("<id>","Board ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Gt,{id:t});if(!n.planmagnetBoard)throw new o(`Board ${t} not found`);h$1(e,n.planmagnetBoard);}catch(n){g$1(n);}}),a.command("create").description("Create a board").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Board name").requiredOption("--type <t>","Board type (KANBAN|SCRUM|CUSTOM)").option("--description <s>","Description").option("--default","Make this the default board").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.default&&(e.isDefault=!0);let n=await b$1(Wt,{input:e});i(`Board created: ${n.planmagnetCreateBoard.name}`),h$1(t,n.planmagnetCreateBoard);}catch(e){g$1(e);}}),a.command("update").description("Update a board").argument("<id>","Board ID").option("--name <name>","Board name").option("--description <s>","Description").option("--type <t>","Board type").option("--default <bool>","Default flag (true|false)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.default!==void 0&&(n.isDefault=e.default==="true"),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Vt,{id:t,input:n});i("Board updated"),h$1(e,d.planmagnetUpdateBoard);}catch(n){g$1(n);}}),a.command("delete").description("Delete a board").argument("<id>","Board ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Qt,{id:t});if(!n.planmagnetDeleteBoard)throw new o(`Board ${t} could not be deleted`);i(`Board ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBoard});}catch(n){g$1(n);}}),a.command("create-column").description("Create a column on a board").requiredOption("--board <id>","Board ID").requiredOption("--name <name>","Column name").requiredOption("--type <t>","Column type (TODO|IN_PROGRESS|DONE|CUSTOM)").option("--mapped-status <s>","Mapped work item status").option("--wip-limit <n>","WIP limit (0 = unlimited)",u).option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={boardId:t.board,name:t.name,type:t.type.toUpperCase()};t.mappedStatus&&(e.mappedStatus=t.mappedStatus.toUpperCase()),t.wipLimit!==void 0&&(e.wipLimit=t.wipLimit),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Jt,{input:e});i(`Column created: ${n.planmagnetCreateBoardColumn.name}`),h$1(t,n.planmagnetCreateBoardColumn);}catch(e){g$1(e);}}),a.command("update-column").description("Update a board column").argument("<id>","Column ID").option("--name <name>","Column name").option("--type <t>","Column type").option("--mapped-status <s>","Mapped work item status").option("--wip-limit <n>","WIP limit",u).option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.type&&(n.type=e.type.toUpperCase()),e.mappedStatus&&(n.mappedStatus=e.mappedStatus.toUpperCase()),e.wipLimit!==void 0&&(n.wipLimit=e.wipLimit),e.sortOrder!==void 0&&(n.sortOrder=e.sortOrder),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Yt,{id:t,input:n});i("Column updated"),h$1(e,d.planmagnetUpdateBoardColumn);}catch(n){g$1(n);}}),a.command("delete-column").description("Delete a board column").argument("<id>","Column ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Kt,{id:t});if(!n.planmagnetDeleteBoardColumn)throw new o(`Column ${t} could not be deleted`);i(`Column ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBoardColumn});}catch(n){g$1(n);}}),a.command("move-card").description("Move a card (work item) to a different column and/or position").requiredOption("--board <id>","Board ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--column <id>","Target column ID").option("--sort-order <n>","Sort order within the column",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={workItemId:t.workItem,targetColumnId:t.column};t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Xt,{boardId:t.board,input:e});i("Card moved"),h$1(t,n.planmagnetMoveCard);}catch(e){g$1(e);}}),a.command("reorder-columns").description("Reorder columns on a board").requiredOption("--board <id>","Board ID").requiredOption("--columns <csv>","Comma-separated ordered column IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e=f(t.columns);if(!e.length)throw new o("--columns must contain at least one ID");let n=await b$1(zt,{boardId:t.board,input:{columnIds:e}});i("Columns reordered"),h$1(t,n.planmagnetReorderColumns);}catch(e){g$1(e);}});}function Xn(c){let a=c.command("milestones").description("Planmagnet milestones");a.command("list").description("List milestones in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await l(Ht,"planmagnetMilestones",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Project","Due"],row:n=>[p(n.id,12),n.name,n.status,p(n.projectId,12),n.dueDate??"-"]});}),a.command("get").description("Get a milestone by id").argument("<id>","Milestone ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Zt,{id:t});if(!n.planmagnetMilestone)throw new o(`Milestone ${t} not found`);h$1(e,n.planmagnetMilestone);}catch(n){g$1(n);}}),a.command("create").description("Create a milestone").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Milestone name").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--due-date <iso>","Target due date (ISO)").option("--sort-order <n>","Sort order",u).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.dueDate&&(e.dueDate=t.dueDate),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder),t.tags&&(e.tags=f(t.tags));let n=await b$1(te,{input:e});i(`Milestone created: ${n.planmagnetCreateMilestone.name}`),h$1(t,n.planmagnetCreateMilestone);}catch(e){g$1(e);}}),a.command("update").description("Update a milestone").argument("<id>","Milestone ID").option("--name <name>","Milestone name").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--due-date <iso>","Target due date (ISO)").option("--completed-at <iso>","Completion date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.owner&&(n.ownerId=e.owner),e.dueDate&&(n.dueDate=e.dueDate),e.completedAt&&(n.completedAt=e.completedAt),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(ee,{id:t,input:n});i("Milestone updated"),h$1(e,d.planmagnetUpdateMilestone);}catch(n){g$1(n);}}),a.command("delete").description("Delete a milestone").argument("<id>","Milestone ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ne,{id:t});if(!n.planmagnetDeleteMilestone)throw new o(`Milestone ${t} could not be deleted`);i(`Milestone ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteMilestone});}catch(n){g$1(n);}});}function zn(c){let a=c.command("releases").description("Planmagnet releases");a.command("list").description("List releases in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await l(ae,"planmagnetReleases",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Version","Status","Project"],row:n=>[p(n.id,12),n.name,n.version,n.status,p(n.projectId,12)]});}),a.command("get").description("Get a release by id").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ie,{id:t});if(!n.planmagnetRelease)throw new o(`Release ${t} not found`);h$1(e,n.planmagnetRelease);}catch(n){g$1(n);}}),a.command("create").description("Create a release").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Release name").requiredOption("--version <v>","Release version (e.g. 1.2.0)").option("--description <s>","Description").option("--status <s>","Status").option("--owner <id>","Owner actor ID").option("--planned-date <iso>","Planned release date (ISO)").option("--release-notes <s>","Release notes (markdown)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,version:t.version};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.plannedDate&&(e.plannedDate=t.plannedDate),t.releaseNotes&&(e.releaseNotes=t.releaseNotes),t.tags&&(e.tags=f(t.tags));let n=await b$1(oe,{input:e});i(`Release created: ${n.planmagnetCreateRelease.version}`),h$1(t,n.planmagnetCreateRelease);}catch(e){g$1(e);}}),a.command("update").description("Update a release").argument("<id>","Release ID").option("--name <name>","Release name").option("--version <v>","Version").option("--description <s>","Description").option("--status <s>","Status").option("--planned-date <iso>","Planned date (ISO)").option("--released-at <iso>","Actual release date (ISO)").option("--release-notes <s>","Release notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.version&&(n.version=e.version),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.plannedDate&&(n.plannedDate=e.plannedDate),e.releasedAt&&(n.releasedAt=e.releasedAt),e.releaseNotes&&(n.releaseNotes=e.releaseNotes),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(re,{id:t,input:n});i("Release updated"),h$1(e,d.planmagnetUpdateRelease);}catch(n){g$1(n);}}),a.command("delete").description("Delete a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(se,{id:t});if(!n.planmagnetDeleteRelease)throw new o(`Release ${t} could not be deleted`);i(`Release ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRelease});}catch(n){g$1(n);}});}function Hn(c){let a=c.command("quality-gates").description("Planmagnet quality gates");a.command("list").description("List quality gates in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--milestone <id>","Filter by milestone ID").option("--phase <p>","Filter by phase").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.phase&&(e.phase=t.phase),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await l(pe,"planmagnetQualityGates",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Phase","Project"],row:n=>[p(n.id,12),n.name,n.status,n.phase??"-",p(n.projectId,12)]});}),a.command("get").description("Get a quality gate by id").argument("<id>","Quality gate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(me,{id:t});if(!n.planmagnetQualityGate)throw new o(`Quality gate ${t} not found`);h$1(e,n.planmagnetQualityGate);}catch(n){g$1(n);}}),a.command("create").description("Create a quality gate").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Gate name").requiredOption("--criteria <json>","Criteria JSON array").option("--description <s>","Description").option("--phase <p>","Phase / stage").option("--milestone <id>","Linked milestone ID").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,criteria:g("criteria",t.criteria)};t.description&&(e.description=t.description),t.phase&&(e.phase=t.phase),t.milestone&&(e.milestoneId=t.milestone),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(de,{input:e});i(`Quality gate created: ${n.planmagnetCreateQualityGate.name}`),h$1(t,n.planmagnetCreateQualityGate);}catch(e){g$1(e);}}),a.command("update").description("Update a quality gate").argument("<id>","Quality gate ID").option("--name <name>","Gate name").option("--description <s>","Description").option("--phase <p>","Phase").option("--status <s>","Status").option("--criteria <json>","Criteria JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.phase&&(n.phase=e.phase),e.status&&(n.status=e.status.toUpperCase()),e.criteria&&(n.criteria=g("criteria",e.criteria)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(ce,{id:t,input:n});i("Quality gate updated"),h$1(e,d.planmagnetUpdateQualityGate);}catch(n){g$1(n);}}),a.command("delete").description("Delete a quality gate").argument("<id>","Quality gate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ue,{id:t});if(!n.planmagnetDeleteQualityGate)throw new o(`Quality gate ${t} could not be deleted`);i(`Quality gate ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteQualityGate});}catch(n){g$1(n);}}),a.command("review").description("Review a quality gate (pass, fail, or waive)").argument("<id>","Quality gate ID").requiredOption("--status <s>","Review status (PASSED|FAILED|WAIVED|IN_REVIEW|PENDING)").option("--notes <s>","Review notes").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={status:e.status.toUpperCase()};e.notes&&(n.reviewNotes=e.notes);let d=await b$1(le,{id:t,input:n});i(`Quality gate reviewed: ${d.planmagnetReviewQualityGate.status}`),h$1(e,d.planmagnetReviewQualityGate);}catch(n){g$1(n);}});}function Zn(c){let a=c.command("budgets").description("Planmagnet budgets & expenses");a.command("list").description("List budgets in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await l(ge,"planmagnetBudgets",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Currency","Planned","Spent","Remaining"],row:n=>[p(n.id,12),n.name,n.status,n.currency,String(n.plannedAmount),String(n.spentAmount),String(n.remainingAmount)]});}),a.command("get").description("Get a budget by id").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(fe,{id:t});if(!n.planmagnetBudget)throw new o(`Budget ${t} not found`);h$1(e,n.planmagnetBudget);}catch(n){g$1(n);}}),a.command("create").description("Create a budget").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Budget name").requiredOption("--currency <c>","Currency code (e.g. USD)").requiredOption("--planned-amount <n>","Planned amount",D).option("--description <s>","Description").option("--period-start <iso>","Period start (ISO)").option("--period-end <iso>","Period end (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,currency:t.currency,plannedAmount:t.plannedAmount};t.description&&(e.description=t.description),t.periodStart&&(e.periodStart=t.periodStart),t.periodEnd&&(e.periodEnd=t.periodEnd);let n=await b$1(ye,{input:e});i(`Budget created: ${n.planmagnetCreateBudget.name}`),h$1(t,n.planmagnetCreateBudget);}catch(e){g$1(e);}}),a.command("update").description("Update a budget").argument("<id>","Budget ID").option("--name <name>","Budget name").option("--description <s>","Description").option("--status <s>","Status").option("--currency <c>","Currency code").option("--planned-amount <n>","Planned amount",D).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.currency&&(n.currency=e.currency),e.plannedAmount!==void 0&&(n.plannedAmount=e.plannedAmount),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(we,{id:t,input:n});i("Budget updated"),h$1(e,d.planmagnetUpdateBudget);}catch(n){g$1(n);}}),a.command("delete").description("Delete a budget").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ee,{id:t});if(!n.planmagnetDeleteBudget)throw new o(`Budget ${t} could not be deleted`);i(`Budget ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteBudget});}catch(n){g$1(n);}}),a.command("approve").description("Approve a budget").argument("<id>","Budget ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(De,{id:t});i(`Budget ${t} approved`),h$1(e,n.planmagnetApproveBudget);}catch(n){g$1(n);}}),a.command("expenses").description("List budget expenses").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--budget <id>","Filter by budget ID").option("--category <c>","Filter by category").option("--date-from <iso>","Filter from date (ISO)").option("--date-to <iso>","Filter to date (ISO)").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.budget&&(e.budgetId=t.budget),t.category&&(e.category=t.category),t.dateFrom&&(e.dateFrom=t.dateFrom),t.dateTo&&(e.dateTo=t.dateTo),await l(Ie,"planmagnetBudgetExpenses",t,Object.keys(e).length?e:void 0,{headers:["ID","Budget","Amount","Category","Description","Date"],row:n=>[p(n.id,12),p(n.budgetId,12),String(n.amount),n.category??"-",p(n.description,24),n.date]});}),a.command("log-expense").description("Log an expense against a budget").requiredOption("--budget <id>","Budget ID").requiredOption("--amount <n>","Amount",D).requiredOption("--description <s>","Description").requiredOption("--date <iso>","Date (ISO)").option("--category <c>","Category").option("--reference-url <url>","Receipt / reference URL").option("--work-item <id>","Associated work item ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={budgetId:t.budget,amount:t.amount,description:t.description,date:t.date};t.category&&(e.category=t.category),t.referenceUrl&&(e.referenceUrl=t.referenceUrl),t.workItem&&(e.workItemId=t.workItem);let n=await b$1(Te,{input:e});i("Expense logged"),h$1(t,n.planmagnetLogExpense);}catch(e){g$1(e);}}),a.command("update-expense").description("Update an expense").argument("<id>","Expense ID").option("--amount <n>","Amount",D).option("--category <c>","Category").option("--description <s>","Description").option("--date <iso>","Date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.amount!==void 0&&(n.amount=e.amount),e.category&&(n.category=e.category),e.description!==void 0&&(n.description=e.description),e.date&&(n.date=e.date),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Re,{id:t,input:n});i("Expense updated"),h$1(e,d.planmagnetUpdateExpense);}catch(n){g$1(n);}}),a.command("delete-expense").description("Delete an expense").argument("<id>","Expense ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Pe,{id:t});if(!n.planmagnetDeleteExpense)throw new o(`Expense ${t} could not be deleted`);i(`Expense ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteExpense});}catch(n){g$1(n);}});}function ta(c){let a=c.command("time").description("Planmagnet time tracking");a.command("entries").description("List time entries in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--work-item <id>","Filter by work item ID").option("--user <id>","Filter by user ID").option("--timesheet <id>","Filter by timesheet ID").option("--billing-type <t>","Filter by billing type").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.workItem&&(e.workItemId=t.workItem),t.user&&(e.userId=t.user),t.timesheet&&(e.timesheetId=t.timesheet),t.billingType&&(e.billingType=t.billingType.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),await l(Oe,"planmagnetTimeEntries",t,Object.keys(e).length?e:void 0,{headers:["ID","Project","Work Item","User","Minutes","Billing","Status"],row:n=>[p(n.id,12),p(n.projectId,12),p(n.workItemId,12),p(n.userId,12),String(n.durationMinutes),n.billingType,n.status]});}),a.command("entry").description("Get a time entry by id").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ce,{id:t});if(!n.planmagnetTimeEntry)throw new o(`Time entry ${t} not found`);h$1(e,n.planmagnetTimeEntry);}catch(n){g$1(n);}}),a.command("create-entry").description("Create a time entry").requiredOption("--project <id>","Project ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--date <iso>","Date worked (ISO)").requiredOption("--minutes <n>","Duration in minutes",u).option("--description <s>","Description").option("--billing-type <t>","Billing type (BILLABLE|NON_BILLABLE|INTERNAL)").option("--billing-rate <n>","Billing rate per hour",D).option("--timesheet <id>","Timesheet ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,workItemId:t.workItem,date:t.date,durationMinutes:t.minutes};t.description&&(e.description=t.description),t.billingType&&(e.billingType=t.billingType.toUpperCase()),t.billingRate!==void 0&&(e.billingRate=t.billingRate),t.timesheet&&(e.timesheetId=t.timesheet);let n=await b$1(Se,{input:e});i("Time entry created"),h$1(t,n.planmagnetCreateTimeEntry);}catch(e){g$1(e);}}),a.command("update-entry").description("Update a time entry").argument("<id>","Time entry ID").option("--minutes <n>","Duration in minutes",u).option("--description <s>","Description").option("--billing-type <t>","Billing type").option("--status <s>","Status").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.minutes!==void 0&&(n.durationMinutes=e.minutes),e.description!==void 0&&(n.description=e.description),e.billingType&&(n.billingType=e.billingType.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(he,{id:t,input:n});i("Time entry updated"),h$1(e,d.planmagnetUpdateTimeEntry);}catch(n){g$1(n);}}),a.command("delete-entry").description("Delete a time entry").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ae,{id:t});if(!n.planmagnetDeleteTimeEntry)throw new o(`Time entry ${t} could not be deleted`);i(`Time entry ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteTimeEntry});}catch(n){g$1(n);}}),a.command("log").description("Quick-log time against a work item").requiredOption("--project <id>","Project ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--date <iso>","Date (ISO)").requiredOption("--minutes <n>","Duration in minutes",u).option("--description <s>","Description").option("--billing-type <t>","Billing type").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,workItemId:t.workItem,date:t.date,durationMinutes:t.minutes};t.description&&(e.description=t.description),t.billingType&&(e.billingType=t.billingType.toUpperCase());let n=await b$1(be,{input:e});i("Time logged"),h$1(t,n.planmagnetLogTime);}catch(e){g$1(e);}}),a.command("timesheets").description("List timesheets in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--user <id>","Filter by user ID").option("--status <s>","Filter by status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.user&&(e.userId=t.user),t.status&&(e.status=t.status.toUpperCase()),await l($e,"planmagnetTimesheets",t,Object.keys(e).length?e:void 0,{headers:["ID","User","Status","Total Min","Billable Min"],row:n=>[p(n.id,12),p(n.userId,12),n.status,String(n.totalMinutes),String(n.billableMinutes)]});}),a.command("timesheet").description("Get a timesheet by id").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ke,{id:t});if(!n.planmagnetTimesheet)throw new o(`Timesheet ${t} not found`);h$1(e,n.planmagnetTimesheet);}catch(n){g$1(n);}}),a.command("create-timesheet").description("Create a timesheet").requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(_e,{input:{periodStart:t.periodStart,periodEnd:t.periodEnd}});i("Timesheet created"),h$1(t,e.planmagnetCreateTimesheet);}catch(e){g$1(e);}}),a.command("submit-timesheet").description("Submit a timesheet for approval").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ue,{id:t});i(`Timesheet ${t} submitted`),h$1(e,n.planmagnetSubmitTimesheet);}catch(n){g$1(n);}}),a.command("approve-timesheet").description("Approve a submitted timesheet").argument("<id>","Timesheet ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Le,{id:t});i(`Timesheet ${t} approved`),h$1(e,n.planmagnetApproveTimesheet);}catch(n){g$1(n);}}),a.command("reject-timesheet").description("Reject a submitted timesheet").argument("<id>","Timesheet ID").option("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(je,{id:t,reason:e.reason});i(`Timesheet ${t} rejected`),h$1(e,n.planmagnetRejectTimesheet);}catch(n){g$1(n);}});}function ea(c){let a=c.command("risks").description("Planmagnet risks");a.command("list").description("List risks in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--severity <s>","Filter by severity").option("--category <c>","Filter by category").option("--owner <id>","Filter by owner ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.severity&&(e.severity=t.severity.toUpperCase()),t.category&&(e.category=t.category),t.owner&&(e.ownerId=t.owner),t.search&&(e.search=t.search),await l(xe,"planmagnetRisks",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Severity","Status","Score","Project"],row:n=>[p(n.id,12),p(n.title,28),n.severity,n.status,String(n.riskScore),p(n.projectId,12)]});}),a.command("get").description("Get a risk by id").argument("<id>","Risk ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Fe,{id:t});if(!n.planmagnetRisk)throw new o(`Risk ${t} not found`);h$1(e,n.planmagnetRisk);}catch(n){g$1(n);}}),a.command("matrix").description("Get the risk matrix for a project").argument("<projectId>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Me,{projectId:t});h$1(e,n.planmagnetRiskMatrix);}catch(n){g$1(n);}}),a.command("create").description("Create a risk").requiredOption("--project <id>","Project ID").requiredOption("--title <s>","Risk title").requiredOption("--severity <s>","Severity (NEGLIGIBLE|LOW|MEDIUM|HIGH|CRITICAL)").requiredOption("--likelihood <n>","Likelihood (1-5)",u).requiredOption("--impact <n>","Impact (1-5)",u).option("--description <s>","Description").option("--category <c>","Category").option("--owner <id>","Owner actor ID").option("--mitigation-plan <s>","Mitigation plan").option("--contingency-plan <s>","Contingency plan").option("--due-date <iso>","Mitigation due date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,title:t.title,severity:t.severity.toUpperCase(),likelihood:t.likelihood,impact:t.impact};t.description&&(e.description=t.description),t.category&&(e.category=t.category),t.owner&&(e.ownerId=t.owner),t.mitigationPlan&&(e.mitigationPlan=t.mitigationPlan),t.contingencyPlan&&(e.contingencyPlan=t.contingencyPlan),t.dueDate&&(e.dueDate=t.dueDate),t.tags&&(e.tags=f(t.tags));let n=await b$1(Ne,{input:e});i(`Risk created: ${n.planmagnetCreateRisk.title}`),h$1(t,n.planmagnetCreateRisk);}catch(e){g$1(e);}}),a.command("update").description("Update a risk").argument("<id>","Risk ID").option("--title <s>","Title").option("--description <s>","Description").option("--severity <s>","Severity").option("--status <s>","Status").option("--likelihood <n>","Likelihood (1-5)",u).option("--impact <n>","Impact (1-5)",u).option("--mitigation-plan <s>","Mitigation plan").option("--owner <id>","Owner actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.severity&&(n.severity=e.severity.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.likelihood!==void 0&&(n.likelihood=e.likelihood),e.impact!==void 0&&(n.impact=e.impact),e.mitigationPlan&&(n.mitigationPlan=e.mitigationPlan),e.owner&&(n.ownerId=e.owner),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(qe,{id:t,input:n});i("Risk updated"),h$1(e,d.planmagnetUpdateRisk);}catch(n){g$1(n);}}),a.command("delete").description("Delete a risk").argument("<id>","Risk ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ve,{id:t});if(!n.planmagnetDeleteRisk)throw new o(`Risk ${t} could not be deleted`);i(`Risk ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRisk});}catch(n){g$1(n);}});}function na(c){let a=c.command("roadmaps").description("Planmagnet roadmaps & roadmap items");a.command("list").description("List roadmaps in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--type <t>","Filter by roadmap type").option("--owner <id>","Filter by owner ID").option("--public","Only public roadmaps").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.type&&(e.type=t.type.toUpperCase()),t.owner&&(e.ownerId=t.owner),t.public&&(e.isPublic=true),t.search&&(e.search=t.search),await l(Be,"planmagnetRoadmaps",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Public","Owner"],row:n=>[p(n.id,12),n.name,n.type,String(n.isPublic),p(n.ownerId,12)]});}),a.command("get").description("Get a roadmap by id").argument("<id>","Roadmap ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ge,{id:t});if(!n.planmagnetRoadmap)throw new o(`Roadmap ${t} not found`);h$1(e,n.planmagnetRoadmap);}catch(n){g$1(n);}}),a.command("create").description("Create a roadmap").requiredOption("--name <name>","Roadmap name").requiredOption("--type <t>","Type (TIMELINE|GANTT|SWIMLANE|CUSTOM)").requiredOption("--owner <id>","Owner actor ID").option("--description <s>","Description").option("--public","Mark as publicly shared").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:t.type.toUpperCase(),ownerId:t.owner};t.description&&(e.description=t.description),t.public&&(e.isPublic=!0);let n=await b$1(Qe,{input:e});i(`Roadmap created: ${n.planmagnetCreateRoadmap.name}`),h$1(t,n.planmagnetCreateRoadmap);}catch(e){g$1(e);}}),a.command("update").description("Update a roadmap").argument("<id>","Roadmap ID").option("--name <name>","Roadmap name").option("--description <s>","Description").option("--type <t>","Type").option("--public <bool>","Public flag (true|false)").option("--owner <id>","Owner actor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.public!==void 0&&(n.isPublic=e.public==="true"),e.owner&&(n.ownerId=e.owner),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Je,{id:t,input:n});i("Roadmap updated"),h$1(e,d.planmagnetUpdateRoadmap);}catch(n){g$1(n);}}),a.command("delete").description("Delete a roadmap").argument("<id>","Roadmap ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ye,{id:t});if(!n.planmagnetDeleteRoadmap)throw new o(`Roadmap ${t} could not be deleted`);i(`Roadmap ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRoadmap});}catch(n){g$1(n);}}),a.command("items").description("List roadmap items").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--roadmap <id>","Filter by roadmap ID").option("--project <id>","Filter by project ID").option("--milestone <id>","Filter by milestone ID").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.roadmap&&(e.roadmapId=t.roadmap),t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await l(We,"planmagnetRoadmapItems",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Status","Roadmap"],row:n=>[p(n.id,12),p(n.title,32),n.status,p(n.roadmapId,12)]});}),a.command("get-item").description("Get a roadmap item by id").argument("<id>","Roadmap item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ve,{id:t});if(!n.planmagnetRoadmapItem)throw new o(`Roadmap item ${t} not found`);h$1(e,n.planmagnetRoadmapItem);}catch(n){g$1(n);}}),a.command("create-item").description("Create a roadmap item").requiredOption("--roadmap <id>","Roadmap ID").requiredOption("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--project <id>","Linked project ID").option("--milestone <id>","Linked milestone ID").option("--work-item <id>","Linked work item ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--color <c>","Display color").option("--swimlane <s>","Swimlane / row").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={roadmapId:t.roadmap,title:t.title};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.project&&(e.projectId=t.project),t.milestone&&(e.milestoneId=t.milestone),t.workItem&&(e.workItemId=t.workItem),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.color&&(e.color=t.color),t.swimlane&&(e.swimlane=t.swimlane),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(Ke,{input:e});i(`Roadmap item created: ${n.planmagnetCreateRoadmapItem.title}`),h$1(t,n.planmagnetCreateRoadmapItem);}catch(e){g$1(e);}}),a.command("update-item").description("Update a roadmap item").argument("<id>","Roadmap item ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--color <c>","Display color").option("--swimlane <s>","Swimlane / row").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.color&&(n.color=e.color),e.swimlane&&(n.swimlane=e.swimlane),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(Xe,{id:t,input:n});i("Roadmap item updated"),h$1(e,d.planmagnetUpdateRoadmapItem);}catch(n){g$1(n);}}),a.command("delete-item").description("Delete a roadmap item").argument("<id>","Roadmap item ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(ze,{id:t});if(!n.planmagnetDeleteRoadmapItem)throw new o(`Roadmap item ${t} could not be deleted`);i(`Roadmap item ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteRoadmapItem});}catch(n){g$1(n);}});}function aa(c){let a=c.command("features").description("Planmagnet feature requests");a.command("list").description("List feature requests in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--submitted-by <id>","Filter by submitter ID").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.submittedBy&&(e.submittedBy=t.submittedBy),t.search&&(e.search=t.search),await l(He,"planmagnetFeatureRequests",t,Object.keys(e).length?e:void 0,{headers:["ID","Title","Status","Votes","Priority","Submitter"],row:n=>[p(n.id,12),p(n.title,28),n.status,String(n.voteCount),n.priorityScore==null?"-":String(n.priorityScore),p(n.submittedBy,12)]});}),a.command("get").description("Get a feature request by id").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Ze,{id:t});if(!n.planmagnetFeatureRequest)throw new o(`Feature request ${t} not found`);h$1(e,n.planmagnetFeatureRequest);}catch(n){g$1(n);}}),a.command("create").description("Create a feature request").requiredOption("--title <s>","Feature title").option("--description <s>","Description").option("--project <id>","Project ID").option("--status <s>","Status").option("--business-value <n>","Business value rating (1-10)",u).option("--effort-estimate <s>","Effort estimate (XS|S|M|L|XL)").option("--work-item <id>","Linked work item ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.businessValue!==void 0&&(e.businessValue=t.businessValue),t.effortEstimate&&(e.effortEstimate=t.effortEstimate),t.workItem&&(e.workItemId=t.workItem),t.tags&&(e.tags=f(t.tags));let n=await b$1(tn,{input:e});i(`Feature request created: ${n.planmagnetCreateFeatureRequest.title}`),h$1(t,n.planmagnetCreateFeatureRequest);}catch(e){g$1(e);}}),a.command("update").description("Update a feature request").argument("<id>","Feature request ID").option("--title <s>","Title").option("--description <s>","Description").option("--status <s>","Status").option("--business-value <n>","Business value (1-10)",u).option("--effort-estimate <s>","Effort estimate").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.description!==void 0&&(n.description=e.description),e.status&&(n.status=e.status.toUpperCase()),e.businessValue!==void 0&&(n.businessValue=e.businessValue),e.effortEstimate&&(n.effortEstimate=e.effortEstimate),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(en,{id:t,input:n});i("Feature request updated"),h$1(e,d.planmagnetUpdateFeatureRequest);}catch(n){g$1(n);}}),a.command("delete").description("Delete a feature request").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(nn,{id:t});if(!n.planmagnetDeleteFeatureRequest)throw new o(`Feature request ${t} could not be deleted`);i(`Feature request ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteFeatureRequest});}catch(n){g$1(n);}}),a.command("vote").description("Vote on a feature request").argument("<id>","Feature request ID").option("--weight <n>","Vote weight",u).option("--comment <s>","Optional comment").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.weight!==void 0&&(n.weight=e.weight),e.comment&&(n.comment=e.comment);let d=await b$1(an,{featureRequestId:t,input:Object.keys(n).length?n:void 0});i(`Voted on feature request ${t}`),h$1(e,d.planmagnetVoteOnFeature);}catch(n){g$1(n);}}),a.command("remove-vote").description("Remove your vote from a feature request").argument("<id>","Feature request ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(on,{featureRequestId:t});if(!n.planmagnetRemoveFeatureVote)throw new o(`No vote to remove from feature request ${t}`);i(`Vote removed from feature request ${t}`),h$1(e,{removed:n.planmagnetRemoveFeatureVote});}catch(n){g$1(n);}}),a.command("link-competitor").description("Link a competitor to a feature request").requiredOption("--feature <id>","Feature request ID").requiredOption("--competitor <id>","Competitor ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(rn,{input:{featureRequestId:t.feature,competitorId:t.competitor}});i("Competitor linked"),h$1(t,e.planmagnetLinkCompetitorToFeature);}catch(e){g$1(e);}}),a.command("unlink-competitor").description("Unlink a competitor from a feature request").requiredOption("--feature <id>","Feature request ID").requiredOption("--competitor <id>","Competitor ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(sn,{input:{featureRequestId:t.feature,competitorId:t.competitor}});i("Competitor unlinked"),h$1(t,e.planmagnetUnlinkCompetitorFromFeature);}catch(e){g$1(e);}});}function ia(c){let a=c.command("competitors").description("Planmagnet competitors");a.command("list").description("List competitors in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.search&&(e.search=t.search),await l(pn,"planmagnetCompetitors",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Website"],row:n=>[p(n.id,12),n.name,n.website??"-"]});}),a.command("get").description("Get a competitor by id").argument("<id>","Competitor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(mn,{id:t});if(!n.planmagnetCompetitor)throw new o(`Competitor ${t} not found`);h$1(e,n.planmagnetCompetitor);}catch(n){g$1(n);}}),a.command("create").description("Create a competitor").requiredOption("--name <name>","Competitor name").option("--description <s>","Description / notes").option("--website <url>","Website URL").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.website&&(e.website=t.website),t.tags&&(e.tags=f(t.tags));let n=await b$1(dn,{input:e});i(`Competitor created: ${n.planmagnetCreateCompetitor.name}`),h$1(t,n.planmagnetCreateCompetitor);}catch(e){g$1(e);}}),a.command("update").description("Update a competitor").argument("<id>","Competitor ID").option("--name <name>","Name").option("--description <s>","Description").option("--website <url>","Website URL").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.website&&(n.website=e.website),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(cn,{id:t,input:n});i("Competitor updated"),h$1(e,d.planmagnetUpdateCompetitor);}catch(n){g$1(n);}}),a.command("delete").description("Delete a competitor").argument("<id>","Competitor ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(un,{id:t});if(!n.planmagnetDeleteCompetitor)throw new o(`Competitor ${t} could not be deleted`);i(`Competitor ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteCompetitor});}catch(n){g$1(n);}});}function oa(c){let a=c.command("custom-fields").description("Planmagnet custom field definitions & values");a.command("list").description("List custom field definitions in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--field-type <t>","Filter by field type").option("--required","Only required fields").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.fieldType&&(e.fieldType=t.fieldType.toUpperCase()),t.required&&(e.isRequired=true),t.search&&(e.search=t.search),await l(gn,"planmagnetCustomFieldDefinitions",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Type","Required","Project"],row:n=>[p(n.id,12),n.name,n.fieldType,String(n.isRequired),p(n.projectId,12)]});}),a.command("get").description("Get a custom field definition by id").argument("<id>","Definition ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(fn,{id:t});if(!n.planmagnetCustomFieldDefinition)throw new o(`Custom field definition ${t} not found`);h$1(e,n.planmagnetCustomFieldDefinition);}catch(n){g$1(n);}}),a.command("create").description("Create a custom field definition").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Field name").requiredOption("--field-type <t>","Field type (TEXT|NUMBER|DATE|SELECT|\u2026)").option("--description <s>","Description").option("--required","Mark as required").option("--default-value <json>","Default value JSON").option("--options <json>","Options JSON (for SELECT/MULTI_SELECT)").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,fieldType:t.fieldType.toUpperCase()};t.description&&(e.description=t.description),t.required&&(e.isRequired=!0),t.defaultValue&&(e.defaultValue=g("default-value",t.defaultValue)),t.options&&(e.options=g("options",t.options)),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1(yn,{input:e});i(`Custom field created: ${n.planmagnetCreateCustomFieldDefinition.name}`),h$1(t,n.planmagnetCreateCustomFieldDefinition);}catch(e){g$1(e);}}),a.command("update").description("Update a custom field definition").argument("<id>","Definition ID").option("--name <name>","Field name").option("--description <s>","Description").option("--field-type <t>","Field type").option("--required <bool>","Required flag (true|false)").option("--options <json>","Options JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.fieldType&&(n.fieldType=e.fieldType.toUpperCase()),e.required!==void 0&&(n.isRequired=e.required==="true"),e.options&&(n.options=g("options",e.options)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(wn,{id:t,input:n});i("Custom field definition updated"),h$1(e,d.planmagnetUpdateCustomFieldDefinition);}catch(n){g$1(n);}}),a.command("delete").description("Delete a custom field definition").argument("<id>","Definition ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(En,{id:t});if(!n.planmagnetDeleteCustomFieldDefinition)throw new o(`Custom field definition ${t} could not be deleted`);i(`Custom field definition ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteCustomFieldDefinition});}catch(n){g$1(n);}}),a.command("values").description("List custom field values").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--definition <id>","Filter by definition ID").option("--work-item <id>","Filter by work item ID").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.definition&&(e.definitionId=t.definition),t.workItem&&(e.workItemId=t.workItem),await l(In,"planmagnetCustomFieldValues",t,Object.keys(e).length?e:void 0,{headers:["ID","Definition","Work Item","Set By"],row:n=>[p(n.id,12),p(n.definitionId,12),p(n.workItemId,12),p(n.setBy,12)]});}),a.command("set-value").description("Set a custom field value on a work item").requiredOption("--definition <id>","Definition ID").requiredOption("--work-item <id>","Work item ID").requiredOption("--value <json>","Value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={definitionId:t.definition,workItemId:t.workItem,value:g("value",t.value)},n=await b$1(Dn,{input:e});i("Custom field value set"),h$1(t,n.planmagnetSetCustomFieldValue);}catch(e){g$1(e);}}),a.command("remove-value").description("Remove a custom field value from a work item").requiredOption("--definition <id>","Definition ID").requiredOption("--work-item <id>","Work item ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Tn,{workItemId:t.workItem,definitionId:t.definition});if(!e.planmagnetRemoveCustomFieldValue)throw new o("Custom field value could not be removed");i("Custom field value removed"),h$1(t,{removed:e.planmagnetRemoveCustomFieldValue});}catch(e){g$1(e);}});}function ra(c){let a=c.command("automations").description("Planmagnet automation rules");a.command("list").description("List automation rules in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--status <s>","Filter by status").option("--trigger-type <t>","Filter by trigger type").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.status&&(e.status=t.status.toUpperCase()),t.triggerType&&(e.triggerType=t.triggerType.toUpperCase()),t.search&&(e.search=t.search),await l(Pn,"planmagnetAutomationRules",t,Object.keys(e).length?e:void 0,{headers:["ID","Name","Status","Trigger","Runs","Project"],row:n=>[p(n.id,12),n.name,n.status,n.triggerType,String(n.executionCount),p(n.projectId,12)]});}),a.command("get").description("Get an automation rule by id").argument("<id>","Automation rule ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(On,{id:t});if(!n.planmagnetAutomationRule)throw new o(`Automation rule ${t} not found`);h$1(e,n.planmagnetAutomationRule);}catch(n){g$1(n);}}),a.command("create").description("Create an automation rule").requiredOption("--project <id>","Project ID").requiredOption("--name <name>","Rule name").requiredOption("--trigger-type <t>","Trigger type (e.g. WORK_ITEM_CREATED)").requiredOption("--trigger-config <json>","Trigger configuration JSON").requiredOption("--actions <json>","Actions JSON array").option("--description <s>","Description").option("--conditions <json>","Conditions JSON array").option("--sort-order <n>","Sort order",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,name:t.name,triggerType:t.triggerType.toUpperCase(),triggerConfig:g("trigger-config",t.triggerConfig),actions:g("actions",t.actions)};t.description&&(e.description=t.description),t.conditions&&(e.conditions=g("conditions",t.conditions)),t.sortOrder!==void 0&&(e.sortOrder=t.sortOrder);let n=await b$1($n,{input:e});i(`Automation rule created: ${n.planmagnetCreateAutomationRule.name}`),h$1(t,n.planmagnetCreateAutomationRule);}catch(e){g$1(e);}}),a.command("update").description("Update an automation rule").argument("<id>","Automation rule ID").option("--name <name>","Rule name").option("--description <s>","Description").option("--trigger-type <t>","Trigger type").option("--trigger-config <json>","Trigger configuration JSON").option("--conditions <json>","Conditions JSON array").option("--actions <json>","Actions JSON array").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),e.triggerType&&(n.triggerType=e.triggerType.toUpperCase()),e.triggerConfig&&(n.triggerConfig=g("trigger-config",e.triggerConfig)),e.conditions&&(n.conditions=g("conditions",e.conditions)),e.actions&&(n.actions=g("actions",e.actions)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(kn,{id:t,input:n});i("Automation rule updated"),h$1(e,d.planmagnetUpdateAutomationRule);}catch(n){g$1(n);}}),a.command("delete").description("Delete an automation rule").argument("<id>","Automation rule ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Sn,{id:t});if(!n.planmagnetDeleteAutomationRule)throw new o(`Automation rule ${t} could not be deleted`);i(`Automation rule ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteAutomationRule});}catch(n){g$1(n);}}),a.command("toggle").description("Toggle an automation rule (activate/pause)").argument("<id>","Automation rule ID").requiredOption("--status <s>","Status (ACTIVE|PAUSED|DISABLED|ERROR)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(hn,{id:t,status:e.status.toUpperCase()});i(`Automation rule ${t} \u2192 ${n.planmagnetToggleAutomationRule.status}`),h$1(e,n.planmagnetToggleAutomationRule);}catch(n){g$1(n);}}),a.command("execute").description("Manually execute an automation rule").argument("<id>","Automation rule ID").option("--trigger-data <json>","Trigger data JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=e.triggerData?g("trigger-data",e.triggerData):void 0,d=await b$1(An,{id:t,triggerData:n});i(`Automation rule executed: ${d.planmagnetExecuteAutomationRule.status}`),h$1(e,d.planmagnetExecuteAutomationRule);}catch(n){g$1(n);}}),a.command("executions").description("List automation executions").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--rule <id>","Filter by rule ID").option("--status <s>","Filter by execution status").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.rule&&(e.ruleId=t.rule),t.status&&(e.status=t.status.toUpperCase()),await l(Cn,"planmagnetAutomationExecutions",t,Object.keys(e).length?e:void 0,{headers:["ID","Rule","Status","Executed At","Duration (ms)"],row:n=>[p(n.id,12),p(n.ruleId,12),n.status,n.executedAt,n.durationMs==null?"-":String(n.durationMs)]});});}async function sa(c,a,t,e,n){try{let P=(await b$1(c,{id:t}))[a];if(!P)throw new o(`Sync ${t} could not be ${e}`);i(`Sync ${t} ${e}`),h$1(n,P);}catch(d){g$1(d);}}function pa(c){let a=c.command("syncs").description("Planmagnet external syncs");a.command("list").description("List external syncs in a workspace").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--project <id>","Filter by project ID").option("--provider <p>","Filter by provider").option("--direction <d>","Filter by direction").option("--status <s>","Filter by status").option("--search <q>","Free-text search").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.project&&(e.projectId=t.project),t.provider&&(e.provider=t.provider.toUpperCase()),t.direction&&(e.direction=t.direction.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search),await l(bn,"planmagnetExternalSyncs",t,Object.keys(e).length?e:void 0,{headers:["ID","Provider","Direction","Status","Project","Synced"],row:n=>[p(n.id,12),n.provider,n.direction,n.status,p(n.projectId,12),String(n.totalItemsSynced)]});}),a.command("get").description("Get an external sync by id").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(_n,{id:t});if(!n.planmagnetExternalSync)throw new o(`Sync ${t} not found`);h$1(e,n.planmagnetExternalSync);}catch(n){g$1(n);}}),a.command("create").description("Create an external sync configuration").requiredOption("--project <id>","Project ID").requiredOption("--provider <p>","Provider (JIRA|GITHUB|LINEAR|\u2026)").requiredOption("--direction <d>","Direction (INBOUND|OUTBOUND|BIDIRECTIONAL)").requiredOption("--external-project <id>","External project/board ID").requiredOption("--connection-config <json>","Connection configuration JSON").option("--external-project-url <url>","External project URL").option("--field-mapping <json>","Field mapping JSON").option("--sync-filters <json>","Sync filter rules JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,provider:t.provider.toUpperCase(),direction:t.direction.toUpperCase(),externalProjectId:t.externalProject,connectionConfig:g("connection-config",t.connectionConfig)};t.externalProjectUrl&&(e.externalProjectUrl=t.externalProjectUrl),t.fieldMapping&&(e.fieldMapping=g("field-mapping",t.fieldMapping)),t.syncFilters&&(e.syncFilters=g("sync-filters",t.syncFilters));let n=await b$1(Ln,{input:e});i(`Sync created: ${n.planmagnetCreateExternalSync.provider}`),h$1(t,n.planmagnetCreateExternalSync);}catch(e){g$1(e);}}),a.command("update").description("Update an external sync configuration").argument("<id>","Sync ID").option("--direction <d>","Direction").option("--external-project <id>","External project ID").option("--external-project-url <url>","External project URL").option("--connection-config <json>","Connection configuration JSON").option("--field-mapping <json>","Field mapping JSON").option("--sync-filters <json>","Sync filter rules JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.direction&&(n.direction=e.direction.toUpperCase()),e.externalProject&&(n.externalProjectId=e.externalProject),e.externalProjectUrl&&(n.externalProjectUrl=e.externalProjectUrl),e.connectionConfig&&(n.connectionConfig=g("connection-config",e.connectionConfig)),e.fieldMapping&&(n.fieldMapping=g("field-mapping",e.fieldMapping)),e.syncFilters&&(n.syncFilters=g("sync-filters",e.syncFilters)),!Object.keys(n).length)throw new o("No updates specified");let d=await b$1(jn,{id:t,input:n});i("Sync updated"),h$1(e,d.planmagnetUpdateExternalSync);}catch(n){g$1(n);}}),a.command("delete").description("Delete an external sync configuration").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(xn,{id:t});if(!n.planmagnetDeleteExternalSync)throw new o(`Sync ${t} could not be deleted`);i(`Sync ${t} deleted`),h$1(e,{deleted:n.planmagnetDeleteExternalSync});}catch(n){g$1(n);}}),a.command("pause").description("Pause a sync").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action((t,e)=>sa(Fn,"planmagnetPauseExternalSync",t,"paused",e)),a.command("resume").description("Resume a paused sync").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action((t,e)=>sa(Mn,"planmagnetResumeExternalSync",t,"resumed",e)),a.command("start").description("Start a sync operation").argument("<id>","Sync ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Nn,{id:t});i(`Sync ${t} started`),h$1(e,n.planmagnetStartSync);}catch(n){g$1(n);}}),a.command("export").description("Export items to an external tool").requiredOption("--sync <id>","Sync ID").option("--all","Export all eligible items").option("--ids <csv>","Comma-separated internal IDs to export").option("-f, --format <format>","Output format").action(async t=>{try{let e={syncId:t.sync};t.all&&(e.exportAll=!0),t.ids&&(e.internalIds=f(t.ids));let n=await b$1(qn,{input:e});i("Export started"),h$1(t,n.planmagnetExportToExternal);}catch(e){g$1(e);}}),a.command("import").description("Import items from an external tool").requiredOption("--sync <id>","Sync ID").option("--all","Import all eligible items").option("--ids <csv>","Comma-separated external IDs to import").option("-f, --format <format>","Output format").action(async t=>{try{let e={syncId:t.sync};t.all&&(e.importAll=!0),t.ids&&(e.externalIds=f(t.ids));let n=await b$1(vn,{input:e});i("Import started"),h$1(t,n.planmagnetImportFromExternal);}catch(e){g$1(e);}}),a.command("mappings").description("List external mappings").option("--workspace <id>","Workspace ID (defaults to the authenticated workspace)").option("--sync <id>","Filter by sync ID").option("--internal-type <t>","Filter by internal type").option("--internal-id <id>","Filter by internal ID").option("--external-type <t>","Filter by external type").option("--external-id <id>","Filter by external ID").option("--limit <n>","Page size",Number,50).option("--cursor <c>","Pagination cursor (after)").option("-f, --format <format>","Output format").action(async t=>{let e={};t.sync&&(e.syncId=t.sync),t.internalType&&(e.internalType=t.internalType),t.internalId&&(e.internalId=t.internalId),t.externalType&&(e.externalType=t.externalType),t.externalId&&(e.externalId=t.externalId),await l(Un,"planmagnetExternalMappings",t,Object.keys(e).length?e:void 0,{headers:["ID","Sync","Internal","Internal ID","External","External ID"],row:n=>[p(n.id,12),p(n.syncId,12),n.internalType,p(n.internalId,12),n.externalType,p(n.externalId,12)]});});}var ua={id:"planmagnet",version:"1.0.0",displayName:"Planmagnet",dependsOn:["auth","workspaces"],register(c,a$1){a(a$1);let t=c.command("planmagnet").description("Planmagnet project & portfolio management");Bn(t),Gn(t),Wn(t),Vn(t),Qn(t),Jn(t),Yn(t),Kn(t),Xn(t),zn(t),Hn(t),Zn(t),ta(t),ea(t),na(t),aa(t),ia(t),oa(t),ra(t),pa(t);}},Ei=ua;export{Ei as default};