@burdenoff/cli-sdk 2026.1107.1 → 2026.1107.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.
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var l=class extends Error{exitCode;hint;constructor(i,n){super(i),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends l{constructor(i,n){super(i,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},w=class extends Error{cause;constructor(i,n){super(i),this.name="CliInternalError",this.cause=n;}};var y=null;function T(c){y=c;}function A(){if(!y)throw new w("vibecontrols module helpers used before setHelpersContext was called");return y}function Mt(){let c=A();if(!c.auth.isAuthenticated())throw new R("Authentication required.",{hint:`Run \`${c.productName} auth login\` to authenticate.`})}async function d(c,i){return Mt(),A().gql.workspace.request(c,i)}async function C(c,i){return A().gql.workspaceAuthOnly.request(c,i)}function s(c){let i=c instanceof Error?c.message:String(c);throw new l(i)}function a(c,i,n){A().output.formatAndOutput(c,i,n);}function p(c){A().output.printSuccess(c);}function m(c,i){return A().output.truncate(c,i)}var O=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(r,n){super(r),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends m{constructor(r,n){super(r,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},w=class extends Error{cause;constructor(r,n){super(r),this.name="CliInternalError",this.cause=n;}};var y=null;function T(c){y=c;}function A(){if(!y)throw new w("vibecontrols module helpers used before setHelpersContext was called");return y}function Mt(){let c=A();if(!c.auth.isAuthenticated())throw new R("Authentication required.",{hint:`Run \`${c.productName} auth login\` to authenticate.`})}async function d(c,r){return Mt(),A().gql.workspace.request(c,r)}async function C(c,r){return A().gql.workspaceAuthOnly.request(c,r)}function s(c){let r=c instanceof Error?c.message:String(c);throw new m(r)}function a(c,r,n){A().output.formatAndOutput(c,r,n);}function p(c){A().output.printSuccess(c);}function f(c,r){return A().output.truncate(c,r)}var O=`
2
2
  query ArtListWorks(
3
3
  $medium: ArtMedium
4
4
  $status: ArtWorkStatus
@@ -26,14 +26,14 @@
26
26
  createdAt updatedAt workspaceId
27
27
  }
28
28
  }
29
- `,L=`
29
+ `,P=`
30
30
  mutation ArtCreateWork($input: ArtCreateWorkInput!) {
31
31
  artCreateWork(input: $input) {
32
32
  id title medium status visibility summary productionId coverFileId
33
33
  durationMs tags createdAt
34
34
  }
35
35
  }
36
- `,P=`
36
+ `,L=`
37
37
  mutation ArtUpdateWork($id: ID!, $input: ArtUpdateWorkInput!) {
38
38
  artUpdateWork(id: $id, input: $input) {
39
39
  id title medium status visibility summary productionId coverFileId
@@ -51,10 +51,13 @@
51
51
  }
52
52
  }
53
53
  `,_=`
54
- query ArtListWorkVersions($workId: ID!) {
55
- artListWorkVersions(workId: $workId) {
56
- id workId versionNo label notes fileId checksum sizeBytes
57
- isPublished createdAt updatedAt workspaceId
54
+ query ArtListWorkVersions($workId: ID!, $pagination: PaginationInput) {
55
+ artListWorkVersions(workId: $workId, pagination: $pagination) {
56
+ items {
57
+ id workId versionNo label notes fileId checksum sizeBytes
58
+ isPublished createdAt updatedAt workspaceId
59
+ }
60
+ pageInfo { cursor hasMore }
58
61
  }
59
62
  }
60
63
  `,$=`
@@ -65,10 +68,13 @@
65
68
  }
66
69
  }
67
70
  `,N=`
68
- query ArtListAssets($workId: ID!) {
69
- artListAssets(workId: $workId) {
70
- id workId kind fileId mimeType sizeBytes width height durationMs
71
- versionId createdAt updatedAt workspaceId
71
+ query ArtListAssets($workId: ID!, $pagination: PaginationInput) {
72
+ artListAssets(workId: $workId, pagination: $pagination) {
73
+ items {
74
+ id workId kind fileId mimeType sizeBytes width height durationMs
75
+ versionId createdAt updatedAt workspaceId
76
+ }
77
+ pageInfo { cursor hasMore }
72
78
  }
73
79
  }
74
80
  `,U=`
@@ -159,9 +165,12 @@
159
165
  }
160
166
  }
161
167
  `,J=`
162
- query ArtListProductionMembers($productionId: ID!) {
163
- artListProductionMembers(productionId: $productionId) {
164
- id productionId memberId role title isLead createdAt updatedAt workspaceId
168
+ query ArtListProductionMembers($productionId: ID!, $pagination: PaginationInput) {
169
+ artListProductionMembers(productionId: $productionId, pagination: $pagination) {
170
+ items {
171
+ id productionId memberId role title isLead createdAt updatedAt workspaceId
172
+ }
173
+ pageInfo { cursor hasMore }
165
174
  }
166
175
  }
167
176
  `,Y=`
@@ -175,9 +184,12 @@
175
184
  artRemoveProductionMember(id: $id)
176
185
  }
177
186
  `,Q=`
178
- query ArtListReferences($productionId: ID!) {
179
- artListReferences(productionId: $productionId) {
180
- id productionId title url note fileId tags createdAt updatedAt workspaceId
187
+ query ArtListReferences($productionId: ID!, $pagination: PaginationInput) {
188
+ artListReferences(productionId: $productionId, pagination: $pagination) {
189
+ items {
190
+ id productionId title url note fileId tags createdAt updatedAt workspaceId
191
+ }
192
+ pageInfo { cursor hasMore }
181
193
  }
182
194
  }
183
195
  `,Z=`
@@ -191,13 +203,16 @@
191
203
  artRemoveReference(id: $id)
192
204
  }
193
205
  `,et=`
194
- query ArtListReviewRounds($workId: ID!, $status: ArtReviewStatus) {
195
- artListReviewRounds(workId: $workId, status: $status) {
196
- id workId versionId round status title dueDate openedById
197
- closedAt createdAt updatedAt workspaceId
206
+ query ArtListReviewRounds($workId: ID!, $status: ArtReviewStatus, $pagination: PaginationInput) {
207
+ artListReviewRounds(workId: $workId, status: $status, pagination: $pagination) {
208
+ items {
209
+ id workId versionId round status title dueDate openedById
210
+ closedAt createdAt updatedAt workspaceId
211
+ }
212
+ pageInfo { cursor hasMore }
198
213
  }
199
214
  }
200
- `,rt=`
215
+ `,ot=`
201
216
  query ArtReviewRound($id: ID!) {
202
217
  artReviewRound(id: $id) {
203
218
  id workId versionId round status title dueDate openedById closedAt
@@ -206,13 +221,13 @@
206
221
  approvals { id approverId decision comment }
207
222
  }
208
223
  }
209
- `,ot=`
224
+ `,it=`
210
225
  mutation ArtOpenReviewRound($input: ArtOpenReviewRoundInput!) {
211
226
  artOpenReviewRound(input: $input) {
212
227
  id workId versionId round status title dueDate createdAt
213
228
  }
214
229
  }
215
- `,it=`
230
+ `,rt=`
216
231
  mutation ArtTransitionReviewRound($id: ID!, $status: ArtReviewStatus!) {
217
232
  artTransitionReviewRound(id: $id, status: $status) {
218
233
  id workId round status closedAt updatedAt
@@ -237,10 +252,13 @@
237
252
  }
238
253
  }
239
254
  `,dt=`
240
- query ArtListReleases($workId: ID!, $status: ArtReleaseStatus) {
241
- artListReleases(workId: $workId, status: $status) {
242
- id workId versionId channel status visibility notes scheduledFor
243
- publishedAt createdAt updatedAt workspaceId
255
+ query ArtListReleases($workId: ID!, $status: ArtReleaseStatus, $pagination: PaginationInput) {
256
+ artListReleases(workId: $workId, status: $status, pagination: $pagination) {
257
+ items {
258
+ id workId versionId channel status visibility notes scheduledFor
259
+ publishedAt createdAt updatedAt workspaceId
260
+ }
261
+ pageInfo { cursor hasMore }
244
262
  }
245
263
  }
246
264
  `,ct=`
@@ -301,10 +319,13 @@
301
319
  artUnfollowPortfolio(portfolioId: $portfolioId)
302
320
  }
303
321
  `,Rt=`
304
- query ArtListLicenses($workId: ID!) {
305
- artListLicenses(workId: $workId) {
306
- id workId name model status priceAmount currency spdx terms attribution
307
- createdAt updatedAt workspaceId
322
+ query ArtListLicenses($workId: ID!, $pagination: PaginationInput) {
323
+ artListLicenses(workId: $workId, pagination: $pagination) {
324
+ items {
325
+ id workId name model status priceAmount currency spdx terms attribution
326
+ createdAt updatedAt workspaceId
327
+ }
328
+ pageInfo { cursor hasMore }
308
329
  }
309
330
  }
310
331
  `,At=`
@@ -331,4 +352,4 @@
331
352
  query ArtHealth {
332
353
  artHealth
333
354
  }
334
- `;function h(c,i){try{return JSON.parse(i)}catch{throw new l(`--${c} must be valid JSON`)}}function g(c){let i=Number.parseInt(c,10);if(Number.isNaN(i))throw new l(`Expected an integer but got "${c}"`);return i}function v(c){let i=Number.parseFloat(c);if(Number.isNaN(i))throw new l(`Expected a number but got "${c}"`);return i}function I(c){return c.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function ht(c){let i=c.command("works").description("Artistrybase creative works");i.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",g,50).option("--offset <n>","Offset",g,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={limit:e.limit,offset:e.offset},r=await d(O,{medium:e.medium?e.medium.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,productionId:e.production,pagination:t});a(e,r.artListWorks.items,{headers:["ID","Title","Medium","Status","Visibility"],rows:r.artListWorks.items.map(u=>[m(u.id,12),u.title,u.medium,u.status,u.visibility])});}catch(t){s(t);}}),i.command("get").description("Get a work by id").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await d(D,{id:e});if(!r.artWork)throw new l(`Work ${e} not found`);a(t,r.artWork);}catch(r){s(r);}}),i.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",g).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,medium:(e.medium??"MIXED").toUpperCase(),visibility:(e.visibility??"PRIVATE").toUpperCase()};e.summary&&(t.summary=e.summary),e.production&&(t.productionId=e.production),e.coverFile&&(t.coverFileId=e.coverFile),e.durationMs!==void 0&&(t.durationMs=e.durationMs),e.tags&&(t.tags=I(e.tags));let r=await d(L,{input:t});p(`Work created: ${r.artCreateWork.title}`),a(e,r.artCreateWork);}catch(t){s(t);}}),i.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",g).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.medium&&(r.medium=t.medium.toUpperCase()),t.visibility&&(r.visibility=t.visibility.toUpperCase()),t.summary!==void 0&&(r.summary=t.summary),t.production&&(r.productionId=t.production),t.coverFile&&(r.coverFileId=t.coverFile),t.durationMs!==void 0&&(r.durationMs=t.durationMs),t.tags&&(r.tags=I(t.tags)),!Object.keys(r).length)throw new l("No updates specified");let u=await d(P,{id:e,input:r});p("Work updated"),a(t,u.artUpdateWork);}catch(r){s(r);}}),i.command("archive").description("Archive a work").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await d(x,{id:e});p(`Work archived: ${String(r.artArchiveWork)}`),a(t,{archived:r.artArchiveWork});}catch(r){s(r);}}),i.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(e,t)=>{try{let r=await d(S,{workId:e,versionId:t.version});p("Version published"),a(t,r.artPublishWorkVersion);}catch(r){s(r);}});let n=c.command("versions").description("Artistrybase work versions");n.command("list").description("List versions for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(_,{workId:e.work});a(e,t.artListWorkVersions,{headers:["ID","No","Label","Published","File"],rows:t.artListWorkVersions.map(r=>[m(r.id,12),String(r.versionNo),r.label??"-",r.isPublished?"yes":"no",m(String(r.fileId??"-"),12)])});}catch(t){s(t);}}),n.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 e=>{try{let t={workId:e.work};e.label&&(t.label=e.label),e.notes&&(t.notes=e.notes),e.file&&(t.fileId=e.file),e.checksum&&(t.checksum=e.checksum);let r=await d($,{input:t});p(`Version added: v${r.artAddWorkVersion.versionNo}`),a(e,r.artAddWorkVersion);}catch(t){s(t);}});let o=c.command("assets").description("Artistrybase work assets");o.command("list").description("List assets for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(N,{workId:e.work});a(e,t.artListAssets,{headers:["ID","Kind","File","MIME"],rows:t.artListAssets.map(r=>[m(r.id,12),r.kind,m(r.fileId,12),r.mimeType??"-"])});}catch(t){s(t);}}),o.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",g).option("--height <n>","Height",g).option("--duration-ms <n>","Duration in ms",g).option("-f, --format <format>","Output format").action(async e=>{try{let t={workId:e.work,fileId:e.file,kind:(e.kind??"SOURCE").toUpperCase()};e.mimeType&&(t.mimeType=e.mimeType),e.version&&(t.versionId=e.version),e.width!==void 0&&(t.width=e.width),e.height!==void 0&&(t.height=e.height),e.durationMs!==void 0&&(t.durationMs=e.durationMs);let r=await d(U,{input:t});p(`Asset added: ${r.artAddAsset.kind}`),a(e,r.artAddAsset);}catch(t){s(t);}});}function vt(c){let i=c.command("collections").description("Artistrybase curated collections");i.command("list").description("List collections").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",g,50).option("--offset <n>","Offset",g,0).option("-f, --format <format>","Output format").action(async n=>{try{let o=await d(W,{visibility:n.visibility?n.visibility.toUpperCase():void 0,pagination:{limit:n.limit,offset:n.offset}});a(n,o.artListCollections.items,{headers:["ID","Title","Slug","Medium","Visibility"],rows:o.artListCollections.items.map(e=>[m(e.id,12),e.title,e.slug,e.medium??"-",e.visibility])});}catch(o){s(o);}}),i.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(n,o)=>{try{let e=await d(F,{id:n});if(!e.artCollection)throw new l(`Collection ${n} not found`);a(o,e.artCollection);}catch(e){s(e);}}),i.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 n=>{try{let o={title:n.title,slug:n.slug,visibility:(n.visibility??"PRIVATE").toUpperCase()};n.description&&(o.description=n.description),n.medium&&(o.medium=n.medium.toUpperCase()),n.coverFile&&(o.coverFileId=n.coverFile),n.tags&&(o.tags=I(n.tags));let e=await d(M,{input:o});p(`Collection created: ${e.artCreateCollection.title}`),a(n,e.artCreateCollection);}catch(o){s(o);}}),i.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(n,o)=>{try{let e={};if(o.title&&(e.title=o.title),o.description!==void 0&&(e.description=o.description),o.medium&&(e.medium=o.medium.toUpperCase()),o.visibility&&(e.visibility=o.visibility.toUpperCase()),o.coverFile&&(e.coverFileId=o.coverFile),o.tags&&(e.tags=I(o.tags)),!Object.keys(e).length)throw new l("No updates specified");let t=await d(V,{id:n,input:e});p("Collection updated"),a(o,t.artUpdateCollection);}catch(e){s(e);}}),i.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(n,o)=>{try{let e=await d(q,{collectionId:n,workId:o.work});p("Work added to collection"),a(o,e.artAddWorkToCollection);}catch(e){s(e);}}),i.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(n,o)=>{try{let e=await d(B,{collectionId:n,workId:o.work});p("Work removed from collection"),a(o,e.artRemoveWorkFromCollection);}catch(e){s(e);}});}function bt(c){let i=c.command("productions").description("Artistrybase productions");i.command("list").description("List productions").option("--status <s>","Production status").option("--limit <n>","Page size",g,50).option("--offset <n>","Offset",g,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(H,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListProductions.items,{headers:["ID","Title","Slug","Medium","Status"],rows:t.artListProductions.items.map(r=>[m(r.id,12),r.title,r.slug,r.medium,r.status])});}catch(t){s(t);}}),i.command("get").description("Get a production by id").argument("<id>","Production ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await d(G,{id:e});if(!r.artProduction)throw new l(`Production ${e} not found`);a(t,r.artProduction);}catch(r){s(r);}}),i.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 e=>{try{let t={title:e.title,slug:e.slug,medium:(e.medium??"MIXED").toUpperCase()};e.synopsis&&(t.synopsis=e.synopsis),e.startDate&&(t.startDate=e.startDate),e.targetDate&&(t.targetDate=e.targetDate),e.tags&&(t.tags=I(e.tags));let r=await d(j,{input:t});p(`Production created: ${r.artCreateProduction.title}`),a(e,r.artCreateProduction);}catch(t){s(t);}}),i.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(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.medium&&(r.medium=t.medium.toUpperCase()),t.synopsis!==void 0&&(r.synopsis=t.synopsis),t.startDate&&(r.startDate=t.startDate),t.targetDate&&(r.targetDate=t.targetDate),t.tags&&(r.tags=I(t.tags)),!Object.keys(r).length)throw new l("No updates specified");let u=await d(K,{id:e,input:r});p("Production updated"),a(t,u.artUpdateProduction);}catch(r){s(r);}}),i.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(e,t)=>{try{let r=await d(z,{id:e,status:t.status.toUpperCase()});p(`Production status set to ${r.artTransitionProduction.status}`),a(t,r.artTransitionProduction);}catch(r){s(r);}});let n=c.command("members").description("Artistrybase production members");n.command("list").description("List members for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(J,{productionId:e.production});a(e,t.artListProductionMembers,{headers:["ID","Member","Role","Title","Lead"],rows:t.artListProductionMembers.map(r=>[m(r.id,12),m(r.memberId,12),r.role,r.title??"-",r.isLead?"yes":"no"])});}catch(t){s(t);}}),n.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 e=>{try{let t={productionId:e.production,memberId:e.member,role:(e.role??"COLLABORATOR").toUpperCase(),isLead:e.lead??!1};e.title&&(t.title=e.title);let r=await d(Y,{input:t});p("Member added"),a(e,r.artAddProductionMember);}catch(t){s(t);}}),n.command("remove").description("Remove a production member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await d(X,{id:e});p(`Member removed: ${String(r.artRemoveProductionMember)}`),a(t,{removed:r.artRemoveProductionMember});}catch(r){s(r);}});let o=c.command("references").description("Artistrybase production references");o.command("list").description("List references for a production").requiredOption("--production <id>","Production ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(Q,{productionId:e.production});a(e,t.artListReferences,{headers:["ID","Title","URL","File"],rows:t.artListReferences.map(r=>[m(r.id,12),r.title,m(r.url??"-",30),r.fileId?m(r.fileId,12):"-"])});}catch(t){s(t);}}),o.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 e=>{try{let t={productionId:e.production,title:e.title};e.url&&(t.url=e.url),e.note&&(t.note=e.note),e.file&&(t.fileId=e.file),e.tags&&(t.tags=I(e.tags));let r=await d(Z,{input:t});p(`Reference added: ${r.artAddReference.title}`),a(e,r.artAddReference);}catch(t){s(t);}}),o.command("remove").description("Remove a reference").argument("<id>","Reference ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await d(tt,{id:e});p(`Reference removed: ${String(r.artRemoveReference)}`),a(t,{removed:r.artRemoveReference});}catch(r){s(r);}});}function Et(c){let i=c.command("reviews").description("Artistrybase review rounds");i.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 r=await d(et,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});a(t,r.artListReviewRounds,{headers:["ID","Round","Status","Title"],rows:r.artListReviewRounds.map(u=>[m(u.id,12),String(u.round),u.status,u.title??"-"])});}catch(r){s(r);}}),i.command("get").description("Get a review round by id").argument("<id>","Review round ID").option("-f, --format <format>","Output format").action(async(t,r)=>{try{let u=await d(rt,{id:t});if(!u.artReviewRound)throw new l(`Review round ${t} not found`);a(r,u.artReviewRound);}catch(u){s(u);}}),i.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 r={workId:t.work};t.version&&(r.versionId=t.version),t.title&&(r.title=t.title),t.dueDate&&(r.dueDate=t.dueDate);let u=await d(ot,{input:r});p(`Review round opened: round ${u.artOpenReviewRound.round}`),a(t,u.artOpenReviewRound);}catch(r){s(r);}}),i.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,r)=>{try{let u=await d(it,{id:t,status:r.status.toUpperCase()});p(`Review round status set to ${u.artTransitionReviewRound.status}`),a(r,u.artTransitionReviewRound);}catch(u){s(u);}});let n=c.command("feedback").description("Artistrybase review feedback");n.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 r={reviewRoundId:t.round,body:t.body,anchorType:(t.anchorType??"GENERAL").toUpperCase()};t.anchorValue&&(r.anchorValue=t.anchorValue);let u=await d(nt,{input:r});p("Feedback added"),a(t,u.artAddFeedback);}catch(r){s(r);}}),n.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,r)=>{try{let u=await d(st,{id:t,status:r.status.toUpperCase()});p(`Feedback status set to ${u.artResolveFeedback.status}`),a(r,u.artResolveFeedback);}catch(u){s(u);}}),c.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 r={reviewRoundId:t.round,decision:t.decision.toUpperCase()};t.comment&&(r.comment=t.comment);let u=await d(at,{input:r});p(`Approval recorded: ${u.artRecordApproval.decision}`),a(t,u.artRecordApproval);}catch(r){s(r);}});let e=c.command("releases").description("Artistrybase release pipeline");e.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 r=await d(dt,{workId:t.work,status:t.status?t.status.toUpperCase():void 0});a(t,r.artListReleases,{headers:["ID","Channel","Status","Visibility"],rows:r.artListReleases.map(u=>[m(u.id,12),u.channel,u.status,u.visibility])});}catch(r){s(r);}}),e.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 r={workId:t.work,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.version&&(r.versionId=t.version),t.channel&&(r.channel=t.channel),t.notes&&(r.notes=t.notes),t.scheduledFor&&(r.scheduledFor=t.scheduledFor);let u=await d(ct,{input:r});p(`Release created on channel ${u.artCreateRelease.channel}`),a(t,u.artCreateRelease);}catch(r){s(r);}}),e.command("publish").description("Publish a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,r)=>{try{let u=await d(ut,{id:t});p(`Release published: ${u.artPublishRelease.status}`),a(r,u.artPublishRelease);}catch(u){s(u);}});}function Tt(c){let i=c.command("portfolios").description("Artistrybase public portfolios");i.command("list").description("List portfolios").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",g,50).option("--offset <n>","Offset",g,0).option("-f, --format <format>","Output format").action(async o=>{try{let e=await d(pt,{visibility:o.visibility?o.visibility.toUpperCase():void 0,pagination:{limit:o.limit,offset:o.offset}});a(o,e.artListPortfolios.items,{headers:["ID","Handle","Display Name","Visibility","Followers"],rows:e.artListPortfolios.items.map(t=>[m(t.id,12),t.handle,t.displayName,t.visibility,String(t.followerCount)])});}catch(e){s(e);}}),i.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(o,e)=>{try{let t=await d(lt,{id:o});if(!t.artPortfolio)throw new l(`Portfolio ${o} not found`);a(e,t.artPortfolio);}catch(t){s(t);}}),i.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 o=>{try{let e={handle:o.handle,displayName:o.displayName,visibility:(o.visibility??"PUBLIC").toUpperCase()};o.bio&&(e.bio=o.bio),o.owner&&(e.ownerId=o.owner),o.avatarFile&&(e.avatarFileId=o.avatarFile),o.bannerFile&&(e.bannerFileId=o.bannerFile),o.featuredWorks&&(e.featuredWorkIds=I(o.featuredWorks)),o.links&&(e.links=h("links",o.links));let t=await d(mt,{input:e});p(`Portfolio created: ${t.artCreatePortfolio.handle}`),a(o,t.artCreatePortfolio);}catch(e){s(e);}}),i.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(o,e)=>{try{let t={};if(e.displayName&&(t.displayName=e.displayName),e.bio!==void 0&&(t.bio=e.bio),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.avatarFile&&(t.avatarFileId=e.avatarFile),e.bannerFile&&(t.bannerFileId=e.bannerFile),e.featuredWorks&&(t.featuredWorkIds=I(e.featuredWorks)),e.links&&(t.links=h("links",e.links)),!Object.keys(t).length)throw new l("No updates specified");let r=await d(ft,{id:o,input:t});p("Portfolio updated"),a(e,r.artUpdatePortfolio);}catch(t){s(t);}}),i.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(o,e)=>{try{let t=await d(gt,{id:o});p(`Portfolio archived: ${String(t.artArchivePortfolio)}`),a(e,{archived:t.artArchivePortfolio});}catch(t){s(t);}}),i.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(o,e)=>{try{let t=await d(It,{portfolioId:o,notify:e.notify});p("Portfolio followed"),a(e,t.artFollowPortfolio);}catch(t){s(t);}}),i.command("unfollow").description("Unfollow a portfolio").argument("<portfolioId>","Portfolio ID").option("-f, --format <format>","Output format").action(async(o,e)=>{try{let t=await d(wt,{portfolioId:o});p(`Portfolio unfollowed: ${String(t.artUnfollowPortfolio)}`),a(e,{unfollowed:t.artUnfollowPortfolio});}catch(t){s(t);}});let n=c.command("licenses").description("Artistrybase work licenses");n.command("list").description("List licenses for a work").requiredOption("--work <id>","Work ID").option("-f, --format <format>","Output format").action(async o=>{try{let e=await d(Rt,{workId:o.work});a(o,e.artListLicenses,{headers:["ID","Name","Model","Status","Price","Currency"],rows:e.artListLicenses.map(t=>[m(t.id,12),t.name,t.model,t.status,String(t.priceAmount),t.currency])});}catch(e){s(e);}}),n.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",v).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 o=>{try{let e={workId:o.work,name:o.name,model:(o.model??"FREE").toUpperCase()};o.price!==void 0&&(e.priceAmount=o.price),o.currency&&(e.currency=o.currency),o.spdx&&(e.spdx=o.spdx),o.terms&&(e.terms=o.terms),o.attribution&&(e.attribution=o.attribution);let t=await d(At,{input:e});p(`License created: ${t.artCreateLicense.name}`),a(o,t.artCreateLicense);}catch(e){s(e);}}),n.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",v).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(o,e)=>{try{let t={};if(e.name&&(t.name=e.name),e.model&&(t.model=e.model.toUpperCase()),e.price!==void 0&&(t.priceAmount=e.price),e.currency&&(t.currency=e.currency),e.spdx&&(t.spdx=e.spdx),e.terms&&(t.terms=e.terms),e.attribution&&(t.attribution=e.attribution),!Object.keys(t).length)throw new l("No updates specified");let r=await d(kt,{id:o,input:t});p("License updated"),a(e,r.artUpdateLicense);}catch(t){s(t);}}),n.command("activate").description("Activate a license").argument("<id>","License ID").option("-f, --format <format>","Output format").action(async(o,e)=>{try{let t=await d(yt,{id:o});p(`License activated: ${t.artActivateLicense.status}`),a(e,t.artActivateLicense);}catch(t){s(t);}});}function Ot(c){c.command("health").description("Artistrybase subgraph health check (public)").option("-f, --format <format>","Output format").action(async i=>{try{let n=await C(Ct);p(n.artHealth),a(i,{health:n.artHealth});}catch(n){s(n);}});}var Vt={id:"artistrybase",version:"1.0.0",displayName:"Artistrybase",dependsOn:["auth","workspaces"],register(c,i){T(i);let n=c.command("artistrybase").description("Artistrybase multi-medium creative platform");ht(n),vt(n),bt(n),Et(n),Tt(n),Ot(n);}},Cr=Vt;module.exports=Cr;
355
+ `;function h(c,r){try{return JSON.parse(r)}catch{throw new m(`--${c} must be valid JSON`)}}function l(c){let r=Number.parseInt(c,10);if(Number.isNaN(r))throw new m(`Expected an integer but got "${c}"`);return r}function b(c){let r=Number.parseFloat(c);if(Number.isNaN(r))throw new m(`Expected a number but got "${c}"`);return r}function I(c){return c.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function ht(c){let r=c.command("works").description("Artistrybase creative works");r.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",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={limit:e.limit,offset:e.offset},o=await d(O,{medium:e.medium?e.medium.toUpperCase():void 0,status:e.status?e.status.toUpperCase():void 0,productionId:e.production,pagination:t});a(e,o.artListWorks.items,{headers:["ID","Title","Medium","Status","Visibility"],rows:o.artListWorks.items.map(u=>[f(u.id,12),u.title,u.medium,u.status,u.visibility])});}catch(t){s(t);}}),r.command("get").description("Get a work by id").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o=await d(D,{id:e});if(!o.artWork)throw new m(`Work ${e} not found`);a(t,o.artWork);}catch(o){s(o);}}),r.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",l).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async e=>{try{let t={title:e.title,medium:(e.medium??"MIXED").toUpperCase(),visibility:(e.visibility??"PRIVATE").toUpperCase()};e.summary&&(t.summary=e.summary),e.production&&(t.productionId=e.production),e.coverFile&&(t.coverFileId=e.coverFile),e.durationMs!==void 0&&(t.durationMs=e.durationMs),e.tags&&(t.tags=I(e.tags));let o=await d(P,{input:t});p(`Work created: ${o.artCreateWork.title}`),a(e,o.artCreateWork);}catch(t){s(t);}}),r.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",l).option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o={};if(t.title&&(o.title=t.title),t.medium&&(o.medium=t.medium.toUpperCase()),t.visibility&&(o.visibility=t.visibility.toUpperCase()),t.summary!==void 0&&(o.summary=t.summary),t.production&&(o.productionId=t.production),t.coverFile&&(o.coverFileId=t.coverFile),t.durationMs!==void 0&&(o.durationMs=t.durationMs),t.tags&&(o.tags=I(t.tags)),!Object.keys(o).length)throw new m("No updates specified");let u=await d(L,{id:e,input:o});p("Work updated"),a(t,u.artUpdateWork);}catch(o){s(o);}}),r.command("archive").description("Archive a work").argument("<id>","Work ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o=await d(x,{id:e});p(`Work archived: ${String(o.artArchiveWork)}`),a(t,{archived:o.artArchiveWork});}catch(o){s(o);}}),r.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(e,t)=>{try{let o=await d(S,{workId:e,versionId:t.version});p("Version published"),a(t,o.artPublishWorkVersion);}catch(o){s(o);}});let n=c.command("versions").description("Artistrybase work versions");n.command("list").description("List versions for a work").requiredOption("--work <id>","Work ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(_,{workId:e.work,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListWorkVersions.items,{headers:["ID","No","Label","Published","File"],rows:t.artListWorkVersions.items.map(o=>[f(o.id,12),String(o.versionNo),o.label??"-",o.isPublished?"yes":"no",f(String(o.fileId??"-"),12)])});}catch(t){s(t);}}),n.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 e=>{try{let t={workId:e.work};e.label&&(t.label=e.label),e.notes&&(t.notes=e.notes),e.file&&(t.fileId=e.file),e.checksum&&(t.checksum=e.checksum);let o=await d($,{input:t});p(`Version added: v${o.artAddWorkVersion.versionNo}`),a(e,o.artAddWorkVersion);}catch(t){s(t);}});let i=c.command("assets").description("Artistrybase work assets");i.command("list").description("List assets for a work").requiredOption("--work <id>","Work ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(N,{workId:e.work,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListAssets.items,{headers:["ID","Kind","File","MIME"],rows:t.artListAssets.items.map(o=>[f(o.id,12),o.kind,f(o.fileId,12),o.mimeType??"-"])});}catch(t){s(t);}}),i.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",l).option("--height <n>","Height",l).option("--duration-ms <n>","Duration in ms",l).option("-f, --format <format>","Output format").action(async e=>{try{let t={workId:e.work,fileId:e.file,kind:(e.kind??"SOURCE").toUpperCase()};e.mimeType&&(t.mimeType=e.mimeType),e.version&&(t.versionId=e.version),e.width!==void 0&&(t.width=e.width),e.height!==void 0&&(t.height=e.height),e.durationMs!==void 0&&(t.durationMs=e.durationMs);let o=await d(U,{input:t});p(`Asset added: ${o.artAddAsset.kind}`),a(e,o.artAddAsset);}catch(t){s(t);}});}function bt(c){let r=c.command("collections").description("Artistrybase curated collections");r.command("list").description("List collections").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async n=>{try{let i=await d(W,{visibility:n.visibility?n.visibility.toUpperCase():void 0,pagination:{limit:n.limit,offset:n.offset}});a(n,i.artListCollections.items,{headers:["ID","Title","Slug","Medium","Visibility"],rows:i.artListCollections.items.map(e=>[f(e.id,12),e.title,e.slug,e.medium??"-",e.visibility])});}catch(i){s(i);}}),r.command("get").description("Get a collection by id").argument("<id>","Collection ID").option("-f, --format <format>","Output format").action(async(n,i)=>{try{let e=await d(F,{id:n});if(!e.artCollection)throw new m(`Collection ${n} not found`);a(i,e.artCollection);}catch(e){s(e);}}),r.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 n=>{try{let i={title:n.title,slug:n.slug,visibility:(n.visibility??"PRIVATE").toUpperCase()};n.description&&(i.description=n.description),n.medium&&(i.medium=n.medium.toUpperCase()),n.coverFile&&(i.coverFileId=n.coverFile),n.tags&&(i.tags=I(n.tags));let e=await d(M,{input:i});p(`Collection created: ${e.artCreateCollection.title}`),a(n,e.artCreateCollection);}catch(i){s(i);}}),r.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(n,i)=>{try{let e={};if(i.title&&(e.title=i.title),i.description!==void 0&&(e.description=i.description),i.medium&&(e.medium=i.medium.toUpperCase()),i.visibility&&(e.visibility=i.visibility.toUpperCase()),i.coverFile&&(e.coverFileId=i.coverFile),i.tags&&(e.tags=I(i.tags)),!Object.keys(e).length)throw new m("No updates specified");let t=await d(V,{id:n,input:e});p("Collection updated"),a(i,t.artUpdateCollection);}catch(e){s(e);}}),r.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(n,i)=>{try{let e=await d(q,{collectionId:n,workId:i.work});p("Work added to collection"),a(i,e.artAddWorkToCollection);}catch(e){s(e);}}),r.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(n,i)=>{try{let e=await d(B,{collectionId:n,workId:i.work});p("Work removed from collection"),a(i,e.artRemoveWorkFromCollection);}catch(e){s(e);}});}function vt(c){let r=c.command("productions").description("Artistrybase productions");r.command("list").description("List productions").option("--status <s>","Production status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(H,{status:e.status?e.status.toUpperCase():void 0,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListProductions.items,{headers:["ID","Title","Slug","Medium","Status"],rows:t.artListProductions.items.map(o=>[f(o.id,12),o.title,o.slug,o.medium,o.status])});}catch(t){s(t);}}),r.command("get").description("Get a production by id").argument("<id>","Production ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o=await d(G,{id:e});if(!o.artProduction)throw new m(`Production ${e} not found`);a(t,o.artProduction);}catch(o){s(o);}}),r.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 e=>{try{let t={title:e.title,slug:e.slug,medium:(e.medium??"MIXED").toUpperCase()};e.synopsis&&(t.synopsis=e.synopsis),e.startDate&&(t.startDate=e.startDate),e.targetDate&&(t.targetDate=e.targetDate),e.tags&&(t.tags=I(e.tags));let o=await d(j,{input:t});p(`Production created: ${o.artCreateProduction.title}`),a(e,o.artCreateProduction);}catch(t){s(t);}}),r.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(e,t)=>{try{let o={};if(t.title&&(o.title=t.title),t.medium&&(o.medium=t.medium.toUpperCase()),t.synopsis!==void 0&&(o.synopsis=t.synopsis),t.startDate&&(o.startDate=t.startDate),t.targetDate&&(o.targetDate=t.targetDate),t.tags&&(o.tags=I(t.tags)),!Object.keys(o).length)throw new m("No updates specified");let u=await d(K,{id:e,input:o});p("Production updated"),a(t,u.artUpdateProduction);}catch(o){s(o);}}),r.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(e,t)=>{try{let o=await d(z,{id:e,status:t.status.toUpperCase()});p(`Production status set to ${o.artTransitionProduction.status}`),a(t,o.artTransitionProduction);}catch(o){s(o);}});let n=c.command("members").description("Artistrybase production members");n.command("list").description("List members for a production").requiredOption("--production <id>","Production ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(J,{productionId:e.production,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListProductionMembers.items,{headers:["ID","Member","Role","Title","Lead"],rows:t.artListProductionMembers.items.map(o=>[f(o.id,12),f(o.memberId,12),o.role,o.title??"-",o.isLead?"yes":"no"])});}catch(t){s(t);}}),n.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 e=>{try{let t={productionId:e.production,memberId:e.member,role:(e.role??"COLLABORATOR").toUpperCase(),isLead:e.lead??!1};e.title&&(t.title=e.title);let o=await d(Y,{input:t});p("Member added"),a(e,o.artAddProductionMember);}catch(t){s(t);}}),n.command("remove").description("Remove a production member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o=await d(X,{id:e});p(`Member removed: ${String(o.artRemoveProductionMember)}`),a(t,{removed:o.artRemoveProductionMember});}catch(o){s(o);}});let i=c.command("references").description("Artistrybase production references");i.command("list").description("List references for a production").requiredOption("--production <id>","Production ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async e=>{try{let t=await d(Q,{productionId:e.production,pagination:{limit:e.limit,offset:e.offset}});a(e,t.artListReferences.items,{headers:["ID","Title","URL","File"],rows:t.artListReferences.items.map(o=>[f(o.id,12),o.title,f(o.url??"-",30),o.fileId?f(o.fileId,12):"-"])});}catch(t){s(t);}}),i.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 e=>{try{let t={productionId:e.production,title:e.title};e.url&&(t.url=e.url),e.note&&(t.note=e.note),e.file&&(t.fileId=e.file),e.tags&&(t.tags=I(e.tags));let o=await d(Z,{input:t});p(`Reference added: ${o.artAddReference.title}`),a(e,o.artAddReference);}catch(t){s(t);}}),i.command("remove").description("Remove a reference").argument("<id>","Reference ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let o=await d(tt,{id:e});p(`Reference removed: ${String(o.artRemoveReference)}`),a(t,{removed:o.artRemoveReference});}catch(o){s(o);}});}function Et(c){let r=c.command("reviews").description("Artistrybase review rounds");r.command("list").description("List review rounds for a work").requiredOption("--work <id>","Work ID").option("--status <s>","OPEN|CHANGES_REQUESTED|APPROVED|CLOSED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let o=await d(et,{workId:t.work,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});a(t,o.artListReviewRounds.items,{headers:["ID","Round","Status","Title"],rows:o.artListReviewRounds.items.map(u=>[f(u.id,12),String(u.round),u.status,u.title??"-"])});}catch(o){s(o);}}),r.command("get").description("Get a review round by id").argument("<id>","Review round ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let u=await d(ot,{id:t});if(!u.artReviewRound)throw new m(`Review round ${t} not found`);a(o,u.artReviewRound);}catch(u){s(u);}}),r.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 u=await d(it,{input:o});p(`Review round opened: round ${u.artOpenReviewRound.round}`),a(t,u.artOpenReviewRound);}catch(o){s(o);}}),r.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 u=await d(rt,{id:t,status:o.status.toUpperCase()});p(`Review round status set to ${u.artTransitionReviewRound.status}`),a(o,u.artTransitionReviewRound);}catch(u){s(u);}});let n=c.command("feedback").description("Artistrybase review feedback");n.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 u=await d(nt,{input:o});p("Feedback added"),a(t,u.artAddFeedback);}catch(o){s(o);}}),n.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 u=await d(st,{id:t,status:o.status.toUpperCase()});p(`Feedback status set to ${u.artResolveFeedback.status}`),a(o,u.artResolveFeedback);}catch(u){s(u);}}),c.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 u=await d(at,{input:o});p(`Approval recorded: ${u.artRecordApproval.decision}`),a(t,u.artRecordApproval);}catch(o){s(o);}});let e=c.command("releases").description("Artistrybase release pipeline");e.command("list").description("List releases for a work").requiredOption("--work <id>","Work ID").option("--status <s>","SCHEDULED|PUBLISHED|UNPUBLISHED|FAILED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let o=await d(dt,{workId:t.work,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});a(t,o.artListReleases.items,{headers:["ID","Channel","Status","Visibility"],rows:o.artListReleases.items.map(u=>[f(u.id,12),u.channel,u.status,u.visibility])});}catch(o){s(o);}}),e.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 u=await d(ct,{input:o});p(`Release created on channel ${u.artCreateRelease.channel}`),a(t,u.artCreateRelease);}catch(o){s(o);}}),e.command("publish").description("Publish a release").argument("<id>","Release ID").option("-f, --format <format>","Output format").action(async(t,o)=>{try{let u=await d(ut,{id:t});p(`Release published: ${u.artPublishRelease.status}`),a(o,u.artPublishRelease);}catch(u){s(u);}});}function Tt(c){let r=c.command("portfolios").description("Artistrybase public portfolios");r.command("list").description("List portfolios").option("--visibility <v>","PRIVATE|PUBLIC|UNLISTED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async i=>{try{let e=await d(pt,{visibility:i.visibility?i.visibility.toUpperCase():void 0,pagination:{limit:i.limit,offset:i.offset}});a(i,e.artListPortfolios.items,{headers:["ID","Handle","Display Name","Visibility","Followers"],rows:e.artListPortfolios.items.map(t=>[f(t.id,12),t.handle,t.displayName,t.visibility,String(t.followerCount)])});}catch(e){s(e);}}),r.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(i,e)=>{try{let t=await d(lt,{id:i});if(!t.artPortfolio)throw new m(`Portfolio ${i} not found`);a(e,t.artPortfolio);}catch(t){s(t);}}),r.command("create").description("Create a portfolio").requiredOption("--handle <h>","Unique handle").requiredOption("--display-name <n>","Display name").option("--bio <b>","Bio").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 i=>{try{let e={handle:i.handle,displayName:i.displayName,visibility:(i.visibility??"PUBLIC").toUpperCase()};i.bio&&(e.bio=i.bio),i.avatarFile&&(e.avatarFileId=i.avatarFile),i.bannerFile&&(e.bannerFileId=i.bannerFile),i.featuredWorks&&(e.featuredWorkIds=I(i.featuredWorks)),i.links&&(e.links=h("links",i.links));let t=await d(mt,{input:e});p(`Portfolio created: ${t.artCreatePortfolio.handle}`),a(i,t.artCreatePortfolio);}catch(e){s(e);}}),r.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(i,e)=>{try{let t={};if(e.displayName&&(t.displayName=e.displayName),e.bio!==void 0&&(t.bio=e.bio),e.visibility&&(t.visibility=e.visibility.toUpperCase()),e.avatarFile&&(t.avatarFileId=e.avatarFile),e.bannerFile&&(t.bannerFileId=e.bannerFile),e.featuredWorks&&(t.featuredWorkIds=I(e.featuredWorks)),e.links&&(t.links=h("links",e.links)),!Object.keys(t).length)throw new m("No updates specified");let o=await d(ft,{id:i,input:t});p("Portfolio updated"),a(e,o.artUpdatePortfolio);}catch(t){s(t);}}),r.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(i,e)=>{try{let t=await d(gt,{id:i});p(`Portfolio archived: ${String(t.artArchivePortfolio)}`),a(e,{archived:t.artArchivePortfolio});}catch(t){s(t);}}),r.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(i,e)=>{try{let t=await d(It,{portfolioId:i,notify:e.notify});p("Portfolio followed"),a(e,t.artFollowPortfolio);}catch(t){s(t);}}),r.command("unfollow").description("Unfollow a portfolio").argument("<portfolioId>","Portfolio ID").option("-f, --format <format>","Output format").action(async(i,e)=>{try{let t=await d(wt,{portfolioId:i});p(`Portfolio unfollowed: ${String(t.artUnfollowPortfolio)}`),a(e,{unfollowed:t.artUnfollowPortfolio});}catch(t){s(t);}});let n=c.command("licenses").description("Artistrybase work licenses");n.command("list").description("List licenses for a work").requiredOption("--work <id>","Work ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async i=>{try{let e=await d(Rt,{workId:i.work,pagination:{limit:i.limit,offset:i.offset}});a(i,e.artListLicenses.items,{headers:["ID","Name","Model","Status","Price","Currency"],rows:e.artListLicenses.items.map(t=>[f(t.id,12),t.name,t.model,t.status,String(t.priceAmount),t.currency])});}catch(e){s(e);}}),n.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",b).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 i=>{try{let e={workId:i.work,name:i.name,model:(i.model??"FREE").toUpperCase()};i.price!==void 0&&(e.priceAmount=i.price),i.currency&&(e.currency=i.currency),i.spdx&&(e.spdx=i.spdx),i.terms&&(e.terms=i.terms),i.attribution&&(e.attribution=i.attribution);let t=await d(At,{input:e});p(`License created: ${t.artCreateLicense.name}`),a(i,t.artCreateLicense);}catch(e){s(e);}}),n.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",b).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(i,e)=>{try{let t={};if(e.name&&(t.name=e.name),e.model&&(t.model=e.model.toUpperCase()),e.price!==void 0&&(t.priceAmount=e.price),e.currency&&(t.currency=e.currency),e.spdx&&(t.spdx=e.spdx),e.terms&&(t.terms=e.terms),e.attribution&&(t.attribution=e.attribution),!Object.keys(t).length)throw new m("No updates specified");let o=await d(kt,{id:i,input:t});p("License updated"),a(e,o.artUpdateLicense);}catch(t){s(t);}}),n.command("activate").description("Activate a license").argument("<id>","License ID").option("-f, --format <format>","Output format").action(async(i,e)=>{try{let t=await d(yt,{id:i});p(`License activated: ${t.artActivateLicense.status}`),a(e,t.artActivateLicense);}catch(t){s(t);}});}function Ot(c){c.command("health").description("Artistrybase subgraph health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let n=await C(Ct);p(n.artHealth),a(r,{health:n.artHealth});}catch(n){s(n);}});}var Vt={id:"artistrybase",version:"1.0.0",displayName:"Artistrybase",dependsOn:["auth","workspaces"],register(c,r){T(r);let n=c.command("artistrybase").description("Artistrybase multi-medium creative platform");ht(n),bt(n),vt(n),Et(n),Tt(n),Ot(n);}},ho=Vt;module.exports=ho;