@burdenoff/cli-sdk 2026.1102.1 → 2026.1102.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
  3. package/dist/modules/adaptercloud/index.cjs +4 -4
  4. package/dist/modules/adaptercloud/index.js +2 -2
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +8 -8
  9. package/dist/modules/atheletebridge/index.js +2 -2
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +1 -1
  13. package/dist/modules/billing/index.js +2 -2
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.js +2 -2
  17. package/dist/modules/channels/index.cjs +3 -3
  18. package/dist/modules/channels/index.js +2 -2
  19. package/dist/modules/collabkin/index.cjs +4 -4
  20. package/dist/modules/collabkin/index.js +2 -2
  21. package/dist/modules/comradecircle/index.cjs +6 -6
  22. package/dist/modules/comradecircle/index.js +2 -2
  23. package/dist/modules/conversations/index.cjs +7 -7
  24. package/dist/modules/conversations/index.js +2 -2
  25. package/dist/modules/coolandlovely/index.cjs +2 -2
  26. package/dist/modules/coolandlovely/index.js +2 -2
  27. package/dist/modules/cosmicintersection/index.cjs +6 -6
  28. package/dist/modules/cosmicintersection/index.js +2 -2
  29. package/dist/modules/crewfoundry/index.js +2 -2
  30. package/dist/modules/devportal/index.cjs +2 -2
  31. package/dist/modules/devportal/index.js +2 -2
  32. package/dist/modules/ecoimpacthub/index.cjs +5 -5
  33. package/dist/modules/ecoimpacthub/index.js +2 -2
  34. package/dist/modules/eventfullymanaged/index.cjs +12 -12
  35. package/dist/modules/eventfullymanaged/index.js +2 -2
  36. package/dist/modules/export/index.cjs +4 -4
  37. package/dist/modules/export/index.js +2 -2
  38. package/dist/modules/files/index.cjs +3 -3
  39. package/dist/modules/files/index.js +4 -4
  40. package/dist/modules/fluidgrids/index.cjs +16 -16
  41. package/dist/modules/fluidgrids/index.js +3 -3
  42. package/dist/modules/ggnomad/index.cjs +4 -4
  43. package/dist/modules/ggnomad/index.js +2 -2
  44. package/dist/modules/govcitizenhub/index.cjs +4 -4
  45. package/dist/modules/govcitizenhub/index.js +2 -2
  46. package/dist/modules/groups/index.cjs +4 -4
  47. package/dist/modules/groups/index.js +2 -2
  48. package/dist/modules/headshotmarketing/index.js +2 -2
  49. package/dist/modules/hookmovies/index.cjs +6 -6
  50. package/dist/modules/hookmovies/index.js +2 -2
  51. package/dist/modules/housingvista/index.cjs +3 -3
  52. package/dist/modules/housingvista/index.js +2 -2
  53. package/dist/modules/integrations/index.cjs +5 -5
  54. package/dist/modules/integrations/index.js +2 -2
  55. package/dist/modules/intelwatchtower/index.cjs +5 -5
  56. package/dist/modules/intelwatchtower/index.js +2 -2
  57. package/dist/modules/kadaikodi/index.cjs +2 -2
  58. package/dist/modules/kadaikodi/index.js +2 -2
  59. package/dist/modules/labsofscience/index.cjs +3 -3
  60. package/dist/modules/labsofscience/index.js +2 -2
  61. package/dist/modules/manufacturedops/index.cjs +2 -2
  62. package/dist/modules/manufacturedops/index.js +2 -2
  63. package/dist/modules/movethewheels/index.js +2 -2
  64. package/dist/modules/notifications/index.cjs +2 -2
  65. package/dist/modules/notifications/index.js +2 -2
  66. package/dist/modules/organizations/index.js +2 -2
  67. package/dist/modules/planmagnet/index.js +2 -2
  68. package/dist/modules/products/index.cjs +4 -4
  69. package/dist/modules/products/index.js +2 -2
  70. package/dist/modules/proserviceworld/index.cjs +2 -2
  71. package/dist/modules/proserviceworld/index.js +2 -2
  72. package/dist/modules/rbac/index.js +2 -2
  73. package/dist/modules/sandbox/index.cjs +17 -17
  74. package/dist/modules/sandbox/index.js +1 -1
  75. package/dist/modules/scheduler/index.cjs +2 -2
  76. package/dist/modules/scheduler/index.js +2 -2
  77. package/dist/modules/security/index.cjs +3 -3
  78. package/dist/modules/security/index.js +2 -2
  79. package/dist/modules/semanticfed/index.cjs +3 -3
  80. package/dist/modules/semanticfed/index.js +2 -2
  81. package/dist/modules/store/index.cjs +3 -3
  82. package/dist/modules/store/index.js +2 -2
  83. package/dist/modules/subscriberbot/index.cjs +1 -1
  84. package/dist/modules/subscriberbot/index.js +2 -2
  85. package/dist/modules/support/index.cjs +2 -2
  86. package/dist/modules/support/index.js +2 -2
  87. package/dist/modules/tags/index.js +2 -2
  88. package/dist/modules/technospam/index.cjs +2 -2
  89. package/dist/modules/technospam/index.js +2 -2
  90. package/dist/modules/theculturepost/index.js +2 -2
  91. package/dist/modules/theglobalfuel/index.cjs +2 -2
  92. package/dist/modules/theglobalfuel/index.js +2 -2
  93. package/dist/modules/timecampus/index.js +2 -2
  94. package/dist/modules/tours/index.cjs +2 -2
  95. package/dist/modules/tours/index.js +2 -2
  96. package/dist/modules/vibecontrols/index.cjs +563 -567
  97. package/dist/modules/vibecontrols/index.js +5 -4
  98. package/dist/modules/workspaces/index.cjs +4 -4
  99. package/dist/modules/workspaces/index.js +2 -2
  100. package/package.json +1 -1
  101. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a,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,4 +1,4 @@
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 I(){if(!C)throw new m("vibecontrols module helpers used before setHelpersContext was called");return C}async function r(s,a){return I().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){I().output.formatAndOutput(s,a,d);}function u(s){I().output.printSuccess(s);}function k(s){return I().output.formatStatus(s)}function A(s,a){return I().output.truncate(s,a)}var E=`
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
2
  query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
3
  developerOrganizations(limit: $limit, offset: $offset) {
4
4
  edges { node { id name slug tier isVerified totalApps publishedApps } }
@@ -136,4 +136,4 @@
136
136
  id status reviewStatus reviewNotes
137
137
  }
138
138
  }
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=>[A(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=>[A(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=>[A(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 w=g.command("webhooks").description("Application webhooks");w.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=>[A(o.id,12),o.name,A(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){i(n);}}),w.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);}}),w.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;
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,4 +1,4 @@
1
- import {a,c,h as h$1,p,g,i,n}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
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
2
  query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
3
  developerOrganizations(limit: $limit, offset: $offset) {
4
4
  edges { node { id name slug tier isVerified totalApps publishedApps } }
@@ -136,4 +136,4 @@ import {a,c,h as h$1,p,g,i,n}from'../../chunk-W4JZR7RJ.js';import {o}from'../../
136
136
  id status reviewStatus reviewNotes
137
137
  }
138
138
  }
139
- `;function M(g$1){let d=g$1.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);h$1(t,e,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:e.map(n=>[p(n.id,12),n.name,n.slug??"-",n.tier??"-",String(!!n.isVerified),String(n.totalApps??0)])});}catch(i){g(i);}}),m.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,i)=>{try{let e=await c(w,{id:t});if(!e.developerOrganization)throw new o(`Organization ${t} not found`);h$1(i,e.developerOrganization);}catch(e){g(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});i(`Organization created: ${e.createDeveloperOrganization.name}`),h$1(t,e.createDeveloperOrganization);}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 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});i("Organization updated"),h$1(i$1,n.updateDeveloperOrganization);}catch(e){g(e);}}),m.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await c(C,{id:t}),i("Organization deleted");}catch(i){g(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);h$1(t,e,{headers:["ID","Name","Status","Installs","Rating"],rows:e.map(n$1=>[p(n$1.id,12),n$1.name,n(n$1.status),String(n$1.installCount??0),String(n$1.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 e=await c(P,{id:t});if(!e.application)throw new o(`Application ${t} not found`);h$1(i,e.application);}catch(e){g(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});i(`Application created: ${e.createApplication.name}`),h$1(t,e.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 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});i("Application updated"),h$1(i$1,n.updateApplication);}catch(e){g(e);}}),p$1.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,i$1)=>{try{await c($,{id:t,notes:i$1.notes}),i("Submitted for review");}catch(e){g(e);}}),p$1.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await c(b,{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(_,{id:t}),i("Application deleted");}catch(i){g(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)=>{try{let n$1=(await c(L,{applicationId:t})).application?.versions.edges.map(c=>c.node)??[];h$1(i,n$1,{headers:["ID","Version","Status","Latest","Stable"],rows:n$1.map(c=>[p(c.id,12),c.version,n(c.status),String(!!c.isLatest),String(!!c.isStable)])});}catch(e){g(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});i(`Version created: ${e.createApplicationVersion.version}`),h$1(t,e.createApplicationVersion);}catch(i){g(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)=>{try{let e=await c(k,{applicationId:t});h$1(i,e.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:e.webhooks.map(n=>[p(n.id,12),n.name,p(n.url,40),String(!!n.isActive),String(n.failureCount??0)])});}catch(e){g(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});i("Webhook created. Store the signing secret now: it is shown only once."),h$1(t,e.createWebhook);}catch(i){g(i);}}),A.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(V,{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);}}),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=await c(W,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});h$1(t,i.developerOrgRevenueSummary);}catch(i){g(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=await c(G,{status:(t.status??"SUBMITTED").toUpperCase(),limit:t.limit});h$1(t,i.applications.edges.map(e=>e.node));}catch(i){g(i);}}),I.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,i$1)=>{try{await c(B,{id:t,notes:i$1.notes}),i("Application approved");}catch(e){g(e);}}),I.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,i$1)=>{try{await c(q,{id:t,notes:i$1.notes}),i("Application rejected");}catch(e){g(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};
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};
@@ -30,11 +30,11 @@
30
30
  areaHectares updatedAt
31
31
  }
32
32
  }
33
- `,_=`
33
+ `,x=`
34
34
  mutation EcoArchiveSite($id: ID!) {
35
35
  ecoArchiveSite(id: $id)
36
36
  }
37
- `,x=`
37
+ `,_=`
38
38
  query EcoListSensors($siteId: ID, $kind: EcoSensorKind, $status: EcoSensorStatus) {
39
39
  ecoListSensors(siteId: $siteId, kind: $kind, status: $status) {
40
40
  id siteId name kind status unit hardwareId installedAt lastReadingAt createdAt
@@ -153,14 +153,14 @@
153
153
  pageInfo { cursor hasMore }
154
154
  }
155
155
  }
156
- `,W=`
156
+ `,B=`
157
157
  mutation EcoRecordObservation($input: EcoRecordObservationInput!) {
158
158
  ecoRecordObservation(input: $input) {
159
159
  id speciesId siteId observerId method count latitude longitude observedAt
160
160
  notes createdAt
161
161
  }
162
162
  }
163
- `,B=`
163
+ `,W=`
164
164
  query EcoHabitatProject($id: ID!) {
165
165
  ecoHabitatProject(id: $id) {
166
166
  id name description siteId managerId status targetHectares budgetAmount
@@ -302,4 +302,4 @@
302
302
  query EcoHealth {
303
303
  ecoHealth
304
304
  }
305
- `;function m(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${o}"`);return r}function u(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new l(`Expected a number but got "${o}"`);return r}function g(o){let r={};return o.limit!==void 0&&(r.limit=o.limit),o.offset!==void 0&&(r.offset=o.offset),Object.keys(r).length?r:void 0}function mt(o){let r=o.command("sites").description("EcoImpactHub monitored sites");r.command("list").description("List sites").option("--status <s>","ACTIVE|ARCHIVED|MONITORING_PAUSED").option("--type <t>","FACILITY|FOREST|WETLAND|...").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(w,{status:t.status?t.status.toUpperCase():void 0,type:t.type?t.type.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListSites.items,{headers:["ID","Name","Type","Status","Country","Hectares"],rows:e.ecoListSites.items.map(n=>[d(n.id,12),n.name,n.type,n.status,n.country??"-",n.areaHectares!=null?String(n.areaHectares):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a site by id").argument("<id>","Site ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.ecoSite)throw new l(`Site ${t} not found`);s(e,n.ecoSite);}catch(n){i(n);}}),r.command("create").description("Create a site").requiredOption("--name <name>","Site name").option("--code <code>","Site code").option("--description <s>","Description").option("--type <t>","Site type","FACILITY").option("--status <s>","Site status","ACTIVE").option("--country <c>","Country").option("--region <r>","Region").option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--area-hectares <n>","Area (hectares)",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:(t.type??"FACILITY").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase()};t.code&&(e.code=t.code),t.description&&(e.description=t.description),t.country&&(e.country=t.country),t.region&&(e.region=t.region),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.areaHectares!==void 0&&(e.areaHectares=t.areaHectares);let n=await a(v,{input:e});c(`Site created: ${n.ecoCreateSite.name}`),s(t,n.ecoCreateSite);}catch(e){i(e);}}),r.command("update").description("Update a site").argument("<id>","Site ID").option("--name <name>","Site name").option("--code <code>","Site code").option("--description <s>","Description").option("--type <t>","Site type").option("--status <s>","Site status").option("--country <c>","Country").option("--region <r>","Region").option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--area-hectares <n>","Area (hectares)",u).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.code&&(n.code=e.code),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.country&&(n.country=e.country),e.region&&(n.region=e.region),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.areaHectares!==void 0&&(n.areaHectares=e.areaHectares),!Object.keys(n).length)throw new l("No updates specified");let S=await a(k,{id:t,input:n});c("Site updated"),s(e,S.ecoUpdateSite);}catch(n){i(n);}}),r.command("archive").description("Archive a site").argument("<id>","Site ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(_,{id:t});c(n.ecoArchiveSite?"Site archived":"Site not archived"),s(e,{archived:n.ecoArchiveSite});}catch(n){i(n);}});}function lt(o){let r=o.command("sensors").description("EcoImpactHub site sensors");r.command("list").description("List sensors").option("--site <id>","Filter by site ID").option("--kind <k>","WATER_QUALITY|AIR_QUALITY|SOIL|...").option("--status <s>","ONLINE|OFFLINE|DEGRADED|MAINTENANCE|RETIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(x,{siteId:t.site,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListSensors,{headers:["ID","Name","Kind","Status","Unit","Last Reading"],rows:e.ecoListSensors.map(n=>[d(n.id,12),n.name,n.kind,n.status,n.unit??"-",E(n.lastReadingAt)])});}catch(e){i(e);}}),r.command("create").description("Create a sensor").requiredOption("--site <id>","Site ID").requiredOption("--name <name>","Sensor name").option("--kind <k>","Sensor kind","MANUAL").option("--status <s>","Sensor status","ONLINE").option("--unit <u>","Measurement unit").option("--hardware-id <id>","Hardware ID").option("--installed-at <iso>","Install date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,name:t.name,kind:(t.kind??"MANUAL").toUpperCase(),status:(t.status??"ONLINE").toUpperCase()};t.unit&&(e.unit=t.unit),t.hardwareId&&(e.hardwareId=t.hardwareId),t.installedAt&&(e.installedAt=t.installedAt);let n=await a(D,{input:e});c(`Sensor created: ${n.ecoCreateSensor.name}`),s(t,n.ecoCreateSensor);}catch(e){i(e);}}),r.command("set-status").description("Update a sensor's operational status").argument("<id>","Sensor ID").requiredOption("--status <s>","ONLINE|OFFLINE|DEGRADED|MAINTENANCE|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t,status:e.status.toUpperCase()});c(`Sensor status set to ${n.ecoSetSensorStatus.status}`),s(e,n.ecoSetSensorStatus);}catch(n){i(n);}});}function gt(o){let r=o.command("thresholds").description("EcoImpactHub alert thresholds");r.command("list").description("List alert thresholds").option("--site <id>","Filter by site ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{siteId:t.site});s(t,e.ecoListThresholds,{headers:["ID","Parameter","Unit","Direction","Severity","Active"],rows:e.ecoListThresholds.map(n=>[d(n.id,12),n.parameter,n.unit,n.direction,n.severity,n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create an alert threshold").requiredOption("--site <id>","Site ID").requiredOption("--parameter <p>","Measured parameter").requiredOption("--unit <u>","Unit").option("--direction <d>","ABOVE|BELOW|OUTSIDE_RANGE","ABOVE").option("--severity <s>","INFO|WARNING|CRITICAL","WARNING").option("--min-value <n>","Minimum value",u).option("--max-value <n>","Maximum value",u).option("--limit-value <n>","Limit value",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,parameter:t.parameter,unit:t.unit,direction:(t.direction??"ABOVE").toUpperCase(),severity:(t.severity??"WARNING").toUpperCase()};t.minValue!==void 0&&(e.minValue=t.minValue),t.maxValue!==void 0&&(e.maxValue=t.maxValue),t.limitValue!==void 0&&(e.limitValue=t.limitValue);let n=await a(P,{input:e});c(`Threshold created for ${n.ecoCreateThreshold.parameter}`),s(t,n.ecoCreateThreshold);}catch(e){i(e);}}),r.command("set-active").description("Activate or deactivate a threshold").argument("<id>","Threshold ID").requiredOption("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(N,{id:t,isActive:e.active});c(n.ecoSetThresholdActive.isActive?"Threshold activated":"Threshold disabled"),s(e,n.ecoSetThresholdActive);}catch(n){i(n);}});}function ft(o){let r=o.command("measurements").description("EcoImpactHub sensor measurements");r.command("list").description("List measurements").option("--site <id>","Filter by site ID").option("--sensor <id>","Filter by sensor ID").option("--parameter <p>","Filter by parameter").option("--breaches-only","Only threshold breaches").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{siteId:t.site,sensorId:t.sensor,parameter:t.parameter,breachesOnly:t.breachesOnly?!0:void 0,pagination:g(t)});s(t,e.ecoListMeasurements.items,{headers:["ID","Parameter","Value","Unit","Source","Breach","Recorded"],rows:e.ecoListMeasurements.items.map(n=>[d(n.id,12),n.parameter,String(n.value),n.unit,n.source,n.isBreach?"yes":"no",E(n.recordedAt)])});}catch(e){i(e);}}),r.command("record").description("Record a measurement").requiredOption("--site <id>","Site ID").requiredOption("--parameter <p>","Measured parameter").requiredOption("--value <n>","Measured value",u).requiredOption("--unit <u>","Unit").requiredOption("--recorded-at <iso>","Recorded-at timestamp (ISO)").option("--sensor <id>","Sensor ID").option("--source <s>","SENSOR|MANUAL|IMPORT|SATELLITE|CALCULATED","SENSOR").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,parameter:t.parameter,value:t.value,unit:t.unit,recordedAt:t.recordedAt,source:(t.source??"SENSOR").toUpperCase()};t.sensor&&(e.sensorId=t.sensor),t.notes&&(e.notes=t.notes);let n=await a(q,{input:e});c(n.ecoRecordMeasurement.isBreach?"Measurement recorded (threshold breach!)":"Measurement recorded"),s(t,n.ecoRecordMeasurement);}catch(e){i(e);}});}function Et(o){let r=o.command("species").description("EcoImpactHub tracked species");r.command("list").description("List species").option("--taxon-group <g>","MAMMAL|BIRD|REPTILE|...").option("--conservation-status <s>","LEAST_CONCERN|ENDANGERED|...").option("--priority-only","Only priority species").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{taxonGroup:t.taxonGroup?t.taxonGroup.toUpperCase():void 0,conservationStatus:t.conservationStatus?t.conservationStatus.toUpperCase():void 0,priorityOnly:t.priorityOnly?!0:void 0,pagination:g(t)});s(t,e.ecoListSpecies.items,{headers:["ID","Common Name","Scientific","Taxon","Status","Priority"],rows:e.ecoListSpecies.items.map(n=>[d(n.id,12),n.commonName,n.scientificName??"-",n.taxonGroup,n.conservationStatus,n.isPriority?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get a species by id").argument("<id>","Species ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t});if(!n.ecoSpecies)throw new l(`Species ${t} not found`);s(e,n.ecoSpecies);}catch(n){i(n);}}),r.command("create").description("Create a species record").requiredOption("--common-name <name>","Common name").option("--scientific-name <name>","Scientific name").option("--taxon-group <g>","Taxon group","OTHER").option("--conservation-status <s>","Conservation status","NOT_EVALUATED").option("--priority","Mark as priority species").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={commonName:t.commonName,taxonGroup:(t.taxonGroup??"OTHER").toUpperCase(),conservationStatus:(t.conservationStatus??"NOT_EVALUATED").toUpperCase(),isPriority:t.priority??!1};t.scientificName&&(e.scientificName=t.scientificName),t.description&&(e.description=t.description);let n=await a(V,{input:e});c(`Species created: ${n.ecoCreateSpecies.commonName}`),s(t,n.ecoCreateSpecies);}catch(e){i(e);}}),r.command("update").description("Update a species record").argument("<id>","Species ID").option("--common-name <name>","Common name").option("--scientific-name <name>","Scientific name").option("--taxon-group <g>","Taxon group").option("--conservation-status <s>","Conservation status").option("--priority <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.commonName&&(n.commonName=e.commonName),e.scientificName&&(n.scientificName=e.scientificName),e.taxonGroup&&(n.taxonGroup=e.taxonGroup.toUpperCase()),e.conservationStatus&&(n.conservationStatus=e.conservationStatus.toUpperCase()),e.priority!==void 0&&(n.isPriority=e.priority),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new l("No updates specified");let S=await a(F,{id:t,input:n});c("Species updated"),s(e,S.ecoUpdateSpecies);}catch(n){i(n);}}),r.command("archive").description("Archive a species record").argument("<id>","Species ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t});c(n.ecoArchiveSpecies?"Species archived":"Species not archived"),s(e,{archived:n.ecoArchiveSpecies});}catch(n){i(n);}});}function Ct(o){let r=o.command("observations").description("EcoImpactHub species observations");r.command("list").description("List observations").option("--species <id>","Filter by species ID").option("--site <id>","Filter by site ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{speciesId:t.species,siteId:t.site,pagination:g(t)});s(t,e.ecoListObservations.items,{headers:["ID","Species","Site","Method","Count","Observed"],rows:e.ecoListObservations.items.map(n=>[d(n.id,12),d(n.speciesId,12),n.siteId?d(n.siteId,12):"-",n.method,String(n.count),E(n.observedAt)])});}catch(e){i(e);}}),r.command("record").description("Record a species observation").requiredOption("--species <id>","Species ID").requiredOption("--observed-at <iso>","Observed-at timestamp (ISO)").option("--site <id>","Site ID").option("--method <m>","DIRECT_SIGHTING|CAMERA_TRAP|ACOUSTIC|...","DIRECT_SIGHTING").option("--count <n>","Individual count",m).option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--evidence-file <id>","Evidence file ID").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={speciesId:t.species,observedAt:t.observedAt,method:(t.method??"DIRECT_SIGHTING").toUpperCase()};t.site&&(e.siteId=t.site),t.count!==void 0&&(e.count=t.count),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.notes&&(e.notes=t.notes);let n=await a(W,{input:e});c("Observation recorded"),s(t,n.ecoRecordObservation);}catch(e){i(e);}});}function yt(o){let r=o.command("habitat").description("EcoImpactHub habitat projects & restoration activities");r.command("list").description("List habitat projects").option("--status <s>","PLANNED|IN_PROGRESS|MONITORING|...").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListHabitatProjects,{headers:["ID","Name","Status","Target Ha","Budget","Currency"],rows:e.ecoListHabitatProjects.map(n=>[d(n.id,12),n.name,n.status,n.targetHectares!=null?String(n.targetHectares):"-",n.budgetAmount!=null?String(n.budgetAmount):"-",n.currency??"-"])});}catch(e){i(e);}}),r.command("get").description("Get a habitat project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t});if(!n.ecoHabitatProject)throw new l(`Habitat project ${t} not found`);s(e,n.ecoHabitatProject);}catch(n){i(n);}}),r.command("create").description("Create a habitat project").requiredOption("--name <name>","Project name").option("--description <s>","Description").option("--site <id>","Site ID").option("--manager <id>","Manager user ID").option("--target-hectares <n>","Target hectares",u).option("--budget-amount <n>","Budget amount",u).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.site&&(e.siteId=t.site),t.manager&&(e.managerId=t.manager),t.targetHectares!==void 0&&(e.targetHectares=t.targetHectares),t.budgetAmount!==void 0&&(e.budgetAmount=t.budgetAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(K,{input:e});c(`Habitat project created: ${n.ecoCreateHabitatProject.name}`),s(t,n.ecoCreateHabitatProject);}catch(e){i(e);}}),r.command("transition").description("Advance a habitat project through its lifecycle").argument("<id>","Project ID").requiredOption("--status <s>","PLANNED|IN_PROGRESS|MONITORING|COMPLETED|ON_HOLD|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t,status:e.status.toUpperCase()});c(`Project status set to ${n.ecoTransitionHabitatProject.status}`),s(e,n.ecoTransitionHabitatProject);}catch(n){i(n);}}),r.command("log-activity").description("Log a restoration activity against a project").requiredOption("--project <id>","Project ID").requiredOption("--summary <s>","Activity summary").requiredOption("--performed-at <iso>","Performed-at timestamp (ISO)").option("--type <t>","PLANTING|INVASIVE_REMOVAL|REWILDING|...","PLANTING").option("--details <s>","Details").option("--quantity <n>","Quantity",u).option("--unit <u>","Unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,summary:t.summary,performedAt:t.performedAt,type:(t.type??"PLANTING").toUpperCase()};t.details&&(e.details=t.details),t.quantity!==void 0&&(e.quantity=t.quantity),t.unit&&(e.unit=t.unit);let n=await a(J,{input:e});c("Restoration activity logged"),s(t,n.ecoLogRestorationActivity);}catch(e){i(e);}});}function It(o){let r=o.command("carbon").description("EcoImpactHub carbon ledger & emission factors");r.command("list").description("List carbon ledger entries").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--site <id>","Filter by site ID").option("--status <s>","DRAFT|RECORDED|VERIFIED|ADJUSTED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{scope:t.scope?t.scope.toUpperCase():void 0,siteId:t.site,status:t.status?t.status.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListCarbonEntries.items,{headers:["ID","Category","Scope","Activity","CO2e kg","Status"],rows:e.ecoListCarbonEntries.items.map(n=>[d(n.id,12),n.category,n.scope,`${n.activityValue} ${n.activityUnit}`,String(n.co2eKg),n.status])});}catch(e){i(e);}}),r.command("total").description("Total CO2e (kg) recorded in the workspace").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--site <id>","Filter by site ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{scope:t.scope?t.scope.toUpperCase():void 0,siteId:t.site});c(`Total CO2e: ${e.ecoCarbonTotalKg} kg`),s(t,{totalCo2eKg:e.ecoCarbonTotalKg});}catch(e){i(e);}}),r.command("record").description("Record a carbon ledger entry").requiredOption("--category <c>","Category").requiredOption("--activity-value <n>","Activity value",u).requiredOption("--activity-unit <u>","Activity unit").requiredOption("--period-start <iso>","Period start (ISO)").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3","SCOPE_1").option("--factor <id>","Emission factor ID").option("--site <id>","Site ID").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,activityValue:t.activityValue,activityUnit:t.activityUnit,periodStart:t.periodStart,scope:(t.scope??"SCOPE_1").toUpperCase()};t.factor&&(e.factorId=t.factor),t.site&&(e.siteId=t.site),t.notes&&(e.notes=t.notes);let n=await a(Z,{input:e});c(`Carbon entry recorded: ${n.ecoRecordCarbonEntry.co2eKg} kg CO2e`),s(t,n.ecoRecordCarbonEntry);}catch(e){i(e);}}),r.command("verify").description("Verify a carbon ledger entry").argument("<id>","Carbon entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t});c(`Carbon entry ${n.ecoVerifyCarbonEntry.status}`),s(e,n.ecoVerifyCarbonEntry);}catch(n){i(n);}}),r.command("list-factors").description("List emission factors").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--active-only","Only active factors").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(et,{scope:t.scope?t.scope.toUpperCase():void 0,activeOnly:t.activeOnly?!0:void 0});s(t,e.ecoListEmissionFactors,{headers:["ID","Name","Scope","Unit","kgCO2e","Year","Active"],rows:e.ecoListEmissionFactors.map(n=>[d(n.id,12),n.name,n.scope,n.activityUnit,String(n.factorKgco2e),n.validYear!=null?String(n.validYear):"-",n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create-factor").description("Create an emission factor").requiredOption("--name <name>","Factor name").requiredOption("--activity-unit <u>","Activity unit").requiredOption("--factor-kgco2e <n>","kg CO2e per unit",u).option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3","SCOPE_1").option("--source <s>","Source").option("--valid-year <n>","Valid year",m).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,activityUnit:t.activityUnit,factorKgco2e:t.factorKgco2e,scope:(t.scope??"SCOPE_1").toUpperCase()};t.source&&(e.source=t.source),t.validYear!==void 0&&(e.validYear=t.validYear);let n=await a(nt,{input:e});c(`Emission factor created: ${n.ecoCreateEmissionFactor.name}`),s(t,n.ecoCreateEmissionFactor);}catch(e){i(e);}});}function St(o){let r=o.command("targets").description("EcoImpactHub reduction targets");r.command("list").description("List reduction targets").option("--status <s>","PROPOSED|ACTIVE|ACHIEVED|MISSED|RETIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(rt,{status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListReductionTargets,{headers:["ID","Name","Metric","Baseline","Target","Status"],rows:e.ecoListReductionTargets.map(n=>[d(n.id,12),n.name,n.metric,`${n.baselineValue} (${n.baselineYear})`,`${n.targetValue} (${n.targetYear})`,n.status])});}catch(e){i(e);}}),r.command("create").description("Create a reduction target").requiredOption("--name <name>","Target name").requiredOption("--metric <m>","Metric").requiredOption("--unit <u>","Unit").requiredOption("--baseline-value <n>","Baseline value",u).requiredOption("--baseline-year <n>","Baseline year",m).requiredOption("--target-value <n>","Target value",u).requiredOption("--target-year <n>","Target year",m).option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,metric:t.metric,unit:t.unit,baselineValue:t.baselineValue,baselineYear:t.baselineYear,targetValue:t.targetValue,targetYear:t.targetYear};t.description&&(e.description=t.description);let n=await a(ot,{input:e});c(`Reduction target created: ${n.ecoCreateReductionTarget.name}`),s(t,n.ecoCreateReductionTarget);}catch(e){i(e);}}),r.command("set-status").description("Update a reduction target status").argument("<id>","Target ID").requiredOption("--status <s>","PROPOSED|ACTIVE|ACHIEVED|MISSED|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(it,{id:t,status:e.status.toUpperCase()});c(`Target status set to ${n.ecoSetReductionTargetStatus.status}`),s(e,n.ecoSetReductionTargetStatus);}catch(n){i(n);}});}function ht(o){let r=o.command("reports").description("EcoImpactHub sustainability reports");r.command("list").description("List reports").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{status:t.status?t.status.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListReports.items,{headers:["ID","Title","Framework","Status","Period End","Published"],rows:e.ecoListReports.items.map(n=>[d(n.id,12),n.title,n.framework,n.status,E(n.periodEnd),E(n.publishedAt)])});}catch(e){i(e);}}),r.command("get").description("Get a report by id").argument("<id>","Report ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});if(!n.ecoReport)throw new l(`Report ${t} not found`);s(e,n.ecoReport);}catch(n){i(n);}}),r.command("create").description("Create a sustainability report").requiredOption("--title <t>","Report title").requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--framework <f>","GHG_PROTOCOL|GRI|SASB|TCFD|CDP|CUSTOM","GHG_PROTOCOL").option("--summary <s>","Summary").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,periodStart:t.periodStart,periodEnd:t.periodEnd,framework:(t.framework??"GHG_PROTOCOL").toUpperCase()};t.summary&&(e.summary=t.summary);let n=await a(ct,{input:e});c(`Report created: ${n.ecoCreateReport.title}`),s(t,n.ecoCreateReport);}catch(e){i(e);}}),r.command("add-line-item").description("Add a line item to a report").requiredOption("--report <id>","Report ID").requiredOption("--label <l>","Line item label").requiredOption("--value <n>","Value",u).requiredOption("--unit <u>","Unit").option("--category <c>","Category").option("--carbon-entry <id>","Linked carbon entry ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={reportId:t.report,label:t.label,value:t.value,unit:t.unit};t.category&&(e.category=t.category),t.carbonEntry&&(e.carbonEntryId=t.carbonEntry);let n=await a(ut,{input:e});c("Line item added"),s(t,n.ecoAddReportLineItem);}catch(e){i(e);}}),r.command("publish").description("Publish a report").argument("<id>","Report ID").option("--file <id>","Published artifact file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t,fileId:e.file});c(`Report published: ${n.ecoPublishReport.title}`),s(e,n.ecoPublishReport);}catch(n){i(n);}});}function Ot(o){o.command("health").description("EcoImpactHub service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await O(dt);c(t.ecoHealth),s(r,{health:t.ecoHealth});}catch(t){i(t);}});}var Pt={id:"ecoimpacthub",version:"1.0.0",displayName:"EcoImpactHub",dependsOn:["auth","workspaces"],register(o,r){A(r);let t=o.command("ecoimpacthub").description("EcoImpactHub environmental-impact & sustainability monitoring");mt(t),lt(t),gt(t),ft(t),Et(t),Ct(t),yt(t),It(t),St(t),ht(t),Ot(t);}},Nn=Pt;module.exports=Nn;
305
+ `;function m(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new l(`Expected an integer but got "${o}"`);return r}function u(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new l(`Expected a number but got "${o}"`);return r}function g(o){let r={};return o.limit!==void 0&&(r.limit=o.limit),o.offset!==void 0&&(r.offset=o.offset),Object.keys(r).length?r:void 0}function mt(o){let r=o.command("sites").description("EcoImpactHub monitored sites");r.command("list").description("List sites").option("--status <s>","ACTIVE|ARCHIVED|MONITORING_PAUSED").option("--type <t>","FACILITY|FOREST|WETLAND|...").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(w,{status:t.status?t.status.toUpperCase():void 0,type:t.type?t.type.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListSites.items,{headers:["ID","Name","Type","Status","Country","Hectares"],rows:e.ecoListSites.items.map(n=>[d(n.id,12),n.name,n.type,n.status,n.country??"-",n.areaHectares!=null?String(n.areaHectares):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a site by id").argument("<id>","Site ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(R,{id:t});if(!n.ecoSite)throw new l(`Site ${t} not found`);s(e,n.ecoSite);}catch(n){i(n);}}),r.command("create").description("Create a site").requiredOption("--name <name>","Site name").option("--code <code>","Site code").option("--description <s>","Description").option("--type <t>","Site type","FACILITY").option("--status <s>","Site status","ACTIVE").option("--country <c>","Country").option("--region <r>","Region").option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--area-hectares <n>","Area (hectares)",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,type:(t.type??"FACILITY").toUpperCase(),status:(t.status??"ACTIVE").toUpperCase()};t.code&&(e.code=t.code),t.description&&(e.description=t.description),t.country&&(e.country=t.country),t.region&&(e.region=t.region),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.areaHectares!==void 0&&(e.areaHectares=t.areaHectares);let n=await a(v,{input:e});c(`Site created: ${n.ecoCreateSite.name}`),s(t,n.ecoCreateSite);}catch(e){i(e);}}),r.command("update").description("Update a site").argument("<id>","Site ID").option("--name <name>","Site name").option("--code <code>","Site code").option("--description <s>","Description").option("--type <t>","Site type").option("--status <s>","Site status").option("--country <c>","Country").option("--region <r>","Region").option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--area-hectares <n>","Area (hectares)",u).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.code&&(n.code=e.code),e.description!==void 0&&(n.description=e.description),e.type&&(n.type=e.type.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.country&&(n.country=e.country),e.region&&(n.region=e.region),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.areaHectares!==void 0&&(n.areaHectares=e.areaHectares),!Object.keys(n).length)throw new l("No updates specified");let S=await a(k,{id:t,input:n});c("Site updated"),s(e,S.ecoUpdateSite);}catch(n){i(n);}}),r.command("archive").description("Archive a site").argument("<id>","Site ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(x,{id:t});c(n.ecoArchiveSite?"Site archived":"Site not archived"),s(e,{archived:n.ecoArchiveSite});}catch(n){i(n);}});}function lt(o){let r=o.command("sensors").description("EcoImpactHub site sensors");r.command("list").description("List sensors").option("--site <id>","Filter by site ID").option("--kind <k>","WATER_QUALITY|AIR_QUALITY|SOIL|...").option("--status <s>","ONLINE|OFFLINE|DEGRADED|MAINTENANCE|RETIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{siteId:t.site,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListSensors,{headers:["ID","Name","Kind","Status","Unit","Last Reading"],rows:e.ecoListSensors.map(n=>[d(n.id,12),n.name,n.kind,n.status,n.unit??"-",E(n.lastReadingAt)])});}catch(e){i(e);}}),r.command("create").description("Create a sensor").requiredOption("--site <id>","Site ID").requiredOption("--name <name>","Sensor name").option("--kind <k>","Sensor kind","MANUAL").option("--status <s>","Sensor status","ONLINE").option("--unit <u>","Measurement unit").option("--hardware-id <id>","Hardware ID").option("--installed-at <iso>","Install date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,name:t.name,kind:(t.kind??"MANUAL").toUpperCase(),status:(t.status??"ONLINE").toUpperCase()};t.unit&&(e.unit=t.unit),t.hardwareId&&(e.hardwareId=t.hardwareId),t.installedAt&&(e.installedAt=t.installedAt);let n=await a(D,{input:e});c(`Sensor created: ${n.ecoCreateSensor.name}`),s(t,n.ecoCreateSensor);}catch(e){i(e);}}),r.command("set-status").description("Update a sensor's operational status").argument("<id>","Sensor ID").requiredOption("--status <s>","ONLINE|OFFLINE|DEGRADED|MAINTENANCE|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t,status:e.status.toUpperCase()});c(`Sensor status set to ${n.ecoSetSensorStatus.status}`),s(e,n.ecoSetSensorStatus);}catch(n){i(n);}});}function gt(o){let r=o.command("thresholds").description("EcoImpactHub alert thresholds");r.command("list").description("List alert thresholds").option("--site <id>","Filter by site ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{siteId:t.site});s(t,e.ecoListThresholds,{headers:["ID","Parameter","Unit","Direction","Severity","Active"],rows:e.ecoListThresholds.map(n=>[d(n.id,12),n.parameter,n.unit,n.direction,n.severity,n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create an alert threshold").requiredOption("--site <id>","Site ID").requiredOption("--parameter <p>","Measured parameter").requiredOption("--unit <u>","Unit").option("--direction <d>","ABOVE|BELOW|OUTSIDE_RANGE","ABOVE").option("--severity <s>","INFO|WARNING|CRITICAL","WARNING").option("--min-value <n>","Minimum value",u).option("--max-value <n>","Maximum value",u).option("--limit-value <n>","Limit value",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,parameter:t.parameter,unit:t.unit,direction:(t.direction??"ABOVE").toUpperCase(),severity:(t.severity??"WARNING").toUpperCase()};t.minValue!==void 0&&(e.minValue=t.minValue),t.maxValue!==void 0&&(e.maxValue=t.maxValue),t.limitValue!==void 0&&(e.limitValue=t.limitValue);let n=await a(P,{input:e});c(`Threshold created for ${n.ecoCreateThreshold.parameter}`),s(t,n.ecoCreateThreshold);}catch(e){i(e);}}),r.command("set-active").description("Activate or deactivate a threshold").argument("<id>","Threshold ID").requiredOption("--active <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(N,{id:t,isActive:e.active});c(n.ecoSetThresholdActive.isActive?"Threshold activated":"Threshold disabled"),s(e,n.ecoSetThresholdActive);}catch(n){i(n);}});}function ft(o){let r=o.command("measurements").description("EcoImpactHub sensor measurements");r.command("list").description("List measurements").option("--site <id>","Filter by site ID").option("--sensor <id>","Filter by sensor ID").option("--parameter <p>","Filter by parameter").option("--breaches-only","Only threshold breaches").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(H,{siteId:t.site,sensorId:t.sensor,parameter:t.parameter,breachesOnly:t.breachesOnly?!0:void 0,pagination:g(t)});s(t,e.ecoListMeasurements.items,{headers:["ID","Parameter","Value","Unit","Source","Breach","Recorded"],rows:e.ecoListMeasurements.items.map(n=>[d(n.id,12),n.parameter,String(n.value),n.unit,n.source,n.isBreach?"yes":"no",E(n.recordedAt)])});}catch(e){i(e);}}),r.command("record").description("Record a measurement").requiredOption("--site <id>","Site ID").requiredOption("--parameter <p>","Measured parameter").requiredOption("--value <n>","Measured value",u).requiredOption("--unit <u>","Unit").requiredOption("--recorded-at <iso>","Recorded-at timestamp (ISO)").option("--sensor <id>","Sensor ID").option("--source <s>","SENSOR|MANUAL|IMPORT|SATELLITE|CALCULATED","SENSOR").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={siteId:t.site,parameter:t.parameter,value:t.value,unit:t.unit,recordedAt:t.recordedAt,source:(t.source??"SENSOR").toUpperCase()};t.sensor&&(e.sensorId=t.sensor),t.notes&&(e.notes=t.notes);let n=await a(q,{input:e});c(n.ecoRecordMeasurement.isBreach?"Measurement recorded (threshold breach!)":"Measurement recorded"),s(t,n.ecoRecordMeasurement);}catch(e){i(e);}});}function Et(o){let r=o.command("species").description("EcoImpactHub tracked species");r.command("list").description("List species").option("--taxon-group <g>","MAMMAL|BIRD|REPTILE|...").option("--conservation-status <s>","LEAST_CONCERN|ENDANGERED|...").option("--priority-only","Only priority species").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{taxonGroup:t.taxonGroup?t.taxonGroup.toUpperCase():void 0,conservationStatus:t.conservationStatus?t.conservationStatus.toUpperCase():void 0,priorityOnly:t.priorityOnly?!0:void 0,pagination:g(t)});s(t,e.ecoListSpecies.items,{headers:["ID","Common Name","Scientific","Taxon","Status","Priority"],rows:e.ecoListSpecies.items.map(n=>[d(n.id,12),n.commonName,n.scientificName??"-",n.taxonGroup,n.conservationStatus,n.isPriority?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get a species by id").argument("<id>","Species ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t});if(!n.ecoSpecies)throw new l(`Species ${t} not found`);s(e,n.ecoSpecies);}catch(n){i(n);}}),r.command("create").description("Create a species record").requiredOption("--common-name <name>","Common name").option("--scientific-name <name>","Scientific name").option("--taxon-group <g>","Taxon group","OTHER").option("--conservation-status <s>","Conservation status","NOT_EVALUATED").option("--priority","Mark as priority species").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={commonName:t.commonName,taxonGroup:(t.taxonGroup??"OTHER").toUpperCase(),conservationStatus:(t.conservationStatus??"NOT_EVALUATED").toUpperCase(),isPriority:t.priority??!1};t.scientificName&&(e.scientificName=t.scientificName),t.description&&(e.description=t.description);let n=await a(V,{input:e});c(`Species created: ${n.ecoCreateSpecies.commonName}`),s(t,n.ecoCreateSpecies);}catch(e){i(e);}}),r.command("update").description("Update a species record").argument("<id>","Species ID").option("--common-name <name>","Common name").option("--scientific-name <name>","Scientific name").option("--taxon-group <g>","Taxon group").option("--conservation-status <s>","Conservation status").option("--priority <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.commonName&&(n.commonName=e.commonName),e.scientificName&&(n.scientificName=e.scientificName),e.taxonGroup&&(n.taxonGroup=e.taxonGroup.toUpperCase()),e.conservationStatus&&(n.conservationStatus=e.conservationStatus.toUpperCase()),e.priority!==void 0&&(n.isPriority=e.priority),e.description!==void 0&&(n.description=e.description),!Object.keys(n).length)throw new l("No updates specified");let S=await a(F,{id:t,input:n});c("Species updated"),s(e,S.ecoUpdateSpecies);}catch(n){i(n);}}),r.command("archive").description("Archive a species record").argument("<id>","Species ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(G,{id:t});c(n.ecoArchiveSpecies?"Species archived":"Species not archived"),s(e,{archived:n.ecoArchiveSpecies});}catch(n){i(n);}});}function Ct(o){let r=o.command("observations").description("EcoImpactHub species observations");r.command("list").description("List observations").option("--species <id>","Filter by species ID").option("--site <id>","Filter by site ID").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{speciesId:t.species,siteId:t.site,pagination:g(t)});s(t,e.ecoListObservations.items,{headers:["ID","Species","Site","Method","Count","Observed"],rows:e.ecoListObservations.items.map(n=>[d(n.id,12),d(n.speciesId,12),n.siteId?d(n.siteId,12):"-",n.method,String(n.count),E(n.observedAt)])});}catch(e){i(e);}}),r.command("record").description("Record a species observation").requiredOption("--species <id>","Species ID").requiredOption("--observed-at <iso>","Observed-at timestamp (ISO)").option("--site <id>","Site ID").option("--method <m>","DIRECT_SIGHTING|CAMERA_TRAP|ACOUSTIC|...","DIRECT_SIGHTING").option("--count <n>","Individual count",m).option("--latitude <n>","Latitude",u).option("--longitude <n>","Longitude",u).option("--evidence-file <id>","Evidence file ID").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={speciesId:t.species,observedAt:t.observedAt,method:(t.method??"DIRECT_SIGHTING").toUpperCase()};t.site&&(e.siteId=t.site),t.count!==void 0&&(e.count=t.count),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.notes&&(e.notes=t.notes);let n=await a(B,{input:e});c("Observation recorded"),s(t,n.ecoRecordObservation);}catch(e){i(e);}});}function yt(o){let r=o.command("habitat").description("EcoImpactHub habitat projects & restoration activities");r.command("list").description("List habitat projects").option("--status <s>","PLANNED|IN_PROGRESS|MONITORING|...").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListHabitatProjects,{headers:["ID","Name","Status","Target Ha","Budget","Currency"],rows:e.ecoListHabitatProjects.map(n=>[d(n.id,12),n.name,n.status,n.targetHectares!=null?String(n.targetHectares):"-",n.budgetAmount!=null?String(n.budgetAmount):"-",n.currency??"-"])});}catch(e){i(e);}}),r.command("get").description("Get a habitat project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t});if(!n.ecoHabitatProject)throw new l(`Habitat project ${t} not found`);s(e,n.ecoHabitatProject);}catch(n){i(n);}}),r.command("create").description("Create a habitat project").requiredOption("--name <name>","Project name").option("--description <s>","Description").option("--site <id>","Site ID").option("--manager <id>","Manager user ID").option("--target-hectares <n>","Target hectares",u).option("--budget-amount <n>","Budget amount",u).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.site&&(e.siteId=t.site),t.manager&&(e.managerId=t.manager),t.targetHectares!==void 0&&(e.targetHectares=t.targetHectares),t.budgetAmount!==void 0&&(e.budgetAmount=t.budgetAmount),t.currency&&(e.currency=t.currency),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(K,{input:e});c(`Habitat project created: ${n.ecoCreateHabitatProject.name}`),s(t,n.ecoCreateHabitatProject);}catch(e){i(e);}}),r.command("transition").description("Advance a habitat project through its lifecycle").argument("<id>","Project ID").requiredOption("--status <s>","PLANNED|IN_PROGRESS|MONITORING|COMPLETED|ON_HOLD|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t,status:e.status.toUpperCase()});c(`Project status set to ${n.ecoTransitionHabitatProject.status}`),s(e,n.ecoTransitionHabitatProject);}catch(n){i(n);}}),r.command("log-activity").description("Log a restoration activity against a project").requiredOption("--project <id>","Project ID").requiredOption("--summary <s>","Activity summary").requiredOption("--performed-at <iso>","Performed-at timestamp (ISO)").option("--type <t>","PLANTING|INVASIVE_REMOVAL|REWILDING|...","PLANTING").option("--details <s>","Details").option("--quantity <n>","Quantity",u).option("--unit <u>","Unit").option("-f, --format <format>","Output format").action(async t=>{try{let e={projectId:t.project,summary:t.summary,performedAt:t.performedAt,type:(t.type??"PLANTING").toUpperCase()};t.details&&(e.details=t.details),t.quantity!==void 0&&(e.quantity=t.quantity),t.unit&&(e.unit=t.unit);let n=await a(J,{input:e});c("Restoration activity logged"),s(t,n.ecoLogRestorationActivity);}catch(e){i(e);}});}function It(o){let r=o.command("carbon").description("EcoImpactHub carbon ledger & emission factors");r.command("list").description("List carbon ledger entries").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--site <id>","Filter by site ID").option("--status <s>","DRAFT|RECORDED|VERIFIED|ADJUSTED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{scope:t.scope?t.scope.toUpperCase():void 0,siteId:t.site,status:t.status?t.status.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListCarbonEntries.items,{headers:["ID","Category","Scope","Activity","CO2e kg","Status"],rows:e.ecoListCarbonEntries.items.map(n=>[d(n.id,12),n.category,n.scope,`${n.activityValue} ${n.activityUnit}`,String(n.co2eKg),n.status])});}catch(e){i(e);}}),r.command("total").description("Total CO2e (kg) recorded in the workspace").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--site <id>","Filter by site ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{scope:t.scope?t.scope.toUpperCase():void 0,siteId:t.site});c(`Total CO2e: ${e.ecoCarbonTotalKg} kg`),s(t,{totalCo2eKg:e.ecoCarbonTotalKg});}catch(e){i(e);}}),r.command("record").description("Record a carbon ledger entry").requiredOption("--category <c>","Category").requiredOption("--activity-value <n>","Activity value",u).requiredOption("--activity-unit <u>","Activity unit").requiredOption("--period-start <iso>","Period start (ISO)").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3","SCOPE_1").option("--factor <id>","Emission factor ID").option("--site <id>","Site ID").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,activityValue:t.activityValue,activityUnit:t.activityUnit,periodStart:t.periodStart,scope:(t.scope??"SCOPE_1").toUpperCase()};t.factor&&(e.factorId=t.factor),t.site&&(e.siteId=t.site),t.notes&&(e.notes=t.notes);let n=await a(Z,{input:e});c(`Carbon entry recorded: ${n.ecoRecordCarbonEntry.co2eKg} kg CO2e`),s(t,n.ecoRecordCarbonEntry);}catch(e){i(e);}}),r.command("verify").description("Verify a carbon ledger entry").argument("<id>","Carbon entry ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t});c(`Carbon entry ${n.ecoVerifyCarbonEntry.status}`),s(e,n.ecoVerifyCarbonEntry);}catch(n){i(n);}}),r.command("list-factors").description("List emission factors").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--active-only","Only active factors").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(et,{scope:t.scope?t.scope.toUpperCase():void 0,activeOnly:t.activeOnly?!0:void 0});s(t,e.ecoListEmissionFactors,{headers:["ID","Name","Scope","Unit","kgCO2e","Year","Active"],rows:e.ecoListEmissionFactors.map(n=>[d(n.id,12),n.name,n.scope,n.activityUnit,String(n.factorKgco2e),n.validYear!=null?String(n.validYear):"-",n.isActive?"yes":"no"])});}catch(e){i(e);}}),r.command("create-factor").description("Create an emission factor").requiredOption("--name <name>","Factor name").requiredOption("--activity-unit <u>","Activity unit").requiredOption("--factor-kgco2e <n>","kg CO2e per unit",u).option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3","SCOPE_1").option("--source <s>","Source").option("--valid-year <n>","Valid year",m).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,activityUnit:t.activityUnit,factorKgco2e:t.factorKgco2e,scope:(t.scope??"SCOPE_1").toUpperCase()};t.source&&(e.source=t.source),t.validYear!==void 0&&(e.validYear=t.validYear);let n=await a(nt,{input:e});c(`Emission factor created: ${n.ecoCreateEmissionFactor.name}`),s(t,n.ecoCreateEmissionFactor);}catch(e){i(e);}});}function St(o){let r=o.command("targets").description("EcoImpactHub reduction targets");r.command("list").description("List reduction targets").option("--status <s>","PROPOSED|ACTIVE|ACHIEVED|MISSED|RETIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(rt,{status:t.status?t.status.toUpperCase():void 0});s(t,e.ecoListReductionTargets,{headers:["ID","Name","Metric","Baseline","Target","Status"],rows:e.ecoListReductionTargets.map(n=>[d(n.id,12),n.name,n.metric,`${n.baselineValue} (${n.baselineYear})`,`${n.targetValue} (${n.targetYear})`,n.status])});}catch(e){i(e);}}),r.command("create").description("Create a reduction target").requiredOption("--name <name>","Target name").requiredOption("--metric <m>","Metric").requiredOption("--unit <u>","Unit").requiredOption("--baseline-value <n>","Baseline value",u).requiredOption("--baseline-year <n>","Baseline year",m).requiredOption("--target-value <n>","Target value",u).requiredOption("--target-year <n>","Target year",m).option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,metric:t.metric,unit:t.unit,baselineValue:t.baselineValue,baselineYear:t.baselineYear,targetValue:t.targetValue,targetYear:t.targetYear};t.description&&(e.description=t.description);let n=await a(ot,{input:e});c(`Reduction target created: ${n.ecoCreateReductionTarget.name}`),s(t,n.ecoCreateReductionTarget);}catch(e){i(e);}}),r.command("set-status").description("Update a reduction target status").argument("<id>","Target ID").requiredOption("--status <s>","PROPOSED|ACTIVE|ACHIEVED|MISSED|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(it,{id:t,status:e.status.toUpperCase()});c(`Target status set to ${n.ecoSetReductionTargetStatus.status}`),s(e,n.ecoSetReductionTargetStatus);}catch(n){i(n);}});}function ht(o){let r=o.command("reports").description("EcoImpactHub sustainability reports");r.command("list").description("List reports").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(at,{status:t.status?t.status.toUpperCase():void 0,pagination:g(t)});s(t,e.ecoListReports.items,{headers:["ID","Title","Framework","Status","Period End","Published"],rows:e.ecoListReports.items.map(n=>[d(n.id,12),n.title,n.framework,n.status,E(n.periodEnd),E(n.publishedAt)])});}catch(e){i(e);}}),r.command("get").description("Get a report by id").argument("<id>","Report ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});if(!n.ecoReport)throw new l(`Report ${t} not found`);s(e,n.ecoReport);}catch(n){i(n);}}),r.command("create").description("Create a sustainability report").requiredOption("--title <t>","Report title").requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--framework <f>","GHG_PROTOCOL|GRI|SASB|TCFD|CDP|CUSTOM","GHG_PROTOCOL").option("--summary <s>","Summary").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,periodStart:t.periodStart,periodEnd:t.periodEnd,framework:(t.framework??"GHG_PROTOCOL").toUpperCase()};t.summary&&(e.summary=t.summary);let n=await a(ct,{input:e});c(`Report created: ${n.ecoCreateReport.title}`),s(t,n.ecoCreateReport);}catch(e){i(e);}}),r.command("add-line-item").description("Add a line item to a report").requiredOption("--report <id>","Report ID").requiredOption("--label <l>","Line item label").requiredOption("--value <n>","Value",u).requiredOption("--unit <u>","Unit").option("--category <c>","Category").option("--carbon-entry <id>","Linked carbon entry ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={reportId:t.report,label:t.label,value:t.value,unit:t.unit};t.category&&(e.category=t.category),t.carbonEntry&&(e.carbonEntryId=t.carbonEntry);let n=await a(ut,{input:e});c("Line item added"),s(t,n.ecoAddReportLineItem);}catch(e){i(e);}}),r.command("publish").description("Publish a report").argument("<id>","Report ID").option("--file <id>","Published artifact file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(pt,{id:t,fileId:e.file});c(`Report published: ${n.ecoPublishReport.title}`),s(e,n.ecoPublishReport);}catch(n){i(n);}});}function Ot(o){o.command("health").description("EcoImpactHub service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await O(dt);c(t.ecoHealth),s(r,{health:t.ecoHealth});}catch(t){i(t);}});}var Pt={id:"ecoimpacthub",version:"1.0.0",displayName:"EcoImpactHub",dependsOn:["auth","workspaces"],register(o,r){A(r);let t=o.command("ecoimpacthub").description("EcoImpactHub environmental-impact & sustainability monitoring");mt(t),lt(t),gt(t),ft(t),Et(t),Ct(t),yt(t),It(t),St(t),ht(t),Ot(t);}},Nn=Pt;module.exports=Nn;