@burdenoff/cli-sdk 2026.1102.1 → 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 (104) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
  3. package/dist/modules/adaptercloud/index.cjs +9 -6
  4. package/dist/modules/adaptercloud/index.js +7 -4
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +35 -21
  9. package/dist/modules/atheletebridge/index.js +33 -19
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +1 -1
  13. package/dist/modules/billing/index.js +2 -2
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.cjs +64 -67
  17. package/dist/modules/buildmyiq/index.js +60 -63
  18. package/dist/modules/channels/index.cjs +3 -3
  19. package/dist/modules/channels/index.js +2 -2
  20. package/dist/modules/collabkin/index.cjs +4 -4
  21. package/dist/modules/collabkin/index.js +2 -2
  22. package/dist/modules/comradecircle/index.cjs +24 -16
  23. package/dist/modules/comradecircle/index.js +20 -12
  24. package/dist/modules/conversations/index.cjs +7 -7
  25. package/dist/modules/conversations/index.js +2 -2
  26. package/dist/modules/coolandlovely/index.cjs +28 -15
  27. package/dist/modules/coolandlovely/index.js +30 -17
  28. package/dist/modules/cosmicintersection/index.cjs +6 -6
  29. package/dist/modules/cosmicintersection/index.js +2 -2
  30. package/dist/modules/crewfoundry/index.js +2 -2
  31. package/dist/modules/devportal/index.cjs +2 -2
  32. package/dist/modules/devportal/index.js +2 -2
  33. package/dist/modules/ecoimpacthub/index.cjs +23 -13
  34. package/dist/modules/ecoimpacthub/index.js +20 -10
  35. package/dist/modules/eventfullymanaged/index.cjs +74 -74
  36. package/dist/modules/eventfullymanaged/index.js +78 -78
  37. package/dist/modules/export/index.cjs +4 -4
  38. package/dist/modules/export/index.js +2 -2
  39. package/dist/modules/files/index.cjs +3 -3
  40. package/dist/modules/files/index.js +4 -4
  41. package/dist/modules/fluidgrids/index.cjs +16 -16
  42. package/dist/modules/fluidgrids/index.js +3 -3
  43. package/dist/modules/ggnomad/index.cjs +4 -4
  44. package/dist/modules/ggnomad/index.js +2 -2
  45. package/dist/modules/govcitizenhub/index.cjs +10 -7
  46. package/dist/modules/govcitizenhub/index.js +8 -5
  47. package/dist/modules/groups/index.cjs +4 -4
  48. package/dist/modules/groups/index.js +2 -2
  49. package/dist/modules/headshotmarketing/index.js +2 -2
  50. package/dist/modules/hookmovies/index.cjs +6 -6
  51. package/dist/modules/hookmovies/index.js +2 -2
  52. package/dist/modules/housingvista/index.cjs +3 -3
  53. package/dist/modules/housingvista/index.js +2 -2
  54. package/dist/modules/integrations/index.cjs +5 -5
  55. package/dist/modules/integrations/index.js +2 -2
  56. package/dist/modules/intelwatchtower/index.cjs +28 -16
  57. package/dist/modules/intelwatchtower/index.js +25 -13
  58. package/dist/modules/kadaikodi/index.cjs +2 -2
  59. package/dist/modules/kadaikodi/index.js +2 -2
  60. package/dist/modules/labsofscience/index.cjs +10 -6
  61. package/dist/modules/labsofscience/index.js +9 -5
  62. package/dist/modules/manufacturedops/index.cjs +35 -22
  63. package/dist/modules/manufacturedops/index.js +35 -22
  64. package/dist/modules/movethewheels/index.js +2 -2
  65. package/dist/modules/notifications/index.cjs +2 -2
  66. package/dist/modules/notifications/index.js +2 -2
  67. package/dist/modules/organizations/index.js +2 -2
  68. package/dist/modules/planmagnet/index.cjs +21 -21
  69. package/dist/modules/planmagnet/index.js +32 -32
  70. package/dist/modules/products/index.cjs +4 -4
  71. package/dist/modules/products/index.js +2 -2
  72. package/dist/modules/proserviceworld/index.cjs +18 -13
  73. package/dist/modules/proserviceworld/index.js +18 -13
  74. package/dist/modules/rbac/index.js +2 -2
  75. package/dist/modules/sandbox/index.cjs +17 -17
  76. package/dist/modules/sandbox/index.js +1 -1
  77. package/dist/modules/scheduler/index.cjs +2 -2
  78. package/dist/modules/scheduler/index.js +2 -2
  79. package/dist/modules/security/index.cjs +3 -3
  80. package/dist/modules/security/index.js +2 -2
  81. package/dist/modules/semanticfed/index.cjs +3 -3
  82. package/dist/modules/semanticfed/index.js +2 -2
  83. package/dist/modules/store/index.cjs +3 -3
  84. package/dist/modules/store/index.js +2 -2
  85. package/dist/modules/subscriberbot/index.cjs +43 -19
  86. package/dist/modules/subscriberbot/index.js +47 -23
  87. package/dist/modules/support/index.cjs +2 -2
  88. package/dist/modules/support/index.js +2 -2
  89. package/dist/modules/tags/index.js +2 -2
  90. package/dist/modules/technospam/index.cjs +18 -9
  91. package/dist/modules/technospam/index.js +18 -9
  92. package/dist/modules/theculturepost/index.cjs +27 -22
  93. package/dist/modules/theculturepost/index.js +32 -27
  94. package/dist/modules/theglobalfuel/index.cjs +65 -60
  95. package/dist/modules/theglobalfuel/index.js +65 -60
  96. package/dist/modules/timecampus/index.js +2 -2
  97. package/dist/modules/tours/index.cjs +2 -2
  98. package/dist/modules/tours/index.js +2 -2
  99. package/dist/modules/vibecontrols/index.cjs +563 -567
  100. package/dist/modules/vibecontrols/index.js +5 -4
  101. package/dist/modules/workspaces/index.cjs +4 -4
  102. package/dist/modules/workspaces/index.js +2 -2
  103. package/package.json +1 -1
  104. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p as p$1,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var E=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,q as q$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var E=`
2
2
  query CosListCollections {
3
3
  cosListCollections {
4
4
  id name slug description isPublic tags
@@ -331,4 +331,4 @@ import {a,b as b$1,h as h$1,p as p$1,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js
331
331
  query CosHealth {
332
332
  cosHealth
333
333
  }
334
- `;function l(c,i){try{return JSON.parse(i)}catch{throw new o(`--${c} must be valid JSON`)}}function u(c){let i=Number.parseInt(c,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${c}"`);return i}function p(c){return c.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function dt(c){let i$1=c.command("collections").description("Cosmicintersection dataset collections");i$1.command("list").description("List collections").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(E);h$1(t,e.cosListCollections,{headers:["ID","Name","Slug","Public","Tags"],rows:e.cosListCollections.map(s=>[p$1(s.id,12),s.name,s.slug??"-",s.isPublic?"yes":"no",(s.tags??[]).join(", ")])});}catch(e){g(e);}}),i$1.command("create").description("Create a collection").requiredOption("--name <name>","Collection name").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--public","Mark the collection public").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.public&&(e.isPublic=!0),t.tags&&(e.tags=p(t.tags));let s=await b$1(D,{input:e});i(`Collection created: ${s.cosCreateCollection.name}`),h$1(t,s.cosCreateCollection);}catch(e){g(e);}});}function pt(c){let i$1=c.command("datasets").description("Cosmicintersection datasets");i$1.command("list").description("List datasets").option("--collection <id>","Filter by collection ID").option("--source <id>","Filter by source ID").option("--status <s>","DRAFT|INGESTING|AVAILABLE|DEPRECATED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(y,{collectionId:t.collection,sourceId:t.source,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListDatasets.items,{headers:["ID","Name","Access","Status","Format","Rows"],rows:e.cosListDatasets.items.map(s=>[p$1(s.id,12),s.name,s.accessLevel??"-",s.status??"-",s.format??"-",s.rowCount??"-"])});}catch(e){g(e);}}),i$1.command("get").description("Get a dataset by id").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(h,{id:t});if(!s.cosDataset)throw new o(`Dataset ${t} not found`);h$1(e,s.cosDataset);}catch(s){g(s);}}),i$1.command("create").description("Create a dataset").requiredOption("--name <name>","Dataset name").option("--access-level <a>","EMBARGOED|PUBLIC|RESTRICTED|WORKSPACE").option("--collection <id>","Collection ID").option("--source <id>","Source ID").option("--file <id>","File ID (wspace-files-svc)").option("--format <fmt>","Data format").option("--description <s>","Description").option("--status <s>","DRAFT|INGESTING|AVAILABLE|DEPRECATED|ARCHIVED").option("--coverage <json>","Coverage JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format-out <format>","Output format").action(async t=>{try{let e={name:t.name};t.accessLevel&&(e.accessLevel=t.accessLevel.toUpperCase()),t.collection&&(e.collectionId=t.collection),t.source&&(e.sourceId=t.source),t.file&&(e.fileId=t.file),t.format&&(e.format=t.format),t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.coverage&&(e.coverage=l("coverage",t.coverage)),t.tags&&(e.tags=p(t.tags));let s=await b$1(O,{input:e});i(`Dataset created: ${s.cosCreateDataset.name}`),h$1({format:t.formatOut},s.cosCreateDataset);}catch(e){g(e);}}),i$1.command("update").description("Update a dataset").argument("<id>","Dataset ID").option("--name <name>","Dataset name").option("--access-level <a>","EMBARGOED|PUBLIC|RESTRICTED|WORKSPACE").option("--collection <id>","Collection ID").option("--format <fmt>","Data format").option("--description <s>","Description").option("--coverage <json>","Coverage JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format-out <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.accessLevel&&(s.accessLevel=e.accessLevel.toUpperCase()),e.collection&&(s.collectionId=e.collection),e.format&&(s.format=e.format),e.description!==void 0&&(s.description=e.description),e.coverage&&(s.coverage=l("coverage",e.coverage)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(b,{id:t,input:s});i("Dataset updated"),h$1({format:e.formatOut},C.cosUpdateDataset);}catch(s){g(s);}}),i$1.command("publish").description("Mark a dataset AVAILABLE once ingestion completes").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(L,{id:t});i(`Dataset published: ${s.cosPublishDataset.status}`),h$1(e,s.cosPublishDataset);}catch(s){g(s);}}),i$1.command("archive").description("Archive a dataset").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(k,{id:t});i(`Dataset archived: ${String(s.cosArchiveDataset)}`),h$1(e,{archived:s.cosArchiveDataset});}catch(s){g(s);}}),i$1.command("schema-fields").description("List schema fields for a dataset").requiredOption("--dataset <id>","Dataset ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(N,{datasetId:t.dataset});h$1(t,e.cosListSchemaFields,{headers:["ID","Name","Type","Nullable","Pos","Unit"],rows:e.cosListSchemaFields.map(s=>[p$1(s.id,12),s.name,s.fieldType,s.nullable?"yes":"no",s.position!=null?String(s.position):"-",s.unit??"-"])});}catch(e){g(e);}}),i$1.command("add-field").description("Add a schema field to a dataset").requiredOption("--dataset <id>","Dataset ID").requiredOption("--name <name>","Field name").option("--field-type <t>","STRING|INTEGER|FLOAT|BOOLEAN|TIMESTAMP|...").option("--description <s>","Description").option("--unit <u>","Unit").option("--provenance <p>","Provenance").option("--position <n>","Position",u).option("--not-nullable","Mark the field as not nullable").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset,name:t.name};t.fieldType&&(e.fieldType=t.fieldType.toUpperCase()),t.description&&(e.description=t.description),t.unit&&(e.unit=t.unit),t.provenance&&(e.provenance=t.provenance),t.position!==void 0&&(e.position=t.position),t.notNullable&&(e.nullable=!1);let s=await b$1(w,{input:e});i(`Schema field added: ${s.cosAddSchemaField.name}`),h$1(t,s.cosAddSchemaField);}catch(e){g(e);}});}function ut(c){let i$1=c.command("sources").description("Cosmicintersection data sources");i$1.command("list").description("List data sources").option("--type <t>","ARCHIVE|API|FILE_DROP|GROUND_SENSOR|SATELLITE|SIMULATION|STREAM|TELESCOPE").option("--status <s>","CONFIGURING|CONNECTED|SYNCING|DEGRADED|DISABLED|ERROR").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1($,{type:t.type?t.type.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListSources.items,{headers:["ID","Name","Type","Status","Last Synced"],rows:e.cosListSources.items.map(s=>[p$1(s.id,12),s.name,s.type??"-",s.status??"-",o$1(s.lastSyncedAt)])});}catch(e){g(e);}}),i$1.command("get").description("Get a data source by id").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(T,{id:t});if(!s.cosSource)throw new o(`Source ${t} not found`);h$1(e,s.cosSource);}catch(s){g(s);}}),i$1.command("create").description("Create a data source").requiredOption("--name <name>","Source name").option("--type <t>","ARCHIVE|API|FILE_DROP|GROUND_SENSOR|SATELLITE|SIMULATION|STREAM|TELESCOPE").option("--status <s>","Source status").option("--endpoint <url>","Endpoint URL").option("--description <s>","Description").option("--credential-ref <ref>","Credential reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.endpoint&&(e.endpoint=t.endpoint),t.description&&(e.description=t.description),t.credentialRef&&(e.credentialRef=t.credentialRef),t.config&&(e.config=l("config",t.config)),t.tags&&(e.tags=p(t.tags));let s=await b$1(v,{input:e});i(`Source created: ${s.cosCreateSource.name}`),h$1(t,s.cosCreateSource);}catch(e){g(e);}}),i$1.command("update").description("Update a data source").argument("<id>","Source ID").option("--name <name>","Source name").option("--type <t>","Source type").option("--status <s>","Source status").option("--endpoint <url>","Endpoint URL").option("--description <s>","Description").option("--credential-ref <ref>","Credential reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.type&&(s.type=e.type.toUpperCase()),e.status&&(s.status=e.status.toUpperCase()),e.endpoint!==void 0&&(s.endpoint=e.endpoint),e.description!==void 0&&(s.description=e.description),e.credentialRef&&(s.credentialRef=e.credentialRef),e.config&&(s.config=l("config",e.config)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(P,{id:t,input:s});i("Source updated"),h$1(e,C.cosUpdateSource);}catch(s){g(s);}}),i$1.command("mark-synced").description("Record a successful sync (sets status CONNECTED + lastSyncedAt)").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(U,{id:t});i(`Source synced: ${s.cosMarkSourceSynced.status}`),h$1(e,s.cosMarkSourceSynced);}catch(s){g(s);}}),i$1.command("archive").description("Archive a data source").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(_,{id:t});i(`Source archived: ${String(s.cosArchiveSource)}`),h$1(e,{archived:s.cosArchiveSource});}catch(s){g(s);}});}function mt(c){let i$1=c.command("notebooks").description("Cosmicintersection computational notebooks");i$1.command("list").description("List notebooks").option("--status <s>","DRAFT|RUNNING|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListNotebooks.items,{headers:["ID","Title","Status","Runtime","Shared"],rows:e.cosListNotebooks.items.map(s=>[p$1(s.id,12),s.title,s.status??"-",s.runtime??"-",s.isShared?"yes":"no"])});}catch(e){g(e);}}),i$1.command("get").description("Get a notebook by id").argument("<id>","Notebook ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(G,{id:t});if(!s.cosNotebook)throw new o(`Notebook ${t} not found`);h$1(e,s.cosNotebook);}catch(s){g(s);}}),i$1.command("create").description("Create a notebook").requiredOption("--title <t>","Notebook title").option("--description <s>","Description").option("--runtime <r>","Runtime").option("--file <id>","File ID (notebook document)").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("--environment <json>","Environment JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.runtime&&(e.runtime=t.runtime),t.file&&(e.fileId=t.file),t.datasetIds&&(e.datasetIds=p(t.datasetIds)),t.environment&&(e.environment=l("environment",t.environment)),t.tags&&(e.tags=p(t.tags));let s=await b$1(M,{input:e});i(`Notebook created: ${s.cosCreateNotebook.title}`),h$1(t,s.cosCreateNotebook);}catch(e){g(e);}}),i$1.command("update").description("Update a notebook").argument("<id>","Notebook ID").option("--title <t>","Notebook title").option("--description <s>","Description").option("--runtime <r>","Runtime").option("--status <s>","DRAFT|RUNNING|PUBLISHED|ARCHIVED").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("--environment <json>","Environment JSON").option("--shared <bool>","true|false",t=>t==="true").option("--share-slug <slug>","Share slug").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.title&&(s.title=e.title),e.description!==void 0&&(s.description=e.description),e.runtime&&(s.runtime=e.runtime),e.status&&(s.status=e.status.toUpperCase()),e.datasetIds&&(s.datasetIds=p(e.datasetIds)),e.environment&&(s.environment=l("environment",e.environment)),e.shared!==void 0&&(s.isShared=e.shared),e.shareSlug&&(s.shareSlug=e.shareSlug),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(H,{id:t,input:s});i("Notebook updated"),h$1(e,C.cosUpdateNotebook);}catch(s){g(s);}}),i$1.command("archive").description("Archive a notebook").argument("<id>","Notebook ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(x,{id:t});i(`Notebook archived: ${String(s.cosArchiveNotebook)}`),h$1(e,{archived:s.cosArchiveNotebook});}catch(s){g(s);}});}function lt(c){let i$1=c.command("pipelines").description("Cosmicintersection data pipelines");i$1.command("list").description("List pipelines").option("--status <s>","DRAFT|ACTIVE|PAUSED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(B,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListPipelines.items,{headers:["ID","Name","Status","Trigger","Schedule","Version"],rows:e.cosListPipelines.items.map(s=>[p$1(s.id,12),s.name,s.status??"-",s.trigger??"-",s.schedule??"-",s.version!=null?String(s.version):"-"])});}catch(e){g(e);}}),i$1.command("get").description("Get a pipeline by id").argument("<id>","Pipeline ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(q,{id:t});if(!s.cosPipeline)throw new o(`Pipeline ${t} not found`);h$1(e,s.cosPipeline);}catch(s){g(s);}}),i$1.command("create").description("Create a pipeline").requiredOption("--name <name>","Pipeline name").option("--description <s>","Description").option("--trigger <t>","MANUAL|SCHEDULED|ON_INGEST|WEBHOOK").option("--schedule <cron>","Schedule (cron)").option("--definition <json>","Definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.trigger&&(e.trigger=t.trigger.toUpperCase()),t.schedule&&(e.schedule=t.schedule),t.definition&&(e.definition=l("definition",t.definition)),t.tags&&(e.tags=p(t.tags));let s=await b$1(V,{input:e});i(`Pipeline created: ${s.cosCreatePipeline.name}`),h$1(t,s.cosCreatePipeline);}catch(e){g(e);}}),i$1.command("update").description("Update a pipeline").argument("<id>","Pipeline ID").option("--name <name>","Pipeline name").option("--description <s>","Description").option("--status <s>","DRAFT|ACTIVE|PAUSED|ARCHIVED").option("--trigger <t>","MANUAL|SCHEDULED|ON_INGEST|WEBHOOK").option("--schedule <cron>","Schedule (cron)").option("--definition <json>","Definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.description!==void 0&&(s.description=e.description),e.status&&(s.status=e.status.toUpperCase()),e.trigger&&(s.trigger=e.trigger.toUpperCase()),e.schedule&&(s.schedule=e.schedule),e.definition&&(s.definition=l("definition",e.definition)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(J,{id:t,input:s});i("Pipeline updated"),h$1(e,C.cosUpdatePipeline);}catch(s){g(s);}}),i$1.command("archive").description("Archive a pipeline").argument("<id>","Pipeline ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(K,{id:t});i(`Pipeline archived: ${String(s.cosArchivePipeline)}`),h$1(e,{archived:s.cosArchivePipeline});}catch(s){g(s);}});}function ft(c){let i$1=c.command("runs").description("Cosmicintersection pipeline runs & steps");i$1.command("list").description("List pipeline runs").option("--pipeline <id>","Filter by pipeline ID").option("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pipelineId:t.pipeline,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListRuns.items,{headers:["ID","Pipeline","Run #","Status","Started"],rows:e.cosListRuns.items.map(s=>[p$1(s.id,12),p$1(s.pipelineId,12),String(s.runNumber),s.status??"-",o$1(s.startedAt)])});}catch(e){g(e);}}),i$1.command("get").description("Get a run by id").argument("<id>","Run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(j,{id:t});if(!s.cosRun)throw new o(`Run ${t} not found`);h$1(e,s.cosRun);}catch(s){g(s);}}),i$1.command("start").description("Queue a new run of a pipeline").requiredOption("--pipeline <id>","Pipeline ID").option("--dataset <id>","Dataset ID").option("--params <json>","Params JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={pipelineId:t.pipeline};t.dataset&&(e.datasetId=t.dataset),t.params&&(e.params=l("params",t.params));let s=await b$1(Y,{input:e});i(`Run started: #${s.cosStartRun.runNumber}`),h$1(t,s.cosStartRun);}catch(e){g(e);}}),i$1.command("transition").description("Advance a run through its lifecycle").argument("<id>","Run ID").requiredOption("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(z,{id:t,status:e.status.toUpperCase()});i(`Run transitioned to ${s.cosTransitionRun.status}`),h$1(e,s.cosTransitionRun);}catch(s){g(s);}}),i$1.command("steps").description("List steps for a run").requiredOption("--run <id>","Run ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Q,{runId:t.run});h$1(t,e.cosListRunSteps,{headers:["ID","Name","Kind","Status","Pos"],rows:e.cosListRunSteps.map(s=>[p$1(s.id,12),s.name,s.kind,s.status??"-",s.position!=null?String(s.position):"-"])});}catch(e){g(e);}}),i$1.command("add-step").description("Append a step to a run").requiredOption("--run <id>","Run ID").requiredOption("--name <name>","Step name").option("--kind <k>","INGEST|TRANSFORM|ANALYZE|CALIBRATE|EXPORT|NOTIFY").option("--position <n>","Position",u).option("--inputs <json>","Inputs JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={runId:t.run,name:t.name};t.kind&&(e.kind=t.kind.toUpperCase()),t.position!==void 0&&(e.position=t.position),t.inputs&&(e.inputs=l("inputs",t.inputs));let s=await b$1(X,{input:e});i(`Step added: ${s.cosAddRunStep.name}`),h$1(t,s.cosAddRunStep);}catch(e){g(e);}});}function gt(c){let i$1=c.command("analyses").description("Cosmicintersection analyses");i$1.command("list").description("List analyses").option("--dataset <id>","Filter by dataset ID").option("--notebook <id>","Filter by notebook ID").option("--status <s>","PENDING|RUNNING|COMPLETED|FAILED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Z,{datasetId:t.dataset,notebookId:t.notebook,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.cosListAnalyses,{headers:["ID","Title","Status","Method","AI"],rows:e.cosListAnalyses.map(s=>[p$1(s.id,12),s.title,s.status??"-",s.method??"-",s.aiAssisted?"yes":"no"])});}catch(e){g(e);}}),i$1.command("run").description("Start an analysis run").requiredOption("--title <t>","Analysis title").option("--dataset <id>","Dataset ID").option("--notebook <id>","Notebook ID").option("--method <m>","Analysis method").option("--ai-assisted","Mark the analysis as AI-assisted").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.dataset&&(e.datasetId=t.dataset),t.notebook&&(e.notebookId=t.notebook),t.method&&(e.method=t.method),t.aiAssisted&&(e.aiAssisted=!0);let s=await b$1(tt,{input:e});i(`Analysis started: ${s.cosRunAnalysis.title}`),h$1(t,s.cosRunAnalysis);}catch(e){g(e);}}),i$1.command("complete").description("Record the terminal outcome of an analysis run").argument("<id>","Analysis ID").requiredOption("--status <s>","COMPLETED|FAILED").option("--results <json>","Results JSON").option("--output-file <id>","Output file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(et,{id:t,status:e.status.toUpperCase(),results:e.results?l("results",e.results):void 0,outputFileId:e.outputFile});i(`Analysis completed: ${s.cosCompleteAnalysis.status}`),h$1(e,s.cosCompleteAnalysis);}catch(s){g(s);}});}function It(c){let i$1=c.command("releases").description("Cosmicintersection citable releases");i$1.command("list").description("List releases").option("--status <s>","DRAFT|UNDER_REVIEW|PUBLISHED|RETRACTED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(st,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.cosListReleases.items,{headers:["ID","Title","Version","Status","DOI"],rows:e.cosListReleases.items.map(s=>[p$1(s.id,12),s.title,s.version,s.status??"-",s.doi??"-"])});}catch(e){g(e);}}),i$1.command("create").description("Create a release").requiredOption("--title <t>","Release title").option("--version <v>","Version").option("--abstract <s>","Abstract").option("--license <l>","License").option("--notebook <id>","Notebook ID").option("--authors <csv>","Comma-separated authors").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.version&&(e.version=t.version),t.abstract&&(e.abstract=t.abstract),t.license&&(e.license=t.license),t.notebook&&(e.notebookId=t.notebook),t.authors&&(e.authors=p(t.authors)),t.datasetIds&&(e.datasetIds=p(t.datasetIds));let s=await b$1(it,{input:e});i(`Release created: ${s.cosCreateRelease.title}`),h$1(t,s.cosCreateRelease);}catch(e){g(e);}}),i$1.command("publish").description("Publish a citable release and stamp it with a DOI").argument("<id>","Release ID").option("--doi <doi>","DOI to stamp").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(ot,{id:t,doi:e.doi});i(`Release published: ${s.cosPublishRelease.version}`),h$1(e,s.cosPublishRelease);}catch(s){g(s);}});}function Ct(c){let i$1=c.command("grants").description("Cosmicintersection data-access grants");i$1.command("list").description("List data-access grants").option("--dataset <id>","Filter by dataset ID").option("--status <s>","PENDING|ACTIVE|REVOKED|EXPIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(nt,{datasetId:t.dataset,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.cosListAccessGrants,{headers:["ID","Dataset","Grantee","Status","Scopes","Expires"],rows:e.cosListAccessGrants.map(s=>[p$1(s.id,12),p$1(s.datasetId,12),p$1(s.granteeId,12),s.status??"-",(s.scopes??[]).join(", "),o$1(s.expiresAt)])});}catch(e){g(e);}}),i$1.command("grant").description("Grant a grantee access to a dataset").requiredOption("--dataset <id>","Dataset ID").requiredOption("--grantee <id>","Grantee ID").option("--scopes <csv>","Comma-separated scopes").option("--reason <s>","Reason").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset,granteeId:t.grantee};t.scopes&&(e.scopes=p(t.scopes)),t.reason&&(e.reason=t.reason),t.expiresAt&&(e.expiresAt=t.expiresAt);let s=await b$1(at,{input:e});i(`Access granted to ${s.cosGrantAccess.granteeId}`),h$1(t,s.cosGrantAccess);}catch(e){g(e);}}),i$1.command("revoke").description("Revoke a data-access grant").argument("<id>","Grant ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(rt,{id:t});i(`Access revoked: ${s.cosRevokeAccess.status}`),h$1(e,s.cosRevokeAccess);}catch(s){g(s);}});}function At(c){c.command("health").description("Cosmicintersection service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(ct);i(t.cosHealth),h$1(i$1,{health:t.cosHealth});}catch(t){g(t);}});}var St={id:"cosmicintersection",version:"1.0.0",displayName:"Cosmicintersection",dependsOn:["auth","workspaces"],register(c,i){a(i);let t=c.command("cosmicintersection").description("Cosmicintersection open-science data platform");dt(t),pt(t),ut(t),mt(t),lt(t),ft(t),gt(t),It(t),Ct(t),At(t);}},me=St;export{me as default};
334
+ `;function l(c,i){try{return JSON.parse(i)}catch{throw new o(`--${c} must be valid JSON`)}}function u(c){let i=Number.parseInt(c,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${c}"`);return i}function p(c){return c.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function dt(c){let i$1=c.command("collections").description("Cosmicintersection dataset collections");i$1.command("list").description("List collections").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(E);i(t,e.cosListCollections,{headers:["ID","Name","Slug","Public","Tags"],rows:e.cosListCollections.map(s=>[r(s.id,12),s.name,s.slug??"-",s.isPublic?"yes":"no",(s.tags??[]).join(", ")])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a collection").requiredOption("--name <name>","Collection name").option("--slug <slug>","URL slug").option("--description <s>","Description").option("--public","Mark the collection public").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.slug&&(e.slug=t.slug),t.description&&(e.description=t.description),t.public&&(e.isPublic=!0),t.tags&&(e.tags=p(t.tags));let s=await b$1(D,{input:e});k$1(`Collection created: ${s.cosCreateCollection.name}`),i(t,s.cosCreateCollection);}catch(e){h$1(e);}});}function pt(c){let i$1=c.command("datasets").description("Cosmicintersection datasets");i$1.command("list").description("List datasets").option("--collection <id>","Filter by collection ID").option("--source <id>","Filter by source ID").option("--status <s>","DRAFT|INGESTING|AVAILABLE|DEPRECATED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(y,{collectionId:t.collection,sourceId:t.source,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListDatasets.items,{headers:["ID","Name","Access","Status","Format","Rows"],rows:e.cosListDatasets.items.map(s=>[r(s.id,12),s.name,s.accessLevel??"-",s.status??"-",s.format??"-",s.rowCount??"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a dataset by id").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(h,{id:t});if(!s.cosDataset)throw new o(`Dataset ${t} not found`);i(e,s.cosDataset);}catch(s){h$1(s);}}),i$1.command("create").description("Create a dataset").requiredOption("--name <name>","Dataset name").option("--access-level <a>","EMBARGOED|PUBLIC|RESTRICTED|WORKSPACE").option("--collection <id>","Collection ID").option("--source <id>","Source ID").option("--file <id>","File ID (wspace-files-svc)").option("--format <fmt>","Data format").option("--description <s>","Description").option("--status <s>","DRAFT|INGESTING|AVAILABLE|DEPRECATED|ARCHIVED").option("--coverage <json>","Coverage JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format-out <format>","Output format").action(async t=>{try{let e={name:t.name};t.accessLevel&&(e.accessLevel=t.accessLevel.toUpperCase()),t.collection&&(e.collectionId=t.collection),t.source&&(e.sourceId=t.source),t.file&&(e.fileId=t.file),t.format&&(e.format=t.format),t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.coverage&&(e.coverage=l("coverage",t.coverage)),t.tags&&(e.tags=p(t.tags));let s=await b$1(O,{input:e});k$1(`Dataset created: ${s.cosCreateDataset.name}`),i({format:t.formatOut},s.cosCreateDataset);}catch(e){h$1(e);}}),i$1.command("update").description("Update a dataset").argument("<id>","Dataset ID").option("--name <name>","Dataset name").option("--access-level <a>","EMBARGOED|PUBLIC|RESTRICTED|WORKSPACE").option("--collection <id>","Collection ID").option("--format <fmt>","Data format").option("--description <s>","Description").option("--coverage <json>","Coverage JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format-out <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.accessLevel&&(s.accessLevel=e.accessLevel.toUpperCase()),e.collection&&(s.collectionId=e.collection),e.format&&(s.format=e.format),e.description!==void 0&&(s.description=e.description),e.coverage&&(s.coverage=l("coverage",e.coverage)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(b,{id:t,input:s});k$1("Dataset updated"),i({format:e.formatOut},C.cosUpdateDataset);}catch(s){h$1(s);}}),i$1.command("publish").description("Mark a dataset AVAILABLE once ingestion completes").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(L,{id:t});k$1(`Dataset published: ${s.cosPublishDataset.status}`),i(e,s.cosPublishDataset);}catch(s){h$1(s);}}),i$1.command("archive").description("Archive a dataset").argument("<id>","Dataset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(k,{id:t});k$1(`Dataset archived: ${String(s.cosArchiveDataset)}`),i(e,{archived:s.cosArchiveDataset});}catch(s){h$1(s);}}),i$1.command("schema-fields").description("List schema fields for a dataset").requiredOption("--dataset <id>","Dataset ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(N,{datasetId:t.dataset});i(t,e.cosListSchemaFields,{headers:["ID","Name","Type","Nullable","Pos","Unit"],rows:e.cosListSchemaFields.map(s=>[r(s.id,12),s.name,s.fieldType,s.nullable?"yes":"no",s.position!=null?String(s.position):"-",s.unit??"-"])});}catch(e){h$1(e);}}),i$1.command("add-field").description("Add a schema field to a dataset").requiredOption("--dataset <id>","Dataset ID").requiredOption("--name <name>","Field name").option("--field-type <t>","STRING|INTEGER|FLOAT|BOOLEAN|TIMESTAMP|...").option("--description <s>","Description").option("--unit <u>","Unit").option("--provenance <p>","Provenance").option("--position <n>","Position",u).option("--not-nullable","Mark the field as not nullable").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset,name:t.name};t.fieldType&&(e.fieldType=t.fieldType.toUpperCase()),t.description&&(e.description=t.description),t.unit&&(e.unit=t.unit),t.provenance&&(e.provenance=t.provenance),t.position!==void 0&&(e.position=t.position),t.notNullable&&(e.nullable=!1);let s=await b$1(w,{input:e});k$1(`Schema field added: ${s.cosAddSchemaField.name}`),i(t,s.cosAddSchemaField);}catch(e){h$1(e);}});}function ut(c){let i$1=c.command("sources").description("Cosmicintersection data sources");i$1.command("list").description("List data sources").option("--type <t>","ARCHIVE|API|FILE_DROP|GROUND_SENSOR|SATELLITE|SIMULATION|STREAM|TELESCOPE").option("--status <s>","CONFIGURING|CONNECTED|SYNCING|DEGRADED|DISABLED|ERROR").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1($,{type:t.type?t.type.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListSources.items,{headers:["ID","Name","Type","Status","Last Synced"],rows:e.cosListSources.items.map(s=>[r(s.id,12),s.name,s.type??"-",s.status??"-",q$1(s.lastSyncedAt)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a data source by id").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(T,{id:t});if(!s.cosSource)throw new o(`Source ${t} not found`);i(e,s.cosSource);}catch(s){h$1(s);}}),i$1.command("create").description("Create a data source").requiredOption("--name <name>","Source name").option("--type <t>","ARCHIVE|API|FILE_DROP|GROUND_SENSOR|SATELLITE|SIMULATION|STREAM|TELESCOPE").option("--status <s>","Source status").option("--endpoint <url>","Endpoint URL").option("--description <s>","Description").option("--credential-ref <ref>","Credential reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.endpoint&&(e.endpoint=t.endpoint),t.description&&(e.description=t.description),t.credentialRef&&(e.credentialRef=t.credentialRef),t.config&&(e.config=l("config",t.config)),t.tags&&(e.tags=p(t.tags));let s=await b$1(v,{input:e});k$1(`Source created: ${s.cosCreateSource.name}`),i(t,s.cosCreateSource);}catch(e){h$1(e);}}),i$1.command("update").description("Update a data source").argument("<id>","Source ID").option("--name <name>","Source name").option("--type <t>","Source type").option("--status <s>","Source status").option("--endpoint <url>","Endpoint URL").option("--description <s>","Description").option("--credential-ref <ref>","Credential reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.type&&(s.type=e.type.toUpperCase()),e.status&&(s.status=e.status.toUpperCase()),e.endpoint!==void 0&&(s.endpoint=e.endpoint),e.description!==void 0&&(s.description=e.description),e.credentialRef&&(s.credentialRef=e.credentialRef),e.config&&(s.config=l("config",e.config)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(P,{id:t,input:s});k$1("Source updated"),i(e,C.cosUpdateSource);}catch(s){h$1(s);}}),i$1.command("mark-synced").description("Record a successful sync (sets status CONNECTED + lastSyncedAt)").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(U,{id:t});k$1(`Source synced: ${s.cosMarkSourceSynced.status}`),i(e,s.cosMarkSourceSynced);}catch(s){h$1(s);}}),i$1.command("archive").description("Archive a data source").argument("<id>","Source ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(_,{id:t});k$1(`Source archived: ${String(s.cosArchiveSource)}`),i(e,{archived:s.cosArchiveSource});}catch(s){h$1(s);}});}function mt(c){let i$1=c.command("notebooks").description("Cosmicintersection computational notebooks");i$1.command("list").description("List notebooks").option("--status <s>","DRAFT|RUNNING|PUBLISHED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListNotebooks.items,{headers:["ID","Title","Status","Runtime","Shared"],rows:e.cosListNotebooks.items.map(s=>[r(s.id,12),s.title,s.status??"-",s.runtime??"-",s.isShared?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a notebook by id").argument("<id>","Notebook ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(G,{id:t});if(!s.cosNotebook)throw new o(`Notebook ${t} not found`);i(e,s.cosNotebook);}catch(s){h$1(s);}}),i$1.command("create").description("Create a notebook").requiredOption("--title <t>","Notebook title").option("--description <s>","Description").option("--runtime <r>","Runtime").option("--file <id>","File ID (notebook document)").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("--environment <json>","Environment JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.description&&(e.description=t.description),t.runtime&&(e.runtime=t.runtime),t.file&&(e.fileId=t.file),t.datasetIds&&(e.datasetIds=p(t.datasetIds)),t.environment&&(e.environment=l("environment",t.environment)),t.tags&&(e.tags=p(t.tags));let s=await b$1(M,{input:e});k$1(`Notebook created: ${s.cosCreateNotebook.title}`),i(t,s.cosCreateNotebook);}catch(e){h$1(e);}}),i$1.command("update").description("Update a notebook").argument("<id>","Notebook ID").option("--title <t>","Notebook title").option("--description <s>","Description").option("--runtime <r>","Runtime").option("--status <s>","DRAFT|RUNNING|PUBLISHED|ARCHIVED").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("--environment <json>","Environment JSON").option("--shared <bool>","true|false",t=>t==="true").option("--share-slug <slug>","Share slug").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.title&&(s.title=e.title),e.description!==void 0&&(s.description=e.description),e.runtime&&(s.runtime=e.runtime),e.status&&(s.status=e.status.toUpperCase()),e.datasetIds&&(s.datasetIds=p(e.datasetIds)),e.environment&&(s.environment=l("environment",e.environment)),e.shared!==void 0&&(s.isShared=e.shared),e.shareSlug&&(s.shareSlug=e.shareSlug),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(H,{id:t,input:s});k$1("Notebook updated"),i(e,C.cosUpdateNotebook);}catch(s){h$1(s);}}),i$1.command("archive").description("Archive a notebook").argument("<id>","Notebook ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(x,{id:t});k$1(`Notebook archived: ${String(s.cosArchiveNotebook)}`),i(e,{archived:s.cosArchiveNotebook});}catch(s){h$1(s);}});}function lt(c){let i$1=c.command("pipelines").description("Cosmicintersection data pipelines");i$1.command("list").description("List pipelines").option("--status <s>","DRAFT|ACTIVE|PAUSED|ARCHIVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(B,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListPipelines.items,{headers:["ID","Name","Status","Trigger","Schedule","Version"],rows:e.cosListPipelines.items.map(s=>[r(s.id,12),s.name,s.status??"-",s.trigger??"-",s.schedule??"-",s.version!=null?String(s.version):"-"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a pipeline by id").argument("<id>","Pipeline ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(q,{id:t});if(!s.cosPipeline)throw new o(`Pipeline ${t} not found`);i(e,s.cosPipeline);}catch(s){h$1(s);}}),i$1.command("create").description("Create a pipeline").requiredOption("--name <name>","Pipeline name").option("--description <s>","Description").option("--trigger <t>","MANUAL|SCHEDULED|ON_INGEST|WEBHOOK").option("--schedule <cron>","Schedule (cron)").option("--definition <json>","Definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.description&&(e.description=t.description),t.trigger&&(e.trigger=t.trigger.toUpperCase()),t.schedule&&(e.schedule=t.schedule),t.definition&&(e.definition=l("definition",t.definition)),t.tags&&(e.tags=p(t.tags));let s=await b$1(V,{input:e});k$1(`Pipeline created: ${s.cosCreatePipeline.name}`),i(t,s.cosCreatePipeline);}catch(e){h$1(e);}}),i$1.command("update").description("Update a pipeline").argument("<id>","Pipeline ID").option("--name <name>","Pipeline name").option("--description <s>","Description").option("--status <s>","DRAFT|ACTIVE|PAUSED|ARCHIVED").option("--trigger <t>","MANUAL|SCHEDULED|ON_INGEST|WEBHOOK").option("--schedule <cron>","Schedule (cron)").option("--definition <json>","Definition JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s={};if(e.name&&(s.name=e.name),e.description!==void 0&&(s.description=e.description),e.status&&(s.status=e.status.toUpperCase()),e.trigger&&(s.trigger=e.trigger.toUpperCase()),e.schedule&&(s.schedule=e.schedule),e.definition&&(s.definition=l("definition",e.definition)),e.tags&&(s.tags=p(e.tags)),!Object.keys(s).length)throw new o("No updates specified");let C=await b$1(J,{id:t,input:s});k$1("Pipeline updated"),i(e,C.cosUpdatePipeline);}catch(s){h$1(s);}}),i$1.command("archive").description("Archive a pipeline").argument("<id>","Pipeline ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(K,{id:t});k$1(`Pipeline archived: ${String(s.cosArchivePipeline)}`),i(e,{archived:s.cosArchivePipeline});}catch(s){h$1(s);}});}function ft(c){let i$1=c.command("runs").description("Cosmicintersection pipeline runs & steps");i$1.command("list").description("List pipeline runs").option("--pipeline <id>","Filter by pipeline ID").option("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(W,{pipelineId:t.pipeline,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListRuns.items,{headers:["ID","Pipeline","Run #","Status","Started"],rows:e.cosListRuns.items.map(s=>[r(s.id,12),r(s.pipelineId,12),String(s.runNumber),s.status??"-",q$1(s.startedAt)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a run by id").argument("<id>","Run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(j,{id:t});if(!s.cosRun)throw new o(`Run ${t} not found`);i(e,s.cosRun);}catch(s){h$1(s);}}),i$1.command("start").description("Queue a new run of a pipeline").requiredOption("--pipeline <id>","Pipeline ID").option("--dataset <id>","Dataset ID").option("--params <json>","Params JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={pipelineId:t.pipeline};t.dataset&&(e.datasetId=t.dataset),t.params&&(e.params=l("params",t.params));let s=await b$1(Y,{input:e});k$1(`Run started: #${s.cosStartRun.runNumber}`),i(t,s.cosStartRun);}catch(e){h$1(e);}}),i$1.command("transition").description("Advance a run through its lifecycle").argument("<id>","Run ID").requiredOption("--status <s>","QUEUED|RUNNING|SUCCEEDED|FAILED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(z,{id:t,status:e.status.toUpperCase()});k$1(`Run transitioned to ${s.cosTransitionRun.status}`),i(e,s.cosTransitionRun);}catch(s){h$1(s);}}),i$1.command("steps").description("List steps for a run").requiredOption("--run <id>","Run ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Q,{runId:t.run});i(t,e.cosListRunSteps,{headers:["ID","Name","Kind","Status","Pos"],rows:e.cosListRunSteps.map(s=>[r(s.id,12),s.name,s.kind,s.status??"-",s.position!=null?String(s.position):"-"])});}catch(e){h$1(e);}}),i$1.command("add-step").description("Append a step to a run").requiredOption("--run <id>","Run ID").requiredOption("--name <name>","Step name").option("--kind <k>","INGEST|TRANSFORM|ANALYZE|CALIBRATE|EXPORT|NOTIFY").option("--position <n>","Position",u).option("--inputs <json>","Inputs JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={runId:t.run,name:t.name};t.kind&&(e.kind=t.kind.toUpperCase()),t.position!==void 0&&(e.position=t.position),t.inputs&&(e.inputs=l("inputs",t.inputs));let s=await b$1(X,{input:e});k$1(`Step added: ${s.cosAddRunStep.name}`),i(t,s.cosAddRunStep);}catch(e){h$1(e);}});}function gt(c){let i$1=c.command("analyses").description("Cosmicintersection analyses");i$1.command("list").description("List analyses").option("--dataset <id>","Filter by dataset ID").option("--notebook <id>","Filter by notebook ID").option("--status <s>","PENDING|RUNNING|COMPLETED|FAILED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Z,{datasetId:t.dataset,notebookId:t.notebook,status:t.status?t.status.toUpperCase():void 0});i(t,e.cosListAnalyses,{headers:["ID","Title","Status","Method","AI"],rows:e.cosListAnalyses.map(s=>[r(s.id,12),s.title,s.status??"-",s.method??"-",s.aiAssisted?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("run").description("Start an analysis run").requiredOption("--title <t>","Analysis title").option("--dataset <id>","Dataset ID").option("--notebook <id>","Notebook ID").option("--method <m>","Analysis method").option("--ai-assisted","Mark the analysis as AI-assisted").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.dataset&&(e.datasetId=t.dataset),t.notebook&&(e.notebookId=t.notebook),t.method&&(e.method=t.method),t.aiAssisted&&(e.aiAssisted=!0);let s=await b$1(tt,{input:e});k$1(`Analysis started: ${s.cosRunAnalysis.title}`),i(t,s.cosRunAnalysis);}catch(e){h$1(e);}}),i$1.command("complete").description("Record the terminal outcome of an analysis run").argument("<id>","Analysis ID").requiredOption("--status <s>","COMPLETED|FAILED").option("--results <json>","Results JSON").option("--output-file <id>","Output file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(et,{id:t,status:e.status.toUpperCase(),results:e.results?l("results",e.results):void 0,outputFileId:e.outputFile});k$1(`Analysis completed: ${s.cosCompleteAnalysis.status}`),i(e,s.cosCompleteAnalysis);}catch(s){h$1(s);}});}function It(c){let i$1=c.command("releases").description("Cosmicintersection citable releases");i$1.command("list").description("List releases").option("--status <s>","DRAFT|UNDER_REVIEW|PUBLISHED|RETRACTED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(st,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.cosListReleases.items,{headers:["ID","Title","Version","Status","DOI"],rows:e.cosListReleases.items.map(s=>[r(s.id,12),s.title,s.version,s.status??"-",s.doi??"-"])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a release").requiredOption("--title <t>","Release title").option("--version <v>","Version").option("--abstract <s>","Abstract").option("--license <l>","License").option("--notebook <id>","Notebook ID").option("--authors <csv>","Comma-separated authors").option("--dataset-ids <csv>","Comma-separated dataset IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.version&&(e.version=t.version),t.abstract&&(e.abstract=t.abstract),t.license&&(e.license=t.license),t.notebook&&(e.notebookId=t.notebook),t.authors&&(e.authors=p(t.authors)),t.datasetIds&&(e.datasetIds=p(t.datasetIds));let s=await b$1(it,{input:e});k$1(`Release created: ${s.cosCreateRelease.title}`),i(t,s.cosCreateRelease);}catch(e){h$1(e);}}),i$1.command("publish").description("Publish a citable release and stamp it with a DOI").argument("<id>","Release ID").option("--doi <doi>","DOI to stamp").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(ot,{id:t,doi:e.doi});k$1(`Release published: ${s.cosPublishRelease.version}`),i(e,s.cosPublishRelease);}catch(s){h$1(s);}});}function Ct(c){let i$1=c.command("grants").description("Cosmicintersection data-access grants");i$1.command("list").description("List data-access grants").option("--dataset <id>","Filter by dataset ID").option("--status <s>","PENDING|ACTIVE|REVOKED|EXPIRED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(nt,{datasetId:t.dataset,status:t.status?t.status.toUpperCase():void 0});i(t,e.cosListAccessGrants,{headers:["ID","Dataset","Grantee","Status","Scopes","Expires"],rows:e.cosListAccessGrants.map(s=>[r(s.id,12),r(s.datasetId,12),r(s.granteeId,12),s.status??"-",(s.scopes??[]).join(", "),q$1(s.expiresAt)])});}catch(e){h$1(e);}}),i$1.command("grant").description("Grant a grantee access to a dataset").requiredOption("--dataset <id>","Dataset ID").requiredOption("--grantee <id>","Grantee ID").option("--scopes <csv>","Comma-separated scopes").option("--reason <s>","Reason").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={datasetId:t.dataset,granteeId:t.grantee};t.scopes&&(e.scopes=p(t.scopes)),t.reason&&(e.reason=t.reason),t.expiresAt&&(e.expiresAt=t.expiresAt);let s=await b$1(at,{input:e});k$1(`Access granted to ${s.cosGrantAccess.granteeId}`),i(t,s.cosGrantAccess);}catch(e){h$1(e);}}),i$1.command("revoke").description("Revoke a data-access grant").argument("<id>","Grant ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let s=await b$1(rt,{id:t});k$1(`Access revoked: ${s.cosRevokeAccess.status}`),i(e,s.cosRevokeAccess);}catch(s){h$1(s);}});}function At(c){c.command("health").description("Cosmicintersection service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d(ct);k$1(t.cosHealth),i(i$1,{health:t.cosHealth});}catch(t){h$1(t);}});}var St={id:"cosmicintersection",version:"1.0.0",displayName:"Cosmicintersection",dependsOn:["auth","workspaces"],register(c,i){a(i);let t=c.command("cosmicintersection").description("Cosmicintersection open-science data platform");dt(t),pt(t),ut(t),mt(t),lt(t),ft(t),gt(t),It(t),Ct(t),At(t);}},me=St;export{me as default};
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o as o$1}from'../../chunk-YIY5IDXQ.js';var S=`
1
+ import {a,b as b$1,i,r,h as h$1,k,d}from'../../chunk-O6UCQ5IT.js';import {o as o$1}from'../../chunk-YIY5IDXQ.js';var S=`
2
2
  id firstName lastName email phone position department location type status
3
3
  salary performanceScore managerId avatar startDate workspaceId
4
4
  `,R=`
@@ -193,4 +193,4 @@ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o as o
193
193
  query CrewfoundryHealth {
194
194
  _empty
195
195
  }
196
- `;function y(m){let a=Number.parseInt(m,10);if(Number.isNaN(a))throw new o$1(`Expected an integer but got "${m}"`);return a}function f(m){let a=Number.parseFloat(m);if(Number.isNaN(a))throw new o$1(`Expected a number but got "${m}"`);return a}function C(m){return m.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function It(m){let a=m.command("employees").description("Crewfoundry employees");a.command("list").description("List employees").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(D)).crewfoundryBootstrap.employees;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Name","Email","Department","Position","Status"],rows:t.map(r=>[p(r.id,12),`${r.firstName} ${r.lastName}`,r.email,r.department,r.position,r.status])});}catch(e){g(e);}}),a.command("get").description("Get an employee by id").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(D)).crewfoundryBootstrap.employees.find(l=>l.id===n);if(!r)throw new o$1(`Employee ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create an employee").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--department <s>","Department").requiredOption("--location <s>","Location").requiredOption("--salary <n>","Salary",f).option("--type <s>","Employment type (e.g. full-time)","full-time").option("--status <s>","Status","active").option("--performance-score <n>","Performance score",f,0).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,department:n.department,location:n.location,salary:n.salary,type:n.type??"full-time",status:n.status??"active",performanceScore:n.performanceScore??0,startDate:n.startDate??new Date().toISOString()};n.managerId&&(e.managerId=n.managerId),n.avatar&&(e.avatar=n.avatar);let t=await b$1(st,{input:e});i(`Employee created: ${t.createCrewEmployee.firstName} ${t.createCrewEmployee.lastName}`),h$1(n,t.createCrewEmployee);}catch(e){g(e);}}),a.command("update").description("Update an employee").argument("<id>","Employee ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--department <s>","Department").option("--location <s>","Location").option("--salary <n>","Salary",f).option("--type <s>","Employment type").option("--status <s>","Status").option("--performance-score <n>","Performance score",f).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.department&&(t.department=e.department),e.location&&(t.location=e.location),e.salary!==void 0&&(t.salary=e.salary),e.type&&(t.type=e.type),e.status&&(t.status=e.status),e.performanceScore!==void 0&&(t.performanceScore=e.performanceScore),e.managerId&&(t.managerId=e.managerId),e.avatar&&(t.avatar=e.avatar),e.startDate&&(t.startDate=e.startDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(pt,{id:n,input:t});i("Employee updated"),h$1(e,r.updateCrewEmployee);}catch(t){g(t);}}),a.command("remove").description("Remove an employee").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(mt,{id:n});if(!t.removeCrewEmployee)throw new o$1(`Employee ${n} could not be removed`);i(`Employee ${n} removed`),h$1(e,{removed:t.removeCrewEmployee});}catch(t){g(t);}});}function St(m){let a=m.command("candidates").description("Crewfoundry recruiting candidates");a.command("list").description("List candidates").option("--status <s>","Filter by status").option("--position <p>","Filter by position").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(T)).crewfoundryBootstrap.candidates;n.status&&(t=t.filter(r=>r.status===n.status)),n.position&&(t=t.filter(r=>r.position===n.position)),h$1(n,t,{headers:["ID","Name","Position","Source","Status","Rating"],rows:t.map(r=>[p(r.id,12),`${r.firstName} ${r.lastName}`,r.position,r.source,r.status,String(r.rating)])});}catch(e){g(e);}}),a.command("get").description("Get a candidate by id").argument("<id>","Candidate ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(T)).crewfoundryBootstrap.candidates.find(l=>l.id===n);if(!r)throw new o$1(`Candidate ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a candidate").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--source <s>","Source").option("--experience <n>","Years of experience",y,0).option("--rating <n>","Rating",f,0).option("--status <s>","Status","new").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,source:n.source,experience:n.experience??0,rating:n.rating??0,status:n.status??"new",skills:n.skills?C(n.skills):[],appliedDate:n.appliedDate??new Date().toISOString()};n.currentCompany&&(e.currentCompany=n.currentCompany),n.resumeUrl&&(e.resumeUrl=n.resumeUrl),n.notes&&(e.notes=n.notes);let t=await b$1(dt,{input:e});i(`Candidate created: ${t.createCrewCandidate.firstName} ${t.createCrewCandidate.lastName}`),h$1(n,t.createCrewCandidate);}catch(e){g(e);}}),a.command("update").description("Update a candidate").argument("<id>","Candidate ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--source <s>","Source").option("--experience <n>","Years of experience",y).option("--rating <n>","Rating",f).option("--status <s>","Status").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.source&&(t.source=e.source),e.experience!==void 0&&(t.experience=e.experience),e.rating!==void 0&&(t.rating=e.rating),e.status&&(t.status=e.status),e.currentCompany&&(t.currentCompany=e.currentCompany),e.skills&&(t.skills=C(e.skills)),e.resumeUrl&&(t.resumeUrl=e.resumeUrl),e.notes&&(t.notes=e.notes),e.appliedDate&&(t.appliedDate=e.appliedDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(ct,{id:n,input:t});i("Candidate updated"),h$1(e,r.updateCrewCandidate);}catch(t){g(t);}});}function Rt(m){let a=m.command("job-postings").description("Crewfoundry job postings");a.command("list").description("List job postings").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(_)).crewfoundryBootstrap.jobPostings;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Title","Department","Type","Applicants","Status"],rows:t.map(r=>[p(r.id,12),r.title,r.department,r.type,String(r.applicants),r.status])});}catch(e){g(e);}}),a.command("get").description("Get a job posting by id").argument("<id>","Job posting ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(_)).crewfoundryBootstrap.jobPostings.find(l=>l.id===n);if(!r)throw new o$1(`Job posting ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a job posting").requiredOption("--title <s>","Title").requiredOption("--department <s>","Department").requiredOption("--description <s>","Description").requiredOption("--experience-level <s>","Experience level").requiredOption("--location <s>","Location").requiredOption("--type <s>","Employment type (e.g. full-time)").option("--applicants <n>","Applicant count",y,0).option("--salary-min <n>","Minimum salary",f,0).option("--salary-max <n>","Maximum salary",f,0).option("--status <s>","Status","open").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,department:n.department,description:n.description,experienceLevel:n.experienceLevel,location:n.location,type:n.type,applicants:n.applicants??0,salaryMin:n.salaryMin??0,salaryMax:n.salaryMax??0,status:n.status??"open",requirements:n.requirements?C(n.requirements):[],benefits:n.benefits?C(n.benefits):[],postedDate:n.postedDate??new Date().toISOString()};n.deadline&&(e.deadline=n.deadline);let t=await b$1(ut,{input:e});i(`Job posting created: ${t.createCrewJobPosting.title}`),h$1(n,t.createCrewJobPosting);}catch(e){g(e);}}),a.command("update").description("Update a job posting").argument("<id>","Job posting ID").option("--title <s>","Title").option("--department <s>","Department").option("--description <s>","Description").option("--experience-level <s>","Experience level").option("--location <s>","Location").option("--type <s>","Employment type").option("--applicants <n>","Applicant count",y).option("--salary-min <n>","Minimum salary",f).option("--salary-max <n>","Maximum salary",f).option("--status <s>","Status").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.title&&(t.title=e.title),e.department&&(t.department=e.department),e.description&&(t.description=e.description),e.experienceLevel&&(t.experienceLevel=e.experienceLevel),e.location&&(t.location=e.location),e.type&&(t.type=e.type),e.applicants!==void 0&&(t.applicants=e.applicants),e.salaryMin!==void 0&&(t.salaryMin=e.salaryMin),e.salaryMax!==void 0&&(t.salaryMax=e.salaryMax),e.status&&(t.status=e.status),e.requirements&&(t.requirements=C(e.requirements)),e.benefits&&(t.benefits=C(e.benefits)),e.postedDate&&(t.postedDate=e.postedDate),e.deadline&&(t.deadline=e.deadline),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(lt,{id:n,input:t});i("Job posting updated"),h$1(e,r.updateCrewJobPosting);}catch(t){g(t);}});}function Nt(m){let a=m.command("leave-requests").description("Crewfoundry leave requests");a.command("list").description("List leave requests").option("--employee <id>","Filter by employee ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(A)).crewfoundryBootstrap.leaveRequests;n.employee&&(t=t.filter(r=>r.employeeId===n.employee)),n.status&&(t=t.filter(r=>r.status===n.status)),h$1(n,t,{headers:["ID","Employee","Type","Days","Status"],rows:t.map(r=>[p(r.id,12),r.employeeName,r.type,String(r.days),r.status])});}catch(e){g(e);}}),a.command("get").description("Get a leave request by id").argument("<id>","Leave request ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(A)).crewfoundryBootstrap.leaveRequests.find(l=>l.id===n);if(!r)throw new o$1(`Leave request ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create a leave request").requiredOption("--employee-id <id>","Employee ID").requiredOption("--employee-name <s>","Employee name").requiredOption("--department <s>","Department").requiredOption("--type <s>","Leave type").requiredOption("--reason <s>","Reason").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y,1).option("--status <s>","Status","pending").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async n=>{try{let e={employeeId:n.employeeId,employeeName:n.employeeName,department:n.department,type:n.type,reason:n.reason,startDate:n.startDate,endDate:n.endDate,days:n.days??1,status:n.status??"pending"};n.approverName&&(e.approverName=n.approverName);let t=await b$1(ft,{input:e});i(`Leave request created for ${t.createCrewLeaveRequest.employeeName}`),h$1(n,t.createCrewLeaveRequest);}catch(e){g(e);}}),a.command("update").description("Update a leave request").argument("<id>","Leave request ID").option("--employee-id <id>","Employee ID").option("--employee-name <s>","Employee name").option("--department <s>","Department").option("--type <s>","Leave type").option("--reason <s>","Reason").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y).option("--status <s>","Status").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.employeeId&&(t.employeeId=e.employeeId),e.employeeName&&(t.employeeName=e.employeeName),e.department&&(t.department=e.department),e.type&&(t.type=e.type),e.reason&&(t.reason=e.reason),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.days!==void 0&&(t.days=e.days),e.status&&(t.status=e.status),e.approverName&&(t.approverName=e.approverName),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(yt,{id:n,input:t});i("Leave request updated"),h$1(e,r.updateCrewLeaveRequest);}catch(t){g(t);}});}function Lt(m){let a=m.command("announcements").description("Crewfoundry announcements");a.command("list").description("List announcements").option("--category <c>","Filter by category").option("--pinned-only","Only pinned announcements").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(b)).crewfoundryBootstrap.announcements;n.category&&(t=t.filter(r=>r.category===n.category)),n.pinnedOnly&&(t=t.filter(r=>r.isPinned)),h$1(n,t,{headers:["ID","Title","Author","Category","Priority","Pinned"],rows:t.map(r=>[p(r.id,12),r.title,r.author,r.category,r.priority,r.isPinned?"yes":"no"])});}catch(e){g(e);}}),a.command("get").description("Get an announcement by id").argument("<id>","Announcement ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(b)).crewfoundryBootstrap.announcements.find(l=>l.id===n);if(!r)throw new o$1(`Announcement ${n} not found`);h$1(e,r);}catch(t){g(t);}}),a.command("create").description("Create an announcement").requiredOption("--title <s>","Title").requiredOption("--content <s>","Content").requiredOption("--author <s>","Author").requiredOption("--author-role <s>","Author role").requiredOption("--category <s>","Category").requiredOption("--priority <s>","Priority").option("--pinned","Pin the announcement").option("--view-count <n>","Initial view count",y,0).option("--tags <csv>","Comma-separated tags").option("--created-at <iso>","Created at (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,content:n.content,author:n.author,authorRole:n.authorRole,category:n.category,priority:n.priority,isPinned:n.pinned??!1,viewCount:n.viewCount??0,tags:n.tags?C(n.tags):[],createdAt:n.createdAt??new Date().toISOString()},t=await b$1(gt,{input:e});i(`Announcement created: ${t.createCrewAnnouncement.title}`),h$1(n,t.createCrewAnnouncement);}catch(e){g(e);}});}function Ot(m){let a=m.command("notifications").description("Crewfoundry notifications");a.command("list").description("List notifications").option("--category <c>","Filter by category").option("--unread-only","Only unread notifications").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(H)).crewfoundryBootstrap.notifications;n.category&&(t=t.filter(r=>r.category===n.category)),n.unreadOnly&&(t=t.filter(r=>!r.read)),h$1(n,t,{headers:["ID","Title","Type","Category","Read"],rows:t.map(r=>[p(r.id,12),r.title,r.type,r.category,r.read?"yes":"no"])});}catch(e){g(e);}}),a.command("mark-read").description("Mark a notification as read").argument("<id>","Notification ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(wt,{id:n});if(!t.markCrewNotificationRead)throw new o$1(`Notification ${n} could not be marked read`);i(`Notification ${n} marked read`),h$1(e,{read:t.markCrewNotificationRead});}catch(t){g(t);}}),a.command("mark-all-read").description("Mark all notifications as read").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(Ct);i("All notifications marked read"),h$1(n,{read:e.markAllCrewNotificationsRead});}catch(e){g(e);}});}function o(m){return m==null?"-":String(m)}function vt(m){let a=m.command("directory").description("Crewfoundry read-only collections (clients, projects, teams, finance, learning)"),n=async(e,t,r,l)=>{try{let k=(await b$1(e)).crewfoundryBootstrap[t];h$1(r,k,{headers:l.headers,rows:k.map(l.row)});}catch(I){g(I);}};a.command("clients").description("List clients").option("-f, --format <format>","Output format").action(e=>n(K,"clients",e,{headers:["ID","Name","Industry","Status","Projects","Revenue"],row:t=>[p(t.id,12),o(t.name),o(t.industry),o(t.status),o(t.projects),o(t.revenue)]})),a.command("courses").description("List training courses").option("-f, --format <format>","Output format").action(e=>n(Q,"courses",e,{headers:["ID","Title","Category","Level","Enrolled","Status"],row:t=>[p(t.id,12),o(t.title),o(t.category),o(t.level),o(t.enrolled),o(t.status)]})),a.command("departments").description("List departments").option("-f, --format <format>","Output format").action(e=>n(z,"departments",e,{headers:["ID","Name","Head","Employees","Budget","Status"],row:t=>[p(t.id,12),o(t.name),o(t.headName),o(t.employeeCount),o(t.budget),o(t.status)]})),a.command("interviews").description("List interviews").option("-f, --format <format>","Output format").action(e=>n(X,"interviews",e,{headers:["ID","Candidate","Position","Type","Status","Interviewer"],row:t=>[p(t.id,12),o(t.candidateName),o(t.position),o(t.type),o(t.status),o(t.interviewerName)]})),a.command("invoices").description("List invoices").option("-f, --format <format>","Output format").action(e=>n(Z,"invoices",e,{headers:["ID","Number","Client","Amount","Status"],row:t=>[p(t.id,12),o(t.number),o(t.clientName),o(t.amount),o(t.status)]})),a.command("learning-paths").description("List learning paths").option("-f, --format <format>","Output format").action(e=>n(tt,"learningPaths",e,{headers:["ID","Title","Level","Enrolled","Completion %"],row:t=>[p(t.id,12),o(t.title),o(t.level),o(t.enrolled),o(t.completionRate)]})),a.command("marketplace-services").description("List marketplace services").option("-f, --format <format>","Output format").action(e=>n(et,"marketplaceServices",e,{headers:["ID","Title","Category","Provider","Price","Rating"],row:t=>[p(t.id,12),o(t.title),o(t.category),o(t.provider),o(t.price),o(t.rating)]})),a.command("payroll").description("List payroll records").option("-f, --format <format>","Output format").action(e=>n(nt,"payrollRecords",e,{headers:["ID","Employee","Period","Gross","Net","Status"],row:t=>[p(t.id,12),o(t.employeeName),o(t.period),o(t.grossPay),o(t.netPay),o(t.status)]})),a.command("projects").description("List projects").option("-f, --format <format>","Output format").action(e=>n(rt,"projects",e,{headers:["ID","Name","Status","Priority","Progress","Budget"],row:t=>[p(t.id,12),o(t.name),o(t.status),o(t.priority),o(t.progress),o(t.budget)]})),a.command("teams").description("List teams").option("-f, --format <format>","Output format").action(e=>n(ot,"teams",e,{headers:["ID","Name","Department","Lead","Members","Status"],row:t=>[p(t.id,12),o(t.name),o(t.department),o(t.leadName),o(t.memberCount),o(t.status)]})),a.command("time-entries").description("List time entries").option("-f, --format <format>","Output format").action(e=>n(at,"timeEntries",e,{headers:["ID","Employee","Date","Hours","Overtime","Status"],row:t=>[p(t.id,12),o(t.employeeName),o(t.date),o(t.totalHours),o(t.overtime),o(t.status)]})),a.command("vendors").description("List vendors").option("-f, --format <format>","Output format").action(e=>n(it,"vendors",e,{headers:["ID","Name","Category","Contract Value","Rating","Status"],row:t=>[p(t.id,12),o(t.name),o(t.category),o(t.contractValue),o(t.rating),o(t.status)]}));}function ht(m){let a=m.command("analytics").description("Crewfoundry analytics & bootstrap");a.command("bootstrap").description("Fetch the full Crewfoundry workspace snapshot (all collections)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(h);h$1(n,e.crewfoundryBootstrap);}catch(e){g(e);}}),a.command("summary").description("Per-collection counts derived from the bootstrap snapshot").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(h)).crewfoundryBootstrap,r={employees:t.employees.length,candidates:t.candidates.length,jobPostings:t.jobPostings.length,leaveRequests:t.leaveRequests.length,announcements:t.announcements.length,notifications:t.notifications.length,clients:t.clients.length,courses:t.courses.length,departments:t.departments.length,interviews:t.interviews.length,invoices:t.invoices.length,learningPaths:t.learningPaths.length,marketplaceServices:t.marketplaceServices.length,payrollRecords:t.payrollRecords.length,projects:t.projects.length,teams:t.teams.length,timeEntries:t.timeEntries.length,vendors:t.vendors.length};h$1(n,r,{headers:["Collection","Count"],rows:Object.entries(r).map(([l,I])=>[l,String(I)])});}catch(e){g(e);}}),m.command("health").description("Crewfoundry service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await d(Et))._empty??"ok";i(`crewfoundry: ${t}`),h$1(n,{health:t});}catch(e){g(e);}});}var Dt={id:"crewfoundry",version:"1.0.0",displayName:"Crewfoundry",dependsOn:["auth","workspaces"],register(m,a$1){a(a$1);let n=m.command("crewfoundry").description("Crewfoundry workforce & HR operations");It(n),St(n),Rt(n),Nt(n),Lt(n),Ot(n),vt(n),ht(n);}},fe=Dt;export{fe as default};
196
+ `;function y(m){let a=Number.parseInt(m,10);if(Number.isNaN(a))throw new o$1(`Expected an integer but got "${m}"`);return a}function f(m){let a=Number.parseFloat(m);if(Number.isNaN(a))throw new o$1(`Expected a number but got "${m}"`);return a}function C(m){return m.split(",").map(a=>a.trim()).filter(a=>a.length>0)}function It(m){let a=m.command("employees").description("Crewfoundry employees");a.command("list").description("List employees").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(D)).crewfoundryBootstrap.employees;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Name","Email","Department","Position","Status"],rows:t.map(r$1=>[r(r$1.id,12),`${r$1.firstName} ${r$1.lastName}`,r$1.email,r$1.department,r$1.position,r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get an employee by id").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(D)).crewfoundryBootstrap.employees.find(l=>l.id===n);if(!r)throw new o$1(`Employee ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create an employee").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--department <s>","Department").requiredOption("--location <s>","Location").requiredOption("--salary <n>","Salary",f).option("--type <s>","Employment type (e.g. full-time)","full-time").option("--status <s>","Status","active").option("--performance-score <n>","Performance score",f,0).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,department:n.department,location:n.location,salary:n.salary,type:n.type??"full-time",status:n.status??"active",performanceScore:n.performanceScore??0,startDate:n.startDate??new Date().toISOString()};n.managerId&&(e.managerId=n.managerId),n.avatar&&(e.avatar=n.avatar);let t=await b$1(st,{input:e});k(`Employee created: ${t.createCrewEmployee.firstName} ${t.createCrewEmployee.lastName}`),i(n,t.createCrewEmployee);}catch(e){h$1(e);}}),a.command("update").description("Update an employee").argument("<id>","Employee ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--department <s>","Department").option("--location <s>","Location").option("--salary <n>","Salary",f).option("--type <s>","Employment type").option("--status <s>","Status").option("--performance-score <n>","Performance score",f).option("--manager-id <id>","Manager ID").option("--avatar <url>","Avatar URL").option("--start-date <iso>","Start date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.department&&(t.department=e.department),e.location&&(t.location=e.location),e.salary!==void 0&&(t.salary=e.salary),e.type&&(t.type=e.type),e.status&&(t.status=e.status),e.performanceScore!==void 0&&(t.performanceScore=e.performanceScore),e.managerId&&(t.managerId=e.managerId),e.avatar&&(t.avatar=e.avatar),e.startDate&&(t.startDate=e.startDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(pt,{id:n,input:t});k("Employee updated"),i(e,r.updateCrewEmployee);}catch(t){h$1(t);}}),a.command("remove").description("Remove an employee").argument("<id>","Employee ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(mt,{id:n});if(!t.removeCrewEmployee)throw new o$1(`Employee ${n} could not be removed`);k(`Employee ${n} removed`),i(e,{removed:t.removeCrewEmployee});}catch(t){h$1(t);}});}function St(m){let a=m.command("candidates").description("Crewfoundry recruiting candidates");a.command("list").description("List candidates").option("--status <s>","Filter by status").option("--position <p>","Filter by position").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(T)).crewfoundryBootstrap.candidates;n.status&&(t=t.filter(r=>r.status===n.status)),n.position&&(t=t.filter(r=>r.position===n.position)),i(n,t,{headers:["ID","Name","Position","Source","Status","Rating"],rows:t.map(r$1=>[r(r$1.id,12),`${r$1.firstName} ${r$1.lastName}`,r$1.position,r$1.source,r$1.status,String(r$1.rating)])});}catch(e){h$1(e);}}),a.command("get").description("Get a candidate by id").argument("<id>","Candidate ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(T)).crewfoundryBootstrap.candidates.find(l=>l.id===n);if(!r)throw new o$1(`Candidate ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a candidate").requiredOption("--first-name <s>","First name").requiredOption("--last-name <s>","Last name").requiredOption("--email <s>","Email").requiredOption("--phone <s>","Phone").requiredOption("--position <s>","Position").requiredOption("--source <s>","Source").option("--experience <n>","Years of experience",y,0).option("--rating <n>","Rating",f,0).option("--status <s>","Status","new").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={firstName:n.firstName,lastName:n.lastName,email:n.email,phone:n.phone,position:n.position,source:n.source,experience:n.experience??0,rating:n.rating??0,status:n.status??"new",skills:n.skills?C(n.skills):[],appliedDate:n.appliedDate??new Date().toISOString()};n.currentCompany&&(e.currentCompany=n.currentCompany),n.resumeUrl&&(e.resumeUrl=n.resumeUrl),n.notes&&(e.notes=n.notes);let t=await b$1(dt,{input:e});k(`Candidate created: ${t.createCrewCandidate.firstName} ${t.createCrewCandidate.lastName}`),i(n,t.createCrewCandidate);}catch(e){h$1(e);}}),a.command("update").description("Update a candidate").argument("<id>","Candidate ID").option("--first-name <s>","First name").option("--last-name <s>","Last name").option("--email <s>","Email").option("--phone <s>","Phone").option("--position <s>","Position").option("--source <s>","Source").option("--experience <n>","Years of experience",y).option("--rating <n>","Rating",f).option("--status <s>","Status").option("--current-company <s>","Current company").option("--skills <csv>","Comma-separated skills").option("--resume-url <url>","Resume URL").option("--notes <s>","Notes").option("--applied-date <iso>","Applied date (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.firstName&&(t.firstName=e.firstName),e.lastName&&(t.lastName=e.lastName),e.email&&(t.email=e.email),e.phone&&(t.phone=e.phone),e.position&&(t.position=e.position),e.source&&(t.source=e.source),e.experience!==void 0&&(t.experience=e.experience),e.rating!==void 0&&(t.rating=e.rating),e.status&&(t.status=e.status),e.currentCompany&&(t.currentCompany=e.currentCompany),e.skills&&(t.skills=C(e.skills)),e.resumeUrl&&(t.resumeUrl=e.resumeUrl),e.notes&&(t.notes=e.notes),e.appliedDate&&(t.appliedDate=e.appliedDate),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(ct,{id:n,input:t});k("Candidate updated"),i(e,r.updateCrewCandidate);}catch(t){h$1(t);}});}function Rt(m){let a=m.command("job-postings").description("Crewfoundry job postings");a.command("list").description("List job postings").option("--department <d>","Filter by department").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(_)).crewfoundryBootstrap.jobPostings;n.department&&(t=t.filter(r=>r.department===n.department)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Title","Department","Type","Applicants","Status"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.department,r$1.type,String(r$1.applicants),r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get a job posting by id").argument("<id>","Job posting ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(_)).crewfoundryBootstrap.jobPostings.find(l=>l.id===n);if(!r)throw new o$1(`Job posting ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a job posting").requiredOption("--title <s>","Title").requiredOption("--department <s>","Department").requiredOption("--description <s>","Description").requiredOption("--experience-level <s>","Experience level").requiredOption("--location <s>","Location").requiredOption("--type <s>","Employment type (e.g. full-time)").option("--applicants <n>","Applicant count",y,0).option("--salary-min <n>","Minimum salary",f,0).option("--salary-max <n>","Maximum salary",f,0).option("--status <s>","Status","open").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,department:n.department,description:n.description,experienceLevel:n.experienceLevel,location:n.location,type:n.type,applicants:n.applicants??0,salaryMin:n.salaryMin??0,salaryMax:n.salaryMax??0,status:n.status??"open",requirements:n.requirements?C(n.requirements):[],benefits:n.benefits?C(n.benefits):[],postedDate:n.postedDate??new Date().toISOString()};n.deadline&&(e.deadline=n.deadline);let t=await b$1(ut,{input:e});k(`Job posting created: ${t.createCrewJobPosting.title}`),i(n,t.createCrewJobPosting);}catch(e){h$1(e);}}),a.command("update").description("Update a job posting").argument("<id>","Job posting ID").option("--title <s>","Title").option("--department <s>","Department").option("--description <s>","Description").option("--experience-level <s>","Experience level").option("--location <s>","Location").option("--type <s>","Employment type").option("--applicants <n>","Applicant count",y).option("--salary-min <n>","Minimum salary",f).option("--salary-max <n>","Maximum salary",f).option("--status <s>","Status").option("--requirements <csv>","Comma-separated requirements").option("--benefits <csv>","Comma-separated benefits").option("--posted-date <iso>","Posted date (ISO)").option("--deadline <iso>","Deadline (ISO)").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.title&&(t.title=e.title),e.department&&(t.department=e.department),e.description&&(t.description=e.description),e.experienceLevel&&(t.experienceLevel=e.experienceLevel),e.location&&(t.location=e.location),e.type&&(t.type=e.type),e.applicants!==void 0&&(t.applicants=e.applicants),e.salaryMin!==void 0&&(t.salaryMin=e.salaryMin),e.salaryMax!==void 0&&(t.salaryMax=e.salaryMax),e.status&&(t.status=e.status),e.requirements&&(t.requirements=C(e.requirements)),e.benefits&&(t.benefits=C(e.benefits)),e.postedDate&&(t.postedDate=e.postedDate),e.deadline&&(t.deadline=e.deadline),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(lt,{id:n,input:t});k("Job posting updated"),i(e,r.updateCrewJobPosting);}catch(t){h$1(t);}});}function Nt(m){let a=m.command("leave-requests").description("Crewfoundry leave requests");a.command("list").description("List leave requests").option("--employee <id>","Filter by employee ID").option("--status <s>","Filter by status").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(A)).crewfoundryBootstrap.leaveRequests;n.employee&&(t=t.filter(r=>r.employeeId===n.employee)),n.status&&(t=t.filter(r=>r.status===n.status)),i(n,t,{headers:["ID","Employee","Type","Days","Status"],rows:t.map(r$1=>[r(r$1.id,12),r$1.employeeName,r$1.type,String(r$1.days),r$1.status])});}catch(e){h$1(e);}}),a.command("get").description("Get a leave request by id").argument("<id>","Leave request ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(A)).crewfoundryBootstrap.leaveRequests.find(l=>l.id===n);if(!r)throw new o$1(`Leave request ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create a leave request").requiredOption("--employee-id <id>","Employee ID").requiredOption("--employee-name <s>","Employee name").requiredOption("--department <s>","Department").requiredOption("--type <s>","Leave type").requiredOption("--reason <s>","Reason").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y,1).option("--status <s>","Status","pending").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async n=>{try{let e={employeeId:n.employeeId,employeeName:n.employeeName,department:n.department,type:n.type,reason:n.reason,startDate:n.startDate,endDate:n.endDate,days:n.days??1,status:n.status??"pending"};n.approverName&&(e.approverName=n.approverName);let t=await b$1(ft,{input:e});k(`Leave request created for ${t.createCrewLeaveRequest.employeeName}`),i(n,t.createCrewLeaveRequest);}catch(e){h$1(e);}}),a.command("update").description("Update a leave request").argument("<id>","Leave request ID").option("--employee-id <id>","Employee ID").option("--employee-name <s>","Employee name").option("--department <s>","Department").option("--type <s>","Leave type").option("--reason <s>","Reason").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--days <n>","Number of days",y).option("--status <s>","Status").option("--approver-name <s>","Approver name").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t={};if(e.employeeId&&(t.employeeId=e.employeeId),e.employeeName&&(t.employeeName=e.employeeName),e.department&&(t.department=e.department),e.type&&(t.type=e.type),e.reason&&(t.reason=e.reason),e.startDate&&(t.startDate=e.startDate),e.endDate&&(t.endDate=e.endDate),e.days!==void 0&&(t.days=e.days),e.status&&(t.status=e.status),e.approverName&&(t.approverName=e.approverName),!Object.keys(t).length)throw new o$1("No updates specified");let r=await b$1(yt,{id:n,input:t});k("Leave request updated"),i(e,r.updateCrewLeaveRequest);}catch(t){h$1(t);}});}function Lt(m){let a=m.command("announcements").description("Crewfoundry announcements");a.command("list").description("List announcements").option("--category <c>","Filter by category").option("--pinned-only","Only pinned announcements").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(b)).crewfoundryBootstrap.announcements;n.category&&(t=t.filter(r=>r.category===n.category)),n.pinnedOnly&&(t=t.filter(r=>r.isPinned)),i(n,t,{headers:["ID","Title","Author","Category","Priority","Pinned"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.author,r$1.category,r$1.priority,r$1.isPinned?"yes":"no"])});}catch(e){h$1(e);}}),a.command("get").description("Get an announcement by id").argument("<id>","Announcement ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let r=(await b$1(b)).crewfoundryBootstrap.announcements.find(l=>l.id===n);if(!r)throw new o$1(`Announcement ${n} not found`);i(e,r);}catch(t){h$1(t);}}),a.command("create").description("Create an announcement").requiredOption("--title <s>","Title").requiredOption("--content <s>","Content").requiredOption("--author <s>","Author").requiredOption("--author-role <s>","Author role").requiredOption("--category <s>","Category").requiredOption("--priority <s>","Priority").option("--pinned","Pin the announcement").option("--view-count <n>","Initial view count",y,0).option("--tags <csv>","Comma-separated tags").option("--created-at <iso>","Created at (ISO)").option("-f, --format <format>","Output format").action(async n=>{try{let e={title:n.title,content:n.content,author:n.author,authorRole:n.authorRole,category:n.category,priority:n.priority,isPinned:n.pinned??!1,viewCount:n.viewCount??0,tags:n.tags?C(n.tags):[],createdAt:n.createdAt??new Date().toISOString()},t=await b$1(gt,{input:e});k(`Announcement created: ${t.createCrewAnnouncement.title}`),i(n,t.createCrewAnnouncement);}catch(e){h$1(e);}});}function Ot(m){let a=m.command("notifications").description("Crewfoundry notifications");a.command("list").description("List notifications").option("--category <c>","Filter by category").option("--unread-only","Only unread notifications").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(H)).crewfoundryBootstrap.notifications;n.category&&(t=t.filter(r=>r.category===n.category)),n.unreadOnly&&(t=t.filter(r=>!r.read)),i(n,t,{headers:["ID","Title","Type","Category","Read"],rows:t.map(r$1=>[r(r$1.id,12),r$1.title,r$1.type,r$1.category,r$1.read?"yes":"no"])});}catch(e){h$1(e);}}),a.command("mark-read").description("Mark a notification as read").argument("<id>","Notification ID").option("-f, --format <format>","Output format").action(async(n,e)=>{try{let t=await b$1(wt,{id:n});if(!t.markCrewNotificationRead)throw new o$1(`Notification ${n} could not be marked read`);k(`Notification ${n} marked read`),i(e,{read:t.markCrewNotificationRead});}catch(t){h$1(t);}}),a.command("mark-all-read").description("Mark all notifications as read").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(Ct);k("All notifications marked read"),i(n,{read:e.markAllCrewNotificationsRead});}catch(e){h$1(e);}});}function o(m){return m==null?"-":String(m)}function vt(m){let a=m.command("directory").description("Crewfoundry read-only collections (clients, projects, teams, finance, learning)"),n=async(e,t,r,l)=>{try{let k=(await b$1(e)).crewfoundryBootstrap[t];i(r,k,{headers:l.headers,rows:k.map(l.row)});}catch(I){h$1(I);}};a.command("clients").description("List clients").option("-f, --format <format>","Output format").action(e=>n(K,"clients",e,{headers:["ID","Name","Industry","Status","Projects","Revenue"],row:t=>[r(t.id,12),o(t.name),o(t.industry),o(t.status),o(t.projects),o(t.revenue)]})),a.command("courses").description("List training courses").option("-f, --format <format>","Output format").action(e=>n(Q,"courses",e,{headers:["ID","Title","Category","Level","Enrolled","Status"],row:t=>[r(t.id,12),o(t.title),o(t.category),o(t.level),o(t.enrolled),o(t.status)]})),a.command("departments").description("List departments").option("-f, --format <format>","Output format").action(e=>n(z,"departments",e,{headers:["ID","Name","Head","Employees","Budget","Status"],row:t=>[r(t.id,12),o(t.name),o(t.headName),o(t.employeeCount),o(t.budget),o(t.status)]})),a.command("interviews").description("List interviews").option("-f, --format <format>","Output format").action(e=>n(X,"interviews",e,{headers:["ID","Candidate","Position","Type","Status","Interviewer"],row:t=>[r(t.id,12),o(t.candidateName),o(t.position),o(t.type),o(t.status),o(t.interviewerName)]})),a.command("invoices").description("List invoices").option("-f, --format <format>","Output format").action(e=>n(Z,"invoices",e,{headers:["ID","Number","Client","Amount","Status"],row:t=>[r(t.id,12),o(t.number),o(t.clientName),o(t.amount),o(t.status)]})),a.command("learning-paths").description("List learning paths").option("-f, --format <format>","Output format").action(e=>n(tt,"learningPaths",e,{headers:["ID","Title","Level","Enrolled","Completion %"],row:t=>[r(t.id,12),o(t.title),o(t.level),o(t.enrolled),o(t.completionRate)]})),a.command("marketplace-services").description("List marketplace services").option("-f, --format <format>","Output format").action(e=>n(et,"marketplaceServices",e,{headers:["ID","Title","Category","Provider","Price","Rating"],row:t=>[r(t.id,12),o(t.title),o(t.category),o(t.provider),o(t.price),o(t.rating)]})),a.command("payroll").description("List payroll records").option("-f, --format <format>","Output format").action(e=>n(nt,"payrollRecords",e,{headers:["ID","Employee","Period","Gross","Net","Status"],row:t=>[r(t.id,12),o(t.employeeName),o(t.period),o(t.grossPay),o(t.netPay),o(t.status)]})),a.command("projects").description("List projects").option("-f, --format <format>","Output format").action(e=>n(rt,"projects",e,{headers:["ID","Name","Status","Priority","Progress","Budget"],row:t=>[r(t.id,12),o(t.name),o(t.status),o(t.priority),o(t.progress),o(t.budget)]})),a.command("teams").description("List teams").option("-f, --format <format>","Output format").action(e=>n(ot,"teams",e,{headers:["ID","Name","Department","Lead","Members","Status"],row:t=>[r(t.id,12),o(t.name),o(t.department),o(t.leadName),o(t.memberCount),o(t.status)]})),a.command("time-entries").description("List time entries").option("-f, --format <format>","Output format").action(e=>n(at,"timeEntries",e,{headers:["ID","Employee","Date","Hours","Overtime","Status"],row:t=>[r(t.id,12),o(t.employeeName),o(t.date),o(t.totalHours),o(t.overtime),o(t.status)]})),a.command("vendors").description("List vendors").option("-f, --format <format>","Output format").action(e=>n(it,"vendors",e,{headers:["ID","Name","Category","Contract Value","Rating","Status"],row:t=>[r(t.id,12),o(t.name),o(t.category),o(t.contractValue),o(t.rating),o(t.status)]}));}function ht(m){let a=m.command("analytics").description("Crewfoundry analytics & bootstrap");a.command("bootstrap").description("Fetch the full Crewfoundry workspace snapshot (all collections)").option("-f, --format <format>","Output format").action(async n=>{try{let e=await b$1(h);i(n,e.crewfoundryBootstrap);}catch(e){h$1(e);}}),a.command("summary").description("Per-collection counts derived from the bootstrap snapshot").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await b$1(h)).crewfoundryBootstrap,r={employees:t.employees.length,candidates:t.candidates.length,jobPostings:t.jobPostings.length,leaveRequests:t.leaveRequests.length,announcements:t.announcements.length,notifications:t.notifications.length,clients:t.clients.length,courses:t.courses.length,departments:t.departments.length,interviews:t.interviews.length,invoices:t.invoices.length,learningPaths:t.learningPaths.length,marketplaceServices:t.marketplaceServices.length,payrollRecords:t.payrollRecords.length,projects:t.projects.length,teams:t.teams.length,timeEntries:t.timeEntries.length,vendors:t.vendors.length};i(n,r,{headers:["Collection","Count"],rows:Object.entries(r).map(([l,I])=>[l,String(I)])});}catch(e){h$1(e);}}),m.command("health").description("Crewfoundry service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=(await d(Et))._empty??"ok";k(`crewfoundry: ${t}`),i(n,{health:t});}catch(e){h$1(e);}});}var Dt={id:"crewfoundry",version:"1.0.0",displayName:"Crewfoundry",dependsOn:["auth","workspaces"],register(m,a$1){a(a$1);let n=m.command("crewfoundry").description("Crewfoundry workforce & HR operations");It(n),St(n),Rt(n),Nt(n),Lt(n),Ot(n),vt(n),ht(n);}},fe=Dt;export{fe as default};
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var l=class extends Error{exitCode;hint;constructor(a,d){super(a),this.name="CliUserError",this.exitCode=d?.exitCode??1,this.hint=d?.hint;}};var m=class extends Error{cause;constructor(a,d){super(a),this.name="CliInternalError",this.cause=d;}};var C=null;function b(s){C=s;}function I(){if(!C)throw new m("vibecontrols module helpers used before setHelpersContext was called");return C}async function r(s,a){return I().gql.global.request(s,a)}function i(s){let a=s instanceof Error?s.message:String(s);throw new l(a)}function c(s,a,d){I().output.formatAndOutput(s,a,d);}function u(s){I().output.printSuccess(s);}function k(s){return I().output.formatStatus(s)}function A(s,a){return I().output.truncate(s,a)}var E=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var l=class extends Error{exitCode;hint;constructor(a,d){super(a),this.name="CliUserError",this.exitCode=d?.exitCode??1,this.hint=d?.hint;}};var m=class extends Error{cause;constructor(a,d){super(a),this.name="CliInternalError",this.cause=d;}};var C=null;function b(s){C=s;}function A(){if(!C)throw new m("vibecontrols module helpers used before setHelpersContext was called");return C}async function r(s,a){return A().gql.global.request(s,a)}function i(s){let a=s instanceof Error?s.message:String(s);throw new l(a)}function c(s,a,d){A().output.formatAndOutput(s,a,d);}function u(s){A().output.printSuccess(s);}function k(s){return A().output.formatStatus(s)}function w(s,a){return A().output.truncate(s,a)}var E=`
2
2
  query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
3
  developerOrganizations(limit: $limit, offset: $offset) {
4
4
  edges { node { id name slug tier isVerified totalApps publishedApps } }
@@ -136,4 +136,4 @@
136
136
  id status reviewStatus reviewNotes
137
137
  }
138
138
  }
139
- `;function K(s){let a=s.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),d=a.command("orgs").description("Publisher organizations");d.command("list").description("List devportal organizations").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(E,{limit:e.limit,offset:0})).developerOrganizations.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:n.map(o=>[A(o.id,12),o.name,o.slug??"-",o.tier??"-",String(!!o.isVerified),String(o.totalApps??0)])});}catch(t){i(t);}}),d.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(O,{id:e});if(!n.developerOrganization)throw new l(`Organization ${e} not found`);c(t,n.developerOrganization);}catch(n){i(n);}}),d.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,slug:e.slug,description:e.description,contactEmail:e.contactEmail,websiteUrl:e.website},n=await r(S,{input:t});u(`Organization created: ${n.createDeveloperOrganization.name}`),c(e,n.createDeveloperOrganization);}catch(t){i(t);}}),d.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),!Object.keys(n).length)throw new l("No updates specified");let o=await r(R,{id:e,input:n});u("Organization updated"),c(t,o.updateDeveloperOrganization);}catch(n){i(n);}}),d.command("delete").description("Delete an organization").argument("<id>").action(async e=>{try{await r(D,{id:e}),u("Organization deleted");}catch(t){i(t);}});let g=a.command("apps").description("Applications");g.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(P,{organizationId:e.organization,status:e.status?.toUpperCase(),limit:e.limit})).applications.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Status","Installs","Rating"],rows:n.map(o=>[A(o.id,12),o.name,k(o.status),String(o.installCount??0),String(o.averageRating??"-")])});}catch(t){i(t);}}),g.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r($,{id:e});if(!n.application)throw new l(`Application ${e} not found`);c(t,n.application);}catch(n){i(n);}}),g.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,developerOrganizationId:e.organization,appType:(e.type??"API_INTEGRATION").toUpperCase(),description:e.description},n=await r(L,{input:t});u(`Application created: ${n.createApplication.name}`),c(e,n.createApplication);}catch(t){i(t);}}),g.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.description!==void 0&&(n.description=t.description),t.pricing&&(n.pricingType=t.pricing.toUpperCase()),t.docsUrl&&(n.documentationUrl=t.docsUrl),!Object.keys(n).length)throw new l("No updates specified");let o=await r(N,{id:e,input:n});u("Application updated"),c(t,o.updateApplication);}catch(n){i(n);}}),g.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(e,t)=>{try{await r(_,{id:e,notes:t.notes}),u("Submitted for review");}catch(n){i(n);}}),g.command("publish").description("Publish an application").argument("<id>").action(async e=>{try{await r(q,{id:e}),u("Application published");}catch(t){i(t);}}),g.command("delete").description("Delete an application").argument("<id>").action(async e=>{try{await r(z,{id:e}),u("Application deleted");}catch(t){i(t);}});let y=g.command("versions").description("Application versions");y.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let o=(await r(U,{applicationId:e})).application?.versions.edges.map(f=>f.node)??[];c(t,o,{headers:["ID","Version","Status","Latest","Stable"],rows:o.map(f=>[A(f.id,12),f.version,k(f.status),String(!!f.isLatest),String(!!f.isStable)])});}catch(n){i(n);}}),y.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async e=>{try{let t={version:e.version,releaseNotes:e.notes,packageUrl:e.package},n=await r(W,{applicationId:e.application,input:t});u(`Version created: ${n.createApplicationVersion.version}`),c(e,n.createApplicationVersion);}catch(t){i(t);}});let w=g.command("webhooks").description("Application webhooks");w.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(G,{applicationId:e});c(t,n.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:n.webhooks.map(o=>[A(o.id,12),o.name,A(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){i(n);}}),w.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",e=>parseInt(e,10),5).option("-f, --format <format>").action(async e=>{try{let t={name:e.name,url:e.url,events:e.events.split(",").map(o=>o.trim()).filter(Boolean),retryEnabled:!0,maxRetries:e.maxRetries},n=await r(V,{applicationId:e.application,input:t});u("Webhook created. Store the signing secret now: it is shown only once."),c(e,n.createWebhook);}catch(t){i(t);}}),w.command("remove").description("Remove a webhook").argument("<id>").action(async e=>{try{await r(F,{id:e}),u("Webhook removed");}catch(t){i(t);}}),g.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async e=>{try{let t=await r(j,{applicationId:e.application,period:(e.period??"LAST_30_DAYS").toUpperCase(),startDate:e.from,endDate:e.to});c(e,t.applicationAnalytics);}catch(t){i(t);}}),a.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async e=>{try{let t=await r(M,{organizationId:e.organization,period:(e.period??"LAST_30_DAYS").toUpperCase()});c(e,t.developerOrgRevenueSummary);}catch(t){i(t);}});let h=a.command("admin").description("Admin operations").command("reviews").description("Application review queue");h.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t=await r(B,{status:(e.status??"SUBMITTED").toUpperCase(),limit:e.limit});c(e,t.applications.edges.map(n=>n.node));}catch(t){i(t);}}),h.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(e,t)=>{try{await r(H,{id:e,notes:t.notes}),u("Application approved");}catch(n){i(n);}}),h.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(e,t)=>{try{await r(Y,{id:e,notes:t.notes}),u("Application rejected");}catch(n){i(n);}});}var ce={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(s,a){b(a),K(s);}},Ct=ce;module.exports=Ct;
139
+ `;function K(s){let a=s.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),d=a.command("orgs").description("Publisher organizations");d.command("list").description("List devportal organizations").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(E,{limit:e.limit,offset:0})).developerOrganizations.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:n.map(o=>[w(o.id,12),o.name,o.slug??"-",o.tier??"-",String(!!o.isVerified),String(o.totalApps??0)])});}catch(t){i(t);}}),d.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(O,{id:e});if(!n.developerOrganization)throw new l(`Organization ${e} not found`);c(t,n.developerOrganization);}catch(n){i(n);}}),d.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,slug:e.slug,description:e.description,contactEmail:e.contactEmail,websiteUrl:e.website},n=await r(S,{input:t});u(`Organization created: ${n.createDeveloperOrganization.name}`),c(e,n.createDeveloperOrganization);}catch(t){i(t);}}),d.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.name&&(n.name=t.name),t.description!==void 0&&(n.description=t.description),!Object.keys(n).length)throw new l("No updates specified");let o=await r(R,{id:e,input:n});u("Organization updated"),c(t,o.updateDeveloperOrganization);}catch(n){i(n);}}),d.command("delete").description("Delete an organization").argument("<id>").action(async e=>{try{await r(D,{id:e}),u("Organization deleted");}catch(t){i(t);}});let g=a.command("apps").description("Applications");g.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let n=(await r(P,{organizationId:e.organization,status:e.status?.toUpperCase(),limit:e.limit})).applications.edges.map(o=>o.node);c(e,n,{headers:["ID","Name","Status","Installs","Rating"],rows:n.map(o=>[w(o.id,12),o.name,k(o.status),String(o.installCount??0),String(o.averageRating??"-")])});}catch(t){i(t);}}),g.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r($,{id:e});if(!n.application)throw new l(`Application ${e} not found`);c(t,n.application);}catch(n){i(n);}}),g.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async e=>{try{let t={name:e.name,developerOrganizationId:e.organization,appType:(e.type??"API_INTEGRATION").toUpperCase(),description:e.description},n=await r(L,{input:t});u(`Application created: ${n.createApplication.name}`),c(e,n.createApplication);}catch(t){i(t);}}),g.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(e,t)=>{try{let n={};if(t.description!==void 0&&(n.description=t.description),t.pricing&&(n.pricingType=t.pricing.toUpperCase()),t.docsUrl&&(n.documentationUrl=t.docsUrl),!Object.keys(n).length)throw new l("No updates specified");let o=await r(N,{id:e,input:n});u("Application updated"),c(t,o.updateApplication);}catch(n){i(n);}}),g.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(e,t)=>{try{await r(_,{id:e,notes:t.notes}),u("Submitted for review");}catch(n){i(n);}}),g.command("publish").description("Publish an application").argument("<id>").action(async e=>{try{await r(q,{id:e}),u("Application published");}catch(t){i(t);}}),g.command("delete").description("Delete an application").argument("<id>").action(async e=>{try{await r(z,{id:e}),u("Application deleted");}catch(t){i(t);}});let y=g.command("versions").description("Application versions");y.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let o=(await r(U,{applicationId:e})).application?.versions.edges.map(f=>f.node)??[];c(t,o,{headers:["ID","Version","Status","Latest","Stable"],rows:o.map(f=>[w(f.id,12),f.version,k(f.status),String(!!f.isLatest),String(!!f.isStable)])});}catch(n){i(n);}}),y.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async e=>{try{let t={version:e.version,releaseNotes:e.notes,packageUrl:e.package},n=await r(W,{applicationId:e.application,input:t});u(`Version created: ${n.createApplicationVersion.version}`),c(e,n.createApplicationVersion);}catch(t){i(t);}});let I=g.command("webhooks").description("Application webhooks");I.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await r(G,{applicationId:e});c(t,n.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:n.webhooks.map(o=>[w(o.id,12),o.name,w(o.url,40),String(!!o.isActive),String(o.failureCount??0)])});}catch(n){i(n);}}),I.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",e=>parseInt(e,10),5).option("-f, --format <format>").action(async e=>{try{let t={name:e.name,url:e.url,events:e.events.split(",").map(o=>o.trim()).filter(Boolean),retryEnabled:!0,maxRetries:e.maxRetries},n=await r(V,{applicationId:e.application,input:t});u("Webhook created. Store the signing secret now: it is shown only once."),c(e,n.createWebhook);}catch(t){i(t);}}),I.command("remove").description("Remove a webhook").argument("<id>").action(async e=>{try{await r(F,{id:e}),u("Webhook removed");}catch(t){i(t);}}),g.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async e=>{try{let t=await r(j,{applicationId:e.application,period:(e.period??"LAST_30_DAYS").toUpperCase(),startDate:e.from,endDate:e.to});c(e,t.applicationAnalytics);}catch(t){i(t);}}),a.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async e=>{try{let t=await r(M,{organizationId:e.organization,period:(e.period??"LAST_30_DAYS").toUpperCase()});c(e,t.developerOrgRevenueSummary);}catch(t){i(t);}});let h=a.command("admin").description("Admin operations").command("reviews").description("Application review queue");h.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t=await r(B,{status:(e.status??"SUBMITTED").toUpperCase(),limit:e.limit});c(e,t.applications.edges.map(n=>n.node));}catch(t){i(t);}}),h.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(e,t)=>{try{await r(H,{id:e,notes:t.notes}),u("Application approved");}catch(n){i(n);}}),h.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(e,t)=>{try{await r(Y,{id:e,notes:t.notes}),u("Application rejected");}catch(n){i(n);}});}var ce={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(s,a){b(a),K(s);}},Ct=ce;module.exports=Ct;
@@ -1,4 +1,4 @@
1
- import {a,c,h as h$1,p,g,i,n}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
1
+ import {a,c,i,r,h as h$1,k as k$1,p}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var R=`
2
2
  query ListDeveloperOrganizations($limit: Int, $offset: Int) {
3
3
  developerOrganizations(limit: $limit, offset: $offset) {
4
4
  edges { node { id name slug tier isVerified totalApps publishedApps } }
@@ -136,4 +136,4 @@ import {a,c,h as h$1,p,g,i,n}from'../../chunk-W4JZR7RJ.js';import {o}from'../../
136
136
  id status reviewStatus reviewNotes
137
137
  }
138
138
  }
139
- `;function M(g$1){let d=g$1.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),m=d.command("orgs").description("Publisher organizations");m.command("list").description("List devportal organizations").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(R,{limit:t.limit,offset:0})).developerOrganizations.edges.map(n=>n.node);h$1(t,e,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:e.map(n=>[p(n.id,12),n.name,n.slug??"-",n.tier??"-",String(!!n.isVerified),String(n.totalApps??0)])});}catch(i){g(i);}}),m.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,i)=>{try{let e=await c(w,{id:t});if(!e.developerOrganization)throw new o(`Organization ${t} not found`);h$1(i,e.developerOrganization);}catch(e){g(e);}}),m.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,slug:t.slug,description:t.description,contactEmail:t.contactEmail,websiteUrl:t.website},e=await c(D,{input:i$1});i(`Organization created: ${e.createDeveloperOrganization.name}`),h$1(t,e.createDeveloperOrganization);}catch(i){g(i);}}),m.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.description!==void 0&&(e.description=i$1.description),!Object.keys(e).length)throw new o("No updates specified");let n=await c(S,{id:t,input:e});i("Organization updated"),h$1(i$1,n.updateDeveloperOrganization);}catch(e){g(e);}}),m.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await c(C,{id:t}),i("Organization deleted");}catch(i){g(i);}});let p$1=d.command("apps").description("Applications");p$1.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(y,{organizationId:t.organization,status:t.status?.toUpperCase(),limit:t.limit})).applications.edges.map(n=>n.node);h$1(t,e,{headers:["ID","Name","Status","Installs","Rating"],rows:e.map(n$1=>[p(n$1.id,12),n$1.name,n(n$1.status),String(n$1.installCount??0),String(n$1.averageRating??"-")])});}catch(i){g(i);}}),p$1.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(t,i)=>{try{let e=await c(P,{id:t});if(!e.application)throw new o(`Application ${t} not found`);h$1(i,e.application);}catch(e){g(e);}}),p$1.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,developerOrganizationId:t.organization,appType:(t.type??"API_INTEGRATION").toUpperCase(),description:t.description},e=await c(h,{input:i$1});i(`Application created: ${e.createApplication.name}`),h$1(t,e.createApplication);}catch(i){g(i);}}),p$1.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.description!==void 0&&(e.description=i$1.description),i$1.pricing&&(e.pricingType=i$1.pricing.toUpperCase()),i$1.docsUrl&&(e.documentationUrl=i$1.docsUrl),!Object.keys(e).length)throw new o("No updates specified");let n=await c(N,{id:t,input:e});i("Application updated"),h$1(i$1,n.updateApplication);}catch(e){g(e);}}),p$1.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,i$1)=>{try{await c($,{id:t,notes:i$1.notes}),i("Submitted for review");}catch(e){g(e);}}),p$1.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await c(b,{id:t}),i("Application published");}catch(i){g(i);}}),p$1.command("delete").description("Delete an application").argument("<id>").action(async t=>{try{await c(_,{id:t}),i("Application deleted");}catch(i){g(i);}});let O=p$1.command("versions").description("Application versions");O.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i)=>{try{let n$1=(await c(L,{applicationId:t})).application?.versions.edges.map(c=>c.node)??[];h$1(i,n$1,{headers:["ID","Version","Status","Latest","Stable"],rows:n$1.map(c=>[p(c.id,12),c.version,n(c.status),String(!!c.isLatest),String(!!c.isStable)])});}catch(e){g(e);}}),O.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async t=>{try{let i$1={version:t.version,releaseNotes:t.notes,packageUrl:t.package},e=await c(z,{applicationId:t.application,input:i$1});i(`Version created: ${e.createApplicationVersion.version}`),h$1(t,e.createApplicationVersion);}catch(i){g(i);}});let A=p$1.command("webhooks").description("Application webhooks");A.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i)=>{try{let e=await c(k,{applicationId:t});h$1(i,e.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:e.webhooks.map(n=>[p(n.id,12),n.name,p(n.url,40),String(!!n.isActive),String(n.failureCount??0)])});}catch(e){g(e);}}),A.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",t=>parseInt(t,10),5).option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,url:t.url,events:t.events.split(",").map(n=>n.trim()).filter(Boolean),retryEnabled:!0,maxRetries:t.maxRetries},e=await c(U,{applicationId:t.application,input:i$1});i("Webhook created. Store the signing secret now: it is shown only once."),h$1(t,e.createWebhook);}catch(i){g(i);}}),A.command("remove").description("Remove a webhook").argument("<id>").action(async t=>{try{await c(x,{id:t}),i("Webhook removed");}catch(i){g(i);}}),p$1.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async t=>{try{let i=await c(V,{applicationId:t.application,period:(t.period??"LAST_30_DAYS").toUpperCase(),startDate:t.from,endDate:t.to});h$1(t,i.applicationAnalytics);}catch(i){g(i);}}),d.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async t=>{try{let i=await c(W,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});h$1(t,i.developerOrgRevenueSummary);}catch(i){g(i);}});let I=d.command("admin").description("Admin operations").command("reviews").description("Application review queue");I.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let i=await c(G,{status:(t.status??"SUBMITTED").toUpperCase(),limit:t.limit});h$1(t,i.applications.edges.map(e=>e.node));}catch(i){g(i);}}),I.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,i$1)=>{try{await c(B,{id:t,notes:i$1.notes}),i("Application approved");}catch(e){g(e);}}),I.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,i$1)=>{try{await c(q,{id:t,notes:i$1.notes}),i("Application rejected");}catch(e){g(e);}});}var Y={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(g,d){a(d),M(g);}},it=Y;export{it as default};
139
+ `;function M(g){let d=g.command("devportal").description("Developer portal: orgs, apps, webhooks, revenue"),m=d.command("orgs").description("Publisher organizations");m.command("list").description("List devportal organizations").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(R,{limit:t.limit,offset:0})).developerOrganizations.edges.map(n=>n.node);i(t,e,{headers:["ID","Name","Slug","Tier","Verified","Apps"],rows:e.map(n=>[r(n.id,12),n.name,n.slug??"-",n.tier??"-",String(!!n.isVerified),String(n.totalApps??0)])});}catch(i){h$1(i);}}),m.command("get").description("Get an organization").argument("<id>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(w,{id:t});if(!e.developerOrganization)throw new o(`Organization ${t} not found`);i(i$1,e.developerOrganization);}catch(e){h$1(e);}}),m.command("create").description("Create a publisher organization").requiredOption("--name <s>").option("--slug <s>","Unique slug (derived from the name when omitted)").option("--description <s>").option("--contact-email <email>").option("--website <url>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,slug:t.slug,description:t.description,contactEmail:t.contactEmail,websiteUrl:t.website},e=await c(D,{input:i$1});k$1(`Organization created: ${e.createDeveloperOrganization.name}`),i(t,e.createDeveloperOrganization);}catch(i){h$1(i);}}),m.command("update").description("Update an organization").argument("<id>").option("--name <s>").option("--description <s>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.name&&(e.name=i$1.name),i$1.description!==void 0&&(e.description=i$1.description),!Object.keys(e).length)throw new o("No updates specified");let n=await c(S,{id:t,input:e});k$1("Organization updated"),i(i$1,n.updateDeveloperOrganization);}catch(e){h$1(e);}}),m.command("delete").description("Delete an organization").argument("<id>").action(async t=>{try{await c(C,{id:t}),k$1("Organization deleted");}catch(i){h$1(i);}});let p$1=d.command("apps").description("Applications");p$1.command("list").description("List applications").option("--organization <id>").option("--status <s>","DRAFT|SUBMITTED|IN_REVIEW|APPROVED|PUBLISHED|REJECTED|SUSPENDED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=(await c(y,{organizationId:t.organization,status:t.status?.toUpperCase(),limit:t.limit})).applications.edges.map(n=>n.node);i(t,e,{headers:["ID","Name","Status","Installs","Rating"],rows:e.map(n=>[r(n.id,12),n.name,p(n.status),String(n.installCount??0),String(n.averageRating??"-")])});}catch(i){h$1(i);}}),p$1.command("get").description("Get an application").argument("<id>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(P,{id:t});if(!e.application)throw new o(`Application ${t} not found`);i(i$1,e.application);}catch(e){h$1(e);}}),p$1.command("create").description("Create an application").requiredOption("--name <s>").requiredOption("--organization <id>").option("--type <t>","API_INTEGRATION|WEB_APP|MOBILE_APP","API_INTEGRATION").option("--description <s>").option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,developerOrganizationId:t.organization,appType:(t.type??"API_INTEGRATION").toUpperCase(),description:t.description},e=await c(h,{input:i$1});k$1(`Application created: ${e.createApplication.name}`),i(t,e.createApplication);}catch(i){h$1(i);}}),p$1.command("update").description("Update an application").argument("<id>").option("--description <s>").option("--pricing <p>","FREE|PAID_ONETIME|SUBSCRIPTION").option("--docs-url <url>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e={};if(i$1.description!==void 0&&(e.description=i$1.description),i$1.pricing&&(e.pricingType=i$1.pricing.toUpperCase()),i$1.docsUrl&&(e.documentationUrl=i$1.docsUrl),!Object.keys(e).length)throw new o("No updates specified");let n=await c(N,{id:t,input:e});k$1("Application updated"),i(i$1,n.updateApplication);}catch(e){h$1(e);}}),p$1.command("submit-review").description("Submit an application for review").argument("<id>").option("--notes <s>").action(async(t,i)=>{try{await c($,{id:t,notes:i.notes}),k$1("Submitted for review");}catch(e){h$1(e);}}),p$1.command("publish").description("Publish an application").argument("<id>").action(async t=>{try{await c(b,{id:t}),k$1("Application published");}catch(i){h$1(i);}}),p$1.command("delete").description("Delete an application").argument("<id>").action(async t=>{try{await c(_,{id:t}),k$1("Application deleted");}catch(i){h$1(i);}});let O=p$1.command("versions").description("Application versions");O.command("list").description("List versions for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i$1)=>{try{let n=(await c(L,{applicationId:t})).application?.versions.edges.map(c=>c.node)??[];i(i$1,n,{headers:["ID","Version","Status","Latest","Stable"],rows:n.map(c=>[r(c.id,12),c.version,p(c.status),String(!!c.isLatest),String(!!c.isStable)])});}catch(e){h$1(e);}}),O.command("create").description("Create an application version").requiredOption("--application <id>").requiredOption("--version <v>").option("--notes <s>").option("--package <url>","Package URL").option("-f, --format <format>").action(async t=>{try{let i$1={version:t.version,releaseNotes:t.notes,packageUrl:t.package},e=await c(z,{applicationId:t.application,input:i$1});k$1(`Version created: ${e.createApplicationVersion.version}`),i(t,e.createApplicationVersion);}catch(i){h$1(i);}});let A=p$1.command("webhooks").description("Application webhooks");A.command("list").description("List webhooks for an application").argument("<applicationId>").option("-f, --format <format>").action(async(t,i$1)=>{try{let e=await c(k,{applicationId:t});i(i$1,e.webhooks,{headers:["ID","Name","URL","Active","Failures"],rows:e.webhooks.map(n=>[r(n.id,12),n.name,r(n.url,40),String(!!n.isActive),String(n.failureCount??0)])});}catch(e){h$1(e);}}),A.command("add").description("Add a webhook to an application").requiredOption("--application <id>").requiredOption("--name <s>").requiredOption("--url <url>").requiredOption("--events <s>","Comma-separated event names").option("--max-retries <n>","",t=>parseInt(t,10),5).option("-f, --format <format>").action(async t=>{try{let i$1={name:t.name,url:t.url,events:t.events.split(",").map(n=>n.trim()).filter(Boolean),retryEnabled:!0,maxRetries:t.maxRetries},e=await c(U,{applicationId:t.application,input:i$1});k$1("Webhook created. Store the signing secret now: it is shown only once."),i(t,e.createWebhook);}catch(i){h$1(i);}}),A.command("remove").description("Remove a webhook").argument("<id>").action(async t=>{try{await c(x,{id:t}),k$1("Webhook removed");}catch(i){h$1(i);}}),p$1.command("analytics").description("Application analytics for a period").requiredOption("--application <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|CUSTOM","LAST_30_DAYS").option("--from <iso>").option("--to <iso>").option("-f, --format <format>").action(async t=>{try{let i$1=await c(V,{applicationId:t.application,period:(t.period??"LAST_30_DAYS").toUpperCase(),startDate:t.from,endDate:t.to});i(t,i$1.applicationAnalytics);}catch(i){h$1(i);}}),d.command("revenue").description("Revenue for an organization").requiredOption("--organization <id>").option("--period <p>","LAST_7_DAYS|LAST_30_DAYS|YTD","LAST_30_DAYS").option("-f, --format <format>").action(async t=>{try{let i$1=await c(W,{organizationId:t.organization,period:(t.period??"LAST_30_DAYS").toUpperCase()});i(t,i$1.developerOrgRevenueSummary);}catch(i){h$1(i);}});let I=d.command("admin").description("Admin operations").command("reviews").description("Application review queue");I.command("list").description("List applications pending review").option("--status <s>","SUBMITTED|IN_REVIEW","SUBMITTED").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let i$1=await c(G,{status:(t.status??"SUBMITTED").toUpperCase(),limit:t.limit});i(t,i$1.applications.edges.map(e=>e.node));}catch(i){h$1(i);}}),I.command("approve").description("Approve an application").argument("<applicationId>").option("--notes <s>").action(async(t,i)=>{try{await c(B,{id:t,notes:i.notes}),k$1("Application approved");}catch(e){h$1(e);}}),I.command("reject").description("Reject an application").argument("<applicationId>").requiredOption("--notes <s>","Reason for rejection").action(async(t,i)=>{try{await c(q,{id:t,notes:i.notes}),k$1("Application rejected");}catch(e){h$1(e);}});}var Y={id:"devportal",version:"1.0.0",displayName:"Developer Portal",dependsOn:["auth"],register(g,d){a(d),M(g);}},it=Y;export{it as default};