@burdenoff/cli-sdk 2026.825.2 → 2026.1021.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/dist/chunk-IZXPWPKX.js +32 -0
  2. package/dist/chunk-NLEVVDXR.js +1 -0
  3. package/dist/core/index.cjs +7 -7
  4. package/dist/core/index.d.cts +2 -2
  5. package/dist/core/index.d.ts +2 -2
  6. package/dist/core/index.js +1 -1
  7. package/dist/index.cjs +7 -7
  8. package/dist/index.d.cts +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/{module-DxCuik6L.d.cts → module-DOIiVaXQ.d.cts} +4 -1
  12. package/dist/{module-DxCuik6L.d.ts → module-DOIiVaXQ.d.ts} +4 -1
  13. package/dist/modules/adaptercloud/index.cjs +2 -2
  14. package/dist/modules/adaptercloud/index.d.cts +1 -1
  15. package/dist/modules/adaptercloud/index.d.ts +1 -1
  16. package/dist/modules/adaptercloud/index.js +1 -1
  17. package/dist/modules/artistrybase/index.cjs +6 -6
  18. package/dist/modules/artistrybase/index.d.cts +1 -1
  19. package/dist/modules/artistrybase/index.d.ts +1 -1
  20. package/dist/modules/artistrybase/index.js +1 -1
  21. package/dist/modules/assethandler/index.cjs +2 -2
  22. package/dist/modules/assethandler/index.d.cts +1 -1
  23. package/dist/modules/assethandler/index.d.ts +1 -1
  24. package/dist/modules/assethandler/index.js +1 -1
  25. package/dist/modules/atheletebridge/index.cjs +4 -4
  26. package/dist/modules/atheletebridge/index.d.cts +1 -1
  27. package/dist/modules/atheletebridge/index.d.ts +1 -1
  28. package/dist/modules/atheletebridge/index.js +1 -1
  29. package/dist/modules/auth/index.cjs +34 -34
  30. package/dist/modules/auth/index.d.cts +1 -1
  31. package/dist/modules/auth/index.d.ts +1 -1
  32. package/dist/modules/auth/index.js +30 -30
  33. package/dist/modules/billing/index.cjs +3 -3
  34. package/dist/modules/billing/index.d.cts +1 -1
  35. package/dist/modules/billing/index.d.ts +1 -1
  36. package/dist/modules/billing/index.js +1 -1
  37. package/dist/modules/brainyrich/index.cjs +4 -4
  38. package/dist/modules/brainyrich/index.d.cts +1 -1
  39. package/dist/modules/brainyrich/index.d.ts +1 -1
  40. package/dist/modules/brainyrich/index.js +1 -1
  41. package/dist/modules/buildmyiq/index.cjs +3 -3
  42. package/dist/modules/buildmyiq/index.d.cts +1 -1
  43. package/dist/modules/buildmyiq/index.d.ts +1 -1
  44. package/dist/modules/buildmyiq/index.js +1 -1
  45. package/dist/modules/channels/index.cjs +7 -7
  46. package/dist/modules/channels/index.d.cts +1 -1
  47. package/dist/modules/channels/index.d.ts +1 -1
  48. package/dist/modules/channels/index.js +1 -1
  49. package/dist/modules/collabkin/index.cjs +11 -11
  50. package/dist/modules/collabkin/index.d.cts +1 -1
  51. package/dist/modules/collabkin/index.d.ts +1 -1
  52. package/dist/modules/collabkin/index.js +1 -1
  53. package/dist/modules/comradecircle/index.cjs +5 -5
  54. package/dist/modules/comradecircle/index.d.cts +1 -1
  55. package/dist/modules/comradecircle/index.d.ts +1 -1
  56. package/dist/modules/comradecircle/index.js +1 -1
  57. package/dist/modules/conversations/index.cjs +8 -8
  58. package/dist/modules/conversations/index.d.cts +1 -1
  59. package/dist/modules/conversations/index.d.ts +1 -1
  60. package/dist/modules/conversations/index.js +1 -1
  61. package/dist/modules/coolandlovely/index.cjs +4 -4
  62. package/dist/modules/coolandlovely/index.d.cts +1 -1
  63. package/dist/modules/coolandlovely/index.d.ts +1 -1
  64. package/dist/modules/coolandlovely/index.js +1 -1
  65. package/dist/modules/cosmicintersection/index.cjs +4 -4
  66. package/dist/modules/cosmicintersection/index.d.cts +1 -1
  67. package/dist/modules/cosmicintersection/index.d.ts +1 -1
  68. package/dist/modules/cosmicintersection/index.js +1 -1
  69. package/dist/modules/crewfoundry/index.cjs +4 -4
  70. package/dist/modules/crewfoundry/index.d.cts +1 -1
  71. package/dist/modules/crewfoundry/index.d.ts +1 -1
  72. package/dist/modules/crewfoundry/index.js +1 -1
  73. package/dist/modules/devportal/index.cjs +5 -5
  74. package/dist/modules/devportal/index.d.cts +1 -1
  75. package/dist/modules/devportal/index.d.ts +1 -1
  76. package/dist/modules/devportal/index.js +1 -1
  77. package/dist/modules/ecoimpacthub/index.cjs +2 -2
  78. package/dist/modules/ecoimpacthub/index.d.cts +1 -1
  79. package/dist/modules/ecoimpacthub/index.d.ts +1 -1
  80. package/dist/modules/ecoimpacthub/index.js +1 -1
  81. package/dist/modules/eventfullymanaged/index.cjs +21 -21
  82. package/dist/modules/eventfullymanaged/index.d.cts +1 -1
  83. package/dist/modules/eventfullymanaged/index.d.ts +1 -1
  84. package/dist/modules/eventfullymanaged/index.js +1 -1
  85. package/dist/modules/export/index.cjs +3 -3
  86. package/dist/modules/export/index.d.cts +1 -1
  87. package/dist/modules/export/index.d.ts +1 -1
  88. package/dist/modules/export/index.js +1 -1
  89. package/dist/modules/files/index.cjs +9 -9
  90. package/dist/modules/files/index.d.cts +1 -1
  91. package/dist/modules/files/index.d.ts +1 -1
  92. package/dist/modules/files/index.js +1 -1
  93. package/dist/modules/fluidgrids/index.cjs +401 -0
  94. package/dist/modules/fluidgrids/index.d.cts +7 -0
  95. package/dist/modules/fluidgrids/index.d.ts +7 -0
  96. package/dist/modules/fluidgrids/index.js +401 -0
  97. package/dist/modules/ggnomad/index.cjs +5 -5
  98. package/dist/modules/ggnomad/index.d.cts +1 -1
  99. package/dist/modules/ggnomad/index.d.ts +1 -1
  100. package/dist/modules/ggnomad/index.js +1 -1
  101. package/dist/modules/govcitizenhub/index.cjs +4 -4
  102. package/dist/modules/govcitizenhub/index.d.cts +1 -1
  103. package/dist/modules/govcitizenhub/index.d.ts +1 -1
  104. package/dist/modules/govcitizenhub/index.js +1 -1
  105. package/dist/modules/groups/index.cjs +4 -4
  106. package/dist/modules/groups/index.d.cts +1 -1
  107. package/dist/modules/groups/index.d.ts +1 -1
  108. package/dist/modules/groups/index.js +1 -1
  109. package/dist/modules/headshotmarketing/index.cjs +1 -1
  110. package/dist/modules/headshotmarketing/index.d.cts +1 -1
  111. package/dist/modules/headshotmarketing/index.d.ts +1 -1
  112. package/dist/modules/headshotmarketing/index.js +1 -1
  113. package/dist/modules/health/index.d.cts +1 -1
  114. package/dist/modules/health/index.d.ts +1 -1
  115. package/dist/modules/hookmovies/index.cjs +7 -7
  116. package/dist/modules/hookmovies/index.d.cts +1 -1
  117. package/dist/modules/hookmovies/index.d.ts +1 -1
  118. package/dist/modules/hookmovies/index.js +1 -1
  119. package/dist/modules/housingvista/index.cjs +7 -7
  120. package/dist/modules/housingvista/index.d.cts +1 -1
  121. package/dist/modules/housingvista/index.d.ts +1 -1
  122. package/dist/modules/housingvista/index.js +1 -1
  123. package/dist/modules/integrations/index.cjs +5 -5
  124. package/dist/modules/integrations/index.d.cts +1 -1
  125. package/dist/modules/integrations/index.d.ts +1 -1
  126. package/dist/modules/integrations/index.js +1 -1
  127. package/dist/modules/intelwatchtower/index.cjs +4 -4
  128. package/dist/modules/intelwatchtower/index.d.cts +1 -1
  129. package/dist/modules/intelwatchtower/index.d.ts +1 -1
  130. package/dist/modules/intelwatchtower/index.js +1 -1
  131. package/dist/modules/kadaikodi/index.cjs +2 -2
  132. package/dist/modules/kadaikodi/index.d.cts +1 -1
  133. package/dist/modules/kadaikodi/index.d.ts +1 -1
  134. package/dist/modules/kadaikodi/index.js +1 -1
  135. package/dist/modules/labsofscience/index.cjs +4 -4
  136. package/dist/modules/labsofscience/index.d.cts +1 -1
  137. package/dist/modules/labsofscience/index.d.ts +1 -1
  138. package/dist/modules/labsofscience/index.js +1 -1
  139. package/dist/modules/manufacturedops/index.cjs +6 -6
  140. package/dist/modules/manufacturedops/index.d.cts +1 -1
  141. package/dist/modules/manufacturedops/index.d.ts +1 -1
  142. package/dist/modules/manufacturedops/index.js +1 -1
  143. package/dist/modules/movethewheels/index.cjs +1 -1
  144. package/dist/modules/movethewheels/index.d.cts +1 -1
  145. package/dist/modules/movethewheels/index.d.ts +1 -1
  146. package/dist/modules/movethewheels/index.js +1 -1
  147. package/dist/modules/mybodyshield/index.cjs +6 -6
  148. package/dist/modules/mybodyshield/index.d.cts +1 -1
  149. package/dist/modules/mybodyshield/index.d.ts +1 -1
  150. package/dist/modules/mybodyshield/index.js +1 -1
  151. package/dist/modules/notifications/index.cjs +5 -5
  152. package/dist/modules/notifications/index.d.cts +1 -1
  153. package/dist/modules/notifications/index.d.ts +1 -1
  154. package/dist/modules/notifications/index.js +1 -1
  155. package/dist/modules/organizations/index.d.cts +1 -1
  156. package/dist/modules/organizations/index.d.ts +1 -1
  157. package/dist/modules/organizations/index.js +1 -1
  158. package/dist/modules/planmagnet/index.cjs +204 -225
  159. package/dist/modules/planmagnet/index.d.cts +1 -1
  160. package/dist/modules/planmagnet/index.d.ts +1 -1
  161. package/dist/modules/planmagnet/index.js +173 -194
  162. package/dist/modules/products/index.cjs +4 -4
  163. package/dist/modules/products/index.d.cts +1 -1
  164. package/dist/modules/products/index.d.ts +1 -1
  165. package/dist/modules/products/index.js +1 -1
  166. package/dist/modules/proserviceworld/index.cjs +2 -2
  167. package/dist/modules/proserviceworld/index.d.cts +1 -1
  168. package/dist/modules/proserviceworld/index.d.ts +1 -1
  169. package/dist/modules/proserviceworld/index.js +1 -1
  170. package/dist/modules/rbac/index.cjs +2 -2
  171. package/dist/modules/rbac/index.d.cts +1 -1
  172. package/dist/modules/rbac/index.d.ts +1 -1
  173. package/dist/modules/rbac/index.js +1 -1
  174. package/dist/modules/sandbox/index.cjs +4 -4
  175. package/dist/modules/sandbox/index.d.cts +1 -1
  176. package/dist/modules/sandbox/index.d.ts +1 -1
  177. package/dist/modules/sandbox/index.js +1 -1
  178. package/dist/modules/scheduler/index.cjs +5 -5
  179. package/dist/modules/scheduler/index.d.cts +1 -1
  180. package/dist/modules/scheduler/index.d.ts +1 -1
  181. package/dist/modules/scheduler/index.js +1 -1
  182. package/dist/modules/security/index.cjs +7 -7
  183. package/dist/modules/security/index.d.cts +1 -1
  184. package/dist/modules/security/index.d.ts +1 -1
  185. package/dist/modules/security/index.js +1 -1
  186. package/dist/modules/semanticfed/index.cjs +7 -7
  187. package/dist/modules/semanticfed/index.d.cts +1 -1
  188. package/dist/modules/semanticfed/index.d.ts +1 -1
  189. package/dist/modules/semanticfed/index.js +1 -1
  190. package/dist/modules/store/index.cjs +7 -7
  191. package/dist/modules/store/index.d.cts +1 -1
  192. package/dist/modules/store/index.d.ts +1 -1
  193. package/dist/modules/store/index.js +1 -1
  194. package/dist/modules/subscriberbot/index.cjs +2 -2
  195. package/dist/modules/subscriberbot/index.d.cts +1 -1
  196. package/dist/modules/subscriberbot/index.d.ts +1 -1
  197. package/dist/modules/subscriberbot/index.js +1 -1
  198. package/dist/modules/support/index.cjs +2 -2
  199. package/dist/modules/support/index.d.cts +1 -1
  200. package/dist/modules/support/index.d.ts +1 -1
  201. package/dist/modules/support/index.js +1 -1
  202. package/dist/modules/tags/index.cjs +2 -2
  203. package/dist/modules/tags/index.d.cts +1 -1
  204. package/dist/modules/tags/index.d.ts +1 -1
  205. package/dist/modules/tags/index.js +1 -1
  206. package/dist/modules/technospam/index.cjs +4 -4
  207. package/dist/modules/technospam/index.d.cts +1 -1
  208. package/dist/modules/technospam/index.d.ts +1 -1
  209. package/dist/modules/technospam/index.js +1 -1
  210. package/dist/modules/theculturepost/index.cjs +3 -3
  211. package/dist/modules/theculturepost/index.d.cts +1 -1
  212. package/dist/modules/theculturepost/index.d.ts +1 -1
  213. package/dist/modules/theculturepost/index.js +1 -1
  214. package/dist/modules/theglobalfuel/index.cjs +3 -3
  215. package/dist/modules/theglobalfuel/index.d.cts +1 -1
  216. package/dist/modules/theglobalfuel/index.d.ts +1 -1
  217. package/dist/modules/theglobalfuel/index.js +1 -1
  218. package/dist/modules/timecampus/index.cjs +7 -7
  219. package/dist/modules/timecampus/index.d.cts +1 -1
  220. package/dist/modules/timecampus/index.d.ts +1 -1
  221. package/dist/modules/timecampus/index.js +1 -1
  222. package/dist/modules/tours/index.cjs +2 -2
  223. package/dist/modules/tours/index.d.cts +1 -1
  224. package/dist/modules/tours/index.d.ts +1 -1
  225. package/dist/modules/tours/index.js +1 -1
  226. package/dist/modules/vibecontrols/index.cjs +1 -1
  227. package/dist/modules/vibecontrols/index.d.cts +1 -1
  228. package/dist/modules/vibecontrols/index.d.ts +1 -1
  229. package/dist/modules/vibecontrols/index.js +1 -1
  230. package/dist/modules/workspaces/index.cjs +15 -15
  231. package/dist/modules/workspaces/index.d.cts +1 -1
  232. package/dist/modules/workspaces/index.d.ts +1 -1
  233. package/dist/modules/workspaces/index.js +11 -11
  234. package/package.json +1 -1
  235. package/dist/chunk-TCBALVP4.js +0 -32
  236. package/dist/chunk-WXDQ3S5J.js +0 -1
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},b=class extends m{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},g=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var h=null;function T(o){h=o;}function C(){if(!h)throw new g("vibecontrols module helpers used before setHelpersContext was called");return h}function xt(){let o=C();if(!o.auth.isAuthenticated())throw new b(`Authentication required. 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=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(r,t){super(r),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},b=class extends m{constructor(r,t){super(r,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},g=class extends Error{cause;constructor(r,t){super(r),this.name="CliInternalError",this.cause=t;}};var h=null;function T(o){h=o;}function C(){if(!h)throw new g("vibecontrols module helpers used before setHelpersContext was called");return h}function xt(){let o=C();if(!o.auth.isAuthenticated())throw new b("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,r){return xt(),C().gql.workspace.request(o,r)}async function w(o,r){return C().gql.workspaceAuthOnly.request(o,r)}function i(o){let r=o instanceof Error?o.message:String(o);throw new m(r)}function s(o,r,t){C().output.formatAndOutput(o,r,t);}function u(o){C().output.printSuccess(o);}function E(o){return C().output.formatDate(o)}function d(o,r){return C().output.truncate(o,r)}var O=`
2
2
  query BuiGetCourse($id: ID!) {
3
3
  buiCourse(id: $id) {
4
4
  id workspaceId slug title summary description level status language
@@ -6,7 +6,7 @@
6
6
  createdAt updatedAt cover { id }
7
7
  }
8
8
  }
9
- `,O=`
9
+ `,L=`
10
10
  query BuiListCourses(
11
11
  $status: BuiCourseStatus
12
12
  $level: BuiCourseLevel
@@ -228,4 +228,4 @@
228
228
  query BuiHealth {
229
229
  buiHealth
230
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;
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(L,{status:t.status?t.status.toUpperCase():void 0,level:t.level?t.level.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:n.buiListCourses.items.map(c=>[d(c.id,12),c.title,c.level,c.status,c.language??"-",c.estimatedHours!=null?String(c.estimatedHours):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(O,{id:t});if(!n.buiCourse)throw new m(`Course ${t} not found`);s(e,n.buiCourse);}catch(n){i(n);}}),r.command("create").description("Create a course").requiredOption("--slug <slug>","URL slug").requiredOption("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public","Make the course public").option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={slug:t.slug,title:t.title,level:(t.level??"BEGINNER").toUpperCase()};t.summary&&(e.summary=t.summary),t.description&&(e.description=t.description),t.language&&(e.language=t.language),t.estimatedHours!==void 0&&(e.estimatedHours=t.estimatedHours),t.public&&(e.isPublic=!0),t.instructor&&(e.instructorId=t.instructor),t.skill&&(e.skillId=t.skill),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=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;
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.cjs';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.cjs';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.js';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.js';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
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=`
1
+ import {a,b,h as h$1,p,g,i,o as o$1,d}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var L=`
2
2
  query BuiGetCourse($id: ID!) {
3
3
  buiCourse(id: $id) {
4
4
  id workspaceId slug title summary description level status language
@@ -5,24 +5,24 @@
5
5
  total hasMore
6
6
  }
7
7
  }
8
- `,A=`
8
+ `,v=`
9
9
  query GetChannel($id: ID!) {
10
10
  getChannel(id: $id) {
11
11
  id name platform adapterType status channelType
12
12
  connection { id authType isActive isHealthy }
13
13
  }
14
14
  }
15
- `,v=`
15
+ `,A=`
16
16
  mutation CreateChannel($input: CreateChannelInput!) {
17
17
  createChannel(input: $input) {
18
18
  id name platform adapterType status
19
19
  }
20
20
  }
21
- `,S=`
21
+ `,O=`
22
22
  mutation DeleteChannel($id: ID!) {
23
23
  deleteChannel(id: $id)
24
24
  }
25
- `,O=`
25
+ `,S=`
26
26
  mutation SendChannelMessage($input: SendMessageInput!) {
27
27
  sendMessage(input: $input) {
28
28
  success messageId status sentAt
@@ -57,14 +57,14 @@
57
57
  total hasMore
58
58
  }
59
59
  }
60
- `,_=`
60
+ `,R=`
61
61
  mutation CreateChannelConnection($input: CreateConnectionInput!) {
62
62
  createConnection(input: $input) {
63
63
  id channelId authType isActive
64
64
  }
65
65
  }
66
- `,R=`
66
+ `,_=`
67
67
  mutation DeleteChannelConnection($id: ID!) {
68
68
  deleteConnection(id: $id)
69
69
  }
70
- `;function P(r){let o=r.command("channels").description("Multi-platform message channels (email/SMS/Slack/etc.)");o.command("list").description("List channels").option("--platform <p>").option("--status <s>").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t={};e.platform&&(t.platform=e.platform.toUpperCase()),e.status&&(t.status=e.status.toUpperCase());let n=await a(b,{filter:Object.keys(t).length?t:void 0,pagination:{limit:e.limit,offset:0}});u(e,n.getChannels.items,{headers:["ID","Name","Platform","Status","Priority"],rows:n.getChannels.items.map(i=>[w(i.id,12),i.name,i.platform,C(i.status),String(i.priority??"-")])});}catch(t){c(t);}}),o.command("get").description("Get a channel").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(A,{id:e});if(!n.getChannel)throw new l(`Channel ${e} not found`);u(t,n.getChannel);}catch(n){c(n);}}),o.command("create").description("Create a channel").requiredOption("--name <s>").requiredOption("--platform <p>","EMAIL|SMS|SLACK|TEAMS|DISCORD|WHATSAPP|WEBHOOK").option("--organization <id>","Organization id (defaults to current actor org)").option("--adapter <t>").option("-f, --format <format>").action(async e=>{try{let t=e.organization??T().auth.read()?.organizationId;if(!t)throw new l("No organization context. Pass --organization <id> or set auth.organizationId.");let n={name:e.name,platform:e.platform.toUpperCase(),organizationId:t,adapterType:e.adapter?e.adapter.toUpperCase():void 0},i=await a(v,{input:n});f("Channel created"),u(e,i.createChannel);}catch(t){c(t);}}),o.command("delete").description("Delete a channel").argument("<id>").action(async e=>{try{await a(S,{id:e}),f("Channel deleted");}catch(t){c(t);}}),o.command("send").description("Send a message via a channel").argument("<channelId>").requiredOption("--content <s>").option("--recipient <id>","External recipient id (e.g. email)").option("--subject <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={channelId:e,content:t.content,recipientId:t.recipient,subject:t.subject},i=await a(O,{input:n});i.sendMessage.success&&f(`Sent: ${i.sendMessage.messageId??"(no id)"}`),u(t,i.sendMessage);}catch(n){c(n);}}),o.command("deliveries").description("Recent delivery attempts for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(N,{channelId:e,limit:t.limit});u(t,n.getChannelDeliveryAttempts.items);}catch(n){c(n);}}),o.command("users").description("Users connected to this channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a($,{channelId:e,pagination:{limit:t.limit,offset:0}});u(t,n.listUserPlatformConnectionsByChannel.items);}catch(n){c(n);}}),o.command("webhooks").description("Channel webhook events").command("list").description("List webhook events for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(D,{channelId:e,limit:t.limit});u(t,n.getChannelWebhookEvents.items,{headers:["ID","Event","Status","When"],rows:n.getChannelWebhookEvents.items.map(i=>[w(i.id,12),i.eventType,C(i.status),I(i.createdAt)])});}catch(n){c(n);}});let m=o.command("connections").description("Channel connections (OAuth/API keys)");m.command("list").description("List connections for an organization").requiredOption("--organization <id>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async e=>{try{let t=await a(L,{organizationId:e.organization,pagination:{limit:e.limit,offset:0}});u(e,t.getConnectionsByOrganization.items);}catch(t){c(t);}}),m.command("create").description("Create a channel connection").requiredOption("--channel <id>").requiredOption("--auth-type <t>","OAUTH|API_KEY|WEBHOOK").option("-f, --format <format>").action(async e=>{try{let t={channelId:e.channel,authType:e.authType.toUpperCase()},n=await a(_,{input:t});f("Connection created"),u(e,n.createConnection);}catch(t){c(t);}}),m.command("delete").description("Delete a connection").argument("<id>").action(async e=>{try{await a(R,{id:e}),f("Connection deleted");}catch(t){c(t);}});}var Y={id:"channels",version:"1.0.0",displayName:"Channels",dependsOn:["auth"],register(r,o){E(o),P(r);}},it=Y;module.exports=it;
70
+ `;function P(r){let o=r.command("channels").description("Multi-platform message channels (email/SMS/Slack/etc.)");o.command("list").description("List channels").option("--platform <p>").option("--status <s>").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t={};e.platform&&(t.platform=e.platform.toUpperCase()),e.status&&(t.status=e.status.toUpperCase());let n=await a(b,{filter:Object.keys(t).length?t:void 0,pagination:{limit:e.limit,offset:0}});u(e,n.getChannels.items,{headers:["ID","Name","Platform","Status","Priority"],rows:n.getChannels.items.map(i=>[w(i.id,12),i.name,i.platform,C(i.status),String(i.priority??"-")])});}catch(t){c(t);}}),o.command("get").description("Get a channel").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(v,{id:e});if(!n.getChannel)throw new l(`Channel ${e} not found`);u(t,n.getChannel);}catch(n){c(n);}}),o.command("create").description("Create a channel").requiredOption("--name <s>").requiredOption("--platform <p>","EMAIL|SMS|SLACK|TEAMS|DISCORD|WHATSAPP|WEBHOOK").option("--organization <id>","Organization id (defaults to current actor org)").option("--adapter <t>").option("-f, --format <format>").action(async e=>{try{let t=e.organization??T().auth.read()?.organizationId;if(!t)throw new l("No organization context. Pass --organization <id> or set auth.organizationId.");let n={name:e.name,platform:e.platform.toUpperCase(),organizationId:t,adapterType:e.adapter?e.adapter.toUpperCase():void 0},i=await a(A,{input:n});f("Channel created"),u(e,i.createChannel);}catch(t){c(t);}}),o.command("delete").description("Delete a channel").argument("<id>").action(async e=>{try{await a(O,{id:e}),f("Channel deleted");}catch(t){c(t);}}),o.command("send").description("Send a message via a channel").argument("<channelId>").requiredOption("--content <s>").option("--recipient <id>","External recipient id (e.g. email)").option("--subject <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={channelId:e,content:t.content,recipientId:t.recipient,subject:t.subject},i=await a(S,{input:n});i.sendMessage.success&&f(`Sent: ${i.sendMessage.messageId??"(no id)"}`),u(t,i.sendMessage);}catch(n){c(n);}}),o.command("deliveries").description("Recent delivery attempts for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(N,{channelId:e,limit:t.limit});u(t,n.getChannelDeliveryAttempts.items);}catch(n){c(n);}}),o.command("users").description("Users connected to this channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a($,{channelId:e,pagination:{limit:t.limit,offset:0}});u(t,n.listUserPlatformConnectionsByChannel.items);}catch(n){c(n);}}),o.command("webhooks").description("Channel webhook events").command("list").description("List webhook events for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(D,{channelId:e,limit:t.limit});u(t,n.getChannelWebhookEvents.items,{headers:["ID","Event","Status","When"],rows:n.getChannelWebhookEvents.items.map(i=>[w(i.id,12),i.eventType,C(i.status),I(i.createdAt)])});}catch(n){c(n);}});let m=o.command("connections").description("Channel connections (OAuth/API keys)");m.command("list").description("List connections for an organization").requiredOption("--organization <id>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async e=>{try{let t=await a(L,{organizationId:e.organization,pagination:{limit:e.limit,offset:0}});u(e,t.getConnectionsByOrganization.items);}catch(t){c(t);}}),m.command("create").description("Create a channel connection").requiredOption("--channel <id>").requiredOption("--auth-type <t>","OAUTH|API_KEY|WEBHOOK").option("-f, --format <format>").action(async e=>{try{let t={channelId:e.channel,authType:e.authType.toUpperCase()},n=await a(R,{input:t});f("Connection created"),u(e,n.createConnection);}catch(t){c(t);}}),m.command("delete").description("Delete a connection").argument("<id>").action(async e=>{try{await a(_,{id:e}),f("Connection deleted");}catch(t){c(t);}});}var Y={id:"channels",version:"1.0.0",displayName:"Channels",dependsOn:["auth"],register(r,o){E(o),P(r);}},it=Y;module.exports=it;
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.cjs';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.cjs';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.js';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.js';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
1
- import {a,c,h,p,n,g,s,i,o as o$1}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var y=`
1
+ import {a,c,h,p,n,g,s,i,o as o$1}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var y=`
2
2
  query GetChannels($filter: ChannelFilterInput, $pagination: ChannelPaginationInput) {
3
3
  getChannels(filter: $filter, pagination: $pagination) {
4
4
  items { id name platform adapterType status connectionHealth priority createdAt }
@@ -1,18 +1,18 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},C=class extends p{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},g=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var E=null;function T(o){E=o;}function y(){if(!E)throw new g("vibecontrols module helpers used before setHelpersContext was called");return E}function Te(){let o=y();if(!o.auth.isAuthenticated())throw new C(`Authentication required. Run \`${o.productName} auth login\`.`)}async function a(o,n){return Te(),y().gql.workspace.request(o,n)}async function b(o,n){return y().gql.workspaceAuthOnly.request(o,n)}function i(o){let n=o instanceof Error?o.message:String(o);throw new p(n)}function s(o,n,e){y().output.formatAndOutput(o,n,e);}function c(o){y().output.printSuccess(o);}function I(o){return y().output.formatDate(o)}function d(o,n){return y().output.truncate(o,n)}var D=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},C=class extends p{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},g=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var E=null;function T(o){E=o;}function y(){if(!E)throw new g("vibecontrols module helpers used before setHelpersContext was called");return E}function Te(){let o=y();if(!o.auth.isAuthenticated())throw new C("Authentication required.",{hint:`Run \`${o.productName} auth login\` to authenticate.`})}async function a(o,n){return Te(),y().gql.workspace.request(o,n)}async function b(o,n){return y().gql.workspaceAuthOnly.request(o,n)}function i(o){let n=o instanceof Error?o.message:String(o);throw new p(n)}function s(o,n,e){y().output.formatAndOutput(o,n,e);}function c(o){y().output.printSuccess(o);}function I(o){return y().output.formatDate(o)}function d(o,n){return y().output.truncate(o,n)}var D=`
2
2
  query ColGetFamilyTree($id: ID!) {
3
3
  colFamilyTree(id: $id) {
4
4
  id name surname description status tags createdAt updatedAt workspaceId
5
5
  coverFile { id }
6
6
  }
7
7
  }
8
- `,x=`
8
+ `,v=`
9
9
  query ColListFamilyTrees($pagination: PaginationInput, $status: ColTreeStatus) {
10
10
  colListFamilyTrees(pagination: $pagination, status: $status) {
11
11
  items { id name surname status tags createdAt }
12
12
  pageInfo { cursor hasMore }
13
13
  }
14
14
  }
15
- `,v=`
15
+ `,x=`
16
16
  mutation ColCreateFamilyTree($input: ColCreateFamilyTreeInput!) {
17
17
  colCreateFamilyTree(input: $input) {
18
18
  id name surname description status tags createdAt
@@ -26,11 +26,11 @@
26
26
  coverFile { id }
27
27
  }
28
28
  }
29
- `,S=`
29
+ `,O=`
30
30
  mutation ColArchiveFamilyTree($id: ID!) {
31
31
  colArchiveFamilyTree(id: $id)
32
32
  }
33
- `,R=`
33
+ `,S=`
34
34
  query ColGetPerson($id: ID!) {
35
35
  colPerson(id: $id) {
36
36
  id treeId givenName familyName maidenName nickname gender lifeStatus
@@ -39,7 +39,7 @@
39
39
  createdAt updatedAt workspaceId
40
40
  }
41
41
  }
42
- `,O=`
42
+ `,R=`
43
43
  query ColListPeople($treeId: ID, $lifeStatus: ColLifeStatus, $pagination: PaginationInput) {
44
44
  colListPeople(treeId: $treeId, lifeStatus: $lifeStatus, pagination: $pagination) {
45
45
  items { id treeId givenName familyName gender lifeStatus birthDate createdAt }
@@ -52,13 +52,13 @@
52
52
  id treeId givenName familyName gender lifeStatus birthDate tags createdAt
53
53
  }
54
54
  }
55
- `,$=`
55
+ `,P=`
56
56
  mutation ColUpdatePerson($id: ID!, $input: ColUpdatePersonInput!) {
57
57
  colUpdatePerson(id: $id, input: $input) {
58
58
  id treeId givenName familyName gender lifeStatus birthDate tags updatedAt
59
59
  }
60
60
  }
61
- `,P=`
61
+ `,$=`
62
62
  mutation ColDeletePerson($id: ID!) {
63
63
  colDeletePerson(id: $id)
64
64
  }
@@ -96,7 +96,7 @@
96
96
  mutation ColDeleteEvent($id: ID!) {
97
97
  colDeleteEvent(id: $id)
98
98
  }
99
- `,W=`
99
+ `,G=`
100
100
  query ColGetMemory($id: ID!) {
101
101
  colMemory(id: $id) {
102
102
  id treeId personId title description kind place takenAt tags visibility
@@ -105,7 +105,7 @@
105
105
  createdAt updatedAt workspaceId
106
106
  }
107
107
  }
108
- `,G=`
108
+ `,W=`
109
109
  query ColListMemories(
110
110
  $treeId: ID
111
111
  $personId: ID
@@ -205,4 +205,4 @@
205
205
  query ColHealth {
206
206
  colHealth
207
207
  }
208
- `;function m(o){let n=Number.parseInt(o,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${o}"`);return n}function u(o){return o.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function oe(o){let n=o.command("trees").description("Collabkin family trees");n.command("list").description("List family trees").option("--status <s>","ACTIVE|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(x,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListFamilyTrees.items,{headers:["ID","Name","Surname","Status","Tags"],rows:t.colListFamilyTrees.items.map(r=>[d(r.id,12),r.name,r.surname??"-",r.status,(r.tags??[]).join(", ")])});}catch(t){i(t);}}),n.command("get").description("Get a family tree by id").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(D,{id:e});if(!r.colFamilyTree)throw new p(`Family tree ${e} not found`);s(t,r.colFamilyTree);}catch(r){i(r);}}),n.command("create").description("Create a family tree").requiredOption("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.surname&&(t.surname=e.surname),e.description&&(t.description=e.description),e.coverFile&&(t.coverFileId=e.coverFile),e.tags&&(t.tags=u(e.tags));let r=await a(v,{input:t});c(`Family tree created: ${r.colCreateFamilyTree.name}`),s(e,r.colCreateFamilyTree);}catch(t){i(t);}}),n.command("update").description("Update a family tree").argument("<id>","Family tree ID").option("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.surname!==void 0&&(r.surname=t.surname),t.description!==void 0&&(r.description=t.description),t.coverFile&&(r.coverFileId=t.coverFile),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a(A,{id:e,input:r});c("Family tree updated"),s(t,h.colUpdateFamilyTree);}catch(r){i(r);}}),n.command("archive").description("Archive a family tree").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(S,{id:e});c(`Family tree archived: ${r.colArchiveFamilyTree}`),s(t,{archived:r.colArchiveFamilyTree});}catch(r){i(r);}});}function ie(o){let n=o.command("people").description("Collabkin people");n.command("list").description("List people in a tree").option("--tree <id>","Filter by family tree ID").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(O,{treeId:e.tree,lifeStatus:e.lifeStatus?e.lifeStatus.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListPeople.items,{headers:["ID","Given","Family","Gender","Life","Born"],rows:t.colListPeople.items.map(r=>[d(r.id,12),r.givenName,r.familyName??"-",r.gender,r.lifeStatus,I(r.birthDate)])});}catch(t){i(t);}}),n.command("get").description("Get a person by id").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(R,{id:e});if(!r.colPerson)throw new p(`Person ${e} not found`);s(t,r.colPerson);}catch(r){i(r);}}),n.command("create").description("Create a person").requiredOption("--tree <id>","Family tree ID").requiredOption("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,givenName:e.givenName};e.familyName&&(t.familyName=e.familyName),e.maidenName&&(t.maidenName=e.maidenName),e.nickname&&(t.nickname=e.nickname),e.gender&&(t.gender=e.gender.toUpperCase()),e.lifeStatus&&(t.lifeStatus=e.lifeStatus.toUpperCase()),e.birthDate&&(t.birthDate=e.birthDate),e.birthPlace&&(t.birthPlace=e.birthPlace),e.deathDate&&(t.deathDate=e.deathDate),e.bio&&(t.bio=e.bio),e.linkedUser&&(t.linkedUserId=e.linkedUser),e.photoFile&&(t.photoFileId=e.photoFile),e.tags&&(t.tags=u(e.tags));let r=await a(M,{input:t});c(`Person created: ${r.colCreatePerson.givenName}`),s(e,r.colCreatePerson);}catch(t){i(t);}}),n.command("update").description("Update a person").argument("<id>","Person ID").option("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.givenName&&(r.givenName=t.givenName),t.familyName!==void 0&&(r.familyName=t.familyName),t.maidenName!==void 0&&(r.maidenName=t.maidenName),t.nickname!==void 0&&(r.nickname=t.nickname),t.gender&&(r.gender=t.gender.toUpperCase()),t.lifeStatus&&(r.lifeStatus=t.lifeStatus.toUpperCase()),t.birthDate&&(r.birthDate=t.birthDate),t.birthPlace!==void 0&&(r.birthPlace=t.birthPlace),t.deathDate&&(r.deathDate=t.deathDate),t.bio!==void 0&&(r.bio=t.bio),t.linkedUser&&(r.linkedUserId=t.linkedUser),t.photoFile&&(r.photoFileId=t.photoFile),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a($,{id:e,input:r});c("Person updated"),s(t,h.colUpdatePerson);}catch(r){i(r);}}),n.command("remove").description("Delete a person").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(P,{id:e});c(`Person deleted: ${r.colDeletePerson}`),s(t,{deleted:r.colDeletePerson});}catch(r){i(r);}});}function se(o){let n=o.command("relationships").description("Collabkin relationships between people");n.command("list").description("List relationships in a tree (optionally for one person)").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(L,{treeId:e.tree,personId:e.person});s(e,t.colListRelationships,{headers:["ID","From","To","Type","Certainty"],rows:t.colListRelationships.map(r=>[d(r.id,12),d(r.fromPersonId,12),d(r.toPersonId,12),r.type,r.certainty])});}catch(t){i(t);}}),n.command("create").description("Create a relationship between two people").requiredOption("--tree <id>","Family tree ID").requiredOption("--from <id>","From person ID").requiredOption("--to <id>","To person ID").requiredOption("--type <t>","PARENT|CHILD|SPOUSE|PARTNER|SIBLING|GRANDPARENT|GRANDCHILD|GUARDIAN").option("--certainty <c>","CONFIRMED|PROBABLE|DISPUTED|UNVERIFIED").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,fromPersonId:e.from,toPersonId:e.to,type:e.type.toUpperCase()};e.certainty&&(t.certainty=e.certainty.toUpperCase()),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.notes&&(t.notes=e.notes);let r=await a(N,{input:t});c(`Relationship created: ${r.colCreateRelationship.type}`),s(e,r.colCreateRelationship);}catch(t){i(t);}}),n.command("remove").description("Delete a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(F,{id:e});c(`Relationship deleted: ${r.colDeleteRelationship}`),s(t,{deleted:r.colDeleteRelationship});}catch(r){i(r);}});}function ae(o){let n=o.command("events").description("Collabkin timeline events");n.command("timeline").description("Show the family timeline (dated events) for a tree").requiredOption("--tree <id>","Family tree ID").option("--person <id>","Filter by person ID").option("--type <t>","Filter by event type").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(_,{treeId:e.tree,personId:e.person,type:e.type?e.type.toUpperCase():void 0});s(e,t.colTimeline,{headers:["ID","Title","Type","Date","Place","Approx"],rows:t.colTimeline.map(r=>[d(r.id,12),r.title,r.type,I(r.date),r.place??"-",r.isApproximate?"yes":"no"])});}catch(t){i(t);}}),n.command("create").description("Create a timeline event").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Event title").requiredOption("--date <iso>","Event date (ISO)").option("--type <t>","BIRTH|DEATH|MARRIAGE|DIVORCE|EDUCATION|MILITARY|IMMIGRATION|RESIDENCE|MILESTONE|OTHER").option("--description <s>","Description").option("--place <s>","Place").option("--person <id>","Associated person ID").option("--approximate","Mark the date as approximate").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title,date:e.date};e.type&&(t.type=e.type.toUpperCase()),e.description&&(t.description=e.description),e.place&&(t.place=e.place),e.person&&(t.personId=e.person),e.approximate&&(t.isApproximate=!0);let r=await a(U,{input:t});c(`Event created: ${r.colCreateEvent.title}`),s(e,r.colCreateEvent);}catch(t){i(t);}}),n.command("remove").description("Delete a timeline event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(q,{id:e});c(`Event deleted: ${r.colDeleteEvent}`),s(t,{deleted:r.colDeleteEvent});}catch(r){i(r);}});}function ce(o){let n=o.command("memories").description("Collabkin memories (media)");n.command("list").description("List memories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(G,{treeId:e.tree,personId:e.person,kind:e.kind?e.kind.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListMemories.items,{headers:["ID","Title","Kind","Place","Taken","Visibility"],rows:t.colListMemories.items.map(r=>[d(r.id,12),r.title,r.kind,r.place??"-",I(r.takenAt),r.visibility])});}catch(t){i(t);}}),n.command("get").description("Get a memory by id").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(W,{id:e});if(!r.colMemory)throw new p(`Memory ${e} not found`);s(t,r.colMemory);}catch(r){i(r);}}),n.command("create").description("Create a memory").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title};e.kind&&(t.kind=e.kind.toUpperCase()),e.description&&(t.description=e.description),e.place&&(t.place=e.place),e.takenAt&&(t.takenAt=e.takenAt),e.person&&(t.personId=e.person),e.file&&(t.fileId=e.file),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.tags&&(t.tags=u(e.tags));let r=await a(H,{input:t});c(`Memory created: ${r.colCreateMemory.title}`),s(e,r.colCreateMemory);}catch(t){i(t);}}),n.command("update").description("Update a memory").argument("<id>","Memory ID").option("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.kind&&(r.kind=t.kind.toUpperCase()),t.description!==void 0&&(r.description=t.description),t.place!==void 0&&(r.place=t.place),t.takenAt&&(r.takenAt=t.takenAt),t.person&&(r.personId=t.person),t.file&&(r.fileId=t.file),t.visibility&&(r.visibility=t.visibility.toUpperCase()),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a(V,{id:e,input:r});c("Memory updated"),s(t,h.colUpdateMemory);}catch(r){i(r);}}),n.command("remove").description("Delete a memory").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(j,{id:e});c(`Memory deleted: ${r.colDeleteMemory}`),s(t,{deleted:r.colDeleteMemory});}catch(r){i(r);}});}function pe(o){let n=o.command("stories").description("Collabkin stories");n.command("list").description("List stories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(Y,{treeId:e.tree,personId:e.person,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListStories.items,{headers:["ID","Title","Format","Narrator","Visibility"],rows:t.colListStories.items.map(r=>[d(r.id,12),r.title,r.format,r.narrator??"-",r.visibility])});}catch(t){i(t);}}),n.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(B,{id:e});if(!r.colStory)throw new p(`Story ${e} not found`);s(t,r.colStory);}catch(r){i(r);}}),n.command("create").description("Create a story").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Story title").option("--body <s>","Story body").option("--story-format <f>","WRITTEN|AUDIO|VIDEO").option("--narrator <s>","Narrator").option("--person <id>","Associated person ID").option("--recording-file <id>","Recording file ID").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title};e.body&&(t.body=e.body),e.storyFormat&&(t.format=e.storyFormat.toUpperCase()),e.narrator&&(t.narrator=e.narrator),e.person&&(t.personId=e.person),e.recordingFile&&(t.recordingFileId=e.recordingFile),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.tags&&(t.tags=u(e.tags));let r=await a(z,{input:t});c(`Story created: ${r.colCreateStory.title}`),s(e,r.colCreateStory);}catch(t){i(t);}}),n.command("remove").description("Delete a story").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(K,{id:e});c(`Story deleted: ${r.colDeleteStory}`),s(t,{deleted:r.colDeleteStory});}catch(r){i(r);}});}function de(o){let n=o.command("comments").description("Collabkin comments on memories & stories");n.command("list").description("List comments for a memory or a story").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async e=>{try{if(!e.memory&&!e.story)throw new p("Specify --memory or --story");let t=await a(J,{memoryId:e.memory,storyId:e.story});s(e,t.colListComments,{headers:["ID","Body","Memory","Story"],rows:t.colListComments.map(r=>[d(r.id,12),d(r.body,40),r.memoryId?d(r.memoryId,12):"-",r.storyId?d(r.storyId,12):"-"])});}catch(t){i(t);}}),n.command("add").description("Add a comment to a memory or a story").requiredOption("--body <text>","Comment body").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async e=>{try{if(!e.memory&&!e.story)throw new p("Specify --memory or --story");let t={body:e.body};e.memory&&(t.memoryId=e.memory),e.story&&(t.storyId=e.story);let r=await a(Q,{input:t});c("Comment added"),s(e,r.colAddComment);}catch(t){i(t);}}),n.command("remove").description("Delete a comment").argument("<id>","Comment ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(X,{id:e});c(`Comment deleted: ${r.colDeleteComment}`),s(t,{deleted:r.colDeleteComment});}catch(r){i(r);}});}function le(o){let n=o.command("memberships").description("Collabkin family-tree memberships");n.command("list").description("List memberships for a tree").requiredOption("--tree <id>","Family tree ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(Z,{treeId:e.tree});s(e,t.colListMemberships,{headers:["ID","Member","Person","Role","Status"],rows:t.colListMemberships.map(r=>[d(r.id,12),d(r.memberUserId,12),r.personId?d(r.personId,12):"-",r.role,r.status])});}catch(t){i(t);}}),n.command("invite").description("Invite a member to a family tree").requiredOption("--tree <id>","Family tree ID").requiredOption("--member <id>","Member user ID").option("--person <id>","Linked person ID").option("--role <r>","OWNER|STEWARD|CONTRIBUTOR|VIEWER").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,memberUserId:e.member};e.person&&(t.personId=e.person),e.role&&(t.role=e.role.toUpperCase());let r=await a(ee,{input:t});c(`Member invited: ${r.colInviteMember.memberUserId}`),s(e,r.colInviteMember);}catch(t){i(t);}}),n.command("accept").description("Accept a membership invitation").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(te,{id:e});c(`Membership accepted: ${r.colAcceptMembership.status}`),s(t,r.colAcceptMembership);}catch(r){i(r);}}),n.command("remove").description("Remove a member from a family tree").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(re,{id:e});c(`Member removed: ${r.colRemoveMember}`),s(t,{removed:r.colRemoveMember});}catch(r){i(r);}});}function me(o){o.command("health").description("Collabkin service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b(ne);c(e.colHealth),s(n,{health:e.colHealth});}catch(e){i(e);}});}var De={id:"collabkin",version:"1.0.0",displayName:"Collabkin",dependsOn:["auth","workspaces"],register(o,n){T(n);let e=o.command("collabkin").description("Collabkin collaborative family history");oe(e),ie(e),se(e),ae(e),ce(e),pe(e),de(e),le(e),me(e);}},Ir=De;module.exports=Ir;
208
+ `;function m(o){let n=Number.parseInt(o,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${o}"`);return n}function u(o){return o.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function oe(o){let n=o.command("trees").description("Collabkin family trees");n.command("list").description("List family trees").option("--status <s>","ACTIVE|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(v,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListFamilyTrees.items,{headers:["ID","Name","Surname","Status","Tags"],rows:t.colListFamilyTrees.items.map(r=>[d(r.id,12),r.name,r.surname??"-",r.status,(r.tags??[]).join(", ")])});}catch(t){i(t);}}),n.command("get").description("Get a family tree by id").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(D,{id:e});if(!r.colFamilyTree)throw new p(`Family tree ${e} not found`);s(t,r.colFamilyTree);}catch(r){i(r);}}),n.command("create").description("Create a family tree").requiredOption("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name};e.surname&&(t.surname=e.surname),e.description&&(t.description=e.description),e.coverFile&&(t.coverFileId=e.coverFile),e.tags&&(t.tags=u(e.tags));let r=await a(x,{input:t});c(`Family tree created: ${r.colCreateFamilyTree.name}`),s(e,r.colCreateFamilyTree);}catch(t){i(t);}}),n.command("update").description("Update a family tree").argument("<id>","Family tree ID").option("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.surname!==void 0&&(r.surname=t.surname),t.description!==void 0&&(r.description=t.description),t.coverFile&&(r.coverFileId=t.coverFile),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a(A,{id:e,input:r});c("Family tree updated"),s(t,h.colUpdateFamilyTree);}catch(r){i(r);}}),n.command("archive").description("Archive a family tree").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(O,{id:e});c(`Family tree archived: ${r.colArchiveFamilyTree}`),s(t,{archived:r.colArchiveFamilyTree});}catch(r){i(r);}});}function ie(o){let n=o.command("people").description("Collabkin people");n.command("list").description("List people in a tree").option("--tree <id>","Filter by family tree ID").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(R,{treeId:e.tree,lifeStatus:e.lifeStatus?e.lifeStatus.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListPeople.items,{headers:["ID","Given","Family","Gender","Life","Born"],rows:t.colListPeople.items.map(r=>[d(r.id,12),r.givenName,r.familyName??"-",r.gender,r.lifeStatus,I(r.birthDate)])});}catch(t){i(t);}}),n.command("get").description("Get a person by id").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(S,{id:e});if(!r.colPerson)throw new p(`Person ${e} not found`);s(t,r.colPerson);}catch(r){i(r);}}),n.command("create").description("Create a person").requiredOption("--tree <id>","Family tree ID").requiredOption("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,givenName:e.givenName};e.familyName&&(t.familyName=e.familyName),e.maidenName&&(t.maidenName=e.maidenName),e.nickname&&(t.nickname=e.nickname),e.gender&&(t.gender=e.gender.toUpperCase()),e.lifeStatus&&(t.lifeStatus=e.lifeStatus.toUpperCase()),e.birthDate&&(t.birthDate=e.birthDate),e.birthPlace&&(t.birthPlace=e.birthPlace),e.deathDate&&(t.deathDate=e.deathDate),e.bio&&(t.bio=e.bio),e.linkedUser&&(t.linkedUserId=e.linkedUser),e.photoFile&&(t.photoFileId=e.photoFile),e.tags&&(t.tags=u(e.tags));let r=await a(M,{input:t});c(`Person created: ${r.colCreatePerson.givenName}`),s(e,r.colCreatePerson);}catch(t){i(t);}}),n.command("update").description("Update a person").argument("<id>","Person ID").option("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.givenName&&(r.givenName=t.givenName),t.familyName!==void 0&&(r.familyName=t.familyName),t.maidenName!==void 0&&(r.maidenName=t.maidenName),t.nickname!==void 0&&(r.nickname=t.nickname),t.gender&&(r.gender=t.gender.toUpperCase()),t.lifeStatus&&(r.lifeStatus=t.lifeStatus.toUpperCase()),t.birthDate&&(r.birthDate=t.birthDate),t.birthPlace!==void 0&&(r.birthPlace=t.birthPlace),t.deathDate&&(r.deathDate=t.deathDate),t.bio!==void 0&&(r.bio=t.bio),t.linkedUser&&(r.linkedUserId=t.linkedUser),t.photoFile&&(r.photoFileId=t.photoFile),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a(P,{id:e,input:r});c("Person updated"),s(t,h.colUpdatePerson);}catch(r){i(r);}}),n.command("remove").description("Delete a person").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a($,{id:e});c(`Person deleted: ${r.colDeletePerson}`),s(t,{deleted:r.colDeletePerson});}catch(r){i(r);}});}function se(o){let n=o.command("relationships").description("Collabkin relationships between people");n.command("list").description("List relationships in a tree (optionally for one person)").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(L,{treeId:e.tree,personId:e.person});s(e,t.colListRelationships,{headers:["ID","From","To","Type","Certainty"],rows:t.colListRelationships.map(r=>[d(r.id,12),d(r.fromPersonId,12),d(r.toPersonId,12),r.type,r.certainty])});}catch(t){i(t);}}),n.command("create").description("Create a relationship between two people").requiredOption("--tree <id>","Family tree ID").requiredOption("--from <id>","From person ID").requiredOption("--to <id>","To person ID").requiredOption("--type <t>","PARENT|CHILD|SPOUSE|PARTNER|SIBLING|GRANDPARENT|GRANDCHILD|GUARDIAN").option("--certainty <c>","CONFIRMED|PROBABLE|DISPUTED|UNVERIFIED").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,fromPersonId:e.from,toPersonId:e.to,type:e.type.toUpperCase()};e.certainty&&(t.certainty=e.certainty.toUpperCase()),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.notes&&(t.notes=e.notes);let r=await a(N,{input:t});c(`Relationship created: ${r.colCreateRelationship.type}`),s(e,r.colCreateRelationship);}catch(t){i(t);}}),n.command("remove").description("Delete a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(F,{id:e});c(`Relationship deleted: ${r.colDeleteRelationship}`),s(t,{deleted:r.colDeleteRelationship});}catch(r){i(r);}});}function ae(o){let n=o.command("events").description("Collabkin timeline events");n.command("timeline").description("Show the family timeline (dated events) for a tree").requiredOption("--tree <id>","Family tree ID").option("--person <id>","Filter by person ID").option("--type <t>","Filter by event type").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(_,{treeId:e.tree,personId:e.person,type:e.type?e.type.toUpperCase():void 0});s(e,t.colTimeline,{headers:["ID","Title","Type","Date","Place","Approx"],rows:t.colTimeline.map(r=>[d(r.id,12),r.title,r.type,I(r.date),r.place??"-",r.isApproximate?"yes":"no"])});}catch(t){i(t);}}),n.command("create").description("Create a timeline event").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Event title").requiredOption("--date <iso>","Event date (ISO)").option("--type <t>","BIRTH|DEATH|MARRIAGE|DIVORCE|EDUCATION|MILITARY|IMMIGRATION|RESIDENCE|MILESTONE|OTHER").option("--description <s>","Description").option("--place <s>","Place").option("--person <id>","Associated person ID").option("--approximate","Mark the date as approximate").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title,date:e.date};e.type&&(t.type=e.type.toUpperCase()),e.description&&(t.description=e.description),e.place&&(t.place=e.place),e.person&&(t.personId=e.person),e.approximate&&(t.isApproximate=!0);let r=await a(U,{input:t});c(`Event created: ${r.colCreateEvent.title}`),s(e,r.colCreateEvent);}catch(t){i(t);}}),n.command("remove").description("Delete a timeline event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(q,{id:e});c(`Event deleted: ${r.colDeleteEvent}`),s(t,{deleted:r.colDeleteEvent});}catch(r){i(r);}});}function ce(o){let n=o.command("memories").description("Collabkin memories (media)");n.command("list").description("List memories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(W,{treeId:e.tree,personId:e.person,kind:e.kind?e.kind.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListMemories.items,{headers:["ID","Title","Kind","Place","Taken","Visibility"],rows:t.colListMemories.items.map(r=>[d(r.id,12),r.title,r.kind,r.place??"-",I(r.takenAt),r.visibility])});}catch(t){i(t);}}),n.command("get").description("Get a memory by id").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(G,{id:e});if(!r.colMemory)throw new p(`Memory ${e} not found`);s(t,r.colMemory);}catch(r){i(r);}}),n.command("create").description("Create a memory").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title};e.kind&&(t.kind=e.kind.toUpperCase()),e.description&&(t.description=e.description),e.place&&(t.place=e.place),e.takenAt&&(t.takenAt=e.takenAt),e.person&&(t.personId=e.person),e.file&&(t.fileId=e.file),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.tags&&(t.tags=u(e.tags));let r=await a(H,{input:t});c(`Memory created: ${r.colCreateMemory.title}`),s(e,r.colCreateMemory);}catch(t){i(t);}}),n.command("update").description("Update a memory").argument("<id>","Memory ID").option("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.kind&&(r.kind=t.kind.toUpperCase()),t.description!==void 0&&(r.description=t.description),t.place!==void 0&&(r.place=t.place),t.takenAt&&(r.takenAt=t.takenAt),t.person&&(r.personId=t.person),t.file&&(r.fileId=t.file),t.visibility&&(r.visibility=t.visibility.toUpperCase()),t.tags&&(r.tags=u(t.tags)),!Object.keys(r).length)throw new p("No updates specified");let h=await a(V,{id:e,input:r});c("Memory updated"),s(t,h.colUpdateMemory);}catch(r){i(r);}}),n.command("remove").description("Delete a memory").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(j,{id:e});c(`Memory deleted: ${r.colDeleteMemory}`),s(t,{deleted:r.colDeleteMemory});}catch(r){i(r);}});}function pe(o){let n=o.command("stories").description("Collabkin stories");n.command("list").description("List stories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(Y,{treeId:e.tree,personId:e.person,pagination:{limit:e.limit,offset:e.offset}});s(e,t.colListStories.items,{headers:["ID","Title","Format","Narrator","Visibility"],rows:t.colListStories.items.map(r=>[d(r.id,12),r.title,r.format,r.narrator??"-",r.visibility])});}catch(t){i(t);}}),n.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(B,{id:e});if(!r.colStory)throw new p(`Story ${e} not found`);s(t,r.colStory);}catch(r){i(r);}}),n.command("create").description("Create a story").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Story title").option("--body <s>","Story body").option("--story-format <f>","WRITTEN|AUDIO|VIDEO").option("--narrator <s>","Narrator").option("--person <id>","Associated person ID").option("--recording-file <id>","Recording file ID").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,title:e.title};e.body&&(t.body=e.body),e.storyFormat&&(t.format=e.storyFormat.toUpperCase()),e.narrator&&(t.narrator=e.narrator),e.person&&(t.personId=e.person),e.recordingFile&&(t.recordingFileId=e.recordingFile),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.tags&&(t.tags=u(e.tags));let r=await a(z,{input:t});c(`Story created: ${r.colCreateStory.title}`),s(e,r.colCreateStory);}catch(t){i(t);}}),n.command("remove").description("Delete a story").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(K,{id:e});c(`Story deleted: ${r.colDeleteStory}`),s(t,{deleted:r.colDeleteStory});}catch(r){i(r);}});}function de(o){let n=o.command("comments").description("Collabkin comments on memories & stories");n.command("list").description("List comments for a memory or a story").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async e=>{try{if(!e.memory&&!e.story)throw new p("Specify --memory or --story");let t=await a(J,{memoryId:e.memory,storyId:e.story});s(e,t.colListComments,{headers:["ID","Body","Memory","Story"],rows:t.colListComments.map(r=>[d(r.id,12),d(r.body,40),r.memoryId?d(r.memoryId,12):"-",r.storyId?d(r.storyId,12):"-"])});}catch(t){i(t);}}),n.command("add").description("Add a comment to a memory or a story").requiredOption("--body <text>","Comment body").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async e=>{try{if(!e.memory&&!e.story)throw new p("Specify --memory or --story");let t={body:e.body};e.memory&&(t.memoryId=e.memory),e.story&&(t.storyId=e.story);let r=await a(Q,{input:t});c("Comment added"),s(e,r.colAddComment);}catch(t){i(t);}}),n.command("remove").description("Delete a comment").argument("<id>","Comment ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(X,{id:e});c(`Comment deleted: ${r.colDeleteComment}`),s(t,{deleted:r.colDeleteComment});}catch(r){i(r);}});}function le(o){let n=o.command("memberships").description("Collabkin family-tree memberships");n.command("list").description("List memberships for a tree").requiredOption("--tree <id>","Family tree ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await a(Z,{treeId:e.tree});s(e,t.colListMemberships,{headers:["ID","Member","Person","Role","Status"],rows:t.colListMemberships.map(r=>[d(r.id,12),d(r.memberUserId,12),r.personId?d(r.personId,12):"-",r.role,r.status])});}catch(t){i(t);}}),n.command("invite").description("Invite a member to a family tree").requiredOption("--tree <id>","Family tree ID").requiredOption("--member <id>","Member user ID").option("--person <id>","Linked person ID").option("--role <r>","OWNER|STEWARD|CONTRIBUTOR|VIEWER").option("-f, --format <format>","Output format").action(async e=>{try{let t={treeId:e.tree,memberUserId:e.member};e.person&&(t.personId=e.person),e.role&&(t.role=e.role.toUpperCase());let r=await a(ee,{input:t});c(`Member invited: ${r.colInviteMember.memberUserId}`),s(e,r.colInviteMember);}catch(t){i(t);}}),n.command("accept").description("Accept a membership invitation").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(te,{id:e});c(`Membership accepted: ${r.colAcceptMembership.status}`),s(t,r.colAcceptMembership);}catch(r){i(r);}}),n.command("remove").description("Remove a member from a family tree").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await a(re,{id:e});c(`Member removed: ${r.colRemoveMember}`),s(t,{removed:r.colRemoveMember});}catch(r){i(r);}});}function me(o){o.command("health").description("Collabkin service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b(ne);c(e.colHealth),s(n,{health:e.colHealth});}catch(e){i(e);}});}var De={id:"collabkin",version:"1.0.0",displayName:"Collabkin",dependsOn:["auth","workspaces"],register(o,n){T(n);let e=o.command("collabkin").description("Collabkin collaborative family history");oe(e),ie(e),se(e),ae(e),ce(e),pe(e),de(e),le(e),me(e);}},Ir=De;module.exports=Ir;
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.cjs';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.cjs';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
1
- import { C as CliModule } from '../../module-DxCuik6L.js';
1
+ import { C as CliModule } from '../../module-DOIiVaXQ.js';
2
2
  import 'commander';
3
3
  import 'graphql-request';
4
4
 
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,o as o$1,d}from'../../chunk-WXDQ3S5J.js';import {o}from'../../chunk-TCBALVP4.js';var D=`
1
+ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var D=`
2
2
  query ColGetFamilyTree($id: ID!) {
3
3
  colFamilyTree(id: $id) {
4
4
  id name surname description status tags createdAt updatedAt workspaceId