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