@medplum/cli 5.1.22 → 5.1.24
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/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +14 -14
package/dist/esm/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var Zo=Object.create;var gt=Object.defineProperty;var ei=Object.getOwnPropertyDescriptor;var ti=Object.getOwnPropertyNames;var ri=Object.getPrototypeOf,ni=Object.prototype.hasOwnProperty;var si=(e,t,r)=>t in e?gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var w=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}};var oi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ti(t))!ni.call(e,s)&&s!==r&>(e,s,{get:()=>t[s],enumerable:!(n=ei(t,s))||n.enumerable});return e};var Sr=(e,t,r)=>(r=e!=null?Zo(ri(e)):{},oi(t||!e||!e.__esModule?gt(r,"default",{value:e,enumerable:!0}):r,e));var b=(e,t,r)=>si(e,typeof t!="symbol"?t+"":t,r);var oe=w((kf,wn)=>{"use strict";var wa="2.0.0",Ea=Number.MAX_SAFE_INTEGER||9007199254740991,Sa=16,Ra=250,Aa=["major","premajor","minor","preminor","patch","prepatch","prerelease"];wn.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Sa,MAX_SAFE_BUILD_LENGTH:Ra,MAX_SAFE_INTEGER:Ea,RELEASE_TYPES:Aa,SEMVER_SPEC_VERSION:wa,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Se=w((Lf,En)=>{"use strict";var ba=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};En.exports=ba});var ie=w((F,Sn)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Ut,MAX_SAFE_BUILD_LENGTH:Pa,MAX_LENGTH:Ia}=oe(),va=Se();F=Sn.exports={};var Ca=F.re=[],Ta=F.safeRe=[],p=F.src=[],Oa=F.safeSrc=[],d=F.t={},xa=0,jt="[a-zA-Z0-9-]",$a=[["\\s",1],["\\d",Ia],[jt,Pa]],Na=e=>{for(let[t,r]of $a)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},E=(e,t,r)=>{let n=Na(t),s=xa++;va(e,s,t),d[e]=s,p[s]=t,Oa[s]=n,Ca[s]=new RegExp(t,r?"g":void 0),Ta[s]=new RegExp(n,r?"g":void 0)};E("NUMERICIDENTIFIER","0|[1-9]\\d*");E("NUMERICIDENTIFIERLOOSE","\\d+");E("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${jt}*`);E("MAINVERSION",`(${p[d.NUMERICIDENTIFIER]})\\.(${p[d.NUMERICIDENTIFIER]})\\.(${p[d.NUMERICIDENTIFIER]})`);E("MAINVERSIONLOOSE",`(${p[d.NUMERICIDENTIFIERLOOSE]})\\.(${p[d.NUMERICIDENTIFIERLOOSE]})\\.(${p[d.NUMERICIDENTIFIERLOOSE]})`);E("PRERELEASEIDENTIFIER",`(?:${p[d.NONNUMERICIDENTIFIER]}|${p[d.NUMERICIDENTIFIER]})`);E("PRERELEASEIDENTIFIERLOOSE",`(?:${p[d.NONNUMERICIDENTIFIER]}|${p[d.NUMERICIDENTIFIERLOOSE]})`);E("PRERELEASE",`(?:-(${p[d.PRERELEASEIDENTIFIER]}(?:\\.${p[d.PRERELEASEIDENTIFIER]})*))`);E("PRERELEASELOOSE",`(?:-?(${p[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${p[d.PRERELEASEIDENTIFIERLOOSE]})*))`);E("BUILDIDENTIFIER",`${jt}+`);E("BUILD",`(?:\\+(${p[d.BUILDIDENTIFIER]}(?:\\.${p[d.BUILDIDENTIFIER]})*))`);E("FULLPLAIN",`v?${p[d.MAINVERSION]}${p[d.PRERELEASE]}?${p[d.BUILD]}?`);E("FULL",`^${p[d.FULLPLAIN]}$`);E("LOOSEPLAIN",`[v=\\s]*${p[d.MAINVERSIONLOOSE]}${p[d.PRERELEASELOOSE]}?${p[d.BUILD]}?`);E("LOOSE",`^${p[d.LOOSEPLAIN]}$`);E("GTLT","((?:<|>)?=?)");E("XRANGEIDENTIFIERLOOSE",`${p[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);E("XRANGEIDENTIFIER",`${p[d.NUMERICIDENTIFIER]}|x|X|\\*`);E("XRANGEPLAIN",`[v=\\s]*(${p[d.XRANGEIDENTIFIER]})(?:\\.(${p[d.XRANGEIDENTIFIER]})(?:\\.(${p[d.XRANGEIDENTIFIER]})(?:${p[d.PRERELEASE]})?${p[d.BUILD]}?)?)?`);E("XRANGEPLAINLOOSE",`[v=\\s]*(${p[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${p[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${p[d.XRANGEIDENTIFIERLOOSE]})(?:${p[d.PRERELEASELOOSE]})?${p[d.BUILD]}?)?)?`);E("XRANGE",`^${p[d.GTLT]}\\s*${p[d.XRANGEPLAIN]}$`);E("XRANGELOOSE",`^${p[d.GTLT]}\\s*${p[d.XRANGEPLAINLOOSE]}$`);E("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Ut}})(?:\\.(\\d{1,${Ut}}))?(?:\\.(\\d{1,${Ut}}))?`);E("COERCE",`${p[d.COERCEPLAIN]}(?:$|[^\\d])`);E("COERCEFULL",p[d.COERCEPLAIN]+`(?:${p[d.PRERELEASE]})?(?:${p[d.BUILD]})?(?:$|[^\\d])`);E("COERCERTL",p[d.COERCE],!0);E("COERCERTLFULL",p[d.COERCEFULL],!0);E("LONETILDE","(?:~>?)");E("TILDETRIM",`(\\s*)${p[d.LONETILDE]}\\s+`,!0);F.tildeTrimReplace="$1~";E("TILDE",`^${p[d.LONETILDE]}${p[d.XRANGEPLAIN]}$`);E("TILDELOOSE",`^${p[d.LONETILDE]}${p[d.XRANGEPLAINLOOSE]}$`);E("LONECARET","(?:\\^)");E("CARETTRIM",`(\\s*)${p[d.LONECARET]}\\s+`,!0);F.caretTrimReplace="$1^";E("CARET",`^${p[d.LONECARET]}${p[d.XRANGEPLAIN]}$`);E("CARETLOOSE",`^${p[d.LONECARET]}${p[d.XRANGEPLAINLOOSE]}$`);E("COMPARATORLOOSE",`^${p[d.GTLT]}\\s*(${p[d.LOOSEPLAIN]})$|^$`);E("COMPARATOR",`^${p[d.GTLT]}\\s*(${p[d.FULLPLAIN]})$|^$`);E("COMPARATORTRIM",`(\\s*)${p[d.GTLT]}\\s*(${p[d.LOOSEPLAIN]}|${p[d.XRANGEPLAIN]})`,!0);F.comparatorTrimReplace="$1$2$3";E("HYPHENRANGE",`^\\s*(${p[d.XRANGEPLAIN]})\\s+-\\s+(${p[d.XRANGEPLAIN]})\\s*$`);E("HYPHENRANGELOOSE",`^\\s*(${p[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${p[d.XRANGEPLAINLOOSE]})\\s*$`);E("STAR","(<|>)?=?\\s*\\*");E("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");E("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var We=w((Mf,Rn)=>{"use strict";var ka=Object.freeze({loose:!0}),La=Object.freeze({}),Ma=e=>e?typeof e!="object"?ka:e:La;Rn.exports=Ma});var Ft=w((Df,Pn)=>{"use strict";var An=/^[0-9]+$/,bn=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=An.test(e),n=An.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},Da=(e,t)=>bn(t,e);Pn.exports={compareIdentifiers:bn,rcompareIdentifiers:Da}});var O=w((_f,vn)=>{"use strict";var Ke=Se(),{MAX_LENGTH:In,MAX_SAFE_INTEGER:qe}=oe(),{safeRe:He,t:Ge}=ie(),_a=We(),{compareIdentifiers:Bt}=Ft(),Ua=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Bt(e[n],r[n])!==0)return!1;return!0},Wt=class e{constructor(t,r){if(r=_a(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>In)throw new TypeError(`version is longer than ${In} characters`);Ke("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?He[Ge.LOOSE]:He[Ge.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>qe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>qe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>qe||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(s=>{if(/^[0-9]+$/.test(s)){let o=+s;if(o>=0&&o<qe)return o}return s}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(Ke("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:this.patch>t.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],s=t.prerelease[r];if(Ke("prerelease compare",r,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return Bt(n,s)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],s=t.build[r];if(Ke("build compare",r,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return Bt(n,s)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let s=`-${r}`.match(this.options.loose?He[Ge.PRERELEASELOOSE]:He[Ge.PRERELEASE]);if(!s||s[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let s=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[s];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(r){let o=[r,s];if(n===!1&&(o=[r]),Ua(this.prerelease,r)){let i=this.prerelease[r.split(".").length];isNaN(i)&&(this.prerelease=o)}else this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};vn.exports=Wt});var X=w((Uf,Tn)=>{"use strict";var Cn=O(),ja=(e,t,r=!1)=>{if(e instanceof Cn)return e;try{return new Cn(e,t)}catch(n){if(!r)return null;throw n}};Tn.exports=ja});var xn=w((jf,On)=>{"use strict";var Fa=X(),Ba=(e,t)=>{let r=Fa(e,t);return r?r.version:null};On.exports=Ba});var Nn=w((Ff,$n)=>{"use strict";var Wa=X(),Ka=(e,t)=>{let r=Wa(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};$n.exports=Ka});var Mn=w((Bf,Ln)=>{"use strict";var kn=O(),qa=(e,t,r,n,s)=>{typeof r=="string"&&(s=n,n=r,r=void 0);try{return new kn(e instanceof kn?e.version:e,r).inc(t,n,s).version}catch{return null}};Ln.exports=qa});var Un=w((Wf,_n)=>{"use strict";var Dn=X(),Ha=(e,t)=>{let r=Dn(e,null,!0),n=Dn(t,null,!0),s=r.compare(n);if(s===0)return null;let o=s>0,i=o?r:n,a=o?n:r,l=!!i.prerelease.length;if(!!a.prerelease.length&&!l){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}let f=l?"pre":"";return r.major!==n.major?f+"major":r.minor!==n.minor?f+"minor":r.patch!==n.patch?f+"patch":"prerelease"};_n.exports=Ha});var Fn=w((Kf,jn)=>{"use strict";var Ga=O(),Va=(e,t)=>new Ga(e,t).major;jn.exports=Va});var Wn=w((qf,Bn)=>{"use strict";var Ja=O(),Xa=(e,t)=>new Ja(e,t).minor;Bn.exports=Xa});var qn=w((Hf,Kn)=>{"use strict";var za=O(),Ya=(e,t)=>new za(e,t).patch;Kn.exports=Ya});var Gn=w((Gf,Hn)=>{"use strict";var Qa=X(),Za=(e,t)=>{let r=Qa(e,t);return r&&r.prerelease.length?r.prerelease:null};Hn.exports=Za});var L=w((Vf,Jn)=>{"use strict";var Vn=O(),ec=(e,t,r)=>new Vn(e,r).compare(new Vn(t,r));Jn.exports=ec});var zn=w((Jf,Xn)=>{"use strict";var tc=L(),rc=(e,t,r)=>tc(t,e,r);Xn.exports=rc});var Qn=w((Xf,Yn)=>{"use strict";var nc=L(),sc=(e,t)=>nc(e,t,!0);Yn.exports=sc});var Ve=w((zf,es)=>{"use strict";var Zn=O(),oc=(e,t,r)=>{let n=new Zn(e,r),s=new Zn(t,r);return n.compare(s)||n.compareBuild(s)};es.exports=oc});var rs=w((Yf,ts)=>{"use strict";var ic=Ve(),ac=(e,t)=>e.sort((r,n)=>ic(r,n,t));ts.exports=ac});var ss=w((Qf,ns)=>{"use strict";var cc=Ve(),lc=(e,t)=>e.sort((r,n)=>cc(n,r,t));ns.exports=lc});var Re=w((Zf,os)=>{"use strict";var uc=L(),pc=(e,t,r)=>uc(e,t,r)>0;os.exports=pc});var Je=w((eh,is)=>{"use strict";var dc=L(),mc=(e,t,r)=>dc(e,t,r)<0;is.exports=mc});var Kt=w((th,as)=>{"use strict";var fc=L(),hc=(e,t,r)=>fc(e,t,r)===0;as.exports=hc});var qt=w((rh,cs)=>{"use strict";var gc=L(),yc=(e,t,r)=>gc(e,t,r)!==0;cs.exports=yc});var Xe=w((nh,ls)=>{"use strict";var wc=L(),Ec=(e,t,r)=>wc(e,t,r)>=0;ls.exports=Ec});var ze=w((sh,us)=>{"use strict";var Sc=L(),Rc=(e,t,r)=>Sc(e,t,r)<=0;us.exports=Rc});var Ht=w((oh,ps)=>{"use strict";var Ac=Kt(),bc=qt(),Pc=Re(),Ic=Xe(),vc=Je(),Cc=ze(),Tc=(e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return Ac(e,r,n);case"!=":return bc(e,r,n);case">":return Pc(e,r,n);case">=":return Ic(e,r,n);case"<":return vc(e,r,n);case"<=":return Cc(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};ps.exports=Tc});var ms=w((ih,ds)=>{"use strict";var Oc=O(),xc=X(),{safeRe:Ye,t:Qe}=ie(),$c=(e,t)=>{if(e instanceof Oc)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Ye[Qe.COERCEFULL]:Ye[Qe.COERCE]);else{let l=t.includePrerelease?Ye[Qe.COERCERTLFULL]:Ye[Qe.COERCERTL],u;for(;(u=l.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),l.lastIndex=u.index+u[1].length+u[2].length;l.lastIndex=-1}if(r===null)return null;let n=r[2],s=r[3]||"0",o=r[4]||"0",i=t.includePrerelease&&r[5]?`-${r[5]}`:"",a=t.includePrerelease&&r[6]?`+${r[6]}`:"";return xc(`${n}.${s}.${o}${i}${a}`,t)};ds.exports=$c});var hs=w((ah,fs)=>{"use strict";var Nc=X(),kc=oe(),Lc=O(),Mc=(e,t,r)=>{if(!kc.RELEASE_TYPES.includes(t))return null;let n=Dc(e,r);return n&&_c(n,t)},Dc=(e,t)=>{let r=e instanceof Lc?e.version:e;return Nc(r,t)},_c=(e,t)=>{if(Uc(t))return e.version;switch(e.prerelease=[],t){case"major":e.minor=0,e.patch=0;break;case"minor":e.patch=0;break}return e.format()},Uc=e=>e.startsWith("pre");fs.exports=Mc});var ys=w((ch,gs)=>{"use strict";var Gt=class{constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(t,r)}return this}};gs.exports=Gt});var M=w((lh,Rs)=>{"use strict";var jc=/\s+/g,Vt=class e{constructor(t,r){if(r=Bc(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Jt)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(jc," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(s=>!Es(s[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let s of this.set)if(s.length===1&&zc(s[0])){this.set=[s];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(Xc,"");let n=((this.options.includePrerelease&&Vc)|(this.options.loose&&Jc))+":"+t,s=ws.get(n);if(s)return s;let o=this.options.loose,i=o?$[x.HYPHENRANGELOOSE]:$[x.HYPHENRANGE];t=t.replace(i,al(this.options.includePrerelease)),P("hyphen replace",t),t=t.replace($[x.COMPARATORTRIM],qc),P("comparator trim",t),t=t.replace($[x.TILDETRIM],Hc),P("tilde trim",t),t=t.replace($[x.CARETTRIM],Gc),P("caret trim",t);let a=t.split(" ").map(m=>Yc(m,this.options)).join(" ").split(/\s+/).map(m=>il(m,this.options));o&&(a=a.filter(m=>(P("loose invalid filter",m,this.options),!!m.match($[x.COMPARATORLOOSE])))),P("range list",a);let l=new Map,u=a.map(m=>new Jt(m,this.options));for(let m of u){if(Es(m))return[m];l.set(m.value,m)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return ws.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Ss(n,r)&&t.set.some(s=>Ss(s,r)&&n.every(o=>s.every(i=>o.intersects(i,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Wc(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(cl(this.set[r],t,this.options))return!0;return!1}};Rs.exports=Vt;var Fc=ys(),ws=new Fc,Bc=We(),Jt=Ae(),P=Se(),Wc=O(),{safeRe:$,src:Kc,t:x,comparatorTrimReplace:qc,tildeTrimReplace:Hc,caretTrimReplace:Gc}=ie(),{FLAG_INCLUDE_PRERELEASE:Vc,FLAG_LOOSE:Jc}=oe(),Xc=new RegExp(Kc[x.BUILD],"g"),Es=e=>e.value==="<0.0.0-0",zc=e=>e.value==="",Ss=(e,t)=>{let r=!0,n=e.slice(),s=n.pop();for(;r&&n.length;)r=n.every(o=>s.intersects(o,t)),s=n.pop();return r},Yc=(e,t)=>(e=e.replace($[x.BUILD],""),P("comp",e,t),e=tl(e,t),P("caret",e),e=Zc(e,t),P("tildes",e),e=nl(e,t),P("xrange",e),e=ol(e,t),P("stars",e),e),C=e=>!e||e.toLowerCase()==="x"||e==="*",Qc=(e,t,r)=>C(e)&&!C(t)||C(t)&&r&&!C(r),Zc=(e,t)=>e.trim().split(/\s+/).map(r=>el(r,t)).join(" "),el=(e,t)=>{let r=t.loose?$[x.TILDELOOSE]:$[x.TILDE];return e.replace(r,(n,s,o,i,a)=>{P("tilde",e,n,s,o,i,a);let l;return C(s)?l="":C(o)?l=`>=${s}.0.0 <${+s+1}.0.0-0`:C(i)?l=`>=${s}.${o}.0 <${s}.${+o+1}.0-0`:a?(P("replaceTilde pr",a),l=`>=${s}.${o}.${i}-${a} <${s}.${+o+1}.0-0`):l=`>=${s}.${o}.${i} <${s}.${+o+1}.0-0`,P("tilde return",l),l})},tl=(e,t)=>e.trim().split(/\s+/).map(r=>rl(r,t)).join(" "),rl=(e,t)=>{P("caret",e,t);let r=t.loose?$[x.CARETLOOSE]:$[x.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(s,o,i,a,l)=>{P("caret",e,s,o,i,a,l);let u;return C(o)?u="":C(i)?u=`>=${o}.0.0${n} <${+o+1}.0.0-0`:C(a)?o==="0"?u=`>=${o}.${i}.0${n} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.0${n} <${+o+1}.0.0-0`:l?(P("replaceCaret pr",l),o==="0"?i==="0"?u=`>=${o}.${i}.${a}-${l} <${o}.${i}.${+a+1}-0`:u=`>=${o}.${i}.${a}-${l} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.${a}-${l} <${+o+1}.0.0-0`):(P("no pr"),o==="0"?i==="0"?u=`>=${o}.${i}.${a} <${o}.${i}.${+a+1}-0`:u=`>=${o}.${i}.${a} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.${a} <${+o+1}.0.0-0`),P("caret return",u),u})},nl=(e,t)=>(P("replaceXRanges",e,t),e.split(/\s+/).map(r=>sl(r,t)).join(" ")),sl=(e,t)=>{e=e.trim();let r=t.loose?$[x.XRANGELOOSE]:$[x.XRANGE];return e.replace(r,(n,s,o,i,a,l)=>{if(P("xRange",e,n,s,o,i,a,l),Qc(o,i,a))return e;let u=C(o),f=u||C(i),m=f||C(a),S=m;return s==="="&&S&&(s=""),l=t.includePrerelease?"-0":"",u?s===">"||s==="<"?n="<0.0.0-0":n="*":s&&S?(f&&(i=0),a=0,s===">"?(s=">=",f?(o=+o+1,i=0,a=0):(i=+i+1,a=0)):s==="<="&&(s="<",f?o=+o+1:i=+i+1),s==="<"&&(l="-0"),n=`${s+o}.${i}.${a}${l}`):f?n=`>=${o}.0.0${l} <${+o+1}.0.0-0`:m&&(n=`>=${o}.${i}.0${l} <${o}.${+i+1}.0-0`),P("xRange return",n),n})},ol=(e,t)=>(P("replaceStars",e,t),e.trim().replace($[x.STAR],"")),il=(e,t)=>(P("replaceGTE0",e,t),e.trim().replace($[t.includePrerelease?x.GTE0PRE:x.GTE0],"")),al=e=>(t,r,n,s,o,i,a,l,u,f,m,S)=>(C(n)?r="":C(s)?r=`>=${n}.0.0${e?"-0":""}`:C(o)?r=`>=${n}.${s}.0${e?"-0":""}`:i?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,C(u)?l="":C(f)?l=`<${+u+1}.0.0-0`:C(m)?l=`<${u}.${+f+1}.0-0`:S?l=`<=${u}.${f}.${m}-${S}`:e?l=`<${u}.${f}.${+m+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),cl=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(P(e[n].semver),e[n].semver!==Jt.ANY&&e[n].semver.prerelease.length>0){let s=e[n].semver;if(s.major===t.major&&s.minor===t.minor&&s.patch===t.patch)return!0}return!1}return!0}});var Ae=w((uh,Cs)=>{"use strict";var be=Symbol("SemVer ANY"),Yt=class e{static get ANY(){return be}constructor(t,r){if(r=As(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),zt("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===be?this.value="":this.value=this.operator+this.semver.version,zt("comp",this)}parse(t){let r=this.options.loose?bs[Ps.COMPARATORLOOSE]:bs[Ps.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new Is(n[2],this.options.loose):this.semver=be}toString(){return this.value}test(t){if(zt("Comparator.test",t,this.options.loose),this.semver===be||t===be)return!0;if(typeof t=="string")try{t=new Is(t,this.options)}catch{return!1}return Xt(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new vs(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new vs(this.value,r).test(t.semver):(r=As(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||Xt(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Xt(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Cs.exports=Yt;var As=We(),{safeRe:bs,t:Ps}=ie(),Xt=Ht(),zt=Se(),Is=O(),vs=M()});var Pe=w((ph,Ts)=>{"use strict";var ll=M(),ul=(e,t,r)=>{try{t=new ll(t,r)}catch{return!1}return t.test(e)};Ts.exports=ul});var xs=w((dh,Os)=>{"use strict";var pl=M(),dl=(e,t)=>new pl(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Os.exports=dl});var Ns=w((mh,$s)=>{"use strict";var ml=O(),fl=M(),hl=(e,t,r)=>{let n=null,s=null,o=null;try{o=new fl(t,r)}catch{return null}return e.forEach(i=>{o.test(i)&&(!n||s.compare(i)===-1)&&(n=i,s=new ml(n,r))}),n};$s.exports=hl});var Ls=w((fh,ks)=>{"use strict";var gl=O(),yl=M(),wl=(e,t,r)=>{let n=null,s=null,o=null;try{o=new yl(t,r)}catch{return null}return e.forEach(i=>{o.test(i)&&(!n||s.compare(i)===1)&&(n=i,s=new gl(n,r))}),n};ks.exports=wl});var _s=w((hh,Ds)=>{"use strict";var Qt=O(),El=M(),Ms=Re(),Sl=(e,t)=>{e=new El(e,t);let r=new Qt("0.0.0");if(e.test(r)||(r=new Qt("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let s=e.set[n],o=null;s.forEach(i=>{let a=new Qt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!o||Ms(a,o))&&(o=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),o&&(!r||Ms(r,o))&&(r=o)}return r&&e.test(r)?r:null};Ds.exports=Sl});var js=w((gh,Us)=>{"use strict";var Rl=M(),Al=(e,t)=>{try{return new Rl(e,t).range||"*"}catch{return null}};Us.exports=Al});var Ze=w((yh,Ks)=>{"use strict";var bl=O(),Ws=Ae(),{ANY:Pl}=Ws,Il=M(),vl=Pe(),Fs=Re(),Bs=Je(),Cl=ze(),Tl=Xe(),Ol=(e,t,r,n)=>{e=new bl(e,n),t=new Il(t,n);let s,o,i,a,l;switch(r){case">":s=Fs,o=Cl,i=Bs,a=">",l=">=";break;case"<":s=Bs,o=Tl,i=Fs,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(vl(e,t,n))return!1;for(let u=0;u<t.set.length;++u){let f=t.set[u],m=null,S=null;if(f.forEach(h=>{h.semver===Pl&&(h=new Ws(">=0.0.0")),m=m||h,S=S||h,s(h.semver,m.semver,n)?m=h:i(h.semver,S.semver,n)&&(S=h)}),m.operator===a||m.operator===l||(!S.operator||S.operator===a)&&o(e,S.semver))return!1;if(S.operator===l&&i(e,S.semver))return!1}return!0};Ks.exports=Ol});var Hs=w((wh,qs)=>{"use strict";var xl=Ze(),$l=(e,t,r)=>xl(e,t,">",r);qs.exports=$l});var Vs=w((Eh,Gs)=>{"use strict";var Nl=Ze(),kl=(e,t,r)=>Nl(e,t,"<",r);Gs.exports=kl});var zs=w((Sh,Xs)=>{"use strict";var Js=M(),Ll=(e,t,r)=>(e=new Js(e,r),t=new Js(t,r),e.intersects(t,r));Xs.exports=Ll});var Qs=w((Rh,Ys)=>{"use strict";var Ml=Pe(),Dl=L();Ys.exports=(e,t,r)=>{let n=[],s=null,o=null,i=e.sort((f,m)=>Dl(f,m,r));for(let f of i)Ml(f,t,r)?(o=f,s||(s=f)):(o&&n.push([s,o]),o=null,s=null);s&&n.push([s,null]);let a=[];for(let[f,m]of n)f===m?a.push(f):!m&&f===i[0]?a.push("*"):m?f===i[0]?a.push(`<=${m}`):a.push(`${f} - ${m}`):a.push(`>=${f}`);let l=a.join(" || "),u=typeof t.raw=="string"?t.raw:String(t);return l.length<u.length?l:t}});var so=w((Ah,no)=>{"use strict";var Zs=M(),tr=Ae(),{ANY:Zt}=tr,er=Pe(),rr=L(),_l=(e,t,r={})=>{if(e===t)return!0;e=new Zs(e,r),t=new Zs(t,r);let n=!1;e:for(let s of e.set){for(let o of t.set){let i=jl(s,o,r);if(n=n||i!==null,i)continue e}if(n)return!1}return!0},Ul=[new tr(">=0.0.0-0")],eo=[new tr(">=0.0.0")],jl=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Zt){if(t.length===1&&t[0].semver===Zt)return!0;r.includePrerelease?e=Ul:e=eo}if(t.length===1&&t[0].semver===Zt){if(r.includePrerelease)return!0;t=eo}let n=new Set,s,o;for(let h of e)h.operator===">"||h.operator===">="?s=to(s,h,r):h.operator==="<"||h.operator==="<="?o=ro(o,h,r):n.add(h.semver);if(n.size>1)return null;let i;if(s&&o){if(i=rr(s.semver,o.semver,r),i>0)return null;if(i===0&&(s.operator!==">="||o.operator!=="<="))return null}for(let h of n){if(s&&!er(h,String(s),r)||o&&!er(h,String(o),r))return null;for(let re of t)if(!er(h,String(re),r))return!1;return!0}let a,l,u,f,m=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1,S=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1;m&&m.prerelease.length===1&&o.operator==="<"&&m.prerelease[0]===0&&(m=!1);for(let h of t){if(f=f||h.operator===">"||h.operator===">=",u=u||h.operator==="<"||h.operator==="<=",s){if(S&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===S.major&&h.semver.minor===S.minor&&h.semver.patch===S.patch&&(S=!1),h.operator===">"||h.operator===">="){if(a=to(s,h,r),a===h&&a!==s)return!1}else if(s.operator===">="&&!h.test(s.semver))return!1}if(o){if(m&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===m.major&&h.semver.minor===m.minor&&h.semver.patch===m.patch&&(m=!1),h.operator==="<"||h.operator==="<="){if(l=ro(o,h,r),l===h&&l!==o)return!1}else if(o.operator==="<="&&!h.test(o.semver))return!1}if(!h.operator&&(o||s)&&i!==0)return!1}return!(s&&u&&!o&&i!==0||o&&f&&!s&&i!==0||S||m)},to=(e,t,r)=>{if(!e)return t;let n=rr(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},ro=(e,t,r)=>{if(!e)return t;let n=rr(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};no.exports=_l});var sr=w((bh,ao)=>{"use strict";var nr=ie(),oo=oe(),Fl=O(),io=Ft(),Bl=X(),Wl=xn(),Kl=Nn(),ql=Mn(),Hl=Un(),Gl=Fn(),Vl=Wn(),Jl=qn(),Xl=Gn(),zl=L(),Yl=zn(),Ql=Qn(),Zl=Ve(),eu=rs(),tu=ss(),ru=Re(),nu=Je(),su=Kt(),ou=qt(),iu=Xe(),au=ze(),cu=Ht(),lu=ms(),uu=hs(),pu=Ae(),du=M(),mu=Pe(),fu=xs(),hu=Ns(),gu=Ls(),yu=_s(),wu=js(),Eu=Ze(),Su=Hs(),Ru=Vs(),Au=zs(),bu=Qs(),Pu=so();ao.exports={parse:Bl,valid:Wl,clean:Kl,inc:ql,diff:Hl,major:Gl,minor:Vl,patch:Jl,prerelease:Xl,compare:zl,rcompare:Yl,compareLoose:Ql,compareBuild:Zl,sort:eu,rsort:tu,gt:ru,lt:nu,eq:su,neq:ou,gte:iu,lte:au,cmp:cu,coerce:lu,truncate:uu,Comparator:pu,Range:du,satisfies:mu,toComparators:fu,maxSatisfying:hu,minSatisfying:gu,minVersion:yu,validRange:wu,outside:Eu,gtr:Su,ltr:Ru,intersects:Au,simplifyRange:bu,subset:Pu,SemVer:Fl,re:nr.re,src:nr.src,tokens:nr.t,SEMVER_SPEC_VERSION:oo.SEMVER_SPEC_VERSION,RELEASE_TYPES:oo.RELEASE_TYPES,compareIdentifiers:io.compareIdentifiers,rcompareIdentifiers:io.rcompareIdentifiers}});import{MEDPLUM_VERSION as Rd,normalizeErrorString as Er}from"@medplum/core";import{CommanderError as Yo,Option as Ad}from"commander";import bd from"dotenv";import{ContentType as on,EMPTY as Vi,isOk as Ji,isUUID as Xi,normalizeErrorString as zi}from"@medplum/core";import{Option as je}from"commander";import{MedplumClient as pi}from"@medplum/core";import{ClientStorage as ii}from"@medplum/core";import{existsSync as Rr,mkdirSync as ai,readFileSync as ci,writeFileSync as li}from"node:fs";import{homedir as ui}from"node:os";import{resolve as Ar}from"node:path";var _=class extends ii{constructor(r){super();b(this,"dirName");b(this,"fileName");this.dirName=Ar(ui(),".medplum"),this.fileName=Ar(this.dirName,r+".json")}clear(){this.writeFile({})}getString(r){return this.readFile()?.[r]}setString(r,n){let s=this.readFile()??{};n?s[r]=n:delete s[r],this.writeFile(s)}getObject(r){let n=this.getString(r);return n?JSON.parse(n):void 0}setObject(r,n){this.setString(r,n?JSON.stringify(n):void 0)}readFile(){if(Rr(this.fileName))return JSON.parse(ci(this.fileName,"utf8"))}writeFile(r){Rr(this.dirName)||ai(this.dirName),li(this.fileName,JSON.stringify(r,null,2),"utf8")}};async function A(e,t=!0){let r=e.profile??"default",n=new _(r),s=n.getObject("options");if(r!=="default"&&!s)throw new Error(`Profile "${r}" does not exist`);let{baseUrl:o,fhirUrlPath:i,accessToken:a,tokenUrl:l,authorizeUrl:u,clientId:f,clientSecret:m}=di(e,n),S=e.fetch??fetch;e.baseUrl&&e.baseUrl!=="https://api.medplum.com/"&&await mi(e.baseUrl,S);let h=new pi({fetch:S,baseUrl:o,tokenUrl:l,fhirUrlPath:i,authorizeUrl:u,storage:n,onUnauthenticated:fi,verbose:e.verbose});return t&&(a?h.setAccessToken(a):f&&m&&(h.setBasicAuth(f,m),s?.authType!=="basic"&&await h.startClientLogin(f,m))),h}function di(e,t){let r=t.getObject("options"),n=e.baseUrl??r?.baseUrl??process.env.MEDPLUM_BASE_URL??"https://api.medplum.com/",s=e.fhirUrlPath??r?.fhirUrlPath??process.env.MEDPLUM_FHIR_URL_PATH,o=e.accessToken??r?.accessToken??process.env.MEDPLUM_CLIENT_ACCESS_TOKEN,i=e.tokenUrl??r?.tokenUrl??process.env.MEDPLUM_TOKEN_URL,a=e.authorizeUrl??r?.authorizeUrl??process.env.MEDPLUM_AUTHORIZE_URL,l=e.clientId??r?.clientId??process.env.MEDPLUM_CLIENT_ID,u=e.clientSecret??r?.clientSecret??process.env.MEDPLUM_CLIENT_SECRET;return{baseUrl:n,fhirUrlPath:s,accessToken:o,tokenUrl:i,authorizeUrl:a,clientId:l,clientSecret:u}}async function mi(e,t){try{let r=new URL("healthcheck",e).toString(),n=await t(r);if(!n.ok)throw new Error(`Healthcheck returned status ${n.status}`);if((await n.json()).ok===!0)return;throw new Error('Healthcheck response does not have "ok": true')}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`Failed to validate base URL "${e}": ${n}`)}}function fi(){console.log("Unauthenticated: run `npx medplum login` to sign in")}import{ContentType as Tt,encodeBase64 as Hr,OAuthSigningAlgorithm as Gr}from"@medplum/core";import{Command as Mi}from"commander";import{Buffer as hi}from"node:buffer";var Q=new TextEncoder,yt=new TextDecoder,_d=2**32;function br(...e){let t=e.reduce((s,{length:o})=>s+o,0),r=new Uint8Array(t),n=0;for(let s of e)r.set(s,n),n+=s.length;return r}var xe=e=>hi.from(e).toString("base64url");var Z=class extends Error{constructor(r,n){super(r,n);b(this,"code","ERR_JOSE_GENERIC");this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}};b(Z,"code","ERR_JOSE_GENERIC");var k=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JOSE_NOT_SUPPORTED")}};b(k,"code","ERR_JOSE_NOT_SUPPORTED");var K=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JWS_INVALID")}};b(K,"code","ERR_JWS_INVALID");var fe=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JWT_INVALID")}};b(fe,"code","ERR_JWT_INVALID");var Pr,Ir,wt=class extends(Ir=Z,Pr=Symbol.asyncIterator,Ir){constructor(r="multiple matching keys found in the JSON Web Key Set",n){super(r,n);b(this,Pr);b(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}};b(wt,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS");import*as vr from"node:util";var $e=e=>vr.types.isKeyObject(e);import*as Cr from"node:crypto";import*as Tr from"node:util";var yi=Cr.webcrypto,Or=yi,ne=e=>Tr.types.isCryptoKey(e);function U(e,t="algorithm.name"){return new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`)}function he(e,t){return e.name===t}function Et(e){return parseInt(e.name.slice(4),10)}function wi(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function Ei(e,t){if(t.length&&!t.some(r=>e.usages.includes(r))){let r="CryptoKey does not support this operation, its usages must include ";if(t.length>2){let n=t.pop();r+=`one of ${t.join(", ")}, or ${n}.`}else t.length===2?r+=`one of ${t[0]} or ${t[1]}.`:r+=`${t[0]}.`;throw new TypeError(r)}}function xr(e,t,...r){switch(t){case"HS256":case"HS384":case"HS512":{if(!he(e.algorithm,"HMAC"))throw U("HMAC");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"RS256":case"RS384":case"RS512":{if(!he(e.algorithm,"RSASSA-PKCS1-v1_5"))throw U("RSASSA-PKCS1-v1_5");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"PS256":case"PS384":case"PS512":{if(!he(e.algorithm,"RSA-PSS"))throw U("RSA-PSS");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"EdDSA":{if(e.algorithm.name!=="Ed25519"&&e.algorithm.name!=="Ed448")throw U("Ed25519 or Ed448");break}case"Ed25519":{if(!he(e.algorithm,"Ed25519"))throw U("Ed25519");break}case"ES256":case"ES384":case"ES512":{if(!he(e.algorithm,"ECDSA"))throw U("ECDSA");let n=wi(t);if(e.algorithm.namedCurve!==n)throw U(n,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}Ei(e,r)}function $r(e,t,...r){if(r=r.filter(Boolean),r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}var ge=(e,...t)=>$r("Key must be ",e,...t);function St(e,t,...r){return $r(`Key for the ${e} algorithm must be `,t,...r)}var Rt=e=>$e(e)||ne(e),q=["KeyObject"];(globalThis.CryptoKey||Or?.CryptoKey)&&q.push("CryptoKey");var Si=(...e)=>{let t=e.filter(Boolean);if(t.length===0||t.length===1)return!0;let r;for(let n of t){let s=Object.keys(n);if(!r||r.size===0){r=new Set(s);continue}for(let o of s){if(r.has(o))return!1;r.add(o)}}return!0},Nr=Si;function Ri(e){return typeof e=="object"&&e!==null}function ye(e){if(!Ri(e)||Object.prototype.toString.call(e)!=="[object Object]")return!1;if(Object.getPrototypeOf(e)===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}import{KeyObject as Ai}from"node:crypto";function G(e){return ye(e)&&typeof e.kty=="string"}function kr(e){return e.kty!=="oct"&&typeof e.d=="string"}function Lr(e){return e.kty!=="oct"&&typeof e.d>"u"}function Mr(e){return G(e)&&e.kty==="oct"&&typeof e.k=="string"}var bi=e=>{switch(e){case"prime256v1":return"P-256";case"secp384r1":return"P-384";case"secp521r1":return"P-521";case"secp256k1":return"secp256k1";default:throw new k("Unsupported key curve for this operation")}},Pi=(e,t)=>{let r;if(ne(e))r=Ai.from(e);else if($e(e))r=e;else{if(G(e))return e.crv;throw new TypeError(ge(e,...q))}if(r.type==="secret")throw new TypeError('only "private" or "public" type keys can be used for this operation');switch(r.asymmetricKeyType){case"ed25519":case"ed448":return`Ed${r.asymmetricKeyType.slice(2)}`;case"x25519":case"x448":return`X${r.asymmetricKeyType.slice(1)}`;case"ec":{let n=r.asymmetricKeyDetails.namedCurve;return t?n:bi(n)}default:throw new TypeError("Invalid asymmetric key type for this operation")}},_r=Pi;import{KeyObject as Ii}from"node:crypto";var At=(e,t)=>{let r;try{e instanceof Ii?r=e.asymmetricKeyDetails?.modulusLength:r=Buffer.from(e.n,"base64url").byteLength<<3}catch{}if(typeof r!="number"||r<2048)throw new TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)};var se=e=>e?.[Symbol.toStringTag],bt=(e,t,r)=>{if(t.use!==void 0&&t.use!=="sig")throw new TypeError("Invalid key for this operation, when present its use must be sig");if(t.key_ops!==void 0&&t.key_ops.includes?.(r)!==!0)throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${r}`);if(t.alg!==void 0&&t.alg!==e)throw new TypeError(`Invalid key for this operation, when present its alg must be ${e}`);return!0},vi=(e,t,r,n)=>{if(!(t instanceof Uint8Array)){if(n&&G(t)){if(Mr(t)&&bt(e,t,r))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!Rt(t))throw new TypeError(St(e,t,...q,"Uint8Array",n?"JSON Web Key":null));if(t.type!=="secret")throw new TypeError(`${se(t)} instances for symmetric algorithms must be of type "secret"`)}},Ci=(e,t,r,n)=>{if(n&&G(t))switch(r){case"sign":if(kr(t)&&bt(e,t,r))return;throw new TypeError("JSON Web Key for this operation be a private JWK");case"verify":if(Lr(t)&&bt(e,t,r))return;throw new TypeError("JSON Web Key for this operation be a public JWK")}if(!Rt(t))throw new TypeError(St(e,t,...q,n?"JSON Web Key":null));if(t.type==="secret")throw new TypeError(`${se(t)} instances for asymmetric algorithms must not be of type "secret"`);if(r==="sign"&&t.type==="public")throw new TypeError(`${se(t)} instances for asymmetric algorithm signing must be of type "private"`);if(r==="decrypt"&&t.type==="public")throw new TypeError(`${se(t)} instances for asymmetric algorithm decryption must be of type "private"`);if(t.algorithm&&r==="verify"&&t.type==="private")throw new TypeError(`${se(t)} instances for asymmetric algorithm verifying must be of type "public"`);if(t.algorithm&&r==="encrypt"&&t.type==="private")throw new TypeError(`${se(t)} instances for asymmetric algorithm encryption must be of type "public"`)};function Ur(e,t,r,n){t.startsWith("HS")||t==="dir"||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?vi(t,r,n,e):Ci(t,r,n,e)}var um=Ur.bind(void 0,!1),jr=Ur.bind(void 0,!0);function Ti(e,t,r,n,s){if(s.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return new Set;if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(i=>typeof i!="string"||i.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let o;r!==void 0?o=new Map([...Object.entries(r),...t.entries()]):o=t;for(let i of n.crit){if(!o.has(i))throw new k(`Extension Header Parameter "${i}" is not recognized`);if(s[i]===void 0)throw new e(`Extension Header Parameter "${i}" is missing`);if(o.get(i)&&n[i]===void 0)throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return new Set(n.crit)}var Fr=Ti;function Pt(e){switch(e){case"PS256":case"RS256":case"ES256":case"ES256K":return"sha256";case"PS384":case"RS384":case"ES384":return"sha384";case"PS512":case"RS512":case"ES512":return"sha512";case"Ed25519":case"EdDSA":return;default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}import{constants as Br,KeyObject as Oi}from"node:crypto";var xi=new Map([["ES256","P-256"],["ES256K","secp256k1"],["ES384","P-384"],["ES512","P-521"]]);function It(e,t){let r,n,s;if(t instanceof Oi)r=t.asymmetricKeyType,n=t.asymmetricKeyDetails;else switch(s=!0,t.kty){case"RSA":r="rsa";break;case"EC":r="ec";break;case"OKP":{if(t.crv==="Ed25519"){r="ed25519";break}if(t.crv==="Ed448"){r="ed448";break}throw new TypeError("Invalid key for this operation, its crv must be Ed25519 or Ed448")}default:throw new TypeError("Invalid key for this operation, its kty must be RSA, OKP, or EC")}let o;switch(e){case"Ed25519":if(r!=="ed25519")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ed25519");break;case"EdDSA":if(!["ed25519","ed448"].includes(r))throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448");break;case"RS256":case"RS384":case"RS512":if(r!=="rsa")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa");At(t,e);break;case"PS256":case"PS384":case"PS512":if(r==="rsa-pss"){let{hashAlgorithm:i,mgf1HashAlgorithm:a,saltLength:l}=n,u=parseInt(e.slice(-3),10);if(i!==void 0&&(i!==`sha${u}`||a!==i))throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}`);if(l!==void 0&&l>u>>3)throw new TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}`)}else if(r!=="rsa")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss");At(t,e),o={padding:Br.RSA_PKCS1_PSS_PADDING,saltLength:Br.RSA_PSS_SALTLEN_DIGEST};break;case"ES256":case"ES256K":case"ES384":case"ES512":{if(r!=="ec")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ec");let i=_r(t),a=xi.get(e);if(i!==a)throw new TypeError(`Invalid key curve for the algorithm, its curve must be ${a}, got ${i}`);o={dsaEncoding:"ieee-p1363"};break}default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}return s?{format:"jwk",key:t,...o}:o?{...o,key:t}:t}import*as Ne from"node:crypto";import{promisify as $i}from"node:util";function vt(e){switch(e){case"HS256":return"sha256";case"HS384":return"sha384";case"HS512":return"sha512";default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}import{KeyObject as Wr,createSecretKey as Kr}from"node:crypto";function Ct(e,t,r){if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(ge(t,...q));return Kr(t)}if(t instanceof Wr)return t;if(ne(t))return xr(t,e,r),Wr.from(t);if(G(t))return e.startsWith("HS")?Kr(Buffer.from(t.k,"base64url")):t;throw new TypeError(ge(t,...q,"Uint8Array","JSON Web Key"))}var Ni=$i(Ne.sign),ki=async(e,t,r)=>{let n=Ct(e,t,"sign");if(e.startsWith("HS")){let s=Ne.createHmac(vt(e),n);return s.update(r),s.digest()}return Ni(Pt(e),r,It(e,n))},qr=ki;var V=e=>Math.floor(e.getTime()/1e3);var Li=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,ke=e=>{let t=Li.exec(e);if(!t||t[4]&&t[1])throw new TypeError("Invalid time period format");let r=parseFloat(t[2]),n=t[3].toLowerCase(),s;switch(n){case"sec":case"secs":case"second":case"seconds":case"s":s=Math.round(r);break;case"minute":case"minutes":case"min":case"mins":case"m":s=Math.round(r*60);break;case"hour":case"hours":case"hr":case"hrs":case"h":s=Math.round(r*3600);break;case"day":case"days":case"d":s=Math.round(r*86400);break;case"week":case"weeks":case"w":s=Math.round(r*604800);break;default:s=Math.round(r*31557600);break}return t[1]==="-"||t[4]==="ago"?-s:s};var Le=class{constructor(t){b(this,"_payload");b(this,"_protectedHeader");b(this,"_unprotectedHeader");if(!(t instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this._payload=t}setProtectedHeader(t){if(this._protectedHeader)throw new TypeError("setProtectedHeader can only be called once");return this._protectedHeader=t,this}setUnprotectedHeader(t){if(this._unprotectedHeader)throw new TypeError("setUnprotectedHeader can only be called once");return this._unprotectedHeader=t,this}async sign(t,r){if(!this._protectedHeader&&!this._unprotectedHeader)throw new K("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!Nr(this._protectedHeader,this._unprotectedHeader))throw new K("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...this._protectedHeader,...this._unprotectedHeader},s=Fr(K,new Map([["b64",!0]]),r?.crit,this._protectedHeader,n),o=!0;if(s.has("b64")&&(o=this._protectedHeader.b64,typeof o!="boolean"))throw new K('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:i}=n;if(typeof i!="string"||!i)throw new K('JWS "alg" (Algorithm) Header Parameter missing or invalid');jr(i,t,"sign");let a=this._payload;o&&(a=Q.encode(xe(a)));let l;this._protectedHeader?l=Q.encode(xe(JSON.stringify(this._protectedHeader))):l=Q.encode("");let u=br(l,Q.encode("."),a),f=await qr(i,t,u),m={signature:xe(f),payload:""};return o&&(m.payload=yt.decode(a)),this._unprotectedHeader&&(m.header=this._unprotectedHeader),this._protectedHeader&&(m.protected=yt.decode(l)),m}};var Me=class{constructor(t){b(this,"_flattened");this._flattened=new Le(t)}setProtectedHeader(t){return this._flattened.setProtectedHeader(t),this}async sign(t,r){let n=await this._flattened.sign(t,r);if(n.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return`${n.protected}.${n.payload}.${n.signature}`}};function ee(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}var De=class{constructor(t={}){b(this,"_payload");if(!ye(t))throw new TypeError("JWT Claims Set MUST be an object");this._payload=t}setIssuer(t){return this._payload={...this._payload,iss:t},this}setSubject(t){return this._payload={...this._payload,sub:t},this}setAudience(t){return this._payload={...this._payload,aud:t},this}setJti(t){return this._payload={...this._payload,jti:t},this}setNotBefore(t){return typeof t=="number"?this._payload={...this._payload,nbf:ee("setNotBefore",t)}:t instanceof Date?this._payload={...this._payload,nbf:ee("setNotBefore",V(t))}:this._payload={...this._payload,nbf:V(new Date)+ke(t)},this}setExpirationTime(t){return typeof t=="number"?this._payload={...this._payload,exp:ee("setExpirationTime",t)}:t instanceof Date?this._payload={...this._payload,exp:ee("setExpirationTime",V(t))}:this._payload={...this._payload,exp:V(new Date)+ke(t)},this}setIssuedAt(t){return typeof t>"u"?this._payload={...this._payload,iat:V(new Date)}:t instanceof Date?this._payload={...this._payload,iat:ee("setIssuedAt",V(t))}:typeof t=="string"?this._payload={...this._payload,iat:ee("setIssuedAt",V(new Date)+ke(t))}:this._payload={...this._payload,iat:ee("setIssuedAt",t)},this}};var we=class extends De{constructor(){super(...arguments);b(this,"_protectedHeader")}setProtectedHeader(r){return this._protectedHeader=r,this}async sign(r,n){let s=new Me(Q.encode(JSON.stringify(this._payload)));if(s.setProtectedHeader(this._protectedHeader),Array.isArray(this._protectedHeader?.crit)&&this._protectedHeader.crit.includes("b64")&&this._protectedHeader.b64===!1)throw new fe("JWTs MUST NOT use unencoded payload");return s.sign(r,n)}};import{createHmac as Di,createPrivateKey as _i,randomBytes as Ui}from"node:crypto";import{existsSync as ji,readFileSync as Vr,writeFileSync as Jr}from"node:fs";import{basename as Xr,extname as Fi,resolve as Ot}from"node:path";import{isPromise as Bi}from"node:util/types";import{extract as Wi}from"tar";function H(e){console.log(JSON.stringify(e,null,2))}async function xt(e,t,r){let n=t.source,s=_e(n);if(!s)return;console.log("Saving source code...");let o=await e.createAttachment({data:s,filename:Xr(n),contentType:Hi(n)});console.log("Updating bot...");let i=await e.updateResource({...r,sourceCode:o});console.log("Success! New bot version: "+i.meta?.versionId)}async function $t(e,t,r){let n=t.dist??t.source,s=_e(n);if(!s)return;console.log("Deploying bot...");let o=await e.post(e.fhirUrl("Bot",r.id,"$deploy"),{code:s,filename:Xr(n)});console.log("Deploy result: "+o.issue?.[0]?.details?.text)}async function Nt(e,t,r,n,s,o,i){let a={name:t,description:"",runtimeVersion:o},l=await e.post("admin/projects/"+r+"/bot",a),u=await e.readResource("Bot",l.id),f={name:t,id:l.id,source:n,dist:s};await xt(e,f,u),await $t(e,f,u),console.log(`Success! Bot created: ${u.id}`),i&&Ki(f)}function zr(e){let t=new RegExp("^"+qi(e).replaceAll(String.raw`\*`,".*")+"$"),r=j()?.bots?.filter(n=>t.test(n.name));return r||[]}function D(e,t){if(t?.file)return t.file;let r=["medplum"];return e&&r.push(e),r.push("config"),t?.server&&r.push("server"),r.push("json"),r.join(".")}function v(e,t){Jr(Ot(e),JSON.stringify(t,void 0,2),"utf-8")}function j(e,t){let r=D(e,t),n=_e(r);if(n)return JSON.parse(n)}function Yr(e){let t=_e(D(e,{server:!0}));if(t)return JSON.parse(t)}function _e(e){let t=Ot(e);return ji(t)?Vr(t,"utf8"):""}function Ki(e){let t=j()??{};t.bots||(t.bots=[]),t.bots.push(e),Jr("medplum.config.json",JSON.stringify(t,null,2),"utf8"),console.log(`Bot added to config: ${e.id}`)}function qi(e){return e.replaceAll(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")}function Qr(e){let n=0,s=0;return Wi({cwd:e,filter:(o,i)=>{if(n++,n>100)throw new Error("Tar extractor reached max number of files");if(s+=i.size,s>10485760)throw new Error("Tar extractor reached max size");return!0}})}function kt(){return{url:"http://hl7.org/fhir/StructureDefinition/data-absent-reason",valueCode:"unsupported"}}function Hi(e){let t=Fi(e).toLowerCase();return[".cjs",".mjs",".js"].includes(t)?Tt.JAVASCRIPT:[".cts",".mts",".ts"].includes(t)?Tt.TYPESCRIPT:Tt.TEXT}function Ue(e,t){let r=new _(e),n={name:e,...t};return r.setObject("options",n),n}function Zr(e){return new _(e).getObject("options")}async function en(e,t){let r={typ:"JWT",alg:Gr.HS256},n=Math.floor(Date.now()/1e3),s={aud:`${t.baseUrl}${t.audience}`,iss:t.issuer,sub:t.subject,nbf:n,iat:n,exp:n+604800},o=Hr(JSON.stringify(r)),i=Hr(JSON.stringify(s)),a=`${o}.${i}`,l=Di("sha256",t.clientSecret).update(a).digest("base64url"),u=`${a}.${l}`;await e.startJwtBearerLogin(t.clientId,u,t.scope??"")}async function tn(e,t){let r=_i(Vr(Ot(t.privateKeyPath))),n=await new we({}).setProtectedHeader({typ:"JWT",alg:Gr.RS384}).setIssuer(t.clientId).setSubject(t.clientId).setAudience(`${t.baseUrl}${t.audience}`).setJti(Ui(16).toString("hex")).setIssuedAt().setExpirationTime("5m").sign(r);await e.startJwtAssertionLogin(n)}function y(e,t){t.configureHelp({showGlobalOptions:!0}),e.addCommand(t)}var g=class extends Mi{action(t){let r=Gi(this,t);return super._actionHandler=r,this}resetOptionDefaults(){this._optionValues={};for(let t of this.options)t.defaultValue!==void 0&&(this._optionValues[t.attributeName()]=t.defaultValue)}};function Gi(e,t){return async r=>{let n=e.registeredArguments.length,s=r.slice(0,n);s[n]=e.optsWithGlobals();try{let o=t(...s);Bi(o)&&await o}finally{e.resetOptionDefaults()}}}var an=new g("status").aliases(["info","list","ls"]),cn=new g("ping"),ln=new g("push"),un=new g("reload-config"),pn=new g("upgrade"),dn=new g("stats"),J=new g("agent");y(J,an);y(J,cn);y(J,ln);y(J,un);y(J,pn);y(J,dn);an.description("Get the status of a specified agent").argument("[agentIds...]","The ID(s) of the agent(s) to get the status of").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to get the status of. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$bulk-status",agentIds:e,options:t,parseSuccessfulResponse:r=>{let n=fn(r.result,{required:["status","version"],optional:["lastUpdated"]});return{id:r.agent.id,name:r.agent.name,enabledStatus:r.agent.status,version:n.version,connectionStatus:n.status,statusLastUpdated:n.lastUpdated??"N/A"}}})});cn.description("Ping a host from a specified agent").argument("<ipOrDomain>","The IPv4 address or domain name to ping").argument("[agentId]","Conditionally optional ID of the agent to ping from. Mutually exclusive with --criteria <criteria> option").option("--count <count>","An optional amount of pings to issue before returning results","1").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r)=>{let n=await A(r),s=await mn(n,t,r),o=Number.parseInt(r.count,10);if(Number.isNaN(o))throw new Error("--count <count> must be an integer if specified");try{let i=await n.pushToAgent(s,e,`PING ${o}`,on.PING,!0,{maxRetries:0});console.info(i)}catch(i){throw new Error("Unexpected response from agent while pinging",{cause:i})}});ln.description("Push a message to a target device via a specified agent").argument("<deviceId>","The ID of the device to push the message to").argument("<message>","The message to send to the destination device").argument("[agentId]","Conditionally optional ID of the agent to send the message from. Mutually exclusive with --criteria <criteria> option").option("--content-type <contentType>","The content type of the message",on.HL7_V2).option("--no-wait","Tells the server not to wait for a response from the destination device").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r,n)=>{let s=await A(n),o=await mn(s,r,n),i;try{i=await s.pushToAgent(o,{reference:`Device/${e}`},t,n.contentType,n.wait!==!1,{maxRetries:0})}catch(a){throw new Error("Unexpected response from agent while pushing message to agent",{cause:a})}console.info(i)});un.description("Reload the config for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) for which the config should be reloaded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) for which to notify to reload their config. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$reload-config",agentIds:e,options:t,parseSuccessfulResponse:r=>({id:r.agent.id,name:r.agent.name})})});pn.description("Upgrade the version for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) that should be upgraded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to upgrade. Mutually exclusive with [agentIds...] arg").option("--agentVersion <version>","An optional agent version to upgrade to. Defaults to the latest version if flag not included").option("--force","Forces an upgrade when a pending upgrade is in an inconsistent state. Use with caution.").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{let r={};t.agentVersion&&(r.version=t.agentVersion),t.force&&(r.force=!0),await Fe({operation:"$upgrade",agentIds:e,options:t,params:r,parseSuccessfulResponse:n=>({id:n.agent.id,name:n.agent.name,version:t.agentVersion??"latest"})})});dn.description("Get runtime statistics for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) to get stats for. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to get stats for. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$stats",agentIds:e,options:t,parseSuccessfulResponse:r=>{let{stats:n}=fn(r.result,{required:["stats"]}),s;try{s=JSON.parse(n)}catch(o){console.error(`Failed to parse stats for agent ${r.agent.id}: ${zi(o)}`)}return{id:r.agent.id,name:r.agent.name,stats:s}},renderSuccessfulRows:r=>{for(let n=0;n<r.length;n++)n>0&&console.info(),Yi(r[n])}})});var rn=["live","ping","hl7ConnectionsOpen","hl7ClientCount","hl7QueueDepth","webSocketQueueDepth","outstandingHeartbeats"];function nn(e){return e==null?"":typeof e=="object"?JSON.stringify(e):e.toString()}function sn(e){return e?Object.entries(e).filter(([,t])=>t?.rtt).map(([t,r])=>({name:t,count:r.rtt.count,pending:r.rtt.pendingCount,"min (ms)":r.rtt.min,"avg (ms)":r.rtt.average,"max (ms)":r.rtt.max,"p50 (ms)":r.rtt.p50,"p95 (ms)":r.rtt.p95,"p99 (ms)":r.rtt.p99})):[]}function Yi(e){let t=e.name?`${e.name} (${e.id})`:e.id;if(console.info(`Agent: ${t}`),!e.stats){console.info(" (stats unavailable)");return}let r={};for(let i of rn)r[i]=nn(e.stats[i]);let n=new Set([...rn,"channelStats","clientStats"]);for(let[i,a]of Object.entries(e.stats))n.has(i)||(r[i]=nn(a));console.table(r);let s=sn(e.stats.channelStats);s.length&&(console.info("Channel Stats:"),console.table(s));let o=sn(e.stats.clientStats);o.length&&(console.info("Client Stats:"),console.table(o))}async function Fe({operation:e,agentIds:t,options:r,params:n={},parseSuccessfulResponse:s,renderSuccessfulRows:o}){let i=ta(t,r),a=await A(r),l=i.type==="criteria"?i.criteria:`Agent?_id=${i.ids.join(",")}`,u=new URLSearchParams(l.split("?")[1]);for(let[T,W]of Object.entries(n))u.append(T,W.toString());let f;try{let T=a.fhirUrl("Agent",e);T.search=u.toString(),f=await a.get(T,{cache:"reload"})}catch(T){throw new Error(`Operation '${e}' failed`,{cause:T})}if(r.output==="json"){console.info(JSON.stringify(f,null,2));return}let m=[],S=[];switch(f.resourceType){case"Bundle":{let T=Qi(f);for(let W of T)W.result.resourceType==="Parameters"||Ji(W.result)?m.push(W):S.push(W);break}case"Parameters":case"OperationOutcome":{let T=await a.searchOne("Agent",u,{cache:"reload"});if(!T)throw new Error("Agent not found");f.resourceType==="Parameters"?m.push({agent:T,result:f}):S.push({agent:T,result:f});break}default:throw new Error(`Invalid result received for '${e}' operation: ${JSON.stringify(f)}`)}let h=[];for(let T of m){let W=s(T);h.push(W)}let re=[];for(let T of S){let ht=T.result.issue?.[0],Qo={id:T.agent.id,name:T.agent.name,severity:ht.severity,code:ht.code,details:ht.details?.text??"No details to show"};re.push(Qo)}console.info(`
|
|
2
|
+
var Zo=Object.create;var gt=Object.defineProperty;var ei=Object.getOwnPropertyDescriptor;var ti=Object.getOwnPropertyNames;var ri=Object.getPrototypeOf,ni=Object.prototype.hasOwnProperty;var si=(e,t,r)=>t in e?gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var w=(e,t)=>()=>{try{return t||e((t={exports:{}}).exports,t),t.exports}catch(r){throw t=0,r}};var oi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ti(t))!ni.call(e,s)&&s!==r&>(e,s,{get:()=>t[s],enumerable:!(n=ei(t,s))||n.enumerable});return e};var Sr=(e,t,r)=>(r=e!=null?Zo(ri(e)):{},oi(t||!e||!e.__esModule?gt(r,"default",{value:e,enumerable:!0}):r,e));var b=(e,t,r)=>si(e,typeof t!="symbol"?t+"":t,r);var oe=w((kf,wn)=>{"use strict";var wa="2.0.0",Ea=Number.MAX_SAFE_INTEGER||9007199254740991,Sa=16,Ra=250,Aa=["major","premajor","minor","preminor","patch","prepatch","prerelease"];wn.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:Sa,MAX_SAFE_BUILD_LENGTH:Ra,MAX_SAFE_INTEGER:Ea,RELEASE_TYPES:Aa,SEMVER_SPEC_VERSION:wa,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Se=w((Lf,En)=>{"use strict";var ba=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};En.exports=ba});var ie=w((F,Sn)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Ut,MAX_SAFE_BUILD_LENGTH:Pa,MAX_LENGTH:Ia}=oe(),va=Se();F=Sn.exports={};var Ca=F.re=[],Ta=F.safeRe=[],p=F.src=[],Oa=F.safeSrc=[],d=F.t={},xa=0,jt="[a-zA-Z0-9-]",$a=[["\\s",1],["\\d",Ia],[jt,Pa]],Na=e=>{for(let[t,r]of $a)e=e.split(`${t}*`).join(`${t}{0,${r}}`).split(`${t}+`).join(`${t}{1,${r}}`);return e},E=(e,t,r)=>{let n=Na(t),s=xa++;va(e,s,t),d[e]=s,p[s]=t,Oa[s]=n,Ca[s]=new RegExp(t,r?"g":void 0),Ta[s]=new RegExp(n,r?"g":void 0)};E("NUMERICIDENTIFIER","0|[1-9]\\d*");E("NUMERICIDENTIFIERLOOSE","\\d+");E("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${jt}*`);E("MAINVERSION",`(${p[d.NUMERICIDENTIFIER]})\\.(${p[d.NUMERICIDENTIFIER]})\\.(${p[d.NUMERICIDENTIFIER]})`);E("MAINVERSIONLOOSE",`(${p[d.NUMERICIDENTIFIERLOOSE]})\\.(${p[d.NUMERICIDENTIFIERLOOSE]})\\.(${p[d.NUMERICIDENTIFIERLOOSE]})`);E("PRERELEASEIDENTIFIER",`(?:${p[d.NONNUMERICIDENTIFIER]}|${p[d.NUMERICIDENTIFIER]})`);E("PRERELEASEIDENTIFIERLOOSE",`(?:${p[d.NONNUMERICIDENTIFIER]}|${p[d.NUMERICIDENTIFIERLOOSE]})`);E("PRERELEASE",`(?:-(${p[d.PRERELEASEIDENTIFIER]}(?:\\.${p[d.PRERELEASEIDENTIFIER]})*))`);E("PRERELEASELOOSE",`(?:-?(${p[d.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${p[d.PRERELEASEIDENTIFIERLOOSE]})*))`);E("BUILDIDENTIFIER",`${jt}+`);E("BUILD",`(?:\\+(${p[d.BUILDIDENTIFIER]}(?:\\.${p[d.BUILDIDENTIFIER]})*))`);E("FULLPLAIN",`v?${p[d.MAINVERSION]}${p[d.PRERELEASE]}?${p[d.BUILD]}?`);E("FULL",`^${p[d.FULLPLAIN]}$`);E("LOOSEPLAIN",`[v=\\s]*${p[d.MAINVERSIONLOOSE]}${p[d.PRERELEASELOOSE]}?${p[d.BUILD]}?`);E("LOOSE",`^${p[d.LOOSEPLAIN]}$`);E("GTLT","((?:<|>)?=?)");E("XRANGEIDENTIFIERLOOSE",`${p[d.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);E("XRANGEIDENTIFIER",`${p[d.NUMERICIDENTIFIER]}|x|X|\\*`);E("XRANGEPLAIN",`[v=\\s]*(${p[d.XRANGEIDENTIFIER]})(?:\\.(${p[d.XRANGEIDENTIFIER]})(?:\\.(${p[d.XRANGEIDENTIFIER]})(?:${p[d.PRERELEASE]})?${p[d.BUILD]}?)?)?`);E("XRANGEPLAINLOOSE",`[v=\\s]*(${p[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${p[d.XRANGEIDENTIFIERLOOSE]})(?:\\.(${p[d.XRANGEIDENTIFIERLOOSE]})(?:${p[d.PRERELEASELOOSE]})?${p[d.BUILD]}?)?)?`);E("XRANGE",`^${p[d.GTLT]}\\s*${p[d.XRANGEPLAIN]}$`);E("XRANGELOOSE",`^${p[d.GTLT]}\\s*${p[d.XRANGEPLAINLOOSE]}$`);E("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Ut}})(?:\\.(\\d{1,${Ut}}))?(?:\\.(\\d{1,${Ut}}))?`);E("COERCE",`${p[d.COERCEPLAIN]}(?:$|[^\\d])`);E("COERCEFULL",p[d.COERCEPLAIN]+`(?:${p[d.PRERELEASE]})?(?:${p[d.BUILD]})?(?:$|[^\\d])`);E("COERCERTL",p[d.COERCE],!0);E("COERCERTLFULL",p[d.COERCEFULL],!0);E("LONETILDE","(?:~>?)");E("TILDETRIM",`(\\s*)${p[d.LONETILDE]}\\s+`,!0);F.tildeTrimReplace="$1~";E("TILDE",`^${p[d.LONETILDE]}${p[d.XRANGEPLAIN]}$`);E("TILDELOOSE",`^${p[d.LONETILDE]}${p[d.XRANGEPLAINLOOSE]}$`);E("LONECARET","(?:\\^)");E("CARETTRIM",`(\\s*)${p[d.LONECARET]}\\s+`,!0);F.caretTrimReplace="$1^";E("CARET",`^${p[d.LONECARET]}${p[d.XRANGEPLAIN]}$`);E("CARETLOOSE",`^${p[d.LONECARET]}${p[d.XRANGEPLAINLOOSE]}$`);E("COMPARATORLOOSE",`^${p[d.GTLT]}\\s*(${p[d.LOOSEPLAIN]})$|^$`);E("COMPARATOR",`^${p[d.GTLT]}\\s*(${p[d.FULLPLAIN]})$|^$`);E("COMPARATORTRIM",`(\\s*)${p[d.GTLT]}\\s*(${p[d.LOOSEPLAIN]}|${p[d.XRANGEPLAIN]})`,!0);F.comparatorTrimReplace="$1$2$3";E("HYPHENRANGE",`^\\s*(${p[d.XRANGEPLAIN]})\\s+-\\s+(${p[d.XRANGEPLAIN]})\\s*$`);E("HYPHENRANGELOOSE",`^\\s*(${p[d.XRANGEPLAINLOOSE]})\\s+-\\s+(${p[d.XRANGEPLAINLOOSE]})\\s*$`);E("STAR","(<|>)?=?\\s*\\*");E("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");E("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var We=w((Mf,Rn)=>{"use strict";var ka=Object.freeze({loose:!0}),La=Object.freeze({}),Ma=e=>e?typeof e!="object"?ka:e:La;Rn.exports=Ma});var Ft=w((Df,Pn)=>{"use strict";var An=/^[0-9]+$/,bn=(e,t)=>{if(typeof e=="number"&&typeof t=="number")return e===t?0:e<t?-1:1;let r=An.test(e),n=An.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1},Da=(e,t)=>bn(t,e);Pn.exports={compareIdentifiers:bn,rcompareIdentifiers:Da}});var O=w((_f,vn)=>{"use strict";var Ke=Se(),{MAX_LENGTH:In,MAX_SAFE_INTEGER:qe}=oe(),{safeRe:He,t:Ge}=ie(),_a=We(),{compareIdentifiers:Bt}=Ft(),Ua=(e,t)=>{let r=t.split(".");if(r.length>e.length)return!1;for(let n=0;n<r.length;n++)if(Bt(e[n],r[n])!==0)return!1;return!0},Wt=class e{constructor(t,r){if(r=_a(r),t instanceof e){if(t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease)return t;t=t.version}else if(typeof t!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof t}".`);if(t.length>In)throw new TypeError(`version is longer than ${In} characters`);Ke("SemVer",t,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=t.trim().match(r.loose?He[Ge.LOOSE]:He[Ge.FULL]);if(!n)throw new TypeError(`Invalid Version: ${t}`);if(this.raw=t,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>qe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>qe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>qe||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(s=>{if(/^[0-9]+$/.test(s)){let o=+s;if(o>=0&&o<qe)return o}return s}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(t){if(Ke("SemVer.compare",this.version,this.options,t),!(t instanceof e)){if(typeof t=="string"&&t===this.version)return 0;t=new e(t,this.options)}return t.version===this.version?0:this.compareMain(t)||this.comparePre(t)}compareMain(t){return t instanceof e||(t=new e(t,this.options)),this.major<t.major?-1:this.major>t.major?1:this.minor<t.minor?-1:this.minor>t.minor?1:this.patch<t.patch?-1:this.patch>t.patch?1:0}comparePre(t){if(t instanceof e||(t=new e(t,this.options)),this.prerelease.length&&!t.prerelease.length)return-1;if(!this.prerelease.length&&t.prerelease.length)return 1;if(!this.prerelease.length&&!t.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],s=t.prerelease[r];if(Ke("prerelease compare",r,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return Bt(n,s)}while(++r)}compareBuild(t){t instanceof e||(t=new e(t,this.options));let r=0;do{let n=this.build[r],s=t.build[r];if(Ke("build compare",r,n,s),n===void 0&&s===void 0)return 0;if(s===void 0)return 1;if(n===void 0)return-1;if(n===s)continue;return Bt(n,s)}while(++r)}inc(t,r,n){if(t.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let s=`-${r}`.match(this.options.loose?He[Ge.PRERELEASELOOSE]:He[Ge.PRERELEASE]);if(!s||s[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let s=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[s];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(s)}}if(r){let o=[r,s];if(n===!1&&(o=[r]),Ua(this.prerelease,r)){let i=this.prerelease[r.split(".").length];isNaN(i)&&(this.prerelease=o)}else this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};vn.exports=Wt});var X=w((Uf,Tn)=>{"use strict";var Cn=O(),ja=(e,t,r=!1)=>{if(e instanceof Cn)return e;try{return new Cn(e,t)}catch(n){if(!r)return null;throw n}};Tn.exports=ja});var xn=w((jf,On)=>{"use strict";var Fa=X(),Ba=(e,t)=>{let r=Fa(e,t);return r?r.version:null};On.exports=Ba});var Nn=w((Ff,$n)=>{"use strict";var Wa=X(),Ka=(e,t)=>{let r=Wa(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null};$n.exports=Ka});var Mn=w((Bf,Ln)=>{"use strict";var kn=O(),qa=(e,t,r,n,s)=>{typeof r=="string"&&(s=n,n=r,r=void 0);try{return new kn(e instanceof kn?e.version:e,r).inc(t,n,s).version}catch{return null}};Ln.exports=qa});var Un=w((Wf,_n)=>{"use strict";var Dn=X(),Ha=(e,t)=>{let r=Dn(e,null,!0),n=Dn(t,null,!0),s=r.compare(n);if(s===0)return null;let o=s>0,i=o?r:n,a=o?n:r,l=!!i.prerelease.length;if(!!a.prerelease.length&&!l){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}let f=l?"pre":"";return r.major!==n.major?f+"major":r.minor!==n.minor?f+"minor":r.patch!==n.patch?f+"patch":"prerelease"};_n.exports=Ha});var Fn=w((Kf,jn)=>{"use strict";var Ga=O(),Va=(e,t)=>new Ga(e,t).major;jn.exports=Va});var Wn=w((qf,Bn)=>{"use strict";var Ja=O(),Xa=(e,t)=>new Ja(e,t).minor;Bn.exports=Xa});var qn=w((Hf,Kn)=>{"use strict";var za=O(),Ya=(e,t)=>new za(e,t).patch;Kn.exports=Ya});var Gn=w((Gf,Hn)=>{"use strict";var Qa=X(),Za=(e,t)=>{let r=Qa(e,t);return r&&r.prerelease.length?r.prerelease:null};Hn.exports=Za});var L=w((Vf,Jn)=>{"use strict";var Vn=O(),ec=(e,t,r)=>new Vn(e,r).compare(new Vn(t,r));Jn.exports=ec});var zn=w((Jf,Xn)=>{"use strict";var tc=L(),rc=(e,t,r)=>tc(t,e,r);Xn.exports=rc});var Qn=w((Xf,Yn)=>{"use strict";var nc=L(),sc=(e,t)=>nc(e,t,!0);Yn.exports=sc});var Ve=w((zf,es)=>{"use strict";var Zn=O(),oc=(e,t,r)=>{let n=new Zn(e,r),s=new Zn(t,r);return n.compare(s)||n.compareBuild(s)};es.exports=oc});var rs=w((Yf,ts)=>{"use strict";var ic=Ve(),ac=(e,t)=>e.sort((r,n)=>ic(r,n,t));ts.exports=ac});var ss=w((Qf,ns)=>{"use strict";var cc=Ve(),lc=(e,t)=>e.sort((r,n)=>cc(n,r,t));ns.exports=lc});var Re=w((Zf,os)=>{"use strict";var uc=L(),pc=(e,t,r)=>uc(e,t,r)>0;os.exports=pc});var Je=w((eh,is)=>{"use strict";var dc=L(),mc=(e,t,r)=>dc(e,t,r)<0;is.exports=mc});var Kt=w((th,as)=>{"use strict";var fc=L(),hc=(e,t,r)=>fc(e,t,r)===0;as.exports=hc});var qt=w((rh,cs)=>{"use strict";var gc=L(),yc=(e,t,r)=>gc(e,t,r)!==0;cs.exports=yc});var Xe=w((nh,ls)=>{"use strict";var wc=L(),Ec=(e,t,r)=>wc(e,t,r)>=0;ls.exports=Ec});var ze=w((sh,us)=>{"use strict";var Sc=L(),Rc=(e,t,r)=>Sc(e,t,r)<=0;us.exports=Rc});var Ht=w((oh,ps)=>{"use strict";var Ac=Kt(),bc=qt(),Pc=Re(),Ic=Xe(),vc=Je(),Cc=ze(),Tc=(e,t,r,n)=>{switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e===r;case"!==":return typeof e=="object"&&(e=e.version),typeof r=="object"&&(r=r.version),e!==r;case"":case"=":case"==":return Ac(e,r,n);case"!=":return bc(e,r,n);case">":return Pc(e,r,n);case">=":return Ic(e,r,n);case"<":return vc(e,r,n);case"<=":return Cc(e,r,n);default:throw new TypeError(`Invalid operator: ${t}`)}};ps.exports=Tc});var ms=w((ih,ds)=>{"use strict";var Oc=O(),xc=X(),{safeRe:Ye,t:Qe}=ie(),$c=(e,t)=>{if(e instanceof Oc)return e;if(typeof e=="number"&&(e=String(e)),typeof e!="string")return null;t=t||{};let r=null;if(!t.rtl)r=e.match(t.includePrerelease?Ye[Qe.COERCEFULL]:Ye[Qe.COERCE]);else{let l=t.includePrerelease?Ye[Qe.COERCERTLFULL]:Ye[Qe.COERCERTL],u;for(;(u=l.exec(e))&&(!r||r.index+r[0].length!==e.length);)(!r||u.index+u[0].length!==r.index+r[0].length)&&(r=u),l.lastIndex=u.index+u[1].length+u[2].length;l.lastIndex=-1}if(r===null)return null;let n=r[2],s=r[3]||"0",o=r[4]||"0",i=t.includePrerelease&&r[5]?`-${r[5]}`:"",a=t.includePrerelease&&r[6]?`+${r[6]}`:"";return xc(`${n}.${s}.${o}${i}${a}`,t)};ds.exports=$c});var hs=w((ah,fs)=>{"use strict";var Nc=X(),kc=oe(),Lc=O(),Mc=(e,t,r)=>{if(!kc.RELEASE_TYPES.includes(t))return null;let n=Dc(e,r);return n&&_c(n,t)},Dc=(e,t)=>{let r=e instanceof Lc?e.version:e;return Nc(r,t)},_c=(e,t)=>{if(Uc(t))return e.version;switch(e.prerelease=[],t){case"major":e.minor=0,e.patch=0;break;case"minor":e.patch=0;break}return e.format()},Uc=e=>e.startsWith("pre");fs.exports=Mc});var ys=w((ch,gs)=>{"use strict";var Gt=class{constructor(){this.max=1e3,this.map=new Map}get(t){let r=this.map.get(t);if(r!==void 0)return this.map.delete(t),this.map.set(t,r),r}delete(t){return this.map.delete(t)}set(t,r){if(!this.delete(t)&&r!==void 0){if(this.map.size>=this.max){let s=this.map.keys().next().value;this.delete(s)}this.map.set(t,r)}return this}};gs.exports=Gt});var M=w((lh,Rs)=>{"use strict";var jc=/\s+/g,Vt=class e{constructor(t,r){if(r=Bc(r),t instanceof e)return t.loose===!!r.loose&&t.includePrerelease===!!r.includePrerelease?t:new e(t.raw,r);if(t instanceof Jt)return this.raw=t.value,this.set=[[t]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=t.trim().replace(jc," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(s=>!Es(s[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let s of this.set)if(s.length===1&&zc(s[0])){this.set=[s];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let t=0;t<this.set.length;t++){t>0&&(this.formatted+="||");let r=this.set[t];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(t){t=t.replace(Xc,"");let n=((this.options.includePrerelease&&Vc)|(this.options.loose&&Jc))+":"+t,s=ws.get(n);if(s)return s;let o=this.options.loose,i=o?$[x.HYPHENRANGELOOSE]:$[x.HYPHENRANGE];t=t.replace(i,al(this.options.includePrerelease)),P("hyphen replace",t),t=t.replace($[x.COMPARATORTRIM],qc),P("comparator trim",t),t=t.replace($[x.TILDETRIM],Hc),P("tilde trim",t),t=t.replace($[x.CARETTRIM],Gc),P("caret trim",t);let a=t.split(" ").map(m=>Yc(m,this.options)).join(" ").split(/\s+/).map(m=>il(m,this.options));o&&(a=a.filter(m=>(P("loose invalid filter",m,this.options),!!m.match($[x.COMPARATORLOOSE])))),P("range list",a);let l=new Map,u=a.map(m=>new Jt(m,this.options));for(let m of u){if(Es(m))return[m];l.set(m.value,m)}l.size>1&&l.has("")&&l.delete("");let f=[...l.values()];return ws.set(n,f),f}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Range is required");return this.set.some(n=>Ss(n,r)&&t.set.some(s=>Ss(s,r)&&n.every(o=>s.every(i=>o.intersects(i,r)))))}test(t){if(!t)return!1;if(typeof t=="string")try{t=new Wc(t,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(cl(this.set[r],t,this.options))return!0;return!1}};Rs.exports=Vt;var Fc=ys(),ws=new Fc,Bc=We(),Jt=Ae(),P=Se(),Wc=O(),{safeRe:$,src:Kc,t:x,comparatorTrimReplace:qc,tildeTrimReplace:Hc,caretTrimReplace:Gc}=ie(),{FLAG_INCLUDE_PRERELEASE:Vc,FLAG_LOOSE:Jc}=oe(),Xc=new RegExp(Kc[x.BUILD],"g"),Es=e=>e.value==="<0.0.0-0",zc=e=>e.value==="",Ss=(e,t)=>{let r=!0,n=e.slice(),s=n.pop();for(;r&&n.length;)r=n.every(o=>s.intersects(o,t)),s=n.pop();return r},Yc=(e,t)=>(e=e.replace($[x.BUILD],""),P("comp",e,t),e=tl(e,t),P("caret",e),e=Zc(e,t),P("tildes",e),e=nl(e,t),P("xrange",e),e=ol(e,t),P("stars",e),e),C=e=>!e||e.toLowerCase()==="x"||e==="*",Qc=(e,t,r)=>C(e)&&!C(t)||C(t)&&r&&!C(r),Zc=(e,t)=>e.trim().split(/\s+/).map(r=>el(r,t)).join(" "),el=(e,t)=>{let r=t.loose?$[x.TILDELOOSE]:$[x.TILDE],n=t.includePrerelease?"-0":"";return e.replace(r,(s,o,i,a,l)=>{P("tilde",e,s,o,i,a,l);let u;return C(o)?u="":C(i)?u=`>=${o}.0.0${n} <${+o+1}.0.0-0`:C(a)?u=`>=${o}.${i}.0${n} <${o}.${+i+1}.0-0`:l?(P("replaceTilde pr",l),u=`>=${o}.${i}.${a}-${l} <${o}.${+i+1}.0-0`):u=`>=${o}.${i}.${a} <${o}.${+i+1}.0-0`,P("tilde return",u),u})},tl=(e,t)=>e.trim().split(/\s+/).map(r=>rl(r,t)).join(" "),rl=(e,t)=>{P("caret",e,t);let r=t.loose?$[x.CARETLOOSE]:$[x.CARET],n=t.includePrerelease?"-0":"";return e.replace(r,(s,o,i,a,l)=>{P("caret",e,s,o,i,a,l);let u;return C(o)?u="":C(i)?u=`>=${o}.0.0${n} <${+o+1}.0.0-0`:C(a)?o==="0"?u=`>=${o}.${i}.0${n} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.0${n} <${+o+1}.0.0-0`:l?(P("replaceCaret pr",l),o==="0"?i==="0"?u=`>=${o}.${i}.${a}-${l} <${o}.${i}.${+a+1}-0`:u=`>=${o}.${i}.${a}-${l} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.${a}-${l} <${+o+1}.0.0-0`):(P("no pr"),o==="0"?i==="0"?u=`>=${o}.${i}.${a} <${o}.${i}.${+a+1}-0`:u=`>=${o}.${i}.${a} <${o}.${+i+1}.0-0`:u=`>=${o}.${i}.${a} <${+o+1}.0.0-0`),P("caret return",u),u})},nl=(e,t)=>(P("replaceXRanges",e,t),e.split(/\s+/).map(r=>sl(r,t)).join(" ")),sl=(e,t)=>{e=e.trim();let r=t.loose?$[x.XRANGELOOSE]:$[x.XRANGE];return e.replace(r,(n,s,o,i,a,l)=>{if(P("xRange",e,n,s,o,i,a,l),Qc(o,i,a))return e;let u=C(o),f=u||C(i),m=f||C(a),S=m;return s==="="&&S&&(s=""),l=t.includePrerelease?"-0":"",u?s===">"||s==="<"?n="<0.0.0-0":n="*":s&&S?(f&&(i=0),a=0,s===">"?(s=">=",f?(o=+o+1,i=0,a=0):(i=+i+1,a=0)):s==="<="&&(s="<",f?o=+o+1:i=+i+1),s==="<"&&(l="-0"),n=`${s+o}.${i}.${a}${l}`):f?n=`>=${o}.0.0${l} <${+o+1}.0.0-0`:m&&(n=`>=${o}.${i}.0${l} <${o}.${+i+1}.0-0`),P("xRange return",n),n})},ol=(e,t)=>(P("replaceStars",e,t),e.trim().replace($[x.STAR],"")),il=(e,t)=>(P("replaceGTE0",e,t),e.trim().replace($[t.includePrerelease?x.GTE0PRE:x.GTE0],"")),al=e=>(t,r,n,s,o,i,a,l,u,f,m,S)=>(C(n)?r="":C(s)?r=`>=${n}.0.0${e?"-0":""}`:C(o)?r=`>=${n}.${s}.0${e?"-0":""}`:i?r=`>=${r}`:r=`>=${r}${e?"-0":""}`,C(u)?l="":C(f)?l=`<${+u+1}.0.0-0`:C(m)?l=`<${u}.${+f+1}.0-0`:S?l=`<=${u}.${f}.${m}-${S}`:e?l=`<${u}.${f}.${+m+1}-0`:l=`<=${l}`,`${r} ${l}`.trim()),cl=(e,t,r)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!r.includePrerelease){for(let n=0;n<e.length;n++)if(P(e[n].semver),e[n].semver!==Jt.ANY&&e[n].semver.prerelease.length>0){let s=e[n].semver;if(s.major===t.major&&s.minor===t.minor&&s.patch===t.patch)return!0}return!1}return!0}});var Ae=w((uh,Cs)=>{"use strict";var be=Symbol("SemVer ANY"),Yt=class e{static get ANY(){return be}constructor(t,r){if(r=As(r),t instanceof e){if(t.loose===!!r.loose)return t;t=t.value}t=t.trim().split(/\s+/).join(" "),zt("comparator",t,r),this.options=r,this.loose=!!r.loose,this.parse(t),this.semver===be?this.value="":this.value=this.operator+this.semver.version,zt("comp",this)}parse(t){let r=this.options.loose?bs[Ps.COMPARATORLOOSE]:bs[Ps.COMPARATOR],n=t.match(r);if(!n)throw new TypeError(`Invalid comparator: ${t}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new Is(n[2],this.options.loose):this.semver=be}toString(){return this.value}test(t){if(zt("Comparator.test",t,this.options.loose),this.semver===be||t===be)return!0;if(typeof t=="string")try{t=new Is(t,this.options)}catch{return!1}return Xt(t,this.operator,this.semver,this.options)}intersects(t,r){if(!(t instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new vs(t.value,r).test(this.value):t.operator===""?t.value===""?!0:new vs(this.value,r).test(t.semver):(r=As(r),r.includePrerelease&&(this.value==="<0.0.0-0"||t.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||t.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&t.operator.startsWith(">")||this.operator.startsWith("<")&&t.operator.startsWith("<")||this.semver.version===t.semver.version&&this.operator.includes("=")&&t.operator.includes("=")||Xt(this.semver,"<",t.semver,r)&&this.operator.startsWith(">")&&t.operator.startsWith("<")||Xt(this.semver,">",t.semver,r)&&this.operator.startsWith("<")&&t.operator.startsWith(">")))}};Cs.exports=Yt;var As=We(),{safeRe:bs,t:Ps}=ie(),Xt=Ht(),zt=Se(),Is=O(),vs=M()});var Pe=w((ph,Ts)=>{"use strict";var ll=M(),ul=(e,t,r)=>{try{t=new ll(t,r)}catch{return!1}return t.test(e)};Ts.exports=ul});var xs=w((dh,Os)=>{"use strict";var pl=M(),dl=(e,t)=>new pl(e,t).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));Os.exports=dl});var Ns=w((mh,$s)=>{"use strict";var ml=O(),fl=M(),hl=(e,t,r)=>{let n=null,s=null,o=null;try{o=new fl(t,r)}catch{return null}return e.forEach(i=>{o.test(i)&&(!n||s.compare(i)===-1)&&(n=i,s=new ml(n,r))}),n};$s.exports=hl});var Ls=w((fh,ks)=>{"use strict";var gl=O(),yl=M(),wl=(e,t,r)=>{let n=null,s=null,o=null;try{o=new yl(t,r)}catch{return null}return e.forEach(i=>{o.test(i)&&(!n||s.compare(i)===1)&&(n=i,s=new gl(n,r))}),n};ks.exports=wl});var _s=w((hh,Ds)=>{"use strict";var Qt=O(),El=M(),Ms=Re(),Sl=(e,t)=>{e=new El(e,t);let r=new Qt("0.0.0");if(e.test(r)||(r=new Qt("0.0.0-0"),e.test(r)))return r;r=null;for(let n=0;n<e.set.length;++n){let s=e.set[n],o=null;s.forEach(i=>{let a=new Qt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!o||Ms(a,o))&&(o=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),o&&(!r||Ms(r,o))&&(r=o)}return r&&e.test(r)?r:null};Ds.exports=Sl});var js=w((gh,Us)=>{"use strict";var Rl=M(),Al=(e,t)=>{try{return new Rl(e,t).range||"*"}catch{return null}};Us.exports=Al});var Ze=w((yh,Ks)=>{"use strict";var bl=O(),Ws=Ae(),{ANY:Pl}=Ws,Il=M(),vl=Pe(),Fs=Re(),Bs=Je(),Cl=ze(),Tl=Xe(),Ol=(e,t,r,n)=>{e=new bl(e,n),t=new Il(t,n);let s,o,i,a,l;switch(r){case">":s=Fs,o=Cl,i=Bs,a=">",l=">=";break;case"<":s=Bs,o=Tl,i=Fs,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(vl(e,t,n))return!1;for(let u=0;u<t.set.length;++u){let f=t.set[u],m=null,S=null;if(f.forEach(h=>{h.semver===Pl&&(h=new Ws(">=0.0.0")),m=m||h,S=S||h,s(h.semver,m.semver,n)?m=h:i(h.semver,S.semver,n)&&(S=h)}),m.operator===a||m.operator===l||(!S.operator||S.operator===a)&&o(e,S.semver))return!1;if(S.operator===l&&i(e,S.semver))return!1}return!0};Ks.exports=Ol});var Hs=w((wh,qs)=>{"use strict";var xl=Ze(),$l=(e,t,r)=>xl(e,t,">",r);qs.exports=$l});var Vs=w((Eh,Gs)=>{"use strict";var Nl=Ze(),kl=(e,t,r)=>Nl(e,t,"<",r);Gs.exports=kl});var zs=w((Sh,Xs)=>{"use strict";var Js=M(),Ll=(e,t,r)=>(e=new Js(e,r),t=new Js(t,r),e.intersects(t,r));Xs.exports=Ll});var Qs=w((Rh,Ys)=>{"use strict";var Ml=Pe(),Dl=L();Ys.exports=(e,t,r)=>{let n=[],s=null,o=null,i=e.sort((f,m)=>Dl(f,m,r));for(let f of i)Ml(f,t,r)?(o=f,s||(s=f)):(o&&n.push([s,o]),o=null,s=null);s&&n.push([s,null]);let a=[];for(let[f,m]of n)f===m?a.push(f):!m&&f===i[0]?a.push("*"):m?f===i[0]?a.push(`<=${m}`):a.push(`${f} - ${m}`):a.push(`>=${f}`);let l=a.join(" || "),u=typeof t.raw=="string"?t.raw:String(t);return l.length<u.length?l:t}});var so=w((Ah,no)=>{"use strict";var Zs=M(),tr=Ae(),{ANY:Zt}=tr,er=Pe(),rr=L(),_l=(e,t,r={})=>{if(e===t)return!0;e=new Zs(e,r),t=new Zs(t,r);let n=!1;e:for(let s of e.set){for(let o of t.set){let i=jl(s,o,r);if(n=n||i!==null,i)continue e}if(n)return!1}return!0},Ul=[new tr(">=0.0.0-0")],eo=[new tr(">=0.0.0")],jl=(e,t,r)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===Zt){if(t.length===1&&t[0].semver===Zt)return!0;r.includePrerelease?e=Ul:e=eo}if(t.length===1&&t[0].semver===Zt){if(r.includePrerelease)return!0;t=eo}let n=new Set,s,o;for(let h of e)h.operator===">"||h.operator===">="?s=to(s,h,r):h.operator==="<"||h.operator==="<="?o=ro(o,h,r):n.add(h.semver);if(n.size>1)return null;let i;if(s&&o){if(i=rr(s.semver,o.semver,r),i>0)return null;if(i===0&&(s.operator!==">="||o.operator!=="<="))return null}for(let h of n){if(s&&!er(h,String(s),r)||o&&!er(h,String(o),r))return null;for(let re of t)if(!er(h,String(re),r))return!1;return!0}let a,l,u,f,m=o&&!r.includePrerelease&&o.semver.prerelease.length?o.semver:!1,S=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1;m&&m.prerelease.length===1&&o.operator==="<"&&m.prerelease[0]===0&&(m=!1);for(let h of t){if(f=f||h.operator===">"||h.operator===">=",u=u||h.operator==="<"||h.operator==="<=",s){if(S&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===S.major&&h.semver.minor===S.minor&&h.semver.patch===S.patch&&(S=!1),h.operator===">"||h.operator===">="){if(a=to(s,h,r),a===h&&a!==s)return!1}else if(s.operator===">="&&!h.test(s.semver))return!1}if(o){if(m&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===m.major&&h.semver.minor===m.minor&&h.semver.patch===m.patch&&(m=!1),h.operator==="<"||h.operator==="<="){if(l=ro(o,h,r),l===h&&l!==o)return!1}else if(o.operator==="<="&&!h.test(o.semver))return!1}if(!h.operator&&(o||s)&&i!==0)return!1}return!(s&&u&&!o&&i!==0||o&&f&&!s&&i!==0||S||m)},to=(e,t,r)=>{if(!e)return t;let n=rr(e.semver,t.semver,r);return n>0?e:n<0||t.operator===">"&&e.operator===">="?t:e},ro=(e,t,r)=>{if(!e)return t;let n=rr(e.semver,t.semver,r);return n<0?e:n>0||t.operator==="<"&&e.operator==="<="?t:e};no.exports=_l});var sr=w((bh,ao)=>{"use strict";var nr=ie(),oo=oe(),Fl=O(),io=Ft(),Bl=X(),Wl=xn(),Kl=Nn(),ql=Mn(),Hl=Un(),Gl=Fn(),Vl=Wn(),Jl=qn(),Xl=Gn(),zl=L(),Yl=zn(),Ql=Qn(),Zl=Ve(),eu=rs(),tu=ss(),ru=Re(),nu=Je(),su=Kt(),ou=qt(),iu=Xe(),au=ze(),cu=Ht(),lu=ms(),uu=hs(),pu=Ae(),du=M(),mu=Pe(),fu=xs(),hu=Ns(),gu=Ls(),yu=_s(),wu=js(),Eu=Ze(),Su=Hs(),Ru=Vs(),Au=zs(),bu=Qs(),Pu=so();ao.exports={parse:Bl,valid:Wl,clean:Kl,inc:ql,diff:Hl,major:Gl,minor:Vl,patch:Jl,prerelease:Xl,compare:zl,rcompare:Yl,compareLoose:Ql,compareBuild:Zl,sort:eu,rsort:tu,gt:ru,lt:nu,eq:su,neq:ou,gte:iu,lte:au,cmp:cu,coerce:lu,truncate:uu,Comparator:pu,Range:du,satisfies:mu,toComparators:fu,maxSatisfying:hu,minSatisfying:gu,minVersion:yu,validRange:wu,outside:Eu,gtr:Su,ltr:Ru,intersects:Au,simplifyRange:bu,subset:Pu,SemVer:Fl,re:nr.re,src:nr.src,tokens:nr.t,SEMVER_SPEC_VERSION:oo.SEMVER_SPEC_VERSION,RELEASE_TYPES:oo.RELEASE_TYPES,compareIdentifiers:io.compareIdentifiers,rcompareIdentifiers:io.rcompareIdentifiers}});import{MEDPLUM_VERSION as Rd,normalizeErrorString as Er}from"@medplum/core";import{CommanderError as Yo,Option as Ad}from"commander";import bd from"dotenv";import{ContentType as on,EMPTY as Vi,isOk as Ji,isUUID as Xi,normalizeErrorString as zi}from"@medplum/core";import{Option as je}from"commander";import{MedplumClient as pi}from"@medplum/core";import{ClientStorage as ii}from"@medplum/core";import{existsSync as Rr,mkdirSync as ai,readFileSync as ci,writeFileSync as li}from"node:fs";import{homedir as ui}from"node:os";import{resolve as Ar}from"node:path";var _=class extends ii{constructor(r){super();b(this,"dirName");b(this,"fileName");this.dirName=Ar(ui(),".medplum"),this.fileName=Ar(this.dirName,r+".json")}clear(){this.writeFile({})}getString(r){return this.readFile()?.[r]}setString(r,n){let s=this.readFile()??{};n?s[r]=n:delete s[r],this.writeFile(s)}getObject(r){let n=this.getString(r);return n?JSON.parse(n):void 0}setObject(r,n){this.setString(r,n?JSON.stringify(n):void 0)}readFile(){if(Rr(this.fileName))return JSON.parse(ci(this.fileName,"utf8"))}writeFile(r){Rr(this.dirName)||ai(this.dirName),li(this.fileName,JSON.stringify(r,null,2),"utf8")}};async function A(e,t=!0){let r=e.profile??"default",n=new _(r),s=n.getObject("options");if(r!=="default"&&!s)throw new Error(`Profile "${r}" does not exist`);let{baseUrl:o,fhirUrlPath:i,accessToken:a,tokenUrl:l,authorizeUrl:u,clientId:f,clientSecret:m}=di(e,n),S=e.fetch??fetch;e.baseUrl&&e.baseUrl!=="https://api.medplum.com/"&&await mi(e.baseUrl,S);let h=new pi({fetch:S,baseUrl:o,tokenUrl:l,fhirUrlPath:i,authorizeUrl:u,storage:n,onUnauthenticated:fi,verbose:e.verbose});return t&&(a?h.setAccessToken(a):f&&m&&(h.setBasicAuth(f,m),s?.authType!=="basic"&&await h.startClientLogin(f,m))),h}function di(e,t){let r=t.getObject("options"),n=e.baseUrl??r?.baseUrl??process.env.MEDPLUM_BASE_URL??"https://api.medplum.com/",s=e.fhirUrlPath??r?.fhirUrlPath??process.env.MEDPLUM_FHIR_URL_PATH,o=e.accessToken??r?.accessToken??process.env.MEDPLUM_CLIENT_ACCESS_TOKEN,i=e.tokenUrl??r?.tokenUrl??process.env.MEDPLUM_TOKEN_URL,a=e.authorizeUrl??r?.authorizeUrl??process.env.MEDPLUM_AUTHORIZE_URL,l=e.clientId??r?.clientId??process.env.MEDPLUM_CLIENT_ID,u=e.clientSecret??r?.clientSecret??process.env.MEDPLUM_CLIENT_SECRET;return{baseUrl:n,fhirUrlPath:s,accessToken:o,tokenUrl:i,authorizeUrl:a,clientId:l,clientSecret:u}}async function mi(e,t){try{let r=new URL("healthcheck",e).toString(),n=await t(r);if(!n.ok)throw new Error(`Healthcheck returned status ${n.status}`);if((await n.json()).ok===!0)return;throw new Error('Healthcheck response does not have "ok": true')}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`Failed to validate base URL "${e}": ${n}`)}}function fi(){console.log("Unauthenticated: run `npx medplum login` to sign in")}import{ContentType as Tt,encodeBase64 as Hr,OAuthSigningAlgorithm as Gr}from"@medplum/core";import{Command as Mi}from"commander";import{Buffer as hi}from"node:buffer";var Q=new TextEncoder,yt=new TextDecoder,_d=2**32;function br(...e){let t=e.reduce((s,{length:o})=>s+o,0),r=new Uint8Array(t),n=0;for(let s of e)r.set(s,n),n+=s.length;return r}var xe=e=>hi.from(e).toString("base64url");var Z=class extends Error{constructor(r,n){super(r,n);b(this,"code","ERR_JOSE_GENERIC");this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}};b(Z,"code","ERR_JOSE_GENERIC");var k=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JOSE_NOT_SUPPORTED")}};b(k,"code","ERR_JOSE_NOT_SUPPORTED");var K=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JWS_INVALID")}};b(K,"code","ERR_JWS_INVALID");var fe=class extends Z{constructor(){super(...arguments);b(this,"code","ERR_JWT_INVALID")}};b(fe,"code","ERR_JWT_INVALID");var Pr,Ir,wt=class extends(Ir=Z,Pr=Symbol.asyncIterator,Ir){constructor(r="multiple matching keys found in the JSON Web Key Set",n){super(r,n);b(this,Pr);b(this,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS")}};b(wt,"code","ERR_JWKS_MULTIPLE_MATCHING_KEYS");import*as vr from"node:util";var $e=e=>vr.types.isKeyObject(e);import*as Cr from"node:crypto";import*as Tr from"node:util";var yi=Cr.webcrypto,Or=yi,ne=e=>Tr.types.isCryptoKey(e);function U(e,t="algorithm.name"){return new TypeError(`CryptoKey does not support this operation, its ${t} must be ${e}`)}function he(e,t){return e.name===t}function Et(e){return parseInt(e.name.slice(4),10)}function wi(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function Ei(e,t){if(t.length&&!t.some(r=>e.usages.includes(r))){let r="CryptoKey does not support this operation, its usages must include ";if(t.length>2){let n=t.pop();r+=`one of ${t.join(", ")}, or ${n}.`}else t.length===2?r+=`one of ${t[0]} or ${t[1]}.`:r+=`${t[0]}.`;throw new TypeError(r)}}function xr(e,t,...r){switch(t){case"HS256":case"HS384":case"HS512":{if(!he(e.algorithm,"HMAC"))throw U("HMAC");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"RS256":case"RS384":case"RS512":{if(!he(e.algorithm,"RSASSA-PKCS1-v1_5"))throw U("RSASSA-PKCS1-v1_5");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"PS256":case"PS384":case"PS512":{if(!he(e.algorithm,"RSA-PSS"))throw U("RSA-PSS");let n=parseInt(t.slice(2),10);if(Et(e.algorithm.hash)!==n)throw U(`SHA-${n}`,"algorithm.hash");break}case"EdDSA":{if(e.algorithm.name!=="Ed25519"&&e.algorithm.name!=="Ed448")throw U("Ed25519 or Ed448");break}case"Ed25519":{if(!he(e.algorithm,"Ed25519"))throw U("Ed25519");break}case"ES256":case"ES384":case"ES512":{if(!he(e.algorithm,"ECDSA"))throw U("ECDSA");let n=wi(t);if(e.algorithm.namedCurve!==n)throw U(n,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}Ei(e,r)}function $r(e,t,...r){if(r=r.filter(Boolean),r.length>2){let n=r.pop();e+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?e+=`one of type ${r[0]} or ${r[1]}.`:e+=`of type ${r[0]}.`;return t==null?e+=` Received ${t}`:typeof t=="function"&&t.name?e+=` Received function ${t.name}`:typeof t=="object"&&t!=null&&t.constructor?.name&&(e+=` Received an instance of ${t.constructor.name}`),e}var ge=(e,...t)=>$r("Key must be ",e,...t);function St(e,t,...r){return $r(`Key for the ${e} algorithm must be `,t,...r)}var Rt=e=>$e(e)||ne(e),q=["KeyObject"];(globalThis.CryptoKey||Or?.CryptoKey)&&q.push("CryptoKey");var Si=(...e)=>{let t=e.filter(Boolean);if(t.length===0||t.length===1)return!0;let r;for(let n of t){let s=Object.keys(n);if(!r||r.size===0){r=new Set(s);continue}for(let o of s){if(r.has(o))return!1;r.add(o)}}return!0},Nr=Si;function Ri(e){return typeof e=="object"&&e!==null}function ye(e){if(!Ri(e)||Object.prototype.toString.call(e)!=="[object Object]")return!1;if(Object.getPrototypeOf(e)===null)return!0;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}import{KeyObject as Ai}from"node:crypto";function G(e){return ye(e)&&typeof e.kty=="string"}function kr(e){return e.kty!=="oct"&&typeof e.d=="string"}function Lr(e){return e.kty!=="oct"&&typeof e.d>"u"}function Mr(e){return G(e)&&e.kty==="oct"&&typeof e.k=="string"}var bi=e=>{switch(e){case"prime256v1":return"P-256";case"secp384r1":return"P-384";case"secp521r1":return"P-521";case"secp256k1":return"secp256k1";default:throw new k("Unsupported key curve for this operation")}},Pi=(e,t)=>{let r;if(ne(e))r=Ai.from(e);else if($e(e))r=e;else{if(G(e))return e.crv;throw new TypeError(ge(e,...q))}if(r.type==="secret")throw new TypeError('only "private" or "public" type keys can be used for this operation');switch(r.asymmetricKeyType){case"ed25519":case"ed448":return`Ed${r.asymmetricKeyType.slice(2)}`;case"x25519":case"x448":return`X${r.asymmetricKeyType.slice(1)}`;case"ec":{let n=r.asymmetricKeyDetails.namedCurve;return t?n:bi(n)}default:throw new TypeError("Invalid asymmetric key type for this operation")}},_r=Pi;import{KeyObject as Ii}from"node:crypto";var At=(e,t)=>{let r;try{e instanceof Ii?r=e.asymmetricKeyDetails?.modulusLength:r=Buffer.from(e.n,"base64url").byteLength<<3}catch{}if(typeof r!="number"||r<2048)throw new TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)};var se=e=>e?.[Symbol.toStringTag],bt=(e,t,r)=>{if(t.use!==void 0&&t.use!=="sig")throw new TypeError("Invalid key for this operation, when present its use must be sig");if(t.key_ops!==void 0&&t.key_ops.includes?.(r)!==!0)throw new TypeError(`Invalid key for this operation, when present its key_ops must include ${r}`);if(t.alg!==void 0&&t.alg!==e)throw new TypeError(`Invalid key for this operation, when present its alg must be ${e}`);return!0},vi=(e,t,r,n)=>{if(!(t instanceof Uint8Array)){if(n&&G(t)){if(Mr(t)&&bt(e,t,r))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!Rt(t))throw new TypeError(St(e,t,...q,"Uint8Array",n?"JSON Web Key":null));if(t.type!=="secret")throw new TypeError(`${se(t)} instances for symmetric algorithms must be of type "secret"`)}},Ci=(e,t,r,n)=>{if(n&&G(t))switch(r){case"sign":if(kr(t)&&bt(e,t,r))return;throw new TypeError("JSON Web Key for this operation be a private JWK");case"verify":if(Lr(t)&&bt(e,t,r))return;throw new TypeError("JSON Web Key for this operation be a public JWK")}if(!Rt(t))throw new TypeError(St(e,t,...q,n?"JSON Web Key":null));if(t.type==="secret")throw new TypeError(`${se(t)} instances for asymmetric algorithms must not be of type "secret"`);if(r==="sign"&&t.type==="public")throw new TypeError(`${se(t)} instances for asymmetric algorithm signing must be of type "private"`);if(r==="decrypt"&&t.type==="public")throw new TypeError(`${se(t)} instances for asymmetric algorithm decryption must be of type "private"`);if(t.algorithm&&r==="verify"&&t.type==="private")throw new TypeError(`${se(t)} instances for asymmetric algorithm verifying must be of type "public"`);if(t.algorithm&&r==="encrypt"&&t.type==="private")throw new TypeError(`${se(t)} instances for asymmetric algorithm encryption must be of type "public"`)};function Ur(e,t,r,n){t.startsWith("HS")||t==="dir"||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?vi(t,r,n,e):Ci(t,r,n,e)}var um=Ur.bind(void 0,!1),jr=Ur.bind(void 0,!0);function Ti(e,t,r,n,s){if(s.crit!==void 0&&n?.crit===void 0)throw new e('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return new Set;if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(i=>typeof i!="string"||i.length===0))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let o;r!==void 0?o=new Map([...Object.entries(r),...t.entries()]):o=t;for(let i of n.crit){if(!o.has(i))throw new k(`Extension Header Parameter "${i}" is not recognized`);if(s[i]===void 0)throw new e(`Extension Header Parameter "${i}" is missing`);if(o.get(i)&&n[i]===void 0)throw new e(`Extension Header Parameter "${i}" MUST be integrity protected`)}return new Set(n.crit)}var Fr=Ti;function Pt(e){switch(e){case"PS256":case"RS256":case"ES256":case"ES256K":return"sha256";case"PS384":case"RS384":case"ES384":return"sha384";case"PS512":case"RS512":case"ES512":return"sha512";case"Ed25519":case"EdDSA":return;default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}import{constants as Br,KeyObject as Oi}from"node:crypto";var xi=new Map([["ES256","P-256"],["ES256K","secp256k1"],["ES384","P-384"],["ES512","P-521"]]);function It(e,t){let r,n,s;if(t instanceof Oi)r=t.asymmetricKeyType,n=t.asymmetricKeyDetails;else switch(s=!0,t.kty){case"RSA":r="rsa";break;case"EC":r="ec";break;case"OKP":{if(t.crv==="Ed25519"){r="ed25519";break}if(t.crv==="Ed448"){r="ed448";break}throw new TypeError("Invalid key for this operation, its crv must be Ed25519 or Ed448")}default:throw new TypeError("Invalid key for this operation, its kty must be RSA, OKP, or EC")}let o;switch(e){case"Ed25519":if(r!=="ed25519")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ed25519");break;case"EdDSA":if(!["ed25519","ed448"].includes(r))throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ed25519 or ed448");break;case"RS256":case"RS384":case"RS512":if(r!=="rsa")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa");At(t,e);break;case"PS256":case"PS384":case"PS512":if(r==="rsa-pss"){let{hashAlgorithm:i,mgf1HashAlgorithm:a,saltLength:l}=n,u=parseInt(e.slice(-3),10);if(i!==void 0&&(i!==`sha${u}`||a!==i))throw new TypeError(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${e}`);if(l!==void 0&&l>u>>3)throw new TypeError(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${e}`)}else if(r!=="rsa")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be rsa or rsa-pss");At(t,e),o={padding:Br.RSA_PKCS1_PSS_PADDING,saltLength:Br.RSA_PSS_SALTLEN_DIGEST};break;case"ES256":case"ES256K":case"ES384":case"ES512":{if(r!=="ec")throw new TypeError("Invalid key for this operation, its asymmetricKeyType must be ec");let i=_r(t),a=xi.get(e);if(i!==a)throw new TypeError(`Invalid key curve for the algorithm, its curve must be ${a}, got ${i}`);o={dsaEncoding:"ieee-p1363"};break}default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}return s?{format:"jwk",key:t,...o}:o?{...o,key:t}:t}import*as Ne from"node:crypto";import{promisify as $i}from"node:util";function vt(e){switch(e){case"HS256":return"sha256";case"HS384":return"sha384";case"HS512":return"sha512";default:throw new k(`alg ${e} is not supported either by JOSE or your javascript runtime`)}}import{KeyObject as Wr,createSecretKey as Kr}from"node:crypto";function Ct(e,t,r){if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(ge(t,...q));return Kr(t)}if(t instanceof Wr)return t;if(ne(t))return xr(t,e,r),Wr.from(t);if(G(t))return e.startsWith("HS")?Kr(Buffer.from(t.k,"base64url")):t;throw new TypeError(ge(t,...q,"Uint8Array","JSON Web Key"))}var Ni=$i(Ne.sign),ki=async(e,t,r)=>{let n=Ct(e,t,"sign");if(e.startsWith("HS")){let s=Ne.createHmac(vt(e),n);return s.update(r),s.digest()}return Ni(Pt(e),r,It(e,n))},qr=ki;var V=e=>Math.floor(e.getTime()/1e3);var Li=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i,ke=e=>{let t=Li.exec(e);if(!t||t[4]&&t[1])throw new TypeError("Invalid time period format");let r=parseFloat(t[2]),n=t[3].toLowerCase(),s;switch(n){case"sec":case"secs":case"second":case"seconds":case"s":s=Math.round(r);break;case"minute":case"minutes":case"min":case"mins":case"m":s=Math.round(r*60);break;case"hour":case"hours":case"hr":case"hrs":case"h":s=Math.round(r*3600);break;case"day":case"days":case"d":s=Math.round(r*86400);break;case"week":case"weeks":case"w":s=Math.round(r*604800);break;default:s=Math.round(r*31557600);break}return t[1]==="-"||t[4]==="ago"?-s:s};var Le=class{constructor(t){b(this,"_payload");b(this,"_protectedHeader");b(this,"_unprotectedHeader");if(!(t instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this._payload=t}setProtectedHeader(t){if(this._protectedHeader)throw new TypeError("setProtectedHeader can only be called once");return this._protectedHeader=t,this}setUnprotectedHeader(t){if(this._unprotectedHeader)throw new TypeError("setUnprotectedHeader can only be called once");return this._unprotectedHeader=t,this}async sign(t,r){if(!this._protectedHeader&&!this._unprotectedHeader)throw new K("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!Nr(this._protectedHeader,this._unprotectedHeader))throw new K("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...this._protectedHeader,...this._unprotectedHeader},s=Fr(K,new Map([["b64",!0]]),r?.crit,this._protectedHeader,n),o=!0;if(s.has("b64")&&(o=this._protectedHeader.b64,typeof o!="boolean"))throw new K('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:i}=n;if(typeof i!="string"||!i)throw new K('JWS "alg" (Algorithm) Header Parameter missing or invalid');jr(i,t,"sign");let a=this._payload;o&&(a=Q.encode(xe(a)));let l;this._protectedHeader?l=Q.encode(xe(JSON.stringify(this._protectedHeader))):l=Q.encode("");let u=br(l,Q.encode("."),a),f=await qr(i,t,u),m={signature:xe(f),payload:""};return o&&(m.payload=yt.decode(a)),this._unprotectedHeader&&(m.header=this._unprotectedHeader),this._protectedHeader&&(m.protected=yt.decode(l)),m}};var Me=class{constructor(t){b(this,"_flattened");this._flattened=new Le(t)}setProtectedHeader(t){return this._flattened.setProtectedHeader(t),this}async sign(t,r){let n=await this._flattened.sign(t,r);if(n.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return`${n.protected}.${n.payload}.${n.signature}`}};function ee(e,t){if(!Number.isFinite(t))throw new TypeError(`Invalid ${e} input`);return t}var De=class{constructor(t={}){b(this,"_payload");if(!ye(t))throw new TypeError("JWT Claims Set MUST be an object");this._payload=t}setIssuer(t){return this._payload={...this._payload,iss:t},this}setSubject(t){return this._payload={...this._payload,sub:t},this}setAudience(t){return this._payload={...this._payload,aud:t},this}setJti(t){return this._payload={...this._payload,jti:t},this}setNotBefore(t){return typeof t=="number"?this._payload={...this._payload,nbf:ee("setNotBefore",t)}:t instanceof Date?this._payload={...this._payload,nbf:ee("setNotBefore",V(t))}:this._payload={...this._payload,nbf:V(new Date)+ke(t)},this}setExpirationTime(t){return typeof t=="number"?this._payload={...this._payload,exp:ee("setExpirationTime",t)}:t instanceof Date?this._payload={...this._payload,exp:ee("setExpirationTime",V(t))}:this._payload={...this._payload,exp:V(new Date)+ke(t)},this}setIssuedAt(t){return typeof t>"u"?this._payload={...this._payload,iat:V(new Date)}:t instanceof Date?this._payload={...this._payload,iat:ee("setIssuedAt",V(t))}:typeof t=="string"?this._payload={...this._payload,iat:ee("setIssuedAt",V(new Date)+ke(t))}:this._payload={...this._payload,iat:ee("setIssuedAt",t)},this}};var we=class extends De{constructor(){super(...arguments);b(this,"_protectedHeader")}setProtectedHeader(r){return this._protectedHeader=r,this}async sign(r,n){let s=new Me(Q.encode(JSON.stringify(this._payload)));if(s.setProtectedHeader(this._protectedHeader),Array.isArray(this._protectedHeader?.crit)&&this._protectedHeader.crit.includes("b64")&&this._protectedHeader.b64===!1)throw new fe("JWTs MUST NOT use unencoded payload");return s.sign(r,n)}};import{createHmac as Di,createPrivateKey as _i,randomBytes as Ui}from"node:crypto";import{existsSync as ji,readFileSync as Vr,writeFileSync as Jr}from"node:fs";import{basename as Xr,extname as Fi,resolve as Ot}from"node:path";import{isPromise as Bi}from"node:util/types";import{extract as Wi}from"tar";function H(e){console.log(JSON.stringify(e,null,2))}async function xt(e,t,r){let n=t.source,s=_e(n);if(!s)return;console.log("Saving source code...");let o=await e.createAttachment({data:s,filename:Xr(n),contentType:Hi(n)});console.log("Updating bot...");let i=await e.updateResource({...r,sourceCode:o});console.log("Success! New bot version: "+i.meta?.versionId)}async function $t(e,t,r){let n=t.dist??t.source,s=_e(n);if(!s)return;console.log("Deploying bot...");let o=await e.post(e.fhirUrl("Bot",r.id,"$deploy"),{code:s,filename:Xr(n)});console.log("Deploy result: "+o.issue?.[0]?.details?.text)}async function Nt(e,t,r,n,s,o,i){let a={name:t,description:"",runtimeVersion:o},l=await e.post("admin/projects/"+r+"/bot",a),u=await e.readResource("Bot",l.id),f={name:t,id:l.id,source:n,dist:s};await xt(e,f,u),await $t(e,f,u),console.log(`Success! Bot created: ${u.id}`),i&&Ki(f)}function zr(e){let t=new RegExp("^"+qi(e).replaceAll(String.raw`\*`,".*")+"$"),r=j()?.bots?.filter(n=>t.test(n.name));return r||[]}function D(e,t){if(t?.file)return t.file;let r=["medplum"];return e&&r.push(e),r.push("config"),t?.server&&r.push("server"),r.push("json"),r.join(".")}function v(e,t){Jr(Ot(e),JSON.stringify(t,void 0,2),"utf-8")}function j(e,t){let r=D(e,t),n=_e(r);if(n)return JSON.parse(n)}function Yr(e){let t=_e(D(e,{server:!0}));if(t)return JSON.parse(t)}function _e(e){let t=Ot(e);return ji(t)?Vr(t,"utf8"):""}function Ki(e){let t=j()??{};t.bots||(t.bots=[]),t.bots.push(e),Jr("medplum.config.json",JSON.stringify(t,null,2),"utf8"),console.log(`Bot added to config: ${e.id}`)}function qi(e){return e.replaceAll(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")}function Qr(e){let n=0,s=0;return Wi({cwd:e,filter:(o,i)=>{if(n++,n>100)throw new Error("Tar extractor reached max number of files");if(s+=i.size,s>10485760)throw new Error("Tar extractor reached max size");return!0}})}function kt(){return{url:"http://hl7.org/fhir/StructureDefinition/data-absent-reason",valueCode:"unsupported"}}function Hi(e){let t=Fi(e).toLowerCase();return[".cjs",".mjs",".js"].includes(t)?Tt.JAVASCRIPT:[".cts",".mts",".ts"].includes(t)?Tt.TYPESCRIPT:Tt.TEXT}function Ue(e,t){let r=new _(e),n={name:e,...t};return r.setObject("options",n),n}function Zr(e){return new _(e).getObject("options")}async function en(e,t){let r={typ:"JWT",alg:Gr.HS256},n=Math.floor(Date.now()/1e3),s={aud:`${t.baseUrl}${t.audience}`,iss:t.issuer,sub:t.subject,nbf:n,iat:n,exp:n+604800},o=Hr(JSON.stringify(r)),i=Hr(JSON.stringify(s)),a=`${o}.${i}`,l=Di("sha256",t.clientSecret).update(a).digest("base64url"),u=`${a}.${l}`;await e.startJwtBearerLogin(t.clientId,u,t.scope??"")}async function tn(e,t){let r=_i(Vr(Ot(t.privateKeyPath))),n=await new we({}).setProtectedHeader({typ:"JWT",alg:Gr.RS384}).setIssuer(t.clientId).setSubject(t.clientId).setAudience(`${t.baseUrl}${t.audience}`).setJti(Ui(16).toString("hex")).setIssuedAt().setExpirationTime("5m").sign(r);await e.startJwtAssertionLogin(n)}function y(e,t){t.configureHelp({showGlobalOptions:!0}),e.addCommand(t)}var g=class extends Mi{action(t){let r=Gi(this,t);return super._actionHandler=r,this}resetOptionDefaults(){this._optionValues={};for(let t of this.options)t.defaultValue!==void 0&&(this._optionValues[t.attributeName()]=t.defaultValue)}};function Gi(e,t){return async r=>{let n=e.registeredArguments.length,s=r.slice(0,n);s[n]=e.optsWithGlobals();try{let o=t(...s);Bi(o)&&await o}finally{e.resetOptionDefaults()}}}var an=new g("status").aliases(["info","list","ls"]),cn=new g("ping"),ln=new g("push"),un=new g("reload-config"),pn=new g("upgrade"),dn=new g("stats"),J=new g("agent");y(J,an);y(J,cn);y(J,ln);y(J,un);y(J,pn);y(J,dn);an.description("Get the status of a specified agent").argument("[agentIds...]","The ID(s) of the agent(s) to get the status of").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to get the status of. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$bulk-status",agentIds:e,options:t,parseSuccessfulResponse:r=>{let n=fn(r.result,{required:["status","version"],optional:["lastUpdated"]});return{id:r.agent.id,name:r.agent.name,enabledStatus:r.agent.status,version:n.version,connectionStatus:n.status,statusLastUpdated:n.lastUpdated??"N/A"}}})});cn.description("Ping a host from a specified agent").argument("<ipOrDomain>","The IPv4 address or domain name to ping").argument("[agentId]","Conditionally optional ID of the agent to ping from. Mutually exclusive with --criteria <criteria> option").option("--count <count>","An optional amount of pings to issue before returning results","1").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r)=>{let n=await A(r),s=await mn(n,t,r),o=Number.parseInt(r.count,10);if(Number.isNaN(o))throw new Error("--count <count> must be an integer if specified");try{let i=await n.pushToAgent(s,e,`PING ${o}`,on.PING,!0,{maxRetries:0});console.info(i)}catch(i){throw new Error("Unexpected response from agent while pinging",{cause:i})}});ln.description("Push a message to a target device via a specified agent").argument("<deviceId>","The ID of the device to push the message to").argument("<message>","The message to send to the destination device").argument("[agentId]","Conditionally optional ID of the agent to send the message from. Mutually exclusive with --criteria <criteria> option").option("--content-type <contentType>","The content type of the message",on.HL7_V2).option("--no-wait","Tells the server not to wait for a response from the destination device").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent to ping from. Mutually exclusive with [agentId] arg").action(async(e,t,r,n)=>{let s=await A(n),o=await mn(s,r,n),i;try{i=await s.pushToAgent(o,{reference:`Device/${e}`},t,n.contentType,n.wait!==!1,{maxRetries:0})}catch(a){throw new Error("Unexpected response from agent while pushing message to agent",{cause:a})}console.info(i)});un.description("Reload the config for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) for which the config should be reloaded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) for which to notify to reload their config. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$reload-config",agentIds:e,options:t,parseSuccessfulResponse:r=>({id:r.agent.id,name:r.agent.name})})});pn.description("Upgrade the version for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) that should be upgraded. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to upgrade. Mutually exclusive with [agentIds...] arg").option("--agentVersion <version>","An optional agent version to upgrade to. Defaults to the latest version if flag not included").option("--force","Forces an upgrade when a pending upgrade is in an inconsistent state. Use with caution.").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{let r={};t.agentVersion&&(r.version=t.agentVersion),t.force&&(r.force=!0),await Fe({operation:"$upgrade",agentIds:e,options:t,params:r,parseSuccessfulResponse:n=>({id:n.agent.id,name:n.agent.name,version:t.agentVersion??"latest"})})});dn.description("Get runtime statistics for the specified agent(s)").argument("[agentIds...]","The ID(s) of the agent(s) to get stats for. Mutually exclusive with --criteria <criteria> flag").option("--criteria <criteria>","An optional FHIR search criteria to resolve the agent(s) to get stats for. Mutually exclusive with [agentIds...] arg").addOption(new je("--output <format>","An optional output format, defaults to table").choices(["table","json"]).default("table")).action(async(e,t)=>{await Fe({operation:"$stats",agentIds:e,options:t,parseSuccessfulResponse:r=>{let{stats:n}=fn(r.result,{required:["stats"]}),s;try{s=JSON.parse(n)}catch(o){console.error(`Failed to parse stats for agent ${r.agent.id}: ${zi(o)}`)}return{id:r.agent.id,name:r.agent.name,stats:s}},renderSuccessfulRows:r=>{for(let n=0;n<r.length;n++)n>0&&console.info(),Yi(r[n])}})});var rn=["live","ping","hl7ConnectionsOpen","hl7ClientCount","hl7QueueDepth","webSocketQueueDepth","outstandingHeartbeats"];function nn(e){return e==null?"":typeof e=="object"?JSON.stringify(e):e.toString()}function sn(e){return e?Object.entries(e).filter(([,t])=>t?.rtt).map(([t,r])=>({name:t,count:r.rtt.count,pending:r.rtt.pendingCount,"min (ms)":r.rtt.min,"avg (ms)":r.rtt.average,"max (ms)":r.rtt.max,"p50 (ms)":r.rtt.p50,"p95 (ms)":r.rtt.p95,"p99 (ms)":r.rtt.p99})):[]}function Yi(e){let t=e.name?`${e.name} (${e.id})`:e.id;if(console.info(`Agent: ${t}`),!e.stats){console.info(" (stats unavailable)");return}let r={};for(let i of rn)r[i]=nn(e.stats[i]);let n=new Set([...rn,"channelStats","clientStats"]);for(let[i,a]of Object.entries(e.stats))n.has(i)||(r[i]=nn(a));console.table(r);let s=sn(e.stats.channelStats);s.length&&(console.info("Channel Stats:"),console.table(s));let o=sn(e.stats.clientStats);o.length&&(console.info("Client Stats:"),console.table(o))}async function Fe({operation:e,agentIds:t,options:r,params:n={},parseSuccessfulResponse:s,renderSuccessfulRows:o}){let i=ta(t,r),a=await A(r),l=i.type==="criteria"?i.criteria:`Agent?_id=${i.ids.join(",")}`,u=new URLSearchParams(l.split("?")[1]);for(let[T,W]of Object.entries(n))u.append(T,W.toString());let f;try{let T=a.fhirUrl("Agent",e);T.search=u.toString(),f=await a.get(T,{cache:"reload"})}catch(T){throw new Error(`Operation '${e}' failed`,{cause:T})}if(r.output==="json"){console.info(JSON.stringify(f,null,2));return}let m=[],S=[];switch(f.resourceType){case"Bundle":{let T=Qi(f);for(let W of T)W.result.resourceType==="Parameters"||Ji(W.result)?m.push(W):S.push(W);break}case"Parameters":case"OperationOutcome":{let T=await a.searchOne("Agent",u,{cache:"reload"});if(!T)throw new Error("Agent not found");f.resourceType==="Parameters"?m.push({agent:T,result:f}):S.push({agent:T,result:f});break}default:throw new Error(`Invalid result received for '${e}' operation: ${JSON.stringify(f)}`)}let h=[];for(let T of m){let W=s(T);h.push(W)}let re=[];for(let T of S){let ht=T.result.issue?.[0],Qo={id:T.agent.id,name:T.agent.name,severity:ht.severity,code:ht.code,details:ht.details?.text??"No details to show"};re.push(Qo)}console.info(`
|
|
3
3
|
${h.length} successful response(s):
|
|
4
4
|
`),o?h.length?o(h):console.info("No successful responses received"):console.table(h.length?h:"No successful responses received"),console.info(),re.length&&(console.info(`${re.length} failed response(s):`),console.info(),console.table(re))}async function mn(e,t,r){if(!(t||r.criteria))throw new Error("This command requires either an [agentId] or a --criteria <criteria> flag");if(t&&r.criteria)throw new Error("Ambiguous arguments and options combination; [agentId] arg and --criteria <criteria> flag are mutually exclusive");let n;if(t)n=t;else{hn(r.criteria);let s=await e.search("Agent",`${r.criteria.split("?")[1]}&_count=2`);if(!s?.entry?.length)throw new Error("Could not find an agent matching the provided criteria");if(s.entry.length!==1)throw new Error("Found more than one agent matching this criteria. This operation requires the criteria to resolve to exactly one agent");n=s.entry[0].resource?.id}return{reference:`Agent/${n}`}}function Qi(e){let t=[];for(let r of e.entry??Vi){if(!r.resource)throw new Error("No Parameter resource found in entry");t.push(Zi(r.resource))}return t}function Zi(e){let t=e.parameter?.find(n=>n.name==="agent")?.resource;if(!t)throw new Error("Agent bulk operation response missing 'agent'");if(t.resourceType!=="Agent")throw new Error(`Agent bulk operation returned 'agent' with type '${t.resourceType}'`);let r=e.parameter?.find(n=>n.name==="result")?.resource;if(!r)throw new Error("Agent bulk operation response missing result'");if(!(r.resourceType==="Parameters"||r.resourceType==="OperationOutcome"))throw new Error(`Agent bulk operation returned 'result' with type '${r.resourceType}'`);return{agent:t,result:r}}function fn(e,t){let r={},n=t.required,s=t.optional;for(let o of n){let i=e.parameter?.find(l=>l.name===o);if(!i)throw new Error(`Failed to find parameter '${o}'`);let a;for(let l in i)if(l.startsWith("value")){if(a)throw new Error(`Found multiple values for parameter '${o}'`);a=l}if(!a)throw new Error(`Failed to find a value for parameter '${o}'`);r[o]=i[a]}if(s?.length)for(let o of s){let i=e.parameter?.find(l=>l.name===o);if(!i)continue;let a=ea(o,i);r[o]=a}return r}function ea(e,t){let r;for(let n in t)if(n.startsWith("value")){if(r)throw new Error(`Found multiple values for parameter '${e}'`);r=n}if(!r)throw new Error(`Failed to find a value for parameter '${e}'`);return t[r]}function ta(e,t){if(!Array.isArray(e))throw new Error("Invalid agent IDs array");if(e.length){if(t.criteria)throw new Error("Ambiguous arguments and options combination; [agentIds...] arg and --criteria <criteria> flag are mutually exclusive");for(let r of e)if(!Xi(r))throw new Error(`Input '${r}' is not a valid agentId`);return{type:"ids",ids:e}}if(t.criteria)return hn(t.criteria),{type:"criteria",criteria:t.criteria};throw new Error("Either an [agentId...] arg or a --criteria <criteria> flag is required")}function hn(e){let t="Criteria must be formatted as a string containing the resource type (Agent) followed by a '?' and valid URL search query params, eg. `Agent?name=Test Agent`";if(typeof e!="string")throw new Error(t);let[r,n]=e.split("?");if(r!=="Agent"||!n)throw new Error(t);try{new URLSearchParams(n)}catch(s){throw new Error(t,{cause:s})}if(!n.includes("="))throw new Error(t,{cause:new Error("Query string lacks at least one `=`")})}import{ContentType as Be,getDisplayString as ra,MEDPLUM_CLI_CLIENT_ID as na,normalizeErrorString as sa}from"@medplum/core";import{exec as oa}from"node:child_process";import{createServer as ia}from"node:http";import{platform as aa}from"node:os";var gn=na,yn="http://localhost:9615",Lt=new g("login"),Mt=new g("whoami"),Dt=new g("token");Lt.action(async e=>{let t=e.profile??"default",r=Ue(t,e),n=await A(e,!1);await ca(n,r)});Mt.action(async e=>{let t=await A(e);pa(t)});Dt.action(async e=>{let t=await A(e);await t.getProfileAsync();let r=t.getAccessToken();if(!r)throw new Error("Not logged in");console.log(r)});async function ca(e,t){switch(t?.authType??"authorization-code"){case"authorization-code":await da(e);break;case"basic":e.setBasicAuth(t.clientId,t.clientSecret);break;case"client-credentials":e.setBasicAuth(t.clientId,t.clientSecret),await e.startClientLogin(t.clientId,t.clientSecret);break;case"jwt-bearer":await en(e,t);break;case"jwt-assertion":await tn(e,t);break}}async function la(e){let t=ia(async(r,n)=>{let s=new URL(r.url,"http://localhost:9615"),o=s.searchParams.get("code");if(r.method==="OPTIONS"){n.writeHead(200,{Allow:"GET, POST","Content-Type":Be.TEXT}),n.end("OK");return}if(s.pathname==="/"&&o)try{let i=await e.processCode(o,{clientId:gn,redirectUri:yn});n.writeHead(200,{"Content-Type":Be.TEXT}),n.end(`Signed in as ${ra(i)}. You may close this window.`)}catch(i){n.writeHead(400,{"Content-Type":Be.TEXT}),n.end(`Error: ${sa(i)}`)}finally{t.close(),process.exit(0)}else n.writeHead(404,{"Content-Type":Be.TEXT}),n.end("Not found")}).listen(9615)}async function ua(e){let t=aa(),r;switch(t){case"openbsd":case"linux":r=`xdg-open '${e}'`;break;case"darwin":r=`open '${e}'`;break;case"win32":r=`cmd /c start "" "${e}"`;break;default:throw new Error("Unsupported platform: "+t)}return new Promise((n,s)=>{oa(r,(o,i,a)=>{if(o){s(o);return}if(a){s(new Error("Could not open browser: "+a));return}n()})})}function pa(e){let t=e.getActiveLogin();t?(console.log(`Server: ${e.getBaseUrl()}`),console.log(`Profile: ${t.profile.display} (${t.profile.reference})`),console.log(`Project: ${t.project.display} (${t.project.reference})`)):console.log("Not logged in")}async function da(e){await la(e);let t=new URL(e.getAuthorizeUrl());t.searchParams.set("client_id",gn),t.searchParams.set("redirect_uri",yn),t.searchParams.set("scope","openid"),t.searchParams.set("response_type","code"),t.searchParams.set("prompt","login"),await ua(t.toString())}var Ee="\x1B[0m",ma="\x1B[1m",fa="\x1B[31m",ha="\x1B[32m",ga="\x1B[33m",ya="\x1B[34m",te={red:e=>`${fa}${e}${Ee}`,green:e=>`${ha}${e}${Ee}`,yellow:e=>`${ga}${e}${Ee}`,blue:e=>`${ya}${e}${Ee}`,bold:e=>`${ma}${e}${Ee}`},_t=e=>e.replaceAll(/\*\*(.*?)\*\*/g,(t,r)=>te.bold(r));var uo=Sr(sr(),1);import{CloudFormationClient as lo,DescribeStackResourcesCommand as vu,DescribeStacksCommand as Cu,paginateListStacks as Tu}from"@aws-sdk/client-cloudformation";import{CloudFrontClient as Ou,CreateInvalidationCommand as xu}from"@aws-sdk/client-cloudfront";import{ECSClient as $u}from"@aws-sdk/client-ecs";import{S3Client as Nu}from"@aws-sdk/client-s3";import{GetParameterCommand as ku,PutParameterCommand as Lu,SSMClient as Mu}from"@aws-sdk/client-ssm";import{GetCallerIdentityCommand as Du,STSClient as _u}from"@aws-sdk/client-sts";import{EMPTY as Uu,normalizeErrorString as ju}from"@medplum/core";import{readdirSync as Fu}from"node:fs";import Iu from"node:readline";var et;function tt(){et=Iu.createInterface({input:process.stdin,output:process.stdout})}function rt(){et.close()}function c(e){et.write(e+`
|
|
5
5
|
`)}function I(e){c(`
|