@burdenoff/cli-sdk 2026.1102.1 → 2026.1102.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/chunk-O6UCQ5IT.js +1 -0
  2. package/dist/{chunk-AYNNSLCL.js → chunk-ZGT7IIOP.js} +409 -418
  3. package/dist/modules/adaptercloud/index.cjs +9 -6
  4. package/dist/modules/adaptercloud/index.js +7 -4
  5. package/dist/modules/artistrybase/index.js +2 -2
  6. package/dist/modules/assethandler/index.cjs +2 -2
  7. package/dist/modules/assethandler/index.js +2 -2
  8. package/dist/modules/atheletebridge/index.cjs +35 -21
  9. package/dist/modules/atheletebridge/index.js +33 -19
  10. package/dist/modules/auth/index.cjs +37 -37
  11. package/dist/modules/auth/index.js +33 -29
  12. package/dist/modules/billing/index.cjs +1 -1
  13. package/dist/modules/billing/index.js +2 -2
  14. package/dist/modules/brainyrich/index.cjs +44 -28
  15. package/dist/modules/brainyrich/index.js +47 -31
  16. package/dist/modules/buildmyiq/index.cjs +64 -67
  17. package/dist/modules/buildmyiq/index.js +60 -63
  18. package/dist/modules/channels/index.cjs +3 -3
  19. package/dist/modules/channels/index.js +2 -2
  20. package/dist/modules/collabkin/index.cjs +4 -4
  21. package/dist/modules/collabkin/index.js +2 -2
  22. package/dist/modules/comradecircle/index.cjs +24 -16
  23. package/dist/modules/comradecircle/index.js +20 -12
  24. package/dist/modules/conversations/index.cjs +7 -7
  25. package/dist/modules/conversations/index.js +2 -2
  26. package/dist/modules/coolandlovely/index.cjs +28 -15
  27. package/dist/modules/coolandlovely/index.js +30 -17
  28. package/dist/modules/cosmicintersection/index.cjs +6 -6
  29. package/dist/modules/cosmicintersection/index.js +2 -2
  30. package/dist/modules/crewfoundry/index.js +2 -2
  31. package/dist/modules/devportal/index.cjs +2 -2
  32. package/dist/modules/devportal/index.js +2 -2
  33. package/dist/modules/ecoimpacthub/index.cjs +23 -13
  34. package/dist/modules/ecoimpacthub/index.js +20 -10
  35. package/dist/modules/eventfullymanaged/index.cjs +74 -74
  36. package/dist/modules/eventfullymanaged/index.js +78 -78
  37. package/dist/modules/export/index.cjs +4 -4
  38. package/dist/modules/export/index.js +2 -2
  39. package/dist/modules/files/index.cjs +3 -3
  40. package/dist/modules/files/index.js +4 -4
  41. package/dist/modules/fluidgrids/index.cjs +16 -16
  42. package/dist/modules/fluidgrids/index.js +3 -3
  43. package/dist/modules/ggnomad/index.cjs +4 -4
  44. package/dist/modules/ggnomad/index.js +2 -2
  45. package/dist/modules/govcitizenhub/index.cjs +10 -7
  46. package/dist/modules/govcitizenhub/index.js +8 -5
  47. package/dist/modules/groups/index.cjs +4 -4
  48. package/dist/modules/groups/index.js +2 -2
  49. package/dist/modules/headshotmarketing/index.js +2 -2
  50. package/dist/modules/hookmovies/index.cjs +6 -6
  51. package/dist/modules/hookmovies/index.js +2 -2
  52. package/dist/modules/housingvista/index.cjs +3 -3
  53. package/dist/modules/housingvista/index.js +2 -2
  54. package/dist/modules/integrations/index.cjs +5 -5
  55. package/dist/modules/integrations/index.js +2 -2
  56. package/dist/modules/intelwatchtower/index.cjs +28 -16
  57. package/dist/modules/intelwatchtower/index.js +25 -13
  58. package/dist/modules/kadaikodi/index.cjs +2 -2
  59. package/dist/modules/kadaikodi/index.js +2 -2
  60. package/dist/modules/labsofscience/index.cjs +10 -6
  61. package/dist/modules/labsofscience/index.js +9 -5
  62. package/dist/modules/manufacturedops/index.cjs +35 -22
  63. package/dist/modules/manufacturedops/index.js +35 -22
  64. package/dist/modules/movethewheels/index.js +2 -2
  65. package/dist/modules/notifications/index.cjs +2 -2
  66. package/dist/modules/notifications/index.js +2 -2
  67. package/dist/modules/organizations/index.js +2 -2
  68. package/dist/modules/planmagnet/index.cjs +21 -21
  69. package/dist/modules/planmagnet/index.js +32 -32
  70. package/dist/modules/products/index.cjs +4 -4
  71. package/dist/modules/products/index.js +2 -2
  72. package/dist/modules/proserviceworld/index.cjs +18 -13
  73. package/dist/modules/proserviceworld/index.js +18 -13
  74. package/dist/modules/rbac/index.js +2 -2
  75. package/dist/modules/sandbox/index.cjs +17 -17
  76. package/dist/modules/sandbox/index.js +1 -1
  77. package/dist/modules/scheduler/index.cjs +2 -2
  78. package/dist/modules/scheduler/index.js +2 -2
  79. package/dist/modules/security/index.cjs +3 -3
  80. package/dist/modules/security/index.js +2 -2
  81. package/dist/modules/semanticfed/index.cjs +3 -3
  82. package/dist/modules/semanticfed/index.js +2 -2
  83. package/dist/modules/store/index.cjs +3 -3
  84. package/dist/modules/store/index.js +2 -2
  85. package/dist/modules/subscriberbot/index.cjs +43 -19
  86. package/dist/modules/subscriberbot/index.js +47 -23
  87. package/dist/modules/support/index.cjs +2 -2
  88. package/dist/modules/support/index.js +2 -2
  89. package/dist/modules/tags/index.js +2 -2
  90. package/dist/modules/technospam/index.cjs +18 -9
  91. package/dist/modules/technospam/index.js +18 -9
  92. package/dist/modules/theculturepost/index.cjs +27 -22
  93. package/dist/modules/theculturepost/index.js +32 -27
  94. package/dist/modules/theglobalfuel/index.cjs +65 -60
  95. package/dist/modules/theglobalfuel/index.js +65 -60
  96. package/dist/modules/timecampus/index.js +2 -2
  97. package/dist/modules/tours/index.cjs +2 -2
  98. package/dist/modules/tours/index.js +2 -2
  99. package/dist/modules/vibecontrols/index.cjs +563 -567
  100. package/dist/modules/vibecontrols/index.js +5 -4
  101. package/dist/modules/workspaces/index.cjs +4 -4
  102. package/dist/modules/workspaces/index.js +2 -2
  103. package/package.json +1 -1
  104. package/dist/chunk-W4JZR7RJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var D=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,q as q$1,d}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var D=`
2
2
  query ColGetFamilyTree($id: ID!) {
3
3
  colFamilyTree(id: $id) {
4
4
  id name surname description status tags createdAt updatedAt workspaceId
@@ -205,4 +205,4 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d}from'../../chunk-W4JZR7RJ.js';impor
205
205
  query ColHealth {
206
206
  colHealth
207
207
  }
208
- `;function c(m){let r=Number.parseInt(m,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${m}"`);return r}function u(m){return m.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function Z(m){let r=m.command("trees").description("Collabkin family trees");r.command("list").description("List family trees").option("--status <s>","ACTIVE|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(h,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.colListFamilyTrees.items,{headers:["ID","Name","Surname","Status","Tags"],rows:e.colListFamilyTrees.items.map(i=>[p(i.id,12),i.name,i.surname??"-",i.status,(i.tags??[]).join(", ")])});}catch(e){g(e);}}),r.command("get").description("Get a family tree by id").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i=await b$1(D,{id:t});if(!i.colFamilyTree)throw new o(`Family tree ${t} not found`);h$1(e,i.colFamilyTree);}catch(i){g(i);}}),r.command("create").description("Create a family tree").requiredOption("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.surname&&(e.surname=t.surname),t.description&&(e.description=t.description),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(b,{input:e});i(`Family tree created: ${i$1.colCreateFamilyTree.name}`),h$1(t,i$1.colCreateFamilyTree);}catch(e){g(e);}}),r.command("update").description("Update a family tree").argument("<id>","Family tree ID").option("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.surname!==void 0&&(i$1.surname=e.surname),e.description!==void 0&&(i$1.description=e.description),e.coverFile&&(i$1.coverFileId=e.coverFile),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(T,{id:t,input:i$1});i("Family tree updated"),h$1(e,I.colUpdateFamilyTree);}catch(i){g(i);}}),r.command("archive").description("Archive a family tree").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(R,{id:t});i(`Family tree archived: ${i$1.colArchiveFamilyTree}`),h$1(e,{archived:i$1.colArchiveFamilyTree});}catch(i){g(i);}});}function tt(m){let r=m.command("people").description("Collabkin people");r.command("list").description("List people in a tree").option("--tree <id>","Filter by family tree ID").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(M,{treeId:t.tree,lifeStatus:t.lifeStatus?t.lifeStatus.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.colListPeople.items,{headers:["ID","Given","Family","Gender","Life","Born"],rows:e.colListPeople.items.map(i=>[p(i.id,12),i.givenName,i.familyName??"-",i.gender,i.lifeStatus,o$1(i.birthDate)])});}catch(e){g(e);}}),r.command("get").description("Get a person by id").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i=await b$1(A,{id:t});if(!i.colPerson)throw new o(`Person ${t} not found`);h$1(e,i.colPerson);}catch(i){g(i);}}),r.command("create").description("Create a person").requiredOption("--tree <id>","Family tree ID").requiredOption("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,givenName:t.givenName};t.familyName&&(e.familyName=t.familyName),t.maidenName&&(e.maidenName=t.maidenName),t.nickname&&(e.nickname=t.nickname),t.gender&&(e.gender=t.gender.toUpperCase()),t.lifeStatus&&(e.lifeStatus=t.lifeStatus.toUpperCase()),t.birthDate&&(e.birthDate=t.birthDate),t.birthPlace&&(e.birthPlace=t.birthPlace),t.deathDate&&(e.deathDate=t.deathDate),t.bio&&(e.bio=t.bio),t.linkedUser&&(e.linkedUserId=t.linkedUser),t.photoFile&&(e.photoFileId=t.photoFile),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(O,{input:e});i(`Person created: ${i$1.colCreatePerson.givenName}`),h$1(t,i$1.colCreatePerson);}catch(e){g(e);}}),r.command("update").description("Update a person").argument("<id>","Person ID").option("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.givenName&&(i$1.givenName=e.givenName),e.familyName!==void 0&&(i$1.familyName=e.familyName),e.maidenName!==void 0&&(i$1.maidenName=e.maidenName),e.nickname!==void 0&&(i$1.nickname=e.nickname),e.gender&&(i$1.gender=e.gender.toUpperCase()),e.lifeStatus&&(i$1.lifeStatus=e.lifeStatus.toUpperCase()),e.birthDate&&(i$1.birthDate=e.birthDate),e.birthPlace!==void 0&&(i$1.birthPlace=e.birthPlace),e.deathDate&&(i$1.deathDate=e.deathDate),e.bio!==void 0&&(i$1.bio=e.bio),e.linkedUser&&(i$1.linkedUserId=e.linkedUser),e.photoFile&&(i$1.photoFileId=e.photoFile),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(S,{id:t,input:i$1});i("Person updated"),h$1(e,I.colUpdatePerson);}catch(i){g(i);}}),r.command("remove").description("Delete a person").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(v,{id:t});i(`Person deleted: ${i$1.colDeletePerson}`),h$1(e,{deleted:i$1.colDeletePerson});}catch(i){g(i);}});}function et(m){let r=m.command("relationships").description("Collabkin relationships between people");r.command("list").description("List relationships in a tree (optionally for one person)").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(k,{treeId:t.tree,personId:t.person});h$1(t,e.colListRelationships,{headers:["ID","From","To","Type","Certainty"],rows:e.colListRelationships.map(i=>[p(i.id,12),p(i.fromPersonId,12),p(i.toPersonId,12),i.type,i.certainty])});}catch(e){g(e);}}),r.command("create").description("Create a relationship between two people").requiredOption("--tree <id>","Family tree ID").requiredOption("--from <id>","From person ID").requiredOption("--to <id>","To person ID").requiredOption("--type <t>","PARENT|CHILD|SPOUSE|PARTNER|SIBLING|GRANDPARENT|GRANDCHILD|GUARDIAN").option("--certainty <c>","CONFIRMED|PROBABLE|DISPUTED|UNVERIFIED").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,fromPersonId:t.from,toPersonId:t.to,type:t.type.toUpperCase()};t.certainty&&(e.certainty=t.certainty.toUpperCase()),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes);let i$1=await b$1(w,{input:e});i(`Relationship created: ${i$1.colCreateRelationship.type}`),h$1(t,i$1.colCreateRelationship);}catch(e){g(e);}}),r.command("remove").description("Delete a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(N,{id:t});i(`Relationship deleted: ${i$1.colDeleteRelationship}`),h$1(e,{deleted:i$1.colDeleteRelationship});}catch(i){g(i);}});}function it(m){let r=m.command("events").description("Collabkin timeline events");r.command("timeline").description("Show the family timeline (dated events) for a tree").requiredOption("--tree <id>","Family tree ID").option("--person <id>","Filter by person ID").option("--type <t>","Filter by event type").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(P,{treeId:t.tree,personId:t.person,type:t.type?t.type.toUpperCase():void 0});h$1(t,e.colTimeline,{headers:["ID","Title","Type","Date","Place","Approx"],rows:e.colTimeline.map(i=>[p(i.id,12),i.title,i.type,o$1(i.date),i.place??"-",i.isApproximate?"yes":"no"])});}catch(e){g(e);}}),r.command("create").description("Create a timeline event").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Event title").requiredOption("--date <iso>","Event date (ISO)").option("--type <t>","BIRTH|DEATH|MARRIAGE|DIVORCE|EDUCATION|MILITARY|IMMIGRATION|RESIDENCE|MILESTONE|OTHER").option("--description <s>","Description").option("--place <s>","Place").option("--person <id>","Associated person ID").option("--approximate","Mark the date as approximate").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title,date:t.date};t.type&&(e.type=t.type.toUpperCase()),t.description&&(e.description=t.description),t.place&&(e.place=t.place),t.person&&(e.personId=t.person),t.approximate&&(e.isApproximate=!0);let i$1=await b$1(L,{input:e});i(`Event created: ${i$1.colCreateEvent.title}`),h$1(t,i$1.colCreateEvent);}catch(e){g(e);}}),r.command("remove").description("Delete a timeline event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1($,{id:t});i(`Event deleted: ${i$1.colDeleteEvent}`),h$1(e,{deleted:i$1.colDeleteEvent});}catch(i){g(i);}});}function rt(m){let r=m.command("memories").description("Collabkin memories (media)");r.command("list").description("List memories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{treeId:t.tree,personId:t.person,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.colListMemories.items,{headers:["ID","Title","Kind","Place","Taken","Visibility"],rows:e.colListMemories.items.map(i=>[p(i.id,12),i.title,i.kind,i.place??"-",o$1(i.takenAt),i.visibility])});}catch(e){g(e);}}),r.command("get").description("Get a memory by id").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i=await b$1(F,{id:t});if(!i.colMemory)throw new o(`Memory ${t} not found`);h$1(e,i.colMemory);}catch(i){g(i);}}),r.command("create").description("Create a memory").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title};t.kind&&(e.kind=t.kind.toUpperCase()),t.description&&(e.description=t.description),t.place&&(e.place=t.place),t.takenAt&&(e.takenAt=t.takenAt),t.person&&(e.personId=t.person),t.file&&(e.fileId=t.file),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(x,{input:e});i(`Memory created: ${i$1.colCreateMemory.title}`),h$1(t,i$1.colCreateMemory);}catch(e){g(e);}}),r.command("update").description("Update a memory").argument("<id>","Memory ID").option("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.title&&(i$1.title=e.title),e.kind&&(i$1.kind=e.kind.toUpperCase()),e.description!==void 0&&(i$1.description=e.description),e.place!==void 0&&(i$1.place=e.place),e.takenAt&&(i$1.takenAt=e.takenAt),e.person&&(i$1.personId=e.person),e.file&&(i$1.fileId=e.file),e.visibility&&(i$1.visibility=e.visibility.toUpperCase()),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(_,{id:t,input:i$1});i("Memory updated"),h$1(e,I.colUpdateMemory);}catch(i){g(i);}}),r.command("remove").description("Delete a memory").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(H,{id:t});i(`Memory deleted: ${i$1.colDeleteMemory}`),h$1(e,{deleted:i$1.colDeleteMemory});}catch(i){g(i);}});}function ot(m){let r=m.command("stories").description("Collabkin stories");r.command("list").description("List stories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(G,{treeId:t.tree,personId:t.person,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.colListStories.items,{headers:["ID","Title","Format","Narrator","Visibility"],rows:e.colListStories.items.map(i=>[p(i.id,12),i.title,i.format,i.narrator??"-",i.visibility])});}catch(e){g(e);}}),r.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i=await b$1(q,{id:t});if(!i.colStory)throw new o(`Story ${t} not found`);h$1(e,i.colStory);}catch(i){g(i);}}),r.command("create").description("Create a story").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Story title").option("--body <s>","Story body").option("--story-format <f>","WRITTEN|AUDIO|VIDEO").option("--narrator <s>","Narrator").option("--person <id>","Associated person ID").option("--recording-file <id>","Recording file ID").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title};t.body&&(e.body=t.body),t.storyFormat&&(e.format=t.storyFormat.toUpperCase()),t.narrator&&(e.narrator=t.narrator),t.person&&(e.personId=t.person),t.recordingFile&&(e.recordingFileId=t.recordingFile),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(V,{input:e});i(`Story created: ${i$1.colCreateStory.title}`),h$1(t,i$1.colCreateStory);}catch(e){g(e);}}),r.command("remove").description("Delete a story").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(Y,{id:t});i(`Story deleted: ${i$1.colDeleteStory}`),h$1(e,{deleted:i$1.colDeleteStory});}catch(i){g(i);}});}function nt(m){let r=m.command("comments").description("Collabkin comments on memories & stories");r.command("list").description("List comments for a memory or a story").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.memory&&!t.story)throw new o("Specify --memory or --story");let e=await b$1(W,{memoryId:t.memory,storyId:t.story});h$1(t,e.colListComments,{headers:["ID","Body","Memory","Story"],rows:e.colListComments.map(i=>[p(i.id,12),p(i.body,40),i.memoryId?p(i.memoryId,12):"-",i.storyId?p(i.storyId,12):"-"])});}catch(e){g(e);}}),r.command("add").description("Add a comment to a memory or a story").requiredOption("--body <text>","Comment body").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.memory&&!t.story)throw new o("Specify --memory or --story");let e={body:t.body};t.memory&&(e.memoryId=t.memory),t.story&&(e.storyId=t.story);let i$1=await b$1(B,{input:e});i("Comment added"),h$1(t,i$1.colAddComment);}catch(e){g(e);}}),r.command("remove").description("Delete a comment").argument("<id>","Comment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(K,{id:t});i(`Comment deleted: ${i$1.colDeleteComment}`),h$1(e,{deleted:i$1.colDeleteComment});}catch(i){g(i);}});}function at(m){let r=m.command("memberships").description("Collabkin family-tree memberships");r.command("list").description("List memberships for a tree").requiredOption("--tree <id>","Family tree ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{treeId:t.tree});h$1(t,e.colListMemberships,{headers:["ID","Member","Person","Role","Status"],rows:e.colListMemberships.map(i=>[p(i.id,12),p(i.memberUserId,12),i.personId?p(i.personId,12):"-",i.role,i.status])});}catch(e){g(e);}}),r.command("invite").description("Invite a member to a family tree").requiredOption("--tree <id>","Family tree ID").requiredOption("--member <id>","Member user ID").option("--person <id>","Linked person ID").option("--role <r>","OWNER|STEWARD|CONTRIBUTOR|VIEWER").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,memberUserId:t.member};t.person&&(e.personId=t.person),t.role&&(e.role=t.role.toUpperCase());let i$1=await b$1(z,{input:e});i(`Member invited: ${i$1.colInviteMember.memberUserId}`),h$1(t,i$1.colInviteMember);}catch(e){g(e);}}),r.command("accept").description("Accept a membership invitation").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(J,{id:t});i(`Membership accepted: ${i$1.colAcceptMembership.status}`),h$1(e,i$1.colAcceptMembership);}catch(i){g(i);}}),r.command("remove").description("Remove a member from a family tree").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(Q,{id:t});i(`Member removed: ${i$1.colRemoveMember}`),h$1(e,{removed:i$1.colRemoveMember});}catch(i){g(i);}});}function st(m){m.command("health").description("Collabkin service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await d(X);i(t.colHealth),h$1(r,{health:t.colHealth});}catch(t){g(t);}});}var mt={id:"collabkin",version:"1.0.0",displayName:"Collabkin",dependsOn:["auth","workspaces"],register(m,r){a(r);let t=m.command("collabkin").description("Collabkin collaborative family history");Z(t),tt(t),et(t),it(t),rt(t),ot(t),nt(t),at(t),st(t);}},Qt=mt;export{Qt as default};
208
+ `;function c(m){let r=Number.parseInt(m,10);if(Number.isNaN(r))throw new o(`Expected an integer but got "${m}"`);return r}function u(m){return m.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function Z(m){let r$1=m.command("trees").description("Collabkin family trees");r$1.command("list").description("List family trees").option("--status <s>","ACTIVE|ARCHIVED").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(h,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.colListFamilyTrees.items,{headers:["ID","Name","Surname","Status","Tags"],rows:e.colListFamilyTrees.items.map(i=>[r(i.id,12),i.name,i.surname??"-",i.status,(i.tags??[]).join(", ")])});}catch(e){h$1(e);}}),r$1.command("get").description("Get a family tree by id").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(D,{id:t});if(!i$1.colFamilyTree)throw new o(`Family tree ${t} not found`);i(e,i$1.colFamilyTree);}catch(i){h$1(i);}}),r$1.command("create").description("Create a family tree").requiredOption("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.surname&&(e.surname=t.surname),t.description&&(e.description=t.description),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(b,{input:e});k$1(`Family tree created: ${i$1.colCreateFamilyTree.name}`),i(t,i$1.colCreateFamilyTree);}catch(e){h$1(e);}}),r$1.command("update").description("Update a family tree").argument("<id>","Family tree ID").option("--name <name>","Tree name").option("--surname <s>","Family surname").option("--description <s>","Description").option("--cover-file <id>","Cover file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.name&&(i$1.name=e.name),e.surname!==void 0&&(i$1.surname=e.surname),e.description!==void 0&&(i$1.description=e.description),e.coverFile&&(i$1.coverFileId=e.coverFile),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(T,{id:t,input:i$1});k$1("Family tree updated"),i(e,I.colUpdateFamilyTree);}catch(i){h$1(i);}}),r$1.command("archive").description("Archive a family tree").argument("<id>","Family tree ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(R,{id:t});k$1(`Family tree archived: ${i$1.colArchiveFamilyTree}`),i(e,{archived:i$1.colArchiveFamilyTree});}catch(i){h$1(i);}});}function tt(m){let r$1=m.command("people").description("Collabkin people");r$1.command("list").description("List people in a tree").option("--tree <id>","Filter by family tree ID").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(M,{treeId:t.tree,lifeStatus:t.lifeStatus?t.lifeStatus.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.colListPeople.items,{headers:["ID","Given","Family","Gender","Life","Born"],rows:e.colListPeople.items.map(i=>[r(i.id,12),i.givenName,i.familyName??"-",i.gender,i.lifeStatus,q$1(i.birthDate)])});}catch(e){h$1(e);}}),r$1.command("get").description("Get a person by id").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(A,{id:t});if(!i$1.colPerson)throw new o(`Person ${t} not found`);i(e,i$1.colPerson);}catch(i){h$1(i);}}),r$1.command("create").description("Create a person").requiredOption("--tree <id>","Family tree ID").requiredOption("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,givenName:t.givenName};t.familyName&&(e.familyName=t.familyName),t.maidenName&&(e.maidenName=t.maidenName),t.nickname&&(e.nickname=t.nickname),t.gender&&(e.gender=t.gender.toUpperCase()),t.lifeStatus&&(e.lifeStatus=t.lifeStatus.toUpperCase()),t.birthDate&&(e.birthDate=t.birthDate),t.birthPlace&&(e.birthPlace=t.birthPlace),t.deathDate&&(e.deathDate=t.deathDate),t.bio&&(e.bio=t.bio),t.linkedUser&&(e.linkedUserId=t.linkedUser),t.photoFile&&(e.photoFileId=t.photoFile),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(O,{input:e});k$1(`Person created: ${i$1.colCreatePerson.givenName}`),i(t,i$1.colCreatePerson);}catch(e){h$1(e);}}),r$1.command("update").description("Update a person").argument("<id>","Person ID").option("--given-name <name>","Given name").option("--family-name <name>","Family name").option("--maiden-name <name>","Maiden name").option("--nickname <name>","Nickname").option("--gender <g>","MALE|FEMALE|OTHER|UNKNOWN").option("--life-status <s>","LIVING|DECEASED|UNKNOWN").option("--birth-date <iso>","Birth date (ISO)").option("--birth-place <s>","Birth place").option("--death-date <iso>","Death date (ISO)").option("--bio <s>","Biography").option("--linked-user <id>","Linked user ID").option("--photo-file <id>","Photo file ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.givenName&&(i$1.givenName=e.givenName),e.familyName!==void 0&&(i$1.familyName=e.familyName),e.maidenName!==void 0&&(i$1.maidenName=e.maidenName),e.nickname!==void 0&&(i$1.nickname=e.nickname),e.gender&&(i$1.gender=e.gender.toUpperCase()),e.lifeStatus&&(i$1.lifeStatus=e.lifeStatus.toUpperCase()),e.birthDate&&(i$1.birthDate=e.birthDate),e.birthPlace!==void 0&&(i$1.birthPlace=e.birthPlace),e.deathDate&&(i$1.deathDate=e.deathDate),e.bio!==void 0&&(i$1.bio=e.bio),e.linkedUser&&(i$1.linkedUserId=e.linkedUser),e.photoFile&&(i$1.photoFileId=e.photoFile),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(S,{id:t,input:i$1});k$1("Person updated"),i(e,I.colUpdatePerson);}catch(i){h$1(i);}}),r$1.command("remove").description("Delete a person").argument("<id>","Person ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(v,{id:t});k$1(`Person deleted: ${i$1.colDeletePerson}`),i(e,{deleted:i$1.colDeletePerson});}catch(i){h$1(i);}});}function et(m){let r$1=m.command("relationships").description("Collabkin relationships between people");r$1.command("list").description("List relationships in a tree (optionally for one person)").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(k,{treeId:t.tree,personId:t.person});i(t,e.colListRelationships,{headers:["ID","From","To","Type","Certainty"],rows:e.colListRelationships.map(i=>[r(i.id,12),r(i.fromPersonId,12),r(i.toPersonId,12),i.type,i.certainty])});}catch(e){h$1(e);}}),r$1.command("create").description("Create a relationship between two people").requiredOption("--tree <id>","Family tree ID").requiredOption("--from <id>","From person ID").requiredOption("--to <id>","To person ID").requiredOption("--type <t>","PARENT|CHILD|SPOUSE|PARTNER|SIBLING|GRANDPARENT|GRANDCHILD|GUARDIAN").option("--certainty <c>","CONFIRMED|PROBABLE|DISPUTED|UNVERIFIED").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,fromPersonId:t.from,toPersonId:t.to,type:t.type.toUpperCase()};t.certainty&&(e.certainty=t.certainty.toUpperCase()),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes);let i$1=await b$1(w,{input:e});k$1(`Relationship created: ${i$1.colCreateRelationship.type}`),i(t,i$1.colCreateRelationship);}catch(e){h$1(e);}}),r$1.command("remove").description("Delete a relationship").argument("<id>","Relationship ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(N,{id:t});k$1(`Relationship deleted: ${i$1.colDeleteRelationship}`),i(e,{deleted:i$1.colDeleteRelationship});}catch(i){h$1(i);}});}function it(m){let r$1=m.command("events").description("Collabkin timeline events");r$1.command("timeline").description("Show the family timeline (dated events) for a tree").requiredOption("--tree <id>","Family tree ID").option("--person <id>","Filter by person ID").option("--type <t>","Filter by event type").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(P,{treeId:t.tree,personId:t.person,type:t.type?t.type.toUpperCase():void 0});i(t,e.colTimeline,{headers:["ID","Title","Type","Date","Place","Approx"],rows:e.colTimeline.map(i=>[r(i.id,12),i.title,i.type,q$1(i.date),i.place??"-",i.isApproximate?"yes":"no"])});}catch(e){h$1(e);}}),r$1.command("create").description("Create a timeline event").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Event title").requiredOption("--date <iso>","Event date (ISO)").option("--type <t>","BIRTH|DEATH|MARRIAGE|DIVORCE|EDUCATION|MILITARY|IMMIGRATION|RESIDENCE|MILESTONE|OTHER").option("--description <s>","Description").option("--place <s>","Place").option("--person <id>","Associated person ID").option("--approximate","Mark the date as approximate").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title,date:t.date};t.type&&(e.type=t.type.toUpperCase()),t.description&&(e.description=t.description),t.place&&(e.place=t.place),t.person&&(e.personId=t.person),t.approximate&&(e.isApproximate=!0);let i$1=await b$1(L,{input:e});k$1(`Event created: ${i$1.colCreateEvent.title}`),i(t,i$1.colCreateEvent);}catch(e){h$1(e);}}),r$1.command("remove").description("Delete a timeline event").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1($,{id:t});k$1(`Event deleted: ${i$1.colDeleteEvent}`),i(e,{deleted:i$1.colDeleteEvent});}catch(i){h$1(i);}});}function rt(m){let r$1=m.command("memories").description("Collabkin memories (media)");r$1.command("list").description("List memories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{treeId:t.tree,personId:t.person,kind:t.kind?t.kind.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.colListMemories.items,{headers:["ID","Title","Kind","Place","Taken","Visibility"],rows:e.colListMemories.items.map(i=>[r(i.id,12),i.title,i.kind,i.place??"-",q$1(i.takenAt),i.visibility])});}catch(e){h$1(e);}}),r$1.command("get").description("Get a memory by id").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(F,{id:t});if(!i$1.colMemory)throw new o(`Memory ${t} not found`);i(e,i$1.colMemory);}catch(i){h$1(i);}}),r$1.command("create").description("Create a memory").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title};t.kind&&(e.kind=t.kind.toUpperCase()),t.description&&(e.description=t.description),t.place&&(e.place=t.place),t.takenAt&&(e.takenAt=t.takenAt),t.person&&(e.personId=t.person),t.file&&(e.fileId=t.file),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(x,{input:e});k$1(`Memory created: ${i$1.colCreateMemory.title}`),i(t,i$1.colCreateMemory);}catch(e){h$1(e);}}),r$1.command("update").description("Update a memory").argument("<id>","Memory ID").option("--title <t>","Memory title").option("--kind <k>","PHOTO|VIDEO|AUDIO|DOCUMENT|ARTIFACT").option("--description <s>","Description").option("--place <s>","Place").option("--taken-at <iso>","Taken at (ISO)").option("--person <id>","Associated person ID").option("--file <id>","File ID (media blob)").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1={};if(e.title&&(i$1.title=e.title),e.kind&&(i$1.kind=e.kind.toUpperCase()),e.description!==void 0&&(i$1.description=e.description),e.place!==void 0&&(i$1.place=e.place),e.takenAt&&(i$1.takenAt=e.takenAt),e.person&&(i$1.personId=e.person),e.file&&(i$1.fileId=e.file),e.visibility&&(i$1.visibility=e.visibility.toUpperCase()),e.tags&&(i$1.tags=u(e.tags)),!Object.keys(i$1).length)throw new o("No updates specified");let I=await b$1(_,{id:t,input:i$1});k$1("Memory updated"),i(e,I.colUpdateMemory);}catch(i){h$1(i);}}),r$1.command("remove").description("Delete a memory").argument("<id>","Memory ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(H,{id:t});k$1(`Memory deleted: ${i$1.colDeleteMemory}`),i(e,{deleted:i$1.colDeleteMemory});}catch(i){h$1(i);}});}function ot(m){let r$1=m.command("stories").description("Collabkin stories");r$1.command("list").description("List stories").option("--tree <id>","Filter by family tree ID").option("--person <id>","Filter by person ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(G,{treeId:t.tree,personId:t.person,pagination:{limit:t.limit,offset:t.offset}});i(t,e.colListStories.items,{headers:["ID","Title","Format","Narrator","Visibility"],rows:e.colListStories.items.map(i=>[r(i.id,12),i.title,i.format,i.narrator??"-",i.visibility])});}catch(e){h$1(e);}}),r$1.command("get").description("Get a story by id").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(q,{id:t});if(!i$1.colStory)throw new o(`Story ${t} not found`);i(e,i$1.colStory);}catch(i){h$1(i);}}),r$1.command("create").description("Create a story").requiredOption("--tree <id>","Family tree ID").requiredOption("--title <t>","Story title").option("--body <s>","Story body").option("--story-format <f>","WRITTEN|AUDIO|VIDEO").option("--narrator <s>","Narrator").option("--person <id>","Associated person ID").option("--recording-file <id>","Recording file ID").option("--visibility <v>","TREE|STEWARDS|PRIVATE").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,title:t.title};t.body&&(e.body=t.body),t.storyFormat&&(e.format=t.storyFormat.toUpperCase()),t.narrator&&(e.narrator=t.narrator),t.person&&(e.personId=t.person),t.recordingFile&&(e.recordingFileId=t.recordingFile),t.visibility&&(e.visibility=t.visibility.toUpperCase()),t.tags&&(e.tags=u(t.tags));let i$1=await b$1(V,{input:e});k$1(`Story created: ${i$1.colCreateStory.title}`),i(t,i$1.colCreateStory);}catch(e){h$1(e);}}),r$1.command("remove").description("Delete a story").argument("<id>","Story ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(Y,{id:t});k$1(`Story deleted: ${i$1.colDeleteStory}`),i(e,{deleted:i$1.colDeleteStory});}catch(i){h$1(i);}});}function nt(m){let r$1=m.command("comments").description("Collabkin comments on memories & stories");r$1.command("list").description("List comments for a memory or a story").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.memory&&!t.story)throw new o("Specify --memory or --story");let e=await b$1(W,{memoryId:t.memory,storyId:t.story});i(t,e.colListComments,{headers:["ID","Body","Memory","Story"],rows:e.colListComments.map(i=>[r(i.id,12),r(i.body,40),i.memoryId?r(i.memoryId,12):"-",i.storyId?r(i.storyId,12):"-"])});}catch(e){h$1(e);}}),r$1.command("add").description("Add a comment to a memory or a story").requiredOption("--body <text>","Comment body").option("--memory <id>","Memory ID").option("--story <id>","Story ID").option("-f, --format <format>","Output format").action(async t=>{try{if(!t.memory&&!t.story)throw new o("Specify --memory or --story");let e={body:t.body};t.memory&&(e.memoryId=t.memory),t.story&&(e.storyId=t.story);let i$1=await b$1(B,{input:e});k$1("Comment added"),i(t,i$1.colAddComment);}catch(e){h$1(e);}}),r$1.command("remove").description("Delete a comment").argument("<id>","Comment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(K,{id:t});k$1(`Comment deleted: ${i$1.colDeleteComment}`),i(e,{deleted:i$1.colDeleteComment});}catch(i){h$1(i);}});}function at(m){let r$1=m.command("memberships").description("Collabkin family-tree memberships");r$1.command("list").description("List memberships for a tree").requiredOption("--tree <id>","Family tree ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(j,{treeId:t.tree});i(t,e.colListMemberships,{headers:["ID","Member","Person","Role","Status"],rows:e.colListMemberships.map(i=>[r(i.id,12),r(i.memberUserId,12),i.personId?r(i.personId,12):"-",i.role,i.status])});}catch(e){h$1(e);}}),r$1.command("invite").description("Invite a member to a family tree").requiredOption("--tree <id>","Family tree ID").requiredOption("--member <id>","Member user ID").option("--person <id>","Linked person ID").option("--role <r>","OWNER|STEWARD|CONTRIBUTOR|VIEWER").option("-f, --format <format>","Output format").action(async t=>{try{let e={treeId:t.tree,memberUserId:t.member};t.person&&(e.personId=t.person),t.role&&(e.role=t.role.toUpperCase());let i$1=await b$1(z,{input:e});k$1(`Member invited: ${i$1.colInviteMember.memberUserId}`),i(t,i$1.colInviteMember);}catch(e){h$1(e);}}),r$1.command("accept").description("Accept a membership invitation").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(J,{id:t});k$1(`Membership accepted: ${i$1.colAcceptMembership.status}`),i(e,i$1.colAcceptMembership);}catch(i){h$1(i);}}),r$1.command("remove").description("Remove a member from a family tree").argument("<id>","Membership ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let i$1=await b$1(Q,{id:t});k$1(`Member removed: ${i$1.colRemoveMember}`),i(e,{removed:i$1.colRemoveMember});}catch(i){h$1(i);}});}function st(m){m.command("health").description("Collabkin service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await d(X);k$1(t.colHealth),i(r,{health:t.colHealth});}catch(t){h$1(t);}});}var mt={id:"collabkin",version:"1.0.0",displayName:"Collabkin",dependsOn:["auth","workspaces"],register(m,r){a(r);let t=m.command("collabkin").description("Collabkin collaborative family history");Z(t),tt(t),et(t),it(t),rt(t),ot(t),nt(t),at(t),st(t);}},Qt=mt;export{Qt as default};
@@ -6,7 +6,7 @@
6
6
  avatar { id }
7
7
  }
8
8
  }
9
- `,k=`
9
+ `,x=`
10
10
  query ComradecircleListCircles(
11
11
  $pagination: PaginationInput
12
12
  $status: ComCircleStatus
@@ -19,13 +19,13 @@
19
19
  pageInfo { cursor hasMore }
20
20
  }
21
21
  }
22
- `,O=`
22
+ `,k=`
23
23
  mutation ComradecircleCreateCircle($input: ComCreateCircleInput!) {
24
24
  comCreateCircle(input: $input) {
25
25
  id name slug description topic status visibility tags memberCount createdAt
26
26
  }
27
27
  }
28
- `,x=`
28
+ `,O=`
29
29
  mutation ComradecircleUpdateCircle($id: ID!, $input: ComUpdateCircleInput!) {
30
30
  comUpdateCircle(id: $id, input: $input) {
31
31
  id name slug description topic status visibility tags updatedAt
@@ -38,8 +38,11 @@
38
38
  `,L=`
39
39
  query ComradecircleListChannels($circleId: ID!) {
40
40
  comListChannels(circleId: $circleId) {
41
- id circleId name slug description type visibility position isArchived
42
- createdAt updatedAt workspaceId
41
+ items {
42
+ id circleId name slug description type visibility position isArchived createdAt
43
+ updatedAt workspaceId
44
+ }
45
+ pageInfo { cursor hasMore }
43
46
  }
44
47
  }
45
48
  `,R=`
@@ -77,13 +80,13 @@
77
80
  mutation ComradecircleLeaveCircle($circleId: ID!) {
78
81
  comLeaveCircle(circleId: $circleId)
79
82
  }
80
- `,U=`
83
+ `,M=`
81
84
  mutation ComradecircleSetMemberRole($membershipId: ID!, $role: ComMemberRole!) {
82
85
  comSetMemberRole(membershipId: $membershipId, role: $role) {
83
86
  id circleId memberId role status updatedAt
84
87
  }
85
88
  }
86
- `,M=`
89
+ `,U=`
87
90
  query ComradecirclePost($id: ID!) {
88
91
  comPost(id: $id) {
89
92
  id channelId authorId body status tags attachmentFileIds isPinned
@@ -129,7 +132,8 @@
129
132
  `,W=`
130
133
  query ComradecircleListComments($postId: ID!) {
131
134
  comListComments(postId: $postId) {
132
- id postId parentId authorId body isHidden createdAt updatedAt workspaceId
135
+ items { id postId parentId authorId body isHidden createdAt updatedAt workspaceId }
136
+ pageInfo { cursor hasMore }
133
137
  }
134
138
  }
135
139
  `,j=`
@@ -189,23 +193,26 @@
189
193
  `,Q=`
190
194
  query ComradecirclePoll($id: ID!) {
191
195
  comPoll(id: $id) {
192
- id circleId question status isAnonymous allowMultiple closesAt
193
- createdAt updatedAt workspaceId
194
- options { id pollId label position voteCount }
196
+ id circleId question status isAnonymous allowMultiple closesAt createdAt updatedAt
197
+ workspaceId
198
+ options { items { id pollId label position voteCount } pageInfo { cursor hasMore } }
195
199
  }
196
200
  }
197
201
  `,X=`
198
202
  query ComradecircleListPolls($circleId: ID!, $status: ComPollStatus) {
199
203
  comListPolls(circleId: $circleId, status: $status) {
200
- id circleId question status isAnonymous allowMultiple closesAt createdAt
201
- options { id label position voteCount }
204
+ items {
205
+ id circleId question status isAnonymous allowMultiple closesAt createdAt
206
+ options { items { id label position voteCount } pageInfo { cursor hasMore } }
207
+ }
208
+ pageInfo { cursor hasMore }
202
209
  }
203
210
  }
204
211
  `,Z=`
205
212
  mutation ComradecircleCreatePoll($input: ComCreatePollInput!) {
206
213
  comCreatePoll(input: $input) {
207
214
  id circleId question status isAnonymous allowMultiple closesAt createdAt
208
- options { id label position voteCount }
215
+ options { items { id label position voteCount } pageInfo { cursor hasMore } }
209
216
  }
210
217
  }
211
218
  `,tt=`
@@ -255,7 +262,8 @@
255
262
  `,st=`
256
263
  query ComradecircleMyFollows($targetType: ComFollowTargetType) {
257
264
  comMyFollows(targetType: $targetType) {
258
- id followerId targetId targetType muted createdAt updatedAt workspaceId
265
+ items { id followerId targetId targetType muted createdAt updatedAt workspaceId }
266
+ pageInfo { cursor hasMore }
259
267
  }
260
268
  }
261
269
  `,at=`
@@ -278,4 +286,4 @@
278
286
  query ComradecircleHealth {
279
287
  comHealth
280
288
  }
281
- `;function u(s){let n=Number.parseInt(s,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${s}"`);return n}function m(s){return s.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function lt(s){let n=s.command("circles").description("Comradecircle circles");n.command("list").description("List circles").option("--status <s>","ACTIVE|ARCHIVED|SUSPENDED").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(k,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,visibility:t.visibility?t.visibility.toUpperCase():void 0});i(t,e.comListCircles.items,{headers:["ID","Name","Slug","Status","Visibility","Members"],rows:e.comListCircles.items.map(o=>[d(o.id,12),o.name,o.slug,o.status,o.visibility,String(o.memberCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get a circle by id").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(A,{id:t});if(!o.comCircle)throw new p(`Circle ${t} not found`);i(e,o.comCircle);}catch(o){r(o);}}),n.command("create").description("Create a circle").requiredOption("--name <name>","Circle name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET","PUBLIC").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.description&&(e.description=t.description),t.topic&&(e.topic=t.topic),t.tags&&(e.tags=m(t.tags)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await a(O,{input:e});c(`Circle created: ${o.comCreateCircle.name}`),i(t,o.comCreateCircle);}catch(e){r(e);}}),n.command("update").description("Update a circle").argument("<id>","Circle ID").option("--name <name>","Circle name").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.topic!==void 0&&(o.topic=e.topic),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.tags&&(o.tags=m(e.tags)),e.avatarFileId&&(o.avatarFileId=e.avatarFileId),!Object.keys(o).length)throw new p("No updates specified");let f=await a(x,{id:t,input:o});c("Circle updated"),i(e,f.comUpdateCircle);}catch(o){r(o);}}),n.command("archive").description("Archive a circle").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(P,{id:t});c(`Circle archived: ${o.comArchiveCircle}`),i(e,{archived:o.comArchiveCircle});}catch(o){r(o);}});}function ut(s){let n=s.command("channels").description("Comradecircle channels");n.command("list").description("List channels in a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(L,{circleId:t.circle});i(t,e.comListChannels,{headers:["ID","Name","Slug","Type","Visibility","Position"],rows:e.comListChannels.map(o=>[d(o.id,12),o.name,o.slug,o.type,o.visibility,String(o.position??0)])});}catch(e){r(e);}}),n.command("create").description("Create a channel").requiredOption("--circle <id>","Circle ID").requiredOption("--name <name>","Channel name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT","TEXT").option("--visibility <v>","CIRCLE|PRIVATE","CIRCLE").option("--position <n>","Position",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,name:t.name,slug:t.slug,type:(t.type??"TEXT").toUpperCase(),visibility:(t.visibility??"CIRCLE").toUpperCase()};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let o=await a(R,{input:e});c(`Channel created: ${o.comCreateChannel.name}`),i(t,o.comCreateChannel);}catch(e){r(e);}}),n.command("update").description("Update a channel").argument("<id>","Channel ID").option("--name <name>","Channel name").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT").option("--visibility <v>","CIRCLE|PRIVATE").option("--position <n>","Position",u).option("--archived <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.type&&(o.type=e.type.toUpperCase()),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.position!==void 0&&(o.position=e.position),e.archived!==void 0&&(o.isArchived=e.archived),!Object.keys(o).length)throw new p("No updates specified");let f=await a(S,{id:t,input:o});c("Channel updated"),i(e,f.comUpdateChannel);}catch(o){r(o);}});}function mt(s){let n=s.command("memberships").description("Comradecircle circle memberships");n.command("list").description("List memberships").option("--circle <id>","Filter by circle ID").option("--status <s>","ACTIVE|PENDING|LEFT|BANNED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListMemberships.items,{headers:["ID","Circle","Member","Role","Status"],rows:e.comListMemberships.items.map(o=>[d(o.id,12),d(o.circleId,12),d(o.memberId,12),o.role,o.status])});}catch(e){r(e);}}),n.command("join").description("Join a circle as the calling member").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(D,{circleId:t.circle});c(`Joined circle ${e.comJoinCircle.circleId}`),i(t,e.comJoinCircle);}catch(e){r(e);}}),n.command("leave").description("Leave a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(N,{circleId:t.circle});c(`Left circle: ${e.comLeaveCircle}`),i(t,{left:e.comLeaveCircle});}catch(e){r(e);}}),n.command("set-role").description("Set a member role").argument("<membershipId>","Membership ID").requiredOption("--role <r>","OWNER|ADMIN|MODERATOR|MEMBER").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(U,{membershipId:t,role:e.role.toUpperCase()});c(`Role set to ${o.comSetMemberRole.role}`),i(e,o.comSetMemberRole);}catch(o){r(o);}});}function ft(s){let n=s.command("posts").description("Comradecircle posts");n.command("list").description("List posts").option("--channel <id>","Filter by channel ID").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{channelId:t.channel,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPosts.items,{headers:["ID","Channel","Author","Status","Pinned","Comments","Reactions"],rows:e.comListPosts.items.map(o=>[d(o.id,12),d(o.channelId,12),d(o.authorId,12),o.status,o.isPinned?"yes":"no",String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get a post by id").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(M,{id:t});if(!o.comPost)throw new p(`Post ${t} not found`);i(e,o.comPost);}catch(o){r(o);}}),n.command("create").description("Create a post").requiredOption("--channel <id>","Channel ID").requiredOption("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED","PUBLISHED").option("--tags <csv>","Comma-separated tags").option("--attachments <csv>","Comma-separated attachment file IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,body:t.body,status:(t.status??"PUBLISHED").toUpperCase()};t.tags&&(e.tags=m(t.tags)),t.attachments&&(e.attachmentFileIds=m(t.attachments));let o=await a(q,{input:e});c(`Post created: ${o.comCreatePost.id}`),i(t,o.comCreatePost);}catch(e){r(e);}}),n.command("update").description("Update a post").argument("<id>","Post ID").option("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--pinned <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.body&&(o.body=e.body),e.status&&(o.status=e.status.toUpperCase()),e.pinned!==void 0&&(o.isPinned=e.pinned),e.tags&&(o.tags=m(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let f=await a(F,{id:t,input:o});c("Post updated"),i(e,f.comUpdatePost);}catch(o){r(o);}}),n.command("remove").description("Remove a post").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(V,{id:t});c(`Post removed: ${o.comRemovePost}`),i(e,{removed:o.comRemovePost});}catch(o){r(o);}}),n.command("react").description("Toggle a reaction on a post").argument("<postId>","Post ID").requiredOption("--type <t>","LIKE|LOVE|CELEBRATE|INSIGHTFUL|SUPPORT|LAUGH").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(H,{postId:t,type:e.type.toUpperCase()});c(`Reaction toggled on post ${o.comReactToPost.id}`),i(e,o.comReactToPost);}catch(o){r(o);}});}function gt(s){let n=s.command("comments").description("Comradecircle post comments");n.command("list").description("List comments on a post").requiredOption("--post <id>","Post ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{postId:t.post});i(t,e.comListComments,{headers:["ID","Author","Body","Parent","Hidden"],rows:e.comListComments.map(o=>[d(o.id,12),d(o.authorId,12),d(o.body,40),o.parentId?d(o.parentId,12):"-",o.isHidden?"yes":"no"])});}catch(e){r(e);}}),n.command("add").description("Add a comment to a post").requiredOption("--post <id>","Post ID").requiredOption("--body <text>","Comment body").option("--parent <id>","Parent comment ID (for replies)").option("-f, --format <format>","Output format").action(async t=>{try{let e={postId:t.post,body:t.body};t.parent&&(e.parentId=t.parent);let o=await a(j,{input:e});c(`Comment added: ${o.comAddComment.id}`),i(t,o.comAddComment);}catch(e){r(e);}});}function Ct(s){let n=s.command("events").description("Comradecircle events");n.command("list").description("List events").option("--circle <id>","Filter by circle ID").option("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListEvents.items,{headers:["ID","Title","Mode","Status","Starts","RSVPs"],rows:e.comListEvents.items.map(o=>[d(o.id,12),o.title,o.mode,o.status,E(o.startsAt),String(o.rsvpCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get an event by id").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(G,{id:t});if(!o.comEvent)throw new p(`Event ${t} not found`);i(e,o.comEvent);}catch(o){r(o);}}),n.command("create").description("Create an event").requiredOption("--circle <id>","Circle ID").requiredOption("--title <t>","Event title").requiredOption("--starts-at <iso>","Start time (ISO date)").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID","ONLINE").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",u).option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,title:t.title,startsAt:t.startsAt,mode:(t.mode??"ONLINE").toUpperCase()};t.description&&(e.description=t.description),t.location&&(e.location=t.location),t.joinUrl&&(e.joinUrl=t.joinUrl),t.capacity!==void 0&&(e.capacity=t.capacity),t.endsAt&&(e.endsAt=t.endsAt),t.tags&&(e.tags=m(t.tags));let o=await a(J,{input:e});c(`Event created: ${o.comCreateEvent.title}`),i(t,o.comCreateEvent);}catch(e){r(e);}}),n.command("update").description("Update an event").argument("<id>","Event ID").option("--title <t>","Event title").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",u).option("--starts-at <iso>","Start time (ISO date)").option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.title&&(o.title=e.title),e.description!==void 0&&(o.description=e.description),e.mode&&(o.mode=e.mode.toUpperCase()),e.location!==void 0&&(o.location=e.location),e.joinUrl!==void 0&&(o.joinUrl=e.joinUrl),e.capacity!==void 0&&(o.capacity=e.capacity),e.startsAt&&(o.startsAt=e.startsAt),e.endsAt&&(o.endsAt=e.endsAt),e.tags&&(o.tags=m(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let f=await a(z,{id:t,input:o});c("Event updated"),i(e,f.comUpdateEvent);}catch(o){r(o);}}),n.command("transition").description("Advance an event through its lifecycle").argument("<id>","Event ID").requiredOption("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(Y,{id:t,status:e.status.toUpperCase()});c(`Event transitioned to ${o.comTransitionEvent.status}`),i(e,o.comTransitionEvent);}catch(o){r(o);}}),n.command("rsvp").description("RSVP to an event as the calling member").argument("<eventId>","Event ID").requiredOption("--status <s>","GOING|INTERESTED|NOT_GOING|WAITLISTED").option("--note <s>","RSVP note").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(K,{eventId:t,status:e.status.toUpperCase(),note:e.note});c(`RSVP saved: ${o.comRsvpEvent.status}`),i(e,o.comRsvpEvent);}catch(o){r(o);}});}function It(s){let n=s.command("polls").description("Comradecircle polls");n.command("list").description("List polls in a circle").requiredOption("--circle <id>","Circle ID").option("--status <s>","OPEN|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{circleId:t.circle,status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPolls,{headers:["ID","Question","Status","Anonymous","Multiple"],rows:e.comListPolls.map(o=>[d(o.id,12),d(o.question,40),o.status,o.isAnonymous?"yes":"no",o.allowMultiple?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a poll by id").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(Q,{id:t});if(!o.comPoll)throw new p(`Poll ${t} not found`);i(e,o.comPoll);}catch(o){r(o);}}),n.command("create").description("Create a poll").requiredOption("--circle <id>","Circle ID").requiredOption("--question <q>","Poll question").requiredOption("--options <csv>","Comma-separated option labels").option("--allow-multiple","Allow multiple selections").option("--anonymous","Anonymous voting").option("--closes-at <iso>","Close time (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e=m(t.options);if(e.length===0)throw new p("--options must contain at least one option");let o={circleId:t.circle,question:t.question,options:e,allowMultiple:t.allowMultiple??!1,isAnonymous:t.anonymous??!1};t.closesAt&&(o.closesAt=t.closesAt);let f=await a(Z,{input:o});c(`Poll created: ${f.comCreatePoll.id}`),i(t,f.comCreatePoll);}catch(e){r(e);}}),n.command("close").description("Close a poll").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(tt,{id:t});c(`Poll closed: ${o.comClosePoll.status}`),i(e,o.comClosePoll);}catch(o){r(o);}}),n.command("vote").description("Cast a vote for a poll option").argument("<pollId>","Poll ID").requiredOption("--option <id>","Option ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(et,{pollId:t,optionId:e.option});c(`Voted: ${o.comVotePoll.label} (${o.comVotePoll.voteCount})`),i(e,o.comVotePoll);}catch(o){r(o);}});}function ht(s){let n=s.command("profiles").description("Comradecircle member profiles");n.command("list").description("List member profiles").option("--discoverable <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(nt,{discoverable:t.discoverable,pagination:{limit:t.limit,offset:t.offset}});i(t,e.comListProfiles.items,{headers:["ID","Member","Display Name","Headline","Presence","Discoverable"],rows:e.comListProfiles.items.map(o=>[d(o.id,12),d(o.memberId,12),o.displayName,d(o.headline??"-",30),o.presence??"-",o.discoverable?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a member profile by member id").argument("<memberId>","Member ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(ot,{memberId:t});if(!o.comProfile)throw new p(`Profile for member ${t} not found`);i(e,o.comProfile);}catch(o){r(o);}}),n.command("upsert").description("Create or update the calling member's profile").requiredOption("--display-name <name>","Display name").option("--headline <s>","Headline").option("--bio <s>","Bio").option("--presence <p>","ONLINE|AWAY|BUSY|OFFLINE").option("--discoverable <bool>","true|false",t=>t==="true").option("--interests <csv>","Comma-separated interests").option("--skills <csv>","Comma-separated skills").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={displayName:t.displayName};t.headline&&(e.headline=t.headline),t.bio&&(e.bio=t.bio),t.presence&&(e.presence=t.presence.toUpperCase()),t.discoverable!==void 0&&(e.discoverable=t.discoverable),t.interests&&(e.interests=m(t.interests)),t.skills&&(e.skills=m(t.skills)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await a(rt,{input:e});c(`Profile saved: ${o.comUpsertProfile.displayName}`),i(t,o.comUpsertProfile);}catch(e){r(e);}});}function yt(s){let n=s.command("feed").description("Comradecircle home feed & follows");n.command("home").description("The calling member's unified home feed").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{pagination:{limit:t.limit,offset:t.offset}});i(t,e.comMyFeed.items,{headers:["ID","Channel","Author","Status","Comments","Reactions"],rows:e.comMyFeed.items.map(o=>[d(o.id,12),d(o.channelId,12),d(o.authorId,12),o.status,String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){r(e);}}),n.command("follows").description("List the calling member's follows").option("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(st,{targetType:t.targetType?t.targetType.toUpperCase():void 0});i(t,e.comMyFollows,{headers:["ID","Target","Target Type","Muted"],rows:e.comMyFollows.map(o=>[d(o.id,12),d(o.targetId,12),o.targetType,o.muted?"yes":"no"])});}catch(e){r(e);}}),n.command("follow").description("Follow a target (circle, channel, or member)").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await a(at,{input:e});c(`Following ${o.comFollow.targetType} ${o.comFollow.targetId}`),i(t,o.comFollow);}catch(e){r(e);}}),n.command("unfollow").description("Unfollow a target").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await a(ct,{input:e});c(`Unfollowed: ${o.comUnfollow}`),i(t,{unfollowed:o.comUnfollow});}catch(e){r(e);}}),n.command("mute").description("Mute or unmute a follow").argument("<id>","Follow ID").requiredOption("--muted <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(dt,{id:t,muted:e.muted});c(`Follow ${o.comMuteFollow.muted?"muted":"unmuted"}`),i(e,o.comMuteFollow);}catch(o){r(o);}});}function wt(s){s.command("health").description("Comradecircle service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await w(pt);c(t.comHealth),i(n,{health:t.comHealth});}catch(t){r(t);}});}var $t={id:"comradecircle",version:"1.0.0",displayName:"Comradecircle",dependsOn:["auth","workspaces"],register(s,n){T(n);let t=s.command("comradecircle").description("Comradecircle community circles");lt(t),ut(t),mt(t),ft(t),gt(t),Ct(t),It(t),ht(t),yt(t),wt(t);}},Lo=$t;module.exports=Lo;
289
+ `;function u(s){let n=Number.parseInt(s,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${s}"`);return n}function m(s){return s.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function lt(s){let n=s.command("circles").description("Comradecircle circles");n.command("list").description("List circles").option("--status <s>","ACTIVE|ARCHIVED|SUSPENDED").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(x,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,visibility:t.visibility?t.visibility.toUpperCase():void 0});i(t,e.comListCircles.items,{headers:["ID","Name","Slug","Status","Visibility","Members"],rows:e.comListCircles.items.map(o=>[d(o.id,12),o.name,o.slug,o.status,o.visibility,String(o.memberCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get a circle by id").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(A,{id:t});if(!o.comCircle)throw new p(`Circle ${t} not found`);i(e,o.comCircle);}catch(o){r(o);}}),n.command("create").description("Create a circle").requiredOption("--name <name>","Circle name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET","PUBLIC").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.description&&(e.description=t.description),t.topic&&(e.topic=t.topic),t.tags&&(e.tags=m(t.tags)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await a(k,{input:e});c(`Circle created: ${o.comCreateCircle.name}`),i(t,o.comCreateCircle);}catch(e){r(e);}}),n.command("update").description("Update a circle").argument("<id>","Circle ID").option("--name <name>","Circle name").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.topic!==void 0&&(o.topic=e.topic),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.tags&&(o.tags=m(e.tags)),e.avatarFileId&&(o.avatarFileId=e.avatarFileId),!Object.keys(o).length)throw new p("No updates specified");let f=await a(O,{id:t,input:o});c("Circle updated"),i(e,f.comUpdateCircle);}catch(o){r(o);}}),n.command("archive").description("Archive a circle").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(P,{id:t});c(`Circle archived: ${o.comArchiveCircle}`),i(e,{archived:o.comArchiveCircle});}catch(o){r(o);}});}function ut(s){let n=s.command("channels").description("Comradecircle channels");n.command("list").description("List channels in a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(L,{circleId:t.circle});i(t,e.comListChannels.items,{headers:["ID","Name","Slug","Type","Visibility","Position"],rows:e.comListChannels.items.map(o=>[d(o.id,12),o.name,o.slug,o.type,o.visibility,String(o.position??0)])});}catch(e){r(e);}}),n.command("create").description("Create a channel").requiredOption("--circle <id>","Circle ID").requiredOption("--name <name>","Channel name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT","TEXT").option("--visibility <v>","CIRCLE|PRIVATE","CIRCLE").option("--position <n>","Position",u).option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,name:t.name,slug:t.slug,type:(t.type??"TEXT").toUpperCase(),visibility:(t.visibility??"CIRCLE").toUpperCase()};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let o=await a(R,{input:e});c(`Channel created: ${o.comCreateChannel.name}`),i(t,o.comCreateChannel);}catch(e){r(e);}}),n.command("update").description("Update a channel").argument("<id>","Channel ID").option("--name <name>","Channel name").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT").option("--visibility <v>","CIRCLE|PRIVATE").option("--position <n>","Position",u).option("--archived <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.type&&(o.type=e.type.toUpperCase()),e.visibility&&(o.visibility=e.visibility.toUpperCase()),e.position!==void 0&&(o.position=e.position),e.archived!==void 0&&(o.isArchived=e.archived),!Object.keys(o).length)throw new p("No updates specified");let f=await a(S,{id:t,input:o});c("Channel updated"),i(e,f.comUpdateChannel);}catch(o){r(o);}});}function mt(s){let n=s.command("memberships").description("Comradecircle circle memberships");n.command("list").description("List memberships").option("--circle <id>","Filter by circle ID").option("--status <s>","ACTIVE|PENDING|LEFT|BANNED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListMemberships.items,{headers:["ID","Circle","Member","Role","Status"],rows:e.comListMemberships.items.map(o=>[d(o.id,12),d(o.circleId,12),d(o.memberId,12),o.role,o.status])});}catch(e){r(e);}}),n.command("join").description("Join a circle as the calling member").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(D,{circleId:t.circle});c(`Joined circle ${e.comJoinCircle.circleId}`),i(t,e.comJoinCircle);}catch(e){r(e);}}),n.command("leave").description("Leave a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(N,{circleId:t.circle});c(`Left circle: ${e.comLeaveCircle}`),i(t,{left:e.comLeaveCircle});}catch(e){r(e);}}),n.command("set-role").description("Set a member role").argument("<membershipId>","Membership ID").requiredOption("--role <r>","OWNER|ADMIN|MODERATOR|MEMBER").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(M,{membershipId:t,role:e.role.toUpperCase()});c(`Role set to ${o.comSetMemberRole.role}`),i(e,o.comSetMemberRole);}catch(o){r(o);}});}function ft(s){let n=s.command("posts").description("Comradecircle posts");n.command("list").description("List posts").option("--channel <id>","Filter by channel ID").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(_,{channelId:t.channel,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPosts.items,{headers:["ID","Channel","Author","Status","Pinned","Comments","Reactions"],rows:e.comListPosts.items.map(o=>[d(o.id,12),d(o.channelId,12),d(o.authorId,12),o.status,o.isPinned?"yes":"no",String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get a post by id").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(U,{id:t});if(!o.comPost)throw new p(`Post ${t} not found`);i(e,o.comPost);}catch(o){r(o);}}),n.command("create").description("Create a post").requiredOption("--channel <id>","Channel ID").requiredOption("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED","PUBLISHED").option("--tags <csv>","Comma-separated tags").option("--attachments <csv>","Comma-separated attachment file IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,body:t.body,status:(t.status??"PUBLISHED").toUpperCase()};t.tags&&(e.tags=m(t.tags)),t.attachments&&(e.attachmentFileIds=m(t.attachments));let o=await a(q,{input:e});c(`Post created: ${o.comCreatePost.id}`),i(t,o.comCreatePost);}catch(e){r(e);}}),n.command("update").description("Update a post").argument("<id>","Post ID").option("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--pinned <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.body&&(o.body=e.body),e.status&&(o.status=e.status.toUpperCase()),e.pinned!==void 0&&(o.isPinned=e.pinned),e.tags&&(o.tags=m(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let f=await a(F,{id:t,input:o});c("Post updated"),i(e,f.comUpdatePost);}catch(o){r(o);}}),n.command("remove").description("Remove a post").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(V,{id:t});c(`Post removed: ${o.comRemovePost}`),i(e,{removed:o.comRemovePost});}catch(o){r(o);}}),n.command("react").description("Toggle a reaction on a post").argument("<postId>","Post ID").requiredOption("--type <t>","LIKE|LOVE|CELEBRATE|INSIGHTFUL|SUPPORT|LAUGH").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(H,{postId:t,type:e.type.toUpperCase()});c(`Reaction toggled on post ${o.comReactToPost.id}`),i(e,o.comReactToPost);}catch(o){r(o);}});}function gt(s){let n=s.command("comments").description("Comradecircle post comments");n.command("list").description("List comments on a post").requiredOption("--post <id>","Post ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(W,{postId:t.post});i(t,e.comListComments.items,{headers:["ID","Author","Body","Parent","Hidden"],rows:e.comListComments.items.map(o=>[d(o.id,12),d(o.authorId,12),d(o.body,40),o.parentId?d(o.parentId,12):"-",o.isHidden?"yes":"no"])});}catch(e){r(e);}}),n.command("add").description("Add a comment to a post").requiredOption("--post <id>","Post ID").requiredOption("--body <text>","Comment body").option("--parent <id>","Parent comment ID (for replies)").option("-f, --format <format>","Output format").action(async t=>{try{let e={postId:t.post,body:t.body};t.parent&&(e.parentId=t.parent);let o=await a(j,{input:e});c(`Comment added: ${o.comAddComment.id}`),i(t,o.comAddComment);}catch(e){r(e);}});}function Ct(s){let n=s.command("events").description("Comradecircle events");n.command("list").description("List events").option("--circle <id>","Filter by circle ID").option("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListEvents.items,{headers:["ID","Title","Mode","Status","Starts","RSVPs"],rows:e.comListEvents.items.map(o=>[d(o.id,12),o.title,o.mode,o.status,E(o.startsAt),String(o.rsvpCount??0)])});}catch(e){r(e);}}),n.command("get").description("Get an event by id").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(G,{id:t});if(!o.comEvent)throw new p(`Event ${t} not found`);i(e,o.comEvent);}catch(o){r(o);}}),n.command("create").description("Create an event").requiredOption("--circle <id>","Circle ID").requiredOption("--title <t>","Event title").requiredOption("--starts-at <iso>","Start time (ISO date)").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID","ONLINE").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",u).option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,title:t.title,startsAt:t.startsAt,mode:(t.mode??"ONLINE").toUpperCase()};t.description&&(e.description=t.description),t.location&&(e.location=t.location),t.joinUrl&&(e.joinUrl=t.joinUrl),t.capacity!==void 0&&(e.capacity=t.capacity),t.endsAt&&(e.endsAt=t.endsAt),t.tags&&(e.tags=m(t.tags));let o=await a(J,{input:e});c(`Event created: ${o.comCreateEvent.title}`),i(t,o.comCreateEvent);}catch(e){r(e);}}),n.command("update").description("Update an event").argument("<id>","Event ID").option("--title <t>","Event title").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",u).option("--starts-at <iso>","Start time (ISO date)").option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.title&&(o.title=e.title),e.description!==void 0&&(o.description=e.description),e.mode&&(o.mode=e.mode.toUpperCase()),e.location!==void 0&&(o.location=e.location),e.joinUrl!==void 0&&(o.joinUrl=e.joinUrl),e.capacity!==void 0&&(o.capacity=e.capacity),e.startsAt&&(o.startsAt=e.startsAt),e.endsAt&&(o.endsAt=e.endsAt),e.tags&&(o.tags=m(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let f=await a(z,{id:t,input:o});c("Event updated"),i(e,f.comUpdateEvent);}catch(o){r(o);}}),n.command("transition").description("Advance an event through its lifecycle").argument("<id>","Event ID").requiredOption("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(Y,{id:t,status:e.status.toUpperCase()});c(`Event transitioned to ${o.comTransitionEvent.status}`),i(e,o.comTransitionEvent);}catch(o){r(o);}}),n.command("rsvp").description("RSVP to an event as the calling member").argument("<eventId>","Event ID").requiredOption("--status <s>","GOING|INTERESTED|NOT_GOING|WAITLISTED").option("--note <s>","RSVP note").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(K,{eventId:t,status:e.status.toUpperCase(),note:e.note});c(`RSVP saved: ${o.comRsvpEvent.status}`),i(e,o.comRsvpEvent);}catch(o){r(o);}});}function It(s){let n=s.command("polls").description("Comradecircle polls");n.command("list").description("List polls in a circle").requiredOption("--circle <id>","Circle ID").option("--status <s>","OPEN|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(X,{circleId:t.circle,status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPolls.items,{headers:["ID","Question","Status","Anonymous","Multiple"],rows:e.comListPolls.items.map(o=>[d(o.id,12),d(o.question,40),o.status,o.isAnonymous?"yes":"no",o.allowMultiple?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a poll by id").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(Q,{id:t});if(!o.comPoll)throw new p(`Poll ${t} not found`);i(e,o.comPoll);}catch(o){r(o);}}),n.command("create").description("Create a poll").requiredOption("--circle <id>","Circle ID").requiredOption("--question <q>","Poll question").requiredOption("--options <csv>","Comma-separated option labels").option("--allow-multiple","Allow multiple selections").option("--anonymous","Anonymous voting").option("--closes-at <iso>","Close time (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e=m(t.options);if(e.length===0)throw new p("--options must contain at least one option");let o={circleId:t.circle,question:t.question,options:e,allowMultiple:t.allowMultiple??!1,isAnonymous:t.anonymous??!1};t.closesAt&&(o.closesAt=t.closesAt);let f=await a(Z,{input:o});c(`Poll created: ${f.comCreatePoll.id}`),i(t,f.comCreatePoll);}catch(e){r(e);}}),n.command("close").description("Close a poll").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(tt,{id:t});c(`Poll closed: ${o.comClosePoll.status}`),i(e,o.comClosePoll);}catch(o){r(o);}}),n.command("vote").description("Cast a vote for a poll option").argument("<pollId>","Poll ID").requiredOption("--option <id>","Option ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(et,{pollId:t,optionId:e.option});c(`Voted: ${o.comVotePoll.label} (${o.comVotePoll.voteCount})`),i(e,o.comVotePoll);}catch(o){r(o);}});}function ht(s){let n=s.command("profiles").description("Comradecircle member profiles");n.command("list").description("List member profiles").option("--discoverable <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(nt,{discoverable:t.discoverable,pagination:{limit:t.limit,offset:t.offset}});i(t,e.comListProfiles.items,{headers:["ID","Member","Display Name","Headline","Presence","Discoverable"],rows:e.comListProfiles.items.map(o=>[d(o.id,12),d(o.memberId,12),o.displayName,d(o.headline??"-",30),o.presence??"-",o.discoverable?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a member profile by member id").argument("<memberId>","Member ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(ot,{memberId:t});if(!o.comProfile)throw new p(`Profile for member ${t} not found`);i(e,o.comProfile);}catch(o){r(o);}}),n.command("upsert").description("Create or update the calling member's profile").requiredOption("--display-name <name>","Display name").option("--headline <s>","Headline").option("--bio <s>","Bio").option("--presence <p>","ONLINE|AWAY|BUSY|OFFLINE").option("--discoverable <bool>","true|false",t=>t==="true").option("--interests <csv>","Comma-separated interests").option("--skills <csv>","Comma-separated skills").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={displayName:t.displayName};t.headline&&(e.headline=t.headline),t.bio&&(e.bio=t.bio),t.presence&&(e.presence=t.presence.toUpperCase()),t.discoverable!==void 0&&(e.discoverable=t.discoverable),t.interests&&(e.interests=m(t.interests)),t.skills&&(e.skills=m(t.skills)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await a(rt,{input:e});c(`Profile saved: ${o.comUpsertProfile.displayName}`),i(t,o.comUpsertProfile);}catch(e){r(e);}});}function yt(s){let n=s.command("feed").description("Comradecircle home feed & follows");n.command("home").description("The calling member's unified home feed").option("--limit <n>","Page size",u,50).option("--offset <n>","Offset",u,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(it,{pagination:{limit:t.limit,offset:t.offset}});i(t,e.comMyFeed.items,{headers:["ID","Channel","Author","Status","Comments","Reactions"],rows:e.comMyFeed.items.map(o=>[d(o.id,12),d(o.channelId,12),d(o.authorId,12),o.status,String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){r(e);}}),n.command("follows").description("List the calling member's follows").option("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(st,{targetType:t.targetType?t.targetType.toUpperCase():void 0});i(t,e.comMyFollows.items,{headers:["ID","Target","Target Type","Muted"],rows:e.comMyFollows.items.map(o=>[d(o.id,12),d(o.targetId,12),o.targetType,o.muted?"yes":"no"])});}catch(e){r(e);}}),n.command("follow").description("Follow a target (circle, channel, or member)").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await a(at,{input:e});c(`Following ${o.comFollow.targetType} ${o.comFollow.targetId}`),i(t,o.comFollow);}catch(e){r(e);}}),n.command("unfollow").description("Unfollow a target").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await a(ct,{input:e});c(`Unfollowed: ${o.comUnfollow}`),i(t,{unfollowed:o.comUnfollow});}catch(e){r(e);}}),n.command("mute").description("Mute or unmute a follow").argument("<id>","Follow ID").requiredOption("--muted <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await a(dt,{id:t,muted:e.muted});c(`Follow ${o.comMuteFollow.muted?"muted":"unmuted"}`),i(e,o.comMuteFollow);}catch(o){r(o);}});}function wt(s){s.command("health").description("Comradecircle service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let t=await w(pt);c(t.comHealth),i(n,{health:t.comHealth});}catch(t){r(t);}});}var $t={id:"comradecircle",version:"1.0.0",displayName:"Comradecircle",dependsOn:["auth","workspaces"],register(s,n){T(n);let t=s.command("comradecircle").description("Comradecircle community circles");lt(t),ut(t),mt(t),ft(t),gt(t),Ct(t),It(t),ht(t),yt(t),wt(t);}},Lo=$t;module.exports=Lo;
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js';import {o}from'../../chunk-YIY5IDXQ.js';var h=`
1
+ import {a,b as b$1,i,r,h as h$1,k as k$1,q as q$1,d as d$1}from'../../chunk-O6UCQ5IT.js';import {o}from'../../chunk-YIY5IDXQ.js';var h=`
2
2
  query ComradecircleCircle($id: ID!) {
3
3
  comCircle(id: $id) {
4
4
  id name slug description topic status visibility tags memberCount
@@ -38,8 +38,11 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js
38
38
  `,L=`
39
39
  query ComradecircleListChannels($circleId: ID!) {
40
40
  comListChannels(circleId: $circleId) {
41
- id circleId name slug description type visibility position isArchived
42
- createdAt updatedAt workspaceId
41
+ items {
42
+ id circleId name slug description type visibility position isArchived createdAt
43
+ updatedAt workspaceId
44
+ }
45
+ pageInfo { cursor hasMore }
43
46
  }
44
47
  }
45
48
  `,O=`
@@ -129,7 +132,8 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js
129
132
  `,x=`
130
133
  query ComradecircleListComments($postId: ID!) {
131
134
  comListComments(postId: $postId) {
132
- id postId parentId authorId body isHidden createdAt updatedAt workspaceId
135
+ items { id postId parentId authorId body isHidden createdAt updatedAt workspaceId }
136
+ pageInfo { cursor hasMore }
133
137
  }
134
138
  }
135
139
  `,k=`
@@ -189,23 +193,26 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js
189
193
  `,G=`
190
194
  query ComradecirclePoll($id: ID!) {
191
195
  comPoll(id: $id) {
192
- id circleId question status isAnonymous allowMultiple closesAt
193
- createdAt updatedAt workspaceId
194
- options { id pollId label position voteCount }
196
+ id circleId question status isAnonymous allowMultiple closesAt createdAt updatedAt
197
+ workspaceId
198
+ options { items { id pollId label position voteCount } pageInfo { cursor hasMore } }
195
199
  }
196
200
  }
197
201
  `,J=`
198
202
  query ComradecircleListPolls($circleId: ID!, $status: ComPollStatus) {
199
203
  comListPolls(circleId: $circleId, status: $status) {
200
- id circleId question status isAnonymous allowMultiple closesAt createdAt
201
- options { id label position voteCount }
204
+ items {
205
+ id circleId question status isAnonymous allowMultiple closesAt createdAt
206
+ options { items { id label position voteCount } pageInfo { cursor hasMore } }
207
+ }
208
+ pageInfo { cursor hasMore }
202
209
  }
203
210
  }
204
211
  `,Y=`
205
212
  mutation ComradecircleCreatePoll($input: ComCreatePollInput!) {
206
213
  comCreatePoll(input: $input) {
207
214
  id circleId question status isAnonymous allowMultiple closesAt createdAt
208
- options { id label position voteCount }
215
+ options { items { id label position voteCount } pageInfo { cursor hasMore } }
209
216
  }
210
217
  }
211
218
  `,z=`
@@ -255,7 +262,8 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js
255
262
  `,et=`
256
263
  query ComradecircleMyFollows($targetType: ComFollowTargetType) {
257
264
  comMyFollows(targetType: $targetType) {
258
- id followerId targetId targetType muted createdAt updatedAt workspaceId
265
+ items { id followerId targetId targetType muted createdAt updatedAt workspaceId }
266
+ pageInfo { cursor hasMore }
259
267
  }
260
268
  }
261
269
  `,ot=`
@@ -278,4 +286,4 @@ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-W4JZR7RJ.js
278
286
  query ComradecircleHealth {
279
287
  comHealth
280
288
  }
281
- `;function d(m){let i=Number.parseInt(m,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${m}"`);return i}function l(m){return m.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function st(m){let i$1=m.command("circles").description("Comradecircle circles");i$1.command("list").description("List circles").option("--status <s>","ACTIVE|ARCHIVED|SUSPENDED").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(b,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,visibility:t.visibility?t.visibility.toUpperCase():void 0});h$1(t,e.comListCircles.items,{headers:["ID","Name","Slug","Status","Visibility","Members"],rows:e.comListCircles.items.map(o=>[p(o.id,12),o.name,o.slug,o.status,o.visibility,String(o.memberCount??0)])});}catch(e){g(e);}}),i$1.command("get").description("Get a circle by id").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(h,{id:t});if(!o$1.comCircle)throw new o(`Circle ${t} not found`);h$1(e,o$1.comCircle);}catch(o){g(o);}}),i$1.command("create").description("Create a circle").requiredOption("--name <name>","Circle name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET","PUBLIC").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.description&&(e.description=t.description),t.topic&&(e.topic=t.topic),t.tags&&(e.tags=l(t.tags)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await b$1(v,{input:e});i(`Circle created: ${o.comCreateCircle.name}`),h$1(t,o.comCreateCircle);}catch(e){g(e);}}),i$1.command("update").description("Update a circle").argument("<id>","Circle ID").option("--name <name>","Circle name").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.name&&(o$1.name=e.name),e.description!==void 0&&(o$1.description=e.description),e.topic!==void 0&&(o$1.topic=e.topic),e.visibility&&(o$1.visibility=e.visibility.toUpperCase()),e.tags&&(o$1.tags=l(e.tags)),e.avatarFileId&&(o$1.avatarFileId=e.avatarFileId),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(P,{id:t,input:o$1});i("Circle updated"),h$1(e,g.comUpdateCircle);}catch(o){g(o);}}),i$1.command("archive").description("Archive a circle").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(w,{id:t});i(`Circle archived: ${o.comArchiveCircle}`),h$1(e,{archived:o.comArchiveCircle});}catch(o){g(o);}});}function at(m){let i$1=m.command("channels").description("Comradecircle channels");i$1.command("list").description("List channels in a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(L,{circleId:t.circle});h$1(t,e.comListChannels,{headers:["ID","Name","Slug","Type","Visibility","Position"],rows:e.comListChannels.map(o=>[p(o.id,12),o.name,o.slug,o.type,o.visibility,String(o.position??0)])});}catch(e){g(e);}}),i$1.command("create").description("Create a channel").requiredOption("--circle <id>","Circle ID").requiredOption("--name <name>","Channel name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT","TEXT").option("--visibility <v>","CIRCLE|PRIVATE","CIRCLE").option("--position <n>","Position",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,name:t.name,slug:t.slug,type:(t.type??"TEXT").toUpperCase(),visibility:(t.visibility??"CIRCLE").toUpperCase()};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let o=await b$1(O,{input:e});i(`Channel created: ${o.comCreateChannel.name}`),h$1(t,o.comCreateChannel);}catch(e){g(e);}}),i$1.command("update").description("Update a channel").argument("<id>","Channel ID").option("--name <name>","Channel name").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT").option("--visibility <v>","CIRCLE|PRIVATE").option("--position <n>","Position",d).option("--archived <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.name&&(o$1.name=e.name),e.description!==void 0&&(o$1.description=e.description),e.type&&(o$1.type=e.type.toUpperCase()),e.visibility&&(o$1.visibility=e.visibility.toUpperCase()),e.position!==void 0&&(o$1.position=e.position),e.archived!==void 0&&(o$1.isArchived=e.archived),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(A,{id:t,input:o$1});i("Channel updated"),h$1(e,g.comUpdateChannel);}catch(o){g(o);}});}function ct(m){let i$1=m.command("memberships").description("Comradecircle circle memberships");i$1.command("list").description("List memberships").option("--circle <id>","Filter by circle ID").option("--status <s>","ACTIVE|PENDING|LEFT|BANNED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(R,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});h$1(t,e.comListMemberships.items,{headers:["ID","Circle","Member","Role","Status"],rows:e.comListMemberships.items.map(o=>[p(o.id,12),p(o.circleId,12),p(o.memberId,12),o.role,o.status])});}catch(e){g(e);}}),i$1.command("join").description("Join a circle as the calling member").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(T,{circleId:t.circle});i(`Joined circle ${e.comJoinCircle.circleId}`),h$1(t,e.comJoinCircle);}catch(e){g(e);}}),i$1.command("leave").description("Leave a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1($,{circleId:t.circle});i(`Left circle: ${e.comLeaveCircle}`),h$1(t,{left:e.comLeaveCircle});}catch(e){g(e);}}),i$1.command("set-role").description("Set a member role").argument("<membershipId>","Membership ID").requiredOption("--role <r>","OWNER|ADMIN|MODERATOR|MEMBER").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(D,{membershipId:t,role:e.role.toUpperCase()});i(`Role set to ${o.comSetMemberRole.role}`),h$1(e,o.comSetMemberRole);}catch(o){g(o);}});}function mt(m){let i$1=m.command("posts").description("Comradecircle posts");i$1.command("list").description("List posts").option("--channel <id>","Filter by channel ID").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{channelId:t.channel,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});h$1(t,e.comListPosts.items,{headers:["ID","Channel","Author","Status","Pinned","Comments","Reactions"],rows:e.comListPosts.items.map(o=>[p(o.id,12),p(o.channelId,12),p(o.authorId,12),o.status,o.isPinned?"yes":"no",String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){g(e);}}),i$1.command("get").description("Get a post by id").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(S,{id:t});if(!o$1.comPost)throw new o(`Post ${t} not found`);h$1(e,o$1.comPost);}catch(o){g(o);}}),i$1.command("create").description("Create a post").requiredOption("--channel <id>","Channel ID").requiredOption("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED","PUBLISHED").option("--tags <csv>","Comma-separated tags").option("--attachments <csv>","Comma-separated attachment file IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,body:t.body,status:(t.status??"PUBLISHED").toUpperCase()};t.tags&&(e.tags=l(t.tags)),t.attachments&&(e.attachmentFileIds=l(t.attachments));let o=await b$1(M,{input:e});i(`Post created: ${o.comCreatePost.id}`),h$1(t,o.comCreatePost);}catch(e){g(e);}}),i$1.command("update").description("Update a post").argument("<id>","Post ID").option("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--pinned <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.body&&(o$1.body=e.body),e.status&&(o$1.status=e.status.toUpperCase()),e.pinned!==void 0&&(o$1.isPinned=e.pinned),e.tags&&(o$1.tags=l(e.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(N,{id:t,input:o$1});i("Post updated"),h$1(e,g.comUpdatePost);}catch(o){g(o);}}),i$1.command("remove").description("Remove a post").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(_,{id:t});i(`Post removed: ${o.comRemovePost}`),h$1(e,{removed:o.comRemovePost});}catch(o){g(o);}}),i$1.command("react").description("Toggle a reaction on a post").argument("<postId>","Post ID").requiredOption("--type <t>","LIKE|LOVE|CELEBRATE|INSIGHTFUL|SUPPORT|LAUGH").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(F,{postId:t,type:e.type.toUpperCase()});i(`Reaction toggled on post ${o.comReactToPost.id}`),h$1(e,o.comReactToPost);}catch(o){g(o);}});}function dt(m){let i$1=m.command("comments").description("Comradecircle post comments");i$1.command("list").description("List comments on a post").requiredOption("--post <id>","Post ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(x,{postId:t.post});h$1(t,e.comListComments,{headers:["ID","Author","Body","Parent","Hidden"],rows:e.comListComments.map(o=>[p(o.id,12),p(o.authorId,12),p(o.body,40),o.parentId?p(o.parentId,12):"-",o.isHidden?"yes":"no"])});}catch(e){g(e);}}),i$1.command("add").description("Add a comment to a post").requiredOption("--post <id>","Post ID").requiredOption("--body <text>","Comment body").option("--parent <id>","Parent comment ID (for replies)").option("-f, --format <format>","Output format").action(async t=>{try{let e={postId:t.post,body:t.body};t.parent&&(e.parentId=t.parent);let o=await b$1(k,{input:e});i(`Comment added: ${o.comAddComment.id}`),h$1(t,o.comAddComment);}catch(e){g(e);}});}function pt(m){let i$1=m.command("events").description("Comradecircle events");i$1.command("list").description("List events").option("--circle <id>","Filter by circle ID").option("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});h$1(t,e.comListEvents.items,{headers:["ID","Title","Mode","Status","Starts","RSVPs"],rows:e.comListEvents.items.map(o=>[p(o.id,12),o.title,o.mode,o.status,o$1(o.startsAt),String(o.rsvpCount??0)])});}catch(e){g(e);}}),i$1.command("get").description("Get an event by id").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(q,{id:t});if(!o$1.comEvent)throw new o(`Event ${t} not found`);h$1(e,o$1.comEvent);}catch(o){g(o);}}),i$1.command("create").description("Create an event").requiredOption("--circle <id>","Circle ID").requiredOption("--title <t>","Event title").requiredOption("--starts-at <iso>","Start time (ISO date)").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID","ONLINE").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",d).option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,title:t.title,startsAt:t.startsAt,mode:(t.mode??"ONLINE").toUpperCase()};t.description&&(e.description=t.description),t.location&&(e.location=t.location),t.joinUrl&&(e.joinUrl=t.joinUrl),t.capacity!==void 0&&(e.capacity=t.capacity),t.endsAt&&(e.endsAt=t.endsAt),t.tags&&(e.tags=l(t.tags));let o=await b$1(H,{input:e});i(`Event created: ${o.comCreateEvent.title}`),h$1(t,o.comCreateEvent);}catch(e){g(e);}}),i$1.command("update").description("Update an event").argument("<id>","Event ID").option("--title <t>","Event title").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",d).option("--starts-at <iso>","Start time (ISO date)").option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.title&&(o$1.title=e.title),e.description!==void 0&&(o$1.description=e.description),e.mode&&(o$1.mode=e.mode.toUpperCase()),e.location!==void 0&&(o$1.location=e.location),e.joinUrl!==void 0&&(o$1.joinUrl=e.joinUrl),e.capacity!==void 0&&(o$1.capacity=e.capacity),e.startsAt&&(o$1.startsAt=e.startsAt),e.endsAt&&(o$1.endsAt=e.endsAt),e.tags&&(o$1.tags=l(e.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(B,{id:t,input:o$1});i("Event updated"),h$1(e,g.comUpdateEvent);}catch(o){g(o);}}),i$1.command("transition").description("Advance an event through its lifecycle").argument("<id>","Event ID").requiredOption("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(j,{id:t,status:e.status.toUpperCase()});i(`Event transitioned to ${o.comTransitionEvent.status}`),h$1(e,o.comTransitionEvent);}catch(o){g(o);}}),i$1.command("rsvp").description("RSVP to an event as the calling member").argument("<eventId>","Event ID").requiredOption("--status <s>","GOING|INTERESTED|NOT_GOING|WAITLISTED").option("--note <s>","RSVP note").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(W,{eventId:t,status:e.status.toUpperCase(),note:e.note});i(`RSVP saved: ${o.comRsvpEvent.status}`),h$1(e,o.comRsvpEvent);}catch(o){g(o);}});}function lt(m){let i$1=m.command("polls").description("Comradecircle polls");i$1.command("list").description("List polls in a circle").requiredOption("--circle <id>","Circle ID").option("--status <s>","OPEN|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(J,{circleId:t.circle,status:t.status?t.status.toUpperCase():void 0});h$1(t,e.comListPolls,{headers:["ID","Question","Status","Anonymous","Multiple"],rows:e.comListPolls.map(o=>[p(o.id,12),p(o.question,40),o.status,o.isAnonymous?"yes":"no",o.allowMultiple?"yes":"no"])});}catch(e){g(e);}}),i$1.command("get").description("Get a poll by id").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(G,{id:t});if(!o$1.comPoll)throw new o(`Poll ${t} not found`);h$1(e,o$1.comPoll);}catch(o){g(o);}}),i$1.command("create").description("Create a poll").requiredOption("--circle <id>","Circle ID").requiredOption("--question <q>","Poll question").requiredOption("--options <csv>","Comma-separated option labels").option("--allow-multiple","Allow multiple selections").option("--anonymous","Anonymous voting").option("--closes-at <iso>","Close time (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e=l(t.options);if(e.length===0)throw new o("--options must contain at least one option");let o$1={circleId:t.circle,question:t.question,options:e,allowMultiple:t.allowMultiple??!1,isAnonymous:t.anonymous??!1};t.closesAt&&(o$1.closesAt=t.closesAt);let g=await b$1(Y,{input:o$1});i(`Poll created: ${g.comCreatePoll.id}`),h$1(t,g.comCreatePoll);}catch(e){g(e);}}),i$1.command("close").description("Close a poll").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(z,{id:t});i(`Poll closed: ${o.comClosePoll.status}`),h$1(e,o.comClosePoll);}catch(o){g(o);}}),i$1.command("vote").description("Cast a vote for a poll option").argument("<pollId>","Poll ID").requiredOption("--option <id>","Option ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(X,{pollId:t,optionId:e.option});i(`Voted: ${o.comVotePoll.label} (${o.comVotePoll.voteCount})`),h$1(e,o.comVotePoll);}catch(o){g(o);}});}function ut(m){let i$1=m.command("profiles").description("Comradecircle member profiles");i$1.command("list").description("List member profiles").option("--discoverable <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Q,{discoverable:t.discoverable,pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.comListProfiles.items,{headers:["ID","Member","Display Name","Headline","Presence","Discoverable"],rows:e.comListProfiles.items.map(o=>[p(o.id,12),p(o.memberId,12),o.displayName,p(o.headline??"-",30),o.presence??"-",o.discoverable?"yes":"no"])});}catch(e){g(e);}}),i$1.command("get").description("Get a member profile by member id").argument("<memberId>","Member ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(K,{memberId:t});if(!o$1.comProfile)throw new o(`Profile for member ${t} not found`);h$1(e,o$1.comProfile);}catch(o){g(o);}}),i$1.command("upsert").description("Create or update the calling member's profile").requiredOption("--display-name <name>","Display name").option("--headline <s>","Headline").option("--bio <s>","Bio").option("--presence <p>","ONLINE|AWAY|BUSY|OFFLINE").option("--discoverable <bool>","true|false",t=>t==="true").option("--interests <csv>","Comma-separated interests").option("--skills <csv>","Comma-separated skills").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={displayName:t.displayName};t.headline&&(e.headline=t.headline),t.bio&&(e.bio=t.bio),t.presence&&(e.presence=t.presence.toUpperCase()),t.discoverable!==void 0&&(e.discoverable=t.discoverable),t.interests&&(e.interests=l(t.interests)),t.skills&&(e.skills=l(t.skills)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await b$1(Z,{input:e});i(`Profile saved: ${o.comUpsertProfile.displayName}`),h$1(t,o.comUpsertProfile);}catch(e){g(e);}});}function ft(m){let i$1=m.command("feed").description("Comradecircle home feed & follows");i$1.command("home").description("The calling member's unified home feed").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(tt,{pagination:{limit:t.limit,offset:t.offset}});h$1(t,e.comMyFeed.items,{headers:["ID","Channel","Author","Status","Comments","Reactions"],rows:e.comMyFeed.items.map(o=>[p(o.id,12),p(o.channelId,12),p(o.authorId,12),o.status,String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){g(e);}}),i$1.command("follows").description("List the calling member's follows").option("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(et,{targetType:t.targetType?t.targetType.toUpperCase():void 0});h$1(t,e.comMyFollows,{headers:["ID","Target","Target Type","Muted"],rows:e.comMyFollows.map(o=>[p(o.id,12),p(o.targetId,12),o.targetType,o.muted?"yes":"no"])});}catch(e){g(e);}}),i$1.command("follow").description("Follow a target (circle, channel, or member)").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await b$1(ot,{input:e});i(`Following ${o.comFollow.targetType} ${o.comFollow.targetId}`),h$1(t,o.comFollow);}catch(e){g(e);}}),i$1.command("unfollow").description("Unfollow a target").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await b$1(it,{input:e});i(`Unfollowed: ${o.comUnfollow}`),h$1(t,{unfollowed:o.comUnfollow});}catch(e){g(e);}}),i$1.command("mute").description("Mute or unmute a follow").argument("<id>","Follow ID").requiredOption("--muted <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(nt,{id:t,muted:e.muted});i(`Follow ${o.comMuteFollow.muted?"muted":"unmuted"}`),h$1(e,o.comMuteFollow);}catch(o){g(o);}});}function gt(m){m.command("health").description("Comradecircle service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d$1(rt);i(t.comHealth),h$1(i$1,{health:t.comHealth});}catch(t){g(t);}});}var Ct={id:"comradecircle",version:"1.0.0",displayName:"Comradecircle",dependsOn:["auth","workspaces"],register(m,i){a(i);let t=m.command("comradecircle").description("Comradecircle community circles");st(t),at(t),ct(t),mt(t),dt(t),pt(t),lt(t),ut(t),ft(t),gt(t);}},me=Ct;export{me as default};
289
+ `;function d(m){let i=Number.parseInt(m,10);if(Number.isNaN(i))throw new o(`Expected an integer but got "${m}"`);return i}function l(m){return m.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function st(m){let i$1=m.command("circles").description("Comradecircle circles");i$1.command("list").description("List circles").option("--status <s>","ACTIVE|ARCHIVED|SUSPENDED").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(b,{pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0,visibility:t.visibility?t.visibility.toUpperCase():void 0});i(t,e.comListCircles.items,{headers:["ID","Name","Slug","Status","Visibility","Members"],rows:e.comListCircles.items.map(o=>[r(o.id,12),o.name,o.slug,o.status,o.visibility,String(o.memberCount??0)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a circle by id").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(h,{id:t});if(!o$1.comCircle)throw new o(`Circle ${t} not found`);i(e,o$1.comCircle);}catch(o){h$1(o);}}),i$1.command("create").description("Create a circle").requiredOption("--name <name>","Circle name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET","PUBLIC").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,slug:t.slug,visibility:(t.visibility??"PUBLIC").toUpperCase()};t.description&&(e.description=t.description),t.topic&&(e.topic=t.topic),t.tags&&(e.tags=l(t.tags)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await b$1(v,{input:e});k$1(`Circle created: ${o.comCreateCircle.name}`),i(t,o.comCreateCircle);}catch(e){h$1(e);}}),i$1.command("update").description("Update a circle").argument("<id>","Circle ID").option("--name <name>","Circle name").option("--description <s>","Description").option("--topic <s>","Topic").option("--visibility <v>","PUBLIC|PRIVATE|SECRET").option("--tags <csv>","Comma-separated tags").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.name&&(o$1.name=e.name),e.description!==void 0&&(o$1.description=e.description),e.topic!==void 0&&(o$1.topic=e.topic),e.visibility&&(o$1.visibility=e.visibility.toUpperCase()),e.tags&&(o$1.tags=l(e.tags)),e.avatarFileId&&(o$1.avatarFileId=e.avatarFileId),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(P,{id:t,input:o$1});k$1("Circle updated"),i(e,g.comUpdateCircle);}catch(o){h$1(o);}}),i$1.command("archive").description("Archive a circle").argument("<id>","Circle ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(w,{id:t});k$1(`Circle archived: ${o.comArchiveCircle}`),i(e,{archived:o.comArchiveCircle});}catch(o){h$1(o);}});}function at(m){let i$1=m.command("channels").description("Comradecircle channels");i$1.command("list").description("List channels in a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(L,{circleId:t.circle});i(t,e.comListChannels.items,{headers:["ID","Name","Slug","Type","Visibility","Position"],rows:e.comListChannels.items.map(o=>[r(o.id,12),o.name,o.slug,o.type,o.visibility,String(o.position??0)])});}catch(e){h$1(e);}}),i$1.command("create").description("Create a channel").requiredOption("--circle <id>","Circle ID").requiredOption("--name <name>","Channel name").requiredOption("--slug <slug>","URL slug").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT","TEXT").option("--visibility <v>","CIRCLE|PRIVATE","CIRCLE").option("--position <n>","Position",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,name:t.name,slug:t.slug,type:(t.type??"TEXT").toUpperCase(),visibility:(t.visibility??"CIRCLE").toUpperCase()};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let o=await b$1(O,{input:e});k$1(`Channel created: ${o.comCreateChannel.name}`),i(t,o.comCreateChannel);}catch(e){h$1(e);}}),i$1.command("update").description("Update a channel").argument("<id>","Channel ID").option("--name <name>","Channel name").option("--description <s>","Description").option("--type <t>","TEXT|VOICE|FORUM|ANNOUNCEMENT").option("--visibility <v>","CIRCLE|PRIVATE").option("--position <n>","Position",d).option("--archived <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.name&&(o$1.name=e.name),e.description!==void 0&&(o$1.description=e.description),e.type&&(o$1.type=e.type.toUpperCase()),e.visibility&&(o$1.visibility=e.visibility.toUpperCase()),e.position!==void 0&&(o$1.position=e.position),e.archived!==void 0&&(o$1.isArchived=e.archived),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(A,{id:t,input:o$1});k$1("Channel updated"),i(e,g.comUpdateChannel);}catch(o){h$1(o);}});}function ct(m){let i$1=m.command("memberships").description("Comradecircle circle memberships");i$1.command("list").description("List memberships").option("--circle <id>","Filter by circle ID").option("--status <s>","ACTIVE|PENDING|LEFT|BANNED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(R,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListMemberships.items,{headers:["ID","Circle","Member","Role","Status"],rows:e.comListMemberships.items.map(o=>[r(o.id,12),r(o.circleId,12),r(o.memberId,12),o.role,o.status])});}catch(e){h$1(e);}}),i$1.command("join").description("Join a circle as the calling member").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(T,{circleId:t.circle});k$1(`Joined circle ${e.comJoinCircle.circleId}`),i(t,e.comJoinCircle);}catch(e){h$1(e);}}),i$1.command("leave").description("Leave a circle").requiredOption("--circle <id>","Circle ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1($,{circleId:t.circle});k$1(`Left circle: ${e.comLeaveCircle}`),i(t,{left:e.comLeaveCircle});}catch(e){h$1(e);}}),i$1.command("set-role").description("Set a member role").argument("<membershipId>","Membership ID").requiredOption("--role <r>","OWNER|ADMIN|MODERATOR|MEMBER").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(D,{membershipId:t,role:e.role.toUpperCase()});k$1(`Role set to ${o.comSetMemberRole.role}`),i(e,o.comSetMemberRole);}catch(o){h$1(o);}});}function mt(m){let i$1=m.command("posts").description("Comradecircle posts");i$1.command("list").description("List posts").option("--channel <id>","Filter by channel ID").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(U,{channelId:t.channel,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPosts.items,{headers:["ID","Channel","Author","Status","Pinned","Comments","Reactions"],rows:e.comListPosts.items.map(o=>[r(o.id,12),r(o.channelId,12),r(o.authorId,12),o.status,o.isPinned?"yes":"no",String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a post by id").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(S,{id:t});if(!o$1.comPost)throw new o(`Post ${t} not found`);i(e,o$1.comPost);}catch(o){h$1(o);}}),i$1.command("create").description("Create a post").requiredOption("--channel <id>","Channel ID").requiredOption("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED","PUBLISHED").option("--tags <csv>","Comma-separated tags").option("--attachments <csv>","Comma-separated attachment file IDs").option("-f, --format <format>","Output format").action(async t=>{try{let e={channelId:t.channel,body:t.body,status:(t.status??"PUBLISHED").toUpperCase()};t.tags&&(e.tags=l(t.tags)),t.attachments&&(e.attachmentFileIds=l(t.attachments));let o=await b$1(M,{input:e});k$1(`Post created: ${o.comCreatePost.id}`),i(t,o.comCreatePost);}catch(e){h$1(e);}}),i$1.command("update").description("Update a post").argument("<id>","Post ID").option("--body <text>","Post body").option("--status <s>","DRAFT|PUBLISHED|HIDDEN|REMOVED").option("--pinned <bool>","true|false",t=>t==="true").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.body&&(o$1.body=e.body),e.status&&(o$1.status=e.status.toUpperCase()),e.pinned!==void 0&&(o$1.isPinned=e.pinned),e.tags&&(o$1.tags=l(e.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(N,{id:t,input:o$1});k$1("Post updated"),i(e,g.comUpdatePost);}catch(o){h$1(o);}}),i$1.command("remove").description("Remove a post").argument("<id>","Post ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(_,{id:t});k$1(`Post removed: ${o.comRemovePost}`),i(e,{removed:o.comRemovePost});}catch(o){h$1(o);}}),i$1.command("react").description("Toggle a reaction on a post").argument("<postId>","Post ID").requiredOption("--type <t>","LIKE|LOVE|CELEBRATE|INSIGHTFUL|SUPPORT|LAUGH").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(F,{postId:t,type:e.type.toUpperCase()});k$1(`Reaction toggled on post ${o.comReactToPost.id}`),i(e,o.comReactToPost);}catch(o){h$1(o);}});}function dt(m){let i$1=m.command("comments").description("Comradecircle post comments");i$1.command("list").description("List comments on a post").requiredOption("--post <id>","Post ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(x,{postId:t.post});i(t,e.comListComments.items,{headers:["ID","Author","Body","Parent","Hidden"],rows:e.comListComments.items.map(o=>[r(o.id,12),r(o.authorId,12),r(o.body,40),o.parentId?r(o.parentId,12):"-",o.isHidden?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("add").description("Add a comment to a post").requiredOption("--post <id>","Post ID").requiredOption("--body <text>","Comment body").option("--parent <id>","Parent comment ID (for replies)").option("-f, --format <format>","Output format").action(async t=>{try{let e={postId:t.post,body:t.body};t.parent&&(e.parentId=t.parent);let o=await b$1(k,{input:e});k$1(`Comment added: ${o.comAddComment.id}`),i(t,o.comAddComment);}catch(e){h$1(e);}});}function pt(m){let i$1=m.command("events").description("Comradecircle events");i$1.command("list").description("List events").option("--circle <id>","Filter by circle ID").option("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(V,{circleId:t.circle,pagination:{limit:t.limit,offset:t.offset},status:t.status?t.status.toUpperCase():void 0});i(t,e.comListEvents.items,{headers:["ID","Title","Mode","Status","Starts","RSVPs"],rows:e.comListEvents.items.map(o=>[r(o.id,12),o.title,o.mode,o.status,q$1(o.startsAt),String(o.rsvpCount??0)])});}catch(e){h$1(e);}}),i$1.command("get").description("Get an event by id").argument("<id>","Event ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(q,{id:t});if(!o$1.comEvent)throw new o(`Event ${t} not found`);i(e,o$1.comEvent);}catch(o){h$1(o);}}),i$1.command("create").description("Create an event").requiredOption("--circle <id>","Circle ID").requiredOption("--title <t>","Event title").requiredOption("--starts-at <iso>","Start time (ISO date)").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID","ONLINE").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",d).option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={circleId:t.circle,title:t.title,startsAt:t.startsAt,mode:(t.mode??"ONLINE").toUpperCase()};t.description&&(e.description=t.description),t.location&&(e.location=t.location),t.joinUrl&&(e.joinUrl=t.joinUrl),t.capacity!==void 0&&(e.capacity=t.capacity),t.endsAt&&(e.endsAt=t.endsAt),t.tags&&(e.tags=l(t.tags));let o=await b$1(H,{input:e});k$1(`Event created: ${o.comCreateEvent.title}`),i(t,o.comCreateEvent);}catch(e){h$1(e);}}),i$1.command("update").description("Update an event").argument("<id>","Event ID").option("--title <t>","Event title").option("--description <s>","Description").option("--mode <m>","ONLINE|IN_PERSON|HYBRID").option("--location <s>","Location").option("--join-url <url>","Join URL").option("--capacity <n>","Capacity",d).option("--starts-at <iso>","Start time (ISO date)").option("--ends-at <iso>","End time (ISO date)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1={};if(e.title&&(o$1.title=e.title),e.description!==void 0&&(o$1.description=e.description),e.mode&&(o$1.mode=e.mode.toUpperCase()),e.location!==void 0&&(o$1.location=e.location),e.joinUrl!==void 0&&(o$1.joinUrl=e.joinUrl),e.capacity!==void 0&&(o$1.capacity=e.capacity),e.startsAt&&(o$1.startsAt=e.startsAt),e.endsAt&&(o$1.endsAt=e.endsAt),e.tags&&(o$1.tags=l(e.tags)),!Object.keys(o$1).length)throw new o("No updates specified");let g=await b$1(B,{id:t,input:o$1});k$1("Event updated"),i(e,g.comUpdateEvent);}catch(o){h$1(o);}}),i$1.command("transition").description("Advance an event through its lifecycle").argument("<id>","Event ID").requiredOption("--status <s>","SCHEDULED|LIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(j,{id:t,status:e.status.toUpperCase()});k$1(`Event transitioned to ${o.comTransitionEvent.status}`),i(e,o.comTransitionEvent);}catch(o){h$1(o);}}),i$1.command("rsvp").description("RSVP to an event as the calling member").argument("<eventId>","Event ID").requiredOption("--status <s>","GOING|INTERESTED|NOT_GOING|WAITLISTED").option("--note <s>","RSVP note").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(W,{eventId:t,status:e.status.toUpperCase(),note:e.note});k$1(`RSVP saved: ${o.comRsvpEvent.status}`),i(e,o.comRsvpEvent);}catch(o){h$1(o);}});}function lt(m){let i$1=m.command("polls").description("Comradecircle polls");i$1.command("list").description("List polls in a circle").requiredOption("--circle <id>","Circle ID").option("--status <s>","OPEN|CLOSED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(J,{circleId:t.circle,status:t.status?t.status.toUpperCase():void 0});i(t,e.comListPolls.items,{headers:["ID","Question","Status","Anonymous","Multiple"],rows:e.comListPolls.items.map(o=>[r(o.id,12),r(o.question,40),o.status,o.isAnonymous?"yes":"no",o.allowMultiple?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a poll by id").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(G,{id:t});if(!o$1.comPoll)throw new o(`Poll ${t} not found`);i(e,o$1.comPoll);}catch(o){h$1(o);}}),i$1.command("create").description("Create a poll").requiredOption("--circle <id>","Circle ID").requiredOption("--question <q>","Poll question").requiredOption("--options <csv>","Comma-separated option labels").option("--allow-multiple","Allow multiple selections").option("--anonymous","Anonymous voting").option("--closes-at <iso>","Close time (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e=l(t.options);if(e.length===0)throw new o("--options must contain at least one option");let o$1={circleId:t.circle,question:t.question,options:e,allowMultiple:t.allowMultiple??!1,isAnonymous:t.anonymous??!1};t.closesAt&&(o$1.closesAt=t.closesAt);let g=await b$1(Y,{input:o$1});k$1(`Poll created: ${g.comCreatePoll.id}`),i(t,g.comCreatePoll);}catch(e){h$1(e);}}),i$1.command("close").description("Close a poll").argument("<id>","Poll ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(z,{id:t});k$1(`Poll closed: ${o.comClosePoll.status}`),i(e,o.comClosePoll);}catch(o){h$1(o);}}),i$1.command("vote").description("Cast a vote for a poll option").argument("<pollId>","Poll ID").requiredOption("--option <id>","Option ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(X,{pollId:t,optionId:e.option});k$1(`Voted: ${o.comVotePoll.label} (${o.comVotePoll.voteCount})`),i(e,o.comVotePoll);}catch(o){h$1(o);}});}function ut(m){let i$1=m.command("profiles").description("Comradecircle member profiles");i$1.command("list").description("List member profiles").option("--discoverable <bool>","true|false",t=>t==="true").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(Q,{discoverable:t.discoverable,pagination:{limit:t.limit,offset:t.offset}});i(t,e.comListProfiles.items,{headers:["ID","Member","Display Name","Headline","Presence","Discoverable"],rows:e.comListProfiles.items.map(o=>[r(o.id,12),r(o.memberId,12),o.displayName,r(o.headline??"-",30),o.presence??"-",o.discoverable?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("get").description("Get a member profile by member id").argument("<memberId>","Member ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o$1=await b$1(K,{memberId:t});if(!o$1.comProfile)throw new o(`Profile for member ${t} not found`);i(e,o$1.comProfile);}catch(o){h$1(o);}}),i$1.command("upsert").description("Create or update the calling member's profile").requiredOption("--display-name <name>","Display name").option("--headline <s>","Headline").option("--bio <s>","Bio").option("--presence <p>","ONLINE|AWAY|BUSY|OFFLINE").option("--discoverable <bool>","true|false",t=>t==="true").option("--interests <csv>","Comma-separated interests").option("--skills <csv>","Comma-separated skills").option("--avatar-file-id <id>","Avatar file ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={displayName:t.displayName};t.headline&&(e.headline=t.headline),t.bio&&(e.bio=t.bio),t.presence&&(e.presence=t.presence.toUpperCase()),t.discoverable!==void 0&&(e.discoverable=t.discoverable),t.interests&&(e.interests=l(t.interests)),t.skills&&(e.skills=l(t.skills)),t.avatarFileId&&(e.avatarFileId=t.avatarFileId);let o=await b$1(Z,{input:e});k$1(`Profile saved: ${o.comUpsertProfile.displayName}`),i(t,o.comUpsertProfile);}catch(e){h$1(e);}});}function ft(m){let i$1=m.command("feed").description("Comradecircle home feed & follows");i$1.command("home").description("The calling member's unified home feed").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(tt,{pagination:{limit:t.limit,offset:t.offset}});i(t,e.comMyFeed.items,{headers:["ID","Channel","Author","Status","Comments","Reactions"],rows:e.comMyFeed.items.map(o=>[r(o.id,12),r(o.channelId,12),r(o.authorId,12),o.status,String(o.commentCount??0),String(o.reactionCount??0)])});}catch(e){h$1(e);}}),i$1.command("follows").description("List the calling member's follows").option("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e=await b$1(et,{targetType:t.targetType?t.targetType.toUpperCase():void 0});i(t,e.comMyFollows.items,{headers:["ID","Target","Target Type","Muted"],rows:e.comMyFollows.items.map(o=>[r(o.id,12),r(o.targetId,12),o.targetType,o.muted?"yes":"no"])});}catch(e){h$1(e);}}),i$1.command("follow").description("Follow a target (circle, channel, or member)").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await b$1(ot,{input:e});k$1(`Following ${o.comFollow.targetType} ${o.comFollow.targetId}`),i(t,o.comFollow);}catch(e){h$1(e);}}),i$1.command("unfollow").description("Unfollow a target").requiredOption("--target-id <id>","Target ID").requiredOption("--target-type <t>","CIRCLE|CHANNEL|MEMBER").option("-f, --format <format>","Output format").action(async t=>{try{let e={targetId:t.targetId,targetType:t.targetType.toUpperCase()},o=await b$1(it,{input:e});k$1(`Unfollowed: ${o.comUnfollow}`),i(t,{unfollowed:o.comUnfollow});}catch(e){h$1(e);}}),i$1.command("mute").description("Mute or unmute a follow").argument("<id>","Follow ID").requiredOption("--muted <bool>","true|false",t=>t==="true").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await b$1(nt,{id:t,muted:e.muted});k$1(`Follow ${o.comMuteFollow.muted?"muted":"unmuted"}`),i(e,o.comMuteFollow);}catch(o){h$1(o);}});}function gt(m){m.command("health").description("Comradecircle service health check (public)").option("-f, --format <format>","Output format").action(async i$1=>{try{let t=await d$1(rt);k$1(t.comHealth),i(i$1,{health:t.comHealth});}catch(t){h$1(t);}});}var Ct={id:"comradecircle",version:"1.0.0",displayName:"Comradecircle",dependsOn:["auth","workspaces"],register(m,i){a(i);let t=m.command("comradecircle").description("Comradecircle community circles");st(t),at(t),ct(t),mt(t),dt(t),pt(t),lt(t),ut(t),ft(t),gt(t);}},me=Ct;export{me as default};