@burdenoff/cli-sdk 2026.1102.2 → 2026.1102.4

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 (51) hide show
  1. package/dist/modules/adaptercloud/index.cjs +6 -3
  2. package/dist/modules/adaptercloud/index.js +6 -3
  3. package/dist/modules/assethandler/index.cjs +22 -57
  4. package/dist/modules/assethandler/index.js +27 -62
  5. package/dist/modules/atheletebridge/index.cjs +33 -19
  6. package/dist/modules/atheletebridge/index.js +32 -18
  7. package/dist/modules/buildmyiq/index.cjs +64 -67
  8. package/dist/modules/buildmyiq/index.js +60 -63
  9. package/dist/modules/comradecircle/index.cjs +23 -15
  10. package/dist/modules/comradecircle/index.js +19 -11
  11. package/dist/modules/coolandlovely/index.cjs +27 -14
  12. package/dist/modules/coolandlovely/index.js +29 -16
  13. package/dist/modules/crewfoundry/index.cjs +63 -116
  14. package/dist/modules/crewfoundry/index.js +62 -115
  15. package/dist/modules/ecoimpacthub/index.cjs +19 -9
  16. package/dist/modules/ecoimpacthub/index.js +19 -9
  17. package/dist/modules/eventfullymanaged/index.cjs +77 -77
  18. package/dist/modules/eventfullymanaged/index.js +78 -78
  19. package/dist/modules/govcitizenhub/index.cjs +7 -4
  20. package/dist/modules/govcitizenhub/index.js +7 -4
  21. package/dist/modules/headshotmarketing/index.cjs +92 -261
  22. package/dist/modules/headshotmarketing/index.js +94 -263
  23. package/dist/modules/hookmovies/index.cjs +17 -6
  24. package/dist/modules/hookmovies/index.js +20 -9
  25. package/dist/modules/housingvista/index.cjs +31 -24
  26. package/dist/modules/housingvista/index.js +26 -19
  27. package/dist/modules/intelwatchtower/index.cjs +24 -12
  28. package/dist/modules/intelwatchtower/index.js +24 -12
  29. package/dist/modules/kadaikodi/index.cjs +56 -90
  30. package/dist/modules/kadaikodi/index.js +60 -94
  31. package/dist/modules/labsofscience/index.cjs +8 -4
  32. package/dist/modules/labsofscience/index.js +8 -4
  33. package/dist/modules/manufacturedops/index.cjs +35 -22
  34. package/dist/modules/manufacturedops/index.js +34 -21
  35. package/dist/modules/movethewheels/index.cjs +103 -231
  36. package/dist/modules/movethewheels/index.js +103 -231
  37. package/dist/modules/planmagnet/index.cjs +21 -21
  38. package/dist/modules/planmagnet/index.js +32 -32
  39. package/dist/modules/proserviceworld/index.cjs +17 -12
  40. package/dist/modules/proserviceworld/index.js +17 -12
  41. package/dist/modules/subscriberbot/index.cjs +43 -19
  42. package/dist/modules/subscriberbot/index.js +46 -22
  43. package/dist/modules/technospam/index.cjs +17 -8
  44. package/dist/modules/technospam/index.js +17 -8
  45. package/dist/modules/theculturepost/index.cjs +27 -22
  46. package/dist/modules/theculturepost/index.js +31 -26
  47. package/dist/modules/theglobalfuel/index.cjs +65 -60
  48. package/dist/modules/theglobalfuel/index.js +65 -60
  49. package/dist/modules/timecampus/index.cjs +31 -85
  50. package/dist/modules/timecampus/index.js +32 -86
  51. package/package.json +1 -1
@@ -15,10 +15,16 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
15
15
  `,w=`
16
16
  query AthTeam($id: ID!) {
17
17
  athTeam(id: $id) {
18
- id name description sport status season ageGroup homeVenue headCoachId
19
- tags createdAt updatedAt workspaceId
20
- members { id displayName role status jerseyNumber position userId }
21
- fixtures { id homeTeamId awayTeamId scheduledAt status type competition }
18
+ id name description sport status season ageGroup homeVenue headCoachId tags createdAt
19
+ updatedAt workspaceId
20
+ members {
21
+ items { id displayName role status jerseyNumber position userId }
22
+ pageInfo { cursor hasMore }
23
+ }
24
+ fixtures {
25
+ items { id homeTeamId awayTeamId scheduledAt status type competition }
26
+ pageInfo { cursor hasMore }
27
+ }
22
28
  }
23
29
  }
24
30
  `,b=`
@@ -42,8 +48,11 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
42
48
  `,T=`
43
49
  query AthListMembers($teamId: ID!, $status: AthMemberStatus) {
44
50
  athListMembers(teamId: $teamId, status: $status) {
45
- id teamId userId displayName role status jerseyNumber position
46
- dominantSide height weight joinedAt notes createdAt updatedAt workspaceId
51
+ items {
52
+ id teamId userId displayName role status jerseyNumber position dominantSide height
53
+ weight joinedAt notes createdAt updatedAt workspaceId
54
+ }
55
+ pageInfo { cursor hasMore }
47
56
  }
48
57
  }
49
58
  `,k=`
@@ -60,11 +69,11 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
60
69
  dominantSide height weight notes updatedAt
61
70
  }
62
71
  }
63
- `,E=`
72
+ `,M=`
64
73
  mutation AthRemoveMember($id: ID!) {
65
74
  athRemoveMember(id: $id)
66
75
  }
67
- `,M=`
76
+ `,E=`
68
77
  query AthListPrograms(
69
78
  $pagination: PaginationInput
70
79
  $level: AthProgramLevel
@@ -87,11 +96,11 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
87
96
  `,$=`
88
97
  query AthProgram($id: ID!) {
89
98
  athProgram(id: $id) {
90
- id name summary sport level status weeks isTemplate coachId
91
- tags createdAt updatedAt workspaceId
99
+ id name summary sport level status weeks isTemplate coachId tags createdAt updatedAt
100
+ workspaceId
92
101
  drills {
93
- id name description weekNumber orderIndex sets reps durationSec
94
- restSec
102
+ items { id name description weekNumber orderIndex sets reps durationSec restSec }
103
+ pageInfo { cursor hasMore }
95
104
  }
96
105
  }
97
106
  }
@@ -211,8 +220,10 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
211
220
  `,j=`
212
221
  query AthPerformanceMetrics($athleteId: ID!, $type: AthMetricType) {
213
222
  athPerformanceMetrics(athleteId: $athleteId, type: $type) {
214
- id athleteId label type value unit source recordedAt
215
- createdAt updatedAt workspaceId
223
+ items {
224
+ id athleteId label type value unit source recordedAt createdAt updatedAt workspaceId
225
+ }
226
+ pageInfo { cursor hasMore }
216
227
  }
217
228
  }
218
229
  `,V=`
@@ -264,13 +275,16 @@ import {a,b as b$1,i,r,h,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from
264
275
  `,Y=`
265
276
  query AthStandings($competition: String!) {
266
277
  athStandings(competition: $competition) {
267
- id competition teamId rank played won drawn lost
268
- goalsFor goalsAgainst points createdAt updatedAt workspaceId
269
- team { id name }
278
+ items {
279
+ id competition teamId rank played won drawn lost goalsFor goalsAgainst points
280
+ createdAt updatedAt workspaceId
281
+ team { id name }
282
+ }
283
+ pageInfo { cursor hasMore }
270
284
  }
271
285
  }
272
286
  `,Q=`
273
287
  query AthHealth {
274
288
  athHealth
275
289
  }
276
- `;function Z(d,r){try{return JSON.parse(r)}catch{throw new o(`--${d} must be valid JSON`)}}function m(d){let r=Number.parseInt(d,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${d}"`);return r}function l(d){let r=Number.parseFloat(d);if(Number.isNaN(r))throw new o(`Expected a number but got "${d}"`);return r}function I(d){return d.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function tt(d){let r$1=d.command("teams").description("AtheleteBridge teams");r$1.command("list").description("List teams").option("--sport <s>","Filter by sport").option("--status <s>","Filter by team status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(y,{pagination:{limit:o.limit,offset:o.offset},sport:o.sport?o.sport.toUpperCase():void 0,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListTeams.items,{headers:["ID","Name","Sport","Status","Season"],rows:t.athListTeams.items.map(e=>[r(e.id,12),e.name,e.sport,e.status,e.season??"-"])});}catch(t){h(t);}}),r$1.command("get").description("Get a team by id").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(w,{id:o$1});if(!e.athTeam)throw new o(`Team ${o$1} not found`);i(t,e.athTeam);}catch(e){h(e);}}),r$1.command("create").description("Create a team").requiredOption("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport","OTHER").option("--status <s>","Team status","FORMING").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async o=>{try{let t={name:o.name,sport:(o.sport??"OTHER").toUpperCase(),status:(o.status??"FORMING").toUpperCase()};o.description&&(t.description=o.description),o.season&&(t.season=o.season),o.ageGroup&&(t.ageGroup=o.ageGroup),o.homeVenue&&(t.homeVenue=o.homeVenue),o.headCoachId&&(t.headCoachId=o.headCoachId),o.tags&&(t.tags=I(o.tags));let e=await b$1(b,{input:t});k$1(`Team created: ${e.athCreateTeam.name}`),i(o,e.athCreateTeam);}catch(t){h(t);}}),r$1.command("update").description("Update a team").argument("<id>","Team ID").option("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport").option("--status <s>","Team status").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.sport&&(e.sport=t.sport.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.season&&(e.season=t.season),t.ageGroup&&(e.ageGroup=t.ageGroup),t.homeVenue&&(e.homeVenue=t.homeVenue),t.headCoachId&&(e.headCoachId=t.headCoachId),t.tags&&(e.tags=I(t.tags)),!Object.keys(e).length)throw new o("No updates specified");let i$1=await b$1(R,{id:o$1,input:e});k$1("Team updated"),i(t,i$1.athUpdateTeam);}catch(e){h(e);}}),r$1.command("archive").description("Archive a team").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(C,{id:o});k$1(e.athArchiveTeam?`Team ${o} archived`:`Team ${o} not archived`),i(t,{archived:e.athArchiveTeam});}catch(e){h(e);}});}function et(d){let r$1=d.command("members").description("AtheleteBridge team members");r$1.command("list").description("List members of a team").requiredOption("--team <id>","Team ID").option("--status <s>","Filter by member status").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(T,{teamId:o.team,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListMembers,{headers:["ID","Name","Role","Status","Jersey","Position"],rows:t.athListMembers.map(e=>[r(e.id,12),e.displayName,e.role,e.status,e.jerseyNumber!==void 0&&e.jerseyNumber!==null?String(e.jerseyNumber):"-",e.position??"-"])});}catch(t){h(t);}}),r$1.command("add").description("Add a member to a team").requiredOption("--team <id>","Team ID").requiredOption("--user <id>","User ID").requiredOption("--display-name <name>","Display name").option("--role <r>","Member role","PLAYER").option("--status <s>","Member status","ACTIVE").option("--jersey-number <n>","Jersey number",m).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",l).option("--weight <n>","Weight",l).option("--joined-at <iso>","Joined at (ISO timestamp)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async o=>{try{let t={teamId:o.team,userId:o.user,displayName:o.displayName,role:(o.role??"PLAYER").toUpperCase(),status:(o.status??"ACTIVE").toUpperCase()};o.jerseyNumber!==void 0&&(t.jerseyNumber=o.jerseyNumber),o.position&&(t.position=o.position),o.dominantSide&&(t.dominantSide=o.dominantSide),o.height!==void 0&&(t.height=o.height),o.weight!==void 0&&(t.weight=o.weight),o.joinedAt&&(t.joinedAt=o.joinedAt),o.notes&&(t.notes=o.notes);let e=await b$1(k,{input:t});k$1(`Member added: ${e.athAddMember.displayName}`),i(o,e.athAddMember);}catch(t){h(t);}}),r$1.command("update").description("Update a team member").argument("<id>","Member ID").option("--display-name <name>","Display name").option("--role <r>","Member role").option("--status <s>","Member status").option("--jersey-number <n>","Jersey number",m).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",l).option("--weight <n>","Weight",l).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e={};if(t.displayName&&(e.displayName=t.displayName),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.jerseyNumber!==void 0&&(e.jerseyNumber=t.jerseyNumber),t.position&&(e.position=t.position),t.dominantSide&&(e.dominantSide=t.dominantSide),t.height!==void 0&&(e.height=t.height),t.weight!==void 0&&(e.weight=t.weight),t.notes!==void 0&&(e.notes=t.notes),!Object.keys(e).length)throw new o("No updates specified");let i$1=await b$1(O,{id:o$1,input:e});k$1("Member updated"),i(t,i$1.athUpdateMember);}catch(e){h(e);}}),r$1.command("remove").description("Remove a team member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(E,{id:o});k$1(e.athRemoveMember?`Member ${o} removed`:`Member ${o} not removed`),i(t,{removed:e.athRemoveMember});}catch(e){h(e);}});}function ot(d){let r$1=d.command("programs").description("AtheleteBridge training programs");r$1.command("list").description("List training programs").option("--level <l>","Filter by program level").option("--sport <s>","Filter by sport").option("--status <s>","Filter by program status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(M,{pagination:{limit:t.limit,offset:t.offset},level:t.level?t.level.toUpperCase():void 0,sport:t.sport?t.sport.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});i(t,e.athListPrograms.items,{headers:["ID","Name","Sport","Level","Status","Weeks"],rows:e.athListPrograms.items.map(i=>[r(i.id,12),i.name,i.sport,i.level,i.status,i.weeks!==void 0&&i.weeks!==null?String(i.weeks):"-"])});}catch(e){h(e);}}),r$1.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1($,{id:t});if(!i$1.athProgram)throw new o(`Program ${t} not found`);i(e,i$1.athProgram);}catch(i){h(i);}}),r$1.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport","OTHER").option("--level <l>","Level","BEGINNER").option("--weeks <n>","Number of weeks",m).option("--template","Mark as a template").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,sport:(t.sport??"OTHER").toUpperCase(),level:(t.level??"BEGINNER").toUpperCase(),isTemplate:!!t.template};t.summary&&(e.summary=t.summary),t.weeks!==void 0&&(e.weeks=t.weeks),t.tags&&(e.tags=I(t.tags));let i$1=await b$1(D,{input:e});k$1(`Program created: ${i$1.athCreateProgram.name}`),i(t,i$1.athCreateProgram);}catch(e){h(e);}}),r$1.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport").option("--level <l>","Level").option("--weeks <n>","Number of weeks",m).option("--template <bool>","Template flag (true|false)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.summary!==void 0&&(i$1.summary=e.summary),e.sport&&(i$1.sport=e.sport.toUpperCase()),e.level&&(i$1.level=e.level.toUpperCase()),e.weeks!==void 0&&(i$1.weeks=e.weeks),e.template!==void 0&&(i$1.isTemplate=e.template==="true"),e.tags&&(i$1.tags=I(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let dt=await b$1(L,{id:t,input:i$1});k$1("Program updated"),i(e,dt.athUpdateProgram);}catch(i){h(i);}}),r$1.command("transition").description("Advance a program through its publish lifecycle (DRAFT -> PUBLISHED -> ARCHIVED)").argument("<id>","Program ID").requiredOption("--status <s>","Target status: DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(v,{id:t,status:e.status.toUpperCase()});k$1(`Program transitioned to ${i$1.athTransitionProgram.status}`),i(e,i$1.athTransitionProgram);}catch(i){h(i);}}),r$1.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(P,{id:t});k$1(i$1.athArchiveProgram?`Program ${t} archived`:`Program ${t} not archived`),i(e,{archived:i$1.athArchiveProgram});}catch(i){h(i);}});let o$1=r$1.command("drills").description("AtheleteBridge program drills");o$1.command("add").description("Add a drill to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Drill name").option("--description <s>","Description").option("--week-number <n>","Week number",m,1).option("--order-index <n>","Order index",m,0).option("--sets <n>","Sets",m).option("--reps <n>","Reps",m).option("--duration-sec <n>","Duration (seconds)",m).option("--rest-sec <n>","Rest (seconds)",m).option("--video-file-id <id>","Video file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={programId:t.program,name:t.name,weekNumber:t.weekNumber??1,orderIndex:t.orderIndex??0};t.description&&(e.description=t.description),t.sets!==void 0&&(e.sets=t.sets),t.reps!==void 0&&(e.reps=t.reps),t.durationSec!==void 0&&(e.durationSec=t.durationSec),t.restSec!==void 0&&(e.restSec=t.restSec),t.videoFileId&&(e.videoFileId=t.videoFileId);let i$1=await b$1(x,{input:e});k$1(`Drill added: ${i$1.athAddDrill.name}`),i(t,i$1.athAddDrill);}catch(e){h(e);}}),o$1.command("remove").description("Remove a drill").argument("<id>","Drill ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(N,{id:t});k$1(i$1.athRemoveDrill?`Drill ${t} removed`:`Drill ${t} not removed`),i(e,{removed:i$1.athRemoveDrill});}catch(i){h(i);}});}function rt(d){let r$1=d.command("sessions").description("AtheleteBridge coaching sessions");r$1.command("list").description("List sessions").option("--athlete <id>","Filter by athlete ID").option("--coach <id>","Filter by coach ID").option("--status <s>","Filter by session status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(U,{pagination:{limit:o.limit,offset:o.offset},athleteId:o.athlete,coachId:o.coach,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListSessions.items,{headers:["ID","Title","Type","Status","Scheduled"],rows:t.athListSessions.items.map(e=>[r(e.id,12),e.title,e.type,e.status,e.scheduledAt])});}catch(t){h(t);}}),r$1.command("get").description("Get a session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(F,{id:o$1});if(!e.athSession)throw new o(`Session ${o$1} not found`);i(t,e.athSession);}catch(e){h(e);}}),r$1.command("book").description("Book a coaching session").requiredOption("--athlete <id>","Athlete ID").requiredOption("--coach <id>","Coach ID").requiredOption("--title <s>","Session title").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--type <t>","Session type","IN_PERSON").option("--duration-min <n>","Duration (minutes)",m).option("--location <s>","Location").option("--meeting-url <url>","Meeting URL").option("--program <id>","Program ID").option("-f, --format <format>","Output format").action(async o=>{try{let t={athleteId:o.athlete,coachId:o.coach,title:o.title,scheduledAt:o.scheduledAt,type:(o.type??"IN_PERSON").toUpperCase()};o.durationMin!==void 0&&(t.durationMin=o.durationMin),o.location&&(t.location=o.location),o.meetingUrl&&(t.meetingUrl=o.meetingUrl),o.program&&(t.programId=o.program);let e=await b$1(_,{input:t});k$1(`Session booked: ${e.athBookSession.title}`),i(o,e.athBookSession);}catch(t){h(t);}}),r$1.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(G,{id:o});k$1(`Session confirmed: ${e.athConfirmSession.status}`),i(t,e.athConfirmSession);}catch(e){h(e);}}),r$1.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(W,{id:o});k$1(`Session cancelled: ${e.athCancelSession.status}`),i(t,e.athCancelSession);}catch(e){h(e);}}),r$1.command("complete").description("Complete a session (optionally with rating and feedback)").argument("<id>","Session ID").option("--rating <n>","Rating",m).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e={};t.rating!==void 0&&(e.rating=t.rating),t.feedback&&(e.feedback=t.feedback);let i$1=await b$1(q,{id:o,input:Object.keys(e).length?e:void 0});k$1(`Session completed: ${i$1.athCompleteSession.status}`),i(t,i$1.athCompleteSession);}catch(e){h(e);}});}function it(d){let r$1=d.command("workouts").description("AtheleteBridge workout logs");r$1.command("list").description("List workout logs").option("--athlete <id>","Filter by athlete ID").option("--program <id>","Filter by program ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(B,{pagination:{limit:o.limit,offset:o.offset},athleteId:o.athlete,programId:o.program});i(o,t.athListWorkoutLogs.items,{headers:["ID","Title","Status","Performed","Load","RPE"],rows:t.athListWorkoutLogs.items.map(e=>[r(e.id,12),e.title,e.status,e.performedAt,e.totalLoad!==void 0&&e.totalLoad!==null?String(e.totalLoad):"-",e.rpe!==void 0&&e.rpe!==null?String(e.rpe):"-"])});}catch(t){h(t);}}),r$1.command("log").description("Log a workout").requiredOption("--title <s>","Workout title").requiredOption("--performed-at <iso>","Performed at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--program <id>","Program ID").option("--status <s>","Workout status","COMPLETED").option("--duration-min <n>","Duration (minutes)",m).option("--total-load <n>","Total load",l).option("--rpe <n>","Rate of perceived exertion",m).option("--notes <s>","Notes").option("--metrics <json>","Metrics JSON object").option("-f, --format <format>","Output format").action(async o=>{try{let t={title:o.title,performedAt:o.performedAt,status:(o.status??"COMPLETED").toUpperCase()};o.athlete&&(t.athleteId=o.athlete),o.program&&(t.programId=o.program),o.durationMin!==void 0&&(t.durationMin=o.durationMin),o.totalLoad!==void 0&&(t.totalLoad=o.totalLoad),o.rpe!==void 0&&(t.rpe=o.rpe),o.notes&&(t.notes=o.notes),o.metrics&&(t.metrics=Z("metrics",o.metrics));let e=await b$1(H,{input:t});k$1(`Workout logged: ${e.athLogWorkout.title}`),i(o,e.athLogWorkout);}catch(t){h(t);}});}function at(d){let r$1=d.command("metrics").description("AtheleteBridge performance metrics");r$1.command("list").description("List performance metrics for an athlete").requiredOption("--athlete <id>","Athlete ID").option("--type <t>","Filter by metric type").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(j,{athleteId:o.athlete,type:o.type?o.type.toUpperCase():void 0});i(o,t.athPerformanceMetrics,{headers:["ID","Label","Type","Value","Unit","Recorded"],rows:t.athPerformanceMetrics.map(e=>[r(e.id,12),e.label,e.type,String(e.value),e.unit??"-",e.recordedAt])});}catch(t){h(t);}}),r$1.command("record").description("Record a performance metric").requiredOption("--label <s>","Metric label").requiredOption("--value <n>","Metric value",l).requiredOption("--recorded-at <iso>","Recorded at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--type <t>","Metric type","CUSTOM").option("--unit <s>","Unit").option("--source <s>","Source").option("-f, --format <format>","Output format").action(async o=>{try{let t={label:o.label,value:o.value,recordedAt:o.recordedAt,type:(o.type??"CUSTOM").toUpperCase()};o.athlete&&(t.athleteId=o.athlete),o.unit&&(t.unit=o.unit),o.source&&(t.source=o.source);let e=await b$1(V,{input:t});k$1(`Metric recorded: ${e.athRecordMetric.label}`),i(o,e.athRecordMetric);}catch(t){h(t);}});}function nt(d){let r$1=d.command("fixtures").description("AtheleteBridge fixtures");r$1.command("list").description("List fixtures").option("--team <id>","Filter by team ID").option("--status <s>","Filter by fixture status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(J,{pagination:{limit:o.limit,offset:o.offset},status:o.status?o.status.toUpperCase():void 0,teamId:o.team});i(o,t.athListFixtures.items,{headers:["ID","Type","Status","Competition","Scheduled","Score"],rows:t.athListFixtures.items.map(e=>[r(e.id,12),e.type,e.status,e.competition??"-",e.scheduledAt,e.homeScore!==void 0&&e.homeScore!==null&&e.awayScore!==void 0&&e.awayScore!==null?`${e.homeScore}-${e.awayScore}`:"-"])});}catch(t){h(t);}}),r$1.command("get").description("Get a fixture by id").argument("<id>","Fixture ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(X,{id:o$1});if(!e.athFixture)throw new o(`Fixture ${o$1} not found`);i(t,e.athFixture);}catch(e){h(e);}}),r$1.command("schedule").description("Schedule a fixture").requiredOption("--home-team <id>","Home team ID").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--away-team <id>","Away team ID").option("--type <t>","Fixture type","FRIENDLY").option("--competition <s>","Competition").option("--round <s>","Round").option("--kickoff-at <iso>","Kickoff at (ISO timestamp)").option("--venue <s>","Venue").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async o=>{try{let t={homeTeamId:o.homeTeam,scheduledAt:o.scheduledAt,type:(o.type??"FRIENDLY").toUpperCase()};o.awayTeam&&(t.awayTeamId=o.awayTeam),o.competition&&(t.competition=o.competition),o.round&&(t.round=o.round),o.kickoffAt&&(t.kickoffAt=o.kickoffAt),o.venue&&(t.venue=o.venue),o.notes&&(t.notes=o.notes);let e=await b$1(K,{input:t});k$1(`Fixture scheduled: ${e.athScheduleFixture.id}`),i(o,e.athScheduleFixture);}catch(t){h(t);}}),r$1.command("record-result").description("Record a final result for a fixture and recompute standings").argument("<id>","Fixture ID").requiredOption("--home-score <n>","Home score",m).requiredOption("--away-score <n>","Away score",m).option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(z,{id:o,input:{homeScore:t.homeScore,awayScore:t.awayScore}});k$1(`Result recorded: ${e.athRecordFixtureResult.homeScore??0}-${e.athRecordFixtureResult.awayScore??0}`),i(t,e.athRecordFixtureResult);}catch(e){h(e);}});}function st(d){d.command("standings").description("AtheleteBridge standings").command("list").description("List standings for a competition").requiredOption("--competition <s>","Competition name").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(Y,{competition:o.competition});i(o,t.athStandings,{headers:["Rank","Team","P","W","D","L","Pts"],rows:t.athStandings.map(e=>[e.rank!==void 0&&e.rank!==null?String(e.rank):"-",r(e.teamId,12),String(e.played),String(e.won),String(e.drawn),String(e.lost),String(e.points)])});}catch(t){h(t);}});}function mt(d$1){d$1.command("health").description("AtheleteBridge service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let o=await d(Q);k$1(o.athHealth),i(r,{health:o.athHealth});}catch(o){h(o);}});}var pt={id:"atheletebridge",version:"1.0.0",displayName:"AtheleteBridge",dependsOn:["auth","workspaces"],register(d,r){a(r);let o=d.command("atheletebridge").description("AtheleteBridge sports team & athlete management");tt(o),et(o),ot(o),rt(o),it(o),at(o),nt(o),st(o),mt(o);}},Vt=pt;export{Vt as default};
290
+ `;function Z(d,r){try{return JSON.parse(r)}catch{throw new o(`--${d} must be valid JSON`)}}function m(d){let r=Number.parseInt(d,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${d}"`);return r}function l(d){let r=Number.parseFloat(d);if(Number.isNaN(r))throw new o(`Expected a number but got "${d}"`);return r}function I(d){return d.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function tt(d){let r$1=d.command("teams").description("AtheleteBridge teams");r$1.command("list").description("List teams").option("--sport <s>","Filter by sport").option("--status <s>","Filter by team status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(y,{pagination:{limit:o.limit,offset:o.offset},sport:o.sport?o.sport.toUpperCase():void 0,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListTeams.items,{headers:["ID","Name","Sport","Status","Season"],rows:t.athListTeams.items.map(e=>[r(e.id,12),e.name,e.sport,e.status,e.season??"-"])});}catch(t){h(t);}}),r$1.command("get").description("Get a team by id").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(w,{id:o$1});if(!e.athTeam)throw new o(`Team ${o$1} not found`);i(t,e.athTeam);}catch(e){h(e);}}),r$1.command("create").description("Create a team").requiredOption("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport","OTHER").option("--status <s>","Team status","FORMING").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async o=>{try{let t={name:o.name,sport:(o.sport??"OTHER").toUpperCase(),status:(o.status??"FORMING").toUpperCase()};o.description&&(t.description=o.description),o.season&&(t.season=o.season),o.ageGroup&&(t.ageGroup=o.ageGroup),o.homeVenue&&(t.homeVenue=o.homeVenue),o.headCoachId&&(t.headCoachId=o.headCoachId),o.tags&&(t.tags=I(o.tags));let e=await b$1(b,{input:t});k$1(`Team created: ${e.athCreateTeam.name}`),i(o,e.athCreateTeam);}catch(t){h(t);}}),r$1.command("update").description("Update a team").argument("<id>","Team ID").option("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport").option("--status <s>","Team status").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.sport&&(e.sport=t.sport.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.season&&(e.season=t.season),t.ageGroup&&(e.ageGroup=t.ageGroup),t.homeVenue&&(e.homeVenue=t.homeVenue),t.headCoachId&&(e.headCoachId=t.headCoachId),t.tags&&(e.tags=I(t.tags)),!Object.keys(e).length)throw new o("No updates specified");let i$1=await b$1(R,{id:o$1,input:e});k$1("Team updated"),i(t,i$1.athUpdateTeam);}catch(e){h(e);}}),r$1.command("archive").description("Archive a team").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(C,{id:o});k$1(e.athArchiveTeam?`Team ${o} archived`:`Team ${o} not archived`),i(t,{archived:e.athArchiveTeam});}catch(e){h(e);}});}function et(d){let r$1=d.command("members").description("AtheleteBridge team members");r$1.command("list").description("List members of a team").requiredOption("--team <id>","Team ID").option("--status <s>","Filter by member status").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(T,{teamId:o.team,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListMembers.items,{headers:["ID","Name","Role","Status","Jersey","Position"],rows:t.athListMembers.items.map(e=>[r(e.id,12),e.displayName,e.role,e.status,e.jerseyNumber!==void 0&&e.jerseyNumber!==null?String(e.jerseyNumber):"-",e.position??"-"])});}catch(t){h(t);}}),r$1.command("add").description("Add a member to a team").requiredOption("--team <id>","Team ID").requiredOption("--user <id>","User ID").requiredOption("--display-name <name>","Display name").option("--role <r>","Member role","PLAYER").option("--status <s>","Member status","ACTIVE").option("--jersey-number <n>","Jersey number",m).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",l).option("--weight <n>","Weight",l).option("--joined-at <iso>","Joined at (ISO timestamp)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async o=>{try{let t={teamId:o.team,userId:o.user,displayName:o.displayName,role:(o.role??"PLAYER").toUpperCase(),status:(o.status??"ACTIVE").toUpperCase()};o.jerseyNumber!==void 0&&(t.jerseyNumber=o.jerseyNumber),o.position&&(t.position=o.position),o.dominantSide&&(t.dominantSide=o.dominantSide),o.height!==void 0&&(t.height=o.height),o.weight!==void 0&&(t.weight=o.weight),o.joinedAt&&(t.joinedAt=o.joinedAt),o.notes&&(t.notes=o.notes);let e=await b$1(k,{input:t});k$1(`Member added: ${e.athAddMember.displayName}`),i(o,e.athAddMember);}catch(t){h(t);}}),r$1.command("update").description("Update a team member").argument("<id>","Member ID").option("--display-name <name>","Display name").option("--role <r>","Member role").option("--status <s>","Member status").option("--jersey-number <n>","Jersey number",m).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",l).option("--weight <n>","Weight",l).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e={};if(t.displayName&&(e.displayName=t.displayName),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.jerseyNumber!==void 0&&(e.jerseyNumber=t.jerseyNumber),t.position&&(e.position=t.position),t.dominantSide&&(e.dominantSide=t.dominantSide),t.height!==void 0&&(e.height=t.height),t.weight!==void 0&&(e.weight=t.weight),t.notes!==void 0&&(e.notes=t.notes),!Object.keys(e).length)throw new o("No updates specified");let i$1=await b$1(O,{id:o$1,input:e});k$1("Member updated"),i(t,i$1.athUpdateMember);}catch(e){h(e);}}),r$1.command("remove").description("Remove a team member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(M,{id:o});k$1(e.athRemoveMember?`Member ${o} removed`:`Member ${o} not removed`),i(t,{removed:e.athRemoveMember});}catch(e){h(e);}});}function ot(d){let r$1=d.command("programs").description("AtheleteBridge training programs");r$1.command("list").description("List training programs").option("--level <l>","Filter by program level").option("--sport <s>","Filter by sport").option("--status <s>","Filter by program status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(E,{pagination:{limit:t.limit,offset:t.offset},level:t.level?t.level.toUpperCase():void 0,sport:t.sport?t.sport.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});i(t,e.athListPrograms.items,{headers:["ID","Name","Sport","Level","Status","Weeks"],rows:e.athListPrograms.items.map(i=>[r(i.id,12),i.name,i.sport,i.level,i.status,i.weeks!==void 0&&i.weeks!==null?String(i.weeks):"-"])});}catch(e){h(e);}}),r$1.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1($,{id:t});if(!i$1.athProgram)throw new o(`Program ${t} not found`);i(e,i$1.athProgram);}catch(i){h(i);}}),r$1.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport","OTHER").option("--level <l>","Level","BEGINNER").option("--weeks <n>","Number of weeks",m).option("--template","Mark as a template").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,sport:(t.sport??"OTHER").toUpperCase(),level:(t.level??"BEGINNER").toUpperCase(),isTemplate:!!t.template};t.summary&&(e.summary=t.summary),t.weeks!==void 0&&(e.weeks=t.weeks),t.tags&&(e.tags=I(t.tags));let i$1=await b$1(D,{input:e});k$1(`Program created: ${i$1.athCreateProgram.name}`),i(t,i$1.athCreateProgram);}catch(e){h(e);}}),r$1.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport").option("--level <l>","Level").option("--weeks <n>","Number of weeks",m).option("--template <bool>","Template flag (true|false)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.summary!==void 0&&(i$1.summary=e.summary),e.sport&&(i$1.sport=e.sport.toUpperCase()),e.level&&(i$1.level=e.level.toUpperCase()),e.weeks!==void 0&&(i$1.weeks=e.weeks),e.template!==void 0&&(i$1.isTemplate=e.template==="true"),e.tags&&(i$1.tags=I(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let dt=await b$1(L,{id:t,input:i$1});k$1("Program updated"),i(e,dt.athUpdateProgram);}catch(i){h(i);}}),r$1.command("transition").description("Advance a program through its publish lifecycle (DRAFT -> PUBLISHED -> ARCHIVED)").argument("<id>","Program ID").requiredOption("--status <s>","Target status: DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(v,{id:t,status:e.status.toUpperCase()});k$1(`Program transitioned to ${i$1.athTransitionProgram.status}`),i(e,i$1.athTransitionProgram);}catch(i){h(i);}}),r$1.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(P,{id:t});k$1(i$1.athArchiveProgram?`Program ${t} archived`:`Program ${t} not archived`),i(e,{archived:i$1.athArchiveProgram});}catch(i){h(i);}});let o$1=r$1.command("drills").description("AtheleteBridge program drills");o$1.command("add").description("Add a drill to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Drill name").option("--description <s>","Description").option("--week-number <n>","Week number",m,1).option("--order-index <n>","Order index",m,0).option("--sets <n>","Sets",m).option("--reps <n>","Reps",m).option("--duration-sec <n>","Duration (seconds)",m).option("--rest-sec <n>","Rest (seconds)",m).option("--video-file-id <id>","Video file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={programId:t.program,name:t.name,weekNumber:t.weekNumber??1,orderIndex:t.orderIndex??0};t.description&&(e.description=t.description),t.sets!==void 0&&(e.sets=t.sets),t.reps!==void 0&&(e.reps=t.reps),t.durationSec!==void 0&&(e.durationSec=t.durationSec),t.restSec!==void 0&&(e.restSec=t.restSec),t.videoFileId&&(e.videoFileId=t.videoFileId);let i$1=await b$1(x,{input:e});k$1(`Drill added: ${i$1.athAddDrill.name}`),i(t,i$1.athAddDrill);}catch(e){h(e);}}),o$1.command("remove").description("Remove a drill").argument("<id>","Drill ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(N,{id:t});k$1(i$1.athRemoveDrill?`Drill ${t} removed`:`Drill ${t} not removed`),i(e,{removed:i$1.athRemoveDrill});}catch(i){h(i);}});}function rt(d){let r$1=d.command("sessions").description("AtheleteBridge coaching sessions");r$1.command("list").description("List sessions").option("--athlete <id>","Filter by athlete ID").option("--coach <id>","Filter by coach ID").option("--status <s>","Filter by session status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(U,{pagination:{limit:o.limit,offset:o.offset},athleteId:o.athlete,coachId:o.coach,status:o.status?o.status.toUpperCase():void 0});i(o,t.athListSessions.items,{headers:["ID","Title","Type","Status","Scheduled"],rows:t.athListSessions.items.map(e=>[r(e.id,12),e.title,e.type,e.status,e.scheduledAt])});}catch(t){h(t);}}),r$1.command("get").description("Get a session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(F,{id:o$1});if(!e.athSession)throw new o(`Session ${o$1} not found`);i(t,e.athSession);}catch(e){h(e);}}),r$1.command("book").description("Book a coaching session").requiredOption("--athlete <id>","Athlete ID").requiredOption("--coach <id>","Coach ID").requiredOption("--title <s>","Session title").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--type <t>","Session type","IN_PERSON").option("--duration-min <n>","Duration (minutes)",m).option("--location <s>","Location").option("--meeting-url <url>","Meeting URL").option("--program <id>","Program ID").option("-f, --format <format>","Output format").action(async o=>{try{let t={athleteId:o.athlete,coachId:o.coach,title:o.title,scheduledAt:o.scheduledAt,type:(o.type??"IN_PERSON").toUpperCase()};o.durationMin!==void 0&&(t.durationMin=o.durationMin),o.location&&(t.location=o.location),o.meetingUrl&&(t.meetingUrl=o.meetingUrl),o.program&&(t.programId=o.program);let e=await b$1(_,{input:t});k$1(`Session booked: ${e.athBookSession.title}`),i(o,e.athBookSession);}catch(t){h(t);}}),r$1.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(G,{id:o});k$1(`Session confirmed: ${e.athConfirmSession.status}`),i(t,e.athConfirmSession);}catch(e){h(e);}}),r$1.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(W,{id:o});k$1(`Session cancelled: ${e.athCancelSession.status}`),i(t,e.athCancelSession);}catch(e){h(e);}}),r$1.command("complete").description("Complete a session (optionally with rating and feedback)").argument("<id>","Session ID").option("--rating <n>","Rating",m).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e={};t.rating!==void 0&&(e.rating=t.rating),t.feedback&&(e.feedback=t.feedback);let i$1=await b$1(q,{id:o,input:Object.keys(e).length?e:void 0});k$1(`Session completed: ${i$1.athCompleteSession.status}`),i(t,i$1.athCompleteSession);}catch(e){h(e);}});}function it(d){let r$1=d.command("workouts").description("AtheleteBridge workout logs");r$1.command("list").description("List workout logs").option("--athlete <id>","Filter by athlete ID").option("--program <id>","Filter by program ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(B,{pagination:{limit:o.limit,offset:o.offset},athleteId:o.athlete,programId:o.program});i(o,t.athListWorkoutLogs.items,{headers:["ID","Title","Status","Performed","Load","RPE"],rows:t.athListWorkoutLogs.items.map(e=>[r(e.id,12),e.title,e.status,e.performedAt,e.totalLoad!==void 0&&e.totalLoad!==null?String(e.totalLoad):"-",e.rpe!==void 0&&e.rpe!==null?String(e.rpe):"-"])});}catch(t){h(t);}}),r$1.command("log").description("Log a workout").requiredOption("--title <s>","Workout title").requiredOption("--performed-at <iso>","Performed at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--program <id>","Program ID").option("--status <s>","Workout status","COMPLETED").option("--duration-min <n>","Duration (minutes)",m).option("--total-load <n>","Total load",l).option("--rpe <n>","Rate of perceived exertion",m).option("--notes <s>","Notes").option("--metrics <json>","Metrics JSON object").option("-f, --format <format>","Output format").action(async o=>{try{let t={title:o.title,performedAt:o.performedAt,status:(o.status??"COMPLETED").toUpperCase()};o.athlete&&(t.athleteId=o.athlete),o.program&&(t.programId=o.program),o.durationMin!==void 0&&(t.durationMin=o.durationMin),o.totalLoad!==void 0&&(t.totalLoad=o.totalLoad),o.rpe!==void 0&&(t.rpe=o.rpe),o.notes&&(t.notes=o.notes),o.metrics&&(t.metrics=Z("metrics",o.metrics));let e=await b$1(H,{input:t});k$1(`Workout logged: ${e.athLogWorkout.title}`),i(o,e.athLogWorkout);}catch(t){h(t);}});}function at(d){let r$1=d.command("metrics").description("AtheleteBridge performance metrics");r$1.command("list").description("List performance metrics for an athlete").requiredOption("--athlete <id>","Athlete ID").option("--type <t>","Filter by metric type").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(j,{athleteId:o.athlete,type:o.type?o.type.toUpperCase():void 0});i(o,t.athPerformanceMetrics.items,{headers:["ID","Label","Type","Value","Unit","Recorded"],rows:t.athPerformanceMetrics.items.map(e=>[r(e.id,12),e.label,e.type,String(e.value),e.unit??"-",e.recordedAt])});}catch(t){h(t);}}),r$1.command("record").description("Record a performance metric").requiredOption("--label <s>","Metric label").requiredOption("--value <n>","Metric value",l).requiredOption("--recorded-at <iso>","Recorded at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--type <t>","Metric type","CUSTOM").option("--unit <s>","Unit").option("--source <s>","Source").option("-f, --format <format>","Output format").action(async o=>{try{let t={label:o.label,value:o.value,recordedAt:o.recordedAt,type:(o.type??"CUSTOM").toUpperCase()};o.athlete&&(t.athleteId=o.athlete),o.unit&&(t.unit=o.unit),o.source&&(t.source=o.source);let e=await b$1(V,{input:t});k$1(`Metric recorded: ${e.athRecordMetric.label}`),i(o,e.athRecordMetric);}catch(t){h(t);}});}function nt(d){let r$1=d.command("fixtures").description("AtheleteBridge fixtures");r$1.command("list").description("List fixtures").option("--team <id>","Filter by team ID").option("--status <s>","Filter by fixture status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(J,{pagination:{limit:o.limit,offset:o.offset},status:o.status?o.status.toUpperCase():void 0,teamId:o.team});i(o,t.athListFixtures.items,{headers:["ID","Type","Status","Competition","Scheduled","Score"],rows:t.athListFixtures.items.map(e=>[r(e.id,12),e.type,e.status,e.competition??"-",e.scheduledAt,e.homeScore!==void 0&&e.homeScore!==null&&e.awayScore!==void 0&&e.awayScore!==null?`${e.homeScore}-${e.awayScore}`:"-"])});}catch(t){h(t);}}),r$1.command("get").description("Get a fixture by id").argument("<id>","Fixture ID").option("-f, --format <format>","Output format").action(async(o$1,t)=>{try{let e=await b$1(X,{id:o$1});if(!e.athFixture)throw new o(`Fixture ${o$1} not found`);i(t,e.athFixture);}catch(e){h(e);}}),r$1.command("schedule").description("Schedule a fixture").requiredOption("--home-team <id>","Home team ID").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--away-team <id>","Away team ID").option("--type <t>","Fixture type","FRIENDLY").option("--competition <s>","Competition").option("--round <s>","Round").option("--kickoff-at <iso>","Kickoff at (ISO timestamp)").option("--venue <s>","Venue").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async o=>{try{let t={homeTeamId:o.homeTeam,scheduledAt:o.scheduledAt,type:(o.type??"FRIENDLY").toUpperCase()};o.awayTeam&&(t.awayTeamId=o.awayTeam),o.competition&&(t.competition=o.competition),o.round&&(t.round=o.round),o.kickoffAt&&(t.kickoffAt=o.kickoffAt),o.venue&&(t.venue=o.venue),o.notes&&(t.notes=o.notes);let e=await b$1(K,{input:t});k$1(`Fixture scheduled: ${e.athScheduleFixture.id}`),i(o,e.athScheduleFixture);}catch(t){h(t);}}),r$1.command("record-result").description("Record a final result for a fixture and recompute standings").argument("<id>","Fixture ID").requiredOption("--home-score <n>","Home score",m).requiredOption("--away-score <n>","Away score",m).option("-f, --format <format>","Output format").action(async(o,t)=>{try{let e=await b$1(z,{id:o,input:{homeScore:t.homeScore,awayScore:t.awayScore}});k$1(`Result recorded: ${e.athRecordFixtureResult.homeScore??0}-${e.athRecordFixtureResult.awayScore??0}`),i(t,e.athRecordFixtureResult);}catch(e){h(e);}});}function st(d){d.command("standings").description("AtheleteBridge standings").command("list").description("List standings for a competition").requiredOption("--competition <s>","Competition name").option("-f, --format <format>","Output format").action(async o=>{try{let t=await b$1(Y,{competition:o.competition});i(o,t.athStandings.items,{headers:["Rank","Team","P","W","D","L","Pts"],rows:t.athStandings.items.map(e=>[e.rank!==void 0&&e.rank!==null?String(e.rank):"-",r(e.teamId,12),String(e.played),String(e.won),String(e.drawn),String(e.lost),String(e.points)])});}catch(t){h(t);}});}function mt(d$1){d$1.command("health").description("AtheleteBridge service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let o=await d(Q);k$1(o.athHealth),i(r,{health:o.athHealth});}catch(o){h(o);}});}var pt={id:"atheletebridge",version:"1.0.0",displayName:"AtheleteBridge",dependsOn:["auth","workspaces"],register(d,r){a(r);let o=d.command("atheletebridge").description("AtheleteBridge sports team & athlete management");tt(o),et(o),ot(o),rt(o),it(o),at(o),nt(o),st(o),mt(o);}},Vt=pt;export{Vt as default};
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},b=class extends m{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},g=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var h=null;function T(o){h=o;}function C(){if(!h)throw new g("vibecontrols module helpers used before setHelpersContext was called");return h}function xt(){let o=C();if(!o.auth.isAuthenticated())throw new b("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,r){return xt(),C().gql.workspace.request(o,r)}async function w(o,r){return C().gql.workspaceAuthOnly.request(o,r)}function i(o){let r=o instanceof Error?o.message:String(o);throw new m(r)}function s(o,r,t){C().output.formatAndOutput(o,r,t);}function u(o){C().output.printSuccess(o);}function E(o){return C().output.formatDate(o)}function d(o,r){return C().output.truncate(o,r)}var O=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var f=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},E=class extends f{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},C=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var w=null;function O(o){w=o;}function I(){if(!w)throw new C("vibecontrols module helpers used before setHelpersContext was called");return w}function Tt(){let o=I();if(!o.auth.isAuthenticated())throw new E("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,r){return Tt(),I().gql.workspace.request(o,r)}async function k(o,r){return I().gql.workspaceAuthOnly.request(o,r)}function i(o){let r=o instanceof Error?o.message:String(o);throw new f(r)}function s(o,r,t){I().output.formatAndOutput(o,r,t);}function u(o){I().output.printSuccess(o);}function h(o){return I().output.formatDate(o)}function d(o,r){return I().output.truncate(o,r)}var L=`
2
2
  query BuiGetCourse($id: ID!) {
3
3
  buiCourse(id: $id) {
4
4
  id workspaceId slug title summary description level status language
@@ -6,7 +6,7 @@
6
6
  createdAt updatedAt cover { id }
7
7
  }
8
8
  }
9
- `,L=`
9
+ `,R=`
10
10
  query BuiListCourses(
11
11
  $status: BuiCourseStatus
12
12
  $level: BuiCourseLevel
@@ -19,213 +19,210 @@
19
19
  pageInfo { cursor hasMore }
20
20
  }
21
21
  }
22
- `,R=`
22
+ `,v=`
23
23
  mutation BuiCreateCourse($input: BuiCreateCourseInput!) {
24
24
  buiCreateCourse(input: $input) {
25
25
  id slug title level status language estimatedHours isPublic
26
26
  instructorId skillId tags createdAt
27
27
  }
28
28
  }
29
- `,v=`
29
+ `,D=`
30
30
  mutation BuiUpdateCourse($id: ID!, $input: BuiUpdateCourseInput!) {
31
31
  buiUpdateCourse(id: $id, input: $input) {
32
32
  id slug title level status language estimatedHours isPublic
33
33
  instructorId skillId tags updatedAt
34
34
  }
35
35
  }
36
- `,D=`
36
+ `,$=`
37
37
  mutation BuiPublishCourse($id: ID!) {
38
38
  buiPublishCourse(id: $id) {
39
39
  id slug title status publishedAt updatedAt
40
40
  }
41
41
  }
42
- `,$=`
42
+ `,P=`
43
43
  mutation BuiArchiveCourse($id: ID!) {
44
44
  buiArchiveCourse(id: $id)
45
45
  }
46
- `,P=`
46
+ `,N=`
47
47
  query BuiListModules($courseId: ID!) {
48
48
  buiListModules(courseId: $courseId) {
49
- id courseId title description position createdAt updatedAt workspaceId
49
+ items { id courseId title description position createdAt updatedAt workspaceId }
50
+ pageInfo { cursor hasMore }
50
51
  }
51
52
  }
52
- `,N=`
53
+ `,q=`
53
54
  mutation BuiCreateModule($input: BuiCreateModuleInput!) {
54
55
  buiCreateModule(input: $input) {
55
56
  id courseId title description position createdAt
56
57
  }
57
58
  }
58
- `,q=`
59
+ `,_=`
59
60
  query BuiListLessons($courseId: ID!, $moduleId: ID) {
60
61
  buiListLessons(courseId: $courseId, moduleId: $moduleId) {
61
- id courseId moduleId title type position durationMin isPreview
62
- createdAt updatedAt workspaceId
62
+ items {
63
+ id courseId moduleId title type position durationMin isPreview createdAt updatedAt
64
+ workspaceId
65
+ }
66
+ pageInfo { cursor hasMore }
63
67
  }
64
68
  }
65
- `,_=`
69
+ `,M=`
66
70
  mutation BuiCreateLesson($input: BuiCreateLessonInput!) {
67
71
  buiCreateLesson(input: $input) {
68
72
  id courseId moduleId title type position durationMin isPreview createdAt
69
73
  }
70
74
  }
71
- `,M=`
75
+ `,B=`
72
76
  query BuiListSkills($category: BuiSkillCategory) {
73
77
  buiListSkills(category: $category) {
74
- id name category description isActive createdAt updatedAt workspaceId
78
+ items { id name category description isActive createdAt updatedAt workspaceId }
79
+ pageInfo { cursor hasMore }
75
80
  }
76
81
  }
77
- `,B=`
82
+ `,U=`
78
83
  mutation BuiCreateSkill($input: BuiCreateSkillInput!) {
79
84
  buiCreateSkill(input: $input) {
80
85
  id name category description isActive createdAt
81
86
  }
82
87
  }
83
- `,U=`
88
+ `,G=`
84
89
  query BuiGetEnrollment($id: ID!) {
85
90
  buiEnrollment(id: $id) {
86
91
  id courseId learnerId cohortId status progressPct enrolledAt startedAt
87
92
  completedAt lastActiveAt expiresAt createdAt updatedAt workspaceId
88
93
  }
89
94
  }
90
- `,G=`
95
+ `,F=`
91
96
  query BuiListEnrollments(
92
97
  $courseId: ID
93
- $learnerId: ID
94
98
  $status: BuiEnrollmentStatus
95
99
  $pagination: PaginationInput
96
100
  ) {
97
- buiListEnrollments(
98
- courseId: $courseId
99
- learnerId: $learnerId
100
- status: $status
101
- pagination: $pagination
102
- ) {
103
- items {
104
- id courseId learnerId status progressPct enrolledAt completedAt
105
- }
101
+ buiListEnrollments(courseId: $courseId, status: $status, pagination: $pagination) {
102
+ items { id courseId learnerId status progressPct enrolledAt completedAt }
106
103
  pageInfo { cursor hasMore }
107
104
  }
108
105
  }
109
- `,F=`
106
+ `,H=`
110
107
  mutation BuiEnroll($input: BuiEnrollInput!) {
111
108
  buiEnroll(input: $input) {
112
109
  id courseId learnerId cohortId status progressPct enrolledAt expiresAt
113
110
  }
114
111
  }
115
- `,H=`
112
+ `,W=`
116
113
  mutation BuiTransitionEnrollment($id: ID!, $status: BuiEnrollmentStatus!) {
117
114
  buiTransitionEnrollment(id: $id, status: $status) {
118
115
  id status progressPct startedAt completedAt updatedAt
119
116
  }
120
117
  }
121
- `,W=`
118
+ `,j=`
122
119
  mutation BuiRecordLessonProgress($input: BuiRecordLessonProgressInput!) {
123
120
  buiRecordLessonProgress(input: $input) {
124
121
  id enrollmentId lessonId status secondsSpent completedAt
125
122
  createdAt updatedAt
126
123
  }
127
124
  }
128
- `,j=`
125
+ `,V=`
129
126
  query BuiListCohorts($courseId: ID, $status: BuiCohortStatus) {
130
127
  buiListCohorts(courseId: $courseId, status: $status) {
131
- id courseId name status capacity facilitatorId startDate endDate
132
- createdAt updatedAt workspaceId
128
+ items {
129
+ id courseId name status capacity facilitatorId startDate endDate createdAt updatedAt
130
+ workspaceId
131
+ }
132
+ pageInfo { cursor hasMore }
133
133
  }
134
134
  }
135
- `,V=`
135
+ `,Q=`
136
136
  mutation BuiCreateCohort($input: BuiCreateCohortInput!) {
137
137
  buiCreateCohort(input: $input) {
138
138
  id courseId name status capacity facilitatorId startDate endDate createdAt
139
139
  }
140
140
  }
141
- `,Q=`
142
- query BuiListCertificates($courseId: ID, $learnerId: ID) {
143
- buiListCertificates(courseId: $courseId, learnerId: $learnerId) {
144
- id courseId learnerId enrollmentId serial status finalScore
145
- issuedAt expiresAt revokedAt createdAt updatedAt workspaceId
141
+ `,K=`
142
+ query BuiListCertificates($courseId: ID) {
143
+ buiListCertificates(courseId: $courseId) {
144
+ items {
145
+ id courseId learnerId enrollmentId serial status finalScore issuedAt expiresAt
146
+ revokedAt createdAt updatedAt workspaceId
147
+ }
148
+ pageInfo { cursor hasMore }
146
149
  }
147
150
  }
148
- `,K=`
151
+ `,z=`
149
152
  mutation BuiIssueCertificate($input: BuiIssueCertificateInput!) {
150
153
  buiIssueCertificate(input: $input) {
151
154
  id courseId learnerId enrollmentId serial status finalScore
152
155
  issuedAt expiresAt
153
156
  }
154
157
  }
155
- `,z=`
158
+ `,J=`
156
159
  mutation BuiRevokeCertificate($id: ID!) {
157
160
  buiRevokeCertificate(id: $id) {
158
161
  id serial status revokedAt updatedAt
159
162
  }
160
163
  }
161
- `,J=`
164
+ `,Y=`
162
165
  query BuiGetAssessment($id: ID!) {
163
166
  buiAssessment(id: $id) {
164
- id courseId title description type status passingScore maxAttempts
165
- timeLimitMin isGraded createdAt updatedAt workspaceId
166
- questions { id prompt type points position }
167
+ id courseId title description type status passingScore maxAttempts timeLimitMin isGraded
168
+ createdAt updatedAt workspaceId
169
+ questions { items { id prompt type points position } pageInfo { cursor hasMore } }
167
170
  }
168
171
  }
169
- `,Y=`
172
+ `,X=`
170
173
  query BuiListAssessments($courseId: ID!, $status: BuiAssessmentStatus) {
171
174
  buiListAssessments(courseId: $courseId, status: $status) {
172
- id courseId title type status passingScore maxAttempts timeLimitMin
173
- isGraded createdAt
175
+ items {
176
+ id courseId title type status passingScore maxAttempts timeLimitMin isGraded createdAt
177
+ }
178
+ pageInfo { cursor hasMore }
174
179
  }
175
180
  }
176
- `,X=`
181
+ `,Z=`
177
182
  mutation BuiCreateAssessment($input: BuiCreateAssessmentInput!) {
178
183
  buiCreateAssessment(input: $input) {
179
184
  id courseId title type status passingScore maxAttempts timeLimitMin
180
185
  isGraded createdAt
181
186
  }
182
187
  }
183
- `,Z=`
188
+ `,tt=`
184
189
  mutation BuiPublishAssessment($id: ID!) {
185
190
  buiPublishAssessment(id: $id) {
186
191
  id title type status updatedAt
187
192
  }
188
193
  }
189
- `,tt=`
194
+ `,et=`
190
195
  mutation BuiCreateQuestion($input: BuiCreateQuestionInput!) {
191
196
  buiCreateQuestion(input: $input) {
192
197
  id assessmentId prompt type points position explanation createdAt
193
198
  }
194
199
  }
195
- `,et=`
200
+ `,nt=`
196
201
  query BuiListSubmissions(
197
202
  $assessmentId: ID
198
- $learnerId: ID
199
203
  $status: BuiSubmissionStatus
200
204
  $pagination: PaginationInput
201
205
  ) {
202
- buiListSubmissions(
203
- assessmentId: $assessmentId
204
- learnerId: $learnerId
205
- status: $status
206
- pagination: $pagination
207
- ) {
208
- items {
209
- id assessmentId learnerId attempt status score passed submittedAt
210
- }
206
+ buiListSubmissions(assessmentId: $assessmentId, status: $status, pagination: $pagination) {
207
+ items { id assessmentId learnerId attempt status score passed submittedAt }
211
208
  pageInfo { cursor hasMore }
212
209
  }
213
210
  }
214
- `,nt=`
211
+ `,rt=`
215
212
  mutation BuiSubmitAssessment($input: BuiSubmitAssessmentInput!) {
216
213
  buiSubmitAssessment(input: $input) {
217
214
  id assessmentId learnerId attempt status score passed submittedAt createdAt
218
215
  }
219
216
  }
220
- `,rt=`
217
+ `,ot=`
221
218
  mutation BuiGradeSubmission($id: ID!, $input: BuiGradeSubmissionInput!) {
222
219
  buiGradeSubmission(id: $id, input: $input) {
223
220
  id assessmentId learnerId attempt status score passed feedback
224
221
  gradedAt gradedById updatedAt
225
222
  }
226
223
  }
227
- `,ot=`
224
+ `,it=`
228
225
  query BuiHealth {
229
226
  buiHealth
230
227
  }
231
- `;function y(o,r){try{return JSON.parse(r)}catch{throw new m(`--${o} must be valid JSON`)}}function l(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new m(`Expected an integer but got "${o}"`);return r}function I(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new m(`Expected a number but got "${o}"`);return r}function S(o){return o==="true"}function k(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function it(o){let r=o.command("courses").description("Buildmyiq courses");r.command("list").description("List courses").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(L,{status:t.status?t.status.toUpperCase():void 0,level:t.level?t.level.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:n.buiListCourses.items.map(c=>[d(c.id,12),c.title,c.level,c.status,c.language??"-",c.estimatedHours!=null?String(c.estimatedHours):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(O,{id:t});if(!n.buiCourse)throw new m(`Course ${t} not found`);s(e,n.buiCourse);}catch(n){i(n);}}),r.command("create").description("Create a course").requiredOption("--slug <slug>","URL slug").requiredOption("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public","Make the course public").option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={slug:t.slug,title:t.title,level:(t.level??"BEGINNER").toUpperCase()};t.summary&&(e.summary=t.summary),t.description&&(e.description=t.description),t.language&&(e.language=t.language),t.estimatedHours!==void 0&&(e.estimatedHours=t.estimatedHours),t.public&&(e.isPublic=!0),t.instructor&&(e.instructorId=t.instructor),t.skill&&(e.skillId=t.skill),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=k(t.tags));let n=await a(R,{input:e});u(`Course created: ${n.buiCreateCourse.title}`),s(t,n.buiCreateCourse);}catch(e){i(e);}}),r.command("update").description("Update a course").argument("<id>","Course ID").option("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public <bool>","true|false",S).option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").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.summary!==void 0&&(n.summary=e.summary),e.description!==void 0&&(n.description=e.description),e.level&&(n.level=e.level.toUpperCase()),e.language&&(n.language=e.language),e.estimatedHours!==void 0&&(n.estimatedHours=e.estimatedHours),e.public!==void 0&&(n.isPublic=e.public),e.instructor&&(n.instructorId=e.instructor),e.skill&&(n.skillId=e.skill),e.coverFile&&(n.coverFileId=e.coverFile),e.tags&&(n.tags=k(e.tags)),!Object.keys(n).length)throw new m("No updates specified");let c=await a(v,{id:t,input:n});u("Course updated"),s(e,c.buiUpdateCourse);}catch(n){i(n);}}),r.command("publish").description("Publish a course through its authoring lifecycle").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});u(`Course published: ${n.buiPublishCourse.title}`),s(e,n.buiPublishCourse);}catch(n){i(n);}}),r.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});u(n.buiArchiveCourse?"Course archived":"Course not archived"),s(e,{archived:n.buiArchiveCourse});}catch(n){i(n);}});}function st(o){let r=o.command("modules").description("Buildmyiq course modules");r.command("list").description("List modules for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{courseId:t.course});s(t,e.buiListModules,{headers:["ID","Title","Position","Description"],rows:e.buiListModules.map(n=>[d(n.id,12),n.title,String(n.position),d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a module").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Module title").option("--description <s>","Description").option("--position <n>","Ordering position",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let n=await a(N,{input:e});u(`Module created: ${n.buiCreateModule.title}`),s(t,n.buiCreateModule);}catch(e){i(e);}});}function at(o){let r=o.command("lessons").description("Buildmyiq course lessons");r.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("--module <id>","Filter by module ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{courseId:t.course,moduleId:t.module});s(t,e.buiListLessons,{headers:["ID","Title","Type","Position","Duration","Preview"],rows:e.buiListLessons.map(n=>[d(n.id,12),n.title,n.type,String(n.position),n.durationMin!=null?String(n.durationMin):"-",n.isPreview?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Lesson title").option("--module <id>","Module ID").option("--type <t>","ARTICLE|VIDEO|QUIZ|ASSIGNMENT|LIVE_SESSION|INTERACTIVE","ARTICLE").option("--content <s>","Lesson content").option("--duration-min <n>","Duration (minutes)",l).option("--position <n>","Ordering position",l).option("--preview","Mark as a preview lesson").option("--media-file <id>","Media File ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"ARTICLE").toUpperCase()};t.module&&(e.moduleId=t.module),t.content&&(e.content=t.content),t.durationMin!==void 0&&(e.durationMin=t.durationMin),t.position!==void 0&&(e.position=t.position),t.preview&&(e.isPreview=!0),t.mediaFile&&(e.mediaFileId=t.mediaFile);let n=await a(_,{input:e});u(`Lesson created: ${n.buiCreateLesson.title}`),s(t,n.buiCreateLesson);}catch(e){i(e);}});}function ut(o){let r=o.command("skills").description("Buildmyiq skills taxonomy");r.command("list").description("List skills").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{category:t.category?t.category.toUpperCase():void 0});s(t,e.buiListSkills,{headers:["ID","Name","Category","Active","Description"],rows:e.buiListSkills.map(n=>[d(n.id,12),n.name,n.category,n.isActive?"yes":"no",d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a skill").requiredOption("--name <name>","Skill name").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE","TECHNICAL").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"TECHNICAL").toUpperCase()};t.description&&(e.description=t.description);let n=await a(B,{input:e});u(`Skill created: ${n.buiCreateSkill.name}`),s(t,n.buiCreateSkill);}catch(e){i(e);}});}function ct(o){let r=o.command("enrollments").description("Buildmyiq enrollments & lesson progress");r.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(G,{courseId:t.course,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %"],rows:n.buiListEnrollments.items.map(c=>[d(c.id,12),d(c.courseId,12),d(c.learnerId,12),c.status,String(c.progressPct)])});}catch(e){i(e);}}),r.command("get").description("Get an enrollment by id").argument("<id>","Enrollment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t});if(!n.buiEnrollment)throw new m(`Enrollment ${t} not found`);s(e,n.buiEnrollment);}catch(n){i(n);}}),r.command("enroll").description("Enroll a learner in a course").requiredOption("--course <id>","Course ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--cohort <id>","Cohort ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course};t.learner&&(e.learnerId=t.learner),t.cohort&&(e.cohortId=t.cohort),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(F,{input:e});u(`Enrolled: ${n.buiEnroll.id}`),s(t,n.buiEnroll);}catch(e){i(e);}}),r.command("transition").description("Advance an enrollment through its lifecycle").argument("<id>","Enrollment ID").requiredOption("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(H,{id:t,status:e.status.toUpperCase()});u(`Enrollment status set to ${n.buiTransitionEnrollment.status}`),s(e,n.buiTransitionEnrollment);}catch(n){i(n);}}),r.command("record-progress").description("Record lesson progress for an enrollment").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--lesson <id>","Lesson ID").option("--status <s>","NOT_STARTED|IN_PROGRESS|COMPLETED","IN_PROGRESS").option("--seconds-spent <n>","Seconds spent",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={enrollmentId:t.enrollment,lessonId:t.lesson,status:(t.status??"IN_PROGRESS").toUpperCase()};t.secondsSpent!==void 0&&(e.secondsSpent=t.secondsSpent);let n=await a(W,{input:e});u(`Progress recorded: ${n.buiRecordLessonProgress.status}`),s(t,n.buiRecordLessonProgress);}catch(e){i(e);}});}function dt(o){let r=o.command("cohorts").description("Buildmyiq cohorts");r.command("list").description("List cohorts").option("--course <id>","Filter by course ID").option("--status <s>","SCHEDULED|ENROLLING|ACTIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListCohorts,{headers:["ID","Name","Status","Capacity","Start","End"],rows:e.buiListCohorts.map(n=>[d(n.id,12),n.name,n.status,String(n.capacity),E(n.startDate),E(n.endDate)])});}catch(e){i(e);}}),r.command("create").description("Create a cohort").requiredOption("--course <id>","Course ID").requiredOption("--name <name>","Cohort name").option("--capacity <n>","Capacity",l).option("--facilitator <id>","Facilitator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,name:t.name};t.capacity!==void 0&&(e.capacity=t.capacity),t.facilitator&&(e.facilitatorId=t.facilitator),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(V,{input:e});u(`Cohort created: ${n.buiCreateCohort.name}`),s(t,n.buiCreateCohort);}catch(e){i(e);}});}function pt(o){let r=o.command("certificates").description("Buildmyiq certificates");r.command("list").description("List certificates").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{courseId:t.course,learnerId:t.learner});s(t,e.buiListCertificates,{headers:["ID","Serial","Learner","Status","Score","Issued"],rows:e.buiListCertificates.map(n=>[d(n.id,12),n.serial,d(n.learnerId,12),n.status,n.finalScore!=null?String(n.finalScore):"-",E(n.issuedAt)])});}catch(e){i(e);}}),r.command("issue").description("Issue a certificate").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--serial <s>","Certificate serial").option("--enrollment <id>","Enrollment ID").option("--final-score <n>","Final score",I).option("--file <id>","Rendered certificate PDF File ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,learnerId:t.learner,serial:t.serial};t.enrollment&&(e.enrollmentId=t.enrollment),t.finalScore!==void 0&&(e.finalScore=t.finalScore),t.file&&(e.fileId=t.file),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(K,{input:e});u(`Certificate issued: ${n.buiIssueCertificate.serial}`),s(t,n.buiIssueCertificate);}catch(e){i(e);}}),r.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});u(`Certificate revoked: ${n.buiRevokeCertificate.serial}`),s(e,n.buiRevokeCertificate);}catch(n){i(n);}});}function lt(o){let r=o.command("assessments").description("Buildmyiq assessments & questions");r.command("list").description("List assessments for a course").requiredOption("--course <id>","Course ID").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListAssessments,{headers:["ID","Title","Type","Status","Pass","Attempts","Graded"],rows:e.buiListAssessments.map(n=>[d(n.id,12),n.title,n.type,n.status,n.passingScore!=null?String(n.passingScore):"-",n.maxAttempts!=null?String(n.maxAttempts):"-",n.isGraded?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get an assessment by id").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});if(!n.buiAssessment)throw new m(`Assessment ${t} not found`);s(e,n.buiAssessment);}catch(n){i(n);}}),r.command("create").description("Create an assessment").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Assessment title").option("--type <t>","QUIZ|EXAM|ASSIGNMENT|SURVEY|PRACTICAL","QUIZ").option("--description <s>","Description").option("--passing-score <n>","Passing score",I).option("--max-attempts <n>","Max attempts",l).option("--time-limit-min <n>","Time limit (minutes)",l).option("--graded","Mark assessment as graded").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"QUIZ").toUpperCase()};t.description&&(e.description=t.description),t.passingScore!==void 0&&(e.passingScore=t.passingScore),t.maxAttempts!==void 0&&(e.maxAttempts=t.maxAttempts),t.timeLimitMin!==void 0&&(e.timeLimitMin=t.timeLimitMin),t.graded&&(e.isGraded=!0);let n=await a(X,{input:e});u(`Assessment created: ${n.buiCreateAssessment.title}`),s(t,n.buiCreateAssessment);}catch(e){i(e);}}),r.command("publish").description("Publish an assessment").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Assessment published: ${n.buiPublishAssessment.title}`),s(e,n.buiPublishAssessment);}catch(n){i(n);}}),r.command("add-question").description("Add a question to an assessment").requiredOption("--assessment <id>","Assessment ID").requiredOption("--prompt <p>","Question prompt").option("--type <t>","SINGLE_CHOICE|MULTIPLE_CHOICE|TRUE_FALSE|SHORT_ANSWER|ESSAY|CODE","SINGLE_CHOICE").option("--points <n>","Points",I).option("--position <n>","Ordering position",l).option("--explanation <s>","Explanation").option("--options <json>","Options JSON").option("--answer-key <json>","Answer key JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment,prompt:t.prompt,type:(t.type??"SINGLE_CHOICE").toUpperCase()};t.points!==void 0&&(e.points=t.points),t.position!==void 0&&(e.position=t.position),t.explanation&&(e.explanation=t.explanation),t.options&&(e.options=y("options",t.options)),t.answerKey&&(e.answerKey=y("answer-key",t.answerKey));let n=await a(tt,{input:e});u(`Question added: ${d(n.buiCreateQuestion.prompt,40)}`),s(t,n.buiCreateQuestion);}catch(e){i(e);}});}function mt(o){let r=o.command("submissions").description("Buildmyiq assessment submissions");r.command("list").description("List submissions").option("--assessment <id>","Filter by assessment ID").option("--learner <id>","Filter by learner ID").option("--status <s>","IN_PROGRESS|SUBMITTED|GRADING|GRADED|RETURNED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(et,{assessmentId:t.assessment,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListSubmissions.items,{headers:["ID","Assessment","Learner","Attempt","Status","Score","Passed"],rows:n.buiListSubmissions.items.map(c=>[d(c.id,12),d(c.assessmentId,12),d(c.learnerId,12),String(c.attempt),c.status,c.score!=null?String(c.score):"-",c.passed==null?"-":c.passed?"yes":"no"])});}catch(e){i(e);}}),r.command("submit").description("Submit an assessment attempt").requiredOption("--assessment <id>","Assessment ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--enrollment <id>","Enrollment ID").option("--attempt <n>","Attempt number",l).option("--answers <json>","Answers JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment};t.learner&&(e.learnerId=t.learner),t.enrollment&&(e.enrollmentId=t.enrollment),t.attempt!==void 0&&(e.attempt=t.attempt),t.answers&&(e.answers=y("answers",t.answers));let n=await a(nt,{input:e});u(`Submission created: ${n.buiSubmitAssessment.id}`),s(t,n.buiSubmitAssessment);}catch(e){i(e);}}),r.command("grade").description("Grade a submission").argument("<id>","Submission ID").requiredOption("--score <n>","Score",I).option("--passed <bool>","true|false",S).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={score:e.score};e.passed!==void 0&&(n.passed=e.passed),e.feedback&&(n.feedback=e.feedback);let c=await a(rt,{id:t,input:n});u(`Submission graded: ${c.buiGradeSubmission.status}`),s(e,c.buiGradeSubmission);}catch(n){i(n);}});}function ft(o){o.command("health").description("Buildmyiq subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await w(ot);u(t.buiHealth),s(r,{health:t.buiHealth});}catch(t){i(t);}});}var Tt={id:"buildmyiq",version:"1.0.0",displayName:"Buildmyiq",dependsOn:["auth","workspaces"],register(o,r){T(r);let t=o.command("buildmyiq").description("Buildmyiq education, learning & development platform");it(t),st(t),at(t),ut(t),ct(t),dt(t),pt(t),lt(t),mt(t),ft(t);}},kn=Tt;module.exports=kn;
228
+ `;function y(o,r){try{return JSON.parse(r)}catch{throw new f(`--${o} must be valid JSON`)}}function l(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new f(`Expected an integer but got "${o}"`);return r}function b(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new f(`Expected a number but got "${o}"`);return r}function S(o){return o==="true"}function A(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function st(o){let r=o.command("courses").description("Buildmyiq courses");r.command("list").description("List courses").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(R,{status:t.status?t.status.toUpperCase():void 0,level:t.level?t.level.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:n.buiListCourses.items.map(c=>[d(c.id,12),c.title,c.level,c.status,c.language??"-",c.estimatedHours!=null?String(c.estimatedHours):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});if(!n.buiCourse)throw new f(`Course ${t} not found`);s(e,n.buiCourse);}catch(n){i(n);}}),r.command("create").description("Create a course").requiredOption("--slug <slug>","URL slug").requiredOption("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public","Make the course public").option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={slug:t.slug,title:t.title,level:(t.level??"BEGINNER").toUpperCase()};t.summary&&(e.summary=t.summary),t.description&&(e.description=t.description),t.language&&(e.language=t.language),t.estimatedHours!==void 0&&(e.estimatedHours=t.estimatedHours),t.public&&(e.isPublic=!0),t.instructor&&(e.instructorId=t.instructor),t.skill&&(e.skillId=t.skill),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=A(t.tags));let n=await a(v,{input:e});u(`Course created: ${n.buiCreateCourse.title}`),s(t,n.buiCreateCourse);}catch(e){i(e);}}),r.command("update").description("Update a course").argument("<id>","Course ID").option("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public <bool>","true|false",S).option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").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.summary!==void 0&&(n.summary=e.summary),e.description!==void 0&&(n.description=e.description),e.level&&(n.level=e.level.toUpperCase()),e.language&&(n.language=e.language),e.estimatedHours!==void 0&&(n.estimatedHours=e.estimatedHours),e.public!==void 0&&(n.isPublic=e.public),e.instructor&&(n.instructorId=e.instructor),e.skill&&(n.skillId=e.skill),e.coverFile&&(n.coverFileId=e.coverFile),e.tags&&(n.tags=A(e.tags)),!Object.keys(n).length)throw new f("No updates specified");let c=await a(D,{id:t,input:n});u("Course updated"),s(e,c.buiUpdateCourse);}catch(n){i(n);}}),r.command("publish").description("Publish a course through its authoring lifecycle").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});u(`Course published: ${n.buiPublishCourse.title}`),s(e,n.buiPublishCourse);}catch(n){i(n);}}),r.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});u(n.buiArchiveCourse?"Course archived":"Course not archived"),s(e,{archived:n.buiArchiveCourse});}catch(n){i(n);}});}function at(o){let r=o.command("modules").description("Buildmyiq course modules");r.command("list").description("List modules for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(N,{courseId:t.course});s(t,e.buiListModules.items,{headers:["ID","Title","Position","Description"],rows:e.buiListModules.items.map(n=>[d(n.id,12),n.title,String(n.position),d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a module").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Module title").option("--description <s>","Description").option("--position <n>","Ordering position",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let n=await a(q,{input:e});u(`Module created: ${n.buiCreateModule.title}`),s(t,n.buiCreateModule);}catch(e){i(e);}});}function ut(o){let r=o.command("lessons").description("Buildmyiq course lessons");r.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("--module <id>","Filter by module ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{courseId:t.course,moduleId:t.module});s(t,e.buiListLessons.items,{headers:["ID","Title","Type","Position","Duration","Preview"],rows:e.buiListLessons.items.map(n=>[d(n.id,12),n.title,n.type,String(n.position),n.durationMin!=null?String(n.durationMin):"-",n.isPreview?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Lesson title").option("--module <id>","Module ID").option("--type <t>","ARTICLE|VIDEO|QUIZ|ASSIGNMENT|LIVE_SESSION|INTERACTIVE","ARTICLE").option("--content <s>","Lesson content").option("--duration-min <n>","Duration (minutes)",l).option("--position <n>","Ordering position",l).option("--preview","Mark as a preview lesson").option("--media-file <id>","Media File ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"ARTICLE").toUpperCase()};t.module&&(e.moduleId=t.module),t.content&&(e.content=t.content),t.durationMin!==void 0&&(e.durationMin=t.durationMin),t.position!==void 0&&(e.position=t.position),t.preview&&(e.isPreview=!0),t.mediaFile&&(e.mediaFileId=t.mediaFile);let n=await a(M,{input:e});u(`Lesson created: ${n.buiCreateLesson.title}`),s(t,n.buiCreateLesson);}catch(e){i(e);}});}function ct(o){let r=o.command("skills").description("Buildmyiq skills taxonomy");r.command("list").description("List skills").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{category:t.category?t.category.toUpperCase():void 0});s(t,e.buiListSkills.items,{headers:["ID","Name","Category","Active","Description"],rows:e.buiListSkills.items.map(n=>[d(n.id,12),n.name,n.category,n.isActive?"yes":"no",d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a skill").requiredOption("--name <name>","Skill name").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE","TECHNICAL").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"TECHNICAL").toUpperCase()};t.description&&(e.description=t.description);let n=await a(U,{input:e});u(`Skill created: ${n.buiCreateSkill.name}`),s(t,n.buiCreateSkill);}catch(e){i(e);}});}function dt(o){let r=o.command("enrollments").description("Buildmyiq enrollments & lesson progress");r.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Only this learner's rows (filtered client-side)").option("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(F,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0}),c=t.learner?n.buiListEnrollments.items.filter(m=>m.learnerId===t.learner):n.buiListEnrollments.items;s(t,c,{headers:["ID","Course","Learner","Status","Progress %"],rows:c.map(m=>[d(m.id,12),d(m.courseId,12),d(m.learnerId,12),m.status,String(m.progressPct)])});}catch(e){i(e);}}),r.command("get").description("Get an enrollment by id").argument("<id>","Enrollment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t});if(!n.buiEnrollment)throw new f(`Enrollment ${t} not found`);s(e,n.buiEnrollment);}catch(n){i(n);}}),r.command("enroll").description("Enroll a learner in a course").requiredOption("--course <id>","Course ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--cohort <id>","Cohort ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course};t.learner&&(e.learnerId=t.learner),t.cohort&&(e.cohortId=t.cohort),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(H,{input:e});u(`Enrolled: ${n.buiEnroll.id}`),s(t,n.buiEnroll);}catch(e){i(e);}}),r.command("transition").description("Advance an enrollment through its lifecycle").argument("<id>","Enrollment ID").requiredOption("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});u(`Enrollment status set to ${n.buiTransitionEnrollment.status}`),s(e,n.buiTransitionEnrollment);}catch(n){i(n);}}),r.command("record-progress").description("Record lesson progress for an enrollment").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--lesson <id>","Lesson ID").option("--status <s>","NOT_STARTED|IN_PROGRESS|COMPLETED","IN_PROGRESS").option("--seconds-spent <n>","Seconds spent",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={enrollmentId:t.enrollment,lessonId:t.lesson,status:(t.status??"IN_PROGRESS").toUpperCase()};t.secondsSpent!==void 0&&(e.secondsSpent=t.secondsSpent);let n=await a(j,{input:e});u(`Progress recorded: ${n.buiRecordLessonProgress.status}`),s(t,n.buiRecordLessonProgress);}catch(e){i(e);}});}function pt(o){let r=o.command("cohorts").description("Buildmyiq cohorts");r.command("list").description("List cohorts").option("--course <id>","Filter by course ID").option("--status <s>","SCHEDULED|ENROLLING|ACTIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(V,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListCohorts.items,{headers:["ID","Name","Status","Capacity","Start","End"],rows:e.buiListCohorts.items.map(n=>[d(n.id,12),n.name,n.status,String(n.capacity),h(n.startDate),h(n.endDate)])});}catch(e){i(e);}}),r.command("create").description("Create a cohort").requiredOption("--course <id>","Course ID").requiredOption("--name <name>","Cohort name").option("--capacity <n>","Capacity",l).option("--facilitator <id>","Facilitator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,name:t.name};t.capacity!==void 0&&(e.capacity=t.capacity),t.facilitator&&(e.facilitatorId=t.facilitator),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(Q,{input:e});u(`Cohort created: ${n.buiCreateCohort.name}`),s(t,n.buiCreateCohort);}catch(e){i(e);}});}function lt(o){let r=o.command("certificates").description("Buildmyiq certificates");r.command("list").description("List certificates").option("--course <id>","Filter by course ID").option("--learner <id>","Only this learner's rows (filtered client-side)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{courseId:t.course}),n=t.learner?e.buiListCertificates.items.filter(c=>c.learnerId===t.learner):e.buiListCertificates.items;s(t,n,{headers:["ID","Serial","Learner","Status","Score","Issued"],rows:n.map(c=>[d(c.id,12),c.serial,d(c.learnerId,12),c.status,c.finalScore!=null?String(c.finalScore):"-",h(c.issuedAt)])});}catch(e){i(e);}}),r.command("issue").description("Issue a certificate").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--serial <s>","Certificate serial").option("--enrollment <id>","Enrollment ID").option("--final-score <n>","Final score",b).option("--file <id>","Rendered certificate PDF File ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,learnerId:t.learner,serial:t.serial};t.enrollment&&(e.enrollmentId=t.enrollment),t.finalScore!==void 0&&(e.finalScore=t.finalScore),t.file&&(e.fileId=t.file),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(z,{input:e});u(`Certificate issued: ${n.buiIssueCertificate.serial}`),s(t,n.buiIssueCertificate);}catch(e){i(e);}}),r.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});u(`Certificate revoked: ${n.buiRevokeCertificate.serial}`),s(e,n.buiRevokeCertificate);}catch(n){i(n);}});}function mt(o){let r=o.command("assessments").description("Buildmyiq assessments & questions");r.command("list").description("List assessments for a course").requiredOption("--course <id>","Course ID").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListAssessments.items,{headers:["ID","Title","Type","Status","Pass","Attempts","Graded"],rows:e.buiListAssessments.items.map(n=>[d(n.id,12),n.title,n.type,n.status,n.passingScore!=null?String(n.passingScore):"-",n.maxAttempts!=null?String(n.maxAttempts):"-",n.isGraded?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get an assessment by id").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});if(!n.buiAssessment)throw new f(`Assessment ${t} not found`);s(e,n.buiAssessment);}catch(n){i(n);}}),r.command("create").description("Create an assessment").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Assessment title").option("--type <t>","QUIZ|EXAM|ASSIGNMENT|SURVEY|PRACTICAL","QUIZ").option("--description <s>","Description").option("--passing-score <n>","Passing score",b).option("--max-attempts <n>","Max attempts",l).option("--time-limit-min <n>","Time limit (minutes)",l).option("--graded","Mark assessment as graded").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"QUIZ").toUpperCase()};t.description&&(e.description=t.description),t.passingScore!==void 0&&(e.passingScore=t.passingScore),t.maxAttempts!==void 0&&(e.maxAttempts=t.maxAttempts),t.timeLimitMin!==void 0&&(e.timeLimitMin=t.timeLimitMin),t.graded&&(e.isGraded=!0);let n=await a(Z,{input:e});u(`Assessment created: ${n.buiCreateAssessment.title}`),s(t,n.buiCreateAssessment);}catch(e){i(e);}}),r.command("publish").description("Publish an assessment").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t});u(`Assessment published: ${n.buiPublishAssessment.title}`),s(e,n.buiPublishAssessment);}catch(n){i(n);}}),r.command("add-question").description("Add a question to an assessment").requiredOption("--assessment <id>","Assessment ID").requiredOption("--prompt <p>","Question prompt").option("--type <t>","SINGLE_CHOICE|MULTIPLE_CHOICE|TRUE_FALSE|SHORT_ANSWER|ESSAY|CODE","SINGLE_CHOICE").option("--points <n>","Points",b).option("--position <n>","Ordering position",l).option("--explanation <s>","Explanation").option("--options <json>","Options JSON").option("--answer-key <json>","Answer key JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment,prompt:t.prompt,type:(t.type??"SINGLE_CHOICE").toUpperCase()};t.points!==void 0&&(e.points=t.points),t.position!==void 0&&(e.position=t.position),t.explanation&&(e.explanation=t.explanation),t.options&&(e.options=y("options",t.options)),t.answerKey&&(e.answerKey=y("answer-key",t.answerKey));let n=await a(et,{input:e});u(`Question added: ${d(n.buiCreateQuestion.prompt,40)}`),s(t,n.buiCreateQuestion);}catch(e){i(e);}});}function ft(o){let r=o.command("submissions").description("Buildmyiq assessment submissions");r.command("list").description("List submissions").option("--assessment <id>","Filter by assessment ID").option("--learner <id>","Only this learner's rows (filtered client-side)").option("--status <s>","IN_PROGRESS|SUBMITTED|GRADING|GRADED|RETURNED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(nt,{assessmentId:t.assessment,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0}),c=t.learner?n.buiListSubmissions.items.filter(m=>m.learnerId===t.learner):n.buiListSubmissions.items;s(t,c,{headers:["ID","Assessment","Learner","Attempt","Status","Score","Passed"],rows:c.map(m=>[d(m.id,12),d(m.assessmentId,12),d(m.learnerId,12),String(m.attempt),m.status,m.score!=null?String(m.score):"-",m.passed==null?"-":m.passed?"yes":"no"])});}catch(e){i(e);}}),r.command("submit").description("Submit an assessment attempt").requiredOption("--assessment <id>","Assessment ID").option("--enrollment <id>","Enrollment ID").option("--attempt <n>","Attempt number",l).option("--answers <json>","Answers JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment};t.enrollment&&(e.enrollmentId=t.enrollment),t.attempt!==void 0&&(e.attempt=t.attempt),t.answers&&(e.answers=y("answers",t.answers));let n=await a(rt,{input:e});u(`Submission created: ${n.buiSubmitAssessment.id}`),s(t,n.buiSubmitAssessment);}catch(e){i(e);}}),r.command("grade").description("Grade a submission").argument("<id>","Submission ID").requiredOption("--score <n>","Score",b).option("--passed <bool>","true|false",S).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={score:e.score};e.passed!==void 0&&(n.passed=e.passed),e.feedback&&(n.feedback=e.feedback);let c=await a(ot,{id:t,input:n});u(`Submission graded: ${c.buiGradeSubmission.status}`),s(e,c.buiGradeSubmission);}catch(n){i(n);}});}function gt(o){o.command("health").description("Buildmyiq subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await k(it);u(t.buiHealth),s(r,{health:t.buiHealth});}catch(t){i(t);}});}var Ot={id:"buildmyiq",version:"1.0.0",displayName:"Buildmyiq",dependsOn:["auth","workspaces"],register(o,r){O(r);let t=o.command("buildmyiq").description("Buildmyiq education, learning & development platform");st(t),at(t),ut(t),ct(t),dt(t),pt(t),lt(t),mt(t),ft(t),gt(t);}},An=Ot;module.exports=An;