@burdenoff/cli-sdk 2026.1102.2 → 2026.1102.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/modules/adaptercloud/index.cjs +6 -3
  2. package/dist/modules/adaptercloud/index.js +6 -3
  3. package/dist/modules/atheletebridge/index.cjs +33 -19
  4. package/dist/modules/atheletebridge/index.js +32 -18
  5. package/dist/modules/buildmyiq/index.cjs +64 -67
  6. package/dist/modules/buildmyiq/index.js +60 -63
  7. package/dist/modules/comradecircle/index.cjs +23 -15
  8. package/dist/modules/comradecircle/index.js +19 -11
  9. package/dist/modules/coolandlovely/index.cjs +27 -14
  10. package/dist/modules/coolandlovely/index.js +29 -16
  11. package/dist/modules/ecoimpacthub/index.cjs +19 -9
  12. package/dist/modules/ecoimpacthub/index.js +19 -9
  13. package/dist/modules/eventfullymanaged/index.cjs +77 -77
  14. package/dist/modules/eventfullymanaged/index.js +78 -78
  15. package/dist/modules/govcitizenhub/index.cjs +7 -4
  16. package/dist/modules/govcitizenhub/index.js +7 -4
  17. package/dist/modules/intelwatchtower/index.cjs +24 -12
  18. package/dist/modules/intelwatchtower/index.js +24 -12
  19. package/dist/modules/labsofscience/index.cjs +8 -4
  20. package/dist/modules/labsofscience/index.js +8 -4
  21. package/dist/modules/manufacturedops/index.cjs +35 -22
  22. package/dist/modules/manufacturedops/index.js +34 -21
  23. package/dist/modules/planmagnet/index.cjs +21 -21
  24. package/dist/modules/planmagnet/index.js +32 -32
  25. package/dist/modules/proserviceworld/index.cjs +17 -12
  26. package/dist/modules/proserviceworld/index.js +17 -12
  27. package/dist/modules/subscriberbot/index.cjs +43 -19
  28. package/dist/modules/subscriberbot/index.js +46 -22
  29. package/dist/modules/technospam/index.cjs +17 -8
  30. package/dist/modules/technospam/index.js +17 -8
  31. package/dist/modules/theculturepost/index.cjs +27 -22
  32. package/dist/modules/theculturepost/index.js +31 -26
  33. package/dist/modules/theglobalfuel/index.cjs +65 -60
  34. package/dist/modules/theglobalfuel/index.js +65 -60
  35. package/package.json +1 -1
@@ -14,14 +14,14 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
14
14
  pageInfo { cursor hasMore }
15
15
  }
16
16
  }
17
- `,E=`
17
+ `,h=`
18
18
  mutation CooCreateBrand($input: CooCreateBrandInput!) {
19
19
  cooCreateBrand(input: $input) {
20
20
  id name handle tagline bio status isFeatured aesthetics tags websiteUrl
21
21
  logo { id } cover { id } createdAt
22
22
  }
23
23
  }
24
- `,h=`
24
+ `,E=`
25
25
  mutation CooUpdateBrand($id: ID!, $input: CooUpdateBrandInput!) {
26
26
  cooUpdateBrand(id: $id, input: $input) {
27
27
  id name handle tagline bio status isFeatured aesthetics tags websiteUrl
@@ -48,7 +48,8 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
48
48
  `,S=`
49
49
  query CooListCollections($brandId: ID, $status: CooCollectionStatus) {
50
50
  cooListCollections(brandId: $brandId, status: $status) {
51
- id name description season status brandId tags publishAt endAt createdAt
51
+ items { id name description season status brandId tags publishAt endAt createdAt }
52
+ pageInfo { cursor hasMore }
52
53
  }
53
54
  }
54
55
  `,D=`
@@ -126,8 +127,11 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
126
127
  `,P=`
127
128
  query CooListCollaborations($brandId: ID, $creatorId: ID, $status: CooCollaborationStatus) {
128
129
  cooListCollaborations(brandId: $brandId, creatorId: $creatorId, status: $status) {
129
- id title status role brandId creatorId compensation currency
130
- startDate endDate createdAt
130
+ items {
131
+ id title status role brandId creatorId compensation currency startDate endDate
132
+ createdAt
133
+ }
134
+ pageInfo { cursor hasMore }
131
135
  }
132
136
  }
133
137
  `,W=`
@@ -146,9 +150,11 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
146
150
  `,M=`
147
151
  query CooGetLook($id: ID!) {
148
152
  cooLook(id: $id) {
149
- id title caption occasion visibility isFeatured likeCount saveCount
150
- authorId collaborationId image { id } tags publishedAt
151
- items { id styleItemId position styling }
153
+ id title caption occasion visibility isFeatured likeCount saveCount authorId
154
+ collaborationId
155
+ image { id }
156
+ tags publishedAt
157
+ items { items { id styleItemId position styling } pageInfo { cursor hasMore } }
152
158
  createdAt updatedAt workspaceId
153
159
  }
154
160
  }
@@ -175,8 +181,9 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
175
181
  `,K=`
176
182
  mutation CooCreateLook($input: CooCreateLookInput!) {
177
183
  cooCreateLook(input: $input) {
178
- id title caption occasion visibility isFeatured authorId collaborationId
179
- tags items { id styleItemId position styling } createdAt
184
+ id title caption occasion visibility isFeatured authorId collaborationId tags
185
+ items { items { id styleItemId position styling } pageInfo { cursor hasMore } }
186
+ createdAt
180
187
  }
181
188
  }
182
189
  `,G=`
@@ -204,15 +211,18 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
204
211
  `,V=`
205
212
  query CooGetLookbook($id: ID!) {
206
213
  cooLookbook(id: $id) {
207
- id name description visibility ownerId profileId cover { id } tags
208
- entries { id lookId styleItemId note position }
214
+ id name description visibility ownerId profileId
215
+ cover { id }
216
+ tags
217
+ entries { items { id lookId styleItemId note position } pageInfo { cursor hasMore } }
209
218
  createdAt updatedAt workspaceId
210
219
  }
211
220
  }
212
221
  `,j=`
213
222
  query CooListLookbooks($ownerId: ID) {
214
223
  cooListLookbooks(ownerId: $ownerId) {
215
- id name description visibility ownerId profileId tags createdAt
224
+ items { id name description visibility ownerId profileId tags createdAt }
225
+ pageInfo { cursor hasMore }
216
226
  }
217
227
  }
218
228
  `,J=`
@@ -234,8 +244,11 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
234
244
  `,Z=`
235
245
  query CooListWardrobeItems($category: CooStyleCategory, $source: CooWardrobeSource) {
236
246
  cooListWardrobeItems(category: $category, source: $source) {
237
- id name brandName category colour size source styleItemId
238
- timesWorn lastWornAt tags createdAt
247
+ items {
248
+ id name brandName category colour size source styleItemId timesWorn lastWornAt tags
249
+ createdAt
250
+ }
251
+ pageInfo { cursor hasMore }
239
252
  }
240
253
  }
241
254
  `,tt=`
@@ -279,4 +292,4 @@ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import
279
292
  query CooHealth {
280
293
  cooHealth
281
294
  }
282
- `;function b(d,i){try{return JSON.parse(i)}catch{throw new o(`--${d} must be valid JSON`)}}function f(d){let i=Number.parseInt(d,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${d}"`);return i}function I(d){let i=Number.parseFloat(d);if(Number.isNaN(i))throw new o(`Expected a number but got "${d}"`);return i}function c(d){return d.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function st(d){let i$1=d.command("brands").description("Coolandlovely brand storefronts");i$1.command("list").description("List brand storefronts").option("--status <s>","Filter by brand status").option("--featured","Only featured brands").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(O,{status:t.status?t.status.toUpperCase():void 0,featured:t.featured?!0:void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListBrands.items,{headers:["ID","Name","Handle","Status","Featured"],rows:o.cooListBrands.items.map(e=>[r(e.id,12),e.name,e.handle,e.status,e.isFeatured?"yes":"no"])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a brand by id").argument("<id>","Brand ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(k,{id:t});if(!e.cooBrand)throw new o(`Brand ${t} not found`);i(o$1,e.cooBrand);}catch(e){h$1(e);}}),i$1.command("create").description("Create a brand storefront").requiredOption("--name <name>","Brand name").requiredOption("--handle <handle>","Unique storefront handle").option("--tagline <s>","Tagline").option("--bio <s>","Bio").option("--website-url <url>","Website URL").option("--logo-file <id>","Logo File ID (wspace-files-svc)").option("--cover-file <id>","Cover File ID (wspace-files-svc)").option("--aesthetics <csv>","Comma-separated aesthetics").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name,handle:t.handle};t.tagline&&(o.tagline=t.tagline),t.bio&&(o.bio=t.bio),t.websiteUrl&&(o.websiteUrl=t.websiteUrl),t.logoFile&&(o.logoFileId=t.logoFile),t.coverFile&&(o.coverFileId=t.coverFile),t.aesthetics&&(o.aesthetics=c(t.aesthetics)),t.tags&&(o.tags=c(t.tags));let e=await b$1(E,{input:o});k$1(`Brand created: ${e.cooCreateBrand.name}`),i(t,e.cooCreateBrand);}catch(o){h$1(o);}}),i$1.command("update").description("Update a brand storefront").argument("<id>","Brand ID").option("--name <name>","Brand name").option("--tagline <s>","Tagline").option("--bio <s>","Bio").option("--website-url <url>","Website URL").option("--logo-file <id>","Logo File ID").option("--cover-file <id>","Cover File ID").option("--featured <bool>","true|false",t=>t==="true").option("--aesthetics <csv>","Comma-separated aesthetics").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.tagline!==void 0&&(e.tagline=o$1.tagline),o$1.bio!==void 0&&(e.bio=o$1.bio),o$1.websiteUrl!==void 0&&(e.websiteUrl=o$1.websiteUrl),o$1.logoFile&&(e.logoFileId=o$1.logoFile),o$1.coverFile&&(e.coverFileId=o$1.coverFile),o$1.featured!==void 0&&(e.isFeatured=o$1.featured),o$1.aesthetics&&(e.aesthetics=c(o$1.aesthetics)),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(h,{id:t,input:e});k$1("Brand updated"),i(o$1,p.cooUpdateBrand);}catch(e){h$1(e);}}),i$1.command("transition").description("Advance a brand through its publish lifecycle").argument("<id>","Brand ID").requiredOption("--status <s>","DRAFT|PENDING_REVIEW|PUBLISHED|SUSPENDED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(A,{id:t,status:o.status.toUpperCase()});k$1(`Brand status set to ${e.cooTransitionBrand.status}`),i(o,e.cooTransitionBrand);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive a brand storefront").argument("<id>","Brand ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(w,{id:t});k$1(`Brand archived: ${e.cooArchiveBrand}`),i(o,{archived:e.cooArchiveBrand});}catch(e){h$1(e);}});}function ct(d){let i$1=d.command("collections").description("Coolandlovely seasonal collections");i$1.command("list").description("List collections").option("--brand <id>","Filter by brand ID").option("--status <s>","Filter by collection status").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(S,{brandId:t.brand,status:t.status?t.status.toUpperCase():void 0});i(t,o.cooListCollections,{headers:["ID","Name","Season","Status","Brand"],rows:o.cooListCollections.map(e=>[r(e.id,12),e.name,e.season,e.status,r(e.brandId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(R,{id:t});if(!e.cooCollection)throw new o(`Collection ${t} not found`);i(o$1,e.cooCollection);}catch(e){h$1(e);}}),i$1.command("create").description("Create a collection").requiredOption("--brand <id>","Brand ID").requiredOption("--name <name>","Collection name").option("--description <s>","Description").option("--season <s>","ALL_SEASON|SPRING|SUMMER|AUTUMN|WINTER|RESORT").option("--cover-file <id>","Cover File ID").option("--publish-at <iso>","Scheduled publish date (ISO 8601)").option("--end-at <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,name:t.name};t.description&&(o.description=t.description),t.season&&(o.season=t.season.toUpperCase()),t.coverFile&&(o.coverFileId=t.coverFile),t.publishAt&&(o.publishAt=t.publishAt),t.endAt&&(o.endAt=t.endAt),t.tags&&(o.tags=c(t.tags));let e=await b$1(D,{input:o});k$1(`Collection created: ${e.cooCreateCollection.name}`),i(t,e.cooCreateCollection);}catch(o){h$1(o);}}),i$1.command("update").description("Update a collection").argument("<id>","Collection ID").option("--name <name>","Collection name").option("--description <s>","Description").option("--season <s>","ALL_SEASON|SPRING|SUMMER|AUTUMN|WINTER|RESORT").option("--cover-file <id>","Cover File ID").option("--publish-at <iso>","Scheduled publish date (ISO 8601)").option("--end-at <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.description!==void 0&&(e.description=o$1.description),o$1.season&&(e.season=o$1.season.toUpperCase()),o$1.coverFile&&(e.coverFileId=o$1.coverFile),o$1.publishAt&&(e.publishAt=o$1.publishAt),o$1.endAt&&(e.endAt=o$1.endAt),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(v,{id:t,input:e});k$1("Collection updated"),i(o$1,p.cooUpdateCollection);}catch(e){h$1(e);}}),i$1.command("publish").description("Publish a collection (go live)").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(T,{id:t});k$1(`Collection published: ${e.cooPublishCollection.status}`),i(o,e.cooPublishCollection);}catch(e){h$1(e);}});}function dt(d){let i$1=d.command("style-items").description("Coolandlovely style items (catalog products)");i$1.command("list").description("List style items").option("--brand <id>","Filter by brand ID").option("--collection <id>","Filter by collection ID").option("--category <c>","Filter by category").option("--status <s>","Filter by status").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(B,{brandId:t.brand,collectionId:t.collection,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListStyleItems.items,{headers:["ID","Name","Category","Status","Price"],rows:o.cooListStyleItems.items.map(e=>[r(e.id,12),e.name,e.category,e.status,`${e.price} ${e.currency}`])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a style item by id").argument("<id>","Style item ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1($,{id:t});if(!e.cooStyleItem)throw new o(`Style item ${t} not found`);i(o$1,e.cooStyleItem);}catch(e){h$1(e);}}),i$1.command("create").description("Create a style item").requiredOption("--brand <id>","Brand ID").requiredOption("--name <name>","Item name").option("--category <c>","Category").option("--collection <id>","Collection ID").option("--description <s>","Description").option("--sku <sku>","SKU").option("--price <n>","Price",I).option("--currency <c>","Currency code").option("--image-file <id>","Image File ID").option("--colours <csv>","Comma-separated colours").option("--sizes <csv>","Comma-separated sizes").option("--materials <csv>","Comma-separated materials").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,name:t.name};t.category&&(o.category=t.category.toUpperCase()),t.collection&&(o.collectionId=t.collection),t.description&&(o.description=t.description),t.sku&&(o.sku=t.sku),t.price!==void 0&&(o.price=t.price),t.currency&&(o.currency=t.currency),t.imageFile&&(o.imageFileId=t.imageFile),t.colours&&(o.colours=c(t.colours)),t.sizes&&(o.sizes=c(t.sizes)),t.materials&&(o.materials=c(t.materials)),t.tags&&(o.tags=c(t.tags));let e=await b$1(U,{input:o});k$1(`Style item created: ${e.cooCreateStyleItem.name}`),i(t,e.cooCreateStyleItem);}catch(o){h$1(o);}}),i$1.command("update").description("Update a style item").argument("<id>","Style item ID").option("--name <name>","Item name").option("--category <c>","Category").option("--collection <id>","Collection ID").option("--description <s>","Description").option("--sku <sku>","SKU").option("--price <n>","Price",I).option("--currency <c>","Currency code").option("--image-file <id>","Image File ID").option("--colours <csv>","Comma-separated colours").option("--sizes <csv>","Comma-separated sizes").option("--materials <csv>","Comma-separated materials").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.category&&(e.category=o$1.category.toUpperCase()),o$1.collection&&(e.collectionId=o$1.collection),o$1.description!==void 0&&(e.description=o$1.description),o$1.sku!==void 0&&(e.sku=o$1.sku),o$1.price!==void 0&&(e.price=o$1.price),o$1.currency&&(e.currency=o$1.currency),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.colours&&(e.colours=c(o$1.colours)),o$1.sizes&&(e.sizes=c(o$1.sizes)),o$1.materials&&(e.materials=c(o$1.materials)),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(_,{id:t,input:e});k$1("Style item updated"),i(o$1,p.cooUpdateStyleItem);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive (retire) a style item").argument("<id>","Style item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(N,{id:t});k$1(`Style item archived: ${e.cooArchiveStyleItem}`),i(o,{archived:e.cooArchiveStyleItem});}catch(e){h$1(e);}});}function lt(d){let i$1=d.command("collaborations").description("Coolandlovely brand \u2194 creator collaborations");i$1.command("list").description("List collaborations").option("--brand <id>","Filter by brand ID").option("--creator <id>","Filter by creator ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(P,{brandId:t.brand,creatorId:t.creator,status:t.status?t.status.toUpperCase():void 0});i(t,o.cooListCollaborations,{headers:["ID","Title","Status","Role","Brand","Creator"],rows:o.cooListCollaborations.map(e=>[r(e.id,12),e.title,e.status,e.role,r(e.brandId,12),r(e.creatorId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a collaboration by id").argument("<id>","Collaboration ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(F,{id:t});if(!e.cooCollaboration)throw new o(`Collaboration ${t} not found`);i(o$1,e.cooCollaboration);}catch(e){h$1(e);}}),i$1.command("create").description("Create a collaboration").requiredOption("--brand <id>","Brand ID").requiredOption("--creator <id>","Creator user ID").requiredOption("--title <title>","Collaboration title").option("--brief <s>","Brief").option("--collection <id>","Collection ID").option("--role <r>","CREATOR|STYLIST|PHOTOGRAPHER|BRAND").option("--compensation <n>","Compensation",I).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO 8601)").option("--end-date <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,creatorId:t.creator,title:t.title};t.brief&&(o.brief=t.brief),t.collection&&(o.collectionId=t.collection),t.role&&(o.role=t.role.toUpperCase()),t.compensation!==void 0&&(o.compensation=t.compensation),t.currency&&(o.currency=t.currency),t.startDate&&(o.startDate=t.startDate),t.endDate&&(o.endDate=t.endDate),t.tags&&(o.tags=c(t.tags));let e=await b$1(W,{input:o});k$1(`Collaboration created: ${e.cooCreateCollaboration.title}`),i(t,e.cooCreateCollaboration);}catch(o){h$1(o);}}),i$1.command("transition").description("Advance a collaboration through its lifecycle").argument("<id>","Collaboration ID").requiredOption("--status <s>","PROPOSED|ACCEPTED|DECLINED|IN_PROGRESS|PUBLISHED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(x,{id:t,status:o.status.toUpperCase()});k$1(`Collaboration status set to ${e.cooTransitionCollaboration.status}`),i(o,e.cooTransitionCollaboration);}catch(e){h$1(e);}});}function mt(d){let i$1=d.command("looks").description("Coolandlovely styled looks");i$1.command("list").description("List looks").option("--author <id>","Filter by author ID").option("--occasion <o>","Filter by occasion").option("--featured","Only featured looks").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(z,{authorId:t.author,occasion:t.occasion?t.occasion.toUpperCase():void 0,featured:t.featured?!0:void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListLooks.items,{headers:["ID","Title","Occasion","Visibility","Likes","Featured"],rows:o.cooListLooks.items.map(e=>[r(e.id,12),e.title,e.occasion,e.visibility,String(e.likeCount??0),e.isFeatured?"yes":"no"])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a look by id").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(M,{id:t});if(!e.cooLook)throw new o(`Look ${t} not found`);i(o$1,e.cooLook);}catch(e){h$1(e);}}),i$1.command("create").description("Create a look").requiredOption("--title <title>","Look title").option("--caption <s>","Caption").option("--collaboration <id>","Collaboration ID").option("--image-file <id>","Image File ID").option("--occasion <o>","EVERYDAY|WORK|EVENING|PARTY|WEDDING_GUEST|VACATION|ACTIVE|OTHER").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--items <json>","Look items JSON array: [{ styleItemId, position?, styling? }]").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o$1={title:t.title};if(t.caption&&(o$1.caption=t.caption),t.collaboration&&(o$1.collaborationId=t.collaboration),t.imageFile&&(o$1.imageFileId=t.imageFile),t.occasion&&(o$1.occasion=t.occasion.toUpperCase()),t.visibility&&(o$1.visibility=t.visibility.toUpperCase()),t.items){let p=b("items",t.items);if(!Array.isArray(p))throw new o("--items must be a JSON array");o$1.items=p;}t.tags&&(o$1.tags=c(t.tags));let e=await b$1(K,{input:o$1});k$1(`Look created: ${e.cooCreateLook.title}`),i(t,e.cooCreateLook);}catch(o){h$1(o);}}),i$1.command("update").description("Update a look").argument("<id>","Look ID").option("--title <title>","Look title").option("--caption <s>","Caption").option("--image-file <id>","Image File ID").option("--occasion <o>","Occasion").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.title&&(e.title=o$1.title),o$1.caption!==void 0&&(e.caption=o$1.caption),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.occasion&&(e.occasion=o$1.occasion.toUpperCase()),o$1.visibility&&(e.visibility=o$1.visibility.toUpperCase()),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(G,{id:t,input:e});k$1("Look updated"),i(o$1,p.cooUpdateLook);}catch(e){h$1(e);}}),i$1.command("publish").description("Publish a look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(q,{id:t});k$1(`Look published: ${e.cooPublishLook.title}`),i(o,e.cooPublishLook);}catch(e){h$1(e);}}),i$1.command("like").description("Like a published look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(H,{id:t});k$1(`Look liked (likes: ${e.cooLikeLook.likeCount??0})`),i(o,e.cooLikeLook);}catch(e){h$1(e);}}),i$1.command("delete").description("Delete a look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(Y,{id:t});k$1(`Look deleted: ${e.cooDeleteLook}`),i(o,{deleted:e.cooDeleteLook});}catch(e){h$1(e);}});}function pt(d){let i$1=d.command("lookbooks").description("Coolandlovely curated lookbooks");i$1.command("list").description("List lookbooks").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(j,{ownerId:t.owner});i(t,o.cooListLookbooks,{headers:["ID","Name","Visibility","Owner"],rows:o.cooListLookbooks.map(e=>[r(e.id,12),e.name,e.visibility,r(e.ownerId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a lookbook by id").argument("<id>","Lookbook ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(V,{id:t});if(!e.cooLookbook)throw new o(`Lookbook ${t} not found`);i(o$1,e.cooLookbook);}catch(e){h$1(e);}}),i$1.command("create").description("Create a lookbook").requiredOption("--name <name>","Lookbook name").option("--description <s>","Description").option("--cover-file <id>","Cover File ID").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name};t.description&&(o.description=t.description),t.coverFile&&(o.coverFileId=t.coverFile),t.visibility&&(o.visibility=t.visibility.toUpperCase()),t.tags&&(o.tags=c(t.tags));let e=await b$1(J,{input:o});k$1(`Lookbook created: ${e.cooCreateLookbook.name}`),i(t,e.cooCreateLookbook);}catch(o){h$1(o);}}),i$1.command("add-entry").description("Add an entry (look or style item) to a lookbook").requiredOption("--lookbook <id>","Lookbook ID").option("--look <id>","Look ID to add").option("--style-item <id>","Style item ID to add").option("--note <s>","Note").option("--position <n>","Position",f).option("-f, --format <format>","Output format").action(async t=>{try{let o={lookbookId:t.lookbook};t.look&&(o.lookId=t.look),t.styleItem&&(o.styleItemId=t.styleItem),t.note&&(o.note=t.note),t.position!==void 0&&(o.position=t.position);let e=await b$1(Q,{input:o});k$1(`Lookbook entry added: ${e.cooAddLookbookEntry.id}`),i(t,e.cooAddLookbookEntry);}catch(o){h$1(o);}}),i$1.command("remove-entry").description("Remove an entry from a lookbook").argument("<id>","Lookbook entry ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(X,{id:t});k$1(`Lookbook entry removed: ${e.cooRemoveLookbookEntry}`),i(o,{removed:e.cooRemoveLookbookEntry});}catch(e){h$1(e);}});}function ut(d){let i$1=d.command("wardrobe").description("Coolandlovely digital wardrobe (the shopper's own pieces)");i$1.command("list").description("List wardrobe items").option("--category <c>","Filter by category").option("--source <s>","Filter by source").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(Z,{category:t.category?t.category.toUpperCase():void 0,source:t.source?t.source.toUpperCase():void 0});i(t,o.cooListWardrobeItems,{headers:["ID","Name","Category","Source","Times Worn"],rows:o.cooListWardrobeItems.map(e=>[r(e.id,12),e.name,e.category,e.source,String(e.timesWorn??0)])});}catch(o){h$1(o);}}),i$1.command("create").description("Add an item to the wardrobe").requiredOption("--name <name>","Item name").option("--brand-name <s>","Brand name (free text)").option("--category <c>","Category").option("--colour <s>","Colour").option("--size <s>","Size").option("--source <s>","OWNED|PURCHASED_ON_PLATFORM|GIFTED|WISHLIST").option("--style-item <id>","Linked style item ID").option("--image-file <id>","Image File ID").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name};t.brandName&&(o.brandName=t.brandName),t.category&&(o.category=t.category.toUpperCase()),t.colour&&(o.colour=t.colour),t.size&&(o.size=t.size),t.source&&(o.source=t.source.toUpperCase()),t.styleItem&&(o.styleItemId=t.styleItem),t.imageFile&&(o.imageFileId=t.imageFile),t.notes&&(o.notes=t.notes),t.tags&&(o.tags=c(t.tags));let e=await b$1(tt,{input:o});k$1(`Wardrobe item added: ${e.cooCreateWardrobeItem.name}`),i(t,e.cooCreateWardrobeItem);}catch(o){h$1(o);}}),i$1.command("update").description("Update a wardrobe item").argument("<id>","Wardrobe item ID").option("--name <name>","Item name").option("--brand-name <s>","Brand name (free text)").option("--category <c>","Category").option("--colour <s>","Colour").option("--size <s>","Size").option("--source <s>","OWNED|PURCHASED_ON_PLATFORM|GIFTED|WISHLIST").option("--image-file <id>","Image File ID").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.brandName!==void 0&&(e.brandName=o$1.brandName),o$1.category&&(e.category=o$1.category.toUpperCase()),o$1.colour!==void 0&&(e.colour=o$1.colour),o$1.size!==void 0&&(e.size=o$1.size),o$1.source&&(e.source=o$1.source.toUpperCase()),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.notes!==void 0&&(e.notes=o$1.notes),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(ot,{id:t,input:e});k$1("Wardrobe item updated"),i(o$1,p.cooUpdateWardrobeItem);}catch(e){h$1(e);}}),i$1.command("wear").description("Log that the shopper wore a wardrobe piece").argument("<id>","Wardrobe item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(et,{id:t});k$1(`Wear logged (times worn: ${e.cooLogWardrobeWear.timesWorn??0})`),i(o,e.cooLogWardrobeWear);}catch(e){h$1(e);}}),i$1.command("remove").description("Remove a wardrobe item").argument("<id>","Wardrobe item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(it,{id:t});k$1(`Wardrobe item removed: ${e.cooRemoveWardrobeItem}`),i(o,{removed:e.cooRemoveWardrobeItem});}catch(e){h$1(e);}});}function gt(d){let i$1=d.command("profile").description("Coolandlovely shopper style profile (self-scoped)");i$1.command("get").description("Show the calling shopper's own style profile").option("-f, --format <format>","Output format").action(async t=>{try{let o$1=await b$1(rt);if(!o$1.cooMyStyleProfile)throw new o("No style profile yet. Run `profile upsert` to create one.");i(t,o$1.cooMyStyleProfile);}catch(o){h$1(o);}}),i$1.command("upsert").description("Create or update the calling shopper style profile").option("--display-name <s>","Display name").option("--bio <s>","Bio").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--favourite-brands <csv>","Comma-separated favourite brands").option("--palette <csv>","Comma-separated colour palette").option("--style-preferences <csv>","Comma-separated style preferences").option("--sizes <json>",'Sizes JSON (e.g. {"tops":"M","shoes":"8"})').option("-f, --format <format>","Output format").action(async t=>{try{let o={};t.displayName&&(o.displayName=t.displayName),t.bio!==void 0&&(o.bio=t.bio),t.visibility&&(o.visibility=t.visibility.toUpperCase()),t.favouriteBrands&&(o.favouriteBrands=c(t.favouriteBrands)),t.palette&&(o.palette=c(t.palette)),t.stylePreferences&&(o.stylePreferences=c(t.stylePreferences)),t.sizes&&(o.sizes=b("sizes",t.sizes));let e=await b$1(nt,{input:o});k$1("Style profile saved"),i(t,e.cooUpsertStyleProfile);}catch(o){h$1(o);}});}function ft(d$1){d$1.command("health").description("Coolandlovely service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(at);k$1(t.cooHealth),i(i$1,{health:t.cooHealth});}catch(t){h$1(t);}});}var yt={id:"coolandlovely",version:"1.0.0",displayName:"Coolandlovely",dependsOn:["auth","workspaces"],register(d,i){a(i);let t=d.command("coolandlovely").description("Coolandlovely fashion & lifestyle platform");st(t),ct(t),dt(t),lt(t),mt(t),pt(t),ut(t),gt(t),ft(t);}},ao=yt;export{ao as default};
295
+ `;function b(d,i){try{return JSON.parse(i)}catch{throw new o(`--${d} must be valid JSON`)}}function f(d){let i=Number.parseInt(d,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${d}"`);return i}function y(d){let i=Number.parseFloat(d);if(Number.isNaN(i))throw new o(`Expected a number but got "${d}"`);return i}function c(d){return d.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function st(d){let i$1=d.command("brands").description("Coolandlovely brand storefronts");i$1.command("list").description("List brand storefronts").option("--status <s>","Filter by brand status").option("--featured","Only featured brands").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(O,{status:t.status?t.status.toUpperCase():void 0,featured:t.featured?!0:void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListBrands.items,{headers:["ID","Name","Handle","Status","Featured"],rows:o.cooListBrands.items.map(e=>[r(e.id,12),e.name,e.handle,e.status,e.isFeatured?"yes":"no"])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a brand by id").argument("<id>","Brand ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(k,{id:t});if(!e.cooBrand)throw new o(`Brand ${t} not found`);i(o$1,e.cooBrand);}catch(e){h$1(e);}}),i$1.command("create").description("Create a brand storefront").requiredOption("--name <name>","Brand name").requiredOption("--handle <handle>","Unique storefront handle").option("--tagline <s>","Tagline").option("--bio <s>","Bio").option("--website-url <url>","Website URL").option("--logo-file <id>","Logo File ID (wspace-files-svc)").option("--cover-file <id>","Cover File ID (wspace-files-svc)").option("--aesthetics <csv>","Comma-separated aesthetics").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name,handle:t.handle};t.tagline&&(o.tagline=t.tagline),t.bio&&(o.bio=t.bio),t.websiteUrl&&(o.websiteUrl=t.websiteUrl),t.logoFile&&(o.logoFileId=t.logoFile),t.coverFile&&(o.coverFileId=t.coverFile),t.aesthetics&&(o.aesthetics=c(t.aesthetics)),t.tags&&(o.tags=c(t.tags));let e=await b$1(h,{input:o});k$1(`Brand created: ${e.cooCreateBrand.name}`),i(t,e.cooCreateBrand);}catch(o){h$1(o);}}),i$1.command("update").description("Update a brand storefront").argument("<id>","Brand ID").option("--name <name>","Brand name").option("--tagline <s>","Tagline").option("--bio <s>","Bio").option("--website-url <url>","Website URL").option("--logo-file <id>","Logo File ID").option("--cover-file <id>","Cover File ID").option("--featured <bool>","true|false",t=>t==="true").option("--aesthetics <csv>","Comma-separated aesthetics").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.tagline!==void 0&&(e.tagline=o$1.tagline),o$1.bio!==void 0&&(e.bio=o$1.bio),o$1.websiteUrl!==void 0&&(e.websiteUrl=o$1.websiteUrl),o$1.logoFile&&(e.logoFileId=o$1.logoFile),o$1.coverFile&&(e.coverFileId=o$1.coverFile),o$1.featured!==void 0&&(e.isFeatured=o$1.featured),o$1.aesthetics&&(e.aesthetics=c(o$1.aesthetics)),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(E,{id:t,input:e});k$1("Brand updated"),i(o$1,p.cooUpdateBrand);}catch(e){h$1(e);}}),i$1.command("transition").description("Advance a brand through its publish lifecycle").argument("<id>","Brand ID").requiredOption("--status <s>","DRAFT|PENDING_REVIEW|PUBLISHED|SUSPENDED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(A,{id:t,status:o.status.toUpperCase()});k$1(`Brand status set to ${e.cooTransitionBrand.status}`),i(o,e.cooTransitionBrand);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive a brand storefront").argument("<id>","Brand ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(w,{id:t});k$1(`Brand archived: ${e.cooArchiveBrand}`),i(o,{archived:e.cooArchiveBrand});}catch(e){h$1(e);}});}function ct(d){let i$1=d.command("collections").description("Coolandlovely seasonal collections");i$1.command("list").description("List collections").option("--brand <id>","Filter by brand ID").option("--status <s>","Filter by collection status").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(S,{brandId:t.brand,status:t.status?t.status.toUpperCase():void 0});i(t,o.cooListCollections.items,{headers:["ID","Name","Season","Status","Brand"],rows:o.cooListCollections.items.map(e=>[r(e.id,12),e.name,e.season,e.status,r(e.brandId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(R,{id:t});if(!e.cooCollection)throw new o(`Collection ${t} not found`);i(o$1,e.cooCollection);}catch(e){h$1(e);}}),i$1.command("create").description("Create a collection").requiredOption("--brand <id>","Brand ID").requiredOption("--name <name>","Collection name").option("--description <s>","Description").option("--season <s>","ALL_SEASON|SPRING|SUMMER|AUTUMN|WINTER|RESORT").option("--cover-file <id>","Cover File ID").option("--publish-at <iso>","Scheduled publish date (ISO 8601)").option("--end-at <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,name:t.name};t.description&&(o.description=t.description),t.season&&(o.season=t.season.toUpperCase()),t.coverFile&&(o.coverFileId=t.coverFile),t.publishAt&&(o.publishAt=t.publishAt),t.endAt&&(o.endAt=t.endAt),t.tags&&(o.tags=c(t.tags));let e=await b$1(D,{input:o});k$1(`Collection created: ${e.cooCreateCollection.name}`),i(t,e.cooCreateCollection);}catch(o){h$1(o);}}),i$1.command("update").description("Update a collection").argument("<id>","Collection ID").option("--name <name>","Collection name").option("--description <s>","Description").option("--season <s>","ALL_SEASON|SPRING|SUMMER|AUTUMN|WINTER|RESORT").option("--cover-file <id>","Cover File ID").option("--publish-at <iso>","Scheduled publish date (ISO 8601)").option("--end-at <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.description!==void 0&&(e.description=o$1.description),o$1.season&&(e.season=o$1.season.toUpperCase()),o$1.coverFile&&(e.coverFileId=o$1.coverFile),o$1.publishAt&&(e.publishAt=o$1.publishAt),o$1.endAt&&(e.endAt=o$1.endAt),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(v,{id:t,input:e});k$1("Collection updated"),i(o$1,p.cooUpdateCollection);}catch(e){h$1(e);}}),i$1.command("publish").description("Publish a collection (go live)").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(T,{id:t});k$1(`Collection published: ${e.cooPublishCollection.status}`),i(o,e.cooPublishCollection);}catch(e){h$1(e);}});}function dt(d){let i$1=d.command("style-items").description("Coolandlovely style items (catalog products)");i$1.command("list").description("List style items").option("--brand <id>","Filter by brand ID").option("--collection <id>","Filter by collection ID").option("--category <c>","Filter by category").option("--status <s>","Filter by status").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(B,{brandId:t.brand,collectionId:t.collection,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListStyleItems.items,{headers:["ID","Name","Category","Status","Price"],rows:o.cooListStyleItems.items.map(e=>[r(e.id,12),e.name,e.category,e.status,`${e.price} ${e.currency}`])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a style item by id").argument("<id>","Style item ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1($,{id:t});if(!e.cooStyleItem)throw new o(`Style item ${t} not found`);i(o$1,e.cooStyleItem);}catch(e){h$1(e);}}),i$1.command("create").description("Create a style item").requiredOption("--brand <id>","Brand ID").requiredOption("--name <name>","Item name").option("--category <c>","Category").option("--collection <id>","Collection ID").option("--description <s>","Description").option("--sku <sku>","SKU").option("--price <n>","Price",y).option("--currency <c>","Currency code").option("--image-file <id>","Image File ID").option("--colours <csv>","Comma-separated colours").option("--sizes <csv>","Comma-separated sizes").option("--materials <csv>","Comma-separated materials").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,name:t.name};t.category&&(o.category=t.category.toUpperCase()),t.collection&&(o.collectionId=t.collection),t.description&&(o.description=t.description),t.sku&&(o.sku=t.sku),t.price!==void 0&&(o.price=t.price),t.currency&&(o.currency=t.currency),t.imageFile&&(o.imageFileId=t.imageFile),t.colours&&(o.colours=c(t.colours)),t.sizes&&(o.sizes=c(t.sizes)),t.materials&&(o.materials=c(t.materials)),t.tags&&(o.tags=c(t.tags));let e=await b$1(U,{input:o});k$1(`Style item created: ${e.cooCreateStyleItem.name}`),i(t,e.cooCreateStyleItem);}catch(o){h$1(o);}}),i$1.command("update").description("Update a style item").argument("<id>","Style item ID").option("--name <name>","Item name").option("--category <c>","Category").option("--collection <id>","Collection ID").option("--description <s>","Description").option("--sku <sku>","SKU").option("--price <n>","Price",y).option("--currency <c>","Currency code").option("--image-file <id>","Image File ID").option("--colours <csv>","Comma-separated colours").option("--sizes <csv>","Comma-separated sizes").option("--materials <csv>","Comma-separated materials").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.category&&(e.category=o$1.category.toUpperCase()),o$1.collection&&(e.collectionId=o$1.collection),o$1.description!==void 0&&(e.description=o$1.description),o$1.sku!==void 0&&(e.sku=o$1.sku),o$1.price!==void 0&&(e.price=o$1.price),o$1.currency&&(e.currency=o$1.currency),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.colours&&(e.colours=c(o$1.colours)),o$1.sizes&&(e.sizes=c(o$1.sizes)),o$1.materials&&(e.materials=c(o$1.materials)),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(_,{id:t,input:e});k$1("Style item updated"),i(o$1,p.cooUpdateStyleItem);}catch(e){h$1(e);}}),i$1.command("archive").description("Archive (retire) a style item").argument("<id>","Style item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(N,{id:t});k$1(`Style item archived: ${e.cooArchiveStyleItem}`),i(o,{archived:e.cooArchiveStyleItem});}catch(e){h$1(e);}});}function mt(d){let i$1=d.command("collaborations").description("Coolandlovely brand \u2194 creator collaborations");i$1.command("list").description("List collaborations").option("--brand <id>","Filter by brand ID").option("--creator <id>","Filter by creator ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(P,{brandId:t.brand,creatorId:t.creator,status:t.status?t.status.toUpperCase():void 0});i(t,o.cooListCollaborations.items,{headers:["ID","Title","Status","Role","Brand","Creator"],rows:o.cooListCollaborations.items.map(e=>[r(e.id,12),e.title,e.status,e.role,r(e.brandId,12),r(e.creatorId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a collaboration by id").argument("<id>","Collaboration ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(F,{id:t});if(!e.cooCollaboration)throw new o(`Collaboration ${t} not found`);i(o$1,e.cooCollaboration);}catch(e){h$1(e);}}),i$1.command("create").description("Create a collaboration").requiredOption("--brand <id>","Brand ID").requiredOption("--creator <id>","Creator user ID").requiredOption("--title <title>","Collaboration title").option("--brief <s>","Brief").option("--collection <id>","Collection ID").option("--role <r>","CREATOR|STYLIST|PHOTOGRAPHER|BRAND").option("--compensation <n>","Compensation",y).option("--currency <c>","Currency code").option("--start-date <iso>","Start date (ISO 8601)").option("--end-date <iso>","End date (ISO 8601)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={brandId:t.brand,creatorId:t.creator,title:t.title};t.brief&&(o.brief=t.brief),t.collection&&(o.collectionId=t.collection),t.role&&(o.role=t.role.toUpperCase()),t.compensation!==void 0&&(o.compensation=t.compensation),t.currency&&(o.currency=t.currency),t.startDate&&(o.startDate=t.startDate),t.endDate&&(o.endDate=t.endDate),t.tags&&(o.tags=c(t.tags));let e=await b$1(W,{input:o});k$1(`Collaboration created: ${e.cooCreateCollaboration.title}`),i(t,e.cooCreateCollaboration);}catch(o){h$1(o);}}),i$1.command("transition").description("Advance a collaboration through its lifecycle").argument("<id>","Collaboration ID").requiredOption("--status <s>","PROPOSED|ACCEPTED|DECLINED|IN_PROGRESS|PUBLISHED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(x,{id:t,status:o.status.toUpperCase()});k$1(`Collaboration status set to ${e.cooTransitionCollaboration.status}`),i(o,e.cooTransitionCollaboration);}catch(e){h$1(e);}});}function lt(d){let i$1=d.command("looks").description("Coolandlovely styled looks");i$1.command("list").description("List looks").option("--author <id>","Filter by author ID").option("--occasion <o>","Filter by occasion").option("--featured","Only featured looks").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(z,{authorId:t.author,occasion:t.occasion?t.occasion.toUpperCase():void 0,featured:t.featured?!0:void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,o.cooListLooks.items,{headers:["ID","Title","Occasion","Visibility","Likes","Featured"],rows:o.cooListLooks.items.map(e=>[r(e.id,12),e.title,e.occasion,e.visibility,String(e.likeCount??0),e.isFeatured?"yes":"no"])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a look by id").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(M,{id:t});if(!e.cooLook)throw new o(`Look ${t} not found`);i(o$1,e.cooLook);}catch(e){h$1(e);}}),i$1.command("create").description("Create a look").requiredOption("--title <title>","Look title").option("--caption <s>","Caption").option("--collaboration <id>","Collaboration ID").option("--image-file <id>","Image File ID").option("--occasion <o>","EVERYDAY|WORK|EVENING|PARTY|WEDDING_GUEST|VACATION|ACTIVE|OTHER").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--items <json>","Look items JSON array: [{ styleItemId, position?, styling? }]").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o$1={title:t.title};if(t.caption&&(o$1.caption=t.caption),t.collaboration&&(o$1.collaborationId=t.collaboration),t.imageFile&&(o$1.imageFileId=t.imageFile),t.occasion&&(o$1.occasion=t.occasion.toUpperCase()),t.visibility&&(o$1.visibility=t.visibility.toUpperCase()),t.items){let p=b("items",t.items);if(!Array.isArray(p))throw new o("--items must be a JSON array");o$1.items=p;}t.tags&&(o$1.tags=c(t.tags));let e=await b$1(K,{input:o$1});k$1(`Look created: ${e.cooCreateLook.title}`),i(t,e.cooCreateLook);}catch(o){h$1(o);}}),i$1.command("update").description("Update a look").argument("<id>","Look ID").option("--title <title>","Look title").option("--caption <s>","Caption").option("--image-file <id>","Image File ID").option("--occasion <o>","Occasion").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.title&&(e.title=o$1.title),o$1.caption!==void 0&&(e.caption=o$1.caption),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.occasion&&(e.occasion=o$1.occasion.toUpperCase()),o$1.visibility&&(e.visibility=o$1.visibility.toUpperCase()),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(G,{id:t,input:e});k$1("Look updated"),i(o$1,p.cooUpdateLook);}catch(e){h$1(e);}}),i$1.command("publish").description("Publish a look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(q,{id:t});k$1(`Look published: ${e.cooPublishLook.title}`),i(o,e.cooPublishLook);}catch(e){h$1(e);}}),i$1.command("like").description("Like a published look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(H,{id:t});k$1(`Look liked (likes: ${e.cooLikeLook.likeCount??0})`),i(o,e.cooLikeLook);}catch(e){h$1(e);}}),i$1.command("delete").description("Delete a look").argument("<id>","Look ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(Y,{id:t});k$1(`Look deleted: ${e.cooDeleteLook}`),i(o,{deleted:e.cooDeleteLook});}catch(e){h$1(e);}});}function pt(d){let i$1=d.command("lookbooks").description("Coolandlovely curated lookbooks");i$1.command("list").description("List lookbooks").option("--owner <id>","Filter by owner ID").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(j,{ownerId:t.owner});i(t,o.cooListLookbooks.items,{headers:["ID","Name","Visibility","Owner"],rows:o.cooListLookbooks.items.map(e=>[r(e.id,12),e.name,e.visibility,r(e.ownerId,12)])});}catch(o){h$1(o);}}),i$1.command("get").description("Get a lookbook by id").argument("<id>","Lookbook ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e=await b$1(V,{id:t});if(!e.cooLookbook)throw new o(`Lookbook ${t} not found`);i(o$1,e.cooLookbook);}catch(e){h$1(e);}}),i$1.command("create").description("Create a lookbook").requiredOption("--name <name>","Lookbook name").option("--description <s>","Description").option("--cover-file <id>","Cover File ID").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name};t.description&&(o.description=t.description),t.coverFile&&(o.coverFileId=t.coverFile),t.visibility&&(o.visibility=t.visibility.toUpperCase()),t.tags&&(o.tags=c(t.tags));let e=await b$1(J,{input:o});k$1(`Lookbook created: ${e.cooCreateLookbook.name}`),i(t,e.cooCreateLookbook);}catch(o){h$1(o);}}),i$1.command("add-entry").description("Add an entry (look or style item) to a lookbook").requiredOption("--lookbook <id>","Lookbook ID").option("--look <id>","Look ID to add").option("--style-item <id>","Style item ID to add").option("--note <s>","Note").option("--position <n>","Position",f).option("-f, --format <format>","Output format").action(async t=>{try{let o={lookbookId:t.lookbook};t.look&&(o.lookId=t.look),t.styleItem&&(o.styleItemId=t.styleItem),t.note&&(o.note=t.note),t.position!==void 0&&(o.position=t.position);let e=await b$1(Q,{input:o});k$1(`Lookbook entry added: ${e.cooAddLookbookEntry.id}`),i(t,e.cooAddLookbookEntry);}catch(o){h$1(o);}}),i$1.command("remove-entry").description("Remove an entry from a lookbook").argument("<id>","Lookbook entry ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(X,{id:t});k$1(`Lookbook entry removed: ${e.cooRemoveLookbookEntry}`),i(o,{removed:e.cooRemoveLookbookEntry});}catch(e){h$1(e);}});}function ut(d){let i$1=d.command("wardrobe").description("Coolandlovely digital wardrobe (the shopper's own pieces)");i$1.command("list").description("List wardrobe items").option("--category <c>","Filter by category").option("--source <s>","Filter by source").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(Z,{category:t.category?t.category.toUpperCase():void 0,source:t.source?t.source.toUpperCase():void 0});i(t,o.cooListWardrobeItems.items,{headers:["ID","Name","Category","Source","Times Worn"],rows:o.cooListWardrobeItems.items.map(e=>[r(e.id,12),e.name,e.category,e.source,String(e.timesWorn??0)])});}catch(o){h$1(o);}}),i$1.command("create").description("Add an item to the wardrobe").requiredOption("--name <name>","Item name").option("--brand-name <s>","Brand name (free text)").option("--category <c>","Category").option("--colour <s>","Colour").option("--size <s>","Size").option("--source <s>","OWNED|PURCHASED_ON_PLATFORM|GIFTED|WISHLIST").option("--style-item <id>","Linked style item ID").option("--image-file <id>","Image File ID").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let o={name:t.name};t.brandName&&(o.brandName=t.brandName),t.category&&(o.category=t.category.toUpperCase()),t.colour&&(o.colour=t.colour),t.size&&(o.size=t.size),t.source&&(o.source=t.source.toUpperCase()),t.styleItem&&(o.styleItemId=t.styleItem),t.imageFile&&(o.imageFileId=t.imageFile),t.notes&&(o.notes=t.notes),t.tags&&(o.tags=c(t.tags));let e=await b$1(tt,{input:o});k$1(`Wardrobe item added: ${e.cooCreateWardrobeItem.name}`),i(t,e.cooCreateWardrobeItem);}catch(o){h$1(o);}}),i$1.command("update").description("Update a wardrobe item").argument("<id>","Wardrobe item ID").option("--name <name>","Item name").option("--brand-name <s>","Brand name (free text)").option("--category <c>","Category").option("--colour <s>","Colour").option("--size <s>","Size").option("--source <s>","OWNED|PURCHASED_ON_PLATFORM|GIFTED|WISHLIST").option("--image-file <id>","Image File ID").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let e={};if(o$1.name&&(e.name=o$1.name),o$1.brandName!==void 0&&(e.brandName=o$1.brandName),o$1.category&&(e.category=o$1.category.toUpperCase()),o$1.colour!==void 0&&(e.colour=o$1.colour),o$1.size!==void 0&&(e.size=o$1.size),o$1.source&&(e.source=o$1.source.toUpperCase()),o$1.imageFile&&(e.imageFileId=o$1.imageFile),o$1.notes!==void 0&&(e.notes=o$1.notes),o$1.tags&&(e.tags=c(o$1.tags)),!Object.keys(e).length)throw new o("No updates specified");let p=await b$1(ot,{id:t,input:e});k$1("Wardrobe item updated"),i(o$1,p.cooUpdateWardrobeItem);}catch(e){h$1(e);}}),i$1.command("wear").description("Log that the shopper wore a wardrobe piece").argument("<id>","Wardrobe item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(et,{id:t});k$1(`Wear logged (times worn: ${e.cooLogWardrobeWear.timesWorn??0})`),i(o,e.cooLogWardrobeWear);}catch(e){h$1(e);}}),i$1.command("remove").description("Remove a wardrobe item").argument("<id>","Wardrobe item ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let e=await b$1(it,{id:t});k$1(`Wardrobe item removed: ${e.cooRemoveWardrobeItem}`),i(o,{removed:e.cooRemoveWardrobeItem});}catch(e){h$1(e);}});}function gt(d){let i$1=d.command("profile").description("Coolandlovely shopper style profile (self-scoped)");i$1.command("get").description("Show the calling shopper's own style profile").option("-f, --format <format>","Output format").action(async t=>{try{let o$1=await b$1(rt);if(!o$1.cooMyStyleProfile)throw new o("No style profile yet. Run `profile upsert` to create one.");i(t,o$1.cooMyStyleProfile);}catch(o){h$1(o);}}),i$1.command("upsert").description("Create or update the calling shopper style profile").option("--display-name <s>","Display name").option("--bio <s>","Bio").option("--visibility <v>","PUBLIC|FOLLOWERS|PRIVATE").option("--favourite-brands <csv>","Comma-separated favourite brands").option("--palette <csv>","Comma-separated colour palette").option("--style-preferences <csv>","Comma-separated style preferences").option("--sizes <json>",'Sizes JSON (e.g. {"tops":"M","shoes":"8"})').option("-f, --format <format>","Output format").action(async t=>{try{let o={};t.displayName&&(o.displayName=t.displayName),t.bio!==void 0&&(o.bio=t.bio),t.visibility&&(o.visibility=t.visibility.toUpperCase()),t.favouriteBrands&&(o.favouriteBrands=c(t.favouriteBrands)),t.palette&&(o.palette=c(t.palette)),t.stylePreferences&&(o.stylePreferences=c(t.stylePreferences)),t.sizes&&(o.sizes=b("sizes",t.sizes));let e=await b$1(nt,{input:o});k$1("Style profile saved"),i(t,e.cooUpsertStyleProfile);}catch(o){h$1(o);}});}function ft(d$1){d$1.command("health").description("Coolandlovely service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(at);k$1(t.cooHealth),i(i$1,{health:t.cooHealth});}catch(t){h$1(t);}});}var It={id:"coolandlovely",version:"1.0.0",displayName:"Coolandlovely",dependsOn:["auth","workspaces"],register(d,i){a(i);let t=d.command("coolandlovely").description("Coolandlovely fashion & lifestyle platform");st(t),ct(t),dt(t),mt(t),lt(t),pt(t),ut(t),gt(t),ft(t);}},ao=It;export{ao as default};
@@ -37,7 +37,8 @@
37
37
  `,_=`
38
38
  query EcoListSensors($siteId: ID, $kind: EcoSensorKind, $status: EcoSensorStatus) {
39
39
  ecoListSensors(siteId: $siteId, kind: $kind, status: $status) {
40
- id siteId name kind status unit hardwareId installedAt lastReadingAt createdAt
40
+ items { id siteId name kind status unit hardwareId installedAt lastReadingAt createdAt }
41
+ pageInfo { cursor hasMore }
41
42
  }
42
43
  }
43
44
  `,D=`
@@ -55,8 +56,11 @@
55
56
  `,$=`
56
57
  query EcoListThresholds($siteId: ID) {
57
58
  ecoListThresholds(siteId: $siteId) {
58
- id siteId parameter unit direction severity minValue maxValue limitValue
59
- isActive createdAt
59
+ items {
60
+ id siteId parameter unit direction severity minValue maxValue limitValue isActive
61
+ createdAt
62
+ }
63
+ pageInfo { cursor hasMore }
60
64
  }
61
65
  }
62
66
  `,P=`
@@ -171,8 +175,11 @@
171
175
  `,Y=`
172
176
  query EcoListHabitatProjects($status: EcoHabitatProjectStatus) {
173
177
  ecoListHabitatProjects(status: $status) {
174
- id name siteId managerId status targetHectares budgetAmount currency
175
- startDate endDate createdAt
178
+ items {
179
+ id name siteId managerId status targetHectares budgetAmount currency startDate endDate
180
+ createdAt
181
+ }
182
+ pageInfo { cursor hasMore }
176
183
  }
177
184
  }
178
185
  `,K=`
@@ -234,7 +241,8 @@
234
241
  `,et=`
235
242
  query EcoListEmissionFactors($scope: EcoEmissionScope, $activeOnly: Boolean) {
236
243
  ecoListEmissionFactors(scope: $scope, activeOnly: $activeOnly) {
237
- id name scope activityUnit factorKgco2e source validYear isActive createdAt
244
+ items { id name scope activityUnit factorKgco2e source validYear isActive createdAt }
245
+ pageInfo { cursor hasMore }
238
246
  }
239
247
  }
240
248
  `,nt=`
@@ -246,8 +254,10 @@
246
254
  `,rt=`
247
255
  query EcoListReductionTargets($status: EcoReductionTargetStatus) {
248
256
  ecoListReductionTargets(status: $status) {
249
- id name metric unit baselineValue baselineYear targetValue targetYear
250
- status createdAt
257
+ items {
258
+ id name metric unit baselineValue baselineYear targetValue targetYear status createdAt
259
+ }
260
+ pageInfo { cursor hasMore }
251
261
  }
252
262
  }
253
263
  `,ot=`
@@ -302,4 +312,4 @@
302
312
  query EcoHealth {
303
313
  ecoHealth
304
314
  }
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;
315
+ `;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.items,{headers:["ID","Name","Kind","Status","Unit","Last Reading"],rows:e.ecoListSensors.items.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.items,{headers:["ID","Parameter","Unit","Direction","Severity","Active"],rows:e.ecoListThresholds.items.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.items,{headers:["ID","Name","Status","Target Ha","Budget","Currency"],rows:e.ecoListHabitatProjects.items.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.items,{headers:["ID","Name","Scope","Unit","kgCO2e","Year","Active"],rows:e.ecoListEmissionFactors.items.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.items,{headers:["ID","Name","Metric","Baseline","Target","Status"],rows:e.ecoListReductionTargets.items.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;