oh-my-agent 10.21.2 → 10.21.3
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/bin/cli.js +1 -1
- package/package.json +1 -1
package/bin/cli.js
CHANGED
|
@@ -24,7 +24,7 @@ Expecting one of '${G.join("', '")}'`);if(this._lifeCycleHooks[$])this._lifeCycl
|
|
|
24
24
|
`),this.outputHelp({error:!0});let G=z||{},J=G.exitCode||1,Q=G.code||"commander.error";this._exit(J,Q,$)}_parseOptionsEnv(){this.options.forEach(($)=>{if($.envVar&&$.envVar in h4.env){let z=$.attributeName();if(this.getOptionValue(z)===void 0||["default","config","env"].includes(this.getOptionValueSource(z)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,h4.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new ZA5(this.options),z=(G)=>{return this.getOptionValue(G)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(G))};this.options.filter((G)=>G.implied!==void 0&&z(G.attributeName())&&$.valueFromOption(this.getOptionValue(G.attributeName()),G)).forEach((G)=>{Object.keys(G.implied).filter((J)=>!z(J)).forEach((J)=>{this.setOptionValueWithSource(J,G.implied[J],"implied")})})}missingArgument($){let z=`error: missing required argument '${$}'`;this.error(z,{code:"commander.missingArgument"})}optionMissingArgument($){let z=`error: option '${$.flags}' argument missing`;this.error(z,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue($){let z=`error: required option '${$.flags}' not specified`;this.error(z,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption($,z){let G=(K)=>{let Z=K.attributeName(),U=this.getOptionValue(Z),Y=this.options.find((V)=>V.negate&&Z===V.attributeName()),W=this.options.find((V)=>!V.negate&&Z===V.attributeName());if(Y&&(Y.presetArg===void 0&&U===!1||Y.presetArg!==void 0&&U===Y.presetArg))return Y;return W||K},J=(K)=>{let Z=G(K),U=Z.attributeName();if(this.getOptionValueSource(U)==="env")return`environment variable '${Z.envVar}'`;return`option '${Z.flags}'`},Q=`error: ${J($)} cannot be used with ${J(z)}`;this.error(Q,{code:"commander.conflictingOption"})}unknownOption($){if(this._allowUnknownOption)return;let z="";if($.startsWith("--")&&this._showSuggestionAfterError){let J=[],Q=this;do{let K=Q.createHelp().visibleOptions(Q).filter((Z)=>Z.long).map((Z)=>Z.long);J=J.concat(K),Q=Q.parent}while(Q&&!Q._enablePositionalOptions);z=$Y2($,J)}let G=`error: unknown option '${$}'${z}`;this.error(G,{code:"commander.unknownOption"})}_excessArguments($){if(this._allowExcessArguments)return;let z=this.registeredArguments.length,G=z===1?"":"s",Q=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${z} argument${G} but got ${$.length}.`;this.error(Q,{code:"commander.excessArguments"})}unknownCommand(){let $=this.args[0],z="";if(this._showSuggestionAfterError){let J=[];this.createHelp().visibleCommands(this).forEach((Q)=>{if(J.push(Q.name()),Q.alias())J.push(Q.alias())}),z=$Y2($,J)}let G=`error: unknown command '${$}'${z}`;this.error(G,{code:"commander.unknownCommand"})}version($,z,G){if($===void 0)return this._version;this._version=$,z=z||"-V, --version",G=G||"output the version number";let J=this.createOption(z,G);return this._versionOptionName=J.attributeName(),this._registerOption(J),this.on("option:"+J.name(),()=>{this._outputConfiguration.writeOut(`${$}
|
|
25
25
|
`),this._exit(0,"commander.version",$)}),this}description($,z){if($===void 0&&z===void 0)return this._description;if(this._description=$,z)this._argsDescription=z;return this}summary($){if($===void 0)return this._summary;return this._summary=$,this}alias($){if($===void 0)return this._aliases[0];let z=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)z=this.commands[this.commands.length-1];if($===z._name)throw Error("Command alias can't be the same as its name");let G=this.parent?._findCommand($);if(G){let J=[G.name()].concat(G.aliases()).join("|");throw Error(`cannot add alias '${$}' to command '${this.name()}' as already have command '${J}'`)}return z._aliases.push($),this}aliases($){if($===void 0)return this._aliases;return $.forEach((z)=>this.alias(z)),this}usage($){if($===void 0){if(this._usage)return this._usage;let z=this.registeredArguments.map((G)=>{return JA5(G)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?z:[]).join(" ")}return this._usage=$,this}name($){if($===void 0)return this._name;return this._name=$,this}helpGroup($){if($===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=$,this}commandsGroup($){if($===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=$,this}optionsGroup($){if($===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=$,this}_initOptionGroup($){if(this._defaultOptionGroup&&!$.helpGroupHeading)$.helpGroup(this._defaultOptionGroup)}_initCommandGroup($){if(this._defaultCommandGroup&&!$.helpGroup())$.helpGroup(this._defaultCommandGroup)}nameFromFilename($){return this._name=UG.basename($,UG.extname($)),this}executableDir($){if($===void 0)return this._executableDir;return this._executableDir=$,this}helpInformation($){let z=this.createHelp(),G=this._getOutputContext($);z.prepareContext({error:G.error,helpWidth:G.helpWidth,outputHasColors:G.hasColors});let J=z.formatHelp(this,z);if(G.hasColors)return J;return this._outputConfiguration.stripColor(J)}_getOutputContext($){$=$||{};let z=!!$.error,G,J,Q;if(z)G=(Z)=>this._outputConfiguration.writeErr(Z),J=this._outputConfiguration.getErrHasColors(),Q=this._outputConfiguration.getErrHelpWidth();else G=(Z)=>this._outputConfiguration.writeOut(Z),J=this._outputConfiguration.getOutHasColors(),Q=this._outputConfiguration.getOutHelpWidth();return{error:z,write:(Z)=>{if(!J)Z=this._outputConfiguration.stripColor(Z);return G(Z)},hasColors:J,helpWidth:Q}}outputHelp($){let z;if(typeof $==="function")z=$,$=void 0;let G=this._getOutputContext($),J={error:G.error,write:G.write,command:this};this._getCommandAndAncestors().reverse().forEach((K)=>K.emit("beforeAllHelp",J)),this.emit("beforeHelp",J);let Q=this.helpInformation({error:G.error});if(z){if(Q=z(Q),typeof Q!=="string"&&!Buffer.isBuffer(Q))throw Error("outputHelp callback must return a string or a Buffer")}if(G.write(Q),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",J),this._getCommandAndAncestors().forEach((K)=>K.emit("afterAllHelp",J))}helpOption($,z){if(typeof $==="boolean"){if($){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption($??"-h, --help",z??"display help for command"),$||z)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption($){return this._helpOption=$,this._initOptionGroup($),this}help($){this.outputHelp($);let z=Number(h4.exitCode??0);if(z===0&&$&&typeof $!=="function"&&$.error)z=1;this._exit(z,"commander.help","(outputHelp)")}addHelpText($,z){let G=["beforeAll","before","after","afterAll"];if(!G.includes($))throw Error(`Unexpected value for position to addHelpText.
|
|
26
26
|
Expecting one of '${G.join("', '")}'`);let J=`${$}Help`;return this.on(J,(Q)=>{let K;if(typeof z==="function")K=z({error:Q.error,command:Q.command});else K=z;if(K)Q.write(`${K}
|
|
27
|
-
`)}),this}_outputHelpIfRequested($){let z=this._getHelpOption();if(z&&$.find((J)=>z.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function zY2($){return $.map((z)=>{if(!z.startsWith("--inspect"))return z;let G,J="127.0.0.1",Q="9229",K;if((K=z.match(/^(--inspect(-brk)?)$/))!==null)G=K[1];else if((K=z.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(G=K[1],/^\d+$/.test(K[3]))Q=K[3];else J=K[3];else if((K=z.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)G=K[1],J=K[3],Q=K[4];if(G&&Q!=="0")return`${G}=${J}:${parseInt(Q)+1}`;return z})}function af(){if(h4.env.NO_COLOR||h4.env.FORCE_COLOR==="0"||h4.env.FORCE_COLOR==="false")return!1;if(h4.env.FORCE_COLOR||h4.env.CLICOLOR_FORCE!==void 0)return!0;return}UA5.Command=of;UA5.useColor=af});var ZY2=C((XA5)=>{var{Argument:JY2}=iR(),{Command:rf}=GY2(),{CommanderError:VA5,InvalidArgumentError:QY2}=LF(),{Help:BA5}=lf(),{Option:KY2}=pf();XA5.program=new rf;XA5.createCommand=($)=>new rf($);XA5.createOption=($,z)=>new KY2($,z);XA5.createArgument=($,z)=>new JY2($,z);XA5.Command=rf;XA5.Option=KY2;XA5.Argument=JY2;XA5.Help=BA5;XA5.CommanderError=VA5;XA5.InvalidArgumentError=QY2;XA5.InvalidOptionArgumentError=QY2});var UY2,oa4,ra4,sa4,ta4,ea4,$o4,zo4,pR,Go4,Jo4,Qo4;var sf=k(()=>{UY2=E2(ZY2(),1),{program:oa4,createCommand:ra4,createArgument:sa4,createOption:ta4,CommanderError:ea4,InvalidArgumentError:$o4,InvalidOptionArgumentError:zo4,Command:pR,Argument:Go4,Option:Jo4,Help:Qo4}=UY2.default});var dR;var tf=k(()=>{dR={name:"oh-my-agent",version:"10.21.2",description:"Portable multi-agent harness for .agents-based skills and workflows across Antigravity, Claude Code, Codex, OpenCode, and more",type:"module",bin:{"oh-my-agent":"./bin/cli.js",oma:"./bin/cli.js"},files:["bin"],keywords:["oh-my-agent","antigravity",".agents","agent","skills","agent-skills","multi-agent","orchestrator","claude","claude-code","codex","opencode","copilot","cursor","chatgpt","pm","frontend","backend","mobile","qa","debug","terraform","database","workflow","bug-fixing"],author:"our.first.fluke <our.first.fluke@gmail.com>",contributors:["gracefullight <gracefullight.dev@gmail.com>","gahyun-git <go4it.gh@gmail.com>"],license:"MIT",funding:[{type:"github",url:"https://github.com/sponsors/first-fluke"},{type:"buymeacoffee",url:"https://buymeacoffee.com/firstfluke"}],scripts:{"sync:readme":"node ./scripts/sync-readme.mjs","generate:skill-data":"node ./scripts/generate-skill-data.mjs",build:"bun run generate:skill-data && bun run sync:readme && bun build cli.ts --outfile bin/cli.js --target node --minify --external @napi-rs/keyring",dev:"bun run generate:skill-data && bun run cli.ts",lint:"biome check .","lint:fix":"biome check --write --unsafe .","check:boundaries":"node ./scripts/check-boundaries.mjs","check:emit-drift":"node ./scripts/check-emit-drift.mjs",test:"vitest run","test:coverage":"vitest run --coverage",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^1.1.0","@date-fns/tz":"^1.4.1","@napi-rs/keyring":"^1.3.0",axios:"^1.15.0","better-sqlite3":"^12.9.0",chokidar:"^5.0.0",commander:"^14.0.3","date-fns":"^4.2.1",eld:"^2.0.3","fast-xml-parser":"^5",minimatch:"^10.2.5","p-map":"^7.0.4",picocolors:"^1.1.1","puppeteer-core":"^24",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-parse":"^11.0.0","smol-toml":"^1.6.1",unified:"^11.0.5",ws:"^8.18.0",yaml:"^2.8.2",zod:"^4.3.6"},optionalDependencies:{pptxgenjs:"^3.12.0"},devDependencies:{"@biomejs/biome":"^2.5.4","@types/better-sqlite3":"^7.6.13","@types/mdast":"^4.0.4","@types/node":"^24","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.4",typescript:"^6",vitest:"^4.0.18"},repository:{type:"git",url:"https://github.com/first-fluke/oh-my-agent"},homepage:"https://firstfluke.com/oh-my-agent",bugs:{url:"https://github.com/first-fluke/oh-my-agent/issues"},antigravity:{skillsPath:".agents/skills",skills:["oma-architecture","oma-brainstorm","oma-coordination","oma-pm","oma-frontend","oma-backend","oma-db","oma-mobile","oma-qa","oma-debug","oma-orchestrator","oma-dev-workflow","oma-tf-infra","oma-scm","oma-pdf","oma-recap"]}}});import*as nY from"node:fs";import{homedir as DA5}from"node:os";import*as FF from"node:path";function YY2($){if(nR)throw Error("install context already set in this process");nR=$}function VY2(){if(nR===null)throw Error("install context not set — entry point must call setInstallContext()");return nR}function aY(){return VY2().installRoot}function Q6(){return VY2().mode}function oY(){try{return Q6()}catch{return"project"}}function BY2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return vA5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:DA5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function vA5($){if(!FF.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of WY2)if($===G||$.startsWith(G+FF.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=nY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of WY2)if(z===G||z.startsWith(G+FF.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{nY.accessSync(z,nY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var nR=null,WY2;var WG=k(()=>{WY2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as EA5}from"node:path";function NF($){return $.endsWith("/")?$:`${$}/`}function T7($,z){let G=z.split("/").filter((J)=>J.length>0);return EA5($,...G)}var _0=".agents",aR,b3,yJ,XY2,HY2,oR,wA5=".antigravitycli",qY2,CA5=".migration-backup",PA5,TA5,bA5,_A5,xA5,ef;var _3=k(()=>{aR=`${_0}/skills`,b3=`${_0}/results`,yJ=`${_0}/state`,XY2=`${yJ}/sessions`,HY2=`${yJ}/retry`,oR=`${yJ}/archive`,qY2=`${_0}/backup`;PA5=NF(b3),TA5=NF(yJ),bA5=NF(wA5),_A5=NF(qY2),xA5=NF(CA5),ef=[bA5,PA5,TA5,_A5,xA5]});var i1="first-fluke/oh-my-agent",f4,x0,rR,SA5,yA5,YG,z3;var y$=k(()=>{_3();f4=aR,x0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],rR=["pi","opencode"],SA5=["copilot","hermes"],yA5=["zcode"],YG=[...x0,...SA5,...yA5].sort(),z3={antigravity:{projectPath:".gemini/antigravity-cli/skills",homePath:".gemini/antigravity-cli/skills",requiresHomeConsent:!0},claude:{projectPath:".claude/skills",homePath:".claude/skills"},codex:{projectPath:".codex/skills",homePath:".codex/skills"},commandcode:{projectPath:".commandcode/skills",homePath:".commandcode/skills",optIn:!0},copilot:{projectPath:".github/skills",homePath:".copilot/skills"},cursor:{projectPath:".cursor/skills",homePath:".cursor/skills"},hermes:{projectPath:".hermes/skills/oma",homePath:".hermes/skills/oma",requiresHomeConsent:!0},kimi:{projectPath:".kimi-code/skills",homePath:".kimi-code/skills",requiresHomeConsent:!0,optIn:!0},kiro:{projectPath:".kiro/skills",homePath:".kiro/skills",optIn:!0},opencode:{projectPath:".opencode/skills",homePath:".opencode/skills"},qwen:{projectPath:".qwen/skills",homePath:".qwen/skills"}}});var MY2={};z5(MY2,{runAction:()=>C2,resolveJsonMode:()=>A5,printDescribe:()=>oA5,addOutputOptions:()=>j5});function j5($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!kF.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${kF.join(", ")}`);return J})}function uA5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&kF.includes(z))return z;if(process.env[NY2]?.trim().toLowerCase()==="json")return"json";return"text"}function A5($){return uA5($)==="json"}function kY2($){let z=$.at(-1);return z instanceof pR?z:null}function gA5($){let z=kY2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function hA5($){if($ instanceof Error)return $.message;return String($)}function uJ($){throw Error($)}function zm($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)uJ(`${z} must not contain control characters`)}}function fA5($,z){if(zm($,z),/[?#%]/.test($))uJ(`${z} must not contain ?, #, or %`);if($.includes(".."))uJ(`${z} must not contain '..'`)}function mA5($,z){zm($,z);try{new URL($)}catch{uJ(`${z} must be a valid absolute URL`)}}function $m($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){fA5($,z);return}if(G==="url"){mA5($,z);return}zm($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())$m(Q,`${z}[${J}]`,G)}function FY2($){let z=$.toLowerCase();if(z==="url"||z.endsWith("url"))return"url";if(z.includes("id")||z.includes("type")||z.includes("vendor")||z.includes("session"))return"identifier";return"text"}function cA5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!YG.includes(K)).length>0)uJ(`vendor must be one of ${YG.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!kF.includes(G))uJ(`output must be one of ${kF.join(", ")}`)}function iA5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if($m(U,Z,FY2(Z)),Z==="agent-type"&&typeof U==="string"&&!LY2.includes(U))uJ(`agent-type must be one of ${LY2.join(", ")}`)});let J=$.opts();cA5(J);for(let[Q,K]of Object.entries(J))$m(K,Q,FY2(Q))}function lA5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function pA5($){return $.options.map((z)=>({flags:z.flags,long:z.long||void 0,short:z.short||void 0,description:z.description||"",required:!!z.required||!!z.mandatory,optional:!!z.optional,defaultValue:z.defaultValue}))}function AY2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function dA5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function nA5($){return $.options.some((z)=>z.long==="--dry-run")}function jY2($){return{name:$.name(),path:AY2($),summary:$.summary()||void 0,description:$.description(),arguments:lA5($),options:pA5($),supportsJsonOutput:dA5($),supportsDryRun:nA5($),subcommands:$.commands.map((z)=>jY2(z))}}function aA5($,z){if(!z?.trim())return $;let G=z.trim(),J=[...$.commands];while(J.length>0){let Q=J.shift();if(!Q)continue;if(Q.name()===G||AY2(Q)===G)return Q;J.push(...Q.commands)}return null}function oA5($,z){let G=aA5($,z);if(!G)uJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[NY2]:"Set to json to force machine-readable output on commands that support it."},command:jY2(G)};console.log(JSON.stringify(J,null,2))}function C2($,z={}){return async(...G)=>{let J=kY2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=gA5(G);try{if(J)iA5(J);await $(...G)}catch(K){let Z=hA5(K);if(z.supportsJsonOutput&&A5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var NY2="OH_MY_AG_OUTPUT_FORMAT",kF,LY2;var m4=k(()=>{sf();y$();kF=["text","json"],LY2=["backend","frontend","mobile","qa","debug","pm"]});var OY2,IY2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},RY2=($)=>{return $===8987||$===9001||$>=12272&&$<=12287||$>=12289&&$<=12350||$>=12441&&$<=12543||$>=12549&&$<=12591||$>=12593&&$<=12686||$>=12688&&$<=12771||$>=12783&&$<=12830||$>=12832&&$<=12871||$>=12880&&$<=19903||$>=65040&&$<=65049||$>=65072&&$<=65106||$>=65108&&$<=65126||$>=65128&&$<=65131||$>=127488&&$<=127490||$>=127504&&$<=127547||$>=127552&&$<=127560||$>=131072&&$<=196605||$>=196608&&$<=262141};var DY2=k(()=>{OY2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var rA5,sA5,vY2,tA5,EY2,eA5,$j5,zj5,wY2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?wY2(Q,zj5,G).width:0),Z=0,U=G.controlWidth??0,Y=G.tabWidth??8,W=G.emojiWidth??2,V=2,B=G.regularWidth??1,H=G.wideWidth??2,X=[[eA5,B],[rA5,0],[sA5,U],[tA5,Y],[EY2,W],[vY2,H]],q=0,L=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,R=0,I=0,D=0;$:while(!0){if(R>O||L>=F&&L>q){let E=$.slice(O,R)||$.slice(q,L);N=0;for(let P of E.replaceAll($j5,"")){let _=P.codePointAt(0)||0;if(IY2(_))D=2;else if(RY2(_))D=H;else D=B;if(I+D>M)j=Math.min(j,Math.max(O,q)+N);if(I+D>J){A=!0;break $}N+=P.length,I+=D}O=R=0}if(L>=F)break $;for(let E=0,P=X.length;E<P;E++){let[_,u]=X[E];if(_.lastIndex=L,_.test($)){if(N=_===vY2?OY2($.slice(L,_.lastIndex)):_===EY2?1:_.lastIndex-L,D=N*u,I+D>M)j=Math.min(j,L+Math.floor((M-I)/u));if(I+D>J){A=!0;break $}I+=D,O=q,R=L,L=q=_.lastIndex;continue $}}L+=1}return{width:A?M:I,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},CY2;var PY2=k(()=>{DY2();rA5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,sA5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,vY2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,tA5=/\t{1,1000}/y,EY2=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,eA5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,$j5=/\p{M}+/gu,zj5={limit:1/0,ellipsis:""},CY2=wY2});var Gj5,Jj5=($,z={})=>{return CY2($,Gj5,z).width},w6;var Gm=k(()=>{PY2();Gj5={limit:1/0,ellipsis:"",ellipsisWidth:0},w6=Jj5});function u$($,z,G){return String($).normalize().split(Wj5).map((J)=>Uj5(J,z,G)).join(`
|
|
27
|
+
`)}),this}_outputHelpIfRequested($){let z=this._getHelpOption();if(z&&$.find((J)=>z.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function zY2($){return $.map((z)=>{if(!z.startsWith("--inspect"))return z;let G,J="127.0.0.1",Q="9229",K;if((K=z.match(/^(--inspect(-brk)?)$/))!==null)G=K[1];else if((K=z.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(G=K[1],/^\d+$/.test(K[3]))Q=K[3];else J=K[3];else if((K=z.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)G=K[1],J=K[3],Q=K[4];if(G&&Q!=="0")return`${G}=${J}:${parseInt(Q)+1}`;return z})}function af(){if(h4.env.NO_COLOR||h4.env.FORCE_COLOR==="0"||h4.env.FORCE_COLOR==="false")return!1;if(h4.env.FORCE_COLOR||h4.env.CLICOLOR_FORCE!==void 0)return!0;return}UA5.Command=of;UA5.useColor=af});var ZY2=C((XA5)=>{var{Argument:JY2}=iR(),{Command:rf}=GY2(),{CommanderError:VA5,InvalidArgumentError:QY2}=LF(),{Help:BA5}=lf(),{Option:KY2}=pf();XA5.program=new rf;XA5.createCommand=($)=>new rf($);XA5.createOption=($,z)=>new KY2($,z);XA5.createArgument=($,z)=>new JY2($,z);XA5.Command=rf;XA5.Option=KY2;XA5.Argument=JY2;XA5.Help=BA5;XA5.CommanderError=VA5;XA5.InvalidArgumentError=QY2;XA5.InvalidOptionArgumentError=QY2});var UY2,oa4,ra4,sa4,ta4,ea4,$o4,zo4,pR,Go4,Jo4,Qo4;var sf=k(()=>{UY2=E2(ZY2(),1),{program:oa4,createCommand:ra4,createArgument:sa4,createOption:ta4,CommanderError:ea4,InvalidArgumentError:$o4,InvalidOptionArgumentError:zo4,Command:pR,Argument:Go4,Option:Jo4,Help:Qo4}=UY2.default});var dR;var tf=k(()=>{dR={name:"oh-my-agent",version:"10.21.3",description:"Portable multi-agent harness for .agents-based skills and workflows across Antigravity, Claude Code, Codex, OpenCode, and more",type:"module",bin:{"oh-my-agent":"./bin/cli.js",oma:"./bin/cli.js"},files:["bin"],keywords:["oh-my-agent","antigravity",".agents","agent","skills","agent-skills","multi-agent","orchestrator","claude","claude-code","codex","opencode","copilot","cursor","chatgpt","pm","frontend","backend","mobile","qa","debug","terraform","database","workflow","bug-fixing"],author:"our.first.fluke <our.first.fluke@gmail.com>",contributors:["gracefullight <gracefullight.dev@gmail.com>","gahyun-git <go4it.gh@gmail.com>"],license:"MIT",funding:[{type:"github",url:"https://github.com/sponsors/first-fluke"},{type:"buymeacoffee",url:"https://buymeacoffee.com/firstfluke"}],scripts:{"sync:readme":"node ./scripts/sync-readme.mjs","generate:skill-data":"node ./scripts/generate-skill-data.mjs",build:"bun run generate:skill-data && bun run sync:readme && bun build cli.ts --outfile bin/cli.js --target node --minify --external @napi-rs/keyring",dev:"bun run generate:skill-data && bun run cli.ts",lint:"biome check .","lint:fix":"biome check --write --unsafe .","check:boundaries":"node ./scripts/check-boundaries.mjs","check:emit-drift":"node ./scripts/check-emit-drift.mjs",test:"vitest run","test:coverage":"vitest run --coverage",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^1.1.0","@date-fns/tz":"^1.4.1","@napi-rs/keyring":"^1.3.0",axios:"^1.15.0","better-sqlite3":"^12.9.0",chokidar:"^5.0.0",commander:"^14.0.3","date-fns":"^4.2.1",eld:"^2.0.3","fast-xml-parser":"^5",minimatch:"^10.2.5","p-map":"^7.0.4",picocolors:"^1.1.1","puppeteer-core":"^24",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-parse":"^11.0.0","smol-toml":"^1.6.1",unified:"^11.0.5",ws:"^8.18.0",yaml:"^2.8.2",zod:"^4.3.6"},optionalDependencies:{pptxgenjs:"^3.12.0"},devDependencies:{"@biomejs/biome":"^2.5.4","@types/better-sqlite3":"^7.6.13","@types/mdast":"^4.0.4","@types/node":"^24","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.4",typescript:"^6",vitest:"^4.0.18"},repository:{type:"git",url:"https://github.com/first-fluke/oh-my-agent"},homepage:"https://firstfluke.com/oh-my-agent",bugs:{url:"https://github.com/first-fluke/oh-my-agent/issues"},antigravity:{skillsPath:".agents/skills",skills:["oma-architecture","oma-brainstorm","oma-coordination","oma-pm","oma-frontend","oma-backend","oma-db","oma-mobile","oma-qa","oma-debug","oma-orchestrator","oma-dev-workflow","oma-tf-infra","oma-scm","oma-pdf","oma-recap"]}}});import*as nY from"node:fs";import{homedir as DA5}from"node:os";import*as FF from"node:path";function YY2($){if(nR)throw Error("install context already set in this process");nR=$}function VY2(){if(nR===null)throw Error("install context not set — entry point must call setInstallContext()");return nR}function aY(){return VY2().installRoot}function Q6(){return VY2().mode}function oY(){try{return Q6()}catch{return"project"}}function BY2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return vA5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:DA5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function vA5($){if(!FF.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of WY2)if($===G||$.startsWith(G+FF.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=nY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of WY2)if(z===G||z.startsWith(G+FF.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{nY.accessSync(z,nY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var nR=null,WY2;var WG=k(()=>{WY2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as EA5}from"node:path";function NF($){return $.endsWith("/")?$:`${$}/`}function T7($,z){let G=z.split("/").filter((J)=>J.length>0);return EA5($,...G)}var _0=".agents",aR,b3,yJ,XY2,HY2,oR,wA5=".antigravitycli",qY2,CA5=".migration-backup",PA5,TA5,bA5,_A5,xA5,ef;var _3=k(()=>{aR=`${_0}/skills`,b3=`${_0}/results`,yJ=`${_0}/state`,XY2=`${yJ}/sessions`,HY2=`${yJ}/retry`,oR=`${yJ}/archive`,qY2=`${_0}/backup`;PA5=NF(b3),TA5=NF(yJ),bA5=NF(wA5),_A5=NF(qY2),xA5=NF(CA5),ef=[bA5,PA5,TA5,_A5,xA5]});var i1="first-fluke/oh-my-agent",f4,x0,rR,SA5,yA5,YG,z3;var y$=k(()=>{_3();f4=aR,x0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],rR=["pi","opencode"],SA5=["copilot","hermes"],yA5=["zcode"],YG=[...x0,...SA5,...yA5].sort(),z3={antigravity:{projectPath:".gemini/antigravity-cli/skills",homePath:".gemini/antigravity-cli/skills",requiresHomeConsent:!0},claude:{projectPath:".claude/skills",homePath:".claude/skills"},codex:{projectPath:".codex/skills",homePath:".codex/skills"},commandcode:{projectPath:".commandcode/skills",homePath:".commandcode/skills",optIn:!0},copilot:{projectPath:".github/skills",homePath:".copilot/skills"},cursor:{projectPath:".cursor/skills",homePath:".cursor/skills"},hermes:{projectPath:".hermes/skills/oma",homePath:".hermes/skills/oma",requiresHomeConsent:!0},kimi:{projectPath:".kimi-code/skills",homePath:".kimi-code/skills",requiresHomeConsent:!0,optIn:!0},kiro:{projectPath:".kiro/skills",homePath:".kiro/skills",optIn:!0},opencode:{projectPath:".opencode/skills",homePath:".opencode/skills"},qwen:{projectPath:".qwen/skills",homePath:".qwen/skills"}}});var MY2={};z5(MY2,{runAction:()=>C2,resolveJsonMode:()=>A5,printDescribe:()=>oA5,addOutputOptions:()=>j5});function j5($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!kF.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${kF.join(", ")}`);return J})}function uA5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&kF.includes(z))return z;if(process.env[NY2]?.trim().toLowerCase()==="json")return"json";return"text"}function A5($){return uA5($)==="json"}function kY2($){let z=$.at(-1);return z instanceof pR?z:null}function gA5($){let z=kY2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function hA5($){if($ instanceof Error)return $.message;return String($)}function uJ($){throw Error($)}function zm($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)uJ(`${z} must not contain control characters`)}}function fA5($,z){if(zm($,z),/[?#%]/.test($))uJ(`${z} must not contain ?, #, or %`);if($.includes(".."))uJ(`${z} must not contain '..'`)}function mA5($,z){zm($,z);try{new URL($)}catch{uJ(`${z} must be a valid absolute URL`)}}function $m($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){fA5($,z);return}if(G==="url"){mA5($,z);return}zm($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())$m(Q,`${z}[${J}]`,G)}function FY2($){let z=$.toLowerCase();if(z==="url"||z.endsWith("url"))return"url";if(z.includes("id")||z.includes("type")||z.includes("vendor")||z.includes("session"))return"identifier";return"text"}function cA5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!YG.includes(K)).length>0)uJ(`vendor must be one of ${YG.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!kF.includes(G))uJ(`output must be one of ${kF.join(", ")}`)}function iA5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if($m(U,Z,FY2(Z)),Z==="agent-type"&&typeof U==="string"&&!LY2.includes(U))uJ(`agent-type must be one of ${LY2.join(", ")}`)});let J=$.opts();cA5(J);for(let[Q,K]of Object.entries(J))$m(K,Q,FY2(Q))}function lA5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function pA5($){return $.options.map((z)=>({flags:z.flags,long:z.long||void 0,short:z.short||void 0,description:z.description||"",required:!!z.required||!!z.mandatory,optional:!!z.optional,defaultValue:z.defaultValue}))}function AY2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function dA5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function nA5($){return $.options.some((z)=>z.long==="--dry-run")}function jY2($){return{name:$.name(),path:AY2($),summary:$.summary()||void 0,description:$.description(),arguments:lA5($),options:pA5($),supportsJsonOutput:dA5($),supportsDryRun:nA5($),subcommands:$.commands.map((z)=>jY2(z))}}function aA5($,z){if(!z?.trim())return $;let G=z.trim(),J=[...$.commands];while(J.length>0){let Q=J.shift();if(!Q)continue;if(Q.name()===G||AY2(Q)===G)return Q;J.push(...Q.commands)}return null}function oA5($,z){let G=aA5($,z);if(!G)uJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[NY2]:"Set to json to force machine-readable output on commands that support it."},command:jY2(G)};console.log(JSON.stringify(J,null,2))}function C2($,z={}){return async(...G)=>{let J=kY2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=gA5(G);try{if(J)iA5(J);await $(...G)}catch(K){let Z=hA5(K);if(z.supportsJsonOutput&&A5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var NY2="OH_MY_AG_OUTPUT_FORMAT",kF,LY2;var m4=k(()=>{sf();y$();kF=["text","json"],LY2=["backend","frontend","mobile","qa","debug","pm"]});var OY2,IY2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},RY2=($)=>{return $===8987||$===9001||$>=12272&&$<=12287||$>=12289&&$<=12350||$>=12441&&$<=12543||$>=12549&&$<=12591||$>=12593&&$<=12686||$>=12688&&$<=12771||$>=12783&&$<=12830||$>=12832&&$<=12871||$>=12880&&$<=19903||$>=65040&&$<=65049||$>=65072&&$<=65106||$>=65108&&$<=65126||$>=65128&&$<=65131||$>=127488&&$<=127490||$>=127504&&$<=127547||$>=127552&&$<=127560||$>=131072&&$<=196605||$>=196608&&$<=262141};var DY2=k(()=>{OY2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var rA5,sA5,vY2,tA5,EY2,eA5,$j5,zj5,wY2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?wY2(Q,zj5,G).width:0),Z=0,U=G.controlWidth??0,Y=G.tabWidth??8,W=G.emojiWidth??2,V=2,B=G.regularWidth??1,H=G.wideWidth??2,X=[[eA5,B],[rA5,0],[sA5,U],[tA5,Y],[EY2,W],[vY2,H]],q=0,L=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,R=0,I=0,D=0;$:while(!0){if(R>O||L>=F&&L>q){let E=$.slice(O,R)||$.slice(q,L);N=0;for(let P of E.replaceAll($j5,"")){let _=P.codePointAt(0)||0;if(IY2(_))D=2;else if(RY2(_))D=H;else D=B;if(I+D>M)j=Math.min(j,Math.max(O,q)+N);if(I+D>J){A=!0;break $}N+=P.length,I+=D}O=R=0}if(L>=F)break $;for(let E=0,P=X.length;E<P;E++){let[_,u]=X[E];if(_.lastIndex=L,_.test($)){if(N=_===vY2?OY2($.slice(L,_.lastIndex)):_===EY2?1:_.lastIndex-L,D=N*u,I+D>M)j=Math.min(j,L+Math.floor((M-I)/u));if(I+D>J){A=!0;break $}I+=D,O=q,R=L,L=q=_.lastIndex;continue $}}L+=1}return{width:A?M:I,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},CY2;var PY2=k(()=>{DY2();rA5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,sA5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,vY2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,tA5=/\t{1,1000}/y,EY2=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,eA5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,$j5=/\p{M}+/gu,zj5={limit:1/0,ellipsis:""},CY2=wY2});var Gj5,Jj5=($,z={})=>{return CY2($,Gj5,z).width},w6;var Gm=k(()=>{PY2();Gj5={limit:1/0,ellipsis:"",ellipsisWidth:0},w6=Jj5});function u$($,z,G){return String($).normalize().split(Wj5).map((J)=>Uj5(J,z,G)).join(`
|
|
28
28
|
`)}var sR="\x1B",SY2="",Qj5=39,Qm="\x07",yY2="[",Kj5="]",uY2="m",Km,TY2,bY2=($)=>{if($>=30&&$<=37)return 39;if($>=90&&$<=97)return 39;if($>=40&&$<=47)return 49;if($>=100&&$<=107)return 49;if($===1||$===2)return 22;if($===3)return 23;if($===4)return 24;if($===7)return 27;if($===8)return 28;if($===9)return 29;if($===0)return 0;return},_Y2=($)=>`${sR}${yY2}${$}${uY2}`,xY2=($)=>`${sR}${Km}${$}${Qm}`,Jm=($,z,G)=>{let J=z[Symbol.iterator](),Q=!1,K=!1,Z=$.at(-1),U=Z===void 0?0:w6(Z),Y=J.next(),W=J.next(),V=0;while(!Y.done){let B=Y.value,H=w6(B);if(U+H<=G)$[$.length-1]+=B;else $.push(B),U=0;if(B===sR||B===SY2)Q=!0,K=z.startsWith(Km,V+1);if(Q){if(K){if(B===Qm)Q=!1,K=!1}else if(B===uY2)Q=!1}else if(U+=H,U===G&&!W.done)$.push(""),U=0;Y=W,W=J.next(),V+=B.length}if(Z=$.at(-1),!U&&Z!==void 0&&Z.length&&$.length>1)$[$.length-2]+=$.pop()},Zj5=($)=>{let z=$.split(" "),G=z.length;while(G){if(w6(z[G-1]))break;G--}if(G===z.length)return $;return z.slice(0,G).join(" ")+z.slice(G).join("")},Uj5=($,z,G={})=>{if(G.trim!==!1&&$.trim()==="")return"";let J="",Q,K,Z=$.split(" "),U=[""],Y=0;for(let B=0;B<Z.length;B++){let H=Z[B];if(G.trim!==!1){let q=U.at(-1)??"",L=q.trimStart();if(q.length!==L.length)U[U.length-1]=L,Y=w6(L)}if(B!==0){if(Y>=z&&(G.wordWrap===!1||G.trim===!1))U.push(""),Y=0;if(Y||G.trim===!1)U[U.length-1]+=" ",Y++}let X=w6(H);if(G.hard&&X>z){let q=z-Y,L=1+Math.floor((X-q-1)/z);if(Math.floor((X-1)/z)<L)U.push("");Jm(U,H,z),Y=w6(U.at(-1)??"");continue}if(Y+X>z&&Y&&X){if(G.wordWrap===!1&&Y<z){Jm(U,H,z),Y=w6(U.at(-1)??"");continue}U.push(""),Y=0}if(Y+X>z&&G.wordWrap===!1){Jm(U,H,z),Y=w6(U.at(-1)??"");continue}U[U.length-1]+=H,Y+=X}if(G.trim!==!1)U=U.map((B)=>Zj5(B));let W=U.join(`
|
|
29
29
|
`),V=!1;for(let B=0;B<W.length;B++){let H=W[B];if(J+=H,!V){if(V=H>="\uD800"&&H<="\uDBFF",V)continue}else V=!1;if(H===sR||H===SY2){TY2.lastIndex=B+1;let q=TY2.exec(W)?.groups;if(q?.code!==void 0){let L=Number.parseFloat(q.code);Q=L===Qj5?void 0:L}else if(q?.uri!==void 0)K=q.uri.length===0?void 0:q.uri}if(W[B+1]===`
|
|
30
30
|
`){if(K)J+=xY2("");let X=Q?bY2(Q):void 0;if(Q&&X)J+=_Y2(X)}else if(H===`
|
package/package.json
CHANGED