@burdenoff/cli-sdk 2026.1102.1 → 2026.1102.2

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 (101) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
  3. package/dist/modules/adaptercloud/index.cjs +4 -4
  4. package/dist/modules/adaptercloud/index.js +2 -2
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +8 -8
  9. package/dist/modules/atheletebridge/index.js +2 -2
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +1 -1
  13. package/dist/modules/billing/index.js +2 -2
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.js +2 -2
  17. package/dist/modules/channels/index.cjs +3 -3
  18. package/dist/modules/channels/index.js +2 -2
  19. package/dist/modules/collabkin/index.cjs +4 -4
  20. package/dist/modules/collabkin/index.js +2 -2
  21. package/dist/modules/comradecircle/index.cjs +6 -6
  22. package/dist/modules/comradecircle/index.js +2 -2
  23. package/dist/modules/conversations/index.cjs +7 -7
  24. package/dist/modules/conversations/index.js +2 -2
  25. package/dist/modules/coolandlovely/index.cjs +2 -2
  26. package/dist/modules/coolandlovely/index.js +2 -2
  27. package/dist/modules/cosmicintersection/index.cjs +6 -6
  28. package/dist/modules/cosmicintersection/index.js +2 -2
  29. package/dist/modules/crewfoundry/index.js +2 -2
  30. package/dist/modules/devportal/index.cjs +2 -2
  31. package/dist/modules/devportal/index.js +2 -2
  32. package/dist/modules/ecoimpacthub/index.cjs +5 -5
  33. package/dist/modules/ecoimpacthub/index.js +2 -2
  34. package/dist/modules/eventfullymanaged/index.cjs +12 -12
  35. package/dist/modules/eventfullymanaged/index.js +2 -2
  36. package/dist/modules/export/index.cjs +4 -4
  37. package/dist/modules/export/index.js +2 -2
  38. package/dist/modules/files/index.cjs +3 -3
  39. package/dist/modules/files/index.js +4 -4
  40. package/dist/modules/fluidgrids/index.cjs +16 -16
  41. package/dist/modules/fluidgrids/index.js +3 -3
  42. package/dist/modules/ggnomad/index.cjs +4 -4
  43. package/dist/modules/ggnomad/index.js +2 -2
  44. package/dist/modules/govcitizenhub/index.cjs +4 -4
  45. package/dist/modules/govcitizenhub/index.js +2 -2
  46. package/dist/modules/groups/index.cjs +4 -4
  47. package/dist/modules/groups/index.js +2 -2
  48. package/dist/modules/headshotmarketing/index.js +2 -2
  49. package/dist/modules/hookmovies/index.cjs +6 -6
  50. package/dist/modules/hookmovies/index.js +2 -2
  51. package/dist/modules/housingvista/index.cjs +3 -3
  52. package/dist/modules/housingvista/index.js +2 -2
  53. package/dist/modules/integrations/index.cjs +5 -5
  54. package/dist/modules/integrations/index.js +2 -2
  55. package/dist/modules/intelwatchtower/index.cjs +5 -5
  56. package/dist/modules/intelwatchtower/index.js +2 -2
  57. package/dist/modules/kadaikodi/index.cjs +2 -2
  58. package/dist/modules/kadaikodi/index.js +2 -2
  59. package/dist/modules/labsofscience/index.cjs +3 -3
  60. package/dist/modules/labsofscience/index.js +2 -2
  61. package/dist/modules/manufacturedops/index.cjs +2 -2
  62. package/dist/modules/manufacturedops/index.js +2 -2
  63. package/dist/modules/movethewheels/index.js +2 -2
  64. package/dist/modules/notifications/index.cjs +2 -2
  65. package/dist/modules/notifications/index.js +2 -2
  66. package/dist/modules/organizations/index.js +2 -2
  67. package/dist/modules/planmagnet/index.js +2 -2
  68. package/dist/modules/products/index.cjs +4 -4
  69. package/dist/modules/products/index.js +2 -2
  70. package/dist/modules/proserviceworld/index.cjs +2 -2
  71. package/dist/modules/proserviceworld/index.js +2 -2
  72. package/dist/modules/rbac/index.js +2 -2
  73. package/dist/modules/sandbox/index.cjs +17 -17
  74. package/dist/modules/sandbox/index.js +1 -1
  75. package/dist/modules/scheduler/index.cjs +2 -2
  76. package/dist/modules/scheduler/index.js +2 -2
  77. package/dist/modules/security/index.cjs +3 -3
  78. package/dist/modules/security/index.js +2 -2
  79. package/dist/modules/semanticfed/index.cjs +3 -3
  80. package/dist/modules/semanticfed/index.js +2 -2
  81. package/dist/modules/store/index.cjs +3 -3
  82. package/dist/modules/store/index.js +2 -2
  83. package/dist/modules/subscriberbot/index.cjs +1 -1
  84. package/dist/modules/subscriberbot/index.js +2 -2
  85. package/dist/modules/support/index.cjs +2 -2
  86. package/dist/modules/support/index.js +2 -2
  87. package/dist/modules/tags/index.js +2 -2
  88. package/dist/modules/technospam/index.cjs +2 -2
  89. package/dist/modules/technospam/index.js +2 -2
  90. package/dist/modules/theculturepost/index.js +2 -2
  91. package/dist/modules/theglobalfuel/index.cjs +2 -2
  92. package/dist/modules/theglobalfuel/index.js +2 -2
  93. package/dist/modules/timecampus/index.js +2 -2
  94. package/dist/modules/tours/index.cjs +2 -2
  95. package/dist/modules/tours/index.js +2 -2
  96. package/dist/modules/vibecontrols/index.cjs +563 -567
  97. package/dist/modules/vibecontrols/index.js +5 -4
  98. package/dist/modules/workspaces/index.cjs +4 -4
  99. package/dist/modules/workspaces/index.js +2 -2
  100. package/package.json +1 -1
  101. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a as a$1,b as b$1,h,p as p$1,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var b=`
1
+ import {a as a$1,b as b$1,i,r,h,k as k$1,q as q$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var b=`
2
2
  query TecCourse($id: ID!) {
3
3
  tecCourse(id: $id) {
4
4
  id slug title topic summary level status estimatedMinutes instructorId
@@ -322,4 +322,4 @@ import {a as a$1,b as b$1,h,p as p$1,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js
322
322
  query TecHealth {
323
323
  tecHealth
324
324
  }
325
- `;function a(d){let n=Number.parseInt(d,10);if(Number.isNaN(n))throw new o(`Expected an integer but got "${d}"`);return n}function p(d){return d.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function mt(d){let n=d.command("courses").description("Technospam courses");n.command("list").description("List courses").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(E,{level:e.level?e.level.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListCourses.items,{headers:["ID","Title","Level","Status","Minutes"],rows:t.tecListCourses.items.map(i=>[p$1(i.id,12),i.title,i.level,i.status,String(i.estimatedMinutes??0)])});}catch(t){g(t);}}),n.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i=await b$1(b,{id:e});if(!i.tecCourse)throw new o(`Course ${e} not found`);h(t,i.tecCourse);}catch(i){g(i);}}),n.command("create").description("Create a course").requiredOption("--title <t>","Course title").requiredOption("--slug <slug>","URL slug").option("--topic <t>","Topic").option("--summary <s>","Summary").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--estimated-minutes <n>","Estimated minutes",a).option("--instructor-id <id>","Instructor user ID").option("--cover-file-id <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,level:(e.level??"BEGINNER").toUpperCase()};e.topic&&(t.topic=e.topic),e.summary&&(t.summary=e.summary),e.estimatedMinutes!==void 0&&(t.estimatedMinutes=e.estimatedMinutes),e.instructorId&&(t.instructorId=e.instructorId),e.coverFileId&&(t.coverFileId=e.coverFileId),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(T,{input:t});i(`Course created: ${i$1.tecCreateCourse.title}`),h(e,i$1.tecCreateCourse);}catch(t){g(t);}}),n.command("update").description("Update a course").argument("<id>","Course ID").option("--title <t>","Course title").option("--topic <t>","Topic").option("--summary <s>","Summary").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--estimated-minutes <n>","Estimated minutes",a).option("--instructor-id <id>","Instructor user ID").option("--cover-file-id <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.topic!==void 0&&(i$1.topic=t.topic),t.summary!==void 0&&(i$1.summary=t.summary),t.level&&(i$1.level=t.level.toUpperCase()),t.estimatedMinutes!==void 0&&(i$1.estimatedMinutes=t.estimatedMinutes),t.instructorId&&(i$1.instructorId=t.instructorId),t.coverFileId&&(i$1.coverFileId=t.coverFileId),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(A,{id:e,input:i$1});i("Course updated"),h(t,I.tecUpdateCourse);}catch(i){g(i);}}),n.command("publish").description("Publish a course (DRAFT -> PUBLISHED)").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(y,{id:e});i(`Course published: ${i$1.tecPublishCourse.title}`),h(t,i$1.tecPublishCourse);}catch(i){g(i);}}),n.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(R,{id:e});i(i$1.tecArchiveCourse?"Course archived":"Course not archived"),h(t,{archived:i$1.tecArchiveCourse});}catch(i){g(i);}});}function dt(d){let n=d.command("lessons").description("Technospam course lessons");n.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(O,{courseId:e.course});h(e,t.tecListLessons,{headers:["ID","Title","Kind","Position","Minutes","Preview"],rows:t.tecListLessons.map(i=>[p$1(i.id,12),i.title,i.kind,String(i.position),String(i.estimatedMinutes??0),i.isPreview?"yes":"no"])});}catch(t){g(t);}}),n.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <t>","Lesson title").option("--kind <k>","ARTICLE|VIDEO|QUIZ|INTERACTIVE|PROJECT","ARTICLE").option("--content <s>","Lesson content").option("--position <n>","Order position",a).option("--estimated-minutes <n>","Estimated minutes",a).option("--file-id <id>","Attachment / video File ID").option("--preview","Mark as a free preview lesson").option("-f, --format <format>","Output format").action(async e=>{try{let t={courseId:e.course,title:e.title,kind:(e.kind??"ARTICLE").toUpperCase()};e.content&&(t.content=e.content),e.position!==void 0&&(t.position=e.position),e.estimatedMinutes!==void 0&&(t.estimatedMinutes=e.estimatedMinutes),e.fileId&&(t.fileId=e.fileId),e.preview&&(t.isPreview=!0);let i$1=await b$1(w,{input:t});i(`Lesson created: ${i$1.tecCreateLesson.title}`),h(e,i$1.tecCreateLesson);}catch(t){g(t);}}),n.command("update").description("Update a lesson").argument("<id>","Lesson ID").option("--title <t>","Lesson title").option("--kind <k>","ARTICLE|VIDEO|QUIZ|INTERACTIVE|PROJECT").option("--content <s>","Lesson content").option("--position <n>","Order position",a).option("--estimated-minutes <n>","Estimated minutes",a).option("--file-id <id>","Attachment / video File ID").option("--preview <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.kind&&(i$1.kind=t.kind.toUpperCase()),t.content!==void 0&&(i$1.content=t.content),t.position!==void 0&&(i$1.position=t.position),t.estimatedMinutes!==void 0&&(i$1.estimatedMinutes=t.estimatedMinutes),t.fileId&&(i$1.fileId=t.fileId),t.preview!==void 0&&(i$1.isPreview=t.preview),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(P,{id:e,input:i$1});i("Lesson updated"),h(t,I.tecUpdateLesson);}catch(i){g(i);}});}function ut(d){let n=d.command("enrollments").description("Technospam course enrollments");n.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(k,{courseId:e.course,learnerId:e.learner,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %","Lessons"],rows:t.tecListEnrollments.items.map(i=>[p$1(i.id,12),p$1(i.courseId,12),p$1(i.learnerId,12),i.status,String(i.progressPct),String(i.lessonsCompleted)])});}catch(t){g(t);}}),n.command("enroll").description("Enroll the calling user in a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(L,{input:{courseId:e.course}});i(`Enrolled in course ${t.tecEnroll.courseId}`),h(e,t.tecEnroll);}catch(t){g(t);}}),n.command("update-progress").description("Update a learner's enrollment progress (auto-completes at 100%)").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--progress-pct <n>","Progress percent (0-100)",a).option("--lessons-completed <n>","Lessons completed count",a).option("-f, --format <format>","Output format").action(async e=>{try{let t={enrollmentId:e.enrollment,progressPct:e.progressPct};e.lessonsCompleted!==void 0&&(t.lessonsCompleted=e.lessonsCompleted);let i$1=await b$1(M,{input:t});i(`Progress updated to ${i$1.tecUpdateProgress.progressPct}%`),h(e,i$1.tecUpdateProgress);}catch(t){g(t);}});}function pt(d){let n=d.command("mentors").description("Technospam mentors");n.command("list").description("List mentors").option("--status <s>","PENDING|ACTIVE|PAUSED|INACTIVE").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(D,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListMentors.items,{headers:["ID","Headline","Status","Rate","Rating","Accepting"],rows:t.tecListMentors.items.map(i=>[p$1(i.id,12),p$1(i.headline,30),i.status,String(i.hourlyRate??0),String(i.ratingAvg??0),i.isAcceptingMentees?"yes":"no"])});}catch(t){g(t);}}),n.command("get").description("Get a mentor by id").argument("<id>","Mentor ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i=await b$1($,{id:e});if(!i.tecMentor)throw new o(`Mentor ${e} not found`);h(t,i.tecMentor);}catch(i){g(i);}}),n.command("become").description("Create the calling user's mentor profile").requiredOption("--headline <h>","Mentor headline").option("--bio <s>","Bio").option("--expertise <csv>","Comma-separated areas of expertise").option("--hourly-rate <n>","Hourly rate",a).option("--currency <c>","Currency code").option("-f, --format <format>","Output format").action(async e=>{try{let t={headline:e.headline};e.bio&&(t.bio=e.bio),e.expertise&&(t.expertise=p(e.expertise)),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.currency&&(t.currency=e.currency);let i$1=await b$1(U,{input:t});i(`Mentor profile created: ${i$1.tecBecomeMentor.headline}`),h(e,i$1.tecBecomeMentor);}catch(t){g(t);}}),n.command("update").description("Update a mentor profile").argument("<id>","Mentor ID").option("--headline <h>","Mentor headline").option("--bio <s>","Bio").option("--expertise <csv>","Comma-separated areas of expertise").option("--hourly-rate <n>","Hourly rate",a).option("--currency <c>","Currency code").option("--accepting <bool>","true|false (accepting mentees)",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.headline&&(i$1.headline=t.headline),t.bio!==void 0&&(i$1.bio=t.bio),t.expertise&&(i$1.expertise=p(t.expertise)),t.hourlyRate!==void 0&&(i$1.hourlyRate=t.hourlyRate),t.currency&&(i$1.currency=t.currency),t.accepting!==void 0&&(i$1.isAcceptingMentees=t.accepting),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(v,{id:e,input:i$1});i("Mentor updated"),h(t,I.tecUpdateMentor);}catch(i){g(i);}}),n.command("approve").description("Approve a pending mentor profile (PENDING -> ACTIVE)").argument("<id>","Mentor ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(N,{id:e});i(`Mentor approved: ${i$1.tecApproveMentor.status}`),h(t,i$1.tecApproveMentor);}catch(i){g(i);}});}function lt(d){let n=d.command("sessions").description("Technospam mentorship sessions");n.command("list").description("List mentorship sessions").option("--mentor <id>","Filter by mentor ID").option("--mentee <id>","Filter by mentee ID").option("--status <s>","REQUESTED|CONFIRMED|COMPLETED|CANCELLED|NO_SHOW").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(x,{mentorId:e.mentor,menteeId:e.mentee,status:e.status?e.status.toUpperCase():void 0});h(e,t.tecListSessions,{headers:["ID","Mentor","Mentee","Topic","Status","Scheduled"],rows:t.tecListSessions.map(i=>[p$1(i.id,12),p$1(i.mentorId,12),p$1(i.menteeId,12),p$1(i.topic,24),i.status,o$1(i.scheduledAt)])});}catch(t){g(t);}}),n.command("book").description("Book a 1:1 session with a mentor as the calling mentee").requiredOption("--mentor <id>","Mentor ID").requiredOption("--topic <t>","Session topic").requiredOption("--scheduled-at <iso>","Scheduled time (ISO date)").option("--agenda <s>","Agenda").option("--duration-minutes <n>","Duration (minutes)",a).option("-f, --format <format>","Output format").action(async e=>{try{let t={mentorId:e.mentor,topic:e.topic,scheduledAt:e.scheduledAt};e.agenda&&(t.agenda=e.agenda),e.durationMinutes!==void 0&&(t.durationMinutes=e.durationMinutes);let i$1=await b$1(_,{input:t});i(`Session booked: ${i$1.tecBookSession.topic}`),h(e,i$1.tecBookSession);}catch(t){g(t);}}),n.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("--meeting-url <url>","Meeting URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(H,{id:e,meetingUrl:t.meetingUrl});i("Session confirmed"),h(t,i$1.tecConfirmSession);}catch(i){g(i);}}),n.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(B,{id:e});i("Session cancelled"),h(t,i$1.tecCancelSession);}catch(i){g(i);}}),n.command("complete").description("Complete a session with optional rating and feedback").argument("<id>","Session ID").option("--rating <n>","Rating (1-5)",a).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(q,{id:e,rating:t.rating,feedback:t.feedback});i("Session completed"),h(t,i$1.tecCompleteSession);}catch(i){g(i);}});}function ft(d){let n=d.command("hackathons").description("Technospam hackathons");n.command("list").description("List hackathons").option("--status <s>","DRAFT|REGISTRATION_OPEN|IN_PROGRESS|JUDGING|COMPLETED|CANCELLED").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(F,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListHackathons.items,{headers:["ID","Title","Status","Start","Prize"],rows:t.tecListHackathons.items.map(i=>[p$1(i.id,12),i.title,i.status,o$1(i.startAt),String(i.prizePool??0)])});}catch(t){g(t);}}),n.command("get").description("Get a hackathon by id").argument("<id>","Hackathon ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i=await b$1(z,{id:e});if(!i.tecHackathon)throw new o(`Hackathon ${e} not found`);h(t,i.tecHackathon);}catch(i){g(i);}}),n.command("create").description("Create a hackathon").requiredOption("--title <t>","Hackathon title").requiredOption("--slug <slug>","URL slug").requiredOption("--start-at <iso>","Start time (ISO date)").requiredOption("--end-at <iso>","End time (ISO date)").option("--theme <t>","Theme").option("--description <s>","Description").option("--submission-deadline <iso>","Submission deadline (ISO date)").option("--max-team-size <n>","Max team size",a).option("--prize-pool <n>","Prize pool",a).option("--currency <c>","Currency code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,startAt:e.startAt,endAt:e.endAt};e.theme&&(t.theme=e.theme),e.description&&(t.description=e.description),e.submissionDeadline&&(t.submissionDeadline=e.submissionDeadline),e.maxTeamSize!==void 0&&(t.maxTeamSize=e.maxTeamSize),e.prizePool!==void 0&&(t.prizePool=e.prizePool),e.currency&&(t.currency=e.currency),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(G,{input:t});i(`Hackathon created: ${i$1.tecCreateHackathon.title}`),h(e,i$1.tecCreateHackathon);}catch(t){g(t);}}),n.command("update").description("Update a hackathon").argument("<id>","Hackathon ID").option("--title <t>","Hackathon title").option("--theme <t>","Theme").option("--description <s>","Description").option("--start-at <iso>","Start time (ISO date)").option("--end-at <iso>","End time (ISO date)").option("--submission-deadline <iso>","Submission deadline (ISO date)").option("--max-team-size <n>","Max team size",a).option("--prize-pool <n>","Prize pool",a).option("--currency <c>","Currency code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.theme!==void 0&&(i$1.theme=t.theme),t.description!==void 0&&(i$1.description=t.description),t.startAt&&(i$1.startAt=t.startAt),t.endAt&&(i$1.endAt=t.endAt),t.submissionDeadline&&(i$1.submissionDeadline=t.submissionDeadline),t.maxTeamSize!==void 0&&(i$1.maxTeamSize=t.maxTeamSize),t.prizePool!==void 0&&(i$1.prizePool=t.prizePool),t.currency&&(i$1.currency=t.currency),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(j,{id:e,input:i$1});i("Hackathon updated"),h(t,I.tecUpdateHackathon);}catch(i){g(i);}}),n.command("open-registration").description("Open registration for a hackathon (DRAFT -> REGISTRATION_OPEN)").argument("<id>","Hackathon ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(V,{id:e});i(`Registration open: ${i$1.tecOpenRegistration.status}`),h(t,i$1.tecOpenRegistration);}catch(i){g(i);}});}function gt(d){let n=d.command("teams").description("Technospam hackathon teams");n.command("list").description("List teams for a hackathon").requiredOption("--hackathon <id>","Hackathon ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(W,{hackathonId:e.hackathon});h(e,t.tecListTeams,{headers:["ID","Name","Captain","Status","Score"],rows:t.tecListTeams.map(i=>[p$1(i.id,12),i.name,p$1(i.captainId,12),i.status,String(i.score??0)])});}catch(t){g(t);}}),n.command("register").description("Register a team for a hackathon with the calling user as captain").requiredOption("--hackathon <id>","Hackathon ID").requiredOption("--name <name>","Team name").option("--members <csv>","Comma-separated member user IDs").option("-f, --format <format>","Output format").action(async e=>{try{let t={hackathonId:e.hackathon,name:e.name};e.members&&(t.memberIds=p(e.members));let i$1=await b$1(K,{input:t});i(`Team registered: ${i$1.tecRegisterTeam.name}`),h(e,i$1.tecRegisterTeam);}catch(t){g(t);}}),n.command("submit-project").description("Submit a team's project for judging").requiredOption("--team <id>","Team ID").requiredOption("--project-name <n>","Project name").option("--project-url <url>","Project URL").option("--repo-url <url>","Repository URL").option("--pitch <s>","Pitch").option("-f, --format <format>","Output format").action(async e=>{try{let t={teamId:e.team,projectName:e.projectName};e.projectUrl&&(t.projectUrl=e.projectUrl),e.repoUrl&&(t.repoUrl=e.repoUrl),e.pitch&&(t.pitch=e.pitch);let i$1=await b$1(J,{input:t});i(`Project submitted: ${i$1.tecSubmitProject.status}`),h(e,i$1.tecSubmitProject);}catch(t){g(t);}}),n.command("score").description("Record a judge score for a team and optionally mark it WINNER").argument("<id>","Team ID").requiredOption("--score <n>","Score",a).option("--winner","Mark the team as winner").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(Y,{id:e,score:t.score,winner:t.winner??void 0});i(`Team scored: ${i$1.tecScoreTeam.score}`),h(t,i$1.tecScoreTeam);}catch(i){g(i);}});}function It(d){let n=d.command("problems").description("Technospam practice problems");n.command("list").description("List problems").option("--difficulty <d>","EASY|MEDIUM|HARD").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--topic <t>","Filter by topic").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Q,{difficulty:e.difficulty?e.difficulty.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,topic:e.topic,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListProblems.items,{headers:["ID","Title","Difficulty","Status","Points"],rows:t.tecListProblems.items.map(i=>[p$1(i.id,12),i.title,i.difficulty,i.status,String(i.points??0)])});}catch(t){g(t);}}),n.command("get").description("Get a problem by id").argument("<id>","Problem ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i=await b$1(X,{id:e});if(!i.tecProblem)throw new o(`Problem ${e} not found`);h(t,i.tecProblem);}catch(i){g(i);}}),n.command("create").description("Create a problem").requiredOption("--title <t>","Problem title").requiredOption("--slug <slug>","URL slug").option("--topic <t>","Topic").option("--statement <s>","Problem statement").option("--difficulty <d>","EASY|MEDIUM|HARD","EASY").option("--points <n>","Points",a).option("--languages <csv>","Comma-separated allowed languages").option("--starter-code <s>","Starter code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,difficulty:(e.difficulty??"EASY").toUpperCase()};e.topic&&(t.topic=e.topic),e.statement&&(t.statement=e.statement),e.points!==void 0&&(t.points=e.points),e.languages&&(t.languages=p(e.languages)),e.starterCode&&(t.starterCode=e.starterCode),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(Z,{input:t});i(`Problem created: ${i$1.tecCreateProblem.title}`),h(e,i$1.tecCreateProblem);}catch(t){g(t);}}),n.command("update").description("Update a problem").argument("<id>","Problem ID").option("--title <t>","Problem title").option("--topic <t>","Topic").option("--statement <s>","Problem statement").option("--difficulty <d>","EASY|MEDIUM|HARD").option("--points <n>","Points",a).option("--languages <csv>","Comma-separated allowed languages").option("--starter-code <s>","Starter code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.topic!==void 0&&(i$1.topic=t.topic),t.statement!==void 0&&(i$1.statement=t.statement),t.difficulty&&(i$1.difficulty=t.difficulty.toUpperCase()),t.points!==void 0&&(i$1.points=t.points),t.languages&&(i$1.languages=p(t.languages)),t.starterCode!==void 0&&(i$1.starterCode=t.starterCode),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(tt,{id:e,input:i$1});i("Problem updated"),h(t,I.tecUpdateProblem);}catch(i){g(i);}}),n.command("publish").description("Publish a problem (DRAFT -> PUBLISHED)").argument("<id>","Problem ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(et,{id:e});i(`Problem published: ${i$1.tecPublishProblem.title}`),h(t,i$1.tecPublishProblem);}catch(i){g(i);}});}function Ct(d){let n=d.command("submissions").description("Technospam problem submissions");n.command("list").description("List submissions").option("--problem <id>","Filter by problem ID").option("--learner <id>","Filter by learner ID").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(it,{problemId:e.problem,learnerId:e.learner,pagination:{limit:e.limit,offset:e.offset}});h(e,t.tecListSubmissions.items,{headers:["ID","Problem","Learner","Language","Verdict","Points"],rows:t.tecListSubmissions.items.map(i=>[p$1(i.id,12),p$1(i.problemId,12),p$1(i.learnerId,12),i.language,i.verdict,String(i.pointsAwarded??0)])});}catch(t){g(t);}}),n.command("submit").description("Submit a solution to a problem").requiredOption("--problem <id>","Problem ID").requiredOption("--language <l>","Language").requiredOption("--code <c>","Solution code").option("-f, --format <format>","Output format").action(async e=>{try{let t={problemId:e.problem,language:e.language,code:e.code},i$1=await b$1(nt,{input:t});i(`Solution submitted: ${i$1.tecSubmitSolution.verdict}`),h(e,i$1.tecSubmitSolution);}catch(t){g(t);}}),n.command("grade").description("Record the grader verdict for a submission").argument("<id>","Submission ID").requiredOption("--verdict <v>","PENDING|ACCEPTED|WRONG_ANSWER|TIME_LIMIT_EXCEEDED|RUNTIME_ERROR|COMPILE_ERROR").option("--runtime-ms <n>","Runtime in milliseconds",a).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(ot,{id:e,verdict:t.verdict.toUpperCase(),runtimeMs:t.runtimeMs});i(`Submission graded: ${i$1.tecGradeSubmission.verdict}`),h(t,i$1.tecGradeSubmission);}catch(i){g(i);}});}function ht(d){let n=d.command("certificates").description("Technospam completion certificates");n.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 e=>{try{let t=await b$1(rt,{courseId:e.course,learnerId:e.learner});h(e,t.tecListCertificates,{headers:["ID","Serial","Course","Learner","Score","Status"],rows:t.tecListCertificates.map(i=>[p$1(i.id,12),i.serial,p$1(i.courseId,12),p$1(i.learnerId,12),String(i.score),i.status])});}catch(t){g(t);}}),n.command("issue").description("Issue a verifiable completion certificate for a learner on a course").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--score <n>","Score",a).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(st,{courseId:e.course,learnerId:e.learner,score:e.score});i(`Certificate issued: ${t.tecIssueCertificate.serial}`),h(e,t.tecIssueCertificate);}catch(t){g(t);}}),n.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("--reason <s>","Revocation reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(at,{id:e,reason:t.reason});i(`Certificate revoked: ${i$1.tecRevokeCertificate.status}`),h(t,i$1.tecRevokeCertificate);}catch(i){g(i);}});}function St(d$1){d$1.command("health").description("Technospam service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await d(ct);i(e.tecHealth),h(n,{health:e.tecHealth});}catch(e){g(e);}});}var bt={id:"technospam",version:"1.0.0",displayName:"Technospam",dependsOn:["auth","workspaces"],register(d,n){a$1(n);let e=d.command("technospam").description("Technospam developer-education platform");mt(e),dt(e),ut(e),pt(e),lt(e),ft(e),gt(e),It(e),Ct(e),ht(e),St(e);}},Ce=bt;export{Ce as default};
325
+ `;function a(d){let n=Number.parseInt(d,10);if(Number.isNaN(n))throw new o(`Expected an integer but got "${d}"`);return n}function p(d){return d.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function mt(d){let n=d.command("courses").description("Technospam courses");n.command("list").description("List courses").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(E,{level:e.level?e.level.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListCourses.items,{headers:["ID","Title","Level","Status","Minutes"],rows:t.tecListCourses.items.map(i=>[r(i.id,12),i.title,i.level,i.status,String(i.estimatedMinutes??0)])});}catch(t){h(t);}}),n.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(b,{id:e});if(!i$1.tecCourse)throw new o(`Course ${e} not found`);i(t,i$1.tecCourse);}catch(i){h(i);}}),n.command("create").description("Create a course").requiredOption("--title <t>","Course title").requiredOption("--slug <slug>","URL slug").option("--topic <t>","Topic").option("--summary <s>","Summary").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--estimated-minutes <n>","Estimated minutes",a).option("--instructor-id <id>","Instructor user ID").option("--cover-file-id <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,level:(e.level??"BEGINNER").toUpperCase()};e.topic&&(t.topic=e.topic),e.summary&&(t.summary=e.summary),e.estimatedMinutes!==void 0&&(t.estimatedMinutes=e.estimatedMinutes),e.instructorId&&(t.instructorId=e.instructorId),e.coverFileId&&(t.coverFileId=e.coverFileId),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(T,{input:t});k$1(`Course created: ${i$1.tecCreateCourse.title}`),i(e,i$1.tecCreateCourse);}catch(t){h(t);}}),n.command("update").description("Update a course").argument("<id>","Course ID").option("--title <t>","Course title").option("--topic <t>","Topic").option("--summary <s>","Summary").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--estimated-minutes <n>","Estimated minutes",a).option("--instructor-id <id>","Instructor user ID").option("--cover-file-id <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.topic!==void 0&&(i$1.topic=t.topic),t.summary!==void 0&&(i$1.summary=t.summary),t.level&&(i$1.level=t.level.toUpperCase()),t.estimatedMinutes!==void 0&&(i$1.estimatedMinutes=t.estimatedMinutes),t.instructorId&&(i$1.instructorId=t.instructorId),t.coverFileId&&(i$1.coverFileId=t.coverFileId),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(A,{id:e,input:i$1});k$1("Course updated"),i(t,I.tecUpdateCourse);}catch(i){h(i);}}),n.command("publish").description("Publish a course (DRAFT -> PUBLISHED)").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(y,{id:e});k$1(`Course published: ${i$1.tecPublishCourse.title}`),i(t,i$1.tecPublishCourse);}catch(i){h(i);}}),n.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(R,{id:e});k$1(i$1.tecArchiveCourse?"Course archived":"Course not archived"),i(t,{archived:i$1.tecArchiveCourse});}catch(i){h(i);}});}function dt(d){let n=d.command("lessons").description("Technospam course lessons");n.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(O,{courseId:e.course});i(e,t.tecListLessons,{headers:["ID","Title","Kind","Position","Minutes","Preview"],rows:t.tecListLessons.map(i=>[r(i.id,12),i.title,i.kind,String(i.position),String(i.estimatedMinutes??0),i.isPreview?"yes":"no"])});}catch(t){h(t);}}),n.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <t>","Lesson title").option("--kind <k>","ARTICLE|VIDEO|QUIZ|INTERACTIVE|PROJECT","ARTICLE").option("--content <s>","Lesson content").option("--position <n>","Order position",a).option("--estimated-minutes <n>","Estimated minutes",a).option("--file-id <id>","Attachment / video File ID").option("--preview","Mark as a free preview lesson").option("-f, --format <format>","Output format").action(async e=>{try{let t={courseId:e.course,title:e.title,kind:(e.kind??"ARTICLE").toUpperCase()};e.content&&(t.content=e.content),e.position!==void 0&&(t.position=e.position),e.estimatedMinutes!==void 0&&(t.estimatedMinutes=e.estimatedMinutes),e.fileId&&(t.fileId=e.fileId),e.preview&&(t.isPreview=!0);let i$1=await b$1(w,{input:t});k$1(`Lesson created: ${i$1.tecCreateLesson.title}`),i(e,i$1.tecCreateLesson);}catch(t){h(t);}}),n.command("update").description("Update a lesson").argument("<id>","Lesson ID").option("--title <t>","Lesson title").option("--kind <k>","ARTICLE|VIDEO|QUIZ|INTERACTIVE|PROJECT").option("--content <s>","Lesson content").option("--position <n>","Order position",a).option("--estimated-minutes <n>","Estimated minutes",a).option("--file-id <id>","Attachment / video File ID").option("--preview <bool>","true|false",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.kind&&(i$1.kind=t.kind.toUpperCase()),t.content!==void 0&&(i$1.content=t.content),t.position!==void 0&&(i$1.position=t.position),t.estimatedMinutes!==void 0&&(i$1.estimatedMinutes=t.estimatedMinutes),t.fileId&&(i$1.fileId=t.fileId),t.preview!==void 0&&(i$1.isPreview=t.preview),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(P,{id:e,input:i$1});k$1("Lesson updated"),i(t,I.tecUpdateLesson);}catch(i){h(i);}});}function ut(d){let n=d.command("enrollments").description("Technospam course enrollments");n.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(k,{courseId:e.course,learnerId:e.learner,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %","Lessons"],rows:t.tecListEnrollments.items.map(i=>[r(i.id,12),r(i.courseId,12),r(i.learnerId,12),i.status,String(i.progressPct),String(i.lessonsCompleted)])});}catch(t){h(t);}}),n.command("enroll").description("Enroll the calling user in a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(L,{input:{courseId:e.course}});k$1(`Enrolled in course ${t.tecEnroll.courseId}`),i(e,t.tecEnroll);}catch(t){h(t);}}),n.command("update-progress").description("Update a learner's enrollment progress (auto-completes at 100%)").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--progress-pct <n>","Progress percent (0-100)",a).option("--lessons-completed <n>","Lessons completed count",a).option("-f, --format <format>","Output format").action(async e=>{try{let t={enrollmentId:e.enrollment,progressPct:e.progressPct};e.lessonsCompleted!==void 0&&(t.lessonsCompleted=e.lessonsCompleted);let i$1=await b$1(M,{input:t});k$1(`Progress updated to ${i$1.tecUpdateProgress.progressPct}%`),i(e,i$1.tecUpdateProgress);}catch(t){h(t);}});}function pt(d){let n=d.command("mentors").description("Technospam mentors");n.command("list").description("List mentors").option("--status <s>","PENDING|ACTIVE|PAUSED|INACTIVE").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(D,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListMentors.items,{headers:["ID","Headline","Status","Rate","Rating","Accepting"],rows:t.tecListMentors.items.map(i=>[r(i.id,12),r(i.headline,30),i.status,String(i.hourlyRate??0),String(i.ratingAvg??0),i.isAcceptingMentees?"yes":"no"])});}catch(t){h(t);}}),n.command("get").description("Get a mentor by id").argument("<id>","Mentor ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1($,{id:e});if(!i$1.tecMentor)throw new o(`Mentor ${e} not found`);i(t,i$1.tecMentor);}catch(i){h(i);}}),n.command("become").description("Create the calling user's mentor profile").requiredOption("--headline <h>","Mentor headline").option("--bio <s>","Bio").option("--expertise <csv>","Comma-separated areas of expertise").option("--hourly-rate <n>","Hourly rate",a).option("--currency <c>","Currency code").option("-f, --format <format>","Output format").action(async e=>{try{let t={headline:e.headline};e.bio&&(t.bio=e.bio),e.expertise&&(t.expertise=p(e.expertise)),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.currency&&(t.currency=e.currency);let i$1=await b$1(U,{input:t});k$1(`Mentor profile created: ${i$1.tecBecomeMentor.headline}`),i(e,i$1.tecBecomeMentor);}catch(t){h(t);}}),n.command("update").description("Update a mentor profile").argument("<id>","Mentor ID").option("--headline <h>","Mentor headline").option("--bio <s>","Bio").option("--expertise <csv>","Comma-separated areas of expertise").option("--hourly-rate <n>","Hourly rate",a).option("--currency <c>","Currency code").option("--accepting <bool>","true|false (accepting mentees)",e=>e==="true").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.headline&&(i$1.headline=t.headline),t.bio!==void 0&&(i$1.bio=t.bio),t.expertise&&(i$1.expertise=p(t.expertise)),t.hourlyRate!==void 0&&(i$1.hourlyRate=t.hourlyRate),t.currency&&(i$1.currency=t.currency),t.accepting!==void 0&&(i$1.isAcceptingMentees=t.accepting),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(v,{id:e,input:i$1});k$1("Mentor updated"),i(t,I.tecUpdateMentor);}catch(i){h(i);}}),n.command("approve").description("Approve a pending mentor profile (PENDING -> ACTIVE)").argument("<id>","Mentor ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(N,{id:e});k$1(`Mentor approved: ${i$1.tecApproveMentor.status}`),i(t,i$1.tecApproveMentor);}catch(i){h(i);}});}function lt(d){let n=d.command("sessions").description("Technospam mentorship sessions");n.command("list").description("List mentorship sessions").option("--mentor <id>","Filter by mentor ID").option("--mentee <id>","Filter by mentee ID").option("--status <s>","REQUESTED|CONFIRMED|COMPLETED|CANCELLED|NO_SHOW").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(x,{mentorId:e.mentor,menteeId:e.mentee,status:e.status?e.status.toUpperCase():void 0});i(e,t.tecListSessions,{headers:["ID","Mentor","Mentee","Topic","Status","Scheduled"],rows:t.tecListSessions.map(i=>[r(i.id,12),r(i.mentorId,12),r(i.menteeId,12),r(i.topic,24),i.status,q$1(i.scheduledAt)])});}catch(t){h(t);}}),n.command("book").description("Book a 1:1 session with a mentor as the calling mentee").requiredOption("--mentor <id>","Mentor ID").requiredOption("--topic <t>","Session topic").requiredOption("--scheduled-at <iso>","Scheduled time (ISO date)").option("--agenda <s>","Agenda").option("--duration-minutes <n>","Duration (minutes)",a).option("-f, --format <format>","Output format").action(async e=>{try{let t={mentorId:e.mentor,topic:e.topic,scheduledAt:e.scheduledAt};e.agenda&&(t.agenda=e.agenda),e.durationMinutes!==void 0&&(t.durationMinutes=e.durationMinutes);let i$1=await b$1(_,{input:t});k$1(`Session booked: ${i$1.tecBookSession.topic}`),i(e,i$1.tecBookSession);}catch(t){h(t);}}),n.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("--meeting-url <url>","Meeting URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(H,{id:e,meetingUrl:t.meetingUrl});k$1("Session confirmed"),i(t,i$1.tecConfirmSession);}catch(i){h(i);}}),n.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(B,{id:e});k$1("Session cancelled"),i(t,i$1.tecCancelSession);}catch(i){h(i);}}),n.command("complete").description("Complete a session with optional rating and feedback").argument("<id>","Session ID").option("--rating <n>","Rating (1-5)",a).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(q,{id:e,rating:t.rating,feedback:t.feedback});k$1("Session completed"),i(t,i$1.tecCompleteSession);}catch(i){h(i);}});}function ft(d){let n=d.command("hackathons").description("Technospam hackathons");n.command("list").description("List hackathons").option("--status <s>","DRAFT|REGISTRATION_OPEN|IN_PROGRESS|JUDGING|COMPLETED|CANCELLED").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(F,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListHackathons.items,{headers:["ID","Title","Status","Start","Prize"],rows:t.tecListHackathons.items.map(i=>[r(i.id,12),i.title,i.status,q$1(i.startAt),String(i.prizePool??0)])});}catch(t){h(t);}}),n.command("get").description("Get a hackathon by id").argument("<id>","Hackathon ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(z,{id:e});if(!i$1.tecHackathon)throw new o(`Hackathon ${e} not found`);i(t,i$1.tecHackathon);}catch(i){h(i);}}),n.command("create").description("Create a hackathon").requiredOption("--title <t>","Hackathon title").requiredOption("--slug <slug>","URL slug").requiredOption("--start-at <iso>","Start time (ISO date)").requiredOption("--end-at <iso>","End time (ISO date)").option("--theme <t>","Theme").option("--description <s>","Description").option("--submission-deadline <iso>","Submission deadline (ISO date)").option("--max-team-size <n>","Max team size",a).option("--prize-pool <n>","Prize pool",a).option("--currency <c>","Currency code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,startAt:e.startAt,endAt:e.endAt};e.theme&&(t.theme=e.theme),e.description&&(t.description=e.description),e.submissionDeadline&&(t.submissionDeadline=e.submissionDeadline),e.maxTeamSize!==void 0&&(t.maxTeamSize=e.maxTeamSize),e.prizePool!==void 0&&(t.prizePool=e.prizePool),e.currency&&(t.currency=e.currency),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(G,{input:t});k$1(`Hackathon created: ${i$1.tecCreateHackathon.title}`),i(e,i$1.tecCreateHackathon);}catch(t){h(t);}}),n.command("update").description("Update a hackathon").argument("<id>","Hackathon ID").option("--title <t>","Hackathon title").option("--theme <t>","Theme").option("--description <s>","Description").option("--start-at <iso>","Start time (ISO date)").option("--end-at <iso>","End time (ISO date)").option("--submission-deadline <iso>","Submission deadline (ISO date)").option("--max-team-size <n>","Max team size",a).option("--prize-pool <n>","Prize pool",a).option("--currency <c>","Currency code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.theme!==void 0&&(i$1.theme=t.theme),t.description!==void 0&&(i$1.description=t.description),t.startAt&&(i$1.startAt=t.startAt),t.endAt&&(i$1.endAt=t.endAt),t.submissionDeadline&&(i$1.submissionDeadline=t.submissionDeadline),t.maxTeamSize!==void 0&&(i$1.maxTeamSize=t.maxTeamSize),t.prizePool!==void 0&&(i$1.prizePool=t.prizePool),t.currency&&(i$1.currency=t.currency),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(j,{id:e,input:i$1});k$1("Hackathon updated"),i(t,I.tecUpdateHackathon);}catch(i){h(i);}}),n.command("open-registration").description("Open registration for a hackathon (DRAFT -> REGISTRATION_OPEN)").argument("<id>","Hackathon ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(V,{id:e});k$1(`Registration open: ${i$1.tecOpenRegistration.status}`),i(t,i$1.tecOpenRegistration);}catch(i){h(i);}});}function gt(d){let n=d.command("teams").description("Technospam hackathon teams");n.command("list").description("List teams for a hackathon").requiredOption("--hackathon <id>","Hackathon ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(W,{hackathonId:e.hackathon});i(e,t.tecListTeams,{headers:["ID","Name","Captain","Status","Score"],rows:t.tecListTeams.map(i=>[r(i.id,12),i.name,r(i.captainId,12),i.status,String(i.score??0)])});}catch(t){h(t);}}),n.command("register").description("Register a team for a hackathon with the calling user as captain").requiredOption("--hackathon <id>","Hackathon ID").requiredOption("--name <name>","Team name").option("--members <csv>","Comma-separated member user IDs").option("-f, --format <format>","Output format").action(async e=>{try{let t={hackathonId:e.hackathon,name:e.name};e.members&&(t.memberIds=p(e.members));let i$1=await b$1(K,{input:t});k$1(`Team registered: ${i$1.tecRegisterTeam.name}`),i(e,i$1.tecRegisterTeam);}catch(t){h(t);}}),n.command("submit-project").description("Submit a team's project for judging").requiredOption("--team <id>","Team ID").requiredOption("--project-name <n>","Project name").option("--project-url <url>","Project URL").option("--repo-url <url>","Repository URL").option("--pitch <s>","Pitch").option("-f, --format <format>","Output format").action(async e=>{try{let t={teamId:e.team,projectName:e.projectName};e.projectUrl&&(t.projectUrl=e.projectUrl),e.repoUrl&&(t.repoUrl=e.repoUrl),e.pitch&&(t.pitch=e.pitch);let i$1=await b$1(J,{input:t});k$1(`Project submitted: ${i$1.tecSubmitProject.status}`),i(e,i$1.tecSubmitProject);}catch(t){h(t);}}),n.command("score").description("Record a judge score for a team and optionally mark it WINNER").argument("<id>","Team ID").requiredOption("--score <n>","Score",a).option("--winner","Mark the team as winner").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(Y,{id:e,score:t.score,winner:t.winner??void 0});k$1(`Team scored: ${i$1.tecScoreTeam.score}`),i(t,i$1.tecScoreTeam);}catch(i){h(i);}});}function It(d){let n=d.command("problems").description("Technospam practice problems");n.command("list").description("List problems").option("--difficulty <d>","EASY|MEDIUM|HARD").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--topic <t>","Filter by topic").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(Q,{difficulty:e.difficulty?e.difficulty.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,topic:e.topic,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListProblems.items,{headers:["ID","Title","Difficulty","Status","Points"],rows:t.tecListProblems.items.map(i=>[r(i.id,12),i.title,i.difficulty,i.status,String(i.points??0)])});}catch(t){h(t);}}),n.command("get").description("Get a problem by id").argument("<id>","Problem ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(X,{id:e});if(!i$1.tecProblem)throw new o(`Problem ${e} not found`);i(t,i$1.tecProblem);}catch(i){h(i);}}),n.command("create").description("Create a problem").requiredOption("--title <t>","Problem title").requiredOption("--slug <slug>","URL slug").option("--topic <t>","Topic").option("--statement <s>","Problem statement").option("--difficulty <d>","EASY|MEDIUM|HARD","EASY").option("--points <n>","Points",a).option("--languages <csv>","Comma-separated allowed languages").option("--starter-code <s>","Starter code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,slug:e.slug,difficulty:(e.difficulty??"EASY").toUpperCase()};e.topic&&(t.topic=e.topic),e.statement&&(t.statement=e.statement),e.points!==void 0&&(t.points=e.points),e.languages&&(t.languages=p(e.languages)),e.starterCode&&(t.starterCode=e.starterCode),e.tags&&(t.tags=p(e.tags));let i$1=await b$1(Z,{input:t});k$1(`Problem created: ${i$1.tecCreateProblem.title}`),i(e,i$1.tecCreateProblem);}catch(t){h(t);}}),n.command("update").description("Update a problem").argument("<id>","Problem ID").option("--title <t>","Problem title").option("--topic <t>","Topic").option("--statement <s>","Problem statement").option("--difficulty <d>","EASY|MEDIUM|HARD").option("--points <n>","Points",a).option("--languages <csv>","Comma-separated allowed languages").option("--starter-code <s>","Starter code").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1={};if(t.title&&(i$1.title=t.title),t.topic!==void 0&&(i$1.topic=t.topic),t.statement!==void 0&&(i$1.statement=t.statement),t.difficulty&&(i$1.difficulty=t.difficulty.toUpperCase()),t.points!==void 0&&(i$1.points=t.points),t.languages&&(i$1.languages=p(t.languages)),t.starterCode!==void 0&&(i$1.starterCode=t.starterCode),t.tags&&(i$1.tags=p(t.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(tt,{id:e,input:i$1});k$1("Problem updated"),i(t,I.tecUpdateProblem);}catch(i){h(i);}}),n.command("publish").description("Publish a problem (DRAFT -> PUBLISHED)").argument("<id>","Problem ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(et,{id:e});k$1(`Problem published: ${i$1.tecPublishProblem.title}`),i(t,i$1.tecPublishProblem);}catch(i){h(i);}});}function Ct(d){let n=d.command("submissions").description("Technospam problem submissions");n.command("list").description("List submissions").option("--problem <id>","Filter by problem ID").option("--learner <id>","Filter by learner ID").option("--limit <n>","Page size",a,50).option("--offset <n>","Offset",a,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(it,{problemId:e.problem,learnerId:e.learner,pagination:{limit:e.limit,offset:e.offset}});i(e,t.tecListSubmissions.items,{headers:["ID","Problem","Learner","Language","Verdict","Points"],rows:t.tecListSubmissions.items.map(i=>[r(i.id,12),r(i.problemId,12),r(i.learnerId,12),i.language,i.verdict,String(i.pointsAwarded??0)])});}catch(t){h(t);}}),n.command("submit").description("Submit a solution to a problem").requiredOption("--problem <id>","Problem ID").requiredOption("--language <l>","Language").requiredOption("--code <c>","Solution code").option("-f, --format <format>","Output format").action(async e=>{try{let t={problemId:e.problem,language:e.language,code:e.code},i$1=await b$1(nt,{input:t});k$1(`Solution submitted: ${i$1.tecSubmitSolution.verdict}`),i(e,i$1.tecSubmitSolution);}catch(t){h(t);}}),n.command("grade").description("Record the grader verdict for a submission").argument("<id>","Submission ID").requiredOption("--verdict <v>","PENDING|ACCEPTED|WRONG_ANSWER|TIME_LIMIT_EXCEEDED|RUNTIME_ERROR|COMPILE_ERROR").option("--runtime-ms <n>","Runtime in milliseconds",a).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(ot,{id:e,verdict:t.verdict.toUpperCase(),runtimeMs:t.runtimeMs});k$1(`Submission graded: ${i$1.tecGradeSubmission.verdict}`),i(t,i$1.tecGradeSubmission);}catch(i){h(i);}});}function ht(d){let n=d.command("certificates").description("Technospam completion certificates");n.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 e=>{try{let t=await b$1(rt,{courseId:e.course,learnerId:e.learner});i(e,t.tecListCertificates,{headers:["ID","Serial","Course","Learner","Score","Status"],rows:t.tecListCertificates.map(i=>[r(i.id,12),i.serial,r(i.courseId,12),r(i.learnerId,12),String(i.score),i.status])});}catch(t){h(t);}}),n.command("issue").description("Issue a verifiable completion certificate for a learner on a course").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--score <n>","Score",a).option("-f, --format <format>","Output format").action(async e=>{try{let t=await b$1(st,{courseId:e.course,learnerId:e.learner,score:e.score});k$1(`Certificate issued: ${t.tecIssueCertificate.serial}`),i(e,t.tecIssueCertificate);}catch(t){h(t);}}),n.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("--reason <s>","Revocation reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let i$1=await b$1(at,{id:e,reason:t.reason});k$1(`Certificate revoked: ${i$1.tecRevokeCertificate.status}`),i(t,i$1.tecRevokeCertificate);}catch(i){h(i);}});}function St(d$1){d$1.command("health").description("Technospam service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await d(ct);k$1(e.tecHealth),i(n,{health:e.tecHealth});}catch(e){h(e);}});}var bt={id:"technospam",version:"1.0.0",displayName:"Technospam",dependsOn:["auth","workspaces"],register(d,n){a$1(n);let e=d.command("technospam").description("Technospam developer-education platform");mt(e),dt(e),ut(e),pt(e),lt(e),ft(e),gt(e),It(e),Ct(e),ht(e),St(e);}},Ce=bt;export{Ce as default};
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,o,g,i,d as d$1}from'../../chunk-W4JZR7RJ.js';import {o as o$1}from'../../chunk-YIY5IDXQ.js';var h=`
1
+ import {a,b as b$1,i,r,q as q$1,h as h$1,k as k$1,d as d$1}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var h=`
2
2
  query TcpGetStory($id: ID!) {
3
3
  tcpStory(id: $id) {
4
4
  id authorId editorId title slug summary body format status topicId
@@ -225,4 +225,4 @@ import {a,b as b$1,h as h$1,p,o,g,i,d as d$1}from'../../chunk-W4JZR7RJ.js';impor
225
225
  query TcpHealth {
226
226
  tcpHealth
227
227
  }
228
- `;function d(c){let o=Number.parseInt(c,10);if(Number.isNaN(o))throw new o$1(`Expected an integer but got "${c}"`);return o}function m(c){return c.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function X(c){let o$2=c.command("stories").description("TheCulturePost editorial stories");o$2.command("list").description("List stories").option("--status <s>","Filter by story status (IDEA|DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED)").option("--topic <id>","Filter by topic ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(A,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,topicId:t.topic});h$1(t,i.tcpListStories.items,{headers:["ID","Title","Status","Format","Reading","Published"],rows:i.tcpListStories.items.map(e=>[p(e.id,12),e.title,e.status,e.format,e.readingMins!=null?`${e.readingMins}m`:"-",o(e.publishedAt)])});}catch(i){g(i);}}),o$2.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,i)=>{try{let e=await b$1(h,{id:t});if(!e.tcpStory)throw new o$1(`Story ${t} not found`);h$1(i,e.tcpStory);}catch(e){g(e);}}),o$2.command("create").description("Create a story").requiredOption("--title <t>","Title").requiredOption("--slug <slug>","URL slug").option("--summary <s>","Summary").option("--body <s>","Body").option("--topic <id>","Topic ID").option("--author <id>","Author user ID").option("--editor <id>","Editor user ID").option("--format-kind <k>","ARTICLE|ESSAY|EXPLAINER|ORAL_HISTORY|PHOTO_STORY|TIMELINE").option("--cover-file <id>","Cover file ID").option("--reading-mins <n>","Reading minutes",d).option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title,slug:t.slug};t.summary&&(i$1.summary=t.summary),t.body&&(i$1.body=t.body),t.topic&&(i$1.topicId=t.topic),t.author&&(i$1.authorId=t.author),t.editor&&(i$1.editorId=t.editor),t.formatKind&&(i$1.format=t.formatKind.toUpperCase()),t.coverFile&&(i$1.coverFileId=t.coverFile),t.readingMins!==void 0&&(i$1.readingMins=t.readingMins),t.languages&&(i$1.languages=m(t.languages)),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(O,{input:i$1});i(`Story created: ${e.tcpCreateStory.title}`),h$1(t,e.tcpCreateStory);}catch(i){g(i);}}),o$2.command("update").description("Update a story").argument("<id>","Story ID").option("--title <t>","Title").option("--summary <s>","Summary").option("--body <s>","Body").option("--topic <id>","Topic ID").option("--author <id>","Author user ID").option("--editor <id>","Editor user ID").option("--format-kind <k>","ARTICLE|ESSAY|EXPLAINER|ORAL_HISTORY|PHOTO_STORY|TIMELINE").option("--cover-file <id>","Cover file ID").option("--reading-mins <n>","Reading minutes",d).option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.title&&(e.title=i$1.title),i$1.summary!==void 0&&(e.summary=i$1.summary),i$1.body!==void 0&&(e.body=i$1.body),i$1.topic&&(e.topicId=i$1.topic),i$1.author&&(e.authorId=i$1.author),i$1.editor&&(e.editorId=i$1.editor),i$1.formatKind&&(e.format=i$1.formatKind.toUpperCase()),i$1.coverFile&&(e.coverFileId=i$1.coverFile),i$1.readingMins!==void 0&&(e.readingMins=i$1.readingMins),i$1.languages&&(e.languages=m(i$1.languages)),i$1.tags&&(e.tags=m(i$1.tags)),!Object.keys(e).length)throw new o$1("No updates specified");let I=await b$1(R,{id:t,input:e});i("Story updated"),h$1(i$1,I.tcpUpdateStory);}catch(e){g(e);}}),o$2.command("transition").description("Advance a story through its editorial lifecycle").argument("<id>","Story ID").requiredOption("--status <s>","IDEA|DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(v,{id:t,status:i$1.status.toUpperCase()});i(`Story transitioned to ${e.tcpTransitionStory.status}`),h$1(i$1,e.tcpTransitionStory);}catch(e){g(e);}});}function Q(c){let o=c.command("topics").description("TheCulturePost topics");o.command("list").description("List topics").option("--category <c>","Filter by topic category").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(E,{category:t.category?t.category.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,i.tcpListTopics.items,{headers:["ID","Name","Category","Tradition","Featured"],rows:i.tcpListTopics.items.map(e=>[p(e.id,12),e.name,e.category,e.tradition??"-",e.isFeatured?"yes":"no"])});}catch(i){g(i);}}),o.command("get").description("Get a topic by id").argument("<id>","Topic ID").option("-f, --format <format>","Output format").action(async(t,i)=>{try{let e=await b$1(D,{id:t});if(!e.tcpTopic)throw new o$1(`Topic ${t} not found`);h$1(i,e.tcpTopic);}catch(e){g(e);}}),o.command("create").description("Create a topic").requiredOption("--name <name>","Name").requiredOption("--slug <slug>","URL slug").option("--category <c>","Topic category").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--featured","Mark as featured").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={name:t.name,slug:t.slug};t.category&&(i$1.category=t.category.toUpperCase()),t.description&&(i$1.description=t.description),t.tradition&&(i$1.tradition=t.tradition),t.featured&&(i$1.isFeatured=!0);let e=await b$1(S,{input:i$1});i(`Topic created: ${e.tcpCreateTopic.name}`),h$1(t,e.tcpCreateTopic);}catch(i){g(i);}}),o.command("update").description("Update a topic").argument("<id>","Topic ID").option("--name <name>","Name").option("--category <c>","Topic category").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--featured <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.category&&(e.category=i$1.category.toUpperCase()),i$1.description!==void 0&&(e.description=i$1.description),i$1.tradition!==void 0&&(e.tradition=i$1.tradition),i$1.featured!==void 0&&(e.isFeatured=i$1.featured),!Object.keys(e).length)throw new o$1("No updates specified");let I=await b$1(L,{id:t,input:e});i("Topic updated"),h$1(i$1,I.tcpUpdateTopic);}catch(e){g(e);}}),o.command("archive").description("Archive (delete) a topic").argument("<id>","Topic ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(P,{id:t});i(`Topic ${t} archived`),h$1(i$1,{archived:e.tcpArchiveTopic});}catch(e){g(e);}});}function Z(c){let o=c.command("citations").description("TheCulturePost story citations");o.command("list").description("List citations for a story").requiredOption("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(_,{storyId:t.story});h$1(t,i.tcpListCitations,{headers:["ID","Title","Author","Source","Verification"],rows:i.tcpListCitations.map(e=>[p(e.id,12),p(e.title,30),e.author??"-",e.sourceType,e.verification])});}catch(i){g(i);}}),o.command("add").description("Add a citation to a story").requiredOption("--story <id>","Story ID").requiredOption("--title <t>","Citation title").option("--author <s>","Author").option("--publisher <s>","Publisher").option("--published-on <iso>","Published-on date (ISO)").option("--source-type <t>","ACADEMIC|ARCHIVAL_RECORD|ARTIFACT|BOOK|INTERVIEW|PERIODICAL|PRIMARY_DOCUMENT|WEB").option("--url <url>","Source URL").option("--excerpt <s>","Excerpt").option("--provenance <s>","Provenance").option("--source-file <id>","Source file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={storyId:t.story,title:t.title};t.author&&(i$1.author=t.author),t.publisher&&(i$1.publisher=t.publisher),t.publishedOn&&(i$1.publishedOn=t.publishedOn),t.sourceType&&(i$1.sourceType=t.sourceType.toUpperCase()),t.url&&(i$1.url=t.url),t.excerpt&&(i$1.excerpt=t.excerpt),t.provenance&&(i$1.provenance=t.provenance),t.sourceFile&&(i$1.sourceFileId=t.sourceFile);let e=await b$1(w,{input:i$1});i(`Citation added: ${e.tcpAddCitation.title}`),h$1(t,e.tcpAddCitation);}catch(i){g(i);}}),o.command("verify").description("Set a citation verification status").argument("<id>","Citation ID").requiredOption("--verification <v>","UNVERIFIED|CORROBORATED|DISPUTED|RETRACTED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1($,{id:t,verification:i$1.verification.toUpperCase()});i(`Citation verification set to ${e.tcpVerifyCitation.verification}`),h$1(i$1,e.tcpVerifyCitation);}catch(e){g(e);}});}function tt(c){let o$2=c.command("archive").description("TheCulturePost archive items");o$2.command("list").description("List archive items").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Filter by collection ID").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(b,{accessLevel:t.accessLevel?t.accessLevel.toUpperCase():void 0,collectionId:t.collection,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,i.tcpListArchiveItems.items,{headers:["ID","Title","Kind","Access","Origin","Dated"],rows:i.tcpListArchiveItems.items.map(e=>[p(e.id,12),e.title,e.kind,e.accessLevel,e.origin??"-",o(e.datedAt)])});}catch(i){g(i);}}),o$2.command("get").description("Get an archive item by id").argument("<id>","Archive item ID").option("-f, --format <format>","Output format").action(async(t,i)=>{try{let e=await b$1(k,{id:t});if(!e.tcpArchiveItem)throw new o$1(`Archive item ${t} not found`);h$1(i,e.tcpArchiveItem);}catch(e){g(e);}}),o$2.command("create").description("Create an archive item").requiredOption("--title <t>","Title").option("--description <s>","Description").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Collection ID").option("--file <id>","File ID").option("--origin <s>","Origin").option("--provenance <s>","Provenance").option("--dated-at <iso>","Dated-at (ISO)").option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.description&&(i$1.description=t.description),t.kind&&(i$1.kind=t.kind.toUpperCase()),t.accessLevel&&(i$1.accessLevel=t.accessLevel.toUpperCase()),t.collection&&(i$1.collectionId=t.collection),t.file&&(i$1.fileId=t.file),t.origin&&(i$1.origin=t.origin),t.provenance&&(i$1.provenance=t.provenance),t.datedAt&&(i$1.datedAt=t.datedAt),t.languages&&(i$1.languages=m(t.languages)),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(U,{input:i$1});i(`Archive item created: ${e.tcpCreateArchiveItem.title}`),h$1(t,e.tcpCreateArchiveItem);}catch(i){g(i);}}),o$2.command("update").description("Update an archive item").argument("<id>","Archive item ID").option("--title <t>","Title").option("--description <s>","Description").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Collection ID").option("--file <id>","File ID").option("--origin <s>","Origin").option("--provenance <s>","Provenance").option("--dated-at <iso>","Dated-at (ISO)").option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.title&&(e.title=i$1.title),i$1.description!==void 0&&(e.description=i$1.description),i$1.kind&&(e.kind=i$1.kind.toUpperCase()),i$1.accessLevel&&(e.accessLevel=i$1.accessLevel.toUpperCase()),i$1.collection&&(e.collectionId=i$1.collection),i$1.file&&(e.fileId=i$1.file),i$1.origin!==void 0&&(e.origin=i$1.origin),i$1.provenance!==void 0&&(e.provenance=i$1.provenance),i$1.datedAt&&(e.datedAt=i$1.datedAt),i$1.languages&&(e.languages=m(i$1.languages)),i$1.tags&&(e.tags=m(i$1.tags)),!Object.keys(e).length)throw new o$1("No updates specified");let I=await b$1(M,{id:t,input:e});i("Archive item updated"),h$1(i$1,I.tcpUpdateArchiveItem);}catch(e){g(e);}}),o$2.command("archive-item").description("Archive (delete) an archive item").argument("<id>","Archive item ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(N,{id:t});i(`Archive item ${t} archived`),h$1(i$1,{archived:e.tcpArchiveArchiveItem});}catch(e){g(e);}});}function it(c){let o=c.command("collections").description("TheCulturePost archive collections");o.command("list").description("List collections").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(H,{pagination:{limit:t.limit,offset:t.offset}});h$1(t,i.tcpListCollections,{headers:["ID","Name","Slug","Tradition","Items"],rows:i.tcpListCollections.map(e=>[p(e.id,12),e.name,e.slug,e.tradition??"-",String(e.itemCount)])});}catch(i){g(i);}}),o.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,i)=>{try{let e=await b$1(x,{id:t});if(!e.tcpCollection)throw new o$1(`Collection ${t} not found`);h$1(i,e.tcpCollection);}catch(e){g(e);}}),o.command("create").description("Create a collection").requiredOption("--name <name>","Name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--cover-file <id>","Cover file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={name:t.name,slug:t.slug};t.description&&(i$1.description=t.description),t.tradition&&(i$1.tradition=t.tradition),t.coverFile&&(i$1.coverFileId=t.coverFile);let e=await b$1(F,{input:i$1});i(`Collection created: ${e.tcpCreateCollection.name}`),h$1(t,e.tcpCreateCollection);}catch(i){g(i);}});}function et(c){let o=c.command("oral-histories").description("TheCulturePost oral histories");o.command("list").description("List oral histories").option("--collection <id>","Filter by collection ID").option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(V,{collectionId:t.collection});h$1(t,i.tcpListOralHistories,{headers:["ID","Title","Narrator","Language","Access","Duration"],rows:i.tcpListOralHistories.map(e=>[p(e.id,12),e.title,e.narratorName??"-",e.language??"-",e.accessLevel,`${e.durationSecs}s`])});}catch(i){g(i);}}),o.command("record").description("Record an oral history").requiredOption("--title <t>","Title").option("--narrator <s>","Narrator name").option("--language <s>","Language").option("--summary <s>","Summary").option("--transcript <s>","Transcript").option("--collection <id>","Collection ID").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--duration-secs <n>","Duration (seconds)",d).option("--recorded-at <iso>","Recorded-at (ISO)").option("--recording-file <id>","Recording file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.narrator&&(i$1.narratorName=t.narrator),t.language&&(i$1.language=t.language),t.summary&&(i$1.summary=t.summary),t.transcript&&(i$1.transcript=t.transcript),t.collection&&(i$1.collectionId=t.collection),t.accessLevel&&(i$1.accessLevel=t.accessLevel.toUpperCase()),t.durationSecs!==void 0&&(i$1.durationSecs=t.durationSecs),t.recordedAt&&(i$1.recordedAt=t.recordedAt),t.recordingFile&&(i$1.recordingFileId=t.recordingFile);let e=await b$1(G,{input:i$1});i(`Oral history recorded: ${e.tcpRecordOralHistory.title}`),h$1(t,e.tcpRecordOralHistory);}catch(i){g(i);}});}function ot(c){let o=c.command("discussions").description("TheCulturePost respectful discussions");o.command("list").description("List discussions").option("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("--story <id>","Filter by story ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(Y,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,storyId:t.story});h$1(t,i.tcpListDiscussions.items,{headers:["ID","Title","Status","Locked","Interfaith","Replies"],rows:i.tcpListDiscussions.items.map(e=>[p(e.id,12),e.title,e.status,e.isLocked?"yes":"no",e.isInterfaith?"yes":"no",String(e.replyCount??0)])});}catch(i){g(i);}}),o.command("get").description("Get a discussion by id").argument("<id>","Discussion ID").option("-f, --format <format>","Output format").action(async(t,i)=>{try{let e=await b$1(q,{id:t});if(!e.tcpDiscussion)throw new o$1(`Discussion ${t} not found`);h$1(i,e.tcpDiscussion);}catch(e){g(e);}}),o.command("open").description("Open a discussion").requiredOption("--title <t>","Title").option("--prompt <s>","Discussion prompt").option("--story <id>","Related story ID").option("--interfaith","Mark as interfaith").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.prompt&&(i$1.prompt=t.prompt),t.story&&(i$1.storyId=t.story),t.interfaith&&(i$1.isInterfaith=!0),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(B,{input:i$1});i(`Discussion opened: ${e.tcpOpenDiscussion.title}`),h$1(t,e.tcpOpenDiscussion);}catch(i){g(i);}}),o.command("lock").description("Lock a discussion").argument("<id>","Discussion ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(W,{id:t});i(`Discussion ${t} locked`),h$1(i$1,e.tcpLockDiscussion);}catch(e){g(e);}});}function rt(c){let o=c.command("replies").description("TheCulturePost discussion replies");o.command("list").description("List replies for a discussion").requiredOption("--discussion <id>","Discussion ID").option("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("-f, --format <format>","Output format").action(async t=>{try{let i=await b$1(K,{discussionId:t.discussion,status:t.status?t.status.toUpperCase():void 0});h$1(t,i.tcpListReplies,{headers:["ID","Author","Perspective","Status","Body"],rows:i.tcpListReplies.map(e=>[p(e.id,12),p(e.authorId??"-",12),e.perspective??"-",e.status,p(e.body,40)])});}catch(i){g(i);}}),o.command("post").description("Post a reply to a discussion").requiredOption("--discussion <id>","Discussion ID").requiredOption("--body <s>","Reply body").option("--perspective <s>","Perspective").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={discussionId:t.discussion,body:t.body};t.perspective&&(i$1.perspective=t.perspective);let e=await b$1(J,{input:i$1});i("Reply posted"),h$1(t,e.tcpPostReply);}catch(i){g(i);}}),o.command("moderate").description("Moderate a reply (approve / flag / remove)").argument("<id>","Reply ID").requiredOption("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(j,{id:t,status:i$1.status.toUpperCase()});i(`Reply moderated to ${e.tcpModerateReply.status}`),h$1(i$1,e.tcpModerateReply);}catch(e){g(e);}});}function nt(c){c.command("health").description("TheCulturePost service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await d$1(z);i(t.tcpHealth),h$1(o,{health:t.tcpHealth});}catch(t){g(t);}});}var st={id:"theculturepost",version:"1.0.0",displayName:"TheCulturePost",dependsOn:["auth","workspaces"],register(c,o){a(o);let t=c.command("theculturepost").description("TheCulturePost culture & heritage publishing");X(t),Q(t),Z(t),tt(t),it(t),et(t),ot(t),rt(t),nt(t);}},jt=st;export{jt as default};
228
+ `;function d(c){let o$1=Number.parseInt(c,10);if(Number.isNaN(o$1))throw new o(`Expected an integer but got "${c}"`);return o$1}function m(c){return c.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function X(c){let o$1=c.command("stories").description("TheCulturePost editorial stories");o$1.command("list").description("List stories").option("--status <s>","Filter by story status (IDEA|DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED)").option("--topic <id>","Filter by topic ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(A,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,topicId:t.topic});i(t,i$1.tcpListStories.items,{headers:["ID","Title","Status","Format","Reading","Published"],rows:i$1.tcpListStories.items.map(e=>[r(e.id,12),e.title,e.status,e.format,e.readingMins!=null?`${e.readingMins}m`:"-",q$1(e.publishedAt)])});}catch(i){h$1(i);}}),o$1.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(h,{id:t});if(!e.tcpStory)throw new o(`Story ${t} not found`);i(i$1,e.tcpStory);}catch(e){h$1(e);}}),o$1.command("create").description("Create a story").requiredOption("--title <t>","Title").requiredOption("--slug <slug>","URL slug").option("--summary <s>","Summary").option("--body <s>","Body").option("--topic <id>","Topic ID").option("--author <id>","Author user ID").option("--editor <id>","Editor user ID").option("--format-kind <k>","ARTICLE|ESSAY|EXPLAINER|ORAL_HISTORY|PHOTO_STORY|TIMELINE").option("--cover-file <id>","Cover file ID").option("--reading-mins <n>","Reading minutes",d).option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title,slug:t.slug};t.summary&&(i$1.summary=t.summary),t.body&&(i$1.body=t.body),t.topic&&(i$1.topicId=t.topic),t.author&&(i$1.authorId=t.author),t.editor&&(i$1.editorId=t.editor),t.formatKind&&(i$1.format=t.formatKind.toUpperCase()),t.coverFile&&(i$1.coverFileId=t.coverFile),t.readingMins!==void 0&&(i$1.readingMins=t.readingMins),t.languages&&(i$1.languages=m(t.languages)),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(O,{input:i$1});k$1(`Story created: ${e.tcpCreateStory.title}`),i(t,e.tcpCreateStory);}catch(i){h$1(i);}}),o$1.command("update").description("Update a story").argument("<id>","Story ID").option("--title <t>","Title").option("--summary <s>","Summary").option("--body <s>","Body").option("--topic <id>","Topic ID").option("--author <id>","Author user ID").option("--editor <id>","Editor user ID").option("--format-kind <k>","ARTICLE|ESSAY|EXPLAINER|ORAL_HISTORY|PHOTO_STORY|TIMELINE").option("--cover-file <id>","Cover file ID").option("--reading-mins <n>","Reading minutes",d).option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.title&&(e.title=i$1.title),i$1.summary!==void 0&&(e.summary=i$1.summary),i$1.body!==void 0&&(e.body=i$1.body),i$1.topic&&(e.topicId=i$1.topic),i$1.author&&(e.authorId=i$1.author),i$1.editor&&(e.editorId=i$1.editor),i$1.formatKind&&(e.format=i$1.formatKind.toUpperCase()),i$1.coverFile&&(e.coverFileId=i$1.coverFile),i$1.readingMins!==void 0&&(e.readingMins=i$1.readingMins),i$1.languages&&(e.languages=m(i$1.languages)),i$1.tags&&(e.tags=m(i$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let I=await b$1(R,{id:t,input:e});k$1("Story updated"),i(i$1,I.tcpUpdateStory);}catch(e){h$1(e);}}),o$1.command("transition").description("Advance a story through its editorial lifecycle").argument("<id>","Story ID").requiredOption("--status <s>","IDEA|DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(v,{id:t,status:i$1.status.toUpperCase()});k$1(`Story transitioned to ${e.tcpTransitionStory.status}`),i(i$1,e.tcpTransitionStory);}catch(e){h$1(e);}});}function Q(c){let o$1=c.command("topics").description("TheCulturePost topics");o$1.command("list").description("List topics").option("--category <c>","Filter by topic category").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(E,{category:t.category?t.category.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.tcpListTopics.items,{headers:["ID","Name","Category","Tradition","Featured"],rows:i$1.tcpListTopics.items.map(e=>[r(e.id,12),e.name,e.category,e.tradition??"-",e.isFeatured?"yes":"no"])});}catch(i){h$1(i);}}),o$1.command("get").description("Get a topic by id").argument("<id>","Topic ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(D,{id:t});if(!e.tcpTopic)throw new o(`Topic ${t} not found`);i(i$1,e.tcpTopic);}catch(e){h$1(e);}}),o$1.command("create").description("Create a topic").requiredOption("--name <name>","Name").requiredOption("--slug <slug>","URL slug").option("--category <c>","Topic category").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--featured","Mark as featured").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={name:t.name,slug:t.slug};t.category&&(i$1.category=t.category.toUpperCase()),t.description&&(i$1.description=t.description),t.tradition&&(i$1.tradition=t.tradition),t.featured&&(i$1.isFeatured=!0);let e=await b$1(S,{input:i$1});k$1(`Topic created: ${e.tcpCreateTopic.name}`),i(t,e.tcpCreateTopic);}catch(i){h$1(i);}}),o$1.command("update").description("Update a topic").argument("<id>","Topic ID").option("--name <name>","Name").option("--category <c>","Topic category").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--featured <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.category&&(e.category=i$1.category.toUpperCase()),i$1.description!==void 0&&(e.description=i$1.description),i$1.tradition!==void 0&&(e.tradition=i$1.tradition),i$1.featured!==void 0&&(e.isFeatured=i$1.featured),!Object.keys(e).length)throw new o("No updates specified");let I=await b$1(L,{id:t,input:e});k$1("Topic updated"),i(i$1,I.tcpUpdateTopic);}catch(e){h$1(e);}}),o$1.command("archive").description("Archive (delete) a topic").argument("<id>","Topic ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(P,{id:t});k$1(`Topic ${t} archived`),i(i$1,{archived:e.tcpArchiveTopic});}catch(e){h$1(e);}});}function Z(c){let o=c.command("citations").description("TheCulturePost story citations");o.command("list").description("List citations for a story").requiredOption("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(_,{storyId:t.story});i(t,i$1.tcpListCitations,{headers:["ID","Title","Author","Source","Verification"],rows:i$1.tcpListCitations.map(e=>[r(e.id,12),r(e.title,30),e.author??"-",e.sourceType,e.verification])});}catch(i){h$1(i);}}),o.command("add").description("Add a citation to a story").requiredOption("--story <id>","Story ID").requiredOption("--title <t>","Citation title").option("--author <s>","Author").option("--publisher <s>","Publisher").option("--published-on <iso>","Published-on date (ISO)").option("--source-type <t>","ACADEMIC|ARCHIVAL_RECORD|ARTIFACT|BOOK|INTERVIEW|PERIODICAL|PRIMARY_DOCUMENT|WEB").option("--url <url>","Source URL").option("--excerpt <s>","Excerpt").option("--provenance <s>","Provenance").option("--source-file <id>","Source file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={storyId:t.story,title:t.title};t.author&&(i$1.author=t.author),t.publisher&&(i$1.publisher=t.publisher),t.publishedOn&&(i$1.publishedOn=t.publishedOn),t.sourceType&&(i$1.sourceType=t.sourceType.toUpperCase()),t.url&&(i$1.url=t.url),t.excerpt&&(i$1.excerpt=t.excerpt),t.provenance&&(i$1.provenance=t.provenance),t.sourceFile&&(i$1.sourceFileId=t.sourceFile);let e=await b$1(w,{input:i$1});k$1(`Citation added: ${e.tcpAddCitation.title}`),i(t,e.tcpAddCitation);}catch(i){h$1(i);}}),o.command("verify").description("Set a citation verification status").argument("<id>","Citation ID").requiredOption("--verification <v>","UNVERIFIED|CORROBORATED|DISPUTED|RETRACTED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1($,{id:t,verification:i$1.verification.toUpperCase()});k$1(`Citation verification set to ${e.tcpVerifyCitation.verification}`),i(i$1,e.tcpVerifyCitation);}catch(e){h$1(e);}});}function tt(c){let o$1=c.command("archive").description("TheCulturePost archive items");o$1.command("list").description("List archive items").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Filter by collection ID").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(b,{accessLevel:t.accessLevel?t.accessLevel.toUpperCase():void 0,collectionId:t.collection,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.tcpListArchiveItems.items,{headers:["ID","Title","Kind","Access","Origin","Dated"],rows:i$1.tcpListArchiveItems.items.map(e=>[r(e.id,12),e.title,e.kind,e.accessLevel,e.origin??"-",q$1(e.datedAt)])});}catch(i){h$1(i);}}),o$1.command("get").description("Get an archive item by id").argument("<id>","Archive item ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(k,{id:t});if(!e.tcpArchiveItem)throw new o(`Archive item ${t} not found`);i(i$1,e.tcpArchiveItem);}catch(e){h$1(e);}}),o$1.command("create").description("Create an archive item").requiredOption("--title <t>","Title").option("--description <s>","Description").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Collection ID").option("--file <id>","File ID").option("--origin <s>","Origin").option("--provenance <s>","Provenance").option("--dated-at <iso>","Dated-at (ISO)").option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.description&&(i$1.description=t.description),t.kind&&(i$1.kind=t.kind.toUpperCase()),t.accessLevel&&(i$1.accessLevel=t.accessLevel.toUpperCase()),t.collection&&(i$1.collectionId=t.collection),t.file&&(i$1.fileId=t.file),t.origin&&(i$1.origin=t.origin),t.provenance&&(i$1.provenance=t.provenance),t.datedAt&&(i$1.datedAt=t.datedAt),t.languages&&(i$1.languages=m(t.languages)),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(U,{input:i$1});k$1(`Archive item created: ${e.tcpCreateArchiveItem.title}`),i(t,e.tcpCreateArchiveItem);}catch(i){h$1(i);}}),o$1.command("update").description("Update an archive item").argument("<id>","Archive item ID").option("--title <t>","Title").option("--description <s>","Description").option("--kind <k>","AUDIO|DOCUMENT|MANUSCRIPT|MAP|OBJECT|PHOTOGRAPH|VIDEO").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--collection <id>","Collection ID").option("--file <id>","File ID").option("--origin <s>","Origin").option("--provenance <s>","Provenance").option("--dated-at <iso>","Dated-at (ISO)").option("--languages <csv>","Comma-separated language codes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e={};if(i$1.title&&(e.title=i$1.title),i$1.description!==void 0&&(e.description=i$1.description),i$1.kind&&(e.kind=i$1.kind.toUpperCase()),i$1.accessLevel&&(e.accessLevel=i$1.accessLevel.toUpperCase()),i$1.collection&&(e.collectionId=i$1.collection),i$1.file&&(e.fileId=i$1.file),i$1.origin!==void 0&&(e.origin=i$1.origin),i$1.provenance!==void 0&&(e.provenance=i$1.provenance),i$1.datedAt&&(e.datedAt=i$1.datedAt),i$1.languages&&(e.languages=m(i$1.languages)),i$1.tags&&(e.tags=m(i$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let I=await b$1(M,{id:t,input:e});k$1("Archive item updated"),i(i$1,I.tcpUpdateArchiveItem);}catch(e){h$1(e);}}),o$1.command("archive-item").description("Archive (delete) an archive item").argument("<id>","Archive item ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(N,{id:t});k$1(`Archive item ${t} archived`),i(i$1,{archived:e.tcpArchiveArchiveItem});}catch(e){h$1(e);}});}function it(c){let o$1=c.command("collections").description("TheCulturePost archive collections");o$1.command("list").description("List collections").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(H,{pagination:{limit:t.limit,offset:t.offset}});i(t,i$1.tcpListCollections,{headers:["ID","Name","Slug","Tradition","Items"],rows:i$1.tcpListCollections.map(e=>[r(e.id,12),e.name,e.slug,e.tradition??"-",String(e.itemCount)])});}catch(i){h$1(i);}}),o$1.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(x,{id:t});if(!e.tcpCollection)throw new o(`Collection ${t} not found`);i(i$1,e.tcpCollection);}catch(e){h$1(e);}}),o$1.command("create").description("Create a collection").requiredOption("--name <name>","Name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--tradition <s>","Tradition").option("--cover-file <id>","Cover file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={name:t.name,slug:t.slug};t.description&&(i$1.description=t.description),t.tradition&&(i$1.tradition=t.tradition),t.coverFile&&(i$1.coverFileId=t.coverFile);let e=await b$1(F,{input:i$1});k$1(`Collection created: ${e.tcpCreateCollection.name}`),i(t,e.tcpCreateCollection);}catch(i){h$1(i);}});}function et(c){let o=c.command("oral-histories").description("TheCulturePost oral histories");o.command("list").description("List oral histories").option("--collection <id>","Filter by collection ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(V,{collectionId:t.collection});i(t,i$1.tcpListOralHistories,{headers:["ID","Title","Narrator","Language","Access","Duration"],rows:i$1.tcpListOralHistories.map(e=>[r(e.id,12),e.title,e.narratorName??"-",e.language??"-",e.accessLevel,`${e.durationSecs}s`])});}catch(i){h$1(i);}}),o.command("record").description("Record an oral history").requiredOption("--title <t>","Title").option("--narrator <s>","Narrator name").option("--language <s>","Language").option("--summary <s>","Summary").option("--transcript <s>","Transcript").option("--collection <id>","Collection ID").option("--access-level <a>","PUBLIC|COMMUNITY|RESTRICTED|EMBARGOED").option("--duration-secs <n>","Duration (seconds)",d).option("--recorded-at <iso>","Recorded-at (ISO)").option("--recording-file <id>","Recording file ID").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.narrator&&(i$1.narratorName=t.narrator),t.language&&(i$1.language=t.language),t.summary&&(i$1.summary=t.summary),t.transcript&&(i$1.transcript=t.transcript),t.collection&&(i$1.collectionId=t.collection),t.accessLevel&&(i$1.accessLevel=t.accessLevel.toUpperCase()),t.durationSecs!==void 0&&(i$1.durationSecs=t.durationSecs),t.recordedAt&&(i$1.recordedAt=t.recordedAt),t.recordingFile&&(i$1.recordingFileId=t.recordingFile);let e=await b$1(G,{input:i$1});k$1(`Oral history recorded: ${e.tcpRecordOralHistory.title}`),i(t,e.tcpRecordOralHistory);}catch(i){h$1(i);}});}function ot(c){let o$1=c.command("discussions").description("TheCulturePost respectful discussions");o$1.command("list").description("List discussions").option("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("--story <id>","Filter by story ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(Y,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,storyId:t.story});i(t,i$1.tcpListDiscussions.items,{headers:["ID","Title","Status","Locked","Interfaith","Replies"],rows:i$1.tcpListDiscussions.items.map(e=>[r(e.id,12),e.title,e.status,e.isLocked?"yes":"no",e.isInterfaith?"yes":"no",String(e.replyCount??0)])});}catch(i){h$1(i);}}),o$1.command("get").description("Get a discussion by id").argument("<id>","Discussion ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(q,{id:t});if(!e.tcpDiscussion)throw new o(`Discussion ${t} not found`);i(i$1,e.tcpDiscussion);}catch(e){h$1(e);}}),o$1.command("open").description("Open a discussion").requiredOption("--title <t>","Title").option("--prompt <s>","Discussion prompt").option("--story <id>","Related story ID").option("--interfaith","Mark as interfaith").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={title:t.title};t.prompt&&(i$1.prompt=t.prompt),t.story&&(i$1.storyId=t.story),t.interfaith&&(i$1.isInterfaith=!0),t.tags&&(i$1.tags=m(t.tags));let e=await b$1(B,{input:i$1});k$1(`Discussion opened: ${e.tcpOpenDiscussion.title}`),i(t,e.tcpOpenDiscussion);}catch(i){h$1(i);}}),o$1.command("lock").description("Lock a discussion").argument("<id>","Discussion ID").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(W,{id:t});k$1(`Discussion ${t} locked`),i(i$1,e.tcpLockDiscussion);}catch(e){h$1(e);}});}function rt(c){let o=c.command("replies").description("TheCulturePost discussion replies");o.command("list").description("List replies for a discussion").requiredOption("--discussion <id>","Discussion ID").option("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("-f, --format <format>","Output format").action(async t=>{try{let i$1=await b$1(K,{discussionId:t.discussion,status:t.status?t.status.toUpperCase():void 0});i(t,i$1.tcpListReplies,{headers:["ID","Author","Perspective","Status","Body"],rows:i$1.tcpListReplies.map(e=>[r(e.id,12),r(e.authorId??"-",12),e.perspective??"-",e.status,r(e.body,40)])});}catch(i){h$1(i);}}),o.command("post").description("Post a reply to a discussion").requiredOption("--discussion <id>","Discussion ID").requiredOption("--body <s>","Reply body").option("--perspective <s>","Perspective").option("-f, --format <format>","Output format").action(async t=>{try{let i$1={discussionId:t.discussion,body:t.body};t.perspective&&(i$1.perspective=t.perspective);let e=await b$1(J,{input:i$1});k$1("Reply posted"),i(t,e.tcpPostReply);}catch(i){h$1(i);}}),o.command("moderate").description("Moderate a reply (approve / flag / remove)").argument("<id>","Reply ID").requiredOption("--status <s>","PENDING|APPROVED|FLAGGED|REMOVED").option("-f, --format <format>","Output format").action(async(t,i$1)=>{try{let e=await b$1(j,{id:t,status:i$1.status.toUpperCase()});k$1(`Reply moderated to ${e.tcpModerateReply.status}`),i(i$1,e.tcpModerateReply);}catch(e){h$1(e);}});}function nt(c){c.command("health").description("TheCulturePost service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await d$1(z);k$1(t.tcpHealth),i(o,{health:t.tcpHealth});}catch(t){h$1(t);}});}var st={id:"theculturepost",version:"1.0.0",displayName:"TheCulturePost",dependsOn:["auth","workspaces"],register(c,o){a(o);let t=c.command("theculturepost").description("TheCulturePost culture & heritage publishing");X(t),Q(t),Z(t),tt(t),it(t),et(t),ot(t),rt(t),nt(t);}},jt=st;export{jt as default};
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},E=class extends m{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},h=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var A=null;function O(r){A=r;}function I(){if(!A)throw new h("vibecontrols module helpers used before setHelpersContext was called");return A}function At(){let r=I();if(!r.auth.isAuthenticated())throw new E("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function a(r,o){return At(),I().gql.workspace.request(r,o)}async function w(r,o){return I().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new m(o)}function s(r,o,t){I().output.formatAndOutput(r,o,t);}function d(r){I().output.printSuccess(r);}function C(r){return I().output.formatDate(r)}function p(r,o){return I().output.truncate(r,o)}var R=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},E=class extends m{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},h=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var A=null;function O(r){A=r;}function I(){if(!A)throw new h("vibecontrols module helpers used before setHelpersContext was called");return A}function At(){let r=I();if(!r.auth.isAuthenticated())throw new E("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function a(r,o){return At(),I().gql.workspace.request(r,o)}async function w(r,o){return I().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new m(o)}function s(r,o,t){I().output.formatAndOutput(r,o,t);}function d(r){I().output.printSuccess(r);}function y(r){return I().output.formatDate(r)}function p(r,o){return I().output.truncate(r,o)}var R=`
2
2
  query TheGetAsset($id: ID!) {
3
3
  theAsset(id: $id) {
4
4
  id name code kind commodity status location latitude longitude
@@ -248,4 +248,4 @@
248
248
  query TheHealth {
249
249
  theHealth
250
250
  }
251
- `;function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new m(`Expected an integer but got "${r}"`);return o}function c(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new m(`Expected a number but got "${r}"`);return o}function f(r,o){let t={};return r!==void 0&&(t.limit=r),o!==void 0&&(t.offset=o),t}function nt(r){let o=r.command("assets").description("Theglobalfuel upstream assets");o.command("list").description("List assets").option("--commodity <c>","Filter by commodity type").option("--kind <k>","Filter by asset kind").option("--status <s>","Filter by asset status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(v,{commodity:t.commodity?t.commodity.toUpperCase():void 0,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListAssets.items,{headers:["ID","Name","Kind","Commodity","Status","Capacity/Day"],rows:e.theListAssets.items.map(n=>[p(n.id,12),n.name,n.kind,n.commodity,n.status,`${n.capacityPerDay??0} ${n.capacityUnit??""}`.trim()])});}catch(e){i(e);}}),o.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.theAsset)throw new m(`Asset ${t} not found`);s(e,n.theAsset);}catch(n){i(n);}}),o.command("create").description("Create an asset").requiredOption("--name <name>","Asset name").requiredOption("--commodity <c>","Commodity type (e.g. CRUDE_OIL, NATURAL_GAS, LITHIUM)").option("--kind <k>","Asset kind (default WELL)").option("--code <code>","Asset code").option("--status <s>","Asset status (default EXPLORATION)").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit (default BARRELS)").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,commodity:t.commodity.toUpperCase()};t.kind&&(e.kind=t.kind.toUpperCase()),t.code&&(e.code=t.code),t.status&&(e.status=t.status.toUpperCase()),t.location&&(e.location=t.location),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.capacityPerDay!==void 0&&(e.capacityPerDay=t.capacityPerDay),t.capacityUnit&&(e.capacityUnit=t.capacityUnit.toUpperCase()),t.workingInterestPct!==void 0&&(e.workingInterestPct=t.workingInterestPct),t.operatorLead&&(e.operatorLeadId=t.operatorLead),t.commissionedAt&&(e.commissionedAt=t.commissionedAt),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(x,{input:e});d(`Asset created: ${n.theCreateAsset.name}`),s(t,n.theCreateAsset);}catch(e){i(e);}}),o.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--commodity <c>","Commodity type").option("--kind <k>","Asset kind").option("--code <code>","Asset code").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--decommissioned-at <iso>","Decommissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.commodity&&(n.commodity=e.commodity.toUpperCase()),e.kind&&(n.kind=e.kind.toUpperCase()),e.code&&(n.code=e.code),e.location!==void 0&&(n.location=e.location),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.capacityPerDay!==void 0&&(n.capacityPerDay=e.capacityPerDay),e.capacityUnit&&(n.capacityUnit=e.capacityUnit.toUpperCase()),e.workingInterestPct!==void 0&&(n.workingInterestPct=e.workingInterestPct),e.operatorLead&&(n.operatorLeadId=e.operatorLead),e.commissionedAt&&(n.commissionedAt=e.commissionedAt),e.decommissionedAt&&(n.decommissionedAt=e.decommissionedAt),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(b,{id:t,input:n});d("Asset updated"),s(e,g.theUpdateAsset);}catch(n){i(n);}}),o.command("transition").description("Advance an asset through its lifecycle").argument("<id>","Asset ID").requiredOption("--status <s>","EXPLORATION|APPRAISAL|DEVELOPMENT|PRODUCING|SUSPENDED|DECOMMISSIONING|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t,status:e.status.toUpperCase()});d(`Asset transitioned to ${n.theTransitionAsset.status}`),s(e,n.theTransitionAsset);}catch(n){i(n);}}),o.command("retire").description("Retire (delete) an asset").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});d(n.theRetireAsset?`Asset ${t} retired`:`Asset ${t} not retired`),s(e,{retired:n.theRetireAsset});}catch(n){i(n);}});}function ot(r){let o=r.command("contracts").description("Theglobalfuel offtake contracts");o.command("list").description("List offtake contracts").option("--commodity <c>","Filter by commodity type").option("--side <s>","BUY|SELL").option("--status <s>","Filter by contract status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{commodity:t.commodity?t.commodity.toUpperCase():void 0,side:t.side?t.side.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListContracts.items,{headers:["ID","Reference","Counterparty","Commodity","Side","Status","Volume"],rows:e.theListContracts.items.map(n=>[p(n.id,12),n.reference,n.counterparty,n.commodity,n.side,n.status,`${n.deliveredVolume??0}/${n.contractedVolume??0}`])});}catch(e){i(e);}}),o.command("get").description("Get an offtake contract by id").argument("<id>","Contract ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});if(!n.theContract)throw new m(`Contract ${t} not found`);s(e,n.theContract);}catch(n){i(n);}}),o.command("create").description("Create an offtake contract").requiredOption("--reference <r>","Contract reference").requiredOption("--counterparty <c>","Counterparty name").requiredOption("--commodity <c>","Commodity type").option("--side <s>","BUY|SELL (default SELL)").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT (default FIXED)").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit (default BARRELS)").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={reference:t.reference,counterparty:t.counterparty,commodity:t.commodity.toUpperCase()};t.side&&(e.side=t.side.toUpperCase()),t.pricingBasis&&(e.pricingBasis=t.pricingBasis.toUpperCase()),t.pricePerUnit!==void 0&&(e.pricePerUnit=t.pricePerUnit),t.priceIndex&&(e.priceIndex=t.priceIndex),t.currency&&(e.currency=t.currency),t.unit&&(e.unit=t.unit.toUpperCase()),t.contractedVolume!==void 0&&(e.contractedVolume=t.contractedVolume),t.deliveryLocation&&(e.deliveryLocation=t.deliveryLocation),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(N,{input:e});d(`Contract created: ${n.theCreateContract.reference}`),s(t,n.theCreateContract);}catch(e){i(e);}}),o.command("update").description("Update an offtake contract").argument("<id>","Contract ID").option("--counterparty <c>","Counterparty name").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.counterparty&&(n.counterparty=e.counterparty),e.pricingBasis&&(n.pricingBasis=e.pricingBasis.toUpperCase()),e.pricePerUnit!==void 0&&(n.pricePerUnit=e.pricePerUnit),e.priceIndex&&(n.priceIndex=e.priceIndex),e.currency&&(n.currency=e.currency),e.unit&&(n.unit=e.unit.toUpperCase()),e.contractedVolume!==void 0&&(n.contractedVolume=e.contractedVolume),e.deliveryLocation!==void 0&&(n.deliveryLocation=e.deliveryLocation),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(_,{id:t,input:n});d("Contract updated"),s(e,g.theUpdateContract);}catch(n){i(n);}}),o.command("transition").description("Advance an offtake contract through its lifecycle").argument("<id>","Contract ID").requiredOption("--status <s>","DRAFT|NEGOTIATION|SIGNED|ACTIVE|SUSPENDED|COMPLETED|TERMINATED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});d(`Contract transitioned to ${n.theTransitionContract.status}`),s(e,n.theTransitionContract);}catch(n){i(n);}});}function rt(r){let o=r.command("shipments").description("Theglobalfuel shipments");o.command("list").description("List shipments").option("--contract <id>","Filter by contract ID").option("--status <s>","SCHEDULED|LOADING|IN_TRANSIT|DELIVERED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{contractId:t.contract,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListShipments,{headers:["ID","Reference","Contract","Status","Mode","Volume"],rows:e.theListShipments.map(n=>[p(n.id,12),n.reference,p(n.contractId,12),n.status,n.mode,`${n.volume} ${n.unit}`])});}catch(e){i(e);}}),o.command("schedule").description("Schedule a shipment against a contract").requiredOption("--contract <id>","Contract ID").requiredOption("--reference <r>","Shipment reference").requiredOption("--volume <n>","Volume",c).option("--mode <m>","PIPELINE|TANKER|RAIL|TRUCK|VESSEL_BULK|GRID (default PIPELINE)").option("--unit <u>","Unit (default BARRELS)").option("--carrier <s>","Carrier").option("--origin <s>","Origin").option("--destination <s>","Destination").option("--scheduled-at <iso>","Scheduled date (ISO)").option("--document-file <id>","Document file ID (bill of lading / certificate)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={contractId:t.contract,reference:t.reference,volume:t.volume};t.mode&&(e.mode=t.mode.toUpperCase()),t.unit&&(e.unit=t.unit.toUpperCase()),t.carrier&&(e.carrier=t.carrier),t.origin&&(e.origin=t.origin),t.destination&&(e.destination=t.destination),t.scheduledAt&&(e.scheduledAt=t.scheduledAt),t.documentFile&&(e.documentFileId=t.documentFile),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Shipment scheduled: ${n.theScheduleShipment.reference}`),s(t,n.theScheduleShipment);}catch(e){i(e);}}),o.command("deliver").description("Mark a shipment delivered (rolls volume into the contract's delivered total)").argument("<id>","Shipment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Shipment delivered: ${n.theDeliverShipment.reference}`),s(e,n.theDeliverShipment);}catch(n){i(n);}});}function it(r){let o=r.command("inventory").description("Theglobalfuel inventory lots");o.command("list").description("List inventory lots").option("--commodity <c>","Filter by commodity type").option("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{commodity:t.commodity?t.commodity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListInventoryLots.items,{headers:["ID","Lot Code","Commodity","Status","Quantity","Unit Value"],rows:e.theListInventoryLots.items.map(n=>[p(n.id,12),n.lotCode,n.commodity,n.status,`${n.quantity} ${n.unit}`,String(n.unitValue??0)])});}catch(e){i(e);}}),o.command("create").description("Create an inventory lot").requiredOption("--lot-code <c>","Lot code").requiredOption("--commodity <c>","Commodity type").requiredOption("--quantity <n>","Quantity",c).option("--unit <u>","Unit (default BARRELS)").option("--unit-value <n>","Unit value",c).option("--currency <s>","Currency code").option("--grade <n>","Grade",c).option("--location <s>","Storage location").option("--asset <id>","Source asset ID").option("--produced-at <iso>","Produced date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotCode:t.lotCode,commodity:t.commodity.toUpperCase(),quantity:t.quantity};t.unit&&(e.unit=t.unit.toUpperCase()),t.unitValue!==void 0&&(e.unitValue=t.unitValue),t.currency&&(e.currency=t.currency),t.grade!==void 0&&(e.grade=t.grade),t.location&&(e.location=t.location),t.asset&&(e.assetId=t.asset),t.producedAt&&(e.producedAt=t.producedAt),t.notes&&(e.notes=t.notes);let n=await a(G,{input:e});d(`Inventory lot created: ${n.theCreateInventoryLot.lotCode}`),s(t,n.theCreateInventoryLot);}catch(e){i(e);}}),o.command("set-status").description("Set an inventory lot status").argument("<id>","Inventory lot ID").requiredOption("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});d(`Inventory lot status set to ${n.theSetInventoryLotStatus.status}`),s(e,n.theSetInventoryLotStatus);}catch(n){i(n);}});}function st(r){let o=r.command("production").description("Theglobalfuel production records");o.command("list").description("List production records").option("--asset <id>","Filter by asset ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{assetId:t.asset,pagination:f(t.limit,t.offset)});s(t,e.theListProductionRecords.items,{headers:["ID","Asset","Volume","Downtime (h)","Period Start","Period End"],rows:e.theListProductionRecords.items.map(n=>[p(n.id,12),p(n.assetId,12),`${n.volume} ${n.unit}`,String(n.downtimeHours??0),C(n.periodStart),C(n.periodEnd)])});}catch(e){i(e);}}),o.command("record").description("Record a production figure for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--volume <n>","Produced volume",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--unit <u>","Unit (default BARRELS)").option("--grade <n>","Grade",c).option("--downtime-hours <n>","Downtime hours",c).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,volume:t.volume,periodStart:t.periodStart,periodEnd:t.periodEnd};t.unit&&(e.unit=t.unit.toUpperCase()),t.grade!==void 0&&(e.grade=t.grade),t.downtimeHours!==void 0&&(e.downtimeHours=t.downtimeHours),t.notes&&(e.notes=t.notes);let n=await a(H,{input:e});d(`Production recorded: ${n.theRecordProduction.volume} ${t.unit??""}`.trim()),s(t,n.theRecordProduction);}catch(e){i(e);}});}function at(r){let o=r.command("emissions").description("Theglobalfuel emission records");o.command("list").description("List emission records").option("--asset <id>","Filter by asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{assetId:t.asset,scope:t.scope?t.scope.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListEmissionRecords.items,{headers:["ID","Asset","Scope","CO2e (t)","Source","Verified"],rows:e.theListEmissionRecords.items.map(n=>[p(n.id,12),p(n.assetId??"-",12),n.scope,String(n.co2eTonnes),n.source??"-",n.verified?"yes":"no"])});}catch(e){i(e);}}),o.command("record").description("Record an emission figure").requiredOption("--co2e-tonnes <n>","CO2e tonnes",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--asset <id>","Asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3 (default SCOPE_1)").option("--source <s>","Emission source").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={co2eTonnes:t.co2eTonnes,periodStart:t.periodStart,periodEnd:t.periodEnd};t.asset&&(e.assetId=t.asset),t.scope&&(e.scope=t.scope.toUpperCase()),t.source&&(e.source=t.source),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(Y,{input:e});d(`Emission recorded: ${n.theRecordEmission.co2eTonnes} tCO2e`),s(t,n.theRecordEmission);}catch(e){i(e);}}),o.command("verify").description("Mark an emission figure third-party verified").argument("<id>","Emission record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});d("Emission verified"),s(e,n.theVerifyEmission);}catch(n){i(n);}});}function ct(r){let o=r.command("reserves").description("Theglobalfuel reserve estimates");o.command("list").description("List reserve estimates").option("--asset <id>","Filter by asset ID").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0});s(t,e.theListReserveEstimates,{headers:["ID","Asset","Category","Recoverable","Factor","As Of"],rows:e.theListReserveEstimates.map(n=>[p(n.id,12),p(n.assetId,12),n.category,`${n.recoverable} ${n.unit}`,n.recoveryFactor!=null?String(n.recoveryFactor):"-",C(n.asOfDate)])});}catch(e){i(e);}}),o.command("create").description("Create a reserve estimate for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--recoverable <n>","Recoverable quantity",c).requiredOption("--as-of-date <iso>","As-of date (ISO)").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE (default PROVED)").option("--recovery-factor <n>","Recovery factor",c).option("--unit <u>","Unit (default BARRELS)").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,recoverable:t.recoverable,asOfDate:t.asOfDate};t.category&&(e.category=t.category.toUpperCase()),t.recoveryFactor!==void 0&&(e.recoveryFactor=t.recoveryFactor),t.unit&&(e.unit=t.unit.toUpperCase()),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(J,{input:e});d(`Reserve estimate created (${n.theCreateReserveEstimate.category})`),s(t,n.theCreateReserveEstimate);}catch(e){i(e);}});}function dt(r){let o=r.command("compliance").description("Theglobalfuel compliance certifications");o.command("list").description("List compliance certifications").option("--asset <id>","Filter by asset ID").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY").option("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListComplianceCerts,{headers:["ID","Title","Category","Status","Authority","Expires"],rows:e.theListComplianceCerts.map(n=>[p(n.id,12),n.title,n.category,n.status,n.authority??"-",C(n.expiresAt)])});}catch(e){i(e);}}),o.command("get").description("Get a compliance certification by id").argument("<id>","Compliance cert ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t});if(!n.theComplianceCert)throw new m(`Compliance cert ${t} not found`);s(e,n.theComplianceCert);}catch(n){i(n);}}),o.command("create").description("Create a compliance certification").requiredOption("--title <t>","Title").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY (default ENVIRONMENTAL_PERMIT)").option("--asset <id>","Related asset ID").option("--authority <s>","Issuing authority").option("--cert-number <s>","Certificate number").option("--owner <id>","Owner user ID").option("--evidence-file <id>","Evidence file ID (certificate document)").option("--issued-at <iso>","Issued date (ISO)").option("--expires-at <iso>","Expiry date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.category&&(e.category=t.category.toUpperCase()),t.asset&&(e.assetId=t.asset),t.authority&&(e.authority=t.authority),t.certNumber&&(e.certNumber=t.certNumber),t.owner&&(e.ownerId=t.owner),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.issuedAt&&(e.issuedAt=t.issuedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(Z,{input:e});d(`Compliance cert created: ${n.theCreateComplianceCert.title}`),s(t,n.theCreateComplianceCert);}catch(e){i(e);}}),o.command("transition").description("Advance a compliance certification through its lifecycle").argument("<id>","Compliance cert ID").requiredOption("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,status:e.status.toUpperCase()});d(`Compliance cert transitioned to ${n.theTransitionComplianceCert.status}`),s(e,n.theTransitionComplianceCert);}catch(n){i(n);}});}function ut(r){r.command("health").description("Theglobalfuel service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await w(et);d(t.theHealth),s(o,{health:t.theHealth});}catch(t){i(t);}});}var wt={id:"theglobalfuel",version:"1.0.0",displayName:"Theglobalfuel",dependsOn:["auth","workspaces"],register(r,o){O(o);let t=r.command("theglobalfuel").description("Theglobalfuel energy & commodities operations ledger");nt(t),ot(t),rt(t),it(t),st(t),at(t),ct(t),dt(t),ut(t);}},yn=wt;module.exports=yn;
251
+ `;function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new m(`Expected an integer but got "${r}"`);return o}function c(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new m(`Expected a number but got "${r}"`);return o}function f(r,o){let t={};return r!==void 0&&(t.limit=r),o!==void 0&&(t.offset=o),t}function nt(r){let o=r.command("assets").description("Theglobalfuel upstream assets");o.command("list").description("List assets").option("--commodity <c>","Filter by commodity type").option("--kind <k>","Filter by asset kind").option("--status <s>","Filter by asset status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(v,{commodity:t.commodity?t.commodity.toUpperCase():void 0,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListAssets.items,{headers:["ID","Name","Kind","Commodity","Status","Capacity/Day"],rows:e.theListAssets.items.map(n=>[p(n.id,12),n.name,n.kind,n.commodity,n.status,`${n.capacityPerDay??0} ${n.capacityUnit??""}`.trim()])});}catch(e){i(e);}}),o.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.theAsset)throw new m(`Asset ${t} not found`);s(e,n.theAsset);}catch(n){i(n);}}),o.command("create").description("Create an asset").requiredOption("--name <name>","Asset name").requiredOption("--commodity <c>","Commodity type (e.g. CRUDE_OIL, NATURAL_GAS, LITHIUM)").option("--kind <k>","Asset kind (default WELL)").option("--code <code>","Asset code").option("--status <s>","Asset status (default EXPLORATION)").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit (default BARRELS)").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,commodity:t.commodity.toUpperCase()};t.kind&&(e.kind=t.kind.toUpperCase()),t.code&&(e.code=t.code),t.status&&(e.status=t.status.toUpperCase()),t.location&&(e.location=t.location),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.capacityPerDay!==void 0&&(e.capacityPerDay=t.capacityPerDay),t.capacityUnit&&(e.capacityUnit=t.capacityUnit.toUpperCase()),t.workingInterestPct!==void 0&&(e.workingInterestPct=t.workingInterestPct),t.operatorLead&&(e.operatorLeadId=t.operatorLead),t.commissionedAt&&(e.commissionedAt=t.commissionedAt),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(x,{input:e});d(`Asset created: ${n.theCreateAsset.name}`),s(t,n.theCreateAsset);}catch(e){i(e);}}),o.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--commodity <c>","Commodity type").option("--kind <k>","Asset kind").option("--code <code>","Asset code").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--decommissioned-at <iso>","Decommissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.commodity&&(n.commodity=e.commodity.toUpperCase()),e.kind&&(n.kind=e.kind.toUpperCase()),e.code&&(n.code=e.code),e.location!==void 0&&(n.location=e.location),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.capacityPerDay!==void 0&&(n.capacityPerDay=e.capacityPerDay),e.capacityUnit&&(n.capacityUnit=e.capacityUnit.toUpperCase()),e.workingInterestPct!==void 0&&(n.workingInterestPct=e.workingInterestPct),e.operatorLead&&(n.operatorLeadId=e.operatorLead),e.commissionedAt&&(n.commissionedAt=e.commissionedAt),e.decommissionedAt&&(n.decommissionedAt=e.decommissionedAt),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(b,{id:t,input:n});d("Asset updated"),s(e,g.theUpdateAsset);}catch(n){i(n);}}),o.command("transition").description("Advance an asset through its lifecycle").argument("<id>","Asset ID").requiredOption("--status <s>","EXPLORATION|APPRAISAL|DEVELOPMENT|PRODUCING|SUSPENDED|DECOMMISSIONING|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t,status:e.status.toUpperCase()});d(`Asset transitioned to ${n.theTransitionAsset.status}`),s(e,n.theTransitionAsset);}catch(n){i(n);}}),o.command("retire").description("Retire (delete) an asset").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});d(n.theRetireAsset?`Asset ${t} retired`:`Asset ${t} not retired`),s(e,{retired:n.theRetireAsset});}catch(n){i(n);}});}function ot(r){let o=r.command("contracts").description("Theglobalfuel offtake contracts");o.command("list").description("List offtake contracts").option("--commodity <c>","Filter by commodity type").option("--side <s>","BUY|SELL").option("--status <s>","Filter by contract status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{commodity:t.commodity?t.commodity.toUpperCase():void 0,side:t.side?t.side.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListContracts.items,{headers:["ID","Reference","Counterparty","Commodity","Side","Status","Volume"],rows:e.theListContracts.items.map(n=>[p(n.id,12),n.reference,n.counterparty,n.commodity,n.side,n.status,`${n.deliveredVolume??0}/${n.contractedVolume??0}`])});}catch(e){i(e);}}),o.command("get").description("Get an offtake contract by id").argument("<id>","Contract ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});if(!n.theContract)throw new m(`Contract ${t} not found`);s(e,n.theContract);}catch(n){i(n);}}),o.command("create").description("Create an offtake contract").requiredOption("--reference <r>","Contract reference").requiredOption("--counterparty <c>","Counterparty name").requiredOption("--commodity <c>","Commodity type").option("--side <s>","BUY|SELL (default SELL)").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT (default FIXED)").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit (default BARRELS)").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={reference:t.reference,counterparty:t.counterparty,commodity:t.commodity.toUpperCase()};t.side&&(e.side=t.side.toUpperCase()),t.pricingBasis&&(e.pricingBasis=t.pricingBasis.toUpperCase()),t.pricePerUnit!==void 0&&(e.pricePerUnit=t.pricePerUnit),t.priceIndex&&(e.priceIndex=t.priceIndex),t.currency&&(e.currency=t.currency),t.unit&&(e.unit=t.unit.toUpperCase()),t.contractedVolume!==void 0&&(e.contractedVolume=t.contractedVolume),t.deliveryLocation&&(e.deliveryLocation=t.deliveryLocation),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(N,{input:e});d(`Contract created: ${n.theCreateContract.reference}`),s(t,n.theCreateContract);}catch(e){i(e);}}),o.command("update").description("Update an offtake contract").argument("<id>","Contract ID").option("--counterparty <c>","Counterparty name").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.counterparty&&(n.counterparty=e.counterparty),e.pricingBasis&&(n.pricingBasis=e.pricingBasis.toUpperCase()),e.pricePerUnit!==void 0&&(n.pricePerUnit=e.pricePerUnit),e.priceIndex&&(n.priceIndex=e.priceIndex),e.currency&&(n.currency=e.currency),e.unit&&(n.unit=e.unit.toUpperCase()),e.contractedVolume!==void 0&&(n.contractedVolume=e.contractedVolume),e.deliveryLocation!==void 0&&(n.deliveryLocation=e.deliveryLocation),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(_,{id:t,input:n});d("Contract updated"),s(e,g.theUpdateContract);}catch(n){i(n);}}),o.command("transition").description("Advance an offtake contract through its lifecycle").argument("<id>","Contract ID").requiredOption("--status <s>","DRAFT|NEGOTIATION|SIGNED|ACTIVE|SUSPENDED|COMPLETED|TERMINATED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});d(`Contract transitioned to ${n.theTransitionContract.status}`),s(e,n.theTransitionContract);}catch(n){i(n);}});}function rt(r){let o=r.command("shipments").description("Theglobalfuel shipments");o.command("list").description("List shipments").option("--contract <id>","Filter by contract ID").option("--status <s>","SCHEDULED|LOADING|IN_TRANSIT|DELIVERED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{contractId:t.contract,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListShipments,{headers:["ID","Reference","Contract","Status","Mode","Volume"],rows:e.theListShipments.map(n=>[p(n.id,12),n.reference,p(n.contractId,12),n.status,n.mode,`${n.volume} ${n.unit}`])});}catch(e){i(e);}}),o.command("schedule").description("Schedule a shipment against a contract").requiredOption("--contract <id>","Contract ID").requiredOption("--reference <r>","Shipment reference").requiredOption("--volume <n>","Volume",c).option("--mode <m>","PIPELINE|TANKER|RAIL|TRUCK|VESSEL_BULK|GRID (default PIPELINE)").option("--unit <u>","Unit (default BARRELS)").option("--carrier <s>","Carrier").option("--origin <s>","Origin").option("--destination <s>","Destination").option("--scheduled-at <iso>","Scheduled date (ISO)").option("--document-file <id>","Document file ID (bill of lading / certificate)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={contractId:t.contract,reference:t.reference,volume:t.volume};t.mode&&(e.mode=t.mode.toUpperCase()),t.unit&&(e.unit=t.unit.toUpperCase()),t.carrier&&(e.carrier=t.carrier),t.origin&&(e.origin=t.origin),t.destination&&(e.destination=t.destination),t.scheduledAt&&(e.scheduledAt=t.scheduledAt),t.documentFile&&(e.documentFileId=t.documentFile),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Shipment scheduled: ${n.theScheduleShipment.reference}`),s(t,n.theScheduleShipment);}catch(e){i(e);}}),o.command("deliver").description("Mark a shipment delivered (rolls volume into the contract's delivered total)").argument("<id>","Shipment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Shipment delivered: ${n.theDeliverShipment.reference}`),s(e,n.theDeliverShipment);}catch(n){i(n);}});}function it(r){let o=r.command("inventory").description("Theglobalfuel inventory lots");o.command("list").description("List inventory lots").option("--commodity <c>","Filter by commodity type").option("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{commodity:t.commodity?t.commodity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListInventoryLots.items,{headers:["ID","Lot Code","Commodity","Status","Quantity","Unit Value"],rows:e.theListInventoryLots.items.map(n=>[p(n.id,12),n.lotCode,n.commodity,n.status,`${n.quantity} ${n.unit}`,String(n.unitValue??0)])});}catch(e){i(e);}}),o.command("create").description("Create an inventory lot").requiredOption("--lot-code <c>","Lot code").requiredOption("--commodity <c>","Commodity type").requiredOption("--quantity <n>","Quantity",c).option("--unit <u>","Unit (default BARRELS)").option("--unit-value <n>","Unit value",c).option("--currency <s>","Currency code").option("--grade <n>","Grade",c).option("--location <s>","Storage location").option("--asset <id>","Source asset ID").option("--produced-at <iso>","Produced date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotCode:t.lotCode,commodity:t.commodity.toUpperCase(),quantity:t.quantity};t.unit&&(e.unit=t.unit.toUpperCase()),t.unitValue!==void 0&&(e.unitValue=t.unitValue),t.currency&&(e.currency=t.currency),t.grade!==void 0&&(e.grade=t.grade),t.location&&(e.location=t.location),t.asset&&(e.assetId=t.asset),t.producedAt&&(e.producedAt=t.producedAt),t.notes&&(e.notes=t.notes);let n=await a(G,{input:e});d(`Inventory lot created: ${n.theCreateInventoryLot.lotCode}`),s(t,n.theCreateInventoryLot);}catch(e){i(e);}}),o.command("set-status").description("Set an inventory lot status").argument("<id>","Inventory lot ID").requiredOption("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});d(`Inventory lot status set to ${n.theSetInventoryLotStatus.status}`),s(e,n.theSetInventoryLotStatus);}catch(n){i(n);}});}function st(r){let o=r.command("production").description("Theglobalfuel production records");o.command("list").description("List production records").option("--asset <id>","Filter by asset ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{assetId:t.asset,pagination:f(t.limit,t.offset)});s(t,e.theListProductionRecords.items,{headers:["ID","Asset","Volume","Downtime (h)","Period Start","Period End"],rows:e.theListProductionRecords.items.map(n=>[p(n.id,12),p(n.assetId,12),`${n.volume} ${n.unit}`,String(n.downtimeHours??0),y(n.periodStart),y(n.periodEnd)])});}catch(e){i(e);}}),o.command("record").description("Record a production figure for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--volume <n>","Produced volume",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--unit <u>","Unit (default BARRELS)").option("--grade <n>","Grade",c).option("--downtime-hours <n>","Downtime hours",c).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,volume:t.volume,periodStart:t.periodStart,periodEnd:t.periodEnd};t.unit&&(e.unit=t.unit.toUpperCase()),t.grade!==void 0&&(e.grade=t.grade),t.downtimeHours!==void 0&&(e.downtimeHours=t.downtimeHours),t.notes&&(e.notes=t.notes);let n=await a(H,{input:e});d(`Production recorded: ${n.theRecordProduction.volume} ${t.unit??""}`.trim()),s(t,n.theRecordProduction);}catch(e){i(e);}});}function at(r){let o=r.command("emissions").description("Theglobalfuel emission records");o.command("list").description("List emission records").option("--asset <id>","Filter by asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{assetId:t.asset,scope:t.scope?t.scope.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListEmissionRecords.items,{headers:["ID","Asset","Scope","CO2e (t)","Source","Verified"],rows:e.theListEmissionRecords.items.map(n=>[p(n.id,12),p(n.assetId??"-",12),n.scope,String(n.co2eTonnes),n.source??"-",n.verified?"yes":"no"])});}catch(e){i(e);}}),o.command("record").description("Record an emission figure").requiredOption("--co2e-tonnes <n>","CO2e tonnes",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--asset <id>","Asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3 (default SCOPE_1)").option("--source <s>","Emission source").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={co2eTonnes:t.co2eTonnes,periodStart:t.periodStart,periodEnd:t.periodEnd};t.asset&&(e.assetId=t.asset),t.scope&&(e.scope=t.scope.toUpperCase()),t.source&&(e.source=t.source),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(Y,{input:e});d(`Emission recorded: ${n.theRecordEmission.co2eTonnes} tCO2e`),s(t,n.theRecordEmission);}catch(e){i(e);}}),o.command("verify").description("Mark an emission figure third-party verified").argument("<id>","Emission record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});d("Emission verified"),s(e,n.theVerifyEmission);}catch(n){i(n);}});}function ct(r){let o=r.command("reserves").description("Theglobalfuel reserve estimates");o.command("list").description("List reserve estimates").option("--asset <id>","Filter by asset ID").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0});s(t,e.theListReserveEstimates,{headers:["ID","Asset","Category","Recoverable","Factor","As Of"],rows:e.theListReserveEstimates.map(n=>[p(n.id,12),p(n.assetId,12),n.category,`${n.recoverable} ${n.unit}`,n.recoveryFactor!=null?String(n.recoveryFactor):"-",y(n.asOfDate)])});}catch(e){i(e);}}),o.command("create").description("Create a reserve estimate for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--recoverable <n>","Recoverable quantity",c).requiredOption("--as-of-date <iso>","As-of date (ISO)").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE (default PROVED)").option("--recovery-factor <n>","Recovery factor",c).option("--unit <u>","Unit (default BARRELS)").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,recoverable:t.recoverable,asOfDate:t.asOfDate};t.category&&(e.category=t.category.toUpperCase()),t.recoveryFactor!==void 0&&(e.recoveryFactor=t.recoveryFactor),t.unit&&(e.unit=t.unit.toUpperCase()),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(J,{input:e});d(`Reserve estimate created (${n.theCreateReserveEstimate.category})`),s(t,n.theCreateReserveEstimate);}catch(e){i(e);}});}function dt(r){let o=r.command("compliance").description("Theglobalfuel compliance certifications");o.command("list").description("List compliance certifications").option("--asset <id>","Filter by asset ID").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY").option("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListComplianceCerts,{headers:["ID","Title","Category","Status","Authority","Expires"],rows:e.theListComplianceCerts.map(n=>[p(n.id,12),n.title,n.category,n.status,n.authority??"-",y(n.expiresAt)])});}catch(e){i(e);}}),o.command("get").description("Get a compliance certification by id").argument("<id>","Compliance cert ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t});if(!n.theComplianceCert)throw new m(`Compliance cert ${t} not found`);s(e,n.theComplianceCert);}catch(n){i(n);}}),o.command("create").description("Create a compliance certification").requiredOption("--title <t>","Title").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY (default ENVIRONMENTAL_PERMIT)").option("--asset <id>","Related asset ID").option("--authority <s>","Issuing authority").option("--cert-number <s>","Certificate number").option("--owner <id>","Owner user ID").option("--evidence-file <id>","Evidence file ID (certificate document)").option("--issued-at <iso>","Issued date (ISO)").option("--expires-at <iso>","Expiry date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.category&&(e.category=t.category.toUpperCase()),t.asset&&(e.assetId=t.asset),t.authority&&(e.authority=t.authority),t.certNumber&&(e.certNumber=t.certNumber),t.owner&&(e.ownerId=t.owner),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.issuedAt&&(e.issuedAt=t.issuedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(Z,{input:e});d(`Compliance cert created: ${n.theCreateComplianceCert.title}`),s(t,n.theCreateComplianceCert);}catch(e){i(e);}}),o.command("transition").description("Advance a compliance certification through its lifecycle").argument("<id>","Compliance cert ID").requiredOption("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,status:e.status.toUpperCase()});d(`Compliance cert transitioned to ${n.theTransitionComplianceCert.status}`),s(e,n.theTransitionComplianceCert);}catch(n){i(n);}});}function ut(r){r.command("health").description("Theglobalfuel service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await w(et);d(t.theHealth),s(o,{health:t.theHealth});}catch(t){i(t);}});}var wt={id:"theglobalfuel",version:"1.0.0",displayName:"Theglobalfuel",dependsOn:["auth","workspaces"],register(r,o){O(o);let t=r.command("theglobalfuel").description("Theglobalfuel energy & commodities operations ledger");nt(t),ot(t),rt(t),it(t),st(t),at(t),ct(t),dt(t),ut(t);}},Cn=wt;module.exports=Cn;