oh-my-agent 10.4.1 → 10.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 u4.env){let z=$.attributeName();if(this.getOptionValue(z)===void 0||["default","config","env"].includes(this.getOptionValueSource(z)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,u4.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new QF5(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),W=this.options.find((V)=>V.negate&&Z===V.attributeName()),Y=this.options.find((V)=>!V.negate&&Z===V.attributeName());if(W&&(W.presetArg===void 0&&U===!1||W.presetArg!==void 0&&U===W.presetArg))return W;return Y||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=hU2($,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=hU2($,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 zF5(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=pz.basename($,pz.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(u4.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 fU2($){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 th(){if(u4.env.NO_COLOR||u4.env.FORCE_COLOR==="0"||u4.env.FORCE_COLOR==="false")return!1;if(u4.env.FORCE_COLOR||u4.env.CLICOLOR_FORCE!==void 0)return!0;return}KF5.Command=eh;KF5.useColor=th});var pU2=C((VF5)=>{var{Argument:cU2}=KR(),{Command:$f}=mU2(),{CommanderError:WF5,InvalidArgumentError:iU2}=gq(),{Help:YF5}=ah(),{Option:lU2}=oh();VF5.program=new $f;VF5.createCommand=($)=>new $f($);VF5.createOption=($,z)=>new lU2($,z);VF5.createArgument=($,z)=>new cU2($,z);VF5.Command=$f;VF5.Option=lU2;VF5.Argument=cU2;VF5.Help=YF5;VF5.CommanderError=WF5;VF5.InvalidArgumentError=iU2;VF5.InvalidOptionArgumentError=iU2});var dU2,Ul4,Wl4,Yl4,Vl4,Bl4,Xl4,Ll4,UR,Hl4,ql4,Fl4;var zf=k(()=>{dU2=E2(pU2(),1),{program:Ul4,createCommand:Wl4,createArgument:Yl4,createOption:Vl4,CommanderError:Bl4,InvalidArgumentError:Xl4,InvalidOptionArgumentError:Ll4,Command:UR,Argument:Hl4,Option:ql4,Help:Fl4}=dU2.default});var WR;var Gf=k(()=>{WR={name:"oh-my-agent",version:"10.4.1",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",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.4.15","@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 DY from"node:fs";import{homedir as IF5}from"node:os";import*as hq from"node:path";function aU2($){if(YR)throw Error("install context already set in this process");YR=$}function oU2(){if(YR===null)throw Error("install context not set — entry point must call setInstallContext()");return YR}function vY(){return oU2().installRoot}function $6(){return oU2().mode}function VR(){try{return $6()}catch{return"project"}}function rU2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return RF5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:IF5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function RF5($){if(!hq.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of nU2)if($===G||$.startsWith(G+hq.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=DY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of nU2)if(z===G||z.startsWith(G+hq.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{DY.accessSync(z,DY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var YR=null,nU2;var dz=k(()=>{nU2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as DF5}from"node:path";function fq($){return $.endsWith("/")?$:`${$}/`}function D7($,z){let G=z.split("/").filter((J)=>J.length>0);return DF5($,...G)}var O0=".agents",BR,v3,IJ,sU2,tU2,XR,vF5=".antigravitycli",eU2,EF5=".migration-backup",wF5,CF5,PF5,TF5,bF5,Jf;var E3=k(()=>{BR=`${O0}/skills`,v3=`${O0}/results`,IJ=`${O0}/state`,sU2=`${IJ}/sessions`,tU2=`${IJ}/retry`,XR=`${IJ}/archive`,eU2=`${O0}/backup`;wF5=fq(v3),CF5=fq(IJ),PF5=fq(vF5),TF5=fq(eU2),bF5=fq(EF5),Jf=[PF5,wF5,CF5,TF5,bF5]});var g1="first-fluke/oh-my-agent",$1,I0,LR,_F5,SF5,nz,t1;var az=k(()=>{E3();$1=BR,I0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],LR=["pi","opencode"],_F5=["copilot","hermes"],SF5=["zcode"],nz=[...I0,..._F5,...SF5].sort(),t1={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 ZW2={};z5(ZW2,{runAction:()=>T2,resolveJsonMode:()=>A5,printDescribe:()=>nF5,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(!mq.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${mq.join(", ")}`);return J})}function xF5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&mq.includes(z))return z;if(process.env[GW2]?.trim().toLowerCase()==="json")return"json";return"text"}function A5($){return xF5($)==="json"}function JW2($){let z=$.at(-1);return z instanceof UR?z:null}function yF5($){let z=JW2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function uF5($){if($ instanceof Error)return $.message;return String($)}function RJ($){throw Error($)}function Kf($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)RJ(`${z} must not contain control characters`)}}function gF5($,z){if(Kf($,z),/[?#%]/.test($))RJ(`${z} must not contain ?, #, or %`);if($.includes(".."))RJ(`${z} must not contain '..'`)}function hF5($,z){Kf($,z);try{new URL($)}catch{RJ(`${z} must be a valid absolute URL`)}}function Qf($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){gF5($,z);return}if(G==="url"){hF5($,z);return}Kf($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())Qf(Q,`${z}[${J}]`,G)}function zW2($){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 fF5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!nz.includes(K)).length>0)RJ(`vendor must be one of ${nz.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!mq.includes(G))RJ(`output must be one of ${mq.join(", ")}`)}function mF5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if(Qf(U,Z,zW2(Z)),Z==="agent-type"&&typeof U==="string"&&!$W2.includes(U))RJ(`agent-type must be one of ${$W2.join(", ")}`)});let J=$.opts();fF5(J);for(let[Q,K]of Object.entries(J))Qf(K,Q,zW2(Q))}function cF5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function iF5($){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 QW2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function lF5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function pF5($){return $.options.some((z)=>z.long==="--dry-run")}function KW2($){return{name:$.name(),path:QW2($),summary:$.summary()||void 0,description:$.description(),arguments:cF5($),options:iF5($),supportsJsonOutput:lF5($),supportsDryRun:pF5($),subcommands:$.commands.map((z)=>KW2(z))}}function dF5($,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||QW2(Q)===G)return Q;J.push(...Q.commands)}return null}function nF5($,z){let G=dF5($,z);if(!G)RJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[GW2]:"Set to json to force machine-readable output on commands that support it."},command:KW2(G)};console.log(JSON.stringify(J,null,2))}function T2($,z={}){return async(...G)=>{let J=JW2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=yF5(G);try{if(J)mF5(J);await $(...G)}catch(K){let Z=uF5(K);if(z.supportsJsonOutput&&A5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var GW2="OH_MY_AG_OUTPUT_FORMAT",mq,$W2;var o4=k(()=>{zf();az();mq=["text","json"],$W2=["backend","frontend","mobile","qa","debug","pm"]});var UW2,WW2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},YW2=($)=>{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 VW2=k(()=>{UW2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var aF5,oF5,BW2,rF5,XW2,sF5,tF5,eF5,LW2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?LW2(Q,eF5,G).width:0),Z=0,U=G.controlWidth??0,W=G.tabWidth??8,Y=G.emojiWidth??2,V=2,B=G.regularWidth??1,L=G.wideWidth??2,X=[[sF5,B],[aF5,0],[oF5,U],[rF5,W],[XW2,Y],[BW2,L]],H=0,q=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,I=0,D=0,R=0;$:while(!0){if(I>O||q>=F&&q>H){let E=$.slice(O,I)||$.slice(H,q);N=0;for(let b of E.replaceAll(tF5,"")){let _=b.codePointAt(0)||0;if(WW2(_))R=2;else if(YW2(_))R=L;else R=B;if(D+R>M)j=Math.min(j,Math.max(O,H)+N);if(D+R>J){A=!0;break $}N+=b.length,D+=R}O=I=0}if(q>=F)break $;for(let E=0,b=X.length;E<b;E++){let[_,h]=X[E];if(_.lastIndex=q,_.test($)){if(N=_===BW2?UW2($.slice(q,_.lastIndex)):_===XW2?1:_.lastIndex-q,R=N*h,D+R>M)j=Math.min(j,q+Math.floor((M-D)/h));if(D+R>J){A=!0;break $}D+=R,O=H,I=q,q=H=_.lastIndex;continue $}}q+=1}return{width:A?M:D,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},HW2;var qW2=k(()=>{VW2();aF5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,oF5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,BW2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,rF5=/\t{1,1000}/y,XW2=/[\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,sF5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,tF5=/\p{M}+/gu,eF5={limit:1/0,ellipsis:""},HW2=LW2});var $N5,zN5=($,z={})=>{return HW2($,$N5,z).width},I6;var Zf=k(()=>{qW2();$N5={limit:1/0,ellipsis:"",ellipsisWidth:0},I6=zN5});function v$($,z,G){return String($).normalize().split(ZN5).map((J)=>KN5(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 fU2($){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 th(){if(u4.env.NO_COLOR||u4.env.FORCE_COLOR==="0"||u4.env.FORCE_COLOR==="false")return!1;if(u4.env.FORCE_COLOR||u4.env.CLICOLOR_FORCE!==void 0)return!0;return}KF5.Command=eh;KF5.useColor=th});var pU2=C((VF5)=>{var{Argument:cU2}=KR(),{Command:$f}=mU2(),{CommanderError:WF5,InvalidArgumentError:iU2}=gq(),{Help:YF5}=ah(),{Option:lU2}=oh();VF5.program=new $f;VF5.createCommand=($)=>new $f($);VF5.createOption=($,z)=>new lU2($,z);VF5.createArgument=($,z)=>new cU2($,z);VF5.Command=$f;VF5.Option=lU2;VF5.Argument=cU2;VF5.Help=YF5;VF5.CommanderError=WF5;VF5.InvalidArgumentError=iU2;VF5.InvalidOptionArgumentError=iU2});var dU2,Ul4,Wl4,Yl4,Vl4,Bl4,Xl4,Ll4,UR,Hl4,ql4,Fl4;var zf=k(()=>{dU2=E2(pU2(),1),{program:Ul4,createCommand:Wl4,createArgument:Yl4,createOption:Vl4,CommanderError:Bl4,InvalidArgumentError:Xl4,InvalidOptionArgumentError:Ll4,Command:UR,Argument:Hl4,Option:ql4,Help:Fl4}=dU2.default});var WR;var Gf=k(()=>{WR={name:"oh-my-agent",version:"10.4.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",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.4.15","@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 DY from"node:fs";import{homedir as IF5}from"node:os";import*as hq from"node:path";function aU2($){if(YR)throw Error("install context already set in this process");YR=$}function oU2(){if(YR===null)throw Error("install context not set — entry point must call setInstallContext()");return YR}function vY(){return oU2().installRoot}function $6(){return oU2().mode}function VR(){try{return $6()}catch{return"project"}}function rU2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return RF5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:IF5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function RF5($){if(!hq.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of nU2)if($===G||$.startsWith(G+hq.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=DY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of nU2)if(z===G||z.startsWith(G+hq.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{DY.accessSync(z,DY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var YR=null,nU2;var dz=k(()=>{nU2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as DF5}from"node:path";function fq($){return $.endsWith("/")?$:`${$}/`}function D7($,z){let G=z.split("/").filter((J)=>J.length>0);return DF5($,...G)}var O0=".agents",BR,v3,IJ,sU2,tU2,XR,vF5=".antigravitycli",eU2,EF5=".migration-backup",wF5,CF5,PF5,TF5,bF5,Jf;var E3=k(()=>{BR=`${O0}/skills`,v3=`${O0}/results`,IJ=`${O0}/state`,sU2=`${IJ}/sessions`,tU2=`${IJ}/retry`,XR=`${IJ}/archive`,eU2=`${O0}/backup`;wF5=fq(v3),CF5=fq(IJ),PF5=fq(vF5),TF5=fq(eU2),bF5=fq(EF5),Jf=[PF5,wF5,CF5,TF5,bF5]});var g1="first-fluke/oh-my-agent",$1,I0,LR,_F5,SF5,nz,t1;var az=k(()=>{E3();$1=BR,I0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],LR=["pi","opencode"],_F5=["copilot","hermes"],SF5=["zcode"],nz=[...I0,..._F5,...SF5].sort(),t1={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 ZW2={};z5(ZW2,{runAction:()=>T2,resolveJsonMode:()=>A5,printDescribe:()=>nF5,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(!mq.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${mq.join(", ")}`);return J})}function xF5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&mq.includes(z))return z;if(process.env[GW2]?.trim().toLowerCase()==="json")return"json";return"text"}function A5($){return xF5($)==="json"}function JW2($){let z=$.at(-1);return z instanceof UR?z:null}function yF5($){let z=JW2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function uF5($){if($ instanceof Error)return $.message;return String($)}function RJ($){throw Error($)}function Kf($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)RJ(`${z} must not contain control characters`)}}function gF5($,z){if(Kf($,z),/[?#%]/.test($))RJ(`${z} must not contain ?, #, or %`);if($.includes(".."))RJ(`${z} must not contain '..'`)}function hF5($,z){Kf($,z);try{new URL($)}catch{RJ(`${z} must be a valid absolute URL`)}}function Qf($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){gF5($,z);return}if(G==="url"){hF5($,z);return}Kf($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())Qf(Q,`${z}[${J}]`,G)}function zW2($){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 fF5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!nz.includes(K)).length>0)RJ(`vendor must be one of ${nz.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!mq.includes(G))RJ(`output must be one of ${mq.join(", ")}`)}function mF5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if(Qf(U,Z,zW2(Z)),Z==="agent-type"&&typeof U==="string"&&!$W2.includes(U))RJ(`agent-type must be one of ${$W2.join(", ")}`)});let J=$.opts();fF5(J);for(let[Q,K]of Object.entries(J))Qf(K,Q,zW2(Q))}function cF5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function iF5($){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 QW2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function lF5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function pF5($){return $.options.some((z)=>z.long==="--dry-run")}function KW2($){return{name:$.name(),path:QW2($),summary:$.summary()||void 0,description:$.description(),arguments:cF5($),options:iF5($),supportsJsonOutput:lF5($),supportsDryRun:pF5($),subcommands:$.commands.map((z)=>KW2(z))}}function dF5($,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||QW2(Q)===G)return Q;J.push(...Q.commands)}return null}function nF5($,z){let G=dF5($,z);if(!G)RJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[GW2]:"Set to json to force machine-readable output on commands that support it."},command:KW2(G)};console.log(JSON.stringify(J,null,2))}function T2($,z={}){return async(...G)=>{let J=JW2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=yF5(G);try{if(J)mF5(J);await $(...G)}catch(K){let Z=uF5(K);if(z.supportsJsonOutput&&A5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var GW2="OH_MY_AG_OUTPUT_FORMAT",mq,$W2;var o4=k(()=>{zf();az();mq=["text","json"],$W2=["backend","frontend","mobile","qa","debug","pm"]});var UW2,WW2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},YW2=($)=>{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 VW2=k(()=>{UW2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var aF5,oF5,BW2,rF5,XW2,sF5,tF5,eF5,LW2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?LW2(Q,eF5,G).width:0),Z=0,U=G.controlWidth??0,W=G.tabWidth??8,Y=G.emojiWidth??2,V=2,B=G.regularWidth??1,L=G.wideWidth??2,X=[[sF5,B],[aF5,0],[oF5,U],[rF5,W],[XW2,Y],[BW2,L]],H=0,q=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,I=0,D=0,R=0;$:while(!0){if(I>O||q>=F&&q>H){let E=$.slice(O,I)||$.slice(H,q);N=0;for(let b of E.replaceAll(tF5,"")){let _=b.codePointAt(0)||0;if(WW2(_))R=2;else if(YW2(_))R=L;else R=B;if(D+R>M)j=Math.min(j,Math.max(O,H)+N);if(D+R>J){A=!0;break $}N+=b.length,D+=R}O=I=0}if(q>=F)break $;for(let E=0,b=X.length;E<b;E++){let[_,h]=X[E];if(_.lastIndex=q,_.test($)){if(N=_===BW2?UW2($.slice(q,_.lastIndex)):_===XW2?1:_.lastIndex-q,R=N*h,D+R>M)j=Math.min(j,q+Math.floor((M-D)/h));if(D+R>J){A=!0;break $}D+=R,O=H,I=q,q=H=_.lastIndex;continue $}}q+=1}return{width:A?M:D,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},HW2;var qW2=k(()=>{VW2();aF5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,oF5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,BW2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,rF5=/\t{1,1000}/y,XW2=/[\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,sF5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,tF5=/\p{M}+/gu,eF5={limit:1/0,ellipsis:""},HW2=LW2});var $N5,zN5=($,z={})=>{return HW2($,$N5,z).width},I6;var Zf=k(()=>{qW2();$N5={limit:1/0,ellipsis:"",ellipsisWidth:0},I6=zN5});function v$($,z,G){return String($).normalize().split(ZN5).map((J)=>KN5(J,z,G)).join(`
|
|
28
28
|
`)}var HR="\x1B",jW2="",GN5=39,Wf="\x07",MW2="[",JN5="]",OW2="m",Yf,FW2,NW2=($)=>{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},kW2=($)=>`${HR}${MW2}${$}${OW2}`,AW2=($)=>`${HR}${Yf}${$}${Wf}`,Uf=($,z,G)=>{let J=z[Symbol.iterator](),Q=!1,K=!1,Z=$.at(-1),U=Z===void 0?0:I6(Z),W=J.next(),Y=J.next(),V=0;while(!W.done){let B=W.value,L=I6(B);if(U+L<=G)$[$.length-1]+=B;else $.push(B),U=0;if(B===HR||B===jW2)Q=!0,K=z.startsWith(Yf,V+1);if(Q){if(K){if(B===Wf)Q=!1,K=!1}else if(B===OW2)Q=!1}else if(U+=L,U===G&&!Y.done)$.push(""),U=0;W=Y,Y=J.next(),V+=B.length}if(Z=$.at(-1),!U&&Z!==void 0&&Z.length&&$.length>1)$[$.length-2]+=$.pop()},QN5=($)=>{let z=$.split(" "),G=z.length;while(G){if(I6(z[G-1]))break;G--}if(G===z.length)return $;return z.slice(0,G).join(" ")+z.slice(G).join("")},KN5=($,z,G={})=>{if(G.trim!==!1&&$.trim()==="")return"";let J="",Q,K,Z=$.split(" "),U=[""],W=0;for(let B=0;B<Z.length;B++){let L=Z[B];if(G.trim!==!1){let H=U.at(-1)??"",q=H.trimStart();if(H.length!==q.length)U[U.length-1]=q,W=I6(q)}if(B!==0){if(W>=z&&(G.wordWrap===!1||G.trim===!1))U.push(""),W=0;if(W||G.trim===!1)U[U.length-1]+=" ",W++}let X=I6(L);if(G.hard&&X>z){let H=z-W,q=1+Math.floor((X-H-1)/z);if(Math.floor((X-1)/z)<q)U.push("");Uf(U,L,z),W=I6(U.at(-1)??"");continue}if(W+X>z&&W&&X){if(G.wordWrap===!1&&W<z){Uf(U,L,z),W=I6(U.at(-1)??"");continue}U.push(""),W=0}if(W+X>z&&G.wordWrap===!1){Uf(U,L,z),W=I6(U.at(-1)??"");continue}U[U.length-1]+=L,W+=X}if(G.trim!==!1)U=U.map((B)=>QN5(B));let Y=U.join(`
|
|
29
29
|
`),V=!1;for(let B=0;B<Y.length;B++){let L=Y[B];if(J+=L,!V){if(V=L>="\uD800"&&L<="\uDBFF",V)continue}else V=!1;if(L===HR||L===jW2){FW2.lastIndex=B+1;let H=FW2.exec(Y)?.groups;if(H?.code!==void 0){let q=Number.parseFloat(H.code);Q=q===GN5?void 0:q}else if(H?.uri!==void 0)K=H.uri.length===0?void 0:H.uri}if(Y[B+1]===`
|
|
30
30
|
`){if(K)J+=AW2("");let X=Q?NW2(Q):void 0;if(Q&&X)J+=kW2(X)}else if(L===`
|
package/package.json
CHANGED