@burdenoff/cli-sdk 2026.627.1 → 2026.627.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/modules/artistrybase/index.cjs +334 -0
  2. package/dist/modules/artistrybase/index.d.cts +7 -0
  3. package/dist/modules/artistrybase/index.d.ts +7 -0
  4. package/dist/modules/artistrybase/index.js +334 -0
  5. package/dist/modules/assethandler/index.cjs +255 -0
  6. package/dist/modules/assethandler/index.d.cts +7 -0
  7. package/dist/modules/assethandler/index.d.ts +7 -0
  8. package/dist/modules/assethandler/index.js +255 -0
  9. package/dist/modules/brainyrich/index.cjs +340 -0
  10. package/dist/modules/brainyrich/index.d.cts +7 -0
  11. package/dist/modules/brainyrich/index.d.ts +7 -0
  12. package/dist/modules/brainyrich/index.js +340 -0
  13. package/dist/modules/buildmyiq/index.cjs +231 -0
  14. package/dist/modules/buildmyiq/index.d.cts +7 -0
  15. package/dist/modules/buildmyiq/index.d.ts +7 -0
  16. package/dist/modules/buildmyiq/index.js +231 -0
  17. package/dist/modules/collabkin/index.cjs +208 -0
  18. package/dist/modules/collabkin/index.d.cts +7 -0
  19. package/dist/modules/collabkin/index.d.ts +7 -0
  20. package/dist/modules/collabkin/index.js +208 -0
  21. package/dist/modules/comradecircle/index.cjs +281 -0
  22. package/dist/modules/comradecircle/index.d.cts +7 -0
  23. package/dist/modules/comradecircle/index.d.ts +7 -0
  24. package/dist/modules/comradecircle/index.js +281 -0
  25. package/dist/modules/eventfullymanaged/index.cjs +247 -0
  26. package/dist/modules/eventfullymanaged/index.d.cts +7 -0
  27. package/dist/modules/eventfullymanaged/index.d.ts +7 -0
  28. package/dist/modules/eventfullymanaged/index.js +247 -0
  29. package/dist/modules/headshotmarketing/index.cjs +1083 -0
  30. package/dist/modules/headshotmarketing/index.d.cts +7 -0
  31. package/dist/modules/headshotmarketing/index.d.ts +7 -0
  32. package/dist/modules/headshotmarketing/index.js +1083 -0
  33. package/dist/modules/movethewheels/index.cjs +565 -0
  34. package/dist/modules/movethewheels/index.d.cts +7 -0
  35. package/dist/modules/movethewheels/index.d.ts +7 -0
  36. package/dist/modules/movethewheels/index.js +565 -0
  37. package/dist/modules/planmagnet/index.cjs +795 -0
  38. package/dist/modules/planmagnet/index.d.cts +7 -0
  39. package/dist/modules/planmagnet/index.d.ts +7 -0
  40. package/dist/modules/planmagnet/index.js +795 -0
  41. package/dist/modules/proserviceworld/index.cjs +193 -0
  42. package/dist/modules/proserviceworld/index.d.cts +7 -0
  43. package/dist/modules/proserviceworld/index.d.ts +7 -0
  44. package/dist/modules/proserviceworld/index.js +193 -0
  45. package/dist/modules/timecampus/index.cjs +444 -0
  46. package/dist/modules/timecampus/index.d.cts +7 -0
  47. package/dist/modules/timecampus/index.d.ts +7 -0
  48. package/dist/modules/timecampus/index.js +444 -0
  49. package/package.json +1 -1
@@ -0,0 +1,444 @@
1
+ import {a,b as b$1,h as h$1,p,g as g$1,i,o as o$1,s}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var k=`
2
+ query TimeCampusGetProject($id: ID!) {
3
+ timeCampusProject(id: $id) {
4
+ id name status currency budget hourlyRate estimatedHours trackedHours
5
+ clientId color description createdAt updatedAt workspaceId
6
+ }
7
+ }
8
+ `,R=`
9
+ query TimeCampusListProjects(
10
+ $filter: TimeCampusProjectFilterInput
11
+ $limit: Int
12
+ $offset: Int
13
+ ) {
14
+ timeCampusProjects(filter: $filter, limit: $limit, offset: $offset) {
15
+ items {
16
+ id name status currency budget hourlyRate trackedHours clientId createdAt
17
+ }
18
+ total
19
+ hasMore
20
+ }
21
+ }
22
+ `,S=`
23
+ query TimeCampusProjectStats($id: ID!) {
24
+ timeCampusProjectStats(id: $id) {
25
+ totalTasks completedTasks totalHours budgetUsed budgetRemaining
26
+ }
27
+ }
28
+ `,O=`
29
+ mutation TimeCampusCreateProject($input: CreateTimeCampusProjectInput!) {
30
+ createTimeCampusProject(input: $input) {
31
+ id name status currency budget hourlyRate estimatedHours clientId
32
+ color description createdAt
33
+ }
34
+ }
35
+ `,C=`
36
+ mutation TimeCampusUpdateProject($id: ID!, $input: UpdateTimeCampusProjectInput!) {
37
+ updateTimeCampusProject(id: $id, input: $input) {
38
+ id name status currency budget hourlyRate estimatedHours clientId
39
+ color description updatedAt
40
+ }
41
+ }
42
+ `,P=`
43
+ mutation TimeCampusArchiveProject($id: ID!) {
44
+ archiveTimeCampusProject(id: $id) {
45
+ id name status updatedAt
46
+ }
47
+ }
48
+ `,A=`
49
+ mutation TimeCampusDeleteProject($id: ID!) {
50
+ deleteTimeCampusProject(id: $id) {
51
+ id name status
52
+ }
53
+ }
54
+ `,$=`
55
+ query TimeCampusGetTask($id: ID!) {
56
+ task(id: $id) {
57
+ id title status priority order projectId assigneeId description
58
+ dueDate estimatedHours trackedHours completedAt createdAt updatedAt workspaceId
59
+ }
60
+ }
61
+ `,b=`
62
+ query TimeCampusListTasks(
63
+ $projectId: ID!
64
+ $filter: TaskFilterInput
65
+ $limit: Int
66
+ $offset: Int
67
+ ) {
68
+ tasks(projectId: $projectId, filter: $filter, limit: $limit, offset: $offset) {
69
+ items {
70
+ id title status priority order assigneeId dueDate trackedHours createdAt
71
+ }
72
+ total
73
+ hasMore
74
+ }
75
+ }
76
+ `,x=`
77
+ mutation TimeCampusCreateTask($input: CreateTaskInput!) {
78
+ createTask(input: $input) {
79
+ id title status priority order projectId assigneeId description
80
+ dueDate estimatedHours createdAt
81
+ }
82
+ }
83
+ `,h=`
84
+ mutation TimeCampusUpdateTask($id: ID!, $input: UpdateTaskInput!) {
85
+ updateTask(id: $id, input: $input) {
86
+ id title status priority order assigneeId description dueDate
87
+ estimatedHours updatedAt
88
+ }
89
+ }
90
+ `,j=`
91
+ mutation TimeCampusUpdateTaskStatus($id: ID!, $status: String!) {
92
+ updateTaskStatus(id: $id, status: $status) {
93
+ id title status updatedAt
94
+ }
95
+ }
96
+ `,v=`
97
+ mutation TimeCampusDeleteTask($id: ID!) {
98
+ deleteTask(id: $id) {
99
+ id title status
100
+ }
101
+ }
102
+ `,_=`
103
+ query TimeCampusGetTimeEntry($id: ID!) {
104
+ timeEntry(id: $id) {
105
+ id description billable duration startTime endTime isRunning source
106
+ hourlyRate projectId taskId notes createdAt updatedAt workspaceId
107
+ }
108
+ }
109
+ `,U=`
110
+ query TimeCampusListTimeEntries(
111
+ $filter: TimeEntryFilterInput
112
+ $limit: Int
113
+ $offset: Int
114
+ ) {
115
+ timeEntries(filter: $filter, limit: $limit, offset: $offset) {
116
+ items {
117
+ id description billable duration startTime endTime isRunning source createdAt
118
+ }
119
+ total
120
+ hasMore
121
+ }
122
+ }
123
+ `,M=`
124
+ query TimeCampusTimeEntryStats($startDate: DateTime, $endDate: DateTime) {
125
+ timeEntryStats(startDate: $startDate, endDate: $endDate) {
126
+ totalEntries totalHours billableHours activeTimers
127
+ }
128
+ }
129
+ `,N=`
130
+ query TimeCampusRunningTimers {
131
+ runningTimers {
132
+ elapsedSeconds
133
+ timeEntry {
134
+ id description billable startTime isRunning source projectId taskId
135
+ }
136
+ }
137
+ }
138
+ `,q=`
139
+ mutation TimeCampusCreateTimeEntry($input: CreateTimeEntryInput!) {
140
+ createTimeEntry(input: $input) {
141
+ id description billable duration startTime endTime isRunning source
142
+ hourlyRate projectId taskId notes createdAt
143
+ }
144
+ }
145
+ `,L=`
146
+ mutation TimeCampusUpdateTimeEntry($id: ID!, $input: UpdateTimeEntryInput!) {
147
+ updateTimeEntry(id: $id, input: $input) {
148
+ id description billable duration startTime endTime isRunning source
149
+ hourlyRate projectId taskId notes updatedAt
150
+ }
151
+ }
152
+ `,H=`
153
+ mutation TimeCampusDeleteTimeEntry($id: ID!) {
154
+ deleteTimeEntry(id: $id) {
155
+ id description isRunning
156
+ }
157
+ }
158
+ `,G=`
159
+ mutation TimeCampusStartTimer($input: StartTimerInput!) {
160
+ startTimer(input: $input) {
161
+ id description billable startTime isRunning source projectId taskId createdAt
162
+ }
163
+ }
164
+ `,W=`
165
+ mutation TimeCampusStopTimer($id: ID!) {
166
+ stopTimer(id: $id) {
167
+ id description billable duration startTime endTime isRunning source updatedAt
168
+ }
169
+ }
170
+ `,F=`
171
+ query TimeCampusGetMeeting($id: ID!, $workspaceId: ID!) {
172
+ meeting(id: $id, workspaceId: $workspaceId) {
173
+ id title meetingType startTime endTime duration cost rating notes
174
+ recordingUrl calendarEventId createdAt updatedAt workspaceId
175
+ participants { id userId role status }
176
+ actionItems { id title status assigneeId dueDate }
177
+ }
178
+ }
179
+ `,J=`
180
+ query TimeCampusListMeetings(
181
+ $workspaceId: ID!
182
+ $filter: MeetingFilterInput
183
+ $limit: Int
184
+ $offset: Int
185
+ ) {
186
+ meetings(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset) {
187
+ id title meetingType startTime endTime duration cost rating createdAt
188
+ }
189
+ }
190
+ `,V=`
191
+ query TimeCampusMeetingStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {
192
+ meetingStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {
193
+ totalMeetings totalDuration averageDuration averageRating totalCost
194
+ actionItemsTotal actionItemsCompleted
195
+ }
196
+ }
197
+ `,K=`
198
+ mutation TimeCampusCreateMeeting($input: CreateMeetingInput!) {
199
+ createMeeting(input: $input) {
200
+ id title meetingType startTime endTime cost notes recordingUrl createdAt workspaceId
201
+ }
202
+ }
203
+ `,B=`
204
+ mutation TimeCampusUpdateMeeting($id: ID!, $input: UpdateMeetingInput!, $workspaceId: ID!) {
205
+ updateMeeting(id: $id, input: $input, workspaceId: $workspaceId) {
206
+ id title meetingType startTime endTime cost notes recordingUrl updatedAt
207
+ }
208
+ }
209
+ `,X=`
210
+ mutation TimeCampusRateMeeting($id: ID!, $rating: Int!, $workspaceId: ID!) {
211
+ rateMeeting(id: $id, rating: $rating, workspaceId: $workspaceId) {
212
+ id title rating updatedAt
213
+ }
214
+ }
215
+ `,Y=`
216
+ mutation TimeCampusDeleteMeeting($id: ID!, $workspaceId: ID!) {
217
+ deleteMeeting(id: $id, workspaceId: $workspaceId)
218
+ }
219
+ `,Q=`
220
+ query TimeCampusGetExpense($id: ID!, $workspaceId: ID!) {
221
+ expense(id: $id, workspaceId: $workspaceId) {
222
+ id amount currency category status date description notes projectId
223
+ receiptUrl approvedAt approvedBy createdAt updatedAt userId workspaceId
224
+ }
225
+ }
226
+ `,z=`
227
+ query TimeCampusListExpenses(
228
+ $workspaceId: ID!
229
+ $filter: ExpenseFilterInput
230
+ $limit: Int
231
+ $offset: Int
232
+ ) {
233
+ expenses(workspaceId: $workspaceId, filter: $filter, limit: $limit, offset: $offset) {
234
+ id amount currency category status date description projectId createdAt
235
+ }
236
+ }
237
+ `,Z=`
238
+ query TimeCampusExpenseStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {
239
+ expenseStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {
240
+ totalExpenses totalAmount averageAmount approvedCount pendingCount byCategory
241
+ }
242
+ }
243
+ `,tt=`
244
+ mutation TimeCampusCreateExpense($input: CreateExpenseInput!) {
245
+ createExpense(input: $input) {
246
+ id amount currency category status date description notes projectId
247
+ receiptUrl createdAt workspaceId
248
+ }
249
+ }
250
+ `,et=`
251
+ mutation TimeCampusUpdateExpense($id: ID!, $input: UpdateExpenseInput!, $workspaceId: ID!) {
252
+ updateExpense(id: $id, input: $input, workspaceId: $workspaceId) {
253
+ id amount currency category status date description notes projectId
254
+ receiptUrl updatedAt
255
+ }
256
+ }
257
+ `,rt=`
258
+ mutation TimeCampusApproveExpense($id: ID!, $workspaceId: ID!) {
259
+ approveExpense(id: $id, workspaceId: $workspaceId) {
260
+ id amount category status approvedAt approvedBy updatedAt
261
+ }
262
+ }
263
+ `,ot=`
264
+ mutation TimeCampusRejectExpense($id: ID!, $reason: String, $workspaceId: ID!) {
265
+ rejectExpense(id: $id, reason: $reason, workspaceId: $workspaceId) {
266
+ id amount category status updatedAt
267
+ }
268
+ }
269
+ `,it=`
270
+ mutation TimeCampusDeleteExpense($id: ID!, $workspaceId: ID!) {
271
+ deleteExpense(id: $id, workspaceId: $workspaceId)
272
+ }
273
+ `,nt=`
274
+ query TimeCampusGetPomodoroSession($id: ID!, $workspaceId: ID!) {
275
+ pomodoroSession(id: $id, workspaceId: $workspaceId) {
276
+ id type completed interrupted interruptions duration startTime endTime
277
+ notes projectId taskId createdAt updatedAt userId workspaceId
278
+ }
279
+ }
280
+ `,st=`
281
+ query TimeCampusListPomodoroSessions(
282
+ $workspaceId: ID!
283
+ $filter: PomodoroSessionFilterInput
284
+ $limit: Int
285
+ $offset: Int
286
+ ) {
287
+ pomodoroSessions(
288
+ workspaceId: $workspaceId
289
+ filter: $filter
290
+ limit: $limit
291
+ offset: $offset
292
+ ) {
293
+ id type completed interrupted interruptions duration startTime endTime createdAt
294
+ }
295
+ }
296
+ `,at=`
297
+ query TimeCampusActivePomodoroSession($workspaceId: ID!) {
298
+ activePomodoroSession(workspaceId: $workspaceId) {
299
+ id type completed interrupted duration startTime projectId taskId
300
+ }
301
+ }
302
+ `,pt=`
303
+ query TimeCampusPomodoroStats($workspaceId: ID!, $startDate: DateTime, $endDate: DateTime) {
304
+ pomodoroStats(workspaceId: $workspaceId, startDate: $startDate, endDate: $endDate) {
305
+ totalSessions completedSessions completionRate totalFocusMinutes
306
+ averageSessionMinutes streakDays
307
+ }
308
+ }
309
+ `,dt=`
310
+ mutation TimeCampusStartPomodoroSession($input: StartPomodoroSessionInput!) {
311
+ startPomodoroSession(input: $input) {
312
+ id type completed interrupted duration startTime projectId taskId createdAt workspaceId
313
+ }
314
+ }
315
+ `,ct=`
316
+ mutation TimeCampusCompletePomodoroSession($id: ID!, $workspaceId: ID!) {
317
+ completePomodoroSession(id: $id, workspaceId: $workspaceId) {
318
+ id type completed interrupted duration startTime endTime updatedAt
319
+ }
320
+ }
321
+ `,mt=`
322
+ mutation TimeCampusInterruptPomodoroSession($id: ID!, $reason: String, $workspaceId: ID!) {
323
+ interruptPomodoroSession(id: $id, reason: $reason, workspaceId: $workspaceId) {
324
+ id type completed interrupted interruptions duration startTime updatedAt
325
+ }
326
+ }
327
+ `,ut=`
328
+ query TimeCampusGetResourcePlan($id: ID!) {
329
+ resourcePlan(id: $id) {
330
+ id name description status startDate endDate totalAllocatedHours
331
+ totalActualHours createdAt updatedAt workspaceId
332
+ }
333
+ }
334
+ `,lt=`
335
+ query TimeCampusListResourcePlans(
336
+ $filter: ResourcePlanFilterInput
337
+ $limit: Int
338
+ $offset: Int
339
+ ) {
340
+ resourcePlans(filter: $filter, limit: $limit, offset: $offset) {
341
+ items {
342
+ id name status startDate endDate totalAllocatedHours totalActualHours createdAt
343
+ }
344
+ total
345
+ hasMore
346
+ }
347
+ }
348
+ `,ft=`
349
+ mutation TimeCampusCreateResourcePlan($input: CreateResourcePlanInput!) {
350
+ createResourcePlan(input: $input) {
351
+ id name description status startDate endDate createdAt
352
+ }
353
+ }
354
+ `,gt=`
355
+ mutation TimeCampusUpdateResourcePlan($id: ID!, $input: UpdateResourcePlanInput!) {
356
+ updateResourcePlan(id: $id, input: $input) {
357
+ id name description status startDate endDate updatedAt
358
+ }
359
+ }
360
+ `,Tt=`
361
+ mutation TimeCampusActivateResourcePlan($id: ID!) {
362
+ activateResourcePlan(id: $id) {
363
+ id name status updatedAt
364
+ }
365
+ }
366
+ `,It=`
367
+ mutation TimeCampusDeleteResourcePlan($id: ID!) {
368
+ deleteResourcePlan(id: $id) {
369
+ id name status
370
+ }
371
+ }
372
+ `,yt=`
373
+ query TimeCampusGetApprovalRequest($id: ID!) {
374
+ approvalRequest(id: $id) {
375
+ id period status totalHours billableHours startDate endDate submittedAt
376
+ reviewedAt reviewer reviewerNotes approverId userId createdAt updatedAt workspaceId
377
+ }
378
+ }
379
+ `,Et=`
380
+ query TimeCampusListApprovalRequests(
381
+ $filter: ApprovalRequestFilterInput
382
+ $limit: Int
383
+ $offset: Int
384
+ ) {
385
+ approvalRequests(filter: $filter, limit: $limit, offset: $offset) {
386
+ items {
387
+ id period status totalHours billableHours startDate endDate submittedAt
388
+ }
389
+ total
390
+ hasMore
391
+ }
392
+ }
393
+ `,Dt=`
394
+ query TimeCampusApprovalStats($startDate: DateTime, $endDate: DateTime) {
395
+ approvalStats(startDate: $startDate, endDate: $endDate) {
396
+ totalRequests pendingCount approvedCount rejectedCount averageReviewTime
397
+ }
398
+ }
399
+ `,wt=`
400
+ mutation TimeCampusSubmitApprovalRequest($input: SubmitApprovalRequestInput!) {
401
+ submitApprovalRequest(input: $input) {
402
+ id period status totalHours billableHours startDate endDate submittedAt
403
+ }
404
+ }
405
+ `,kt=`
406
+ mutation TimeCampusApproveRequest($id: ID!, $notes: String) {
407
+ approveRequest(id: $id, notes: $notes) {
408
+ id period status reviewedAt reviewer reviewerNotes updatedAt
409
+ }
410
+ }
411
+ `,Rt=`
412
+ mutation TimeCampusRejectRequest($id: ID!, $reason: String!) {
413
+ rejectRequest(id: $id, reason: $reason) {
414
+ id period status reviewedAt reviewer reviewerNotes updatedAt
415
+ }
416
+ }
417
+ `,St=`
418
+ mutation TimeCampusWithdrawRequest($id: ID!) {
419
+ withdrawRequest(id: $id) {
420
+ id period status updatedAt
421
+ }
422
+ }
423
+ `,Ot=`
424
+ query TimeCampusFocusScoreSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {
425
+ focusScoreSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {
426
+ averageScore highestScore lowestScore trend topFactor improvementArea
427
+ }
428
+ }
429
+ `,Ct=`
430
+ query TimeCampusWorkPatternSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {
431
+ workPatternSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {
432
+ averageFocusHours averageMeetingHours averageProductivity
433
+ mostProductiveDay leastProductiveDay
434
+ insights { type title description impact recommendation }
435
+ }
436
+ }
437
+ `,Pt=`
438
+ query TimeCampusAppUsageSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {
439
+ appUsageSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {
440
+ totalApps productiveTime neutralTime distractingTime productivityRatio
441
+ topApps { name category timeSpent sessions }
442
+ }
443
+ }
444
+ `;function g(d,o$1){try{return JSON.parse(o$1)}catch{throw new o(`--${d} must be valid JSON`)}}function c(d){let o$1=Number.parseInt(d,10);if(Number.isNaN(o$1))throw new o(`Expected an integer but got "${d}"`);return o$1}function u(d){let o$1=Number.parseFloat(d);if(Number.isNaN(o$1))throw new o(`Expected a number but got "${d}"`);return o$1}function l(d){if(d)return d;let o$1=s().auth.read();if(!o$1?.workspaceId)throw new o("No workspace set. Pass --workspace <id> or run `timecampus auth login`.");return o$1.workspaceId}function At(d){let o$1=d.command("projects").description("TimeCampus projects");o$1.command("list").description("List projects").option("--status <s>","Filter by status").option("--client <id>","Filter by client ID").option("--query <q>","Free-text search").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.client&&(t.clientId=e.client),e.query&&(t.search=e.query);let r=await b$1(R,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.timeCampusProjects.items,{headers:["ID","Name","Status","Currency","Budget","Hours"],rows:r.timeCampusProjects.items.map(i=>[p(i.id,12),i.name,i.status,i.currency??"-",i.budget!=null?String(i.budget):"-",String(i.trackedHours??0)])});}catch(t){g$1(t);}}),o$1.command("get").description("Get a project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(k,{id:e});if(!r.timeCampusProject)throw new o(`Project ${e} not found`);h$1(t,r.timeCampusProject);}catch(r){g$1(r);}}),o$1.command("stats").description("Get project statistics").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(S,{id:e});h$1(t,r.timeCampusProjectStats);}catch(r){g$1(r);}}),o$1.command("create").description("Create a project").requiredOption("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status","ACTIVE").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency","USD").option("--budget <n>","Budget",u).option("--hourly-rate <n>","Hourly rate",u).option("--estimated-hours <n>","Estimated hours",u).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,status:(e.status??"ACTIVE").toUpperCase(),currency:e.currency??"USD"};e.description&&(t.description=e.description),e.client&&(t.clientId=e.client),e.color&&(t.color=e.color),e.budget!==void 0&&(t.budget=e.budget),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.context&&(t.context=g("context",e.context));let r=await b$1(O,{input:t});i(`Project created: ${r.createTimeCampusProject.name}`),h$1(e,r.createTimeCampusProject);}catch(t){g$1(t);}}),o$1.command("update").description("Update a project").argument("<id>","Project ID").option("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency").option("--budget <n>","Budget",u).option("--hourly-rate <n>","Hourly rate",u).option("--estimated-hours <n>","Estimated hours",u).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.client&&(r.clientId=t.client),t.color&&(r.color=t.color),t.currency&&(r.currency=t.currency),t.budget!==void 0&&(r.budget=t.budget),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(C,{id:e,input:r});i("Project updated"),h$1(t,i$1.updateTimeCampusProject);}catch(r){g$1(r);}}),o$1.command("archive").description("Archive a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(P,{id:e});i("Project archived"),h$1(t,r.archiveTimeCampusProject);}catch(r){g$1(r);}}),o$1.command("delete").description("Delete a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(A,{id:e});i("Project deleted"),h$1(t,r.deleteTimeCampusProject);}catch(r){g$1(r);}});}function $t(d){let o$2=d.command("tasks").description("TimeCampus tasks");o$2.command("list").description("List tasks for a project").requiredOption("--project <id>","Project ID").option("--status <s>","Filter by status").option("--priority <p>","Filter by priority").option("--assignee <id>","Filter by assignee ID").option("--query <q>","Free-text search").option("--overdue","Only overdue tasks").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.priority&&(t.priority=e.priority.toUpperCase()),e.assignee&&(t.assigneeId=e.assignee),e.query&&(t.search=e.query),e.overdue&&(t.overdue=!0);let r=await b$1(b,{projectId:e.project,filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.tasks.items,{headers:["ID","Title","Status","Priority","Due","Hours"],rows:r.tasks.items.map(i=>[p(i.id,12),i.title,i.status,i.priority,o$1(i.dueDate),String(i.trackedHours??0)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get a task by id").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1($,{id:e});if(!r.task)throw new o(`Task ${e} not found`);h$1(t,r.task);}catch(r){g$1(r);}}),o$2.command("create").description("Create a task").requiredOption("--project <id>","Project ID").requiredOption("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status","TODO").option("--priority <p>","Priority","MEDIUM").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",u).option("--order <n>","Display order",c).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={projectId:e.project,title:e.title,status:(e.status??"TODO").toUpperCase(),priority:(e.priority??"MEDIUM").toUpperCase()};e.description&&(t.description=e.description),e.assignee&&(t.assigneeId=e.assignee),e.dueDate&&(t.dueDate=e.dueDate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.order!==void 0&&(t.order=e.order),e.context&&(t.context=g("context",e.context));let r=await b$1(x,{input:t});i(`Task created: ${r.createTask.title}`),h$1(e,r.createTask);}catch(t){g$1(t);}}),o$2.command("update").description("Update a task").argument("<id>","Task ID").option("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",u).option("--order <n>","Display order",c).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.priority&&(r.priority=t.priority.toUpperCase()),t.assignee&&(r.assigneeId=t.assignee),t.dueDate&&(r.dueDate=t.dueDate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),t.order!==void 0&&(r.order=t.order),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(h,{id:e,input:r});i("Task updated"),h$1(t,i$1.updateTask);}catch(r){g$1(r);}}),o$2.command("set-status").description("Update a task status").argument("<id>","Task ID").requiredOption("--status <s>","TODO|IN_PROGRESS|IN_REVIEW|DONE|CANCELLED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(j,{id:e,status:t.status.toUpperCase()});i(`Task status set to ${r.updateTaskStatus.status}`),h$1(t,r.updateTaskStatus);}catch(r){g$1(r);}}),o$2.command("delete").description("Delete a task").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(v,{id:e});i("Task deleted"),h$1(t,r.deleteTask);}catch(r){g$1(r);}});}function bt(d){let o$2=d.command("time-entries").description("TimeCampus time entries & timers");o$2.command("list").description("List time entries").option("--project <id>","Filter by project ID").option("--task <id>","Filter by task ID").option("--billable","Only billable entries").option("--running","Only running entries").option("--query <q>","Free-text search").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.billable&&(t.billable=!0),e.running&&(t.isRunning=!0),e.query&&(t.search=e.query);let r=await b$1(U,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.timeEntries.items,{headers:["ID","Description","Billable","Duration","Running","Start"],rows:r.timeEntries.items.map(i=>[p(i.id,12),p(i.description??"-",30),i.billable?"yes":"no",i.duration!=null?String(i.duration):"-",i.isRunning?"yes":"no",o$1(i.startTime)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get a time entry by id").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(_,{id:e});if(!r.timeEntry)throw new o(`Time entry ${e} not found`);h$1(t,r.timeEntry);}catch(r){g$1(r);}}),o$2.command("stats").description("Time entry statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(M,{startDate:e.startDate,endDate:e.endDate});h$1(e,t.timeEntryStats);}catch(t){g$1(t);}}),o$2.command("running").description("List running timers").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(N);h$1(e,t.runningTimers,{headers:["ID","Description","Elapsed (s)","Source"],rows:t.runningTimers.map(r=>[p(r.timeEntry.id,12),p(r.timeEntry.description??"-",30),String(r.elapsedSeconds),r.timeEntry.source??"-"])});}catch(t){g$1(t);}}),o$2.command("create").description("Create a time entry").requiredOption("--start-time <iso>","Start time (ISO)").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",c).option("--end-time <iso>","End time (ISO)").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",u).option("--notes <s>","Notes").option("--source <s>","Source","manual").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={startTime:e.startTime,billable:!!e.billable,source:e.source??"manual"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.duration!==void 0&&(t.duration=e.duration),e.endTime&&(t.endTime=e.endTime),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=g("tags",e.tags));let r=await b$1(q,{input:t});i("Time entry created"),h$1(e,r.createTimeEntry);}catch(t){g$1(t);}}),o$2.command("update").description("Update a time entry").argument("<id>","Time entry ID").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",c).option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--billable <bool>","Billable (true/false)").option("--hourly-rate <n>","Hourly rate",u).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.description!==void 0&&(r.description=t.description),t.project&&(r.projectId=t.project),t.task&&(r.taskId=t.task),t.duration!==void 0&&(r.duration=t.duration),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.billable!==void 0&&(r.billable=t.billable==="true"),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.notes&&(r.notes=t.notes),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(L,{id:e,input:r});i("Time entry updated"),h$1(t,i$1.updateTimeEntry);}catch(r){g$1(r);}}),o$2.command("delete").description("Delete a time entry").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(H,{id:e});i("Time entry deleted"),h$1(t,r.deleteTimeEntry);}catch(r){g$1(r);}}),o$2.command("start").description("Start a timer").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",u).option("--notes <s>","Notes").option("--source <s>","Source","timer").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={billable:!!e.billable,source:e.source??"timer"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=g("tags",e.tags));let r=await b$1(G,{input:t});i("Timer started"),h$1(e,r.startTimer);}catch(t){g$1(t);}}),o$2.command("stop").description("Stop a running timer").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(W,{id:e});i("Timer stopped"),h$1(t,r.stopTimer);}catch(r){g$1(r);}});}function xt(d){let o$2=d.command("meetings").description("TimeCampus meetings");o$2.command("list").description("List meetings").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","Filter by meeting type").option("--min-rating <n>","Minimum rating",c).option("--participant <id>","Filter by participant user ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.meetingType=e.type.toUpperCase()),e.minRating!==void 0&&(t.minRating=e.minRating),e.participant&&(t.participantUserId=e.participant);let r=await b$1(J,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.meetings,{headers:["ID","Title","Type","Start","Duration","Rating"],rows:r.meetings.map(i=>[p(i.id,12),i.title,i.meetingType,o$1(i.startTime),i.duration!=null?String(i.duration):"-",i.rating!=null?String(i.rating):"-"])});}catch(t){g$1(t);}}),o$2.command("get").description("Get a meeting by id").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(F,{id:e,workspaceId:l(t.workspace)});if(!r.meeting)throw new o(`Meeting ${e} not found`);h$1(t,r.meeting);}catch(r){g$1(r);}}),o$2.command("stats").description("Meeting statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(V,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});h$1(e,t.meetingStats);}catch(t){g$1(t);}}),o$2.command("create").description("Create a meeting").requiredOption("--title <title>","Meeting title").requiredOption("--type <t>","Meeting type (STANDUP|TEAM|ONE_ON_ONE|...)").requiredOption("--start-time <iso>","Start time (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",u).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("--calendar-event-id <id>","Calendar event ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),title:e.title,meetingType:e.type.toUpperCase(),startTime:e.startTime};e.endTime&&(t.endTime=e.endTime),e.cost!==void 0&&(t.cost=e.cost),e.notes&&(t.notes=e.notes),e.recordingUrl&&(t.recordingUrl=e.recordingUrl),e.calendarEventId&&(t.calendarEventId=e.calendarEventId),e.context&&(t.context=g("context",e.context));let r=await b$1(K,{input:t});i(`Meeting created: ${r.createMeeting.title}`),h$1(e,r.createMeeting);}catch(t){g$1(t);}}),o$2.command("update").description("Update a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--title <title>","Meeting title").option("--type <t>","Meeting type").option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",u).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.type&&(r.meetingType=t.type.toUpperCase()),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.cost!==void 0&&(r.cost=t.cost),t.notes&&(r.notes=t.notes),t.recordingUrl&&(r.recordingUrl=t.recordingUrl),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(B,{id:e,input:r,workspaceId:l(t.workspace)});i("Meeting updated"),h$1(t,i$1.updateMeeting);}catch(r){g$1(r);}}),o$2.command("rate").description("Rate a meeting").argument("<id>","Meeting ID").requiredOption("--rating <n>","Rating (1-5)",c).option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(X,{id:e,rating:t.rating,workspaceId:l(t.workspace)});i(`Meeting rated ${r.rateMeeting.rating??t.rating}`),h$1(t,r.rateMeeting);}catch(r){g$1(r);}}),o$2.command("delete").description("Delete a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(Y,{id:e,workspaceId:l(t.workspace)});i("Meeting deleted"),h$1(t,{deleted:r.deleteMeeting});}catch(r){g$1(r);}});}function ht(d){let o$2=d.command("expenses").description("TimeCampus expenses");o$2.command("list").description("List expenses").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--status <s>","Filter by status").option("--category <c>","Filter by category").option("--project <id>","Filter by project ID").option("--min-amount <n>","Minimum amount",u).option("--max-amount <n>","Maximum amount",u).option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.category&&(t.category=e.category),e.project&&(t.projectId=e.project),e.minAmount!==void 0&&(t.minAmount=e.minAmount),e.maxAmount!==void 0&&(t.maxAmount=e.maxAmount);let r=await b$1(z,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.expenses,{headers:["ID","Category","Amount","Status","Date"],rows:r.expenses.map(i=>[p(i.id,12),i.category,`${i.amount} ${i.currency??""}`.trim(),i.status,o$1(i.date)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get an expense by id").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(Q,{id:e,workspaceId:l(t.workspace)});if(!r.expense)throw new o(`Expense ${e} not found`);h$1(t,r.expense);}catch(r){g$1(r);}}),o$2.command("stats").description("Expense statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Z,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});h$1(e,t.expenseStats);}catch(t){g$1(t);}}),o$2.command("create").description("Create an expense").requiredOption("--amount <n>","Amount",u).requiredOption("--category <c>","Category").requiredOption("--date <iso>","Date (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--currency <c>","Currency").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),amount:e.amount,category:e.category,date:e.date};e.currency&&(t.currency=e.currency),e.description&&(t.description=e.description),e.notes&&(t.notes=e.notes),e.project&&(t.projectId=e.project),e.receiptUrl&&(t.receiptUrl=e.receiptUrl),e.context&&(t.context=g("context",e.context));let r=await b$1(tt,{input:t});i("Expense created"),h$1(e,r.createExpense);}catch(t){g$1(t);}}),o$2.command("update").description("Update an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--amount <n>","Amount",u).option("--category <c>","Category").option("--currency <c>","Currency").option("--date <iso>","Date (ISO)").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.amount!==void 0&&(r.amount=t.amount),t.category&&(r.category=t.category),t.currency&&(r.currency=t.currency),t.date&&(r.date=t.date),t.description!==void 0&&(r.description=t.description),t.notes&&(r.notes=t.notes),t.project&&(r.projectId=t.project),t.receiptUrl&&(r.receiptUrl=t.receiptUrl),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(et,{id:e,input:r,workspaceId:l(t.workspace)});i("Expense updated"),h$1(t,i$1.updateExpense);}catch(r){g$1(r);}}),o$2.command("approve").description("Approve an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(rt,{id:e,workspaceId:l(t.workspace)});i(`Expense ${r.approveExpense.status}`),h$1(t,r.approveExpense);}catch(r){g$1(r);}}),o$2.command("reject").description("Reject an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(ot,{id:e,reason:t.reason,workspaceId:l(t.workspace)});i(`Expense ${r.rejectExpense.status}`),h$1(t,r.rejectExpense);}catch(r){g$1(r);}}),o$2.command("delete").description("Delete an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(it,{id:e,workspaceId:l(t.workspace)});i("Expense deleted"),h$1(t,{deleted:r.deleteExpense});}catch(r){g$1(r);}});}function jt(d){let o$2=d.command("pomodoro").description("TimeCampus pomodoro sessions");o$2.command("list").description("List pomodoro sessions").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--completed","Only completed sessions").option("--interrupted","Only interrupted sessions").option("--project <id>","Filter by project ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.type=e.type.toUpperCase()),e.completed&&(t.completed=!0),e.interrupted&&(t.interrupted=!0),e.project&&(t.projectId=e.project);let r=await b$1(st,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.pomodoroSessions,{headers:["ID","Type","Completed","Interrupted","Duration","Start"],rows:r.pomodoroSessions.map(i=>[p(i.id,12),i.type,i.completed?"yes":"no",i.interrupted?"yes":"no",i.duration!=null?String(i.duration):"-",o$1(i.startTime)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get a pomodoro session by id").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(nt,{id:e,workspaceId:l(t.workspace)});if(!r.pomodoroSession)throw new o(`Pomodoro session ${e} not found`);h$1(t,r.pomodoroSession);}catch(r){g$1(r);}}),o$2.command("active").description("Get the active pomodoro session").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(at,{workspaceId:l(e.workspace)});h$1(e,t.activePomodoroSession??{active:!1});}catch(t){g$1(t);}}),o$2.command("stats").description("Pomodoro statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(pt,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});h$1(e,t.pomodoroStats);}catch(t){g$1(t);}}),o$2.command("start").description("Start a pomodoro session").requiredOption("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--notes <s>","Notes").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),type:e.type.toUpperCase()};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.notes&&(t.notes=e.notes),e.context&&(t.context=g("context",e.context));let r=await b$1(dt,{input:t});i("Pomodoro session started"),h$1(e,r.startPomodoroSession);}catch(t){g$1(t);}}),o$2.command("complete").description("Complete a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(ct,{id:e,workspaceId:l(t.workspace)});i("Pomodoro session completed"),h$1(t,r.completePomodoroSession);}catch(r){g$1(r);}}),o$2.command("interrupt").description("Interrupt a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Interruption reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(mt,{id:e,reason:t.reason,workspaceId:l(t.workspace)});i("Pomodoro session interrupted"),h$1(t,r.interruptPomodoroSession);}catch(r){g$1(r);}});}function vt(d){let o$2=d.command("resource-plans").description("TimeCampus resource plans");o$2.command("list").description("List resource plans").option("--status <s>","Filter by status").option("--query <q>","Free-text search").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.query&&(t.search=e.query);let r=await b$1(lt,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.resourcePlans.items,{headers:["ID","Name","Status","Start","End","Allocated"],rows:r.resourcePlans.items.map(i=>[p(i.id,12),i.name,i.status,o$1(i.startDate),o$1(i.endDate),String(i.totalAllocatedHours??0)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get a resource plan by id").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(ut,{id:e});if(!r.resourcePlan)throw new o(`Resource plan ${e} not found`);h$1(t,r.resourcePlan);}catch(r){g$1(r);}}),o$2.command("create").description("Create a resource plan").requiredOption("--name <name>","Plan name").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--description <s>","Description").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,startDate:e.startDate,endDate:e.endDate};e.description&&(t.description=e.description),e.context&&(t.context=g("context",e.context));let r=await b$1(ft,{input:t});i(`Resource plan created: ${r.createResourcePlan.name}`),h$1(e,r.createResourcePlan);}catch(t){g$1(t);}}),o$2.command("update").description("Update a resource plan").argument("<id>","Resource plan ID").option("--name <name>","Plan name").option("--description <s>","Description").option("--status <s>","Status").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),!Object.keys(r).length)throw new o("No updates specified");let i$1=await b$1(gt,{id:e,input:r});i("Resource plan updated"),h$1(t,i$1.updateResourcePlan);}catch(r){g$1(r);}}),o$2.command("activate").description("Activate a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(Tt,{id:e});i("Resource plan activated"),h$1(t,r.activateResourcePlan);}catch(r){g$1(r);}}),o$2.command("delete").description("Delete a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(It,{id:e});i("Resource plan deleted"),h$1(t,r.deleteResourcePlan);}catch(r){g$1(r);}});}function _t(d){let o$2=d.command("approvals").description("TimeCampus time approval requests");o$2.command("list").description("List approval requests").option("--status <s>","Filter by status").option("--user <id>","Filter by user ID").option("--approver <id>","Filter by approver ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.user&&(t.userId=e.user),e.approver&&(t.approverId=e.approver);let r=await b$1(Et,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});h$1(e,r.approvalRequests.items,{headers:["ID","Period","Status","Total Hrs","Billable","Submitted"],rows:r.approvalRequests.items.map(i=>[p(i.id,12),i.period,i.status,String(i.totalHours??0),String(i.billableHours??0),o$1(i.submittedAt)])});}catch(t){g$1(t);}}),o$2.command("get").description("Get an approval request by id").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(yt,{id:e});if(!r.approvalRequest)throw new o(`Approval request ${e} not found`);h$1(t,r.approvalRequest);}catch(r){g$1(r);}}),o$2.command("stats").description("Approval statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Dt,{startDate:e.startDate,endDate:e.endDate});h$1(e,t.approvalStats);}catch(t){g$1(t);}}),o$2.command("submit").description("Submit a time approval request").requiredOption("--period <p>","Period label").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").requiredOption("--total-hours <n>","Total hours",u).option("--billable-hours <n>","Billable hours",u).option("--approver <id>","Approver ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={period:e.period,startDate:e.startDate,endDate:e.endDate,totalHours:e.totalHours};e.billableHours!==void 0&&(t.billableHours=e.billableHours),e.approver&&(t.approverId=e.approver),e.context&&(t.context=g("context",e.context));let r=await b$1(wt,{input:t});i("Approval request submitted"),h$1(e,r.submitApprovalRequest);}catch(t){g$1(t);}}),o$2.command("approve").description("Approve a request").argument("<id>","Approval request ID").option("--notes <s>","Reviewer notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(kt,{id:e,notes:t.notes});i("Request approved"),h$1(t,r.approveRequest);}catch(r){g$1(r);}}),o$2.command("reject").description("Reject a request").argument("<id>","Approval request ID").requiredOption("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(Rt,{id:e,reason:t.reason});i("Request rejected"),h$1(t,r.rejectRequest);}catch(r){g$1(r);}}),o$2.command("withdraw").description("Withdraw a request").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await b$1(St,{id:e});i("Request withdrawn"),h$1(t,r.withdrawRequest);}catch(r){g$1(r);}});}function Ut(d){let o=d.command("analytics").description("TimeCampus analytics & productivity summaries");o.command("focus").description("Focus score summary (averages, trend, improvement area)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Ot,{startDate:e.startDate,endDate:e.endDate,userId:e.user});h$1(e,t.focusScoreSummary);}catch(t){g$1(t);}}),o.command("work-patterns").description("Work pattern summary (focus/meeting hours, productivity, insights)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Ct,{startDate:e.startDate,endDate:e.endDate,userId:e.user});h$1(e,t.workPatternSummary);}catch(t){g$1(t);}}),o.command("app-usage").description("Application usage summary (productive/neutral/distracting, top apps)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Pt,{startDate:e.startDate,endDate:e.endDate,userId:e.user});h$1(e,t.appUsageSummary);}catch(t){g$1(t);}});}var Mt={id:"timecampus",version:"1.0.0",displayName:"TimeCampus",dependsOn:["auth","workspaces"],register(d,o){a(o);let e=d.command("timecampus").description("TimeCampus time-tracking & productivity");At(e),$t(e),bt(e),xt(e),ht(e),jt(e),vt(e),_t(e),Ut(e);}},Ce=Mt;export{Ce as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/cli-sdk",
3
- "version": "2026.627.1",
3
+ "version": "2026.627.3",
4
4
  "description": "Modular CLI SDK shared across all Burdenoff product CLIs (vibecontrols, botlit, fluidgrids, bigconsole, healthybowl, devportal, workspaces). Each module exports CliModule contract; product CLIs become thin shells that pick which modules to mount.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",