@burdenoff/cli-sdk 2026.627.2 → 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.
- package/dist/modules/artistrybase/index.cjs +334 -0
- package/dist/modules/artistrybase/index.d.cts +7 -0
- package/dist/modules/artistrybase/index.d.ts +7 -0
- package/dist/modules/artistrybase/index.js +334 -0
- package/dist/modules/brainyrich/index.cjs +340 -0
- package/dist/modules/brainyrich/index.d.cts +7 -0
- package/dist/modules/brainyrich/index.d.ts +7 -0
- package/dist/modules/brainyrich/index.js +340 -0
- package/dist/modules/buildmyiq/index.cjs +231 -0
- package/dist/modules/buildmyiq/index.d.cts +7 -0
- package/dist/modules/buildmyiq/index.d.ts +7 -0
- package/dist/modules/buildmyiq/index.js +231 -0
- package/dist/modules/collabkin/index.cjs +208 -0
- package/dist/modules/collabkin/index.d.cts +7 -0
- package/dist/modules/collabkin/index.d.ts +7 -0
- package/dist/modules/collabkin/index.js +208 -0
- package/dist/modules/comradecircle/index.cjs +281 -0
- package/dist/modules/comradecircle/index.d.cts +7 -0
- package/dist/modules/comradecircle/index.d.ts +7 -0
- package/dist/modules/comradecircle/index.js +281 -0
- 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,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};
|