@entrydesk/cli 1.24.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +8 -0
  2. package/dist/{agents-DFOYNMYK.js → agents-BPEYRMJS.js} +1 -1
  3. package/dist/{billing-SAYH5EB7.js → billing-ZIIVREJT.js} +1 -1
  4. package/dist/budget-GOLUDBCL.js +12 -0
  5. package/dist/{chunk-UWTX2MZZ.js → chunk-DR3LDSMV.js} +1 -1
  6. package/dist/{chunk-AJ4WRMUZ.js → chunk-EFMVEUKG.js} +34 -34
  7. package/dist/{config-TFD5BJJO.js → config-4IUXVJTP.js} +1 -1
  8. package/dist/{config-DD5WRAEN.js → config-IAKKALFC.js} +1 -1
  9. package/dist/{config-help-DS2LTR5S.js → config-help-VOALBZOV.js} +1 -1
  10. package/dist/{connectors-FHYWNO5W.js → connectors-CSQK22LM.js} +1 -1
  11. package/dist/{help-RTXIBJ6C.js → help-4WGGQ6JC.js} +2 -2
  12. package/dist/index.js +1 -1
  13. package/dist/{login-CJAEUMVX.js → login-EB3L2V2J.js} +1 -1
  14. package/dist/{logout-FQMPTUEL.js → logout-ADWPA2FG.js} +1 -1
  15. package/dist/{marketplace-LIW2SN7A.js → marketplace-SQVRI7DY.js} +1 -1
  16. package/dist/{mcp-FW5USUH2.js → mcp-VDO3M3ZZ.js} +1 -1
  17. package/dist/{meeting-5BTYIWGD.js → meeting-TW3VZXAR.js} +2 -2
  18. package/dist/{models-Y2Q2FX4V.js → models-B3KI6HNA.js} +1 -1
  19. package/dist/{notifications-4U7KBVDF.js → notifications-W4JZNPP5.js} +2 -2
  20. package/dist/{profile-HEUIWMVW.js → profile-AHVLOC6L.js} +1 -1
  21. package/dist/{recordings-LKICUUCK.js → recordings-LYXVL3QK.js} +1 -1
  22. package/dist/schedules-EBOKWL2V.js +57 -0
  23. package/dist/{skills-B5E2GJFV.js → skills-KZ3IZP5O.js} +2 -2
  24. package/dist/{status-VF7DKVXN.js → status-L6BVD6XO.js} +1 -1
  25. package/dist/{task-NMVJ4NDH.js → task-RMAWXZYH.js} +40 -40
  26. package/dist/{tasks-PDRHMFWK.js → tasks-IN2ZYMSB.js} +12 -12
  27. package/dist/{token-TTVFX36M.js → token-FCXXKQBB.js} +1 -1
  28. package/dist/token-util-OEHRI4SO.js +2 -0
  29. package/dist/{tool-SF3NK5EN.js → tool-MJKJCMYH.js} +1 -1
  30. package/dist/update-5CGQNKNF.js +4 -0
  31. package/dist/{usage-PVIH4OC6.js → usage-46QSLRS2.js} +6 -6
  32. package/dist/{version-4TEIO7G3.js → version-CE6LTBHK.js} +1 -1
  33. package/dist/{workflow-FXSMA7T3.js → workflow-BR4CFCAK.js} +2 -2
  34. package/dist/{workspaces-3KKM3FBA.js → workspaces-IAN5MGM7.js} +1 -1
  35. package/package.json +5 -5
  36. package/dist/budget-VMRIKUAD.js +0 -12
  37. package/dist/schedules-QZUI6HKS.js +0 -57
  38. package/dist/token-util-YJCUCZTI.js +0 -2
  39. /package/dist/{chunk-35QGVUAZ.js → chunk-HDVXCFOU.js} +0 -0
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{a as _,b as k}from"./chunk-35QGVUAZ.js";import{b as s}from"./chunk-KURQCTT3.js";var T=s((w,f)=>{var i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,O=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},j=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!d.call(t,r)&&r!==o&&i(t,r,{get:()=>e[r],enumerable:!(n=l(e,r))||n.enumerable});return t},v=t=>j(i({},"__esModule",{value:!0}),t),p={};O(p,{refreshToken:()=>y});f.exports=v(p);var c=_(),a=k();async function y(t){let e=t?.project,o=t?.team;if(!e&&!o){let r=(0,a.findProjectInfo)();e=r.projectId,o=r.teamId}else if(!e||!o){let r=(0,a.findProjectInfo)();e=e??r.projectId,o=o??r.teamId}if(!e)throw new c.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let n=(0,a.loadToken)(e);if(!n||(0,a.isExpired)((0,a.getTokenPayload)(n.token),t?.expirationBufferMs)){let r=await(0,a.getVercelToken)({expirationBufferMs:t?.expirationBufferMs});if(n=await(0,a.getVercelOidcToken)(r,e,o),!n)throw new c.VercelOidcTokenError("Failed to refresh OIDC token");(0,a.saveToken)(n,e)}process.env.VERCEL_OIDC_TOKEN=n.token}});export default T();
2
+ import{a as _,b as k}from"./chunk-HDVXCFOU.js";import{b as s}from"./chunk-KURQCTT3.js";var T=s((w,f)=>{var i=Object.defineProperty,l=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,d=Object.prototype.hasOwnProperty,O=(t,e)=>{for(var o in e)i(t,o,{get:e[o],enumerable:!0})},j=(t,e,o,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!d.call(t,r)&&r!==o&&i(t,r,{get:()=>e[r],enumerable:!(n=l(e,r))||n.enumerable});return t},v=t=>j(i({},"__esModule",{value:!0}),t),p={};O(p,{refreshToken:()=>y});f.exports=v(p);var c=_(),a=k();async function y(t){let e=t?.project,o=t?.team;if(!e&&!o){let r=(0,a.findProjectInfo)();e=r.projectId,o=r.teamId}else if(!e||!o){let r=(0,a.findProjectInfo)();e=e??r.projectId,o=o??r.teamId}if(!e)throw new c.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let n=(0,a.loadToken)(e);if(!n||(0,a.isExpired)((0,a.getTokenPayload)(n.token),t?.expirationBufferMs)){let r=await(0,a.getVercelToken)({expirationBufferMs:t?.expirationBufferMs});if(n=await(0,a.getVercelOidcToken)(r,e,o),!n)throw new c.VercelOidcTokenError("Failed to refresh OIDC token");(0,a.saveToken)(n,e)}process.env.VERCEL_OIDC_TOKEN=n.token}});export default T();
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{b as a}from"./chunk-HDVXCFOU.js";import"./chunk-KURQCTT3.js";export default a();
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{c as S,q as _}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";import R from"fs";import{Client as x}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as v}from"@modelcontextprotocol/sdk/client/streamableHttp.js";async function A(t={}){let e=t.apiUrl,n=t.accessToken,o=t.workspaceId;if(!n||!o){let l=await _();n=n||l.accessToken,o=o||l.workspaceId}e||(e=S().apiUrl);let i=new x({name:"entrydesk-cli",version:"1.0.0"}),s=new URL(`${e}/v1/workspaces/${o}/mcp`),r=new v(s,{requestInit:{headers:{Authorization:`Bearer ${n}`}}});return await i.connect(r),i}async function T(){return A()}import h from"fs/promises";import D from"os";import d from"path";var y=!process.env.NO_COLOR&&!!process.stdout.isTTY,p={green:y?"\x1B[32m":"",yellow:y?"\x1B[33m":"",reset:y?"\x1B[0m":""},P=10*1024,O=8*1024,I=2*1024,b=100,M=100;function U(){return d.join(D.homedir(),".entrydesk","tool-results")}function B(t){let e=t.trim().replace(/[/\\:*?"<>|\s]/g,"_").replace(/_+/g,"_").replace(/^[._]+|[._]+$/g,"").slice(0,b);return!e||e==="."||e===".."?"unnamed_tool":e}function F(t){try{return JSON.stringify(t,(e,n)=>typeof n=="bigint"?`${n}n`:typeof n=="function"?"[Function]":typeof n=="symbol"?n.toString():n,2)}catch{return String(t)}}function J(t){let e=new Date,n=[e.getFullYear(),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0")].join("-")+"_"+[String(e.getHours()).padStart(2,"0"),String(e.getMinutes()).padStart(2,"0"),String(e.getSeconds()).padStart(2,"0")].join("-"),o=B(t);return`${n}_${o}.json`}async function N(t,e){try{return await h.writeFile(t,e,{encoding:"utf8",flag:"wx"}),!0}catch(n){if(n instanceof Error&&"code"in n&&n.code==="EEXIST")return!1;throw n}}async function C(t,e){try{let n=U();await h.mkdir(n,{recursive:!0});let o=J(t),i=d.extname(o),s=o.slice(0,-i.length),r=F(e),l=d.join(n,o);if(await N(l,r))return l;for(let c=1;c<=M;c++){let w=d.join(n,`${s}-${c}${i}`);if(await N(w,r))return w}let u=Math.random().toString(36).slice(2,10),a=d.join(n,`${s}-${u}${i}`);return await h.writeFile(a,r,{encoding:"utf8",flag:"wx"}),a}catch(n){let o=n instanceof Error?n.message:"unknown error";return console.error(`${p.yellow}Warning: Could not save result to file: ${o}${p.reset}`),null}}function k(t,e){let n=Buffer.byteLength(t,"utf8");if(n<=P)return t;let o=t.slice(0,O),i=t.slice(-I),r=((n-O-I)/1024).toFixed(1),l=(n/1024).toFixed(1),u=` ... (skipped ${r}KB of ${l}KB) ...`;return e&&(u+=`
2
+ import{c as S,q as _}from"./chunk-DR3LDSMV.js";import"./chunk-KURQCTT3.js";import R from"fs";import{Client as x}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as v}from"@modelcontextprotocol/sdk/client/streamableHttp.js";async function A(t={}){let e=t.apiUrl,n=t.accessToken,o=t.workspaceId;if(!n||!o){let l=await _();n=n||l.accessToken,o=o||l.workspaceId}e||(e=S().apiUrl);let i=new x({name:"entrydesk-cli",version:"1.0.0"}),s=new URL(`${e}/v1/workspaces/${o}/mcp`),r=new v(s,{requestInit:{headers:{Authorization:`Bearer ${n}`}}});return await i.connect(r),i}async function T(){return A()}import h from"fs/promises";import D from"os";import d from"path";var y=!process.env.NO_COLOR&&!!process.stdout.isTTY,p={green:y?"\x1B[32m":"",yellow:y?"\x1B[33m":"",reset:y?"\x1B[0m":""},P=10*1024,O=8*1024,I=2*1024,b=100,M=100;function U(){return d.join(D.homedir(),".entrydesk","tool-results")}function B(t){let e=t.trim().replace(/[/\\:*?"<>|\s]/g,"_").replace(/_+/g,"_").replace(/^[._]+|[._]+$/g,"").slice(0,b);return!e||e==="."||e===".."?"unnamed_tool":e}function F(t){try{return JSON.stringify(t,(e,n)=>typeof n=="bigint"?`${n}n`:typeof n=="function"?"[Function]":typeof n=="symbol"?n.toString():n,2)}catch{return String(t)}}function J(t){let e=new Date,n=[e.getFullYear(),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0")].join("-")+"_"+[String(e.getHours()).padStart(2,"0"),String(e.getMinutes()).padStart(2,"0"),String(e.getSeconds()).padStart(2,"0")].join("-"),o=B(t);return`${n}_${o}.json`}async function N(t,e){try{return await h.writeFile(t,e,{encoding:"utf8",flag:"wx"}),!0}catch(n){if(n instanceof Error&&"code"in n&&n.code==="EEXIST")return!1;throw n}}async function C(t,e){try{let n=U();await h.mkdir(n,{recursive:!0});let o=J(t),i=d.extname(o),s=o.slice(0,-i.length),r=F(e),l=d.join(n,o);if(await N(l,r))return l;for(let c=1;c<=M;c++){let w=d.join(n,`${s}-${c}${i}`);if(await N(w,r))return w}let u=Math.random().toString(36).slice(2,10),a=d.join(n,`${s}-${u}${i}`);return await h.writeFile(a,r,{encoding:"utf8",flag:"wx"}),a}catch(n){let o=n instanceof Error?n.message:"unknown error";return console.error(`${p.yellow}Warning: Could not save result to file: ${o}${p.reset}`),null}}function k(t,e){let n=Buffer.byteLength(t,"utf8");if(n<=P)return t;let o=t.slice(0,O),i=t.slice(-I),r=((n-O-I)/1024).toFixed(1),l=(n/1024).toFixed(1),u=` ... (skipped ${r}KB of ${l}KB) ...`;return e&&(u+=`
3
3
  Tip: jq -r '.structuredContent.field' <file> | grep/head/tail`),`${o}
4
4
 
5
5
  ${u}
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import{r as l}from"./chunk-DR3LDSMV.js";import"./chunk-KURQCTT3.js";import{spawn as f}from"child_process";var a="@entrydesk/cli";function g(){return"1.26.0"}function d(n){let e=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/u.exec(n.trim());return e?{nums:[Number(e[1]),Number(e[2]),Number(e[3])],prerelease:e[4]??null}:null}function h(n,e){if(n===e)return 0;if(n===null)return 1;if(e===null)return-1;let t=n.split("."),i=e.split("."),r=Math.min(t.length,i.length);for(let s=0;s<r;s++){let u=t[s],o=i[s];if(u!==o){let c=/^\d+$/u.test(u),p=/^\d+$/u.test(o);return c&&p?Number(u)<Number(o)?-1:1:c?-1:p?1:u<o?-1:1}}return t.length===i.length?0:t.length<i.length?-1:1}function y(n,e){let t=d(n),i=d(e);if(!t||!i)return t?1:i?-1:0;for(let r=0;r<3;r++)if(t.nums[r]!==i.nums[r])return t.nums[r]<i.nums[r]?-1:1;return h(t.prerelease,i.prerelease)}function $(){return process.platform==="win32"?"npm.cmd":"npm"}function m(n,{inheritOutput:e}){return new Promise((t,i)=>{let r=f($(),n,{stdio:e?["ignore","inherit","inherit"]:["ignore","pipe","pipe"]}),s="",u="";r.stdout?.on("data",o=>{s+=String(o)}),r.stderr?.on("data",o=>{u+=String(o)}),r.once("error",i),r.once("close",o=>{t({exitCode:o??1,stdout:s,stderr:u})})})}async function w(){let n;try{n=await m(["view",a,"version"],{inheritOutput:!1})}catch(t){throw new l("Failed to run npm \u2014 is npm installed and on your PATH?",1,t instanceof Error?t:void 0)}let e=n.stdout.trim();if(n.exitCode!==0||!e)throw new l(`Failed to look up the latest ${a} version from the npm registry.${n.stderr?`
3
+ ${n.stderr.trim()}`:""}`);if(!d(e))throw new l(`Unexpected version from the npm registry: ${JSON.stringify(e)}`);return e}async function _(n){let e=g(),t=await w(),i=y(e,t),r=i>=0;if(n.check||r){n.json?console.log(JSON.stringify({current:e,latest:t,upToDate:r,updated:!1})):i>0?console.log(`entrydesk ${e} is newer than the latest published version (${t}). Nothing to do.`):console.log(r?`entrydesk ${e} is already the latest version.`:`Update available: ${e} \u2192 ${t}. Run \`entrydesk update\` to install.`);return}n.json||console.log(`Updating entrydesk ${e} \u2192 ${t} ...`);let s=await m(["install","-g",`${a}@${t}`],{inheritOutput:!n.json});if(s.exitCode!==0){let u=s.stderr?`
4
+ ${s.stderr.trim()}`:"";throw new l(`npm install failed (exit code ${s.exitCode}). You can update manually with \`npm install -g ${a}@latest\`.`+u,s.exitCode)}n.json?console.log(JSON.stringify({current:e,latest:t,upToDate:r,updated:!0})):console.log(`entrydesk updated to ${t}.`)}export{_ as runUpdate};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{h as d,q as y,s as U}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";import{writeFileSync as S}from"fs";function $(){console.log(`
2
+ import{h as d,q as y,s as U}from"./chunk-DR3LDSMV.js";import"./chunk-KURQCTT3.js";import{writeFileSync as S}from"fs";function $(){console.log(`
3
3
  Usage: entrydesk usage [balance|me|consumptions|export] [options]
4
4
 
5
5
  Commands:
@@ -22,8 +22,8 @@ Examples:
22
22
  entrydesk usage me
23
23
  entrydesk usage consumptions --limit 20
24
24
  entrydesk usage export -o usage.csv
25
- `)}function s(o){return`$${o.toFixed(2)}`}function C(o){console.log(`Extra-usage balance: ${s(o.balanceUsd)}`);let n=o.currentSpentUsedPercent!=null?` (${o.currentSpentUsedPercent}% of limit)`:"";console.log(`Spent this period: ${s(o.currentSpentUsd)}${n}`),o.monthlyExtraUsageLimitUsd!=null&&console.log(`Workspace limit: ${s(o.monthlyExtraUsageLimitUsd)} / month`),o.memberMonthlyExtraUsageLimitUsd!=null&&console.log(`Per-member limit: ${s(o.memberMonthlyExtraUsageLimitUsd)} / month`),o.nextExpiry&&console.log(`Next expiry: ${s(o.nextExpiry.amountUsd)} at ${new Date(o.nextExpiry.expiresAt).toLocaleString()}`),console.log(`Period: ${new Date(o.period.startAt).toLocaleDateString()} \u2013 ${new Date(o.period.endAt).toLocaleDateString()}`)}function b(o){console.log(`Seat type: ${o.seatType}`),o.hourly&&console.log(`Hourly used: ${o.hourly.usedPercent}%`),console.log(`Weekly used: ${o.weekly.usedPercent}%`),console.log(`Extra spent: ${s(o.extraUsage.spentUsd)}`),console.log(`Available: ${o.availability.allowed?"yes":`no (${o.availability.reason??"unknown"})`}`),o.trial&&console.log(`Trial: ${o.trial.remainingDays} days remaining`)}function k(o){console.log(`Consumptions (${o.items.length} of ${o.total}):
26
- `);for(let n of o.items)console.log(` ${n.user.name} (${n.user.email})`),console.log(` Seat: ${n.seatType} \xB7 Extra usage: ${s(n.extraUsage)}`),console.log(` User ID: ${n.user.id}`),console.log("")}async function P(o){if(o.help){$();return}let n,i;try{let e=await y();n=e.accessToken,i=e.workspaceId}catch(e){let a=e instanceof Error?e.message:"Authentication failed";console.error(a),process.exit(1)}let r=new d;try{if(o.action==="balance"){let t=await r.getUsageOverview(n,i);if(o.json){console.log(JSON.stringify(t));return}C(t);return}if(o.action==="me"){let t=await r.getUsageMe(n,i);if(o.json){console.log(JSON.stringify(t));return}b(t);return}if(o.action==="consumptions"){let t=await r.getUsageConsumptions(n,i,{limit:o.limit,offset:o.offset,periodStart:o.periodStart});if(o.json){console.log(JSON.stringify(t));return}if(t.items.length===0){console.log("No consumptions for this period.");return}k(t);return}if(o.action==="export"){let t=await r.exportUsageCsv(n,i,o.periodStart);o.output?(S(o.output,t),console.log(`Wrote usage CSV to ${o.output}`)):process.stdout.write(t);return}o.action&&(console.error(`Unknown usage command: ${o.action}`),$(),process.exit(1));let e=[],a,u=0,h=100;do{let t=await r.getMonthlyUsages(n,i,{nextKey:a,limit:100});if(e.push(...t.monthlyUsages),a=t.nextKey,u++,u>=h){console.error(`Warning: Showing first ${e.length} entries (pagination limit reached)`);break}}while(a);if(o.json){console.log(JSON.stringify(e));return}if(e.length===0){console.log("No usage data found for this workspace.");return}console.log(`Current Month Usage:
27
- `);let g=0,p=0;for(let t of e)g+=parseFloat(t.totalCost),p+=t.operationCount;console.log(`Total Cost: $${g.toFixed(2)}`),console.log(`Total Operations: ${p.toLocaleString()}`),console.log(`Users: ${e.length}
28
- `);let m=o.sortBy||"cost",f=[...e].toSorted((t,c)=>m==="cost"?parseFloat(c.totalCost)-parseFloat(t.totalCost):c.operationCount-t.operationCount),x=o.limit&&o.limit>0?o.limit:f.length,l=f.slice(0,x);console.log(`Usage by User (sorted by ${m}, showing ${l.length} of ${e.length}):
29
- `);for(let t of l){let c=parseFloat(t.totalCost);console.log(` ${t.user.name} (${t.user.email})`),console.log(` Cost: $${c.toFixed(2)}`),console.log(` Operations: ${t.operationCount.toLocaleString()}`),console.log("")}l.length<e.length&&console.log(`... and ${e.length-l.length} more users`)}catch(e){U(e)}}export{P as runUsage};
25
+ `)}function s(o){return`$${o.toFixed(2)}`}function b(o){console.log(`Extra-usage balance: ${s(o.balanceUsd)}`);let n=o.currentSpentUsedPercent==null?"":` (${o.currentSpentUsedPercent}% of limit)`;console.log(`Spent this period: ${s(o.currentSpentUsd)}${n}`),o.monthlyExtraUsageLimitUsd!=null&&console.log(`Workspace limit: ${s(o.monthlyExtraUsageLimitUsd)} / month`),o.memberMonthlyExtraUsageLimitUsd!=null&&console.log(`Per-member limit: ${s(o.memberMonthlyExtraUsageLimitUsd)} / month`),o.nextExpiry&&console.log(`Next expiry: ${s(o.nextExpiry.amountUsd)} at ${new Date(o.nextExpiry.expiresAt).toLocaleString()}`),console.log(`Period: ${new Date(o.period.startAt).toLocaleDateString()} \u2013 ${new Date(o.period.endAt).toLocaleDateString()}`)}function C(o){console.log(`Seat type: ${o.seatType}`),o.hourly&&console.log(`Hourly used: ${o.hourly.usedPercent}%`),console.log(`Weekly used: ${o.weekly.usedPercent}%`),console.log(`Extra spent: ${s(o.extraUsage.spentUsd)}`),console.log(`Available: ${o.availability.allowed?"yes":`no (${o.availability.reason??"unknown"})`}`),o.trial&&console.log(`Trial: ${o.trial.remainingDays} days remaining`)}function k(o){console.log(`Consumptions (${o.items.length} of ${o.total}):
26
+ `);for(let n of o.items)console.log(` ${n.user.name} (${n.user.email})`),console.log(` Seat: ${n.seatType} \xB7 Extra usage: ${s(n.extraUsage)}`),console.log(` User ID: ${n.user.id}`),console.log("")}async function N(o){if(o.help){$();return}let n,i;try{let e=await y();n=e.accessToken,i=e.workspaceId}catch(e){let a=e instanceof Error?e.message:"Authentication failed";console.error(a),process.exit(1)}let r=new d;try{if(o.action==="balance"){let t=await r.getUsageOverview(n,i);if(o.json){console.log(JSON.stringify(t));return}b(t);return}if(o.action==="me"){let t=await r.getUsageMe(n,i);if(o.json){console.log(JSON.stringify(t));return}C(t);return}if(o.action==="consumptions"){let t=await r.getUsageConsumptions(n,i,{limit:o.limit,offset:o.offset,periodStart:o.periodStart});if(o.json){console.log(JSON.stringify(t));return}if(t.items.length===0){console.log("No consumptions for this period.");return}k(t);return}if(o.action==="export"){let t=await r.exportUsageCsv(n,i,o.periodStart);o.output?(S(o.output,t),console.log(`Wrote usage CSV to ${o.output}`)):process.stdout.write(t);return}o.action&&(console.error(`Unknown usage command: ${o.action}`),$(),process.exit(1));let e=[],a,u=0,h=100;do{let t=await r.getMonthlyUsages(n,i,{nextKey:a,limit:100});if(e.push(...t.monthlyUsages),a=t.nextKey,u++,u>=h){console.error(`Warning: Showing first ${e.length} entries (pagination limit reached)`);break}}while(a);if(o.json){console.log(JSON.stringify(e));return}if(e.length===0){console.log("No usage data found for this workspace.");return}console.log(`Current Month Usage:
27
+ `);let g=0,p=0;for(let t of e)g+=Number.parseFloat(t.totalCost),p+=t.operationCount;console.log(`Total Cost: $${g.toFixed(2)}`),console.log(`Total Operations: ${p.toLocaleString()}`),console.log(`Users: ${e.length}
28
+ `);let m=o.sortBy||"cost",f=[...e].toSorted((t,c)=>m==="cost"?Number.parseFloat(c.totalCost)-Number.parseFloat(t.totalCost):c.operationCount-t.operationCount),x=o.limit&&o.limit>0?o.limit:f.length,l=f.slice(0,x);console.log(`Usage by User (sorted by ${m}, showing ${l.length} of ${e.length}):
29
+ `);for(let t of l){let c=Number.parseFloat(t.totalCost);console.log(` ${t.user.name} (${t.user.email})`),console.log(` Cost: $${c.toFixed(2)}`),console.log(` Operations: ${t.operationCount.toLocaleString()}`),console.log("")}l.length<e.length&&console.log(`... and ${e.length-l.length} more users`)}catch(e){U(e)}}export{N as runUsage};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import"./chunk-KURQCTT3.js";function n(){console.log("entrydesk 1.24.0")}export{n as printVersion};
2
+ import"./chunk-KURQCTT3.js";function n(){console.log("entrydesk 1.26.0")}export{n as printVersion};
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{c as u}from"./chunk-AJ4WRMUZ.js";import{h as p,q as g,s as k}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";import{readFileSync as I}from"fs";var m=262144,R=new Set(["completed","failed","cancelled"]);function f(){console.log(`
2
+ import{c as u}from"./chunk-EFMVEUKG.js";import{h as p,q as g,s as k}from"./chunk-DR3LDSMV.js";import"./chunk-KURQCTT3.js";import{readFileSync as I}from"fs";var m=262144,R=new Set(["completed","failed","cancelled"]);function f(){console.log(`
3
3
  Usage: entrydesk workflow [list|get|create|update|run|runs|run-get|share] [options]
4
4
 
5
5
  Commands:
@@ -48,7 +48,7 @@ Examples:
48
48
  entrydesk workflow runs <workflowId>
49
49
  entrydesk workflow run-get <workflowId> <runId>
50
50
  entrydesk workflow share <workflowId> --add-user <userId> --role editor
51
- `)}function a(o){if(!o)return"";let e=new Date(o);return isNaN(e.getTime())?o:e.toLocaleString()}function h(o){let e;try{e=I(o,"utf8")}catch{console.error(`Cannot read script file: ${o}`),process.exit(1)}return e.trim().length===0&&(console.error(`Script file is empty: ${o}`),process.exit(1)),Buffer.byteLength(e,"utf8")>m&&(console.error(`Script file exceeds ${m} bytes.`),process.exit(1)),e}function A(o){o.args!==void 0&&o.argsFile!==void 0&&(console.error("Use only one of --args or --args-file."),process.exit(1));let e;if(o.argsFile!==void 0)try{e=I(o.argsFile,"utf8")}catch{console.error(`Cannot read args file: ${o.argsFile}`),process.exit(1)}else e=o.args;if(e!==void 0)try{return JSON.parse(e)}catch{console.error("--args/--args-file must be valid JSON."),process.exit(1)}}function y(o){console.log(`Workflows (${o.length}):
51
+ `)}function a(o){if(!o)return"";let e=new Date(o);return Number.isNaN(e.getTime())?o:e.toLocaleString()}function h(o){let e;try{e=I(o,"utf8")}catch{console.error(`Cannot read script file: ${o}`),process.exit(1)}return e.trim().length===0&&(console.error(`Script file is empty: ${o}`),process.exit(1)),Buffer.byteLength(e,"utf8")>m&&(console.error(`Script file exceeds ${m} bytes.`),process.exit(1)),e}function A(o){o.args!==void 0&&o.argsFile!==void 0&&(console.error("Use only one of --args or --args-file."),process.exit(1));let e;if(o.argsFile===void 0)e=o.args;else try{e=I(o.argsFile,"utf8")}catch{console.error(`Cannot read args file: ${o.argsFile}`),process.exit(1)}if(e!==void 0)try{return JSON.parse(e)}catch{console.error("--args/--args-file must be valid JSON."),process.exit(1)}}function y(o){console.log(`Workflows (${o.length}):
52
52
  `);for(let e of o){let n=e.isActive?"active":"inactive";if(console.log(` ${e.name} (${n})`),e.description){let t=e.description.length>80?`${e.description.slice(0,80)}...`:e.description;console.log(` ${t}`)}console.log(` ${e.myRole??"no-role"} \xB7 ID: ${e.id}`),console.log("")}}function v(o,e){console.log(`${o.name}
53
53
  `),console.log(` ID: ${o.id}`),console.log(` Active: ${o.isActive}`),console.log(` My role: ${o.myRole??"no-role"}`),o.description&&console.log(` Description: ${o.description}`),console.log(` Updated: ${a(o.updatedAt)}`);let n=o.scriptSource.split(`
54
54
  `).length;e?(console.log(`
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{g as a,h as w,p as k}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";function l(){console.log(`
2
+ import{g as a,h as w,p as k}from"./chunk-DR3LDSMV.js";import"./chunk-KURQCTT3.js";function l(){console.log(`
3
3
  Usage: entrydesk workspaces [list|switch|use] [options]
4
4
 
5
5
  Commands:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entrydesk/cli",
3
- "version": "1.24.0",
3
+ "version": "1.26.0",
4
4
  "description": "EntryDesk CLI - Interact with EntryDesk from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -34,11 +34,11 @@
34
34
  "oxlint": "^1.72.0",
35
35
  "strip-ansi": "^7.1.2",
36
36
  "tsup": "^8.5.0",
37
- "typescript": "^6.0.3",
37
+ "typescript": "^7.0.2",
38
38
  "vitest": "^4.1.6",
39
- "@entrydesk/ci": "^0.0.0",
40
- "@entrydesk/utils": "^0.0.0",
41
- "@entrydesk/shared": "^0.0.0"
39
+ "@gntc/ci": "^0.0.0",
40
+ "@entrydesk/shared": "^0.0.0",
41
+ "@gntc/utils": "^0.0.0"
42
42
  },
43
43
  "optionalDependencies": {
44
44
  "keytar": "^7.9.0"
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env node
2
- import{h as c,q as a,s as d}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";function p(){console.log(`
3
- Usage: entrydesk budget [get|set|clear] [options]
4
-
5
- Commands:
6
- get Show current workspace budget (default)
7
- set <amount> Set workspace budget (e.g., 100.00)
8
- clear Remove workspace budget
9
-
10
- Flags:
11
- --json Output JSON
12
- `)}async function b(e){try{if(e.help){p();return}let u=await a(),{accessToken:o,workspaceId:n}=u,s=e.action||"get",r=new c;if(s==="set"){let t=e.configKey;if(!t)throw new Error("Missing budget amount for set command");let i=parseFloat(t);if(isNaN(i)||i<0)throw new Error("Budget must be a positive number");if(await r.updateBudget(o,n,t),e.json){let l=await r.getBudget(o,n);console.log(JSON.stringify(l));return}console.log(`Budget updated: $${t}`);return}if(s==="clear"){if(await r.updateBudget(o,n,null),e.json){let t=await r.getBudget(o,n);console.log(JSON.stringify(t));return}console.log("Budget cleared.");return}if(s!=="get")throw new Error(`Unknown budget command: ${s}`);let g=await r.getBudget(o,n);if(e.json){console.log(JSON.stringify(g));return}if(g.budget===null){console.log("No budget set for this workspace.");return}console.log(`Current workspace budget: $${g.budget}`)}catch(u){d(u)}}export{b as runBudget};
@@ -1,57 +0,0 @@
1
- #!/usr/bin/env node
2
- import{h as S,q as g,s as $}from"./chunk-UWTX2MZZ.js";import"./chunk-KURQCTT3.js";function u(){console.log(`
3
- Usage: entrydesk schedules [list|get|create|edit|delete|activate|pause|run|runs] [options]
4
-
5
- Commands:
6
- list List all schedules (default)
7
- get <scheduleId> Show schedule details
8
- create Create a new schedule
9
- edit <scheduleId> Update a schedule (only the fields you pass)
10
- delete <scheduleId> Delete a schedule
11
- activate <scheduleId> Resume a paused schedule
12
- pause <scheduleId> Pause an active schedule
13
- run <scheduleId> Run a schedule now; prints the created taskId
14
- runs <scheduleId> List a schedule's run history
15
-
16
- Create / Edit Options:
17
- --name <name> Schedule name (required for create)
18
- --prompt <text> Prompt to send to agent (required for create)
19
- --agent-id <id> Agent ID to use (required for create)
20
- --starts-at <datetime> Start time in ISO format (required for create)
21
- --utc-offset <offset> Timezone offset (e.g., +08:00, default: +00:00)
22
-
23
- Repeat Config:
24
- --repeat-type <type> no-repeat, minutes, hours, days, weeks, months
25
- --every <n> Repeat every N units
26
- --time <HH:MM> Time of day (for days/weeks/months)
27
- --days-of-week <0-6> Comma-separated days (0=Sun, for weeks)
28
- --days-of-month <1-31> Comma-separated days (for months)
29
- --last-day-of-month Include last day of month
30
-
31
- Runs Options:
32
- --limit <number> Max runs per page (default: 20)
33
- --next-key <cursor> Fetch next page using cursor
34
- --all Fetch all runs (auto-paginate)
35
-
36
- Flags:
37
- --json Output JSON
38
- `)}function x(e){if(e.type==="no-repeat")return"No repeat";let{interval:n}=e;switch(n.unit){case"minutes":return`Every ${n.every} minute${n.every>1?"s":""}`;case"hours":return`Every ${n.every} hour${n.every>1?"s":""} at :${String(n.minute).padStart(2,"0")}`;case"days":return`Every ${n.every} day${n.every>1?"s":""} at ${String(n.time.hour).padStart(2,"0")}:${String(n.time.minute).padStart(2,"0")}`;case"weeks":{let s=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],r=n.daysOfWeek.map(i=>s[i]).join(", ");return`Every ${n.every} week${n.every>1?"s":""} on ${r} at ${String(n.time.hour).padStart(2,"0")}:${String(n.time.minute).padStart(2,"0")}`}case"months":{let s=n.lastDayOfMonth?n.daysOfMonth.length>0?`${n.daysOfMonth.join(", ")} and last day`:"last day":n.daysOfMonth.join(", ");return`Every ${n.every} month${n.every>1?"s":""} on day ${s} at ${String(n.time.hour).padStart(2,"0")}:${String(n.time.minute).padStart(2,"0")}`}default:return"Unknown"}}function h(e,n){let s=new Date(e),r=n.match(/^([+-])(\d{2}):(\d{2})$/);if(!r)return s.toISOString();let i=r[1]==="+"?1:-1,a=parseInt(r[2],10),c=parseInt(r[3],10),f=i*(a*60+c)*60*1e3;return`${new Date(s.getTime()+f).toISOString().replace("T"," ").slice(0,19)} (${n})`}function w(e){console.log(`
39
- Schedule: ${e.name}
40
- ${"\u2501".repeat(50)}
41
- ID: ${e.id}
42
- Agent: ${e.agent.name}
43
- Status: ${e.isActive?"Active":"Paused"}
44
- Timezone: ${e.utcOffset}
45
-
46
- Prompt:
47
- ${e.prompt.slice(0,200)}${e.prompt.length>200?"...":""}
48
-
49
- Schedule:
50
- ${x(e.config)}
51
-
52
- Next Run: ${e.nextRunAt?h(e.nextRunAt,e.utcOffset):"-"}
53
- Created: ${h(e.createdAt,e.utcOffset)}
54
- Updated: ${h(e.updatedAt,e.utcOffset)}
55
- `)}function I(e){console.log(`Runs (${e.length}):
56
- `);for(let n of e){let s=new Date(n.scheduledAt).toLocaleString(),r=n.task?.title??"(task unavailable)",i=n.task&&!n.task.read?" (unread)":"";console.log(` ${s}`),console.log(` Task: ${r}${i}`),n.task&&console.log(` Task ID: ${n.task.id}`),console.log(` Run ID: ${n.id}`),console.log("")}}function v(e){let n=e.repeatType||"no-repeat";if(n==="no-repeat")return{type:"no-repeat"};let s=e.every??1,r=e.time||"09:00",[i,a]=r.split(":"),c={hour:parseInt(i,10),minute:parseInt(a,10)};switch(n){case"minutes":return{type:"repeat",interval:{unit:"minutes",every:s}};case"hours":return{type:"repeat",interval:{unit:"hours",every:s,minute:c.minute}};case"days":return{type:"repeat",interval:{unit:"days",every:s,time:c}};case"weeks":return{type:"repeat",interval:{unit:"weeks",every:s,daysOfWeek:e.daysOfWeek??[1],time:c}};case"months":return{type:"repeat",interval:{unit:"months",every:s,daysOfMonth:e.daysOfMonth??[1],lastDayOfMonth:e.lastDayOfMonth||!1,time:c}};default:return{type:"no-repeat"}}}async function D(e){try{if(e.help){u();return}let n=await g(),{accessToken:s,workspaceId:r}=n,i=e.action||"list",a=new S;if(i==="get"){let t=e.scheduleId;t||(console.error("Missing schedule ID."),u(),process.exit(1));let o=await a.getSchedule(s,r,t);if(e.json){console.log(JSON.stringify(o));return}w(o);return}if(i==="create"){(!e.name||!e.prompt||!e.agentId||!e.startsAt)&&(console.error("Missing required fields for schedule creation."),console.error("Required: --name, --prompt, --agent-id, --starts-at"),u(),process.exit(1));let t={name:e.name,prompt:e.prompt,agentId:e.agentId,startsAt:e.startsAt,config:v(e),utcOffset:e.utcOffset||"+00:00"},o=await a.createSchedule(s,r,t);if(e.json){console.log(JSON.stringify(o));return}console.log(`Created schedule: ${o.name}`),console.log(` ID: ${o.id}`),console.log(` Next Run: ${o.nextRunAt?h(o.nextRunAt,o.utcOffset):"-"}`);return}if(i==="edit"){let t=e.scheduleId;t||(console.error("Missing schedule ID."),u(),process.exit(1));let o=await a.getSchedule(s,r,t),l=e.agentId??o.agent?.id;l||(console.error("This schedule is not agent-based; the CLI can only edit agent schedules."),process.exit(1)),(e.every!==void 0||e.time!==void 0||e.daysOfWeek!==void 0||e.daysOfMonth!==void 0||e.lastDayOfMonth!==void 0)&&!e.repeatType&&(console.error("To change the cadence, pass --repeat-type along with the repeat options."),process.exit(1));let d={name:e.name??o.name,prompt:e.prompt??o.prompt,agentId:l,startsAt:e.startsAt??o.startsAt,config:e.repeatType?v(e):o.config,utcOffset:e.utcOffset??o.utcOffset};if(await a.updateSchedule(s,r,t,d),o.isActive||await a.deactivateSchedule(s,r,t),e.json){console.log(JSON.stringify({id:t,updated:!0}));return}console.log(`Updated schedule: ${t}`);return}if(i==="activate"||i==="pause"){let t=e.scheduleId;t||(console.error("Missing schedule ID."),u(),process.exit(1));let o=i==="activate";if(o?await a.activateSchedule(s,r,t):await a.deactivateSchedule(s,r,t),e.json){console.log(JSON.stringify({id:t,isActive:o}));return}console.log(`${o?"Activated":"Paused"} schedule: ${t}`);return}if(i==="run"){let t=e.scheduleId;t||(console.error("Missing schedule ID."),u(),process.exit(1));let{taskId:o}=await a.runScheduleNow(s,r,t);if(e.json){console.log(JSON.stringify({taskId:o}));return}console.log(`Started run for schedule ${t}`),console.log(` Task ID: ${o}`);return}if(i==="runs"){let t=e.scheduleId;if(t||(console.error("Missing schedule ID."),u(),process.exit(1)),e.all&&e.nextKey&&(console.error("Cannot use --all and --next-key together."),process.exit(1)),e.all){let d=[],p;for(let m=0;;m++){m>=100&&(console.error("Reached maximum page limit (100). Use --limit and --next-key for manual pagination."),process.exit(1));let y=await a.getScheduleRuns(s,r,t,{limit:e.limit??20,nextKey:p});if(d.push(...y.runs),p=y.nextKey,!p)break}if(e.json){console.log(JSON.stringify({runs:d}));return}if(d.length===0){console.log("No runs for this schedule.");return}I(d);return}let{runs:o,nextKey:l}=await a.getScheduleRuns(s,r,t,{limit:e.limit,nextKey:e.nextKey});if(e.json){console.log(JSON.stringify({runs:o,nextKey:l}));return}if(o.length===0){console.log("No runs for this schedule.");return}I(o),l&&console.log(`Next page: --next-key ${l}`);return}if(i==="delete"){let t=e.scheduleId;t||(console.error("Missing schedule ID."),u(),process.exit(1)),await a.deleteSchedule(s,r,t),console.log(`Deleted schedule: ${t}`);return}i!=="list"&&(console.error(`Unknown schedules command: ${i}`),u(),process.exit(1));let c=[],f;do{let t=await a.getSchedules(s,r,{nextKey:f,limit:100});c.push(...t.schedules),f=t.nextKey}while(f);if(e.json){console.log(JSON.stringify(c));return}if(c.length===0){console.log("No schedules found in this workspace.");return}console.log(`Schedules (${c.length}):
57
- `);for(let t of c){let o=t.isActive?"\x1B[32mActive\x1B[0m":"\x1B[33mPaused\x1B[0m";console.log(` ${t.name}`),console.log(` Agent: ${t.agent.name}`),console.log(` Repeat: ${x(t.config)}`),console.log(` Status: ${o}`),console.log(` Next Run: ${t.nextRunAt?h(t.nextRunAt,t.utcOffset):"-"}`),console.log(` ID: ${t.id}`),console.log("")}}catch(n){$(n)}}export{D as runSchedules};
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{b as a}from"./chunk-35QGVUAZ.js";import"./chunk-KURQCTT3.js";export default a();
File without changes