@entrydesk/cli 2.0.0 → 2.1.0-beta.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/README.md +296 -1
- package/dist/add-DXYghmJz.js +2 -0
- package/dist/agents-Drg2ZD85.js +2 -0
- package/dist/billing-Bkk1BhAw.js +2 -0
- package/dist/{budget-DcULs51p.js → budget-dazpYOON.js} +1 -1
- package/dist/build-task-request-config-BDlX-M_P.js +2 -0
- package/dist/commands-DUKXJUfr.js +2 -0
- package/dist/commands-FVFeS1MV.js +2 -0
- package/dist/{config-CI3k8CUK.js → config-CSJx1Xlt.js} +2 -2
- package/dist/connectors-CHcopt49.js +3 -0
- package/dist/file-upload-BmP4AJY0.js +16 -0
- package/dist/format-C3tQC6LL.js +2 -0
- package/dist/index.js +84 -10
- package/dist/instruction-BXKEUplM.js +2 -0
- package/dist/{login-y8SlHgZ4.js → login-ACaFCfsh.js} +1 -1
- package/dist/{logout-CGGEe0it.js → logout-BX4YsOqw.js} +1 -1
- package/dist/{marketplace-CaIuJP0T.js → marketplace-S_4fkbWt.js} +1 -1
- package/dist/{mcp-Yz1qXxIb.js → mcp-DOUHU2_Z.js} +2 -2
- package/dist/mcp-client-LcmqajIh.js +2 -0
- package/dist/meeting-BG76tnT9.js +3 -0
- package/dist/models-CkepW_-c.js +3 -0
- package/dist/notifications-BAMcYXhl.js +2 -0
- package/dist/options-CgmngSTC.js +2 -0
- package/dist/paginate-DUu8qbek.js +2 -0
- package/dist/paths-DQh1PdjS.js +2 -0
- package/dist/{profile-1uJ5EHdo.js → profile-BzXbLYDw.js} +1 -1
- package/dist/profile-storage-DlaupNlV.js +60 -0
- package/dist/project-B9uLW5nn.js +2 -0
- package/dist/project-context-VlX5GZxr.js +2 -0
- package/dist/project-governance-CwVlxGE2.js +2 -0
- package/dist/project-sources-BzMkopCj.js +2 -0
- package/dist/project-sources-write-D3WzWqet.js +2 -0
- package/dist/project-tasks-CnXLm061.js +2 -0
- package/dist/push-DWIgzvqe.js +2 -0
- package/dist/{recordings-C0Ij3tfP.js → recordings-_HnTtukO.js} +1 -1
- package/dist/remove-Cpen9pWn.js +2 -0
- package/dist/resolve-7OXPmNrX.js +6 -0
- package/dist/resource-grants-D-ImlByb.js +2 -0
- package/dist/schedules-DACWrdY_.js +21 -0
- package/dist/skills-BenhDHKq.js +2 -0
- package/dist/status-BKd81bGK.js +2 -0
- package/dist/{status-D6ebFbsw.js → status-ErhWpQxW.js} +1 -1
- package/dist/stdin-DzzLUF6W.js +2 -0
- package/dist/task-CvQD8Y4d.js +104 -0
- package/dist/tasks-C4dAgHmR.js +2 -0
- package/dist/tasks-CnncSIan.js +14 -0
- package/dist/terminal-text-D04u1hg1.js +2 -0
- package/dist/{tool-3NEPlGNR.js → tool-CpSoLUlR.js} +1 -1
- package/dist/update-D09UponU.js +2 -0
- package/dist/usage-Dibnsgtg.js +3 -0
- package/dist/{usage-audit-e6kpW0LZ.js → usage-audit-Be431Kj1.js} +3 -3
- package/dist/version-BTqAbDeB.js +2 -0
- package/dist/workflow-Dx41WM43.js +6 -0
- package/dist/{workspaces-BQiFZ5pV.js → workspaces-rVOwf5zp.js} +1 -1
- package/package.json +8 -4
- package/dist/add-CDlJBikf.js +0 -2
- package/dist/agents-vivPBsWo.js +0 -2
- package/dist/billing-BietwbvI.js +0 -2
- package/dist/build-task-request-config-Bbffa_rv.js +0 -2
- package/dist/commands-BCLJEd6x.js +0 -2
- package/dist/commands-CpuinJar.js +0 -2
- package/dist/connectors-CbkKDKQQ.js +0 -3
- package/dist/custom-connector-CxGNx65S.js +0 -2
- package/dist/format-BNEUX5Xv.js +0 -2
- package/dist/mcp-client-DdryEToX.js +0 -2
- package/dist/meeting-CWv3iUU6.js +0 -3
- package/dist/models-DFEIoTPH.js +0 -2
- package/dist/notifications-CBLIBZtc.js +0 -2
- package/dist/paths-Cqjaa_lJ.js +0 -2
- package/dist/profile-storage-DYUIMuP0.js +0 -72
- package/dist/push-BBY3QXxO.js +0 -2
- package/dist/remove-D-UQJ0IM.js +0 -2
- package/dist/schedules-CFjtG3p4.js +0 -21
- package/dist/skills-16msznfK.js +0 -2
- package/dist/status-kRSNf0Ap.js +0 -2
- package/dist/task-DKK82ixE.js +0 -115
- package/dist/tasks-DX7CQir8.js +0 -14
- package/dist/update-DhNwkiwD.js +0 -2
- package/dist/usage-050zvE6Q.js +0 -3
- package/dist/version-orM51hu_.js +0 -2
- package/dist/workflow-DHTrGTRn.js +0 -6
package/dist/tasks-DX7CQir8.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{a as e,b as t,c as n,l as r}from"./profile-storage-DYUIMuP0.js";const i=`\x1B[2m`,a=`\x1B[0m`,o=`\x1B[36m`,s=`\x1B[33m`,c=`\x1B[32m`;function l(e,t){let n=t===void 0?{event:e}:{event:e,data:t};process.stdout.write(`${JSON.stringify(n)}\n`)}function u(e){let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/(1e3*60*60*24));return r===0?t.toLocaleTimeString(`en-US`,{hour:`2-digit`,minute:`2-digit`}):r===1?`Yesterday`:r<7?`${r} days ago`:t.toLocaleDateString(`en-US`,{month:`short`,day:`numeric`})}function d(e){return e.replace(/<mark>/g,`\x1B[1m`).replace(/<\/mark>/g,a).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/&/g,`&`)}function f(e,t){if(t)return e;let n=e.split(`
|
|
3
|
-
`);if(n.length<=15)return e;let r=n.slice(0,6),i=n.slice(-4),a=n.length-10;return[...r,`… (${a} lines omitted, use --full-output to see all) …`,...i].join(`
|
|
4
|
-
`)}function p(e){if(!e||typeof e!=`object`)return e;if(Array.isArray(e))return e.map(p);let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&r.length>200?t[n]=r.slice(0,150)+`… (truncated)`:typeof r==`object`&&r?t[n]=p(r):t[n]=r;return t}function m(e){if(!e||typeof e!=`object`)return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}}function h(e,t){if(!e)return`(no result)`;if(typeof e!=`object`)return f(String(e),t);let n=t?e:p(e);if(`structuredContent`in n&&n.structuredContent){let e=n.structuredContent,r=[];if(e.stdout&&typeof e.stdout==`string`&&e.stdout.trim()&&r.push(e.stdout.trim()),e.stderr&&typeof e.stderr==`string`&&e.stderr.trim()&&r.push(`${s}[stderr]${a} ${e.stderr.trim()}`),e.urls&&Array.isArray(e.urls)){let t=e.urls;for(let e of t)e.path&&e.url&&r.push(`${e.path}: ${e.url}`)}return r.length===0&&r.push(JSON.stringify(e,null,2)),f(r.join(`
|
|
5
|
-
`),t)}return`content`in n&&Array.isArray(n.content)?f(n.content.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
|
|
6
|
-
`)||JSON.stringify(e,null,2),t):n.type===`text`&&typeof n.content==`string`?f(n.content,t):f(JSON.stringify(e,null,2),t)}function g(e){if(typeof e.title==`string`)return e.title;if(typeof e.toolName==`string`)return e.toolName;let t=e.type;return t.startsWith(`tool-`)?t.slice(5).replace(/__/g,` `).replace(/_/g,` `):t}function _(e,t){let n=[];for(let r of e)if(r.type===`reasoning`&&r.text)n.push(`${i}${r.text}${a}`);else if(r.type===`text`&&r.text)n.push(r.text);else if(r.type===`tool-call`&&r.toolName){let e=[`${o}┌─ Tool: ${r.toolName}${a}`];if(r.args){e.push(`${s}│ Input:${a}`);let t=m(r.args);for(let n of t.split(`
|
|
7
|
-
`))e.push(`${i}│ ${n}${a}`)}if(r.result!==void 0){e.push(`${c}│ Output:${a}`);let n=h(r.result,t);for(let t of n.split(`
|
|
8
|
-
`))e.push(`${i}│ ${t}${a}`);e.push(`${o}└─ ${r.toolName} completed${a}`)}else r.state===`call`?e.push(`${o}└─ (awaiting result)${a}`):e.push(`${o}└─${a}`);n.push(e.join(`
|
|
9
|
-
`))}else if(r.type.startsWith(`tool-`)&&r.type!==`tool-call`){let e=g(r),l=[`${o}┌─ Tool: ${e}${a}`];if(r.input){l.push(`${s}│ Input:${a}`);let e=m(r.input);for(let t of e.split(`
|
|
10
|
-
`))l.push(`${i}│ ${t}${a}`)}if(r.output!==void 0&&r.state===`output-available`){l.push(`${c}│ Output:${a}`);let e=h(r.output,t);for(let t of e.split(`
|
|
11
|
-
`))l.push(`${i}│ ${t}${a}`);l.push(`${o}└─ completed${a}`)}else r.state===`call`||r.state===`partial-call`?l.push(`${o}└─ (in progress)${a}`):l.push(`${o}└─${a}`);n.push(l.join(`
|
|
12
|
-
`))}return n.join(`
|
|
13
|
-
|
|
14
|
-
`).trim()}async function v(o,c){let f=c.output!==void 0,p=new t;if(c.share){let e;try{e=await n()}catch{}try{let t=await p.getSharedTask(c.share,e),{messages:n}=await p.getSharedMessages(c.share,50,e);if(c.json){console.log(JSON.stringify({task:t,messages:n}));return}if(f){if(l(`task`,t),n.length===0)l(`info`,`No messages in this shared task.`);else for(let e of n.toReversed())l(`message`,e);l(`done`);return}if(console.log(`Shared task: ${t.title||`Untitled`}`),console.log(`Visibility: ${t.visibility}`),t.agent&&console.log(`Agent: ${t.agent.name}`),console.log(`${n.length} messages\n`),n.length===0){console.log(`No messages in this shared task.`);return}let r=n.toReversed(),i=c.fullOutput??!1;for(let e of r){let t=_(e.parts,i);if(!t)continue;let n=e.role===`user`?`You`:`Assistant`;console.log(`[${n}] ${u(e.createdAt)}`),console.log(t),console.log(``)}return}catch(e){if(e instanceof Error){let t=e.message.toLowerCase();t.includes(`401`)||t.includes(`unauthorized`)?console.error(`Access denied. This shared task requires authentication or is not accessible to you.`):t.includes(`404`)||t.includes(`not found`)?console.error(`Shared task not found. The share ID may be invalid or the task was deleted.`):console.error(`Failed to fetch shared task: ${e.message}`)}else console.error(`Failed to fetch shared task`);process.exit(1)}}let m,h;try{let e=await r();m=e.accessToken,h=e.workspaceId}catch(t){e(t)}if(o){let e=o,t=!1,n=null,r=Number.parseInt(o,10);if(!Number.isNaN(r)&&r>=0&&/^\d+$/.test(o)){let i=r===0?1:r,{tasks:a}=await p.getTasks(m,h,20);i>a.length&&(console.error(`Task number ${i} not found. You have ${a.length} recent tasks.`),process.exit(1));let o=a[i-1];e=o.id,t=!0,n=o,f||console.log(`Task: ${o.title||`Untitled`}\n`)}let{messages:i}=await p.getMessages(m,h,e,50);if(c.json){console.log(JSON.stringify(i));return}if(f){if(n&&l(`task`,n),i.length===0)l(`info`,`No messages in this task.`);else for(let e of i.toReversed())l(`message`,e);l(`done`);return}if(i.length===0){console.log(`No messages in this task.`);return}let a=i.toReversed(),s=c.fullOutput??!1;t||console.log(`Task: ${o.slice(0,8)}…`),console.log(`${i.length} messages\n`);for(let e of a){let t=_(e.parts,s);if(!t)continue;let n=e.role===`user`?`You`:`Assistant`;console.log(`[${n}] ${u(e.createdAt)}`),console.log(t),console.log(``)}return}if(c.search){let{results:e,nextKey:t}=await p.searchTasks(m,h,c.search,{limit:c.limit,nextKey:c.nextKey});if(f){for(let t of e)l(`task`,t);l(`done`);return}if(c.json){console.log(JSON.stringify({results:e,nextKey:t}));return}if(e.length===0){console.log(`No tasks match "${c.search}".`);return}console.log(`Search results for "${c.search}" (${e.length}):\n`);for(let[t,n]of e.entries()){let e=(t+1).toString().padStart(2,` `),r=n.titleHighlight?d(n.titleHighlight):n.title||`Untitled`;console.log(` ${e}. ${i}${u(n.createdAt)}${a} ${r}`),n.contentSnippet&&console.log(` ${d(n.contentSnippet)}`),console.log(` ${i}ID: ${n.id}${a}`)}t&&console.log(`\nNext page: --next-key ${t}`);return}let{tasks:g}=await p.getTasks(m,h,20);if(f){for(let e of g)l(`task`,e);l(`done`);return}if(c.json){console.log(JSON.stringify(g));return}if(g.length===0){console.log('No tasks yet. Start one with `entrydesk task -m "..."`.');return}console.log(`Recent tasks (${g.length}):\n`);for(let[e,t]of g.entries()){let n=(e+1).toString().padStart(2,` `),r=t.waitingReason===`approval`?` ${s}[waiting approval]${a}`:``;console.log(` ${n}. ${u(t.createdAt).padEnd(12)} ${t.title||`Untitled`}${r}`)}console.log(``),console.log("Use `entrydesk tasks 1` to view the most recent task"),console.log('Use `entrydesk task -c 1 -m "message"` to continue it')}export{v as runTasks};
|
package/dist/update-DhNwkiwD.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{r as e}from"./profile-storage-DYUIMuP0.js";import{t}from"./version-orM51hu_.js";import{spawn as n}from"node:child_process";const r=`@entrydesk/cli`;function i(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/u.exec(e.trim());return t?{nums:[Number(t[1]),Number(t[2]),Number(t[3])],prerelease:t[4]??null}:null}function a(e,t){if(e===t)return 0;if(e===null)return 1;if(t===null)return-1;let n=e.split(`.`),r=t.split(`.`),i=Math.min(n.length,r.length);for(let e=0;e<i;e++){let t=n[e],i=r[e];if(t!==i){let e=/^\d+$/u.test(t),n=/^\d+$/u.test(i);return e&&n?Number(t)<Number(i)?-1:1:e?-1:n?1:t<i?-1:1}}return n.length===r.length?0:n.length<r.length?-1:1}function o(e,t){let n=i(e),r=i(t);if(!n||!r)return n?1:r?-1:0;for(let e=0;e<3;e++)if(n.nums[e]!==r.nums[e])return n.nums[e]<r.nums[e]?-1:1;return a(n.prerelease,r.prerelease)}function s(){return process.platform===`win32`?`npm.cmd`:`npm`}function c(e,{inheritOutput:t}){return new Promise((r,i)=>{let a=n(s(),e,{stdio:t?[`ignore`,`inherit`,`inherit`]:[`ignore`,`pipe`,`pipe`]}),o=``,c=``;a.stdout?.on(`data`,e=>{o+=String(e)}),a.stderr?.on(`data`,e=>{c+=String(e)}),a.once(`error`,i),a.once(`close`,e=>{r({exitCode:e??1,stdout:o,stderr:c})})})}async function l(){let t;try{t=await c([`view`,r,`version`],{inheritOutput:!1})}catch(t){throw new e(`Failed to run npm — is npm installed and on your PATH?`,1,t instanceof Error?t:void 0)}let n=t.stdout.trim();if(t.exitCode!==0||!n)throw new e(`Failed to look up the latest ${r} version from the npm registry.${t.stderr?`\n${t.stderr.trim()}`:``}`);if(!i(n))throw new e(`Unexpected version from the npm registry: ${JSON.stringify(n)}`);return n}async function u(n){let i=t(),a=await l(),s=o(i,a),u=s>=0;if(n.check||u){n.json?console.log(JSON.stringify({current:i,latest:a,upToDate:u,updated:!1})):console.log(s>0?`entrydesk ${i} is newer than the latest published version (${a}). Nothing to do.`:u?`entrydesk ${i} is already the latest version.`:`Update available: ${i} → ${a}. Run \`entrydesk update\` to install.`);return}n.json||console.log(`Updating entrydesk ${i} → ${a}…`);let d=await c([`install`,`-g`,`${r}@${a}`],{inheritOutput:!n.json});if(d.exitCode!==0){let t=d.stderr?`\n${d.stderr.trim()}`:``;throw new e(`npm install failed (exit code ${d.exitCode}). You can update manually with \`npm install -g ${r}@latest\`.`+t,d.exitCode)}n.json?console.log(JSON.stringify({current:i,latest:a,upToDate:u,updated:!0})):console.log(`entrydesk updated to ${a}.`)}export{u as runUpdate};
|
package/dist/usage-050zvE6Q.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{b as e,l as t}from"./profile-storage-DYUIMuP0.js";import{n}from"./format-BNEUX5Xv.js";import{writeFileSync as r}from"node:fs";function i(e){console.log(`Extra-usage balance: ${n(e.balanceUsd)}`);let t=e.currentSpentUsedPercent==null?``:` (${e.currentSpentUsedPercent}% of limit)`;console.log(`Spent this period: ${n(e.currentSpentUsd)}${t}`),e.monthlyExtraUsageLimitUsd!=null&&console.log(`Workspace limit: ${n(e.monthlyExtraUsageLimitUsd)} / month`),e.memberMonthlyExtraUsageLimitUsd!=null&&console.log(`Per-member limit: ${n(e.memberMonthlyExtraUsageLimitUsd)} / month`),e.nextExpiry&&console.log(`Next expiry: ${n(e.nextExpiry.amountUsd)} at ${new Date(e.nextExpiry.expiresAt).toLocaleString()}`),console.log(`Period: ${new Date(e.period.startAt).toLocaleDateString()} – ${new Date(e.period.endAt).toLocaleDateString()}`)}function a(e){console.log(`Seat type: ${e.seatType}`),e.hourly&&console.log(`Hourly used: ${e.hourly.usedPercent}%`),console.log(`Weekly used: ${e.weekly.usedPercent}%`),console.log(`Extra spent: ${n(e.extraUsage.spentUsd)}`),console.log(`Available: ${e.availability.allowed?`yes`:`no (${e.availability.reason??`unknown`})`}`),e.trial&&console.log(`Trial: ${e.trial.remainingDays} days remaining`)}function o(e){console.log(`Consumptions (${e.items.length} of ${e.total}):\n`);for(let t of e.items)console.log(` ${t.user.name} (${t.user.email})`),console.log(` Seat: ${t.seatType} · Extra usage: ${n(t.extraUsage)}`),console.log(` User ID: ${t.user.id}`),console.log(``)}async function s(n){let{accessToken:r,workspaceId:a}=await t(),o=await new e().getUsageOverview(r,a);if(n.json){console.log(JSON.stringify(o));return}i(o)}async function c(n){let{accessToken:r,workspaceId:i}=await t(),o=await new e().getUsageMe(r,i);if(n.json){console.log(JSON.stringify(o));return}a(o)}async function l(n){let{accessToken:r,workspaceId:i}=await t(),a=await new e().getUsageConsumptions(r,i,{limit:n.limit,offset:n.offset,periodStart:n.periodStart});if(n.json){console.log(JSON.stringify(a));return}if(a.items.length===0){console.log(`No consumptions for this period.`);return}o(a)}async function u(n){let{accessToken:i,workspaceId:a}=await t(),o=await new e().exportUsageCsv(i,a,n.periodStart);if(n.output){r(n.output,o),console.log(`Wrote usage CSV to ${n.output}`);return}process.stdout.write(o)}async function d(n){let{accessToken:r,workspaceId:i}=await t(),a=new e,o=[],s,c=0;do{let e=await a.getMonthlyUsages(r,i,{nextKey:s,limit:100});if(o.push(...e.monthlyUsages),s=e.nextKey,c++,c>=100){console.error(`Warning: Showing first ${o.length} entries (pagination limit reached)`);break}}while(s);if(n.json){console.log(JSON.stringify(o));return}if(o.length===0){console.log(`No usage data found for this workspace.`);return}console.log(`Current month usage:
|
|
3
|
-
`);let l=0,u=0;for(let e of o)l+=Number.parseFloat(e.totalCost),u+=e.operationCount;console.log(`Total cost: $${l.toFixed(2)}`),console.log(`Total operations: ${u.toLocaleString()}`),console.log(`Users: ${o.length}\n`);let d=[...o].toSorted((e,t)=>n.sortBy===`cost`?Number.parseFloat(t.totalCost)-Number.parseFloat(e.totalCost):t.operationCount-e.operationCount),f=n.limit??d.length,p=d.slice(0,f);console.log(`Usage by user (sorted by ${n.sortBy}, showing ${p.length} of ${o.length}):\n`);for(let e of p)console.log(` ${e.user.name} (${e.user.email})`),console.log(` Cost: $${Number.parseFloat(e.totalCost).toFixed(2)}`),console.log(` Operations: ${e.operationCount.toLocaleString()}`),console.log(``);p.length<o.length&&console.log(`… and ${o.length-p.length} more users`)}export{u as exportUsage,l as listUsageConsumptions,c as showOwnUsage,s as showUsageBalance,d as showUsageSummary};
|
package/dist/version-orM51hu_.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{b as e,j as t,l as n}from"./profile-storage-DYUIMuP0.js";import{readFileSync as r}from"node:fs";const i=262144,a=new Set([`completed`,`failed`,`cancelled`]);function o(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function s(e){let t;try{t=r(e,`utf8`)}catch{console.error(`Cannot read script file: ${e}`),process.exit(1)}return t.trim().length===0&&(console.error(`Script file is empty: ${e}`),process.exit(1)),Buffer.byteLength(t,`utf8`)>i&&(console.error(`Script file exceeds ${i} bytes.`),process.exit(1)),t}function c(e){console.log(`Workflows (${e.length}):\n`);for(let t of e){let e=t.isActive?`active`:`inactive`;if(console.log(` ${t.name} (${e})`),t.description){let e=t.description.length>80?`${t.description.slice(0,80)}…`:t.description;console.log(` ${e}`)}console.log(` ${t.myRole??`no-role`} · ID: ${t.id}`),console.log(``)}}function l(e,t){console.log(`${e.name}\n`),console.log(` ID: ${e.id}`),console.log(` Active: ${e.isActive}`),console.log(` My role: ${e.myRole??`no-role`}`),e.description&&console.log(` Description: ${e.description}`),console.log(` Updated: ${o(e.updatedAt)}`);let n=e.scriptSource.split(`
|
|
3
|
-
`).length;t?(console.log(`\n Script (${n} lines):\n`),console.log(e.scriptSource)):console.log(` Script: ${n} lines (use --show-source to print)`)}function u(e){console.log(`Runs (${e.length}):\n`);for(let t of e){let e=o(t.startedAt??t.createdAt);console.log(` ${t.status}${e?` · ${e}`:``}`),console.log(` ID: ${t.id}`)}}function d(e){console.log(`Run ${e.id}`),console.log(` Workflow: ${e.workflowId}`),console.log(` Status: ${e.status}`),e.startedAt&&console.log(` Started: ${o(e.startedAt)}`),e.completedAt&&console.log(` Completed: ${o(e.completedAt)}`),e.error!=null&&console.log(` Error: ${JSON.stringify(e.error)}`);let t=Object.entries(e.context?.nodes??{});if(t.length>0){console.log(`\n Nodes (${t.length}):`);for(let[e,n]of t){let t=[n.kind??`node`,n.status];n.durationMs!=null&&t.push(`${n.durationMs}ms`),console.log(` - ${n.label??e} [${t.join(` · `)}]`)}}let n=e.context?.logs??[];if(n.length>0){console.log(`
|
|
4
|
-
Logs:`);for(let e of n)console.log(` ${e}`)}e.context?.spent!=null&&console.log(`\n Tokens spent: ${e.context.spent}`)}function f(e){let n=t(e);if(console.log(`User grants (${n.length}):`),n.length===0){console.log(` (none)`);return}for(let e of n)console.log(` - ${e.user.name} <${e.user.email}> · ${e.role}`),console.log(` ID: ${e.userId}`)}async function p(e,t,n,r,i){for(let o=0;o<600;o++){let s=await e.getWorkflowRun(t,n,r,i);if(a.has(s.status))return o>0&&process.stderr.write(`
|
|
5
|
-
`),s;let c=o*2;process.stderr.write(`\rWaiting… ${s.status} (${c}s)`),await new Promise(e=>setTimeout(e,2e3))}throw process.stderr.write(`
|
|
6
|
-
`),Error(`Run ${i} did not finish within the wait window.`)}async function m(e){let t=[],n;for(let r=0;;r++){r>=100&&(console.error(`Reached maximum page limit (100). Use --limit and --next-key for manual pagination.`),process.exit(1));let i=await e(n);if(t.push(...i.items),n=i.nextKey,!n)break}return t}function h(e){let t;if(e.argsFile===void 0)t=e.args;else try{t=r(e.argsFile,`utf8`)}catch{console.error(`Cannot read args file: ${e.argsFile}`),process.exit(1)}if(t!==void 0)try{return JSON.parse(t)}catch{console.error(`--args/--args-file must be valid JSON.`),process.exit(1)}}const g="No workflows in this workspace yet. Create one with `entrydesk workflow create --name <name> --file <path.js>`.";async function _(t){let{accessToken:r,workspaceId:i}=await n(),a=new e;if(t.all){let e=await m(async e=>{let n=await a.getWorkflows(r,i,{limit:t.limit??20,nextKey:e,search:t.search});return{items:n.workflows,nextKey:n.nextKey}});if(t.json){console.log(JSON.stringify({workflows:e}));return}if(e.length===0){console.log(g);return}c(e);return}let{workflows:o,nextKey:s}=await a.getWorkflows(r,i,{limit:t.limit,nextKey:t.nextKey,search:t.search});if(t.json){console.log(JSON.stringify({workflows:o,nextKey:s}));return}if(o.length===0){console.log(g);return}c(o),s&&console.log(`Next page: --next-key ${s}`)}async function v(t,r){let{accessToken:i,workspaceId:a}=await n(),o=await new e().getWorkflow(i,a,t);if(r.json){console.log(JSON.stringify(o));return}l(o,!!r.showSource)}async function y(t){let{accessToken:r,workspaceId:i}=await n(),a=await new e().createWorkflow(r,i,{name:t.name,description:t.description,scriptSource:s(t.file)});if(t.json){console.log(JSON.stringify(a));return}console.log(`Created workflow: ${a.name}`),console.log(` ID: ${a.id}`)}async function b(t,r){let i={};r.name!==void 0&&(i.name=r.name),r.description!==void 0&&(i.description=r.description),r.file!==void 0&&(i.scriptSource=s(r.file)),r.activate&&(i.isActive=!0),r.deactivate&&(i.isActive=!1),Object.keys(i).length===0&&(console.error(`No fields provided to update.`),process.exit(1));let{accessToken:a,workspaceId:o}=await n();if(await new e().updateWorkflow(a,o,t,i),r.json){console.log(JSON.stringify({id:t,updated:!0}));return}console.log(`Updated workflow: ${t}`)}async function x(t,r){let i=h(r),{accessToken:a,workspaceId:o}=await n(),s=new e,{runId:c}=await s.triggerWorkflowRun(a,o,t,i);if(!r.wait){if(r.json){console.log(JSON.stringify({runId:c}));return}console.log(`Started run: ${c}`),console.log(` Check: entrydesk workflow run-get ${t} ${c}`);return}let l=await p(s,a,o,t,c);r.json?console.log(JSON.stringify(l)):d(l),l.status!==`completed`&&process.exit(1)}async function S(t,r){let{accessToken:i,workspaceId:a}=await n(),o=new e;if(r.all){let e=await m(async e=>{let n=await o.getWorkflowRuns(i,a,t,{limit:r.limit??20,nextKey:e});return{items:n.runs,nextKey:n.nextKey}});if(r.json){console.log(JSON.stringify({runs:e}));return}if(e.length===0){console.log(`No runs for this workflow.`);return}u(e);return}let{runs:s,nextKey:c}=await o.getWorkflowRuns(i,a,t,{limit:r.limit,nextKey:r.nextKey});if(r.json){console.log(JSON.stringify({runs:s,nextKey:c}));return}if(s.length===0){console.log(`No runs for this workflow.`);return}u(s),c&&console.log(`Next page: --next-key ${c}`)}async function C(t,r,i){let{accessToken:a,workspaceId:o}=await n(),s=await new e().getWorkflowRun(a,o,t,r);if(i.json){console.log(JSON.stringify(s));return}d(s)}async function w(t,r){let{accessToken:i,workspaceId:a}=await n(),o=new e;if(r.addUser){let e=await o.upsertWorkflowGrant(i,a,t,r.addUser,r.role);if(r.json){console.log(JSON.stringify(e));return}console.log(`Granted ${r.role} to user ${r.addUser}`);return}if(r.removeUser){if(await o.removeWorkflowGrant(i,a,t,r.removeUser),r.json){console.log(JSON.stringify({userId:r.removeUser,removed:!0}));return}console.log(`Revoked access for user ${r.removeUser}`);return}let s=await o.getWorkflowGrants(i,a,t);if(r.json){console.log(JSON.stringify(s));return}f(s)}export{y as createWorkflow,S as listWorkflowRuns,_ as listWorkflows,w as shareWorkflow,v as showWorkflow,C as showWorkflowRun,x as triggerWorkflowRun,b as updateWorkflow};
|