@burdenoff/cli-sdk 2026.626.1 → 2026.627.2

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