@burdenoff/cli-sdk 2026.1101.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-REBBLQFS.js → chunk-ZGT7IIOP.js} +494 -522
  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 +18 -18
  13. package/dist/modules/billing/index.js +22 -22
  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 +40 -34
  31. package/dist/modules/devportal/index.js +49 -43
  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 +32 -51
  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 +46 -40
  82. package/dist/modules/store/index.js +45 -39
  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 +573 -577
  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,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o as o$1}from'../../chunk-YIY5IDXQ.js';var S=`
1
+ import {a,b as b$1,i,r,h as h$1,k,d}from'../../chunk-O6UCQ5IT.js';import {o as o$1}from'../../chunk-YIY5IDXQ.js';var S=`
2
2
  id firstName lastName email phone position department location type status
3
3
  salary performanceScore managerId avatar startDate workspaceId
4
4
  `,R=`
@@ -193,4 +193,4 @@ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o as o
193
193
  query CrewfoundryHealth {
194
194
  _empty
195
195
  }
196
- `;function y(m){let a=Number.parseInt(m,10);if(Number.isNaN(a))throw new o$1(`Expected an integer but got "${m}"`);return a}function f(m){let a=Number.parseFloat(m);if(Number.isNaN(a))throw new o$1(`Expected a number but got "${m}"`);return a}function C(m){return m.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function It(m){let a=m.command("employees").description("Crewfoundry employees");a.command("list").description("List employees").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(D)).crewfoundryBootstrap.employees;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Name","Email","Department","Position","Status"],rows:t.map(r=>[p(r.id,12),`${r.firstName} ${r.lastName}`,r.email,r.department,r.position,r.status])});}catch(e){g(e);}}),a.command("get").description("Get an employee by id").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(D)).crewfoundryBootstrap.employees.find(l=>l.id===n);if(!r)throw new o$1(`Employee ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create an employee").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--department <s>","Department").requiredOption("--location <s>","Location").requiredOption("--salary <n>","Salary",f).option("--type <s>","Employment type (e.g. full-time)","full-time").option("--status <s>","Status","active").option("--performance-score <n>","Performance score",f,0).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,department:n.department,location:n.location,salary:n.salary,type:n.type??"full-time",status:n.status??"active",performanceScore:n.performanceScore??0,startDate:n.startDate??new Date().toISOString()};n.managerId&&(e.managerId=n.managerId),n.avatar&&(e.avatar=n.avatar);let t=await b$1(st,{input:e});i(`Employee created: ${t.createCrewEmployee.firstName} ${t.createCrewEmployee.lastName}`),h$1(n,t.createCrewEmployee);}catch(e){g(e);}}),a.command("update").description("Update an employee").argument("<id>","Employee ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--department <s>","Department").option("--location <s>","Location").option("--salary <n>","Salary",f).option("--type <s>","Employment type").option("--status <s>","Status").option("--performance-score <n>","Performance score",f).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.department&&(t.department=e.department),e.location&&(t.location=e.location),e.salary!==void 0&&(t.salary=e.salary),e.type&&(t.type=e.type),e.status&&(t.status=e.status),e.performanceScore!==void 0&&(t.performanceScore=e.performanceScore),e.managerId&&(t.managerId=e.managerId),e.avatar&&(t.avatar=e.avatar),e.startDate&&(t.startDate=e.startDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(pt,{id:n,input:t});i("Employee updated"),h$1(e,r.updateCrewEmployee);}catch(t){g(t);}}),a.command("remove").description("Remove an employee").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(mt,{id:n});if(!t.removeCrewEmployee)throw new o$1(`Employee ${n} could not be removed`);i(`Employee ${n} removed`),h$1(e,{removed:t.removeCrewEmployee});}catch(t){g(t);}});}function St(m){let a=m.command("candidates").description("Crewfoundry recruiting candidates");a.command("list").description("List candidates").option("--status <s>","Filter by status").option("--position <p>","Filter by position").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(T)).crewfoundryBootstrap.candidates;n.status&&(t=t.filter(r=>r.status===n.status)),n.position&&(t=t.filter(r=>r.position===n.position)),h$1(n,t,{headers:["ID","Name","Position","Source","Status","Rating"],rows:t.map(r=>[p(r.id,12),`${r.firstName} ${r.lastName}`,r.position,r.source,r.status,String(r.rating)])});}catch(e){g(e);}}),a.command("get").description("Get a candidate by id").argument("<id>","Candidate ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(T)).crewfoundryBootstrap.candidates.find(l=>l.id===n);if(!r)throw new o$1(`Candidate ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a candidate").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--source <s>","Source").option("--experience <n>","Years of experience",y,0).option("--rating <n>","Rating",f,0).option("--status <s>","Status","new").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,source:n.source,experience:n.experience??0,rating:n.rating??0,status:n.status??"new",skills:n.skills?C(n.skills):[],appliedDate:n.appliedDate??new Date().toISOString()};n.currentCompany&&(e.currentCompany=n.currentCompany),n.resumeUrl&&(e.resumeUrl=n.resumeUrl),n.notes&&(e.notes=n.notes);let t=await b$1(dt,{input:e});i(`Candidate created: ${t.createCrewCandidate.firstName} ${t.createCrewCandidate.lastName}`),h$1(n,t.createCrewCandidate);}catch(e){g(e);}}),a.command("update").description("Update a candidate").argument("<id>","Candidate ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--source <s>","Source").option("--experience <n>","Years of experience",y).option("--rating <n>","Rating",f).option("--status <s>","Status").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.source&&(t.source=e.source),e.experience!==void 0&&(t.experience=e.experience),e.rating!==void 0&&(t.rating=e.rating),e.status&&(t.status=e.status),e.currentCompany&&(t.currentCompany=e.currentCompany),e.skills&&(t.skills=C(e.skills)),e.resumeUrl&&(t.resumeUrl=e.resumeUrl),e.notes&&(t.notes=e.notes),e.appliedDate&&(t.appliedDate=e.appliedDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(ct,{id:n,input:t});i("Candidate updated"),h$1(e,r.updateCrewCandidate);}catch(t){g(t);}});}function Rt(m){let a=m.command("job-postings").description("Crewfoundry job postings");a.command("list").description("List job postings").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(_)).crewfoundryBootstrap.jobPostings;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Title","Department","Type","Applicants","Status"],rows:t.map(r=>[p(r.id,12),r.title,r.department,r.type,String(r.applicants),r.status])});}catch(e){g(e);}}),a.command("get").description("Get a job posting by id").argument("<id>","Job posting ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(_)).crewfoundryBootstrap.jobPostings.find(l=>l.id===n);if(!r)throw new o$1(`Job posting ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a job posting").requiredOption("--title <s>","Title").requiredOption("--department <s>","Department").requiredOption("--description <s>","Description").requiredOption("--experience-level <s>","Experience level").requiredOption("--location <s>","Location").requiredOption("--type <s>","Employment type (e.g. full-time)").option("--applicants <n>","Applicant count",y,0).option("--salary-min <n>","Minimum salary",f,0).option("--salary-max <n>","Maximum salary",f,0).option("--status <s>","Status","open").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,department:n.department,description:n.description,experienceLevel:n.experienceLevel,location:n.location,type:n.type,applicants:n.applicants??0,salaryMin:n.salaryMin??0,salaryMax:n.salaryMax??0,status:n.status??"open",requirements:n.requirements?C(n.requirements):[],benefits:n.benefits?C(n.benefits):[],postedDate:n.postedDate??new Date().toISOString()};n.deadline&&(e.deadline=n.deadline);let t=await b$1(ut,{input:e});i(`Job posting created: ${t.createCrewJobPosting.title}`),h$1(n,t.createCrewJobPosting);}catch(e){g(e);}}),a.command("update").description("Update a job posting").argument("<id>","Job posting ID").option("--title <s>","Title").option("--department <s>","Department").option("--description <s>","Description").option("--experience-level <s>","Experience level").option("--location <s>","Location").option("--type <s>","Employment type").option("--applicants <n>","Applicant count",y).option("--salary-min <n>","Minimum salary",f).option("--salary-max <n>","Maximum salary",f).option("--status <s>","Status").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.title&&(t.title=e.title),e.department&&(t.department=e.department),e.description&&(t.description=e.description),e.experienceLevel&&(t.experienceLevel=e.experienceLevel),e.location&&(t.location=e.location),e.type&&(t.type=e.type),e.applicants!==void 0&&(t.applicants=e.applicants),e.salaryMin!==void 0&&(t.salaryMin=e.salaryMin),e.salaryMax!==void 0&&(t.salaryMax=e.salaryMax),e.status&&(t.status=e.status),e.requirements&&(t.requirements=C(e.requirements)),e.benefits&&(t.benefits=C(e.benefits)),e.postedDate&&(t.postedDate=e.postedDate),e.deadline&&(t.deadline=e.deadline),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(lt,{id:n,input:t});i("Job posting updated"),h$1(e,r.updateCrewJobPosting);}catch(t){g(t);}});}function Nt(m){let a=m.command("leave-requests").description("Crewfoundry leave requests");a.command("list").description("List leave requests").option("--employee <id>","Filter by employee ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(A)).crewfoundryBootstrap.leaveRequests;n.employee&&(t=t.filter(r=>r.employeeId===n.employee)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Employee","Type","Days","Status"],rows:t.map(r=>[p(r.id,12),r.employeeName,r.type,String(r.days),r.status])});}catch(e){g(e);}}),a.command("get").description("Get a leave request by id").argument("<id>","Leave request ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(A)).crewfoundryBootstrap.leaveRequests.find(l=>l.id===n);if(!r)throw new o$1(`Leave request ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a leave request").requiredOption("--employee-id <id>","Employee ID").requiredOption("--employee-name <s>","Employee name").requiredOption("--department <s>","Department").requiredOption("--type <s>","Leave type").requiredOption("--reason <s>","Reason").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y,1).option("--status <s>","Status","pending").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async n=>{try{let e={employeeId:n.employeeId,employeeName:n.employeeName,department:n.department,type:n.type,reason:n.reason,startDate:n.startDate,endDate:n.endDate,days:n.days??1,status:n.status??"pending"};n.approverName&&(e.approverName=n.approverName);let t=await b$1(ft,{input:e});i(`Leave request created for ${t.createCrewLeaveRequest.employeeName}`),h$1(n,t.createCrewLeaveRequest);}catch(e){g(e);}}),a.command("update").description("Update a leave request").argument("<id>","Leave request ID").option("--employee-id <id>","Employee ID").option("--employee-name <s>","Employee name").option("--department <s>","Department").option("--type <s>","Leave type").option("--reason <s>","Reason").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y).option("--status <s>","Status").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.employeeId&&(t.employeeId=e.employeeId),e.employeeName&&(t.employeeName=e.employeeName),e.department&&(t.department=e.department),e.type&&(t.type=e.type),e.reason&&(t.reason=e.reason),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.days!==void 0&&(t.days=e.days),e.status&&(t.status=e.status),e.approverName&&(t.approverName=e.approverName),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(yt,{id:n,input:t});i("Leave request updated"),h$1(e,r.updateCrewLeaveRequest);}catch(t){g(t);}});}function Lt(m){let a=m.command("announcements").description("Crewfoundry announcements");a.command("list").description("List announcements").option("--category <c>","Filter by category").option("--pinned-only","Only pinned announcements").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(b)).crewfoundryBootstrap.announcements;n.category&&(t=t.filter(r=>r.category===n.category)),n.pinnedOnly&&(t=t.filter(r=>r.isPinned)),h$1(n,t,{headers:["ID","Title","Author","Category","Priority","Pinned"],rows:t.map(r=>[p(r.id,12),r.title,r.author,r.category,r.priority,r.isPinned?"yes":"no"])});}catch(e){g(e);}}),a.command("get").description("Get an announcement by id").argument("<id>","Announcement ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(b)).crewfoundryBootstrap.announcements.find(l=>l.id===n);if(!r)throw new o$1(`Announcement ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create an announcement").requiredOption("--title <s>","Title").requiredOption("--content <s>","Content").requiredOption("--author <s>","Author").requiredOption("--author-role <s>","Author role").requiredOption("--category <s>","Category").requiredOption("--priority <s>","Priority").option("--pinned","Pin the announcement").option("--view-count <n>","Initial view count",y,0).option("--tags <csv>","Comma-separated tags").option("--created-at <iso>","Created at (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,content:n.content,author:n.author,authorRole:n.authorRole,category:n.category,priority:n.priority,isPinned:n.pinned??!1,viewCount:n.viewCount??0,tags:n.tags?C(n.tags):[],createdAt:n.createdAt??new Date().toISOString()},t=await b$1(gt,{input:e});i(`Announcement created: ${t.createCrewAnnouncement.title}`),h$1(n,t.createCrewAnnouncement);}catch(e){g(e);}});}function Ot(m){let a=m.command("notifications").description("Crewfoundry notifications");a.command("list").description("List notifications").option("--category <c>","Filter by category").option("--unread-only","Only unread notifications").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(H)).crewfoundryBootstrap.notifications;n.category&&(t=t.filter(r=>r.category===n.category)),n.unreadOnly&&(t=t.filter(r=>!r.read)),h$1(n,t,{headers:["ID","Title","Type","Category","Read"],rows:t.map(r=>[p(r.id,12),r.title,r.type,r.category,r.read?"yes":"no"])});}catch(e){g(e);}}),a.command("mark-read").description("Mark a notification as read").argument("<id>","Notification ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(wt,{id:n});if(!t.markCrewNotificationRead)throw new o$1(`Notification ${n} could not be marked read`);i(`Notification ${n} marked read`),h$1(e,{read:t.markCrewNotificationRead});}catch(t){g(t);}}),a.command("mark-all-read").description("Mark all notifications as read").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(Ct);i("All notifications marked read"),h$1(n,{read:e.markAllCrewNotificationsRead});}catch(e){g(e);}});}function o(m){return m==null?"-":String(m)}function vt(m){let a=m.command("directory").description("Crewfoundry read-only collections (clients, projects, teams, finance, learning)"),n=async(e,t,r,l)=>{try{let k=(await b$1(e)).crewfoundryBootstrap[t];h$1(r,k,{headers:l.headers,rows:k.map(l.row)});}catch(I){g(I);}};a.command("clients").description("List clients").option("-f, --format <format>","Output format").action(e=>n(K,"clients",e,{headers:["ID","Name","Industry","Status","Projects","Revenue"],row:t=>[p(t.id,12),o(t.name),o(t.industry),o(t.status),o(t.projects),o(t.revenue)]})),a.command("courses").description("List training courses").option("-f, --format <format>","Output format").action(e=>n(Q,"courses",e,{headers:["ID","Title","Category","Level","Enrolled","Status"],row:t=>[p(t.id,12),o(t.title),o(t.category),o(t.level),o(t.enrolled),o(t.status)]})),a.command("departments").description("List departments").option("-f, --format <format>","Output format").action(e=>n(z,"departments",e,{headers:["ID","Name","Head","Employees","Budget","Status"],row:t=>[p(t.id,12),o(t.name),o(t.headName),o(t.employeeCount),o(t.budget),o(t.status)]})),a.command("interviews").description("List interviews").option("-f, --format <format>","Output format").action(e=>n(X,"interviews",e,{headers:["ID","Candidate","Position","Type","Status","Interviewer"],row:t=>[p(t.id,12),o(t.candidateName),o(t.position),o(t.type),o(t.status),o(t.interviewerName)]})),a.command("invoices").description("List invoices").option("-f, --format <format>","Output format").action(e=>n(Z,"invoices",e,{headers:["ID","Number","Client","Amount","Status"],row:t=>[p(t.id,12),o(t.number),o(t.clientName),o(t.amount),o(t.status)]})),a.command("learning-paths").description("List learning paths").option("-f, --format <format>","Output format").action(e=>n(tt,"learningPaths",e,{headers:["ID","Title","Level","Enrolled","Completion %"],row:t=>[p(t.id,12),o(t.title),o(t.level),o(t.enrolled),o(t.completionRate)]})),a.command("marketplace-services").description("List marketplace services").option("-f, --format <format>","Output format").action(e=>n(et,"marketplaceServices",e,{headers:["ID","Title","Category","Provider","Price","Rating"],row:t=>[p(t.id,12),o(t.title),o(t.category),o(t.provider),o(t.price),o(t.rating)]})),a.command("payroll").description("List payroll records").option("-f, --format <format>","Output format").action(e=>n(nt,"payrollRecords",e,{headers:["ID","Employee","Period","Gross","Net","Status"],row:t=>[p(t.id,12),o(t.employeeName),o(t.period),o(t.grossPay),o(t.netPay),o(t.status)]})),a.command("projects").description("List projects").option("-f, --format <format>","Output format").action(e=>n(rt,"projects",e,{headers:["ID","Name","Status","Priority","Progress","Budget"],row:t=>[p(t.id,12),o(t.name),o(t.status),o(t.priority),o(t.progress),o(t.budget)]})),a.command("teams").description("List teams").option("-f, --format <format>","Output format").action(e=>n(ot,"teams",e,{headers:["ID","Name","Department","Lead","Members","Status"],row:t=>[p(t.id,12),o(t.name),o(t.department),o(t.leadName),o(t.memberCount),o(t.status)]})),a.command("time-entries").description("List time entries").option("-f, --format <format>","Output format").action(e=>n(at,"timeEntries",e,{headers:["ID","Employee","Date","Hours","Overtime","Status"],row:t=>[p(t.id,12),o(t.employeeName),o(t.date),o(t.totalHours),o(t.overtime),o(t.status)]})),a.command("vendors").description("List vendors").option("-f, --format <format>","Output format").action(e=>n(it,"vendors",e,{headers:["ID","Name","Category","Contract Value","Rating","Status"],row:t=>[p(t.id,12),o(t.name),o(t.category),o(t.contractValue),o(t.rating),o(t.status)]}));}function ht(m){let a=m.command("analytics").description("Crewfoundry analytics & bootstrap");a.command("bootstrap").description("Fetch the full Crewfoundry workspace snapshot (all collections)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(h);h$1(n,e.crewfoundryBootstrap);}catch(e){g(e);}}),a.command("summary").description("Per-collection counts derived from the bootstrap snapshot").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(h)).crewfoundryBootstrap,r={employees:t.employees.length,candidates:t.candidates.length,jobPostings:t.jobPostings.length,leaveRequests:t.leaveRequests.length,announcements:t.announcements.length,notifications:t.notifications.length,clients:t.clients.length,courses:t.courses.length,departments:t.departments.length,interviews:t.interviews.length,invoices:t.invoices.length,learningPaths:t.learningPaths.length,marketplaceServices:t.marketplaceServices.length,payrollRecords:t.payrollRecords.length,projects:t.projects.length,teams:t.teams.length,timeEntries:t.timeEntries.length,vendors:t.vendors.length};h$1(n,r,{headers:["Collection","Count"],rows:Object.entries(r).map(([l,I])=>[l,String(I)])});}catch(e){g(e);}}),m.command("health").description("Crewfoundry service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await d(Et))._empty??"ok";i(`crewfoundry: ${t}`),h$1(n,{health:t});}catch(e){g(e);}});}var Dt={id:"crewfoundry",version:"1.0.0",displayName:"Crewfoundry",dependsOn:["auth","workspaces"],register(m,a$1){a(a$1);let n=m.command("crewfoundry").description("Crewfoundry workforce & HR operations");It(n),St(n),Rt(n),Nt(n),Lt(n),Ot(n),vt(n),ht(n);}},fe=Dt;export{fe as default};
196
+ `;function y(m){let a=Number.parseInt(m,10);if(Number.isNaN(a))throw new o$1(`Expected an integer but got "${m}"`);return a}function f(m){let a=Number.parseFloat(m);if(Number.isNaN(a))throw new o$1(`Expected a number but got "${m}"`);return a}function C(m){return m.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function It(m){let a=m.command("employees").description("Crewfoundry employees");a.command("list").description("List employees").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(D)).crewfoundryBootstrap.employees;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Name","Email","Department","Position","Status"],rows:t.map(r$1=>[r(r$1.id,12),`${r$1.firstName} ${r$1.lastName}`,r$1.email,r$1.department,r$1.position,r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get an employee by id").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(D)).crewfoundryBootstrap.employees.find(l=>l.id===n);if(!r)throw new o$1(`Employee ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create an employee").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--department <s>","Department").requiredOption("--location <s>","Location").requiredOption("--salary <n>","Salary",f).option("--type <s>","Employment type (e.g. full-time)","full-time").option("--status <s>","Status","active").option("--performance-score <n>","Performance score",f,0).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,department:n.department,location:n.location,salary:n.salary,type:n.type??"full-time",status:n.status??"active",performanceScore:n.performanceScore??0,startDate:n.startDate??new Date().toISOString()};n.managerId&&(e.managerId=n.managerId),n.avatar&&(e.avatar=n.avatar);let t=await b$1(st,{input:e});k(`Employee created: ${t.createCrewEmployee.firstName} ${t.createCrewEmployee.lastName}`),i(n,t.createCrewEmployee);}catch(e){h$1(e);}}),a.command("update").description("Update an employee").argument("<id>","Employee ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--department <s>","Department").option("--location <s>","Location").option("--salary <n>","Salary",f).option("--type <s>","Employment type").option("--status <s>","Status").option("--performance-score <n>","Performance score",f).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.department&&(t.department=e.department),e.location&&(t.location=e.location),e.salary!==void 0&&(t.salary=e.salary),e.type&&(t.type=e.type),e.status&&(t.status=e.status),e.performanceScore!==void 0&&(t.performanceScore=e.performanceScore),e.managerId&&(t.managerId=e.managerId),e.avatar&&(t.avatar=e.avatar),e.startDate&&(t.startDate=e.startDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(pt,{id:n,input:t});k("Employee updated"),i(e,r.updateCrewEmployee);}catch(t){h$1(t);}}),a.command("remove").description("Remove an employee").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(mt,{id:n});if(!t.removeCrewEmployee)throw new o$1(`Employee ${n} could not be removed`);k(`Employee ${n} removed`),i(e,{removed:t.removeCrewEmployee});}catch(t){h$1(t);}});}function St(m){let a=m.command("candidates").description("Crewfoundry recruiting candidates");a.command("list").description("List candidates").option("--status <s>","Filter by status").option("--position <p>","Filter by position").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(T)).crewfoundryBootstrap.candidates;n.status&&(t=t.filter(r=>r.status===n.status)),n.position&&(t=t.filter(r=>r.position===n.position)),i(n,t,{headers:["ID","Name","Position","Source","Status","Rating"],rows:t.map(r$1=>[r(r$1.id,12),`${r$1.firstName} ${r$1.lastName}`,r$1.position,r$1.source,r$1.status,String(r$1.rating)])});}catch(e){h$1(e);}}),a.command("get").description("Get a candidate by id").argument("<id>","Candidate ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(T)).crewfoundryBootstrap.candidates.find(l=>l.id===n);if(!r)throw new o$1(`Candidate ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a candidate").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--source <s>","Source").option("--experience <n>","Years of experience",y,0).option("--rating <n>","Rating",f,0).option("--status <s>","Status","new").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,source:n.source,experience:n.experience??0,rating:n.rating??0,status:n.status??"new",skills:n.skills?C(n.skills):[],appliedDate:n.appliedDate??new Date().toISOString()};n.currentCompany&&(e.currentCompany=n.currentCompany),n.resumeUrl&&(e.resumeUrl=n.resumeUrl),n.notes&&(e.notes=n.notes);let t=await b$1(dt,{input:e});k(`Candidate created: ${t.createCrewCandidate.firstName} ${t.createCrewCandidate.lastName}`),i(n,t.createCrewCandidate);}catch(e){h$1(e);}}),a.command("update").description("Update a candidate").argument("<id>","Candidate ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--source <s>","Source").option("--experience <n>","Years of experience",y).option("--rating <n>","Rating",f).option("--status <s>","Status").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.source&&(t.source=e.source),e.experience!==void 0&&(t.experience=e.experience),e.rating!==void 0&&(t.rating=e.rating),e.status&&(t.status=e.status),e.currentCompany&&(t.currentCompany=e.currentCompany),e.skills&&(t.skills=C(e.skills)),e.resumeUrl&&(t.resumeUrl=e.resumeUrl),e.notes&&(t.notes=e.notes),e.appliedDate&&(t.appliedDate=e.appliedDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(ct,{id:n,input:t});k("Candidate updated"),i(e,r.updateCrewCandidate);}catch(t){h$1(t);}});}function Rt(m){let a=m.command("job-postings").description("Crewfoundry job postings");a.command("list").description("List job postings").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(_)).crewfoundryBootstrap.jobPostings;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Title","Department","Type","Applicants","Status"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.department,r$1.type,String(r$1.applicants),r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get a job posting by id").argument("<id>","Job posting ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(_)).crewfoundryBootstrap.jobPostings.find(l=>l.id===n);if(!r)throw new o$1(`Job posting ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a job posting").requiredOption("--title <s>","Title").requiredOption("--department <s>","Department").requiredOption("--description <s>","Description").requiredOption("--experience-level <s>","Experience level").requiredOption("--location <s>","Location").requiredOption("--type <s>","Employment type (e.g. full-time)").option("--applicants <n>","Applicant count",y,0).option("--salary-min <n>","Minimum salary",f,0).option("--salary-max <n>","Maximum salary",f,0).option("--status <s>","Status","open").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,department:n.department,description:n.description,experienceLevel:n.experienceLevel,location:n.location,type:n.type,applicants:n.applicants??0,salaryMin:n.salaryMin??0,salaryMax:n.salaryMax??0,status:n.status??"open",requirements:n.requirements?C(n.requirements):[],benefits:n.benefits?C(n.benefits):[],postedDate:n.postedDate??new Date().toISOString()};n.deadline&&(e.deadline=n.deadline);let t=await b$1(ut,{input:e});k(`Job posting created: ${t.createCrewJobPosting.title}`),i(n,t.createCrewJobPosting);}catch(e){h$1(e);}}),a.command("update").description("Update a job posting").argument("<id>","Job posting ID").option("--title <s>","Title").option("--department <s>","Department").option("--description <s>","Description").option("--experience-level <s>","Experience level").option("--location <s>","Location").option("--type <s>","Employment type").option("--applicants <n>","Applicant count",y).option("--salary-min <n>","Minimum salary",f).option("--salary-max <n>","Maximum salary",f).option("--status <s>","Status").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.title&&(t.title=e.title),e.department&&(t.department=e.department),e.description&&(t.description=e.description),e.experienceLevel&&(t.experienceLevel=e.experienceLevel),e.location&&(t.location=e.location),e.type&&(t.type=e.type),e.applicants!==void 0&&(t.applicants=e.applicants),e.salaryMin!==void 0&&(t.salaryMin=e.salaryMin),e.salaryMax!==void 0&&(t.salaryMax=e.salaryMax),e.status&&(t.status=e.status),e.requirements&&(t.requirements=C(e.requirements)),e.benefits&&(t.benefits=C(e.benefits)),e.postedDate&&(t.postedDate=e.postedDate),e.deadline&&(t.deadline=e.deadline),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(lt,{id:n,input:t});k("Job posting updated"),i(e,r.updateCrewJobPosting);}catch(t){h$1(t);}});}function Nt(m){let a=m.command("leave-requests").description("Crewfoundry leave requests");a.command("list").description("List leave requests").option("--employee <id>","Filter by employee ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(A)).crewfoundryBootstrap.leaveRequests;n.employee&&(t=t.filter(r=>r.employeeId===n.employee)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Employee","Type","Days","Status"],rows:t.map(r$1=>[r(r$1.id,12),r$1.employeeName,r$1.type,String(r$1.days),r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get a leave request by id").argument("<id>","Leave request ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(A)).crewfoundryBootstrap.leaveRequests.find(l=>l.id===n);if(!r)throw new o$1(`Leave request ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a leave request").requiredOption("--employee-id <id>","Employee ID").requiredOption("--employee-name <s>","Employee name").requiredOption("--department <s>","Department").requiredOption("--type <s>","Leave type").requiredOption("--reason <s>","Reason").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y,1).option("--status <s>","Status","pending").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async n=>{try{let e={employeeId:n.employeeId,employeeName:n.employeeName,department:n.department,type:n.type,reason:n.reason,startDate:n.startDate,endDate:n.endDate,days:n.days??1,status:n.status??"pending"};n.approverName&&(e.approverName=n.approverName);let t=await b$1(ft,{input:e});k(`Leave request created for ${t.createCrewLeaveRequest.employeeName}`),i(n,t.createCrewLeaveRequest);}catch(e){h$1(e);}}),a.command("update").description("Update a leave request").argument("<id>","Leave request ID").option("--employee-id <id>","Employee ID").option("--employee-name <s>","Employee name").option("--department <s>","Department").option("--type <s>","Leave type").option("--reason <s>","Reason").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y).option("--status <s>","Status").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.employeeId&&(t.employeeId=e.employeeId),e.employeeName&&(t.employeeName=e.employeeName),e.department&&(t.department=e.department),e.type&&(t.type=e.type),e.reason&&(t.reason=e.reason),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.days!==void 0&&(t.days=e.days),e.status&&(t.status=e.status),e.approverName&&(t.approverName=e.approverName),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(yt,{id:n,input:t});k("Leave request updated"),i(e,r.updateCrewLeaveRequest);}catch(t){h$1(t);}});}function Lt(m){let a=m.command("announcements").description("Crewfoundry announcements");a.command("list").description("List announcements").option("--category <c>","Filter by category").option("--pinned-only","Only pinned announcements").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(b)).crewfoundryBootstrap.announcements;n.category&&(t=t.filter(r=>r.category===n.category)),n.pinnedOnly&&(t=t.filter(r=>r.isPinned)),i(n,t,{headers:["ID","Title","Author","Category","Priority","Pinned"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.author,r$1.category,r$1.priority,r$1.isPinned?"yes":"no"])});}catch(e){h$1(e);}}),a.command("get").description("Get an announcement by id").argument("<id>","Announcement ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(b)).crewfoundryBootstrap.announcements.find(l=>l.id===n);if(!r)throw new o$1(`Announcement ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create an announcement").requiredOption("--title <s>","Title").requiredOption("--content <s>","Content").requiredOption("--author <s>","Author").requiredOption("--author-role <s>","Author role").requiredOption("--category <s>","Category").requiredOption("--priority <s>","Priority").option("--pinned","Pin the announcement").option("--view-count <n>","Initial view count",y,0).option("--tags <csv>","Comma-separated tags").option("--created-at <iso>","Created at (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,content:n.content,author:n.author,authorRole:n.authorRole,category:n.category,priority:n.priority,isPinned:n.pinned??!1,viewCount:n.viewCount??0,tags:n.tags?C(n.tags):[],createdAt:n.createdAt??new Date().toISOString()},t=await b$1(gt,{input:e});k(`Announcement created: ${t.createCrewAnnouncement.title}`),i(n,t.createCrewAnnouncement);}catch(e){h$1(e);}});}function Ot(m){let a=m.command("notifications").description("Crewfoundry notifications");a.command("list").description("List notifications").option("--category <c>","Filter by category").option("--unread-only","Only unread notifications").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(H)).crewfoundryBootstrap.notifications;n.category&&(t=t.filter(r=>r.category===n.category)),n.unreadOnly&&(t=t.filter(r=>!r.read)),i(n,t,{headers:["ID","Title","Type","Category","Read"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.type,r$1.category,r$1.read?"yes":"no"])});}catch(e){h$1(e);}}),a.command("mark-read").description("Mark a notification as read").argument("<id>","Notification ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(wt,{id:n});if(!t.markCrewNotificationRead)throw new o$1(`Notification ${n} could not be marked read`);k(`Notification ${n} marked read`),i(e,{read:t.markCrewNotificationRead});}catch(t){h$1(t);}}),a.command("mark-all-read").description("Mark all notifications as read").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(Ct);k("All notifications marked read"),i(n,{read:e.markAllCrewNotificationsRead});}catch(e){h$1(e);}});}function o(m){return m==null?"-":String(m)}function vt(m){let a=m.command("directory").description("Crewfoundry read-only collections (clients, projects, teams, finance, learning)"),n=async(e,t,r,l)=>{try{let k=(await b$1(e)).crewfoundryBootstrap[t];i(r,k,{headers:l.headers,rows:k.map(l.row)});}catch(I){h$1(I);}};a.command("clients").description("List clients").option("-f, --format <format>","Output format").action(e=>n(K,"clients",e,{headers:["ID","Name","Industry","Status","Projects","Revenue"],row:t=>[r(t.id,12),o(t.name),o(t.industry),o(t.status),o(t.projects),o(t.revenue)]})),a.command("courses").description("List training courses").option("-f, --format <format>","Output format").action(e=>n(Q,"courses",e,{headers:["ID","Title","Category","Level","Enrolled","Status"],row:t=>[r(t.id,12),o(t.title),o(t.category),o(t.level),o(t.enrolled),o(t.status)]})),a.command("departments").description("List departments").option("-f, --format <format>","Output format").action(e=>n(z,"departments",e,{headers:["ID","Name","Head","Employees","Budget","Status"],row:t=>[r(t.id,12),o(t.name),o(t.headName),o(t.employeeCount),o(t.budget),o(t.status)]})),a.command("interviews").description("List interviews").option("-f, --format <format>","Output format").action(e=>n(X,"interviews",e,{headers:["ID","Candidate","Position","Type","Status","Interviewer"],row:t=>[r(t.id,12),o(t.candidateName),o(t.position),o(t.type),o(t.status),o(t.interviewerName)]})),a.command("invoices").description("List invoices").option("-f, --format <format>","Output format").action(e=>n(Z,"invoices",e,{headers:["ID","Number","Client","Amount","Status"],row:t=>[r(t.id,12),o(t.number),o(t.clientName),o(t.amount),o(t.status)]})),a.command("learning-paths").description("List learning paths").option("-f, --format <format>","Output format").action(e=>n(tt,"learningPaths",e,{headers:["ID","Title","Level","Enrolled","Completion %"],row:t=>[r(t.id,12),o(t.title),o(t.level),o(t.enrolled),o(t.completionRate)]})),a.command("marketplace-services").description("List marketplace services").option("-f, --format <format>","Output format").action(e=>n(et,"marketplaceServices",e,{headers:["ID","Title","Category","Provider","Price","Rating"],row:t=>[r(t.id,12),o(t.title),o(t.category),o(t.provider),o(t.price),o(t.rating)]})),a.command("payroll").description("List payroll records").option("-f, --format <format>","Output format").action(e=>n(nt,"payrollRecords",e,{headers:["ID","Employee","Period","Gross","Net","Status"],row:t=>[r(t.id,12),o(t.employeeName),o(t.period),o(t.grossPay),o(t.netPay),o(t.status)]})),a.command("projects").description("List projects").option("-f, --format <format>","Output format").action(e=>n(rt,"projects",e,{headers:["ID","Name","Status","Priority","Progress","Budget"],row:t=>[r(t.id,12),o(t.name),o(t.status),o(t.priority),o(t.progress),o(t.budget)]})),a.command("teams").description("List teams").option("-f, --format <format>","Output format").action(e=>n(ot,"teams",e,{headers:["ID","Name","Department","Lead","Members","Status"],row:t=>[r(t.id,12),o(t.name),o(t.department),o(t.leadName),o(t.memberCount),o(t.status)]})),a.command("time-entries").description("List time entries").option("-f, --format <format>","Output format").action(e=>n(at,"timeEntries",e,{headers:["ID","Employee","Date","Hours","Overtime","Status"],row:t=>[r(t.id,12),o(t.employeeName),o(t.date),o(t.totalHours),o(t.overtime),o(t.status)]})),a.command("vendors").description("List vendors").option("-f, --format <format>","Output format").action(e=>n(it,"vendors",e,{headers:["ID","Name","Category","Contract Value","Rating","Status"],row:t=>[r(t.id,12),o(t.name),o(t.category),o(t.contractValue),o(t.rating),o(t.status)]}));}function ht(m){let a=m.command("analytics").description("Crewfoundry analytics & bootstrap");a.command("bootstrap").description("Fetch the full Crewfoundry workspace snapshot (all collections)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(h);i(n,e.crewfoundryBootstrap);}catch(e){h$1(e);}}),a.command("summary").description("Per-collection counts derived from the bootstrap snapshot").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(h)).crewfoundryBootstrap,r={employees:t.employees.length,candidates:t.candidates.length,jobPostings:t.jobPostings.length,leaveRequests:t.leaveRequests.length,announcements:t.announcements.length,notifications:t.notifications.length,clients:t.clients.length,courses:t.courses.length,departments:t.departments.length,interviews:t.interviews.length,invoices:t.invoices.length,learningPaths:t.learningPaths.length,marketplaceServices:t.marketplaceServices.length,payrollRecords:t.payrollRecords.length,projects:t.projects.length,teams:t.teams.length,timeEntries:t.timeEntries.length,vendors:t.vendors.length};i(n,r,{headers:["Collection","Count"],rows:Object.entries(r).map(([l,I])=>[l,String(I)])});}catch(e){h$1(e);}}),m.command("health").description("Crewfoundry service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await d(Et))._empty??"ok";k(`crewfoundry: ${t}`),i(n,{health:t});}catch(e){h$1(e);}});}var Dt={id:"crewfoundry",version:"1.0.0",displayName:"Crewfoundry",dependsOn:["auth","workspaces"],register(m,a$1){a(a$1);let n=m.command("crewfoundry").description("Crewfoundry workforce & HR operations");It(n),St(n),Rt(n),Nt(n),Lt(n),Ot(n),vt(n),ht(n);}},fe=Dt;export{fe as default};
@@ -1,33 +1,36 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var l=class extends Error{exitCode;hint;constructor(a,d){super(a),this.name="CliUserError",this.exitCode=d?.exitCode??1,this.hint=d?.hint;}};var f=class extends Error{cause;constructor(a,d){super(a),this.name="CliInternalError",this.cause=d;}};var k=null;function E(s){k=s;}function A(){if(!k)throw new f("vibecontrols module helpers used before setHelpersContext was called");return k}async function r(s,a){return A().gql.global.request(s,a)}function i(s){let a=s instanceof Error?s.message:String(s);throw new l(a)}function c(s,a,d){A().output.formatAndOutput(s,a,d);}function u(s){A().output.printSuccess(s);}function w(s){return A().output.formatStatus(s)}function m(s,a){return A().output.truncate(s,a)}var O=`
2
- query ListOrganizations($filter: OrganizationFilterInput, $limit: Int, $offset: Int) {
3
- organizations(filter: $filter, limit: $limit, offset: $offset) {
4
- items { id name slug status }
5
- total hasMore limit offset
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var l=class extends Error{exitCode;hint;constructor(a,d){super(a),this.name="CliUserError",this.exitCode=d?.exitCode??1,this.hint=d?.hint;}};var m=class extends Error{cause;constructor(a,d){super(a),this.name="CliInternalError",this.cause=d;}};var C=null;function b(s){C=s;}function A(){if(!C)throw new m("vibecontrols module helpers used before setHelpersContext was called");return C}async function r(s,a){return A().gql.global.request(s,a)}function i(s){let a=s instanceof Error?s.message:String(s);throw new l(a)}function c(s,a,d){A().output.formatAndOutput(s,a,d);}function u(s){A().output.printSuccess(s);}function k(s){return A().output.formatStatus(s)}function w(s,a){return A().output.truncate(s,a)}var E=`
2
+ query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
+ developerOrganizations(limit: $limit, offset: $offset) {
4
+ edges { node { id name slug tier isVerified totalApps publishedApps } }
5
+ totalCount
6
+ pageInfo { hasNextPage endCursor }
6
7
  }
7
8
  }
8
- `,b=`
9
- query GetOrganization($id: ID!) {
10
- organization(id: $id) {
11
- id name description status
9
+ `,O=`
10
+ query GetDeveloperOrganization($id: ID!) {
11
+ developerOrganization(id: $id) {
12
+ id name slug description tier isVerified isCertified
13
+ totalApps publishedApps totalRevenue contactEmail supportEmail websiteUrl
14
+ createdAt updatedAt
12
15
  }
13
16
  }
14
17
  `,S=`
15
- mutation CreateOrganization($input: CreateOrganizationInput!) {
16
- createOrganization(input: $input) {
17
- id name slug status
18
+ mutation CreateDeveloperOrganization($input: CreateDeveloperOrganizationInput!) {
19
+ createDeveloperOrganization(input: $input) {
20
+ id name slug description tier
18
21
  }
19
22
  }
20
23
  `,R=`
21
- mutation UpdateOrganization($id: ID!, $input: UpdateOrganizationInput!) {
22
- updateOrganization(id: $id, input: $input) {
23
- id name updatedAt
24
+ mutation UpdateDeveloperOrganization($id: ID!, $input: UpdateDeveloperOrganizationInput!) {
25
+ updateDeveloperOrganization(id: $id, input: $input) {
26
+ id name description updatedAt
24
27
  }
25
28
  }
26
- `,P=`
27
- mutation DeleteOrganization($id: ID!) {
28
- deleteOrganization(id: $id) { success }
29
- }
30
29
  `,D=`
30
+ mutation DeleteDeveloperOrganization($id: ID!) {
31
+ deleteDeveloperOrganization(id: $id)
32
+ }
33
+ `,P=`
31
34
  query ListApplications($organizationId: ID, $status: AppStatus, $limit: Int) {
32
35
  applications(organizationId: $organizationId, status: $status, limit: $limit) {
33
36
  edges { node { id name status installCount averageRating } }
@@ -40,13 +43,13 @@
40
43
  id name status reviewStatus publishedAt installCount
41
44
  }
42
45
  }
43
- `,N=`
46
+ `,L=`
44
47
  mutation CreateApplication($input: CreateApplicationInput!) {
45
48
  createApplication(input: $input) {
46
49
  id name status appId
47
50
  }
48
51
  }
49
- `,L=`
52
+ `,N=`
50
53
  mutation UpdateApplication($id: ID!, $input: UpdateApplicationInput!) {
51
54
  updateApplication(id: $id, input: $input) {
52
55
  id description updatedAt
@@ -68,12 +71,13 @@
68
71
  mutation DeleteApplication($id: ID!) {
69
72
  deleteApplication(id: $id)
70
73
  }
71
- `,G=`
74
+ `,U=`
72
75
  query ApplicationVersions($applicationId: ID!) {
73
76
  application(id: $applicationId) {
74
77
  id
75
78
  versions {
76
- id version status isLatest isStable releaseNotes
79
+ edges { node { id version status isLatest isStable releaseNotes publishedAt } }
80
+ totalCount
77
81
  }
78
82
  }
79
83
  }
@@ -83,21 +87,22 @@
83
87
  id version status publishedAt
84
88
  }
85
89
  }
86
- `,U=`
90
+ `,G=`
87
91
  query ListDevportalWebhooks($applicationId: ID!) {
88
92
  webhooks(applicationId: $applicationId) {
89
93
  id name url events isActive status failureCount
90
94
  }
91
95
  }
92
96
  `,V=`
93
- mutation CreateDevportalWebhook($input: CreateWebhookInput!) {
94
- createWebhook(input: $input) {
95
- id name url status
97
+ mutation CreateDevportalWebhook($applicationId: ID!, $input: CreateWebhookInput!) {
98
+ createWebhook(applicationId: $applicationId, input: $input) {
99
+ secret
100
+ webhook { id name url events isActive status }
96
101
  }
97
102
  }
98
103
  `,F=`
99
104
  mutation DeleteDevportalWebhook($id: ID!) {
100
- deleteWebhook(id: $id) { success }
105
+ deleteWebhook(id: $id)
101
106
  }
102
107
  `,j=`
103
108
  query ApplicationAnalytics($applicationId: ID!, $period: String!, $startDate: DateTime, $endDate: DateTime) {
@@ -106,15 +111,16 @@
106
111
  }
107
112
  }
108
113
  `,M=`
109
- query OrganizationRevenue($organizationId: ID!, $period: String) {
114
+ query OrganizationRevenue($organizationId: ID!, $period: String!) {
110
115
  developerOrgRevenueSummary(organizationId: $organizationId, period: $period) {
111
- totalEarnings currency netEarnings
116
+ period currency totalGrossRevenue totalNetRevenue totalPlatformFees totalRefunds
117
+ totalSales pendingBalance nextPayoutAmount nextPayoutDate
112
118
  }
113
119
  }
114
120
  `,B=`
115
- query AdminReviews($status: String) {
116
- adminReviews(status: $status) {
117
- edges { node { id applicationId reviewStatus reviewNotes } }
121
+ query AdminReviews($status: AppStatus, $limit: Int, $offset: Int) {
122
+ applications(status: $status, limit: $limit, offset: $offset) {
123
+ edges { node { id name slug status reviewStatus reviewNotes submittedAt lastReviewedAt } }
118
124
  totalCount
119
125
  }
120
126
  }
@@ -130,4 +136,4 @@
130
136
  id status reviewStatus reviewNotes
131
137
  }
132
138
  }
133
- `;function K(s){let a=s.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),d=a.command("orgs").description("Publisher organizations");d.command("list").description("List devportal organizations").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let n=(await r(O,{limit:t.limit,offset:0})).organizations.items;c(t,n,{headers:["ID","Name","Slug","Status"],rows:n.map(o=>[m(o.id,12),o.name,o.slug??"-",w(o.status)])});}catch(e){i(e);}}),d.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let n=await r(b,{id:t});if(!n.organization)throw new l(`Organization ${t} not found`);c(e,n.organization);}catch(n){i(n);}}),d.command("create").description("Create a publisher organization").requiredOption("--name <s>").requiredOption("--slug <s>","Unique slug (required by schema)").option("--description <s>").option("--tier <t>","INDIVIDUAL|ORGANIZATION|ENTERPRISE","ORGANIZATION").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,slug:t.slug,description:t.description,tier:(t.tier??"ORGANIZATION").toUpperCase()},n=await r(S,{input:e});u(`Organization created: ${n.createOrganization.name}`),c(t,n.createOrganization);}catch(e){i(e);}}),d.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new l("No updates specified");let o=await r(R,{id:t,input:n});u("Organization updated"),c(e,o.updateOrganization);}catch(n){i(n);}}),d.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await r(P,{id:t}),u("Organization deleted");}catch(e){i(e);}});let g=a.command("apps").description("Applications");g.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|REVIEW|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let n=(await r(D,{organizationId:t.organization,status:t.status?.toUpperCase(),limit:t.limit})).applications.edges.map(o=>o.node);c(t,n,{headers:["ID","Name","Status","Installs","Rating"],rows:n.map(o=>[m(o.id,12),o.name,w(o.status),String(o.installCount??0),String(o.averageRating??"-")])});}catch(e){i(e);}}),g.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let n=await r($,{id:t});if(!n.application)throw new l(`Application ${t} not found`);c(e,n.application);}catch(n){i(n);}}),g.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,developerOrganizationId:t.organization,appType:(t.type??"API_INTEGRATION").toUpperCase(),description:t.description},n=await r(N,{input:e});u(`Application created: ${n.createApplication.name}`),c(t,n.createApplication);}catch(e){i(e);}}),g.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(t,e)=>{try{let n={};if(e.description!==void 0&&(n.description=e.description),e.pricing&&(n.pricingType=e.pricing.toUpperCase()),e.docsUrl&&(n.documentationUrl=e.docsUrl),!Object.keys(n).length)throw new l("No updates specified");let o=await r(L,{id:t,input:n});u("Application updated"),c(e,o.updateApplication);}catch(n){i(n);}}),g.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,e)=>{try{await r(_,{id:t,notes:e.notes}),u("Submitted for review");}catch(n){i(n);}}),g.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await r(q,{id:t}),u("Application published");}catch(e){i(e);}}),g.command("delete").description("Delete an application").argument("<id>").action(async t=>{try{await r(z,{id:t}),u("Application deleted");}catch(e){i(e);}});let y=g.command("versions").description("Application versions");y.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,e)=>{try{let o=(await r(G,{applicationId:t})).application?.versions??[];c(e,o,{headers:["ID","Version","Status","Latest","Stable"],rows:o.map(I=>[m(I.id,12),I.version,w(I.status),String(!!I.isLatest),String(!!I.isStable)])});}catch(n){i(n);}}),y.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async t=>{try{let e={version:t.version,releaseNotes:t.notes,packageUrl:t.package},n=await r(W,{applicationId:t.application,input:e});u(`Version created: ${n.createApplicationVersion.version}`),c(t,n.createApplicationVersion);}catch(e){i(e);}});let h=g.command("webhooks").description("Application webhooks");h.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,e)=>{try{let n=await r(U,{applicationId:t});c(e,n.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:n.webhooks.map(o=>[m(o.id,12),o.name,m(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){i(n);}}),h.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",t=>parseInt(t,10),5).option("-f, --format <format>").action(async t=>{try{let e={applicationId:t.application,name:t.name,url:t.url,events:t.events.split(","),retryEnabled:!0,maxRetries:t.maxRetries},n=await r(V,{input:e});u("Webhook created"),c(t,n.createWebhook);}catch(e){i(e);}}),h.command("remove").description("Remove a webhook").argument("<id>").action(async t=>{try{await r(F,{id:t}),u("Webhook removed");}catch(e){i(e);}}),g.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async t=>{try{let e=await r(j,{applicationId:t.application,period:(t.period??"LAST_30_DAYS").toUpperCase(),startDate:t.from,endDate:t.to});c(t,e.applicationAnalytics);}catch(e){i(e);}}),a.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async t=>{try{let e=await r(M,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});c(t,e.organizationRevenue);}catch(e){i(e);}});let C=a.command("admin").description("Admin operations").command("reviews").description("Application review queue");C.command("list").description("List applications pending review").option("--status <s>","PENDING|APPROVED|REJECTED","PENDING").option("-f, --format <format>").action(async t=>{try{let e=await r(B,{status:(t.status??"PENDING").toUpperCase()});c(t,e.adminReviews.edges.map(n=>n.node));}catch(e){i(e);}}),C.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,e)=>{try{await r(H,{id:t,notes:e.notes}),u("Application approved");}catch(n){i(n);}}),C.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,e)=>{try{await r(Y,{id:t,notes:e.notes}),u("Application rejected");}catch(n){i(n);}});}var ct={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(s,a){E(a),K(s);}},Ce=ct;module.exports=Ce;
139
+ `;function K(s){let a=s.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),d=a.command("orgs").description("Publisher organizations");d.command("list").description("List devportal organizations").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(E,{limit:e.limit,offset:0})).developerOrganizations.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:n.map(o=>[w(o.id,12),o.name,o.slug??"-",o.tier??"-",String(!!o.isVerified),String(o.totalApps??0)])});}catch(t){i(t);}}),d.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(O,{id:e});if(!n.developerOrganization)throw new l(`Organization ${e} not found`);c(t,n.developerOrganization);}catch(n){i(n);}}),d.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,slug:e.slug,description:e.description,contactEmail:e.contactEmail,websiteUrl:e.website},n=await r(S,{input:t});u(`Organization created: ${n.createDeveloperOrganization.name}`),c(e,n.createDeveloperOrganization);}catch(t){i(t);}}),d.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),!Object.keys(n).length)throw new l("No updates specified");let o=await r(R,{id:e,input:n});u("Organization updated"),c(t,o.updateDeveloperOrganization);}catch(n){i(n);}}),d.command("delete").description("Delete an organization").argument("<id>").action(async e=>{try{await r(D,{id:e}),u("Organization deleted");}catch(t){i(t);}});let g=a.command("apps").description("Applications");g.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(P,{organizationId:e.organization,status:e.status?.toUpperCase(),limit:e.limit})).applications.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Status","Installs","Rating"],rows:n.map(o=>[w(o.id,12),o.name,k(o.status),String(o.installCount??0),String(o.averageRating??"-")])});}catch(t){i(t);}}),g.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r($,{id:e});if(!n.application)throw new l(`Application ${e} not found`);c(t,n.application);}catch(n){i(n);}}),g.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,developerOrganizationId:e.organization,appType:(e.type??"API_INTEGRATION").toUpperCase(),description:e.description},n=await r(L,{input:t});u(`Application created: ${n.createApplication.name}`),c(e,n.createApplication);}catch(t){i(t);}}),g.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.description!==void 0&&(n.description=t.description),t.pricing&&(n.pricingType=t.pricing.toUpperCase()),t.docsUrl&&(n.documentationUrl=t.docsUrl),!Object.keys(n).length)throw new l("No updates specified");let o=await r(N,{id:e,input:n});u("Application updated"),c(t,o.updateApplication);}catch(n){i(n);}}),g.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(e,t)=>{try{await r(_,{id:e,notes:t.notes}),u("Submitted for review");}catch(n){i(n);}}),g.command("publish").description("Publish an application").argument("<id>").action(async e=>{try{await r(q,{id:e}),u("Application published");}catch(t){i(t);}}),g.command("delete").description("Delete an application").argument("<id>").action(async e=>{try{await r(z,{id:e}),u("Application deleted");}catch(t){i(t);}});let y=g.command("versions").description("Application versions");y.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let o=(await r(U,{applicationId:e})).application?.versions.edges.map(f=>f.node)??[];c(t,o,{headers:["ID","Version","Status","Latest","Stable"],rows:o.map(f=>[w(f.id,12),f.version,k(f.status),String(!!f.isLatest),String(!!f.isStable)])});}catch(n){i(n);}}),y.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async e=>{try{let t={version:e.version,releaseNotes:e.notes,packageUrl:e.package},n=await r(W,{applicationId:e.application,input:t});u(`Version created: ${n.createApplicationVersion.version}`),c(e,n.createApplicationVersion);}catch(t){i(t);}});let I=g.command("webhooks").description("Application webhooks");I.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(G,{applicationId:e});c(t,n.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:n.webhooks.map(o=>[w(o.id,12),o.name,w(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){i(n);}}),I.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",e=>parseInt(e,10),5).option("-f, --format <format>").action(async e=>{try{let t={name:e.name,url:e.url,events:e.events.split(",").map(o=>o.trim()).filter(Boolean),retryEnabled:!0,maxRetries:e.maxRetries},n=await r(V,{applicationId:e.application,input:t});u("Webhook created. Store the signing secret now: it is shown only once."),c(e,n.createWebhook);}catch(t){i(t);}}),I.command("remove").description("Remove a webhook").argument("<id>").action(async e=>{try{await r(F,{id:e}),u("Webhook removed");}catch(t){i(t);}}),g.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async e=>{try{let t=await r(j,{applicationId:e.application,period:(e.period??"LAST_30_DAYS").toUpperCase(),startDate:e.from,endDate:e.to});c(e,t.applicationAnalytics);}catch(t){i(t);}}),a.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async e=>{try{let t=await r(M,{organizationId:e.organization,period:(e.period??"LAST_30_DAYS").toUpperCase()});c(e,t.developerOrgRevenueSummary);}catch(t){i(t);}});let h=a.command("admin").description("Admin operations").command("reviews").description("Application review queue");h.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t=await r(B,{status:(e.status??"SUBMITTED").toUpperCase(),limit:e.limit});c(e,t.applications.edges.map(n=>n.node));}catch(t){i(t);}}),h.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(e,t)=>{try{await r(H,{id:e,notes:t.notes}),u("Application approved");}catch(n){i(n);}}),h.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(e,t)=>{try{await r(Y,{id:e,notes:t.notes}),u("Application rejected");}catch(n){i(n);}});}var ce={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(s,a){b(a),K(s);}},Ct=ce;module.exports=Ct;
@@ -1,79 +1,83 @@
1
- import {a,c,h as h$1,p,n,g,i}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var N=`
2
- query ListOrganizations($filter: OrganizationFilterInput, $limit: Int, $offset: Int) {
3
- organizations(filter: $filter, limit: $limit, offset: $offset) {
4
- items { id name slug status }
5
- total hasMore limit offset
1
+ import {a,c,i,r,h as h$1,k as k$1,p}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
2
+ query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
+ developerOrganizations(limit: $limit, offset: $offset) {
4
+ edges { node { id name slug tier isVerified totalApps publishedApps } }
5
+ totalCount
6
+ pageInfo { hasNextPage endCursor }
6
7
  }
7
8
  }
8
9
  `,w=`
9
- query GetOrganization($id: ID!) {
10
- organization(id: $id) {
11
- id name description status
10
+ query GetDeveloperOrganization($id: ID!) {
11
+ developerOrganization(id: $id) {
12
+ id name slug description tier isVerified isCertified
13
+ totalApps publishedApps totalRevenue contactEmail supportEmail websiteUrl
14
+ createdAt updatedAt
12
15
  }
13
16
  }
14
- `,C=`
15
- mutation CreateOrganization($input: CreateOrganizationInput!) {
16
- createOrganization(input: $input) {
17
- id name slug status
17
+ `,D=`
18
+ mutation CreateDeveloperOrganization($input: CreateDeveloperOrganizationInput!) {
19
+ createDeveloperOrganization(input: $input) {
20
+ id name slug description tier
18
21
  }
19
22
  }
20
- `,v=`
21
- mutation UpdateOrganization($id: ID!, $input: UpdateOrganizationInput!) {
22
- updateOrganization(id: $id, input: $input) {
23
- id name updatedAt
23
+ `,S=`
24
+ mutation UpdateDeveloperOrganization($id: ID!, $input: UpdateDeveloperOrganizationInput!) {
25
+ updateDeveloperOrganization(id: $id, input: $input) {
26
+ id name description updatedAt
24
27
  }
25
28
  }
26
- `,P=`
27
- mutation DeleteOrganization($id: ID!) {
28
- deleteOrganization(id: $id) { success }
29
+ `,C=`
30
+ mutation DeleteDeveloperOrganization($id: ID!) {
31
+ deleteDeveloperOrganization(id: $id)
29
32
  }
30
- `,S=`
33
+ `,y=`
31
34
  query ListApplications($organizationId: ID, $status: AppStatus, $limit: Int) {
32
35
  applications(organizationId: $organizationId, status: $status, limit: $limit) {
33
36
  edges { node { id name status installCount averageRating } }
34
37
  totalCount
35
38
  }
36
39
  }
37
- `,y=`
40
+ `,P=`
38
41
  query GetApplication($id: ID!) {
39
42
  application(id: $id) {
40
43
  id name status reviewStatus publishedAt installCount
41
44
  }
42
45
  }
43
- `,$=`
46
+ `,h=`
44
47
  mutation CreateApplication($input: CreateApplicationInput!) {
45
48
  createApplication(input: $input) {
46
49
  id name status appId
47
50
  }
48
51
  }
49
- `,D=`
52
+ `,N=`
50
53
  mutation UpdateApplication($id: ID!, $input: UpdateApplicationInput!) {
51
54
  updateApplication(id: $id, input: $input) {
52
55
  id description updatedAt
53
56
  }
54
57
  }
55
- `,h=`
58
+ `,$=`
56
59
  mutation SubmitApplicationForReview($id: ID!, $notes: String) {
57
60
  submitApplicationForReview(id: $id, notes: $notes) {
58
61
  id status reviewStatus submittedAt
59
62
  }
60
63
  }
61
- `,_=`
64
+ `,b=`
62
65
  mutation PublishApplication($id: ID!) {
63
66
  publishApplication(id: $id) {
64
67
  id status publishedAt
65
68
  }
66
69
  }
67
- `,L=`
70
+ `,_=`
68
71
  mutation DeleteApplication($id: ID!) {
69
72
  deleteApplication(id: $id)
70
73
  }
71
- `,b=`
74
+ `,L=`
72
75
  query ApplicationVersions($applicationId: ID!) {
73
76
  application(id: $applicationId) {
74
77
  id
75
78
  versions {
76
- id version status isLatest isStable releaseNotes
79
+ edges { node { id version status isLatest isStable releaseNotes publishedAt } }
80
+ totalCount
77
81
  }
78
82
  }
79
83
  }
@@ -90,44 +94,46 @@ import {a,c,h as h$1,p,n,g,i}from'../../chunk-W4JZR7RJ.js';import {o}from'../../
90
94
  }
91
95
  }
92
96
  `,U=`
93
- mutation CreateDevportalWebhook($input: CreateWebhookInput!) {
94
- createWebhook(input: $input) {
95
- id name url status
97
+ mutation CreateDevportalWebhook($applicationId: ID!, $input: CreateWebhookInput!) {
98
+ createWebhook(applicationId: $applicationId, input: $input) {
99
+ secret
100
+ webhook { id name url events isActive status }
96
101
  }
97
102
  }
98
103
  `,x=`
99
104
  mutation DeleteDevportalWebhook($id: ID!) {
100
- deleteWebhook(id: $id) { success }
105
+ deleteWebhook(id: $id)
101
106
  }
102
- `,G=`
107
+ `,V=`
103
108
  query ApplicationAnalytics($applicationId: ID!, $period: String!, $startDate: DateTime, $endDate: DateTime) {
104
109
  applicationAnalytics(applicationId: $applicationId, period: $period, startDate: $startDate, endDate: $endDate) {
105
110
  date period activeUsers apiCalls avgResponseTime sessions
106
111
  }
107
112
  }
108
- `,V=`
109
- query OrganizationRevenue($organizationId: ID!, $period: String) {
113
+ `,W=`
114
+ query OrganizationRevenue($organizationId: ID!, $period: String!) {
110
115
  developerOrgRevenueSummary(organizationId: $organizationId, period: $period) {
111
- totalEarnings currency netEarnings
116
+ period currency totalGrossRevenue totalNetRevenue totalPlatformFees totalRefunds
117
+ totalSales pendingBalance nextPayoutAmount nextPayoutDate
112
118
  }
113
119
  }
114
- `,q=`
115
- query AdminReviews($status: String) {
116
- adminReviews(status: $status) {
117
- edges { node { id applicationId reviewStatus reviewNotes } }
120
+ `,G=`
121
+ query AdminReviews($status: AppStatus, $limit: Int, $offset: Int) {
122
+ applications(status: $status, limit: $limit, offset: $offset) {
123
+ edges { node { id name slug status reviewStatus reviewNotes submittedAt lastReviewedAt } }
118
124
  totalCount
119
125
  }
120
126
  }
121
- `,W=`
127
+ `,B=`
122
128
  mutation ApproveApplication($id: ID!, $notes: String) {
123
129
  approveApplication(id: $id, notes: $notes) {
124
130
  id status reviewStatus publishedAt
125
131
  }
126
132
  }
127
- `,B=`
133
+ `,q=`
128
134
  mutation RejectApplication($id: ID!, $notes: String!) {
129
135
  rejectApplication(id: $id, notes: $notes) {
130
136
  id status reviewStatus reviewNotes
131
137
  }
132
138
  }
133
- `;function Z(A){let c$1=A.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),m=c$1.command("orgs").description("Publisher organizations");m.command("list").description("List devportal organizations").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let n$1=(await c(N,{limit:t.limit,offset:0})).organizations.items;h$1(t,n$1,{headers:["ID","Name","Slug","Status"],rows:n$1.map(o=>[p(o.id,12),o.name,o.slug??"-",n(o.status)])});}catch(i){g(i);}}),m.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,i)=>{try{let n=await c(w,{id:t});if(!n.organization)throw new o(`Organization ${t} not found`);h$1(i,n.organization);}catch(n){g(n);}}),m.command("create").description("Create a publisher organization").requiredOption("--name <s>").requiredOption("--slug <s>","Unique slug (required by schema)").option("--description <s>").option("--tier <t>","INDIVIDUAL|ORGANIZATION|ENTERPRISE","ORGANIZATION").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,slug:t.slug,description:t.description,tier:(t.tier??"ORGANIZATION").toUpperCase()},n=await c(C,{input:i$1});i(`Organization created: ${n.createOrganization.name}`),h$1(t,n.createOrganization);}catch(i){g(i);}}),m.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(t,i$1)=>{try{let n={};if(i$1.name&&(n.name=i$1.name),i$1.description!==void 0&&(n.description=i$1.description),!Object.keys(n).length)throw new o("No updates specified");let o$1=await c(v,{id:t,input:n});i("Organization updated"),h$1(i$1,o$1.updateOrganization);}catch(n){g(n);}}),m.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await c(P,{id:t}),i("Organization deleted");}catch(i){g(i);}});let p$1=c$1.command("apps").description("Applications");p$1.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|REVIEW|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let n$1=(await c(S,{organizationId:t.organization,status:t.status?.toUpperCase(),limit:t.limit})).applications.edges.map(o=>o.node);h$1(t,n$1,{headers:["ID","Name","Status","Installs","Rating"],rows:n$1.map(o=>[p(o.id,12),o.name,n(o.status),String(o.installCount??0),String(o.averageRating??"-")])});}catch(i){g(i);}}),p$1.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(t,i)=>{try{let n=await c(y,{id:t});if(!n.application)throw new o(`Application ${t} not found`);h$1(i,n.application);}catch(n){g(n);}}),p$1.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,developerOrganizationId:t.organization,appType:(t.type??"API_INTEGRATION").toUpperCase(),description:t.description},n=await c($,{input:i$1});i(`Application created: ${n.createApplication.name}`),h$1(t,n.createApplication);}catch(i){g(i);}}),p$1.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(t,i$1)=>{try{let n={};if(i$1.description!==void 0&&(n.description=i$1.description),i$1.pricing&&(n.pricingType=i$1.pricing.toUpperCase()),i$1.docsUrl&&(n.documentationUrl=i$1.docsUrl),!Object.keys(n).length)throw new o("No updates specified");let o$1=await c(D,{id:t,input:n});i("Application updated"),h$1(i$1,o$1.updateApplication);}catch(n){g(n);}}),p$1.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,i$1)=>{try{await c(h,{id:t,notes:i$1.notes}),i("Submitted for review");}catch(n){g(n);}}),p$1.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await c(_,{id:t}),i("Application published");}catch(i){g(i);}}),p$1.command("delete").description("Delete an application").argument("<id>").action(async t=>{try{await c(L,{id:t}),i("Application deleted");}catch(i){g(i);}});let f=p$1.command("versions").description("Application versions");f.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i)=>{try{let o=(await c(b,{applicationId:t})).application?.versions??[];h$1(i,o,{headers:["ID","Version","Status","Latest","Stable"],rows:o.map(l=>[p(l.id,12),l.version,n(l.status),String(!!l.isLatest),String(!!l.isStable)])});}catch(n){g(n);}}),f.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async t=>{try{let i$1={version:t.version,releaseNotes:t.notes,packageUrl:t.package},n=await c(z,{applicationId:t.application,input:i$1});i(`Version created: ${n.createApplicationVersion.version}`),h$1(t,n.createApplicationVersion);}catch(i){g(i);}});let I=p$1.command("webhooks").description("Application webhooks");I.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i)=>{try{let n=await c(k,{applicationId:t});h$1(i,n.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:n.webhooks.map(o=>[p(o.id,12),o.name,p(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){g(n);}}),I.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",t=>parseInt(t,10),5).option("-f, --format <format>").action(async t=>{try{let i$1={applicationId:t.application,name:t.name,url:t.url,events:t.events.split(","),retryEnabled:!0,maxRetries:t.maxRetries},n=await c(U,{input:i$1});i("Webhook created"),h$1(t,n.createWebhook);}catch(i){g(i);}}),I.command("remove").description("Remove a webhook").argument("<id>").action(async t=>{try{await c(x,{id:t}),i("Webhook removed");}catch(i){g(i);}}),p$1.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async t=>{try{let i=await c(G,{applicationId:t.application,period:(t.period??"LAST_30_DAYS").toUpperCase(),startDate:t.from,endDate:t.to});h$1(t,i.applicationAnalytics);}catch(i){g(i);}}),c$1.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async t=>{try{let i=await c(V,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});h$1(t,i.organizationRevenue);}catch(i){g(i);}});let O=c$1.command("admin").description("Admin operations").command("reviews").description("Application review queue");O.command("list").description("List applications pending review").option("--status <s>","PENDING|APPROVED|REJECTED","PENDING").option("-f, --format <format>").action(async t=>{try{let i=await c(q,{status:(t.status??"PENDING").toUpperCase()});h$1(t,i.adminReviews.edges.map(n=>n.node));}catch(i){g(i);}}),O.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,i$1)=>{try{await c(W,{id:t,notes:i$1.notes}),i("Application approved");}catch(n){g(n);}}),O.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,i$1)=>{try{await c(B,{id:t,notes:i$1.notes}),i("Application rejected");}catch(n){g(n);}});}var M={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(A,c){a(c),Z(A);}},it=M;export{it as default};
139
+ `;function M(g){let d=g.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),m=d.command("orgs").description("Publisher organizations");m.command("list").description("List devportal organizations").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(R,{limit:t.limit,offset:0})).developerOrganizations.edges.map(n=>n.node);i(t,e,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:e.map(n=>[r(n.id,12),n.name,n.slug??"-",n.tier??"-",String(!!n.isVerified),String(n.totalApps??0)])});}catch(i){h$1(i);}}),m.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(w,{id:t});if(!e.developerOrganization)throw new o(`Organization ${t} not found`);i(i$1,e.developerOrganization);}catch(e){h$1(e);}}),m.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,slug:t.slug,description:t.description,contactEmail:t.contactEmail,websiteUrl:t.website},e=await c(D,{input:i$1});k$1(`Organization created: ${e.createDeveloperOrganization.name}`),i(t,e.createDeveloperOrganization);}catch(i){h$1(i);}}),m.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.description!==void 0&&(e.description=i$1.description),!Object.keys(e).length)throw new o("No updates specified");let n=await c(S,{id:t,input:e});k$1("Organization updated"),i(i$1,n.updateDeveloperOrganization);}catch(e){h$1(e);}}),m.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await c(C,{id:t}),k$1("Organization deleted");}catch(i){h$1(i);}});let p$1=d.command("apps").description("Applications");p$1.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(y,{organizationId:t.organization,status:t.status?.toUpperCase(),limit:t.limit})).applications.edges.map(n=>n.node);i(t,e,{headers:["ID","Name","Status","Installs","Rating"],rows:e.map(n=>[r(n.id,12),n.name,p(n.status),String(n.installCount??0),String(n.averageRating??"-")])});}catch(i){h$1(i);}}),p$1.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(P,{id:t});if(!e.application)throw new o(`Application ${t} not found`);i(i$1,e.application);}catch(e){h$1(e);}}),p$1.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,developerOrganizationId:t.organization,appType:(t.type??"API_INTEGRATION").toUpperCase(),description:t.description},e=await c(h,{input:i$1});k$1(`Application created: ${e.createApplication.name}`),i(t,e.createApplication);}catch(i){h$1(i);}}),p$1.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.description!==void 0&&(e.description=i$1.description),i$1.pricing&&(e.pricingType=i$1.pricing.toUpperCase()),i$1.docsUrl&&(e.documentationUrl=i$1.docsUrl),!Object.keys(e).length)throw new o("No updates specified");let n=await c(N,{id:t,input:e});k$1("Application updated"),i(i$1,n.updateApplication);}catch(e){h$1(e);}}),p$1.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,i)=>{try{await c($,{id:t,notes:i.notes}),k$1("Submitted for review");}catch(e){h$1(e);}}),p$1.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await c(b,{id:t}),k$1("Application published");}catch(i){h$1(i);}}),p$1.command("delete").description("Delete an application").argument("<id>").action(async t=>{try{await c(_,{id:t}),k$1("Application deleted");}catch(i){h$1(i);}});let O=p$1.command("versions").description("Application versions");O.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i$1)=>{try{let n=(await c(L,{applicationId:t})).application?.versions.edges.map(c=>c.node)??[];i(i$1,n,{headers:["ID","Version","Status","Latest","Stable"],rows:n.map(c=>[r(c.id,12),c.version,p(c.status),String(!!c.isLatest),String(!!c.isStable)])});}catch(e){h$1(e);}}),O.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async t=>{try{let i$1={version:t.version,releaseNotes:t.notes,packageUrl:t.package},e=await c(z,{applicationId:t.application,input:i$1});k$1(`Version created: ${e.createApplicationVersion.version}`),i(t,e.createApplicationVersion);}catch(i){h$1(i);}});let A=p$1.command("webhooks").description("Application webhooks");A.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(k,{applicationId:t});i(i$1,e.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:e.webhooks.map(n=>[r(n.id,12),n.name,r(n.url,40),String(!!n.isActive),String(n.failureCount??0)])});}catch(e){h$1(e);}}),A.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",t=>parseInt(t,10),5).option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,url:t.url,events:t.events.split(",").map(n=>n.trim()).filter(Boolean),retryEnabled:!0,maxRetries:t.maxRetries},e=await c(U,{applicationId:t.application,input:i$1});k$1("Webhook created. Store the signing secret now: it is shown only once."),i(t,e.createWebhook);}catch(i){h$1(i);}}),A.command("remove").description("Remove a webhook").argument("<id>").action(async t=>{try{await c(x,{id:t}),k$1("Webhook removed");}catch(i){h$1(i);}}),p$1.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async t=>{try{let i$1=await c(V,{applicationId:t.application,period:(t.period??"LAST_30_DAYS").toUpperCase(),startDate:t.from,endDate:t.to});i(t,i$1.applicationAnalytics);}catch(i){h$1(i);}}),d.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async t=>{try{let i$1=await c(W,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});i(t,i$1.developerOrgRevenueSummary);}catch(i){h$1(i);}});let I=d.command("admin").description("Admin operations").command("reviews").description("Application review queue");I.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let i$1=await c(G,{status:(t.status??"SUBMITTED").toUpperCase(),limit:t.limit});i(t,i$1.applications.edges.map(e=>e.node));}catch(i){h$1(i);}}),I.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,i)=>{try{await c(B,{id:t,notes:i.notes}),k$1("Application approved");}catch(e){h$1(e);}}),I.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,i)=>{try{await c(q,{id:t,notes:i.notes}),k$1("Application rejected");}catch(e){h$1(e);}});}var Y={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(g,d){a(d),M(g);}},it=Y;export{it as default};