@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.
- package/dist/{chunk-NLEVVDXR.js → chunk-SQSFZFQZ.js} +1 -1
- package/dist/{chunk-IZXPWPKX.js → chunk-UAFYTYK6.js} +7 -7
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +3 -3
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +6 -6
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +5 -5
- package/dist/modules/auth/index.js +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +2 -2
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +3 -3
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +3 -3
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +4 -4
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +4 -4
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +3 -3
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +2 -2
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +4 -4
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/fluidgrids/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +3 -3
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +2 -2
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +6 -6
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +3 -3
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +3 -3
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs +4 -4
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +2 -2
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +4 -4
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +3 -3
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +4 -4
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +2 -2
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +2 -2
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +2 -2
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +2 -2
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.js +1 -1
- package/dist/modules/tours/index.cjs +2 -2
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.js +1 -1
- package/dist/modules/workspaces/index.cjs +3 -3
- package/dist/modules/workspaces/index.js +1 -1
- package/package.json +1 -1
|
@@ -252,4 +252,4 @@
|
|
|
252
252
|
totalAssets totalTransactions openIncidents openWorkOrders
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
`;function l(r,i){try{return JSON.parse(i)}catch{throw new g(`--${r} must be valid JSON`)}}function d(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new g(`Expected an integer but got "${r}"`);return i}function C(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new g(`Expected a number but got "${r}"`);return i}function A(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function u(r,i){let t={};return r!==void 0&&(t.limit=r),i&&(t.cursor=i),Object.keys(t).length?t:void 0}function ct(r){let i=r.command("assets").description("Assethandler assets");i.command("list").description("List assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(b,{pagination:u(t.limit,t.cursor)});a(t,e.assets,{headers:["ID","Asset #","Name","Category","Status","Condition"],rows:e.assets.map(n=>[c(n.id,12),n.assetNumber,n.name,n.category,n.status,n.condition])});}catch(e){s(e);}}),i.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await o(S,{id:t});if(!n.asset)throw new g(`Asset ${t} not found`);a(e,n.asset);}catch(n){s(n);}}),i.command("create").description("Create an asset").requiredOption("--asset-number <s>","Asset number").requiredOption("--name <name>","Asset name").requiredOption("--category <c>","Category").option("--description <s>","Description").option("--status <s>","ACTIVE|INACTIVE|MAINTENANCE|RETIRED|DISPOSED").option("--condition <c>","EXCELLENT|GOOD|FAIR|POOR|DAMAGED").option("--serial-number <s>","Serial number").option("--location-name <s>","Location name").option("--assigned-to <s>","Assignee").option("--tags <csv>","Comma-separated tags").option("--custom-attributes <json>","Custom attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetNumber:t.assetNumber,name:t.name,category:t.category};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.condition&&(e.condition=t.condition.toUpperCase()),t.serialNumber&&(e.serialNumber=t.serialNumber),t.locationName&&(e.locationName=t.locationName),t.assignedTo&&(e.assignedTo=t.assignedTo),t.tags&&(e.tags=A(t.tags)),t.customAttributes&&(e.customAttributes=l("custom-attributes",t.customAttributes));let n=await o(O,{input:e});m(`Asset created: ${n.createAsset.assetNumber}`),a(t,n.createAsset);}catch(e){s(e);}});}function dt(r){bt(r),Ot(r),xt(r),Rt(r);}function bt(r){let i=r.command("software-assets").description("Assethandler software assets & licenses");i.command("list").description("List software assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(x,{pagination:u(t.limit,t.cursor)});a(t,e.softwareAssets,{headers:["ID","Name","Vendor","Version","License","Seats","Compliance %"],rows:e.softwareAssets.map(n=>[c(n.id,12),n.name,n.vendor,n.version,n.licenseType,`${n.seatsUsed??0}/${n.seatsPurchased??0}`,String(n.compliancePercent)])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a software asset").requiredOption("--name <name>","Name").requiredOption("--vendor <v>","Vendor").requiredOption("--version <v>","Version").requiredOption("--license-type <t>","License type").option("--id <id>","Existing software asset ID (update)").option("--seats-purchased <n>","Seats purchased",d).option("--seats-used <n>","Seats used",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,vendor:t.vendor,version:t.version,licenseType:t.licenseType};t.id&&(e.id=t.id),t.seatsPurchased!==void 0&&(e.seatsPurchased=t.seatsPurchased),t.seatsUsed!==void 0&&(e.seatsUsed=t.seatsUsed);let n=await o(R,{input:e});m(`Software asset saved: ${n.upsertSoftwareAsset.name}`),a(t,n.upsertSoftwareAsset);}catch(e){s(e);}});}function Ot(r){let i=r.command("digital-twins").description("Assethandler digital twins");i.command("list").description("List digital twins").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(D,{pagination:u(t.limit,t.cursor)});a(t,e.digitalTwins,{headers:["ID","Asset","Fidelity","Model Ref"],rows:e.digitalTwins.map(n=>[c(n.id,12),c(n.assetId,12),n.fidelityLevel,n.modelRef])});}catch(e){s(e);}}),i.command("create").description("Create a digital twin for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--fidelity-level <l>","Fidelity level").requiredOption("--model-ref <ref>","Model reference").option("--geometry-ref <ref>","Geometry reference").option("--properties <json>","Properties JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,fidelityLevel:t.fidelityLevel,modelRef:t.modelRef};t.geometryRef&&(e.geometryRef=t.geometryRef),t.properties&&(e.properties=l("properties",t.properties));let n=await o(P,{input:e});m(`Digital twin created for asset ${n.createDigitalTwin.assetId}`),a(t,n.createDigitalTwin);}catch(e){s(e);}});}function xt(r){let i=r.command("config-items").description("Assethandler configuration items (CMDB)");i.command("list").description("List configuration items").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(N,{pagination:u(t.limit,t.cursor)});a(t,e.configurationItems,{headers:["ID","CI #","Name","Type","Status","Environment"],rows:e.configurationItems.map(n=>[c(n.id,12),n.ciNumber,n.name,n.ciType,n.status,n.environment??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a configuration item").requiredOption("--ci-number <s>","CI number").requiredOption("--name <name>","Name").requiredOption("--ci-type <t>","CI type").requiredOption("--status <s>","Status").option("--id <id>","Existing CI ID (update)").option("--environment <e>","Environment").option("--owner <o>","Owner").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={ciNumber:t.ciNumber,name:t.name,ciType:t.ciType,status:t.status};t.id&&(e.id=t.id),t.environment&&(e.environment=t.environment),t.owner&&(e.owner=t.owner),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await o(L,{input:e});m(`Configuration item saved: ${n.upsertConfigurationItem.ciNumber}`),a(t,n.upsertConfigurationItem);}catch(e){s(e);}});}function Rt(r){let i=r.command("iot-devices").description("Assethandler IoT devices");i.command("list").description("List IoT devices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(q,{pagination:u(t.limit,t.cursor)});a(t,e.iotDevices,{headers:["ID","Device","Name","Type","Protocol","Status"],rows:e.iotDevices.map(n=>[c(n.id,12),c(n.deviceId,16),n.name,n.type,n.protocol,n.status])});}catch(e){s(e);}}),i.command("register").description("Register an IoT device").requiredOption("--device-id <s>","Device ID").requiredOption("--name <name>","Name").requiredOption("--type <t>","Type").requiredOption("--protocol <p>","Protocol").option("--status <s>","Status").option("--asset <id>","Linked asset ID").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={deviceId:t.deviceId,name:t.name,type:t.type,protocol:t.protocol};t.status&&(e.status=t.status),t.asset&&(e.assetId=t.asset),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(_,{input:e});m(`IoT device registered: ${n.registerIoTDevice.deviceId}`),a(t,n.registerIoTDevice);}catch(e){s(e);}});}function ut(r){Dt(r),Pt(r),Nt(r),Lt(r),qt(r),_t(r);}function Dt(r){let i=r.command("incidents").description("Assethandler ITSM incidents");i.command("list").description("List incidents").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o($,{pagination:u(t.limit,t.cursor)});a(t,e.incidents,{headers:["ID","Title","Category","Priority","Status","SLA"],rows:e.incidents.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status,n.slaBreached?"breached":"ok"])});}catch(e){s(e);}}),i.command("create").description("Create an incident").requiredOption("--title <t>","Title").requiredOption("--description <s>","Description").requiredOption("--category <c>","Category").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,description:t.description,category:t.category};t.priority&&(e.priority=t.priority.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(H,{input:e});m(`Incident created: ${n.createIncident.title}`),a(t,n.createIncident);}catch(e){s(e);}});}function Pt(r){r.command("problems").description("Assethandler ITSM problems").command("list").description("List problems").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(M,{pagination:u(t.limit,t.cursor)});a(t,e.problems,{headers:["ID","Title","Category","Priority","Status"],rows:e.problems.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status])});}catch(e){s(e);}});}function Nt(r){r.command("change-requests").description("Assethandler change requests").command("list").description("List change requests").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(W,{pagination:u(t.limit,t.cursor)});a(t,e.changeRequests,{headers:["ID","Title","Type","Risk","Status","Requested By"],rows:e.changeRequests.map(n=>[c(n.id,12),n.title,n.type,n.risk,n.status,c(n.requestedBy,16)])});}catch(e){s(e);}});}function Lt(r){let i=r.command("work-orders").description("Assethandler work orders");i.command("list").description("List work orders").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(U,{pagination:u(t.limit,t.cursor)});a(t,e.workOrders,{headers:["ID","Title","Type","Priority","Status","Asset"],rows:e.workOrders.map(n=>[c(n.id,12),n.title,n.type,n.priority,n.status,n.assetId?c(n.assetId,12):"-"])});}catch(e){s(e);}}),i.command("create").description("Create a work order").requiredOption("--title <t>","Title").requiredOption("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|EMERGENCY").option("--description <s>","Description").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","DRAFT|SCHEDULED|APPROVED|IN_PROGRESS|COMPLETED|CANCELLED").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.priority&&(e.priority=t.priority.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(G,{input:e});m(`Work order created: ${n.createWorkOrder.title}`),a(t,n.createWorkOrder);}catch(e){s(e);}});}function qt(r){r.command("maintenance").description("Assethandler maintenance records").command("list").description("List maintenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(F,{pagination:u(t.limit,t.cursor)});a(t,e.maintenanceRecords,{headers:["ID","Asset","Title","Type","Priority","Status"],rows:e.maintenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.title,n.type,n.priority,n.status])});}catch(e){s(e);}});}function _t(r){let i=r.command("knowledge-articles").description("Assethandler knowledge base articles");i.command("list").description("List knowledge articles").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(V,{pagination:u(t.limit,t.cursor)});a(t,e.knowledgeArticles,{headers:["ID","Title","Slug","Status","Views"],rows:e.knowledgeArticles.map(n=>[c(n.id,12),n.title,n.slug,n.status,String(n.views)])});}catch(e){s(e);}}),i.command("create").description("Create a knowledge article").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").requiredOption("--content <s>","Article content").option("--summary <s>","Summary").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--tags <csv>","Comma-separated tags").option("--related-asset <id>","Related asset ID").option("--related-incident <id>","Related incident ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,slug:t.slug,content:t.content};t.summary&&(e.summary=t.summary),t.status&&(e.status=t.status.toUpperCase()),t.tags&&(e.tags=A(t.tags)),t.relatedAsset&&(e.relatedAssetId=t.relatedAsset),t.relatedIncident&&(e.relatedIncidentId=t.relatedIncident);let n=await o(B,{input:e});m(`Knowledge article created: ${n.createKnowledgeArticle.slug}`),a(t,n.createKnowledgeArticle);}catch(e){s(e);}});}function pt(r){$t(r),Ht(r),Mt(r);}function $t(r){let i=r.command("transactions").description("Assethandler asset finance transactions");i.command("list").description("List transactions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(j,{pagination:u(t.limit,t.cursor)});a(t,e.transactions,{headers:["ID","Type","Category","Amount","Currency","Status"],rows:e.transactions.map(n=>[c(n.id,12),n.type,n.category,String(n.amount),n.currency,n.status])});}catch(e){s(e);}}),i.command("create").description("Create a transaction").requiredOption("--type <t>","PURCHASE|LEASE|MAINTENANCE|DISPOSAL|TRANSFER").requiredOption("--category <c>","Category").requiredOption("--description <s>","Description").requiredOption("--amount <n>","Amount",C).option("--currency <c>","Currency code").option("--vendor <v>","Vendor").option("--department <d>","Department").option("--status <s>","PENDING|APPROVED|COMPLETED|REJECTED").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),category:t.category,description:t.description,amount:t.amount};t.currency&&(e.currency=t.currency),t.vendor&&(e.vendor=t.vendor),t.department&&(e.department=t.department),t.status&&(e.status=t.status.toUpperCase());let n=await o(J,{input:e});m(`Transaction created: ${n.createTransaction.id}`),a(t,n.createTransaction);}catch(e){s(e);}});}function Ht(r){r.command("invoices").description("Assethandler invoices").command("list").description("List invoices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(K,{pagination:u(t.limit,t.cursor)});a(t,e.invoices,{headers:["ID","Number","Vendor","Amount","Status","Due"],rows:e.invoices.map(n=>[c(n.id,12),n.number,n.vendor,`${n.amount} ${n.currency}`,n.status,v(n.dueDate)])});}catch(e){s(e);}});}function Mt(r){r.command("budgets").description("Assethandler asset budgets").command("list").description("List budgets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(z,{pagination:u(t.limit,t.cursor)});a(t,e.budgets,{headers:["ID","Name","Department","Allocated","Spent","Remaining","Status"],rows:e.budgets.map(n=>[c(n.id,12),n.name,n.department,String(n.allocated),String(n.spent),String(n.remaining),n.status])});}catch(e){s(e);}});}function mt(r){Wt(r),Ut(r),Gt(r),Ft(r);}function Wt(r){r.command("compliance").description("Assethandler compliance frameworks").command("list").description("List compliance frameworks").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Y,{pagination:u(t.limit,t.cursor)});a(t,e.complianceFrameworks,{headers:["ID","Name","Version","Status","Score","Passed","Failed"],rows:e.complianceFrameworks.map(n=>[c(n.id,12),n.name,n.version,n.status,String(n.score),String(n.passedControls),String(n.failedControls)])});}catch(e){s(e);}});}function Ut(r){r.command("security-policies").description("Assethandler asset security policies").command("list").description("List security policies").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Q,{pagination:u(t.limit,t.cursor)});a(t,e.assetSecurityPolicies,{headers:["ID","Name","Version","Category","Status","Owner"],rows:e.assetSecurityPolicies.map(n=>[c(n.id,12),n.name,n.version,n.category,n.status,c(n.owner,16)])});}catch(e){s(e);}});}function Gt(r){r.command("security-events").description("Assethandler security events").command("list").description("List security events").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(X,{pagination:u(t.limit,t.cursor)});a(t,e.securityEvents,{headers:["ID","Title","Type","Severity","Source","Resolved"],rows:e.securityEvents.map(n=>[c(n.id,12),n.title,n.eventType,n.severity,n.source,n.resolved?"yes":"no"])});}catch(e){s(e);}});}function Ft(r){let i=r.command("esg-metrics").description("Assethandler ESG metrics");i.command("list").description("List ESG metrics").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Z,{pagination:u(t.limit,t.cursor)});a(t,e.esgMetrics,{headers:["ID","Category","Metric","Value","Unit","Target","Trend"],rows:e.esgMetrics.map(n=>[c(n.id,12),n.category,n.metricName,String(n.value),n.unit,n.target!=null?String(n.target):"-",n.trend??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update an ESG metric").requiredOption("--category <c>","Category").requiredOption("--metric-key <k>","Metric key").requiredOption("--metric-name <n>","Metric name").requiredOption("--value <n>","Value",C).requiredOption("--unit <u>","Unit").requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--target <n>","Target value",C).option("--trend <t>","Trend").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,metricKey:t.metricKey,metricName:t.metricName,value:t.value,unit:t.unit,periodStart:t.periodStart,periodEnd:t.periodEnd};t.target!==void 0&&(e.target=t.target),t.trend&&(e.trend=t.trend);let n=await o(tt,{input:e});m(`ESG metric saved: ${n.upsertEsgMetric.metricKey}`),a(t,n.upsertEsgMetric);}catch(e){s(e);}});}function gt(r){Vt(r),Bt(r),jt(r);}function Vt(r){let i=r.command("predictions").description("Assethandler AI predictions");i.command("list").description("List AI predictions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(et,{pagination:u(t.limit,t.cursor)});a(t,e.aiPredictions,{headers:["ID","Asset","Type","Model","Score","Confidence","Status"],rows:e.aiPredictions.map(n=>[c(n.id,12),c(n.assetId,12),n.predictionType,n.modelVersion,String(n.score),String(n.confidence),n.status])});}catch(e){s(e);}}),i.command("request").description("Request an AI prediction for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--prediction-type <t>","Prediction type").option("--feature-vector <json>","Feature vector JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,predictionType:t.predictionType};t.featureVector&&(e.featureVector=l("feature-vector",t.featureVector));let n=await o(nt,{input:e});m(`Prediction requested: ${n.requestAIPrediction.id}`),a(t,n.requestAIPrediction);}catch(e){s(e);}});}function Bt(r){let i=r.command("provenance").description("Assethandler asset provenance records");i.command("list").description("List provenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(rt,{pagination:u(t.limit,t.cursor)});a(t,e.provenanceRecords,{headers:["ID","Asset","Chain","Hash","Attested By"],rows:e.provenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.chainNetwork,c(n.hash,16),c(n.attestedBy,16)])});}catch(e){s(e);}}),i.command("record").description("Record an asset provenance attestation").requiredOption("--asset <id>","Asset ID").requiredOption("--chain-network <n>","Chain network").requiredOption("--hash <h>","Attestation hash").option("--tx-hash <h>","Transaction hash").option("--block-number <n>","Block number",d).option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,chainNetwork:t.chainNetwork,hash:t.hash};t.txHash&&(e.txHash=t.txHash),t.blockNumber!==void 0&&(e.blockNumber=t.blockNumber),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(it,{input:e});m(`Provenance recorded: ${n.recordProvenance.id}`),a(t,n.recordProvenance);}catch(e){s(e);}});}function jt(r){let i=r.command("discovery-jobs").description("Assethandler asset discovery jobs");i.command("list").description("List discovery jobs").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(ot,{pagination:u(t.limit,t.cursor)});a(t,e.discoveryJobs,{headers:["ID","Name","Source","Status","Discovered"],rows:e.discoveryJobs.map(n=>[c(n.id,12),n.name,n.source,n.status,String(n.assetsDiscovered)])});}catch(e){s(e);}}),i.command("start").description("Start an asset discovery job").requiredOption("--name <name>","Job name").requiredOption("--source <s>","Discovery source").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,source:t.source},n=await o(st,{input:e});m(`Discovery job started: ${n.startDiscoveryJob.name}`),a(t,n.startDiscoveryJob);}catch(e){s(e);}});}function lt(r){r.command("dashboard").description("Assethandler dashboard overview").command("overview").description("Asset / transaction / incident / work-order counts").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(at);a(t,e.dashboardOverview);}catch(e){s(e);}});}var Jt={id:"assethandler",version:"1.0.0",displayName:"Assethandler",dependsOn:["auth","workspaces"],register(r,i){E(i);let t=r.command("assethandler").description("Assethandler enterprise asset management platform");ct(t),dt(t),ut(t),pt(t),mt(t),gt(t),lt(t);}},Hn=Jt;module.exports=Hn;
|
|
255
|
+
`;function l(r,i){try{return JSON.parse(i)}catch{throw new g(`--${r} must be valid JSON`)}}function d(r){let i=Number.parseInt(r,10);if(Number.isNaN(i))throw new g(`Expected an integer but got "${r}"`);return i}function A(r){let i=Number.parseFloat(r);if(Number.isNaN(i))throw new g(`Expected a number but got "${r}"`);return i}function C(r){return r.split(",").map(i=>i.trim()).filter(i=>i.length>0)}function u(r,i){let t={};return r!==void 0&&(t.limit=r),i&&(t.cursor=i),Object.keys(t).length?t:void 0}function ct(r){let i=r.command("assets").description("Assethandler assets");i.command("list").description("List assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(b,{pagination:u(t.limit,t.cursor)});a(t,e.assets,{headers:["ID","Asset #","Name","Category","Status","Condition"],rows:e.assets.map(n=>[c(n.id,12),n.assetNumber,n.name,n.category,n.status,n.condition])});}catch(e){s(e);}}),i.command("get").description("Get an asset by id").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await o(S,{id:t});if(!n.asset)throw new g(`Asset ${t} not found`);a(e,n.asset);}catch(n){s(n);}}),i.command("create").description("Create an asset").requiredOption("--asset-number <s>","Asset number").requiredOption("--name <name>","Asset name").requiredOption("--category <c>","Category").option("--description <s>","Description").option("--status <s>","ACTIVE|INACTIVE|MAINTENANCE|RETIRED|DISPOSED").option("--condition <c>","EXCELLENT|GOOD|FAIR|POOR|DAMAGED").option("--serial-number <s>","Serial number").option("--location-name <s>","Location name").option("--assigned-to <s>","Assignee").option("--tags <csv>","Comma-separated tags").option("--custom-attributes <json>","Custom attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetNumber:t.assetNumber,name:t.name,category:t.category};t.description&&(e.description=t.description),t.status&&(e.status=t.status.toUpperCase()),t.condition&&(e.condition=t.condition.toUpperCase()),t.serialNumber&&(e.serialNumber=t.serialNumber),t.locationName&&(e.locationName=t.locationName),t.assignedTo&&(e.assignedTo=t.assignedTo),t.tags&&(e.tags=C(t.tags)),t.customAttributes&&(e.customAttributes=l("custom-attributes",t.customAttributes));let n=await o(O,{input:e});m(`Asset created: ${n.createAsset.assetNumber}`),a(t,n.createAsset);}catch(e){s(e);}});}function dt(r){bt(r),Ot(r),xt(r),Rt(r);}function bt(r){let i=r.command("software-assets").description("Assethandler software assets & licenses");i.command("list").description("List software assets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(x,{pagination:u(t.limit,t.cursor)});a(t,e.softwareAssets,{headers:["ID","Name","Vendor","Version","License","Seats","Compliance %"],rows:e.softwareAssets.map(n=>[c(n.id,12),n.name,n.vendor,n.version,n.licenseType,`${n.seatsUsed??0}/${n.seatsPurchased??0}`,String(n.compliancePercent)])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a software asset").requiredOption("--name <name>","Name").requiredOption("--vendor <v>","Vendor").requiredOption("--version <v>","Version").requiredOption("--license-type <t>","License type").option("--id <id>","Existing software asset ID (update)").option("--seats-purchased <n>","Seats purchased",d).option("--seats-used <n>","Seats used",d).option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,vendor:t.vendor,version:t.version,licenseType:t.licenseType};t.id&&(e.id=t.id),t.seatsPurchased!==void 0&&(e.seatsPurchased=t.seatsPurchased),t.seatsUsed!==void 0&&(e.seatsUsed=t.seatsUsed);let n=await o(R,{input:e});m(`Software asset saved: ${n.upsertSoftwareAsset.name}`),a(t,n.upsertSoftwareAsset);}catch(e){s(e);}});}function Ot(r){let i=r.command("digital-twins").description("Assethandler digital twins");i.command("list").description("List digital twins").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(D,{pagination:u(t.limit,t.cursor)});a(t,e.digitalTwins,{headers:["ID","Asset","Fidelity","Model Ref"],rows:e.digitalTwins.map(n=>[c(n.id,12),c(n.assetId,12),n.fidelityLevel,n.modelRef])});}catch(e){s(e);}}),i.command("create").description("Create a digital twin for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--fidelity-level <l>","Fidelity level").requiredOption("--model-ref <ref>","Model reference").option("--geometry-ref <ref>","Geometry reference").option("--properties <json>","Properties JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,fidelityLevel:t.fidelityLevel,modelRef:t.modelRef};t.geometryRef&&(e.geometryRef=t.geometryRef),t.properties&&(e.properties=l("properties",t.properties));let n=await o(P,{input:e});m(`Digital twin created for asset ${n.createDigitalTwin.assetId}`),a(t,n.createDigitalTwin);}catch(e){s(e);}});}function xt(r){let i=r.command("config-items").description("Assethandler configuration items (CMDB)");i.command("list").description("List configuration items").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(N,{pagination:u(t.limit,t.cursor)});a(t,e.configurationItems,{headers:["ID","CI #","Name","Type","Status","Environment"],rows:e.configurationItems.map(n=>[c(n.id,12),n.ciNumber,n.name,n.ciType,n.status,n.environment??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update a configuration item").requiredOption("--ci-number <s>","CI number").requiredOption("--name <name>","Name").requiredOption("--ci-type <t>","CI type").requiredOption("--status <s>","Status").option("--id <id>","Existing CI ID (update)").option("--environment <e>","Environment").option("--owner <o>","Owner").option("--attributes <json>","Attributes JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={ciNumber:t.ciNumber,name:t.name,ciType:t.ciType,status:t.status};t.id&&(e.id=t.id),t.environment&&(e.environment=t.environment),t.owner&&(e.owner=t.owner),t.attributes&&(e.attributes=l("attributes",t.attributes));let n=await o(L,{input:e});m(`Configuration item saved: ${n.upsertConfigurationItem.ciNumber}`),a(t,n.upsertConfigurationItem);}catch(e){s(e);}});}function Rt(r){let i=r.command("iot-devices").description("Assethandler IoT devices");i.command("list").description("List IoT devices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(q,{pagination:u(t.limit,t.cursor)});a(t,e.iotDevices,{headers:["ID","Device","Name","Type","Protocol","Status"],rows:e.iotDevices.map(n=>[c(n.id,12),c(n.deviceId,16),n.name,n.type,n.protocol,n.status])});}catch(e){s(e);}}),i.command("register").description("Register an IoT device").requiredOption("--device-id <s>","Device ID").requiredOption("--name <name>","Name").requiredOption("--type <t>","Type").requiredOption("--protocol <p>","Protocol").option("--status <s>","Status").option("--asset <id>","Linked asset ID").option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={deviceId:t.deviceId,name:t.name,type:t.type,protocol:t.protocol};t.status&&(e.status=t.status),t.asset&&(e.assetId=t.asset),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(_,{input:e});m(`IoT device registered: ${n.registerIoTDevice.deviceId}`),a(t,n.registerIoTDevice);}catch(e){s(e);}});}function ut(r){Dt(r),Pt(r),Nt(r),Lt(r),qt(r),_t(r);}function Dt(r){let i=r.command("incidents").description("Assethandler ITSM incidents");i.command("list").description("List incidents").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o($,{pagination:u(t.limit,t.cursor)});a(t,e.incidents,{headers:["ID","Title","Category","Priority","Status","SLA"],rows:e.incidents.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status,n.slaBreached?"breached":"ok"])});}catch(e){s(e);}}),i.command("create").description("Create an incident").requiredOption("--title <t>","Title").requiredOption("--description <s>","Description").requiredOption("--category <c>","Category").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,description:t.description,category:t.category};t.priority&&(e.priority=t.priority.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(H,{input:e});m(`Incident created: ${n.createIncident.title}`),a(t,n.createIncident);}catch(e){s(e);}});}function Pt(r){r.command("problems").description("Assethandler ITSM problems").command("list").description("List problems").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(M,{pagination:u(t.limit,t.cursor)});a(t,e.problems,{headers:["ID","Title","Category","Priority","Status"],rows:e.problems.map(n=>[c(n.id,12),n.title,n.category,n.priority,n.status])});}catch(e){s(e);}});}function Nt(r){r.command("change-requests").description("Assethandler change requests").command("list").description("List change requests").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(W,{pagination:u(t.limit,t.cursor)});a(t,e.changeRequests,{headers:["ID","Title","Type","Risk","Status","Requested By"],rows:e.changeRequests.map(n=>[c(n.id,12),n.title,n.type,n.risk,n.status,c(n.requestedBy,16)])});}catch(e){s(e);}});}function Lt(r){let i=r.command("work-orders").description("Assethandler work orders");i.command("list").description("List work orders").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(U,{pagination:u(t.limit,t.cursor)});a(t,e.workOrders,{headers:["ID","Title","Type","Priority","Status","Asset"],rows:e.workOrders.map(n=>[c(n.id,12),n.title,n.type,n.priority,n.status,n.assetId?c(n.assetId,12):"-"])});}catch(e){s(e);}}),i.command("create").description("Create a work order").requiredOption("--title <t>","Title").requiredOption("--type <t>","PREVENTIVE|CORRECTIVE|PREDICTIVE|EMERGENCY").option("--description <s>","Description").option("--priority <p>","LOW|MEDIUM|HIGH|CRITICAL").option("--status <s>","DRAFT|SCHEDULED|APPROVED|IN_PROGRESS|COMPLETED|CANCELLED").option("--asset <id>","Related asset ID").option("--assigned-to <s>","Assignee").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,type:t.type.toUpperCase()};t.description&&(e.description=t.description),t.priority&&(e.priority=t.priority.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.asset&&(e.assetId=t.asset),t.assignedTo&&(e.assignedTo=t.assignedTo);let n=await o(G,{input:e});m(`Work order created: ${n.createWorkOrder.title}`),a(t,n.createWorkOrder);}catch(e){s(e);}});}function qt(r){r.command("maintenance").description("Assethandler maintenance records").command("list").description("List maintenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(F,{pagination:u(t.limit,t.cursor)});a(t,e.maintenanceRecords,{headers:["ID","Asset","Title","Type","Priority","Status"],rows:e.maintenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.title,n.type,n.priority,n.status])});}catch(e){s(e);}});}function _t(r){let i=r.command("knowledge-articles").description("Assethandler knowledge base articles");i.command("list").description("List knowledge articles").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(V,{pagination:u(t.limit,t.cursor)});a(t,e.knowledgeArticles,{headers:["ID","Title","Slug","Status","Views"],rows:e.knowledgeArticles.map(n=>[c(n.id,12),n.title,n.slug,n.status,String(n.views)])});}catch(e){s(e);}}),i.command("create").description("Create a knowledge article").requiredOption("--title <t>","Title").requiredOption("--slug <s>","URL slug").requiredOption("--content <s>","Article content").option("--summary <s>","Summary").option("--status <s>","DRAFT|PUBLISHED|ARCHIVED").option("--tags <csv>","Comma-separated tags").option("--related-asset <id>","Related asset ID").option("--related-incident <id>","Related incident ID").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title,slug:t.slug,content:t.content};t.summary&&(e.summary=t.summary),t.status&&(e.status=t.status.toUpperCase()),t.tags&&(e.tags=C(t.tags)),t.relatedAsset&&(e.relatedAssetId=t.relatedAsset),t.relatedIncident&&(e.relatedIncidentId=t.relatedIncident);let n=await o(B,{input:e});m(`Knowledge article created: ${n.createKnowledgeArticle.slug}`),a(t,n.createKnowledgeArticle);}catch(e){s(e);}});}function pt(r){$t(r),Ht(r),Mt(r);}function $t(r){let i=r.command("transactions").description("Assethandler asset finance transactions");i.command("list").description("List transactions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(j,{pagination:u(t.limit,t.cursor)});a(t,e.transactions,{headers:["ID","Type","Category","Amount","Currency","Status"],rows:e.transactions.map(n=>[c(n.id,12),n.type,n.category,String(n.amount),n.currency,n.status])});}catch(e){s(e);}}),i.command("create").description("Create a transaction").requiredOption("--type <t>","PURCHASE|LEASE|MAINTENANCE|DISPOSAL|TRANSFER").requiredOption("--category <c>","Category").requiredOption("--description <s>","Description").requiredOption("--amount <n>","Amount",A).option("--currency <c>","Currency code").option("--vendor <v>","Vendor").option("--department <d>","Department").option("--status <s>","PENDING|APPROVED|COMPLETED|REJECTED").option("-f, --format <format>","Output format").action(async t=>{try{let e={type:t.type.toUpperCase(),category:t.category,description:t.description,amount:t.amount};t.currency&&(e.currency=t.currency),t.vendor&&(e.vendor=t.vendor),t.department&&(e.department=t.department),t.status&&(e.status=t.status.toUpperCase());let n=await o(J,{input:e});m(`Transaction created: ${n.createTransaction.id}`),a(t,n.createTransaction);}catch(e){s(e);}});}function Ht(r){r.command("invoices").description("Assethandler invoices").command("list").description("List invoices").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(K,{pagination:u(t.limit,t.cursor)});a(t,e.invoices,{headers:["ID","Number","Vendor","Amount","Status","Due"],rows:e.invoices.map(n=>[c(n.id,12),n.number,n.vendor,`${n.amount} ${n.currency}`,n.status,v(n.dueDate)])});}catch(e){s(e);}});}function Mt(r){r.command("budgets").description("Assethandler asset budgets").command("list").description("List budgets").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(z,{pagination:u(t.limit,t.cursor)});a(t,e.budgets,{headers:["ID","Name","Department","Allocated","Spent","Remaining","Status"],rows:e.budgets.map(n=>[c(n.id,12),n.name,n.department,String(n.allocated),String(n.spent),String(n.remaining),n.status])});}catch(e){s(e);}});}function mt(r){Wt(r),Ut(r),Gt(r),Ft(r);}function Wt(r){r.command("compliance").description("Assethandler compliance frameworks").command("list").description("List compliance frameworks").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Y,{pagination:u(t.limit,t.cursor)});a(t,e.complianceFrameworks,{headers:["ID","Name","Version","Status","Score","Passed","Failed"],rows:e.complianceFrameworks.map(n=>[c(n.id,12),n.name,n.version,n.status,String(n.score),String(n.passedControls),String(n.failedControls)])});}catch(e){s(e);}});}function Ut(r){r.command("security-policies").description("Assethandler asset security policies").command("list").description("List security policies").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Q,{pagination:u(t.limit,t.cursor)});a(t,e.assetSecurityPolicies,{headers:["ID","Name","Version","Category","Status","Owner"],rows:e.assetSecurityPolicies.map(n=>[c(n.id,12),n.name,n.version,n.category,n.status,c(n.owner,16)])});}catch(e){s(e);}});}function Gt(r){r.command("security-events").description("Assethandler security events").command("list").description("List security events").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(X,{pagination:u(t.limit,t.cursor)});a(t,e.securityEvents,{headers:["ID","Title","Type","Severity","Source","Resolved"],rows:e.securityEvents.map(n=>[c(n.id,12),n.title,n.eventType,n.severity,n.source,n.resolved?"yes":"no"])});}catch(e){s(e);}});}function Ft(r){let i=r.command("esg-metrics").description("Assethandler ESG metrics");i.command("list").description("List ESG metrics").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(Z,{pagination:u(t.limit,t.cursor)});a(t,e.esgMetrics,{headers:["ID","Category","Metric","Value","Unit","Target","Trend"],rows:e.esgMetrics.map(n=>[c(n.id,12),n.category,n.metricName,String(n.value),n.unit,n.target!=null?String(n.target):"-",n.trend??"-"])});}catch(e){s(e);}}),i.command("upsert").description("Create or update an ESG metric").requiredOption("--category <c>","Category").requiredOption("--metric-key <k>","Metric key").requiredOption("--metric-name <n>","Metric name").requiredOption("--value <n>","Value",A).requiredOption("--unit <u>","Unit").requiredOption("--period-start <iso>","Period start (ISO date)").requiredOption("--period-end <iso>","Period end (ISO date)").option("--target <n>","Target value",A).option("--trend <t>","Trend").option("-f, --format <format>","Output format").action(async t=>{try{let e={category:t.category,metricKey:t.metricKey,metricName:t.metricName,value:t.value,unit:t.unit,periodStart:t.periodStart,periodEnd:t.periodEnd};t.target!==void 0&&(e.target=t.target),t.trend&&(e.trend=t.trend);let n=await o(tt,{input:e});m(`ESG metric saved: ${n.upsertEsgMetric.metricKey}`),a(t,n.upsertEsgMetric);}catch(e){s(e);}});}function gt(r){Vt(r),Bt(r),jt(r);}function Vt(r){let i=r.command("predictions").description("Assethandler AI predictions");i.command("list").description("List AI predictions").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(et,{pagination:u(t.limit,t.cursor)});a(t,e.aiPredictions,{headers:["ID","Asset","Type","Model","Score","Confidence","Status"],rows:e.aiPredictions.map(n=>[c(n.id,12),c(n.assetId,12),n.predictionType,n.modelVersion,String(n.score),String(n.confidence),n.status])});}catch(e){s(e);}}),i.command("request").description("Request an AI prediction for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--prediction-type <t>","Prediction type").option("--feature-vector <json>","Feature vector JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,predictionType:t.predictionType};t.featureVector&&(e.featureVector=l("feature-vector",t.featureVector));let n=await o(nt,{input:e});m(`Prediction requested: ${n.requestAIPrediction.id}`),a(t,n.requestAIPrediction);}catch(e){s(e);}});}function Bt(r){let i=r.command("provenance").description("Assethandler asset provenance records");i.command("list").description("List provenance records").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(rt,{pagination:u(t.limit,t.cursor)});a(t,e.provenanceRecords,{headers:["ID","Asset","Chain","Hash","Attested By"],rows:e.provenanceRecords.map(n=>[c(n.id,12),c(n.assetId,12),n.chainNetwork,c(n.hash,16),c(n.attestedBy,16)])});}catch(e){s(e);}}),i.command("record").description("Record an asset provenance attestation").requiredOption("--asset <id>","Asset ID").requiredOption("--chain-network <n>","Chain network").requiredOption("--hash <h>","Attestation hash").option("--tx-hash <h>","Transaction hash").option("--block-number <n>","Block number",d).option("--metadata <json>","Metadata JSON").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,chainNetwork:t.chainNetwork,hash:t.hash};t.txHash&&(e.txHash=t.txHash),t.blockNumber!==void 0&&(e.blockNumber=t.blockNumber),t.metadata&&(e.metadata=l("metadata",t.metadata));let n=await o(it,{input:e});m(`Provenance recorded: ${n.recordProvenance.id}`),a(t,n.recordProvenance);}catch(e){s(e);}});}function jt(r){let i=r.command("discovery-jobs").description("Assethandler asset discovery jobs");i.command("list").description("List discovery jobs").option("--limit <n>","Page size (max 100)",d,50).option("--cursor <id>","Opaque cursor from a previous page").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(ot,{pagination:u(t.limit,t.cursor)});a(t,e.discoveryJobs,{headers:["ID","Name","Source","Status","Discovered"],rows:e.discoveryJobs.map(n=>[c(n.id,12),n.name,n.source,n.status,String(n.assetsDiscovered)])});}catch(e){s(e);}}),i.command("start").description("Start an asset discovery job").requiredOption("--name <name>","Job name").requiredOption("--source <s>","Discovery source").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,source:t.source},n=await o(st,{input:e});m(`Discovery job started: ${n.startDiscoveryJob.name}`),a(t,n.startDiscoveryJob);}catch(e){s(e);}});}function lt(r){r.command("dashboard").description("Assethandler dashboard overview").command("overview").description("Asset / transaction / incident / work-order counts").option("-f, --format <format>","Output format").action(async t=>{try{let e=await o(at);a(t,e.dashboardOverview);}catch(e){s(e);}});}var Jt={id:"assethandler",version:"1.0.0",displayName:"Assethandler",dependsOn:["auth","workspaces"],register(r,i){E(i);let t=r.command("assethandler").description("Assethandler enterprise asset management platform");ct(t),dt(t),ut(t),pt(t),mt(t),gt(t),lt(t);}},Hn=Jt;module.exports=Hn;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,p as p$1,g,i,o as o$1}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h as h$1,p as p$1,g,i,o as o$1}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var C=`
|
|
2
2
|
query AssetHandlerGetAsset($id: ID!) {
|
|
3
3
|
asset(id: $id) {
|
|
4
4
|
id assetNumber name description category status condition
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(r
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var p=class extends Error{exitCode;hint;constructor(n,r){super(n),this.name="CliUserError",this.exitCode=r?.exitCode??1,this.hint=r?.hint;}},I=class extends p{constructor(n,r){super(n,{exitCode:2,hint:r?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},f=class extends Error{cause;constructor(n,r){super(n),this.name="CliInternalError",this.cause=r;}};var C=null;function S(i){C=i;}function w(){if(!C)throw new f("vibecontrols module helpers used before setHelpersContext was called");return C}function xt(){let i=w();if(!i.auth.isAuthenticated())throw new I("Authentication required.",{hint:`Run \`${i.productName} auth login\` to authenticate.`})}async function u(i,n){return xt(),w().gql.workspace.request(i,n)}async function k(i,n){return w().gql.workspaceAuthOnly.request(i,n)}function s(i){let n=i instanceof Error?i.message:String(i);throw new p(n)}function a(i,n,r){w().output.formatAndOutput(i,n,r);}function d(i){w().output.printSuccess(i);}function l(i,n){return w().output.truncate(i,n)}var T=`
|
|
2
2
|
query AthListTeams(
|
|
3
3
|
$pagination: PaginationInput
|
|
4
4
|
$sport: AthSport
|
|
@@ -165,13 +165,13 @@
|
|
|
165
165
|
durationMin location meetingUrl createdAt workspaceId
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
-
`,
|
|
168
|
+
`,V=`
|
|
169
169
|
mutation AthConfirmSession($id: ID!) {
|
|
170
170
|
athConfirmSession(id: $id) {
|
|
171
171
|
id title status scheduledAt updatedAt
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
|
-
`,
|
|
174
|
+
`,B=`
|
|
175
175
|
mutation AthCancelSession($id: ID!) {
|
|
176
176
|
athCancelSession(id: $id) {
|
|
177
177
|
id title status updatedAt
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
homeScore awayScore updatedAt
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
|
-
`,
|
|
264
|
+
`,rt=`
|
|
265
265
|
query AthStandings($competition: String!) {
|
|
266
266
|
athStandings(competition: $competition) {
|
|
267
267
|
id competition teamId rank played won drawn lost
|
|
@@ -269,8 +269,8 @@
|
|
|
269
269
|
team { id name }
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
|
-
`,
|
|
272
|
+
`,nt=`
|
|
273
273
|
query AthHealth {
|
|
274
274
|
athHealth
|
|
275
275
|
}
|
|
276
|
-
`;function ot(i,r){try{return JSON.parse(r)}catch{throw new p(`--${i} must be valid JSON`)}}function c(i){let r=Number.parseInt(i,10);if(Number.isNaN(r))throw new p(`Expected an integer but got "${i}"`);return r}function g(i){let r=Number.parseFloat(i);if(Number.isNaN(r))throw new p(`Expected a number but got "${i}"`);return r}function y(i){return i.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function it(i){let r=i.command("teams").description("AtheleteBridge teams");r.command("list").description("List teams").option("--sport <s>","Filter by sport").option("--status <s>","Filter by team status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(T,{pagination:{limit:n.limit,offset:n.offset},sport:n.sport?n.sport.toUpperCase():void 0,status:n.status?n.status.toUpperCase():void 0});a(n,t.athListTeams.items,{headers:["ID","Name","Sport","Status","Season"],rows:t.athListTeams.items.map(e=>[l(e.id,12),e.name,e.sport,e.status,e.season??"-"])});}catch(t){s(t);}}),r.command("get").description("Get a team by id").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(x,{id:n});if(!e.athTeam)throw new p(`Team ${n} not found`);a(t,e.athTeam);}catch(e){s(e);}}),r.command("create").description("Create a team").requiredOption("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport","OTHER").option("--status <s>","Team status","FORMING").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async n=>{try{let t={name:n.name,sport:(n.sport??"OTHER").toUpperCase(),status:(n.status??"FORMING").toUpperCase()};n.description&&(t.description=n.description),n.season&&(t.season=n.season),n.ageGroup&&(t.ageGroup=n.ageGroup),n.homeVenue&&(t.homeVenue=n.homeVenue),n.headCoachId&&(t.headCoachId=n.headCoachId),n.tags&&(t.tags=y(n.tags));let e=await u(E,{input:t});d(`Team created: ${e.athCreateTeam.name}`),a(n,e.athCreateTeam);}catch(t){s(t);}}),r.command("update").description("Update a team").argument("<id>","Team ID").option("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport").option("--status <s>","Team status").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.sport&&(e.sport=t.sport.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.season&&(e.season=t.season),t.ageGroup&&(e.ageGroup=t.ageGroup),t.homeVenue&&(e.homeVenue=t.homeVenue),t.headCoachId&&(e.headCoachId=t.headCoachId),t.tags&&(e.tags=y(t.tags)),!Object.keys(e).length)throw new p("No updates specified");let o=await u(v,{id:n,input:e});d("Team updated"),a(t,o.athUpdateTeam);}catch(e){s(e);}}),r.command("archive").description("Archive a team").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(R,{id:n});d(e.athArchiveTeam?`Team ${n} archived`:`Team ${n} not archived`),a(t,{archived:e.athArchiveTeam});}catch(e){s(e);}});}function st(i){let r=i.command("members").description("AtheleteBridge team members");r.command("list").description("List members of a team").requiredOption("--team <id>","Team ID").option("--status <s>","Filter by member status").option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(O,{teamId:n.team,status:n.status?n.status.toUpperCase():void 0});a(n,t.athListMembers,{headers:["ID","Name","Role","Status","Jersey","Position"],rows:t.athListMembers.map(e=>[l(e.id,12),e.displayName,e.role,e.status,e.jerseyNumber!==void 0&&e.jerseyNumber!==null?String(e.jerseyNumber):"-",e.position??"-"])});}catch(t){s(t);}}),r.command("add").description("Add a member to a team").requiredOption("--team <id>","Team ID").requiredOption("--user <id>","User ID").requiredOption("--display-name <name>","Display name").option("--role <r>","Member role","PLAYER").option("--status <s>","Member status","ACTIVE").option("--jersey-number <n>","Jersey number",c).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",g).option("--weight <n>","Weight",g).option("--joined-at <iso>","Joined at (ISO timestamp)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async n=>{try{let t={teamId:n.team,userId:n.user,displayName:n.displayName,role:(n.role??"PLAYER").toUpperCase(),status:(n.status??"ACTIVE").toUpperCase()};n.jerseyNumber!==void 0&&(t.jerseyNumber=n.jerseyNumber),n.position&&(t.position=n.position),n.dominantSide&&(t.dominantSide=n.dominantSide),n.height!==void 0&&(t.height=n.height),n.weight!==void 0&&(t.weight=n.weight),n.joinedAt&&(t.joinedAt=n.joinedAt),n.notes&&(t.notes=n.notes);let e=await u(D,{input:t});d(`Member added: ${e.athAddMember.displayName}`),a(n,e.athAddMember);}catch(t){s(t);}}),r.command("update").description("Update a team member").argument("<id>","Member ID").option("--display-name <name>","Display name").option("--role <r>","Member role").option("--status <s>","Member status").option("--jersey-number <n>","Jersey number",c).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",g).option("--weight <n>","Weight",g).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};if(t.displayName&&(e.displayName=t.displayName),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.jerseyNumber!==void 0&&(e.jerseyNumber=t.jerseyNumber),t.position&&(e.position=t.position),t.dominantSide&&(e.dominantSide=t.dominantSide),t.height!==void 0&&(e.height=t.height),t.weight!==void 0&&(e.weight=t.weight),t.notes!==void 0&&(e.notes=t.notes),!Object.keys(e).length)throw new p("No updates specified");let o=await u($,{id:n,input:e});d("Member updated"),a(t,o.athUpdateMember);}catch(e){s(e);}}),r.command("remove").description("Remove a team member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(L,{id:n});d(e.athRemoveMember?`Member ${n} removed`:`Member ${n} not removed`),a(t,{removed:e.athRemoveMember});}catch(e){s(e);}});}function at(i){let r=i.command("programs").description("AtheleteBridge training programs");r.command("list").description("List training programs").option("--level <l>","Filter by program level").option("--sport <s>","Filter by sport").option("--status <s>","Filter by program status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await u(P,{pagination:{limit:t.limit,offset:t.offset},level:t.level?t.level.toUpperCase():void 0,sport:t.sport?t.sport.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});a(t,e.athListPrograms.items,{headers:["ID","Name","Sport","Level","Status","Weeks"],rows:e.athListPrograms.items.map(o=>[l(o.id,12),o.name,o.sport,o.level,o.status,o.weeks!==void 0&&o.weeks!==null?String(o.weeks):"-"])});}catch(e){s(e);}}),r.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(M,{id:t});if(!o.athProgram)throw new p(`Program ${t} not found`);a(e,o.athProgram);}catch(o){s(o);}}),r.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport","OTHER").option("--level <l>","Level","BEGINNER").option("--weeks <n>","Number of weeks",c).option("--template","Mark as a template").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,sport:(t.sport??"OTHER").toUpperCase(),level:(t.level??"BEGINNER").toUpperCase(),isTemplate:!!t.template};t.summary&&(e.summary=t.summary),t.weeks!==void 0&&(e.weeks=t.weeks),t.tags&&(e.tags=y(t.tags));let o=await u(N,{input:e});d(`Program created: ${o.athCreateProgram.name}`),a(t,o.athCreateProgram);}catch(e){s(e);}}),r.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport").option("--level <l>","Level").option("--weeks <n>","Number of weeks",c).option("--template <bool>","Template flag (true|false)").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.summary!==void 0&&(o.summary=e.summary),e.sport&&(o.sport=e.sport.toUpperCase()),e.level&&(o.level=e.level.toUpperCase()),e.weeks!==void 0&&(o.weeks=e.weeks),e.template!==void 0&&(o.isTemplate=e.template==="true"),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let gt=await u(_,{id:t,input:o});d("Program updated"),a(e,gt.athUpdateProgram);}catch(o){s(o);}}),r.command("transition").description("Advance a program through its publish lifecycle (DRAFT -> PUBLISHED -> ARCHIVED)").argument("<id>","Program ID").requiredOption("--status <s>","Target status: DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(F,{id:t,status:e.status.toUpperCase()});d(`Program transitioned to ${o.athTransitionProgram.status}`),a(e,o.athTransitionProgram);}catch(o){s(o);}}),r.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(U,{id:t});d(o.athArchiveProgram?`Program ${t} archived`:`Program ${t} not archived`),a(e,{archived:o.athArchiveProgram});}catch(o){s(o);}});let n=r.command("drills").description("AtheleteBridge program drills");n.command("add").description("Add a drill to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Drill name").option("--description <s>","Description").option("--week-number <n>","Week number",c,1).option("--order-index <n>","Order index",c,0).option("--sets <n>","Sets",c).option("--reps <n>","Reps",c).option("--duration-sec <n>","Duration (seconds)",c).option("--rest-sec <n>","Rest (seconds)",c).option("--video-file-id <id>","Video file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={programId:t.program,name:t.name,weekNumber:t.weekNumber??1,orderIndex:t.orderIndex??0};t.description&&(e.description=t.description),t.sets!==void 0&&(e.sets=t.sets),t.reps!==void 0&&(e.reps=t.reps),t.durationSec!==void 0&&(e.durationSec=t.durationSec),t.restSec!==void 0&&(e.restSec=t.restSec),t.videoFileId&&(e.videoFileId=t.videoFileId);let o=await u(q,{input:e});d(`Drill added: ${o.athAddDrill.name}`),a(t,o.athAddDrill);}catch(e){s(e);}}),n.command("remove").description("Remove a drill").argument("<id>","Drill ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(G,{id:t});d(o.athRemoveDrill?`Drill ${t} removed`:`Drill ${t} not removed`),a(e,{removed:o.athRemoveDrill});}catch(o){s(o);}});}function ut(i){let r=i.command("sessions").description("AtheleteBridge coaching sessions");r.command("list").description("List sessions").option("--athlete <id>","Filter by athlete ID").option("--coach <id>","Filter by coach ID").option("--status <s>","Filter by session status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(W,{pagination:{limit:n.limit,offset:n.offset},athleteId:n.athlete,coachId:n.coach,status:n.status?n.status.toUpperCase():void 0});a(n,t.athListSessions.items,{headers:["ID","Title","Type","Status","Scheduled"],rows:t.athListSessions.items.map(e=>[l(e.id,12),e.title,e.type,e.status,e.scheduledAt])});}catch(t){s(t);}}),r.command("get").description("Get a session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(j,{id:n});if(!e.athSession)throw new p(`Session ${n} not found`);a(t,e.athSession);}catch(e){s(e);}}),r.command("book").description("Book a coaching session").requiredOption("--athlete <id>","Athlete ID").requiredOption("--coach <id>","Coach ID").requiredOption("--title <s>","Session title").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--type <t>","Session type","IN_PERSON").option("--duration-min <n>","Duration (minutes)",c).option("--location <s>","Location").option("--meeting-url <url>","Meeting URL").option("--program <id>","Program ID").option("-f, --format <format>","Output format").action(async n=>{try{let t={athleteId:n.athlete,coachId:n.coach,title:n.title,scheduledAt:n.scheduledAt,type:(n.type??"IN_PERSON").toUpperCase()};n.durationMin!==void 0&&(t.durationMin=n.durationMin),n.location&&(t.location=n.location),n.meetingUrl&&(t.meetingUrl=n.meetingUrl),n.program&&(t.programId=n.program);let e=await u(H,{input:t});d(`Session booked: ${e.athBookSession.title}`),a(n,e.athBookSession);}catch(t){s(t);}}),r.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(B,{id:n});d(`Session confirmed: ${e.athConfirmSession.status}`),a(t,e.athConfirmSession);}catch(e){s(e);}}),r.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(V,{id:n});d(`Session cancelled: ${e.athCancelSession.status}`),a(t,e.athCancelSession);}catch(e){s(e);}}),r.command("complete").description("Complete a session (optionally with rating and feedback)").argument("<id>","Session ID").option("--rating <n>","Rating",c).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e={};t.rating!==void 0&&(e.rating=t.rating),t.feedback&&(e.feedback=t.feedback);let o=await u(z,{id:n,input:Object.keys(e).length?e:void 0});d(`Session completed: ${o.athCompleteSession.status}`),a(t,o.athCompleteSession);}catch(e){s(e);}});}function ct(i){let r=i.command("workouts").description("AtheleteBridge workout logs");r.command("list").description("List workout logs").option("--athlete <id>","Filter by athlete ID").option("--program <id>","Filter by program ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(J,{pagination:{limit:n.limit,offset:n.offset},athleteId:n.athlete,programId:n.program});a(n,t.athListWorkoutLogs.items,{headers:["ID","Title","Status","Performed","Load","RPE"],rows:t.athListWorkoutLogs.items.map(e=>[l(e.id,12),e.title,e.status,e.performedAt,e.totalLoad!==void 0&&e.totalLoad!==null?String(e.totalLoad):"-",e.rpe!==void 0&&e.rpe!==null?String(e.rpe):"-"])});}catch(t){s(t);}}),r.command("log").description("Log a workout").requiredOption("--title <s>","Workout title").requiredOption("--performed-at <iso>","Performed at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--program <id>","Program ID").option("--status <s>","Workout status","COMPLETED").option("--duration-min <n>","Duration (minutes)",c).option("--total-load <n>","Total load",g).option("--rpe <n>","Rate of perceived exertion",c).option("--notes <s>","Notes").option("--metrics <json>","Metrics JSON object").option("-f, --format <format>","Output format").action(async n=>{try{let t={title:n.title,performedAt:n.performedAt,status:(n.status??"COMPLETED").toUpperCase()};n.athlete&&(t.athleteId=n.athlete),n.program&&(t.programId=n.program),n.durationMin!==void 0&&(t.durationMin=n.durationMin),n.totalLoad!==void 0&&(t.totalLoad=n.totalLoad),n.rpe!==void 0&&(t.rpe=n.rpe),n.notes&&(t.notes=n.notes),n.metrics&&(t.metrics=ot("metrics",n.metrics));let e=await u(K,{input:t});d(`Workout logged: ${e.athLogWorkout.title}`),a(n,e.athLogWorkout);}catch(t){s(t);}});}function dt(i){let r=i.command("metrics").description("AtheleteBridge performance metrics");r.command("list").description("List performance metrics for an athlete").requiredOption("--athlete <id>","Athlete ID").option("--type <t>","Filter by metric type").option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(Y,{athleteId:n.athlete,type:n.type?n.type.toUpperCase():void 0});a(n,t.athPerformanceMetrics,{headers:["ID","Label","Type","Value","Unit","Recorded"],rows:t.athPerformanceMetrics.map(e=>[l(e.id,12),e.label,e.type,String(e.value),e.unit??"-",e.recordedAt])});}catch(t){s(t);}}),r.command("record").description("Record a performance metric").requiredOption("--label <s>","Metric label").requiredOption("--value <n>","Metric value",g).requiredOption("--recorded-at <iso>","Recorded at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--type <t>","Metric type","CUSTOM").option("--unit <s>","Unit").option("--source <s>","Source").option("-f, --format <format>","Output format").action(async n=>{try{let t={label:n.label,value:n.value,recordedAt:n.recordedAt,type:(n.type??"CUSTOM").toUpperCase()};n.athlete&&(t.athleteId=n.athlete),n.unit&&(t.unit=n.unit),n.source&&(t.source=n.source);let e=await u(X,{input:t});d(`Metric recorded: ${e.athRecordMetric.label}`),a(n,e.athRecordMetric);}catch(t){s(t);}});}function pt(i){let r=i.command("fixtures").description("AtheleteBridge fixtures");r.command("list").description("List fixtures").option("--team <id>","Filter by team ID").option("--status <s>","Filter by fixture status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(Q,{pagination:{limit:n.limit,offset:n.offset},status:n.status?n.status.toUpperCase():void 0,teamId:n.team});a(n,t.athListFixtures.items,{headers:["ID","Type","Status","Competition","Scheduled","Score"],rows:t.athListFixtures.items.map(e=>[l(e.id,12),e.type,e.status,e.competition??"-",e.scheduledAt,e.homeScore!==void 0&&e.homeScore!==null&&e.awayScore!==void 0&&e.awayScore!==null?`${e.homeScore}-${e.awayScore}`:"-"])});}catch(t){s(t);}}),r.command("get").description("Get a fixture by id").argument("<id>","Fixture ID").option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(Z,{id:n});if(!e.athFixture)throw new p(`Fixture ${n} not found`);a(t,e.athFixture);}catch(e){s(e);}}),r.command("schedule").description("Schedule a fixture").requiredOption("--home-team <id>","Home team ID").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--away-team <id>","Away team ID").option("--type <t>","Fixture type","FRIENDLY").option("--competition <s>","Competition").option("--round <s>","Round").option("--kickoff-at <iso>","Kickoff at (ISO timestamp)").option("--venue <s>","Venue").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async n=>{try{let t={homeTeamId:n.homeTeam,scheduledAt:n.scheduledAt,type:(n.type??"FRIENDLY").toUpperCase()};n.awayTeam&&(t.awayTeamId=n.awayTeam),n.competition&&(t.competition=n.competition),n.round&&(t.round=n.round),n.kickoffAt&&(t.kickoffAt=n.kickoffAt),n.venue&&(t.venue=n.venue),n.notes&&(t.notes=n.notes);let e=await u(tt,{input:t});d(`Fixture scheduled: ${e.athScheduleFixture.id}`),a(n,e.athScheduleFixture);}catch(t){s(t);}}),r.command("record-result").description("Record a final result for a fixture and recompute standings").argument("<id>","Fixture ID").requiredOption("--home-score <n>","Home score",c).requiredOption("--away-score <n>","Away score",c).option("-f, --format <format>","Output format").action(async(n,t)=>{try{let e=await u(et,{id:n,input:{homeScore:t.homeScore,awayScore:t.awayScore}});d(`Result recorded: ${e.athRecordFixtureResult.homeScore??0}-${e.athRecordFixtureResult.awayScore??0}`),a(t,e.athRecordFixtureResult);}catch(e){s(e);}});}function mt(i){i.command("standings").description("AtheleteBridge standings").command("list").description("List standings for a competition").requiredOption("--competition <s>","Competition name").option("-f, --format <format>","Output format").action(async n=>{try{let t=await u(nt,{competition:n.competition});a(n,t.athStandings,{headers:["Rank","Team","P","W","D","L","Pts"],rows:t.athStandings.map(e=>[e.rank!==void 0&&e.rank!==null?String(e.rank):"-",l(e.teamId,12),String(e.played),String(e.won),String(e.drawn),String(e.lost),String(e.points)])});}catch(t){s(t);}});}function lt(i){i.command("health").description("AtheleteBridge service health check (public)").option("-f, --format <format>","Output format").action(async r=>{try{let n=await k(rt);d(n.athHealth),a(r,{health:n.athHealth});}catch(n){s(n);}});}var Et={id:"atheletebridge",version:"1.0.0",displayName:"AtheleteBridge",dependsOn:["auth","workspaces"],register(i,r){S(r);let n=i.command("atheletebridge").description("AtheleteBridge sports team & athlete management");it(n),st(n),at(n),ut(n),ct(n),dt(n),pt(n),mt(n),lt(n);}},ln=Et;module.exports=ln;
|
|
276
|
+
`;function ot(i,n){try{return JSON.parse(n)}catch{throw new p(`--${i} must be valid JSON`)}}function c(i){let n=Number.parseInt(i,10);if(Number.isNaN(n))throw new p(`Expected an integer but got "${i}"`);return n}function g(i){let n=Number.parseFloat(i);if(Number.isNaN(n))throw new p(`Expected a number but got "${i}"`);return n}function y(i){return i.split(",").map(n=>n.trim()).filter(n=>n.length>0)}function it(i){let n=i.command("teams").description("AtheleteBridge teams");n.command("list").description("List teams").option("--sport <s>","Filter by sport").option("--status <s>","Filter by team status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(T,{pagination:{limit:r.limit,offset:r.offset},sport:r.sport?r.sport.toUpperCase():void 0,status:r.status?r.status.toUpperCase():void 0});a(r,t.athListTeams.items,{headers:["ID","Name","Sport","Status","Season"],rows:t.athListTeams.items.map(e=>[l(e.id,12),e.name,e.sport,e.status,e.season??"-"])});}catch(t){s(t);}}),n.command("get").description("Get a team by id").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(x,{id:r});if(!e.athTeam)throw new p(`Team ${r} not found`);a(t,e.athTeam);}catch(e){s(e);}}),n.command("create").description("Create a team").requiredOption("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport","OTHER").option("--status <s>","Team status","FORMING").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async r=>{try{let t={name:r.name,sport:(r.sport??"OTHER").toUpperCase(),status:(r.status??"FORMING").toUpperCase()};r.description&&(t.description=r.description),r.season&&(t.season=r.season),r.ageGroup&&(t.ageGroup=r.ageGroup),r.homeVenue&&(t.homeVenue=r.homeVenue),r.headCoachId&&(t.headCoachId=r.headCoachId),r.tags&&(t.tags=y(r.tags));let e=await u(E,{input:t});d(`Team created: ${e.athCreateTeam.name}`),a(r,e.athCreateTeam);}catch(t){s(t);}}),n.command("update").description("Update a team").argument("<id>","Team ID").option("--name <name>","Team name").option("--description <s>","Description").option("--sport <s>","Sport").option("--status <s>","Team status").option("--season <s>","Season").option("--age-group <s>","Age group").option("--home-venue <s>","Home venue").option("--head-coach-id <id>","Head coach user ID").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e={};if(t.name&&(e.name=t.name),t.description!==void 0&&(e.description=t.description),t.sport&&(e.sport=t.sport.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.season&&(e.season=t.season),t.ageGroup&&(e.ageGroup=t.ageGroup),t.homeVenue&&(e.homeVenue=t.homeVenue),t.headCoachId&&(e.headCoachId=t.headCoachId),t.tags&&(e.tags=y(t.tags)),!Object.keys(e).length)throw new p("No updates specified");let o=await u(v,{id:r,input:e});d("Team updated"),a(t,o.athUpdateTeam);}catch(e){s(e);}}),n.command("archive").description("Archive a team").argument("<id>","Team ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(R,{id:r});d(e.athArchiveTeam?`Team ${r} archived`:`Team ${r} not archived`),a(t,{archived:e.athArchiveTeam});}catch(e){s(e);}});}function st(i){let n=i.command("members").description("AtheleteBridge team members");n.command("list").description("List members of a team").requiredOption("--team <id>","Team ID").option("--status <s>","Filter by member status").option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(O,{teamId:r.team,status:r.status?r.status.toUpperCase():void 0});a(r,t.athListMembers,{headers:["ID","Name","Role","Status","Jersey","Position"],rows:t.athListMembers.map(e=>[l(e.id,12),e.displayName,e.role,e.status,e.jerseyNumber!==void 0&&e.jerseyNumber!==null?String(e.jerseyNumber):"-",e.position??"-"])});}catch(t){s(t);}}),n.command("add").description("Add a member to a team").requiredOption("--team <id>","Team ID").requiredOption("--user <id>","User ID").requiredOption("--display-name <name>","Display name").option("--role <r>","Member role","PLAYER").option("--status <s>","Member status","ACTIVE").option("--jersey-number <n>","Jersey number",c).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",g).option("--weight <n>","Weight",g).option("--joined-at <iso>","Joined at (ISO timestamp)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async r=>{try{let t={teamId:r.team,userId:r.user,displayName:r.displayName,role:(r.role??"PLAYER").toUpperCase(),status:(r.status??"ACTIVE").toUpperCase()};r.jerseyNumber!==void 0&&(t.jerseyNumber=r.jerseyNumber),r.position&&(t.position=r.position),r.dominantSide&&(t.dominantSide=r.dominantSide),r.height!==void 0&&(t.height=r.height),r.weight!==void 0&&(t.weight=r.weight),r.joinedAt&&(t.joinedAt=r.joinedAt),r.notes&&(t.notes=r.notes);let e=await u(D,{input:t});d(`Member added: ${e.athAddMember.displayName}`),a(r,e.athAddMember);}catch(t){s(t);}}),n.command("update").description("Update a team member").argument("<id>","Member ID").option("--display-name <name>","Display name").option("--role <r>","Member role").option("--status <s>","Member status").option("--jersey-number <n>","Jersey number",c).option("--position <s>","Position").option("--dominant-side <s>","Dominant side").option("--height <n>","Height",g).option("--weight <n>","Weight",g).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e={};if(t.displayName&&(e.displayName=t.displayName),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.jerseyNumber!==void 0&&(e.jerseyNumber=t.jerseyNumber),t.position&&(e.position=t.position),t.dominantSide&&(e.dominantSide=t.dominantSide),t.height!==void 0&&(e.height=t.height),t.weight!==void 0&&(e.weight=t.weight),t.notes!==void 0&&(e.notes=t.notes),!Object.keys(e).length)throw new p("No updates specified");let o=await u($,{id:r,input:e});d("Member updated"),a(t,o.athUpdateMember);}catch(e){s(e);}}),n.command("remove").description("Remove a team member").argument("<id>","Member ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(L,{id:r});d(e.athRemoveMember?`Member ${r} removed`:`Member ${r} not removed`),a(t,{removed:e.athRemoveMember});}catch(e){s(e);}});}function at(i){let n=i.command("programs").description("AtheleteBridge training programs");n.command("list").description("List training programs").option("--level <l>","Filter by program level").option("--sport <s>","Filter by sport").option("--status <s>","Filter by program status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await u(P,{pagination:{limit:t.limit,offset:t.offset},level:t.level?t.level.toUpperCase():void 0,sport:t.sport?t.sport.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});a(t,e.athListPrograms.items,{headers:["ID","Name","Sport","Level","Status","Weeks"],rows:e.athListPrograms.items.map(o=>[l(o.id,12),o.name,o.sport,o.level,o.status,o.weeks!==void 0&&o.weeks!==null?String(o.weeks):"-"])});}catch(e){s(e);}}),n.command("get").description("Get a training program by id").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(M,{id:t});if(!o.athProgram)throw new p(`Program ${t} not found`);a(e,o.athProgram);}catch(o){s(o);}}),n.command("create").description("Create a training program").requiredOption("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport","OTHER").option("--level <l>","Level","BEGINNER").option("--weeks <n>","Number of weeks",c).option("--template","Mark as a template").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,sport:(t.sport??"OTHER").toUpperCase(),level:(t.level??"BEGINNER").toUpperCase(),isTemplate:!!t.template};t.summary&&(e.summary=t.summary),t.weeks!==void 0&&(e.weeks=t.weeks),t.tags&&(e.tags=y(t.tags));let o=await u(N,{input:e});d(`Program created: ${o.athCreateProgram.name}`),a(t,o.athCreateProgram);}catch(e){s(e);}}),n.command("update").description("Update a training program").argument("<id>","Program ID").option("--name <name>","Program name").option("--summary <s>","Summary").option("--sport <s>","Sport").option("--level <l>","Level").option("--weeks <n>","Number of weeks",c).option("--template <bool>","Template flag (true|false)").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.summary!==void 0&&(o.summary=e.summary),e.sport&&(o.sport=e.sport.toUpperCase()),e.level&&(o.level=e.level.toUpperCase()),e.weeks!==void 0&&(o.weeks=e.weeks),e.template!==void 0&&(o.isTemplate=e.template==="true"),e.tags&&(o.tags=y(e.tags)),!Object.keys(o).length)throw new p("No updates specified");let gt=await u(_,{id:t,input:o});d("Program updated"),a(e,gt.athUpdateProgram);}catch(o){s(o);}}),n.command("transition").description("Advance a program through its publish lifecycle (DRAFT -> PUBLISHED -> ARCHIVED)").argument("<id>","Program ID").requiredOption("--status <s>","Target status: DRAFT|PUBLISHED|ARCHIVED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(F,{id:t,status:e.status.toUpperCase()});d(`Program transitioned to ${o.athTransitionProgram.status}`),a(e,o.athTransitionProgram);}catch(o){s(o);}}),n.command("archive").description("Archive a training program").argument("<id>","Program ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(U,{id:t});d(o.athArchiveProgram?`Program ${t} archived`:`Program ${t} not archived`),a(e,{archived:o.athArchiveProgram});}catch(o){s(o);}});let r=n.command("drills").description("AtheleteBridge program drills");r.command("add").description("Add a drill to a program").requiredOption("--program <id>","Program ID").requiredOption("--name <name>","Drill name").option("--description <s>","Description").option("--week-number <n>","Week number",c,1).option("--order-index <n>","Order index",c,0).option("--sets <n>","Sets",c).option("--reps <n>","Reps",c).option("--duration-sec <n>","Duration (seconds)",c).option("--rest-sec <n>","Rest (seconds)",c).option("--video-file-id <id>","Video file ID (wspace-files-svc)").option("-f, --format <format>","Output format").action(async t=>{try{let e={programId:t.program,name:t.name,weekNumber:t.weekNumber??1,orderIndex:t.orderIndex??0};t.description&&(e.description=t.description),t.sets!==void 0&&(e.sets=t.sets),t.reps!==void 0&&(e.reps=t.reps),t.durationSec!==void 0&&(e.durationSec=t.durationSec),t.restSec!==void 0&&(e.restSec=t.restSec),t.videoFileId&&(e.videoFileId=t.videoFileId);let o=await u(q,{input:e});d(`Drill added: ${o.athAddDrill.name}`),a(t,o.athAddDrill);}catch(e){s(e);}}),r.command("remove").description("Remove a drill").argument("<id>","Drill ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let o=await u(G,{id:t});d(o.athRemoveDrill?`Drill ${t} removed`:`Drill ${t} not removed`),a(e,{removed:o.athRemoveDrill});}catch(o){s(o);}});}function ut(i){let n=i.command("sessions").description("AtheleteBridge coaching sessions");n.command("list").description("List sessions").option("--athlete <id>","Filter by athlete ID").option("--coach <id>","Filter by coach ID").option("--status <s>","Filter by session status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(W,{pagination:{limit:r.limit,offset:r.offset},athleteId:r.athlete,coachId:r.coach,status:r.status?r.status.toUpperCase():void 0});a(r,t.athListSessions.items,{headers:["ID","Title","Type","Status","Scheduled"],rows:t.athListSessions.items.map(e=>[l(e.id,12),e.title,e.type,e.status,e.scheduledAt])});}catch(t){s(t);}}),n.command("get").description("Get a session by id").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(j,{id:r});if(!e.athSession)throw new p(`Session ${r} not found`);a(t,e.athSession);}catch(e){s(e);}}),n.command("book").description("Book a coaching session").requiredOption("--athlete <id>","Athlete ID").requiredOption("--coach <id>","Coach ID").requiredOption("--title <s>","Session title").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--type <t>","Session type","IN_PERSON").option("--duration-min <n>","Duration (minutes)",c).option("--location <s>","Location").option("--meeting-url <url>","Meeting URL").option("--program <id>","Program ID").option("-f, --format <format>","Output format").action(async r=>{try{let t={athleteId:r.athlete,coachId:r.coach,title:r.title,scheduledAt:r.scheduledAt,type:(r.type??"IN_PERSON").toUpperCase()};r.durationMin!==void 0&&(t.durationMin=r.durationMin),r.location&&(t.location=r.location),r.meetingUrl&&(t.meetingUrl=r.meetingUrl),r.program&&(t.programId=r.program);let e=await u(H,{input:t});d(`Session booked: ${e.athBookSession.title}`),a(r,e.athBookSession);}catch(t){s(t);}}),n.command("confirm").description("Confirm a requested session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(V,{id:r});d(`Session confirmed: ${e.athConfirmSession.status}`),a(t,e.athConfirmSession);}catch(e){s(e);}}),n.command("cancel").description("Cancel a session").argument("<id>","Session ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(B,{id:r});d(`Session cancelled: ${e.athCancelSession.status}`),a(t,e.athCancelSession);}catch(e){s(e);}}),n.command("complete").description("Complete a session (optionally with rating and feedback)").argument("<id>","Session ID").option("--rating <n>","Rating",c).option("--feedback <s>","Feedback").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e={};t.rating!==void 0&&(e.rating=t.rating),t.feedback&&(e.feedback=t.feedback);let o=await u(z,{id:r,input:Object.keys(e).length?e:void 0});d(`Session completed: ${o.athCompleteSession.status}`),a(t,o.athCompleteSession);}catch(e){s(e);}});}function ct(i){let n=i.command("workouts").description("AtheleteBridge workout logs");n.command("list").description("List workout logs").option("--athlete <id>","Filter by athlete ID").option("--program <id>","Filter by program ID").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(J,{pagination:{limit:r.limit,offset:r.offset},athleteId:r.athlete,programId:r.program});a(r,t.athListWorkoutLogs.items,{headers:["ID","Title","Status","Performed","Load","RPE"],rows:t.athListWorkoutLogs.items.map(e=>[l(e.id,12),e.title,e.status,e.performedAt,e.totalLoad!==void 0&&e.totalLoad!==null?String(e.totalLoad):"-",e.rpe!==void 0&&e.rpe!==null?String(e.rpe):"-"])});}catch(t){s(t);}}),n.command("log").description("Log a workout").requiredOption("--title <s>","Workout title").requiredOption("--performed-at <iso>","Performed at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--program <id>","Program ID").option("--status <s>","Workout status","COMPLETED").option("--duration-min <n>","Duration (minutes)",c).option("--total-load <n>","Total load",g).option("--rpe <n>","Rate of perceived exertion",c).option("--notes <s>","Notes").option("--metrics <json>","Metrics JSON object").option("-f, --format <format>","Output format").action(async r=>{try{let t={title:r.title,performedAt:r.performedAt,status:(r.status??"COMPLETED").toUpperCase()};r.athlete&&(t.athleteId=r.athlete),r.program&&(t.programId=r.program),r.durationMin!==void 0&&(t.durationMin=r.durationMin),r.totalLoad!==void 0&&(t.totalLoad=r.totalLoad),r.rpe!==void 0&&(t.rpe=r.rpe),r.notes&&(t.notes=r.notes),r.metrics&&(t.metrics=ot("metrics",r.metrics));let e=await u(K,{input:t});d(`Workout logged: ${e.athLogWorkout.title}`),a(r,e.athLogWorkout);}catch(t){s(t);}});}function dt(i){let n=i.command("metrics").description("AtheleteBridge performance metrics");n.command("list").description("List performance metrics for an athlete").requiredOption("--athlete <id>","Athlete ID").option("--type <t>","Filter by metric type").option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(Y,{athleteId:r.athlete,type:r.type?r.type.toUpperCase():void 0});a(r,t.athPerformanceMetrics,{headers:["ID","Label","Type","Value","Unit","Recorded"],rows:t.athPerformanceMetrics.map(e=>[l(e.id,12),e.label,e.type,String(e.value),e.unit??"-",e.recordedAt])});}catch(t){s(t);}}),n.command("record").description("Record a performance metric").requiredOption("--label <s>","Metric label").requiredOption("--value <n>","Metric value",g).requiredOption("--recorded-at <iso>","Recorded at (ISO timestamp)").option("--athlete <id>","Athlete ID").option("--type <t>","Metric type","CUSTOM").option("--unit <s>","Unit").option("--source <s>","Source").option("-f, --format <format>","Output format").action(async r=>{try{let t={label:r.label,value:r.value,recordedAt:r.recordedAt,type:(r.type??"CUSTOM").toUpperCase()};r.athlete&&(t.athleteId=r.athlete),r.unit&&(t.unit=r.unit),r.source&&(t.source=r.source);let e=await u(X,{input:t});d(`Metric recorded: ${e.athRecordMetric.label}`),a(r,e.athRecordMetric);}catch(t){s(t);}});}function pt(i){let n=i.command("fixtures").description("AtheleteBridge fixtures");n.command("list").description("List fixtures").option("--team <id>","Filter by team ID").option("--status <s>","Filter by fixture status").option("--limit <n>","Page size",c,50).option("--offset <n>","Offset",c,0).option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(Q,{pagination:{limit:r.limit,offset:r.offset},status:r.status?r.status.toUpperCase():void 0,teamId:r.team});a(r,t.athListFixtures.items,{headers:["ID","Type","Status","Competition","Scheduled","Score"],rows:t.athListFixtures.items.map(e=>[l(e.id,12),e.type,e.status,e.competition??"-",e.scheduledAt,e.homeScore!==void 0&&e.homeScore!==null&&e.awayScore!==void 0&&e.awayScore!==null?`${e.homeScore}-${e.awayScore}`:"-"])});}catch(t){s(t);}}),n.command("get").description("Get a fixture by id").argument("<id>","Fixture ID").option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(Z,{id:r});if(!e.athFixture)throw new p(`Fixture ${r} not found`);a(t,e.athFixture);}catch(e){s(e);}}),n.command("schedule").description("Schedule a fixture").requiredOption("--home-team <id>","Home team ID").requiredOption("--scheduled-at <iso>","Scheduled at (ISO timestamp)").option("--away-team <id>","Away team ID").option("--type <t>","Fixture type","FRIENDLY").option("--competition <s>","Competition").option("--round <s>","Round").option("--kickoff-at <iso>","Kickoff at (ISO timestamp)").option("--venue <s>","Venue").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async r=>{try{let t={homeTeamId:r.homeTeam,scheduledAt:r.scheduledAt,type:(r.type??"FRIENDLY").toUpperCase()};r.awayTeam&&(t.awayTeamId=r.awayTeam),r.competition&&(t.competition=r.competition),r.round&&(t.round=r.round),r.kickoffAt&&(t.kickoffAt=r.kickoffAt),r.venue&&(t.venue=r.venue),r.notes&&(t.notes=r.notes);let e=await u(tt,{input:t});d(`Fixture scheduled: ${e.athScheduleFixture.id}`),a(r,e.athScheduleFixture);}catch(t){s(t);}}),n.command("record-result").description("Record a final result for a fixture and recompute standings").argument("<id>","Fixture ID").requiredOption("--home-score <n>","Home score",c).requiredOption("--away-score <n>","Away score",c).option("-f, --format <format>","Output format").action(async(r,t)=>{try{let e=await u(et,{id:r,input:{homeScore:t.homeScore,awayScore:t.awayScore}});d(`Result recorded: ${e.athRecordFixtureResult.homeScore??0}-${e.athRecordFixtureResult.awayScore??0}`),a(t,e.athRecordFixtureResult);}catch(e){s(e);}});}function mt(i){i.command("standings").description("AtheleteBridge standings").command("list").description("List standings for a competition").requiredOption("--competition <s>","Competition name").option("-f, --format <format>","Output format").action(async r=>{try{let t=await u(rt,{competition:r.competition});a(r,t.athStandings,{headers:["Rank","Team","P","W","D","L","Pts"],rows:t.athStandings.map(e=>[e.rank!==void 0&&e.rank!==null?String(e.rank):"-",l(e.teamId,12),String(e.played),String(e.won),String(e.drawn),String(e.lost),String(e.points)])});}catch(t){s(t);}});}function lt(i){i.command("health").description("AtheleteBridge service health check (public)").option("-f, --format <format>","Output format").action(async n=>{try{let r=await k(nt);d(r.athHealth),a(n,{health:r.athHealth});}catch(r){s(r);}});}var Et={id:"atheletebridge",version:"1.0.0",displayName:"AtheleteBridge",dependsOn:["auth","workspaces"],register(i,n){S(n);let r=i.command("atheletebridge").description("AtheleteBridge sports team & athlete management");it(r),st(r),at(r),ut(r),ct(r),dt(r),pt(r),mt(r),lt(r);}},mr=Et;module.exports=mr;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h,p,g,i,d}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h,p,g,i,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var y=`
|
|
2
2
|
query AthListTeams(
|
|
3
3
|
$pagination: PaginationInput
|
|
4
4
|
$sport: AthSport
|
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
items { id name slug tenantId organizationId }
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
`,variables:{limit:50}})});if(!r.ok){let p=await r.text().catch(()=>"Unknown error");throw new Error(`Failed to fetch workspaces (${r.status}): ${p}`)}let a=await r.json();if(a.errors?.length)throw new Error(`Failed to fetch workspaces: ${a.errors[0]?.message??"unknown error"}`);return a.data?.myWorkspaces?.items??[]}function Ae(n){try{let s=new URL(n);return s.protocol==="http:"||s.protocol==="https:"}catch{return false}}async function st(n){try{if(!Ae(n))return !1;let{execFile:s}=await import('child_process'),i=process.platform,r,a;return i==="darwin"?(r="open",a=[n]):i==="win32"?(r="cmd",a=["/c","start","",n]):(r="xdg-open",a=[n]),new Promise(p=>{s(r,a,c=>{p(!c);});})}catch{return false}}var
|
|
20
|
+
`,variables:{limit:50}})});if(!r.ok){let p=await r.text().catch(()=>"Unknown error");throw new Error(`Failed to fetch workspaces (${r.status}): ${p}`)}let a=await r.json();if(a.errors?.length)throw new Error(`Failed to fetch workspaces: ${a.errors[0]?.message??"unknown error"}`);return a.data?.myWorkspaces?.items??[]}function Ae(n){try{let s=new URL(n);return s.protocol==="http:"||s.protocol==="https:"}catch{return false}}async function st(n){try{if(!Ae(n))return !1;let{execFile:s}=await import('child_process'),i=process.platform,r,a;return i==="darwin"?(r="open",a=[n]):i==="win32"?(r="cmd",a=["/c","start","",n]):(r="xdg-open",a=[n]),new Promise(p=>{s(r,a,c=>{p(!c);});})}catch{return false}}var f=class extends Error{exitCode;hint;constructor(s,i){super(s),this.name="CliUserError",this.exitCode=i?.exitCode??1,this.hint=i?.hint;}};var k=class extends Error{cause;constructor(s,i){super(s),this.name="CliInternalError",this.cause=i;}};var Et=null;function _t(n){Et=n;}function S(){if(!Et)throw new k("vibecontrols module helpers used before setHelpersContext was called");return Et}async function l(n,s){return S().gql.global.request(n,s)}async function ft(n,s){return S().gql.global.request(n,s)}function b(){S().gql.reset();}function d(n){let s=n instanceof Error?n.message:String(n);throw new f(s)}function g(n,s,i){S().output.formatAndOutput(n,s,i);}function I(n){S().output.printSuccess(n);}function x(n){S().output.printInfo(n);}function R(n){S().output.printWarning(n);}function X(n){S().output.printJson(n);}function J(n){return S().output.formatStatus(n)}function h(n){return S().output.formatDate(n)}function q(n,s){return S().output.truncate(n,s)}function F(){return S()}function M(){return S().auth.read()}function N(n){S().auth.write(n);}function kt(){S().auth.clear();}function B(){return S().config.read()}function bt(){return S().config.resolveOIDC()}function ht(n){return n?n.expiresAt?Date.now()>=n.expiresAt:false:S().auth.isTokenExpired()}var Pt="mutation { signOut }",Lt=`
|
|
21
21
|
mutation RefreshToken($token: String!) {
|
|
22
22
|
refreshToken(token: $token) { accessToken refreshToken expiresIn }
|
|
23
23
|
}
|
|
24
|
-
`;function Yt(n){let s=n.command("auth").description("Authentication commands");s.command("login").description(`Authenticate with ${F().productName}`).option("--client-credentials","Authenticate as an app with client ID and secret").option("--workspace-id <id>","Workspace ID (for app auth)").action(async i=>{try{i.clientCredentials?await Ne(i.workspaceId):await Oe();}catch(r){d(r);}}),s.command("logout").description("Revoke tokens and clear stored auth").action(async()=>{try{if(M()?.accessToken)try{await
|
|
24
|
+
`;function Yt(n){let s=n.command("auth").description("Authentication commands");s.command("login").description(`Authenticate with ${F().productName}`).option("--client-credentials","Authenticate as an app with client ID and secret").option("--workspace-id <id>","Workspace ID (for app auth)").action(async i=>{try{i.clientCredentials?await Ne(i.workspaceId):await Oe();}catch(r){d(r);}}),s.command("logout").description("Revoke tokens and clear stored auth").action(async()=>{try{if(M()?.accessToken)try{await ft(Pt);}catch{R("Server-side logout failed, clearing local tokens");}kt(),b(),I("Logged out successfully");}catch(i){d(i);}}),s.command("status").description("Show current auth state").option("-f, --format <format>","Output format (json, table)").action(i=>{let r=M(),a=B(),p=!!r?.accessToken,c=r?.accessToken?ht(r):false,u=r?.expiresAt?h(new Date(r.expiresAt).toISOString()):"-",m=r?.authMethod==="client_credentials"?"Client Credentials":"OAuth2 Device Code",t=r?.workspaceTokenExpiresAt?h(new Date(r.workspaceTokenExpiresAt).toISOString()):"-";g(i,{authenticated:p,method:m,expired:c,expiresAt:u,workspaceId:r?.workspaceId??"-",organizationId:r?.organizationId??"-",workspaceTokenExpiresAt:t,workspaceEndpoint:a.workspaceEndpoint,globalEndpoint:a.globalEndpoint},{headers:["Key","Value"],rows:[["Authenticated",String(p)],["Method",m],["Expired",String(c)],["Expires At",u],["Workspace ID",r?.workspaceId??"-"],["Organization ID",r?.organizationId??"-"],["Workspace Token Expires",t],["Workspace Endpoint",a.workspaceEndpoint],["Global Endpoint",a.globalEndpoint]]});}),s.command("token").description("Print access token to stdout").option("--workspace","Print workspace token instead").action(i=>{let r=M();if(i.workspace){if(!r?.workspaceToken)throw new f(`No workspace token. Set a workspace: ${F().productName} workspace set <id>`);process.stdout.write(r.workspaceToken);return}if(!r?.accessToken)throw new f(`Not authenticated. Run: ${F().productName} auth login`);process.stdout.write(r.accessToken);}),s.command("refresh").description("Force token refresh").action(async()=>{try{let i=M();if(!i?.refreshToken&&i?.authMethod!=="client_credentials")throw new f(`No refresh token available. Run: ${F().productName} auth login`);if(i?.authMethod==="client_credentials"&&i.clientId&&i.clientSecret){let p=B(),c=await G(p.globalEndpoint,i.clientId,i.clientSecret);N({...i,accessToken:c.accessToken,expiresAt:Date.now()+c.expiresIn*1e3}),b(),I("App token refreshed successfully"),i.workspaceId&&i.organizationId&&await Wt();return}let a=(await ft(Lt,{token:i.refreshToken})).refreshToken;N({...i,accessToken:a.accessToken,refreshToken:a.refreshToken,expiresAt:Date.now()+a.expiresIn*1e3}),b(),I("Token refreshed successfully"),i.workspaceId&&i.organizationId&&await Wt();}catch(i){d(i);}});}async function Wt(){let n=M();if(!n?.accessToken||!n.workspaceId||!n.organizationId)return;let s=B();try{let i=await v(s.workspaceEndpoint,n.accessToken,n.workspaceId,n.organizationId);N({...n,workspaceToken:i.token,workspaceTokenExpiresAt:new Date(i.expiresAt).getTime()}),b(),I("Workspace token refreshed");}catch{R("Workspace token refresh failed \u2014 workspace operations may require re-login");}}async function Oe(){let n=B(),{oidcIssuer:s,clientId:i}=bt(),r={...n,oidcIssuer:s,clientId:i};x("Starting device code authentication...");let a=await it(r);console.log(""),console.log(` Open: ${a.verificationUri}`),console.log(` Code: ${a.userCode}`),console.log(""),await st(a.verificationUriComplete??a.verificationUri)?x("Browser opened"):R("Could not open browser \u2014 open the URL manually"),x("Waiting for authorization...");let c=await rt(a.deviceCode,a.interval,r),u=c.accessToken,m=Date.now()+c.expiresIn*1e3;x("Fetching workspaces...");try{let t=await j(n.globalEndpoint,u);if(t.length===0){N({accessToken:u,refreshToken:c.refreshToken,expiresAt:m,authMethod:"device_code"}),b(),I("Authentication successful (no workspaces found)");return}let e=t[0];if(t.length>1){console.log(`
|
|
25
25
|
Available workspaces:`),t.forEach((ot,St)=>console.log(` ${St+1}. ${ot.name} (${ot.slug})`));let A=(await import('readline')).createInterface({input:process.stdin,output:process.stdout}),E=await new Promise(ot=>{A.question(`
|
|
26
|
-
Select workspace [1-${t.length}]: `,St=>{A.close(),ot(St.trim());});}),O=parseInt(E,10)-1;O>=0&&O<t.length&&(e=t[O]);}x(`Using workspace: ${e.name} (${e.id})`);let o=await v(n.workspaceEndpoint,u,e.id,e.organizationId);N({accessToken:u,refreshToken:c.refreshToken,expiresAt:m,workspaceToken:o.token,workspaceTokenExpiresAt:new Date(o.expiresAt).getTime(),workspaceId:e.id,organizationId:e.organizationId,authMethod:"device_code"}),b(),I("Authentication successful");}catch(t){N({accessToken:u,refreshToken:c.refreshToken,expiresAt:m,authMethod:"device_code"}),b(),I("Authentication successful"),R(`Workspace token not obtained: ${t instanceof Error?t.message:String(t)}`),x(`Set workspace manually: ${F().productName} workspace set <id>`);}}async function Ne(n){let s=B(),r=(await import('readline')).createInterface({input:process.stdin,output:process.stdout}),a=await new Promise(A=>{r.question("Client ID: ",E=>A(E.trim()));}),p=await new Promise(A=>{r.question("Client Secret: ",E=>{r.close(),A(E.trim());});});if(!a||!p)throw new
|
|
26
|
+
Select workspace [1-${t.length}]: `,St=>{A.close(),ot(St.trim());});}),O=parseInt(E,10)-1;O>=0&&O<t.length&&(e=t[O]);}x(`Using workspace: ${e.name} (${e.id})`);let o=await v(n.workspaceEndpoint,u,e.id,e.organizationId);N({accessToken:u,refreshToken:c.refreshToken,expiresAt:m,workspaceToken:o.token,workspaceTokenExpiresAt:new Date(o.expiresAt).getTime(),workspaceId:e.id,organizationId:e.organizationId,authMethod:"device_code"}),b(),I("Authentication successful");}catch(t){N({accessToken:u,refreshToken:c.refreshToken,expiresAt:m,authMethod:"device_code"}),b(),I("Authentication successful"),R(`Workspace token not obtained: ${t instanceof Error?t.message:String(t)}`),x(`Set workspace manually: ${F().productName} workspace set <id>`);}}async function Ne(n){let s=B(),r=(await import('readline')).createInterface({input:process.stdin,output:process.stdout}),a=await new Promise(A=>{r.question("Client ID: ",E=>A(E.trim()));}),p=await new Promise(A=>{r.question("Client Secret: ",E=>{r.close(),A(E.trim());});});if(!a||!p)throw new f("Client ID and secret cannot be empty");x("Authenticating app...");let c=await G(s.globalEndpoint,a,p),u=c.accessToken,m=Date.now()+c.expiresIn*1e3,t,e,o=n,$;if(o)try{let E=(await j(s.globalEndpoint,u)).find(O=>O.id===o);if(E){$=E.organizationId;let O=await v(s.workspaceEndpoint,u,o,$);t=O.token,e=new Date(O.expiresAt).getTime(),x(`Workspace token issued for: ${E.name}`);}else R(`Workspace ${o} not found \u2014 skipping workspace token`),o=void 0;}catch(A){R(`Workspace token failed: ${A instanceof Error?A.message:String(A)}`);}N({accessToken:u,refreshToken:"",expiresAt:m,workspaceToken:t,workspaceTokenExpiresAt:e,workspaceId:o,organizationId:$,authMethod:"client_credentials",clientId:a,clientSecret:p}),b(),I("App authentication successful");}var zt=`
|
|
27
27
|
query currentUser {
|
|
28
28
|
currentUser {
|
|
29
29
|
id email firstName lastName username phoneNumber name
|
|
@@ -174,10 +174,10 @@ Select workspace [1-${t.length}]: `,St=>{A.close(),ot(St.trim());});}),O=parseIn
|
|
|
174
174
|
id email firstName lastName username role status emailVerified lastLoginAt
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
|
-
`,
|
|
177
|
+
`,fe=`
|
|
178
178
|
mutation updateUser($id: ID!, $input: AdminUpdateUserInput!) {
|
|
179
179
|
updateUser(id: $id, input: $input) {
|
|
180
180
|
id email firstName lastName username role status
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
-
`;function fe(n){let s=n.command("profile").description("Current user profile");s.command("show").description("Show current user").option("-f, --format <format>").action(async t=>{try{let e=await l(zt);g(t,e.currentUser);}catch(e){d(e);}}),s.command("update").description("Update current user profile").option("--first-name <s>").option("--last-name <s>").option("--name <s>").option("--username <s>").option("--phone <s>").option("--timezone <s>").option("--language <s>").option("-f, --format <format>").action(async t=>{try{let e={};if(t.firstName&&(e.firstName=t.firstName),t.lastName&&(e.lastName=t.lastName),t.name&&(e.name=t.name),t.username&&(e.username=t.username),t.phone&&(e.phoneNumber=t.phone),t.timezone&&(e.timezone=t.timezone),t.language&&(e.language=t.language),!Object.keys(e).length)throw new T("No updates specified");let o=await l(jt,{input:e});I("Profile updated"),g(t,o.updateCurrentUserProfile);}catch(e){d(e);}});let i=n.command("security").description("Account security overview");i.command("audit-log").description("Recent auth audit events for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(yt,{pagination:{limit:t.limit,offset:0}});g(t,e.authAuditLogs,{headers:["When","Action","Resource","IP"],rows:e.authAuditLogs.map(o=>[h(o.createdAt),o.action,o.resource??"-",o.ipAddress??"-"])});}catch(e){d(e);}}),i.command("sessions").description("Active sessions for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(Xt,{pagination:{limit:t.limit,offset:0}});g(t,e.activeSessions,{headers:["ID","Status","IP","LastActivity","Current"],rows:e.activeSessions.map(o=>[q(o.id,12),J(o.status),o.ipAddress??"-",h(o.lastActivityAt),String(!!o.isCurrent)])});}catch(e){d(e);}});let r=n.command("mfa").description("Multi-factor authentication");r.command("list").description("List MFA methods enrolled for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(Jt,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserMFAMethods,{headers:["Method","Status","Created"],rows:e.currentUserMFAMethods.map(o=>[o.method,J(o.status),h(o.createdAt)])});}catch(e){d(e);}}),r.command("enroll").description("Begin MFA enrollment (TOTP/SMS/EMAIL)").requiredOption("--method <m>","TOTP|SMS|EMAIL").option("-f, --format <format>").action(async t=>{try{let e=await l(Qt,{method:t.method.toUpperCase()});t.format?g(t,e.setupMFA):(I("MFA enrollment started"),X(e.setupMFA),x("Save your backup codes; verify with `auth mfa verify --code <CODE>`."));}catch(e){d(e);}}),r.command("verify").description("Verify MFA enrollment code").requiredOption("--code <code>").action(async t=>{try{await l(Zt,{code:t.code}),I("MFA enabled");}catch(e){d(e);}}),r.command("disable").description("Disable MFA for the current user").action(async()=>{try{await l(te),I("MFA disabled");}catch(t){d(t);}});let a=n.command("api-keys").description("API key management");a.command("list").description("List your API keys").option("--app <id>","Restrict to keys for an app id").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=t.app?ne:ee,o=t.app?{appId:t.app,pagination:{limit:t.limit,offset:0}}:{pagination:{limit:t.limit,offset:0}},$=await l(e,o),A=$.myApiKeys??$.appApiKeys??[];g(t,A,{headers:["ID","Name","Prefix","App","Scopes","LastUsed"],rows:A.map(E=>[q(E.id,12),E.name??"-",E.prefix??"-",E.appName??"-",Array.isArray(E.scopes)?E.scopes.join(","):"-",h(E.lastUsedAt)])});}catch(e){d(e);}}),a.command("create").description("Generate a new API key").requiredOption("--name <name>").requiredOption("--app <appId>","Owning app id").option("--scope <scope>","Comma-separated scopes").option("--expires <iso>","ISO expiry").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,appId:t.app,scope:t.scope?t.scope.split(","):void 0,expiresAt:t.expires},o=await l(oe,{input:e});I("API key generated. Store the secret \u2014 it is only shown once."),X(o.generateAPIKey);}catch(e){d(e);}}),a.command("revoke").description("Revoke an API key").argument("<keyId>").action(async t=>{try{await l(ie,{keyId:t}),I("API key revoked");}catch(e){d(e);}}),a.command("rotate").description("Rotate an API key (returns new secret)").argument("<keyId>").action(async t=>{try{let e=await l(re,{keyId:t});I("API key rotated"),X(e.rotateAPIKey);}catch(e){d(e);}}),n.command("audit-log").description("Auth audit log").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(yt,{pagination:{limit:t.limit,offset:0}});g(t,e.authAuditLogs);}catch(e){d(e);}});let p=n.command("delegations").description("Delegation management");p.command("list").description("Delegations granted to the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(se,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserDelegations);}catch(e){d(e);}}),p.command("grant").description("Grant a delegation to an app").requiredOption("--app <appId>").requiredOption("--user <userId>","User to delegate as").option("--scope <s>","Comma-separated scopes").option("--workspace <ids>","Comma-separated workspace ids").option("--expires <iso>").option("-f, --format <format>").action(async t=>{try{let e={appId:t.app,userId:t.user,scopes:t.scope?t.scope.split(","):void 0,workspaceIds:t.workspace?t.workspace.split(","):void 0,expiresAt:t.expires},o=await l(ae,{input:e});I("Delegation granted"),g(t,o.grantDelegation);}catch(e){d(e);}}),p.command("revoke").description("Revoke a delegation").argument("<id>").option("--reason <text>").action(async(t,e)=>{try{await l(ce,{id:t,reason:e.reason}),I("Delegation revoked");}catch(o){d(o);}});let c=n.command("apps").description("OAuth/system app management");c.command("list").description("Apps owned by the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(pe,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserApps,{headers:["ID","ClientID","Name","Type","Status"],rows:e.currentUserApps.map(o=>[q(o.id,12),q(o.clientId,24),o.name??"-",o.type??"-",J(o.status)])});}catch(e){d(e);}}),c.command("get").description("Get an app by id").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await l(de,{id:t});if(!o.app)throw new T(`App ${t} not found`);g(e,o.app);}catch(o){d(o);}}),c.command("create").description("Create an OAuth app").requiredOption("--name <s>").option("--description <s>").option("--type <t>","OAUTH|SYSTEM","OAUTH").option("--actor-type <t>","USER|APP|SERVICE","APP").option("--redirect <urls>","Comma-separated redirect URIs").option("--scopes <s>","Comma-separated scopes").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,description:t.description,type:(t.type??"OAUTH").toUpperCase(),actorType:(t.actorType??"APP").toUpperCase(),redirectUris:t.redirect?t.redirect.split(","):void 0,scopes:t.scopes?t.scopes.split(","):void 0},o=await l(ue,{input:e});I("App created. Client secret only shown once."),X(o.createApp);}catch(e){d(e);}}),c.command("update").description("Update an app").argument("<id>").option("--name <s>").option("--description <s>").option("--redirect <urls>","Comma-separated redirect URIs").option("--scopes <s>","Comma-separated scopes").option("--status <s>").option("-f, --format <format>").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.redirect&&(o.redirectUris=e.redirect.split(",")),e.scopes&&(o.scopes=e.scopes.split(",")),e.status&&(o.status=e.status.toUpperCase()),!Object.keys(o).length)throw new T("No updates specified");let $=await l(le,{id:t,input:o});I("App updated"),g(e,$.updateApp);}catch(o){d(o);}}),c.command("deactivate").description("Deactivate an app").argument("<id>").action(async t=>{try{await l(Ie,{id:t}),I("App deactivated");}catch(e){d(e);}});let u=n.command("sso").description("SSO (SAML/OIDC) configuration");u.command("get").description("Get SSO config for a tenant").requiredOption("--tenant <id>").option("-f, --format <format>").action(async t=>{try{let e=await l(ge,{tenantId:t.tenant});g(t,e.getSSOConfig);}catch(e){d(e);}}),u.command("save").description("Save (upsert) SSO config for a tenant").requiredOption("--tenant <id>").requiredOption("--entity <s>","EntityID / Issuer").requiredOption("--sso-url <url>").option("--slo-url <url>").option("--certificate <pem>","X.509 certificate PEM").option("--enabled","Enable after save",false).option("-f, --format <format>").action(async t=>{try{let e={entityId:t.entity,ssoUrl:t.ssoUrl,sloUrl:t.sloUrl,certificate:t.certificate,enabled:!!t.enabled},o=await l(me,{tenantId:t.tenant,input:e});I("SSO config saved"),g(t,o.saveSSOConfig);}catch(e){d(e);}}),u.command("delete").description("Delete SSO config for a tenant").requiredOption("--tenant <id>").action(async t=>{try{await l($e,{tenantId:t.tenant}),I("SSO config deleted");}catch(e){d(e);}});let m=n.command("users").description("User admin (requires admin permissions)");m.command("list").description("List users (admin)").option("--email <s>").option("--username <s>").option("--role <s>").option("--status <s>").option("--search <s>").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e={};t.email&&(e.email=t.email),t.username&&(e.username=t.username),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search);let o=await l(Se,{filter:Object.keys(e).length?e:void 0,pagination:{limit:t.limit,offset:0}});g(t,o.users.users,{headers:["ID","Email","Username","Role","Status","Created"],rows:o.users.users.map($=>[q($.id,12),$.email,$.username??"-",$.role??"-",J($.status),h($.createdAt)])});}catch(e){d(e);}}),m.command("get").description("Get user by id (admin)").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await l(Ee,{id:t});if(!o.user)throw new T(`User ${t} not found`);g(e,o.user);}catch(o){d(o);}}),m.command("update").description("Update a user (admin)").argument("<id>").option("--first-name <s>").option("--last-name <s>").option("--username <s>").option("--phone <s>").option("--role <s>").option("--status <s>").option("--email-verified <bool>").option("-f, --format <format>").action(async(t,e)=>{try{let o={};if(e.firstName&&(o.firstName=e.firstName),e.lastName&&(o.lastName=e.lastName),e.username&&(o.username=e.username),e.phone&&(o.phoneNumber=e.phone),e.role&&(o.role=e.role.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.emailVerified!==void 0&&(o.emailVerified=e.emailVerified==="true"),!Object.keys(o).length)throw new T("No updates specified");let $=await l(Te,{id:t,input:o});I("User updated"),g(e,$.updateUser);}catch(o){d(o);}});}var ve={id:"auth",version:"1.0.0",displayName:"Authentication",register(n,s){_t(s),Yt(n);let i=n.commands.find(r=>r.name()==="auth");if(!i)throw new k("auth command group missing after registerAuthCommands");fe(i);}},Bs=ve;module.exports=Bs;
|
|
183
|
+
`;function Te(n){let s=n.command("profile").description("Current user profile");s.command("show").description("Show current user").option("-f, --format <format>").action(async t=>{try{let e=await l(zt);g(t,e.currentUser);}catch(e){d(e);}}),s.command("update").description("Update current user profile").option("--first-name <s>").option("--last-name <s>").option("--name <s>").option("--username <s>").option("--phone <s>").option("--timezone <s>").option("--language <s>").option("-f, --format <format>").action(async t=>{try{let e={};if(t.firstName&&(e.firstName=t.firstName),t.lastName&&(e.lastName=t.lastName),t.name&&(e.name=t.name),t.username&&(e.username=t.username),t.phone&&(e.phoneNumber=t.phone),t.timezone&&(e.timezone=t.timezone),t.language&&(e.language=t.language),!Object.keys(e).length)throw new f("No updates specified");let o=await l(jt,{input:e});I("Profile updated"),g(t,o.updateCurrentUserProfile);}catch(e){d(e);}});let i=n.command("security").description("Account security overview");i.command("audit-log").description("Recent auth audit events for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(yt,{pagination:{limit:t.limit,offset:0}});g(t,e.authAuditLogs,{headers:["When","Action","Resource","IP"],rows:e.authAuditLogs.map(o=>[h(o.createdAt),o.action,o.resource??"-",o.ipAddress??"-"])});}catch(e){d(e);}}),i.command("sessions").description("Active sessions for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(Xt,{pagination:{limit:t.limit,offset:0}});g(t,e.activeSessions,{headers:["ID","Status","IP","LastActivity","Current"],rows:e.activeSessions.map(o=>[q(o.id,12),J(o.status),o.ipAddress??"-",h(o.lastActivityAt),String(!!o.isCurrent)])});}catch(e){d(e);}});let r=n.command("mfa").description("Multi-factor authentication");r.command("list").description("List MFA methods enrolled for the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(Jt,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserMFAMethods,{headers:["Method","Status","Created"],rows:e.currentUserMFAMethods.map(o=>[o.method,J(o.status),h(o.createdAt)])});}catch(e){d(e);}}),r.command("enroll").description("Begin MFA enrollment (TOTP/SMS/EMAIL)").requiredOption("--method <m>","TOTP|SMS|EMAIL").option("-f, --format <format>").action(async t=>{try{let e=await l(Qt,{method:t.method.toUpperCase()});t.format?g(t,e.setupMFA):(I("MFA enrollment started"),X(e.setupMFA),x("Save your backup codes; verify with `auth mfa verify --code <CODE>`."));}catch(e){d(e);}}),r.command("verify").description("Verify MFA enrollment code").requiredOption("--code <code>").action(async t=>{try{await l(Zt,{code:t.code}),I("MFA enabled");}catch(e){d(e);}}),r.command("disable").description("Disable MFA for the current user").action(async()=>{try{await l(te),I("MFA disabled");}catch(t){d(t);}});let a=n.command("api-keys").description("API key management");a.command("list").description("List your API keys").option("--app <id>","Restrict to keys for an app id").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=t.app?ne:ee,o=t.app?{appId:t.app,pagination:{limit:t.limit,offset:0}}:{pagination:{limit:t.limit,offset:0}},$=await l(e,o),A=$.myApiKeys??$.appApiKeys??[];g(t,A,{headers:["ID","Name","Prefix","App","Scopes","LastUsed"],rows:A.map(E=>[q(E.id,12),E.name??"-",E.prefix??"-",E.appName??"-",Array.isArray(E.scopes)?E.scopes.join(","):"-",h(E.lastUsedAt)])});}catch(e){d(e);}}),a.command("create").description("Generate a new API key").requiredOption("--name <name>").requiredOption("--app <appId>","Owning app id").option("--scope <scope>","Comma-separated scopes").option("--expires <iso>","ISO expiry").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,appId:t.app,scope:t.scope?t.scope.split(","):void 0,expiresAt:t.expires},o=await l(oe,{input:e});I("API key generated. Store the secret \u2014 it is only shown once."),X(o.generateAPIKey);}catch(e){d(e);}}),a.command("revoke").description("Revoke an API key").argument("<keyId>").action(async t=>{try{await l(ie,{keyId:t}),I("API key revoked");}catch(e){d(e);}}),a.command("rotate").description("Rotate an API key (returns new secret)").argument("<keyId>").action(async t=>{try{let e=await l(re,{keyId:t});I("API key rotated"),X(e.rotateAPIKey);}catch(e){d(e);}}),n.command("audit-log").description("Auth audit log").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(yt,{pagination:{limit:t.limit,offset:0}});g(t,e.authAuditLogs);}catch(e){d(e);}});let p=n.command("delegations").description("Delegation management");p.command("list").description("Delegations granted to the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(se,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserDelegations);}catch(e){d(e);}}),p.command("grant").description("Grant a delegation to an app").requiredOption("--app <appId>").requiredOption("--user <userId>","User to delegate as").option("--scope <s>","Comma-separated scopes").option("--workspace <ids>","Comma-separated workspace ids").option("--expires <iso>").option("-f, --format <format>").action(async t=>{try{let e={appId:t.app,userId:t.user,scopes:t.scope?t.scope.split(","):void 0,workspaceIds:t.workspace?t.workspace.split(","):void 0,expiresAt:t.expires},o=await l(ae,{input:e});I("Delegation granted"),g(t,o.grantDelegation);}catch(e){d(e);}}),p.command("revoke").description("Revoke a delegation").argument("<id>").option("--reason <text>").action(async(t,e)=>{try{await l(ce,{id:t,reason:e.reason}),I("Delegation revoked");}catch(o){d(o);}});let c=n.command("apps").description("OAuth/system app management");c.command("list").description("Apps owned by the current user").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e=await l(pe,{pagination:{limit:t.limit,offset:0}});g(t,e.currentUserApps,{headers:["ID","ClientID","Name","Type","Status"],rows:e.currentUserApps.map(o=>[q(o.id,12),q(o.clientId,24),o.name??"-",o.type??"-",J(o.status)])});}catch(e){d(e);}}),c.command("get").description("Get an app by id").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await l(de,{id:t});if(!o.app)throw new f(`App ${t} not found`);g(e,o.app);}catch(o){d(o);}}),c.command("create").description("Create an OAuth app").requiredOption("--name <s>").option("--description <s>").option("--type <t>","OAUTH|SYSTEM","OAUTH").option("--actor-type <t>","USER|APP|SERVICE","APP").option("--redirect <urls>","Comma-separated redirect URIs").option("--scopes <s>","Comma-separated scopes").option("-f, --format <format>").action(async t=>{try{let e={name:t.name,description:t.description,type:(t.type??"OAUTH").toUpperCase(),actorType:(t.actorType??"APP").toUpperCase(),redirectUris:t.redirect?t.redirect.split(","):void 0,scopes:t.scopes?t.scopes.split(","):void 0},o=await l(ue,{input:e});I("App created. Client secret only shown once."),X(o.createApp);}catch(e){d(e);}}),c.command("update").description("Update an app").argument("<id>").option("--name <s>").option("--description <s>").option("--redirect <urls>","Comma-separated redirect URIs").option("--scopes <s>","Comma-separated scopes").option("--status <s>").option("-f, --format <format>").action(async(t,e)=>{try{let o={};if(e.name&&(o.name=e.name),e.description!==void 0&&(o.description=e.description),e.redirect&&(o.redirectUris=e.redirect.split(",")),e.scopes&&(o.scopes=e.scopes.split(",")),e.status&&(o.status=e.status.toUpperCase()),!Object.keys(o).length)throw new f("No updates specified");let $=await l(le,{id:t,input:o});I("App updated"),g(e,$.updateApp);}catch(o){d(o);}}),c.command("deactivate").description("Deactivate an app").argument("<id>").action(async t=>{try{await l(Ie,{id:t}),I("App deactivated");}catch(e){d(e);}});let u=n.command("sso").description("SSO (SAML/OIDC) configuration");u.command("get").description("Get SSO config for a tenant").requiredOption("--tenant <id>").option("-f, --format <format>").action(async t=>{try{let e=await l(ge,{tenantId:t.tenant});g(t,e.getSSOConfig);}catch(e){d(e);}}),u.command("save").description("Save (upsert) SSO config for a tenant").requiredOption("--tenant <id>").requiredOption("--entity <s>","EntityID / Issuer").requiredOption("--sso-url <url>").option("--slo-url <url>").option("--certificate <pem>","X.509 certificate PEM").option("--enabled","Enable after save",false).option("-f, --format <format>").action(async t=>{try{let e={entityId:t.entity,ssoUrl:t.ssoUrl,sloUrl:t.sloUrl,certificate:t.certificate,enabled:!!t.enabled},o=await l(me,{tenantId:t.tenant,input:e});I("SSO config saved"),g(t,o.saveSSOConfig);}catch(e){d(e);}}),u.command("delete").description("Delete SSO config for a tenant").requiredOption("--tenant <id>").action(async t=>{try{await l($e,{tenantId:t.tenant}),I("SSO config deleted");}catch(e){d(e);}});let m=n.command("users").description("User admin (requires admin permissions)");m.command("list").description("List users (admin)").option("--email <s>").option("--username <s>").option("--role <s>").option("--status <s>").option("--search <s>").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>").action(async t=>{try{let e={};t.email&&(e.email=t.email),t.username&&(e.username=t.username),t.role&&(e.role=t.role.toUpperCase()),t.status&&(e.status=t.status.toUpperCase()),t.search&&(e.search=t.search);let o=await l(Se,{filter:Object.keys(e).length?e:void 0,pagination:{limit:t.limit,offset:0}});g(t,o.users.users,{headers:["ID","Email","Username","Role","Status","Created"],rows:o.users.users.map($=>[q($.id,12),$.email,$.username??"-",$.role??"-",J($.status),h($.createdAt)])});}catch(e){d(e);}}),m.command("get").description("Get user by id (admin)").argument("<id>").option("-f, --format <format>").action(async(t,e)=>{try{let o=await l(Ee,{id:t});if(!o.user)throw new f(`User ${t} not found`);g(e,o.user);}catch(o){d(o);}}),m.command("update").description("Update a user (admin)").argument("<id>").option("--first-name <s>").option("--last-name <s>").option("--username <s>").option("--phone <s>").option("--role <s>").option("--status <s>").option("--email-verified <bool>").option("-f, --format <format>").action(async(t,e)=>{try{let o={};if(e.firstName&&(o.firstName=e.firstName),e.lastName&&(o.lastName=e.lastName),e.username&&(o.username=e.username),e.phone&&(o.phoneNumber=e.phone),e.role&&(o.role=e.role.toUpperCase()),e.status&&(o.status=e.status.toUpperCase()),e.emailVerified!==void 0&&(o.emailVerified=e.emailVerified==="true"),!Object.keys(o).length)throw new f("No updates specified");let $=await l(fe,{id:t,input:o});I("User updated"),g(e,$.updateUser);}catch(o){d(o);}});}var ve={id:"auth",version:"1.0.0",displayName:"Authentication",register(n,s){_t(s),Yt(n);let i=n.commands.find(r=>r.name()==="auth");if(!i)throw new k("auth command group missing after registerAuthCommands");Te(i);}},Bs=ve;module.exports=Bs;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {Lc,Mc}from'../../chunk-REBBLQFS.js';import {a,s,g,t,e,l,v,f,i,w,C,o,h,u,c,p,n,m,k,B}from'../../chunk-
|
|
1
|
+
import {Lc,Mc}from'../../chunk-REBBLQFS.js';import {a,s,g,t,e,l,v,f,i,w,C,o,h,u,c,p,n,m,k,B}from'../../chunk-SQSFZFQZ.js';import {q,o as o$1,f as f$1,h as h$1,g as g$1,d,i as i$1,e as e$1}from'../../chunk-UAFYTYK6.js';function Q(s$1){let u$1=s$1.command("auth").description("Authentication commands");u$1.command("login").description(`Authenticate with ${s().productName}`).option("--client-credentials","Authenticate as an app with client ID and secret").option("--workspace-id <id>","Workspace ID (for app auth)").action(async i=>{try{i.clientCredentials?await Pe(i.workspaceId):await Ce();}catch(r){g(r);}}),u$1.command("logout").description("Revoke tokens and clear stored auth").action(async()=>{try{if(t()?.accessToken)try{await e(Lc);}catch{l("Server-side logout failed, clearing local tokens");}v(),f(),i("Logged out successfully");}catch(i){g(i);}}),u$1.command("status").description("Show current auth state").option("-f, --format <format>","Output format (json, table)").action(i=>{let r=t(),p=w(),I=!!r?.accessToken,m=r?.accessToken?C(r):false,f=r?.expiresAt?o(new Date(r.expiresAt).toISOString()):"-",h$1=r?.authMethod==="client_credentials"?"Client Credentials":"OAuth2 Device Code",e=r?.workspaceTokenExpiresAt?o(new Date(r.workspaceTokenExpiresAt).toISOString()):"-";h(i,{authenticated:I,method:h$1,expired:m,expiresAt:f,workspaceId:r?.workspaceId??"-",organizationId:r?.organizationId??"-",workspaceTokenExpiresAt:e,workspaceEndpoint:p.workspaceEndpoint,globalEndpoint:p.globalEndpoint},{headers:["Key","Value"],rows:[["Authenticated",String(I)],["Method",h$1],["Expired",String(m)],["Expires At",f],["Workspace ID",r?.workspaceId??"-"],["Organization ID",r?.organizationId??"-"],["Workspace Token Expires",e],["Workspace Endpoint",p.workspaceEndpoint],["Global Endpoint",p.globalEndpoint]]});}),u$1.command("token").description("Print access token to stdout").option("--workspace","Print workspace token instead").action(i=>{let r=t();if(i.workspace){if(!r?.workspaceToken)throw new o$1(`No workspace token. Set a workspace: ${s().productName} workspace set <id>`);process.stdout.write(r.workspaceToken);return}if(!r?.accessToken)throw new o$1(`Not authenticated. Run: ${s().productName} auth login`);process.stdout.write(r.accessToken);}),u$1.command("refresh").description("Force token refresh").action(async()=>{try{let i$1=t();if(!i$1?.refreshToken&&i$1?.authMethod!=="client_credentials")throw new o$1(`No refresh token available. Run: ${s().productName} auth login`);if(i$1?.authMethod==="client_credentials"&&i$1.clientId&&i$1.clientSecret){let I=w(),m=await f$1(I.globalEndpoint,i$1.clientId,i$1.clientSecret);u({...i$1,accessToken:m.accessToken,expiresAt:Date.now()+m.expiresIn*1e3}),f(),i("App token refreshed successfully"),i$1.workspaceId&&i$1.organizationId&&await X();return}let p=(await e(Mc,{token:i$1.refreshToken})).refreshToken;u({...i$1,accessToken:p.accessToken,refreshToken:p.refreshToken,expiresAt:Date.now()+p.expiresIn*1e3}),f(),i("Token refreshed successfully"),i$1.workspaceId&&i$1.organizationId&&await X();}catch(i){g(i);}});}async function X(){let s=t();if(!s?.accessToken||!s.workspaceId||!s.organizationId)return;let u$1=w();try{let i$1=await g$1(u$1.workspaceEndpoint,s.accessToken,s.workspaceId,s.organizationId);u({...s,workspaceToken:i$1.token,workspaceTokenExpiresAt:new Date(i$1.expiresAt).getTime()}),f(),i("Workspace token refreshed");}catch{l("Workspace token refresh failed \u2014 workspace operations may require re-login");}}async function Ce(){let s$1=w(),{oidcIssuer:u$1,clientId:i$2}=B(),r={...s$1,oidcIssuer:u$1,clientId:i$2};k("Starting device code authentication...");let p=await d(r);console.log(""),console.log(` Open: ${p.verificationUri}`),console.log(` Code: ${p.userCode}`),console.log(""),await i$1(p.verificationUriComplete??p.verificationUri)?k("Browser opened"):l("Could not open browser \u2014 open the URL manually"),k("Waiting for authorization...");let m=await e$1(p.deviceCode,p.interval,r),f$1=m.accessToken,h=Date.now()+m.expiresIn*1e3;k("Fetching workspaces...");try{let e=await h$1(s$1.globalEndpoint,f$1);if(e.length===0){u({accessToken:f$1,refreshToken:m.refreshToken,expiresAt:h,authMethod:"device_code"}),f(),i("Authentication successful (no workspaces found)");return}let t=e[0];if(e.length>1){console.log(`
|
|
2
2
|
Available workspaces:`),e.forEach(($,N)=>console.log(` ${N+1}. ${$.name} (${$.slug})`));let A=(await import('readline')).createInterface({input:process.stdin,output:process.stdout}),g=await new Promise($=>{A.question(`
|
|
3
3
|
Select workspace [1-${e.length}]: `,N=>{A.close(),$(N.trim());});}),S=parseInt(g,10)-1;S>=0&&S<e.length&&(t=e[S]);}k(`Using workspace: ${t.name} (${t.id})`);let n=await g$1(s$1.workspaceEndpoint,f$1,t.id,t.organizationId);u({accessToken:f$1,refreshToken:m.refreshToken,expiresAt:h,workspaceToken:n.token,workspaceTokenExpiresAt:new Date(n.expiresAt).getTime(),workspaceId:t.id,organizationId:t.organizationId,authMethod:"device_code"}),f(),i("Authentication successful");}catch(e){u({accessToken:f$1,refreshToken:m.refreshToken,expiresAt:h,authMethod:"device_code"}),f(),i("Authentication successful"),l(`Workspace token not obtained: ${e instanceof Error?e.message:String(e)}`),k(`Set workspace manually: ${s().productName} workspace set <id>`);}}async function Pe(s){let u$1=w(),r=(await import('readline')).createInterface({input:process.stdin,output:process.stdout}),p=await new Promise(A=>{r.question("Client ID: ",g=>A(g.trim()));}),I=await new Promise(A=>{r.question("Client Secret: ",g=>{r.close(),A(g.trim());});});if(!p||!I)throw new o$1("Client ID and secret cannot be empty");k("Authenticating app...");let m=await f$1(u$1.globalEndpoint,p,I),f$2=m.accessToken,h=Date.now()+m.expiresIn*1e3,e,t,n=s,l$1;if(n)try{let g=(await h$1(u$1.globalEndpoint,f$2)).find(S=>S.id===n);if(g){l$1=g.organizationId;let S=await g$1(u$1.workspaceEndpoint,f$2,n,l$1);e=S.token,t=new Date(S.expiresAt).getTime(),k(`Workspace token issued for: ${g.name}`);}else l(`Workspace ${n} not found \u2014 skipping workspace token`),n=void 0;}catch(A){l(`Workspace token failed: ${A instanceof Error?A.message:String(A)}`);}u({accessToken:f$2,refreshToken:"",expiresAt:h,workspaceToken:e,workspaceTokenExpiresAt:t,workspaceId:n,organizationId:l$1,authMethod:"client_credentials",clientId:p,clientSecret:I}),f(),i("App authentication successful");}var Z=`
|
|
4
4
|
query currentUser {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,c,h as h$1,p,n,o,g,i,k}from'../../chunk-
|
|
1
|
+
import {a,c,h as h$1,p,n,o,g,i,k}from'../../chunk-SQSFZFQZ.js';import {o as o$1}from'../../chunk-UAFYTYK6.js';var A=`
|
|
2
2
|
query GetDefaultBillingAccount {
|
|
3
3
|
getDefaultBillingAccount {
|
|
4
4
|
id creditAmount currency
|