@burdenoff/cli-sdk 2026.1021.1 → 2026.1021.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/{chunk-NLEVVDXR.js → chunk-SQSFZFQZ.js} +1 -1
  2. package/dist/{chunk-IZXPWPKX.js → chunk-UAFYTYK6.js} +7 -7
  3. package/dist/core/index.cjs +7 -7
  4. package/dist/core/index.js +1 -1
  5. package/dist/index.cjs +7 -7
  6. package/dist/index.js +1 -1
  7. package/dist/modules/adaptercloud/index.js +1 -1
  8. package/dist/modules/artistrybase/index.cjs +3 -3
  9. package/dist/modules/artistrybase/index.js +1 -1
  10. package/dist/modules/assethandler/index.cjs +1 -1
  11. package/dist/modules/assethandler/index.js +1 -1
  12. package/dist/modules/atheletebridge/index.cjs +6 -6
  13. package/dist/modules/atheletebridge/index.js +1 -1
  14. package/dist/modules/auth/index.cjs +5 -5
  15. package/dist/modules/auth/index.js +1 -1
  16. package/dist/modules/billing/index.js +1 -1
  17. package/dist/modules/brainyrich/index.cjs +2 -2
  18. package/dist/modules/brainyrich/index.js +1 -1
  19. package/dist/modules/buildmyiq/index.cjs +1 -1
  20. package/dist/modules/buildmyiq/index.js +1 -1
  21. package/dist/modules/channels/index.cjs +3 -3
  22. package/dist/modules/channels/index.js +1 -1
  23. package/dist/modules/collabkin/index.js +1 -1
  24. package/dist/modules/comradecircle/index.cjs +3 -3
  25. package/dist/modules/comradecircle/index.js +1 -1
  26. package/dist/modules/conversations/index.js +1 -1
  27. package/dist/modules/coolandlovely/index.js +1 -1
  28. package/dist/modules/cosmicintersection/index.cjs +4 -4
  29. package/dist/modules/cosmicintersection/index.js +1 -1
  30. package/dist/modules/crewfoundry/index.cjs +4 -4
  31. package/dist/modules/crewfoundry/index.js +1 -1
  32. package/dist/modules/devportal/index.cjs +3 -3
  33. package/dist/modules/devportal/index.js +1 -1
  34. package/dist/modules/ecoimpacthub/index.js +1 -1
  35. package/dist/modules/eventfullymanaged/index.js +1 -1
  36. package/dist/modules/export/index.cjs +2 -2
  37. package/dist/modules/export/index.js +1 -1
  38. package/dist/modules/files/index.cjs +4 -4
  39. package/dist/modules/files/index.js +1 -1
  40. package/dist/modules/fluidgrids/index.js +1 -1
  41. package/dist/modules/ggnomad/index.cjs +3 -3
  42. package/dist/modules/ggnomad/index.js +1 -1
  43. package/dist/modules/govcitizenhub/index.cjs +2 -2
  44. package/dist/modules/govcitizenhub/index.js +1 -1
  45. package/dist/modules/groups/index.js +1 -1
  46. package/dist/modules/headshotmarketing/index.js +1 -1
  47. package/dist/modules/hookmovies/index.js +1 -1
  48. package/dist/modules/housingvista/index.cjs +6 -6
  49. package/dist/modules/housingvista/index.js +1 -1
  50. package/dist/modules/integrations/index.cjs +1 -1
  51. package/dist/modules/integrations/index.js +1 -1
  52. package/dist/modules/intelwatchtower/index.cjs +3 -3
  53. package/dist/modules/intelwatchtower/index.js +1 -1
  54. package/dist/modules/kadaikodi/index.js +1 -1
  55. package/dist/modules/labsofscience/index.cjs +3 -3
  56. package/dist/modules/labsofscience/index.js +1 -1
  57. package/dist/modules/manufacturedops/index.js +1 -1
  58. package/dist/modules/movethewheels/index.js +1 -1
  59. package/dist/modules/mybodyshield/index.cjs +4 -4
  60. package/dist/modules/mybodyshield/index.js +1 -1
  61. package/dist/modules/notifications/index.cjs +2 -2
  62. package/dist/modules/notifications/index.js +1 -1
  63. package/dist/modules/organizations/index.js +1 -1
  64. package/dist/modules/planmagnet/index.js +1 -1
  65. package/dist/modules/products/index.cjs +4 -4
  66. package/dist/modules/products/index.js +1 -1
  67. package/dist/modules/proserviceworld/index.js +1 -1
  68. package/dist/modules/rbac/index.js +1 -1
  69. package/dist/modules/sandbox/index.cjs +3 -3
  70. package/dist/modules/sandbox/index.js +1 -1
  71. package/dist/modules/scheduler/index.cjs +4 -4
  72. package/dist/modules/scheduler/index.js +1 -1
  73. package/dist/modules/security/index.cjs +2 -2
  74. package/dist/modules/security/index.js +1 -1
  75. package/dist/modules/semanticfed/index.js +1 -1
  76. package/dist/modules/store/index.cjs +2 -2
  77. package/dist/modules/store/index.js +1 -1
  78. package/dist/modules/subscriberbot/index.js +1 -1
  79. package/dist/modules/support/index.js +1 -1
  80. package/dist/modules/tags/index.cjs +2 -2
  81. package/dist/modules/tags/index.js +1 -1
  82. package/dist/modules/technospam/index.cjs +2 -2
  83. package/dist/modules/technospam/index.js +1 -1
  84. package/dist/modules/theculturepost/index.js +1 -1
  85. package/dist/modules/theglobalfuel/index.js +1 -1
  86. package/dist/modules/timecampus/index.js +1 -1
  87. package/dist/modules/tours/index.cjs +2 -2
  88. package/dist/modules/tours/index.js +1 -1
  89. package/dist/modules/vibecontrols/index.js +1 -1
  90. package/dist/modules/workspaces/index.cjs +3 -3
  91. package/dist/modules/workspaces/index.js +1 -1
  92. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(n,t){super(n),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},C=class extends u{constructor(n,t){super(n,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(n,t){super(n),this.name="CliInternalError",this.cause=t;}};var A=null;function O(a){A=a;}function b(){if(!A)throw new I("vibecontrols module helpers used before setHelpersContext was called");return A}function Ht(){let a=b();if(!a.auth.isAuthenticated())throw new C("Authentication required.",{hint:`Run \`${a.productName} auth login\` to authenticate.`})}async function s(a,n){return Ht(),b().gql.workspace.request(a,n)}async function w(a,n){return b().gql.workspaceAuthOnly.request(a,n)}function r(a){let n=a instanceof Error?a.message:String(a);throw new u(n)}function i(a,n,t){b().output.formatAndOutput(a,n,t);}function c(a){b().output.printSuccess(a);}function p(a,n){return b().output.truncate(a,n)}var k=`
1
+ 'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(n,t){super(n),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},C=class extends u{constructor(n,t){super(n,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(n,t){super(n),this.name="CliInternalError",this.cause=t;}};var A=null;function T(a){A=a;}function b(){if(!A)throw new I("vibecontrols module helpers used before setHelpersContext was called");return A}function Ht(){let a=b();if(!a.auth.isAuthenticated())throw new C("Authentication required.",{hint:`Run \`${a.productName} auth login\` to authenticate.`})}async function s(a,n){return Ht(),b().gql.workspace.request(a,n)}async function w(a,n){return b().gql.workspaceAuthOnly.request(a,n)}function r(a){let n=a instanceof Error?a.message:String(a);throw new u(n)}function i(a,n,t){b().output.formatAndOutput(a,n,t);}function c(a){b().output.printSuccess(a);}function p(a,n){return b().output.truncate(a,n)}var k=`
2
2
  query BrainyrichGetHousehold($id: ID!) {
3
3
  braHousehold(id: $id) {
4
4
  id name advisorId aum currency riskProfile status notes
@@ -337,4 +337,4 @@
337
337
  query BrainyrichHealth {
338
338
  braHealth
339
339
  }
340
- `;function h(a,n){try{return JSON.parse(n)}catch{throw new u(`--${a} must be valid JSON`)}}function m(a){let n=Number.parseInt(a,10);if(Number.isNaN(n))throw new u(`Expected an integer but got "${a}"`);return n}function d(a){let n=Number.parseFloat(a);if(Number.isNaN(n))throw new u(`Expected a number but got "${a}"`);return n}function y(a){return a.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function ht(a){let n=a.command("households").description("Brainyrich advisory households");n.command("list").description("List households").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(P,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListHouseholds.items,{headers:["ID","Name","Status","Risk","AUM","Currency"],rows:e.braListHouseholds.items.map(o=>[p(o.id,12),o.name,o.status??"-",o.riskProfile??"-",o.aum!=null?String(o.aum):"-",o.currency??"-"])});}catch(e){r(e);}}),n.command("get").description("Get a household by id").argument("<id>","Household ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(k,{id:t});if(!o.braHousehold)throw new u(`Household ${t} not found`);i(e,o.braHousehold);}catch(o){r(o);}}),n.command("create").description("Create a household").requiredOption("--name <name>","Household name").option("--advisor <id>","Advisor user ID").option("--currency <c>","Currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--primary-contact-name <s>","Primary contact name").option("--primary-contact-email <s>","Primary contact email").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.advisor&&(e.advisorId=t.advisor),t.currency&&(e.currency=t.currency),t.riskProfile&&(e.riskProfile=t.riskProfile.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.primaryContactName&&(e.primaryContactName=t.primaryContactName),t.primaryContactEmail&&(e.primaryContactEmail=t.primaryContactEmail),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=y(t.tags));let o=await s(D,{input:e});c(`Household created: ${o.braCreateHousehold.name}`),i(t,o.braCreateHousehold);}catch(e){r(e);}}),n.command("update").description("Update a household").argument("<id>","Household ID").option("--name <name>","Household name").option("--aum <n>","Assets under management",d).option("--currency <c>","Currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--primary-contact-name <s>","Primary contact name").option("--primary-contact-email <s>","Primary contact email").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.aum!==void 0&&(o.aum=e.aum),e.currency&&(o.currency=e.currency),e.riskProfile&&(o.riskProfile=e.riskProfile.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.primaryContactName!==void 0&&(o.primaryContactName=e.primaryContactName),e.primaryContactEmail!==void 0&&(o.primaryContactEmail=e.primaryContactEmail),e.notes!==void 0&&(o.notes=e.notes),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(R,{id:t,input:o});c("Household updated"),i(e,f.braUpdateHousehold);}catch(o){r(o);}}),n.command("archive").description("Archive a household").argument("<id>","Household ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(x,{id:t});c(`Household archived: ${o.braArchiveHousehold}`),i(e,{archived:o.braArchiveHousehold});}catch(o){r(o);}});}function yt(a){let n=a.command("accounts").description("Brainyrich financial accounts");n.command("list").description("List accounts").option("--household <id>","Filter by household ID").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(L,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListAccounts.items,{headers:["ID","Name","Type","Status","Cash","Currency"],rows:e.braListAccounts.items.map(o=>[p(o.id,12),o.name,o.type??"-",o.status??"-",o.cashBalance!=null?String(o.cashBalance):"-",o.currency??"-"])});}catch(e){r(e);}}),n.command("get").description("Get an account by id").argument("<id>","Account ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(S,{id:t});if(!o.braAccount)throw new u(`Account ${t} not found`);i(e,o.braAccount);}catch(o){r(o);}}),n.command("create").description("Create an account").requiredOption("--name <name>","Account name").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--type <t>","BANK|BROKERAGE|RETIREMENT|CRYPTO|REAL_ESTATE|LIABILITY|CASH|ALTERNATIVE").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--currency <c>","Currency code").option("--cash-balance <n>","Cash balance",d).option("--institution <s>","Institution name").option("--account-mask <s>","Account mask").option("--manual","Mark as manually-tracked").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.currency&&(e.currency=t.currency),t.cashBalance!==void 0&&(e.cashBalance=t.cashBalance),t.institution&&(e.institution=t.institution),t.accountMask&&(e.accountMask=t.accountMask),t.manual&&(e.isManual=!0);let o=await s(v,{input:e});c(`Account created: ${o.braCreateAccount.name}`),i(t,o.braCreateAccount);}catch(e){r(e);}}),n.command("update").description("Update an account").argument("<id>","Account ID").option("--name <name>","Account name").option("--household <id>","Household ID").option("--type <t>","BANK|BROKERAGE|RETIREMENT|CRYPTO|REAL_ESTATE|LIABILITY|CASH|ALTERNATIVE").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--currency <c>","Currency code").option("--cash-balance <n>","Cash balance",d).option("--institution <s>","Institution name").option("--account-mask <s>","Account mask").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.household&&(o.householdId=e.household),e.type&&(o.type=e.type.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.currency&&(o.currency=e.currency),e.cashBalance!==void 0&&(o.cashBalance=e.cashBalance),e.institution!==void 0&&(o.institution=e.institution),e.accountMask!==void 0&&(o.accountMask=e.accountMask),!Object.keys(o).length)throw new u("No updates specified");let f=await s($,{id:t,input:o});c("Account updated"),i(e,f.braUpdateAccount);}catch(o){r(o);}}),n.command("archive").description("Archive an account").argument("<id>","Account ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(N,{id:t});c(`Account archived: ${o.braArchiveAccount}`),i(e,{archived:o.braArchiveAccount});}catch(o){r(o);}});}function It(a){let n=a.command("holdings").description("Brainyrich account holdings");n.command("list").description("List holdings for an account or portfolio").option("--account <id>","Filter by account ID").option("--portfolio <id>","Filter by portfolio ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(G,{accountId:t.account,portfolioId:t.portfolio});i(t,e.braListHoldings,{headers:["ID","Symbol","Class","Qty","Last","Market Value"],rows:e.braListHoldings.map(o=>[p(o.id,12),o.symbol,o.assetClass??"-",o.quantity!=null?String(o.quantity):"-",o.lastPrice!=null?String(o.lastPrice):"-",o.marketValue!=null?String(o.marketValue):"-"])});}catch(e){r(e);}}),n.command("create").description("Create a holding").requiredOption("--account <id>","Account ID").requiredOption("--symbol <s>","Ticker symbol").option("--portfolio <id>","Portfolio ID").option("--name <s>","Display name").option("--asset-class <c>","EQUITY|FIXED_INCOME|CASH|REAL_ESTATE|COMMODITY|CRYPTO|ALTERNATIVE").option("--quantity <n>","Quantity",d).option("--cost-basis <n>","Cost basis",d).option("--last-price <n>","Last price",d).option("--currency <c>","Currency code").option("--as-of <iso>","As-of date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={accountId:t.account,symbol:t.symbol};t.portfolio&&(e.portfolioId=t.portfolio),t.name&&(e.name=t.name),t.assetClass&&(e.assetClass=t.assetClass.toUpperCase()),t.quantity!==void 0&&(e.quantity=t.quantity),t.costBasis!==void 0&&(e.costBasis=t.costBasis),t.lastPrice!==void 0&&(e.lastPrice=t.lastPrice),t.currency&&(e.currency=t.currency),t.asOf&&(e.asOf=t.asOf);let o=await s(H,{input:e});c(`Holding created: ${o.braCreateHolding.symbol}`),i(t,o.braCreateHolding);}catch(e){r(e);}}),n.command("update").description("Update a holding").argument("<id>","Holding ID").option("--name <s>","Display name").option("--asset-class <c>","EQUITY|FIXED_INCOME|CASH|REAL_ESTATE|COMMODITY|CRYPTO|ALTERNATIVE").option("--quantity <n>","Quantity",d).option("--cost-basis <n>","Cost basis",d).option("--last-price <n>","Last price",d).option("--portfolio <id>","Portfolio ID").option("--as-of <iso>","As-of date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name!==void 0&&(o.name=e.name),e.assetClass&&(o.assetClass=e.assetClass.toUpperCase()),e.quantity!==void 0&&(o.quantity=e.quantity),e.costBasis!==void 0&&(o.costBasis=e.costBasis),e.lastPrice!==void 0&&(o.lastPrice=e.lastPrice),e.portfolio&&(o.portfolioId=e.portfolio),e.asOf&&(o.asOf=e.asOf),!Object.keys(o).length)throw new u("No updates specified");let f=await s(_,{id:t,input:o});c("Holding updated"),i(e,f.braUpdateHolding);}catch(o){r(o);}}),n.command("delete").description("Delete a holding").argument("<id>","Holding ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(U,{id:t});c(`Holding deleted: ${o.braDeleteHolding}`),i(e,{deleted:o.braDeleteHolding});}catch(o){r(o);}});}function Ct(a){let n=a.command("portfolios").description("Brainyrich portfolios");n.command("list").description("List portfolios").option("--household <id>","Filter by household ID").option("--status <s>","DRAFT|ACTIVE|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(q,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListPortfolios.items,{headers:["ID","Name","Status","Currency","Drift %"],rows:e.braListPortfolios.items.map(o=>[p(o.id,12),o.name,o.status??"-",o.baseCurrency??"-",o.driftThresholdPct!=null?String(o.driftThresholdPct):"-"])});}catch(e){r(e);}}),n.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(B,{id:t});if(!o.braPortfolio)throw new u(`Portfolio ${t} not found`);i(e,o.braPortfolio);}catch(o){r(o);}}),n.command("create").description("Create a portfolio").requiredOption("--name <name>","Portfolio name").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--description <s>","Description").option("--base-currency <c>","Base currency code").option("--drift-threshold-pct <n>","Drift threshold %",d).option("--model-portfolio <id>","Model portfolio ID").option("--target-allocation <json>","Target allocation JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.description&&(e.description=t.description),t.baseCurrency&&(e.baseCurrency=t.baseCurrency),t.driftThresholdPct!==void 0&&(e.driftThresholdPct=t.driftThresholdPct),t.modelPortfolio&&(e.modelPortfolioId=t.modelPortfolio),t.targetAllocation&&(e.targetAllocation=h("target-allocation",t.targetAllocation)),t.tags&&(e.tags=y(t.tags));let o=await s(M,{input:e});c(`Portfolio created: ${o.braCreatePortfolio.name}`),i(t,o.braCreatePortfolio);}catch(e){r(e);}}),n.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--name <name>","Portfolio name").option("--description <s>","Description").option("--status <s>","DRAFT|ACTIVE|ARCHIVED").option("--base-currency <c>","Base currency code").option("--drift-threshold-pct <n>","Drift threshold %",d).option("--model-portfolio <id>","Model portfolio ID").option("--target-allocation <json>","Target allocation JSON").option("--tags <csv>","Comma-separated tags").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.status&&(o.status=e.status.toUpperCase()),e.baseCurrency&&(o.baseCurrency=e.baseCurrency),e.driftThresholdPct!==void 0&&(o.driftThresholdPct=e.driftThresholdPct),e.modelPortfolio&&(o.modelPortfolioId=e.modelPortfolio),e.targetAllocation&&(o.targetAllocation=h("target-allocation",e.targetAllocation)),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(F,{id:t,input:o});c("Portfolio updated"),i(e,f.braUpdatePortfolio);}catch(o){r(o);}}),n.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(j,{id:t});c(`Portfolio archived: ${o.braArchivePortfolio}`),i(e,{archived:o.braArchivePortfolio});}catch(o){r(o);}});}function bt(a){let n=a.command("model-portfolios").description("Brainyrich model portfolios");n.command("list").description("List model portfolios").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(W);i(t,e.braListModelPortfolios,{headers:["ID","Name","Risk","Currency","Active"],rows:e.braListModelPortfolios.map(o=>[p(o.id,12),o.name,o.riskProfile??"-",o.baseCurrency??"-",o.isActive?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a model portfolio by id").argument("<id>","Model portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(V,{id:t});if(!o.braModelPortfolio)throw new u(`Model portfolio ${t} not found`);i(e,o.braModelPortfolio);}catch(o){r(o);}}),n.command("create").description("Create a model portfolio").requiredOption("--name <name>","Model portfolio name").option("--description <s>","Description").option("--base-currency <c>","Base currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--allocations <json>","Allocations JSON array: [{ assetClass, targetPct }]").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};if(t.description&&(e.description=t.description),t.baseCurrency&&(e.baseCurrency=t.baseCurrency),t.riskProfile&&(e.riskProfile=t.riskProfile.toUpperCase()),t.allocations){let f=h("allocations",t.allocations);if(!Array.isArray(f))throw new u("--allocations must be a JSON array");e.allocations=f;}let o=await s(J,{input:e});c(`Model portfolio created: ${o.braCreateModelPortfolio.name}`),i(t,o.braCreateModelPortfolio);}catch(e){r(e);}});}function At(a){let n=a.command("goals").description("Brainyrich financial goals");n.command("list").description("List goals").option("--household <id>","Filter by household ID").option("--status <s>","ACTIVE|ON_HOLD|ACHIEVED|ABANDONED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(K,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListGoals.items,{headers:["ID","Name","Type","Status","Target","Projection"],rows:e.braListGoals.items.map(o=>[p(o.id,12),o.name,o.type??"-",o.status??"-",o.targetAmount!=null?String(o.targetAmount):"-",o.projection??"-"])});}catch(e){r(e);}}),n.command("get").description("Get a goal by id").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(Y,{id:t});if(!o.braGoal)throw new u(`Goal ${t} not found`);i(e,o.braGoal);}catch(o){r(o);}}),n.command("create").description("Create a goal").requiredOption("--name <name>","Goal name").requiredOption("--target-amount <n>","Target amount",d).requiredOption("--target-date <iso>","Target date (ISO)").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--type <t>","RETIREMENT|EDUCATION|HOME|EMERGENCY_FUND|MAJOR_PURCHASE|WEALTH_GROWTH|CUSTOM").option("--currency <c>","Currency code").option("--monthly-contribution <n>","Monthly contribution",d).option("--priority <n>","Priority",m).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,targetAmount:t.targetAmount,targetDate:t.targetDate};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.type&&(e.type=t.type.toUpperCase()),t.currency&&(e.currency=t.currency),t.monthlyContribution!==void 0&&(e.monthlyContribution=t.monthlyContribution),t.priority!==void 0&&(e.priority=t.priority),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=y(t.tags));let o=await s(Q,{input:e});c(`Goal created: ${o.braCreateGoal.name}`),i(t,o.braCreateGoal);}catch(e){r(e);}}),n.command("update").description("Update a goal").argument("<id>","Goal ID").option("--name <name>","Goal name").option("--type <t>","RETIREMENT|EDUCATION|HOME|EMERGENCY_FUND|MAJOR_PURCHASE|WEALTH_GROWTH|CUSTOM").option("--status <s>","ACTIVE|ON_HOLD|ACHIEVED|ABANDONED").option("--currency <c>","Currency code").option("--target-amount <n>","Target amount",d).option("--target-date <iso>","Target date (ISO)").option("--monthly-contribution <n>","Monthly contribution",d).option("--priority <n>","Priority",m).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.type&&(o.type=e.type.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.currency&&(o.currency=e.currency),e.targetAmount!==void 0&&(o.targetAmount=e.targetAmount),e.targetDate&&(o.targetDate=e.targetDate),e.monthlyContribution!==void 0&&(o.monthlyContribution=e.monthlyContribution),e.priority!==void 0&&(o.priority=e.priority),e.notes!==void 0&&(o.notes=e.notes),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(X,{id:t,input:o});c("Goal updated"),i(e,f.braUpdateGoal);}catch(o){r(o);}}),n.command("archive").description("Archive a goal").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(Z,{id:t});c(`Goal archived: ${o.braArchiveGoal}`),i(e,{archived:o.braArchiveGoal});}catch(o){r(o);}}),n.command("recalc-projection").description("Recompute a goal's projection from a funded amount").argument("<id>","Goal ID").requiredOption("--funded-amount <n>","Funded amount",d).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(tt,{id:t,fundedAmount:e.fundedAmount});c(`Projection: ${o.braRecalcGoalProjection.projection??"-"}`),i(e,o.braRecalcGoalProjection);}catch(o){r(o);}}),n.command("list-fundings").description("List fundings linked to a goal").requiredOption("--goal <id>","Goal ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(z,{goalId:t.goal});i(t,e.braListGoalFundings,{headers:["ID","Account","Allocation %","Fixed"],rows:e.braListGoalFundings.map(o=>[p(o.id,12),p(o.accountId,12),o.allocationPct!=null?String(o.allocationPct):"-",o.fixedAmount!=null?String(o.fixedAmount):"-"])});}catch(e){r(e);}}),n.command("link-funding").description("Link an account funding to a goal").requiredOption("--goal <id>","Goal ID").requiredOption("--account <id>","Account ID").option("--allocation-pct <n>","Allocation percentage",d).option("--fixed-amount <n>","Fixed amount",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={goalId:t.goal,accountId:t.account};t.allocationPct!==void 0&&(e.allocationPct=t.allocationPct),t.fixedAmount!==void 0&&(e.fixedAmount=t.fixedAmount);let o=await s(et,{input:e});c("Funding linked"),i(t,o.braLinkGoalFunding);}catch(e){r(e);}}),n.command("unlink-funding").description("Unlink a funding from a goal").argument("<id>","Funding ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ot,{id:t});c(`Funding unlinked: ${o.braUnlinkGoalFunding}`),i(e,{unlinked:o.braUnlinkGoalFunding});}catch(o){r(o);}});}function wt(a){let n=a.command("transactions").description("Brainyrich account transactions");n.command("list").description("List transactions").option("--account <id>","Filter by account ID").option("--type <t>","BUY|SELL|DIVIDEND|INTEREST|DEPOSIT|WITHDRAWAL|FEE|TRANSFER").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(nt,{accountId:t.account,type:t.type?t.type.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListTransactions.items,{headers:["ID","Type","Symbol","Qty","Amount","Trade Date"],rows:e.braListTransactions.items.map(o=>[p(o.id,12),o.type,o.symbol??"-",o.quantity!=null?String(o.quantity):"-",o.amount!=null?String(o.amount):"-",o.tradeDate??"-"])});}catch(e){r(e);}}),n.command("record").description("Record a transaction").requiredOption("--account <id>","Account ID").requiredOption("--type <t>","BUY|SELL|DIVIDEND|INTEREST|DEPOSIT|WITHDRAWAL|FEE|TRANSFER").requiredOption("--trade-date <iso>","Trade date (ISO)").option("--holding <id>","Holding ID").option("--symbol <s>","Ticker symbol").option("--quantity <n>","Quantity",d).option("--price <n>","Price",d).option("--amount <n>","Amount",d).option("--fee <n>","Fee",d).option("--currency <c>","Currency code").option("--settle-date <iso>","Settlement date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={accountId:t.account,type:t.type.toUpperCase(),tradeDate:t.tradeDate};t.holding&&(e.holdingId=t.holding),t.symbol&&(e.symbol=t.symbol),t.quantity!==void 0&&(e.quantity=t.quantity),t.price!==void 0&&(e.price=t.price),t.amount!==void 0&&(e.amount=t.amount),t.fee!==void 0&&(e.fee=t.fee),t.currency&&(e.currency=t.currency),t.settleDate&&(e.settleDate=t.settleDate),t.notes&&(e.notes=t.notes);let o=await s(rt,{input:e});c(`Transaction recorded: ${o.braRecordTransaction.type}`),i(t,o.braRecordTransaction);}catch(e){r(e);}});}function Et(a){let n=a.command("insights").description("Brainyrich advisory insights");n.command("list").description("List insights").option("--status <s>","OPEN|ACKNOWLEDGED|RESOLVED|DISMISSED").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--subject-id <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(at,{status:t.status?t.status.toUpperCase():void 0,severity:t.severity?t.severity.toUpperCase():void 0,subjectId:t.subjectId,subjectType:t.subjectType,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListInsights.items,{headers:["ID","Title","Type","Severity","Status"],rows:e.braListInsights.items.map(o=>[p(o.id,12),o.title,o.type,o.severity??"-",o.status??"-"])});}catch(e){r(e);}}),n.command("get").description("Get an insight by id").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(it,{id:t});if(!o.braInsight)throw new u(`Insight ${t} not found`);i(e,o.braInsight);}catch(o){r(o);}}),n.command("create").description("Create an insight").requiredOption("--title <t>","Title").requiredOption("--type <t>","DRIFT|CASH_DRAG|CONCENTRATION_RISK|FEE_ANOMALY|TAX_OPPORTUNITY|GOAL_AT_RISK|REBALANCE_DUE").requiredOption("--subject-id <id>","Subject ID").requiredOption("--subject-type <t>","Subject type").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--detail <s>","Detail").option("--owner <id>","Owner user ID").option("--metrics <json>","Metrics JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase(),subjectId:t.subjectId,subjectType:t.subjectType};t.severity&&(e.severity=t.severity.toUpperCase()),t.detail&&(e.detail=t.detail),t.owner&&(e.ownerId=t.owner),t.metrics&&(e.metrics=h("metrics",t.metrics));let o=await s(st,{input:e});c(`Insight created: ${o.braCreateInsight.title}`),i(t,o.braCreateInsight);}catch(e){r(e);}}),n.command("acknowledge").description("Acknowledge an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ct,{id:t});c(`Insight acknowledged: ${o.braAcknowledgeInsight.status??"-"}`),i(e,o.braAcknowledgeInsight);}catch(o){r(o);}}),n.command("dismiss").description("Dismiss an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ut,{id:t});c(`Insight dismissed: ${o.braDismissInsight.status??"-"}`),i(e,o.braDismissInsight);}catch(o){r(o);}}),n.command("resolve").description("Resolve an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(dt,{id:t});c(`Insight resolved: ${o.braResolveInsight.status??"-"}`),i(e,o.braResolveInsight);}catch(o){r(o);}});}function Tt(a){let n=a.command("rebalances").description("Brainyrich rebalance proposals");n.command("list").description("List rebalance proposals").option("--portfolio <id>","Filter by portfolio ID").option("--household <id>","Filter by household ID").option("--status <s>","DRAFT|PROPOSED|APPROVED|REJECTED|EXECUTED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(lt,{portfolioId:t.portfolio,householdId:t.household,status:t.status?t.status.toUpperCase():void 0});i(t,e.braListRebalanceProposals,{headers:["ID","Portfolio","Status","Drift %","Rationale"],rows:e.braListRebalanceProposals.map(o=>[p(o.id,12),p(o.portfolioId,12),o.status,o.driftPct!=null?String(o.driftPct):"-",p(o.rationale??"-",30)])});}catch(e){r(e);}}),n.command("create").description("Create a rebalance proposal").requiredOption("--portfolio <id>","Portfolio ID").option("--household <id>","Household ID").option("--drift-pct <n>","Drift percentage",d).option("--rationale <s>","Rationale").option("--trades <json>","Trades JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={portfolioId:t.portfolio};t.household&&(e.householdId=t.household),t.driftPct!==void 0&&(e.driftPct=t.driftPct),t.rationale&&(e.rationale=t.rationale),t.trades&&(e.trades=h("trades",t.trades));let o=await s(pt,{input:e});c(`Rebalance proposal created: ${o.braCreateRebalanceProposal.id}`),i(t,o.braCreateRebalanceProposal);}catch(e){r(e);}}),n.command("transition").description("Advance a rebalance proposal through its review lifecycle").argument("<id>","Proposal ID").requiredOption("--status <s>","DRAFT|PROPOSED|APPROVED|REJECTED|EXECUTED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(mt,{id:t,status:e.status.toUpperCase()});c(`Proposal status set to ${o.braTransitionRebalanceProposal.status}`),i(e,o.braTransitionRebalanceProposal);}catch(o){r(o);}});}function Ot(a){a.command("analytics").description("Brainyrich net-worth analytics & health").command("net-worth").description("Net-worth summary (totals + breakdown by asset class)").option("--owner <id>","Owner user ID (defaults to the calling actor)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(ft,{ownerId:t.owner});i(t,e.braNetWorthSummary);}catch(e){r(e);}}),a.command("health").description("Brainyrich service health check (public)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await w(gt);c(e.braHealth),i(t,{health:e.braHealth});}catch(e){r(e);}});}var _t={id:"brainyrich",version:"1.0.0",displayName:"Brainyrich",dependsOn:["auth","workspaces"],register(a,n){O(n);let t=a.command("brainyrich").description("Brainyrich wealth-management platform");ht(t),yt(t),It(t),Ct(t),bt(t),At(t),wt(t),Et(t),Tt(t),Ot(t);}},Go=_t;module.exports=Go;
340
+ `;function h(a,n){try{return JSON.parse(n)}catch{throw new u(`--${a} must be valid JSON`)}}function m(a){let n=Number.parseInt(a,10);if(Number.isNaN(n))throw new u(`Expected an integer but got "${a}"`);return n}function d(a){let n=Number.parseFloat(a);if(Number.isNaN(n))throw new u(`Expected a number but got "${a}"`);return n}function y(a){return a.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function ht(a){let n=a.command("households").description("Brainyrich advisory households");n.command("list").description("List households").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(P,{status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListHouseholds.items,{headers:["ID","Name","Status","Risk","AUM","Currency"],rows:e.braListHouseholds.items.map(o=>[p(o.id,12),o.name,o.status??"-",o.riskProfile??"-",o.aum!=null?String(o.aum):"-",o.currency??"-"])});}catch(e){r(e);}}),n.command("get").description("Get a household by id").argument("<id>","Household ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(k,{id:t});if(!o.braHousehold)throw new u(`Household ${t} not found`);i(e,o.braHousehold);}catch(o){r(o);}}),n.command("create").description("Create a household").requiredOption("--name <name>","Household name").option("--advisor <id>","Advisor user ID").option("--currency <c>","Currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--primary-contact-name <s>","Primary contact name").option("--primary-contact-email <s>","Primary contact email").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.advisor&&(e.advisorId=t.advisor),t.currency&&(e.currency=t.currency),t.riskProfile&&(e.riskProfile=t.riskProfile.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.primaryContactName&&(e.primaryContactName=t.primaryContactName),t.primaryContactEmail&&(e.primaryContactEmail=t.primaryContactEmail),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=y(t.tags));let o=await s(D,{input:e});c(`Household created: ${o.braCreateHousehold.name}`),i(t,o.braCreateHousehold);}catch(e){r(e);}}),n.command("update").description("Update a household").argument("<id>","Household ID").option("--name <name>","Household name").option("--aum <n>","Assets under management",d).option("--currency <c>","Currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--status <s>","PROSPECT|ONBOARDING|ACTIVE|INACTIVE").option("--primary-contact-name <s>","Primary contact name").option("--primary-contact-email <s>","Primary contact email").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.aum!==void 0&&(o.aum=e.aum),e.currency&&(o.currency=e.currency),e.riskProfile&&(o.riskProfile=e.riskProfile.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.primaryContactName!==void 0&&(o.primaryContactName=e.primaryContactName),e.primaryContactEmail!==void 0&&(o.primaryContactEmail=e.primaryContactEmail),e.notes!==void 0&&(o.notes=e.notes),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(R,{id:t,input:o});c("Household updated"),i(e,f.braUpdateHousehold);}catch(o){r(o);}}),n.command("archive").description("Archive a household").argument("<id>","Household ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(x,{id:t});c(`Household archived: ${o.braArchiveHousehold}`),i(e,{archived:o.braArchiveHousehold});}catch(o){r(o);}});}function yt(a){let n=a.command("accounts").description("Brainyrich financial accounts");n.command("list").description("List accounts").option("--household <id>","Filter by household ID").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(L,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListAccounts.items,{headers:["ID","Name","Type","Status","Cash","Currency"],rows:e.braListAccounts.items.map(o=>[p(o.id,12),o.name,o.type??"-",o.status??"-",o.cashBalance!=null?String(o.cashBalance):"-",o.currency??"-"])});}catch(e){r(e);}}),n.command("get").description("Get an account by id").argument("<id>","Account ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(S,{id:t});if(!o.braAccount)throw new u(`Account ${t} not found`);i(e,o.braAccount);}catch(o){r(o);}}),n.command("create").description("Create an account").requiredOption("--name <name>","Account name").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--type <t>","BANK|BROKERAGE|RETIREMENT|CRYPTO|REAL_ESTATE|LIABILITY|CASH|ALTERNATIVE").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--currency <c>","Currency code").option("--cash-balance <n>","Cash balance",d).option("--institution <s>","Institution name").option("--account-mask <s>","Account mask").option("--manual","Mark as manually-tracked").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.type&&(e.type=t.type.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.currency&&(e.currency=t.currency),t.cashBalance!==void 0&&(e.cashBalance=t.cashBalance),t.institution&&(e.institution=t.institution),t.accountMask&&(e.accountMask=t.accountMask),t.manual&&(e.isManual=!0);let o=await s(v,{input:e});c(`Account created: ${o.braCreateAccount.name}`),i(t,o.braCreateAccount);}catch(e){r(e);}}),n.command("update").description("Update an account").argument("<id>","Account ID").option("--name <name>","Account name").option("--household <id>","Household ID").option("--type <t>","BANK|BROKERAGE|RETIREMENT|CRYPTO|REAL_ESTATE|LIABILITY|CASH|ALTERNATIVE").option("--status <s>","ACTIVE|ARCHIVED|CLOSED").option("--currency <c>","Currency code").option("--cash-balance <n>","Cash balance",d).option("--institution <s>","Institution name").option("--account-mask <s>","Account mask").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.household&&(o.householdId=e.household),e.type&&(o.type=e.type.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.currency&&(o.currency=e.currency),e.cashBalance!==void 0&&(o.cashBalance=e.cashBalance),e.institution!==void 0&&(o.institution=e.institution),e.accountMask!==void 0&&(o.accountMask=e.accountMask),!Object.keys(o).length)throw new u("No updates specified");let f=await s($,{id:t,input:o});c("Account updated"),i(e,f.braUpdateAccount);}catch(o){r(o);}}),n.command("archive").description("Archive an account").argument("<id>","Account ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(N,{id:t});c(`Account archived: ${o.braArchiveAccount}`),i(e,{archived:o.braArchiveAccount});}catch(o){r(o);}});}function It(a){let n=a.command("holdings").description("Brainyrich account holdings");n.command("list").description("List holdings for an account or portfolio").option("--account <id>","Filter by account ID").option("--portfolio <id>","Filter by portfolio ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(G,{accountId:t.account,portfolioId:t.portfolio});i(t,e.braListHoldings,{headers:["ID","Symbol","Class","Qty","Last","Market Value"],rows:e.braListHoldings.map(o=>[p(o.id,12),o.symbol,o.assetClass??"-",o.quantity!=null?String(o.quantity):"-",o.lastPrice!=null?String(o.lastPrice):"-",o.marketValue!=null?String(o.marketValue):"-"])});}catch(e){r(e);}}),n.command("create").description("Create a holding").requiredOption("--account <id>","Account ID").requiredOption("--symbol <s>","Ticker symbol").option("--portfolio <id>","Portfolio ID").option("--name <s>","Display name").option("--asset-class <c>","EQUITY|FIXED_INCOME|CASH|REAL_ESTATE|COMMODITY|CRYPTO|ALTERNATIVE").option("--quantity <n>","Quantity",d).option("--cost-basis <n>","Cost basis",d).option("--last-price <n>","Last price",d).option("--currency <c>","Currency code").option("--as-of <iso>","As-of date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={accountId:t.account,symbol:t.symbol};t.portfolio&&(e.portfolioId=t.portfolio),t.name&&(e.name=t.name),t.assetClass&&(e.assetClass=t.assetClass.toUpperCase()),t.quantity!==void 0&&(e.quantity=t.quantity),t.costBasis!==void 0&&(e.costBasis=t.costBasis),t.lastPrice!==void 0&&(e.lastPrice=t.lastPrice),t.currency&&(e.currency=t.currency),t.asOf&&(e.asOf=t.asOf);let o=await s(H,{input:e});c(`Holding created: ${o.braCreateHolding.symbol}`),i(t,o.braCreateHolding);}catch(e){r(e);}}),n.command("update").description("Update a holding").argument("<id>","Holding ID").option("--name <s>","Display name").option("--asset-class <c>","EQUITY|FIXED_INCOME|CASH|REAL_ESTATE|COMMODITY|CRYPTO|ALTERNATIVE").option("--quantity <n>","Quantity",d).option("--cost-basis <n>","Cost basis",d).option("--last-price <n>","Last price",d).option("--portfolio <id>","Portfolio ID").option("--as-of <iso>","As-of date (ISO)").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name!==void 0&&(o.name=e.name),e.assetClass&&(o.assetClass=e.assetClass.toUpperCase()),e.quantity!==void 0&&(o.quantity=e.quantity),e.costBasis!==void 0&&(o.costBasis=e.costBasis),e.lastPrice!==void 0&&(o.lastPrice=e.lastPrice),e.portfolio&&(o.portfolioId=e.portfolio),e.asOf&&(o.asOf=e.asOf),!Object.keys(o).length)throw new u("No updates specified");let f=await s(_,{id:t,input:o});c("Holding updated"),i(e,f.braUpdateHolding);}catch(o){r(o);}}),n.command("delete").description("Delete a holding").argument("<id>","Holding ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(U,{id:t});c(`Holding deleted: ${o.braDeleteHolding}`),i(e,{deleted:o.braDeleteHolding});}catch(o){r(o);}});}function Ct(a){let n=a.command("portfolios").description("Brainyrich portfolios");n.command("list").description("List portfolios").option("--household <id>","Filter by household ID").option("--status <s>","DRAFT|ACTIVE|ARCHIVED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(q,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListPortfolios.items,{headers:["ID","Name","Status","Currency","Drift %"],rows:e.braListPortfolios.items.map(o=>[p(o.id,12),o.name,o.status??"-",o.baseCurrency??"-",o.driftThresholdPct!=null?String(o.driftThresholdPct):"-"])});}catch(e){r(e);}}),n.command("get").description("Get a portfolio by id").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(B,{id:t});if(!o.braPortfolio)throw new u(`Portfolio ${t} not found`);i(e,o.braPortfolio);}catch(o){r(o);}}),n.command("create").description("Create a portfolio").requiredOption("--name <name>","Portfolio name").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--description <s>","Description").option("--base-currency <c>","Base currency code").option("--drift-threshold-pct <n>","Drift threshold %",d).option("--model-portfolio <id>","Model portfolio ID").option("--target-allocation <json>","Target allocation JSON").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.description&&(e.description=t.description),t.baseCurrency&&(e.baseCurrency=t.baseCurrency),t.driftThresholdPct!==void 0&&(e.driftThresholdPct=t.driftThresholdPct),t.modelPortfolio&&(e.modelPortfolioId=t.modelPortfolio),t.targetAllocation&&(e.targetAllocation=h("target-allocation",t.targetAllocation)),t.tags&&(e.tags=y(t.tags));let o=await s(M,{input:e});c(`Portfolio created: ${o.braCreatePortfolio.name}`),i(t,o.braCreatePortfolio);}catch(e){r(e);}}),n.command("update").description("Update a portfolio").argument("<id>","Portfolio ID").option("--name <name>","Portfolio name").option("--description <s>","Description").option("--status <s>","DRAFT|ACTIVE|ARCHIVED").option("--base-currency <c>","Base currency code").option("--drift-threshold-pct <n>","Drift threshold %",d).option("--model-portfolio <id>","Model portfolio ID").option("--target-allocation <json>","Target allocation JSON").option("--tags <csv>","Comma-separated tags").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.status&&(o.status=e.status.toUpperCase()),e.baseCurrency&&(o.baseCurrency=e.baseCurrency),e.driftThresholdPct!==void 0&&(o.driftThresholdPct=e.driftThresholdPct),e.modelPortfolio&&(o.modelPortfolioId=e.modelPortfolio),e.targetAllocation&&(o.targetAllocation=h("target-allocation",e.targetAllocation)),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(F,{id:t,input:o});c("Portfolio updated"),i(e,f.braUpdatePortfolio);}catch(o){r(o);}}),n.command("archive").description("Archive a portfolio").argument("<id>","Portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(j,{id:t});c(`Portfolio archived: ${o.braArchivePortfolio}`),i(e,{archived:o.braArchivePortfolio});}catch(o){r(o);}});}function bt(a){let n=a.command("model-portfolios").description("Brainyrich model portfolios");n.command("list").description("List model portfolios").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(W);i(t,e.braListModelPortfolios,{headers:["ID","Name","Risk","Currency","Active"],rows:e.braListModelPortfolios.map(o=>[p(o.id,12),o.name,o.riskProfile??"-",o.baseCurrency??"-",o.isActive?"yes":"no"])});}catch(e){r(e);}}),n.command("get").description("Get a model portfolio by id").argument("<id>","Model portfolio ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(V,{id:t});if(!o.braModelPortfolio)throw new u(`Model portfolio ${t} not found`);i(e,o.braModelPortfolio);}catch(o){r(o);}}),n.command("create").description("Create a model portfolio").requiredOption("--name <name>","Model portfolio name").option("--description <s>","Description").option("--base-currency <c>","Base currency code").option("--risk-profile <r>","CONSERVATIVE|MODERATE|BALANCED|GROWTH|AGGRESSIVE").option("--allocations <json>","Allocations JSON array: [{ assetClass, targetPct }]").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name};if(t.description&&(e.description=t.description),t.baseCurrency&&(e.baseCurrency=t.baseCurrency),t.riskProfile&&(e.riskProfile=t.riskProfile.toUpperCase()),t.allocations){let f=h("allocations",t.allocations);if(!Array.isArray(f))throw new u("--allocations must be a JSON array");e.allocations=f;}let o=await s(J,{input:e});c(`Model portfolio created: ${o.braCreateModelPortfolio.name}`),i(t,o.braCreateModelPortfolio);}catch(e){r(e);}});}function At(a){let n=a.command("goals").description("Brainyrich financial goals");n.command("list").description("List goals").option("--household <id>","Filter by household ID").option("--status <s>","ACTIVE|ON_HOLD|ACHIEVED|ABANDONED").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(K,{householdId:t.household,status:t.status?t.status.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListGoals.items,{headers:["ID","Name","Type","Status","Target","Projection"],rows:e.braListGoals.items.map(o=>[p(o.id,12),o.name,o.type??"-",o.status??"-",o.targetAmount!=null?String(o.targetAmount):"-",o.projection??"-"])});}catch(e){r(e);}}),n.command("get").description("Get a goal by id").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(Y,{id:t});if(!o.braGoal)throw new u(`Goal ${t} not found`);i(e,o.braGoal);}catch(o){r(o);}}),n.command("create").description("Create a goal").requiredOption("--name <name>","Goal name").requiredOption("--target-amount <n>","Target amount",d).requiredOption("--target-date <iso>","Target date (ISO)").option("--owner <id>","Owner user ID").option("--household <id>","Household ID").option("--type <t>","RETIREMENT|EDUCATION|HOME|EMERGENCY_FUND|MAJOR_PURCHASE|WEALTH_GROWTH|CUSTOM").option("--currency <c>","Currency code").option("--monthly-contribution <n>","Monthly contribution",d).option("--priority <n>","Priority",m).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,targetAmount:t.targetAmount,targetDate:t.targetDate};t.owner&&(e.ownerId=t.owner),t.household&&(e.householdId=t.household),t.type&&(e.type=t.type.toUpperCase()),t.currency&&(e.currency=t.currency),t.monthlyContribution!==void 0&&(e.monthlyContribution=t.monthlyContribution),t.priority!==void 0&&(e.priority=t.priority),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=y(t.tags));let o=await s(Q,{input:e});c(`Goal created: ${o.braCreateGoal.name}`),i(t,o.braCreateGoal);}catch(e){r(e);}}),n.command("update").description("Update a goal").argument("<id>","Goal ID").option("--name <name>","Goal name").option("--type <t>","RETIREMENT|EDUCATION|HOME|EMERGENCY_FUND|MAJOR_PURCHASE|WEALTH_GROWTH|CUSTOM").option("--status <s>","ACTIVE|ON_HOLD|ACHIEVED|ABANDONED").option("--currency <c>","Currency code").option("--target-amount <n>","Target amount",d).option("--target-date <iso>","Target date (ISO)").option("--monthly-contribution <n>","Monthly contribution",d).option("--priority <n>","Priority",m).option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.type&&(o.type=e.type.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.currency&&(o.currency=e.currency),e.targetAmount!==void 0&&(o.targetAmount=e.targetAmount),e.targetDate&&(o.targetDate=e.targetDate),e.monthlyContribution!==void 0&&(o.monthlyContribution=e.monthlyContribution),e.priority!==void 0&&(o.priority=e.priority),e.notes!==void 0&&(o.notes=e.notes),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new u("No updates specified");let f=await s(X,{id:t,input:o});c("Goal updated"),i(e,f.braUpdateGoal);}catch(o){r(o);}}),n.command("archive").description("Archive a goal").argument("<id>","Goal ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(Z,{id:t});c(`Goal archived: ${o.braArchiveGoal}`),i(e,{archived:o.braArchiveGoal});}catch(o){r(o);}}),n.command("recalc-projection").description("Recompute a goal's projection from a funded amount").argument("<id>","Goal ID").requiredOption("--funded-amount <n>","Funded amount",d).option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(tt,{id:t,fundedAmount:e.fundedAmount});c(`Projection: ${o.braRecalcGoalProjection.projection??"-"}`),i(e,o.braRecalcGoalProjection);}catch(o){r(o);}}),n.command("list-fundings").description("List fundings linked to a goal").requiredOption("--goal <id>","Goal ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(z,{goalId:t.goal});i(t,e.braListGoalFundings,{headers:["ID","Account","Allocation %","Fixed"],rows:e.braListGoalFundings.map(o=>[p(o.id,12),p(o.accountId,12),o.allocationPct!=null?String(o.allocationPct):"-",o.fixedAmount!=null?String(o.fixedAmount):"-"])});}catch(e){r(e);}}),n.command("link-funding").description("Link an account funding to a goal").requiredOption("--goal <id>","Goal ID").requiredOption("--account <id>","Account ID").option("--allocation-pct <n>","Allocation percentage",d).option("--fixed-amount <n>","Fixed amount",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={goalId:t.goal,accountId:t.account};t.allocationPct!==void 0&&(e.allocationPct=t.allocationPct),t.fixedAmount!==void 0&&(e.fixedAmount=t.fixedAmount);let o=await s(et,{input:e});c("Funding linked"),i(t,o.braLinkGoalFunding);}catch(e){r(e);}}),n.command("unlink-funding").description("Unlink a funding from a goal").argument("<id>","Funding ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ot,{id:t});c(`Funding unlinked: ${o.braUnlinkGoalFunding}`),i(e,{unlinked:o.braUnlinkGoalFunding});}catch(o){r(o);}});}function wt(a){let n=a.command("transactions").description("Brainyrich account transactions");n.command("list").description("List transactions").option("--account <id>","Filter by account ID").option("--type <t>","BUY|SELL|DIVIDEND|INTEREST|DEPOSIT|WITHDRAWAL|FEE|TRANSFER").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(nt,{accountId:t.account,type:t.type?t.type.toUpperCase():void 0,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListTransactions.items,{headers:["ID","Type","Symbol","Qty","Amount","Trade Date"],rows:e.braListTransactions.items.map(o=>[p(o.id,12),o.type,o.symbol??"-",o.quantity!=null?String(o.quantity):"-",o.amount!=null?String(o.amount):"-",o.tradeDate??"-"])});}catch(e){r(e);}}),n.command("record").description("Record a transaction").requiredOption("--account <id>","Account ID").requiredOption("--type <t>","BUY|SELL|DIVIDEND|INTEREST|DEPOSIT|WITHDRAWAL|FEE|TRANSFER").requiredOption("--trade-date <iso>","Trade date (ISO)").option("--holding <id>","Holding ID").option("--symbol <s>","Ticker symbol").option("--quantity <n>","Quantity",d).option("--price <n>","Price",d).option("--amount <n>","Amount",d).option("--fee <n>","Fee",d).option("--currency <c>","Currency code").option("--settle-date <iso>","Settlement date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={accountId:t.account,type:t.type.toUpperCase(),tradeDate:t.tradeDate};t.holding&&(e.holdingId=t.holding),t.symbol&&(e.symbol=t.symbol),t.quantity!==void 0&&(e.quantity=t.quantity),t.price!==void 0&&(e.price=t.price),t.amount!==void 0&&(e.amount=t.amount),t.fee!==void 0&&(e.fee=t.fee),t.currency&&(e.currency=t.currency),t.settleDate&&(e.settleDate=t.settleDate),t.notes&&(e.notes=t.notes);let o=await s(rt,{input:e});c(`Transaction recorded: ${o.braRecordTransaction.type}`),i(t,o.braRecordTransaction);}catch(e){r(e);}});}function Et(a){let n=a.command("insights").description("Brainyrich advisory insights");n.command("list").description("List insights").option("--status <s>","OPEN|ACKNOWLEDGED|RESOLVED|DISMISSED").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--subject-id <id>","Filter by subject ID").option("--subject-type <t>","Filter by subject type").option("--limit <n>","Page size",m,50).option("--offset <n>","Offset",m,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(at,{status:t.status?t.status.toUpperCase():void 0,severity:t.severity?t.severity.toUpperCase():void 0,subjectId:t.subjectId,subjectType:t.subjectType,pagination:{limit:t.limit,offset:t.offset}});i(t,e.braListInsights.items,{headers:["ID","Title","Type","Severity","Status"],rows:e.braListInsights.items.map(o=>[p(o.id,12),o.title,o.type,o.severity??"-",o.status??"-"])});}catch(e){r(e);}}),n.command("get").description("Get an insight by id").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(it,{id:t});if(!o.braInsight)throw new u(`Insight ${t} not found`);i(e,o.braInsight);}catch(o){r(o);}}),n.command("create").description("Create an insight").requiredOption("--title <t>","Title").requiredOption("--type <t>","DRIFT|CASH_DRAG|CONCENTRATION_RISK|FEE_ANOMALY|TAX_OPPORTUNITY|GOAL_AT_RISK|REBALANCE_DUE").requiredOption("--subject-id <id>","Subject ID").requiredOption("--subject-type <t>","Subject type").option("--severity <s>","INFO|LOW|MEDIUM|HIGH|CRITICAL").option("--detail <s>","Detail").option("--owner <id>","Owner user ID").option("--metrics <json>","Metrics JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase(),subjectId:t.subjectId,subjectType:t.subjectType};t.severity&&(e.severity=t.severity.toUpperCase()),t.detail&&(e.detail=t.detail),t.owner&&(e.ownerId=t.owner),t.metrics&&(e.metrics=h("metrics",t.metrics));let o=await s(st,{input:e});c(`Insight created: ${o.braCreateInsight.title}`),i(t,o.braCreateInsight);}catch(e){r(e);}}),n.command("acknowledge").description("Acknowledge an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ct,{id:t});c(`Insight acknowledged: ${o.braAcknowledgeInsight.status??"-"}`),i(e,o.braAcknowledgeInsight);}catch(o){r(o);}}),n.command("dismiss").description("Dismiss an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(ut,{id:t});c(`Insight dismissed: ${o.braDismissInsight.status??"-"}`),i(e,o.braDismissInsight);}catch(o){r(o);}}),n.command("resolve").description("Resolve an insight").argument("<id>","Insight ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(dt,{id:t});c(`Insight resolved: ${o.braResolveInsight.status??"-"}`),i(e,o.braResolveInsight);}catch(o){r(o);}});}function Ot(a){let n=a.command("rebalances").description("Brainyrich rebalance proposals");n.command("list").description("List rebalance proposals").option("--portfolio <id>","Filter by portfolio ID").option("--household <id>","Filter by household ID").option("--status <s>","DRAFT|PROPOSED|APPROVED|REJECTED|EXECUTED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(lt,{portfolioId:t.portfolio,householdId:t.household,status:t.status?t.status.toUpperCase():void 0});i(t,e.braListRebalanceProposals,{headers:["ID","Portfolio","Status","Drift %","Rationale"],rows:e.braListRebalanceProposals.map(o=>[p(o.id,12),p(o.portfolioId,12),o.status,o.driftPct!=null?String(o.driftPct):"-",p(o.rationale??"-",30)])});}catch(e){r(e);}}),n.command("create").description("Create a rebalance proposal").requiredOption("--portfolio <id>","Portfolio ID").option("--household <id>","Household ID").option("--drift-pct <n>","Drift percentage",d).option("--rationale <s>","Rationale").option("--trades <json>","Trades JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={portfolioId:t.portfolio};t.household&&(e.householdId=t.household),t.driftPct!==void 0&&(e.driftPct=t.driftPct),t.rationale&&(e.rationale=t.rationale),t.trades&&(e.trades=h("trades",t.trades));let o=await s(pt,{input:e});c(`Rebalance proposal created: ${o.braCreateRebalanceProposal.id}`),i(t,o.braCreateRebalanceProposal);}catch(e){r(e);}}),n.command("transition").description("Advance a rebalance proposal through its review lifecycle").argument("<id>","Proposal ID").requiredOption("--status <s>","DRAFT|PROPOSED|APPROVED|REJECTED|EXECUTED|CANCELLED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await s(mt,{id:t,status:e.status.toUpperCase()});c(`Proposal status set to ${o.braTransitionRebalanceProposal.status}`),i(e,o.braTransitionRebalanceProposal);}catch(o){r(o);}});}function Tt(a){a.command("analytics").description("Brainyrich net-worth analytics & health").command("net-worth").description("Net-worth summary (totals + breakdown by asset class)").option("--owner <id>","Owner user ID (defaults to the calling actor)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await s(ft,{ownerId:t.owner});i(t,e.braNetWorthSummary);}catch(e){r(e);}}),a.command("health").description("Brainyrich service health check (public)").option("-f, --format <format>","Output format").action(async t=>{try{let e=await w(gt);c(e.braHealth),i(t,{health:e.braHealth});}catch(e){r(e);}});}var _t={id:"brainyrich",version:"1.0.0",displayName:"Brainyrich",dependsOn:["auth","workspaces"],register(a,n){T(n);let t=a.command("brainyrich").description("Brainyrich wealth-management platform");ht(t),yt(t),It(t),Ct(t),bt(t),At(t),wt(t),Et(t),Ot(t),Tt(t);}},Go=_t;module.exports=Go;
@@ -1,4 +1,4 @@
1
- import {a,b,h as h$1,p as p$1,g,i,d as d$1}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var C=`
1
+ import {a,b,h as h$1,p as p$1,g,i,d as d$1}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var C=`
2
2
  query BrainyrichGetHousehold($id: ID!) {
3
3
  braHousehold(id: $id) {
4
4
  id name advisorId aum currency riskProfile status notes
@@ -228,4 +228,4 @@
228
228
  query BuiHealth {
229
229
  buiHealth
230
230
  }
231
- `;function y(o,r){try{return JSON.parse(r)}catch{throw new m(`--${o} must be valid JSON`)}}function l(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new m(`Expected an integer but got "${o}"`);return r}function I(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new m(`Expected a number but got "${o}"`);return r}function S(o){return o==="true"}function A(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function it(o){let r=o.command("courses").description("Buildmyiq courses");r.command("list").description("List courses").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(L,{status:t.status?t.status.toUpperCase():void 0,level:t.level?t.level.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:n.buiListCourses.items.map(c=>[d(c.id,12),c.title,c.level,c.status,c.language??"-",c.estimatedHours!=null?String(c.estimatedHours):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(O,{id:t});if(!n.buiCourse)throw new m(`Course ${t} not found`);s(e,n.buiCourse);}catch(n){i(n);}}),r.command("create").description("Create a course").requiredOption("--slug <slug>","URL slug").requiredOption("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public","Make the course public").option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={slug:t.slug,title:t.title,level:(t.level??"BEGINNER").toUpperCase()};t.summary&&(e.summary=t.summary),t.description&&(e.description=t.description),t.language&&(e.language=t.language),t.estimatedHours!==void 0&&(e.estimatedHours=t.estimatedHours),t.public&&(e.isPublic=!0),t.instructor&&(e.instructorId=t.instructor),t.skill&&(e.skillId=t.skill),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=A(t.tags));let n=await a(R,{input:e});u(`Course created: ${n.buiCreateCourse.title}`),s(t,n.buiCreateCourse);}catch(e){i(e);}}),r.command("update").description("Update a course").argument("<id>","Course ID").option("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public <bool>","true|false",S).option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.summary!==void 0&&(n.summary=e.summary),e.description!==void 0&&(n.description=e.description),e.level&&(n.level=e.level.toUpperCase()),e.language&&(n.language=e.language),e.estimatedHours!==void 0&&(n.estimatedHours=e.estimatedHours),e.public!==void 0&&(n.isPublic=e.public),e.instructor&&(n.instructorId=e.instructor),e.skill&&(n.skillId=e.skill),e.coverFile&&(n.coverFileId=e.coverFile),e.tags&&(n.tags=A(e.tags)),!Object.keys(n).length)throw new m("No updates specified");let c=await a(v,{id:t,input:n});u("Course updated"),s(e,c.buiUpdateCourse);}catch(n){i(n);}}),r.command("publish").description("Publish a course through its authoring lifecycle").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});u(`Course published: ${n.buiPublishCourse.title}`),s(e,n.buiPublishCourse);}catch(n){i(n);}}),r.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});u(n.buiArchiveCourse?"Course archived":"Course not archived"),s(e,{archived:n.buiArchiveCourse});}catch(n){i(n);}});}function st(o){let r=o.command("modules").description("Buildmyiq course modules");r.command("list").description("List modules for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{courseId:t.course});s(t,e.buiListModules,{headers:["ID","Title","Position","Description"],rows:e.buiListModules.map(n=>[d(n.id,12),n.title,String(n.position),d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a module").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Module title").option("--description <s>","Description").option("--position <n>","Ordering position",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let n=await a(N,{input:e});u(`Module created: ${n.buiCreateModule.title}`),s(t,n.buiCreateModule);}catch(e){i(e);}});}function at(o){let r=o.command("lessons").description("Buildmyiq course lessons");r.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("--module <id>","Filter by module ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{courseId:t.course,moduleId:t.module});s(t,e.buiListLessons,{headers:["ID","Title","Type","Position","Duration","Preview"],rows:e.buiListLessons.map(n=>[d(n.id,12),n.title,n.type,String(n.position),n.durationMin!=null?String(n.durationMin):"-",n.isPreview?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Lesson title").option("--module <id>","Module ID").option("--type <t>","ARTICLE|VIDEO|QUIZ|ASSIGNMENT|LIVE_SESSION|INTERACTIVE","ARTICLE").option("--content <s>","Lesson content").option("--duration-min <n>","Duration (minutes)",l).option("--position <n>","Ordering position",l).option("--preview","Mark as a preview lesson").option("--media-file <id>","Media File ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"ARTICLE").toUpperCase()};t.module&&(e.moduleId=t.module),t.content&&(e.content=t.content),t.durationMin!==void 0&&(e.durationMin=t.durationMin),t.position!==void 0&&(e.position=t.position),t.preview&&(e.isPreview=!0),t.mediaFile&&(e.mediaFileId=t.mediaFile);let n=await a(_,{input:e});u(`Lesson created: ${n.buiCreateLesson.title}`),s(t,n.buiCreateLesson);}catch(e){i(e);}});}function ut(o){let r=o.command("skills").description("Buildmyiq skills taxonomy");r.command("list").description("List skills").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{category:t.category?t.category.toUpperCase():void 0});s(t,e.buiListSkills,{headers:["ID","Name","Category","Active","Description"],rows:e.buiListSkills.map(n=>[d(n.id,12),n.name,n.category,n.isActive?"yes":"no",d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a skill").requiredOption("--name <name>","Skill name").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE","TECHNICAL").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"TECHNICAL").toUpperCase()};t.description&&(e.description=t.description);let n=await a(B,{input:e});u(`Skill created: ${n.buiCreateSkill.name}`),s(t,n.buiCreateSkill);}catch(e){i(e);}});}function ct(o){let r=o.command("enrollments").description("Buildmyiq enrollments & lesson progress");r.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(G,{courseId:t.course,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %"],rows:n.buiListEnrollments.items.map(c=>[d(c.id,12),d(c.courseId,12),d(c.learnerId,12),c.status,String(c.progressPct)])});}catch(e){i(e);}}),r.command("get").description("Get an enrollment by id").argument("<id>","Enrollment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t});if(!n.buiEnrollment)throw new m(`Enrollment ${t} not found`);s(e,n.buiEnrollment);}catch(n){i(n);}}),r.command("enroll").description("Enroll a learner in a course").requiredOption("--course <id>","Course ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--cohort <id>","Cohort ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course};t.learner&&(e.learnerId=t.learner),t.cohort&&(e.cohortId=t.cohort),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(F,{input:e});u(`Enrolled: ${n.buiEnroll.id}`),s(t,n.buiEnroll);}catch(e){i(e);}}),r.command("transition").description("Advance an enrollment through its lifecycle").argument("<id>","Enrollment ID").requiredOption("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(H,{id:t,status:e.status.toUpperCase()});u(`Enrollment status set to ${n.buiTransitionEnrollment.status}`),s(e,n.buiTransitionEnrollment);}catch(n){i(n);}}),r.command("record-progress").description("Record lesson progress for an enrollment").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--lesson <id>","Lesson ID").option("--status <s>","NOT_STARTED|IN_PROGRESS|COMPLETED","IN_PROGRESS").option("--seconds-spent <n>","Seconds spent",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={enrollmentId:t.enrollment,lessonId:t.lesson,status:(t.status??"IN_PROGRESS").toUpperCase()};t.secondsSpent!==void 0&&(e.secondsSpent=t.secondsSpent);let n=await a(W,{input:e});u(`Progress recorded: ${n.buiRecordLessonProgress.status}`),s(t,n.buiRecordLessonProgress);}catch(e){i(e);}});}function dt(o){let r=o.command("cohorts").description("Buildmyiq cohorts");r.command("list").description("List cohorts").option("--course <id>","Filter by course ID").option("--status <s>","SCHEDULED|ENROLLING|ACTIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListCohorts,{headers:["ID","Name","Status","Capacity","Start","End"],rows:e.buiListCohorts.map(n=>[d(n.id,12),n.name,n.status,String(n.capacity),E(n.startDate),E(n.endDate)])});}catch(e){i(e);}}),r.command("create").description("Create a cohort").requiredOption("--course <id>","Course ID").requiredOption("--name <name>","Cohort name").option("--capacity <n>","Capacity",l).option("--facilitator <id>","Facilitator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,name:t.name};t.capacity!==void 0&&(e.capacity=t.capacity),t.facilitator&&(e.facilitatorId=t.facilitator),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(V,{input:e});u(`Cohort created: ${n.buiCreateCohort.name}`),s(t,n.buiCreateCohort);}catch(e){i(e);}});}function pt(o){let r=o.command("certificates").description("Buildmyiq certificates");r.command("list").description("List certificates").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{courseId:t.course,learnerId:t.learner});s(t,e.buiListCertificates,{headers:["ID","Serial","Learner","Status","Score","Issued"],rows:e.buiListCertificates.map(n=>[d(n.id,12),n.serial,d(n.learnerId,12),n.status,n.finalScore!=null?String(n.finalScore):"-",E(n.issuedAt)])});}catch(e){i(e);}}),r.command("issue").description("Issue a certificate").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--serial <s>","Certificate serial").option("--enrollment <id>","Enrollment ID").option("--final-score <n>","Final score",I).option("--file <id>","Rendered certificate PDF File ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,learnerId:t.learner,serial:t.serial};t.enrollment&&(e.enrollmentId=t.enrollment),t.finalScore!==void 0&&(e.finalScore=t.finalScore),t.file&&(e.fileId=t.file),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(Q,{input:e});u(`Certificate issued: ${n.buiIssueCertificate.serial}`),s(t,n.buiIssueCertificate);}catch(e){i(e);}}),r.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});u(`Certificate revoked: ${n.buiRevokeCertificate.serial}`),s(e,n.buiRevokeCertificate);}catch(n){i(n);}});}function lt(o){let r=o.command("assessments").description("Buildmyiq assessments & questions");r.command("list").description("List assessments for a course").requiredOption("--course <id>","Course ID").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListAssessments,{headers:["ID","Title","Type","Status","Pass","Attempts","Graded"],rows:e.buiListAssessments.map(n=>[d(n.id,12),n.title,n.type,n.status,n.passingScore!=null?String(n.passingScore):"-",n.maxAttempts!=null?String(n.maxAttempts):"-",n.isGraded?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get an assessment by id").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});if(!n.buiAssessment)throw new m(`Assessment ${t} not found`);s(e,n.buiAssessment);}catch(n){i(n);}}),r.command("create").description("Create an assessment").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Assessment title").option("--type <t>","QUIZ|EXAM|ASSIGNMENT|SURVEY|PRACTICAL","QUIZ").option("--description <s>","Description").option("--passing-score <n>","Passing score",I).option("--max-attempts <n>","Max attempts",l).option("--time-limit-min <n>","Time limit (minutes)",l).option("--graded","Mark assessment as graded").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"QUIZ").toUpperCase()};t.description&&(e.description=t.description),t.passingScore!==void 0&&(e.passingScore=t.passingScore),t.maxAttempts!==void 0&&(e.maxAttempts=t.maxAttempts),t.timeLimitMin!==void 0&&(e.timeLimitMin=t.timeLimitMin),t.graded&&(e.isGraded=!0);let n=await a(X,{input:e});u(`Assessment created: ${n.buiCreateAssessment.title}`),s(t,n.buiCreateAssessment);}catch(e){i(e);}}),r.command("publish").description("Publish an assessment").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Assessment published: ${n.buiPublishAssessment.title}`),s(e,n.buiPublishAssessment);}catch(n){i(n);}}),r.command("add-question").description("Add a question to an assessment").requiredOption("--assessment <id>","Assessment ID").requiredOption("--prompt <p>","Question prompt").option("--type <t>","SINGLE_CHOICE|MULTIPLE_CHOICE|TRUE_FALSE|SHORT_ANSWER|ESSAY|CODE","SINGLE_CHOICE").option("--points <n>","Points",I).option("--position <n>","Ordering position",l).option("--explanation <s>","Explanation").option("--options <json>","Options JSON").option("--answer-key <json>","Answer key JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment,prompt:t.prompt,type:(t.type??"SINGLE_CHOICE").toUpperCase()};t.points!==void 0&&(e.points=t.points),t.position!==void 0&&(e.position=t.position),t.explanation&&(e.explanation=t.explanation),t.options&&(e.options=y("options",t.options)),t.answerKey&&(e.answerKey=y("answer-key",t.answerKey));let n=await a(tt,{input:e});u(`Question added: ${d(n.buiCreateQuestion.prompt,40)}`),s(t,n.buiCreateQuestion);}catch(e){i(e);}});}function mt(o){let r=o.command("submissions").description("Buildmyiq assessment submissions");r.command("list").description("List submissions").option("--assessment <id>","Filter by assessment ID").option("--learner <id>","Filter by learner ID").option("--status <s>","IN_PROGRESS|SUBMITTED|GRADING|GRADED|RETURNED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(et,{assessmentId:t.assessment,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListSubmissions.items,{headers:["ID","Assessment","Learner","Attempt","Status","Score","Passed"],rows:n.buiListSubmissions.items.map(c=>[d(c.id,12),d(c.assessmentId,12),d(c.learnerId,12),String(c.attempt),c.status,c.score!=null?String(c.score):"-",c.passed==null?"-":c.passed?"yes":"no"])});}catch(e){i(e);}}),r.command("submit").description("Submit an assessment attempt").requiredOption("--assessment <id>","Assessment ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--enrollment <id>","Enrollment ID").option("--attempt <n>","Attempt number",l).option("--answers <json>","Answers JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment};t.learner&&(e.learnerId=t.learner),t.enrollment&&(e.enrollmentId=t.enrollment),t.attempt!==void 0&&(e.attempt=t.attempt),t.answers&&(e.answers=y("answers",t.answers));let n=await a(nt,{input:e});u(`Submission created: ${n.buiSubmitAssessment.id}`),s(t,n.buiSubmitAssessment);}catch(e){i(e);}}),r.command("grade").description("Grade a submission").argument("<id>","Submission ID").requiredOption("--score <n>","Score",I).option("--passed <bool>","true|false",S).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={score:e.score};e.passed!==void 0&&(n.passed=e.passed),e.feedback&&(n.feedback=e.feedback);let c=await a(rt,{id:t,input:n});u(`Submission graded: ${c.buiGradeSubmission.status}`),s(e,c.buiGradeSubmission);}catch(n){i(n);}});}function ft(o){o.command("health").description("Buildmyiq subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await w(ot);u(t.buiHealth),s(r,{health:t.buiHealth});}catch(t){i(t);}});}var Tt={id:"buildmyiq",version:"1.0.0",displayName:"Buildmyiq",dependsOn:["auth","workspaces"],register(o,r){T(r);let t=o.command("buildmyiq").description("Buildmyiq education, learning & development platform");it(t),st(t),at(t),ut(t),ct(t),dt(t),pt(t),lt(t),mt(t),ft(t);}},An=Tt;module.exports=An;
231
+ `;function y(o,r){try{return JSON.parse(r)}catch{throw new m(`--${o} must be valid JSON`)}}function l(o){let r=Number.parseInt(o,10);if(Number.isNaN(r))throw new m(`Expected an integer but got "${o}"`);return r}function I(o){let r=Number.parseFloat(o);if(Number.isNaN(r))throw new m(`Expected a number but got "${o}"`);return r}function S(o){return o==="true"}function k(o){return o.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function it(o){let r=o.command("courses").description("Buildmyiq courses");r.command("list").description("List courses").option("--status <s>","DRAFT|IN_REVIEW|PUBLISHED|ARCHIVED").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(L,{status:t.status?t.status.toUpperCase():void 0,level:t.level?t.level.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListCourses.items,{headers:["ID","Title","Level","Status","Language","Hours"],rows:n.buiListCourses.items.map(c=>[d(c.id,12),c.title,c.level,c.status,c.language??"-",c.estimatedHours!=null?String(c.estimatedHours):"-"])});}catch(e){i(e);}}),r.command("get").description("Get a course by id").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(O,{id:t});if(!n.buiCourse)throw new m(`Course ${t} not found`);s(e,n.buiCourse);}catch(n){i(n);}}),r.command("create").description("Create a course").requiredOption("--slug <slug>","URL slug").requiredOption("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT","BEGINNER").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public","Make the course public").option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={slug:t.slug,title:t.title,level:(t.level??"BEGINNER").toUpperCase()};t.summary&&(e.summary=t.summary),t.description&&(e.description=t.description),t.language&&(e.language=t.language),t.estimatedHours!==void 0&&(e.estimatedHours=t.estimatedHours),t.public&&(e.isPublic=!0),t.instructor&&(e.instructorId=t.instructor),t.skill&&(e.skillId=t.skill),t.coverFile&&(e.coverFileId=t.coverFile),t.tags&&(e.tags=k(t.tags));let n=await a(R,{input:e});u(`Course created: ${n.buiCreateCourse.title}`),s(t,n.buiCreateCourse);}catch(e){i(e);}}),r.command("update").description("Update a course").argument("<id>","Course ID").option("--title <title>","Course title").option("--summary <s>","Short summary").option("--description <s>","Description").option("--level <l>","BEGINNER|INTERMEDIATE|ADVANCED|EXPERT").option("--language <l>","Language code").option("--estimated-hours <n>","Estimated hours",l).option("--public <bool>","true|false",S).option("--instructor <id>","Instructor user ID").option("--skill <id>","Skill ID").option("--cover-file <id>","Cover image File ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.title&&(n.title=e.title),e.summary!==void 0&&(n.summary=e.summary),e.description!==void 0&&(n.description=e.description),e.level&&(n.level=e.level.toUpperCase()),e.language&&(n.language=e.language),e.estimatedHours!==void 0&&(n.estimatedHours=e.estimatedHours),e.public!==void 0&&(n.isPublic=e.public),e.instructor&&(n.instructorId=e.instructor),e.skill&&(n.skillId=e.skill),e.coverFile&&(n.coverFileId=e.coverFile),e.tags&&(n.tags=k(e.tags)),!Object.keys(n).length)throw new m("No updates specified");let c=await a(v,{id:t,input:n});u("Course updated"),s(e,c.buiUpdateCourse);}catch(n){i(n);}}),r.command("publish").description("Publish a course through its authoring lifecycle").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t});u(`Course published: ${n.buiPublishCourse.title}`),s(e,n.buiPublishCourse);}catch(n){i(n);}}),r.command("archive").description("Archive a course").argument("<id>","Course ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a($,{id:t});u(n.buiArchiveCourse?"Course archived":"Course not archived"),s(e,{archived:n.buiArchiveCourse});}catch(n){i(n);}});}function st(o){let r=o.command("modules").description("Buildmyiq course modules");r.command("list").description("List modules for a course").requiredOption("--course <id>","Course ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(P,{courseId:t.course});s(t,e.buiListModules,{headers:["ID","Title","Position","Description"],rows:e.buiListModules.map(n=>[d(n.id,12),n.title,String(n.position),d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a module").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Module title").option("--description <s>","Description").option("--position <n>","Ordering position",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title};t.description&&(e.description=t.description),t.position!==void 0&&(e.position=t.position);let n=await a(N,{input:e});u(`Module created: ${n.buiCreateModule.title}`),s(t,n.buiCreateModule);}catch(e){i(e);}});}function at(o){let r=o.command("lessons").description("Buildmyiq course lessons");r.command("list").description("List lessons for a course").requiredOption("--course <id>","Course ID").option("--module <id>","Filter by module ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{courseId:t.course,moduleId:t.module});s(t,e.buiListLessons,{headers:["ID","Title","Type","Position","Duration","Preview"],rows:e.buiListLessons.map(n=>[d(n.id,12),n.title,n.type,String(n.position),n.durationMin!=null?String(n.durationMin):"-",n.isPreview?"yes":"no"])});}catch(e){i(e);}}),r.command("create").description("Create a lesson").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Lesson title").option("--module <id>","Module ID").option("--type <t>","ARTICLE|VIDEO|QUIZ|ASSIGNMENT|LIVE_SESSION|INTERACTIVE","ARTICLE").option("--content <s>","Lesson content").option("--duration-min <n>","Duration (minutes)",l).option("--position <n>","Ordering position",l).option("--preview","Mark as a preview lesson").option("--media-file <id>","Media File ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"ARTICLE").toUpperCase()};t.module&&(e.moduleId=t.module),t.content&&(e.content=t.content),t.durationMin!==void 0&&(e.durationMin=t.durationMin),t.position!==void 0&&(e.position=t.position),t.preview&&(e.isPreview=!0),t.mediaFile&&(e.mediaFileId=t.mediaFile);let n=await a(_,{input:e});u(`Lesson created: ${n.buiCreateLesson.title}`),s(t,n.buiCreateLesson);}catch(e){i(e);}});}function ut(o){let r=o.command("skills").description("Buildmyiq skills taxonomy");r.command("list").description("List skills").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{category:t.category?t.category.toUpperCase():void 0});s(t,e.buiListSkills,{headers:["ID","Name","Category","Active","Description"],rows:e.buiListSkills.map(n=>[d(n.id,12),n.name,n.category,n.isActive?"yes":"no",d(n.description??"-",40)])});}catch(e){i(e);}}),r.command("create").description("Create a skill").requiredOption("--name <name>","Skill name").option("--category <c>","TECHNICAL|COGNITIVE|CREATIVE|SOCIAL|BUSINESS|LANGUAGE","TECHNICAL").option("--description <s>","Description").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,category:(t.category??"TECHNICAL").toUpperCase()};t.description&&(e.description=t.description);let n=await a(B,{input:e});u(`Skill created: ${n.buiCreateSkill.name}`),s(t,n.buiCreateSkill);}catch(e){i(e);}});}function ct(o){let r=o.command("enrollments").description("Buildmyiq enrollments & lesson progress");r.command("list").description("List enrollments").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(G,{courseId:t.course,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListEnrollments.items,{headers:["ID","Course","Learner","Status","Progress %"],rows:n.buiListEnrollments.items.map(c=>[d(c.id,12),d(c.courseId,12),d(c.learnerId,12),c.status,String(c.progressPct)])});}catch(e){i(e);}}),r.command("get").description("Get an enrollment by id").argument("<id>","Enrollment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t});if(!n.buiEnrollment)throw new m(`Enrollment ${t} not found`);s(e,n.buiEnrollment);}catch(n){i(n);}}),r.command("enroll").description("Enroll a learner in a course").requiredOption("--course <id>","Course ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--cohort <id>","Cohort ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course};t.learner&&(e.learnerId=t.learner),t.cohort&&(e.cohortId=t.cohort),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(F,{input:e});u(`Enrolled: ${n.buiEnroll.id}`),s(t,n.buiEnroll);}catch(e){i(e);}}),r.command("transition").description("Advance an enrollment through its lifecycle").argument("<id>","Enrollment ID").requiredOption("--status <s>","ENROLLED|IN_PROGRESS|COMPLETED|DROPPED|EXPIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(H,{id:t,status:e.status.toUpperCase()});u(`Enrollment status set to ${n.buiTransitionEnrollment.status}`),s(e,n.buiTransitionEnrollment);}catch(n){i(n);}}),r.command("record-progress").description("Record lesson progress for an enrollment").requiredOption("--enrollment <id>","Enrollment ID").requiredOption("--lesson <id>","Lesson ID").option("--status <s>","NOT_STARTED|IN_PROGRESS|COMPLETED","IN_PROGRESS").option("--seconds-spent <n>","Seconds spent",l).option("-f, --format <format>","Output format").action(async t=>{try{let e={enrollmentId:t.enrollment,lessonId:t.lesson,status:(t.status??"IN_PROGRESS").toUpperCase()};t.secondsSpent!==void 0&&(e.secondsSpent=t.secondsSpent);let n=await a(W,{input:e});u(`Progress recorded: ${n.buiRecordLessonProgress.status}`),s(t,n.buiRecordLessonProgress);}catch(e){i(e);}});}function dt(o){let r=o.command("cohorts").description("Buildmyiq cohorts");r.command("list").description("List cohorts").option("--course <id>","Filter by course ID").option("--status <s>","SCHEDULED|ENROLLING|ACTIVE|COMPLETED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListCohorts,{headers:["ID","Name","Status","Capacity","Start","End"],rows:e.buiListCohorts.map(n=>[d(n.id,12),n.name,n.status,String(n.capacity),E(n.startDate),E(n.endDate)])});}catch(e){i(e);}}),r.command("create").description("Create a cohort").requiredOption("--course <id>","Course ID").requiredOption("--name <name>","Cohort name").option("--capacity <n>","Capacity",l).option("--facilitator <id>","Facilitator user ID").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,name:t.name};t.capacity!==void 0&&(e.capacity=t.capacity),t.facilitator&&(e.facilitatorId=t.facilitator),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate);let n=await a(V,{input:e});u(`Cohort created: ${n.buiCreateCohort.name}`),s(t,n.buiCreateCohort);}catch(e){i(e);}});}function pt(o){let r=o.command("certificates").description("Buildmyiq certificates");r.command("list").description("List certificates").option("--course <id>","Filter by course ID").option("--learner <id>","Filter by learner ID").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{courseId:t.course,learnerId:t.learner});s(t,e.buiListCertificates,{headers:["ID","Serial","Learner","Status","Score","Issued"],rows:e.buiListCertificates.map(n=>[d(n.id,12),n.serial,d(n.learnerId,12),n.status,n.finalScore!=null?String(n.finalScore):"-",E(n.issuedAt)])});}catch(e){i(e);}}),r.command("issue").description("Issue a certificate").requiredOption("--course <id>","Course ID").requiredOption("--learner <id>","Learner ID").requiredOption("--serial <s>","Certificate serial").option("--enrollment <id>","Enrollment ID").option("--final-score <n>","Final score",I).option("--file <id>","Rendered certificate PDF File ID").option("--expires-at <iso>","Expiry (ISO date)").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,learnerId:t.learner,serial:t.serial};t.enrollment&&(e.enrollmentId=t.enrollment),t.finalScore!==void 0&&(e.finalScore=t.finalScore),t.file&&(e.fileId=t.file),t.expiresAt&&(e.expiresAt=t.expiresAt);let n=await a(Q,{input:e});u(`Certificate issued: ${n.buiIssueCertificate.serial}`),s(t,n.buiIssueCertificate);}catch(e){i(e);}}),r.command("revoke").description("Revoke a certificate").argument("<id>","Certificate ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});u(`Certificate revoked: ${n.buiRevokeCertificate.serial}`),s(e,n.buiRevokeCertificate);}catch(n){i(n);}});}function lt(o){let r=o.command("assessments").description("Buildmyiq assessments & questions");r.command("list").description("List assessments for a course").requiredOption("--course <id>","Course ID").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Y,{courseId:t.course,status:t.status?t.status.toUpperCase():void 0});s(t,e.buiListAssessments,{headers:["ID","Title","Type","Status","Pass","Attempts","Graded"],rows:e.buiListAssessments.map(n=>[d(n.id,12),n.title,n.type,n.status,n.passingScore!=null?String(n.passingScore):"-",n.maxAttempts!=null?String(n.maxAttempts):"-",n.isGraded?"yes":"no"])});}catch(e){i(e);}}),r.command("get").description("Get an assessment by id").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(J,{id:t});if(!n.buiAssessment)throw new m(`Assessment ${t} not found`);s(e,n.buiAssessment);}catch(n){i(n);}}),r.command("create").description("Create an assessment").requiredOption("--course <id>","Course ID").requiredOption("--title <title>","Assessment title").option("--type <t>","QUIZ|EXAM|ASSIGNMENT|SURVEY|PRACTICAL","QUIZ").option("--description <s>","Description").option("--passing-score <n>","Passing score",I).option("--max-attempts <n>","Max attempts",l).option("--time-limit-min <n>","Time limit (minutes)",l).option("--graded","Mark assessment as graded").option("-f, --format <format>","Output format").action(async t=>{try{let e={courseId:t.course,title:t.title,type:(t.type??"QUIZ").toUpperCase()};t.description&&(e.description=t.description),t.passingScore!==void 0&&(e.passingScore=t.passingScore),t.maxAttempts!==void 0&&(e.maxAttempts=t.maxAttempts),t.timeLimitMin!==void 0&&(e.timeLimitMin=t.timeLimitMin),t.graded&&(e.isGraded=!0);let n=await a(X,{input:e});u(`Assessment created: ${n.buiCreateAssessment.title}`),s(t,n.buiCreateAssessment);}catch(e){i(e);}}),r.command("publish").description("Publish an assessment").argument("<id>","Assessment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(Z,{id:t});u(`Assessment published: ${n.buiPublishAssessment.title}`),s(e,n.buiPublishAssessment);}catch(n){i(n);}}),r.command("add-question").description("Add a question to an assessment").requiredOption("--assessment <id>","Assessment ID").requiredOption("--prompt <p>","Question prompt").option("--type <t>","SINGLE_CHOICE|MULTIPLE_CHOICE|TRUE_FALSE|SHORT_ANSWER|ESSAY|CODE","SINGLE_CHOICE").option("--points <n>","Points",I).option("--position <n>","Ordering position",l).option("--explanation <s>","Explanation").option("--options <json>","Options JSON").option("--answer-key <json>","Answer key JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment,prompt:t.prompt,type:(t.type??"SINGLE_CHOICE").toUpperCase()};t.points!==void 0&&(e.points=t.points),t.position!==void 0&&(e.position=t.position),t.explanation&&(e.explanation=t.explanation),t.options&&(e.options=y("options",t.options)),t.answerKey&&(e.answerKey=y("answer-key",t.answerKey));let n=await a(tt,{input:e});u(`Question added: ${d(n.buiCreateQuestion.prompt,40)}`),s(t,n.buiCreateQuestion);}catch(e){i(e);}});}function mt(o){let r=o.command("submissions").description("Buildmyiq assessment submissions");r.command("list").description("List submissions").option("--assessment <id>","Filter by assessment ID").option("--learner <id>","Filter by learner ID").option("--status <s>","IN_PROGRESS|SUBMITTED|GRADING|GRADED|RETURNED").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("--cursor <c>","Pagination cursor").option("-f, --format <format>","Output format").action(async t=>{try{let e={};t.limit!==void 0&&(e.limit=t.limit),t.offset!==void 0&&(e.offset=t.offset),t.cursor&&(e.cursor=t.cursor);let n=await a(et,{assessmentId:t.assessment,learnerId:t.learner,status:t.status?t.status.toUpperCase():void 0,pagination:Object.keys(e).length?e:void 0});s(t,n.buiListSubmissions.items,{headers:["ID","Assessment","Learner","Attempt","Status","Score","Passed"],rows:n.buiListSubmissions.items.map(c=>[d(c.id,12),d(c.assessmentId,12),d(c.learnerId,12),String(c.attempt),c.status,c.score!=null?String(c.score):"-",c.passed==null?"-":c.passed?"yes":"no"])});}catch(e){i(e);}}),r.command("submit").description("Submit an assessment attempt").requiredOption("--assessment <id>","Assessment ID").option("--learner <id>","Learner ID (defaults to the calling actor)").option("--enrollment <id>","Enrollment ID").option("--attempt <n>","Attempt number",l).option("--answers <json>","Answers JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assessmentId:t.assessment};t.learner&&(e.learnerId=t.learner),t.enrollment&&(e.enrollmentId=t.enrollment),t.attempt!==void 0&&(e.attempt=t.attempt),t.answers&&(e.answers=y("answers",t.answers));let n=await a(nt,{input:e});u(`Submission created: ${n.buiSubmitAssessment.id}`),s(t,n.buiSubmitAssessment);}catch(e){i(e);}}),r.command("grade").description("Grade a submission").argument("<id>","Submission ID").requiredOption("--score <n>","Score",I).option("--passed <bool>","true|false",S).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={score:e.score};e.passed!==void 0&&(n.passed=e.passed),e.feedback&&(n.feedback=e.feedback);let c=await a(rt,{id:t,input:n});u(`Submission graded: ${c.buiGradeSubmission.status}`),s(e,c.buiGradeSubmission);}catch(n){i(n);}});}function ft(o){o.command("health").description("Buildmyiq subgraph liveness/identity probe (public)").option("-f, --format <format>","Output format").action(async r=>{try{let t=await w(ot);u(t.buiHealth),s(r,{health:t.buiHealth});}catch(t){i(t);}});}var Tt={id:"buildmyiq",version:"1.0.0",displayName:"Buildmyiq",dependsOn:["auth","workspaces"],register(o,r){T(r);let t=o.command("buildmyiq").description("Buildmyiq education, learning & development platform");it(t),st(t),at(t),ut(t),ct(t),dt(t),pt(t),lt(t),mt(t),ft(t);}},kn=Tt;module.exports=kn;
@@ -1,4 +1,4 @@
1
- import {a,b,h as h$1,p,g,i,o as o$1,d}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var L=`
1
+ import {a,b,h as h$1,p,g,i,o as o$1,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var L=`
2
2
  query BuiGetCourse($id: ID!) {
3
3
  buiCourse(id: $id) {
4
4
  id workspaceId slug title summary description level status language
@@ -5,14 +5,14 @@
5
5
  total hasMore
6
6
  }
7
7
  }
8
- `,v=`
8
+ `,A=`
9
9
  query GetChannel($id: ID!) {
10
10
  getChannel(id: $id) {
11
11
  id name platform adapterType status channelType
12
12
  connection { id authType isActive isHealthy }
13
13
  }
14
14
  }
15
- `,A=`
15
+ `,v=`
16
16
  mutation CreateChannel($input: CreateChannelInput!) {
17
17
  createChannel(input: $input) {
18
18
  id name platform adapterType status
@@ -67,4 +67,4 @@
67
67
  mutation DeleteChannelConnection($id: ID!) {
68
68
  deleteConnection(id: $id)
69
69
  }
70
- `;function P(r){let o=r.command("channels").description("Multi-platform message channels (email/SMS/Slack/etc.)");o.command("list").description("List channels").option("--platform <p>").option("--status <s>").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t={};e.platform&&(t.platform=e.platform.toUpperCase()),e.status&&(t.status=e.status.toUpperCase());let n=await a(b,{filter:Object.keys(t).length?t:void 0,pagination:{limit:e.limit,offset:0}});u(e,n.getChannels.items,{headers:["ID","Name","Platform","Status","Priority"],rows:n.getChannels.items.map(i=>[w(i.id,12),i.name,i.platform,C(i.status),String(i.priority??"-")])});}catch(t){c(t);}}),o.command("get").description("Get a channel").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(v,{id:e});if(!n.getChannel)throw new l(`Channel ${e} not found`);u(t,n.getChannel);}catch(n){c(n);}}),o.command("create").description("Create a channel").requiredOption("--name <s>").requiredOption("--platform <p>","EMAIL|SMS|SLACK|TEAMS|DISCORD|WHATSAPP|WEBHOOK").option("--organization <id>","Organization id (defaults to current actor org)").option("--adapter <t>").option("-f, --format <format>").action(async e=>{try{let t=e.organization??T().auth.read()?.organizationId;if(!t)throw new l("No organization context. Pass --organization <id> or set auth.organizationId.");let n={name:e.name,platform:e.platform.toUpperCase(),organizationId:t,adapterType:e.adapter?e.adapter.toUpperCase():void 0},i=await a(A,{input:n});f("Channel created"),u(e,i.createChannel);}catch(t){c(t);}}),o.command("delete").description("Delete a channel").argument("<id>").action(async e=>{try{await a(O,{id:e}),f("Channel deleted");}catch(t){c(t);}}),o.command("send").description("Send a message via a channel").argument("<channelId>").requiredOption("--content <s>").option("--recipient <id>","External recipient id (e.g. email)").option("--subject <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={channelId:e,content:t.content,recipientId:t.recipient,subject:t.subject},i=await a(S,{input:n});i.sendMessage.success&&f(`Sent: ${i.sendMessage.messageId??"(no id)"}`),u(t,i.sendMessage);}catch(n){c(n);}}),o.command("deliveries").description("Recent delivery attempts for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(N,{channelId:e,limit:t.limit});u(t,n.getChannelDeliveryAttempts.items);}catch(n){c(n);}}),o.command("users").description("Users connected to this channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a($,{channelId:e,pagination:{limit:t.limit,offset:0}});u(t,n.listUserPlatformConnectionsByChannel.items);}catch(n){c(n);}}),o.command("webhooks").description("Channel webhook events").command("list").description("List webhook events for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(D,{channelId:e,limit:t.limit});u(t,n.getChannelWebhookEvents.items,{headers:["ID","Event","Status","When"],rows:n.getChannelWebhookEvents.items.map(i=>[w(i.id,12),i.eventType,C(i.status),I(i.createdAt)])});}catch(n){c(n);}});let m=o.command("connections").description("Channel connections (OAuth/API keys)");m.command("list").description("List connections for an organization").requiredOption("--organization <id>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async e=>{try{let t=await a(L,{organizationId:e.organization,pagination:{limit:e.limit,offset:0}});u(e,t.getConnectionsByOrganization.items);}catch(t){c(t);}}),m.command("create").description("Create a channel connection").requiredOption("--channel <id>").requiredOption("--auth-type <t>","OAUTH|API_KEY|WEBHOOK").option("-f, --format <format>").action(async e=>{try{let t={channelId:e.channel,authType:e.authType.toUpperCase()},n=await a(R,{input:t});f("Connection created"),u(e,n.createConnection);}catch(t){c(t);}}),m.command("delete").description("Delete a connection").argument("<id>").action(async e=>{try{await a(_,{id:e}),f("Connection deleted");}catch(t){c(t);}});}var Y={id:"channels",version:"1.0.0",displayName:"Channels",dependsOn:["auth"],register(r,o){E(o),P(r);}},it=Y;module.exports=it;
70
+ `;function P(r){let o=r.command("channels").description("Multi-platform message channels (email/SMS/Slack/etc.)");o.command("list").description("List channels").option("--platform <p>").option("--status <s>").option("--limit <n>","Page size",e=>parseInt(e,10),50).option("-f, --format <format>").action(async e=>{try{let t={};e.platform&&(t.platform=e.platform.toUpperCase()),e.status&&(t.status=e.status.toUpperCase());let n=await a(b,{filter:Object.keys(t).length?t:void 0,pagination:{limit:e.limit,offset:0}});u(e,n.getChannels.items,{headers:["ID","Name","Platform","Status","Priority"],rows:n.getChannels.items.map(i=>[w(i.id,12),i.name,i.platform,C(i.status),String(i.priority??"-")])});}catch(t){c(t);}}),o.command("get").description("Get a channel").argument("<id>").option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(A,{id:e});if(!n.getChannel)throw new l(`Channel ${e} not found`);u(t,n.getChannel);}catch(n){c(n);}}),o.command("create").description("Create a channel").requiredOption("--name <s>").requiredOption("--platform <p>","EMAIL|SMS|SLACK|TEAMS|DISCORD|WHATSAPP|WEBHOOK").option("--organization <id>","Organization id (defaults to current actor org)").option("--adapter <t>").option("-f, --format <format>").action(async e=>{try{let t=e.organization??T().auth.read()?.organizationId;if(!t)throw new l("No organization context. Pass --organization <id> or set auth.organizationId.");let n={name:e.name,platform:e.platform.toUpperCase(),organizationId:t,adapterType:e.adapter?e.adapter.toUpperCase():void 0},i=await a(v,{input:n});f("Channel created"),u(e,i.createChannel);}catch(t){c(t);}}),o.command("delete").description("Delete a channel").argument("<id>").action(async e=>{try{await a(O,{id:e}),f("Channel deleted");}catch(t){c(t);}}),o.command("send").description("Send a message via a channel").argument("<channelId>").requiredOption("--content <s>").option("--recipient <id>","External recipient id (e.g. email)").option("--subject <s>").option("-f, --format <format>").action(async(e,t)=>{try{let n={channelId:e,content:t.content,recipientId:t.recipient,subject:t.subject},i=await a(S,{input:n});i.sendMessage.success&&f(`Sent: ${i.sendMessage.messageId??"(no id)"}`),u(t,i.sendMessage);}catch(n){c(n);}}),o.command("deliveries").description("Recent delivery attempts for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(N,{channelId:e,limit:t.limit});u(t,n.getChannelDeliveryAttempts.items);}catch(n){c(n);}}),o.command("users").description("Users connected to this channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a($,{channelId:e,pagination:{limit:t.limit,offset:0}});u(t,n.listUserPlatformConnectionsByChannel.items);}catch(n){c(n);}}),o.command("webhooks").description("Channel webhook events").command("list").description("List webhook events for a channel").argument("<channelId>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async(e,t)=>{try{let n=await a(D,{channelId:e,limit:t.limit});u(t,n.getChannelWebhookEvents.items,{headers:["ID","Event","Status","When"],rows:n.getChannelWebhookEvents.items.map(i=>[w(i.id,12),i.eventType,C(i.status),I(i.createdAt)])});}catch(n){c(n);}});let m=o.command("connections").description("Channel connections (OAuth/API keys)");m.command("list").description("List connections for an organization").requiredOption("--organization <id>").option("--limit <n>","Page size",e=>parseInt(e,10),100).option("-f, --format <format>").action(async e=>{try{let t=await a(L,{organizationId:e.organization,pagination:{limit:e.limit,offset:0}});u(e,t.getConnectionsByOrganization.items);}catch(t){c(t);}}),m.command("create").description("Create a channel connection").requiredOption("--channel <id>").requiredOption("--auth-type <t>","OAUTH|API_KEY|WEBHOOK").option("-f, --format <format>").action(async e=>{try{let t={channelId:e.channel,authType:e.authType.toUpperCase()},n=await a(R,{input:t});f("Connection created"),u(e,n.createConnection);}catch(t){c(t);}}),m.command("delete").description("Delete a connection").argument("<id>").action(async e=>{try{await a(_,{id:e}),f("Connection deleted");}catch(t){c(t);}});}var Y={id:"channels",version:"1.0.0",displayName:"Channels",dependsOn:["auth"],register(r,o){E(o),P(r);}},it=Y;module.exports=it;
@@ -1,4 +1,4 @@
1
- import {a,c,h,p,n,g,s,i,o as o$1}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var y=`
1
+ import {a,c,h,p,n,g,s,i,o as o$1}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var y=`
2
2
  query GetChannels($filter: ChannelFilterInput, $pagination: ChannelPaginationInput) {
3
3
  getChannels(filter: $filter, pagination: $pagination) {
4
4
  items { id name platform adapterType status connectionHealth priority createdAt }
@@ -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-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var D=`
1
+ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.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
@@ -19,13 +19,13 @@
19
19
  pageInfo { cursor hasMore }
20
20
  }
21
21
  }
22
- `,x=`
22
+ `,O=`
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
- `,O=`
28
+ `,x=`
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
@@ -278,4 +278,4 @@
278
278
  query ComradecircleHealth {
279
279
  comHealth
280
280
  }
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(x,{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,{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;
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;
@@ -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-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var h=`
1
+ import {a,b as b$1,h as h$1,p,g,i,o as o$1,d as d$1}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.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
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,o,g,s,i}from'../../chunk-NLEVVDXR.js';import {o as o$1}from'../../chunk-IZXPWPKX.js';var l=`
1
+ import {a,b as b$1,h as h$1,p,o,g,s,i}from'../../chunk-SQSFZFQZ.js';import {o as o$1}from'../../chunk-UAFYTYK6.js';var l=`
2
2
  query ListConversations($filter: ConversationFilter, $first: Int, $after: String) {
3
3
  conversations(filter: $filter, first: $first, after: $after) {
4
4
  edges { node { id title type description createdAt updatedAt unreadCount } }
@@ -1,4 +1,4 @@
1
- import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-NLEVVDXR.js';import {o}from'../../chunk-IZXPWPKX.js';var k=`
1
+ import {a,b as b$1,h as h$1,p,g,i,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var k=`
2
2
  query CooGetBrand($id: ID!) {
3
3
  cooBrand(id: $id) {
4
4
  id name handle tagline bio status isFeatured aesthetics tags websiteUrl