@burdenoff/cli-sdk 2026.627.1 → 2026.627.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/modules/artistrybase/index.cjs +334 -0
  2. package/dist/modules/artistrybase/index.d.cts +7 -0
  3. package/dist/modules/artistrybase/index.d.ts +7 -0
  4. package/dist/modules/artistrybase/index.js +334 -0
  5. package/dist/modules/assethandler/index.cjs +255 -0
  6. package/dist/modules/assethandler/index.d.cts +7 -0
  7. package/dist/modules/assethandler/index.d.ts +7 -0
  8. package/dist/modules/assethandler/index.js +255 -0
  9. package/dist/modules/brainyrich/index.cjs +340 -0
  10. package/dist/modules/brainyrich/index.d.cts +7 -0
  11. package/dist/modules/brainyrich/index.d.ts +7 -0
  12. package/dist/modules/brainyrich/index.js +340 -0
  13. package/dist/modules/buildmyiq/index.cjs +231 -0
  14. package/dist/modules/buildmyiq/index.d.cts +7 -0
  15. package/dist/modules/buildmyiq/index.d.ts +7 -0
  16. package/dist/modules/buildmyiq/index.js +231 -0
  17. package/dist/modules/collabkin/index.cjs +208 -0
  18. package/dist/modules/collabkin/index.d.cts +7 -0
  19. package/dist/modules/collabkin/index.d.ts +7 -0
  20. package/dist/modules/collabkin/index.js +208 -0
  21. package/dist/modules/comradecircle/index.cjs +281 -0
  22. package/dist/modules/comradecircle/index.d.cts +7 -0
  23. package/dist/modules/comradecircle/index.d.ts +7 -0
  24. package/dist/modules/comradecircle/index.js +281 -0
  25. package/dist/modules/eventfullymanaged/index.cjs +247 -0
  26. package/dist/modules/eventfullymanaged/index.d.cts +7 -0
  27. package/dist/modules/eventfullymanaged/index.d.ts +7 -0
  28. package/dist/modules/eventfullymanaged/index.js +247 -0
  29. package/dist/modules/headshotmarketing/index.cjs +1083 -0
  30. package/dist/modules/headshotmarketing/index.d.cts +7 -0
  31. package/dist/modules/headshotmarketing/index.d.ts +7 -0
  32. package/dist/modules/headshotmarketing/index.js +1083 -0
  33. package/dist/modules/movethewheels/index.cjs +565 -0
  34. package/dist/modules/movethewheels/index.d.cts +7 -0
  35. package/dist/modules/movethewheels/index.d.ts +7 -0
  36. package/dist/modules/movethewheels/index.js +565 -0
  37. package/dist/modules/planmagnet/index.cjs +795 -0
  38. package/dist/modules/planmagnet/index.d.cts +7 -0
  39. package/dist/modules/planmagnet/index.d.ts +7 -0
  40. package/dist/modules/planmagnet/index.js +795 -0
  41. package/dist/modules/proserviceworld/index.cjs +193 -0
  42. package/dist/modules/proserviceworld/index.d.cts +7 -0
  43. package/dist/modules/proserviceworld/index.d.ts +7 -0
  44. package/dist/modules/proserviceworld/index.js +193 -0
  45. package/dist/modules/timecampus/index.cjs +444 -0
  46. package/dist/modules/timecampus/index.d.cts +7 -0
  47. package/dist/modules/timecampus/index.d.ts +7 -0
  48. package/dist/modules/timecampus/index.js +444 -0
  49. package/package.json +1 -1
@@ -0,0 +1,231 @@
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. Run \`${o.productName} auth login\`.`)}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 L=`
2
+ query BuiGetCourse($id: ID!) {
3
+ buiCourse(id: $id) {
4
+ id workspaceId slug title summary description level status language
5
+ estimatedHours isPublic instructorId skillId tags publishedAt
6
+ createdAt updatedAt cover { id }
7
+ }
8
+ }
9
+ `,O=`
10
+ query BuiListCourses(
11
+ $status: BuiCourseStatus
12
+ $level: BuiCourseLevel
13
+ $pagination: PaginationInput
14
+ ) {
15
+ buiListCourses(status: $status, level: $level, pagination: $pagination) {
16
+ items {
17
+ id slug title level status language estimatedHours isPublic createdAt
18
+ }
19
+ pageInfo { cursor hasMore }
20
+ }
21
+ }
22
+ `,R=`
23
+ mutation BuiCreateCourse($input: BuiCreateCourseInput!) {
24
+ buiCreateCourse(input: $input) {
25
+ id slug title level status language estimatedHours isPublic
26
+ instructorId skillId tags createdAt
27
+ }
28
+ }
29
+ `,v=`
30
+ mutation BuiUpdateCourse($id: ID!, $input: BuiUpdateCourseInput!) {
31
+ buiUpdateCourse(id: $id, input: $input) {
32
+ id slug title level status language estimatedHours isPublic
33
+ instructorId skillId tags updatedAt
34
+ }
35
+ }
36
+ `,D=`
37
+ mutation BuiPublishCourse($id: ID!) {
38
+ buiPublishCourse(id: $id) {
39
+ id slug title status publishedAt updatedAt
40
+ }
41
+ }
42
+ `,$=`
43
+ mutation BuiArchiveCourse($id: ID!) {
44
+ buiArchiveCourse(id: $id)
45
+ }
46
+ `,P=`
47
+ query BuiListModules($courseId: ID!) {
48
+ buiListModules(courseId: $courseId) {
49
+ id courseId title description position createdAt updatedAt workspaceId
50
+ }
51
+ }
52
+ `,N=`
53
+ mutation BuiCreateModule($input: BuiCreateModuleInput!) {
54
+ buiCreateModule(input: $input) {
55
+ id courseId title description position createdAt
56
+ }
57
+ }
58
+ `,q=`
59
+ query BuiListLessons($courseId: ID!, $moduleId: ID) {
60
+ buiListLessons(courseId: $courseId, moduleId: $moduleId) {
61
+ id courseId moduleId title type position durationMin isPreview
62
+ createdAt updatedAt workspaceId
63
+ }
64
+ }
65
+ `,_=`
66
+ mutation BuiCreateLesson($input: BuiCreateLessonInput!) {
67
+ buiCreateLesson(input: $input) {
68
+ id courseId moduleId title type position durationMin isPreview createdAt
69
+ }
70
+ }
71
+ `,M=`
72
+ query BuiListSkills($category: BuiSkillCategory) {
73
+ buiListSkills(category: $category) {
74
+ id name category description isActive createdAt updatedAt workspaceId
75
+ }
76
+ }
77
+ `,B=`
78
+ mutation BuiCreateSkill($input: BuiCreateSkillInput!) {
79
+ buiCreateSkill(input: $input) {
80
+ id name category description isActive createdAt
81
+ }
82
+ }
83
+ `,U=`
84
+ query BuiGetEnrollment($id: ID!) {
85
+ buiEnrollment(id: $id) {
86
+ id courseId learnerId cohortId status progressPct enrolledAt startedAt
87
+ completedAt lastActiveAt expiresAt createdAt updatedAt workspaceId
88
+ }
89
+ }
90
+ `,G=`
91
+ query BuiListEnrollments(
92
+ $courseId: ID
93
+ $learnerId: ID
94
+ $status: BuiEnrollmentStatus
95
+ $pagination: PaginationInput
96
+ ) {
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
+ }
106
+ pageInfo { cursor hasMore }
107
+ }
108
+ }
109
+ `,F=`
110
+ mutation BuiEnroll($input: BuiEnrollInput!) {
111
+ buiEnroll(input: $input) {
112
+ id courseId learnerId cohortId status progressPct enrolledAt expiresAt
113
+ }
114
+ }
115
+ `,H=`
116
+ mutation BuiTransitionEnrollment($id: ID!, $status: BuiEnrollmentStatus!) {
117
+ buiTransitionEnrollment(id: $id, status: $status) {
118
+ id status progressPct startedAt completedAt updatedAt
119
+ }
120
+ }
121
+ `,W=`
122
+ mutation BuiRecordLessonProgress($input: BuiRecordLessonProgressInput!) {
123
+ buiRecordLessonProgress(input: $input) {
124
+ id enrollmentId lessonId status secondsSpent completedAt
125
+ createdAt updatedAt
126
+ }
127
+ }
128
+ `,j=`
129
+ query BuiListCohorts($courseId: ID, $status: BuiCohortStatus) {
130
+ buiListCohorts(courseId: $courseId, status: $status) {
131
+ id courseId name status capacity facilitatorId startDate endDate
132
+ createdAt updatedAt workspaceId
133
+ }
134
+ }
135
+ `,V=`
136
+ mutation BuiCreateCohort($input: BuiCreateCohortInput!) {
137
+ buiCreateCohort(input: $input) {
138
+ id courseId name status capacity facilitatorId startDate endDate createdAt
139
+ }
140
+ }
141
+ `,K=`
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
146
+ }
147
+ }
148
+ `,Q=`
149
+ mutation BuiIssueCertificate($input: BuiIssueCertificateInput!) {
150
+ buiIssueCertificate(input: $input) {
151
+ id courseId learnerId enrollmentId serial status finalScore
152
+ issuedAt expiresAt
153
+ }
154
+ }
155
+ `,z=`
156
+ mutation BuiRevokeCertificate($id: ID!) {
157
+ buiRevokeCertificate(id: $id) {
158
+ id serial status revokedAt updatedAt
159
+ }
160
+ }
161
+ `,J=`
162
+ query BuiGetAssessment($id: ID!) {
163
+ 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
+ }
168
+ }
169
+ `,Y=`
170
+ query BuiListAssessments($courseId: ID!, $status: BuiAssessmentStatus) {
171
+ buiListAssessments(courseId: $courseId, status: $status) {
172
+ id courseId title type status passingScore maxAttempts timeLimitMin
173
+ isGraded createdAt
174
+ }
175
+ }
176
+ `,X=`
177
+ mutation BuiCreateAssessment($input: BuiCreateAssessmentInput!) {
178
+ buiCreateAssessment(input: $input) {
179
+ id courseId title type status passingScore maxAttempts timeLimitMin
180
+ isGraded createdAt
181
+ }
182
+ }
183
+ `,Z=`
184
+ mutation BuiPublishAssessment($id: ID!) {
185
+ buiPublishAssessment(id: $id) {
186
+ id title type status updatedAt
187
+ }
188
+ }
189
+ `,tt=`
190
+ mutation BuiCreateQuestion($input: BuiCreateQuestionInput!) {
191
+ buiCreateQuestion(input: $input) {
192
+ id assessmentId prompt type points position explanation createdAt
193
+ }
194
+ }
195
+ `,et=`
196
+ query BuiListSubmissions(
197
+ $assessmentId: ID
198
+ $learnerId: ID
199
+ $status: BuiSubmissionStatus
200
+ $pagination: PaginationInput
201
+ ) {
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
+ }
211
+ pageInfo { cursor hasMore }
212
+ }
213
+ }
214
+ `,nt=`
215
+ mutation BuiSubmitAssessment($input: BuiSubmitAssessmentInput!) {
216
+ buiSubmitAssessment(input: $input) {
217
+ id assessmentId learnerId attempt status score passed submittedAt createdAt
218
+ }
219
+ }
220
+ `,rt=`
221
+ mutation BuiGradeSubmission($id: ID!, $input: BuiGradeSubmissionInput!) {
222
+ buiGradeSubmission(id: $id, input: $input) {
223
+ id assessmentId learnerId attempt status score passed feedback
224
+ gradedAt gradedById updatedAt
225
+ }
226
+ }
227
+ `,ot=`
228
+ query BuiHealth {
229
+ buiHealth
230
+ }
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 A(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(O,{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 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=A(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=A(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(K,{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(Q,{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);}},An=Tt;module.exports=An;
@@ -0,0 +1,7 @@
1
+ import { C as CliModule } from '../../module-DxCuik6L.cjs';
2
+ import 'commander';
3
+ import 'graphql-request';
4
+
5
+ declare const buildmyiqModule: CliModule;
6
+
7
+ export { buildmyiqModule as default };
@@ -0,0 +1,7 @@
1
+ import { C as CliModule } from '../../module-DxCuik6L.js';
2
+ import 'commander';
3
+ import 'graphql-request';
4
+
5
+ declare const buildmyiqModule: CliModule;
6
+
7
+ export { buildmyiqModule as default };
@@ -0,0 +1,231 @@
1
+ import {a,b,h as h$1,p,g,i,o as o$1,d}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var L=`
2
+ query BuiGetCourse($id: ID!) {
3
+ buiCourse(id: $id) {
4
+ id workspaceId slug title summary description level status language
5
+ estimatedHours isPublic instructorId skillId tags publishedAt
6
+ createdAt updatedAt cover { id }
7
+ }
8
+ }
9
+ `,R=`
10
+ query BuiListCourses(
11
+ $status: BuiCourseStatus
12
+ $level: BuiCourseLevel
13
+ $pagination: PaginationInput
14
+ ) {
15
+ buiListCourses(status: $status, level: $level, pagination: $pagination) {
16
+ items {
17
+ id slug title level status language estimatedHours isPublic createdAt
18
+ }
19
+ pageInfo { cursor hasMore }
20
+ }
21
+ }
22
+ `,O=`
23
+ mutation BuiCreateCourse($input: BuiCreateCourseInput!) {
24
+ buiCreateCourse(input: $input) {
25
+ id slug title level status language estimatedHours isPublic
26
+ instructorId skillId tags createdAt
27
+ }
28
+ }
29
+ `,h=`
30
+ mutation BuiUpdateCourse($id: ID!, $input: BuiUpdateCourseInput!) {
31
+ buiUpdateCourse(id: $id, input: $input) {
32
+ id slug title level status language estimatedHours isPublic
33
+ instructorId skillId tags updatedAt
34
+ }
35
+ }
36
+ `,w=`
37
+ mutation BuiPublishCourse($id: ID!) {
38
+ buiPublishCourse(id: $id) {
39
+ id slug title status publishedAt updatedAt
40
+ }
41
+ }
42
+ `,D=`
43
+ mutation BuiArchiveCourse($id: ID!) {
44
+ buiArchiveCourse(id: $id)
45
+ }
46
+ `,T=`
47
+ query BuiListModules($courseId: ID!) {
48
+ buiListModules(courseId: $courseId) {
49
+ id courseId title description position createdAt updatedAt workspaceId
50
+ }
51
+ }
52
+ `,k=`
53
+ mutation BuiCreateModule($input: BuiCreateModuleInput!) {
54
+ buiCreateModule(input: $input) {
55
+ id courseId title description position createdAt
56
+ }
57
+ }
58
+ `,$=`
59
+ query BuiListLessons($courseId: ID!, $moduleId: ID) {
60
+ buiListLessons(courseId: $courseId, moduleId: $moduleId) {
61
+ id courseId moduleId title type position durationMin isPreview
62
+ createdAt updatedAt workspaceId
63
+ }
64
+ }
65
+ `,N=`
66
+ mutation BuiCreateLesson($input: BuiCreateLessonInput!) {
67
+ buiCreateLesson(input: $input) {
68
+ id courseId moduleId title type position durationMin isPreview createdAt
69
+ }
70
+ }
71
+ `,x=`
72
+ query BuiListSkills($category: BuiSkillCategory) {
73
+ buiListSkills(category: $category) {
74
+ id name category description isActive createdAt updatedAt workspaceId
75
+ }
76
+ }
77
+ `,P=`
78
+ mutation BuiCreateSkill($input: BuiCreateSkillInput!) {
79
+ buiCreateSkill(input: $input) {
80
+ id name category description isActive createdAt
81
+ }
82
+ }
83
+ `,v=`
84
+ query BuiGetEnrollment($id: ID!) {
85
+ buiEnrollment(id: $id) {
86
+ id courseId learnerId cohortId status progressPct enrolledAt startedAt
87
+ completedAt lastActiveAt expiresAt createdAt updatedAt workspaceId
88
+ }
89
+ }
90
+ `,B=`
91
+ query BuiListEnrollments(
92
+ $courseId: ID
93
+ $learnerId: ID
94
+ $status: BuiEnrollmentStatus
95
+ $pagination: PaginationInput
96
+ ) {
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
+ }
106
+ pageInfo { cursor hasMore }
107
+ }
108
+ }
109
+ `,M=`
110
+ mutation BuiEnroll($input: BuiEnrollInput!) {
111
+ buiEnroll(input: $input) {
112
+ id courseId learnerId cohortId status progressPct enrolledAt expiresAt
113
+ }
114
+ }
115
+ `,U=`
116
+ mutation BuiTransitionEnrollment($id: ID!, $status: BuiEnrollmentStatus!) {
117
+ buiTransitionEnrollment(id: $id, status: $status) {
118
+ id status progressPct startedAt completedAt updatedAt
119
+ }
120
+ }
121
+ `,_=`
122
+ mutation BuiRecordLessonProgress($input: BuiRecordLessonProgressInput!) {
123
+ buiRecordLessonProgress(input: $input) {
124
+ id enrollmentId lessonId status secondsSpent completedAt
125
+ createdAt updatedAt
126
+ }
127
+ }
128
+ `,q=`
129
+ query BuiListCohorts($courseId: ID, $status: BuiCohortStatus) {
130
+ buiListCohorts(courseId: $courseId, status: $status) {
131
+ id courseId name status capacity facilitatorId startDate endDate
132
+ createdAt updatedAt workspaceId
133
+ }
134
+ }
135
+ `,G=`
136
+ mutation BuiCreateCohort($input: BuiCreateCohortInput!) {
137
+ buiCreateCohort(input: $input) {
138
+ id courseId name status capacity facilitatorId startDate endDate createdAt
139
+ }
140
+ }
141
+ `,H=`
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
146
+ }
147
+ }
148
+ `,F=`
149
+ mutation BuiIssueCertificate($input: BuiIssueCertificateInput!) {
150
+ buiIssueCertificate(input: $input) {
151
+ id courseId learnerId enrollmentId serial status finalScore
152
+ issuedAt expiresAt
153
+ }
154
+ }
155
+ `,V=`
156
+ mutation BuiRevokeCertificate($id: ID!) {
157
+ buiRevokeCertificate(id: $id) {
158
+ id serial status revokedAt updatedAt
159
+ }
160
+ }
161
+ `,Q=`
162
+ query BuiGetAssessment($id: ID!) {
163
+ 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
+ }
168
+ }
169
+ `,W=`
170
+ query BuiListAssessments($courseId: ID!, $status: BuiAssessmentStatus) {
171
+ buiListAssessments(courseId: $courseId, status: $status) {
172
+ id courseId title type status passingScore maxAttempts timeLimitMin
173
+ isGraded createdAt
174
+ }
175
+ }
176
+ `,K=`
177
+ mutation BuiCreateAssessment($input: BuiCreateAssessmentInput!) {
178
+ buiCreateAssessment(input: $input) {
179
+ id courseId title type status passingScore maxAttempts timeLimitMin
180
+ isGraded createdAt
181
+ }
182
+ }
183
+ `,j=`
184
+ mutation BuiPublishAssessment($id: ID!) {
185
+ buiPublishAssessment(id: $id) {
186
+ id title type status updatedAt
187
+ }
188
+ }
189
+ `,J=`
190
+ mutation BuiCreateQuestion($input: BuiCreateQuestionInput!) {
191
+ buiCreateQuestion(input: $input) {
192
+ id assessmentId prompt type points position explanation createdAt
193
+ }
194
+ }
195
+ `,X=`
196
+ query BuiListSubmissions(
197
+ $assessmentId: ID
198
+ $learnerId: ID
199
+ $status: BuiSubmissionStatus
200
+ $pagination: PaginationInput
201
+ ) {
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
+ }
211
+ pageInfo { cursor hasMore }
212
+ }
213
+ }
214
+ `,Z=`
215
+ mutation BuiSubmitAssessment($input: BuiSubmitAssessmentInput!) {
216
+ buiSubmitAssessment(input: $input) {
217
+ id assessmentId learnerId attempt status score passed submittedAt createdAt
218
+ }
219
+ }
220
+ `,z=`
221
+ mutation BuiGradeSubmission($id: ID!, $input: BuiGradeSubmissionInput!) {
222
+ buiGradeSubmission(id: $id, input: $input) {
223
+ id assessmentId learnerId attempt status score passed feedback
224
+ gradedAt gradedById updatedAt
225
+ }
226
+ }
227
+ `,Y=`
228
+ query BuiHealth {
229
+ buiHealth
230
+ }
231
+ `;function S(a,i){try{return JSON.parse(i)}catch{throw new o(`--${a} must be valid JSON`)}}function c(a){let i=Number.parseInt(a,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${a}"`);return i}function I(a){let i=Number.parseFloat(a);if(Number.isNaN(i))throw new o(`Expected a number but got "${a}"`);return i}function E(a){return a==="true"}function A(a){return a.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function tt(a){let i$1=a.command("courses").description("Buildmyiq courses");i$1.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",c,50).option("--offset <n>","Offset",c,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 s=await b(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});h$1(t,s.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:s.buiListCourses.items.map(d=>[p(d.id,12),d.title,d.level,d.status,d.language??"-",d.estimatedHours!=null?String(d.estimatedHours):"-"])});}catch(e){g(e);}}),i$1.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(L,{id:t});if(!s.buiCourse)throw new o(`Course ${t} not found`);h$1(e,s.buiCourse);}catch(s){g(s);}}),i$1.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",c).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 s=await b(O,{input:e});i(`Course created: ${s.buiCreateCourse.title}`),h$1(t,s.buiCreateCourse);}catch(e){g(e);}}),i$1.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",c).option("--public <bool>","true|false",E).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 s={};if(e.title&&(s.title=e.title),e.summary!==void 0&&(s.summary=e.summary),e.description!==void 0&&(s.description=e.description),e.level&&(s.level=e.level.toUpperCase()),e.language&&(s.language=e.language),e.estimatedHours!==void 0&&(s.estimatedHours=e.estimatedHours),e.public!==void 0&&(s.isPublic=e.public),e.instructor&&(s.instructorId=e.instructor),e.skill&&(s.skillId=e.skill),e.coverFile&&(s.coverFileId=e.coverFile),e.tags&&(s.tags=A(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let d=await b(h,{id:t,input:s});i("Course updated"),h$1(e,d.buiUpdateCourse);}catch(s){g(s);}}),i$1.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 s=await b(w,{id:t});i(`Course published: ${s.buiPublishCourse.title}`),h$1(e,s.buiPublishCourse);}catch(s){g(s);}}),i$1.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(D,{id:t});i(s.buiArchiveCourse?"Course archived":"Course not archived"),h$1(e,{archived:s.buiArchiveCourse});}catch(s){g(s);}});}function et(a){let i$1=a.command("modules").description("Buildmyiq course modules");i$1.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 b(T,{courseId:t.course});h$1(t,e.buiListModules,{headers:["ID","Title","Position","Description"],rows:e.buiListModules.map(s=>[p(s.id,12),s.title,String(s.position),p(s.description??"-",40)])});}catch(e){g(e);}}),i$1.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",c).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 s=await b(k,{input:e});i(`Module created: ${s.buiCreateModule.title}`),h$1(t,s.buiCreateModule);}catch(e){g(e);}});}function st(a){let i$1=a.command("lessons").description("Buildmyiq course lessons");i$1.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 b($,{courseId:t.course,moduleId:t.module});h$1(t,e.buiListLessons,{headers:["ID","Title","Type","Position","Duration","Preview"],rows:e.buiListLessons.map(s=>[p(s.id,12),s.title,s.type,String(s.position),s.durationMin!=null?String(s.durationMin):"-",s.isPreview?"yes":"no"])});}catch(e){g(e);}}),i$1.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)",c).option("--position <n>","Ordering position",c).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 s=await b(N,{input:e});i(`Lesson created: ${s.buiCreateLesson.title}`),h$1(t,s.buiCreateLesson);}catch(e){g(e);}});}function it(a){let i$1=a.command("skills").description("Buildmyiq skills taxonomy");i$1.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 b(x,{category:t.category?t.category.toUpperCase():void 0});h$1(t,e.buiListSkills,{headers:["ID","Name","Category","Active","Description"],rows:e.buiListSkills.map(s=>[p(s.id,12),s.name,s.category,s.isActive?"yes":"no",p(s.description??"-",40)])});}catch(e){g(e);}}),i$1.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 s=await b(P,{input:e});i(`Skill created: ${s.buiCreateSkill.name}`),h$1(t,s.buiCreateSkill);}catch(e){g(e);}});}function rt(a){let i$1=a.command("enrollments").description("Buildmyiq enrollments & lesson progress");i$1.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",c,50).option("--offset <n>","Offset",c,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 s=await b(B,{courseId:t.course,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});h$1(t,s.buiListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %"],rows:s.buiListEnrollments.items.map(d=>[p(d.id,12),p(d.courseId,12),p(d.learnerId,12),d.status,String(d.progressPct)])});}catch(e){g(e);}}),i$1.command("get").description("Get an enrollment by id").argument("<id>","Enrollment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(v,{id:t});if(!s.buiEnrollment)throw new o(`Enrollment ${t} not found`);h$1(e,s.buiEnrollment);}catch(s){g(s);}}),i$1.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 s=await b(M,{input:e});i(`Enrolled: ${s.buiEnroll.id}`),h$1(t,s.buiEnroll);}catch(e){g(e);}}),i$1.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 s=await b(U,{id:t,status:e.status.toUpperCase()});i(`Enrollment status set to ${s.buiTransitionEnrollment.status}`),h$1(e,s.buiTransitionEnrollment);}catch(s){g(s);}}),i$1.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",c).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 s=await b(_,{input:e});i(`Progress recorded: ${s.buiRecordLessonProgress.status}`),h$1(t,s.buiRecordLessonProgress);}catch(e){g(e);}});}function nt(a){let i$1=a.command("cohorts").description("Buildmyiq cohorts");i$1.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 b(q,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.buiListCohorts,{headers:["ID","Name","Status","Capacity","Start","End"],rows:e.buiListCohorts.map(s=>[p(s.id,12),s.name,s.status,String(s.capacity),o$1(s.startDate),o$1(s.endDate)])});}catch(e){g(e);}}),i$1.command("create").description("Create a cohort").requiredOption("--course <id>","Course ID").requiredOption("--name <name>","Cohort name").option("--capacity <n>","Capacity",c).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 s=await b(G,{input:e});i(`Cohort created: ${s.buiCreateCohort.name}`),h$1(t,s.buiCreateCohort);}catch(e){g(e);}});}function ot(a){let i$1=a.command("certificates").description("Buildmyiq certificates");i$1.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 b(H,{courseId:t.course,learnerId:t.learner});h$1(t,e.buiListCertificates,{headers:["ID","Serial","Learner","Status","Score","Issued"],rows:e.buiListCertificates.map(s=>[p(s.id,12),s.serial,p(s.learnerId,12),s.status,s.finalScore!=null?String(s.finalScore):"-",o$1(s.issuedAt)])});}catch(e){g(e);}}),i$1.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 s=await b(F,{input:e});i(`Certificate issued: ${s.buiIssueCertificate.serial}`),h$1(t,s.buiIssueCertificate);}catch(e){g(e);}}),i$1.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(V,{id:t});i(`Certificate revoked: ${s.buiRevokeCertificate.serial}`),h$1(e,s.buiRevokeCertificate);}catch(s){g(s);}});}function at(a){let i$1=a.command("assessments").description("Buildmyiq assessments & questions");i$1.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 b(W,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.buiListAssessments,{headers:["ID","Title","Type","Status","Pass","Attempts","Graded"],rows:e.buiListAssessments.map(s=>[p(s.id,12),s.title,s.type,s.status,s.passingScore!=null?String(s.passingScore):"-",s.maxAttempts!=null?String(s.maxAttempts):"-",s.isGraded?"yes":"no"])});}catch(e){g(e);}}),i$1.command("get").description("Get an assessment by id").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(Q,{id:t});if(!s.buiAssessment)throw new o(`Assessment ${t} not found`);h$1(e,s.buiAssessment);}catch(s){g(s);}}),i$1.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",c).option("--time-limit-min <n>","Time limit (minutes)",c).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 s=await b(K,{input:e});i(`Assessment created: ${s.buiCreateAssessment.title}`),h$1(t,s.buiCreateAssessment);}catch(e){g(e);}}),i$1.command("publish").description("Publish an assessment").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b(j,{id:t});i(`Assessment published: ${s.buiPublishAssessment.title}`),h$1(e,s.buiPublishAssessment);}catch(s){g(s);}}),i$1.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",c).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=S("options",t.options)),t.answerKey&&(e.answerKey=S("answer-key",t.answerKey));let s=await b(J,{input:e});i(`Question added: ${p(s.buiCreateQuestion.prompt,40)}`),h$1(t,s.buiCreateQuestion);}catch(e){g(e);}});}function ut(a){let i$1=a.command("submissions").description("Buildmyiq assessment submissions");i$1.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",c,50).option("--offset <n>","Offset",c,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 s=await b(X,{assessmentId:t.assessment,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});h$1(t,s.buiListSubmissions.items,{headers:["ID","Assessment","Learner","Attempt","Status","Score","Passed"],rows:s.buiListSubmissions.items.map(d=>[p(d.id,12),p(d.assessmentId,12),p(d.learnerId,12),String(d.attempt),d.status,d.score!=null?String(d.score):"-",d.passed==null?"-":d.passed?"yes":"no"])});}catch(e){g(e);}}),i$1.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",c).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=S("answers",t.answers));let s=await b(Z,{input:e});i(`Submission created: ${s.buiSubmitAssessment.id}`),h$1(t,s.buiSubmitAssessment);}catch(e){g(e);}}),i$1.command("grade").description("Grade a submission").argument("<id>","Submission ID").requiredOption("--score <n>","Score",I).option("--passed <bool>","true|false",E).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={score:e.score};e.passed!==void 0&&(s.passed=e.passed),e.feedback&&(s.feedback=e.feedback);let d=await b(z,{id:t,input:s});i(`Submission graded: ${d.buiGradeSubmission.status}`),h$1(e,d.buiGradeSubmission);}catch(s){g(s);}});}function dt(a){a.command("health").description("Buildmyiq subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(Y);i(t.buiHealth),h$1(i$1,{health:t.buiHealth});}catch(t){g(t);}});}var mt={id:"buildmyiq",version:"1.0.0",displayName:"Buildmyiq",dependsOn:["auth","workspaces"],register(a$1,i){a(i);let t=a$1.command("buildmyiq").description("Buildmyiq education, learning & development platform");tt(t),et(t),st(t),it(t),rt(t),nt(t),ot(t),at(t),ut(t),dt(t);}},ie=mt;export{ie as default};