domani-cli 0.4.49 → 0.4.50
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/domani.cjs +2 -2
- package/package.json +1 -1
package/dist/domani.cjs
CHANGED
|
@@ -25,7 +25,7 @@ Expecting one of '${s.join("', '")}'`);return this._lifeCycleHooks[t]?this._life
|
|
|
25
25
|
`),this._exit(0,"commander.version",t)}),this}description(t,i){return t===void 0&&i===void 0?this._description:(this._description=t,i&&(this._argsDescription=i),this)}summary(t){return t===void 0?this._summary:(this._summary=t,this)}alias(t){if(t===void 0)return this._aliases[0];let i=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(i=this.commands[this.commands.length-1]),t===i._name)throw new Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(t);if(s){let n=[s.name()].concat(s.aliases()).join("|");throw new Error(`cannot add alias '${t}' to command '${this.name()}' as already have command '${n}'`)}return i._aliases.push(t),this}aliases(t){return t===void 0?this._aliases:(t.forEach(i=>this.alias(i)),this)}usage(t){if(t===void 0){if(this._usage)return this._usage;let i=this.registeredArguments.map(s=>ga(s));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?i:[]).join(" ")}return this._usage=t,this}name(t){return t===void 0?this._name:(this._name=t,this)}nameFromFilename(t){return this._name=ct.basename(t,ct.extname(t)),this}executableDir(t){return t===void 0?this._executableDir:(this._executableDir=t,this)}helpInformation(t){let i=this.createHelp(),s=this._getOutputContext(t);i.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let n=i.formatHelp(this,i);return s.hasColors?n:this._outputConfiguration.stripColor(n)}_getOutputContext(t){t=t||{};let i=!!t.error,s,n,r;return i?(s=a=>this._outputConfiguration.writeErr(a),n=this._outputConfiguration.getErrHasColors(),r=this._outputConfiguration.getErrHelpWidth()):(s=a=>this._outputConfiguration.writeOut(a),n=this._outputConfiguration.getOutHasColors(),r=this._outputConfiguration.getOutHelpWidth()),{error:i,write:a=>(n||(a=this._outputConfiguration.stripColor(a)),s(a)),hasColors:n,helpWidth:r}}outputHelp(t){let i;typeof t=="function"&&(i=t,t=void 0);let s=this._getOutputContext(t),n={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let r=this.helpInformation({error:s.error});if(i&&(r=i(r),typeof r!="string"&&!Buffer.isBuffer(r)))throw new Error("outputHelp callback must return a string or a Buffer");s.write(r),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",n))}helpOption(t,i){return typeof t=="boolean"?(t?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(t=t??"-h, --help",i=i??"display help for command",this._helpOption=this.createOption(t,i),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(t){return this._helpOption=t,this}help(t){this.outputHelp(t);let i=Number(ne.exitCode??0);i===0&&t&&typeof t!="function"&&t.error&&(i=1),this._exit(i,"commander.help","(outputHelp)")}addHelpText(t,i){let s=["beforeAll","before","after","afterAll"];if(!s.includes(t))throw new Error(`Unexpected value for position to addHelpText.
|
|
26
26
|
Expecting one of '${s.join("', '")}'`);let n=`${t}Help`;return this.on(n,r=>{let o;typeof i=="function"?o=i({error:r.error,command:r.command}):o=i,o&&r.write(`${o}
|
|
27
27
|
`)}),this}_outputHelpIfRequested(t){let i=this._getHelpOption();i&&t.find(n=>i.is(n))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function En(e){return e.map(t=>{if(!t.startsWith("--inspect"))return t;let i,s="127.0.0.1",n="9229",r;return(r=t.match(/^(--inspect(-brk)?)$/))!==null?i=r[1]:(r=t.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(i=r[1],/^\d+$/.test(r[3])?n=r[3]:s=r[3]):(r=t.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(i=r[1],s=r[3],n=r[4]),i&&n!=="0"?`${i}=${s}:${parseInt(n)+1}`:t})}function bs(){if(ne.env.NO_COLOR||ne.env.FORCE_COLOR==="0"||ne.env.FORCE_COLOR==="false")return!1;if(ne.env.FORCE_COLOR||ne.env.CLICOLOR_FORCE!==void 0)return!0}ys.Command=gs;ys.useColor=bs});var Un=dt(Ge=>{var{Argument:Dn}=gi(),{Command:$s}=Pn(),{CommanderError:va,InvalidArgumentError:Tn}=Zt(),{Help:wa}=ds(),{Option:Nn}=fs();Ge.program=new $s;Ge.createCommand=e=>new $s(e);Ge.createOption=(e,t)=>new Nn(e,t);Ge.createArgument=(e,t)=>new Dn(e,t);Ge.Command=$s;Ge.Option=Nn;Ge.Argument=Dn;Ge.Help=wa;Ge.CommanderError=va;Ge.InvalidArgumentError=Tn;Ge.InvalidOptionArgumentError=Tn});var L=dt((Rc,vs)=>{var $i=process||{},Mn=$i.argv||[],yi=$i.env||{},ka=!(yi.NO_COLOR||Mn.includes("--no-color"))&&(!!yi.FORCE_COLOR||Mn.includes("--color")||$i.platform==="win32"||($i.stdout||{}).isTTY&&yi.TERM!=="dumb"||!!yi.CI),_a=(e,t,i=e)=>s=>{let n=""+s,r=n.indexOf(t,e.length);return~r?e+ja(n,t,i,r)+t:e+n+t},ja=(e,t,i,s)=>{let n="",r=0;do n+=e.substring(r,s)+i,r=s+t.length,s=e.indexOf(t,r);while(~s);return n+e.substring(r)},Ln=(e=ka)=>{let t=e?_a:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};vs.exports=Ln();vs.exports.createColors=Ln});var Lt,Qt,ei=Ie(()=>{"use strict";Lt="domani.run",Qt=`https://${Lt}`});function jt(e,t,i){try{let s=(0,Vn.spawnSync)(e,t,{encoding:"utf-8",input:i,timeout:3e3,stdio:["pipe","pipe","ignore"]});return{ok:s.status===0,stdout:(s.stdout||"").trim()}}catch{return{ok:!1,stdout:""}}}function Wn(){return process.platform==="darwin"?!0:process.platform==="linux"?jt("secret-tool",["--help"]).ok:!1}function Hn(e={}){if(e.refresh&&(Vt=void 0),Vt!==void 0)return Vt??void 0;let t;if(process.platform==="darwin"){let i=jt("security",["find-generic-password","-s",Wt,"-a",Ht,"-w"]);i.ok&&i.stdout&&(t=i.stdout)}else if(process.platform==="linux"){let i=jt("secret-tool",["lookup","service",Wt,"account",Ht]);i.ok&&i.stdout&&(t=i.stdout)}return Vt=t??null,t}function Jn(e){let t=!1;return process.platform==="darwin"?t=jt("security",["add-generic-password","-U","-s",Wt,"-a",Ht,"-w",e]).ok:process.platform==="linux"&&(t=jt("secret-tool",["store","--label=domani CLI token","service",Wt,"account",Ht],e+`
|
|
28
|
-
`).ok),t&&(Vt=e),t}function Bn(){process.platform==="darwin"?jt("security",["delete-generic-password","-s",Wt,"-a",Ht]):process.platform==="linux"&&jt("secret-tool",["clear","service",Wt,"account",Ht]),Vt=null}var Vn,Wt,Ht,Vt,Gn=Ie(()=>{"use strict";Vn=require("child_process"),Wt="domani-cli",Ht="default"});function Yn(e){zn=e}function ut(){try{let e=$t.default.readFileSync(ws,"utf-8");return JSON.parse(e)}catch{return{}}}function Jt(e){e.token&&Wn()&&Jn(e.token)&&(e={...e,token:void 0,token_in_keychain:!0}),$t.default.mkdirSync(ki,{recursive:!0,mode:448}),$t.default.writeFileSync(ws,JSON.stringify(e,null,2),{mode:384})}function Zn(){Bn();try{$t.default.unlinkSync(ws)}catch{}}function qe(){return zn||ut().api_url||Qt}function Me(e={}){if(process.env.DOMANI_API_KEY)return process.env.DOMANI_API_KEY;let t=ut();if(t.token)return t.token;if(t.token_in_keychain)return Hn({refresh:e.refreshKeychain})}function Sa(){try{let e=$t.default.readFileSync(Xn,"utf-8");return JSON.parse(e)}catch{return null}}function Ca(e){try{$t.default.mkdirSync(ki,{recursive:!0,mode:448}),$t.default.writeFileSync(Xn,JSON.stringify(e),{mode:384})}catch{}}function vi(e,t){let i=e.split(".").map(Number),s=t.split(".").map(Number);for(let n=0;n<3;n++){if((i[n]||0)>(s[n]||0))return 1;if((i[n]||0)<(s[n]||0))return-1}return 0}async function Qn(){let e=Sa();if(e&&Date.now()-e.checkedAt<xa)return vi(e.version,_e)>0?{update:e.version,forced:vi(_e,e.min)<0}:null;try{let t=qe(),i=await fetch(`${t}/api/cli/version`,{signal:AbortSignal.timeout(3e3)});if(!i.ok)return null;let s=await i.json();if(Ca({version:s.version,min:s.min,checkedAt:Date.now()}),vi(s.version,_e)>0)return{update:s.version,forced:vi(_e,s.min)<0}}catch{}return null}var $t,wi,Kn,ki,ws,zn,Xn,xa,ks,_e,mt=Ie(()=>{"use strict";$t=U(require("fs"),1),wi=U(require("path"),1),Kn=U(require("os"),1);ei();Gn();ki=process.env.DOMANI_CONFIG_DIR||wi.default.join(Kn.default.homedir(),".domani"),ws=wi.default.join(ki,"config.json");Xn=wi.default.join(ki,"version-check.json"),xa=1440*60*1e3;ks=process.stdout.isTTY??!1,_e="0.4.
|
|
28
|
+
`).ok),t&&(Vt=e),t}function Bn(){process.platform==="darwin"?jt("security",["delete-generic-password","-s",Wt,"-a",Ht]):process.platform==="linux"&&jt("secret-tool",["clear","service",Wt,"account",Ht]),Vt=null}var Vn,Wt,Ht,Vt,Gn=Ie(()=>{"use strict";Vn=require("child_process"),Wt="domani-cli",Ht="default"});function Yn(e){zn=e}function ut(){try{let e=$t.default.readFileSync(ws,"utf-8");return JSON.parse(e)}catch{return{}}}function Jt(e){e.token&&Wn()&&Jn(e.token)&&(e={...e,token:void 0,token_in_keychain:!0}),$t.default.mkdirSync(ki,{recursive:!0,mode:448}),$t.default.writeFileSync(ws,JSON.stringify(e,null,2),{mode:384})}function Zn(){Bn();try{$t.default.unlinkSync(ws)}catch{}}function qe(){return zn||ut().api_url||Qt}function Me(e={}){if(process.env.DOMANI_API_KEY)return process.env.DOMANI_API_KEY;let t=ut();if(t.token)return t.token;if(t.token_in_keychain)return Hn({refresh:e.refreshKeychain})}function Sa(){try{let e=$t.default.readFileSync(Xn,"utf-8");return JSON.parse(e)}catch{return null}}function Ca(e){try{$t.default.mkdirSync(ki,{recursive:!0,mode:448}),$t.default.writeFileSync(Xn,JSON.stringify(e),{mode:384})}catch{}}function vi(e,t){let i=e.split(".").map(Number),s=t.split(".").map(Number);for(let n=0;n<3;n++){if((i[n]||0)>(s[n]||0))return 1;if((i[n]||0)<(s[n]||0))return-1}return 0}async function Qn(){let e=Sa();if(e&&Date.now()-e.checkedAt<xa)return vi(e.version,_e)>0?{update:e.version,forced:vi(_e,e.min)<0}:null;try{let t=qe(),i=await fetch(`${t}/api/cli/version`,{signal:AbortSignal.timeout(3e3)});if(!i.ok)return null;let s=await i.json();if(Ca({version:s.version,min:s.min,checkedAt:Date.now()}),vi(s.version,_e)>0)return{update:s.version,forced:vi(_e,s.min)<0}}catch{}return null}var $t,wi,Kn,ki,ws,zn,Xn,xa,ks,_e,mt=Ie(()=>{"use strict";$t=U(require("fs"),1),wi=U(require("path"),1),Kn=U(require("os"),1);ei();Gn();ki=process.env.DOMANI_CONFIG_DIR||wi.default.join(Kn.default.homedir(),".domani"),ws=wi.default.join(ki,"config.json");Xn=wi.default.join(ki,"version-check.json"),xa=1440*60*1e3;ks=process.stdout.isTTY??!1,_e="0.4.50"});var js=dt((Nc,er)=>{"use strict";var _s={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let i="";return e<0?i+=`\x1B[${-e}D`:e>0&&(i+=`\x1B[${e}C`),t<0?i+=`\x1B[${-t}A`:t>0&&(i+=`\x1B[${t}B`),i},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Oa={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},Ia={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let i=0;i<e;i++)t+=this.line+(i<e-1?_s.up():"");return e&&(t+=_s.left),t}};er.exports={cursor:_s,scroll:Oa,erase:Ia,beep:"\x07"}});function ft(e,t,i){if(!i.some(o=>!o.disabled))return e;let s=e+t,n=Math.max(i.length-1,0),r=s<0?n:s>n?0:s;return i[r].disabled?ft(r,t<0?-1:1,i):r}function Is(e,t,i){return String(e).normalize().replaceAll(`\r
|
|
29
29
|
`,`
|
|
30
30
|
`).split(`
|
|
31
31
|
`).map(s=>La(s,t,i)).join(`
|
|
@@ -289,7 +289,7 @@ Examples:
|
|
|
289
289
|
domani email archive hi@myapp.dev --message-ids m1,m2
|
|
290
290
|
domani email send --from hi@myapp.dev --to bob@x.com --subject "Hello" --text "Hi Bob"
|
|
291
291
|
domani email webhook hi@myapp.dev --url https://example.com/hook --authorization-env CURSOR_AUTH
|
|
292
|
-
domani email webhook-test hi@myapp.dev #
|
|
292
|
+
domani email webhook-test hi@myapp.dev # one signed test; live inbound retries up to 3x
|
|
293
293
|
domani email setup myapp.dev # setup email for domain
|
|
294
294
|
domani email status myapp.dev # check email DNS health
|
|
295
295
|
domani email delete --domain myapp.dev --slug hi # delete mailbox`).option("--domain <domain>","Domain name").option("--slug <slug>","Mailbox slug (local part before @)").option("--from <email>","Sender address user@domain (alternative to --domain + --slug)").option("--to <email>","Recipient email address (for send)").option("--cc <emails>","CC recipients, comma-separated (for send)").option("--bcc <emails>","BCC recipients, comma-separated (for send)").option("--subject <s>","Email subject (for send)").option("--title <s>","Email subject (alias for --subject)").option("--text <t>","Email body text (for send)").option("--body <t>","Email body text (alias for --text)").option("--in-reply-to <message-id>","Message-ID of email being replied to (for threading)").option("--references <message-ids>","Space-separated Message-ID chain (for threading)").option("--url <url>","Webhook URL (for webhook)").option("--authorization-env <name>","Read the webhook Authorization value from this environment variable").option("--api-key-env <name>","Read the webhook X-API-Key value from this environment variable").option("--clear-headers","Clear custom webhook auth headers (requires --url)").option("--forward-to <email>","Email address to forward inbound emails to (for forward)").option("--direction <dir>","Filter messages: in or out").option("--folder <folder>","System folder: inbox, archive, sent, spam, trash").option("--view <view>","Virtual view: starred or all").option("--message-ids <ids>","Comma-separated message IDs for lifecycle actions").option("--mailbox-ids <ids>","Comma-separated mailbox IDs for shared inbox work").option("--workspace <id>","Create the mailbox inside this workspace (owner-only)").option("--thread-key <key>","Stable email thread key").option("--thread-aliases <keys>","Comma-separated legacy thread keys returned by the inbox").option("--status <status>","Workflow status: open, waiting, or closed").option("--assigned <filter>","Assignment filter: mine, unassigned, or all").option("--assignee-type <type>","Assignee type: member, token, or agent").option("--assignee-id <id>","Assignee ID").option("--conversation-id <id>","Conversation state ID").option("--note <text>","Private note text").option("--if-version <number>","Conversation version for compare-and-set updates").option("--idempotency-key <key>","Stable retry key for mailbox lifecycle actions").option("--client-id <id>","Stable opaque ID for this app installation or agent process").option("--lease-id <id>","Compose lease returned by a presence heartbeat").option("--mode <mode>","Presence mode: viewing or composing").option("--no-acquire-lease","Advertise composing presence without acquiring the primary lease").option("--limit <n>","Limit results").option("--cursor <cursor>","Opaque pagination or synchronization cursor").option("--check","Verify email DNS health (MX, SPF, DKIM, DMARC)").option("--dry-run","Show what would happen without executing").option("--json","Output as JSON").option("--fields <fields>","Filter JSON output fields (comma-separated)").action(li);H.command("workspace [action]").description("Manage shared workspaces, members, and mailbox access").option("--id <id>","Workspace ID").option("--name <name>","Workspace name").option("--email <email>","Collaborator email").option("--role <role>","Workspace role: admin or member").option("--mailboxes <ids>","Comma-separated mailbox IDs").option("--mailbox-role <role>","Mailbox role: viewer, responder, or manager").option("--token <token>","Invitation token").option("--membership-id <id>","Target workspace membership ID").option("--invitation-id <id>","Pending workspace invitation ID").option("--transfer-id <id>","Pending ownership transfer ID").option("--mailbox-id <id>","Mailbox ID to adopt into the workspace").option("--subject <type:id>","Access subject: human:id, agent:id, token:id, service:id, or group:id").option("--resource <type:id>","Access resource: mailbox:id or collection:id").option("--profile <profile>","Access profile: viewer, responder, manager, draft_only, or mail_client").option("--principals <principals>","Comma-separated group principals as type:id").option("--group-id <id>","Existing access group ID to replace").option("--collection-id <id>","Existing mailbox collection ID to replace").option("--grant-id <id>","Canonical access grant ID").option("--apply","Apply an access plan; the default is dry-run").option("--expected-version <n>","Expected grant version for conflict-safe reconciliation").option("--ownership-disposition <mode>","Offer ownership: unchanged or claim").option("--creator-disposition <mode>","After ownership claim: stay, stay_admin, or leave").option("--billing-disposition <mode>","Billing after offer: unchanged, sponsor, or transfer").option("--plan <plan>","Mailzero plan: mail_solo, mail_team, or mail_business").option("--no-open","Do not open checkout in a browser").option("--json","Output as JSON").option("--fields <fields>","Filter JSON output fields (comma-separated)").addHelpText("after",`
|
package/package.json
CHANGED