@burdenoff/cli-sdk 2026.1101.1 → 2026.1102.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-REBBLQFS.js → chunk-ZGT7IIOP.js} +494 -522
  3. package/dist/modules/adaptercloud/index.cjs +4 -4
  4. package/dist/modules/adaptercloud/index.js +2 -2
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +8 -8
  9. package/dist/modules/atheletebridge/index.js +2 -2
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +18 -18
  13. package/dist/modules/billing/index.js +22 -22
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.js +2 -2
  17. package/dist/modules/channels/index.cjs +3 -3
  18. package/dist/modules/channels/index.js +2 -2
  19. package/dist/modules/collabkin/index.cjs +4 -4
  20. package/dist/modules/collabkin/index.js +2 -2
  21. package/dist/modules/comradecircle/index.cjs +6 -6
  22. package/dist/modules/comradecircle/index.js +2 -2
  23. package/dist/modules/conversations/index.cjs +7 -7
  24. package/dist/modules/conversations/index.js +2 -2
  25. package/dist/modules/coolandlovely/index.cjs +2 -2
  26. package/dist/modules/coolandlovely/index.js +2 -2
  27. package/dist/modules/cosmicintersection/index.cjs +6 -6
  28. package/dist/modules/cosmicintersection/index.js +2 -2
  29. package/dist/modules/crewfoundry/index.js +2 -2
  30. package/dist/modules/devportal/index.cjs +40 -34
  31. package/dist/modules/devportal/index.js +49 -43
  32. package/dist/modules/ecoimpacthub/index.cjs +5 -5
  33. package/dist/modules/ecoimpacthub/index.js +2 -2
  34. package/dist/modules/eventfullymanaged/index.cjs +12 -12
  35. package/dist/modules/eventfullymanaged/index.js +2 -2
  36. package/dist/modules/export/index.cjs +4 -4
  37. package/dist/modules/export/index.js +2 -2
  38. package/dist/modules/files/index.cjs +3 -3
  39. package/dist/modules/files/index.js +4 -4
  40. package/dist/modules/fluidgrids/index.cjs +16 -16
  41. package/dist/modules/fluidgrids/index.js +3 -3
  42. package/dist/modules/ggnomad/index.cjs +4 -4
  43. package/dist/modules/ggnomad/index.js +2 -2
  44. package/dist/modules/govcitizenhub/index.cjs +4 -4
  45. package/dist/modules/govcitizenhub/index.js +2 -2
  46. package/dist/modules/groups/index.cjs +4 -4
  47. package/dist/modules/groups/index.js +2 -2
  48. package/dist/modules/headshotmarketing/index.js +2 -2
  49. package/dist/modules/hookmovies/index.cjs +6 -6
  50. package/dist/modules/hookmovies/index.js +2 -2
  51. package/dist/modules/housingvista/index.cjs +3 -3
  52. package/dist/modules/housingvista/index.js +2 -2
  53. package/dist/modules/integrations/index.cjs +5 -5
  54. package/dist/modules/integrations/index.js +2 -2
  55. package/dist/modules/intelwatchtower/index.cjs +5 -5
  56. package/dist/modules/intelwatchtower/index.js +2 -2
  57. package/dist/modules/kadaikodi/index.cjs +2 -2
  58. package/dist/modules/kadaikodi/index.js +2 -2
  59. package/dist/modules/labsofscience/index.cjs +3 -3
  60. package/dist/modules/labsofscience/index.js +2 -2
  61. package/dist/modules/manufacturedops/index.cjs +2 -2
  62. package/dist/modules/manufacturedops/index.js +2 -2
  63. package/dist/modules/movethewheels/index.js +2 -2
  64. package/dist/modules/notifications/index.cjs +2 -2
  65. package/dist/modules/notifications/index.js +2 -2
  66. package/dist/modules/organizations/index.js +2 -2
  67. package/dist/modules/planmagnet/index.js +2 -2
  68. package/dist/modules/products/index.cjs +4 -4
  69. package/dist/modules/products/index.js +2 -2
  70. package/dist/modules/proserviceworld/index.cjs +2 -2
  71. package/dist/modules/proserviceworld/index.js +2 -2
  72. package/dist/modules/rbac/index.js +2 -2
  73. package/dist/modules/sandbox/index.cjs +32 -51
  74. package/dist/modules/sandbox/index.js +1 -1
  75. package/dist/modules/scheduler/index.cjs +2 -2
  76. package/dist/modules/scheduler/index.js +2 -2
  77. package/dist/modules/security/index.cjs +3 -3
  78. package/dist/modules/security/index.js +2 -2
  79. package/dist/modules/semanticfed/index.cjs +3 -3
  80. package/dist/modules/semanticfed/index.js +2 -2
  81. package/dist/modules/store/index.cjs +46 -40
  82. package/dist/modules/store/index.js +45 -39
  83. package/dist/modules/subscriberbot/index.cjs +1 -1
  84. package/dist/modules/subscriberbot/index.js +2 -2
  85. package/dist/modules/support/index.cjs +2 -2
  86. package/dist/modules/support/index.js +2 -2
  87. package/dist/modules/tags/index.js +2 -2
  88. package/dist/modules/technospam/index.cjs +2 -2
  89. package/dist/modules/technospam/index.js +2 -2
  90. package/dist/modules/theculturepost/index.js +2 -2
  91. package/dist/modules/theglobalfuel/index.cjs +2 -2
  92. package/dist/modules/theglobalfuel/index.js +2 -2
  93. package/dist/modules/timecampus/index.js +2 -2
  94. package/dist/modules/tours/index.cjs +2 -2
  95. package/dist/modules/tours/index.js +2 -2
  96. package/dist/modules/vibecontrols/index.cjs +573 -577
  97. package/dist/modules/vibecontrols/index.js +5 -4
  98. package/dist/modules/workspaces/index.cjs +4 -4
  99. package/dist/modules/workspaces/index.js +2 -2
  100. package/package.json +1 -1
  101. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var d=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},h=class extends d{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var w=null;function E(r){w=r;}function A(){if(!w)throw new I("vibecontrols module helpers used before setHelpersContext was called");return w}function xt(){let r=A();if(!r.auth.isAuthenticated())throw new h("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function a(r,o){return xt(),A().gql.workspace.request(r,o)}async function k(r,o){return A().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new d(o)}function s(r,o,t){A().output.formatAndOutput(r,o,t);}function c(r){A().output.printSuccess(r);}function u(r,o){return A().output.truncate(r,o)}var b=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var d=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},h=class extends d{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var w=null;function b(r){w=r;}function A(){if(!w)throw new I("vibecontrols module helpers used before setHelpersContext was called");return w}function xt(){let r=A();if(!r.auth.isAuthenticated())throw new h("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function a(r,o){return xt(),A().gql.workspace.request(r,o)}async function k(r,o){return A().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new d(o)}function s(r,o,t){A().output.formatAndOutput(r,o,t);}function c(r){A().output.printSuccess(r);}function u(r,o){return A().output.truncate(r,o)}var E=`
2
2
  query AdaptercloudGetAdapter($id: ID!) {
3
3
  adaAdapter(id: $id) {
4
4
  id workspaceId name slug description kind status version vendor
@@ -183,7 +183,7 @@
183
183
  detectedAt createdAt
184
184
  }
185
185
  }
186
- `,z=`
186
+ `,B=`
187
187
  mutation AdaptercloudResolveViolation(
188
188
  $id: ID!
189
189
  $status: AdaViolationStatus!
@@ -194,7 +194,7 @@
194
194
  resolvedAt resolvedById updatedAt
195
195
  }
196
196
  }
197
- `,B=`
197
+ `,z=`
198
198
  query AdaptercloudGetSyncRun($id: ID!) {
199
199
  adaSyncRun(id: $id) {
200
200
  id workspaceId connectionId kind status discoveredCount reconciledCount
@@ -312,4 +312,4 @@
312
312
  query AdaptercloudHealth {
313
313
  adaHealth
314
314
  }
315
- `;function l(r,o){try{return JSON.parse(o)}catch{throw new d(`--${r} must be valid JSON`)}}function m(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new d(`Expected an integer but got "${r}"`);return o}function v(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new d(`Expected a number but got "${r}"`);return o}function f(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function ut(r){let o=r.command("adapters").description("AdapterCloud adapters");o.command("list").description("List adapters").option("--kind <k>","Filter by adapter kind").option("--status <s>","Filter by adapter status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(T,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListAdapters.items,{headers:["ID","Name","Kind","Status","Version","Vendor"],rows:e.adaListAdapters.items.map(n=>[u(n.id,12),n.name,n.kind,n.status,n.version,n.vendor??"-"])});}catch(e){i(e);}}),o.command("get").description("Get an adapter by id").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(b,{id:t});if(!n.adaAdapter)throw new d(`Adapter ${t} not found`);s(e,n.adaAdapter);}catch(n){i(n);}}),o.command("create").description("Create an adapter").requiredOption("--name <name>","Adapter name").requiredOption("--slug <slug>","URL slug").option("--kind <k>","Adapter kind","CUSTOM").option("--status <s>","Adapter status","DRAFT").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,kind:(t.kind??"CUSTOM").toUpperCase(),status:(t.status??"DRAFT").toUpperCase()};t.version&&(e.version=t.version),t.vendor&&(e.vendor=t.vendor),t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=f(t.capabilities)),t.configSchema&&(e.configSchema=l("config-schema",t.configSchema)),t.tags&&(e.tags=f(t.tags));let n=await a(O,{input:e});c(`Adapter created: ${n.adaCreateAdapter.name}`),s(t,n.adaCreateAdapter);}catch(e){i(e);}}),o.command("update").description("Update an adapter").argument("<id>","Adapter ID").option("--name <name>","Adapter name").option("--kind <k>","Adapter kind").option("--status <s>","Adapter status").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.version&&(n.version=e.version),e.vendor!==void 0&&(n.vendor=e.vendor),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=f(e.capabilities)),e.configSchema&&(n.configSchema=l("config-schema",e.configSchema)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(x,{id:t,input:n});c("Adapter updated"),s(e,p.adaUpdateAdapter);}catch(n){i(n);}}),o.command("archive").description("Archive an adapter").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});c(`Adapter archived: ${n.adaArchiveAdapter}`),s(e,{archived:n.adaArchiveAdapter});}catch(n){i(n);}});}function pt(r){let o=r.command("connections").description("AdapterCloud connections");o.command("list").description("List connections").option("--adapter <id>","Filter by adapter ID").option("--status <s>","Filter by connection status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{adapterId:t.adapter,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListConnections.items,{headers:["ID","Name","Status","Auth","Env","Region","Resources"],rows:e.adaListConnections.items.map(n=>[u(n.id,12),n.name,n.status,n.authMethod,n.environment??"-",n.region??"-",String(n.resourceCount)])});}catch(e){i(e);}}),o.command("get").description("Get a connection by id").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.adaConnection)throw new d(`Connection ${t} not found`);s(e,n.adaConnection);}catch(n){i(n);}}),o.command("create").description("Create a connection").requiredOption("--adapter <id>","Adapter ID").requiredOption("--name <name>","Connection name").option("--auth-method <m>","Auth method","NONE").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={adapterId:t.adapter,name:t.name,authMethod:(t.authMethod??"NONE").toUpperCase()};t.environment&&(e.environment=t.environment),t.region&&(e.region=t.region),t.targetRef&&(e.targetRef=t.targetRef),t.secretRef&&(e.secretRef=t.secretRef),t.config&&(e.config=l("config",t.config)),t.tags&&(e.tags=f(t.tags));let n=await a(L,{input:e});c(`Connection created: ${n.adaCreateConnection.name}`),s(t,n.adaCreateConnection);}catch(e){i(e);}}),o.command("update").description("Update a connection").argument("<id>","Connection ID").option("--name <name>","Connection name").option("--auth-method <m>","Auth method").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.authMethod&&(n.authMethod=e.authMethod.toUpperCase()),e.environment!==void 0&&(n.environment=e.environment),e.region!==void 0&&(n.region=e.region),e.targetRef!==void 0&&(n.targetRef=e.targetRef),e.secretRef!==void 0&&(n.secretRef=e.secretRef),e.config&&(n.config=l("config",e.config)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(N,{id:t,input:n});c("Connection updated"),s(e,p.adaUpdateConnection);}catch(n){i(n);}}),o.command("disable").description("Disable a connection").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(_,{id:t});c(`Connection disabled: ${n.adaDisableConnection.status}`),s(e,n.adaDisableConnection);}catch(n){i(n);}}),o.command("set-status").description("Transition a connection status").argument("<id>","Connection ID").requiredOption("--status <s>","CONNECTED|DEGRADED|DISABLED|ERROR|PENDING").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});c(`Connection status set to ${n.adaSetConnectionStatus.status}`),s(e,n.adaSetConnectionStatus);}catch(n){i(n);}});}function gt(r){let o=r.command("resources").description("AdapterCloud resources");o.command("list").description("List resources").option("--connection <id>","Filter by connection ID").option("--resource-type <t>","Filter by resource type").option("--state <s>","Filter by resource state").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{connectionId:t.connection,resourceType:t.resourceType,state:t.state?t.state.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListResources.items,{headers:["ID","Name","Type","Region","State","Cost/mo"],rows:e.adaListResources.items.map(n=>[u(n.id,12),n.name,n.resourceType,n.region??"-",n.state,String(n.monthlyCost)])});}catch(e){i(e);}}),o.command("get").description("Get a resource by id").argument("<id>","Resource ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(q,{id:t});if(!n.adaResource)throw new d(`Resource ${t} not found`);s(e,n.adaResource);}catch(n){i(n);}}),o.command("register").description("Register (upsert) a discovered resource").requiredOption("--connection <id>","Connection ID").requiredOption("--external-id <id>","External (provider) ID").requiredOption("--name <name>","Resource name").requiredOption("--resource-type <t>","Resource type").option("--region <r>","Region").option("--monthly-cost <n>","Monthly cost",v).option("--attributes <json>","Attributes JSON").option("--provider-tags <json>","Provider tags JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,externalId:t.externalId,name:t.name,resourceType:t.resourceType};t.region&&(e.region=t.region),t.monthlyCost!==void 0&&(e.monthlyCost=t.monthlyCost),t.attributes&&(e.attributes=l("attributes",t.attributes)),t.providerTags&&(e.providerTags=l("provider-tags",t.providerTags)),t.tags&&(e.tags=f(t.tags));let n=await a(M,{input:e});c(`Resource registered: ${n.adaRegisterResource.name}`),s(t,n.adaRegisterResource);}catch(e){i(e);}});}function mt(r){let o=r.command("policies").description("AdapterCloud policies & violations");o.command("list").description("List policies").option("--kind <k>","Filter by policy kind").option("--active <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(G,{kind:t.kind?t.kind.toUpperCase():void 0,isActive:t.active,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListPolicies.items,{headers:["ID","Name","Kind","Severity","Enforcement","Active"],rows:e.adaListPolicies.items.map(n=>[u(n.id,12),n.name,n.kind,n.severity,n.enforcement,n.isActive?"yes":"no"])});}catch(e){i(e);}}),o.command("get").description("Get a policy by id").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});if(!n.adaPolicy)throw new d(`Policy ${t} not found`);s(e,n.adaPolicy);}catch(n){i(n);}}),o.command("create").description("Create a policy").requiredOption("--name <name>","Policy name").requiredOption("--expression <json>","Policy expression JSON").option("--kind <k>","Policy kind","GUARDRAIL").option("--severity <s>","Severity","MEDIUM").option("--enforcement <e>","Enforcement","WARN").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,expression:l("expression",t.expression),kind:(t.kind??"GUARDRAIL").toUpperCase(),severity:(t.severity??"MEDIUM").toUpperCase(),enforcement:(t.enforcement??"WARN").toUpperCase()};t.active!==void 0&&(e.isActive=t.active),t.description&&(e.description=t.description),t.appliesTo&&(e.appliesTo=f(t.appliesTo)),t.tags&&(e.tags=f(t.tags));let n=await a(W,{input:e});c(`Policy created: ${n.adaCreatePolicy.name}`),s(t,n.adaCreatePolicy);}catch(e){i(e);}}),o.command("update").description("Update a policy").argument("<id>","Policy ID").option("--name <name>","Policy name").option("--kind <k>","Policy kind").option("--severity <s>","Severity").option("--enforcement <e>","Enforcement").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--expression <json>","Policy expression JSON").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.severity&&(n.severity=e.severity.toUpperCase()),e.enforcement&&(n.enforcement=e.enforcement.toUpperCase()),e.active!==void 0&&(n.isActive=e.active),e.description!==void 0&&(n.description=e.description),e.expression&&(n.expression=l("expression",e.expression)),e.appliesTo&&(n.appliesTo=f(e.appliesTo)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(j,{id:t,input:n});c("Policy updated"),s(e,p.adaUpdatePolicy);}catch(n){i(n);}}),o.command("archive").description("Archive a policy").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});c(`Policy archived: ${n.adaArchivePolicy}`),s(e,{archived:n.adaArchivePolicy});}catch(n){i(n);}}),o.command("list-violations").description("List policy violations").option("--policy <id>","Filter by policy ID").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by violation status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(J,{policyId:t.policy,resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListViolations.items,{headers:["ID","Policy","Resource","Severity","Status","Message"],rows:e.adaListViolations.items.map(n=>[u(n.id,12),u(n.policyId,12),u(n.resourceId,12),n.severity,n.status,u(n.message,30)])});}catch(e){i(e);}}),o.command("record-violation").description("Record a policy violation").requiredOption("--policy <id>","Policy ID").requiredOption("--resource <id>","Resource ID").requiredOption("--message <m>","Violation message").option("--severity <s>","Severity").option("--evidence <json>","Evidence JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={policyId:t.policy,resourceId:t.resource,message:t.message};t.severity&&(e.severity=t.severity.toUpperCase()),t.evidence&&(e.evidence=l("evidence",t.evidence));let n=await a(H,{input:e});c("Violation recorded"),s(t,n.adaRecordViolation);}catch(e){i(e);}}),o.command("resolve-violation").description("Resolve or waive a violation").argument("<id>","Violation ID").requiredOption("--status <s>","ACKNOWLEDGED|OPEN|RESOLVED|WAIVED").option("--waiver-reason <r>","Waiver reason (required when waiving)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t,status:e.status.toUpperCase(),waiverReason:e.waiverReason});c(`Violation ${n.adaResolveViolation.status}`),s(e,n.adaResolveViolation);}catch(n){i(n);}});}function lt(r){let o=r.command("sync-runs").description("AdapterCloud sync runs");o.command("list").description("List sync runs").option("--connection <id>","Filter by connection ID").option("--status <s>","Filter by sync status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{connectionId:t.connection,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListSyncRuns.items,{headers:["ID","Connection","Kind","Status","Discovered","Drift","Violations"],rows:e.adaListSyncRuns.items.map(n=>[u(n.id,12),u(n.connectionId,12),n.kind,n.status,String(n.discoveredCount),String(n.driftCount),String(n.violationCount)])});}catch(e){i(e);}}),o.command("get").description("Get a sync run by id").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t});if(!n.adaSyncRun)throw new d(`Sync run ${t} not found`);s(e,n.adaSyncRun);}catch(n){i(n);}}),o.command("start").description("Start a sync run").requiredOption("--connection <id>","Connection ID").option("--kind <k>","Sync kind (DISCOVERY|RECONCILE|COST_INGEST|FULL)","DISCOVERY").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,kind:(t.kind??"DISCOVERY").toUpperCase()},n=await a(Q,{input:e});c(`Sync run started: ${n.adaStartSyncRun.id}`),s(t,n.adaStartSyncRun);}catch(e){i(e);}}),o.command("complete").description("Mark a sync run complete").argument("<id>","Sync run ID").option("--discovered-count <n>","Discovered count",m).option("--reconciled-count <n>","Reconciled count",m).option("--drift-count <n>","Drift count",m).option("--violation-count <n>","Violation count",m).option("--summary <json>","Summary JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.discoveredCount!==void 0&&(n.discoveredCount=e.discoveredCount),e.reconciledCount!==void 0&&(n.reconciledCount=e.reconciledCount),e.driftCount!==void 0&&(n.driftCount=e.driftCount),e.violationCount!==void 0&&(n.violationCount=e.violationCount),e.summary&&(n.summary=l("summary",e.summary));let p=await a(X,{id:t,input:Object.keys(n).length?n:void 0});c(`Sync run completed: ${p.adaCompleteSyncRun.status}`),s(e,p.adaCompleteSyncRun);}catch(n){i(n);}}),o.command("cancel").description("Cancel a sync run").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});c(`Sync run cancelled: ${n.adaCancelSyncRun.status}`),s(e,n.adaCancelSyncRun);}catch(n){i(n);}}),o.command("fail").description("Mark a sync run failed").argument("<id>","Sync run ID").requiredOption("--error <e>","Error message").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,error:e.error});c(`Sync run failed: ${n.adaFailSyncRun.status}`),s(e,n.adaFailSyncRun);}catch(n){i(n);}});}function ft(r){let o=r.command("cost").description("AdapterCloud cost records & summaries");o.command("summary").description("Aggregate spend grouped by service").option("--connection <id>","Scope summary to a connection").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(et,{connectionId:t.connection});s(t,e.adaCostSummary,{headers:["Service","Total"],rows:e.adaCostSummary.lines.map(n=>[n.service,String(n.total)])});}catch(e){i(e);}}),o.command("list").description("List cost records").option("--connection <id>","Filter by connection ID").option("--resource <id>","Filter by resource ID").option("--service <s>","Filter by service").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await a(nt,{connectionId:t.connection,resourceId:t.resource,service:t.service,pagination:{limit:100,offset:n}})).adaListCostRecords;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}s(t,e,{headers:["ID","Service","Amount","Currency","Period start","Period end"],rows:e.map(p=>[u(p.id,12),p.service,String(p.amount),p.currency,p.periodStart,p.periodEnd])});}catch(e){i(e);}}),o.command("ingest").description("Ingest a cost record").requiredOption("--service <s>","Service name").requiredOption("--amount <n>","Amount",v).requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--currency <c>","Currency code").option("--connection <id>","Connection ID").option("--resource <id>","Resource ID").option("--breakdown <json>","Breakdown JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={service:t.service,amount:t.amount,periodStart:t.periodStart,periodEnd:t.periodEnd};t.currency&&(e.currency=t.currency),t.connection&&(e.connectionId=t.connection),t.resource&&(e.resourceId=t.resource),t.breakdown&&(e.breakdown=l("breakdown",t.breakdown));let n=await a(ot,{input:e});c(`Cost ingested: ${n.adaIngestCost.service} ${n.adaIngestCost.amount}`),s(t,n.adaIngestCost);}catch(e){i(e);}});}function Ct(r){let o=r.command("drift").description("AdapterCloud drift records");o.command("list").description("List drift records").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by drift status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(rt,{resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0});s(t,e.adaListDriftRecords,{headers:["ID","Resource","Attribute","Severity","Status"],rows:e.adaListDriftRecords.map(n=>[u(n.id,12),u(n.resourceId,12),n.attributePath,n.severity,n.status])});}catch(e){i(e);}}),o.command("record").description("Record a drift observation").requiredOption("--resource <id>","Resource ID").requiredOption("--attribute-path <p>","Attribute path").option("--severity <s>","Severity").option("--expected <json>","Expected value JSON").option("--observed <json>","Observed value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={resourceId:t.resource,attributePath:t.attributePath};t.severity&&(e.severity=t.severity.toUpperCase()),t.expected&&(e.expectedValue=l("expected",t.expected)),t.observed&&(e.observedValue=l("observed",t.observed));let n=await a(it,{input:e});c("Drift recorded"),s(t,n.adaRecordDrift);}catch(e){i(e);}}),o.command("remediate").description("Mark a drift record remediated").argument("<id>","Drift record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});c(`Drift remediated: ${n.adaRemediateDrift.status}`),s(e,n.adaRemediateDrift);}catch(n){i(n);}});}function yt(r){let o=r.command("topology").description("AdapterCloud topology edges");o.command("list").description("List topology edges").option("--resource <id>","Filter by resource ID (either endpoint)").option("--kind <k>","Filter by edge kind").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await a(at,{resourceId:t.resource,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:100,offset:n}})).adaListTopologyEdges;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}s(t,e,{headers:["ID","From","To","Kind","Bidirectional","Weight"],rows:e.map(p=>[u(p.id,12),u(p.fromResourceId,12),u(p.toResourceId,12),p.kind,p.bidirectional?"yes":"no",String(p.weight)])});}catch(e){i(e);}}),o.command("create").description("Create a topology edge").requiredOption("--from <id>","From resource ID").requiredOption("--to <id>","To resource ID").option("--kind <k>","Edge kind","DEPENDS_ON").option("--bidirectional","Mark edge bidirectional").option("--weight <n>","Edge weight",m).option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={fromResourceId:t.from,toResourceId:t.to,kind:(t.kind??"DEPENDS_ON").toUpperCase()};t.bidirectional&&(e.bidirectional=!0),t.weight!==void 0&&(e.weight=t.weight),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await a(ct,{input:e});c(`Topology edge created: ${n.adaCreateTopologyEdge.id}`),s(t,n.adaCreateTopologyEdge);}catch(e){i(e);}});}function It(r){r.command("health").description("AdapterCloud service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await k(dt);c(t.adaHealth),s(o,{health:t.adaHealth});}catch(t){i(t);}});}var Dt={id:"adaptercloud",version:"1.0.0",displayName:"AdapterCloud",dependsOn:["auth","workspaces"],register(r,o){E(o);let t=r.command("adaptercloud").description("AdapterCloud multi-cloud adapter control plane");ut(t),pt(t),gt(t),mt(t),lt(t),ft(t),Ct(t),yt(t),It(t);}},Sn=Dt;module.exports=Sn;
315
+ `;function l(r,o){try{return JSON.parse(o)}catch{throw new d(`--${r} must be valid JSON`)}}function m(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new d(`Expected an integer but got "${r}"`);return o}function v(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new d(`Expected a number but got "${r}"`);return o}function f(r){return r.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function ut(r){let o=r.command("adapters").description("AdapterCloud adapters");o.command("list").description("List adapters").option("--kind <k>","Filter by adapter kind").option("--status <s>","Filter by adapter status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(T,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListAdapters.items,{headers:["ID","Name","Kind","Status","Version","Vendor"],rows:e.adaListAdapters.items.map(n=>[u(n.id,12),n.name,n.kind,n.status,n.version,n.vendor??"-"])});}catch(e){i(e);}}),o.command("get").description("Get an adapter by id").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(E,{id:t});if(!n.adaAdapter)throw new d(`Adapter ${t} not found`);s(e,n.adaAdapter);}catch(n){i(n);}}),o.command("create").description("Create an adapter").requiredOption("--name <name>","Adapter name").requiredOption("--slug <slug>","URL slug").option("--kind <k>","Adapter kind","CUSTOM").option("--status <s>","Adapter status","DRAFT").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,kind:(t.kind??"CUSTOM").toUpperCase(),status:(t.status??"DRAFT").toUpperCase()};t.version&&(e.version=t.version),t.vendor&&(e.vendor=t.vendor),t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=f(t.capabilities)),t.configSchema&&(e.configSchema=l("config-schema",t.configSchema)),t.tags&&(e.tags=f(t.tags));let n=await a(O,{input:e});c(`Adapter created: ${n.adaCreateAdapter.name}`),s(t,n.adaCreateAdapter);}catch(e){i(e);}}),o.command("update").description("Update an adapter").argument("<id>","Adapter ID").option("--name <name>","Adapter name").option("--kind <k>","Adapter kind").option("--status <s>","Adapter status").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.version&&(n.version=e.version),e.vendor!==void 0&&(n.vendor=e.vendor),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=f(e.capabilities)),e.configSchema&&(n.configSchema=l("config-schema",e.configSchema)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(x,{id:t,input:n});c("Adapter updated"),s(e,p.adaUpdateAdapter);}catch(n){i(n);}}),o.command("archive").description("Archive an adapter").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});c(`Adapter archived: ${n.adaArchiveAdapter}`),s(e,{archived:n.adaArchiveAdapter});}catch(n){i(n);}});}function pt(r){let o=r.command("connections").description("AdapterCloud connections");o.command("list").description("List connections").option("--adapter <id>","Filter by adapter ID").option("--status <s>","Filter by connection status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{adapterId:t.adapter,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListConnections.items,{headers:["ID","Name","Status","Auth","Env","Region","Resources"],rows:e.adaListConnections.items.map(n=>[u(n.id,12),n.name,n.status,n.authMethod,n.environment??"-",n.region??"-",String(n.resourceCount)])});}catch(e){i(e);}}),o.command("get").description("Get a connection by id").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});if(!n.adaConnection)throw new d(`Connection ${t} not found`);s(e,n.adaConnection);}catch(n){i(n);}}),o.command("create").description("Create a connection").requiredOption("--adapter <id>","Adapter ID").requiredOption("--name <name>","Connection name").option("--auth-method <m>","Auth method","NONE").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={adapterId:t.adapter,name:t.name,authMethod:(t.authMethod??"NONE").toUpperCase()};t.environment&&(e.environment=t.environment),t.region&&(e.region=t.region),t.targetRef&&(e.targetRef=t.targetRef),t.secretRef&&(e.secretRef=t.secretRef),t.config&&(e.config=l("config",t.config)),t.tags&&(e.tags=f(t.tags));let n=await a(L,{input:e});c(`Connection created: ${n.adaCreateConnection.name}`),s(t,n.adaCreateConnection);}catch(e){i(e);}}),o.command("update").description("Update a connection").argument("<id>","Connection ID").option("--name <name>","Connection name").option("--auth-method <m>","Auth method").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.authMethod&&(n.authMethod=e.authMethod.toUpperCase()),e.environment!==void 0&&(n.environment=e.environment),e.region!==void 0&&(n.region=e.region),e.targetRef!==void 0&&(n.targetRef=e.targetRef),e.secretRef!==void 0&&(n.secretRef=e.secretRef),e.config&&(n.config=l("config",e.config)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(N,{id:t,input:n});c("Connection updated"),s(e,p.adaUpdateConnection);}catch(n){i(n);}}),o.command("disable").description("Disable a connection").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(_,{id:t});c(`Connection disabled: ${n.adaDisableConnection.status}`),s(e,n.adaDisableConnection);}catch(n){i(n);}}),o.command("set-status").description("Transition a connection status").argument("<id>","Connection ID").requiredOption("--status <s>","CONNECTED|DEGRADED|DISABLED|ERROR|PENDING").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});c(`Connection status set to ${n.adaSetConnectionStatus.status}`),s(e,n.adaSetConnectionStatus);}catch(n){i(n);}});}function gt(r){let o=r.command("resources").description("AdapterCloud resources");o.command("list").description("List resources").option("--connection <id>","Filter by connection ID").option("--resource-type <t>","Filter by resource type").option("--state <s>","Filter by resource state").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(F,{connectionId:t.connection,resourceType:t.resourceType,state:t.state?t.state.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListResources.items,{headers:["ID","Name","Type","Region","State","Cost/mo"],rows:e.adaListResources.items.map(n=>[u(n.id,12),n.name,n.resourceType,n.region??"-",n.state,String(n.monthlyCost)])});}catch(e){i(e);}}),o.command("get").description("Get a resource by id").argument("<id>","Resource ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(q,{id:t});if(!n.adaResource)throw new d(`Resource ${t} not found`);s(e,n.adaResource);}catch(n){i(n);}}),o.command("register").description("Register (upsert) a discovered resource").requiredOption("--connection <id>","Connection ID").requiredOption("--external-id <id>","External (provider) ID").requiredOption("--name <name>","Resource name").requiredOption("--resource-type <t>","Resource type").option("--region <r>","Region").option("--monthly-cost <n>","Monthly cost",v).option("--attributes <json>","Attributes JSON").option("--provider-tags <json>","Provider tags JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,externalId:t.externalId,name:t.name,resourceType:t.resourceType};t.region&&(e.region=t.region),t.monthlyCost!==void 0&&(e.monthlyCost=t.monthlyCost),t.attributes&&(e.attributes=l("attributes",t.attributes)),t.providerTags&&(e.providerTags=l("provider-tags",t.providerTags)),t.tags&&(e.tags=f(t.tags));let n=await a(M,{input:e});c(`Resource registered: ${n.adaRegisterResource.name}`),s(t,n.adaRegisterResource);}catch(e){i(e);}});}function mt(r){let o=r.command("policies").description("AdapterCloud policies & violations");o.command("list").description("List policies").option("--kind <k>","Filter by policy kind").option("--active <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(G,{kind:t.kind?t.kind.toUpperCase():void 0,isActive:t.active,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListPolicies.items,{headers:["ID","Name","Kind","Severity","Enforcement","Active"],rows:e.adaListPolicies.items.map(n=>[u(n.id,12),n.name,n.kind,n.severity,n.enforcement,n.isActive?"yes":"no"])});}catch(e){i(e);}}),o.command("get").description("Get a policy by id").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});if(!n.adaPolicy)throw new d(`Policy ${t} not found`);s(e,n.adaPolicy);}catch(n){i(n);}}),o.command("create").description("Create a policy").requiredOption("--name <name>","Policy name").requiredOption("--expression <json>","Policy expression JSON").option("--kind <k>","Policy kind","GUARDRAIL").option("--severity <s>","Severity","MEDIUM").option("--enforcement <e>","Enforcement","WARN").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,expression:l("expression",t.expression),kind:(t.kind??"GUARDRAIL").toUpperCase(),severity:(t.severity??"MEDIUM").toUpperCase(),enforcement:(t.enforcement??"WARN").toUpperCase()};t.active!==void 0&&(e.isActive=t.active),t.description&&(e.description=t.description),t.appliesTo&&(e.appliesTo=f(t.appliesTo)),t.tags&&(e.tags=f(t.tags));let n=await a(W,{input:e});c(`Policy created: ${n.adaCreatePolicy.name}`),s(t,n.adaCreatePolicy);}catch(e){i(e);}}),o.command("update").description("Update a policy").argument("<id>","Policy ID").option("--name <name>","Policy name").option("--kind <k>","Policy kind").option("--severity <s>","Severity").option("--enforcement <e>","Enforcement").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--expression <json>","Policy expression JSON").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.severity&&(n.severity=e.severity.toUpperCase()),e.enforcement&&(n.enforcement=e.enforcement.toUpperCase()),e.active!==void 0&&(n.isActive=e.active),e.description!==void 0&&(n.description=e.description),e.expression&&(n.expression=l("expression",e.expression)),e.appliesTo&&(n.appliesTo=f(e.appliesTo)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new d("No updates specified");let p=await a(j,{id:t,input:n});c("Policy updated"),s(e,p.adaUpdatePolicy);}catch(n){i(n);}}),o.command("archive").description("Archive a policy").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Y,{id:t});c(`Policy archived: ${n.adaArchivePolicy}`),s(e,{archived:n.adaArchivePolicy});}catch(n){i(n);}}),o.command("list-violations").description("List policy violations").option("--policy <id>","Filter by policy ID").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by violation status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(J,{policyId:t.policy,resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListViolations.items,{headers:["ID","Policy","Resource","Severity","Status","Message"],rows:e.adaListViolations.items.map(n=>[u(n.id,12),u(n.policyId,12),u(n.resourceId,12),n.severity,n.status,u(n.message,30)])});}catch(e){i(e);}}),o.command("record-violation").description("Record a policy violation").requiredOption("--policy <id>","Policy ID").requiredOption("--resource <id>","Resource ID").requiredOption("--message <m>","Violation message").option("--severity <s>","Severity").option("--evidence <json>","Evidence JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={policyId:t.policy,resourceId:t.resource,message:t.message};t.severity&&(e.severity=t.severity.toUpperCase()),t.evidence&&(e.evidence=l("evidence",t.evidence));let n=await a(H,{input:e});c("Violation recorded"),s(t,n.adaRecordViolation);}catch(e){i(e);}}),o.command("resolve-violation").description("Resolve or waive a violation").argument("<id>","Violation ID").requiredOption("--status <s>","ACKNOWLEDGED|OPEN|RESOLVED|WAIVED").option("--waiver-reason <r>","Waiver reason (required when waiving)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(B,{id:t,status:e.status.toUpperCase(),waiverReason:e.waiverReason});c(`Violation ${n.adaResolveViolation.status}`),s(e,n.adaResolveViolation);}catch(n){i(n);}});}function lt(r){let o=r.command("sync-runs").description("AdapterCloud sync runs");o.command("list").description("List sync runs").option("--connection <id>","Filter by connection ID").option("--status <s>","Filter by sync status").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{connectionId:t.connection,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});s(t,e.adaListSyncRuns.items,{headers:["ID","Connection","Kind","Status","Discovered","Drift","Violations"],rows:e.adaListSyncRuns.items.map(n=>[u(n.id,12),u(n.connectionId,12),n.kind,n.status,String(n.discoveredCount),String(n.driftCount),String(n.violationCount)])});}catch(e){i(e);}}),o.command("get").description("Get a sync run by id").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});if(!n.adaSyncRun)throw new d(`Sync run ${t} not found`);s(e,n.adaSyncRun);}catch(n){i(n);}}),o.command("start").description("Start a sync run").requiredOption("--connection <id>","Connection ID").option("--kind <k>","Sync kind (DISCOVERY|RECONCILE|COST_INGEST|FULL)","DISCOVERY").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,kind:(t.kind??"DISCOVERY").toUpperCase()},n=await a(Q,{input:e});c(`Sync run started: ${n.adaStartSyncRun.id}`),s(t,n.adaStartSyncRun);}catch(e){i(e);}}),o.command("complete").description("Mark a sync run complete").argument("<id>","Sync run ID").option("--discovered-count <n>","Discovered count",m).option("--reconciled-count <n>","Reconciled count",m).option("--drift-count <n>","Drift count",m).option("--violation-count <n>","Violation count",m).option("--summary <json>","Summary JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.discoveredCount!==void 0&&(n.discoveredCount=e.discoveredCount),e.reconciledCount!==void 0&&(n.reconciledCount=e.reconciledCount),e.driftCount!==void 0&&(n.driftCount=e.driftCount),e.violationCount!==void 0&&(n.violationCount=e.violationCount),e.summary&&(n.summary=l("summary",e.summary));let p=await a(X,{id:t,input:Object.keys(n).length?n:void 0});c(`Sync run completed: ${p.adaCompleteSyncRun.status}`),s(e,p.adaCompleteSyncRun);}catch(n){i(n);}}),o.command("cancel").description("Cancel a sync run").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});c(`Sync run cancelled: ${n.adaCancelSyncRun.status}`),s(e,n.adaCancelSyncRun);}catch(n){i(n);}}),o.command("fail").description("Mark a sync run failed").argument("<id>","Sync run ID").requiredOption("--error <e>","Error message").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,error:e.error});c(`Sync run failed: ${n.adaFailSyncRun.status}`),s(e,n.adaFailSyncRun);}catch(n){i(n);}});}function ft(r){let o=r.command("cost").description("AdapterCloud cost records & summaries");o.command("summary").description("Aggregate spend grouped by service").option("--connection <id>","Scope summary to a connection").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(et,{connectionId:t.connection});s(t,e.adaCostSummary,{headers:["Service","Total"],rows:e.adaCostSummary.lines.map(n=>[n.service,String(n.total)])});}catch(e){i(e);}}),o.command("list").description("List cost records").option("--connection <id>","Filter by connection ID").option("--resource <id>","Filter by resource ID").option("--service <s>","Filter by service").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await a(nt,{connectionId:t.connection,resourceId:t.resource,service:t.service,pagination:{limit:100,offset:n}})).adaListCostRecords;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}s(t,e,{headers:["ID","Service","Amount","Currency","Period start","Period end"],rows:e.map(p=>[u(p.id,12),p.service,String(p.amount),p.currency,p.periodStart,p.periodEnd])});}catch(e){i(e);}}),o.command("ingest").description("Ingest a cost record").requiredOption("--service <s>","Service name").requiredOption("--amount <n>","Amount",v).requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--currency <c>","Currency code").option("--connection <id>","Connection ID").option("--resource <id>","Resource ID").option("--breakdown <json>","Breakdown JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={service:t.service,amount:t.amount,periodStart:t.periodStart,periodEnd:t.periodEnd};t.currency&&(e.currency=t.currency),t.connection&&(e.connectionId=t.connection),t.resource&&(e.resourceId=t.resource),t.breakdown&&(e.breakdown=l("breakdown",t.breakdown));let n=await a(ot,{input:e});c(`Cost ingested: ${n.adaIngestCost.service} ${n.adaIngestCost.amount}`),s(t,n.adaIngestCost);}catch(e){i(e);}});}function Ct(r){let o=r.command("drift").description("AdapterCloud drift records");o.command("list").description("List drift records").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by drift status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(rt,{resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0});s(t,e.adaListDriftRecords,{headers:["ID","Resource","Attribute","Severity","Status"],rows:e.adaListDriftRecords.map(n=>[u(n.id,12),u(n.resourceId,12),n.attributePath,n.severity,n.status])});}catch(e){i(e);}}),o.command("record").description("Record a drift observation").requiredOption("--resource <id>","Resource ID").requiredOption("--attribute-path <p>","Attribute path").option("--severity <s>","Severity").option("--expected <json>","Expected value JSON").option("--observed <json>","Observed value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={resourceId:t.resource,attributePath:t.attributePath};t.severity&&(e.severity=t.severity.toUpperCase()),t.expected&&(e.expectedValue=l("expected",t.expected)),t.observed&&(e.observedValue=l("observed",t.observed));let n=await a(it,{input:e});c("Drift recorded"),s(t,n.adaRecordDrift);}catch(e){i(e);}}),o.command("remediate").description("Mark a drift record remediated").argument("<id>","Drift record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(st,{id:t});c(`Drift remediated: ${n.adaRemediateDrift.status}`),s(e,n.adaRemediateDrift);}catch(n){i(n);}});}function yt(r){let o=r.command("topology").description("AdapterCloud topology edges");o.command("list").description("List topology edges").option("--resource <id>","Filter by resource ID (either endpoint)").option("--kind <k>","Filter by edge kind").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await a(at,{resourceId:t.resource,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:100,offset:n}})).adaListTopologyEdges;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}s(t,e,{headers:["ID","From","To","Kind","Bidirectional","Weight"],rows:e.map(p=>[u(p.id,12),u(p.fromResourceId,12),u(p.toResourceId,12),p.kind,p.bidirectional?"yes":"no",String(p.weight)])});}catch(e){i(e);}}),o.command("create").description("Create a topology edge").requiredOption("--from <id>","From resource ID").requiredOption("--to <id>","To resource ID").option("--kind <k>","Edge kind","DEPENDS_ON").option("--bidirectional","Mark edge bidirectional").option("--weight <n>","Edge weight",m).option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={fromResourceId:t.from,toResourceId:t.to,kind:(t.kind??"DEPENDS_ON").toUpperCase()};t.bidirectional&&(e.bidirectional=!0),t.weight!==void 0&&(e.weight=t.weight),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await a(ct,{input:e});c(`Topology edge created: ${n.adaCreateTopologyEdge.id}`),s(t,n.adaCreateTopologyEdge);}catch(e){i(e);}});}function It(r){r.command("health").description("AdapterCloud service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await k(dt);c(t.adaHealth),s(o,{health:t.adaHealth});}catch(t){i(t);}});}var Dt={id:"adaptercloud",version:"1.0.0",displayName:"AdapterCloud",dependsOn:["auth","workspaces"],register(r,o){b(o);let t=r.command("adaptercloud").description("AdapterCloud multi-cloud adapter control plane");ut(t),pt(t),gt(t),mt(t),lt(t),ft(t),Ct(t),yt(t),It(t);}},Sn=Dt;module.exports=Sn;
@@ -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}from'../../chunk-YIY5IDXQ.js';var S=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var S=`
2
2
  query AdaptercloudGetAdapter($id: ID!) {
3
3
  adaAdapter(id: $id) {
4
4
  id workspaceId name slug description kind status version vendor
@@ -312,4 +312,4 @@ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o}from
312
312
  query AdaptercloudHealth {
313
313
  adaHealth
314
314
  }
315
- `;function m(d,o$1){try{return JSON.parse(o$1)}catch{throw new o(`--${d} must be valid JSON`)}}function u(d){let o$1=Number.parseInt(d,10);if(Number.isNaN(o$1))throw new o(`Expected an integer but got "${d}"`);return o$1}function R(d){let o$1=Number.parseFloat(d);if(Number.isNaN(o$1))throw new o(`Expected a number but got "${d}"`);return o$1}function f(d){return d.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function rt(d){let o$1=d.command("adapters").description("AdapterCloud adapters");o$1.command("list").description("List adapters").option("--kind <k>","Filter by adapter kind").option("--status <s>","Filter by adapter status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(h,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListAdapters.items,{headers:["ID","Name","Kind","Status","Version","Vendor"],rows:e.adaListAdapters.items.map(n=>[p(n.id,12),n.name,n.kind,n.status,n.version,n.vendor??"-"])});}catch(e){g(e);}}),o$1.command("get").description("Get an adapter by id").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(S,{id:t});if(!n.adaAdapter)throw new o(`Adapter ${t} not found`);h$1(e,n.adaAdapter);}catch(n){g(n);}}),o$1.command("create").description("Create an adapter").requiredOption("--name <name>","Adapter name").requiredOption("--slug <slug>","URL slug").option("--kind <k>","Adapter kind","CUSTOM").option("--status <s>","Adapter status","DRAFT").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,kind:(t.kind??"CUSTOM").toUpperCase(),status:(t.status??"DRAFT").toUpperCase()};t.version&&(e.version=t.version),t.vendor&&(e.vendor=t.vendor),t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=f(t.capabilities)),t.configSchema&&(e.configSchema=m("config-schema",t.configSchema)),t.tags&&(e.tags=f(t.tags));let n=await b$1(O,{input:e});i(`Adapter created: ${n.adaCreateAdapter.name}`),h$1(t,n.adaCreateAdapter);}catch(e){g(e);}}),o$1.command("update").description("Update an adapter").argument("<id>","Adapter ID").option("--name <name>","Adapter name").option("--kind <k>","Adapter kind").option("--status <s>","Adapter status").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.version&&(n.version=e.version),e.vendor!==void 0&&(n.vendor=e.vendor),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=f(e.capabilities)),e.configSchema&&(n.configSchema=m("config-schema",e.configSchema)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(E,{id:t,input:n});i("Adapter updated"),h$1(e,p.adaUpdateAdapter);}catch(n){g(n);}}),o$1.command("archive").description("Archive an adapter").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(w,{id:t});i(`Adapter archived: ${n.adaArchiveAdapter}`),h$1(e,{archived:n.adaArchiveAdapter});}catch(n){g(n);}});}function at(d){let o$1=d.command("connections").description("AdapterCloud connections");o$1.command("list").description("List connections").option("--adapter <id>","Filter by adapter ID").option("--status <s>","Filter by connection status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(k,{adapterId:t.adapter,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListConnections.items,{headers:["ID","Name","Status","Auth","Env","Region","Resources"],rows:e.adaListConnections.items.map(n=>[p(n.id,12),n.name,n.status,n.authMethod,n.environment??"-",n.region??"-",String(n.resourceCount)])});}catch(e){g(e);}}),o$1.command("get").description("Get a connection by id").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(D,{id:t});if(!n.adaConnection)throw new o(`Connection ${t} not found`);h$1(e,n.adaConnection);}catch(n){g(n);}}),o$1.command("create").description("Create a connection").requiredOption("--adapter <id>","Adapter ID").requiredOption("--name <name>","Connection name").option("--auth-method <m>","Auth method","NONE").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={adapterId:t.adapter,name:t.name,authMethod:(t.authMethod??"NONE").toUpperCase()};t.environment&&(e.environment=t.environment),t.region&&(e.region=t.region),t.targetRef&&(e.targetRef=t.targetRef),t.secretRef&&(e.secretRef=t.secretRef),t.config&&(e.config=m("config",t.config)),t.tags&&(e.tags=f(t.tags));let n=await b$1(b,{input:e});i(`Connection created: ${n.adaCreateConnection.name}`),h$1(t,n.adaCreateConnection);}catch(e){g(e);}}),o$1.command("update").description("Update a connection").argument("<id>","Connection ID").option("--name <name>","Connection name").option("--auth-method <m>","Auth method").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.authMethod&&(n.authMethod=e.authMethod.toUpperCase()),e.environment!==void 0&&(n.environment=e.environment),e.region!==void 0&&(n.region=e.region),e.targetRef!==void 0&&(n.targetRef=e.targetRef),e.secretRef!==void 0&&(n.secretRef=e.secretRef),e.config&&(n.config=m("config",e.config)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(T,{id:t,input:n});i("Connection updated"),h$1(e,p.adaUpdateConnection);}catch(n){g(n);}}),o$1.command("disable").description("Disable a connection").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($,{id:t});i(`Connection disabled: ${n.adaDisableConnection.status}`),h$1(e,n.adaDisableConnection);}catch(n){g(n);}}),o$1.command("set-status").description("Transition a connection status").argument("<id>","Connection ID").requiredOption("--status <s>","CONNECTED|DEGRADED|DISABLED|ERROR|PENDING").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t,status:e.status.toUpperCase()});i(`Connection status set to ${n.adaSetConnectionStatus.status}`),h$1(e,n.adaSetConnectionStatus);}catch(n){g(n);}});}function st(d){let o$1=d.command("resources").description("AdapterCloud resources");o$1.command("list").description("List resources").option("--connection <id>","Filter by connection ID").option("--resource-type <t>","Filter by resource type").option("--state <s>","Filter by resource state").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(L,{connectionId:t.connection,resourceType:t.resourceType,state:t.state?t.state.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListResources.items,{headers:["ID","Name","Type","Region","State","Cost/mo"],rows:e.adaListResources.items.map(n=>[p(n.id,12),n.name,n.resourceType,n.region??"-",n.state,String(n.monthlyCost)])});}catch(e){g(e);}}),o$1.command("get").description("Get a resource by id").argument("<id>","Resource ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(N,{id:t});if(!n.adaResource)throw new o(`Resource ${t} not found`);h$1(e,n.adaResource);}catch(n){g(n);}}),o$1.command("register").description("Register (upsert) a discovered resource").requiredOption("--connection <id>","Connection ID").requiredOption("--external-id <id>","External (provider) ID").requiredOption("--name <name>","Resource name").requiredOption("--resource-type <t>","Resource type").option("--region <r>","Region").option("--monthly-cost <n>","Monthly cost",R).option("--attributes <json>","Attributes JSON").option("--provider-tags <json>","Provider tags JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,externalId:t.externalId,name:t.name,resourceType:t.resourceType};t.region&&(e.region=t.region),t.monthlyCost!==void 0&&(e.monthlyCost=t.monthlyCost),t.attributes&&(e.attributes=m("attributes",t.attributes)),t.providerTags&&(e.providerTags=m("provider-tags",t.providerTags)),t.tags&&(e.tags=f(t.tags));let n=await b$1(_,{input:e});i(`Resource registered: ${n.adaRegisterResource.name}`),h$1(t,n.adaRegisterResource);}catch(e){g(e);}});}function dt(d){let o$1=d.command("policies").description("AdapterCloud policies & violations");o$1.command("list").description("List policies").option("--kind <k>","Filter by policy kind").option("--active <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{kind:t.kind?t.kind.toUpperCase():void 0,isActive:t.active,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListPolicies.items,{headers:["ID","Name","Kind","Severity","Enforcement","Active"],rows:e.adaListPolicies.items.map(n=>[p(n.id,12),n.name,n.kind,n.severity,n.enforcement,n.isActive?"yes":"no"])});}catch(e){g(e);}}),o$1.command("get").description("Get a policy by id").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(U,{id:t});if(!n.adaPolicy)throw new o(`Policy ${t} not found`);h$1(e,n.adaPolicy);}catch(n){g(n);}}),o$1.command("create").description("Create a policy").requiredOption("--name <name>","Policy name").requiredOption("--expression <json>","Policy expression JSON").option("--kind <k>","Policy kind","GUARDRAIL").option("--severity <s>","Severity","MEDIUM").option("--enforcement <e>","Enforcement","WARN").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,expression:m("expression",t.expression),kind:(t.kind??"GUARDRAIL").toUpperCase(),severity:(t.severity??"MEDIUM").toUpperCase(),enforcement:(t.enforcement??"WARN").toUpperCase()};t.active!==void 0&&(e.isActive=t.active),t.description&&(e.description=t.description),t.appliesTo&&(e.appliesTo=f(t.appliesTo)),t.tags&&(e.tags=f(t.tags));let n=await b$1(x,{input:e});i(`Policy created: ${n.adaCreatePolicy.name}`),h$1(t,n.adaCreatePolicy);}catch(e){g(e);}}),o$1.command("update").description("Update a policy").argument("<id>","Policy ID").option("--name <name>","Policy name").option("--kind <k>","Policy kind").option("--severity <s>","Severity").option("--enforcement <e>","Enforcement").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--expression <json>","Policy expression JSON").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.severity&&(n.severity=e.severity.toUpperCase()),e.enforcement&&(n.enforcement=e.enforcement.toUpperCase()),e.active!==void 0&&(n.isActive=e.active),e.description!==void 0&&(n.description=e.description),e.expression&&(n.expression=m("expression",e.expression)),e.appliesTo&&(n.appliesTo=f(e.appliesTo)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(M,{id:t,input:n});i("Policy updated"),h$1(e,p.adaUpdatePolicy);}catch(n){g(n);}}),o$1.command("archive").description("Archive a policy").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(q,{id:t});i(`Policy archived: ${n.adaArchivePolicy}`),h$1(e,{archived:n.adaArchivePolicy});}catch(n){g(n);}}),o$1.command("list-violations").description("List policy violations").option("--policy <id>","Filter by policy ID").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by violation status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{policyId:t.policy,resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListViolations.items,{headers:["ID","Policy","Resource","Severity","Status","Message"],rows:e.adaListViolations.items.map(n=>[p(n.id,12),p(n.policyId,12),p(n.resourceId,12),n.severity,n.status,p(n.message,30)])});}catch(e){g(e);}}),o$1.command("record-violation").description("Record a policy violation").requiredOption("--policy <id>","Policy ID").requiredOption("--resource <id>","Resource ID").requiredOption("--message <m>","Violation message").option("--severity <s>","Severity").option("--evidence <json>","Evidence JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={policyId:t.policy,resourceId:t.resource,message:t.message};t.severity&&(e.severity=t.severity.toUpperCase()),t.evidence&&(e.evidence=m("evidence",t.evidence));let n=await b$1(G,{input:e});i("Violation recorded"),h$1(t,n.adaRecordViolation);}catch(e){g(e);}}),o$1.command("resolve-violation").description("Resolve or waive a violation").argument("<id>","Violation ID").requiredOption("--status <s>","ACKNOWLEDGED|OPEN|RESOLVED|WAIVED").option("--waiver-reason <r>","Waiver reason (required when waiving)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Y,{id:t,status:e.status.toUpperCase(),waiverReason:e.waiverReason});i(`Violation ${n.adaResolveViolation.status}`),h$1(e,n.adaResolveViolation);}catch(n){g(n);}});}function ct(d){let o$1=d.command("sync-runs").description("AdapterCloud sync runs");o$1.command("list").description("List sync runs").option("--connection <id>","Filter by connection ID").option("--status <s>","Filter by sync status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{connectionId:t.connection,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});h$1(t,e.adaListSyncRuns.items,{headers:["ID","Connection","Kind","Status","Discovered","Drift","Violations"],rows:e.adaListSyncRuns.items.map(n=>[p(n.id,12),p(n.connectionId,12),n.kind,n.status,String(n.discoveredCount),String(n.driftCount),String(n.violationCount)])});}catch(e){g(e);}}),o$1.command("get").description("Get a sync run by id").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(J,{id:t});if(!n.adaSyncRun)throw new o(`Sync run ${t} not found`);h$1(e,n.adaSyncRun);}catch(n){g(n);}}),o$1.command("start").description("Start a sync run").requiredOption("--connection <id>","Connection ID").option("--kind <k>","Sync kind (DISCOVERY|RECONCILE|COST_INGEST|FULL)","DISCOVERY").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,kind:(t.kind??"DISCOVERY").toUpperCase()},n=await b$1(W,{input:e});i(`Sync run started: ${n.adaStartSyncRun.id}`),h$1(t,n.adaStartSyncRun);}catch(e){g(e);}}),o$1.command("complete").description("Mark a sync run complete").argument("<id>","Sync run ID").option("--discovered-count <n>","Discovered count",u).option("--reconciled-count <n>","Reconciled count",u).option("--drift-count <n>","Drift count",u).option("--violation-count <n>","Violation count",u).option("--summary <json>","Summary JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.discoveredCount!==void 0&&(n.discoveredCount=e.discoveredCount),e.reconciledCount!==void 0&&(n.reconciledCount=e.reconciledCount),e.driftCount!==void 0&&(n.driftCount=e.driftCount),e.violationCount!==void 0&&(n.violationCount=e.violationCount),e.summary&&(n.summary=m("summary",e.summary));let p=await b$1(H,{id:t,input:Object.keys(n).length?n:void 0});i(`Sync run completed: ${p.adaCompleteSyncRun.status}`),h$1(e,p.adaCompleteSyncRun);}catch(n){g(n);}}),o$1.command("cancel").description("Cancel a sync run").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(K,{id:t});i(`Sync run cancelled: ${n.adaCancelSyncRun.status}`),h$1(e,n.adaCancelSyncRun);}catch(n){g(n);}}),o$1.command("fail").description("Mark a sync run failed").argument("<id>","Sync run ID").requiredOption("--error <e>","Error message").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(B,{id:t,error:e.error});i(`Sync run failed: ${n.adaFailSyncRun.status}`),h$1(e,n.adaFailSyncRun);}catch(n){g(n);}});}function pt(d){let o=d.command("cost").description("AdapterCloud cost records & summaries");o.command("summary").description("Aggregate spend grouped by service").option("--connection <id>","Scope summary to a connection").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(z,{connectionId:t.connection});h$1(t,e.adaCostSummary,{headers:["Service","Total"],rows:e.adaCostSummary.lines.map(n=>[n.service,String(n.total)])});}catch(e){g(e);}}),o.command("list").description("List cost records").option("--connection <id>","Filter by connection ID").option("--resource <id>","Filter by resource ID").option("--service <s>","Filter by service").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await b$1(Q,{connectionId:t.connection,resourceId:t.resource,service:t.service,pagination:{limit:100,offset:n}})).adaListCostRecords;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}h$1(t,e,{headers:["ID","Service","Amount","Currency","Period start","Period end"],rows:e.map(p$1=>[p(p$1.id,12),p$1.service,String(p$1.amount),p$1.currency,p$1.periodStart,p$1.periodEnd])});}catch(e){g(e);}}),o.command("ingest").description("Ingest a cost record").requiredOption("--service <s>","Service name").requiredOption("--amount <n>","Amount",R).requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--currency <c>","Currency code").option("--connection <id>","Connection ID").option("--resource <id>","Resource ID").option("--breakdown <json>","Breakdown JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={service:t.service,amount:t.amount,periodStart:t.periodStart,periodEnd:t.periodEnd};t.currency&&(e.currency=t.currency),t.connection&&(e.connectionId=t.connection),t.resource&&(e.resourceId=t.resource),t.breakdown&&(e.breakdown=m("breakdown",t.breakdown));let n=await b$1(X,{input:e});i(`Cost ingested: ${n.adaIngestCost.service} ${n.adaIngestCost.amount}`),h$1(t,n.adaIngestCost);}catch(e){g(e);}});}function ut(d){let o=d.command("drift").description("AdapterCloud drift records");o.command("list").description("List drift records").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by drift status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Z,{resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.adaListDriftRecords,{headers:["ID","Resource","Attribute","Severity","Status"],rows:e.adaListDriftRecords.map(n=>[p(n.id,12),p(n.resourceId,12),n.attributePath,n.severity,n.status])});}catch(e){g(e);}}),o.command("record").description("Record a drift observation").requiredOption("--resource <id>","Resource ID").requiredOption("--attribute-path <p>","Attribute path").option("--severity <s>","Severity").option("--expected <json>","Expected value JSON").option("--observed <json>","Observed value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={resourceId:t.resource,attributePath:t.attributePath};t.severity&&(e.severity=t.severity.toUpperCase()),t.expected&&(e.expectedValue=m("expected",t.expected)),t.observed&&(e.observedValue=m("observed",t.observed));let n=await b$1(tt,{input:e});i("Drift recorded"),h$1(t,n.adaRecordDrift);}catch(e){g(e);}}),o.command("remediate").description("Mark a drift record remediated").argument("<id>","Drift record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(et,{id:t});i(`Drift remediated: ${n.adaRemediateDrift.status}`),h$1(e,n.adaRemediateDrift);}catch(n){g(n);}});}function mt(d){let o=d.command("topology").description("AdapterCloud topology edges");o.command("list").description("List topology edges").option("--resource <id>","Filter by resource ID (either endpoint)").option("--kind <k>","Filter by edge kind").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await b$1(nt,{resourceId:t.resource,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:100,offset:n}})).adaListTopologyEdges;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}h$1(t,e,{headers:["ID","From","To","Kind","Bidirectional","Weight"],rows:e.map(p$1=>[p(p$1.id,12),p(p$1.fromResourceId,12),p(p$1.toResourceId,12),p$1.kind,p$1.bidirectional?"yes":"no",String(p$1.weight)])});}catch(e){g(e);}}),o.command("create").description("Create a topology edge").requiredOption("--from <id>","From resource ID").requiredOption("--to <id>","To resource ID").option("--kind <k>","Edge kind","DEPENDS_ON").option("--bidirectional","Mark edge bidirectional").option("--weight <n>","Edge weight",u).option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={fromResourceId:t.from,toResourceId:t.to,kind:(t.kind??"DEPENDS_ON").toUpperCase()};t.bidirectional&&(e.bidirectional=!0),t.weight!==void 0&&(e.weight=t.weight),t.attributes&&(e.attributes=m("attributes",t.attributes));let n=await b$1(ot,{input:e});i(`Topology edge created: ${n.adaCreateTopologyEdge.id}`),h$1(t,n.adaCreateTopologyEdge);}catch(e){g(e);}});}function gt(d$1){d$1.command("health").description("AdapterCloud service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await d(it);i(t.adaHealth),h$1(o,{health:t.adaHealth});}catch(t){g(t);}});}var ft={id:"adaptercloud",version:"1.0.0",displayName:"AdapterCloud",dependsOn:["auth","workspaces"],register(d,o){a(o);let t=d.command("adaptercloud").description("AdapterCloud multi-cloud adapter control plane");rt(t),at(t),st(t),dt(t),ct(t),pt(t),ut(t),mt(t),gt(t);}},ie=ft;export{ie as default};
315
+ `;function m(d,o$1){try{return JSON.parse(o$1)}catch{throw new o(`--${d} must be valid JSON`)}}function u(d){let o$1=Number.parseInt(d,10);if(Number.isNaN(o$1))throw new o(`Expected an integer but got "${d}"`);return o$1}function R(d){let o$1=Number.parseFloat(d);if(Number.isNaN(o$1))throw new o(`Expected a number but got "${d}"`);return o$1}function f(d){return d.split(",").map(o=>o.trim()).filter(o=>o.length>0)}function rt(d){let o$1=d.command("adapters").description("AdapterCloud adapters");o$1.command("list").description("List adapters").option("--kind <k>","Filter by adapter kind").option("--status <s>","Filter by adapter status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(h,{kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListAdapters.items,{headers:["ID","Name","Kind","Status","Version","Vendor"],rows:e.adaListAdapters.items.map(n=>[r(n.id,12),n.name,n.kind,n.status,n.version,n.vendor??"-"])});}catch(e){h$1(e);}}),o$1.command("get").description("Get an adapter by id").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(S,{id:t});if(!n.adaAdapter)throw new o(`Adapter ${t} not found`);i(e,n.adaAdapter);}catch(n){h$1(n);}}),o$1.command("create").description("Create an adapter").requiredOption("--name <name>","Adapter name").requiredOption("--slug <slug>","URL slug").option("--kind <k>","Adapter kind","CUSTOM").option("--status <s>","Adapter status","DRAFT").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,kind:(t.kind??"CUSTOM").toUpperCase(),status:(t.status??"DRAFT").toUpperCase()};t.version&&(e.version=t.version),t.vendor&&(e.vendor=t.vendor),t.description&&(e.description=t.description),t.capabilities&&(e.capabilities=f(t.capabilities)),t.configSchema&&(e.configSchema=m("config-schema",t.configSchema)),t.tags&&(e.tags=f(t.tags));let n=await b$1(O,{input:e});k$1(`Adapter created: ${n.adaCreateAdapter.name}`),i(t,n.adaCreateAdapter);}catch(e){h$1(e);}}),o$1.command("update").description("Update an adapter").argument("<id>","Adapter ID").option("--name <name>","Adapter name").option("--kind <k>","Adapter kind").option("--status <s>","Adapter status").option("--version <v>","Version").option("--vendor <v>","Vendor").option("--description <s>","Description").option("--capabilities <csv>","Comma-separated capabilities").option("--config-schema <json>","Config schema JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.status&&(n.status=e.status.toUpperCase()),e.version&&(n.version=e.version),e.vendor!==void 0&&(n.vendor=e.vendor),e.description!==void 0&&(n.description=e.description),e.capabilities&&(n.capabilities=f(e.capabilities)),e.configSchema&&(n.configSchema=m("config-schema",e.configSchema)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(E,{id:t,input:n});k$1("Adapter updated"),i(e,p.adaUpdateAdapter);}catch(n){h$1(n);}}),o$1.command("archive").description("Archive an adapter").argument("<id>","Adapter ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(w,{id:t});k$1(`Adapter archived: ${n.adaArchiveAdapter}`),i(e,{archived:n.adaArchiveAdapter});}catch(n){h$1(n);}});}function at(d){let o$1=d.command("connections").description("AdapterCloud connections");o$1.command("list").description("List connections").option("--adapter <id>","Filter by adapter ID").option("--status <s>","Filter by connection status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(k,{adapterId:t.adapter,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListConnections.items,{headers:["ID","Name","Status","Auth","Env","Region","Resources"],rows:e.adaListConnections.items.map(n=>[r(n.id,12),n.name,n.status,n.authMethod,n.environment??"-",n.region??"-",String(n.resourceCount)])});}catch(e){h$1(e);}}),o$1.command("get").description("Get a connection by id").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(D,{id:t});if(!n.adaConnection)throw new o(`Connection ${t} not found`);i(e,n.adaConnection);}catch(n){h$1(n);}}),o$1.command("create").description("Create a connection").requiredOption("--adapter <id>","Adapter ID").requiredOption("--name <name>","Connection name").option("--auth-method <m>","Auth method","NONE").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={adapterId:t.adapter,name:t.name,authMethod:(t.authMethod??"NONE").toUpperCase()};t.environment&&(e.environment=t.environment),t.region&&(e.region=t.region),t.targetRef&&(e.targetRef=t.targetRef),t.secretRef&&(e.secretRef=t.secretRef),t.config&&(e.config=m("config",t.config)),t.tags&&(e.tags=f(t.tags));let n=await b$1(b,{input:e});k$1(`Connection created: ${n.adaCreateConnection.name}`),i(t,n.adaCreateConnection);}catch(e){h$1(e);}}),o$1.command("update").description("Update a connection").argument("<id>","Connection ID").option("--name <name>","Connection name").option("--auth-method <m>","Auth method").option("--environment <e>","Environment").option("--region <r>","Region").option("--target-ref <t>","Target reference").option("--secret-ref <s>","Secret reference").option("--config <json>","Config JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.authMethod&&(n.authMethod=e.authMethod.toUpperCase()),e.environment!==void 0&&(n.environment=e.environment),e.region!==void 0&&(n.region=e.region),e.targetRef!==void 0&&(n.targetRef=e.targetRef),e.secretRef!==void 0&&(n.secretRef=e.secretRef),e.config&&(n.config=m("config",e.config)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(T,{id:t,input:n});k$1("Connection updated"),i(e,p.adaUpdateConnection);}catch(n){h$1(n);}}),o$1.command("disable").description("Disable a connection").argument("<id>","Connection ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1($,{id:t});k$1(`Connection disabled: ${n.adaDisableConnection.status}`),i(e,n.adaDisableConnection);}catch(n){h$1(n);}}),o$1.command("set-status").description("Transition a connection status").argument("<id>","Connection ID").requiredOption("--status <s>","CONNECTED|DEGRADED|DISABLED|ERROR|PENDING").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(P,{id:t,status:e.status.toUpperCase()});k$1(`Connection status set to ${n.adaSetConnectionStatus.status}`),i(e,n.adaSetConnectionStatus);}catch(n){h$1(n);}});}function st(d){let o$1=d.command("resources").description("AdapterCloud resources");o$1.command("list").description("List resources").option("--connection <id>","Filter by connection ID").option("--resource-type <t>","Filter by resource type").option("--state <s>","Filter by resource state").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(L,{connectionId:t.connection,resourceType:t.resourceType,state:t.state?t.state.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListResources.items,{headers:["ID","Name","Type","Region","State","Cost/mo"],rows:e.adaListResources.items.map(n=>[r(n.id,12),n.name,n.resourceType,n.region??"-",n.state,String(n.monthlyCost)])});}catch(e){h$1(e);}}),o$1.command("get").description("Get a resource by id").argument("<id>","Resource ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(N,{id:t});if(!n.adaResource)throw new o(`Resource ${t} not found`);i(e,n.adaResource);}catch(n){h$1(n);}}),o$1.command("register").description("Register (upsert) a discovered resource").requiredOption("--connection <id>","Connection ID").requiredOption("--external-id <id>","External (provider) ID").requiredOption("--name <name>","Resource name").requiredOption("--resource-type <t>","Resource type").option("--region <r>","Region").option("--monthly-cost <n>","Monthly cost",R).option("--attributes <json>","Attributes JSON").option("--provider-tags <json>","Provider tags JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,externalId:t.externalId,name:t.name,resourceType:t.resourceType};t.region&&(e.region=t.region),t.monthlyCost!==void 0&&(e.monthlyCost=t.monthlyCost),t.attributes&&(e.attributes=m("attributes",t.attributes)),t.providerTags&&(e.providerTags=m("provider-tags",t.providerTags)),t.tags&&(e.tags=f(t.tags));let n=await b$1(_,{input:e});k$1(`Resource registered: ${n.adaRegisterResource.name}`),i(t,n.adaRegisterResource);}catch(e){h$1(e);}});}function dt(d){let o$1=d.command("policies").description("AdapterCloud policies & violations");o$1.command("list").description("List policies").option("--kind <k>","Filter by policy kind").option("--active <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{kind:t.kind?t.kind.toUpperCase():void 0,isActive:t.active,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListPolicies.items,{headers:["ID","Name","Kind","Severity","Enforcement","Active"],rows:e.adaListPolicies.items.map(n=>[r(n.id,12),n.name,n.kind,n.severity,n.enforcement,n.isActive?"yes":"no"])});}catch(e){h$1(e);}}),o$1.command("get").description("Get a policy by id").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(U,{id:t});if(!n.adaPolicy)throw new o(`Policy ${t} not found`);i(e,n.adaPolicy);}catch(n){h$1(n);}}),o$1.command("create").description("Create a policy").requiredOption("--name <name>","Policy name").requiredOption("--expression <json>","Policy expression JSON").option("--kind <k>","Policy kind","GUARDRAIL").option("--severity <s>","Severity","MEDIUM").option("--enforcement <e>","Enforcement","WARN").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,expression:m("expression",t.expression),kind:(t.kind??"GUARDRAIL").toUpperCase(),severity:(t.severity??"MEDIUM").toUpperCase(),enforcement:(t.enforcement??"WARN").toUpperCase()};t.active!==void 0&&(e.isActive=t.active),t.description&&(e.description=t.description),t.appliesTo&&(e.appliesTo=f(t.appliesTo)),t.tags&&(e.tags=f(t.tags));let n=await b$1(x,{input:e});k$1(`Policy created: ${n.adaCreatePolicy.name}`),i(t,n.adaCreatePolicy);}catch(e){h$1(e);}}),o$1.command("update").description("Update a policy").argument("<id>","Policy ID").option("--name <name>","Policy name").option("--kind <k>","Policy kind").option("--severity <s>","Severity").option("--enforcement <e>","Enforcement").option("--active <bool>","true|false",t=>t==="true").option("--description <s>","Description").option("--expression <json>","Policy expression JSON").option("--applies-to <csv>","Comma-separated resource types/selectors").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.kind&&(n.kind=e.kind.toUpperCase()),e.severity&&(n.severity=e.severity.toUpperCase()),e.enforcement&&(n.enforcement=e.enforcement.toUpperCase()),e.active!==void 0&&(n.isActive=e.active),e.description!==void 0&&(n.description=e.description),e.expression&&(n.expression=m("expression",e.expression)),e.appliesTo&&(n.appliesTo=f(e.appliesTo)),e.tags&&(n.tags=f(e.tags)),!Object.keys(n).length)throw new o("No updates specified");let p=await b$1(M,{id:t,input:n});k$1("Policy updated"),i(e,p.adaUpdatePolicy);}catch(n){h$1(n);}}),o$1.command("archive").description("Archive a policy").argument("<id>","Policy ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(q,{id:t});k$1(`Policy archived: ${n.adaArchivePolicy}`),i(e,{archived:n.adaArchivePolicy});}catch(n){h$1(n);}}),o$1.command("list-violations").description("List policy violations").option("--policy <id>","Filter by policy ID").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by violation status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(F,{policyId:t.policy,resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListViolations.items,{headers:["ID","Policy","Resource","Severity","Status","Message"],rows:e.adaListViolations.items.map(n=>[r(n.id,12),r(n.policyId,12),r(n.resourceId,12),n.severity,n.status,r(n.message,30)])});}catch(e){h$1(e);}}),o$1.command("record-violation").description("Record a policy violation").requiredOption("--policy <id>","Policy ID").requiredOption("--resource <id>","Resource ID").requiredOption("--message <m>","Violation message").option("--severity <s>","Severity").option("--evidence <json>","Evidence JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={policyId:t.policy,resourceId:t.resource,message:t.message};t.severity&&(e.severity=t.severity.toUpperCase()),t.evidence&&(e.evidence=m("evidence",t.evidence));let n=await b$1(G,{input:e});k$1("Violation recorded"),i(t,n.adaRecordViolation);}catch(e){h$1(e);}}),o$1.command("resolve-violation").description("Resolve or waive a violation").argument("<id>","Violation ID").requiredOption("--status <s>","ACKNOWLEDGED|OPEN|RESOLVED|WAIVED").option("--waiver-reason <r>","Waiver reason (required when waiving)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(Y,{id:t,status:e.status.toUpperCase(),waiverReason:e.waiverReason});k$1(`Violation ${n.adaResolveViolation.status}`),i(e,n.adaResolveViolation);}catch(n){h$1(n);}});}function ct(d){let o$1=d.command("sync-runs").description("AdapterCloud sync runs");o$1.command("list").description("List sync runs").option("--connection <id>","Filter by connection ID").option("--status <s>","Filter by sync status").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{connectionId:t.connection,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset,cursor:t.cursor}});i(t,e.adaListSyncRuns.items,{headers:["ID","Connection","Kind","Status","Discovered","Drift","Violations"],rows:e.adaListSyncRuns.items.map(n=>[r(n.id,12),r(n.connectionId,12),n.kind,n.status,String(n.discoveredCount),String(n.driftCount),String(n.violationCount)])});}catch(e){h$1(e);}}),o$1.command("get").description("Get a sync run by id").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(J,{id:t});if(!n.adaSyncRun)throw new o(`Sync run ${t} not found`);i(e,n.adaSyncRun);}catch(n){h$1(n);}}),o$1.command("start").description("Start a sync run").requiredOption("--connection <id>","Connection ID").option("--kind <k>","Sync kind (DISCOVERY|RECONCILE|COST_INGEST|FULL)","DISCOVERY").option("-f, --format <format>","Output format").action(async t=>{try{let e={connectionId:t.connection,kind:(t.kind??"DISCOVERY").toUpperCase()},n=await b$1(W,{input:e});k$1(`Sync run started: ${n.adaStartSyncRun.id}`),i(t,n.adaStartSyncRun);}catch(e){h$1(e);}}),o$1.command("complete").description("Mark a sync run complete").argument("<id>","Sync run ID").option("--discovered-count <n>","Discovered count",u).option("--reconciled-count <n>","Reconciled count",u).option("--drift-count <n>","Drift count",u).option("--violation-count <n>","Violation count",u).option("--summary <json>","Summary JSON").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};e.discoveredCount!==void 0&&(n.discoveredCount=e.discoveredCount),e.reconciledCount!==void 0&&(n.reconciledCount=e.reconciledCount),e.driftCount!==void 0&&(n.driftCount=e.driftCount),e.violationCount!==void 0&&(n.violationCount=e.violationCount),e.summary&&(n.summary=m("summary",e.summary));let p=await b$1(H,{id:t,input:Object.keys(n).length?n:void 0});k$1(`Sync run completed: ${p.adaCompleteSyncRun.status}`),i(e,p.adaCompleteSyncRun);}catch(n){h$1(n);}}),o$1.command("cancel").description("Cancel a sync run").argument("<id>","Sync run ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(K,{id:t});k$1(`Sync run cancelled: ${n.adaCancelSyncRun.status}`),i(e,n.adaCancelSyncRun);}catch(n){h$1(n);}}),o$1.command("fail").description("Mark a sync run failed").argument("<id>","Sync run ID").requiredOption("--error <e>","Error message").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(B,{id:t,error:e.error});k$1(`Sync run failed: ${n.adaFailSyncRun.status}`),i(e,n.adaFailSyncRun);}catch(n){h$1(n);}});}function pt(d){let o=d.command("cost").description("AdapterCloud cost records & summaries");o.command("summary").description("Aggregate spend grouped by service").option("--connection <id>","Scope summary to a connection").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(z,{connectionId:t.connection});i(t,e.adaCostSummary,{headers:["Service","Total"],rows:e.adaCostSummary.lines.map(n=>[n.service,String(n.total)])});}catch(e){h$1(e);}}),o.command("list").description("List cost records").option("--connection <id>","Filter by connection ID").option("--resource <id>","Filter by resource ID").option("--service <s>","Filter by service").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await b$1(Q,{connectionId:t.connection,resourceId:t.resource,service:t.service,pagination:{limit:100,offset:n}})).adaListCostRecords;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}i(t,e,{headers:["ID","Service","Amount","Currency","Period start","Period end"],rows:e.map(p=>[r(p.id,12),p.service,String(p.amount),p.currency,p.periodStart,p.periodEnd])});}catch(e){h$1(e);}}),o.command("ingest").description("Ingest a cost record").requiredOption("--service <s>","Service name").requiredOption("--amount <n>","Amount",R).requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--currency <c>","Currency code").option("--connection <id>","Connection ID").option("--resource <id>","Resource ID").option("--breakdown <json>","Breakdown JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={service:t.service,amount:t.amount,periodStart:t.periodStart,periodEnd:t.periodEnd};t.currency&&(e.currency=t.currency),t.connection&&(e.connectionId=t.connection),t.resource&&(e.resourceId=t.resource),t.breakdown&&(e.breakdown=m("breakdown",t.breakdown));let n=await b$1(X,{input:e});k$1(`Cost ingested: ${n.adaIngestCost.service} ${n.adaIngestCost.amount}`),i(t,n.adaIngestCost);}catch(e){h$1(e);}});}function ut(d){let o=d.command("drift").description("AdapterCloud drift records");o.command("list").description("List drift records").option("--resource <id>","Filter by resource ID").option("--status <s>","Filter by drift status").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Z,{resourceId:t.resource,status:t.status?t.status.toUpperCase():void 0});i(t,e.adaListDriftRecords,{headers:["ID","Resource","Attribute","Severity","Status"],rows:e.adaListDriftRecords.map(n=>[r(n.id,12),r(n.resourceId,12),n.attributePath,n.severity,n.status])});}catch(e){h$1(e);}}),o.command("record").description("Record a drift observation").requiredOption("--resource <id>","Resource ID").requiredOption("--attribute-path <p>","Attribute path").option("--severity <s>","Severity").option("--expected <json>","Expected value JSON").option("--observed <json>","Observed value JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={resourceId:t.resource,attributePath:t.attributePath};t.severity&&(e.severity=t.severity.toUpperCase()),t.expected&&(e.expectedValue=m("expected",t.expected)),t.observed&&(e.observedValue=m("observed",t.observed));let n=await b$1(tt,{input:e});k$1("Drift recorded"),i(t,n.adaRecordDrift);}catch(e){h$1(e);}}),o.command("remediate").description("Mark a drift record remediated").argument("<id>","Drift record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await b$1(et,{id:t});k$1(`Drift remediated: ${n.adaRemediateDrift.status}`),i(e,n.adaRemediateDrift);}catch(n){h$1(n);}});}function mt(d){let o=d.command("topology").description("AdapterCloud topology edges");o.command("list").description("List topology edges").option("--resource <id>","Filter by resource ID (either endpoint)").option("--kind <k>","Filter by edge kind").option("-f, --format <format>","Output format").action(async t=>{try{let e=[],n=0;for(;;){let C=(await b$1(nt,{resourceId:t.resource,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:100,offset:n}})).adaListTopologyEdges;if(e.push(...C.items),!C.pageInfo.hasMore||C.items.length===0)break;n+=C.items.length;}i(t,e,{headers:["ID","From","To","Kind","Bidirectional","Weight"],rows:e.map(p=>[r(p.id,12),r(p.fromResourceId,12),r(p.toResourceId,12),p.kind,p.bidirectional?"yes":"no",String(p.weight)])});}catch(e){h$1(e);}}),o.command("create").description("Create a topology edge").requiredOption("--from <id>","From resource ID").requiredOption("--to <id>","To resource ID").option("--kind <k>","Edge kind","DEPENDS_ON").option("--bidirectional","Mark edge bidirectional").option("--weight <n>","Edge weight",u).option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={fromResourceId:t.from,toResourceId:t.to,kind:(t.kind??"DEPENDS_ON").toUpperCase()};t.bidirectional&&(e.bidirectional=!0),t.weight!==void 0&&(e.weight=t.weight),t.attributes&&(e.attributes=m("attributes",t.attributes));let n=await b$1(ot,{input:e});k$1(`Topology edge created: ${n.adaCreateTopologyEdge.id}`),i(t,n.adaCreateTopologyEdge);}catch(e){h$1(e);}});}function gt(d$1){d$1.command("health").description("AdapterCloud service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await d(it);k$1(t.adaHealth),i(o,{health:t.adaHealth});}catch(t){h$1(t);}});}var ft={id:"adaptercloud",version:"1.0.0",displayName:"AdapterCloud",dependsOn:["auth","workspaces"],register(d,o){a(o);let t=d.command("adaptercloud").description("AdapterCloud multi-cloud adapter control plane");rt(t),at(t),st(t),dt(t),ct(t),pt(t),ut(t),mt(t),gt(t);}},ie=ft;export{ie 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}from'../../chunk-YIY5IDXQ.js';var v=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var v=`
2
2
  query ArtListWorks(
3
3
  $medium: ArtMedium
4
4
  $status: ArtWorkStatus
@@ -331,4 +331,4 @@ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-W4JZR7RJ.js';import {o}from
331
331
  query ArtHealth {
332
332
  artHealth
333
333
  }
334
- `;function k(p,c){try{return JSON.parse(c)}catch{throw new o(`--${p} must be valid JSON`)}}function f(p){let c=Number.parseInt(p,10);if(Number.isNaN(c))throw new o(`Expected an integer but got "${p}"`);return c}function y(p){let c=Number.parseFloat(p);if(Number.isNaN(c))throw new o(`Expected a number but got "${p}"`);return c}function I(p){return p.split(",").map(c=>c.trim()).filter(c=>c.length>0)}function At(p$1){let c=p$1.command("works").description("Artistrybase creative works");c.command("list").description("List works").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--status <s>","DRAFT|IN_REVIEW|APPROVED|RELEASED|ARCHIVED").option("--production <id>","Filter by production ID").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async i=>{try{let t={limit:i.limit,offset:i.offset},o=await b$1(v,{medium:i.medium?i.medium.toUpperCase():void 0,status:i.status?i.status.toUpperCase():void 0,productionId:i.production,pagination:t});h$1(i,o.artListWorks.items,{headers:["ID","Title","Medium","Status","Visibility"],rows:o.artListWorks.items.map(d=>[p(d.id,12),d.title,d.medium,d.status,d.visibility])});}catch(t){g(t);}}),c.command("get").description("Get a work by id").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(i,t)=>{try{let o$1=await b$1(E,{id:i});if(!o$1.artWork)throw new o(`Work ${i} not found`);h$1(t,o$1.artWork);}catch(o){g(o);}}),c.command("create").description("Create a work").requiredOption("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO","MIXED").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PRIVATE").option("--summary <s>","Summary").option("--production <id>","Production ID").option("--cover-file <id>","Cover file ID").option("--duration-ms <n>","Duration in ms",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={title:i$1.title,medium:(i$1.medium??"MIXED").toUpperCase(),visibility:(i$1.visibility??"PRIVATE").toUpperCase()};i$1.summary&&(t.summary=i$1.summary),i$1.production&&(t.productionId=i$1.production),i$1.coverFile&&(t.coverFileId=i$1.coverFile),i$1.durationMs!==void 0&&(t.durationMs=i$1.durationMs),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(C,{input:t});i(`Work created: ${o.artCreateWork.title}`),h$1(i$1,o.artCreateWork);}catch(t){g(t);}}),c.command("update").description("Update a work").argument("<id>","Work ID").option("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--summary <s>","Summary").option("--production <id>","Production ID").option("--cover-file <id>","Cover file ID").option("--duration-ms <n>","Duration in ms",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1={};if(t.title&&(o$1.title=t.title),t.medium&&(o$1.medium=t.medium.toUpperCase()),t.visibility&&(o$1.visibility=t.visibility.toUpperCase()),t.summary!==void 0&&(o$1.summary=t.summary),t.production&&(o$1.productionId=t.production),t.coverFile&&(o$1.coverFileId=t.coverFile),t.durationMs!==void 0&&(o$1.durationMs=t.durationMs),t.tags&&(o$1.tags=I(t.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let d=await b$1(T,{id:i$1,input:o$1});i("Work updated"),h$1(t,d.artUpdateWork);}catch(o){g(o);}}),c.command("archive").description("Archive a work").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(b,{id:i$1});i(`Work archived: ${String(o.artArchiveWork)}`),h$1(t,{archived:o.artArchiveWork});}catch(o){g(o);}}),c.command("publish-version").description("Promote a version to the work's published current version").argument("<workId>","Work ID").requiredOption("--version <id>","Version ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(D,{workId:i$1,versionId:t.version});i("Version published"),h$1(t,o.artPublishWorkVersion);}catch(o){g(o);}});let s=p$1.command("versions").description("Artistrybase work versions");s.command("list").description("List versions for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async i=>{try{let t=await b$1(L,{workId:i.work});h$1(i,t.artListWorkVersions,{headers:["ID","No","Label","Published","File"],rows:t.artListWorkVersions.map(o=>[p(o.id,12),String(o.versionNo),o.label??"-",o.isPublished?"yes":"no",p(String(o.fileId??"-"),12)])});}catch(t){g(t);}}),s.command("add").description("Upload a new immutable version of a work").requiredOption("--work <id>","Work ID").option("--label <l>","Version label").option("--notes <n>","Notes").option("--file <id>","Source file ID").option("--checksum <c>","Checksum").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={workId:i$1.work};i$1.label&&(t.label=i$1.label),i$1.notes&&(t.notes=i$1.notes),i$1.file&&(t.fileId=i$1.file),i$1.checksum&&(t.checksum=i$1.checksum);let o=await b$1(P,{input:t});i(`Version added: v${o.artAddWorkVersion.versionNo}`),h$1(i$1,o.artAddWorkVersion);}catch(t){g(t);}});let e=p$1.command("assets").description("Artistrybase work assets");e.command("list").description("List assets for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async i=>{try{let t=await b$1(h,{workId:i.work});h$1(i,t.artListAssets,{headers:["ID","Kind","File","MIME"],rows:t.artListAssets.map(o=>[p(o.id,12),o.kind,p(o.fileId,12),o.mimeType??"-"])});}catch(t){g(t);}}),e.command("add").description("Attach a file asset to a work").requiredOption("--work <id>","Work ID").requiredOption("--file <id>","File ID").option("--kind <k>","SOURCE|MASTER|PREVIEW|COVER|CAPTION|ATTACHMENT","SOURCE").option("--mime-type <t>","MIME type").option("--version <id>","Version ID").option("--width <n>","Width",f).option("--height <n>","Height",f).option("--duration-ms <n>","Duration in ms",f).option("-f, --format <format>","Output format").action(async i$1=>{try{let t={workId:i$1.work,fileId:i$1.file,kind:(i$1.kind??"SOURCE").toUpperCase()};i$1.mimeType&&(t.mimeType=i$1.mimeType),i$1.version&&(t.versionId=i$1.version),i$1.width!==void 0&&(t.width=i$1.width),i$1.height!==void 0&&(t.height=i$1.height),i$1.durationMs!==void 0&&(t.durationMs=i$1.durationMs);let o=await b$1(_,{input:t});i(`Asset added: ${o.artAddAsset.kind}`),h$1(i$1,o.artAddAsset);}catch(t){g(t);}});}function wt(p$1){let c=p$1.command("collections").description("Artistrybase curated collections");c.command("list").description("List collections").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async s=>{try{let e=await b$1(S,{visibility:s.visibility?s.visibility.toUpperCase():void 0,pagination:{limit:s.limit,offset:s.offset}});h$1(s,e.artListCollections.items,{headers:["ID","Title","Slug","Medium","Visibility"],rows:e.artListCollections.items.map(i=>[p(i.id,12),i.title,i.slug,i.medium??"-",i.visibility])});}catch(e){g(e);}}),c.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i=await b$1($,{id:s});if(!i.artCollection)throw new o(`Collection ${s} not found`);h$1(e,i.artCollection);}catch(i){g(i);}}),c.command("create").description("Create a collection").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").option("--description <d>","Description").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PRIVATE").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async s=>{try{let e={title:s.title,slug:s.slug,visibility:(s.visibility??"PRIVATE").toUpperCase()};s.description&&(e.description=s.description),s.medium&&(e.medium=s.medium.toUpperCase()),s.coverFile&&(e.coverFileId=s.coverFile),s.tags&&(e.tags=I(s.tags));let i$1=await b$1(U,{input:e});i(`Collection created: ${i$1.artCreateCollection.title}`),h$1(s,i$1.artCreateCollection);}catch(e){g(e);}}),c.command("update").description("Update a collection").argument("<id>","Collection ID").option("--title <t>","Title").option("--description <d>","Description").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1={};if(e.title&&(i$1.title=e.title),e.description!==void 0&&(i$1.description=e.description),e.medium&&(i$1.medium=e.medium.toUpperCase()),e.visibility&&(i$1.visibility=e.visibility.toUpperCase()),e.coverFile&&(i$1.coverFileId=e.coverFile),e.tags&&(i$1.tags=I(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let t=await b$1(N,{id:s,input:i$1});i("Collection updated"),h$1(e,t.artUpdateCollection);}catch(i){g(i);}}),c.command("add-work").description("Add a work to a collection").argument("<collectionId>","Collection ID").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1=await b$1(W,{collectionId:s,workId:e.work});i("Work added to collection"),h$1(e,i$1.artAddWorkToCollection);}catch(i){g(i);}}),c.command("remove-work").description("Remove a work from a collection").argument("<collectionId>","Collection ID").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1=await b$1(F,{collectionId:s,workId:e.work});i("Work removed from collection"),h$1(e,i$1.artRemoveWorkFromCollection);}catch(i){g(i);}});}function kt(p$1){let c=p$1.command("productions").description("Artistrybase productions");c.command("list").description("List productions").option("--status <s>","Production status").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async i=>{try{let t=await b$1(V,{status:i.status?i.status.toUpperCase():void 0,pagination:{limit:i.limit,offset:i.offset}});h$1(i,t.artListProductions.items,{headers:["ID","Title","Slug","Medium","Status"],rows:t.artListProductions.items.map(o=>[p(o.id,12),o.title,o.slug,o.medium,o.status])});}catch(t){g(t);}}),c.command("get").description("Get a production by id").argument("<id>","Production ID").option("-f, --format <format>","Output format").action(async(i,t)=>{try{let o$1=await b$1(M,{id:i});if(!o$1.artProduction)throw new o(`Production ${i} not found`);h$1(t,o$1.artProduction);}catch(o){g(o);}}),c.command("create").description("Create a production").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO","MIXED").option("--synopsis <s>","Synopsis").option("--start-date <iso>","Start date (ISO)").option("--target-date <iso>","Target date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={title:i$1.title,slug:i$1.slug,medium:(i$1.medium??"MIXED").toUpperCase()};i$1.synopsis&&(t.synopsis=i$1.synopsis),i$1.startDate&&(t.startDate=i$1.startDate),i$1.targetDate&&(t.targetDate=i$1.targetDate),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(x,{input:t});i(`Production created: ${o.artCreateProduction.title}`),h$1(i$1,o.artCreateProduction);}catch(t){g(t);}}),c.command("update").description("Update a production").argument("<id>","Production ID").option("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--synopsis <s>","Synopsis").option("--start-date <iso>","Start date (ISO)").option("--target-date <iso>","Target date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1={};if(t.title&&(o$1.title=t.title),t.medium&&(o$1.medium=t.medium.toUpperCase()),t.synopsis!==void 0&&(o$1.synopsis=t.synopsis),t.startDate&&(o$1.startDate=t.startDate),t.targetDate&&(o$1.targetDate=t.targetDate),t.tags&&(o$1.tags=I(t.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let d=await b$1(q,{id:i$1,input:o$1});i("Production updated"),h$1(t,d.artUpdateProduction);}catch(o){g(o);}}),c.command("transition").description("Advance a production through its lifecycle").argument("<id>","Production ID").requiredOption("--status <s>","PLANNING|IN_PRODUCTION|POST|REVIEW|ON_HOLD|RELEASED|CANCELLED").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(B,{id:i$1,status:t.status.toUpperCase()});i(`Production status set to ${o.artTransitionProduction.status}`),h$1(t,o.artTransitionProduction);}catch(o){g(o);}});let s=p$1.command("members").description("Artistrybase production members");s.command("list").description("List members for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async i=>{try{let t=await b$1(H,{productionId:i.production});h$1(i,t.artListProductionMembers,{headers:["ID","Member","Role","Title","Lead"],rows:t.artListProductionMembers.map(o=>[p(o.id,12),p(o.memberId,12),o.role,o.title??"-",o.isLead?"yes":"no"])});}catch(t){g(t);}}),s.command("add").description("Add a member to a production").requiredOption("--production <id>","Production ID").requiredOption("--member <id>","Member user ID").option("--role <r>","OWNER|PRODUCER|EDITOR|CREATOR|COLLABORATOR|REVIEWER|VIEWER","COLLABORATOR").option("--title <t>","Title").option("--lead","Mark as lead").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={productionId:i$1.production,memberId:i$1.member,role:(i$1.role??"COLLABORATOR").toUpperCase(),isLead:i$1.lead??!1};i$1.title&&(t.title=i$1.title);let o=await b$1(K,{input:t});i("Member added"),h$1(i$1,o.artAddProductionMember);}catch(t){g(t);}}),s.command("remove").description("Remove a production member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(X,{id:i$1});i(`Member removed: ${String(o.artRemoveProductionMember)}`),h$1(t,{removed:o.artRemoveProductionMember});}catch(o){g(o);}});let e=p$1.command("references").description("Artistrybase production references");e.command("list").description("List references for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async i=>{try{let t=await b$1(G,{productionId:i.production});h$1(i,t.artListReferences,{headers:["ID","Title","URL","File"],rows:t.artListReferences.map(o=>[p(o.id,12),o.title,p(o.url??"-",30),o.fileId?p(o.fileId,12):"-"])});}catch(t){g(t);}}),e.command("add").description("Add a reference to a production").requiredOption("--production <id>","Production ID").requiredOption("--title <t>","Title").option("--url <u>","Reference URL").option("--note <n>","Note").option("--file <id>","Attached file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={productionId:i$1.production,title:i$1.title};i$1.url&&(t.url=i$1.url),i$1.note&&(t.note=i$1.note),i$1.file&&(t.fileId=i$1.file),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(j,{input:t});i(`Reference added: ${o.artAddReference.title}`),h$1(i$1,o.artAddReference);}catch(t){g(t);}}),e.command("remove").description("Remove a reference").argument("<id>","Reference ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(z,{id:i$1});i(`Reference removed: ${String(o.artRemoveReference)}`),h$1(t,{removed:o.artRemoveReference});}catch(o){g(o);}});}function yt(p$1){let c=p$1.command("reviews").description("Artistrybase review rounds");c.command("list").description("List review rounds for a work").requiredOption("--work <id>","Work ID").option("--status <s>","OPEN|CHANGES_REQUESTED|APPROVED|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(J,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});h$1(t,o.artListReviewRounds,{headers:["ID","Round","Status","Title"],rows:o.artListReviewRounds.map(d=>[p(d.id,12),String(d.round),d.status,d.title??"-"])});}catch(o){g(o);}}),c.command("get").description("Get a review round by id").argument("<id>","Review round ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let d=await b$1(Y,{id:t});if(!d.artReviewRound)throw new o(`Review round ${t} not found`);h$1(o$1,d.artReviewRound);}catch(d){g(d);}}),c.command("open").description("Open a review round on a work").requiredOption("--work <id>","Work ID").option("--version <id>","Version ID").option("--title <t>","Title").option("--due-date <iso>","Due date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let o={workId:t.work};t.version&&(o.versionId=t.version),t.title&&(o.title=t.title),t.dueDate&&(o.dueDate=t.dueDate);let d=await b$1(Q,{input:o});i(`Review round opened: round ${d.artOpenReviewRound.round}`),h$1(t,d.artOpenReviewRound);}catch(o){g(o);}}),c.command("transition").description("Advance a review round through its lifecycle").argument("<id>","Review round ID").requiredOption("--status <s>","OPEN|CHANGES_REQUESTED|APPROVED|CLOSED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(Z,{id:t,status:o.status.toUpperCase()});i(`Review round status set to ${d.artTransitionReviewRound.status}`),h$1(o,d.artTransitionReviewRound);}catch(d){g(d);}});let s=p$1.command("feedback").description("Artistrybase review feedback");s.command("add").description("Add feedback to a review round").requiredOption("--round <id>","Review round ID").requiredOption("--body <text>","Feedback body").option("--anchor-type <t>","GENERAL|TIMECODE|PAGE|CHAPTER|PIN","GENERAL").option("--anchor-value <v>","Anchor value").option("-f, --format <format>","Output format").action(async t=>{try{let o={reviewRoundId:t.round,body:t.body,anchorType:(t.anchorType??"GENERAL").toUpperCase()};t.anchorValue&&(o.anchorValue=t.anchorValue);let d=await b$1(tt,{input:o});i("Feedback added"),h$1(t,d.artAddFeedback);}catch(o){g(o);}}),s.command("resolve").description("Resolve (or mark) a feedback item").argument("<id>","Feedback ID").requiredOption("--status <s>","OPEN|RESOLVED|WONT_FIX").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(it,{id:t,status:o.status.toUpperCase()});i(`Feedback status set to ${d.artResolveFeedback.status}`),h$1(o,d.artResolveFeedback);}catch(d){g(d);}}),p$1.command("approvals").description("Artistrybase review approvals").command("record").description("Record an approval decision on a review round").requiredOption("--round <id>","Review round ID").requiredOption("--decision <d>","PENDING|APPROVED|REJECTED").option("--comment <c>","Comment").option("-f, --format <format>","Output format").action(async t=>{try{let o={reviewRoundId:t.round,decision:t.decision.toUpperCase()};t.comment&&(o.comment=t.comment);let d=await b$1(ot,{input:o});i(`Approval recorded: ${d.artRecordApproval.decision}`),h$1(t,d.artRecordApproval);}catch(o){g(o);}});let i$1=p$1.command("releases").description("Artistrybase release pipeline");i$1.command("list").description("List releases for a work").requiredOption("--work <id>","Work ID").option("--status <s>","SCHEDULED|PUBLISHED|UNPUBLISHED|FAILED").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(et,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});h$1(t,o.artListReleases,{headers:["ID","Channel","Status","Visibility"],rows:o.artListReleases.map(d=>[p(d.id,12),d.channel,d.status,d.visibility])});}catch(o){g(o);}}),i$1.command("create").description("Create a release for a work").requiredOption("--work <id>","Work ID").option("--version <id>","Version ID").option("--channel <c>","Release channel").option("--notes <n>","Notes").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PUBLIC").option("--scheduled-for <iso>","Scheduled for (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let o={workId:t.work,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.version&&(o.versionId=t.version),t.channel&&(o.channel=t.channel),t.notes&&(o.notes=t.notes),t.scheduledFor&&(o.scheduledFor=t.scheduledFor);let d=await b$1(rt,{input:o});i(`Release created on channel ${d.artCreateRelease.channel}`),h$1(t,d.artCreateRelease);}catch(o){g(o);}}),i$1.command("publish").description("Publish a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(nt,{id:t});i(`Release published: ${d.artPublishRelease.status}`),h$1(o,d.artPublishRelease);}catch(d){g(d);}});}function Ot(p$1){let c=p$1.command("portfolios").description("Artistrybase public portfolios");c.command("list").description("List portfolios").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async e=>{try{let i=await b$1(st,{visibility:e.visibility?e.visibility.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});h$1(e,i.artListPortfolios.items,{headers:["ID","Handle","Display Name","Visibility","Followers"],rows:i.artListPortfolios.items.map(t=>[p(t.id,12),t.handle,t.displayName,t.visibility,String(t.followerCount)])});}catch(i){g(i);}}),c.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i)=>{try{let t=await b$1(at,{id:e});if(!t.artPortfolio)throw new o(`Portfolio ${e} not found`);h$1(i,t.artPortfolio);}catch(t){g(t);}}),c.command("create").description("Create a portfolio").requiredOption("--handle <h>","Unique handle").requiredOption("--display-name <n>","Display name").option("--bio <b>","Bio").option("--owner <id>","Owner user ID").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PUBLIC").option("--avatar-file <id>","Avatar file ID").option("--banner-file <id>","Banner file ID").option("--featured-works <csv>","Comma-separated work IDs").option("--links <json>","Links JSON").option("-f, --format <format>","Output format").action(async e=>{try{let i$1={handle:e.handle,displayName:e.displayName,visibility:(e.visibility??"PUBLIC").toUpperCase()};e.bio&&(i$1.bio=e.bio),e.owner&&(i$1.ownerId=e.owner),e.avatarFile&&(i$1.avatarFileId=e.avatarFile),e.bannerFile&&(i$1.bannerFileId=e.bannerFile),e.featuredWorks&&(i$1.featuredWorkIds=I(e.featuredWorks)),e.links&&(i$1.links=k("links",e.links));let t=await b$1(dt,{input:i$1});i(`Portfolio created: ${t.artCreatePortfolio.handle}`),h$1(e,t.artCreatePortfolio);}catch(i){g(i);}}),c.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--display-name <n>","Display name").option("--bio <b>","Bio").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--avatar-file <id>","Avatar file ID").option("--banner-file <id>","Banner file ID").option("--featured-works <csv>","Comma-separated work IDs").option("--links <json>","Links JSON").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t={};if(i$1.displayName&&(t.displayName=i$1.displayName),i$1.bio!==void 0&&(t.bio=i$1.bio),i$1.visibility&&(t.visibility=i$1.visibility.toUpperCase()),i$1.avatarFile&&(t.avatarFileId=i$1.avatarFile),i$1.bannerFile&&(t.bannerFileId=i$1.bannerFile),i$1.featuredWorks&&(t.featuredWorkIds=I(i$1.featuredWorks)),i$1.links&&(t.links=k("links",i$1.links)),!Object.keys(t).length)throw new o("No updates specified");let o$1=await b$1(ct,{id:e,input:t});i("Portfolio updated"),h$1(i$1,o$1.artUpdatePortfolio);}catch(t){g(t);}}),c.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(ut,{id:e});i(`Portfolio archived: ${String(t.artArchivePortfolio)}`),h$1(i$1,{archived:t.artArchivePortfolio});}catch(t){g(t);}}),c.command("follow").description("Follow a portfolio").argument("<portfolioId>","Portfolio ID").option("--no-notify","Do not receive notifications").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(pt,{portfolioId:e,notify:i$1.notify});i("Portfolio followed"),h$1(i$1,t.artFollowPortfolio);}catch(t){g(t);}}),c.command("unfollow").description("Unfollow a portfolio").argument("<portfolioId>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(mt,{portfolioId:e});i(`Portfolio unfollowed: ${String(t.artUnfollowPortfolio)}`),h$1(i$1,{unfollowed:t.artUnfollowPortfolio});}catch(t){g(t);}});let s=p$1.command("licenses").description("Artistrybase work licenses");s.command("list").description("List licenses for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async e=>{try{let i=await b$1(lt,{workId:e.work});h$1(e,i.artListLicenses,{headers:["ID","Name","Model","Status","Price","Currency"],rows:i.artListLicenses.map(t=>[p(t.id,12),t.name,t.model,t.status,String(t.priceAmount),t.currency])});}catch(i){g(i);}}),s.command("create").description("Create a license for a work").requiredOption("--work <id>","Work ID").requiredOption("--name <n>","License name").option("--model <m>","FREE|LICENSE|PURCHASE|MEMBERSHIP","FREE").option("--price <n>","Price amount",y).option("--currency <c>","Currency code").option("--spdx <s>","SPDX identifier").option("--terms <t>","License terms").option("--attribution <a>","Attribution text").option("-f, --format <format>","Output format").action(async e=>{try{let i$1={workId:e.work,name:e.name,model:(e.model??"FREE").toUpperCase()};e.price!==void 0&&(i$1.priceAmount=e.price),e.currency&&(i$1.currency=e.currency),e.spdx&&(i$1.spdx=e.spdx),e.terms&&(i$1.terms=e.terms),e.attribution&&(i$1.attribution=e.attribution);let t=await b$1(ft,{input:i$1});i(`License created: ${t.artCreateLicense.name}`),h$1(e,t.artCreateLicense);}catch(i){g(i);}}),s.command("update").description("Update a license").argument("<id>","License ID").option("--name <n>","License name").option("--model <m>","FREE|LICENSE|PURCHASE|MEMBERSHIP").option("--price <n>","Price amount",y).option("--currency <c>","Currency code").option("--spdx <s>","SPDX identifier").option("--terms <t>","License terms").option("--attribution <a>","Attribution text").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t={};if(i$1.name&&(t.name=i$1.name),i$1.model&&(t.model=i$1.model.toUpperCase()),i$1.price!==void 0&&(t.priceAmount=i$1.price),i$1.currency&&(t.currency=i$1.currency),i$1.spdx&&(t.spdx=i$1.spdx),i$1.terms&&(t.terms=i$1.terms),i$1.attribution&&(t.attribution=i$1.attribution),!Object.keys(t).length)throw new o("No updates specified");let o$1=await b$1(It,{id:e,input:t});i("License updated"),h$1(i$1,o$1.artUpdateLicense);}catch(t){g(t);}}),s.command("activate").description("Activate a license").argument("<id>","License ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(Rt,{id:e});i(`License activated: ${t.artActivateLicense.status}`),h$1(i$1,t.artActivateLicense);}catch(t){g(t);}});}function vt(p){p.command("health").description("Artistrybase subgraph health check (public)").option("-f, --format <format>","Output format").action(async c=>{try{let s=await d(gt);i(s.artHealth),h$1(c,{health:s.artHealth});}catch(s){g(s);}});}var Et={id:"artistrybase",version:"1.0.0",displayName:"Artistrybase",dependsOn:["auth","workspaces"],register(p,c){a(c);let s=p.command("artistrybase").description("Artistrybase multi-medium creative platform");At(s),wt(s),kt(s),yt(s),Ot(s),vt(s);}},oi=Et;export{oi as default};
334
+ `;function k(p,c){try{return JSON.parse(c)}catch{throw new o(`--${p} must be valid JSON`)}}function f(p){let c=Number.parseInt(p,10);if(Number.isNaN(c))throw new o(`Expected an integer but got "${p}"`);return c}function y(p){let c=Number.parseFloat(p);if(Number.isNaN(c))throw new o(`Expected a number but got "${p}"`);return c}function I(p){return p.split(",").map(c=>c.trim()).filter(c=>c.length>0)}function At(p){let c=p.command("works").description("Artistrybase creative works");c.command("list").description("List works").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--status <s>","DRAFT|IN_REVIEW|APPROVED|RELEASED|ARCHIVED").option("--production <id>","Filter by production ID").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async i$1=>{try{let t={limit:i$1.limit,offset:i$1.offset},o=await b$1(v,{medium:i$1.medium?i$1.medium.toUpperCase():void 0,status:i$1.status?i$1.status.toUpperCase():void 0,productionId:i$1.production,pagination:t});i(i$1,o.artListWorks.items,{headers:["ID","Title","Medium","Status","Visibility"],rows:o.artListWorks.items.map(d=>[r(d.id,12),d.title,d.medium,d.status,d.visibility])});}catch(t){h$1(t);}}),c.command("get").description("Get a work by id").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1=await b$1(E,{id:i$1});if(!o$1.artWork)throw new o(`Work ${i$1} not found`);i(t,o$1.artWork);}catch(o){h$1(o);}}),c.command("create").description("Create a work").requiredOption("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO","MIXED").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PRIVATE").option("--summary <s>","Summary").option("--production <id>","Production ID").option("--cover-file <id>","Cover file ID").option("--duration-ms <n>","Duration in ms",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={title:i$1.title,medium:(i$1.medium??"MIXED").toUpperCase(),visibility:(i$1.visibility??"PRIVATE").toUpperCase()};i$1.summary&&(t.summary=i$1.summary),i$1.production&&(t.productionId=i$1.production),i$1.coverFile&&(t.coverFileId=i$1.coverFile),i$1.durationMs!==void 0&&(t.durationMs=i$1.durationMs),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(C,{input:t});k$1(`Work created: ${o.artCreateWork.title}`),i(i$1,o.artCreateWork);}catch(t){h$1(t);}}),c.command("update").description("Update a work").argument("<id>","Work ID").option("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--summary <s>","Summary").option("--production <id>","Production ID").option("--cover-file <id>","Cover file ID").option("--duration-ms <n>","Duration in ms",f).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1={};if(t.title&&(o$1.title=t.title),t.medium&&(o$1.medium=t.medium.toUpperCase()),t.visibility&&(o$1.visibility=t.visibility.toUpperCase()),t.summary!==void 0&&(o$1.summary=t.summary),t.production&&(o$1.productionId=t.production),t.coverFile&&(o$1.coverFileId=t.coverFile),t.durationMs!==void 0&&(o$1.durationMs=t.durationMs),t.tags&&(o$1.tags=I(t.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let d=await b$1(T,{id:i$1,input:o$1});k$1("Work updated"),i(t,d.artUpdateWork);}catch(o){h$1(o);}}),c.command("archive").description("Archive a work").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(b,{id:i$1});k$1(`Work archived: ${String(o.artArchiveWork)}`),i(t,{archived:o.artArchiveWork});}catch(o){h$1(o);}}),c.command("publish-version").description("Promote a version to the work's published current version").argument("<workId>","Work ID").requiredOption("--version <id>","Version ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(D,{workId:i$1,versionId:t.version});k$1("Version published"),i(t,o.artPublishWorkVersion);}catch(o){h$1(o);}});let s=p.command("versions").description("Artistrybase work versions");s.command("list").description("List versions for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await b$1(L,{workId:i$1.work});i(i$1,t.artListWorkVersions,{headers:["ID","No","Label","Published","File"],rows:t.artListWorkVersions.map(o=>[r(o.id,12),String(o.versionNo),o.label??"-",o.isPublished?"yes":"no",r(String(o.fileId??"-"),12)])});}catch(t){h$1(t);}}),s.command("add").description("Upload a new immutable version of a work").requiredOption("--work <id>","Work ID").option("--label <l>","Version label").option("--notes <n>","Notes").option("--file <id>","Source file ID").option("--checksum <c>","Checksum").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={workId:i$1.work};i$1.label&&(t.label=i$1.label),i$1.notes&&(t.notes=i$1.notes),i$1.file&&(t.fileId=i$1.file),i$1.checksum&&(t.checksum=i$1.checksum);let o=await b$1(P,{input:t});k$1(`Version added: v${o.artAddWorkVersion.versionNo}`),i(i$1,o.artAddWorkVersion);}catch(t){h$1(t);}});let e=p.command("assets").description("Artistrybase work assets");e.command("list").description("List assets for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await b$1(h,{workId:i$1.work});i(i$1,t.artListAssets,{headers:["ID","Kind","File","MIME"],rows:t.artListAssets.map(o=>[r(o.id,12),o.kind,r(o.fileId,12),o.mimeType??"-"])});}catch(t){h$1(t);}}),e.command("add").description("Attach a file asset to a work").requiredOption("--work <id>","Work ID").requiredOption("--file <id>","File ID").option("--kind <k>","SOURCE|MASTER|PREVIEW|COVER|CAPTION|ATTACHMENT","SOURCE").option("--mime-type <t>","MIME type").option("--version <id>","Version ID").option("--width <n>","Width",f).option("--height <n>","Height",f).option("--duration-ms <n>","Duration in ms",f).option("-f, --format <format>","Output format").action(async i$1=>{try{let t={workId:i$1.work,fileId:i$1.file,kind:(i$1.kind??"SOURCE").toUpperCase()};i$1.mimeType&&(t.mimeType=i$1.mimeType),i$1.version&&(t.versionId=i$1.version),i$1.width!==void 0&&(t.width=i$1.width),i$1.height!==void 0&&(t.height=i$1.height),i$1.durationMs!==void 0&&(t.durationMs=i$1.durationMs);let o=await b$1(_,{input:t});k$1(`Asset added: ${o.artAddAsset.kind}`),i(i$1,o.artAddAsset);}catch(t){h$1(t);}});}function wt(p){let c=p.command("collections").description("Artistrybase curated collections");c.command("list").description("List collections").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async s=>{try{let e=await b$1(S,{visibility:s.visibility?s.visibility.toUpperCase():void 0,pagination:{limit:s.limit,offset:s.offset}});i(s,e.artListCollections.items,{headers:["ID","Title","Slug","Medium","Visibility"],rows:e.artListCollections.items.map(i=>[r(i.id,12),i.title,i.slug,i.medium??"-",i.visibility])});}catch(e){h$1(e);}}),c.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1=await b$1($,{id:s});if(!i$1.artCollection)throw new o(`Collection ${s} not found`);i(e,i$1.artCollection);}catch(i){h$1(i);}}),c.command("create").description("Create a collection").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").option("--description <d>","Description").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PRIVATE").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async s=>{try{let e={title:s.title,slug:s.slug,visibility:(s.visibility??"PRIVATE").toUpperCase()};s.description&&(e.description=s.description),s.medium&&(e.medium=s.medium.toUpperCase()),s.coverFile&&(e.coverFileId=s.coverFile),s.tags&&(e.tags=I(s.tags));let i$1=await b$1(U,{input:e});k$1(`Collection created: ${i$1.artCreateCollection.title}`),i(s,i$1.artCreateCollection);}catch(e){h$1(e);}}),c.command("update").description("Update a collection").argument("<id>","Collection ID").option("--title <t>","Title").option("--description <d>","Description").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1={};if(e.title&&(i$1.title=e.title),e.description!==void 0&&(i$1.description=e.description),e.medium&&(i$1.medium=e.medium.toUpperCase()),e.visibility&&(i$1.visibility=e.visibility.toUpperCase()),e.coverFile&&(i$1.coverFileId=e.coverFile),e.tags&&(i$1.tags=I(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let t=await b$1(N,{id:s,input:i$1});k$1("Collection updated"),i(e,t.artUpdateCollection);}catch(i){h$1(i);}}),c.command("add-work").description("Add a work to a collection").argument("<collectionId>","Collection ID").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1=await b$1(W,{collectionId:s,workId:e.work});k$1("Work added to collection"),i(e,i$1.artAddWorkToCollection);}catch(i){h$1(i);}}),c.command("remove-work").description("Remove a work from a collection").argument("<collectionId>","Collection ID").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async(s,e)=>{try{let i$1=await b$1(F,{collectionId:s,workId:e.work});k$1("Work removed from collection"),i(e,i$1.artRemoveWorkFromCollection);}catch(i){h$1(i);}});}function kt(p){let c=p.command("productions").description("Artistrybase productions");c.command("list").description("List productions").option("--status <s>","Production status").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await b$1(V,{status:i$1.status?i$1.status.toUpperCase():void 0,pagination:{limit:i$1.limit,offset:i$1.offset}});i(i$1,t.artListProductions.items,{headers:["ID","Title","Slug","Medium","Status"],rows:t.artListProductions.items.map(o=>[r(o.id,12),o.title,o.slug,o.medium,o.status])});}catch(t){h$1(t);}}),c.command("get").description("Get a production by id").argument("<id>","Production ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1=await b$1(M,{id:i$1});if(!o$1.artProduction)throw new o(`Production ${i$1} not found`);i(t,o$1.artProduction);}catch(o){h$1(o);}}),c.command("create").description("Create a production").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO","MIXED").option("--synopsis <s>","Synopsis").option("--start-date <iso>","Start date (ISO)").option("--target-date <iso>","Target date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={title:i$1.title,slug:i$1.slug,medium:(i$1.medium??"MIXED").toUpperCase()};i$1.synopsis&&(t.synopsis=i$1.synopsis),i$1.startDate&&(t.startDate=i$1.startDate),i$1.targetDate&&(t.targetDate=i$1.targetDate),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(x,{input:t});k$1(`Production created: ${o.artCreateProduction.title}`),i(i$1,o.artCreateProduction);}catch(t){h$1(t);}}),c.command("update").description("Update a production").argument("<id>","Production ID").option("--title <t>","Title").option("--medium <m>","ART|AUDIO|MIXED|STORY|VIDEO").option("--synopsis <s>","Synopsis").option("--start-date <iso>","Start date (ISO)").option("--target-date <iso>","Target date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o$1={};if(t.title&&(o$1.title=t.title),t.medium&&(o$1.medium=t.medium.toUpperCase()),t.synopsis!==void 0&&(o$1.synopsis=t.synopsis),t.startDate&&(o$1.startDate=t.startDate),t.targetDate&&(o$1.targetDate=t.targetDate),t.tags&&(o$1.tags=I(t.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let d=await b$1(q,{id:i$1,input:o$1});k$1("Production updated"),i(t,d.artUpdateProduction);}catch(o){h$1(o);}}),c.command("transition").description("Advance a production through its lifecycle").argument("<id>","Production ID").requiredOption("--status <s>","PLANNING|IN_PRODUCTION|POST|REVIEW|ON_HOLD|RELEASED|CANCELLED").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(B,{id:i$1,status:t.status.toUpperCase()});k$1(`Production status set to ${o.artTransitionProduction.status}`),i(t,o.artTransitionProduction);}catch(o){h$1(o);}});let s=p.command("members").description("Artistrybase production members");s.command("list").description("List members for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await b$1(H,{productionId:i$1.production});i(i$1,t.artListProductionMembers,{headers:["ID","Member","Role","Title","Lead"],rows:t.artListProductionMembers.map(o=>[r(o.id,12),r(o.memberId,12),o.role,o.title??"-",o.isLead?"yes":"no"])});}catch(t){h$1(t);}}),s.command("add").description("Add a member to a production").requiredOption("--production <id>","Production ID").requiredOption("--member <id>","Member user ID").option("--role <r>","OWNER|PRODUCER|EDITOR|CREATOR|COLLABORATOR|REVIEWER|VIEWER","COLLABORATOR").option("--title <t>","Title").option("--lead","Mark as lead").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={productionId:i$1.production,memberId:i$1.member,role:(i$1.role??"COLLABORATOR").toUpperCase(),isLead:i$1.lead??!1};i$1.title&&(t.title=i$1.title);let o=await b$1(K,{input:t});k$1("Member added"),i(i$1,o.artAddProductionMember);}catch(t){h$1(t);}}),s.command("remove").description("Remove a production member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(X,{id:i$1});k$1(`Member removed: ${String(o.artRemoveProductionMember)}`),i(t,{removed:o.artRemoveProductionMember});}catch(o){h$1(o);}});let e=p.command("references").description("Artistrybase production references");e.command("list").description("List references for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await b$1(G,{productionId:i$1.production});i(i$1,t.artListReferences,{headers:["ID","Title","URL","File"],rows:t.artListReferences.map(o=>[r(o.id,12),o.title,r(o.url??"-",30),o.fileId?r(o.fileId,12):"-"])});}catch(t){h$1(t);}}),e.command("add").description("Add a reference to a production").requiredOption("--production <id>","Production ID").requiredOption("--title <t>","Title").option("--url <u>","Reference URL").option("--note <n>","Note").option("--file <id>","Attached file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async i$1=>{try{let t={productionId:i$1.production,title:i$1.title};i$1.url&&(t.url=i$1.url),i$1.note&&(t.note=i$1.note),i$1.file&&(t.fileId=i$1.file),i$1.tags&&(t.tags=I(i$1.tags));let o=await b$1(j,{input:t});k$1(`Reference added: ${o.artAddReference.title}`),i(i$1,o.artAddReference);}catch(t){h$1(t);}}),e.command("remove").description("Remove a reference").argument("<id>","Reference ID").option("-f, --format <format>","Output format").action(async(i$1,t)=>{try{let o=await b$1(z,{id:i$1});k$1(`Reference removed: ${String(o.artRemoveReference)}`),i(t,{removed:o.artRemoveReference});}catch(o){h$1(o);}});}function yt(p){let c=p.command("reviews").description("Artistrybase review rounds");c.command("list").description("List review rounds for a work").requiredOption("--work <id>","Work ID").option("--status <s>","OPEN|CHANGES_REQUESTED|APPROVED|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(J,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});i(t,o.artListReviewRounds,{headers:["ID","Round","Status","Title"],rows:o.artListReviewRounds.map(d=>[r(d.id,12),String(d.round),d.status,d.title??"-"])});}catch(o){h$1(o);}}),c.command("get").description("Get a review round by id").argument("<id>","Review round ID").option("-f, --format <format>","Output format").action(async(t,o$1)=>{try{let d=await b$1(Y,{id:t});if(!d.artReviewRound)throw new o(`Review round ${t} not found`);i(o$1,d.artReviewRound);}catch(d){h$1(d);}}),c.command("open").description("Open a review round on a work").requiredOption("--work <id>","Work ID").option("--version <id>","Version ID").option("--title <t>","Title").option("--due-date <iso>","Due date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let o={workId:t.work};t.version&&(o.versionId=t.version),t.title&&(o.title=t.title),t.dueDate&&(o.dueDate=t.dueDate);let d=await b$1(Q,{input:o});k$1(`Review round opened: round ${d.artOpenReviewRound.round}`),i(t,d.artOpenReviewRound);}catch(o){h$1(o);}}),c.command("transition").description("Advance a review round through its lifecycle").argument("<id>","Review round ID").requiredOption("--status <s>","OPEN|CHANGES_REQUESTED|APPROVED|CLOSED").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(Z,{id:t,status:o.status.toUpperCase()});k$1(`Review round status set to ${d.artTransitionReviewRound.status}`),i(o,d.artTransitionReviewRound);}catch(d){h$1(d);}});let s=p.command("feedback").description("Artistrybase review feedback");s.command("add").description("Add feedback to a review round").requiredOption("--round <id>","Review round ID").requiredOption("--body <text>","Feedback body").option("--anchor-type <t>","GENERAL|TIMECODE|PAGE|CHAPTER|PIN","GENERAL").option("--anchor-value <v>","Anchor value").option("-f, --format <format>","Output format").action(async t=>{try{let o={reviewRoundId:t.round,body:t.body,anchorType:(t.anchorType??"GENERAL").toUpperCase()};t.anchorValue&&(o.anchorValue=t.anchorValue);let d=await b$1(tt,{input:o});k$1("Feedback added"),i(t,d.artAddFeedback);}catch(o){h$1(o);}}),s.command("resolve").description("Resolve (or mark) a feedback item").argument("<id>","Feedback ID").requiredOption("--status <s>","OPEN|RESOLVED|WONT_FIX").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(it,{id:t,status:o.status.toUpperCase()});k$1(`Feedback status set to ${d.artResolveFeedback.status}`),i(o,d.artResolveFeedback);}catch(d){h$1(d);}}),p.command("approvals").description("Artistrybase review approvals").command("record").description("Record an approval decision on a review round").requiredOption("--round <id>","Review round ID").requiredOption("--decision <d>","PENDING|APPROVED|REJECTED").option("--comment <c>","Comment").option("-f, --format <format>","Output format").action(async t=>{try{let o={reviewRoundId:t.round,decision:t.decision.toUpperCase()};t.comment&&(o.comment=t.comment);let d=await b$1(ot,{input:o});k$1(`Approval recorded: ${d.artRecordApproval.decision}`),i(t,d.artRecordApproval);}catch(o){h$1(o);}});let i$1=p.command("releases").description("Artistrybase release pipeline");i$1.command("list").description("List releases for a work").requiredOption("--work <id>","Work ID").option("--status <s>","SCHEDULED|PUBLISHED|UNPUBLISHED|FAILED").option("-f, --format <format>","Output format").action(async t=>{try{let o=await b$1(et,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});i(t,o.artListReleases,{headers:["ID","Channel","Status","Visibility"],rows:o.artListReleases.map(d=>[r(d.id,12),d.channel,d.status,d.visibility])});}catch(o){h$1(o);}}),i$1.command("create").description("Create a release for a work").requiredOption("--work <id>","Work ID").option("--version <id>","Version ID").option("--channel <c>","Release channel").option("--notes <n>","Notes").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PUBLIC").option("--scheduled-for <iso>","Scheduled for (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let o={workId:t.work,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.version&&(o.versionId=t.version),t.channel&&(o.channel=t.channel),t.notes&&(o.notes=t.notes),t.scheduledFor&&(o.scheduledFor=t.scheduledFor);let d=await b$1(rt,{input:o});k$1(`Release created on channel ${d.artCreateRelease.channel}`),i(t,d.artCreateRelease);}catch(o){h$1(o);}}),i$1.command("publish").description("Publish a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let d=await b$1(nt,{id:t});k$1(`Release published: ${d.artPublishRelease.status}`),i(o,d.artPublishRelease);}catch(d){h$1(d);}});}function Ot(p){let c=p.command("portfolios").description("Artistrybase public portfolios");c.command("list").description("List portfolios").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",f,50).option("--offset <n>","Offset",f,0).option("-f, --format <format>","Output format").action(async e=>{try{let i$1=await b$1(st,{visibility:e.visibility?e.visibility.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});i(e,i$1.artListPortfolios.items,{headers:["ID","Handle","Display Name","Visibility","Followers"],rows:i$1.artListPortfolios.items.map(t=>[r(t.id,12),t.handle,t.displayName,t.visibility,String(t.followerCount)])});}catch(i){h$1(i);}}),c.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(at,{id:e});if(!t.artPortfolio)throw new o(`Portfolio ${e} not found`);i(i$1,t.artPortfolio);}catch(t){h$1(t);}}),c.command("create").description("Create a portfolio").requiredOption("--handle <h>","Unique handle").requiredOption("--display-name <n>","Display name").option("--bio <b>","Bio").option("--owner <id>","Owner user ID").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED","PUBLIC").option("--avatar-file <id>","Avatar file ID").option("--banner-file <id>","Banner file ID").option("--featured-works <csv>","Comma-separated work IDs").option("--links <json>","Links JSON").option("-f, --format <format>","Output format").action(async e=>{try{let i$1={handle:e.handle,displayName:e.displayName,visibility:(e.visibility??"PUBLIC").toUpperCase()};e.bio&&(i$1.bio=e.bio),e.owner&&(i$1.ownerId=e.owner),e.avatarFile&&(i$1.avatarFileId=e.avatarFile),e.bannerFile&&(i$1.bannerFileId=e.bannerFile),e.featuredWorks&&(i$1.featuredWorkIds=I(e.featuredWorks)),e.links&&(i$1.links=k("links",e.links));let t=await b$1(dt,{input:i$1});k$1(`Portfolio created: ${t.artCreatePortfolio.handle}`),i(e,t.artCreatePortfolio);}catch(i){h$1(i);}}),c.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--display-name <n>","Display name").option("--bio <b>","Bio").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--avatar-file <id>","Avatar file ID").option("--banner-file <id>","Banner file ID").option("--featured-works <csv>","Comma-separated work IDs").option("--links <json>","Links JSON").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t={};if(i$1.displayName&&(t.displayName=i$1.displayName),i$1.bio!==void 0&&(t.bio=i$1.bio),i$1.visibility&&(t.visibility=i$1.visibility.toUpperCase()),i$1.avatarFile&&(t.avatarFileId=i$1.avatarFile),i$1.bannerFile&&(t.bannerFileId=i$1.bannerFile),i$1.featuredWorks&&(t.featuredWorkIds=I(i$1.featuredWorks)),i$1.links&&(t.links=k("links",i$1.links)),!Object.keys(t).length)throw new o("No updates specified");let o$1=await b$1(ct,{id:e,input:t});k$1("Portfolio updated"),i(i$1,o$1.artUpdatePortfolio);}catch(t){h$1(t);}}),c.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(ut,{id:e});k$1(`Portfolio archived: ${String(t.artArchivePortfolio)}`),i(i$1,{archived:t.artArchivePortfolio});}catch(t){h$1(t);}}),c.command("follow").description("Follow a portfolio").argument("<portfolioId>","Portfolio ID").option("--no-notify","Do not receive notifications").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(pt,{portfolioId:e,notify:i$1.notify});k$1("Portfolio followed"),i(i$1,t.artFollowPortfolio);}catch(t){h$1(t);}}),c.command("unfollow").description("Unfollow a portfolio").argument("<portfolioId>","Portfolio ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(mt,{portfolioId:e});k$1(`Portfolio unfollowed: ${String(t.artUnfollowPortfolio)}`),i(i$1,{unfollowed:t.artUnfollowPortfolio});}catch(t){h$1(t);}});let s=p.command("licenses").description("Artistrybase work licenses");s.command("list").description("List licenses for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async e=>{try{let i$1=await b$1(lt,{workId:e.work});i(e,i$1.artListLicenses,{headers:["ID","Name","Model","Status","Price","Currency"],rows:i$1.artListLicenses.map(t=>[r(t.id,12),t.name,t.model,t.status,String(t.priceAmount),t.currency])});}catch(i){h$1(i);}}),s.command("create").description("Create a license for a work").requiredOption("--work <id>","Work ID").requiredOption("--name <n>","License name").option("--model <m>","FREE|LICENSE|PURCHASE|MEMBERSHIP","FREE").option("--price <n>","Price amount",y).option("--currency <c>","Currency code").option("--spdx <s>","SPDX identifier").option("--terms <t>","License terms").option("--attribution <a>","Attribution text").option("-f, --format <format>","Output format").action(async e=>{try{let i$1={workId:e.work,name:e.name,model:(e.model??"FREE").toUpperCase()};e.price!==void 0&&(i$1.priceAmount=e.price),e.currency&&(i$1.currency=e.currency),e.spdx&&(i$1.spdx=e.spdx),e.terms&&(i$1.terms=e.terms),e.attribution&&(i$1.attribution=e.attribution);let t=await b$1(ft,{input:i$1});k$1(`License created: ${t.artCreateLicense.name}`),i(e,t.artCreateLicense);}catch(i){h$1(i);}}),s.command("update").description("Update a license").argument("<id>","License ID").option("--name <n>","License name").option("--model <m>","FREE|LICENSE|PURCHASE|MEMBERSHIP").option("--price <n>","Price amount",y).option("--currency <c>","Currency code").option("--spdx <s>","SPDX identifier").option("--terms <t>","License terms").option("--attribution <a>","Attribution text").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t={};if(i$1.name&&(t.name=i$1.name),i$1.model&&(t.model=i$1.model.toUpperCase()),i$1.price!==void 0&&(t.priceAmount=i$1.price),i$1.currency&&(t.currency=i$1.currency),i$1.spdx&&(t.spdx=i$1.spdx),i$1.terms&&(t.terms=i$1.terms),i$1.attribution&&(t.attribution=i$1.attribution),!Object.keys(t).length)throw new o("No updates specified");let o$1=await b$1(It,{id:e,input:t});k$1("License updated"),i(i$1,o$1.artUpdateLicense);}catch(t){h$1(t);}}),s.command("activate").description("Activate a license").argument("<id>","License ID").option("-f, --format <format>","Output format").action(async(e,i$1)=>{try{let t=await b$1(Rt,{id:e});k$1(`License activated: ${t.artActivateLicense.status}`),i(i$1,t.artActivateLicense);}catch(t){h$1(t);}});}function vt(p){p.command("health").description("Artistrybase subgraph health check (public)").option("-f, --format <format>","Output format").action(async c=>{try{let s=await d(gt);k$1(s.artHealth),i(c,{health:s.artHealth});}catch(s){h$1(s);}});}var Et={id:"artistrybase",version:"1.0.0",displayName:"Artistrybase",dependsOn:["auth","workspaces"],register(p,c){a(c);let s=p.command("artistrybase").description("Artistrybase multi-medium creative platform");At(s),wt(s),kt(s),yt(s),Ot(s),vt(s);}},oi=Et;export{oi as default};