@entrydesk/cli 1.16.0 → 1.18.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.
- package/dist/agents-7XASAILN.js +43 -0
- package/dist/{budget-AR4CC2JZ.js → budget-E4MIKV33.js} +1 -1
- package/dist/chunk-GQWF4JEC.js +4 -0
- package/dist/{config-FJGJZU2R.js → config-JRJVFRT3.js} +1 -1
- package/dist/{config-SEONTOCE.js → config-MAO5TQEB.js} +1 -1
- package/dist/{config-help-HOFPAPPH.js → config-help-ZWR52H55.js} +1 -1
- package/dist/{connectors-2E7IODR6.js → connectors-KHWU2ZWF.js} +1 -1
- package/dist/{help-DLIL7L47.js → help-CJZSDNUL.js} +15 -0
- package/dist/index.js +1 -1
- package/dist/{login-5TRUDZH3.js → login-GGUSZBMP.js} +1 -1
- package/dist/{logout-C4ZVOAXW.js → logout-DDKAWMZ4.js} +1 -1
- package/dist/{mcp-3LQ2G5ZC.js → mcp-VIM4EXHV.js} +1 -1
- package/dist/{meeting-PQPNGSK3.js → meeting-DWJABQ3Q.js} +1 -1
- package/dist/{models-IZQP4QT4.js → models-LBT6N52A.js} +1 -1
- package/dist/notifications-XQVFALKW.js +28 -0
- package/dist/{profile-XKT6OFBV.js → profile-QNR7NAEU.js} +1 -1
- package/dist/{schedules-22YXGZTW.js → schedules-JPOOWXID.js} +1 -1
- package/dist/skills-QIEVXMWP.js +25 -0
- package/dist/{status-UWLIBEDO.js → status-Y4MUTFMJ.js} +1 -1
- package/dist/{task-TPHKNZRY.js → task-C3ITCXH4.js} +2 -2
- package/dist/{tasks-6VYGGCFY.js → tasks-LJHCATKL.js} +1 -1
- package/dist/{tool-MZCUJVUJ.js → tool-HOWJ4M6M.js} +1 -1
- package/dist/{usage-BGFOW5QU.js → usage-R366J6YU.js} +1 -1
- package/dist/{version-NFCMR36F.js → version-OVZYDUUX.js} +1 -1
- package/dist/{workflow-CWICWD27.js → workflow-TXNP3Z53.js} +1 -1
- package/dist/{workspaces-XVJ6D5LB.js → workspaces-ENEOI2LZ.js} +1 -1
- package/package.json +3 -3
- package/dist/agents-FWWY2UX2.js +0 -30
- package/dist/chunk-OMJF4KR2.js +0 -4
- package/dist/skills-DMGNV22F.js +0 -17
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{h as u,q as f,s as h}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function m(){console.log(`
|
|
3
|
+
Usage: entrydesk agents [list|show|create|update|delete|publish|share] [options]
|
|
4
|
+
|
|
5
|
+
Commands:
|
|
6
|
+
list List available agents (default; --mine for your own)
|
|
7
|
+
show <agentId> Show one agent's full details
|
|
8
|
+
create Create a new agent
|
|
9
|
+
update <agentId> Update an agent you own
|
|
10
|
+
delete <agentId> Delete an agent you own
|
|
11
|
+
publish <agentId> Publish an agent to the workspace
|
|
12
|
+
share <agentId> Show or manage sharing (user grants)
|
|
13
|
+
|
|
14
|
+
Create/Update Options:
|
|
15
|
+
--name <name>
|
|
16
|
+
--description <text>
|
|
17
|
+
--system-prompt <text>
|
|
18
|
+
--model-id <modelId>
|
|
19
|
+
--connector-ids id1,id2
|
|
20
|
+
--capabilities sandbox,web_search,image_generation,chart
|
|
21
|
+
--conversation-starters s1,s2,s3
|
|
22
|
+
--tools prefix__tool1,prefix__tool2
|
|
23
|
+
--icon-id <iconId>
|
|
24
|
+
|
|
25
|
+
List Options:
|
|
26
|
+
--mine List agents you own/edit (with publish state)
|
|
27
|
+
--limit <number> Max agents per page; also page size for --all (default: 100)
|
|
28
|
+
--next-key <cursor> Fetch next page using cursor
|
|
29
|
+
--all Fetch all agents (auto-paginate)
|
|
30
|
+
|
|
31
|
+
Share Options:
|
|
32
|
+
--add-user <userId> Grant a user access (use with --role)
|
|
33
|
+
--remove-user <userId> Revoke a user's access
|
|
34
|
+
--role owner|editor|viewer Role for --add-user (default: viewer)
|
|
35
|
+
|
|
36
|
+
Flags:
|
|
37
|
+
--json Output JSON
|
|
38
|
+
`)}function w(e){if(!e)return[];let o=new Map([["sandbox","sandbox"],["web","web_search"],["web-search","web_search"],["web_search","web_search"],["image","image_generation"],["image-gen","image_generation"],["image_generation","image_generation"],["chart","chart"]]);return e.map(i=>o.get(i)??i)}function y(e){console.log(`Available Agents (${e.length}):
|
|
39
|
+
`);for(let o of e){if(console.log(` ${o.name} (${o.visibility})`),o.description){let i=o.description.length>80?`${o.description.slice(0,80)}...`:o.description;console.log(` ${i}`)}console.log(` ID: ${o.id}`),console.log("")}}function I(e){console.log(`My Agents (${e.length}):
|
|
40
|
+
`);for(let o of e){let i=[];o.latestVersionNumber!=null&&i.push(`v${o.latestVersionNumber}`),o.hasUnpublishedChanges&&i.push("unpublished changes");let s=i.length>0?` (${i.join(" \xB7 ")})`:"";if(console.log(` ${o.name}${s}`),o.description){let a=o.description.length>80?`${o.description.slice(0,80)}...`:o.description;console.log(` ${a}`)}console.log(` ${o.myRole??"no-role"} \xB7 ID: ${o.id}`),console.log("")}}function A(e){console.log(`${e.name}
|
|
41
|
+
`),console.log(` ID: ${e.id}`),e.visibility&&console.log(` Visibility: ${e.visibility}`),e.model&&console.log(` Model: ${e.model.name}`),e.author&&console.log(` Author: ${e.author.name}${e.author.isMe?" (you)":""}`),e.description&&console.log(` Description: ${e.description}`),e.capabilities&&e.capabilities.length>0&&console.log(` Capabilities: ${e.capabilities.join(", ")}`),e.connectors&&e.connectors.length>0&&console.log(` Connectors: ${e.connectors.map(o=>o.name).join(", ")}`),e.tools&&e.tools.length>0&&console.log(` Tools: ${e.tools.length}`),e.conversationStarters&&e.conversationStarters.length>0&&console.log(` Starters: ${e.conversationStarters.length}`),e.systemPrompt&&console.log(`
|
|
42
|
+
System Prompt:
|
|
43
|
+
${e.systemPrompt}`)}function b(e){if(console.log(`User grants (${e.grants.length}):`),e.grants.length===0){console.log(" (none)");return}for(let o of e.grants)console.log(` - ${o.user.name} <${o.user.email}> \xB7 ${o.role}`),console.log(` ID: ${o.userId}`)}function $(e){return(!e.name||!e.description||!e.systemPrompt||!e.modelId)&&(console.error("Missing required fields for agent create/update."),m(),process.exit(1)),{name:e.name,description:e.description,systemPrompt:e.systemPrompt,modelId:e.modelId,connectorIds:e.connectorIds??[],capabilities:w(e.capabilities),conversationStarters:e.conversationStarters??[],tools:e.tools,iconId:e.iconId}}async function k(e){try{if(e.help){m();return}let o=await f(),{accessToken:i,workspaceId:s}=o,a=e.action||"list",r=new u;if(a==="show"){if(!e.agentId)throw new Error("Missing agentId for show command");let t=await r.getAgent(i,s,e.agentId);if(e.json){console.log(JSON.stringify(t));return}A(t);return}if(a==="publish"){if(!e.agentId)throw new Error("Missing agentId for publish command");if(await r.publishAgent(i,s,e.agentId),e.json){console.log(JSON.stringify({id:e.agentId,published:!0}));return}console.log(`Published agent to the workspace: ${e.agentId}`);return}if(a==="share"){if(!e.agentId)throw new Error("Missing agentId for share command");let t=e.agentId,n=e.role??"viewer";if(e.addUser){let c=await r.upsertAgentGrant(i,s,t,e.addUser,n);if(e.json){console.log(JSON.stringify(c));return}console.log(`Granted ${n} to user ${e.addUser}`);return}if(e.removeUser){if(await r.removeAgentGrant(i,s,t,e.removeUser),e.json){console.log(JSON.stringify({userId:e.removeUser,removed:!0}));return}console.log(`Revoked access for user ${e.removeUser}`);return}let l=await r.getAgentGrants(i,s,t);if(e.json){console.log(JSON.stringify(l));return}b(l);return}if(a==="create"){let t=$(e),n=await r.createAgent(i,s,t);if(e.json){console.log(JSON.stringify(n));return}console.log(`Created agent: ${n.name}`),console.log(` ID: ${n.id}`);return}if(a==="update"){let t=e.agentId;if(!t)throw new Error("Missing agentId for update command");let n=await r.getAgent(i,s,t),l={name:e.name??n.name,description:e.description??n.description,systemPrompt:e.systemPrompt??n.systemPrompt??"",modelId:e.modelId??n.model?.id??"",connectorIds:e.connectorIds??n.connectors?.map(c=>c.id)??[],capabilities:e.capabilities?w(e.capabilities):n.capabilities??[],conversationStarters:e.conversationStarters??n.conversationStarters??[],tools:e.tools??n.tools??[],iconId:e.iconId??n.iconId};await r.updateAgent(i,s,t,l),console.log(`Updated agent: ${t}`);return}if(a==="delete"){let t=e.agentId;if(!t)throw new Error("Missing agentId for delete command");await r.deleteAgent(i,s,t),console.log(`Deleted agent: ${t}`);return}if(a!=="list"&&(console.error(`Unknown agents command: ${a}`),m(),process.exit(1)),e.all&&e.nextKey&&(console.error("Cannot use --all and --next-key together."),process.exit(1)),e.mine){let t=[],n=e.all?void 0:e.nextKey,l=100;for(let c=0;;c++){c>=l&&(console.error(`Reached maximum page limit (${l}). Use --limit and --next-key for manual pagination.`),process.exit(1));let d=await r.getMyAgents(i,s,{limit:e.limit,nextKey:n});if(t.push(...d.agents),n=d.nextKey,!e.all||!n)break}if(e.json){console.log(JSON.stringify({agents:t,nextKey:n}));return}if(t.length===0){console.log("You have no agents in this workspace.");return}I(t),!e.all&&n&&console.log(`Next page: --next-key ${n}`);return}if(e.all){let n=[],l;for(let c=0;;c++){c>=100&&(console.error("Reached maximum page limit (100). Use --limit and --next-key for manual pagination."),process.exit(1));let d=await r.getAgents(i,s,{limit:e.limit??100,nextKey:l});if(n.push(...d.agents),l=d.nextKey,!l)break}if(e.json){console.log(JSON.stringify({agents:n}));return}if(n.length===0){console.log("No agents found in this workspace.");return}y(n);return}let{agents:g,nextKey:p}=await r.getAgents(i,s,{limit:e.limit,nextKey:e.nextKey});if(e.json){console.log(JSON.stringify({agents:g,nextKey:p}));return}if(g.length===0){console.log("No agents found in this workspace.");return}y(g),p&&console.log(`Next page: --next-key ${p}`)}catch(o){h(o)}}export{k as runAgents};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as c,q as a,s as d}from"./chunk-
|
|
2
|
+
import{h as c,q as a,s as d}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function p(){console.log(`
|
|
3
3
|
Usage: entrydesk budget [get|set|clear] [options]
|
|
4
4
|
|
|
5
5
|
Commands:
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import U from"fs";import y from"fs";import Ue from"os";import T from"path";import{HTTPError as Ie,TimeoutError as Me}from"ky";import{HTTPError as xe}from"ky";import we,{TimeoutError as ke,isHTTPError as ve}from"ky";import E from"crypto";import d from"fs";import ue from"path";var de="ENTRYDESK_FORCE_FILE_STORAGE",R="EntryDesk CLI",pe="__entrydesk_keychain_test__",he="profile:",fe=".credentials.key",Q={keychain:!1,permissions:!1,corruptFile:!1,windowsFile:!1};function k(s,e){Q[s]||(Q[s]=!0,console.error(e))}function ye(){return process.env.ENTRYDESK_DEBUG?.toLowerCase()==="true"}function ee(s){if(!s||typeof s!="object")return!1;let e=s;return!(!("accessToken"in e||"refreshToken"in e||"email"in e||"workspaceId"in e)||"accessToken"in e&&typeof e.accessToken!="string"||"refreshToken"in e&&typeof e.refreshToken!="string"||"email"in e&&typeof e.email!="string"||"workspaceId"in e&&typeof e.workspaceId!="string")}function me(s){if(!s||typeof s!="object")return!1;let e=s;return typeof e.getPassword=="function"&&typeof e.setPassword=="function"&&typeof e.deletePassword=="function"}function z(s){return a.getProfileCredentialsFile(s)}var F=class{getKeyFilePath(e){return ue.join(a.getProfileDir(e),fe)}loadEncryptionKey(e){let t=this.getKeyFilePath(e);try{if(!d.existsSync(t))return null;let r=d.readFileSync(t);return r.length!==32?null:(this.ensureSecureFilePermissions(t),r)}catch{return null}}createEncryptionKey(e){a.ensureProfileDir(e);let t=this.getKeyFilePath(e),r=E.randomBytes(32);return d.writeFileSync(t,r,{mode:384}),this.ensureSecureFilePermissions(t),r}getOrCreateEncryptionKey(e){let t=this.loadEncryptionKey(e);return t||this.createEncryptionKey(e)}encrypt(e,t){let r=E.randomBytes(16),n=E.createCipheriv("aes-256-gcm",t,r),i=n.update(e,"utf8","hex");i+=n.final("hex");let o=n.getAuthTag();return`${r.toString("hex")}:${o.toString("hex")}:${i}`}decrypt(e,t){let r=e.split(":");if(r.length!==3)throw new Error("Invalid encrypted data format");let n=Buffer.from(r[0],"hex"),i=Buffer.from(r[1],"hex"),o=r[2],S=E.createDecipheriv("aes-256-gcm",t,n,{authTagLength:16});S.setAuthTag(i);let u=S.update(o,"hex","utf8");return u+=S.final("utf8"),u}tryDecrypt(e,t){try{return this.decrypt(e,t)}catch{return null}}tryParseCredentials(e){try{let t=JSON.parse(e);return ee(t)?t:null}catch{return null}}ensureSecureFilePermissions(e){if(process.platform!=="win32"){try{d.chmodSync(e,384)}catch{k("permissions","Warning: Failed to set secure permissions on credentials file.");return}try{(d.statSync(e).mode&511)!==384&&k("permissions","Warning: Credentials file permissions are too permissive.")}catch{k("permissions","Warning: Failed to verify credentials file permissions.")}}}async getCredentials(e){let t=z(e);try{if(!d.existsSync(t))return null;let r=d.readFileSync(t,"utf-8").trim();if(!r)return null;let n=this.loadEncryptionKey(e),i=n?this.tryDecrypt(r,n):null;if(i){let o=this.tryParseCredentials(i);if(o)return o}return k("corruptFile","Warning: Credentials file is unreadable. Please run `entrydesk login` again."),null}catch{return null}}async setCredentials(e,t){a.ensureProfileDir(e);let r=z(e),n=this.getOrCreateEncryptionKey(e),i=this.encrypt(JSON.stringify(t),n);d.writeFileSync(r,i,{mode:384}),this.ensureSecureFilePermissions(r)}async deleteCredentials(e){let t=z(e);try{d.existsSync(t)&&d.unlinkSync(t)}catch{}}},N=class{keytarModule=null;keytarLoadAttempted=!1;keychainAvailable=null;async getKeytar(){if(this.keytarLoadAttempted)return this.keytarModule;this.keytarLoadAttempted=!0;try{let t=await import("keytar"),r=t&&typeof t=="object"&&"default"in t?t.default:t;this.keytarModule=me(r)?r:null}catch{this.keytarModule=null}return this.keytarModule}getAccount(e){return`${he}${e}`}async checkKeychainAvailability(){if(this.keychainAvailable!==null)return this.keychainAvailable;try{let e=await this.getKeytar();if(!e)return this.keychainAvailable=!1,!1;let t=`${pe}${E.randomBytes(8).toString("hex")}`,r="test";await e.setPassword(R,t,r);let n=await e.getPassword(R,t),i=await e.deletePassword(R,t);return this.keychainAvailable=!!(i&&n===r),this.keychainAvailable}catch{return this.keychainAvailable=!1,!1}}async isAvailable(){return this.checkKeychainAvailability()}async getCredentials(e){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let t=await this.getKeytar();if(!t)throw new Error("Keytar module not available");let r=await t.getPassword(R,this.getAccount(e));if(!r)return null;let n=this.tryParseKeychainPayload(r);return n||k("corruptFile",`Warning: Keychain entry for profile "${e}" is unreadable.`),n}async setCredentials(e,t){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let r=await this.getKeytar();if(!r)throw new Error("Keytar module not available");let n=JSON.stringify(t);await r.setPassword(R,this.getAccount(e),n)}async deleteCredentials(e){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let t=await this.getKeytar();if(!t)throw new Error("Keytar module not available");await t.deletePassword(R,this.getAccount(e))}tryParseKeychainPayload(e){try{let t=JSON.parse(e);return ee(t)?t:null}catch{return null}}},O=class{keychainStorage=null;fileStorage=new F;keychainAvailable=null;initPromise=null;shouldForceFileStorage(){return process.env[de]?.toLowerCase()==="true"}async initializeStorage(){if(this.shouldForceFileStorage()){this.keychainAvailable=!1,this.keychainStorage=null;return}try{let e=new N,t=await e.isAvailable();this.keychainAvailable=t,this.keychainStorage=t?e:null}catch{this.keychainAvailable=!1,this.keychainStorage=null}!this.keychainAvailable&&!this.shouldForceFileStorage()&&(ye()&&k("keychain","Keychain unavailable. Falling back to file-based credentials."),process.platform==="win32"&&k("windowsFile","Warning: File-based credentials on Windows may be readable by other users."))}async ensureInitialized(){if(this.shouldForceFileStorage()){this.keychainAvailable=!1,this.keychainStorage=null;return}this.keychainAvailable===null&&(this.initPromise??=this.initializeStorage(),await this.initPromise)}disableKeychain(){this.shouldForceFileStorage()||k("keychain","Keychain error encountered. Falling back to file-based credentials."),this.keychainAvailable=!1,this.keychainStorage=null}async getKeychainStorage(){return await this.ensureInitialized(),this.shouldForceFileStorage()?null:this.keychainAvailable?this.keychainStorage:null}async getCredentials(e){let t=await this.getKeychainStorage();if(!t)return this.fileStorage.getCredentials(e);try{let n=await t.getCredentials(e);if(n)return n}catch{return this.disableKeychain(),this.fileStorage.getCredentials(e)}let r=await this.fileStorage.getCredentials(e);if(r)try{await t.setCredentials(e,r),await this.fileStorage.deleteCredentials(e)}catch{}return r}async setCredentials(e,t){let r=await this.getKeychainStorage();if(!r){await this.fileStorage.setCredentials(e,t);return}try{await r.setCredentials(e,t),await this.fileStorage.deleteCredentials(e)}catch{this.disableKeychain(),await this.fileStorage.setCredentials(e,t)}}async deleteCredentials(e){let t=await this.getKeychainStorage();if(t)try{await t.deleteCredentials(e)}catch{this.disableKeychain()}await this.fileStorage.deleteCredentials(e)}},l=new O,p={async saveAccessToken(s,e){let t=a.getEffectiveProfileName(e),r=await l.getCredentials(t)??{};r.accessToken=s,await l.setCredentials(t,r)},async getAccessToken(s){let e=a.getEffectiveProfileName(s);return(await l.getCredentials(e))?.accessToken??null},async saveRefreshToken(s,e){let t=a.getEffectiveProfileName(e),r=await l.getCredentials(t)??{};r.refreshToken=s,await l.setCredentials(t,r)},async getRefreshToken(s){let e=a.getEffectiveProfileName(s);return(await l.getCredentials(e))?.refreshToken??null},async saveEmail(s,e){let t=a.getEffectiveProfileName(e),r=await l.getCredentials(t)??{};r.email=s,await l.setCredentials(t,r)},async getEmail(s){let e=a.getEffectiveProfileName(s);return(await l.getCredentials(e))?.email??null},async saveWorkspaceId(s,e){let t=a.getEffectiveProfileName(e),r=await l.getCredentials(t)??{};r.workspaceId=s,await l.setCredentials(t,r)},async getWorkspaceId(s){let e=a.getEffectiveProfileName(s);return(await l.getCredentials(e))?.workspaceId??null},async saveAll(s,e){let t=a.getEffectiveProfileName(e);await l.setCredentials(t,s)},async getAll(s){let e=a.getEffectiveProfileName(s);return l.getCredentials(e)},async clear(s){let e=a.getEffectiveProfileName(s);await l.deleteCredentials(e)},async isLoggedIn(s){let e=a.getEffectiveProfileName(s);return(await l.getCredentials(e))?.accessToken!=null}};var x=class s{client;baseUrl;constructor(e,t){this.baseUrl=e||B(t),K().ignoreSslErrors&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",process.env.DEBUG&&console.log("[DEBUG] ApiClient: SSL certificate validation disabled")),this.client=we.create({baseUrl:this.baseUrl.replace(/\/?$/,"/"),timeout:3e4,retry:{limit:3,methods:["get","put","head","delete","options","trace"],statusCodes:[408,413,429,500,502,503,504]},hooks:{beforeError:[({error:n})=>(ve(n)&&(n.request.headers.delete("authorization"),n.request.headers.delete("Authorization")),n)]}})}getBaseUrl(){return this.baseUrl}async refreshOAuthToken(e){return this.client.post("v1/oauth/token",{json:{grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:e.clientId}}).json()}async revokeOAuthToken(e){await this.client.post("v1/oauth/revoke",{json:{token:e.token,token_type_hint:"refresh_token",client_id:e.clientId}})}async getWorkspaces(e){try{return process.env.DEBUG&&console.log(`[DEBUG] Calling getWorkspaces API: ${this.baseUrl}/v1/workspaces`),await this.client.get("v1/workspaces",{headers:{Authorization:`Bearer ${e}`}}).json()}catch(t){throw process.env.DEBUG&&(console.error("[DEBUG] getWorkspaces error:",t),t instanceof Error&&"cause"in t&&console.error("[DEBUG] Error cause:",t.cause)),t}}async getAgents(e,t,r){let n={limit:r?.limit??100};return r?.nextKey&&(n.nextKey=r.nextKey),r?.search&&(n.search=r.search),await this.client.get(`v1/workspaces/${t}/availableAgents`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async createAgent(e,t,r){return await this.client.post(`v1/workspaces/${t}/agents`,{headers:{Authorization:`Bearer ${e}`},json:r}).json()}async updateAgent(e,t,r,n){await this.client.put(`v1/workspaces/${t}/agents/${r}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async deleteAgent(e,t,r){await this.client.delete(`v1/workspaces/${t}/agents/${r}`,{headers:{Authorization:`Bearer ${e}`}})}async getMyAgents(e,t,r){let n={limit:r?.limit??100};return r?.nextKey&&(n.nextKey=r.nextKey),r?.search&&(n.search=r.search),await this.client.get(`v1/workspaces/${t}/myAgents`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async publishAgent(e,t,r){await this.client.post(`v1/workspaces/${t}/agents/${r}/publish`,{headers:{Authorization:`Bearer ${e}`}})}async getAgentGrants(e,t,r){return await this.client.get(`v1/workspaces/${t}/agents/${r}/grants`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertAgentGrant(e,t,r,n,i){return await this.client.put(`v1/workspaces/${t}/agents/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeAgentGrant(e,t,r,n){await this.client.delete(`v1/workspaces/${t}/agents/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async getMeetings(e,t,r){let n={limit:r?.limit??20};return r?.nextKey&&(n.nextKey=r.nextKey),r?.search&&(n.search=r.search),r?.filter&&(n.filter=r.filter),r?.sortBy&&(n.sortBy=r.sortBy),await this.client.get(`v1/workspaces/${t}/meetings`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getMeeting(e,t,r){return await this.client.get(`v1/workspaces/${t}/meetings/${r}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createMeeting(e,t,r){return await this.client.post(`v1/workspaces/${t}/meetings`,{headers:{Authorization:`Bearer ${e}`},json:r}).json()}async updateMeeting(e,t,r,n){return await this.client.patch(`v1/workspaces/${t}/meetings/${r}`,{headers:{Authorization:`Bearer ${e}`},json:n}).json()}async deleteMeeting(e,t,r){await this.client.delete(`v1/workspaces/${t}/meetings/${r}`,{headers:{Authorization:`Bearer ${e}`}})}async getMeetingPreviousBrief(e,t,r){return await this.client.get(`v1/workspaces/${t}/meetings/${r}/previous`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getRecording(e,t,r){return await this.client.get(`v1/workspaces/${t}/recordings/${r}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getMeetingShares(e,t,r){return await this.client.get(`v1/workspaces/${t}/meetings/${r}/shares`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertMeetingUserGrant(e,t,r,n,i){return await this.client.put(`v1/workspaces/${t}/meetings/${r}/shares/users/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeMeetingUserGrant(e,t,r,n){await this.client.delete(`v1/workspaces/${t}/meetings/${r}/shares/users/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async upsertMeetingTeamGrant(e,t,r,n,i){return await this.client.put(`v1/workspaces/${t}/meetings/${r}/shares/teams/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeMeetingTeamGrant(e,t,r,n){await this.client.delete(`v1/workspaces/${t}/meetings/${r}/shares/teams/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async getWorkflows(e,t,r){let n={limit:r?.limit??20};return r?.nextKey&&(n.nextKey=r.nextKey),r?.search&&(n.search=r.search),await this.client.get(`v1/workspaces/${t}/workflows`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getWorkflow(e,t,r){return await this.client.get(`v1/workspaces/${t}/workflows/${r}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createWorkflow(e,t,r){return await this.client.post(`v1/workspaces/${t}/workflows`,{headers:{Authorization:`Bearer ${e}`},json:r}).json()}async updateWorkflow(e,t,r,n){await this.client.put(`v1/workspaces/${t}/workflows/${r}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async triggerWorkflowRun(e,t,r,n){return await this.client.post(`v1/workspaces/${t}/workflows/${r}/runs`,{headers:{Authorization:`Bearer ${e}`},json:n===void 0?{}:{args:n}}).json()}async getWorkflowRuns(e,t,r,n){let i={limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/workflows/${r}/runs`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}async getWorkflowRun(e,t,r,n){return await this.client.get(`v1/workspaces/${t}/workflows/${r}/runs/${n}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getWorkflowGrants(e,t,r){return await this.client.get(`v1/workspaces/${t}/workflows/${r}/grants`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertWorkflowGrant(e,t,r,n,i){return await this.client.put(`v1/workspaces/${t}/workflows/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeWorkflowGrant(e,t,r,n){await this.client.delete(`v1/workspaces/${t}/workflows/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async getNotifications(e,t,r){let n={limit:r?.limit??20};return r?.tab&&(n.tab=r.tab),r?.eventType&&(n.eventType=r.eventType),r?.cursor&&(n.cursor=r.cursor),await this.client.get(`v1/workspaces/${t}/notifications`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getNotificationUnreadCount(e,t){return await this.client.get(`v1/workspaces/${t}/notifications/unreadCount`,{headers:{Authorization:`Bearer ${e}`}}).json()}async markNotificationRead(e,t,r){await this.client.post(`v1/workspaces/${t}/notifications/${r}/read`,{headers:{Authorization:`Bearer ${e}`}})}async markAllNotificationsRead(e,t){await this.client.post(`v1/workspaces/${t}/notifications/readAll`,{headers:{Authorization:`Bearer ${e}`}})}async getModels(e,t){return await this.client.get(`v1/workspaces/${t}/models`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getConnectors(e,t){return await this.client.get(`v1/workspaces/${t}/availableConnectors`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:100,connectionStatus:"connected"}}).json()}async getTasks(e,t,r=20){return await this.client.get(`v1/workspaces/${t}/tasks`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:r}}).json()}async searchTasks(e,t,r,n){let i={q:r,limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/tasks/search`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}async getMessages(e,t,r,n=50){return await this.client.get(`v1/workspaces/${t}/tasks/${r}/messages`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:n}}).json()}async getAgent(e,t,r){return await this.client.get(`v1/workspaces/${t}/agents/${r}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async listAvailableSkills(e,t,r){return await this.client.get(`v1/workspaces/${t}/availableSkills`,{headers:{Authorization:`Bearer ${e}`},searchParams:{createdBy:r?.createdBy,nextKey:r?.nextKey,limit:r?.limit??20}}).json()}async uploadSkill(e,t,r){return await this.client.post(`v1/workspaces/${t}/skills`,{headers:{Authorization:`Bearer ${e}`},body:r}).json()}async deleteSkill(e,t,r){await this.client.delete(`v1/workspaces/${t}/skills/${r}`,{headers:{Authorization:`Bearer ${e}`}})}async updateSkillPreference(e,t,r,n){return await this.client.patch(`v1/workspaces/${t}/skills/${r}/preference`,{headers:{Authorization:`Bearer ${e}`},json:{isEnabled:n}}).json()}async getSkillVersions(e,t,r){return await this.client.get(`v1/workspaces/${t}/skills/${r}/versions`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getSkillGrants(e,t,r){return await this.client.get(`v1/workspaces/${t}/skills/${r}/grants`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertSkillGrant(e,t,r,n,i){return await this.client.put(`v1/workspaces/${t}/skills/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeSkillGrant(e,t,r,n){await this.client.delete(`v1/workspaces/${t}/skills/${r}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async downloadSkillCurrent(e,t,r){return await this.client.get(`v1/workspaces/${t}/skills/${r}/download`,{headers:{Authorization:`Bearer ${e}`}}).json()}async task(e,t,r){try{let n=await this.client.post(`v1/workspaces/${t}/tasks`,{headers:{Authorization:`Bearer ${e}`},json:r,timeout:6e4,throwHttpErrors:!1});if(!n.ok){let o=await n.text();throw new Error(`Task API failed (${n.status}): ${o}`)}let i=await n.json();return i.noop||!i.streamId?new Response(`data: [DONE]
|
|
3
|
+
|
|
4
|
+
`,{headers:{"Content-Type":"text/event-stream"}}):await this.taskStream(e,t,i.taskId)}catch(n){throw n instanceof ke?new TypeError("Request timed out. Please check your connection and try again.",{cause:n}):n}}async taskStream(e,t,r){let n=await this.client.get(`v1/workspaces/${t}/tasks/${r}/stream`,{headers:{Authorization:`Bearer ${e}`,Accept:"text/event-stream"},timeout:!1,throwHttpErrors:!1});if(!n.ok){let i=await n.text();throw new Error(`Task stream failed (${n.status}): ${i}`)}return n}async getBudget(e,t){return await this.client.get(`v1/workspaces/${t}/budget`,{headers:{Authorization:`Bearer ${e}`}}).json()}async updateBudget(e,t,r){await this.client.put(`v1/workspaces/${t}/budget`,{headers:{Authorization:`Bearer ${e}`},json:{budget:r}})}async getMonthlyUsages(e,t,r){return await this.client.get(`v1/workspaces/${t}/monthlyUsages`,{headers:{Authorization:`Bearer ${e}`},searchParams:{nextKey:r?.nextKey,limit:r?.limit??20}}).json()}async createTaskShare(e,t,r,n="public"){return await this.client.post(`v1/workspaces/${t}/tasks/${r}/shares`,{headers:{Authorization:`Bearer ${e}`},json:{visibility:n}}).json()}async getSharedTask(e,t){let r={};return t&&(r.Authorization=`Bearer ${t}`),await this.client.get(`v1/shares/${e}`,{headers:r}).json()}async getSharedMessages(e,t=50,r){let n={};return r&&(n.Authorization=`Bearer ${r}`),await this.client.get(`v1/shares/${e}/messages`,{headers:n,searchParams:{limit:t}}).json()}async deleteTask(e,t,r){await this.client.delete(`v1/workspaces/${t}/tasks/${r}`,{headers:{Authorization:`Bearer ${e}`}})}async getModelProviders(e,t){return await this.client.get(`v1/workspaces/${t}/modelProviders`,{headers:{Authorization:`Bearer ${e}`}}).json()}async uploadFile(e,t,r,n){let i=new FormData,o=new Blob([r.buffer],{type:r.mimeType});return i.append("file",o,r.filename),i.append("modelProviderId",n),await this.client.post(`v1/workspaces/${t}/files`,{headers:{Authorization:`Bearer ${e}`},body:i,timeout:12e4}).json()}async getSchedules(e,t,r){let n={limit:r?.limit??20};return r?.nextKey&&(n.nextKey=r.nextKey),r?.search&&(n.search=r.search),await this.client.get(`v1/workspaces/${t}/schedules`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getSchedule(e,t,r){return await this.client.get(`v1/workspaces/${t}/schedules/${r}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createSchedule(e,t,r){return await this.client.post(`v1/workspaces/${t}/schedules`,{headers:{Authorization:`Bearer ${e}`},json:r}).json()}async updateSchedule(e,t,r,n){await this.client.put(`v1/workspaces/${t}/schedules/${r}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async deleteSchedule(e,t,r){await this.client.delete(`v1/workspaces/${t}/schedules/${r}`,{headers:{Authorization:`Bearer ${e}`}})}async activateSchedule(e,t,r){await this.client.post(`v1/workspaces/${t}/schedules/${r}/activate`,{headers:{Authorization:`Bearer ${e}`}})}async deactivateSchedule(e,t,r){await this.client.post(`v1/workspaces/${t}/schedules/${r}/deactivate`,{headers:{Authorization:`Bearer ${e}`}})}async runScheduleNow(e,t,r){return await this.client.post(`v1/workspaces/${t}/schedules/${r}/run`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getScheduleRuns(e,t,r,n){let i={limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/schedules/${r}/runs`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}static async getAuthenticatedClient(e){let t=await p.getAll(e);return t?{client:new s(void 0,e),accessToken:t.accessToken,workspaceId:t.workspaceId??null}:null}};function Pe(){return process.env.ENTRYDESK_SANDBOX==="true"}function _(){if(!Pe())return null;let s=process.env.ENTRYDESK_SANDBOX_ACCESS_TOKEN?.trim(),e=process.env.ENTRYDESK_SANDBOX_WORKSPACE_ID?.trim();if(!s||!e){let t=[];throw s||t.push("ENTRYDESK_SANDBOX_ACCESS_TOKEN"),e||t.push("ENTRYDESK_SANDBOX_WORKSPACE_ID"),new Error(`Sandbox mode enabled but missing credentials: ${t.join(", ")}`)}return{accessToken:s,workspaceId:e}}function L(){let s=process.env.ENTRYDESK_TOKEN?.trim();if(!s)return null;let e=process.env.ENTRYDESK_WORKSPACE_ID?.trim();if(!e)throw new Error("ENTRYDESK_TOKEN is set but ENTRYDESK_WORKSPACE_ID is missing. Both are required for PAT authentication.");return{accessToken:s,workspaceId:e}}function rt(){let s=_();if(s)return{authSource:"sandbox-env",label:"sandbox environment (ENTRYDESK_SANDBOX)",workspaceId:s.workspaceId};let e=L();return e?{authSource:"pat-env",label:"personal access token (ENTRYDESK_TOKEN)",workspaceId:e.workspaceId}:null}import{execFile as Se}from"child_process";import{setTimeout as Ae}from"timers/promises";import{decodeJwt as Re}from"jose";import $e,{HTTPError as Te,isHTTPError as Ee}from"ky";function te(s){if(s===null||typeof s!="object")return{error:""};let e=s;return{code:typeof e.code=="string"?e.code:void 0,error:typeof e.error=="string"?e.error:""}}var I="entrydesk-cli",be="offline_access workspaces:read tasks:read tasks:write tasks:delete agents:read agents:write connectors:read connectors:write tools:read tools:execute skills:read skills:write meetings:read meetings:write workflows:read workflows:write notifications:read notifications:write publishes:read publishes:write calendar:read calendar:write schedules:read schedules:write user:read user:write";function Ce(s){return new Promise((e,t)=>{let r=process.platform,n,i;switch(r){case"darwin":n="open",i=[s];break;case"win32":n="cmd",i=["/c","start","",s];break;default:n="xdg-open",i=[s];break}Se(n,i,o=>{o?t(new Error(`Failed to open browser. Please manually visit: ${s}`,{cause:o})):e()})})}async function ut(s){let e=B(),t=re(),r=K(),n=process.env.NODE_TLS_REJECT_UNAUTHORIZED;r.ignoreSslErrors&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",console.error("WARNING: SSL certificate validation is disabled globally for this process during the login flow. All connections in this process will skip TLS verification. Only use ENTRYDESK_IGNORE_SSL_ERRORS for local development."));try{let i=$e.create({baseUrl:e.replace(/\/?$/,"/"),timeout:3e4,hooks:{beforeError:[({error:c})=>(Ee(c)&&(c.request.headers.delete("authorization"),c.request.headers.delete("Authorization")),c)]}}),o;try{o=await i.post("v1/oauth/device/code",{json:{client_id:I,scope:be}}).json()}catch(c){let w=c instanceof Error?c:new Error("Failed to request device code");throw s?.onError?.(w),w}let{device_code:S,user_code:u,expires_in:ae,interval:ce}=o,V=new URL("/oauth/device",t);V.searchParams.set("user_code",u);let X=V.toString();s?.onDeviceCodeReceived?.(u,X),s?.onBrowserOpening?.();try{await Ce(X)}catch(c){process.env.DEBUG&&console.error("[DEBUG] Failed to open browser:",c)}s?.onWaitingForAuthorization?.();let Z=Math.max(ce,5)*1e3,le=Date.now()+ae*1e3;for(;Date.now()<le;){await Ae(Z);try{let c=await i.post("v1/oauth/token",{json:{grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:S,client_id:I}}).json();s?.onAuthorized?.();let w={};try{w=Re(c.access_token)}catch{}return{accessToken:c.access_token,refreshToken:c.refresh_token??void 0,email:w.email||"",scopes:c.scope.split(" ").filter(D=>D.length>0)}}catch(c){if(c instanceof Te){let{code:D,error:ge}=te(c.data),j=D||ge;if(!j)continue;switch(j){case"authorization_pending":continue;case"slow_down":Z+=5e3;continue;case"access_denied":throw new Error("Authorization denied by user",{cause:c});case"expired_token":throw new Error("Device code expired. Please try again.",{cause:c});default:throw new Error(`Authorization failed: ${j||"Unknown error"}`,{cause:c})}}let w=c instanceof Error?c:new Error("Unknown error during authorization");throw s?.onError?.(w),w}}throw new Error("Device code expired. Please try again.")}finally{n===void 0?delete process.env.NODE_TLS_REJECT_UNAUTHORIZED:process.env.NODE_TLS_REJECT_UNAUTHORIZED=n}}function Be(s){if(s instanceof xe){let e=s.response.status;return e===400||e===401}return!1}var h=class extends Error{code;constructor(e,t){super(t),this.code=e}};function Ke(s){try{let e=s.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),r=(4-t.length%4)%4,n=t.padEnd(t.length+r,"="),i=Buffer.from(n,"base64").toString("utf8");return JSON.parse(i)}catch{return null}}function _e(s,e=300){let r=Ke(s)?.exp;if(typeof r!="number")return!1;let n=Math.floor(Date.now()/1e3);return r-n<=e}async function se(s){let e=s.accessToken;if(!_e(e))return e;if(!s.refreshToken)throw await p.clear(),new h("session-expired","Session expired. Please run `entrydesk login` again.");let t=s.refreshToken;try{let n=await new x().refreshOAuthToken({refreshToken:t,clientId:I}),i=await p.getAll();return i?.accessToken&&i.refreshToken&&i.refreshToken!==t?i.accessToken:(await p.saveAll({...i??s,accessToken:n.access_token,refreshToken:n.refresh_token??i?.refreshToken??t}),n.access_token)}catch(r){if(!Be(r))throw new h("refresh-failed","Could not refresh your session (auth server unreachable). Please try again.");let n=await p.getAll();if(n?.accessToken&&n.refreshToken&&n.refreshToken!==t)return n.accessToken;throw await p.clear(),new h("session-expired","Session expired. Please run `entrydesk login` again.")}}async function wt(){let s=_();if(s)return s.accessToken;let e=await p.getAll();if(!e?.accessToken)throw new h("not-logged-in","Not logged in. Run `entrydesk login` first.");return se(e)}async function kt(){let s=_();if(s)return{accessToken:s.accessToken,workspaceId:s.workspaceId};let e=L();if(e)return e;let t=await p.getAll();if(!t?.accessToken)throw new h("not-logged-in","Not logged in. Run `entrydesk login` first.");if(!t.workspaceId)throw new h("no-workspace","No workspace selected. Run `entrydesk workspaces` first.");return{accessToken:await se(t),workspaceId:t.workspaceId}}var f=class extends Error{constructor(t,r=1,n){super(t);this.exitCode=r;this.cause=n;this.name="CLIError"}exitCode;cause};function At(s){let e=!!process.env.DEBUG;if(s instanceof f&&(console.error(`Error: ${s.message}`),s.cause&&(console.error(`Cause: ${s.cause.message}`),e&&s.cause.stack&&console.error(s.cause.stack)),process.exit(s.exitCode)),s instanceof h&&(console.error(s.message),e&&s.stack&&console.error(s.stack),process.exit(1)),s instanceof Me&&(console.error("Request timed out. Please check your connection and try again."),e&&s.stack&&console.error(s.stack),process.exit(1)),s instanceof Ie){let t=s.response.status;console.error(t===401?"Not authorized (401). Your session may have expired \u2014 run `entrydesk login`.":t===403?"Forbidden (403). Your account or token lacks permission for this action. If your token predates a recently added feature, run `entrydesk login` to refresh its scopes; otherwise you may lack permission in this workspace.":`Request failed (${t}): ${s.response.statusText}`),e&&s.stack&&console.error(s.stack),process.exit(1)}s instanceof Error&&(console.error(`Unexpected error: ${s.message}`),e&&s.stack&&console.error(s.stack),process.exit(1)),console.error("An unknown error occurred"),process.exit(1)}var P="default",De=/^[A-Za-z0-9_-]+$/,G=null;function H(){return T.join(Ue.homedir(),".entrydesk")}function ie(){return T.join(H(),"profiles")}function oe(){return T.join(H(),"profiles.json")}function M(s){return T.join(ie(),s)}function Y(s){if(!y.existsSync(s))y.mkdirSync(s,{mode:448,recursive:!0});else try{y.chmodSync(s,448)}catch{}}function je(){Y(H())}function W(){Y(ie())}function ze(){let s=oe();try{if(!y.existsSync(s))return null;let e=y.readFileSync(s,"utf-8");return JSON.parse(e)}catch{return null}}function $(s){je();let e=oe();y.writeFileSync(e,JSON.stringify(s,null,2),{mode:384});try{y.chmodSync(e,384)}catch{}}function Fe(s){let e=s.profiles?.length?Array.from(new Set(s.profiles)):[],t=s.currentProfile&&e.includes(s.currentProfile)?s.currentProfile:e[0]||P;return e.length===0&&e.push(P),e.includes(t)||e.unshift(t),{currentProfile:t,profiles:e}}function C(s){W(),Y(M(s))}function v(){let s=ze();if(!s){let t={currentProfile:P,profiles:[P]};return $(t),W(),C(P),t}let e=Fe(s);return(e.currentProfile!==s.currentProfile||e.profiles.length!==s.profiles.length)&&$(e),W(),e}function A(s){if(!s)throw new f("Profile name is required.");if(!De.test(s))throw new f("Invalid profile name. Use letters, numbers, dash, or underscore.")}function b(s,e){if(!s.profiles.includes(e))throw new f(`Profile not found: ${e}`)}function ne(s,e){if(s.profiles.includes(e))throw new f(`Profile already exists: ${e}`)}var a={DEFAULT_PROFILE:P,setOverrideProfile(s){G=s},getOverrideProfile(){return G},getProfileDir(s){return M(s)},getProfileConfigFile(s){return T.join(a.getProfileDir(s),"config.json")},getProfileCredentialsFile(s){return T.join(a.getProfileDir(s),"credentials.json")},getProfileNames(){return[...v().profiles]},getProfileCount(){return a.getProfileNames().length},getCurrentProfileName(){return v().currentProfile},getEffectiveProfileName(s){let e=v(),t=s||G||e.currentProfile;return A(t),b(e,t),t},ensureProfileExists(s){let e=v();A(s),b(e,s)},createProfile(s){A(s);let e=v();ne(e,s);let t={currentProfile:e.currentProfile,profiles:[...e.profiles,s]};$(t),C(s)},deleteProfile(s){A(s);let e=v();if(b(e,s),e.profiles.length===1)throw new f("Cannot delete the last profile.");let t=e.profiles.filter(i=>i!==s),r=e.currentProfile;r===s&&(r=t.includes(P)?P:t[0]),$({currentProfile:r,profiles:t});try{y.rmSync(a.getProfileDir(s),{recursive:!0,force:!0})}catch{}return{currentProfile:r}},renameProfile(s,e){A(s),A(e);let t=v();b(t,s),ne(t,e);let r=M(s),n=M(e);if(y.existsSync(r))try{y.renameSync(r,n)}catch(u){throw new f("Failed to rename profile directory.",1,u)}else C(e);let i=t.profiles.map(u=>u===s?e:u),o=t.currentProfile===s?e:t.currentProfile;return $({currentProfile:o,profiles:i}),{currentProfile:o}},setCurrentProfile(s){A(s);let e=v();b(e,s);let t={currentProfile:s,profiles:e.profiles};$(t),C(s)},ensureProfileDir:C};function Ne(s){let e=a.getEffectiveProfileName(s);return a.getProfileConfigFile(e)}function g(s){let e=Ne(s);try{if(!U.existsSync(e))return{};let t=U.readFileSync(e,"utf-8");return JSON.parse(t)}catch{return{}}}function m(s,e){let t=a.getEffectiveProfileName(e);a.ensureProfileDir(t);let r=a.getProfileConfigFile(t);U.writeFileSync(r,JSON.stringify(s,null,2),{mode:384});try{U.chmodSync(r,384)}catch{}}var J={getApiUrl(s){return g(s).apiUrl??null},setApiUrl(s,e){let t=g(e);t.apiUrl=s,m(t,e)},clearApiUrl(s){let e=g(s);delete e.apiUrl,m(e,s)},getHubUrl(s){return g(s).hubUrl??null},setHubUrl(s,e){let t=g(e);t.hubUrl=s,m(t,e)},getAll(s){return g(s)},setAll(s,e){m(s,e)},set(s,e,t){let r=g(t);r[s]=e,m(r,t)},get(s,e){return g(e)[s]},unset(s,e){let t=g(e);delete t[s],m(t,e)},getDefaultModel(s){return g(s).model?.default??null},setDefaultModel(s,e){let t=g(e);t.model={...t.model,default:s},m(t,e)},getDefaultConnectorIds(s){return g(s).connectors?.defaults??null},setDefaultConnectorIds(s,e){let t=g(e);t.connectors={...t.connectors,defaults:s},m(t,e)},getLocalTools(s){return g(s).localTools??null},setLocalTools(s,e){let t=g(e);t.localTools={...t.localTools,...s},m(t,e)}};var Oe="https://api.entrydesk.com",Le="https://app.entrydesk.com",Ge=3100,We=300*1e3;function q(s){return{apiUrl:J.getApiUrl(s)||process.env.ENTRYDESK_API_URL||Oe,hubUrl:J.getHubUrl(s)||process.env.ENTRYDESK_HUB_URL||Le,mcp:{httpPort:Ge},auth:{loginTimeout:We,ignoreSslErrors:process.env.ENTRYDESK_IGNORE_SSL_ERRORS==="true"||!1}}}function B(s){return q(s).apiUrl}function re(s){return q(s).hubUrl}function K(){return q().auth}export{a,J as b,q as c,B as d,re as e,K as f,p as g,x as h,rt as i,te as j,I as k,ut as l,h as m,_e as n,se as o,wt as p,kt as q,f as r,At as s};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as f,b as s}from"./chunk-
|
|
2
|
+
import{a as f,b as s}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";var i=["apiUrl","hubUrl"];function l(e){return i.includes(e)}async function d(e){let n=e.action||"list",o=e.configKey,t=e.value,a=f.getEffectiveProfileName();if(n==="list"){let r=s.getAll(),c=Object.entries(r);if(e.json){console.log(JSON.stringify(r));return}if(console.log(`Profile: ${a}`),c.length===0){console.log("No configuration set."),console.log(`Available keys: ${i.join(", ")}`);return}console.log(`Configuration:
|
|
3
3
|
`);for(let[g,u]of c)console.log(` ${g}=${u}`);console.log(`
|
|
4
4
|
Available keys: ${i.join(", ")}`);return}if(n==="get"){o||(console.error("Error: key is required for get action"),process.exit(1)),l(o)||(console.error(`Error: Invalid key '${o}'. Valid keys: ${i.join(", ")}`),process.exit(1));let r=s.get(o);e.json?console.log(JSON.stringify({[o]:r??null})):console.log(r||"Not set");return}if(n==="set"){o||(console.error("Error: key is required for set action"),process.exit(1)),l(o)||(console.error(`Error: Invalid key '${o}'. Valid keys: ${i.join(", ")}`),process.exit(1)),t||(console.error("Error: value is required for set action"),process.exit(1)),s.set(o,t),console.log(`Set ${o}=${t}`);return}if(n==="unset"){o||(console.error("Error: key is required for unset action"),process.exit(1)),l(o)||(console.error(`Error: Invalid key '${o}'. Valid keys: ${i.join(", ")}`),process.exit(1)),s.unset(o),console.log(`Unset ${o}`);return}console.error(`Unknown action: ${n}`),process.exit(1)}export{d as runConfig};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{c as a,d as b,e as c,f as d}from"./chunk-
|
|
2
|
+
import{c as a,d as b,e as c,f as d}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";export{b as getApiUrl,d as getAuthConfig,a as getConfig,c as getHubUrl};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{c as i}from"./chunk-
|
|
2
|
+
import{c as i}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import{Box as r,Text as e,render as l}from"ink";import{jsx as t,jsxs as n}from"react/jsx-runtime";function a(){let o=i();return n(r,{flexDirection:"column",children:[t(e,{bold:!0,children:"entrydesk config"}),t(e,{children:" "}),t(e,{children:"Manage CLI configuration"}),t(e,{children:" "}),t(e,{bold:!0,children:"Usage:"}),t(e,{children:" entrydesk config List all configuration"}),n(e,{children:[" entrydesk config get ","<key>"," Get a configuration value"]}),n(e,{children:[" ","entrydesk config set ","<key>"," ","<value>"," Set a configuration value"]}),n(e,{children:[" ","entrydesk config unset ","<key>"," Remove a configuration value"]}),t(e,{children:" "}),t(e,{bold:!0,children:"Available keys:"}),n(e,{children:[" apiUrl API server URL (default: ",o.apiUrl,")"]}),n(e,{children:[" hubUrl Hub server URL (default: ",o.hubUrl,")"]}),t(e,{children:" "}),t(e,{bold:!0,children:"Examples:"}),t(e,{children:" entrydesk config set apiUrl http://localhost:3200"}),t(e,{children:" entrydesk config get apiUrl"}),t(e,{children:" entrydesk config unset apiUrl"})]})}function g(){l(t(a,{}))}export{g as renderConfigHelp};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as c,q as s,s as i}from"./chunk-
|
|
2
|
+
import{h as c,q as s,s as i}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";async function p(l){try{let n,t;try{let o=await s();n=o.accessToken,t=o.workspaceId}catch(o){let r=o instanceof Error?o.message:"Authentication failed";console.error(r),process.exit(1)}let a=new c,{connectors:e}=await a.getConnectors(n,t);if(l.json){console.log(JSON.stringify(e));return}if(e.length===0){console.log("No connectors found in this workspace.");return}console.log(`Connected Connectors (${e.length}):
|
|
3
3
|
`);for(let o of e){let r=o.connected?"connected":"disconnected";console.log(` ${o.name} (${r})`),console.log(` Provider: ${o.provider}`),console.log(` ID: ${o.id}`),console.log("")}}catch(n){i(n)}}export{p as runConnectors};
|
|
@@ -13,6 +13,7 @@ Commands:
|
|
|
13
13
|
agents List available agents
|
|
14
14
|
meeting List, view, or manage meetings and recordings
|
|
15
15
|
workflow List, create, run, or manage workflows
|
|
16
|
+
notifications List, count, or mark notifications read
|
|
16
17
|
skills List or upload skills
|
|
17
18
|
schedules List or manage scheduled tasks
|
|
18
19
|
connectors List connected connectors
|
|
@@ -136,6 +137,9 @@ Profiles:
|
|
|
136
137
|
Skills:
|
|
137
138
|
entrydesk skills # List skills
|
|
138
139
|
entrydesk skills list --me # List my skills
|
|
140
|
+
entrydesk skills toggle <id> --disable # Turn a skill off for yourself
|
|
141
|
+
entrydesk skills versions <id> # Version history
|
|
142
|
+
entrydesk skills share <id> --add-user <userId> --role editor
|
|
139
143
|
entrydesk skills upload <file.zip> # Upload a skill zip
|
|
140
144
|
entrydesk skills upload <folder> # Upload a skill folder
|
|
141
145
|
entrydesk skills upload <file.zip> --force
|
|
@@ -143,8 +147,12 @@ Skills:
|
|
|
143
147
|
|
|
144
148
|
Agents:
|
|
145
149
|
entrydesk agents # List agents
|
|
150
|
+
entrydesk agents --mine # List your own agents (with publish state)
|
|
151
|
+
entrydesk agents show <agentId> # Show one agent's full details
|
|
146
152
|
entrydesk agents create --name "My Agent" --description "..." --system-prompt "..." --model-id <modelId>
|
|
147
153
|
entrydesk agents update <agentId> --name "New Name" --description "..." --system-prompt "..." --model-id <modelId>
|
|
154
|
+
entrydesk agents publish <agentId> # Publish to the workspace
|
|
155
|
+
entrydesk agents share <agentId> --add-user <userId> --role editor
|
|
148
156
|
entrydesk agents delete <agentId>
|
|
149
157
|
|
|
150
158
|
Meetings:
|
|
@@ -174,6 +182,13 @@ Workflows:
|
|
|
174
182
|
entrydesk workflow run-get <workflowId> <runId>
|
|
175
183
|
entrydesk workflow share <workflowId> --add-user <userId> --role editor
|
|
176
184
|
|
|
185
|
+
Notifications:
|
|
186
|
+
entrydesk notifications # List notifications
|
|
187
|
+
entrydesk notifications --tab action # Only actionable ones
|
|
188
|
+
entrydesk notifications unread # Unread count
|
|
189
|
+
entrydesk notifications read <id> # Mark one read
|
|
190
|
+
entrydesk notifications read-all # Mark all read
|
|
191
|
+
|
|
177
192
|
Schedules:
|
|
178
193
|
entrydesk schedules # List schedules
|
|
179
194
|
entrydesk schedules get <id> # Show schedule details
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as c,s as p}from"./chunk-OMJF4KR2.js";import"./chunk-KURQCTT3.js";function u(s,m,d=!1){let r={},e={};for(let o=d?0:1;o<s.length;o++){let t=s[o];if(t==="--json")r.json=!0;else if(t==="--help"||t==="-h")r.help=!0;else if(t==="--profile")r.profile=s[++o];else switch(m){case"login":break;case"task":if(t==="-m"||t==="--message")e.message=s[++o];else if(t==="-a"||t==="--agent")e.agentId=s[++o];else if(t==="--model")e.model=s[++o];else if(t==="--connectors"){let i=s[++o];e.connectors=i?.split(",").map(n=>n.trim())}else t==="-i"||t==="--interactive"?e.interactive=!0:t==="--full-output"?e.fullOutput=!0:t==="-c"||t==="--continue"?e.continue=parseInt(s[++o],10):t==="--plain"?e.plain=!0:t==="--output"?e.output=s[++o]:t==="--file-system"?e.fileSystem=!0:t==="--no-file-system"?e.noFileSystem=!0:t==="--dangerously-auto-approve-tools"&&(e.dangerouslyAutoApproveTools=!0);break;case"agents":if(t==="--name")e.name=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--system-prompt")e.systemPrompt=s[++o];else if(t==="--model-id")e.modelId=s[++o];else if(t==="--connector-ids"){let i=s[++o];e.connectorIds=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--capabilities"){let i=s[++o];e.capabilities=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--conversation-starters"){let i=s[++o];e.conversationStarters=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--tools"){let i=s[++o];e.tools=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--icon-id")e.iconId=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else t==="--all"?e.all=!0:t.startsWith("-")||(e.action?e.agentId=t:e.action=t);break;case"meeting":if(t==="--filter"){let i=s[++o];i==="mine"||i==="shared"||i==="all"?e.filter=i:(console.error("--filter must be one of: mine, shared, all"),process.exit(1))}else if(t==="--search")e.search=s[++o];else if(t==="--sort"){let i=s[++o];i==="updated"||i==="updated_at"?e.sortBy="updated_at":i==="start"||i==="start_time"?e.sortBy="start_time":(console.error("--sort must be one of: updated, start"),process.exit(1))}else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else if(t==="--all")e.all=!0;else if(t==="--title")e.title=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--location")e.location=s[++o];else if(t==="--start")e.startTime=s[++o];else if(t==="--end")e.endTime=s[++o];else if(t==="--conference-link")e.conferenceLink=s[++o];else if(t==="--notes")e.notes=s[++o];else if(t==="--status"){let i=s[++o];i==="scheduled"||i==="in_progress"||i==="completed"||i==="cancelled"?e.status=i:(console.error("--status must be one of: scheduled, in_progress, completed, cancelled"),process.exit(1))}else if(t==="--visibility"){let i=s[++o];i==="private"||i==="workspace"?e.visibility=i:(console.error("--visibility must be one of: private, workspace"),process.exit(1))}else if(t==="--raw")e.raw=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--add-team")e.addTeam=s[++o];else if(t==="--remove-team")e.removeTeam=s[++o];else if(t==="--role"){let i=s[++o];i==="viewer"||i==="editor"?e.role=i:(console.error("--role must be one of: viewer, editor"),process.exit(1))}else t.startsWith("-")||(e.action?e.action==="transcript"?e.recordingId=t:e.meetingId=t:e.action=t);break;case"workflow":if(t==="--search")e.search=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else if(t==="--all")e.all=!0;else if(t==="--name")e.name=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--file")e.file=s[++o];else if(t==="--activate")e.activate=!0;else if(t==="--deactivate")e.deactivate=!0;else if(t==="--show-source")e.showSource=!0;else if(t==="--args")e.args=s[++o];else if(t==="--args-file")e.argsFile=s[++o];else if(t==="--wait")e.wait=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--role"){let i=s[++o];i==="owner"||i==="editor"||i==="viewer"?e.role=i:(console.error("--role must be one of: owner, editor, viewer"),process.exit(1))}else t.startsWith("-")||(e.action?e.workflowId?e.action==="run-get"&&!e.runId?e.runId=t:(console.error(`Unexpected positional argument: ${t}`),process.exit(1)):e.workflowId=t:e.action=t);break;case"skills":t==="--force"?e.force=!0:t==="--me"||t==="--mine"?e.createdBy="me":t.startsWith("-")||(e.action?e.configKey=t:e.action=t);break;case"schedules":if(t==="--name")e.name=s[++o];else if(t==="--prompt")e.prompt=s[++o];else if(t==="--agent-id")e.agentId=s[++o];else if(t==="--starts-at")e.startsAt=s[++o];else if(t==="--utc-offset")e.utcOffset=s[++o];else if(t==="--repeat-type"){let i=s[++o];i==="no-repeat"||i==="minutes"||i==="hours"||i==="days"||i==="weeks"||i==="months"?e.repeatType=i:(console.error("--repeat-type must be one of: no-repeat, minutes, hours, days, weeks, months"),process.exit(1))}else if(t==="--every")e.every=parseInt(s[++o],10);else if(t==="--time")e.time=s[++o];else if(t==="--days-of-week"){let i=s[++o];e.daysOfWeek=i?.split(",").map(n=>parseInt(n.trim(),10)).filter(n=>!isNaN(n))}else if(t==="--days-of-month"){let i=s[++o];e.daysOfMonth=i?.split(",").map(n=>parseInt(n.trim(),10)).filter(n=>!isNaN(n))}else if(t==="--last-day-of-month")e.lastDayOfMonth=!0;else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else t==="--all"?e.all=!0:t.startsWith("-")||(e.action?e.scheduleId=t:e.action=t);break;case"config":!e.action&&!t.startsWith("-")?e.action=t:!e.configKey&&!t.startsWith("-")?e.configKey=t:!e.value&&!t.startsWith("-")&&(e.value=t);break;case"profile":!e.action&&!t.startsWith("-")?e.action=t:!e.name&&!t.startsWith("-")?e.name=t:!e.value&&!t.startsWith("-")&&(e.value=t);break;case"tasks":if(t==="--share"||t==="-s")e.shareId=s[++o];else if(t==="--full-output")e.fullOutput=!0;else if(t==="--output")e.output=s[++o];else if(t==="--search"||t==="-q")e.search=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>50)&&(console.error("--limit must be an integer between 1 and 50"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else!e.taskId&&!t.startsWith("-")&&(e.taskId=t);break;case"budget":!e.action&&!t.startsWith("-")?e.action=t:!e.configKey&&!t.startsWith("-")&&(e.configKey=t);break;case"usage":if(t==="--limit")e.limit=parseInt(s[++o],10);else if(t==="--sort-by"){let i=s[++o];(i==="cost"||i==="operations")&&(e.sortBy=i)}break;case"mcp-server":t==="--http"?e.http=!0:(t==="-p"||t==="--port")&&(e.port=parseInt(s[++o],10));break;case"tool":t==="-i"||t==="--input"?e.input=s[++o]:t==="-f"||t==="--input-file"?e.inputFile=s[++o]:t==="-p"||t==="--prefix"?e.prefix=s[++o]:t.startsWith("-")||(e.action?e.name||(e.name=t):e.action=t);break;case"workspaces":!e.action&&!t.startsWith("-")&&(e.action=t);break;default:break}}switch(m){case"login":return{command:"login",...r,...e};case"logout":return{command:"logout",...r,...e};case"status":return{command:"status",...r,...e};case"workspaces":return{command:"workspaces",...r,...e};case"agents":return{command:"agents",...r,...e};case"meeting":return{command:"meeting",...r,...e};case"workflow":return{command:"workflow",...r,...e};case"models":return{command:"models",...r,...e};case"connectors":return{command:"connectors",...r,...e};case"skills":return{command:"skills",...r,...e};case"schedules":return{command:"schedules",...r,...e};case"config":return{command:"config",...r,...e};case"profile":return{command:"profile",...r,...e};case"task":return{command:"task",...r,...e};case"tasks":return{command:"tasks",...r,...e};case"budget":return{command:"budget",...r,...e};case"usage":return{command:"usage",...r,...e};case"mcp-server":return{command:"mcp-server",...r,...e};case"tool":return{command:"tool",...r,...e};case"version":return{command:"version",...r,...e};default:return{command:"help",...r,...e}}}var l=process.argv.slice(2);if(l[0]==="--help"||l[0]==="-h"){let{printHelp:s}=await import("./help-DLIL7L47.js");s(),process.exit(0)}if(l[0]==="--version"||l[0]==="-v"){let{printVersion:s}=await import("./version-NFCMR36F.js");s(),process.exit(0)}var f=!l[0]||l[0].startsWith("-"),k=f?"task":l[0],a=u(l,k,f);f&&a.command==="task"&&(a.interactive=!0);async function h(){try{if(a.command!=="profile"){let s=a.profile||c.getCurrentProfileName();c.ensureProfileExists(s),c.setOverrideProfile(s)}switch(a.command){case"login":{let{runLogin:s}=await import("./login-5TRUDZH3.js");await s(a);break}case"logout":{let{runLogout:s}=await import("./logout-C4ZVOAXW.js");await s(a);break}case"status":{let{runStatus:s}=await import("./status-UWLIBEDO.js");await s(a);break}case"workspaces":{let{runWorkspaces:s}=await import("./workspaces-XVJ6D5LB.js");await s(a);break}case"agents":{let{runAgents:s}=await import("./agents-FWWY2UX2.js");await s(a);break}case"meeting":{let{runMeeting:s}=await import("./meeting-PQPNGSK3.js");await s(a);break}case"workflow":{let{runWorkflow:s}=await import("./workflow-CWICWD27.js");await s(a);break}case"models":{let{runModels:s}=await import("./models-IZQP4QT4.js");await s(a);break}case"connectors":{let{runConnectors:s}=await import("./connectors-2E7IODR6.js");await s(a);break}case"skills":{let{runSkills:s}=await import("./skills-DMGNV22F.js");await s(a);break}case"schedules":{let{runSchedules:s}=await import("./schedules-22YXGZTW.js");await s(a);break}case"tasks":{let{runTasks:s}=await import("./tasks-6VYGGCFY.js");await s(a);break}case"budget":{let{runBudget:s}=await import("./budget-AR4CC2JZ.js");await s(a);break}case"usage":{let{runUsage:s}=await import("./usage-BGFOW5QU.js");await s(a);break}case"config":{if(a.action==="help"||l[1]==="--help"){let{renderConfigHelp:s}=await import("./config-help-HOFPAPPH.js");s()}else{let{runConfig:s}=await import("./config-FJGJZU2R.js");await s(a)}break}case"profile":{let{runProfile:s}=await import("./profile-XKT6OFBV.js");await s(a);break}case"task":{if(l[1]==="--help"||l[1]==="-h"){let{printHelp:s}=await import("./help-DLIL7L47.js");s()}else{let{runTask:s}=await import("./task-TPHKNZRY.js");await s(a)}break}case"mcp-server":{let{startMcpServer:s}=await import("./mcp-3LQ2G5ZC.js");await s({mode:a.http?"http":"stdio",port:a.port});break}case"tool":{let{runTool:s}=await import("./tool-MZCUJVUJ.js");await s(a);break}case"version":{let{printVersion:s}=await import("./version-NFCMR36F.js");s();break}default:{let{printHelp:s}=await import("./help-DLIL7L47.js");s();break}}}catch(s){p(s)}}h();
|
|
2
|
+
import{a as c,s as u}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function p(s,m,d=!1){let r={},e={};for(let o=d?0:1;o<s.length;o++){let t=s[o];if(t==="--json")r.json=!0;else if(t==="--help"||t==="-h")r.help=!0;else if(t==="--profile")r.profile=s[++o];else switch(m){case"login":break;case"task":if(t==="-m"||t==="--message")e.message=s[++o];else if(t==="-a"||t==="--agent")e.agentId=s[++o];else if(t==="--model")e.model=s[++o];else if(t==="--connectors"){let i=s[++o];e.connectors=i?.split(",").map(n=>n.trim())}else t==="-i"||t==="--interactive"?e.interactive=!0:t==="--full-output"?e.fullOutput=!0:t==="-c"||t==="--continue"?e.continue=parseInt(s[++o],10):t==="--plain"?e.plain=!0:t==="--output"?e.output=s[++o]:t==="--file-system"?e.fileSystem=!0:t==="--no-file-system"?e.noFileSystem=!0:t==="--dangerously-auto-approve-tools"&&(e.dangerouslyAutoApproveTools=!0);break;case"agents":if(t==="--name")e.name=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--system-prompt")e.systemPrompt=s[++o];else if(t==="--model-id")e.modelId=s[++o];else if(t==="--connector-ids"){let i=s[++o];e.connectorIds=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--capabilities"){let i=s[++o];e.capabilities=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--conversation-starters"){let i=s[++o];e.conversationStarters=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--tools"){let i=s[++o];e.tools=i?.split(",").map(n=>n.trim()).filter(Boolean)}else if(t==="--icon-id")e.iconId=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else if(t==="--all")e.all=!0;else if(t==="--mine"||t==="--me")e.mine=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--role"){let i=s[++o];i==="owner"||i==="editor"||i==="viewer"?e.role=i:(console.error("--role must be one of: owner, editor, viewer"),process.exit(1))}else t.startsWith("-")||(e.action?e.agentId=t:e.action=t);break;case"meeting":if(t==="--filter"){let i=s[++o];i==="mine"||i==="shared"||i==="all"?e.filter=i:(console.error("--filter must be one of: mine, shared, all"),process.exit(1))}else if(t==="--search")e.search=s[++o];else if(t==="--sort"){let i=s[++o];i==="updated"||i==="updated_at"?e.sortBy="updated_at":i==="start"||i==="start_time"?e.sortBy="start_time":(console.error("--sort must be one of: updated, start"),process.exit(1))}else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else if(t==="--all")e.all=!0;else if(t==="--title")e.title=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--location")e.location=s[++o];else if(t==="--start")e.startTime=s[++o];else if(t==="--end")e.endTime=s[++o];else if(t==="--conference-link")e.conferenceLink=s[++o];else if(t==="--notes")e.notes=s[++o];else if(t==="--status"){let i=s[++o];i==="scheduled"||i==="in_progress"||i==="completed"||i==="cancelled"?e.status=i:(console.error("--status must be one of: scheduled, in_progress, completed, cancelled"),process.exit(1))}else if(t==="--visibility"){let i=s[++o];i==="private"||i==="workspace"?e.visibility=i:(console.error("--visibility must be one of: private, workspace"),process.exit(1))}else if(t==="--raw")e.raw=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--add-team")e.addTeam=s[++o];else if(t==="--remove-team")e.removeTeam=s[++o];else if(t==="--role"){let i=s[++o];i==="viewer"||i==="editor"?e.role=i:(console.error("--role must be one of: viewer, editor"),process.exit(1))}else t.startsWith("-")||(e.action?e.action==="transcript"?e.recordingId=t:e.meetingId=t:e.action=t);break;case"workflow":if(t==="--search")e.search=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else if(t==="--all")e.all=!0;else if(t==="--name")e.name=s[++o];else if(t==="--description")e.description=s[++o];else if(t==="--file")e.file=s[++o];else if(t==="--activate")e.activate=!0;else if(t==="--deactivate")e.deactivate=!0;else if(t==="--show-source")e.showSource=!0;else if(t==="--args")e.args=s[++o];else if(t==="--args-file")e.argsFile=s[++o];else if(t==="--wait")e.wait=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--role"){let i=s[++o];i==="owner"||i==="editor"||i==="viewer"?e.role=i:(console.error("--role must be one of: owner, editor, viewer"),process.exit(1))}else t.startsWith("-")||(e.action?e.workflowId?e.action==="run-get"&&!e.runId?e.runId=t:(console.error(`Unexpected positional argument: ${t}`),process.exit(1)):e.workflowId=t:e.action=t);break;case"notifications":if(t==="--tab"){let i=s[++o];i==="all"||i==="action"||i==="info"?e.tab=i:(console.error("--tab must be one of: all, action, info"),process.exit(1))}else if(t==="--event-type")e.eventType=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else t==="--all"?e.all=!0:t.startsWith("-")||(e.action?e.notificationId=t:e.action=t);break;case"skills":if(t==="--force")e.force=!0;else if(t==="--me"||t==="--mine")e.createdBy="me";else if(t==="--enable")e.enable=!0;else if(t==="--disable")e.disable=!0;else if(t==="--add-user")e.addUser=s[++o];else if(t==="--remove-user")e.removeUser=s[++o];else if(t==="--role"){let i=s[++o];i==="owner"||i==="editor"||i==="viewer"?e.role=i:(console.error("--role must be one of: owner, editor, viewer"),process.exit(1))}else t.startsWith("-")||(e.action?e.configKey=t:e.action=t);break;case"schedules":if(t==="--name")e.name=s[++o];else if(t==="--prompt")e.prompt=s[++o];else if(t==="--agent-id")e.agentId=s[++o];else if(t==="--starts-at")e.startsAt=s[++o];else if(t==="--utc-offset")e.utcOffset=s[++o];else if(t==="--repeat-type"){let i=s[++o];i==="no-repeat"||i==="minutes"||i==="hours"||i==="days"||i==="weeks"||i==="months"?e.repeatType=i:(console.error("--repeat-type must be one of: no-repeat, minutes, hours, days, weeks, months"),process.exit(1))}else if(t==="--every")e.every=parseInt(s[++o],10);else if(t==="--time")e.time=s[++o];else if(t==="--days-of-week"){let i=s[++o];e.daysOfWeek=i?.split(",").map(n=>parseInt(n.trim(),10)).filter(n=>!isNaN(n))}else if(t==="--days-of-month"){let i=s[++o];e.daysOfMonth=i?.split(",").map(n=>parseInt(n.trim(),10)).filter(n=>!isNaN(n))}else if(t==="--last-day-of-month")e.lastDayOfMonth=!0;else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>100)&&(console.error("--limit must be an integer between 1 and 100"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else t==="--all"?e.all=!0:t.startsWith("-")||(e.action?e.scheduleId=t:e.action=t);break;case"config":!e.action&&!t.startsWith("-")?e.action=t:!e.configKey&&!t.startsWith("-")?e.configKey=t:!e.value&&!t.startsWith("-")&&(e.value=t);break;case"profile":!e.action&&!t.startsWith("-")?e.action=t:!e.name&&!t.startsWith("-")?e.name=t:!e.value&&!t.startsWith("-")&&(e.value=t);break;case"tasks":if(t==="--share"||t==="-s")e.shareId=s[++o];else if(t==="--full-output")e.fullOutput=!0;else if(t==="--output")e.output=s[++o];else if(t==="--search"||t==="-q")e.search=s[++o];else if(t==="--limit"){let i=parseInt(s[++o],10);(isNaN(i)||i<1||i>50)&&(console.error("--limit must be an integer between 1 and 50"),process.exit(1)),e.limit=i}else if(t==="--next-key"){let i=s[++o];i||(console.error("--next-key requires a value"),process.exit(1)),e.nextKey=i}else!e.taskId&&!t.startsWith("-")&&(e.taskId=t);break;case"budget":!e.action&&!t.startsWith("-")?e.action=t:!e.configKey&&!t.startsWith("-")&&(e.configKey=t);break;case"usage":if(t==="--limit")e.limit=parseInt(s[++o],10);else if(t==="--sort-by"){let i=s[++o];(i==="cost"||i==="operations")&&(e.sortBy=i)}break;case"mcp-server":t==="--http"?e.http=!0:(t==="-p"||t==="--port")&&(e.port=parseInt(s[++o],10));break;case"tool":t==="-i"||t==="--input"?e.input=s[++o]:t==="-f"||t==="--input-file"?e.inputFile=s[++o]:t==="-p"||t==="--prefix"?e.prefix=s[++o]:t.startsWith("-")||(e.action?e.name||(e.name=t):e.action=t);break;case"workspaces":!e.action&&!t.startsWith("-")&&(e.action=t);break;default:break}}switch(m){case"login":return{command:"login",...r,...e};case"logout":return{command:"logout",...r,...e};case"status":return{command:"status",...r,...e};case"workspaces":return{command:"workspaces",...r,...e};case"agents":return{command:"agents",...r,...e};case"meeting":return{command:"meeting",...r,...e};case"workflow":return{command:"workflow",...r,...e};case"notifications":return{command:"notifications",...r,...e};case"models":return{command:"models",...r,...e};case"connectors":return{command:"connectors",...r,...e};case"skills":return{command:"skills",...r,...e};case"schedules":return{command:"schedules",...r,...e};case"config":return{command:"config",...r,...e};case"profile":return{command:"profile",...r,...e};case"task":return{command:"task",...r,...e};case"tasks":return{command:"tasks",...r,...e};case"budget":return{command:"budget",...r,...e};case"usage":return{command:"usage",...r,...e};case"mcp-server":return{command:"mcp-server",...r,...e};case"tool":return{command:"tool",...r,...e};case"version":return{command:"version",...r,...e};default:return{command:"help",...r,...e}}}var l=process.argv.slice(2);if(l[0]==="--help"||l[0]==="-h"){let{printHelp:s}=await import("./help-CJZSDNUL.js");s(),process.exit(0)}if(l[0]==="--version"||l[0]==="-v"){let{printVersion:s}=await import("./version-OVZYDUUX.js");s(),process.exit(0)}var f=!l[0]||l[0].startsWith("-"),k=f?"task":l[0],a=p(l,k,f);f&&a.command==="task"&&(a.interactive=!0);async function b(){try{if(a.command!=="profile"){let s=a.profile||c.getCurrentProfileName();c.ensureProfileExists(s),c.setOverrideProfile(s)}switch(a.command){case"login":{let{runLogin:s}=await import("./login-GGUSZBMP.js");await s(a);break}case"logout":{let{runLogout:s}=await import("./logout-DDKAWMZ4.js");await s(a);break}case"status":{let{runStatus:s}=await import("./status-Y4MUTFMJ.js");await s(a);break}case"workspaces":{let{runWorkspaces:s}=await import("./workspaces-ENEOI2LZ.js");await s(a);break}case"agents":{let{runAgents:s}=await import("./agents-7XASAILN.js");await s(a);break}case"meeting":{let{runMeeting:s}=await import("./meeting-DWJABQ3Q.js");await s(a);break}case"workflow":{let{runWorkflow:s}=await import("./workflow-TXNP3Z53.js");await s(a);break}case"notifications":{let{runNotifications:s}=await import("./notifications-XQVFALKW.js");await s(a);break}case"models":{let{runModels:s}=await import("./models-LBT6N52A.js");await s(a);break}case"connectors":{let{runConnectors:s}=await import("./connectors-KHWU2ZWF.js");await s(a);break}case"skills":{let{runSkills:s}=await import("./skills-QIEVXMWP.js");await s(a);break}case"schedules":{let{runSchedules:s}=await import("./schedules-JPOOWXID.js");await s(a);break}case"tasks":{let{runTasks:s}=await import("./tasks-LJHCATKL.js");await s(a);break}case"budget":{let{runBudget:s}=await import("./budget-E4MIKV33.js");await s(a);break}case"usage":{let{runUsage:s}=await import("./usage-R366J6YU.js");await s(a);break}case"config":{if(a.action==="help"||l[1]==="--help"){let{renderConfigHelp:s}=await import("./config-help-ZWR52H55.js");s()}else{let{runConfig:s}=await import("./config-JRJVFRT3.js");await s(a)}break}case"profile":{let{runProfile:s}=await import("./profile-QNR7NAEU.js");await s(a);break}case"task":{if(l[1]==="--help"||l[1]==="-h"){let{printHelp:s}=await import("./help-CJZSDNUL.js");s()}else{let{runTask:s}=await import("./task-C3ITCXH4.js");await s(a)}break}case"mcp-server":{let{startMcpServer:s}=await import("./mcp-VIM4EXHV.js");await s({mode:a.http?"http":"stdio",port:a.port});break}case"tool":{let{runTool:s}=await import("./tool-HOWJ4M6M.js");await s(a);break}case"version":{let{printVersion:s}=await import("./version-OVZYDUUX.js");s();break}default:{let{printHelp:s}=await import("./help-CJZSDNUL.js");s();break}}}catch(s){u(s)}}b();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{g as l,h as c,i as r,l as a}from"./chunk-
|
|
2
|
+
import{g as l,h as c,i as r,l as a}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";async function h(o){let i=r();if(i?.authSource==="sandbox-env"){o.json?console.log(JSON.stringify({alreadyAuthenticated:!0,authSource:i.authSource,workspaceId:i.workspaceId})):(console.log(`Already authenticated via ${i.label}.`),console.log("No login required \u2014 environment credentials are active."));return}if(process.env.DEBUG){let{getApiUrl:s,getHubUrl:t}=await import("./config-MAO5TQEB.js");console.log(`[DEBUG] Hub URL: ${t()}`),console.log(`[DEBUG] API URL: ${s()}`)}let e=await a({onDeviceCodeReceived:(s,t)=>{o.json||(console.log(""),console.log("To authenticate, please:"),console.log(""),console.log(` 1. Visit: ${t}`),console.log(` 2. Enter code: ${s}`),console.log(""))},onBrowserOpening:()=>{o.json||console.log("Opening browser...")},onWaitingForAuthorization:()=>{o.json||console.log("Waiting for authorization...")},onAuthorized:()=>{o.json||console.log("Authorization successful!")}}),g=new c,{workspaces:u}=await g.getWorkspaces(e.accessToken),n=u[0];await l.saveAll({accessToken:e.accessToken,refreshToken:e.refreshToken,email:e.email,workspaceId:n?.id}),o.json?console.log(JSON.stringify({email:e.email,workspaceId:n?.id,workspaceName:n?.name})):(console.log(`Logged in as ${e.email}`),n&&console.log(`Workspace: ${n.name}`))}export{h as runLogin};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{g as r,h as e,k as t,s as n}from"./chunk-
|
|
2
|
+
import{g as r,h as e,k as t,s as n}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";async function f(i){try{let o=await r.getAll();if(!o){console.log("Not logged in");return}try{o.refreshToken&&await new e().revokeOAuthToken({token:o.refreshToken,clientId:t})}catch{}await r.clear(),console.log("Logged out successfully")}catch(o){n(o)}}export{f as runLogout};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{c as m,g as u,n as y,o as w,q as f}from"./chunk-
|
|
2
|
+
import{c as m,g as u,n as y,o as w,q as f}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import h from"http";import{stderr as T}from"process";import{Client as k}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as C}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{Server as v}from"@modelcontextprotocol/sdk/server/index.js";import{StdioServerTransport as P}from"@modelcontextprotocol/sdk/server/stdio.js";import{StreamableHTTPServerTransport as A}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import{CallToolRequestSchema as O,ListToolsRequestSchema as E}from"@modelcontextprotocol/sdk/types.js";function a(c){T.write(`${c}
|
|
3
3
|
`)}async function g(c,e,o){let r=new k({name:"entrydesk-cli-proxy",version:"1.0.0"}),i=new URL(`${c}/v1/workspaces/${o}/mcp`),t=new C(i,{requestInit:{headers:{Authorization:`Bearer ${e}`}}});return await r.connect(t),r}function S(c){let e=new v({name:"entrydesk-cli",version:"1.0.0"},{capabilities:{tools:{}}});return e.setRequestHandler(E,async()=>({tools:(await(await c()).listTools()).tools})),e.setRequestHandler(O,async o=>{let{name:r,arguments:i}=o.params,n=await(await c()).callTool({name:r,arguments:i}),l=Array.isArray(n.content)?[...n.content]:[];return n.structuredContent&&l.push({type:"text",text:JSON.stringify(n.structuredContent,null,2)}),{content:l,structuredContent:n.structuredContent,isError:n.isError}}),e}async function H(c,e,o){let r=h.createServer(async(i,t)=>{if(i.method==="OPTIONS"){t.setHeader("Access-Control-Allow-Origin","*"),t.setHeader("Access-Control-Allow-Methods","GET, POST, DELETE, OPTIONS"),t.setHeader("Access-Control-Allow-Headers","Content-Type, Accept"),t.writeHead(204),t.end();return}if(i.url!=="/mcp"){t.writeHead(404,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:"Not found"}));return}let n=S(c),l=new A({sessionIdGenerator:void 0});if(t.setHeader("Access-Control-Allow-Origin","*"),t.on("close",()=>{l.close(),n.close()}),await n.connect(l),i.method==="POST"){let p="";i.on("data",s=>{p+=s.toString()}),i.on("end",async()=>{try{let s=JSON.parse(p);await l.handleRequest(i,t,s)}catch{t.writeHead(400,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:"Invalid JSON"}))}})}else await l.handleRequest(i,t)});r.listen(o,()=>{a(`EntryDesk MCP server running at http://localhost:${o}/mcp`),a("Press Ctrl+C to stop")}),process.on("SIGINT",async()=>{a(`
|
|
4
4
|
Shutting down...`),r.close(),await e(),process.exit(0)}),process.on("SIGTERM",async()=>{r.close(),await e(),process.exit(0)})}async function x(c,e){let o=S(c),r=new P;r.onclose=async()=>{await e()},await o.connect(r)}async function L(c={mode:"stdio"}){process.on("unhandledRejection",e=>{console.error("[entrydesk-mcp] Unhandled rejection:",e)}),process.on("uncaughtException",e=>{console.error("[entrydesk-mcp] Uncaught exception:",e)});try{a("[entrydesk-mcp] Starting MCP server...");let e,o;try{let s=await f();e=s.accessToken,o=s.workspaceId}catch(s){let d=s instanceof Error?s.message:"Authentication failed";console.error(d),process.exit(1)}let{apiUrl:r,mcp:i}=m();a(`[entrydesk-mcp] Connecting to ${r}...`),a(`[entrydesk-mcp] Workspace: ${o}`);let t=await g(r,e,o);a("[entrydesk-mcp] Connected to EntryDesk API");let n=null,l=async()=>y(e)?n||(n=(async()=>{a("[entrydesk-mcp] Token expiring soon, refreshing...");let s=await u.getAll();if(!s?.accessToken)throw new Error("Not logged in. Please run `entrydesk login` again.");let d=await w(s);if(d!==e){e=d;try{await t.close()}catch{}t=await g(r,e,o),a("[entrydesk-mcp] Token refreshed, reconnected")}return t})().finally(()=>{n=null}),n):t,p=async()=>{try{await t.close()}catch{}};if(c.mode==="http"){let s=c.port??i.httpPort;await H(l,p,s)}else a("[entrydesk-mcp] Starting stdio server..."),await x(l,p),a("[entrydesk-mcp] Stdio server started")}catch(e){console.error("[entrydesk-mcp] Fatal error:",e),process.exit(1)}}export{L as startMcpServer};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as Wu,q as Ku,s as Ju}from"./chunk-OMJF4KR2.js";import{c as de}from"./chunk-KURQCTT3.js";var r={};de(r,{$brand:()=>po,$input:()=>Ua,$output:()=>Aa,NEVER:()=>mo,TimePrecision:()=>Ca,ZodAny:()=>zc,ZodArray:()=>Pc,ZodBase64:()=>Cn,ZodBase64URL:()=>Ln,ZodBigInt:()=>xt,ZodBigIntFormat:()=>Fn,ZodBoolean:()=>bt,ZodCIDRv4:()=>Nn,ZodCIDRv6:()=>Dn,ZodCUID:()=>jn,ZodCUID2:()=>En,ZodCatch:()=>Qc,ZodCodec:()=>tr,ZodCustom:()=>rr,ZodCustomStringFormat:()=>ht,ZodDate:()=>Xt,ZodDefault:()=>Kc,ZodDiscriminatedUnion:()=>Ac,ZodE164:()=>Zn,ZodEmail:()=>wn,ZodEmoji:()=>zn,ZodEnum:()=>ft,ZodError:()=>av,ZodExactOptional:()=>Gc,ZodFile:()=>Fc,ZodFirstPartyTypeKind:()=>mu,ZodFunction:()=>uu,ZodGUID:()=>Bt,ZodIPv4:()=>Un,ZodIPv6:()=>Rn,ZodISODate:()=>_n,ZodISODateTime:()=>xn,ZodISODuration:()=>$n,ZodISOTime:()=>yn,ZodIntersection:()=>Uc,ZodIssueCode:()=>cv,ZodJWT:()=>Mn,ZodKSUID:()=>An,ZodLazy:()=>au,ZodLiteral:()=>Mc,ZodMAC:()=>_c,ZodMap:()=>Lc,ZodNaN:()=>tu,ZodNanoID:()=>Tn,ZodNever:()=>jc,ZodNonOptional:()=>Jn,ZodNull:()=>Ic,ZodNullable:()=>Wc,ZodNumber:()=>vt,ZodNumberFormat:()=>Ce,ZodObject:()=>Yt,ZodOptional:()=>Kn,ZodPipe:()=>er,ZodPrefault:()=>qc,ZodPreprocess:()=>ru,ZodPromise:()=>cu,ZodReadonly:()=>nu,ZodRealError:()=>W,ZodRecord:()=>pt,ZodSet:()=>Zc,ZodString:()=>gt,ZodStringFormat:()=>j,ZodSuccess:()=>Yc,ZodSymbol:()=>Sc,ZodTemplateLiteral:()=>iu,ZodTransform:()=>Vc,ZodTuple:()=>Nc,ZodType:()=>k,ZodULID:()=>Pn,ZodURL:()=>qt,ZodUUID:()=>se,ZodUndefined:()=>kc,ZodUnion:()=>Qt,ZodUnknown:()=>Tc,ZodVoid:()=>Ec,ZodXID:()=>On,ZodXor:()=>Oc,_ZodString:()=>In,_default:()=>Jc,_function:()=>Nm,any:()=>pm,array:()=>Ht,base64:()=>Xd,base64url:()=>Hd,bigint:()=>cm,boolean:()=>$c,catch:()=>eu,check:()=>Dm,cidrv4:()=>Jd,cidrv6:()=>qd,clone:()=>Z,codec:()=>Om,coerce:()=>pu,config:()=>O,core:()=>fe,cuid:()=>Zd,cuid2:()=>Md,custom:()=>Cm,date:()=>gm,decode:()=>pc,decodeAsync:()=>gc,describe:()=>Lm,discriminatedUnion:()=>ym,e164:()=>Yd,email:()=>Ed,emoji:()=>Cd,encode:()=>mc,encodeAsync:()=>fc,endsWith:()=>nt,enum:()=>Bn,exactOptional:()=>Bc,file:()=>Tm,flattenError:()=>Pt,float32:()=>om,float64:()=>im,formatError:()=>Ot,fromJSONSchema:()=>Wm,function:()=>Nm,getErrorMap:()=>lv,globalRegistry:()=>N,gt:()=>ie,gte:()=>F,guid:()=>Pd,hash:()=>nm,hex:()=>rm,hostname:()=>tm,httpUrl:()=>Dd,includes:()=>tt,instanceof:()=>Mm,int:()=>Sn,int32:()=>am,int64:()=>um,intersection:()=>Rc,invertCodec:()=>Am,ipv4:()=>Bd,ipv6:()=>Kd,iso:()=>mt,json:()=>Vm,jwt:()=>Qd,keyof:()=>hm,ksuid:()=>Gd,lazy:()=>su,length:()=>Ne,literal:()=>zm,locales:()=>Zt,looseObject:()=>xm,looseRecord:()=>Sm,lowercase:()=>Qe,lt:()=>oe,lte:()=>q,mac:()=>Wd,map:()=>km,maxLength:()=>Re,maxSize:()=>$e,meta:()=>Zm,mime:()=>ot,minLength:()=>pe,minSize:()=>ae,multipleOf:()=>ye,nan:()=>Pm,nanoid:()=>Ld,nativeEnum:()=>wm,negative:()=>un,never:()=>Vn,nonnegative:()=>dn,nonoptional:()=>Hc,nonpositive:()=>ln,normalize:()=>it,null:()=>wc,nullable:()=>Kt,nullish:()=>jm,number:()=>yc,object:()=>vm,optional:()=>Wt,overwrite:()=>Y,parse:()=>cc,parseAsync:()=>uc,partialRecord:()=>$m,pipe:()=>kn,positive:()=>cn,prefault:()=>Xc,preprocess:()=>Gm,prettifyError:()=>wo,promise:()=>Rm,property:()=>mn,readonly:()=>ou,record:()=>Cc,refine:()=>lu,regex:()=>Ye,regexes:()=>J,registry:()=>Zr,safeDecode:()=>vc,safeDecodeAsync:()=>xc,safeEncode:()=>hc,safeEncodeAsync:()=>bc,safeParse:()=>lc,safeParseAsync:()=>dc,set:()=>Im,setErrorMap:()=>uv,size:()=>Ue,slugify:()=>ut,startsWith:()=>rt,strictObject:()=>bm,string:()=>Gt,stringFormat:()=>em,stringbool:()=>Fm,success:()=>Em,superRefine:()=>du,symbol:()=>dm,templateLiteral:()=>Um,toJSONSchema:()=>hn,toLowerCase:()=>st,toUpperCase:()=>ct,transform:()=>Wn,treeifyError:()=>Io,trim:()=>at,tuple:()=>Dc,uint32:()=>sm,uint64:()=>lm,ulid:()=>Fd,undefined:()=>mm,union:()=>Gn,unknown:()=>De,uppercase:()=>et,url:()=>Nd,util:()=>x,uuid:()=>Od,uuidv4:()=>Ad,uuidv6:()=>Ud,uuidv7:()=>Rd,void:()=>fm,xid:()=>Vd,xor:()=>_m});var fe={};de(fe,{$ZodAny:()=>ta,$ZodArray:()=>aa,$ZodAsyncError:()=>H,$ZodBase64:()=>Bi,$ZodBase64URL:()=>Wi,$ZodBigInt:()=>Or,$ZodBigIntFormat:()=>Hi,$ZodBoolean:()=>Nt,$ZodCIDRv4:()=>Fi,$ZodCIDRv6:()=>Vi,$ZodCUID:()=>Ei,$ZodCUID2:()=>Pi,$ZodCatch:()=>ka,$ZodCheck:()=>E,$ZodCheckBigIntFormat:()=>ai,$ZodCheckEndsWith:()=>bi,$ZodCheckGreaterThan:()=>wr,$ZodCheckIncludes:()=>hi,$ZodCheckLengthEquals:()=>mi,$ZodCheckLessThan:()=>Ir,$ZodCheckLowerCase:()=>fi,$ZodCheckMaxLength:()=>li,$ZodCheckMaxSize:()=>si,$ZodCheckMimeType:()=>_i,$ZodCheckMinLength:()=>di,$ZodCheckMinSize:()=>ci,$ZodCheckMultipleOf:()=>oi,$ZodCheckNumberFormat:()=>ii,$ZodCheckOverwrite:()=>yi,$ZodCheckProperty:()=>xi,$ZodCheckRegex:()=>pi,$ZodCheckSizeEquals:()=>ui,$ZodCheckStartsWith:()=>vi,$ZodCheckStringFormat:()=>Xe,$ZodCheckUpperCase:()=>gi,$ZodCodec:()=>Ct,$ZodCustom:()=>Oa,$ZodCustomStringFormat:()=>qi,$ZodDate:()=>ia,$ZodDefault:()=>_a,$ZodDiscriminatedUnion:()=>ua,$ZodE164:()=>Ki,$ZodEmail:()=>wi,$ZodEmoji:()=>Ti,$ZodEncodeError:()=>he,$ZodEnum:()=>fa,$ZodError:()=>Et,$ZodExactOptional:()=>ba,$ZodFile:()=>ha,$ZodFunction:()=>ja,$ZodGUID:()=>ki,$ZodIPv4:()=>Li,$ZodIPv6:()=>Zi,$ZodISODate:()=>Ni,$ZodISODateTime:()=>Ri,$ZodISODuration:()=>Ci,$ZodISOTime:()=>Di,$ZodIntersection:()=>la,$ZodJWT:()=>Ji,$ZodKSUID:()=>Ui,$ZodLazy:()=>Pa,$ZodLiteral:()=>ga,$ZodMAC:()=>Mi,$ZodMap:()=>ma,$ZodNaN:()=>Ia,$ZodNanoID:()=>ji,$ZodNever:()=>na,$ZodNonOptional:()=>$a,$ZodNull:()=>ea,$ZodNullable:()=>xa,$ZodNumber:()=>Pr,$ZodNumberFormat:()=>Xi,$ZodObject:()=>Il,$ZodObjectJIT:()=>sa,$ZodOptional:()=>Ur,$ZodPipe:()=>Rr,$ZodPrefault:()=>ya,$ZodPreprocess:()=>wa,$ZodPromise:()=>Ea,$ZodReadonly:()=>za,$ZodRealError:()=>B,$ZodRecord:()=>da,$ZodRegistry:()=>Lr,$ZodSet:()=>pa,$ZodString:()=>Ae,$ZodStringFormat:()=>T,$ZodSuccess:()=>Sa,$ZodSymbol:()=>Yi,$ZodTemplateLiteral:()=>Ta,$ZodTransform:()=>va,$ZodTuple:()=>Ar,$ZodType:()=>S,$ZodULID:()=>Oi,$ZodURL:()=>zi,$ZodUUID:()=>Ii,$ZodUndefined:()=>Qi,$ZodUnion:()=>Dt,$ZodUnknown:()=>ra,$ZodVoid:()=>oa,$ZodXID:()=>Ai,$ZodXor:()=>ca,$brand:()=>po,$constructor:()=>d,$input:()=>Ua,$output:()=>Aa,Doc:()=>Rt,JSONSchema:()=>zd,JSONSchemaGenerator:()=>vn,NEVER:()=>mo,TimePrecision:()=>Ca,_any:()=>is,_array:()=>ms,_base64:()=>nn,_base64url:()=>on,_bigint:()=>Ya,_boolean:()=>Xa,_catch:()=>Yh,_check:()=>wd,_cidrv4:()=>tn,_cidrv6:()=>rn,_coercedBigint:()=>Qa,_coercedBoolean:()=>Ha,_coercedDate:()=>ls,_coercedNumber:()=>Ga,_coercedString:()=>Na,_cuid:()=>Jr,_cuid2:()=>qr,_custom:()=>fs,_date:()=>us,_decode:()=>hr,_decodeAsync:()=>br,_default:()=>qh,_discriminatedUnion:()=>Dh,_e164:()=>an,_email:()=>Mr,_emoji:()=>Wr,_encode:()=>gr,_encodeAsync:()=>vr,_endsWith:()=>nt,_enum:()=>Vh,_file:()=>ps,_float32:()=>Wa,_float64:()=>Ka,_gt:()=>ie,_gte:()=>F,_guid:()=>Mt,_includes:()=>tt,_int:()=>Ba,_int32:()=>Ja,_int64:()=>es,_intersection:()=>Ch,_ipv4:()=>Qr,_ipv6:()=>en,_isoDate:()=>Za,_isoDateTime:()=>La,_isoDuration:()=>Fa,_isoTime:()=>Ma,_jwt:()=>sn,_ksuid:()=>Yr,_lazy:()=>rv,_length:()=>Ne,_literal:()=>Bh,_lowercase:()=>Qe,_lt:()=>oe,_lte:()=>q,_mac:()=>Da,_map:()=>Mh,_max:()=>q,_maxLength:()=>Re,_maxSize:()=>$e,_mime:()=>ot,_min:()=>F,_minLength:()=>pe,_minSize:()=>ae,_multipleOf:()=>ye,_nan:()=>ds,_nanoid:()=>Kr,_nativeEnum:()=>Gh,_negative:()=>un,_never:()=>ss,_nonnegative:()=>dn,_nonoptional:()=>Xh,_nonpositive:()=>ln,_normalize:()=>it,_null:()=>os,_nullable:()=>Jh,_number:()=>Va,_optional:()=>Kh,_overwrite:()=>Y,_parse:()=>We,_parseAsync:()=>Ke,_pipe:()=>Qh,_positive:()=>cn,_promise:()=>nv,_property:()=>mn,_readonly:()=>ev,_record:()=>Zh,_refine:()=>gs,_regex:()=>Ye,_safeDecode:()=>_r,_safeDecodeAsync:()=>$r,_safeEncode:()=>xr,_safeEncodeAsync:()=>yr,_safeParse:()=>Je,_safeParseAsync:()=>qe,_set:()=>Fh,_size:()=>Ue,_slugify:()=>ut,_startsWith:()=>rt,_string:()=>Ra,_stringFormat:()=>lt,_stringbool:()=>xs,_success:()=>Hh,_superRefine:()=>hs,_symbol:()=>rs,_templateLiteral:()=>tv,_toLowerCase:()=>st,_toUpperCase:()=>ct,_transform:()=>Wh,_trim:()=>at,_tuple:()=>Lh,_uint32:()=>qa,_uint64:()=>ts,_ulid:()=>Xr,_undefined:()=>ns,_union:()=>Rh,_unknown:()=>as,_uppercase:()=>et,_url:()=>Ft,_uuid:()=>Fr,_uuidv4:()=>Vr,_uuidv6:()=>Gr,_uuidv7:()=>Br,_void:()=>cs,_xid:()=>Hr,_xor:()=>Nh,clone:()=>Z,config:()=>O,createStandardJSONSchemaMethod:()=>dt,createToJSONSchemaMethod:()=>_s,decode:()=>ng,decodeAsync:()=>ig,describe:()=>vs,encode:()=>rg,encodeAsync:()=>og,extractDefs:()=>ke,finalize:()=>Ie,flattenError:()=>Pt,formatError:()=>Ot,globalConfig:()=>Ee,globalRegistry:()=>N,initializeContext:()=>Se,isValidBase64:()=>Gi,isValidBase64URL:()=>yl,isValidJWT:()=>$l,locales:()=>Zt,meta:()=>bs,parse:()=>pr,parseAsync:()=>fr,prettifyError:()=>wo,process:()=>z,regexes:()=>J,registry:()=>Zr,safeDecode:()=>sg,safeDecodeAsync:()=>ug,safeEncode:()=>ag,safeEncodeAsync:()=>cg,safeParse:()=>zo,safeParseAsync:()=>To,toDotPath:()=>el,toJSONSchema:()=>hn,treeifyError:()=>Io,util:()=>x,version:()=>$i});var qu,mo=Object.freeze({status:"aborted"});function d(e,n,i){function a(c,u){if(c._zod||Object.defineProperty(c,"_zod",{value:{def:u,constr:s,traits:new Set},enumerable:!1}),c._zod.traits.has(e))return;c._zod.traits.add(e),n(c,u);let l=s.prototype,m=Object.keys(l);for(let f=0;f<m.length;f++){let g=m[f];g in c||(c[g]=l[g].bind(c))}}let t=i?.Parent??Object;class o extends t{}Object.defineProperty(o,"name",{value:e});function s(c){var u;let l=i?.Parent?new o:this;a(l,c),(u=l._zod).deferred??(u.deferred=[]);for(let m of l._zod.deferred)m();return l}return Object.defineProperty(s,"init",{value:a}),Object.defineProperty(s,Symbol.hasInstance,{value:c=>i?.Parent&&c instanceof i.Parent?!0:c?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}var po=Symbol("zod_brand"),H=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},he=class extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}};(qu=globalThis).__zod_globalConfig??(qu.__zod_globalConfig={});var Ee=globalThis.__zod_globalConfig;function O(e){return e&&Object.assign(Ee,e),Ee}var x={};de(x,{BIGINT_FORMAT_RANGES:()=>So,Class:()=>go,NUMBER_FORMAT_RANGES:()=>$o,aborted:()=>_e,allowsEval:()=>bo,assert:()=>Uf,assertEqual:()=>Ef,assertIs:()=>Of,assertNever:()=>Af,assertNotEqual:()=>Pf,assignProp:()=>be,base64ToUint8Array:()=>Hu,base64urlToUint8Array:()=>Hf,cached:()=>Ge,captureStackTrace:()=>mr,cleanEnum:()=>Xf,cleanRegex:()=>wt,clone:()=>Z,cloneDef:()=>Nf,createTransparentProxy:()=>Ff,defineLazy:()=>I,esc:()=>dr,escapeRegex:()=>X,explicitlyAborted:()=>ko,extend:()=>Bf,finalizeIssue:()=>M,floatSafeRemainder:()=>ho,getElementAtPath:()=>Df,getEnumValues:()=>It,getLengthableOrigin:()=>jt,getParsedType:()=>Mf,getSizableOrigin:()=>Tt,hexToUint8Array:()=>Qf,isObject:()=>Pe,isPlainObject:()=>xe,issue:()=>Be,joinValues:()=>p,jsonStringifyReplacer:()=>Ve,merge:()=>Kf,mergeDefs:()=>me,normalizeParams:()=>_,nullish:()=>ve,numKeys:()=>Zf,objectClone:()=>Rf,omit:()=>Gf,optionalKeys:()=>yo,parsedType:()=>v,partial:()=>Jf,pick:()=>Vf,prefixIssues:()=>G,primitiveTypes:()=>_o,promiseAllObject:()=>Cf,propertyKeyTypes:()=>zt,randomString:()=>Lf,required:()=>qf,safeExtend:()=>Wf,shallowClone:()=>xo,slugify:()=>vo,stringifyPrimitive:()=>h,uint8ArrayToBase64:()=>Yu,uint8ArrayToBase64url:()=>Yf,uint8ArrayToHex:()=>eg,unwrapMessage:()=>kt});function Ef(e){return e}function Pf(e){return e}function Of(e){}function Af(e){throw new Error("Unexpected value in exhaustive check")}function Uf(e){}function It(e){let n=Object.values(e).filter(a=>typeof a=="number");return Object.entries(e).filter(([a,t])=>n.indexOf(+a)===-1).map(([a,t])=>t)}function p(e,n="|"){return e.map(i=>h(i)).join(n)}function Ve(e,n){return typeof n=="bigint"?n.toString():n}function Ge(e){return{get value(){{let i=e();return Object.defineProperty(this,"value",{value:i}),i}throw new Error("cached value already set")}}}function ve(e){return e==null}function wt(e){let n=e.startsWith("^")?1:0,i=e.endsWith("$")?e.length-1:e.length;return e.slice(n,i)}function ho(e,n){let i=e/n,a=Math.round(i),t=Number.EPSILON*Math.max(Math.abs(i),1);return Math.abs(i-a)<t?0:i-a}var Xu=Symbol("evaluating");function I(e,n,i){let a;Object.defineProperty(e,n,{get(){if(a!==Xu)return a===void 0&&(a=Xu,a=i()),a},set(t){Object.defineProperty(e,n,{value:t})},configurable:!0})}function Rf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function be(e,n,i){Object.defineProperty(e,n,{value:i,writable:!0,enumerable:!0,configurable:!0})}function me(...e){let n={};for(let i of e){let a=Object.getOwnPropertyDescriptors(i);Object.assign(n,a)}return Object.defineProperties({},n)}function Nf(e){return me(e._zod.def)}function Df(e,n){return n?n.reduce((i,a)=>i?.[a],e):e}function Cf(e){let n=Object.keys(e),i=n.map(a=>e[a]);return Promise.all(i).then(a=>{let t={};for(let o=0;o<n.length;o++)t[n[o]]=a[o];return t})}function Lf(e=10){let n="abcdefghijklmnopqrstuvwxyz",i="";for(let a=0;a<e;a++)i+=n[Math.floor(Math.random()*n.length)];return i}function dr(e){return JSON.stringify(e)}function vo(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var mr="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bo=Ge(()=>{if(Ee.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function xe(e){if(Pe(e)===!1)return!1;let n=e.constructor;if(n===void 0||typeof n!="function")return!0;let i=n.prototype;return!(Pe(i)===!1||Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")===!1)}function xo(e){return xe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function Zf(e){let n=0;for(let i in e)Object.prototype.hasOwnProperty.call(e,i)&&n++;return n}var Mf=e=>{let n=typeof e;switch(n){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${n}`)}},zt=new Set(["string","number","symbol"]),_o=new Set(["string","number","bigint","boolean","symbol","undefined"]);function X(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Z(e,n,i){let a=new e._zod.constr(n??e._zod.def);return(!n||i?.parent)&&(a._zod.parent=e),a}function _(e){let n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function Ff(e){let n;return new Proxy({},{get(i,a,t){return n??(n=e()),Reflect.get(n,a,t)},set(i,a,t,o){return n??(n=e()),Reflect.set(n,a,t,o)},has(i,a){return n??(n=e()),Reflect.has(n,a)},deleteProperty(i,a){return n??(n=e()),Reflect.deleteProperty(n,a)},ownKeys(i){return n??(n=e()),Reflect.ownKeys(n)},getOwnPropertyDescriptor(i,a){return n??(n=e()),Reflect.getOwnPropertyDescriptor(n,a)},defineProperty(i,a,t){return n??(n=e()),Reflect.defineProperty(n,a,t)}})}function h(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function yo(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}var $o={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},So={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Vf(e,n){let i=e._zod.def,a=i.checks;if(a&&a.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let o=me(e._zod.def,{get shape(){let s={};for(let c in n){if(!(c in i.shape))throw new Error(`Unrecognized key: "${c}"`);n[c]&&(s[c]=i.shape[c])}return be(this,"shape",s),s},checks:[]});return Z(e,o)}function Gf(e,n){let i=e._zod.def,a=i.checks;if(a&&a.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let o=me(e._zod.def,{get shape(){let s={...e._zod.def.shape};for(let c in n){if(!(c in i.shape))throw new Error(`Unrecognized key: "${c}"`);n[c]&&delete s[c]}return be(this,"shape",s),s},checks:[]});return Z(e,o)}function Bf(e,n){if(!xe(n))throw new Error("Invalid input to extend: expected a plain object");let i=e._zod.def.checks;if(i&&i.length>0){let o=e._zod.def.shape;for(let s in n)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let t=me(e._zod.def,{get shape(){let o={...e._zod.def.shape,...n};return be(this,"shape",o),o}});return Z(e,t)}function Wf(e,n){if(!xe(n))throw new Error("Invalid input to safeExtend: expected a plain object");let i=me(e._zod.def,{get shape(){let a={...e._zod.def.shape,...n};return be(this,"shape",a),a}});return Z(e,i)}function Kf(e,n){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let i=me(e._zod.def,{get shape(){let a={...e._zod.def.shape,...n._zod.def.shape};return be(this,"shape",a),a},get catchall(){return n._zod.def.catchall},checks:n._zod.def.checks??[]});return Z(e,i)}function Jf(e,n,i){let t=n._zod.def.checks;if(t&&t.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let s=me(n._zod.def,{get shape(){let c=n._zod.def.shape,u={...c};if(i)for(let l in i){if(!(l in c))throw new Error(`Unrecognized key: "${l}"`);i[l]&&(u[l]=e?new e({type:"optional",innerType:c[l]}):c[l])}else for(let l in c)u[l]=e?new e({type:"optional",innerType:c[l]}):c[l];return be(this,"shape",u),u},checks:[]});return Z(n,s)}function qf(e,n,i){let a=me(n._zod.def,{get shape(){let t=n._zod.def.shape,o={...t};if(i)for(let s in i){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);i[s]&&(o[s]=new e({type:"nonoptional",innerType:t[s]}))}else for(let s in t)o[s]=new e({type:"nonoptional",innerType:t[s]});return be(this,"shape",o),o}});return Z(n,a)}function _e(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function ko(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue===!1)return!0;return!1}function G(e,n){return n.map(i=>{var a;return(a=i).path??(a.path=[]),i.path.unshift(e),i})}function kt(e){return typeof e=="string"?e:e?.message}function M(e,n,i){let a=e.message?e.message:kt(e.inst?._zod.def?.error?.(e))??kt(n?.error?.(e))??kt(i.customError?.(e))??kt(i.localeError?.(e))??"Invalid input",{inst:t,continue:o,input:s,...c}=e;return c.path??(c.path=[]),c.message=a,n?.reportInput&&(c.input=s),c}function Tt(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function jt(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function v(e){let n=typeof e;switch(n){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let i=e;if(i&&Object.getPrototypeOf(i)!==Object.prototype&&"constructor"in i&&i.constructor)return i.constructor.name}}return n}function Be(...e){let[n,i,a]=e;return typeof n=="string"?{message:n,code:"custom",input:i,inst:a}:{...n}}function Xf(e){return Object.entries(e).filter(([n,i])=>Number.isNaN(Number.parseInt(n,10))).map(n=>n[1])}function Hu(e){let n=atob(e),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return i}function Yu(e){let n="";for(let i=0;i<e.length;i++)n+=String.fromCharCode(e[i]);return btoa(n)}function Hf(e){let n=e.replace(/-/g,"+").replace(/_/g,"/"),i="=".repeat((4-n.length%4)%4);return Hu(n+i)}function Yf(e){return Yu(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Qf(e){let n=e.replace(/^0x/,"");if(n.length%2!==0)throw new Error("Invalid hex string length");let i=new Uint8Array(n.length/2);for(let a=0;a<n.length;a+=2)i[a/2]=Number.parseInt(n.slice(a,a+2),16);return i}function eg(e){return Array.from(e).map(n=>n.toString(16).padStart(2,"0")).join("")}var go=class{constructor(...n){}};var Qu=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,Ve,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Et=d("$ZodError",Qu),B=d("$ZodError",Qu,{Parent:Error});function Pt(e,n=i=>i.message){let i={},a=[];for(let t of e.issues)t.path.length>0?(i[t.path[0]]=i[t.path[0]]||[],i[t.path[0]].push(n(t))):a.push(n(t));return{formErrors:a,fieldErrors:i}}function Ot(e,n=i=>i.message){let i={_errors:[]},a=(t,o=[])=>{for(let s of t.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(c=>a({issues:c},[...o,...s.path]));else if(s.code==="invalid_key")a({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")a({issues:s.issues},[...o,...s.path]);else{let c=[...o,...s.path];if(c.length===0)i._errors.push(n(s));else{let u=i,l=0;for(;l<c.length;){let m=c[l];l===c.length-1?(u[m]=u[m]||{_errors:[]},u[m]._errors.push(n(s))):u[m]=u[m]||{_errors:[]},u=u[m],l++}}}};return a(e),i}function Io(e,n=i=>i.message){let i={errors:[]},a=(t,o=[])=>{var s,c;for(let u of t.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>a({issues:l},[...o,...u.path]));else if(u.code==="invalid_key")a({issues:u.issues},[...o,...u.path]);else if(u.code==="invalid_element")a({issues:u.issues},[...o,...u.path]);else{let l=[...o,...u.path];if(l.length===0){i.errors.push(n(u));continue}let m=i,f=0;for(;f<l.length;){let g=l[f],b=f===l.length-1;typeof g=="string"?(m.properties??(m.properties={}),(s=m.properties)[g]??(s[g]={errors:[]}),m=m.properties[g]):(m.items??(m.items=[]),(c=m.items)[g]??(c[g]={errors:[]}),m=m.items[g]),b&&m.errors.push(n(u)),f++}}};return a(e),i}function el(e){let n=[],i=e.map(a=>typeof a=="object"?a.key:a);for(let a of i)typeof a=="number"?n.push(`[${a}]`):typeof a=="symbol"?n.push(`[${JSON.stringify(String(a))}]`):/[^\w$]/.test(a)?n.push(`[${JSON.stringify(a)}]`):(n.length&&n.push("."),n.push(a));return n.join("")}function wo(e){let n=[],i=[...e.issues].sort((a,t)=>(a.path??[]).length-(t.path??[]).length);for(let a of i)n.push(`\u2716 ${a.message}`),a.path?.length&&n.push(` \u2192 at ${el(a.path)}`);return n.join(`
|
|
2
|
+
import{h as Wu,q as Ku,s as Ju}from"./chunk-GQWF4JEC.js";import{c as de}from"./chunk-KURQCTT3.js";var r={};de(r,{$brand:()=>po,$input:()=>Ua,$output:()=>Aa,NEVER:()=>mo,TimePrecision:()=>Ca,ZodAny:()=>zc,ZodArray:()=>Pc,ZodBase64:()=>Cn,ZodBase64URL:()=>Ln,ZodBigInt:()=>xt,ZodBigIntFormat:()=>Fn,ZodBoolean:()=>bt,ZodCIDRv4:()=>Nn,ZodCIDRv6:()=>Dn,ZodCUID:()=>jn,ZodCUID2:()=>En,ZodCatch:()=>Qc,ZodCodec:()=>tr,ZodCustom:()=>rr,ZodCustomStringFormat:()=>ht,ZodDate:()=>Xt,ZodDefault:()=>Kc,ZodDiscriminatedUnion:()=>Ac,ZodE164:()=>Zn,ZodEmail:()=>wn,ZodEmoji:()=>zn,ZodEnum:()=>ft,ZodError:()=>av,ZodExactOptional:()=>Gc,ZodFile:()=>Fc,ZodFirstPartyTypeKind:()=>mu,ZodFunction:()=>uu,ZodGUID:()=>Bt,ZodIPv4:()=>Un,ZodIPv6:()=>Rn,ZodISODate:()=>_n,ZodISODateTime:()=>xn,ZodISODuration:()=>$n,ZodISOTime:()=>yn,ZodIntersection:()=>Uc,ZodIssueCode:()=>cv,ZodJWT:()=>Mn,ZodKSUID:()=>An,ZodLazy:()=>au,ZodLiteral:()=>Mc,ZodMAC:()=>_c,ZodMap:()=>Lc,ZodNaN:()=>tu,ZodNanoID:()=>Tn,ZodNever:()=>jc,ZodNonOptional:()=>Jn,ZodNull:()=>Ic,ZodNullable:()=>Wc,ZodNumber:()=>vt,ZodNumberFormat:()=>Ce,ZodObject:()=>Yt,ZodOptional:()=>Kn,ZodPipe:()=>er,ZodPrefault:()=>qc,ZodPreprocess:()=>ru,ZodPromise:()=>cu,ZodReadonly:()=>nu,ZodRealError:()=>W,ZodRecord:()=>pt,ZodSet:()=>Zc,ZodString:()=>gt,ZodStringFormat:()=>j,ZodSuccess:()=>Yc,ZodSymbol:()=>Sc,ZodTemplateLiteral:()=>iu,ZodTransform:()=>Vc,ZodTuple:()=>Nc,ZodType:()=>k,ZodULID:()=>Pn,ZodURL:()=>qt,ZodUUID:()=>se,ZodUndefined:()=>kc,ZodUnion:()=>Qt,ZodUnknown:()=>Tc,ZodVoid:()=>Ec,ZodXID:()=>On,ZodXor:()=>Oc,_ZodString:()=>In,_default:()=>Jc,_function:()=>Nm,any:()=>pm,array:()=>Ht,base64:()=>Xd,base64url:()=>Hd,bigint:()=>cm,boolean:()=>$c,catch:()=>eu,check:()=>Dm,cidrv4:()=>Jd,cidrv6:()=>qd,clone:()=>Z,codec:()=>Om,coerce:()=>pu,config:()=>O,core:()=>fe,cuid:()=>Zd,cuid2:()=>Md,custom:()=>Cm,date:()=>gm,decode:()=>pc,decodeAsync:()=>gc,describe:()=>Lm,discriminatedUnion:()=>ym,e164:()=>Yd,email:()=>Ed,emoji:()=>Cd,encode:()=>mc,encodeAsync:()=>fc,endsWith:()=>nt,enum:()=>Bn,exactOptional:()=>Bc,file:()=>Tm,flattenError:()=>Pt,float32:()=>om,float64:()=>im,formatError:()=>Ot,fromJSONSchema:()=>Wm,function:()=>Nm,getErrorMap:()=>lv,globalRegistry:()=>N,gt:()=>ie,gte:()=>F,guid:()=>Pd,hash:()=>nm,hex:()=>rm,hostname:()=>tm,httpUrl:()=>Dd,includes:()=>tt,instanceof:()=>Mm,int:()=>Sn,int32:()=>am,int64:()=>um,intersection:()=>Rc,invertCodec:()=>Am,ipv4:()=>Bd,ipv6:()=>Kd,iso:()=>mt,json:()=>Vm,jwt:()=>Qd,keyof:()=>hm,ksuid:()=>Gd,lazy:()=>su,length:()=>Ne,literal:()=>zm,locales:()=>Zt,looseObject:()=>xm,looseRecord:()=>Sm,lowercase:()=>Qe,lt:()=>oe,lte:()=>q,mac:()=>Wd,map:()=>km,maxLength:()=>Re,maxSize:()=>$e,meta:()=>Zm,mime:()=>ot,minLength:()=>pe,minSize:()=>ae,multipleOf:()=>ye,nan:()=>Pm,nanoid:()=>Ld,nativeEnum:()=>wm,negative:()=>un,never:()=>Vn,nonnegative:()=>dn,nonoptional:()=>Hc,nonpositive:()=>ln,normalize:()=>it,null:()=>wc,nullable:()=>Kt,nullish:()=>jm,number:()=>yc,object:()=>vm,optional:()=>Wt,overwrite:()=>Y,parse:()=>cc,parseAsync:()=>uc,partialRecord:()=>$m,pipe:()=>kn,positive:()=>cn,prefault:()=>Xc,preprocess:()=>Gm,prettifyError:()=>wo,promise:()=>Rm,property:()=>mn,readonly:()=>ou,record:()=>Cc,refine:()=>lu,regex:()=>Ye,regexes:()=>J,registry:()=>Zr,safeDecode:()=>vc,safeDecodeAsync:()=>xc,safeEncode:()=>hc,safeEncodeAsync:()=>bc,safeParse:()=>lc,safeParseAsync:()=>dc,set:()=>Im,setErrorMap:()=>uv,size:()=>Ue,slugify:()=>ut,startsWith:()=>rt,strictObject:()=>bm,string:()=>Gt,stringFormat:()=>em,stringbool:()=>Fm,success:()=>Em,superRefine:()=>du,symbol:()=>dm,templateLiteral:()=>Um,toJSONSchema:()=>hn,toLowerCase:()=>st,toUpperCase:()=>ct,transform:()=>Wn,treeifyError:()=>Io,trim:()=>at,tuple:()=>Dc,uint32:()=>sm,uint64:()=>lm,ulid:()=>Fd,undefined:()=>mm,union:()=>Gn,unknown:()=>De,uppercase:()=>et,url:()=>Nd,util:()=>x,uuid:()=>Od,uuidv4:()=>Ad,uuidv6:()=>Ud,uuidv7:()=>Rd,void:()=>fm,xid:()=>Vd,xor:()=>_m});var fe={};de(fe,{$ZodAny:()=>ta,$ZodArray:()=>aa,$ZodAsyncError:()=>H,$ZodBase64:()=>Bi,$ZodBase64URL:()=>Wi,$ZodBigInt:()=>Or,$ZodBigIntFormat:()=>Hi,$ZodBoolean:()=>Nt,$ZodCIDRv4:()=>Fi,$ZodCIDRv6:()=>Vi,$ZodCUID:()=>Ei,$ZodCUID2:()=>Pi,$ZodCatch:()=>ka,$ZodCheck:()=>E,$ZodCheckBigIntFormat:()=>ai,$ZodCheckEndsWith:()=>bi,$ZodCheckGreaterThan:()=>wr,$ZodCheckIncludes:()=>hi,$ZodCheckLengthEquals:()=>mi,$ZodCheckLessThan:()=>Ir,$ZodCheckLowerCase:()=>fi,$ZodCheckMaxLength:()=>li,$ZodCheckMaxSize:()=>si,$ZodCheckMimeType:()=>_i,$ZodCheckMinLength:()=>di,$ZodCheckMinSize:()=>ci,$ZodCheckMultipleOf:()=>oi,$ZodCheckNumberFormat:()=>ii,$ZodCheckOverwrite:()=>yi,$ZodCheckProperty:()=>xi,$ZodCheckRegex:()=>pi,$ZodCheckSizeEquals:()=>ui,$ZodCheckStartsWith:()=>vi,$ZodCheckStringFormat:()=>Xe,$ZodCheckUpperCase:()=>gi,$ZodCodec:()=>Ct,$ZodCustom:()=>Oa,$ZodCustomStringFormat:()=>qi,$ZodDate:()=>ia,$ZodDefault:()=>_a,$ZodDiscriminatedUnion:()=>ua,$ZodE164:()=>Ki,$ZodEmail:()=>wi,$ZodEmoji:()=>Ti,$ZodEncodeError:()=>he,$ZodEnum:()=>fa,$ZodError:()=>Et,$ZodExactOptional:()=>ba,$ZodFile:()=>ha,$ZodFunction:()=>ja,$ZodGUID:()=>ki,$ZodIPv4:()=>Li,$ZodIPv6:()=>Zi,$ZodISODate:()=>Ni,$ZodISODateTime:()=>Ri,$ZodISODuration:()=>Ci,$ZodISOTime:()=>Di,$ZodIntersection:()=>la,$ZodJWT:()=>Ji,$ZodKSUID:()=>Ui,$ZodLazy:()=>Pa,$ZodLiteral:()=>ga,$ZodMAC:()=>Mi,$ZodMap:()=>ma,$ZodNaN:()=>Ia,$ZodNanoID:()=>ji,$ZodNever:()=>na,$ZodNonOptional:()=>$a,$ZodNull:()=>ea,$ZodNullable:()=>xa,$ZodNumber:()=>Pr,$ZodNumberFormat:()=>Xi,$ZodObject:()=>Il,$ZodObjectJIT:()=>sa,$ZodOptional:()=>Ur,$ZodPipe:()=>Rr,$ZodPrefault:()=>ya,$ZodPreprocess:()=>wa,$ZodPromise:()=>Ea,$ZodReadonly:()=>za,$ZodRealError:()=>B,$ZodRecord:()=>da,$ZodRegistry:()=>Lr,$ZodSet:()=>pa,$ZodString:()=>Ae,$ZodStringFormat:()=>T,$ZodSuccess:()=>Sa,$ZodSymbol:()=>Yi,$ZodTemplateLiteral:()=>Ta,$ZodTransform:()=>va,$ZodTuple:()=>Ar,$ZodType:()=>S,$ZodULID:()=>Oi,$ZodURL:()=>zi,$ZodUUID:()=>Ii,$ZodUndefined:()=>Qi,$ZodUnion:()=>Dt,$ZodUnknown:()=>ra,$ZodVoid:()=>oa,$ZodXID:()=>Ai,$ZodXor:()=>ca,$brand:()=>po,$constructor:()=>d,$input:()=>Ua,$output:()=>Aa,Doc:()=>Rt,JSONSchema:()=>zd,JSONSchemaGenerator:()=>vn,NEVER:()=>mo,TimePrecision:()=>Ca,_any:()=>is,_array:()=>ms,_base64:()=>nn,_base64url:()=>on,_bigint:()=>Ya,_boolean:()=>Xa,_catch:()=>Yh,_check:()=>wd,_cidrv4:()=>tn,_cidrv6:()=>rn,_coercedBigint:()=>Qa,_coercedBoolean:()=>Ha,_coercedDate:()=>ls,_coercedNumber:()=>Ga,_coercedString:()=>Na,_cuid:()=>Jr,_cuid2:()=>qr,_custom:()=>fs,_date:()=>us,_decode:()=>hr,_decodeAsync:()=>br,_default:()=>qh,_discriminatedUnion:()=>Dh,_e164:()=>an,_email:()=>Mr,_emoji:()=>Wr,_encode:()=>gr,_encodeAsync:()=>vr,_endsWith:()=>nt,_enum:()=>Vh,_file:()=>ps,_float32:()=>Wa,_float64:()=>Ka,_gt:()=>ie,_gte:()=>F,_guid:()=>Mt,_includes:()=>tt,_int:()=>Ba,_int32:()=>Ja,_int64:()=>es,_intersection:()=>Ch,_ipv4:()=>Qr,_ipv6:()=>en,_isoDate:()=>Za,_isoDateTime:()=>La,_isoDuration:()=>Fa,_isoTime:()=>Ma,_jwt:()=>sn,_ksuid:()=>Yr,_lazy:()=>rv,_length:()=>Ne,_literal:()=>Bh,_lowercase:()=>Qe,_lt:()=>oe,_lte:()=>q,_mac:()=>Da,_map:()=>Mh,_max:()=>q,_maxLength:()=>Re,_maxSize:()=>$e,_mime:()=>ot,_min:()=>F,_minLength:()=>pe,_minSize:()=>ae,_multipleOf:()=>ye,_nan:()=>ds,_nanoid:()=>Kr,_nativeEnum:()=>Gh,_negative:()=>un,_never:()=>ss,_nonnegative:()=>dn,_nonoptional:()=>Xh,_nonpositive:()=>ln,_normalize:()=>it,_null:()=>os,_nullable:()=>Jh,_number:()=>Va,_optional:()=>Kh,_overwrite:()=>Y,_parse:()=>We,_parseAsync:()=>Ke,_pipe:()=>Qh,_positive:()=>cn,_promise:()=>nv,_property:()=>mn,_readonly:()=>ev,_record:()=>Zh,_refine:()=>gs,_regex:()=>Ye,_safeDecode:()=>_r,_safeDecodeAsync:()=>$r,_safeEncode:()=>xr,_safeEncodeAsync:()=>yr,_safeParse:()=>Je,_safeParseAsync:()=>qe,_set:()=>Fh,_size:()=>Ue,_slugify:()=>ut,_startsWith:()=>rt,_string:()=>Ra,_stringFormat:()=>lt,_stringbool:()=>xs,_success:()=>Hh,_superRefine:()=>hs,_symbol:()=>rs,_templateLiteral:()=>tv,_toLowerCase:()=>st,_toUpperCase:()=>ct,_transform:()=>Wh,_trim:()=>at,_tuple:()=>Lh,_uint32:()=>qa,_uint64:()=>ts,_ulid:()=>Xr,_undefined:()=>ns,_union:()=>Rh,_unknown:()=>as,_uppercase:()=>et,_url:()=>Ft,_uuid:()=>Fr,_uuidv4:()=>Vr,_uuidv6:()=>Gr,_uuidv7:()=>Br,_void:()=>cs,_xid:()=>Hr,_xor:()=>Nh,clone:()=>Z,config:()=>O,createStandardJSONSchemaMethod:()=>dt,createToJSONSchemaMethod:()=>_s,decode:()=>ng,decodeAsync:()=>ig,describe:()=>vs,encode:()=>rg,encodeAsync:()=>og,extractDefs:()=>ke,finalize:()=>Ie,flattenError:()=>Pt,formatError:()=>Ot,globalConfig:()=>Ee,globalRegistry:()=>N,initializeContext:()=>Se,isValidBase64:()=>Gi,isValidBase64URL:()=>yl,isValidJWT:()=>$l,locales:()=>Zt,meta:()=>bs,parse:()=>pr,parseAsync:()=>fr,prettifyError:()=>wo,process:()=>z,regexes:()=>J,registry:()=>Zr,safeDecode:()=>sg,safeDecodeAsync:()=>ug,safeEncode:()=>ag,safeEncodeAsync:()=>cg,safeParse:()=>zo,safeParseAsync:()=>To,toDotPath:()=>el,toJSONSchema:()=>hn,treeifyError:()=>Io,util:()=>x,version:()=>$i});var qu,mo=Object.freeze({status:"aborted"});function d(e,n,i){function a(c,u){if(c._zod||Object.defineProperty(c,"_zod",{value:{def:u,constr:s,traits:new Set},enumerable:!1}),c._zod.traits.has(e))return;c._zod.traits.add(e),n(c,u);let l=s.prototype,m=Object.keys(l);for(let f=0;f<m.length;f++){let g=m[f];g in c||(c[g]=l[g].bind(c))}}let t=i?.Parent??Object;class o extends t{}Object.defineProperty(o,"name",{value:e});function s(c){var u;let l=i?.Parent?new o:this;a(l,c),(u=l._zod).deferred??(u.deferred=[]);for(let m of l._zod.deferred)m();return l}return Object.defineProperty(s,"init",{value:a}),Object.defineProperty(s,Symbol.hasInstance,{value:c=>i?.Parent&&c instanceof i.Parent?!0:c?._zod?.traits?.has(e)}),Object.defineProperty(s,"name",{value:e}),s}var po=Symbol("zod_brand"),H=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}},he=class extends Error{constructor(n){super(`Encountered unidirectional transform during encode: ${n}`),this.name="ZodEncodeError"}};(qu=globalThis).__zod_globalConfig??(qu.__zod_globalConfig={});var Ee=globalThis.__zod_globalConfig;function O(e){return e&&Object.assign(Ee,e),Ee}var x={};de(x,{BIGINT_FORMAT_RANGES:()=>So,Class:()=>go,NUMBER_FORMAT_RANGES:()=>$o,aborted:()=>_e,allowsEval:()=>bo,assert:()=>Uf,assertEqual:()=>Ef,assertIs:()=>Of,assertNever:()=>Af,assertNotEqual:()=>Pf,assignProp:()=>be,base64ToUint8Array:()=>Hu,base64urlToUint8Array:()=>Hf,cached:()=>Ge,captureStackTrace:()=>mr,cleanEnum:()=>Xf,cleanRegex:()=>wt,clone:()=>Z,cloneDef:()=>Nf,createTransparentProxy:()=>Ff,defineLazy:()=>I,esc:()=>dr,escapeRegex:()=>X,explicitlyAborted:()=>ko,extend:()=>Bf,finalizeIssue:()=>M,floatSafeRemainder:()=>ho,getElementAtPath:()=>Df,getEnumValues:()=>It,getLengthableOrigin:()=>jt,getParsedType:()=>Mf,getSizableOrigin:()=>Tt,hexToUint8Array:()=>Qf,isObject:()=>Pe,isPlainObject:()=>xe,issue:()=>Be,joinValues:()=>p,jsonStringifyReplacer:()=>Ve,merge:()=>Kf,mergeDefs:()=>me,normalizeParams:()=>_,nullish:()=>ve,numKeys:()=>Zf,objectClone:()=>Rf,omit:()=>Gf,optionalKeys:()=>yo,parsedType:()=>v,partial:()=>Jf,pick:()=>Vf,prefixIssues:()=>G,primitiveTypes:()=>_o,promiseAllObject:()=>Cf,propertyKeyTypes:()=>zt,randomString:()=>Lf,required:()=>qf,safeExtend:()=>Wf,shallowClone:()=>xo,slugify:()=>vo,stringifyPrimitive:()=>h,uint8ArrayToBase64:()=>Yu,uint8ArrayToBase64url:()=>Yf,uint8ArrayToHex:()=>eg,unwrapMessage:()=>kt});function Ef(e){return e}function Pf(e){return e}function Of(e){}function Af(e){throw new Error("Unexpected value in exhaustive check")}function Uf(e){}function It(e){let n=Object.values(e).filter(a=>typeof a=="number");return Object.entries(e).filter(([a,t])=>n.indexOf(+a)===-1).map(([a,t])=>t)}function p(e,n="|"){return e.map(i=>h(i)).join(n)}function Ve(e,n){return typeof n=="bigint"?n.toString():n}function Ge(e){return{get value(){{let i=e();return Object.defineProperty(this,"value",{value:i}),i}throw new Error("cached value already set")}}}function ve(e){return e==null}function wt(e){let n=e.startsWith("^")?1:0,i=e.endsWith("$")?e.length-1:e.length;return e.slice(n,i)}function ho(e,n){let i=e/n,a=Math.round(i),t=Number.EPSILON*Math.max(Math.abs(i),1);return Math.abs(i-a)<t?0:i-a}var Xu=Symbol("evaluating");function I(e,n,i){let a;Object.defineProperty(e,n,{get(){if(a!==Xu)return a===void 0&&(a=Xu,a=i()),a},set(t){Object.defineProperty(e,n,{value:t})},configurable:!0})}function Rf(e){return Object.create(Object.getPrototypeOf(e),Object.getOwnPropertyDescriptors(e))}function be(e,n,i){Object.defineProperty(e,n,{value:i,writable:!0,enumerable:!0,configurable:!0})}function me(...e){let n={};for(let i of e){let a=Object.getOwnPropertyDescriptors(i);Object.assign(n,a)}return Object.defineProperties({},n)}function Nf(e){return me(e._zod.def)}function Df(e,n){return n?n.reduce((i,a)=>i?.[a],e):e}function Cf(e){let n=Object.keys(e),i=n.map(a=>e[a]);return Promise.all(i).then(a=>{let t={};for(let o=0;o<n.length;o++)t[n[o]]=a[o];return t})}function Lf(e=10){let n="abcdefghijklmnopqrstuvwxyz",i="";for(let a=0;a<e;a++)i+=n[Math.floor(Math.random()*n.length)];return i}function dr(e){return JSON.stringify(e)}function vo(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var mr="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var bo=Ge(()=>{if(Ee.jitless||typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{let e=Function;return new e(""),!0}catch{return!1}});function xe(e){if(Pe(e)===!1)return!1;let n=e.constructor;if(n===void 0||typeof n!="function")return!0;let i=n.prototype;return!(Pe(i)===!1||Object.prototype.hasOwnProperty.call(i,"isPrototypeOf")===!1)}function xo(e){return xe(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}function Zf(e){let n=0;for(let i in e)Object.prototype.hasOwnProperty.call(e,i)&&n++;return n}var Mf=e=>{let n=typeof e;switch(n){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${n}`)}},zt=new Set(["string","number","symbol"]),_o=new Set(["string","number","bigint","boolean","symbol","undefined"]);function X(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Z(e,n,i){let a=new e._zod.constr(n??e._zod.def);return(!n||i?.parent)&&(a._zod.parent=e),a}function _(e){let n=e;if(!n)return{};if(typeof n=="string")return{error:()=>n};if(n?.message!==void 0){if(n?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");n.error=n.message}return delete n.message,typeof n.error=="string"?{...n,error:()=>n.error}:n}function Ff(e){let n;return new Proxy({},{get(i,a,t){return n??(n=e()),Reflect.get(n,a,t)},set(i,a,t,o){return n??(n=e()),Reflect.set(n,a,t,o)},has(i,a){return n??(n=e()),Reflect.has(n,a)},deleteProperty(i,a){return n??(n=e()),Reflect.deleteProperty(n,a)},ownKeys(i){return n??(n=e()),Reflect.ownKeys(n)},getOwnPropertyDescriptor(i,a){return n??(n=e()),Reflect.getOwnPropertyDescriptor(n,a)},defineProperty(i,a,t){return n??(n=e()),Reflect.defineProperty(n,a,t)}})}function h(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function yo(e){return Object.keys(e).filter(n=>e[n]._zod.optin==="optional"&&e[n]._zod.optout==="optional")}var $o={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},So={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function Vf(e,n){let i=e._zod.def,a=i.checks;if(a&&a.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");let o=me(e._zod.def,{get shape(){let s={};for(let c in n){if(!(c in i.shape))throw new Error(`Unrecognized key: "${c}"`);n[c]&&(s[c]=i.shape[c])}return be(this,"shape",s),s},checks:[]});return Z(e,o)}function Gf(e,n){let i=e._zod.def,a=i.checks;if(a&&a.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");let o=me(e._zod.def,{get shape(){let s={...e._zod.def.shape};for(let c in n){if(!(c in i.shape))throw new Error(`Unrecognized key: "${c}"`);n[c]&&delete s[c]}return be(this,"shape",s),s},checks:[]});return Z(e,o)}function Bf(e,n){if(!xe(n))throw new Error("Invalid input to extend: expected a plain object");let i=e._zod.def.checks;if(i&&i.length>0){let o=e._zod.def.shape;for(let s in n)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let t=me(e._zod.def,{get shape(){let o={...e._zod.def.shape,...n};return be(this,"shape",o),o}});return Z(e,t)}function Wf(e,n){if(!xe(n))throw new Error("Invalid input to safeExtend: expected a plain object");let i=me(e._zod.def,{get shape(){let a={...e._zod.def.shape,...n};return be(this,"shape",a),a}});return Z(e,i)}function Kf(e,n){if(e._zod.def.checks?.length)throw new Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let i=me(e._zod.def,{get shape(){let a={...e._zod.def.shape,...n._zod.def.shape};return be(this,"shape",a),a},get catchall(){return n._zod.def.catchall},checks:n._zod.def.checks??[]});return Z(e,i)}function Jf(e,n,i){let t=n._zod.def.checks;if(t&&t.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");let s=me(n._zod.def,{get shape(){let c=n._zod.def.shape,u={...c};if(i)for(let l in i){if(!(l in c))throw new Error(`Unrecognized key: "${l}"`);i[l]&&(u[l]=e?new e({type:"optional",innerType:c[l]}):c[l])}else for(let l in c)u[l]=e?new e({type:"optional",innerType:c[l]}):c[l];return be(this,"shape",u),u},checks:[]});return Z(n,s)}function qf(e,n,i){let a=me(n._zod.def,{get shape(){let t=n._zod.def.shape,o={...t};if(i)for(let s in i){if(!(s in o))throw new Error(`Unrecognized key: "${s}"`);i[s]&&(o[s]=new e({type:"nonoptional",innerType:t[s]}))}else for(let s in t)o[s]=new e({type:"nonoptional",innerType:t[s]});return be(this,"shape",o),o}});return Z(n,a)}function _e(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue!==!0)return!0;return!1}function ko(e,n=0){if(e.aborted===!0)return!0;for(let i=n;i<e.issues.length;i++)if(e.issues[i]?.continue===!1)return!0;return!1}function G(e,n){return n.map(i=>{var a;return(a=i).path??(a.path=[]),i.path.unshift(e),i})}function kt(e){return typeof e=="string"?e:e?.message}function M(e,n,i){let a=e.message?e.message:kt(e.inst?._zod.def?.error?.(e))??kt(n?.error?.(e))??kt(i.customError?.(e))??kt(i.localeError?.(e))??"Invalid input",{inst:t,continue:o,input:s,...c}=e;return c.path??(c.path=[]),c.message=a,n?.reportInput&&(c.input=s),c}function Tt(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function jt(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function v(e){let n=typeof e;switch(n){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let i=e;if(i&&Object.getPrototypeOf(i)!==Object.prototype&&"constructor"in i&&i.constructor)return i.constructor.name}}return n}function Be(...e){let[n,i,a]=e;return typeof n=="string"?{message:n,code:"custom",input:i,inst:a}:{...n}}function Xf(e){return Object.entries(e).filter(([n,i])=>Number.isNaN(Number.parseInt(n,10))).map(n=>n[1])}function Hu(e){let n=atob(e),i=new Uint8Array(n.length);for(let a=0;a<n.length;a++)i[a]=n.charCodeAt(a);return i}function Yu(e){let n="";for(let i=0;i<e.length;i++)n+=String.fromCharCode(e[i]);return btoa(n)}function Hf(e){let n=e.replace(/-/g,"+").replace(/_/g,"/"),i="=".repeat((4-n.length%4)%4);return Hu(n+i)}function Yf(e){return Yu(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Qf(e){let n=e.replace(/^0x/,"");if(n.length%2!==0)throw new Error("Invalid hex string length");let i=new Uint8Array(n.length/2);for(let a=0;a<n.length;a+=2)i[a/2]=Number.parseInt(n.slice(a,a+2),16);return i}function eg(e){return Array.from(e).map(n=>n.toString(16).padStart(2,"0")).join("")}var go=class{constructor(...n){}};var Qu=(e,n)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:n,enumerable:!1}),e.message=JSON.stringify(n,Ve,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Et=d("$ZodError",Qu),B=d("$ZodError",Qu,{Parent:Error});function Pt(e,n=i=>i.message){let i={},a=[];for(let t of e.issues)t.path.length>0?(i[t.path[0]]=i[t.path[0]]||[],i[t.path[0]].push(n(t))):a.push(n(t));return{formErrors:a,fieldErrors:i}}function Ot(e,n=i=>i.message){let i={_errors:[]},a=(t,o=[])=>{for(let s of t.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(c=>a({issues:c},[...o,...s.path]));else if(s.code==="invalid_key")a({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")a({issues:s.issues},[...o,...s.path]);else{let c=[...o,...s.path];if(c.length===0)i._errors.push(n(s));else{let u=i,l=0;for(;l<c.length;){let m=c[l];l===c.length-1?(u[m]=u[m]||{_errors:[]},u[m]._errors.push(n(s))):u[m]=u[m]||{_errors:[]},u=u[m],l++}}}};return a(e),i}function Io(e,n=i=>i.message){let i={errors:[]},a=(t,o=[])=>{var s,c;for(let u of t.issues)if(u.code==="invalid_union"&&u.errors.length)u.errors.map(l=>a({issues:l},[...o,...u.path]));else if(u.code==="invalid_key")a({issues:u.issues},[...o,...u.path]);else if(u.code==="invalid_element")a({issues:u.issues},[...o,...u.path]);else{let l=[...o,...u.path];if(l.length===0){i.errors.push(n(u));continue}let m=i,f=0;for(;f<l.length;){let g=l[f],b=f===l.length-1;typeof g=="string"?(m.properties??(m.properties={}),(s=m.properties)[g]??(s[g]={errors:[]}),m=m.properties[g]):(m.items??(m.items=[]),(c=m.items)[g]??(c[g]={errors:[]}),m=m.items[g]),b&&m.errors.push(n(u)),f++}}};return a(e),i}function el(e){let n=[],i=e.map(a=>typeof a=="object"?a.key:a);for(let a of i)typeof a=="number"?n.push(`[${a}]`):typeof a=="symbol"?n.push(`[${JSON.stringify(String(a))}]`):/[^\w$]/.test(a)?n.push(`[${JSON.stringify(a)}]`):(n.length&&n.push("."),n.push(a));return n.join("")}function wo(e){let n=[],i=[...e.issues].sort((a,t)=>(a.path??[]).length-(t.path??[]).length);for(let a of i)n.push(`\u2716 ${a.message}`),a.path?.length&&n.push(` \u2192 at ${el(a.path)}`);return n.join(`
|
|
3
3
|
`)}var We=e=>(n,i,a,t)=>{let o=a?{...a,async:!1}:{async:!1},s=n._zod.run({value:i,issues:[]},o);if(s instanceof Promise)throw new H;if(s.issues.length){let c=new(t?.Err??e)(s.issues.map(u=>M(u,o,O())));throw mr(c,t?.callee),c}return s.value},pr=We(B),Ke=e=>async(n,i,a,t)=>{let o=a?{...a,async:!0}:{async:!0},s=n._zod.run({value:i,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let c=new(t?.Err??e)(s.issues.map(u=>M(u,o,O())));throw mr(c,t?.callee),c}return s.value},fr=Ke(B),Je=e=>(n,i,a)=>{let t=a?{...a,async:!1}:{async:!1},o=n._zod.run({value:i,issues:[]},t);if(o instanceof Promise)throw new H;return o.issues.length?{success:!1,error:new(e??Et)(o.issues.map(s=>M(s,t,O())))}:{success:!0,data:o.value}},zo=Je(B),qe=e=>async(n,i,a)=>{let t=a?{...a,async:!0}:{async:!0},o=n._zod.run({value:i,issues:[]},t);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(s=>M(s,t,O())))}:{success:!0,data:o.value}},To=qe(B),gr=e=>(n,i,a)=>{let t=a?{...a,direction:"backward"}:{direction:"backward"};return We(e)(n,i,t)},rg=gr(B),hr=e=>(n,i,a)=>We(e)(n,i,a),ng=hr(B),vr=e=>async(n,i,a)=>{let t=a?{...a,direction:"backward"}:{direction:"backward"};return Ke(e)(n,i,t)},og=vr(B),br=e=>async(n,i,a)=>Ke(e)(n,i,a),ig=br(B),xr=e=>(n,i,a)=>{let t=a?{...a,direction:"backward"}:{direction:"backward"};return Je(e)(n,i,t)},ag=xr(B),_r=e=>(n,i,a)=>Je(e)(n,i,a),sg=_r(B),yr=e=>async(n,i,a)=>{let t=a?{...a,direction:"backward"}:{direction:"backward"};return qe(e)(n,i,t)},cg=yr(B),$r=e=>async(n,i,a)=>qe(e)(n,i,a),ug=$r(B);var J={};de(J,{base64:()=>Go,base64url:()=>Sr,bigint:()=>Ho,boolean:()=>Qo,browserEmail:()=>vg,cidrv4:()=>Fo,cidrv6:()=>Vo,cuid:()=>jo,cuid2:()=>Eo,date:()=>Ko,datetime:()=>qo,domain:()=>_g,duration:()=>Ro,e164:()=>Wo,email:()=>Do,emoji:()=>Co,extendedDuration:()=>lg,guid:()=>No,hex:()=>yg,hostname:()=>xg,html5Email:()=>fg,httpProtocol:()=>Bo,idnEmail:()=>hg,integer:()=>Yo,ipv4:()=>Lo,ipv6:()=>Zo,ksuid:()=>Ao,lowercase:()=>ri,mac:()=>Mo,md5_base64:()=>Sg,md5_base64url:()=>kg,md5_hex:()=>$g,nanoid:()=>Uo,null:()=>ei,number:()=>kr,rfc5322Email:()=>gg,sha1_base64:()=>wg,sha1_base64url:()=>zg,sha1_hex:()=>Ig,sha256_base64:()=>jg,sha256_base64url:()=>Eg,sha256_hex:()=>Tg,sha384_base64:()=>Og,sha384_base64url:()=>Ag,sha384_hex:()=>Pg,sha512_base64:()=>Rg,sha512_base64url:()=>Ng,sha512_hex:()=>Ug,string:()=>Xo,time:()=>Jo,ulid:()=>Po,undefined:()=>ti,unicodeEmail:()=>tl,uppercase:()=>ni,uuid:()=>Oe,uuid4:()=>dg,uuid6:()=>mg,uuid7:()=>pg,xid:()=>Oo});var jo=/^[cC][0-9a-z]{6,}$/,Eo=/^[0-9a-z]+$/,Po=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Oo=/^[0-9a-vA-V]{20}$/,Ao=/^[A-Za-z0-9]{27}$/,Uo=/^[a-zA-Z0-9_-]{21}$/,Ro=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,lg=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,No=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Oe=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,dg=Oe(4),mg=Oe(6),pg=Oe(7),Do=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,fg=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,gg=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,tl=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,hg=tl,vg=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,bg="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function Co(){return new RegExp(bg,"u")}var Lo=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Mo=e=>{let n=X(e??":");return new RegExp(`^(?:[0-9A-F]{2}${n}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${n}){5}[0-9a-f]{2}$`)},Fo=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Vo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Go=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Sr=/^[A-Za-z0-9_-]*$/,xg=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,_g=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Bo=/^https?$/,Wo=/^\+[1-9]\d{6,14}$/,rl="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Ko=new RegExp(`^${rl}$`);function nl(e){let n="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${n}`:e.precision===0?`${n}:[0-5]\\d`:`${n}:[0-5]\\d\\.\\d{${e.precision}}`:`${n}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Jo(e){return new RegExp(`^${nl(e)}$`)}function qo(e){let n=nl({precision:e.precision}),i=["Z"];e.local&&i.push(""),e.offset&&i.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let a=`${n}(?:${i.join("|")})`;return new RegExp(`^${rl}T(?:${a})$`)}var Xo=e=>{let n=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${n}$`)},Ho=/^-?\d+n?$/,Yo=/^-?\d+$/,kr=/^-?\d+(?:\.\d+)?$/,Qo=/^(?:true|false)$/i,ei=/^null$/i;var ti=/^undefined$/i;var ri=/^[^A-Z]*$/,ni=/^[^a-z]*$/,yg=/^[0-9a-fA-F]*$/;function At(e,n){return new RegExp(`^[A-Za-z0-9+/]{${e}}${n}$`)}function Ut(e){return new RegExp(`^[A-Za-z0-9_-]{${e}}$`)}var $g=/^[0-9a-fA-F]{32}$/,Sg=At(22,"=="),kg=Ut(22),Ig=/^[0-9a-fA-F]{40}$/,wg=At(27,"="),zg=Ut(27),Tg=/^[0-9a-fA-F]{64}$/,jg=At(43,"="),Eg=Ut(43),Pg=/^[0-9a-fA-F]{96}$/,Og=At(64,""),Ag=Ut(64),Ug=/^[0-9a-fA-F]{128}$/,Rg=At(86,"=="),Ng=Ut(86);var E=d("$ZodCheck",(e,n)=>{var i;e._zod??(e._zod={}),e._zod.def=n,(i=e._zod).onattach??(i.onattach=[])}),il={number:"number",bigint:"bigint",object:"date"},Ir=d("$ZodCheckLessThan",(e,n)=>{E.init(e,n);let i=il[typeof n.value];e._zod.onattach.push(a=>{let t=a._zod.bag,o=(n.inclusive?t.maximum:t.exclusiveMaximum)??Number.POSITIVE_INFINITY;n.value<o&&(n.inclusive?t.maximum=n.value:t.exclusiveMaximum=n.value)}),e._zod.check=a=>{(n.inclusive?a.value<=n.value:a.value<n.value)||a.issues.push({origin:i,code:"too_big",maximum:typeof n.value=="object"?n.value.getTime():n.value,input:a.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),wr=d("$ZodCheckGreaterThan",(e,n)=>{E.init(e,n);let i=il[typeof n.value];e._zod.onattach.push(a=>{let t=a._zod.bag,o=(n.inclusive?t.minimum:t.exclusiveMinimum)??Number.NEGATIVE_INFINITY;n.value>o&&(n.inclusive?t.minimum=n.value:t.exclusiveMinimum=n.value)}),e._zod.check=a=>{(n.inclusive?a.value>=n.value:a.value>n.value)||a.issues.push({origin:i,code:"too_small",minimum:typeof n.value=="object"?n.value.getTime():n.value,input:a.value,inclusive:n.inclusive,inst:e,continue:!n.abort})}}),oi=d("$ZodCheckMultipleOf",(e,n)=>{E.init(e,n),e._zod.onattach.push(i=>{var a;(a=i._zod.bag).multipleOf??(a.multipleOf=n.value)}),e._zod.check=i=>{if(typeof i.value!=typeof n.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof i.value=="bigint"?i.value%n.value===BigInt(0):ho(i.value,n.value)===0)||i.issues.push({origin:typeof i.value,code:"not_multiple_of",divisor:n.value,input:i.value,inst:e,continue:!n.abort})}}),ii=d("$ZodCheckNumberFormat",(e,n)=>{E.init(e,n),n.format=n.format||"float64";let i=n.format?.includes("int"),a=i?"int":"number",[t,o]=$o[n.format];e._zod.onattach.push(s=>{let c=s._zod.bag;c.format=n.format,c.minimum=t,c.maximum=o,i&&(c.pattern=Yo)}),e._zod.check=s=>{let c=s.value;if(i){if(!Number.isInteger(c)){s.issues.push({expected:a,format:n.format,code:"invalid_type",continue:!1,input:c,inst:e});return}if(!Number.isSafeInteger(c)){c>0?s.issues.push({input:c,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!n.abort}):s.issues.push({input:c,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:a,inclusive:!0,continue:!n.abort});return}}c<t&&s.issues.push({origin:"number",input:c,code:"too_small",minimum:t,inclusive:!0,inst:e,continue:!n.abort}),c>o&&s.issues.push({origin:"number",input:c,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!n.abort})}}),ai=d("$ZodCheckBigIntFormat",(e,n)=>{E.init(e,n);let[i,a]=So[n.format];e._zod.onattach.push(t=>{let o=t._zod.bag;o.format=n.format,o.minimum=i,o.maximum=a}),e._zod.check=t=>{let o=t.value;o<i&&t.issues.push({origin:"bigint",input:o,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!n.abort}),o>a&&t.issues.push({origin:"bigint",input:o,code:"too_big",maximum:a,inclusive:!0,inst:e,continue:!n.abort})}}),si=d("$ZodCheckMaxSize",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.size!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<t&&(a._zod.bag.maximum=n.maximum)}),e._zod.check=a=>{let t=a.value;t.size<=n.maximum||a.issues.push({origin:Tt(t),code:"too_big",maximum:n.maximum,inclusive:!0,input:t,inst:e,continue:!n.abort})}}),ci=d("$ZodCheckMinSize",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.size!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>t&&(a._zod.bag.minimum=n.minimum)}),e._zod.check=a=>{let t=a.value;t.size>=n.minimum||a.issues.push({origin:Tt(t),code:"too_small",minimum:n.minimum,inclusive:!0,input:t,inst:e,continue:!n.abort})}}),ui=d("$ZodCheckSizeEquals",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.size!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag;t.minimum=n.size,t.maximum=n.size,t.size=n.size}),e._zod.check=a=>{let t=a.value,o=t.size;if(o===n.size)return;let s=o>n.size;a.issues.push({origin:Tt(t),...s?{code:"too_big",maximum:n.size}:{code:"too_small",minimum:n.size},inclusive:!0,exact:!0,input:a.value,inst:e,continue:!n.abort})}}),li=d("$ZodCheckMaxLength",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.length!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag.maximum??Number.POSITIVE_INFINITY;n.maximum<t&&(a._zod.bag.maximum=n.maximum)}),e._zod.check=a=>{let t=a.value;if(t.length<=n.maximum)return;let s=jt(t);a.issues.push({origin:s,code:"too_big",maximum:n.maximum,inclusive:!0,input:t,inst:e,continue:!n.abort})}}),di=d("$ZodCheckMinLength",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.length!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag.minimum??Number.NEGATIVE_INFINITY;n.minimum>t&&(a._zod.bag.minimum=n.minimum)}),e._zod.check=a=>{let t=a.value;if(t.length>=n.minimum)return;let s=jt(t);a.issues.push({origin:s,code:"too_small",minimum:n.minimum,inclusive:!0,input:t,inst:e,continue:!n.abort})}}),mi=d("$ZodCheckLengthEquals",(e,n)=>{var i;E.init(e,n),(i=e._zod.def).when??(i.when=a=>{let t=a.value;return!ve(t)&&t.length!==void 0}),e._zod.onattach.push(a=>{let t=a._zod.bag;t.minimum=n.length,t.maximum=n.length,t.length=n.length}),e._zod.check=a=>{let t=a.value,o=t.length;if(o===n.length)return;let s=jt(t),c=o>n.length;a.issues.push({origin:s,...c?{code:"too_big",maximum:n.length}:{code:"too_small",minimum:n.length},inclusive:!0,exact:!0,input:a.value,inst:e,continue:!n.abort})}}),Xe=d("$ZodCheckStringFormat",(e,n)=>{var i,a;E.init(e,n),e._zod.onattach.push(t=>{let o=t._zod.bag;o.format=n.format,n.pattern&&(o.patterns??(o.patterns=new Set),o.patterns.add(n.pattern))}),n.pattern?(i=e._zod).check??(i.check=t=>{n.pattern.lastIndex=0,!n.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:n.format,input:t.value,...n.pattern?{pattern:n.pattern.toString()}:{},inst:e,continue:!n.abort})}):(a=e._zod).check??(a.check=()=>{})}),pi=d("$ZodCheckRegex",(e,n)=>{Xe.init(e,n),e._zod.check=i=>{n.pattern.lastIndex=0,!n.pattern.test(i.value)&&i.issues.push({origin:"string",code:"invalid_format",format:"regex",input:i.value,pattern:n.pattern.toString(),inst:e,continue:!n.abort})}}),fi=d("$ZodCheckLowerCase",(e,n)=>{n.pattern??(n.pattern=ri),Xe.init(e,n)}),gi=d("$ZodCheckUpperCase",(e,n)=>{n.pattern??(n.pattern=ni),Xe.init(e,n)}),hi=d("$ZodCheckIncludes",(e,n)=>{E.init(e,n);let i=X(n.includes),a=new RegExp(typeof n.position=="number"?`^.{${n.position}}${i}`:i);n.pattern=a,e._zod.onattach.push(t=>{let o=t._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(a)}),e._zod.check=t=>{t.value.includes(n.includes,n.position)||t.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:n.includes,input:t.value,inst:e,continue:!n.abort})}}),vi=d("$ZodCheckStartsWith",(e,n)=>{E.init(e,n);let i=new RegExp(`^${X(n.prefix)}.*`);n.pattern??(n.pattern=i),e._zod.onattach.push(a=>{let t=a._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=a=>{a.value.startsWith(n.prefix)||a.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:n.prefix,input:a.value,inst:e,continue:!n.abort})}}),bi=d("$ZodCheckEndsWith",(e,n)=>{E.init(e,n);let i=new RegExp(`.*${X(n.suffix)}$`);n.pattern??(n.pattern=i),e._zod.onattach.push(a=>{let t=a._zod.bag;t.patterns??(t.patterns=new Set),t.patterns.add(i)}),e._zod.check=a=>{a.value.endsWith(n.suffix)||a.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:n.suffix,input:a.value,inst:e,continue:!n.abort})}});function ol(e,n,i){e.issues.length&&n.issues.push(...G(i,e.issues))}var xi=d("$ZodCheckProperty",(e,n)=>{E.init(e,n),e._zod.check=i=>{let a=n.schema._zod.run({value:i.value[n.property],issues:[]},{});if(a instanceof Promise)return a.then(t=>ol(t,i,n.property));ol(a,i,n.property)}}),_i=d("$ZodCheckMimeType",(e,n)=>{E.init(e,n);let i=new Set(n.mime);e._zod.onattach.push(a=>{a._zod.bag.mime=n.mime}),e._zod.check=a=>{i.has(a.value.type)||a.issues.push({code:"invalid_value",values:n.mime,input:a.value.type,inst:e,continue:!n.abort})}}),yi=d("$ZodCheckOverwrite",(e,n)=>{E.init(e,n),e._zod.check=i=>{i.value=n.tx(i.value)}});var Rt=class{constructor(n=[]){this.content=[],this.indent=0,this&&(this.args=n)}indented(n){this.indent+=1,n(this),this.indent-=1}write(n){if(typeof n=="function"){n(this,{execution:"sync"}),n(this,{execution:"async"});return}let a=n.split(`
|
|
4
4
|
`).filter(s=>s),t=Math.min(...a.map(s=>s.length-s.trimStart().length)),o=a.map(s=>s.slice(t)).map(s=>" ".repeat(this.indent*2)+s);for(let s of o)this.content.push(s)}compile(){let n=Function,i=this?.args,t=[...(this?.content??[""]).map(o=>` ${o}`)];return new n(...i,t.join(`
|
|
5
5
|
`))}};var $i={major:4,minor:4,patch:3};var S=d("$ZodType",(e,n)=>{var i;e??(e={}),e._zod.def=n,e._zod.bag=e._zod.bag||{},e._zod.version=$i;let a=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&a.unshift(e);for(let t of a)for(let o of t._zod.onattach)o(e);if(a.length===0)(i=e._zod).deferred??(i.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(s,c,u)=>{let l=_e(s),m;for(let f of c){if(f._zod.def.when){if(ko(s)||!f._zod.def.when(s))continue}else if(l)continue;let g=s.issues.length,b=f._zod.check(s);if(b instanceof Promise&&u?.async===!1)throw new H;if(m||b instanceof Promise)m=(m??Promise.resolve()).then(async()=>{await b,s.issues.length!==g&&(l||(l=_e(s,g)))});else{if(s.issues.length===g)continue;l||(l=_e(s,g))}}return m?m.then(()=>s):s},o=(s,c,u)=>{if(_e(s))return s.aborted=!0,s;let l=t(c,a,u);if(l instanceof Promise){if(u.async===!1)throw new H;return l.then(m=>e._zod.parse(m,u))}return e._zod.parse(l,u)};e._zod.run=(s,c)=>{if(c.skipChecks)return e._zod.parse(s,c);if(c.direction==="backward"){let l=e._zod.parse({value:s.value,issues:[]},{...c,skipChecks:!0});return l instanceof Promise?l.then(m=>o(m,s,c)):o(l,s,c)}let u=e._zod.parse(s,c);if(u instanceof Promise){if(c.async===!1)throw new H;return u.then(l=>t(l,a,c))}return t(u,a,c)}}I(e,"~standard",()=>({validate:t=>{try{let o=zo(e,t);return o.success?{value:o.data}:{issues:o.error?.issues}}catch{return To(e,t).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),Ae=d("$ZodString",(e,n)=>{S.init(e,n),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Xo(e._zod.bag),e._zod.parse=(i,a)=>{if(n.coerce)try{i.value=String(i.value)}catch{}return typeof i.value=="string"||i.issues.push({expected:"string",code:"invalid_type",input:i.value,inst:e}),i}}),T=d("$ZodStringFormat",(e,n)=>{Xe.init(e,n),Ae.init(e,n)}),ki=d("$ZodGUID",(e,n)=>{n.pattern??(n.pattern=No),T.init(e,n)}),Ii=d("$ZodUUID",(e,n)=>{if(n.version){let a={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[n.version];if(a===void 0)throw new Error(`Invalid UUID version: "${n.version}"`);n.pattern??(n.pattern=Oe(a))}else n.pattern??(n.pattern=Oe());T.init(e,n)}),wi=d("$ZodEmail",(e,n)=>{n.pattern??(n.pattern=Do),T.init(e,n)}),zi=d("$ZodURL",(e,n)=>{T.init(e,n),e._zod.check=i=>{try{let a=i.value.trim();if(!n.normalize&&n.protocol?.source===Bo.source&&!/^https?:\/\//i.test(a)){i.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:i.value,inst:e,continue:!n.abort});return}let t=new URL(a);n.hostname&&(n.hostname.lastIndex=0,n.hostname.test(t.hostname)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:n.hostname.source,input:i.value,inst:e,continue:!n.abort})),n.protocol&&(n.protocol.lastIndex=0,n.protocol.test(t.protocol.endsWith(":")?t.protocol.slice(0,-1):t.protocol)||i.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:n.protocol.source,input:i.value,inst:e,continue:!n.abort})),n.normalize?i.value=t.href:i.value=a;return}catch{i.issues.push({code:"invalid_format",format:"url",input:i.value,inst:e,continue:!n.abort})}}}),Ti=d("$ZodEmoji",(e,n)=>{n.pattern??(n.pattern=Co()),T.init(e,n)}),ji=d("$ZodNanoID",(e,n)=>{n.pattern??(n.pattern=Uo),T.init(e,n)}),Ei=d("$ZodCUID",(e,n)=>{n.pattern??(n.pattern=jo),T.init(e,n)}),Pi=d("$ZodCUID2",(e,n)=>{n.pattern??(n.pattern=Eo),T.init(e,n)}),Oi=d("$ZodULID",(e,n)=>{n.pattern??(n.pattern=Po),T.init(e,n)}),Ai=d("$ZodXID",(e,n)=>{n.pattern??(n.pattern=Oo),T.init(e,n)}),Ui=d("$ZodKSUID",(e,n)=>{n.pattern??(n.pattern=Ao),T.init(e,n)}),Ri=d("$ZodISODateTime",(e,n)=>{n.pattern??(n.pattern=qo(n)),T.init(e,n)}),Ni=d("$ZodISODate",(e,n)=>{n.pattern??(n.pattern=Ko),T.init(e,n)}),Di=d("$ZodISOTime",(e,n)=>{n.pattern??(n.pattern=Jo(n)),T.init(e,n)}),Ci=d("$ZodISODuration",(e,n)=>{n.pattern??(n.pattern=Ro),T.init(e,n)}),Li=d("$ZodIPv4",(e,n)=>{n.pattern??(n.pattern=Lo),T.init(e,n),e._zod.bag.format="ipv4"}),Zi=d("$ZodIPv6",(e,n)=>{n.pattern??(n.pattern=Zo),T.init(e,n),e._zod.bag.format="ipv6",e._zod.check=i=>{try{new URL(`http://[${i.value}]`)}catch{i.issues.push({code:"invalid_format",format:"ipv6",input:i.value,inst:e,continue:!n.abort})}}}),Mi=d("$ZodMAC",(e,n)=>{n.pattern??(n.pattern=Mo(n.delimiter)),T.init(e,n),e._zod.bag.format="mac"}),Fi=d("$ZodCIDRv4",(e,n)=>{n.pattern??(n.pattern=Fo),T.init(e,n)}),Vi=d("$ZodCIDRv6",(e,n)=>{n.pattern??(n.pattern=Vo),T.init(e,n),e._zod.check=i=>{let a=i.value.split("/");try{if(a.length!==2)throw new Error;let[t,o]=a;if(!o)throw new Error;let s=Number(o);if(`${s}`!==o)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${t}]`)}catch{i.issues.push({code:"invalid_format",format:"cidrv6",input:i.value,inst:e,continue:!n.abort})}}});function Gi(e){if(e==="")return!0;if(/\s/.test(e)||e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Bi=d("$ZodBase64",(e,n)=>{n.pattern??(n.pattern=Go),T.init(e,n),e._zod.bag.contentEncoding="base64",e._zod.check=i=>{Gi(i.value)||i.issues.push({code:"invalid_format",format:"base64",input:i.value,inst:e,continue:!n.abort})}});function yl(e){if(!Sr.test(e))return!1;let n=e.replace(/[-_]/g,a=>a==="-"?"+":"/"),i=n.padEnd(Math.ceil(n.length/4)*4,"=");return Gi(i)}var Wi=d("$ZodBase64URL",(e,n)=>{n.pattern??(n.pattern=Sr),T.init(e,n),e._zod.bag.contentEncoding="base64url",e._zod.check=i=>{yl(i.value)||i.issues.push({code:"invalid_format",format:"base64url",input:i.value,inst:e,continue:!n.abort})}}),Ki=d("$ZodE164",(e,n)=>{n.pattern??(n.pattern=Wo),T.init(e,n)});function $l(e,n=null){try{let i=e.split(".");if(i.length!==3)return!1;let[a]=i;if(!a)return!1;let t=JSON.parse(atob(a));return!("typ"in t&&t?.typ!=="JWT"||!t.alg||n&&(!("alg"in t)||t.alg!==n))}catch{return!1}}var Ji=d("$ZodJWT",(e,n)=>{T.init(e,n),e._zod.check=i=>{$l(i.value,n.alg)||i.issues.push({code:"invalid_format",format:"jwt",input:i.value,inst:e,continue:!n.abort})}}),qi=d("$ZodCustomStringFormat",(e,n)=>{T.init(e,n),e._zod.check=i=>{n.fn(i.value)||i.issues.push({code:"invalid_format",format:n.format,input:i.value,inst:e,continue:!n.abort})}}),Pr=d("$ZodNumber",(e,n)=>{S.init(e,n),e._zod.pattern=e._zod.bag.pattern??kr,e._zod.parse=(i,a)=>{if(n.coerce)try{i.value=Number(i.value)}catch{}let t=i.value;if(typeof t=="number"&&!Number.isNaN(t)&&Number.isFinite(t))return i;let o=typeof t=="number"?Number.isNaN(t)?"NaN":Number.isFinite(t)?void 0:"Infinity":void 0;return i.issues.push({expected:"number",code:"invalid_type",input:t,inst:e,...o?{received:o}:{}}),i}}),Xi=d("$ZodNumberFormat",(e,n)=>{ii.init(e,n),Pr.init(e,n)}),Nt=d("$ZodBoolean",(e,n)=>{S.init(e,n),e._zod.pattern=Qo,e._zod.parse=(i,a)=>{if(n.coerce)try{i.value=!!i.value}catch{}let t=i.value;return typeof t=="boolean"||i.issues.push({expected:"boolean",code:"invalid_type",input:t,inst:e}),i}}),Or=d("$ZodBigInt",(e,n)=>{S.init(e,n),e._zod.pattern=Ho,e._zod.parse=(i,a)=>{if(n.coerce)try{i.value=BigInt(i.value)}catch{}return typeof i.value=="bigint"||i.issues.push({expected:"bigint",code:"invalid_type",input:i.value,inst:e}),i}}),Hi=d("$ZodBigIntFormat",(e,n)=>{ai.init(e,n),Or.init(e,n)}),Yi=d("$ZodSymbol",(e,n)=>{S.init(e,n),e._zod.parse=(i,a)=>{let t=i.value;return typeof t=="symbol"||i.issues.push({expected:"symbol",code:"invalid_type",input:t,inst:e}),i}}),Qi=d("$ZodUndefined",(e,n)=>{S.init(e,n),e._zod.pattern=ti,e._zod.values=new Set([void 0]),e._zod.parse=(i,a)=>{let t=i.value;return typeof t>"u"||i.issues.push({expected:"undefined",code:"invalid_type",input:t,inst:e}),i}}),ea=d("$ZodNull",(e,n)=>{S.init(e,n),e._zod.pattern=ei,e._zod.values=new Set([null]),e._zod.parse=(i,a)=>{let t=i.value;return t===null||i.issues.push({expected:"null",code:"invalid_type",input:t,inst:e}),i}}),ta=d("$ZodAny",(e,n)=>{S.init(e,n),e._zod.parse=i=>i}),ra=d("$ZodUnknown",(e,n)=>{S.init(e,n),e._zod.parse=i=>i}),na=d("$ZodNever",(e,n)=>{S.init(e,n),e._zod.parse=(i,a)=>(i.issues.push({expected:"never",code:"invalid_type",input:i.value,inst:e}),i)}),oa=d("$ZodVoid",(e,n)=>{S.init(e,n),e._zod.parse=(i,a)=>{let t=i.value;return typeof t>"u"||i.issues.push({expected:"void",code:"invalid_type",input:t,inst:e}),i}}),ia=d("$ZodDate",(e,n)=>{S.init(e,n),e._zod.parse=(i,a)=>{if(n.coerce)try{i.value=new Date(i.value)}catch{}let t=i.value,o=t instanceof Date;return o&&!Number.isNaN(t.getTime())||i.issues.push({expected:"date",code:"invalid_type",input:t,...o?{received:"Invalid Date"}:{},inst:e}),i}});function sl(e,n,i){e.issues.length&&n.issues.push(...G(i,e.issues)),n.value[i]=e.value}var aa=d("$ZodArray",(e,n)=>{S.init(e,n),e._zod.parse=(i,a)=>{let t=i.value;if(!Array.isArray(t))return i.issues.push({expected:"array",code:"invalid_type",input:t,inst:e}),i;i.value=Array(t.length);let o=[];for(let s=0;s<t.length;s++){let c=t[s],u=n.element._zod.run({value:c,issues:[]},a);u instanceof Promise?o.push(u.then(l=>sl(l,i,s))):sl(u,i,s)}return o.length?Promise.all(o).then(()=>i):i}});function Er(e,n,i,a,t,o){let s=i in a;if(e.issues.length){if(t&&o&&!s)return;n.issues.push(...G(i,e.issues))}if(!s&&!t){e.issues.length||n.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[i]});return}e.value===void 0?s&&(n.value[i]=void 0):n.value[i]=e.value}function Sl(e){let n=Object.keys(e.shape);for(let a of n)if(!e.shape?.[a]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${a}": expected a Zod schema`);let i=yo(e.shape);return{...e,keys:n,keySet:new Set(n),numKeys:n.length,optionalKeys:new Set(i)}}function kl(e,n,i,a,t,o){let s=[],c=t.keySet,u=t.catchall._zod,l=u.def.type,m=u.optin==="optional",f=u.optout==="optional";for(let g in n){if(g==="__proto__"||c.has(g))continue;if(l==="never"){s.push(g);continue}let b=u.run({value:n[g],issues:[]},a);b instanceof Promise?e.push(b.then($=>Er($,i,g,n,m,f))):Er(b,i,g,n,m,f)}return s.length&&i.issues.push({code:"unrecognized_keys",keys:s,input:n,inst:o}),e.length?Promise.all(e).then(()=>i):i}var Il=d("$ZodObject",(e,n)=>{if(S.init(e,n),!Object.getOwnPropertyDescriptor(n,"shape")?.get){let c=n.shape;Object.defineProperty(n,"shape",{get:()=>{let u={...c};return Object.defineProperty(n,"shape",{value:u}),u}})}let a=Ge(()=>Sl(n));I(e._zod,"propValues",()=>{let c=n.shape,u={};for(let l in c){let m=c[l]._zod;if(m.values){u[l]??(u[l]=new Set);for(let f of m.values)u[l].add(f)}}return u});let t=Pe,o=n.catchall,s;e._zod.parse=(c,u)=>{s??(s=a.value);let l=c.value;if(!t(l))return c.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),c;c.value={};let m=[],f=s.shape;for(let g of s.keys){let b=f[g],$=b._zod.optin==="optional",D=b._zod.optout==="optional",U=b._zod.run({value:l[g],issues:[]},u);U instanceof Promise?m.push(U.then(lo=>Er(lo,c,g,l,$,D))):Er(U,c,g,l,$,D)}return o?kl(m,l,c,u,a.value,e):m.length?Promise.all(m).then(()=>c):c}}),sa=d("$ZodObjectJIT",(e,n)=>{Il.init(e,n);let i=e._zod.parse,a=Ge(()=>Sl(n)),t=g=>{let b=new Rt(["shape","payload","ctx"]),$=a.value,D=ne=>{let P=dr(ne);return`shape[${P}]._zod.run({ value: input[${P}], issues: [] }, ctx)`};b.write("const input = payload.value;");let U=Object.create(null),lo=0;for(let ne of $.keys)U[ne]=`key_${lo++}`;b.write("const newResult = {};");for(let ne of $.keys){let P=U[ne],R=dr(ne),Gu=g[ne],Bu=Gu?._zod?.optin==="optional",jf=Gu?._zod?.optout==="optional";b.write(`const ${P} = ${D(ne)};`),Bu&&jf?b.write(`
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as n,q as t,s as l}from"./chunk-
|
|
2
|
+
import{h as n,q as t,s as l}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";async function p(c){try{let e,r;try{let o=await t();e=o.accessToken,r=o.workspaceId}catch(o){let a=o instanceof Error?o.message:"Authentication failed";console.error(a),process.exit(1)}let i=new n,{models:s}=await i.getModels(e,r);if(c.json){console.log(JSON.stringify(s));return}if(s.length===0){console.log("No models available in this workspace.");return}console.log(`Available Models (${s.length}):
|
|
3
3
|
`);for(let o of s)console.log(` ${o.name}`),o.description&&console.log(` ${o.description.slice(0,80)}`),console.log(` ID: ${o.id}`),console.log("")}catch(e){l(e)}}export{p as runModels};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{h as d,q as u,s as m}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function p(){console.log(`
|
|
3
|
+
Usage: entrydesk notifications [list|unread|read|read-all] [options]
|
|
4
|
+
|
|
5
|
+
Commands:
|
|
6
|
+
list List notifications (default)
|
|
7
|
+
unread Show the unread notification count
|
|
8
|
+
read <notificationId> Mark a notification as read
|
|
9
|
+
read-all Mark every notification as read
|
|
10
|
+
|
|
11
|
+
List Options:
|
|
12
|
+
--tab all|action|info Filter by category (default: all)
|
|
13
|
+
--event-type <type> Filter by a single event type (e.g. task_complete)
|
|
14
|
+
--limit <number> Max per page (default: 20)
|
|
15
|
+
--next-key <cursor> Fetch next page using cursor
|
|
16
|
+
--all Fetch all notifications (auto-paginate)
|
|
17
|
+
|
|
18
|
+
Flags:
|
|
19
|
+
--json Output JSON
|
|
20
|
+
|
|
21
|
+
Examples:
|
|
22
|
+
entrydesk notifications
|
|
23
|
+
entrydesk notifications --tab action
|
|
24
|
+
entrydesk notifications unread
|
|
25
|
+
entrydesk notifications read <notificationId>
|
|
26
|
+
entrydesk notifications read-all
|
|
27
|
+
`)}function y(i){if(!i)return"";let t=new Date(i);return isNaN(t.getTime())?i:t.toLocaleString()}function N(i,t){let o=i.replace(/\s+/g," ").trim();return o.length>t?`${o.slice(0,t)}...`:o}function g(i){console.log(`Notifications (${i.length}):
|
|
28
|
+
`);for(let t of i){let o=t.readAt?" ":"\u25CF";console.log(` ${o} [${t.category}] ${t.rendered.title}`),t.rendered.body&&console.log(` ${N(t.rendered.body,100)}`);let n=y(t.createdAt);console.log(` ${n} \xB7 ${t.eventType} \xB7 ID: ${t.id}`),console.log("")}}async function k(i,t,o,n){n.all&&n.nextKey&&(console.error("Cannot use --all and --next-key together."),process.exit(1));let e={tab:n.tab,eventType:n.eventType};if(n.all){let s=[],c;for(let l=0;;l++){l>=100&&(console.error("Reached maximum page limit (100). Use --limit and --next-key for manual pagination."),process.exit(1));let f=await i.getNotifications(t,o,{...e,limit:n.limit??20,cursor:c});if(s.push(...f.items),c=f.nextKey,!c)break}if(n.json){console.log(JSON.stringify({items:s}));return}if(s.length===0){console.log("No notifications.");return}g(s);return}let{items:r,nextKey:a}=await i.getNotifications(t,o,{...e,limit:n.limit,cursor:n.nextKey});if(n.json){console.log(JSON.stringify({items:r,nextKey:a}));return}if(r.length===0){console.log("No notifications.");return}g(r),a&&console.log(`Next page: --next-key ${a}`)}async function w(i){try{if(i.help){p();return}let{accessToken:t,workspaceId:o}=await u(),n=i.action||"list",e=new d;if(n==="list"){await k(e,t,o,i);return}if(n==="unread"){let{count:r,capped:a}=await e.getNotificationUnreadCount(t,o);if(i.json){console.log(JSON.stringify({count:r,capped:a??!1}));return}console.log(`${a?`${r}+`:r} unread`);return}if(n==="read"){if(!i.notificationId)throw new Error("Missing notificationId for read command");if(await e.markNotificationRead(t,o,i.notificationId),i.json){console.log(JSON.stringify({id:i.notificationId,read:!0}));return}console.log(`Marked notification read: ${i.notificationId}`);return}if(n==="read-all"){if(await e.markAllNotificationsRead(t,o),i.json){console.log(JSON.stringify({readAll:!0}));return}console.log("Marked all notifications read.");return}console.error(`Unknown notifications command: ${n}`),p(),process.exit(1)}catch(t){m(t)}}export{w as runNotifications};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as t,b as a,g as m,r as f,s as d}from"./chunk-
|
|
2
|
+
import{a as t,b as a,g as m,r as f,s as d}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function P(){console.log(`
|
|
3
3
|
Usage: entrydesk profile [list|show|current|create|use|delete|rename|clone] [args]
|
|
4
4
|
|
|
5
5
|
Commands:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as S,q as g,s as $}from"./chunk-
|
|
2
|
+
import{h as S,q as g,s as $}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function u(){console.log(`
|
|
3
3
|
Usage: entrydesk schedules [list|get|create|edit|delete|activate|pause|run|runs] [options]
|
|
4
4
|
|
|
5
5
|
Commands:
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import{h as D,j as I,q as U,s as z}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import j from"crypto";import v from"fs";import c from"fs/promises";import x from"os";import s from"path";import{Readable as N}from"stream";import{pipeline as E}from"stream/promises";import O from"adm-zip";import A from"archiver";import{isHTTPError as R}from"ky";function w(){console.log(`
|
|
3
|
+
Usage: entrydesk skills [list|upload|delete|download|toggle|versions|share] [options]
|
|
4
|
+
|
|
5
|
+
Commands:
|
|
6
|
+
list List available skills (default)
|
|
7
|
+
upload <file.zip> Upload a skill zip file
|
|
8
|
+
upload <folder> Upload a skill folder (auto-zipped)
|
|
9
|
+
delete <skillId> Delete a skill you own
|
|
10
|
+
download <skillId> Download and extract a skill to ./<skill-name>/
|
|
11
|
+
toggle <skillId> Enable/disable a skill for yourself (--enable/--disable)
|
|
12
|
+
versions <skillId> List a skill's version history
|
|
13
|
+
share <skillId> Show or manage sharing (user grants)
|
|
14
|
+
|
|
15
|
+
Options:
|
|
16
|
+
--me Only list skills created by me
|
|
17
|
+
--force Overwrite an existing skill with the same name
|
|
18
|
+
--enable / --disable For toggle: turn the skill on/off for yourself
|
|
19
|
+
--add-user <userId> For share: grant a user access (use with --role)
|
|
20
|
+
--remove-user <userId> For share: revoke a user's access
|
|
21
|
+
--role owner|editor|viewer Role for --add-user (default: viewer)
|
|
22
|
+
--json Output JSON (for list/upload)
|
|
23
|
+
`)}function F(e,r){let i=s.relative(e,r);return i===""||!i.startsWith("..")&&!s.isAbsolute(i)}async function J(e){let r=await c.realpath(e),i=[process.cwd(),x.homedir()];if(!(await Promise.all(i.map(async f=>{try{return await c.realpath(f)}catch{return s.resolve(f)}}))).some(f=>F(f,r)))throw new Error("Invalid upload path: must be within the current directory or your home directory.")}async function T(e){let r=await c.mkdtemp(s.join(x.tmpdir(),"entrydesk-skill-")),i=s.join(r,`${s.basename(e)}.zip`);return await new Promise((p,u)=>{let f=v.createWriteStream(i),k=A("zip",{zlib:{level:9}});f.on("close",()=>p()),f.on("error",u),k.on("error",u),k.pipe(f),k.directory(e,!1),k.finalize()}),{zipPath:i,cleanupDir:r}}function K(e){console.log(`Versions (${e.length}):
|
|
24
|
+
`);for(let r of e){let i=new Date(r.createdAt).toLocaleString();if(console.log(` v${r.versionNumber} \xB7 ${i}`),r.description){let p=r.description.length>100?`${r.description.slice(0,100)}...`:r.description;console.log(` ${p}`)}console.log(` Version ID: ${r.id}`),console.log("")}}function V(e){if(console.log(`User grants (${e.grants.length}):`),e.grants.length===0){console.log(" (none)");return}for(let r of e.grants)console.log(` - ${r.user.name} <${r.user.email}> \xB7 ${r.role}`),console.log(` ID: ${r.userId}`)}async function oe(e){let r,i;try{let o=await U();r=o.accessToken,i=o.workspaceId}catch(o){z(o)}let p=e.action||"list",u=new D;if(p==="upload"){let o=e.configKey;o||(console.error("Missing file path."),w(),process.exit(1));let n=s.resolve(o),t;try{t=await c.stat(n)}catch{console.error(`File not found: ${n}`),process.exit(1)}let a=n,y=null;try{try{await J(n)}catch(d){let l=d instanceof Error?d.message:"Invalid upload path.";console.error(l),process.exit(1)}if(t.isDirectory()){let d=await T(n);a=d.zipPath,y=d.cleanupDir}else t.isFile()||(console.error(`Not a file or directory: ${n}`),process.exit(1));s.extname(a).toLowerCase()!==".zip"&&(console.error("Only .zip files are supported for upload."),process.exit(1));let $=await c.readFile(a),m=new FormData;m.append("file",new Blob([$],{type:"application/zip"}),s.basename(a)),e.force&&m.append("force","true");let g;try{g=await u.uploadSkill(r,i,m)}catch(d){if(R(d)&&d.response.status===409){let{code:l}=I(d.data);l==="skill_name_conflict"?console.error("Upload failed: A skill with this name is owned by another user."):(console.error("Upload failed: A skill with this name already exists."),console.error("Use --force to overwrite the existing skill.")),process.exit(1)}throw d}if(e.json){console.log(JSON.stringify(g));return}console.log(`Uploaded skill: ${g.name}`),console.log(` ID: ${g.id}`),console.log(` Version ID: ${g.versionId}`),console.log(` Description: ${g.description}`);return}finally{y&&await c.rm(y,{recursive:!0,force:!0})}}if(p==="toggle"){let o=e.configKey;o||(console.error("Missing skill ID."),w(),process.exit(1)),e.enable===e.disable&&(console.error("Pass exactly one of --enable or --disable."),process.exit(1));let n=!!e.enable,t=await u.updateSkillPreference(r,i,o,n);if(e.json){console.log(JSON.stringify(t));return}console.log(`${t.isEnabled?"Enabled":"Disabled"} skill for you: ${o}`);return}if(p==="versions"){let o=e.configKey;o||(console.error("Missing skill ID."),w(),process.exit(1));let n=await u.getSkillVersions(r,i,o);if(e.json){console.log(JSON.stringify(n));return}if(n.versions.length===0){console.log("No versions for this skill.");return}K(n.versions);return}if(p==="share"){let o=e.configKey;o||(console.error("Missing skill ID."),w(),process.exit(1));let n=e.role??"viewer";if(e.addUser){let a=await u.upsertSkillGrant(r,i,o,e.addUser,n);if(e.json){console.log(JSON.stringify(a));return}console.log(`Granted ${n} to user ${e.addUser}`);return}if(e.removeUser){if(await u.removeSkillGrant(r,i,o,e.removeUser),e.json){console.log(JSON.stringify({userId:e.removeUser,removed:!0}));return}console.log(`Revoked access for user ${e.removeUser}`);return}let t=await u.getSkillGrants(r,i,o);if(e.json){console.log(JSON.stringify(t));return}V(t);return}if(p==="delete"){let o=e.configKey;o||(console.error("Missing skill ID."),w(),process.exit(1)),await u.deleteSkill(r,i,o),console.log(`Deleted skill: ${o}`);return}if(p==="download"){let o=e.configKey;o||(console.error("Missing skill ID."),w(),process.exit(1));let{url:n,name:t}=await u.downloadSkillCurrent(r,i,o);(t.includes("/")||t.includes(s.sep)||t==="."||t===".."||!t)&&(console.error(`Invalid skill name for output directory: ${t}`),process.exit(1));let a=s.resolve(t),y=await c.mkdtemp(s.join(x.tmpdir(),"entrydesk-skill-download-")),$=s.join(y,`${t}.zip`);try{let m=await fetch(n);if(!m.ok)throw new Error(`Failed to download skill zip: ${m.status} ${m.statusText}`);if(!m.body)throw new Error("Response body is empty");let g=v.createWriteStream($);await E(N.fromWeb(m.body),g);let d=await c.mkdtemp(s.join(s.dirname(a),".entrydesk-skill-extract-")),l=null;try{e.json||console.log("Extracting...");let b=new O($),P=s.resolve(d)+s.sep;for(let h of b.getEntries()){if(h.isDirectory)continue;let S=s.resolve(d,h.entryName);if(!S.startsWith(P))throw new Error(`Zip entry contains path traversal: ${h.entryName}`);await c.mkdir(s.dirname(S),{recursive:!0}),await c.writeFile(S,h.getData())}v.existsSync(a)&&(l=s.join(s.dirname(a),`.entrydesk-backup-${j.randomUUID()}`),e.json||console.log(`Replacing existing directory: ${a}`),await c.rename(a,l));try{await c.rename(d,a),l&&v.existsSync(l)&&(await c.rm(l,{recursive:!0,force:!0}),l=null)}catch(h){throw l&&v.existsSync(l)&&(await c.rename(l,a),l=null),h}}catch(b){if(await c.rm(d,{recursive:!0,force:!0}),l&&v.existsSync(l))try{await c.rename(l,a)}catch{console.error(`Warning: Could not restore backup. Your original files are at: ${l}`)}throw b}if(e.json){console.log(JSON.stringify({skillId:o,skillName:t,outputDir:a}));return}console.log(`Downloaded skill "${t}" to ${a}`)}finally{await c.rm(y,{recursive:!0,force:!0})}return}p!=="list"&&(console.error(`Unknown skills command: ${p}`),w(),process.exit(1));let f=[],k;do{let o=await u.listAvailableSkills(r,i,{createdBy:e.createdBy,nextKey:k,limit:100});f.push(...o.skills),k=o.nextKey}while(k);if(e.json){console.log(JSON.stringify(f));return}if(f.length===0){console.log("No skills found in this workspace.");return}console.log(`Available Skills (${f.length}):
|
|
25
|
+
`);for(let o of f)console.log(` ${o.name} (${o.provider})`),console.log(` ${o.description.slice(0,120)}`),console.log(` ID: ${o.id}`),console.log(` Author: ${o.author.name}`),console.log("")}export{oe as runSkills};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as c,b as i,g as a,h as g,i as f,m as p,p as d,s as u}from"./chunk-
|
|
2
|
+
import{a as c,b as i,g as a,h as g,i as f,m as p,p as d,s as u}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";async function W(t){try{let o=c.getEffectiveProfileName(),n={model:i.getDefaultModel(),connectors:i.getDefaultConnectorIds()},r=f();if(r){t.json?console.log(JSON.stringify({loggedIn:!0,authSource:r.authSource,profile:o,workspaceId:r.workspaceId,defaults:n})):(console.log(`Profile: ${o}`),console.log(`Authenticated via ${r.label} (no login required)`),console.log(`Workspace ID: ${r.workspaceId}`));return}let e=await a.getAll();if(!e){t.json?console.log(JSON.stringify({loggedIn:!1,profile:o,defaults:n})):(console.log(`Profile: ${o}`),console.log("Not logged in"),console.log("Run `entrydesk login` to authenticate"));return}let l;if(e.workspaceId)try{let s=new g,m=await d(),{workspaces:k}=await s.getWorkspaces(m);l=k.find(I=>I.id===e.workspaceId)?.name}catch(s){if(s instanceof p){t.json?console.log(JSON.stringify({loggedIn:!1,profile:o,defaults:n})):(console.log(`Profile: ${o}`),console.log("Not logged in"),console.log("Run `entrydesk login` to authenticate"));return}}t.json?console.log(JSON.stringify({loggedIn:!0,authSource:"file",profile:o,email:e.email,workspaceId:e.workspaceId,workspaceName:l,defaults:n})):(console.log(`Profile: ${o}`),console.log(`Logged in as ${e.email}`),l&&console.log(`Workspace: ${l}`),e.workspaceId&&console.log(`Workspace ID: ${e.workspaceId}`))}catch(o){u(o)}}export{W as runStatus};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as ie,b as fe,c as Bt,g as rt,h as pe,m as Je,p as an,q as Me,s as cn}from"./chunk-
|
|
2
|
+
import{a as ie,b as fe,c as Bt,g as rt,h as pe,m as Je,p as an,q as Me,s as cn}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import{render as ms}from"ink";import{v4 as uo}from"uuid";import{exec as pn}from"child_process";import ho from"fs";import Oe from"fs/promises";import mn from"os";import Ut from"path";import{promisify as yo}from"util";import{glob as wo}from"glob";var xo=yo(pn),To=`## Filesystem Tool Instructions
|
|
3
3
|
|
|
4
4
|
You have access to filesystem tools that allow you to interact with the user's local filesystem.
|
|
5
5
|
|
|
@@ -166,7 +166,7 @@ ID: ${r.id}`)}}}else if(W==="connectors"){let o=Array.from(S);H(o.length>0?o:voi
|
|
|
166
166
|
`)||Le.length===0)return;if(Ee===null){st(e);let r=Le.length-1;We(r),t(Le[r]);return}let o=Math.max(0,Ee-1);We(o),t(Le[o]);return}if(f.downArrow){if(e.includes(`
|
|
167
167
|
`)||Ee===null)return;if(Ee>=Le.length-1){We(null),t(Ft);return}let o=Ee+1;We(o),t(Le[o])}}),{suggestions:K,suggestionIndex:V,showSuggestions:X,argMode:W,argItems:L,argIndex:m,selectedConnectorIds:S,selectedCapabilities:me,deleteConfirmMode:Fe,handleInputChange:ht,handleSubmit:Ot}}import{useCallback as pt,useRef as ss,useState as rs}from"react";function lo({credentials:e,currentModel:t,modelProviders:n,onUploadSuccess:s,onUploadError:l}){let[a,g]=rs([]),y=ss(0),w=pt(b=>{if(!(!Array.isArray(n)||n.length===0)){for(let N of n)if(N.models.some(G=>G.id===b))return N.id;return n[0]?.id}},[n]),h=pt(async b=>{if(!e){l?.(b.filename,"Not logged in");return}if(!Array.isArray(n)||n.length===0){l?.(b.filename,"Model providers not loaded yet. Please wait and try again.");return}let N=t?w(t):n[0]?.id;if(!N){l?.(b.filename,"No model provider available");return}let D=`file-${++y.current}`;g(G=>[...G,{id:D,filename:b.filename,mimeType:b.mimeType,status:"uploading"}]);try{let Q=await new pe().uploadFile(e.accessToken,e.workspaceId,b,N);g(j=>j.map(J=>J.id===D?{...J,status:"uploaded",fileId:Q.id}:J)),s?.(b.filename)}catch(G){let Q=G instanceof Error?G.message:"Upload failed";g(j=>j.map(J=>J.id===D?{...J,status:"error",error:Q}:J)),l?.(b.filename,Q)}},[e,t,w,n,s,l]),O=pt(b=>{g(N=>N.filter(D=>D.id!==b))},[]),$=pt(()=>{g([])},[]),P=pt(()=>a.filter(b=>b.status==="uploaded"&&b.fileId).map(b=>b.fileId),[a]),H=a.some(b=>b.status==="uploading"),k=a.length>0;return{pendingFiles:a,addFile:h,removeFile:O,clearFiles:$,getUploadedFileIds:P,hasUploadingFiles:H,hasFiles:k}}import{jsx as q,jsxs as se}from"react/jsx-runtime";var ls=[" ______ _ ____ _","| ____| | | | _ \\ | |","| |__ _ __ | |_ _ __ _ _ | | | | ___ ___| | __","| __| | '_ \\| __| '__| | | || | | |/ _ \\/ __| |/ /","| |____| | | | |_| | | |_| || |_| | __/\\__ \\ <","|______|_| |_|\\__|_| \\__, ||____/ \\___||___/_|\\_\\"," __/ |"," |___/"],as=[Zt,Zt,Qt,Qt,Ye,Ye,Ye,Ye],ao=ls.map((e,t)=>`${as[t]??Ye}${e}${z}`).join(`
|
|
168
168
|
`),cs=`${Ye}EntryDesk${z}`,us=500;function ds(e){let t="",n=0;for(;n<e.length;){if(e.charCodeAt(n)===27&&e[n+1]==="["){for(n+=2;n<e.length;){let s=e.charCodeAt(n);if(s>=64&&s<=126){n+=1;break}n+=1}continue}t+=e[n],n+=1}return t}function fs(e){let t=ds(e);return Math.max(...t.split(`
|
|
169
|
-
`).map(n=>n.length))}function ps(e){let t=fs(ao);return e>=t?ao:cs}function co({agentId:e,model:t,message:n,taskId:s,taskTitle:l,connectorIds:a,enableFileSystem:g=!0}){let y=process.stdout.columns??80,w=ps(y),h=rn(null),O=qn(s,l),{state:$,setState:P,messages:H,setMessages:k,input:b,setInput:N,taskId:D,setTaskId:G,currentTaskTitle:Q,setCurrentTaskTitle:j,hasPersistedTask:J,setHasPersistedTask:le,credentials:i,setCredentials:p,currentResponse:E,setCurrentResponse:B,fullOutput:C,setFullOutput:de,addSystemMessage:Y,startNewTask:T}=O,{credentials:I}=Jn(P);Et(()=>{I&&!i&&p(I)},[I,i,p]);let{availableConnectors:U,availableModels:ne,availableAgents:K,modelProviders:ee,loading:V}=Yn(i),{currentModel:oe,setCurrentModel:X,currentAgentId:ce,setCurrentAgentId:W,activeConnectorIds:_,setActiveConnectorIds:L}=eo(t,e,a),v=rn(!1);Et(()=>{if(!v.current){if(v.current=!0,!t&&!e){let c=fe.getDefaultModel();c&&X(c)}if(!a&&!e){let c=fe.getDefaultConnectorIds();c&&L(c.length>0?c:void 0)}}},[t,e,a,X,L]);let{currentAgentDetails:m}=Zn(ce,i),{fileSystem:d,setFileSystem:S,capabilityLabelMap:re}=Qn(g),{pendingFiles:me,addFile:R,removeFile:Re,clearFiles:mt,getUploadedFileIds:_e,hasUploadingFiles:Lt,hasFiles:ve}=lo({credentials:i,currentModel:oe,modelProviders:ee,onUploadSuccess:c=>{Y(`\u2713 Attached: ${c}`)},onUploadError:(c,A)=>{Y(`\u2717 Failed to upload ${c}: ${A}`)}}),{sendMessage:ot}=zn({taskId:D,credentials:i,currentAgentId:ce,currentModel:oe,activeConnectorIds:_,localTools:d,fullOutput:C,setMessages:k,setState:P,setCurrentResponse:B,setCredentials:p,setHasPersistedTask:le,getFileIds:_e,clearFiles:mt}),Le=sn(c=>{T(c),B("")},[T]),[gt,Ee]=is(!1),We=sn(async c=>{let A=c.text.trim(),Z=St(A);if(/^https?:\/\//.test(Z))return;if(await jn(A)&&Un(Z)){let M=await Wn(A);M&&(c.preventDefault(),await R(M))}},[R]),Ft=sn(async()=>{if(!(gt||$.status!=="ready")){if(V||ee.length===0){Y("Please wait for resources to load before pasting images.");return}Y("Reading clipboard..."),Ee(!0);try{let c=await Bn();if(c){let A=`clipboard-${Date.now()}.png`;Y(`Uploading: ${A} (${Math.round(c.buffer.length/1024)}KB)`),await R({buffer:c.buffer,filename:A,mimeType:c.mime})}else Y("No image found in clipboard. Copy an image first.")}catch(c){let A=c instanceof Error?c.message:"Failed to read clipboard";Y(`Clipboard error: ${A}`)}finally{Ee(!1)}}},[R,Y,gt,$.status,V,ee.length]),{suggestions:st,suggestionIndex:ze,showSuggestions:Fe,argMode:xe,argItems:Xe,argIndex:Qe,selectedConnectorIds:Te,selectedCapabilities:Se,deleteConfirmMode:Ne,handleInputChange:qe,handleSubmit:ht}=io({input:b,setInput:N,taskId:D,setTaskId:G,currentTaskTitle:Q,setCurrentTaskTitle:j,currentModel:oe,setCurrentModel:X,currentAgentId:ce,setCurrentAgentId:W,currentAgentDetails:m,setCurrentAgentDetails:()=>{},activeConnectorIds:_,setActiveConnectorIds:L,fileSystem:d,setFileSystem:S,availableModels:ne,availableAgents:K,availableConnectors:U,messages:H,hasPersistedTask:J,setHasPersistedTask:le,setMessages:k,addSystemMessage:Y,startNewTask:Le,sendMessage:ot,setFullOutput:de,credentials:i,setCredentials:p,setState:P,defaultCapabilities:{fileSystem:g},capabilityLabelMap:re,hasUploadingFiles:Lt});nn((c,A)=>{(A.ctrl||A.meta)&&c==="v"&&Ft()},{isActive:$.status==="ready"&&!xe}),nn((c,A)=>{if(!A.escape)return;let Z=Date.now(),ke=h.current;h.current=Z,!(!ke||Z-ke>us)&&(xe||Fe||(h.current=null,ve&&mt(),b.length>0&&qe("")))},{isActive:$.status==="ready"}),nn((c,A)=>{A.return&&(Le("Started a new task."),P({status:"ready"}))},{isActive:$.status==="error"}),Et(()=>{if(i&&!V&&$.status==="loading")if(!oe&&!ce){let c=fe.getDefaultModel(),A=c&&ne.some(ke=>ke.id===c),Z=A?c:ne[0]?.id;Z?(A||fe.setDefaultModel(Z),X(Z),P({status:"ready"})):K.length===0?P({status:"no-model"}):P({status:"ready"})}else P({status:"ready"})},[i,V,oe,ce,ne,K,$.status,X,P]);let Ze=rn(!1);if(Et(()=>{Ze.current||n&&i&&$.status==="ready"&&(Ze.current=!0,ot(n))},[i,n,$.status,ot]),$.status==="loading")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),se(ye,{children:[q(F,{color:"cyan",children:q(on,{type:"dots"})}),q(F,{children:" Initializing task..."})]})]});if($.status==="not-logged-in")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"Not logged in"}),q(F,{dimColor:!0,children:"Run `entrydesk login` to authenticate first."})]});if($.status==="no-workspace")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"No workspace selected"}),q(F,{dimColor:!0,children:"Run `entrydesk workspaces` to select a workspace first."})]});if($.status==="no-model")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"No model or agent specified"}),s&&q(F,{dimColor:!0,children:"Could not determine the model used in this task."}),q(F,{dimColor:!0,children:"Please specify a model with --model or use an agent with -a."}),q(F,{dimColor:!0,children:"Example: entrydesk task -c 1 -i --model gemini-2.5-flash-lite"})]});if($.status==="error")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),se(F,{color:"red",children:["Error: ",$.message]}),q(F,{dimColor:!0,children:"Press Enter to start a new task, or Ctrl+C to exit"})]});let Ot=ce?m?m.connectors&&m.connectors.length>0?m.connectors.map(c=>c.name).join(", "):"none":"loading...":_&&_.length>0?U.filter(c=>_.includes(c.id)).map(c=>c.name).join(", ")||`${_.length} connector(s)`:"none",x=[];if(ce)if(m?.capabilities)for(let c of m.capabilities)x.push(re.get(c)??c);else x.push("loading...");d&&x.push("FileSystem");let f=ie.getCurrentProfileName(),o=f!=="default",r=(()=>{switch(xe){case"model":return"Select model:";case"agent":return"Select agent:";case"skills":return"Select skill:";case"connectors":return"Select connectors:";case"capabilities":return"Select capabilities:";default:return"Select task:"}})(),u=(()=>{if(xe==="connectors")return Te;if(xe==="capabilities")return Se})();return se(ye,{flexDirection:"column",children:[se(ye,{marginBottom:1,flexDirection:"column",children:[q(F,{children:w}),se(ye,{children:[q(F,{bold:!0,color:"cyan",children:Q?`Continuing: ${Q}`:"EntryDesk CLI"}),se(F,{dimColor:!0,children:[" v","1.
|
|
169
|
+
`).map(n=>n.length))}function ps(e){let t=fs(ao);return e>=t?ao:cs}function co({agentId:e,model:t,message:n,taskId:s,taskTitle:l,connectorIds:a,enableFileSystem:g=!0}){let y=process.stdout.columns??80,w=ps(y),h=rn(null),O=qn(s,l),{state:$,setState:P,messages:H,setMessages:k,input:b,setInput:N,taskId:D,setTaskId:G,currentTaskTitle:Q,setCurrentTaskTitle:j,hasPersistedTask:J,setHasPersistedTask:le,credentials:i,setCredentials:p,currentResponse:E,setCurrentResponse:B,fullOutput:C,setFullOutput:de,addSystemMessage:Y,startNewTask:T}=O,{credentials:I}=Jn(P);Et(()=>{I&&!i&&p(I)},[I,i,p]);let{availableConnectors:U,availableModels:ne,availableAgents:K,modelProviders:ee,loading:V}=Yn(i),{currentModel:oe,setCurrentModel:X,currentAgentId:ce,setCurrentAgentId:W,activeConnectorIds:_,setActiveConnectorIds:L}=eo(t,e,a),v=rn(!1);Et(()=>{if(!v.current){if(v.current=!0,!t&&!e){let c=fe.getDefaultModel();c&&X(c)}if(!a&&!e){let c=fe.getDefaultConnectorIds();c&&L(c.length>0?c:void 0)}}},[t,e,a,X,L]);let{currentAgentDetails:m}=Zn(ce,i),{fileSystem:d,setFileSystem:S,capabilityLabelMap:re}=Qn(g),{pendingFiles:me,addFile:R,removeFile:Re,clearFiles:mt,getUploadedFileIds:_e,hasUploadingFiles:Lt,hasFiles:ve}=lo({credentials:i,currentModel:oe,modelProviders:ee,onUploadSuccess:c=>{Y(`\u2713 Attached: ${c}`)},onUploadError:(c,A)=>{Y(`\u2717 Failed to upload ${c}: ${A}`)}}),{sendMessage:ot}=zn({taskId:D,credentials:i,currentAgentId:ce,currentModel:oe,activeConnectorIds:_,localTools:d,fullOutput:C,setMessages:k,setState:P,setCurrentResponse:B,setCredentials:p,setHasPersistedTask:le,getFileIds:_e,clearFiles:mt}),Le=sn(c=>{T(c),B("")},[T]),[gt,Ee]=is(!1),We=sn(async c=>{let A=c.text.trim(),Z=St(A);if(/^https?:\/\//.test(Z))return;if(await jn(A)&&Un(Z)){let M=await Wn(A);M&&(c.preventDefault(),await R(M))}},[R]),Ft=sn(async()=>{if(!(gt||$.status!=="ready")){if(V||ee.length===0){Y("Please wait for resources to load before pasting images.");return}Y("Reading clipboard..."),Ee(!0);try{let c=await Bn();if(c){let A=`clipboard-${Date.now()}.png`;Y(`Uploading: ${A} (${Math.round(c.buffer.length/1024)}KB)`),await R({buffer:c.buffer,filename:A,mimeType:c.mime})}else Y("No image found in clipboard. Copy an image first.")}catch(c){let A=c instanceof Error?c.message:"Failed to read clipboard";Y(`Clipboard error: ${A}`)}finally{Ee(!1)}}},[R,Y,gt,$.status,V,ee.length]),{suggestions:st,suggestionIndex:ze,showSuggestions:Fe,argMode:xe,argItems:Xe,argIndex:Qe,selectedConnectorIds:Te,selectedCapabilities:Se,deleteConfirmMode:Ne,handleInputChange:qe,handleSubmit:ht}=io({input:b,setInput:N,taskId:D,setTaskId:G,currentTaskTitle:Q,setCurrentTaskTitle:j,currentModel:oe,setCurrentModel:X,currentAgentId:ce,setCurrentAgentId:W,currentAgentDetails:m,setCurrentAgentDetails:()=>{},activeConnectorIds:_,setActiveConnectorIds:L,fileSystem:d,setFileSystem:S,availableModels:ne,availableAgents:K,availableConnectors:U,messages:H,hasPersistedTask:J,setHasPersistedTask:le,setMessages:k,addSystemMessage:Y,startNewTask:Le,sendMessage:ot,setFullOutput:de,credentials:i,setCredentials:p,setState:P,defaultCapabilities:{fileSystem:g},capabilityLabelMap:re,hasUploadingFiles:Lt});nn((c,A)=>{(A.ctrl||A.meta)&&c==="v"&&Ft()},{isActive:$.status==="ready"&&!xe}),nn((c,A)=>{if(!A.escape)return;let Z=Date.now(),ke=h.current;h.current=Z,!(!ke||Z-ke>us)&&(xe||Fe||(h.current=null,ve&&mt(),b.length>0&&qe("")))},{isActive:$.status==="ready"}),nn((c,A)=>{A.return&&(Le("Started a new task."),P({status:"ready"}))},{isActive:$.status==="error"}),Et(()=>{if(i&&!V&&$.status==="loading")if(!oe&&!ce){let c=fe.getDefaultModel(),A=c&&ne.some(ke=>ke.id===c),Z=A?c:ne[0]?.id;Z?(A||fe.setDefaultModel(Z),X(Z),P({status:"ready"})):K.length===0?P({status:"no-model"}):P({status:"ready"})}else P({status:"ready"})},[i,V,oe,ce,ne,K,$.status,X,P]);let Ze=rn(!1);if(Et(()=>{Ze.current||n&&i&&$.status==="ready"&&(Ze.current=!0,ot(n))},[i,n,$.status,ot]),$.status==="loading")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),se(ye,{children:[q(F,{color:"cyan",children:q(on,{type:"dots"})}),q(F,{children:" Initializing task..."})]})]});if($.status==="not-logged-in")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"Not logged in"}),q(F,{dimColor:!0,children:"Run `entrydesk login` to authenticate first."})]});if($.status==="no-workspace")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"No workspace selected"}),q(F,{dimColor:!0,children:"Run `entrydesk workspaces` to select a workspace first."})]});if($.status==="no-model")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),q(F,{color:"yellow",children:"No model or agent specified"}),s&&q(F,{dimColor:!0,children:"Could not determine the model used in this task."}),q(F,{dimColor:!0,children:"Please specify a model with --model or use an agent with -a."}),q(F,{dimColor:!0,children:"Example: entrydesk task -c 1 -i --model gemini-2.5-flash-lite"})]});if($.status==="error")return se(ye,{flexDirection:"column",children:[q(F,{children:w}),se(F,{color:"red",children:["Error: ",$.message]}),q(F,{dimColor:!0,children:"Press Enter to start a new task, or Ctrl+C to exit"})]});let Ot=ce?m?m.connectors&&m.connectors.length>0?m.connectors.map(c=>c.name).join(", "):"none":"loading...":_&&_.length>0?U.filter(c=>_.includes(c.id)).map(c=>c.name).join(", ")||`${_.length} connector(s)`:"none",x=[];if(ce)if(m?.capabilities)for(let c of m.capabilities)x.push(re.get(c)??c);else x.push("loading...");d&&x.push("FileSystem");let f=ie.getCurrentProfileName(),o=f!=="default",r=(()=>{switch(xe){case"model":return"Select model:";case"agent":return"Select agent:";case"skills":return"Select skill:";case"connectors":return"Select connectors:";case"capabilities":return"Select capabilities:";default:return"Select task:"}})(),u=(()=>{if(xe==="connectors")return Te;if(xe==="capabilities")return Se})();return se(ye,{flexDirection:"column",children:[se(ye,{marginBottom:1,flexDirection:"column",children:[q(F,{children:w}),se(ye,{children:[q(F,{bold:!0,color:"cyan",children:Q?`Continuing: ${Q}`:"EntryDesk CLI"}),se(F,{dimColor:!0,children:[" v","1.18.0"]}),o&&se(F,{color:"magenta",children:[" [",f,"]"]}),q(F,{dimColor:!0,children:" (type /help for commands)"})]})]}),H.map((c,A)=>{let Z=c.parts&&C?Ke(c.parts,!0):c.content,ke=c.role==="user"?"green":c.role==="system"?"yellow":"blue",M=c.role==="user"?"You":c.role==="system"?"System":"Assistant";return se(ye,{flexDirection:"column",marginBottom:1,children:[se(F,{bold:!0,color:ke,children:[M,":"]}),q(Xt,{text:Z})]},A)}),E&&se(ye,{flexDirection:"column",marginBottom:1,children:[q(F,{bold:!0,color:"blue",children:"Assistant:"}),q(Xt,{text:E})]}),$.status==="ready"&&q(kn,{suggestions:st,activeIndex:ze,visible:Fe}),$.status==="ready"&&xe&&q(Tn,{items:Xe,activeIndex:Qe,pageSize:xe==="agent"||xe==="skills"||xe==="model"?5:10,selectedIds:u,multiSelect:xe==="connectors"||xe==="capabilities",visible:!0,title:r}),$.status==="sending"&&!E?se(ye,{children:[q(F,{color:"cyan",children:q(on,{type:"dots"})}),q(F,{children:" Thinking..."})]}):$.status==="ready"&&!xe?se(ye,{flexDirection:"column",children:[Ne&&q(ye,{marginBottom:1,children:q(F,{color:"yellow",children:"\u26A0\uFE0F Delete this task? (y/N) "})}),ve&&!Ne&&se(ye,{marginBottom:1,flexDirection:"row",gap:1,children:[q(F,{dimColor:!0,children:"Attachments:"}),me.map((c,A)=>se(F,{children:[c.status==="uploading"?se(F,{color:"yellow",children:[q(on,{type:"dots"})," ",c.filename]}):c.status==="error"?se(F,{color:"red",children:["\u2717 ",c.filename]}):se(F,{color:"green",children:["\u2713 ",c.filename]}),A<me.length-1&&q(F,{children:", "})]},c.id))]}),se(ye,{children:[q(F,{color:"green",children:"> "}),q(_n,{value:b,onChange:qe,onSubmit:ht,onPaste:We,leadingOffset:2,multiline:!0})]})]}):null,se(ye,{marginTop:1,flexDirection:"column",children:[se(ye,{gap:2,children:[se(F,{children:[q(F,{dimColor:!0,children:"Model: "}),q(F,{color:"magenta",children:ce?m?.model?.name||"loading...":ne.find(c=>c.id===oe)?.name||oe||"none"})]}),se(F,{children:[q(F,{dimColor:!0,children:"Connectors: "}),q(F,{color:"cyan",children:Ot})]}),se(F,{children:[q(F,{dimColor:!0,children:"Capabilities: "}),q(F,{color:"green",children:x.length>0?x.join(", "):"none"})]})]}),se(F,{dimColor:!0,children:["Esc Esc: Clear input & attachments | Ctrl+V: Paste image | Ctrl+O: Toggle full output ",C?"(ON)":"(OFF)"," | Ctrl+C: Exit"]})]})]})}import{jsx as xs}from"react/jsx-runtime";async function gs(){let e=[];for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf8").trim()}async function hs(e,t,n,s){if(s<1)return console.error("Task number must be 1 or greater"),null;let{tasks:l}=await e.getTasks(t,n,20);if(l.length===0)return console.error("No tasks found. Start a new task first."),null;if(s>l.length)return console.error(`Task number ${s} not found. You have ${l.length} recent tasks.`),console.error("Use `entrydesk tasks` to see available tasks."),null;let a=l[s-1],g;if(!a.agentId){let{messages:y}=await e.getMessages(t,n,a.id,10);g=y.find(h=>h.role==="assistant"&&h.modelId)?.modelId}return{task:a,modelId:g}}var Ve="\x1B[2m",we="\x1B[0m",ln="\x1B[36m",Rt="\x1B[33m",Nt="\x1B[32m",fo="stream-json";function ys(e,t,n,s){e&&t&&(console.error(`Error: Cannot use both ${n} and ${s}`),process.exit(1))}function At(e,t){let n=t===void 0?{event:e}:{event:e,data:t};process.stdout.write(`${JSON.stringify(n)}
|
|
170
170
|
`)}function Dt(e,t){if(t)return e;let n=e.split(`
|
|
171
171
|
`);if(n.length<=20)return e;let s=n.slice(0,5),l=n.slice(-5),a=n.length-10;return[...s,`${Ve}... (${a} lines omitted, use --full-output to see all) ...${we}`,...l].join(`
|
|
172
172
|
`)}function ws(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function po(e,t){if(!e)return"(no result)";if(typeof e!="object")return Dt(String(e),t);let n=e;if("structuredContent"in n&&n.structuredContent){let s=n.structuredContent,l=[];if(s.stdout&&typeof s.stdout=="string"&&s.stdout.trim()&&l.push(s.stdout.trim()),s.stderr&&typeof s.stderr=="string"&&s.stderr.trim()&&l.push(`${Rt}[stderr]${we} ${s.stderr.trim()}`),s.urls&&Array.isArray(s.urls)){let a=s.urls;for(let g of a)g.path&&g.url&&l.push(`${g.path}: ${g.url}`)}return l.length===0&&l.push(JSON.stringify(s,null,2)),Dt(l.join(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as A,p as I,q as b,s as O}from"./chunk-
|
|
2
|
+
import{h as A,p as I,q as b,s as O}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";var h="\x1B[2m",a="\x1B[0m",p="\x1B[36m",w="\x1B[33m",R="\x1B[32m",v="stream-json";function f(t,n){let r=n===void 0?{event:t}:{event:t,data:n};process.stdout.write(`${JSON.stringify(r)}
|
|
3
3
|
`)}function S(t){let n=new Date(t),e=new Date().getTime()-n.getTime(),o=Math.floor(e/(1e3*60*60*24));return o===0?n.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"}):o===1?"Yesterday":o<7?`${o} days ago`:n.toLocaleDateString("en-US",{month:"short",day:"numeric"})}var D="\x1B[1m";function j(t){return t.replace(/<mark>/g,D).replace(/<\/mark>/g,a).replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&")}function T(t,n){if(n)return t;let r=t.split(`
|
|
4
4
|
`);if(r.length<=15)return t;let e=r.slice(0,6),o=r.slice(-4),i=r.length-10;return[...e,`... (${i} lines omitted, use --full-output to see all) ...`,...o].join(`
|
|
5
5
|
`)}function N(t){if(!t||typeof t!="object")return t;if(Array.isArray(t))return t.map(N);let n={};for(let[r,e]of Object.entries(t))typeof e=="string"&&e.length>200?n[r]=e.slice(0,150)+"... (truncated)":typeof e=="object"&&e!==null?n[r]=N(e):n[r]=e;return n}function E(t){if(!t||typeof t!="object")return String(t);try{return JSON.stringify(t,null,2)}catch{return String(t)}}function J(t,n){if(!t)return"(no result)";if(typeof t!="object")return T(String(t),n);let r=n?t:N(t);if("structuredContent"in r&&r.structuredContent){let e=r.structuredContent,o=[];if(e.stdout&&typeof e.stdout=="string"&&e.stdout.trim()&&o.push(e.stdout.trim()),e.stderr&&typeof e.stderr=="string"&&e.stderr.trim()&&o.push(`${w}[stderr]${a} ${e.stderr.trim()}`),e.urls&&Array.isArray(e.urls)){let i=e.urls;for(let s of i)s.path&&s.url&&o.push(`${s.path}: ${s.url}`)}return o.length===0&&o.push(JSON.stringify(e,null,2)),T(o.join(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{c as S,q as _}from"./chunk-
|
|
2
|
+
import{c as S,q as _}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import B from"fs";import{Client as L}from"@modelcontextprotocol/sdk/client/index.js";import{StreamableHTTPClientTransport as x}from"@modelcontextprotocol/sdk/client/streamableHttp.js";async function A(e={}){let t=e.apiUrl,n=e.accessToken,o=e.workspaceId;if(!n||!o){let l=await _();n=n||l.accessToken,o=o||l.workspaceId}t||(t=S().apiUrl);let i=new L({name:"entrydesk-cli",version:"1.0.0"}),s=new URL(`${t}/v1/workspaces/${o}/mcp`),r=new x(s,{requestInit:{headers:{Authorization:`Bearer ${n}`}}});return await i.connect(r),i}async function T(){return A()}import h from"fs/promises";import v 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":""},D=10*1024,O=8*1024,I=2*1024,P=100,b=100;function M(){return d.join(v.homedir(),".entrydesk","tool-results")}function F(e){let t=e.trim().replace(/[/\\:*?"<>|\s]/g,"_").replace(/_+/g,"_").replace(/^[._]+|[._]+$/g,"").slice(0,P);return!t||t==="."||t===".."?"unnamed_tool":t}function J(e){try{return JSON.stringify(e,(t,n)=>typeof n=="bigint"?`${n}n`:typeof n=="function"?"[Function]":typeof n=="symbol"?n.toString():n,2)}catch{return String(e)}}function U(e){let t=new Date,n=[t.getFullYear(),String(t.getMonth()+1).padStart(2,"0"),String(t.getDate()).padStart(2,"0")].join("-")+"_"+[String(t.getHours()).padStart(2,"0"),String(t.getMinutes()).padStart(2,"0"),String(t.getSeconds()).padStart(2,"0")].join("-"),o=F(e);return`${n}_${o}.json`}async function N(e,t){try{return await h.writeFile(e,t,{encoding:"utf8",flag:"wx"}),!0}catch(n){if(n instanceof Error&&"code"in n&&n.code==="EEXIST")return!1;throw n}}async function C(e,t){try{let n=M();await h.mkdir(n,{recursive:!0});let o=U(e),i=d.extname(o),s=o.slice(0,-i.length),r=J(t),l=d.join(n,o);if(await N(l,r))return l;for(let c=1;c<=b;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(e,t){let n=Buffer.byteLength(e,"utf8");if(n<=D)return e;let o=e.slice(0,O),i=e.slice(-I),r=((n-O-I)/1024).toFixed(1),l=(n/1024).toFixed(1),u=` ... (skipped ${r}KB of ${l}KB) ...`;return t&&(u+=`
|
|
3
3
|
Tip: jq -r '.structuredContent.field' <file> | grep/head/tail`),`${o}
|
|
4
4
|
|
|
5
5
|
${u}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as d,q as f}from"./chunk-
|
|
2
|
+
import{h as d,q as f}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";function U(){console.log(`
|
|
3
3
|
Usage: entrydesk usage [options]
|
|
4
4
|
|
|
5
5
|
Options:
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import"./chunk-KURQCTT3.js";function n(){console.log("entrydesk 1.
|
|
2
|
+
import"./chunk-KURQCTT3.js";function n(){console.log("entrydesk 1.18.0")}export{n as printVersion};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{h as u,q as p,s as g}from"./chunk-
|
|
2
|
+
import{h as u,q as p,s as g}from"./chunk-GQWF4JEC.js";import"./chunk-KURQCTT3.js";import{readFileSync as $}from"fs";var k=262144,x=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:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{g as a,h as w,p as k}from"./chunk-
|
|
2
|
+
import{g as a,h as w,p as k}from"./chunk-GQWF4JEC.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.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"description": "EntryDesk CLI - Interact with EntryDesk from your terminal",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"tsup": "^8.5.0",
|
|
37
37
|
"typescript": "^6.0.3",
|
|
38
38
|
"vitest": "^4.1.6",
|
|
39
|
-
"@entrydesk/
|
|
39
|
+
"@entrydesk/ci": "^0.0.0",
|
|
40
40
|
"@entrydesk/utils": "^0.0.0",
|
|
41
|
-
"@entrydesk/
|
|
41
|
+
"@entrydesk/shared": "^0.0.0"
|
|
42
42
|
},
|
|
43
43
|
"optionalDependencies": {
|
|
44
44
|
"keytar": "^7.9.0"
|
package/dist/agents-FWWY2UX2.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{h as f,q as u,s as y}from"./chunk-OMJF4KR2.js";import"./chunk-KURQCTT3.js";function g(){console.log(`
|
|
3
|
-
Usage: entrydesk agents [list|create|update|delete] [options]
|
|
4
|
-
|
|
5
|
-
Commands:
|
|
6
|
-
list List available agents (default)
|
|
7
|
-
create Create a new agent
|
|
8
|
-
update <agentId> Update an agent you own
|
|
9
|
-
delete <agentId> Delete an agent you own
|
|
10
|
-
|
|
11
|
-
Create/Update Options:
|
|
12
|
-
--name <name>
|
|
13
|
-
--description <text>
|
|
14
|
-
--system-prompt <text>
|
|
15
|
-
--model-id <modelId>
|
|
16
|
-
--connector-ids id1,id2
|
|
17
|
-
--capabilities sandbox,web_search,image_generation,chart
|
|
18
|
-
--conversation-starters s1,s2,s3
|
|
19
|
-
--tools prefix__tool1,prefix__tool2
|
|
20
|
-
--icon-id <iconId>
|
|
21
|
-
|
|
22
|
-
List Options:
|
|
23
|
-
--limit <number> Max agents per page; also page size for --all (default: 100)
|
|
24
|
-
--next-key <cursor> Fetch next page using cursor
|
|
25
|
-
--all Fetch all agents (auto-paginate)
|
|
26
|
-
|
|
27
|
-
Flags:
|
|
28
|
-
--json Output JSON
|
|
29
|
-
`)}function I(e){if(!e)return[];let n=new Map([["sandbox","sandbox"],["web","web_search"],["web-search","web_search"],["web_search","web_search"],["image","image_generation"],["image-gen","image_generation"],["image_generation","image_generation"],["chart","chart"]]);return e.map(o=>n.get(o)??o)}function A(e){console.log(`Available Agents (${e.length}):
|
|
30
|
-
`);for(let n of e){if(console.log(` ${n.name} (${n.visibility})`),n.description){let o=n.description.length>80?`${n.description.slice(0,80)}...`:n.description;console.log(` ${o}`)}console.log(` ID: ${n.id}`),console.log("")}}function w(e){return(!e.name||!e.description||!e.systemPrompt||!e.modelId)&&(console.error("Missing required fields for agent create/update."),g(),process.exit(1)),{name:e.name,description:e.description,systemPrompt:e.systemPrompt,modelId:e.modelId,connectorIds:e.connectorIds??[],capabilities:I(e.capabilities),conversationStarters:e.conversationStarters??[],tools:e.tools,iconId:e.iconId}}async function _(e){try{if(e.help){g();return}let n=await u(),{accessToken:o,workspaceId:s}=n,r=e.action||"list",a=new f;if(r==="create"){let i=w(e),t=await a.createAgent(o,s,i);if(e.json){console.log(JSON.stringify(t));return}console.log(`Created agent: ${t.name}`),console.log(` ID: ${t.id}`);return}if(r==="update"){let i=e.agentId;if(!i)throw new Error("Missing agentId for update command");let t=await a.getAgent(o,s,i),c={name:e.name??t.name,description:e.description??t.description,systemPrompt:e.systemPrompt??t.systemPrompt??"",modelId:e.modelId??t.model?.id??"",connectorIds:e.connectorIds??t.connectors?.map(l=>l.id)??[],capabilities:e.capabilities?I(e.capabilities):t.capabilities??[],conversationStarters:e.conversationStarters??t.conversationStarters??[],tools:e.tools??t.tools??[],iconId:e.iconId??t.iconId};await a.updateAgent(o,s,i,c),console.log(`Updated agent: ${i}`);return}if(r==="delete"){let i=e.agentId;if(!i)throw new Error("Missing agentId for delete command");await a.deleteAgent(o,s,i),console.log(`Deleted agent: ${i}`);return}if(r!=="list"&&(console.error(`Unknown agents command: ${r}`),g(),process.exit(1)),e.all&&e.nextKey&&(console.error("Cannot use --all and --next-key together."),process.exit(1)),e.all){let t=[],c;for(let l=0;;l++){l>=100&&(console.error("Reached maximum page limit (100). Use --limit and --next-key for manual pagination."),process.exit(1));let m=await a.getAgents(o,s,{limit:e.limit??100,nextKey:c});if(t.push(...m.agents),c=m.nextKey,!c)break}if(e.json){console.log(JSON.stringify({agents:t}));return}if(t.length===0){console.log("No agents found in this workspace.");return}A(t);return}let{agents:d,nextKey:p}=await a.getAgents(o,s,{limit:e.limit,nextKey:e.nextKey});if(e.json){console.log(JSON.stringify({agents:d,nextKey:p}));return}if(d.length===0){console.log("No agents found in this workspace.");return}A(d),p&&console.log(`Next page: --next-key ${p}`)}catch(n){y(n)}}export{_ as runAgents};
|
package/dist/chunk-OMJF4KR2.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import U from"fs";import y from"fs";import Ue from"os";import T from"path";import{HTTPError as Be,TimeoutError as Me}from"ky";import{HTTPError as xe}from"ky";import we,{TimeoutError as ke,isHTTPError as ve}from"ky";import C from"crypto";import u from"fs";import de from"path";var ue="ENTRYDESK_FORCE_FILE_STORAGE",R="EntryDesk CLI",pe="__entrydesk_keychain_test__",he="profile:",fe=".credentials.key",Q={keychain:!1,permissions:!1,corruptFile:!1,windowsFile:!1};function k(r,e){Q[r]||(Q[r]=!0,console.error(e))}function ye(){return process.env.ENTRYDESK_DEBUG?.toLowerCase()==="true"}function ee(r){if(!r||typeof r!="object")return!1;let e=r;return!(!("accessToken"in e||"refreshToken"in e||"email"in e||"workspaceId"in e)||"accessToken"in e&&typeof e.accessToken!="string"||"refreshToken"in e&&typeof e.refreshToken!="string"||"email"in e&&typeof e.email!="string"||"workspaceId"in e&&typeof e.workspaceId!="string")}function me(r){if(!r||typeof r!="object")return!1;let e=r;return typeof e.getPassword=="function"&&typeof e.setPassword=="function"&&typeof e.deletePassword=="function"}function j(r){return o.getProfileCredentialsFile(r)}var z=class{getKeyFilePath(e){return de.join(o.getProfileDir(e),fe)}loadEncryptionKey(e){let t=this.getKeyFilePath(e);try{if(!u.existsSync(t))return null;let s=u.readFileSync(t);return s.length!==32?null:(this.ensureSecureFilePermissions(t),s)}catch{return null}}createEncryptionKey(e){o.ensureProfileDir(e);let t=this.getKeyFilePath(e),s=C.randomBytes(32);return u.writeFileSync(t,s,{mode:384}),this.ensureSecureFilePermissions(t),s}getOrCreateEncryptionKey(e){let t=this.loadEncryptionKey(e);return t||this.createEncryptionKey(e)}encrypt(e,t){let s=C.randomBytes(16),n=C.createCipheriv("aes-256-gcm",t,s),i=n.update(e,"utf8","hex");i+=n.final("hex");let a=n.getAuthTag();return`${s.toString("hex")}:${a.toString("hex")}:${i}`}decrypt(e,t){let s=e.split(":");if(s.length!==3)throw new Error("Invalid encrypted data format");let n=Buffer.from(s[0],"hex"),i=Buffer.from(s[1],"hex"),a=s[2],S=C.createDecipheriv("aes-256-gcm",t,n,{authTagLength:16});S.setAuthTag(i);let d=S.update(a,"hex","utf8");return d+=S.final("utf8"),d}tryDecrypt(e,t){try{return this.decrypt(e,t)}catch{return null}}tryParseCredentials(e){try{let t=JSON.parse(e);return ee(t)?t:null}catch{return null}}ensureSecureFilePermissions(e){if(process.platform!=="win32"){try{u.chmodSync(e,384)}catch{k("permissions","Warning: Failed to set secure permissions on credentials file.");return}try{(u.statSync(e).mode&511)!==384&&k("permissions","Warning: Credentials file permissions are too permissive.")}catch{k("permissions","Warning: Failed to verify credentials file permissions.")}}}async getCredentials(e){let t=j(e);try{if(!u.existsSync(t))return null;let s=u.readFileSync(t,"utf-8").trim();if(!s)return null;let n=this.loadEncryptionKey(e),i=n?this.tryDecrypt(s,n):null;if(i){let a=this.tryParseCredentials(i);if(a)return a}return k("corruptFile","Warning: Credentials file is unreadable. Please run `entrydesk login` again."),null}catch{return null}}async setCredentials(e,t){o.ensureProfileDir(e);let s=j(e),n=this.getOrCreateEncryptionKey(e),i=this.encrypt(JSON.stringify(t),n);u.writeFileSync(s,i,{mode:384}),this.ensureSecureFilePermissions(s)}async deleteCredentials(e){let t=j(e);try{u.existsSync(t)&&u.unlinkSync(t)}catch{}}},O=class{keytarModule=null;keytarLoadAttempted=!1;keychainAvailable=null;async getKeytar(){if(this.keytarLoadAttempted)return this.keytarModule;this.keytarLoadAttempted=!0;try{let t=await import("keytar"),s=t&&typeof t=="object"&&"default"in t?t.default:t;this.keytarModule=me(s)?s:null}catch{this.keytarModule=null}return this.keytarModule}getAccount(e){return`${he}${e}`}async checkKeychainAvailability(){if(this.keychainAvailable!==null)return this.keychainAvailable;try{let e=await this.getKeytar();if(!e)return this.keychainAvailable=!1,!1;let t=`${pe}${C.randomBytes(8).toString("hex")}`,s="test";await e.setPassword(R,t,s);let n=await e.getPassword(R,t),i=await e.deletePassword(R,t);return this.keychainAvailable=!!(i&&n===s),this.keychainAvailable}catch{return this.keychainAvailable=!1,!1}}async isAvailable(){return this.checkKeychainAvailability()}async getCredentials(e){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let t=await this.getKeytar();if(!t)throw new Error("Keytar module not available");let s=await t.getPassword(R,this.getAccount(e));if(!s)return null;let n=this.tryParseKeychainPayload(s);return n||k("corruptFile",`Warning: Keychain entry for profile "${e}" is unreadable.`),n}async setCredentials(e,t){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let s=await this.getKeytar();if(!s)throw new Error("Keytar module not available");let n=JSON.stringify(t);await s.setPassword(R,this.getAccount(e),n)}async deleteCredentials(e){if(!await this.checkKeychainAvailability())throw new Error("Keychain is not available");let t=await this.getKeytar();if(!t)throw new Error("Keytar module not available");await t.deletePassword(R,this.getAccount(e))}tryParseKeychainPayload(e){try{let t=JSON.parse(e);return ee(t)?t:null}catch{return null}}},N=class{keychainStorage=null;fileStorage=new z;keychainAvailable=null;initPromise=null;shouldForceFileStorage(){return process.env[ue]?.toLowerCase()==="true"}async initializeStorage(){if(this.shouldForceFileStorage()){this.keychainAvailable=!1,this.keychainStorage=null;return}try{let e=new O,t=await e.isAvailable();this.keychainAvailable=t,this.keychainStorage=t?e:null}catch{this.keychainAvailable=!1,this.keychainStorage=null}!this.keychainAvailable&&!this.shouldForceFileStorage()&&(ye()&&k("keychain","Keychain unavailable. Falling back to file-based credentials."),process.platform==="win32"&&k("windowsFile","Warning: File-based credentials on Windows may be readable by other users."))}async ensureInitialized(){if(this.shouldForceFileStorage()){this.keychainAvailable=!1,this.keychainStorage=null;return}this.keychainAvailable===null&&(this.initPromise??=this.initializeStorage(),await this.initPromise)}disableKeychain(){this.shouldForceFileStorage()||k("keychain","Keychain error encountered. Falling back to file-based credentials."),this.keychainAvailable=!1,this.keychainStorage=null}async getKeychainStorage(){return await this.ensureInitialized(),this.shouldForceFileStorage()?null:this.keychainAvailable?this.keychainStorage:null}async getCredentials(e){let t=await this.getKeychainStorage();if(!t)return this.fileStorage.getCredentials(e);try{let n=await t.getCredentials(e);if(n)return n}catch{return this.disableKeychain(),this.fileStorage.getCredentials(e)}let s=await this.fileStorage.getCredentials(e);if(s)try{await t.setCredentials(e,s),await this.fileStorage.deleteCredentials(e)}catch{}return s}async setCredentials(e,t){let s=await this.getKeychainStorage();if(!s){await this.fileStorage.setCredentials(e,t);return}try{await s.setCredentials(e,t),await this.fileStorage.deleteCredentials(e)}catch{this.disableKeychain(),await this.fileStorage.setCredentials(e,t)}}async deleteCredentials(e){let t=await this.getKeychainStorage();if(t)try{await t.deleteCredentials(e)}catch{this.disableKeychain()}await this.fileStorage.deleteCredentials(e)}},l=new N,p={async saveAccessToken(r,e){let t=o.getEffectiveProfileName(e),s=await l.getCredentials(t)??{};s.accessToken=r,await l.setCredentials(t,s)},async getAccessToken(r){let e=o.getEffectiveProfileName(r);return(await l.getCredentials(e))?.accessToken??null},async saveRefreshToken(r,e){let t=o.getEffectiveProfileName(e),s=await l.getCredentials(t)??{};s.refreshToken=r,await l.setCredentials(t,s)},async getRefreshToken(r){let e=o.getEffectiveProfileName(r);return(await l.getCredentials(e))?.refreshToken??null},async saveEmail(r,e){let t=o.getEffectiveProfileName(e),s=await l.getCredentials(t)??{};s.email=r,await l.setCredentials(t,s)},async getEmail(r){let e=o.getEffectiveProfileName(r);return(await l.getCredentials(e))?.email??null},async saveWorkspaceId(r,e){let t=o.getEffectiveProfileName(e),s=await l.getCredentials(t)??{};s.workspaceId=r,await l.setCredentials(t,s)},async getWorkspaceId(r){let e=o.getEffectiveProfileName(r);return(await l.getCredentials(e))?.workspaceId??null},async saveAll(r,e){let t=o.getEffectiveProfileName(e);await l.setCredentials(t,r)},async getAll(r){let e=o.getEffectiveProfileName(r);return l.getCredentials(e)},async clear(r){let e=o.getEffectiveProfileName(r);await l.deleteCredentials(e)},async isLoggedIn(r){let e=o.getEffectiveProfileName(r);return(await l.getCredentials(e))?.accessToken!=null}};var x=class r{client;baseUrl;constructor(e,t){this.baseUrl=e||K(t),_().ignoreSslErrors&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",process.env.DEBUG&&console.log("[DEBUG] ApiClient: SSL certificate validation disabled")),this.client=we.create({baseUrl:this.baseUrl.replace(/\/?$/,"/"),timeout:3e4,retry:{limit:3,methods:["get","put","head","delete","options","trace"],statusCodes:[408,413,429,500,502,503,504]},hooks:{beforeError:[({error:n})=>(ve(n)&&(n.request.headers.delete("authorization"),n.request.headers.delete("Authorization")),n)]}})}getBaseUrl(){return this.baseUrl}async refreshOAuthToken(e){return this.client.post("v1/oauth/token",{json:{grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:e.clientId}}).json()}async revokeOAuthToken(e){await this.client.post("v1/oauth/revoke",{json:{token:e.token,token_type_hint:"refresh_token",client_id:e.clientId}})}async getWorkspaces(e){try{return process.env.DEBUG&&console.log(`[DEBUG] Calling getWorkspaces API: ${this.baseUrl}/v1/workspaces`),await this.client.get("v1/workspaces",{headers:{Authorization:`Bearer ${e}`}}).json()}catch(t){throw process.env.DEBUG&&(console.error("[DEBUG] getWorkspaces error:",t),t instanceof Error&&"cause"in t&&console.error("[DEBUG] Error cause:",t.cause)),t}}async getAgents(e,t,s){let n={limit:s?.limit??100};return s?.nextKey&&(n.nextKey=s.nextKey),s?.search&&(n.search=s.search),await this.client.get(`v1/workspaces/${t}/availableAgents`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async createAgent(e,t,s){return await this.client.post(`v1/workspaces/${t}/agents`,{headers:{Authorization:`Bearer ${e}`},json:s}).json()}async updateAgent(e,t,s,n){await this.client.put(`v1/workspaces/${t}/agents/${s}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async deleteAgent(e,t,s){await this.client.delete(`v1/workspaces/${t}/agents/${s}`,{headers:{Authorization:`Bearer ${e}`}})}async getMeetings(e,t,s){let n={limit:s?.limit??20};return s?.nextKey&&(n.nextKey=s.nextKey),s?.search&&(n.search=s.search),s?.filter&&(n.filter=s.filter),s?.sortBy&&(n.sortBy=s.sortBy),await this.client.get(`v1/workspaces/${t}/meetings`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getMeeting(e,t,s){return await this.client.get(`v1/workspaces/${t}/meetings/${s}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createMeeting(e,t,s){return await this.client.post(`v1/workspaces/${t}/meetings`,{headers:{Authorization:`Bearer ${e}`},json:s}).json()}async updateMeeting(e,t,s,n){return await this.client.patch(`v1/workspaces/${t}/meetings/${s}`,{headers:{Authorization:`Bearer ${e}`},json:n}).json()}async deleteMeeting(e,t,s){await this.client.delete(`v1/workspaces/${t}/meetings/${s}`,{headers:{Authorization:`Bearer ${e}`}})}async getMeetingPreviousBrief(e,t,s){return await this.client.get(`v1/workspaces/${t}/meetings/${s}/previous`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getRecording(e,t,s){return await this.client.get(`v1/workspaces/${t}/recordings/${s}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getMeetingShares(e,t,s){return await this.client.get(`v1/workspaces/${t}/meetings/${s}/shares`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertMeetingUserGrant(e,t,s,n,i){return await this.client.put(`v1/workspaces/${t}/meetings/${s}/shares/users/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeMeetingUserGrant(e,t,s,n){await this.client.delete(`v1/workspaces/${t}/meetings/${s}/shares/users/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async upsertMeetingTeamGrant(e,t,s,n,i){return await this.client.put(`v1/workspaces/${t}/meetings/${s}/shares/teams/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeMeetingTeamGrant(e,t,s,n){await this.client.delete(`v1/workspaces/${t}/meetings/${s}/shares/teams/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async getWorkflows(e,t,s){let n={limit:s?.limit??20};return s?.nextKey&&(n.nextKey=s.nextKey),s?.search&&(n.search=s.search),await this.client.get(`v1/workspaces/${t}/workflows`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getWorkflow(e,t,s){return await this.client.get(`v1/workspaces/${t}/workflows/${s}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createWorkflow(e,t,s){return await this.client.post(`v1/workspaces/${t}/workflows`,{headers:{Authorization:`Bearer ${e}`},json:s}).json()}async updateWorkflow(e,t,s,n){await this.client.put(`v1/workspaces/${t}/workflows/${s}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async triggerWorkflowRun(e,t,s,n){return await this.client.post(`v1/workspaces/${t}/workflows/${s}/runs`,{headers:{Authorization:`Bearer ${e}`},json:n===void 0?{}:{args:n}}).json()}async getWorkflowRuns(e,t,s,n){let i={limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/workflows/${s}/runs`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}async getWorkflowRun(e,t,s,n){return await this.client.get(`v1/workspaces/${t}/workflows/${s}/runs/${n}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getWorkflowGrants(e,t,s){return await this.client.get(`v1/workspaces/${t}/workflows/${s}/grants`,{headers:{Authorization:`Bearer ${e}`}}).json()}async upsertWorkflowGrant(e,t,s,n,i){return await this.client.put(`v1/workspaces/${t}/workflows/${s}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`},json:{role:i}}).json()}async removeWorkflowGrant(e,t,s,n){await this.client.delete(`v1/workspaces/${t}/workflows/${s}/grants/${n}`,{headers:{Authorization:`Bearer ${e}`}})}async getModels(e,t){return await this.client.get(`v1/workspaces/${t}/models`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getConnectors(e,t){return await this.client.get(`v1/workspaces/${t}/availableConnectors`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:100,connectionStatus:"connected"}}).json()}async getTasks(e,t,s=20){return await this.client.get(`v1/workspaces/${t}/tasks`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:s}}).json()}async searchTasks(e,t,s,n){let i={q:s,limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/tasks/search`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}async getMessages(e,t,s,n=50){return await this.client.get(`v1/workspaces/${t}/tasks/${s}/messages`,{headers:{Authorization:`Bearer ${e}`},searchParams:{limit:n}}).json()}async getAgent(e,t,s){return await this.client.get(`v1/workspaces/${t}/agents/${s}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async listAvailableSkills(e,t,s){return await this.client.get(`v1/workspaces/${t}/availableSkills`,{headers:{Authorization:`Bearer ${e}`},searchParams:{createdBy:s?.createdBy,nextKey:s?.nextKey,limit:s?.limit??20}}).json()}async uploadSkill(e,t,s){return await this.client.post(`v1/workspaces/${t}/skills`,{headers:{Authorization:`Bearer ${e}`},body:s}).json()}async deleteSkill(e,t,s){await this.client.delete(`v1/workspaces/${t}/skills/${s}`,{headers:{Authorization:`Bearer ${e}`}})}async downloadSkillCurrent(e,t,s){return await this.client.get(`v1/workspaces/${t}/skills/${s}/download`,{headers:{Authorization:`Bearer ${e}`}}).json()}async task(e,t,s){try{let n=await this.client.post(`v1/workspaces/${t}/tasks`,{headers:{Authorization:`Bearer ${e}`},json:s,timeout:6e4,throwHttpErrors:!1});if(!n.ok){let a=await n.text();throw new Error(`Task API failed (${n.status}): ${a}`)}let i=await n.json();return i.noop||!i.streamId?new Response(`data: [DONE]
|
|
3
|
-
|
|
4
|
-
`,{headers:{"Content-Type":"text/event-stream"}}):await this.taskStream(e,t,i.taskId)}catch(n){throw n instanceof ke?new TypeError("Request timed out. Please check your connection and try again.",{cause:n}):n}}async taskStream(e,t,s){let n=await this.client.get(`v1/workspaces/${t}/tasks/${s}/stream`,{headers:{Authorization:`Bearer ${e}`,Accept:"text/event-stream"},timeout:!1,throwHttpErrors:!1});if(!n.ok){let i=await n.text();throw new Error(`Task stream failed (${n.status}): ${i}`)}return n}async getBudget(e,t){return await this.client.get(`v1/workspaces/${t}/budget`,{headers:{Authorization:`Bearer ${e}`}}).json()}async updateBudget(e,t,s){await this.client.put(`v1/workspaces/${t}/budget`,{headers:{Authorization:`Bearer ${e}`},json:{budget:s}})}async getMonthlyUsages(e,t,s){return await this.client.get(`v1/workspaces/${t}/monthlyUsages`,{headers:{Authorization:`Bearer ${e}`},searchParams:{nextKey:s?.nextKey,limit:s?.limit??20}}).json()}async createTaskShare(e,t,s,n="public"){return await this.client.post(`v1/workspaces/${t}/tasks/${s}/shares`,{headers:{Authorization:`Bearer ${e}`},json:{visibility:n}}).json()}async getSharedTask(e,t){let s={};return t&&(s.Authorization=`Bearer ${t}`),await this.client.get(`v1/shares/${e}`,{headers:s}).json()}async getSharedMessages(e,t=50,s){let n={};return s&&(n.Authorization=`Bearer ${s}`),await this.client.get(`v1/shares/${e}/messages`,{headers:n,searchParams:{limit:t}}).json()}async deleteTask(e,t,s){await this.client.delete(`v1/workspaces/${t}/tasks/${s}`,{headers:{Authorization:`Bearer ${e}`}})}async getModelProviders(e,t){return await this.client.get(`v1/workspaces/${t}/modelProviders`,{headers:{Authorization:`Bearer ${e}`}}).json()}async uploadFile(e,t,s,n){let i=new FormData,a=new Blob([s.buffer],{type:s.mimeType});return i.append("file",a,s.filename),i.append("modelProviderId",n),await this.client.post(`v1/workspaces/${t}/files`,{headers:{Authorization:`Bearer ${e}`},body:i,timeout:12e4}).json()}async getSchedules(e,t,s){let n={limit:s?.limit??20};return s?.nextKey&&(n.nextKey=s.nextKey),s?.search&&(n.search=s.search),await this.client.get(`v1/workspaces/${t}/schedules`,{headers:{Authorization:`Bearer ${e}`},searchParams:n}).json()}async getSchedule(e,t,s){return await this.client.get(`v1/workspaces/${t}/schedules/${s}`,{headers:{Authorization:`Bearer ${e}`}}).json()}async createSchedule(e,t,s){return await this.client.post(`v1/workspaces/${t}/schedules`,{headers:{Authorization:`Bearer ${e}`},json:s}).json()}async updateSchedule(e,t,s,n){await this.client.put(`v1/workspaces/${t}/schedules/${s}`,{headers:{Authorization:`Bearer ${e}`},json:n})}async deleteSchedule(e,t,s){await this.client.delete(`v1/workspaces/${t}/schedules/${s}`,{headers:{Authorization:`Bearer ${e}`}})}async activateSchedule(e,t,s){await this.client.post(`v1/workspaces/${t}/schedules/${s}/activate`,{headers:{Authorization:`Bearer ${e}`}})}async deactivateSchedule(e,t,s){await this.client.post(`v1/workspaces/${t}/schedules/${s}/deactivate`,{headers:{Authorization:`Bearer ${e}`}})}async runScheduleNow(e,t,s){return await this.client.post(`v1/workspaces/${t}/schedules/${s}/run`,{headers:{Authorization:`Bearer ${e}`}}).json()}async getScheduleRuns(e,t,s,n){let i={limit:n?.limit??20};return n?.nextKey&&(i.nextKey=n.nextKey),await this.client.get(`v1/workspaces/${t}/schedules/${s}/runs`,{headers:{Authorization:`Bearer ${e}`},searchParams:i}).json()}static async getAuthenticatedClient(e){let t=await p.getAll(e);return t?{client:new r(void 0,e),accessToken:t.accessToken,workspaceId:t.workspaceId??null}:null}};function Pe(){return process.env.ENTRYDESK_SANDBOX==="true"}function I(){if(!Pe())return null;let r=process.env.ENTRYDESK_SANDBOX_ACCESS_TOKEN?.trim(),e=process.env.ENTRYDESK_SANDBOX_WORKSPACE_ID?.trim();if(!r||!e){let t=[];throw r||t.push("ENTRYDESK_SANDBOX_ACCESS_TOKEN"),e||t.push("ENTRYDESK_SANDBOX_WORKSPACE_ID"),new Error(`Sandbox mode enabled but missing credentials: ${t.join(", ")}`)}return{accessToken:r,workspaceId:e}}function W(){let r=process.env.ENTRYDESK_TOKEN?.trim();if(!r)return null;let e=process.env.ENTRYDESK_WORKSPACE_ID?.trim();if(!e)throw new Error("ENTRYDESK_TOKEN is set but ENTRYDESK_WORKSPACE_ID is missing. Both are required for PAT authentication.");return{accessToken:r,workspaceId:e}}function rt(){let r=I();if(r)return{authSource:"sandbox-env",label:"sandbox environment (ENTRYDESK_SANDBOX)",workspaceId:r.workspaceId};let e=W();return e?{authSource:"pat-env",label:"personal access token (ENTRYDESK_TOKEN)",workspaceId:e.workspaceId}:null}import{execFile as Se}from"child_process";import{setTimeout as Ae}from"timers/promises";import{decodeJwt as Re}from"jose";import Ee,{HTTPError as Te,isHTTPError as Ce}from"ky";function te(r){if(r===null||typeof r!="object")return{error:""};let e=r;return{code:typeof e.code=="string"?e.code:void 0,error:typeof e.error=="string"?e.error:""}}var B="entrydesk-cli",be="offline_access workspaces:read tasks:read tasks:write tasks:delete agents:read agents:write connectors:read connectors:write tools:read tools:execute skills:read skills:write meetings:read meetings:write workflows:read workflows:write publishes:read publishes:write calendar:read calendar:write schedules:read schedules:write user:read user:write";function $e(r){return new Promise((e,t)=>{let s=process.platform,n,i;switch(s){case"darwin":n="open",i=[r];break;case"win32":n="cmd",i=["/c","start","",r];break;default:n="xdg-open",i=[r];break}Se(n,i,a=>{a?t(new Error(`Failed to open browser. Please manually visit: ${r}`,{cause:a})):e()})})}async function dt(r){let e=K(),t=re(),s=_(),n=process.env.NODE_TLS_REJECT_UNAUTHORIZED;s.ignoreSslErrors&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",console.error("WARNING: SSL certificate validation is disabled globally for this process during the login flow. All connections in this process will skip TLS verification. Only use ENTRYDESK_IGNORE_SSL_ERRORS for local development."));try{let i=Ee.create({baseUrl:e.replace(/\/?$/,"/"),timeout:3e4,hooks:{beforeError:[({error:c})=>(Ce(c)&&(c.request.headers.delete("authorization"),c.request.headers.delete("Authorization")),c)]}}),a;try{a=await i.post("v1/oauth/device/code",{json:{client_id:B,scope:be}}).json()}catch(c){let w=c instanceof Error?c:new Error("Failed to request device code");throw r?.onError?.(w),w}let{device_code:S,user_code:d,expires_in:ae,interval:ce}=a,X=new URL("/oauth/device",t);X.searchParams.set("user_code",d);let V=X.toString();r?.onDeviceCodeReceived?.(d,V),r?.onBrowserOpening?.();try{await $e(V)}catch(c){process.env.DEBUG&&console.error("[DEBUG] Failed to open browser:",c)}r?.onWaitingForAuthorization?.();let Z=Math.max(ce,5)*1e3,le=Date.now()+ae*1e3;for(;Date.now()<le;){await Ae(Z);try{let c=await i.post("v1/oauth/token",{json:{grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:S,client_id:B}}).json();r?.onAuthorized?.();let w={};try{w=Re(c.access_token)}catch{}return{accessToken:c.access_token,refreshToken:c.refresh_token??void 0,email:w.email||"",scopes:c.scope.split(" ").filter(D=>D.length>0)}}catch(c){if(c instanceof Te){let{code:D,error:ge}=te(c.data),F=D||ge;if(!F)continue;switch(F){case"authorization_pending":continue;case"slow_down":Z+=5e3;continue;case"access_denied":throw new Error("Authorization denied by user",{cause:c});case"expired_token":throw new Error("Device code expired. Please try again.",{cause:c});default:throw new Error(`Authorization failed: ${F||"Unknown error"}`,{cause:c})}}let w=c instanceof Error?c:new Error("Unknown error during authorization");throw r?.onError?.(w),w}}throw new Error("Device code expired. Please try again.")}finally{n===void 0?delete process.env.NODE_TLS_REJECT_UNAUTHORIZED:process.env.NODE_TLS_REJECT_UNAUTHORIZED=n}}function Ke(r){if(r instanceof xe){let e=r.response.status;return e===400||e===401}return!1}var h=class extends Error{code;constructor(e,t){super(t),this.code=e}};function _e(r){try{let e=r.split(".");if(e.length<2)return null;let t=e[1].replace(/-/g,"+").replace(/_/g,"/"),s=(4-t.length%4)%4,n=t.padEnd(t.length+s,"="),i=Buffer.from(n,"base64").toString("utf8");return JSON.parse(i)}catch{return null}}function Ie(r,e=300){let s=_e(r)?.exp;if(typeof s!="number")return!1;let n=Math.floor(Date.now()/1e3);return s-n<=e}async function se(r){let e=r.accessToken;if(!Ie(e))return e;if(!r.refreshToken)throw await p.clear(),new h("session-expired","Session expired. Please run `entrydesk login` again.");let t=r.refreshToken;try{let n=await new x().refreshOAuthToken({refreshToken:t,clientId:B}),i=await p.getAll();return i?.accessToken&&i.refreshToken&&i.refreshToken!==t?i.accessToken:(await p.saveAll({...i??r,accessToken:n.access_token,refreshToken:n.refresh_token??i?.refreshToken??t}),n.access_token)}catch(s){if(!Ke(s))throw new h("refresh-failed","Could not refresh your session (auth server unreachable). Please try again.");let n=await p.getAll();if(n?.accessToken&&n.refreshToken&&n.refreshToken!==t)return n.accessToken;throw await p.clear(),new h("session-expired","Session expired. Please run `entrydesk login` again.")}}async function wt(){let r=I();if(r)return r.accessToken;let e=await p.getAll();if(!e?.accessToken)throw new h("not-logged-in","Not logged in. Run `entrydesk login` first.");return se(e)}async function kt(){let r=I();if(r)return{accessToken:r.accessToken,workspaceId:r.workspaceId};let e=W();if(e)return e;let t=await p.getAll();if(!t?.accessToken)throw new h("not-logged-in","Not logged in. Run `entrydesk login` first.");if(!t.workspaceId)throw new h("no-workspace","No workspace selected. Run `entrydesk workspaces` first.");return{accessToken:await se(t),workspaceId:t.workspaceId}}var f=class extends Error{constructor(t,s=1,n){super(t);this.exitCode=s;this.cause=n;this.name="CLIError"}exitCode;cause};function At(r){let e=!!process.env.DEBUG;if(r instanceof f&&(console.error(`Error: ${r.message}`),r.cause&&(console.error(`Cause: ${r.cause.message}`),e&&r.cause.stack&&console.error(r.cause.stack)),process.exit(r.exitCode)),r instanceof h&&(console.error(r.message),e&&r.stack&&console.error(r.stack),process.exit(1)),r instanceof Me&&(console.error("Request timed out. Please check your connection and try again."),e&&r.stack&&console.error(r.stack),process.exit(1)),r instanceof Be){let t=r.response.status;console.error(t===401?"Not authorized (401). Your session may have expired \u2014 run `entrydesk login`.":t===403?"Forbidden (403). Your account or token lacks permission for this action. If your token predates a recently added feature, run `entrydesk login` to refresh its scopes; otherwise you may lack permission in this workspace.":`Request failed (${t}): ${r.response.statusText}`),e&&r.stack&&console.error(r.stack),process.exit(1)}r instanceof Error&&(console.error(`Unexpected error: ${r.message}`),e&&r.stack&&console.error(r.stack),process.exit(1)),console.error("An unknown error occurred"),process.exit(1)}var P="default",De=/^[A-Za-z0-9_-]+$/,L=null;function H(){return T.join(Ue.homedir(),".entrydesk")}function ie(){return T.join(H(),"profiles")}function oe(){return T.join(H(),"profiles.json")}function M(r){return T.join(ie(),r)}function Y(r){if(!y.existsSync(r))y.mkdirSync(r,{mode:448,recursive:!0});else try{y.chmodSync(r,448)}catch{}}function Fe(){Y(H())}function G(){Y(ie())}function je(){let r=oe();try{if(!y.existsSync(r))return null;let e=y.readFileSync(r,"utf-8");return JSON.parse(e)}catch{return null}}function E(r){Fe();let e=oe();y.writeFileSync(e,JSON.stringify(r,null,2),{mode:384});try{y.chmodSync(e,384)}catch{}}function ze(r){let e=r.profiles?.length?Array.from(new Set(r.profiles)):[],t=r.currentProfile&&e.includes(r.currentProfile)?r.currentProfile:e[0]||P;return e.length===0&&e.push(P),e.includes(t)||e.unshift(t),{currentProfile:t,profiles:e}}function $(r){G(),Y(M(r))}function v(){let r=je();if(!r){let t={currentProfile:P,profiles:[P]};return E(t),G(),$(P),t}let e=ze(r);return(e.currentProfile!==r.currentProfile||e.profiles.length!==r.profiles.length)&&E(e),G(),e}function A(r){if(!r)throw new f("Profile name is required.");if(!De.test(r))throw new f("Invalid profile name. Use letters, numbers, dash, or underscore.")}function b(r,e){if(!r.profiles.includes(e))throw new f(`Profile not found: ${e}`)}function ne(r,e){if(r.profiles.includes(e))throw new f(`Profile already exists: ${e}`)}var o={DEFAULT_PROFILE:P,setOverrideProfile(r){L=r},getOverrideProfile(){return L},getProfileDir(r){return M(r)},getProfileConfigFile(r){return T.join(o.getProfileDir(r),"config.json")},getProfileCredentialsFile(r){return T.join(o.getProfileDir(r),"credentials.json")},getProfileNames(){return[...v().profiles]},getProfileCount(){return o.getProfileNames().length},getCurrentProfileName(){return v().currentProfile},getEffectiveProfileName(r){let e=v(),t=r||L||e.currentProfile;return A(t),b(e,t),t},ensureProfileExists(r){let e=v();A(r),b(e,r)},createProfile(r){A(r);let e=v();ne(e,r);let t={currentProfile:e.currentProfile,profiles:[...e.profiles,r]};E(t),$(r)},deleteProfile(r){A(r);let e=v();if(b(e,r),e.profiles.length===1)throw new f("Cannot delete the last profile.");let t=e.profiles.filter(i=>i!==r),s=e.currentProfile;s===r&&(s=t.includes(P)?P:t[0]),E({currentProfile:s,profiles:t});try{y.rmSync(o.getProfileDir(r),{recursive:!0,force:!0})}catch{}return{currentProfile:s}},renameProfile(r,e){A(r),A(e);let t=v();b(t,r),ne(t,e);let s=M(r),n=M(e);if(y.existsSync(s))try{y.renameSync(s,n)}catch(d){throw new f("Failed to rename profile directory.",1,d)}else $(e);let i=t.profiles.map(d=>d===r?e:d),a=t.currentProfile===r?e:t.currentProfile;return E({currentProfile:a,profiles:i}),{currentProfile:a}},setCurrentProfile(r){A(r);let e=v();b(e,r);let t={currentProfile:r,profiles:e.profiles};E(t),$(r)},ensureProfileDir:$};function Oe(r){let e=o.getEffectiveProfileName(r);return o.getProfileConfigFile(e)}function g(r){let e=Oe(r);try{if(!U.existsSync(e))return{};let t=U.readFileSync(e,"utf-8");return JSON.parse(t)}catch{return{}}}function m(r,e){let t=o.getEffectiveProfileName(e);o.ensureProfileDir(t);let s=o.getProfileConfigFile(t);U.writeFileSync(s,JSON.stringify(r,null,2),{mode:384});try{U.chmodSync(s,384)}catch{}}var J={getApiUrl(r){return g(r).apiUrl??null},setApiUrl(r,e){let t=g(e);t.apiUrl=r,m(t,e)},clearApiUrl(r){let e=g(r);delete e.apiUrl,m(e,r)},getHubUrl(r){return g(r).hubUrl??null},setHubUrl(r,e){let t=g(e);t.hubUrl=r,m(t,e)},getAll(r){return g(r)},setAll(r,e){m(r,e)},set(r,e,t){let s=g(t);s[r]=e,m(s,t)},get(r,e){return g(e)[r]},unset(r,e){let t=g(e);delete t[r],m(t,e)},getDefaultModel(r){return g(r).model?.default??null},setDefaultModel(r,e){let t=g(e);t.model={...t.model,default:r},m(t,e)},getDefaultConnectorIds(r){return g(r).connectors?.defaults??null},setDefaultConnectorIds(r,e){let t=g(e);t.connectors={...t.connectors,defaults:r},m(t,e)},getLocalTools(r){return g(r).localTools??null},setLocalTools(r,e){let t=g(e);t.localTools={...t.localTools,...r},m(t,e)}};var Ne="https://api.entrydesk.com",We="https://app.entrydesk.com",Le=3100,Ge=300*1e3;function q(r){return{apiUrl:J.getApiUrl(r)||process.env.ENTRYDESK_API_URL||Ne,hubUrl:J.getHubUrl(r)||process.env.ENTRYDESK_HUB_URL||We,mcp:{httpPort:Le},auth:{loginTimeout:Ge,ignoreSslErrors:process.env.ENTRYDESK_IGNORE_SSL_ERRORS==="true"||!1}}}function K(r){return q(r).apiUrl}function re(r){return q(r).hubUrl}function _(){return q().auth}export{o as a,J as b,q as c,K as d,re as e,_ as f,p as g,x as h,rt as i,te as j,B as k,dt as l,h as m,Ie as n,se as o,wt as p,kt as q,f as r,At as s};
|
package/dist/skills-DMGNV22F.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import{h as S,j as z,q as I,s as P}from"./chunk-OMJF4KR2.js";import"./chunk-KURQCTT3.js";import A from"crypto";import g from"fs";import i from"fs/promises";import b from"os";import o from"path";import{Readable as j}from"stream";import{pipeline as E}from"stream/promises";import N from"adm-zip";import O from"archiver";import{isHTTPError as T}from"ky";function x(){console.log(`
|
|
3
|
-
Usage: entrydesk skills [list|upload|delete|download] [options]
|
|
4
|
-
|
|
5
|
-
Commands:
|
|
6
|
-
list List available skills (default)
|
|
7
|
-
upload <file.zip> Upload a skill zip file
|
|
8
|
-
upload <folder> Upload a skill folder (auto-zipped)
|
|
9
|
-
delete <skillId> Delete a skill you own
|
|
10
|
-
download <skillId> Download and extract a skill to ./<skill-name>/
|
|
11
|
-
|
|
12
|
-
Options:
|
|
13
|
-
--me Only list skills created by me
|
|
14
|
-
--force Overwrite an existing skill with the same name
|
|
15
|
-
--json Output JSON (for list/upload)
|
|
16
|
-
`)}function W(r,d){let n=o.relative(r,d);return n===""||!n.startsWith("..")&&!o.isAbsolute(n)}async function C(r){let d=await i.realpath(r),n=[process.cwd(),b.homedir()];if(!(await Promise.all(n.map(async a=>{try{return await i.realpath(a)}catch{return o.resolve(a)}}))).some(a=>W(a,d)))throw new Error("Invalid upload path: must be within the current directory or your home directory.")}async function F(r){let d=await i.mkdtemp(o.join(b.tmpdir(),"entrydesk-skill-")),n=o.join(d,`${o.basename(r)}.zip`);return await new Promise((f,m)=>{let a=g.createWriteStream(n),u=O("zip",{zlib:{level:9}});a.on("close",()=>f()),a.on("error",m),u.on("error",m),u.pipe(a),u.directory(r,!1),u.finalize()}),{zipPath:n,cleanupDir:d}}async function X(r){let d,n;try{let e=await I();d=e.accessToken,n=e.workspaceId}catch(e){P(e)}let f=r.action||"list",m=new S;if(f==="upload"){let e=r.configKey;e||(console.error("Missing file path."),x(),process.exit(1));let w=o.resolve(e),c;try{c=await i.stat(w)}catch{console.error(`File not found: ${w}`),process.exit(1)}let s=w,y=null;try{try{await C(w)}catch(l){let t=l instanceof Error?l.message:"Invalid upload path.";console.error(t),process.exit(1)}if(c.isDirectory()){let l=await F(w);s=l.zipPath,y=l.cleanupDir}else c.isFile()||(console.error(`Not a file or directory: ${w}`),process.exit(1));o.extname(s).toLowerCase()!==".zip"&&(console.error("Only .zip files are supported for upload."),process.exit(1));let v=await i.readFile(s),p=new FormData;p.append("file",new Blob([v],{type:"application/zip"}),o.basename(s)),r.force&&p.append("force","true");let k;try{k=await m.uploadSkill(d,n,p)}catch(l){if(T(l)&&l.response.status===409){let{code:t}=z(l.data);t==="skill_name_conflict"?console.error("Upload failed: A skill with this name is owned by another user."):(console.error("Upload failed: A skill with this name already exists."),console.error("Use --force to overwrite the existing skill.")),process.exit(1)}throw l}if(r.json){console.log(JSON.stringify(k));return}console.log(`Uploaded skill: ${k.name}`),console.log(` ID: ${k.id}`),console.log(` Version ID: ${k.versionId}`),console.log(` Description: ${k.description}`);return}finally{y&&await i.rm(y,{recursive:!0,force:!0})}}if(f==="delete"){let e=r.configKey;e||(console.error("Missing skill ID."),x(),process.exit(1)),await m.deleteSkill(d,n,e),console.log(`Deleted skill: ${e}`);return}if(f==="download"){let e=r.configKey;e||(console.error("Missing skill ID."),x(),process.exit(1));let{url:w,name:c}=await m.downloadSkillCurrent(d,n,e);(c.includes("/")||c.includes(o.sep)||c==="."||c===".."||!c)&&(console.error(`Invalid skill name for output directory: ${c}`),process.exit(1));let s=o.resolve(c),y=await i.mkdtemp(o.join(b.tmpdir(),"entrydesk-skill-download-")),v=o.join(y,`${c}.zip`);try{let p=await fetch(w);if(!p.ok)throw new Error(`Failed to download skill zip: ${p.status} ${p.statusText}`);if(!p.body)throw new Error("Response body is empty");let k=g.createWriteStream(v);await E(j.fromWeb(p.body),k);let l=await i.mkdtemp(o.join(o.dirname(s),".entrydesk-skill-extract-")),t=null;try{r.json||console.log("Extracting...");let D=new N(v),U=o.resolve(l)+o.sep;for(let h of D.getEntries()){if(h.isDirectory)continue;let $=o.resolve(l,h.entryName);if(!$.startsWith(U))throw new Error(`Zip entry contains path traversal: ${h.entryName}`);await i.mkdir(o.dirname($),{recursive:!0}),await i.writeFile($,h.getData())}g.existsSync(s)&&(t=o.join(o.dirname(s),`.entrydesk-backup-${A.randomUUID()}`),r.json||console.log(`Replacing existing directory: ${s}`),await i.rename(s,t));try{await i.rename(l,s),t&&g.existsSync(t)&&(await i.rm(t,{recursive:!0,force:!0}),t=null)}catch(h){throw t&&g.existsSync(t)&&(await i.rename(t,s),t=null),h}}catch(D){if(await i.rm(l,{recursive:!0,force:!0}),t&&g.existsSync(t))try{await i.rename(t,s)}catch{console.error(`Warning: Could not restore backup. Your original files are at: ${t}`)}throw D}if(r.json){console.log(JSON.stringify({skillId:e,skillName:c,outputDir:s}));return}console.log(`Downloaded skill "${c}" to ${s}`)}finally{await i.rm(y,{recursive:!0,force:!0})}return}f!=="list"&&(console.error(`Unknown skills command: ${f}`),x(),process.exit(1));let a=[],u;do{let e=await m.listAvailableSkills(d,n,{createdBy:r.createdBy,nextKey:u,limit:100});a.push(...e.skills),u=e.nextKey}while(u);if(r.json){console.log(JSON.stringify(a));return}if(a.length===0){console.log("No skills found in this workspace.");return}console.log(`Available Skills (${a.length}):
|
|
17
|
-
`);for(let e of a)console.log(` ${e.name} (${e.provider})`),console.log(` ${e.description.slice(0,120)}`),console.log(` ID: ${e.id}`),console.log(` Author: ${e.author.name}`),console.log("")}export{X as runSkills};
|