@burdenoff/cli-sdk 2026.928.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-SQSFZFQZ.js +1 -0
- package/dist/chunk-UAFYTYK6.js +32 -0
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.d.cts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{module-DxCuik6L.d.cts → module-DOIiVaXQ.d.cts} +4 -1
- package/dist/{module-DxCuik6L.d.ts → module-DOIiVaXQ.d.ts} +4 -1
- package/dist/modules/adaptercloud/index.cjs +2 -2
- package/dist/modules/adaptercloud/index.d.cts +1 -1
- package/dist/modules/adaptercloud/index.d.ts +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +8 -8
- package/dist/modules/artistrybase/index.d.cts +1 -1
- package/dist/modules/artistrybase/index.d.ts +1 -1
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +1 -1
- package/dist/modules/assethandler/index.d.cts +1 -1
- package/dist/modules/assethandler/index.d.ts +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +8 -8
- package/dist/modules/atheletebridge/index.d.cts +1 -1
- package/dist/modules/atheletebridge/index.d.ts +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +34 -34
- package/dist/modules/auth/index.d.cts +1 -1
- package/dist/modules/auth/index.d.ts +1 -1
- package/dist/modules/auth/index.js +30 -30
- package/dist/modules/billing/index.cjs +3 -3
- package/dist/modules/billing/index.d.cts +1 -1
- package/dist/modules/billing/index.d.ts +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +4 -4
- package/dist/modules/brainyrich/index.d.cts +1 -1
- package/dist/modules/brainyrich/index.d.ts +1 -1
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +3 -3
- package/dist/modules/buildmyiq/index.d.cts +1 -1
- package/dist/modules/buildmyiq/index.d.ts +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +5 -5
- package/dist/modules/channels/index.d.cts +1 -1
- package/dist/modules/channels/index.d.ts +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs +11 -11
- package/dist/modules/collabkin/index.d.cts +1 -1
- package/dist/modules/collabkin/index.d.ts +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +6 -6
- package/dist/modules/comradecircle/index.d.cts +1 -1
- package/dist/modules/comradecircle/index.d.ts +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs +8 -8
- package/dist/modules/conversations/index.d.cts +1 -1
- package/dist/modules/conversations/index.d.ts +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs +4 -4
- package/dist/modules/coolandlovely/index.d.cts +1 -1
- package/dist/modules/coolandlovely/index.d.ts +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +6 -6
- package/dist/modules/cosmicintersection/index.d.cts +1 -1
- package/dist/modules/cosmicintersection/index.d.ts +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +1 -1
- package/dist/modules/crewfoundry/index.d.cts +1 -1
- package/dist/modules/crewfoundry/index.d.ts +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +7 -7
- package/dist/modules/devportal/index.d.cts +1 -1
- package/dist/modules/devportal/index.d.ts +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +2 -2
- package/dist/modules/ecoimpacthub/index.d.cts +1 -1
- package/dist/modules/ecoimpacthub/index.d.ts +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.cjs +21 -21
- package/dist/modules/eventfullymanaged/index.d.cts +1 -1
- package/dist/modules/eventfullymanaged/index.d.ts +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +3 -3
- package/dist/modules/export/index.d.cts +1 -1
- package/dist/modules/export/index.d.ts +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +8 -8
- package/dist/modules/files/index.d.cts +1 -1
- package/dist/modules/files/index.d.ts +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/fluidgrids/index.cjs +401 -0
- package/dist/modules/fluidgrids/index.d.cts +7 -0
- package/dist/modules/fluidgrids/index.d.ts +7 -0
- package/dist/modules/fluidgrids/index.js +401 -0
- package/dist/modules/ggnomad/index.cjs +7 -7
- package/dist/modules/ggnomad/index.d.cts +1 -1
- package/dist/modules/ggnomad/index.d.ts +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +4 -4
- package/dist/modules/govcitizenhub/index.d.cts +1 -1
- package/dist/modules/govcitizenhub/index.d.ts +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs +4 -4
- package/dist/modules/groups/index.d.cts +1 -1
- package/dist/modules/groups/index.d.ts +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs +1 -1
- package/dist/modules/headshotmarketing/index.d.cts +1 -1
- package/dist/modules/headshotmarketing/index.d.ts +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.d.cts +1 -1
- package/dist/modules/health/index.d.ts +1 -1
- package/dist/modules/hookmovies/index.cjs +7 -7
- package/dist/modules/hookmovies/index.d.cts +1 -1
- package/dist/modules/hookmovies/index.d.ts +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +8 -8
- package/dist/modules/housingvista/index.d.cts +1 -1
- package/dist/modules/housingvista/index.d.ts +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +5 -5
- package/dist/modules/integrations/index.d.cts +1 -1
- package/dist/modules/integrations/index.d.ts +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +6 -6
- package/dist/modules/intelwatchtower/index.d.cts +1 -1
- package/dist/modules/intelwatchtower/index.d.ts +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs +2 -2
- package/dist/modules/kadaikodi/index.d.cts +1 -1
- package/dist/modules/kadaikodi/index.d.ts +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +6 -6
- package/dist/modules/labsofscience/index.d.cts +1 -1
- package/dist/modules/labsofscience/index.d.ts +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs +6 -6
- package/dist/modules/manufacturedops/index.d.cts +1 -1
- package/dist/modules/manufacturedops/index.d.ts +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs +1 -1
- package/dist/modules/movethewheels/index.d.cts +1 -1
- package/dist/modules/movethewheels/index.d.ts +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs +8 -8
- package/dist/modules/mybodyshield/index.d.cts +1 -1
- package/dist/modules/mybodyshield/index.d.ts +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +5 -5
- package/dist/modules/notifications/index.d.cts +1 -1
- package/dist/modules/notifications/index.d.ts +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.d.cts +1 -1
- package/dist/modules/organizations/index.d.ts +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.cjs +23 -23
- package/dist/modules/planmagnet/index.d.cts +1 -1
- package/dist/modules/planmagnet/index.d.ts +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +6 -6
- package/dist/modules/products/index.d.cts +1 -1
- package/dist/modules/products/index.d.ts +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs +2 -2
- package/dist/modules/proserviceworld/index.d.cts +1 -1
- package/dist/modules/proserviceworld/index.d.ts +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs +2 -2
- package/dist/modules/rbac/index.d.cts +1 -1
- package/dist/modules/rbac/index.d.ts +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +1 -1
- package/dist/modules/sandbox/index.d.cts +1 -1
- package/dist/modules/sandbox/index.d.ts +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +7 -7
- package/dist/modules/scheduler/index.d.cts +1 -1
- package/dist/modules/scheduler/index.d.ts +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +7 -7
- package/dist/modules/security/index.d.cts +1 -1
- package/dist/modules/security/index.d.ts +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs +7 -7
- package/dist/modules/semanticfed/index.d.cts +1 -1
- package/dist/modules/semanticfed/index.d.ts +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +7 -7
- package/dist/modules/store/index.d.cts +1 -1
- package/dist/modules/store/index.d.ts +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs +2 -2
- package/dist/modules/subscriberbot/index.d.cts +1 -1
- package/dist/modules/subscriberbot/index.d.ts +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs +2 -2
- package/dist/modules/support/index.d.cts +1 -1
- package/dist/modules/support/index.d.ts +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +1 -1
- package/dist/modules/tags/index.d.cts +1 -1
- package/dist/modules/tags/index.d.ts +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +4 -4
- package/dist/modules/technospam/index.d.cts +1 -1
- package/dist/modules/technospam/index.d.ts +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +3 -3
- package/dist/modules/theculturepost/index.d.cts +1 -1
- package/dist/modules/theculturepost/index.d.ts +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.cjs +3 -3
- package/dist/modules/theglobalfuel/index.d.cts +1 -1
- package/dist/modules/theglobalfuel/index.d.ts +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +7 -7
- package/dist/modules/timecampus/index.d.cts +1 -1
- package/dist/modules/timecampus/index.d.ts +1 -1
- package/dist/modules/timecampus/index.js +1 -1
- package/dist/modules/tours/index.cjs +2 -2
- package/dist/modules/tours/index.d.cts +1 -1
- package/dist/modules/tours/index.d.ts +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs +1 -1
- package/dist/modules/vibecontrols/index.d.cts +1 -1
- package/dist/modules/vibecontrols/index.d.ts +1 -1
- package/dist/modules/vibecontrols/index.js +1 -1
- package/dist/modules/workspaces/index.cjs +14 -14
- package/dist/modules/workspaces/index.d.cts +1 -1
- package/dist/modules/workspaces/index.d.ts +1 -1
- package/dist/modules/workspaces/index.js +11 -11
- package/package.json +1 -1
- package/dist/chunk-TCBALVP4.js +0 -32
- package/dist/chunk-WXDQ3S5J.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},E=class extends m{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},h=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var A=null;function
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var m=class extends Error{exitCode;hint;constructor(o,t){super(o),this.name="CliUserError",this.exitCode=t?.exitCode??1,this.hint=t?.hint;}},E=class extends m{constructor(o,t){super(o,{exitCode:2,hint:t?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},h=class extends Error{cause;constructor(o,t){super(o),this.name="CliInternalError",this.cause=t;}};var A=null;function O(r){A=r;}function I(){if(!A)throw new h("vibecontrols module helpers used before setHelpersContext was called");return A}function At(){let r=I();if(!r.auth.isAuthenticated())throw new E("Authentication required.",{hint:`Run \`${r.productName} auth login\` to authenticate.`})}async function a(r,o){return At(),I().gql.workspace.request(r,o)}async function w(r,o){return I().gql.workspaceAuthOnly.request(r,o)}function i(r){let o=r instanceof Error?r.message:String(r);throw new m(o)}function s(r,o,t){I().output.formatAndOutput(r,o,t);}function d(r){I().output.printSuccess(r);}function C(r){return I().output.formatDate(r)}function p(r,o){return I().output.truncate(r,o)}var R=`
|
|
2
2
|
query TheGetAsset($id: ID!) {
|
|
3
3
|
theAsset(id: $id) {
|
|
4
4
|
id name code kind commodity status location latitude longitude
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
commissionedAt decommissionedAt createdAt updatedAt workspaceId
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
`,
|
|
9
|
+
`,v=`
|
|
10
10
|
query TheListAssets(
|
|
11
11
|
$commodity: TheCommodityType
|
|
12
12
|
$kind: TheAssetKind
|
|
@@ -248,4 +248,4 @@
|
|
|
248
248
|
query TheHealth {
|
|
249
249
|
theHealth
|
|
250
250
|
}
|
|
251
|
-
`;function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new m(`Expected an integer but got "${r}"`);return o}function c(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new m(`Expected a number but got "${r}"`);return o}function f(r,o){let t={};return r!==void 0&&(t.limit=r),o!==void 0&&(t.offset=o),t}function nt(r){let o=r.command("assets").description("Theglobalfuel upstream assets");o.command("list").description("List assets").option("--commodity <c>","Filter by commodity type").option("--kind <k>","Filter by asset kind").option("--status <s>","Filter by asset status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(O,{commodity:t.commodity?t.commodity.toUpperCase():void 0,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListAssets.items,{headers:["ID","Name","Kind","Commodity","Status","Capacity/Day"],rows:e.theListAssets.items.map(n=>[p(n.id,12),n.name,n.kind,n.commodity,n.status,`${n.capacityPerDay??0} ${n.capacityUnit??""}`.trim()])});}catch(e){i(e);}}),o.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 a(v,{id:t});if(!n.theAsset)throw new m(`Asset ${t} not found`);s(e,n.theAsset);}catch(n){i(n);}}),o.command("create").description("Create an asset").requiredOption("--name <name>","Asset name").requiredOption("--commodity <c>","Commodity type (e.g. CRUDE_OIL, NATURAL_GAS, LITHIUM)").option("--kind <k>","Asset kind (default WELL)").option("--code <code>","Asset code").option("--status <s>","Asset status (default EXPLORATION)").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit (default BARRELS)").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,commodity:t.commodity.toUpperCase()};t.kind&&(e.kind=t.kind.toUpperCase()),t.code&&(e.code=t.code),t.status&&(e.status=t.status.toUpperCase()),t.location&&(e.location=t.location),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.capacityPerDay!==void 0&&(e.capacityPerDay=t.capacityPerDay),t.capacityUnit&&(e.capacityUnit=t.capacityUnit.toUpperCase()),t.workingInterestPct!==void 0&&(e.workingInterestPct=t.workingInterestPct),t.operatorLead&&(e.operatorLeadId=t.operatorLead),t.commissionedAt&&(e.commissionedAt=t.commissionedAt),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(x,{input:e});d(`Asset created: ${n.theCreateAsset.name}`),s(t,n.theCreateAsset);}catch(e){i(e);}}),o.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--commodity <c>","Commodity type").option("--kind <k>","Asset kind").option("--code <code>","Asset code").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--decommissioned-at <iso>","Decommissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.commodity&&(n.commodity=e.commodity.toUpperCase()),e.kind&&(n.kind=e.kind.toUpperCase()),e.code&&(n.code=e.code),e.location!==void 0&&(n.location=e.location),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.capacityPerDay!==void 0&&(n.capacityPerDay=e.capacityPerDay),e.capacityUnit&&(n.capacityUnit=e.capacityUnit.toUpperCase()),e.workingInterestPct!==void 0&&(n.workingInterestPct=e.workingInterestPct),e.operatorLead&&(n.operatorLeadId=e.operatorLead),e.commissionedAt&&(n.commissionedAt=e.commissionedAt),e.decommissionedAt&&(n.decommissionedAt=e.decommissionedAt),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(b,{id:t,input:n});d("Asset updated"),s(e,g.theUpdateAsset);}catch(n){i(n);}}),o.command("transition").description("Advance an asset through its lifecycle").argument("<id>","Asset ID").requiredOption("--status <s>","EXPLORATION|APPRAISAL|DEVELOPMENT|PRODUCING|SUSPENDED|DECOMMISSIONING|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t,status:e.status.toUpperCase()});d(`Asset transitioned to ${n.theTransitionAsset.status}`),s(e,n.theTransitionAsset);}catch(n){i(n);}}),o.command("retire").description("Retire (delete) an asset").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});d(n.theRetireAsset?`Asset ${t} retired`:`Asset ${t} not retired`),s(e,{retired:n.theRetireAsset});}catch(n){i(n);}});}function ot(r){let o=r.command("contracts").description("Theglobalfuel offtake contracts");o.command("list").description("List offtake contracts").option("--commodity <c>","Filter by commodity type").option("--side <s>","BUY|SELL").option("--status <s>","Filter by contract status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{commodity:t.commodity?t.commodity.toUpperCase():void 0,side:t.side?t.side.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListContracts.items,{headers:["ID","Reference","Counterparty","Commodity","Side","Status","Volume"],rows:e.theListContracts.items.map(n=>[p(n.id,12),n.reference,n.counterparty,n.commodity,n.side,n.status,`${n.deliveredVolume??0}/${n.contractedVolume??0}`])});}catch(e){i(e);}}),o.command("get").description("Get an offtake contract by id").argument("<id>","Contract ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});if(!n.theContract)throw new m(`Contract ${t} not found`);s(e,n.theContract);}catch(n){i(n);}}),o.command("create").description("Create an offtake contract").requiredOption("--reference <r>","Contract reference").requiredOption("--counterparty <c>","Counterparty name").requiredOption("--commodity <c>","Commodity type").option("--side <s>","BUY|SELL (default SELL)").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT (default FIXED)").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit (default BARRELS)").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={reference:t.reference,counterparty:t.counterparty,commodity:t.commodity.toUpperCase()};t.side&&(e.side=t.side.toUpperCase()),t.pricingBasis&&(e.pricingBasis=t.pricingBasis.toUpperCase()),t.pricePerUnit!==void 0&&(e.pricePerUnit=t.pricePerUnit),t.priceIndex&&(e.priceIndex=t.priceIndex),t.currency&&(e.currency=t.currency),t.unit&&(e.unit=t.unit.toUpperCase()),t.contractedVolume!==void 0&&(e.contractedVolume=t.contractedVolume),t.deliveryLocation&&(e.deliveryLocation=t.deliveryLocation),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(N,{input:e});d(`Contract created: ${n.theCreateContract.reference}`),s(t,n.theCreateContract);}catch(e){i(e);}}),o.command("update").description("Update an offtake contract").argument("<id>","Contract ID").option("--counterparty <c>","Counterparty name").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.counterparty&&(n.counterparty=e.counterparty),e.pricingBasis&&(n.pricingBasis=e.pricingBasis.toUpperCase()),e.pricePerUnit!==void 0&&(n.pricePerUnit=e.pricePerUnit),e.priceIndex&&(n.priceIndex=e.priceIndex),e.currency&&(n.currency=e.currency),e.unit&&(n.unit=e.unit.toUpperCase()),e.contractedVolume!==void 0&&(n.contractedVolume=e.contractedVolume),e.deliveryLocation!==void 0&&(n.deliveryLocation=e.deliveryLocation),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(_,{id:t,input:n});d("Contract updated"),s(e,g.theUpdateContract);}catch(n){i(n);}}),o.command("transition").description("Advance an offtake contract through its lifecycle").argument("<id>","Contract ID").requiredOption("--status <s>","DRAFT|NEGOTIATION|SIGNED|ACTIVE|SUSPENDED|COMPLETED|TERMINATED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});d(`Contract transitioned to ${n.theTransitionContract.status}`),s(e,n.theTransitionContract);}catch(n){i(n);}});}function rt(r){let o=r.command("shipments").description("Theglobalfuel shipments");o.command("list").description("List shipments").option("--contract <id>","Filter by contract ID").option("--status <s>","SCHEDULED|LOADING|IN_TRANSIT|DELIVERED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{contractId:t.contract,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListShipments,{headers:["ID","Reference","Contract","Status","Mode","Volume"],rows:e.theListShipments.map(n=>[p(n.id,12),n.reference,p(n.contractId,12),n.status,n.mode,`${n.volume} ${n.unit}`])});}catch(e){i(e);}}),o.command("schedule").description("Schedule a shipment against a contract").requiredOption("--contract <id>","Contract ID").requiredOption("--reference <r>","Shipment reference").requiredOption("--volume <n>","Volume",c).option("--mode <m>","PIPELINE|TANKER|RAIL|TRUCK|VESSEL_BULK|GRID (default PIPELINE)").option("--unit <u>","Unit (default BARRELS)").option("--carrier <s>","Carrier").option("--origin <s>","Origin").option("--destination <s>","Destination").option("--scheduled-at <iso>","Scheduled date (ISO)").option("--document-file <id>","Document file ID (bill of lading / certificate)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={contractId:t.contract,reference:t.reference,volume:t.volume};t.mode&&(e.mode=t.mode.toUpperCase()),t.unit&&(e.unit=t.unit.toUpperCase()),t.carrier&&(e.carrier=t.carrier),t.origin&&(e.origin=t.origin),t.destination&&(e.destination=t.destination),t.scheduledAt&&(e.scheduledAt=t.scheduledAt),t.documentFile&&(e.documentFileId=t.documentFile),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Shipment scheduled: ${n.theScheduleShipment.reference}`),s(t,n.theScheduleShipment);}catch(e){i(e);}}),o.command("deliver").description("Mark a shipment delivered (rolls volume into the contract's delivered total)").argument("<id>","Shipment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Shipment delivered: ${n.theDeliverShipment.reference}`),s(e,n.theDeliverShipment);}catch(n){i(n);}});}function it(r){let o=r.command("inventory").description("Theglobalfuel inventory lots");o.command("list").description("List inventory lots").option("--commodity <c>","Filter by commodity type").option("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{commodity:t.commodity?t.commodity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListInventoryLots.items,{headers:["ID","Lot Code","Commodity","Status","Quantity","Unit Value"],rows:e.theListInventoryLots.items.map(n=>[p(n.id,12),n.lotCode,n.commodity,n.status,`${n.quantity} ${n.unit}`,String(n.unitValue??0)])});}catch(e){i(e);}}),o.command("create").description("Create an inventory lot").requiredOption("--lot-code <c>","Lot code").requiredOption("--commodity <c>","Commodity type").requiredOption("--quantity <n>","Quantity",c).option("--unit <u>","Unit (default BARRELS)").option("--unit-value <n>","Unit value",c).option("--currency <s>","Currency code").option("--grade <n>","Grade",c).option("--location <s>","Storage location").option("--asset <id>","Source asset ID").option("--produced-at <iso>","Produced date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotCode:t.lotCode,commodity:t.commodity.toUpperCase(),quantity:t.quantity};t.unit&&(e.unit=t.unit.toUpperCase()),t.unitValue!==void 0&&(e.unitValue=t.unitValue),t.currency&&(e.currency=t.currency),t.grade!==void 0&&(e.grade=t.grade),t.location&&(e.location=t.location),t.asset&&(e.assetId=t.asset),t.producedAt&&(e.producedAt=t.producedAt),t.notes&&(e.notes=t.notes);let n=await a(G,{input:e});d(`Inventory lot created: ${n.theCreateInventoryLot.lotCode}`),s(t,n.theCreateInventoryLot);}catch(e){i(e);}}),o.command("set-status").description("Set an inventory lot status").argument("<id>","Inventory lot ID").requiredOption("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});d(`Inventory lot status set to ${n.theSetInventoryLotStatus.status}`),s(e,n.theSetInventoryLotStatus);}catch(n){i(n);}});}function st(r){let o=r.command("production").description("Theglobalfuel production records");o.command("list").description("List production records").option("--asset <id>","Filter by asset ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{assetId:t.asset,pagination:f(t.limit,t.offset)});s(t,e.theListProductionRecords.items,{headers:["ID","Asset","Volume","Downtime (h)","Period Start","Period End"],rows:e.theListProductionRecords.items.map(n=>[p(n.id,12),p(n.assetId,12),`${n.volume} ${n.unit}`,String(n.downtimeHours??0),C(n.periodStart),C(n.periodEnd)])});}catch(e){i(e);}}),o.command("record").description("Record a production figure for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--volume <n>","Produced volume",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--unit <u>","Unit (default BARRELS)").option("--grade <n>","Grade",c).option("--downtime-hours <n>","Downtime hours",c).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,volume:t.volume,periodStart:t.periodStart,periodEnd:t.periodEnd};t.unit&&(e.unit=t.unit.toUpperCase()),t.grade!==void 0&&(e.grade=t.grade),t.downtimeHours!==void 0&&(e.downtimeHours=t.downtimeHours),t.notes&&(e.notes=t.notes);let n=await a(H,{input:e});d(`Production recorded: ${n.theRecordProduction.volume} ${t.unit??""}`.trim()),s(t,n.theRecordProduction);}catch(e){i(e);}});}function at(r){let o=r.command("emissions").description("Theglobalfuel emission records");o.command("list").description("List emission records").option("--asset <id>","Filter by asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{assetId:t.asset,scope:t.scope?t.scope.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListEmissionRecords.items,{headers:["ID","Asset","Scope","CO2e (t)","Source","Verified"],rows:e.theListEmissionRecords.items.map(n=>[p(n.id,12),p(n.assetId??"-",12),n.scope,String(n.co2eTonnes),n.source??"-",n.verified?"yes":"no"])});}catch(e){i(e);}}),o.command("record").description("Record an emission figure").requiredOption("--co2e-tonnes <n>","CO2e tonnes",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--asset <id>","Asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3 (default SCOPE_1)").option("--source <s>","Emission source").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={co2eTonnes:t.co2eTonnes,periodStart:t.periodStart,periodEnd:t.periodEnd};t.asset&&(e.assetId=t.asset),t.scope&&(e.scope=t.scope.toUpperCase()),t.source&&(e.source=t.source),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(Y,{input:e});d(`Emission recorded: ${n.theRecordEmission.co2eTonnes} tCO2e`),s(t,n.theRecordEmission);}catch(e){i(e);}}),o.command("verify").description("Mark an emission figure third-party verified").argument("<id>","Emission record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});d("Emission verified"),s(e,n.theVerifyEmission);}catch(n){i(n);}});}function ct(r){let o=r.command("reserves").description("Theglobalfuel reserve estimates");o.command("list").description("List reserve estimates").option("--asset <id>","Filter by asset ID").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0});s(t,e.theListReserveEstimates,{headers:["ID","Asset","Category","Recoverable","Factor","As Of"],rows:e.theListReserveEstimates.map(n=>[p(n.id,12),p(n.assetId,12),n.category,`${n.recoverable} ${n.unit}`,n.recoveryFactor!=null?String(n.recoveryFactor):"-",C(n.asOfDate)])});}catch(e){i(e);}}),o.command("create").description("Create a reserve estimate for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--recoverable <n>","Recoverable quantity",c).requiredOption("--as-of-date <iso>","As-of date (ISO)").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE (default PROVED)").option("--recovery-factor <n>","Recovery factor",c).option("--unit <u>","Unit (default BARRELS)").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,recoverable:t.recoverable,asOfDate:t.asOfDate};t.category&&(e.category=t.category.toUpperCase()),t.recoveryFactor!==void 0&&(e.recoveryFactor=t.recoveryFactor),t.unit&&(e.unit=t.unit.toUpperCase()),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(J,{input:e});d(`Reserve estimate created (${n.theCreateReserveEstimate.category})`),s(t,n.theCreateReserveEstimate);}catch(e){i(e);}});}function dt(r){let o=r.command("compliance").description("Theglobalfuel compliance certifications");o.command("list").description("List compliance certifications").option("--asset <id>","Filter by asset ID").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY").option("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListComplianceCerts,{headers:["ID","Title","Category","Status","Authority","Expires"],rows:e.theListComplianceCerts.map(n=>[p(n.id,12),n.title,n.category,n.status,n.authority??"-",C(n.expiresAt)])});}catch(e){i(e);}}),o.command("get").description("Get a compliance certification by id").argument("<id>","Compliance cert ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t});if(!n.theComplianceCert)throw new m(`Compliance cert ${t} not found`);s(e,n.theComplianceCert);}catch(n){i(n);}}),o.command("create").description("Create a compliance certification").requiredOption("--title <t>","Title").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY (default ENVIRONMENTAL_PERMIT)").option("--asset <id>","Related asset ID").option("--authority <s>","Issuing authority").option("--cert-number <s>","Certificate number").option("--owner <id>","Owner user ID").option("--evidence-file <id>","Evidence file ID (certificate document)").option("--issued-at <iso>","Issued date (ISO)").option("--expires-at <iso>","Expiry date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.category&&(e.category=t.category.toUpperCase()),t.asset&&(e.assetId=t.asset),t.authority&&(e.authority=t.authority),t.certNumber&&(e.certNumber=t.certNumber),t.owner&&(e.ownerId=t.owner),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.issuedAt&&(e.issuedAt=t.issuedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(Z,{input:e});d(`Compliance cert created: ${n.theCreateComplianceCert.title}`),s(t,n.theCreateComplianceCert);}catch(e){i(e);}}),o.command("transition").description("Advance a compliance certification through its lifecycle").argument("<id>","Compliance cert ID").requiredOption("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,status:e.status.toUpperCase()});d(`Compliance cert transitioned to ${n.theTransitionComplianceCert.status}`),s(e,n.theTransitionComplianceCert);}catch(n){i(n);}});}function ut(r){r.command("health").description("Theglobalfuel service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await w(et);d(t.theHealth),s(o,{health:t.theHealth});}catch(t){i(t);}});}var wt={id:"theglobalfuel",version:"1.0.0",displayName:"Theglobalfuel",dependsOn:["auth","workspaces"],register(r,o){R(o);let t=r.command("theglobalfuel").description("Theglobalfuel energy & commodities operations ledger");nt(t),ot(t),rt(t),it(t),st(t),at(t),ct(t),dt(t),ut(t);}},yn=wt;module.exports=yn;
|
|
251
|
+
`;function l(r){let o=Number.parseInt(r,10);if(Number.isNaN(o))throw new m(`Expected an integer but got "${r}"`);return o}function c(r){let o=Number.parseFloat(r);if(Number.isNaN(o))throw new m(`Expected a number but got "${r}"`);return o}function f(r,o){let t={};return r!==void 0&&(t.limit=r),o!==void 0&&(t.offset=o),t}function nt(r){let o=r.command("assets").description("Theglobalfuel upstream assets");o.command("list").description("List assets").option("--commodity <c>","Filter by commodity type").option("--kind <k>","Filter by asset kind").option("--status <s>","Filter by asset status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(v,{commodity:t.commodity?t.commodity.toUpperCase():void 0,kind:t.kind?t.kind.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListAssets.items,{headers:["ID","Name","Kind","Commodity","Status","Capacity/Day"],rows:e.theListAssets.items.map(n=>[p(n.id,12),n.name,n.kind,n.commodity,n.status,`${n.capacityPerDay??0} ${n.capacityUnit??""}`.trim()])});}catch(e){i(e);}}),o.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 a(R,{id:t});if(!n.theAsset)throw new m(`Asset ${t} not found`);s(e,n.theAsset);}catch(n){i(n);}}),o.command("create").description("Create an asset").requiredOption("--name <name>","Asset name").requiredOption("--commodity <c>","Commodity type (e.g. CRUDE_OIL, NATURAL_GAS, LITHIUM)").option("--kind <k>","Asset kind (default WELL)").option("--code <code>","Asset code").option("--status <s>","Asset status (default EXPLORATION)").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit (default BARRELS)").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={name:t.name,commodity:t.commodity.toUpperCase()};t.kind&&(e.kind=t.kind.toUpperCase()),t.code&&(e.code=t.code),t.status&&(e.status=t.status.toUpperCase()),t.location&&(e.location=t.location),t.latitude!==void 0&&(e.latitude=t.latitude),t.longitude!==void 0&&(e.longitude=t.longitude),t.capacityPerDay!==void 0&&(e.capacityPerDay=t.capacityPerDay),t.capacityUnit&&(e.capacityUnit=t.capacityUnit.toUpperCase()),t.workingInterestPct!==void 0&&(e.workingInterestPct=t.workingInterestPct),t.operatorLead&&(e.operatorLeadId=t.operatorLead),t.commissionedAt&&(e.commissionedAt=t.commissionedAt),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(x,{input:e});d(`Asset created: ${n.theCreateAsset.name}`),s(t,n.theCreateAsset);}catch(e){i(e);}}),o.command("update").description("Update an asset").argument("<id>","Asset ID").option("--name <name>","Asset name").option("--commodity <c>","Commodity type").option("--kind <k>","Asset kind").option("--code <code>","Asset code").option("--location <s>","Location description").option("--latitude <n>","Latitude",c).option("--longitude <n>","Longitude",c).option("--capacity-per-day <n>","Capacity per day",c).option("--capacity-unit <u>","Capacity unit").option("--working-interest-pct <n>","Working interest %",c).option("--operator-lead <id>","Operator lead user ID").option("--commissioned-at <iso>","Commissioned date (ISO)").option("--decommissioned-at <iso>","Decommissioned date (ISO)").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.name&&(n.name=e.name),e.commodity&&(n.commodity=e.commodity.toUpperCase()),e.kind&&(n.kind=e.kind.toUpperCase()),e.code&&(n.code=e.code),e.location!==void 0&&(n.location=e.location),e.latitude!==void 0&&(n.latitude=e.latitude),e.longitude!==void 0&&(n.longitude=e.longitude),e.capacityPerDay!==void 0&&(n.capacityPerDay=e.capacityPerDay),e.capacityUnit&&(n.capacityUnit=e.capacityUnit.toUpperCase()),e.workingInterestPct!==void 0&&(n.workingInterestPct=e.workingInterestPct),e.operatorLead&&(n.operatorLeadId=e.operatorLead),e.commissionedAt&&(n.commissionedAt=e.commissionedAt),e.decommissionedAt&&(n.decommissionedAt=e.decommissionedAt),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(b,{id:t,input:n});d("Asset updated"),s(e,g.theUpdateAsset);}catch(n){i(n);}}),o.command("transition").description("Advance an asset through its lifecycle").argument("<id>","Asset ID").requiredOption("--status <s>","EXPLORATION|APPRAISAL|DEVELOPMENT|PRODUCING|SUSPENDED|DECOMMISSIONING|RETIRED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(D,{id:t,status:e.status.toUpperCase()});d(`Asset transitioned to ${n.theTransitionAsset.status}`),s(e,n.theTransitionAsset);}catch(n){i(n);}}),o.command("retire").description("Retire (delete) an asset").argument("<id>","Asset ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(L,{id:t});d(n.theRetireAsset?`Asset ${t} retired`:`Asset ${t} not retired`),s(e,{retired:n.theRetireAsset});}catch(n){i(n);}});}function ot(r){let o=r.command("contracts").description("Theglobalfuel offtake contracts");o.command("list").description("List offtake contracts").option("--commodity <c>","Filter by commodity type").option("--side <s>","BUY|SELL").option("--status <s>","Filter by contract status").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a($,{commodity:t.commodity?t.commodity.toUpperCase():void 0,side:t.side?t.side.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListContracts.items,{headers:["ID","Reference","Counterparty","Commodity","Side","Status","Volume"],rows:e.theListContracts.items.map(n=>[p(n.id,12),n.reference,n.counterparty,n.commodity,n.side,n.status,`${n.deliveredVolume??0}/${n.contractedVolume??0}`])});}catch(e){i(e);}}),o.command("get").description("Get an offtake contract by id").argument("<id>","Contract ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(P,{id:t});if(!n.theContract)throw new m(`Contract ${t} not found`);s(e,n.theContract);}catch(n){i(n);}}),o.command("create").description("Create an offtake contract").requiredOption("--reference <r>","Contract reference").requiredOption("--counterparty <c>","Counterparty name").requiredOption("--commodity <c>","Commodity type").option("--side <s>","BUY|SELL (default SELL)").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT (default FIXED)").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit (default BARRELS)").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={reference:t.reference,counterparty:t.counterparty,commodity:t.commodity.toUpperCase()};t.side&&(e.side=t.side.toUpperCase()),t.pricingBasis&&(e.pricingBasis=t.pricingBasis.toUpperCase()),t.pricePerUnit!==void 0&&(e.pricePerUnit=t.pricePerUnit),t.priceIndex&&(e.priceIndex=t.priceIndex),t.currency&&(e.currency=t.currency),t.unit&&(e.unit=t.unit.toUpperCase()),t.contractedVolume!==void 0&&(e.contractedVolume=t.contractedVolume),t.deliveryLocation&&(e.deliveryLocation=t.deliveryLocation),t.startDate&&(e.startDate=t.startDate),t.endDate&&(e.endDate=t.endDate),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(N,{input:e});d(`Contract created: ${n.theCreateContract.reference}`),s(t,n.theCreateContract);}catch(e){i(e);}}),o.command("update").description("Update an offtake contract").argument("<id>","Contract ID").option("--counterparty <c>","Counterparty name").option("--pricing-basis <p>","FIXED|FORMULA|INDEX_LINKED|SPOT").option("--price-per-unit <n>","Price per unit",c).option("--price-index <s>","Price index reference").option("--currency <s>","Currency code").option("--unit <u>","Unit").option("--contracted-volume <n>","Contracted volume",c).option("--delivery-location <s>","Delivery location").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n={};if(e.counterparty&&(n.counterparty=e.counterparty),e.pricingBasis&&(n.pricingBasis=e.pricingBasis.toUpperCase()),e.pricePerUnit!==void 0&&(n.pricePerUnit=e.pricePerUnit),e.priceIndex&&(n.priceIndex=e.priceIndex),e.currency&&(n.currency=e.currency),e.unit&&(n.unit=e.unit.toUpperCase()),e.contractedVolume!==void 0&&(n.contractedVolume=e.contractedVolume),e.deliveryLocation!==void 0&&(n.deliveryLocation=e.deliveryLocation),e.startDate&&(n.startDate=e.startDate),e.endDate&&(n.endDate=e.endDate),e.notes!==void 0&&(n.notes=e.notes),e.tags&&(n.tags=e.tags.split(",").map(T=>T.trim())),!Object.keys(n).length)throw new m("No updates specified");let g=await a(_,{id:t,input:n});d("Contract updated"),s(e,g.theUpdateContract);}catch(n){i(n);}}),o.command("transition").description("Advance an offtake contract through its lifecycle").argument("<id>","Contract ID").requiredOption("--status <s>","DRAFT|NEGOTIATION|SIGNED|ACTIVE|SUSPENDED|COMPLETED|TERMINATED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(U,{id:t,status:e.status.toUpperCase()});d(`Contract transitioned to ${n.theTransitionContract.status}`),s(e,n.theTransitionContract);}catch(n){i(n);}});}function rt(r){let o=r.command("shipments").description("Theglobalfuel shipments");o.command("list").description("List shipments").option("--contract <id>","Filter by contract ID").option("--status <s>","SCHEDULED|LOADING|IN_TRANSIT|DELIVERED|CANCELLED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(q,{contractId:t.contract,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListShipments,{headers:["ID","Reference","Contract","Status","Mode","Volume"],rows:e.theListShipments.map(n=>[p(n.id,12),n.reference,p(n.contractId,12),n.status,n.mode,`${n.volume} ${n.unit}`])});}catch(e){i(e);}}),o.command("schedule").description("Schedule a shipment against a contract").requiredOption("--contract <id>","Contract ID").requiredOption("--reference <r>","Shipment reference").requiredOption("--volume <n>","Volume",c).option("--mode <m>","PIPELINE|TANKER|RAIL|TRUCK|VESSEL_BULK|GRID (default PIPELINE)").option("--unit <u>","Unit (default BARRELS)").option("--carrier <s>","Carrier").option("--origin <s>","Origin").option("--destination <s>","Destination").option("--scheduled-at <iso>","Scheduled date (ISO)").option("--document-file <id>","Document file ID (bill of lading / certificate)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={contractId:t.contract,reference:t.reference,volume:t.volume};t.mode&&(e.mode=t.mode.toUpperCase()),t.unit&&(e.unit=t.unit.toUpperCase()),t.carrier&&(e.carrier=t.carrier),t.origin&&(e.origin=t.origin),t.destination&&(e.destination=t.destination),t.scheduledAt&&(e.scheduledAt=t.scheduledAt),t.documentFile&&(e.documentFileId=t.documentFile),t.notes&&(e.notes=t.notes);let n=await a(F,{input:e});d(`Shipment scheduled: ${n.theScheduleShipment.reference}`),s(t,n.theScheduleShipment);}catch(e){i(e);}}),o.command("deliver").description("Mark a shipment delivered (rolls volume into the contract's delivered total)").argument("<id>","Shipment ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(V,{id:t});d(`Shipment delivered: ${n.theDeliverShipment.reference}`),s(e,n.theDeliverShipment);}catch(n){i(n);}});}function it(r){let o=r.command("inventory").description("Theglobalfuel inventory lots");o.command("list").description("List inventory lots").option("--commodity <c>","Filter by commodity type").option("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(M,{commodity:t.commodity?t.commodity.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListInventoryLots.items,{headers:["ID","Lot Code","Commodity","Status","Quantity","Unit Value"],rows:e.theListInventoryLots.items.map(n=>[p(n.id,12),n.lotCode,n.commodity,n.status,`${n.quantity} ${n.unit}`,String(n.unitValue??0)])});}catch(e){i(e);}}),o.command("create").description("Create an inventory lot").requiredOption("--lot-code <c>","Lot code").requiredOption("--commodity <c>","Commodity type").requiredOption("--quantity <n>","Quantity",c).option("--unit <u>","Unit (default BARRELS)").option("--unit-value <n>","Unit value",c).option("--currency <s>","Currency code").option("--grade <n>","Grade",c).option("--location <s>","Storage location").option("--asset <id>","Source asset ID").option("--produced-at <iso>","Produced date (ISO)").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={lotCode:t.lotCode,commodity:t.commodity.toUpperCase(),quantity:t.quantity};t.unit&&(e.unit=t.unit.toUpperCase()),t.unitValue!==void 0&&(e.unitValue=t.unitValue),t.currency&&(e.currency=t.currency),t.grade!==void 0&&(e.grade=t.grade),t.location&&(e.location=t.location),t.asset&&(e.assetId=t.asset),t.producedAt&&(e.producedAt=t.producedAt),t.notes&&(e.notes=t.notes);let n=await a(G,{input:e});d(`Inventory lot created: ${n.theCreateInventoryLot.lotCode}`),s(t,n.theCreateInventoryLot);}catch(e){i(e);}}),o.command("set-status").description("Set an inventory lot status").argument("<id>","Inventory lot ID").requiredOption("--status <s>","AVAILABLE|RESERVED|IN_TRANSIT|CONSUMED|WRITTEN_OFF").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(W,{id:t,status:e.status.toUpperCase()});d(`Inventory lot status set to ${n.theSetInventoryLotStatus.status}`),s(e,n.theSetInventoryLotStatus);}catch(n){i(n);}});}function st(r){let o=r.command("production").description("Theglobalfuel production records");o.command("list").description("List production records").option("--asset <id>","Filter by asset ID").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(B,{assetId:t.asset,pagination:f(t.limit,t.offset)});s(t,e.theListProductionRecords.items,{headers:["ID","Asset","Volume","Downtime (h)","Period Start","Period End"],rows:e.theListProductionRecords.items.map(n=>[p(n.id,12),p(n.assetId,12),`${n.volume} ${n.unit}`,String(n.downtimeHours??0),C(n.periodStart),C(n.periodEnd)])});}catch(e){i(e);}}),o.command("record").description("Record a production figure for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--volume <n>","Produced volume",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--unit <u>","Unit (default BARRELS)").option("--grade <n>","Grade",c).option("--downtime-hours <n>","Downtime hours",c).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,volume:t.volume,periodStart:t.periodStart,periodEnd:t.periodEnd};t.unit&&(e.unit=t.unit.toUpperCase()),t.grade!==void 0&&(e.grade=t.grade),t.downtimeHours!==void 0&&(e.downtimeHours=t.downtimeHours),t.notes&&(e.notes=t.notes);let n=await a(H,{input:e});d(`Production recorded: ${n.theRecordProduction.volume} ${t.unit??""}`.trim()),s(t,n.theRecordProduction);}catch(e){i(e);}});}function at(r){let o=r.command("emissions").description("Theglobalfuel emission records");o.command("list").description("List emission records").option("--asset <id>","Filter by asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3").option("--limit <n>","Page size",l,50).option("--offset <n>","Offset",l,0).option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(j,{assetId:t.asset,scope:t.scope?t.scope.toUpperCase():void 0,pagination:f(t.limit,t.offset)});s(t,e.theListEmissionRecords.items,{headers:["ID","Asset","Scope","CO2e (t)","Source","Verified"],rows:e.theListEmissionRecords.items.map(n=>[p(n.id,12),p(n.assetId??"-",12),n.scope,String(n.co2eTonnes),n.source??"-",n.verified?"yes":"no"])});}catch(e){i(e);}}),o.command("record").description("Record an emission figure").requiredOption("--co2e-tonnes <n>","CO2e tonnes",c).requiredOption("--period-start <iso>","Period start (ISO)").requiredOption("--period-end <iso>","Period end (ISO)").option("--asset <id>","Asset ID").option("--scope <s>","SCOPE_1|SCOPE_2|SCOPE_3 (default SCOPE_1)").option("--source <s>","Emission source").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={co2eTonnes:t.co2eTonnes,periodStart:t.periodStart,periodEnd:t.periodEnd};t.asset&&(e.assetId=t.asset),t.scope&&(e.scope=t.scope.toUpperCase()),t.source&&(e.source=t.source),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(Y,{input:e});d(`Emission recorded: ${n.theRecordEmission.co2eTonnes} tCO2e`),s(t,n.theRecordEmission);}catch(e){i(e);}}),o.command("verify").description("Mark an emission figure third-party verified").argument("<id>","Emission record ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(z,{id:t});d("Emission verified"),s(e,n.theVerifyEmission);}catch(n){i(n);}});}function ct(r){let o=r.command("reserves").description("Theglobalfuel reserve estimates");o.command("list").description("List reserve estimates").option("--asset <id>","Filter by asset ID").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(K,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0});s(t,e.theListReserveEstimates,{headers:["ID","Asset","Category","Recoverable","Factor","As Of"],rows:e.theListReserveEstimates.map(n=>[p(n.id,12),p(n.assetId,12),n.category,`${n.recoverable} ${n.unit}`,n.recoveryFactor!=null?String(n.recoveryFactor):"-",C(n.asOfDate)])});}catch(e){i(e);}}),o.command("create").description("Create a reserve estimate for an asset").requiredOption("--asset <id>","Asset ID").requiredOption("--recoverable <n>","Recoverable quantity",c).requiredOption("--as-of-date <iso>","As-of date (ISO)").option("--category <c>","PROVED|PROBABLE|POSSIBLE|CONTINGENT|PROSPECTIVE (default PROVED)").option("--recovery-factor <n>","Recovery factor",c).option("--unit <u>","Unit (default BARRELS)").option("--methodology <s>","Methodology").option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async t=>{try{let e={assetId:t.asset,recoverable:t.recoverable,asOfDate:t.asOfDate};t.category&&(e.category=t.category.toUpperCase()),t.recoveryFactor!==void 0&&(e.recoveryFactor=t.recoveryFactor),t.unit&&(e.unit=t.unit.toUpperCase()),t.methodology&&(e.methodology=t.methodology),t.notes&&(e.notes=t.notes);let n=await a(J,{input:e});d(`Reserve estimate created (${n.theCreateReserveEstimate.category})`),s(t,n.theCreateReserveEstimate);}catch(e){i(e);}});}function dt(r){let o=r.command("compliance").description("Theglobalfuel compliance certifications");o.command("list").description("List compliance certifications").option("--asset <id>","Filter by asset ID").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY").option("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async t=>{try{let e=await a(Q,{assetId:t.asset,category:t.category?t.category.toUpperCase():void 0,status:t.status?t.status.toUpperCase():void 0});s(t,e.theListComplianceCerts,{headers:["ID","Title","Category","Status","Authority","Expires"],rows:e.theListComplianceCerts.map(n=>[p(n.id,12),n.title,n.category,n.status,n.authority??"-",C(n.expiresAt)])});}catch(e){i(e);}}),o.command("get").description("Get a compliance certification by id").argument("<id>","Compliance cert ID").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(X,{id:t});if(!n.theComplianceCert)throw new m(`Compliance cert ${t} not found`);s(e,n.theComplianceCert);}catch(n){i(n);}}),o.command("create").description("Create a compliance certification").requiredOption("--title <t>","Title").option("--category <c>","EXTRACTION_LICENSE|ENVIRONMENTAL_PERMIT|EXPORT_LICENSE|SAFETY_AUDIT|EMISSIONS_REPORT|CARBON_CREDIT|CHAIN_OF_CUSTODY (default ENVIRONMENTAL_PERMIT)").option("--asset <id>","Related asset ID").option("--authority <s>","Issuing authority").option("--cert-number <s>","Certificate number").option("--owner <id>","Owner user ID").option("--evidence-file <id>","Evidence file ID (certificate document)").option("--issued-at <iso>","Issued date (ISO)").option("--expires-at <iso>","Expiry date (ISO)").option("--notes <s>","Notes").option("--tags <csv>","Comma-separated tags").option("-f, --format <format>","Output format").action(async t=>{try{let e={title:t.title};t.category&&(e.category=t.category.toUpperCase()),t.asset&&(e.assetId=t.asset),t.authority&&(e.authority=t.authority),t.certNumber&&(e.certNumber=t.certNumber),t.owner&&(e.ownerId=t.owner),t.evidenceFile&&(e.evidenceFileId=t.evidenceFile),t.issuedAt&&(e.issuedAt=t.issuedAt),t.expiresAt&&(e.expiresAt=t.expiresAt),t.notes&&(e.notes=t.notes),t.tags&&(e.tags=t.tags.split(",").map(g=>g.trim()));let n=await a(Z,{input:e});d(`Compliance cert created: ${n.theCreateComplianceCert.title}`),s(t,n.theCreateComplianceCert);}catch(e){i(e);}}),o.command("transition").description("Advance a compliance certification through its lifecycle").argument("<id>","Compliance cert ID").requiredOption("--status <s>","PENDING|SUBMITTED|APPROVED|REJECTED|EXPIRED|REVOKED").option("-f, --format <format>","Output format").action(async(t,e)=>{try{let n=await a(tt,{id:t,status:e.status.toUpperCase()});d(`Compliance cert transitioned to ${n.theTransitionComplianceCert.status}`),s(e,n.theTransitionComplianceCert);}catch(n){i(n);}});}function ut(r){r.command("health").description("Theglobalfuel service health check (public)").option("-f, --format <format>","Output format").action(async o=>{try{let t=await w(et);d(t.theHealth),s(o,{health:t.theHealth});}catch(t){i(t);}});}var wt={id:"theglobalfuel",version:"1.0.0",displayName:"Theglobalfuel",dependsOn:["auth","workspaces"],register(r,o){O(o);let t=r.command("theglobalfuel").description("Theglobalfuel energy & commodities operations ledger");nt(t),ot(t),rt(t),it(t),st(t),at(t),ct(t),dt(t),ut(t);}},yn=wt;module.exports=yn;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a as a$1,b as b$1,h,p as p$1,g,i,o as o$1,d}from'../../chunk-
|
|
1
|
+
import {a as a$1,b as b$1,h,p as p$1,g,i,o as o$1,d}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var A=`
|
|
2
2
|
query TheGetAsset($id: ID!) {
|
|
3
3
|
theAsset(id: $id) {
|
|
4
4
|
id name code kind commodity status location latitude longitude
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},E=class extends u{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var C=null;function x(c){C=c;}function k(){if(!C)throw new I("vibecontrols module helpers used before setHelpersContext was called");return C}function Zt(){let c=k();if(!c.auth.isAuthenticated())throw new E(
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var u=class extends Error{exitCode;hint;constructor(n,e){super(n),this.name="CliUserError",this.exitCode=e?.exitCode??1,this.hint=e?.hint;}},E=class extends u{constructor(n,e){super(n,{exitCode:2,hint:e?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},I=class extends Error{cause;constructor(n,e){super(n),this.name="CliInternalError",this.cause=e;}};var C=null;function x(c){C=c;}function k(){if(!C)throw new I("vibecontrols module helpers used before setHelpersContext was called");return C}function Zt(){let c=k();if(!c.auth.isAuthenticated())throw new E("Authentication required.",{hint:`Run \`${c.productName} auth login\` to authenticate.`})}async function i(c,n){return Zt(),k().gql.workspace.request(c,n)}function s(c){let n=c instanceof Error?c.message:String(c);throw new u(n)}function a(c,n,e){k().output.formatAndOutput(c,n,e);}function p(c){k().output.printSuccess(c);}function y(c){return k().output.formatDate(c)}function g(c,n){return k().output.truncate(c,n)}function D(){return k()}var h=`
|
|
2
2
|
query TimeCampusGetProject($id: ID!) {
|
|
3
3
|
timeCampusProject(id: $id) {
|
|
4
4
|
id name status currency budget hourlyRate estimatedHours trackedHours
|
|
@@ -39,26 +39,26 @@
|
|
|
39
39
|
color description updatedAt
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
|
|
42
|
+
`,v=`
|
|
43
43
|
mutation TimeCampusArchiveProject($id: ID!) {
|
|
44
44
|
archiveTimeCampusProject(id: $id) {
|
|
45
45
|
id name status updatedAt
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
`,$=`
|
|
49
49
|
mutation TimeCampusDeleteProject($id: ID!) {
|
|
50
50
|
deleteTimeCampusProject(id: $id) {
|
|
51
51
|
id name status
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
`,
|
|
54
|
+
`,_=`
|
|
55
55
|
query TimeCampusGetTask($id: ID!) {
|
|
56
56
|
task(id: $id) {
|
|
57
57
|
id title status priority order projectId assigneeId description
|
|
58
58
|
dueDate estimatedHours trackedHours completedAt createdAt updatedAt workspaceId
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
`,
|
|
61
|
+
`,j=`
|
|
62
62
|
query TimeCampusListTasks(
|
|
63
63
|
$projectId: ID!
|
|
64
64
|
$filter: TaskFilterInput
|
|
@@ -434,11 +434,11 @@
|
|
|
434
434
|
insights { type title description impact recommendation }
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
|
|
437
|
+
`,vt=`
|
|
438
438
|
query TimeCampusAppUsageSummary($startDate: DateTime, $endDate: DateTime, $userId: ID) {
|
|
439
439
|
appUsageSummary(startDate: $startDate, endDate: $endDate, userId: $userId) {
|
|
440
440
|
totalApps productiveTime neutralTime distractingTime productivityRatio
|
|
441
441
|
topApps { name category timeSpent sessions }
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
`;function T(c,n){try{return JSON.parse(n)}catch{throw new u(`--${c} must be valid JSON`)}}function d(c){let n=Number.parseInt(c,10);if(Number.isNaN(n))throw new u(`Expected an integer but got "${c}"`);return n}function m(c){let n=Number.parseFloat(c);if(Number.isNaN(n))throw new u(`Expected a number but got "${c}"`);return n}function l(c){if(c)return c;let n=D().auth.read();if(!n?.workspaceId)throw new u("No workspace set. Pass --workspace <id> or run `timecampus auth login`.");return n.workspaceId}function vt(c){let n=c.command("projects").description("TimeCampus projects");n.command("list").description("List projects").option("--status <s>","Filter by status").option("--client <id>","Filter by client ID").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.client&&(t.clientId=e.client),e.query&&(t.search=e.query);let r=await i(b,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.timeCampusProjects.items,{headers:["ID","Name","Status","Currency","Budget","Hours"],rows:r.timeCampusProjects.items.map(o=>[g(o.id,12),o.name,o.status,o.currency??"-",o.budget!=null?String(o.budget):"-",String(o.trackedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(h,{id:e});if(!r.timeCampusProject)throw new u(`Project ${e} not found`);a(t,r.timeCampusProject);}catch(r){s(r);}}),n.command("stats").description("Get project statistics").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(O,{id:e});a(t,r.timeCampusProjectStats);}catch(r){s(r);}}),n.command("create").description("Create a project").requiredOption("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status","ACTIVE").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency","USD").option("--budget <n>","Budget",m).option("--hourly-rate <n>","Hourly rate",m).option("--estimated-hours <n>","Estimated hours",m).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,status:(e.status??"ACTIVE").toUpperCase(),currency:e.currency??"USD"};e.description&&(t.description=e.description),e.client&&(t.clientId=e.client),e.color&&(t.color=e.color),e.budget!==void 0&&(t.budget=e.budget),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.context&&(t.context=T("context",e.context));let r=await i(A,{input:t});p(`Project created: ${r.createTimeCampusProject.name}`),a(e,r.createTimeCampusProject);}catch(t){s(t);}}),n.command("update").description("Update a project").argument("<id>","Project ID").option("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency").option("--budget <n>","Budget",m).option("--hourly-rate <n>","Hourly rate",m).option("--estimated-hours <n>","Estimated hours",m).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.client&&(r.clientId=t.client),t.color&&(r.color=t.color),t.currency&&(r.currency=t.currency),t.budget!==void 0&&(r.budget=t.budget),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),!Object.keys(r).length)throw new u("No updates specified");let o=await i(P,{id:e,input:r});p("Project updated"),a(t,o.updateTimeCampusProject);}catch(r){s(r);}}),n.command("archive").description("Archive a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i($,{id:e});p("Project archived"),a(t,r.archiveTimeCampusProject);}catch(r){s(r);}}),n.command("delete").description("Delete a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(v,{id:e});p("Project deleted"),a(t,r.deleteTimeCampusProject);}catch(r){s(r);}});}function jt(c){let n=c.command("tasks").description("TimeCampus tasks");n.command("list").description("List tasks for a project").requiredOption("--project <id>","Project ID").option("--status <s>","Filter by status").option("--priority <p>","Filter by priority").option("--assignee <id>","Filter by assignee ID").option("--query <q>","Free-text search").option("--overdue","Only overdue tasks").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.priority&&(t.priority=e.priority.toUpperCase()),e.assignee&&(t.assigneeId=e.assignee),e.query&&(t.search=e.query),e.overdue&&(t.overdue=!0);let r=await i(_,{projectId:e.project,filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.tasks.items,{headers:["ID","Title","Status","Priority","Due","Hours"],rows:r.tasks.items.map(o=>[g(o.id,12),o.title,o.status,o.priority,y(o.dueDate),String(o.trackedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a task by id").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(j,{id:e});if(!r.task)throw new u(`Task ${e} not found`);a(t,r.task);}catch(r){s(r);}}),n.command("create").description("Create a task").requiredOption("--project <id>","Project ID").requiredOption("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status","TODO").option("--priority <p>","Priority","MEDIUM").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",m).option("--order <n>","Display order",d).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={projectId:e.project,title:e.title,status:(e.status??"TODO").toUpperCase(),priority:(e.priority??"MEDIUM").toUpperCase()};e.description&&(t.description=e.description),e.assignee&&(t.assigneeId=e.assignee),e.dueDate&&(t.dueDate=e.dueDate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.order!==void 0&&(t.order=e.order),e.context&&(t.context=T("context",e.context));let r=await i(q,{input:t});p(`Task created: ${r.createTask.title}`),a(e,r.createTask);}catch(t){s(t);}}),n.command("update").description("Update a task").argument("<id>","Task ID").option("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",m).option("--order <n>","Display order",d).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.priority&&(r.priority=t.priority.toUpperCase()),t.assignee&&(r.assigneeId=t.assignee),t.dueDate&&(r.dueDate=t.dueDate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),t.order!==void 0&&(r.order=t.order),!Object.keys(r).length)throw new u("No updates specified");let o=await i(N,{id:e,input:r});p("Task updated"),a(t,o.updateTask);}catch(r){s(r);}}),n.command("set-status").description("Update a task status").argument("<id>","Task ID").requiredOption("--status <s>","TODO|IN_PROGRESS|IN_REVIEW|DONE|CANCELLED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(U,{id:e,status:t.status.toUpperCase()});p(`Task status set to ${r.updateTaskStatus.status}`),a(t,r.updateTaskStatus);}catch(r){s(r);}}),n.command("delete").description("Delete a task").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(M,{id:e});p("Task deleted"),a(t,r.deleteTask);}catch(r){s(r);}});}function _t(c){let n=c.command("time-entries").description("TimeCampus time entries & timers");n.command("list").description("List time entries").option("--project <id>","Filter by project ID").option("--task <id>","Filter by task ID").option("--billable","Only billable entries").option("--running","Only running entries").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.billable&&(t.billable=!0),e.running&&(t.isRunning=!0),e.query&&(t.search=e.query);let r=await i(H,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.timeEntries.items,{headers:["ID","Description","Billable","Duration","Running","Start"],rows:r.timeEntries.items.map(o=>[g(o.id,12),g(o.description??"-",30),o.billable?"yes":"no",o.duration!=null?String(o.duration):"-",o.isRunning?"yes":"no",y(o.startTime)])});}catch(t){s(t);}}),n.command("get").description("Get a time entry by id").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(L,{id:e});if(!r.timeEntry)throw new u(`Time entry ${e} not found`);a(t,r.timeEntry);}catch(r){s(r);}}),n.command("stats").description("Time entry statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(G,{startDate:e.startDate,endDate:e.endDate});a(e,t.timeEntryStats);}catch(t){s(t);}}),n.command("running").description("List running timers").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(F);a(e,t.runningTimers,{headers:["ID","Description","Elapsed (s)","Source"],rows:t.runningTimers.map(r=>[g(r.timeEntry.id,12),g(r.timeEntry.description??"-",30),String(r.elapsedSeconds),r.timeEntry.source??"-"])});}catch(t){s(t);}}),n.command("create").description("Create a time entry").requiredOption("--start-time <iso>","Start time (ISO)").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",d).option("--end-time <iso>","End time (ISO)").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("--source <s>","Source","manual").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={startTime:e.startTime,billable:!!e.billable,source:e.source??"manual"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.duration!==void 0&&(t.duration=e.duration),e.endTime&&(t.endTime=e.endTime),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=T("tags",e.tags));let r=await i(W,{input:t});p("Time entry created"),a(e,r.createTimeEntry);}catch(t){s(t);}}),n.command("update").description("Update a time entry").argument("<id>","Time entry ID").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",d).option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--billable <bool>","Billable (true/false)").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.description!==void 0&&(r.description=t.description),t.project&&(r.projectId=t.project),t.task&&(r.taskId=t.task),t.duration!==void 0&&(r.duration=t.duration),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.billable!==void 0&&(r.billable=t.billable==="true"),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.notes&&(r.notes=t.notes),!Object.keys(r).length)throw new u("No updates specified");let o=await i(J,{id:e,input:r});p("Time entry updated"),a(t,o.updateTimeEntry);}catch(r){s(r);}}),n.command("delete").description("Delete a time entry").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(V,{id:e});p("Time entry deleted"),a(t,r.deleteTimeEntry);}catch(r){s(r);}}),n.command("start").description("Start a timer").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("--source <s>","Source","timer").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={billable:!!e.billable,source:e.source??"timer"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=T("tags",e.tags));let r=await i(B,{input:t});p("Timer started"),a(e,r.startTimer);}catch(t){s(t);}}),n.command("stop").description("Stop a running timer").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(K,{id:e});p("Timer stopped"),a(t,r.stopTimer);}catch(r){s(r);}});}function qt(c){let n=c.command("meetings").description("TimeCampus meetings");n.command("list").description("List meetings").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","Filter by meeting type").option("--min-rating <n>","Minimum rating",d).option("--participant <id>","Filter by participant user ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.meetingType=e.type.toUpperCase()),e.minRating!==void 0&&(t.minRating=e.minRating),e.participant&&(t.participantUserId=e.participant);let r=await i(z,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.meetings,{headers:["ID","Title","Type","Start","Duration","Rating"],rows:r.meetings.map(o=>[g(o.id,12),o.title,o.meetingType,y(o.startTime),o.duration!=null?String(o.duration):"-",o.rating!=null?String(o.rating):"-"])});}catch(t){s(t);}}),n.command("get").description("Get a meeting by id").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Y,{id:e,workspaceId:l(t.workspace)});if(!r.meeting)throw new u(`Meeting ${e} not found`);a(t,r.meeting);}catch(r){s(r);}}),n.command("stats").description("Meeting statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Q,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.meetingStats);}catch(t){s(t);}}),n.command("create").description("Create a meeting").requiredOption("--title <title>","Meeting title").requiredOption("--type <t>","Meeting type (STANDUP|TEAM|ONE_ON_ONE|...)").requiredOption("--start-time <iso>","Start time (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",m).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("--calendar-event-id <id>","Calendar event ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),title:e.title,meetingType:e.type.toUpperCase(),startTime:e.startTime};e.endTime&&(t.endTime=e.endTime),e.cost!==void 0&&(t.cost=e.cost),e.notes&&(t.notes=e.notes),e.recordingUrl&&(t.recordingUrl=e.recordingUrl),e.calendarEventId&&(t.calendarEventId=e.calendarEventId),e.context&&(t.context=T("context",e.context));let r=await i(X,{input:t});p(`Meeting created: ${r.createMeeting.title}`),a(e,r.createMeeting);}catch(t){s(t);}}),n.command("update").description("Update a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--title <title>","Meeting title").option("--type <t>","Meeting type").option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",m).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.type&&(r.meetingType=t.type.toUpperCase()),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.cost!==void 0&&(r.cost=t.cost),t.notes&&(r.notes=t.notes),t.recordingUrl&&(r.recordingUrl=t.recordingUrl),!Object.keys(r).length)throw new u("No updates specified");let o=await i(Z,{id:e,input:r,workspaceId:l(t.workspace)});p("Meeting updated"),a(t,o.updateMeeting);}catch(r){s(r);}}),n.command("rate").description("Rate a meeting").argument("<id>","Meeting ID").requiredOption("--rating <n>","Rating (1-5)",d).option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(tt,{id:e,rating:t.rating,workspaceId:l(t.workspace)});p(`Meeting rated ${r.rateMeeting.rating??t.rating}`),a(t,r.rateMeeting);}catch(r){s(r);}}),n.command("delete").description("Delete a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(et,{id:e,workspaceId:l(t.workspace)});p("Meeting deleted"),a(t,{deleted:r.deleteMeeting});}catch(r){s(r);}});}function Nt(c){let n=c.command("expenses").description("TimeCampus expenses");n.command("list").description("List expenses").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--status <s>","Filter by status").option("--category <c>","Filter by category").option("--project <id>","Filter by project ID").option("--min-amount <n>","Minimum amount",m).option("--max-amount <n>","Maximum amount",m).option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.category&&(t.category=e.category),e.project&&(t.projectId=e.project),e.minAmount!==void 0&&(t.minAmount=e.minAmount),e.maxAmount!==void 0&&(t.maxAmount=e.maxAmount);let r=await i(nt,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.expenses,{headers:["ID","Category","Amount","Status","Date"],rows:r.expenses.map(o=>[g(o.id,12),o.category,`${o.amount} ${o.currency??""}`.trim(),o.status,y(o.date)])});}catch(t){s(t);}}),n.command("get").description("Get an expense by id").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(rt,{id:e,workspaceId:l(t.workspace)});if(!r.expense)throw new u(`Expense ${e} not found`);a(t,r.expense);}catch(r){s(r);}}),n.command("stats").description("Expense statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(ot,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.expenseStats);}catch(t){s(t);}}),n.command("create").description("Create an expense").requiredOption("--amount <n>","Amount",m).requiredOption("--category <c>","Category").requiredOption("--date <iso>","Date (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--currency <c>","Currency").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),amount:e.amount,category:e.category,date:e.date};e.currency&&(t.currency=e.currency),e.description&&(t.description=e.description),e.notes&&(t.notes=e.notes),e.project&&(t.projectId=e.project),e.receiptUrl&&(t.receiptUrl=e.receiptUrl),e.context&&(t.context=T("context",e.context));let r=await i(it,{input:t});p("Expense created"),a(e,r.createExpense);}catch(t){s(t);}}),n.command("update").description("Update an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--amount <n>","Amount",m).option("--category <c>","Category").option("--currency <c>","Currency").option("--date <iso>","Date (ISO)").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.amount!==void 0&&(r.amount=t.amount),t.category&&(r.category=t.category),t.currency&&(r.currency=t.currency),t.date&&(r.date=t.date),t.description!==void 0&&(r.description=t.description),t.notes&&(r.notes=t.notes),t.project&&(r.projectId=t.project),t.receiptUrl&&(r.receiptUrl=t.receiptUrl),!Object.keys(r).length)throw new u("No updates specified");let o=await i(st,{id:e,input:r,workspaceId:l(t.workspace)});p("Expense updated"),a(t,o.updateExpense);}catch(r){s(r);}}),n.command("approve").description("Approve an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(at,{id:e,workspaceId:l(t.workspace)});p(`Expense ${r.approveExpense.status}`),a(t,r.approveExpense);}catch(r){s(r);}}),n.command("reject").description("Reject an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ct,{id:e,reason:t.reason,workspaceId:l(t.workspace)});p(`Expense ${r.rejectExpense.status}`),a(t,r.rejectExpense);}catch(r){s(r);}}),n.command("delete").description("Delete an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(pt,{id:e,workspaceId:l(t.workspace)});p("Expense deleted"),a(t,{deleted:r.deleteExpense});}catch(r){s(r);}});}function Ut(c){let n=c.command("pomodoro").description("TimeCampus pomodoro sessions");n.command("list").description("List pomodoro sessions").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--completed","Only completed sessions").option("--interrupted","Only interrupted sessions").option("--project <id>","Filter by project ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.type=e.type.toUpperCase()),e.completed&&(t.completed=!0),e.interrupted&&(t.interrupted=!0),e.project&&(t.projectId=e.project);let r=await i(dt,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.pomodoroSessions,{headers:["ID","Type","Completed","Interrupted","Duration","Start"],rows:r.pomodoroSessions.map(o=>[g(o.id,12),o.type,o.completed?"yes":"no",o.interrupted?"yes":"no",o.duration!=null?String(o.duration):"-",y(o.startTime)])});}catch(t){s(t);}}),n.command("get").description("Get a pomodoro session by id").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ut,{id:e,workspaceId:l(t.workspace)});if(!r.pomodoroSession)throw new u(`Pomodoro session ${e} not found`);a(t,r.pomodoroSession);}catch(r){s(r);}}),n.command("active").description("Get the active pomodoro session").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(mt,{workspaceId:l(e.workspace)});a(e,t.activePomodoroSession??{active:!1});}catch(t){s(t);}}),n.command("stats").description("Pomodoro statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(lt,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.pomodoroStats);}catch(t){s(t);}}),n.command("start").description("Start a pomodoro session").requiredOption("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--notes <s>","Notes").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),type:e.type.toUpperCase()};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.notes&&(t.notes=e.notes),e.context&&(t.context=T("context",e.context));let r=await i(ft,{input:t});p("Pomodoro session started"),a(e,r.startPomodoroSession);}catch(t){s(t);}}),n.command("complete").description("Complete a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(gt,{id:e,workspaceId:l(t.workspace)});p("Pomodoro session completed"),a(t,r.completePomodoroSession);}catch(r){s(r);}}),n.command("interrupt").description("Interrupt a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Interruption reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Tt,{id:e,reason:t.reason,workspaceId:l(t.workspace)});p("Pomodoro session interrupted"),a(t,r.interruptPomodoroSession);}catch(r){s(r);}});}function Mt(c){let n=c.command("resource-plans").description("TimeCampus resource plans");n.command("list").description("List resource plans").option("--status <s>","Filter by status").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.query&&(t.search=e.query);let r=await i(wt,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.resourcePlans.items,{headers:["ID","Name","Status","Start","End","Allocated"],rows:r.resourcePlans.items.map(o=>[g(o.id,12),o.name,o.status,y(o.startDate),y(o.endDate),String(o.totalAllocatedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a resource plan by id").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(yt,{id:e});if(!r.resourcePlan)throw new u(`Resource plan ${e} not found`);a(t,r.resourcePlan);}catch(r){s(r);}}),n.command("create").description("Create a resource plan").requiredOption("--name <name>","Plan name").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--description <s>","Description").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,startDate:e.startDate,endDate:e.endDate};e.description&&(t.description=e.description),e.context&&(t.context=T("context",e.context));let r=await i(It,{input:t});p(`Resource plan created: ${r.createResourcePlan.name}`),a(e,r.createResourcePlan);}catch(t){s(t);}}),n.command("update").description("Update a resource plan").argument("<id>","Resource plan ID").option("--name <name>","Plan name").option("--description <s>","Description").option("--status <s>","Status").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),!Object.keys(r).length)throw new u("No updates specified");let o=await i(kt,{id:e,input:r});p("Resource plan updated"),a(t,o.updateResourcePlan);}catch(r){s(r);}}),n.command("activate").description("Activate a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Et,{id:e});p("Resource plan activated"),a(t,r.activateResourcePlan);}catch(r){s(r);}}),n.command("delete").description("Delete a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Ct,{id:e});p("Resource plan deleted"),a(t,r.deleteResourcePlan);}catch(r){s(r);}});}function Lt(c){let n=c.command("approvals").description("TimeCampus time approval requests");n.command("list").description("List approval requests").option("--status <s>","Filter by status").option("--user <id>","Filter by user ID").option("--approver <id>","Filter by approver ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.user&&(t.userId=e.user),e.approver&&(t.approverId=e.approver);let r=await i(St,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.approvalRequests.items,{headers:["ID","Period","Status","Total Hrs","Billable","Submitted"],rows:r.approvalRequests.items.map(o=>[g(o.id,12),o.period,o.status,String(o.totalHours??0),String(o.billableHours??0),y(o.submittedAt)])});}catch(t){s(t);}}),n.command("get").description("Get an approval request by id").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Dt,{id:e});if(!r.approvalRequest)throw new u(`Approval request ${e} not found`);a(t,r.approvalRequest);}catch(r){s(r);}}),n.command("stats").description("Approval statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Rt,{startDate:e.startDate,endDate:e.endDate});a(e,t.approvalStats);}catch(t){s(t);}}),n.command("submit").description("Submit a time approval request").requiredOption("--period <p>","Period label").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").requiredOption("--total-hours <n>","Total hours",m).option("--billable-hours <n>","Billable hours",m).option("--approver <id>","Approver ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={period:e.period,startDate:e.startDate,endDate:e.endDate,totalHours:e.totalHours};e.billableHours!==void 0&&(t.billableHours=e.billableHours),e.approver&&(t.approverId=e.approver),e.context&&(t.context=T("context",e.context));let r=await i(xt,{input:t});p("Approval request submitted"),a(e,r.submitApprovalRequest);}catch(t){s(t);}}),n.command("approve").description("Approve a request").argument("<id>","Approval request ID").option("--notes <s>","Reviewer notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ht,{id:e,notes:t.notes});p("Request approved"),a(t,r.approveRequest);}catch(r){s(r);}}),n.command("reject").description("Reject a request").argument("<id>","Approval request ID").requiredOption("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(bt,{id:e,reason:t.reason});p("Request rejected"),a(t,r.rejectRequest);}catch(r){s(r);}}),n.command("withdraw").description("Withdraw a request").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Ot,{id:e});p("Request withdrawn"),a(t,r.withdrawRequest);}catch(r){s(r);}});}function Ht(c){let n=c.command("analytics").description("TimeCampus analytics & productivity summaries");n.command("focus").description("Focus score summary (averages, trend, improvement area)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(At,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.focusScoreSummary);}catch(t){s(t);}}),n.command("work-patterns").description("Work pattern summary (focus/meeting hours, productivity, insights)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Pt,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.workPatternSummary);}catch(t){s(t);}}),n.command("app-usage").description("Application usage summary (productive/neutral/distracting, top apps)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i($t,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.appUsageSummary);}catch(t){s(t);}});}var te={id:"timecampus",version:"1.0.0",displayName:"TimeCampus",dependsOn:["auth","workspaces"],register(c,n){x(n);let e=c.command("timecampus").description("TimeCampus time-tracking & productivity");vt(e),jt(e),_t(e),qt(e),Nt(e),Ut(e),Mt(e),Lt(e),Ht(e);}},Vr=te;module.exports=Vr;
|
|
444
|
+
`;function T(c,n){try{return JSON.parse(n)}catch{throw new u(`--${c} must be valid JSON`)}}function d(c){let n=Number.parseInt(c,10);if(Number.isNaN(n))throw new u(`Expected an integer but got "${c}"`);return n}function m(c){let n=Number.parseFloat(c);if(Number.isNaN(n))throw new u(`Expected a number but got "${c}"`);return n}function l(c){if(c)return c;let n=D().auth.read();if(!n?.workspaceId)throw new u("No workspace set. Pass --workspace <id> or run `timecampus auth login`.");return n.workspaceId}function $t(c){let n=c.command("projects").description("TimeCampus projects");n.command("list").description("List projects").option("--status <s>","Filter by status").option("--client <id>","Filter by client ID").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.client&&(t.clientId=e.client),e.query&&(t.search=e.query);let r=await i(b,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.timeCampusProjects.items,{headers:["ID","Name","Status","Currency","Budget","Hours"],rows:r.timeCampusProjects.items.map(o=>[g(o.id,12),o.name,o.status,o.currency??"-",o.budget!=null?String(o.budget):"-",String(o.trackedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a project by id").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(h,{id:e});if(!r.timeCampusProject)throw new u(`Project ${e} not found`);a(t,r.timeCampusProject);}catch(r){s(r);}}),n.command("stats").description("Get project statistics").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(O,{id:e});a(t,r.timeCampusProjectStats);}catch(r){s(r);}}),n.command("create").description("Create a project").requiredOption("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status","ACTIVE").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency","USD").option("--budget <n>","Budget",m).option("--hourly-rate <n>","Hourly rate",m).option("--estimated-hours <n>","Estimated hours",m).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,status:(e.status??"ACTIVE").toUpperCase(),currency:e.currency??"USD"};e.description&&(t.description=e.description),e.client&&(t.clientId=e.client),e.color&&(t.color=e.color),e.budget!==void 0&&(t.budget=e.budget),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.context&&(t.context=T("context",e.context));let r=await i(A,{input:t});p(`Project created: ${r.createTimeCampusProject.name}`),a(e,r.createTimeCampusProject);}catch(t){s(t);}}),n.command("update").description("Update a project").argument("<id>","Project ID").option("--name <name>","Project name").option("--description <s>","Description").option("--status <s>","Status").option("--client <id>","Client ID").option("--color <c>","Display color").option("--currency <c>","Currency").option("--budget <n>","Budget",m).option("--hourly-rate <n>","Hourly rate",m).option("--estimated-hours <n>","Estimated hours",m).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.client&&(r.clientId=t.client),t.color&&(r.color=t.color),t.currency&&(r.currency=t.currency),t.budget!==void 0&&(r.budget=t.budget),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),!Object.keys(r).length)throw new u("No updates specified");let o=await i(P,{id:e,input:r});p("Project updated"),a(t,o.updateTimeCampusProject);}catch(r){s(r);}}),n.command("archive").description("Archive a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(v,{id:e});p("Project archived"),a(t,r.archiveTimeCampusProject);}catch(r){s(r);}}),n.command("delete").description("Delete a project").argument("<id>","Project ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i($,{id:e});p("Project deleted"),a(t,r.deleteTimeCampusProject);}catch(r){s(r);}});}function _t(c){let n=c.command("tasks").description("TimeCampus tasks");n.command("list").description("List tasks for a project").requiredOption("--project <id>","Project ID").option("--status <s>","Filter by status").option("--priority <p>","Filter by priority").option("--assignee <id>","Filter by assignee ID").option("--query <q>","Free-text search").option("--overdue","Only overdue tasks").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.priority&&(t.priority=e.priority.toUpperCase()),e.assignee&&(t.assigneeId=e.assignee),e.query&&(t.search=e.query),e.overdue&&(t.overdue=!0);let r=await i(j,{projectId:e.project,filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.tasks.items,{headers:["ID","Title","Status","Priority","Due","Hours"],rows:r.tasks.items.map(o=>[g(o.id,12),o.title,o.status,o.priority,y(o.dueDate),String(o.trackedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a task by id").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(_,{id:e});if(!r.task)throw new u(`Task ${e} not found`);a(t,r.task);}catch(r){s(r);}}),n.command("create").description("Create a task").requiredOption("--project <id>","Project ID").requiredOption("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status","TODO").option("--priority <p>","Priority","MEDIUM").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",m).option("--order <n>","Display order",d).option("--context <json>","Operation context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={projectId:e.project,title:e.title,status:(e.status??"TODO").toUpperCase(),priority:(e.priority??"MEDIUM").toUpperCase()};e.description&&(t.description=e.description),e.assignee&&(t.assigneeId=e.assignee),e.dueDate&&(t.dueDate=e.dueDate),e.estimatedHours!==void 0&&(t.estimatedHours=e.estimatedHours),e.order!==void 0&&(t.order=e.order),e.context&&(t.context=T("context",e.context));let r=await i(q,{input:t});p(`Task created: ${r.createTask.title}`),a(e,r.createTask);}catch(t){s(t);}}),n.command("update").description("Update a task").argument("<id>","Task ID").option("--title <title>","Task title").option("--description <s>","Description").option("--status <s>","Status").option("--priority <p>","Priority").option("--assignee <id>","Assignee ID").option("--due-date <iso>","Due date (ISO)").option("--estimated-hours <n>","Estimated hours",m).option("--order <n>","Display order",d).option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.priority&&(r.priority=t.priority.toUpperCase()),t.assignee&&(r.assigneeId=t.assignee),t.dueDate&&(r.dueDate=t.dueDate),t.estimatedHours!==void 0&&(r.estimatedHours=t.estimatedHours),t.order!==void 0&&(r.order=t.order),!Object.keys(r).length)throw new u("No updates specified");let o=await i(N,{id:e,input:r});p("Task updated"),a(t,o.updateTask);}catch(r){s(r);}}),n.command("set-status").description("Update a task status").argument("<id>","Task ID").requiredOption("--status <s>","TODO|IN_PROGRESS|IN_REVIEW|DONE|CANCELLED").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(U,{id:e,status:t.status.toUpperCase()});p(`Task status set to ${r.updateTaskStatus.status}`),a(t,r.updateTaskStatus);}catch(r){s(r);}}),n.command("delete").description("Delete a task").argument("<id>","Task ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(M,{id:e});p("Task deleted"),a(t,r.deleteTask);}catch(r){s(r);}});}function jt(c){let n=c.command("time-entries").description("TimeCampus time entries & timers");n.command("list").description("List time entries").option("--project <id>","Filter by project ID").option("--task <id>","Filter by task ID").option("--billable","Only billable entries").option("--running","Only running entries").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.billable&&(t.billable=!0),e.running&&(t.isRunning=!0),e.query&&(t.search=e.query);let r=await i(H,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.timeEntries.items,{headers:["ID","Description","Billable","Duration","Running","Start"],rows:r.timeEntries.items.map(o=>[g(o.id,12),g(o.description??"-",30),o.billable?"yes":"no",o.duration!=null?String(o.duration):"-",o.isRunning?"yes":"no",y(o.startTime)])});}catch(t){s(t);}}),n.command("get").description("Get a time entry by id").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(L,{id:e});if(!r.timeEntry)throw new u(`Time entry ${e} not found`);a(t,r.timeEntry);}catch(r){s(r);}}),n.command("stats").description("Time entry statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(G,{startDate:e.startDate,endDate:e.endDate});a(e,t.timeEntryStats);}catch(t){s(t);}}),n.command("running").description("List running timers").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(F);a(e,t.runningTimers,{headers:["ID","Description","Elapsed (s)","Source"],rows:t.runningTimers.map(r=>[g(r.timeEntry.id,12),g(r.timeEntry.description??"-",30),String(r.elapsedSeconds),r.timeEntry.source??"-"])});}catch(t){s(t);}}),n.command("create").description("Create a time entry").requiredOption("--start-time <iso>","Start time (ISO)").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",d).option("--end-time <iso>","End time (ISO)").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("--source <s>","Source","manual").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={startTime:e.startTime,billable:!!e.billable,source:e.source??"manual"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.duration!==void 0&&(t.duration=e.duration),e.endTime&&(t.endTime=e.endTime),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=T("tags",e.tags));let r=await i(W,{input:t});p("Time entry created"),a(e,r.createTimeEntry);}catch(t){s(t);}}),n.command("update").description("Update a time entry").argument("<id>","Time entry ID").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--duration <n>","Duration (seconds)",d).option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--billable <bool>","Billable (true/false)").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.description!==void 0&&(r.description=t.description),t.project&&(r.projectId=t.project),t.task&&(r.taskId=t.task),t.duration!==void 0&&(r.duration=t.duration),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.billable!==void 0&&(r.billable=t.billable==="true"),t.hourlyRate!==void 0&&(r.hourlyRate=t.hourlyRate),t.notes&&(r.notes=t.notes),!Object.keys(r).length)throw new u("No updates specified");let o=await i(J,{id:e,input:r});p("Time entry updated"),a(t,o.updateTimeEntry);}catch(r){s(r);}}),n.command("delete").description("Delete a time entry").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(V,{id:e});p("Time entry deleted"),a(t,r.deleteTimeEntry);}catch(r){s(r);}}),n.command("start").description("Start a timer").option("--description <s>","Description").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--billable","Mark as billable").option("--hourly-rate <n>","Hourly rate",m).option("--notes <s>","Notes").option("--source <s>","Source","timer").option("--tags <json>","Tags JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={billable:!!e.billable,source:e.source??"timer"};e.description&&(t.description=e.description),e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.hourlyRate!==void 0&&(t.hourlyRate=e.hourlyRate),e.notes&&(t.notes=e.notes),e.tags&&(t.tags=T("tags",e.tags));let r=await i(B,{input:t});p("Timer started"),a(e,r.startTimer);}catch(t){s(t);}}),n.command("stop").description("Stop a running timer").argument("<id>","Time entry ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(K,{id:e});p("Timer stopped"),a(t,r.stopTimer);}catch(r){s(r);}});}function qt(c){let n=c.command("meetings").description("TimeCampus meetings");n.command("list").description("List meetings").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","Filter by meeting type").option("--min-rating <n>","Minimum rating",d).option("--participant <id>","Filter by participant user ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.meetingType=e.type.toUpperCase()),e.minRating!==void 0&&(t.minRating=e.minRating),e.participant&&(t.participantUserId=e.participant);let r=await i(z,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.meetings,{headers:["ID","Title","Type","Start","Duration","Rating"],rows:r.meetings.map(o=>[g(o.id,12),o.title,o.meetingType,y(o.startTime),o.duration!=null?String(o.duration):"-",o.rating!=null?String(o.rating):"-"])});}catch(t){s(t);}}),n.command("get").description("Get a meeting by id").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Y,{id:e,workspaceId:l(t.workspace)});if(!r.meeting)throw new u(`Meeting ${e} not found`);a(t,r.meeting);}catch(r){s(r);}}),n.command("stats").description("Meeting statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Q,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.meetingStats);}catch(t){s(t);}}),n.command("create").description("Create a meeting").requiredOption("--title <title>","Meeting title").requiredOption("--type <t>","Meeting type (STANDUP|TEAM|ONE_ON_ONE|...)").requiredOption("--start-time <iso>","Start time (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",m).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("--calendar-event-id <id>","Calendar event ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),title:e.title,meetingType:e.type.toUpperCase(),startTime:e.startTime};e.endTime&&(t.endTime=e.endTime),e.cost!==void 0&&(t.cost=e.cost),e.notes&&(t.notes=e.notes),e.recordingUrl&&(t.recordingUrl=e.recordingUrl),e.calendarEventId&&(t.calendarEventId=e.calendarEventId),e.context&&(t.context=T("context",e.context));let r=await i(X,{input:t});p(`Meeting created: ${r.createMeeting.title}`),a(e,r.createMeeting);}catch(t){s(t);}}),n.command("update").description("Update a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--title <title>","Meeting title").option("--type <t>","Meeting type").option("--start-time <iso>","Start time (ISO)").option("--end-time <iso>","End time (ISO)").option("--cost <n>","Cost",m).option("--notes <s>","Notes").option("--recording-url <url>","Recording URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.title&&(r.title=t.title),t.type&&(r.meetingType=t.type.toUpperCase()),t.startTime&&(r.startTime=t.startTime),t.endTime&&(r.endTime=t.endTime),t.cost!==void 0&&(r.cost=t.cost),t.notes&&(r.notes=t.notes),t.recordingUrl&&(r.recordingUrl=t.recordingUrl),!Object.keys(r).length)throw new u("No updates specified");let o=await i(Z,{id:e,input:r,workspaceId:l(t.workspace)});p("Meeting updated"),a(t,o.updateMeeting);}catch(r){s(r);}}),n.command("rate").description("Rate a meeting").argument("<id>","Meeting ID").requiredOption("--rating <n>","Rating (1-5)",d).option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(tt,{id:e,rating:t.rating,workspaceId:l(t.workspace)});p(`Meeting rated ${r.rateMeeting.rating??t.rating}`),a(t,r.rateMeeting);}catch(r){s(r);}}),n.command("delete").description("Delete a meeting").argument("<id>","Meeting ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(et,{id:e,workspaceId:l(t.workspace)});p("Meeting deleted"),a(t,{deleted:r.deleteMeeting});}catch(r){s(r);}});}function Nt(c){let n=c.command("expenses").description("TimeCampus expenses");n.command("list").description("List expenses").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--status <s>","Filter by status").option("--category <c>","Filter by category").option("--project <id>","Filter by project ID").option("--min-amount <n>","Minimum amount",m).option("--max-amount <n>","Maximum amount",m).option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.category&&(t.category=e.category),e.project&&(t.projectId=e.project),e.minAmount!==void 0&&(t.minAmount=e.minAmount),e.maxAmount!==void 0&&(t.maxAmount=e.maxAmount);let r=await i(nt,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.expenses,{headers:["ID","Category","Amount","Status","Date"],rows:r.expenses.map(o=>[g(o.id,12),o.category,`${o.amount} ${o.currency??""}`.trim(),o.status,y(o.date)])});}catch(t){s(t);}}),n.command("get").description("Get an expense by id").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(rt,{id:e,workspaceId:l(t.workspace)});if(!r.expense)throw new u(`Expense ${e} not found`);a(t,r.expense);}catch(r){s(r);}}),n.command("stats").description("Expense statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(ot,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.expenseStats);}catch(t){s(t);}}),n.command("create").description("Create an expense").requiredOption("--amount <n>","Amount",m).requiredOption("--category <c>","Category").requiredOption("--date <iso>","Date (ISO)").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--currency <c>","Currency").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),amount:e.amount,category:e.category,date:e.date};e.currency&&(t.currency=e.currency),e.description&&(t.description=e.description),e.notes&&(t.notes=e.notes),e.project&&(t.projectId=e.project),e.receiptUrl&&(t.receiptUrl=e.receiptUrl),e.context&&(t.context=T("context",e.context));let r=await i(it,{input:t});p("Expense created"),a(e,r.createExpense);}catch(t){s(t);}}),n.command("update").description("Update an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--amount <n>","Amount",m).option("--category <c>","Category").option("--currency <c>","Currency").option("--date <iso>","Date (ISO)").option("--description <s>","Description").option("--notes <s>","Notes").option("--project <id>","Project ID").option("--receipt-url <url>","Receipt URL").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.amount!==void 0&&(r.amount=t.amount),t.category&&(r.category=t.category),t.currency&&(r.currency=t.currency),t.date&&(r.date=t.date),t.description!==void 0&&(r.description=t.description),t.notes&&(r.notes=t.notes),t.project&&(r.projectId=t.project),t.receiptUrl&&(r.receiptUrl=t.receiptUrl),!Object.keys(r).length)throw new u("No updates specified");let o=await i(st,{id:e,input:r,workspaceId:l(t.workspace)});p("Expense updated"),a(t,o.updateExpense);}catch(r){s(r);}}),n.command("approve").description("Approve an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(at,{id:e,workspaceId:l(t.workspace)});p(`Expense ${r.approveExpense.status}`),a(t,r.approveExpense);}catch(r){s(r);}}),n.command("reject").description("Reject an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ct,{id:e,reason:t.reason,workspaceId:l(t.workspace)});p(`Expense ${r.rejectExpense.status}`),a(t,r.rejectExpense);}catch(r){s(r);}}),n.command("delete").description("Delete an expense").argument("<id>","Expense ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(pt,{id:e,workspaceId:l(t.workspace)});p("Expense deleted"),a(t,{deleted:r.deleteExpense});}catch(r){s(r);}});}function Ut(c){let n=c.command("pomodoro").description("TimeCampus pomodoro sessions");n.command("list").description("List pomodoro sessions").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--completed","Only completed sessions").option("--interrupted","Only interrupted sessions").option("--project <id>","Filter by project ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.type&&(t.type=e.type.toUpperCase()),e.completed&&(t.completed=!0),e.interrupted&&(t.interrupted=!0),e.project&&(t.projectId=e.project);let r=await i(dt,{workspaceId:l(e.workspace),filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.pomodoroSessions,{headers:["ID","Type","Completed","Interrupted","Duration","Start"],rows:r.pomodoroSessions.map(o=>[g(o.id,12),o.type,o.completed?"yes":"no",o.interrupted?"yes":"no",o.duration!=null?String(o.duration):"-",y(o.startTime)])});}catch(t){s(t);}}),n.command("get").description("Get a pomodoro session by id").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ut,{id:e,workspaceId:l(t.workspace)});if(!r.pomodoroSession)throw new u(`Pomodoro session ${e} not found`);a(t,r.pomodoroSession);}catch(r){s(r);}}),n.command("active").description("Get the active pomodoro session").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(mt,{workspaceId:l(e.workspace)});a(e,t.activePomodoroSession??{active:!1});}catch(t){s(t);}}),n.command("stats").description("Pomodoro statistics").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(lt,{workspaceId:l(e.workspace),startDate:e.startDate,endDate:e.endDate});a(e,t.pomodoroStats);}catch(t){s(t);}}),n.command("start").description("Start a pomodoro session").requiredOption("--type <t>","FOCUS|SHORT_BREAK|LONG_BREAK").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--project <id>","Project ID").option("--task <id>","Task ID").option("--notes <s>","Notes").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={workspaceId:l(e.workspace),type:e.type.toUpperCase()};e.project&&(t.projectId=e.project),e.task&&(t.taskId=e.task),e.notes&&(t.notes=e.notes),e.context&&(t.context=T("context",e.context));let r=await i(ft,{input:t});p("Pomodoro session started"),a(e,r.startPomodoroSession);}catch(t){s(t);}}),n.command("complete").description("Complete a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(gt,{id:e,workspaceId:l(t.workspace)});p("Pomodoro session completed"),a(t,r.completePomodoroSession);}catch(r){s(r);}}),n.command("interrupt").description("Interrupt a pomodoro session").argument("<id>","Session ID").option("--workspace <id>","Workspace ID (defaults to active workspace)").option("--reason <s>","Interruption reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Tt,{id:e,reason:t.reason,workspaceId:l(t.workspace)});p("Pomodoro session interrupted"),a(t,r.interruptPomodoroSession);}catch(r){s(r);}});}function Mt(c){let n=c.command("resource-plans").description("TimeCampus resource plans");n.command("list").description("List resource plans").option("--status <s>","Filter by status").option("--query <q>","Free-text search").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.query&&(t.search=e.query);let r=await i(wt,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.resourcePlans.items,{headers:["ID","Name","Status","Start","End","Allocated"],rows:r.resourcePlans.items.map(o=>[g(o.id,12),o.name,o.status,y(o.startDate),y(o.endDate),String(o.totalAllocatedHours??0)])});}catch(t){s(t);}}),n.command("get").description("Get a resource plan by id").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(yt,{id:e});if(!r.resourcePlan)throw new u(`Resource plan ${e} not found`);a(t,r.resourcePlan);}catch(r){s(r);}}),n.command("create").description("Create a resource plan").requiredOption("--name <name>","Plan name").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").option("--description <s>","Description").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={name:e.name,startDate:e.startDate,endDate:e.endDate};e.description&&(t.description=e.description),e.context&&(t.context=T("context",e.context));let r=await i(It,{input:t});p(`Resource plan created: ${r.createResourcePlan.name}`),a(e,r.createResourcePlan);}catch(t){s(t);}}),n.command("update").description("Update a resource plan").argument("<id>","Resource plan ID").option("--name <name>","Plan name").option("--description <s>","Description").option("--status <s>","Status").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r={};if(t.name&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.status&&(r.status=t.status.toUpperCase()),t.startDate&&(r.startDate=t.startDate),t.endDate&&(r.endDate=t.endDate),!Object.keys(r).length)throw new u("No updates specified");let o=await i(kt,{id:e,input:r});p("Resource plan updated"),a(t,o.updateResourcePlan);}catch(r){s(r);}}),n.command("activate").description("Activate a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Et,{id:e});p("Resource plan activated"),a(t,r.activateResourcePlan);}catch(r){s(r);}}),n.command("delete").description("Delete a resource plan").argument("<id>","Resource plan ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Ct,{id:e});p("Resource plan deleted"),a(t,r.deleteResourcePlan);}catch(r){s(r);}});}function Lt(c){let n=c.command("approvals").description("TimeCampus time approval requests");n.command("list").description("List approval requests").option("--status <s>","Filter by status").option("--user <id>","Filter by user ID").option("--approver <id>","Filter by approver ID").option("--limit <n>","Page size",d,50).option("--offset <n>","Offset",d,0).option("-f, --format <format>","Output format").action(async e=>{try{let t={};e.status&&(t.status=e.status.toUpperCase()),e.user&&(t.userId=e.user),e.approver&&(t.approverId=e.approver);let r=await i(St,{filter:Object.keys(t).length?t:void 0,limit:e.limit,offset:e.offset});a(e,r.approvalRequests.items,{headers:["ID","Period","Status","Total Hrs","Billable","Submitted"],rows:r.approvalRequests.items.map(o=>[g(o.id,12),o.period,o.status,String(o.totalHours??0),String(o.billableHours??0),y(o.submittedAt)])});}catch(t){s(t);}}),n.command("get").description("Get an approval request by id").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Dt,{id:e});if(!r.approvalRequest)throw new u(`Approval request ${e} not found`);a(t,r.approvalRequest);}catch(r){s(r);}}),n.command("stats").description("Approval statistics").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Rt,{startDate:e.startDate,endDate:e.endDate});a(e,t.approvalStats);}catch(t){s(t);}}),n.command("submit").description("Submit a time approval request").requiredOption("--period <p>","Period label").requiredOption("--start-date <iso>","Start date (ISO)").requiredOption("--end-date <iso>","End date (ISO)").requiredOption("--total-hours <n>","Total hours",m).option("--billable-hours <n>","Billable hours",m).option("--approver <id>","Approver ID").option("--context <json>","Context JSON").option("-f, --format <format>","Output format").action(async e=>{try{let t={period:e.period,startDate:e.startDate,endDate:e.endDate,totalHours:e.totalHours};e.billableHours!==void 0&&(t.billableHours=e.billableHours),e.approver&&(t.approverId=e.approver),e.context&&(t.context=T("context",e.context));let r=await i(xt,{input:t});p("Approval request submitted"),a(e,r.submitApprovalRequest);}catch(t){s(t);}}),n.command("approve").description("Approve a request").argument("<id>","Approval request ID").option("--notes <s>","Reviewer notes").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(ht,{id:e,notes:t.notes});p("Request approved"),a(t,r.approveRequest);}catch(r){s(r);}}),n.command("reject").description("Reject a request").argument("<id>","Approval request ID").requiredOption("--reason <s>","Rejection reason").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(bt,{id:e,reason:t.reason});p("Request rejected"),a(t,r.rejectRequest);}catch(r){s(r);}}),n.command("withdraw").description("Withdraw a request").argument("<id>","Approval request ID").option("-f, --format <format>","Output format").action(async(e,t)=>{try{let r=await i(Ot,{id:e});p("Request withdrawn"),a(t,r.withdrawRequest);}catch(r){s(r);}});}function Ht(c){let n=c.command("analytics").description("TimeCampus analytics & productivity summaries");n.command("focus").description("Focus score summary (averages, trend, improvement area)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(At,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.focusScoreSummary);}catch(t){s(t);}}),n.command("work-patterns").description("Work pattern summary (focus/meeting hours, productivity, insights)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(Pt,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.workPatternSummary);}catch(t){s(t);}}),n.command("app-usage").description("Application usage summary (productive/neutral/distracting, top apps)").option("--start-date <iso>","Start date (ISO)").option("--end-date <iso>","End date (ISO)").option("--user <id>","User ID").option("-f, --format <format>","Output format").action(async e=>{try{let t=await i(vt,{startDate:e.startDate,endDate:e.endDate,userId:e.user});a(e,t.appUsageSummary);}catch(t){s(t);}});}var te={id:"timecampus",version:"1.0.0",displayName:"TimeCampus",dependsOn:["auth","workspaces"],register(c,n){x(n);let e=c.command("timecampus").description("TimeCampus time-tracking & productivity");$t(e),_t(e),jt(e),qt(e),Nt(e),Ut(e),Mt(e),Lt(e),Ht(e);}},Vr=te;module.exports=Vr;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,b as b$1,h as h$1,p,g as g$1,i,o as o$1,s}from'../../chunk-
|
|
1
|
+
import {a,b as b$1,h as h$1,p,g as g$1,i,o as o$1,s}from'../../chunk-SQSFZFQZ.js';import {o}from'../../chunk-UAFYTYK6.js';var k=`
|
|
2
2
|
query TimeCampusGetProject($id: ID!) {
|
|
3
3
|
timeCampusProject(id: $id) {
|
|
4
4
|
id name status currency budget hourlyRate estimatedHours trackedHours
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var a=class extends Error{exitCode;hint;constructor(r,s){super(r),this.name="CliUserError",this.exitCode=s?.exitCode??1,this.hint=s?.hint;}};var u=class extends Error{cause;constructor(r,s){super(r),this.name="CliInternalError",this.cause=s;}};var g=null;function y(e){g=e;}function c(){if(!g)throw new u("vibecontrols module helpers used before setHelpersContext was called");return g}async function l(e,r){return c().gql.global.request(e,r)}function d(e){let r=e instanceof Error?e.message:String(e);throw new a(r)}function f(e,r,s){c().output.formatAndOutput(e,r,s);}function T(e){c().output.printSuccess(e);}function m(e){return c().output.formatStatus(e)}function
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var a=class extends Error{exitCode;hint;constructor(r,s){super(r),this.name="CliUserError",this.exitCode=s?.exitCode??1,this.hint=s?.hint;}};var u=class extends Error{cause;constructor(r,s){super(r),this.name="CliInternalError",this.cause=s;}};var g=null;function y(e){g=e;}function c(){if(!g)throw new u("vibecontrols module helpers used before setHelpersContext was called");return g}async function l(e,r){return c().gql.global.request(e,r)}function d(e){let r=e instanceof Error?e.message:String(e);throw new a(r)}function f(e,r,s){c().output.formatAndOutput(e,r,s);}function T(e){c().output.printSuccess(e);}function m(e){return c().output.formatStatus(e)}function h(e){return c().output.formatDate(e)}function w(e,r){return c().output.truncate(e,r)}function b(){return c()}var I=`
|
|
2
2
|
query ListTours($filters: TourFilters, $pagination: TourPagination) {
|
|
3
3
|
tours(filters: $filters, pagination: $pagination) {
|
|
4
4
|
tours {
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
currentStepOrder
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
`;function
|
|
48
|
+
`;function A(e){let r=e.command("tours").description("Product tours");r.command("list").description("List available tours").option("--product <id>","Filter by productId").option("--module <id>","Filter by moduleId").option("--status <s>","Filter by status").option("--active","Only active tours").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>","Output format").action(async t=>{try{let n={};t.product&&(n.productId=t.product),t.module&&(n.moduleId=t.module),t.status&&(n.status=t.status.toUpperCase()),t.active!==void 0&&(n.isActive=t.active);let o=await l(I,{filters:Object.keys(n).length?n:void 0,pagination:{limit:t.limit,offset:0}});f(t,o.tours.tours,{headers:["ID","Name","Slug","Status","Active","Created"],rows:o.tours.tours.map(p=>[w(p.id,12),p.name,p.slug,m(p.status),String(!!p.isActive),h(p.createdAt)])});}catch(n){d(n);}});let s=r.command("progress").description("Tour progress for the current user");s.command("get").description("Get current user's tour progress").option("--user <id>","User ID (defaults to current actor)").option("--limit <n>","Page size",t=>parseInt(t,10),50).option("-f, --format <format>","Output format").action(async t=>{try{let n=await l(v,{userId:t.user,pagination:{limit:t.limit,offset:0}});f(t,n.userTourProgresses,{headers:["Tour","Status","Step","Completed","Skipped","LastViewed"],rows:n.userTourProgresses.map(o=>[w(o.tourId,12),m(o.status),String(o.currentStepOrder??"-"),String(o.completedSteps??0),String(o.skippedSteps??0),h(o.lastViewedAt)])});}catch(n){d(n);}}),s.command("reset").description("Reset tour progress for a user").argument("<tourId>").option("--user <id>","User ID (defaults to current actor)").action(async(t,n)=>{try{let o=n.user??b().auth.read()?.workspaceId;if(!o)throw new a("Unable to resolve user; pass --user <id> or run `auth login` first.");await l(E,{tourId:t,userId:o}),T("Tour progress reset");}catch(o){d(o);}});}var W={id:"tours",version:"1.0.0",displayName:"Tours",dependsOn:["auth"],register(e,r){y(r),A(e);}},Ye=W;module.exports=Ye;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {a,c,h,p,n,o,g,s,i}from'../../chunk-
|
|
1
|
+
import {a,c,h,p,n,o,g,s,i}from'../../chunk-SQSFZFQZ.js';import {o as o$1}from'../../chunk-UAFYTYK6.js';var R=`
|
|
2
2
|
query ListTours($filters: TourFilters, $pagination: TourPagination) {
|
|
3
3
|
tours(filters: $filters, pagination: $pagination) {
|
|
4
4
|
tours {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var et=["workspaceEndpoint","globalEndpoint","oidcIssuer","clientId","defaultFormat","verbose","authServiceEndpoint"];var m=class extends Error{exitCode;hint;constructor(i,n){super(i),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends m{constructor(i,n){super(i,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},$=class extends Error{cause;constructor(i,n){super(i),this.name="CliInternalError",this.cause=n;}};var nt=null;function mt(p){nt=p;}function y(){if(!nt)throw new $("vibecontrols module helpers used before setHelpersContext was called");return nt}function $a(){let p=y();if(!p.auth.isAuthenticated())throw new R(
|
|
1
|
+
'use strict';require('graphql-request'),require('cross-fetch'),require('commander');var et=["workspaceEndpoint","globalEndpoint","oidcIssuer","clientId","defaultFormat","verbose","authServiceEndpoint","productOrigin"];var m=class extends Error{exitCode;hint;constructor(i,n){super(i),this.name="CliUserError",this.exitCode=n?.exitCode??1,this.hint=n?.hint;}},R=class extends m{constructor(i,n){super(i,{exitCode:2,hint:n?.hint??"Run `<product> auth login` to authenticate."}),this.name="CliAuthError";}},$=class extends Error{cause;constructor(i,n){super(i),this.name="CliInternalError",this.cause=n;}};var nt=null;function mt(p){nt=p;}function y(){if(!nt)throw new $("vibecontrols module helpers used before setHelpersContext was called");return nt}function $a(){let p=y();if(!p.auth.isAuthenticated())throw new R("Authentication required.",{hint:`Run \`${p.productName} auth login\` to authenticate.`})}async function r(p,i){return $a(),y().gql.workspace.request(p,i)}function a(p){let i=p instanceof Error?p.message:String(p);throw new m(i)}function d(p,i,n){y().output.formatAndOutput(p,i,n);}function c(p){y().output.printSuccess(p);}function T(p){y().output.printError(p);}function gt(p){y().output.printJson(p);}function b(p){return y().output.formatStatus(p)}function S(p){return y().output.formatDate(p)}function f(p,i){return y().output.truncate(p,i)}function l(p,i){return y().output.confirm(p,i)}function lt(p,i){y().output.printTable(p,i);}function H(){return y().auth.read()}function ft(){return y().config.read()}function It(p){return y().config.get(p)}function St(p,i){y().config.set(p,i);}function Et(){return y().config.path()}var ot=et;var O=`
|
|
2
2
|
id name hostname platform architecture version
|
|
3
3
|
tunnelUrl tunnelStatus apiUrl isActive lastHeartbeat
|
|
4
4
|
workspaceId createdAt updatedAt
|