oh-my-agent 11.9.0 → 11.9.1
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/README.md +1 -0
- package/bin/cli.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -350,6 +350,7 @@ See [SPONSORS.md](https://github.com/first-fluke/oh-my-agent/blob/main/SPONSORS.
|
|
|
350
350
|
## References
|
|
351
351
|
|
|
352
352
|
- Li, X., Liu, Y., Chen, W., You, B., Di, Z., He, Y., Zheng, S., Choe, K. W., Sun, J., Wang, S., Tao, C., Li, B., Zhao, X., Geng, H., Wu, X., Zhou, J., Chen, X., Xing, H., Li, Y., … Song, D. (2026). *SkillsBench: Benchmarking how well agent skills work across diverse tasks* (Version 4) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2602.12670
|
|
353
|
+
- Yu, G., & Wang, X. (2026). *Knows: Agent-native structured research representations* (Version 1) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2604.17309
|
|
353
354
|
- Liang, Q., Wang, H., Liang, Z., & Liu, Y. (2026). *From skill text to skill structure: The scheduling-structural-logical representation for agent skills* (Version 4) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2604.24026
|
|
354
355
|
- Chen, C., Yu, Q., Gu, Y., Huang, Z., Li, H., Liu, H., Liu, S., Liu, J., Peng, D., Wang, J., Yan, Z., Meng, F., Qin, E., Che, C., & Hu, M. (2026). *The scaling laws of skills in LLM agent systems* (Version 1) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2605.16508
|
|
355
356
|
- Yang, Y., Gong, Z., Huang, W., Yang, Q., Zhou, Z., Huang, Z., Li, Y., Gao, X., Dai, Q., Liu, B., Qiu, K., Yang, Y., Chen, D., Yang, X., & Luo, C. (2026). *SkillOpt: Executive strategy for self-evolving agent skills* (Version 2) [Preprint]. arXiv. https://doi.org/10.48550/arXiv.2605.23904
|
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 hS(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=(U)=>{let K=U.attributeName(),Z=this.getOptionValue(K),k=this.options.find((B)=>B.negate&&K===B.attributeName()),W=this.options.find((B)=>!B.negate&&K===B.attributeName());if(k&&(k.presetArg===void 0&&Z===!1||k.presetArg!==void 0&&Z===k.presetArg))return k;return W||U},J=(U)=>{let K=G(U),Z=K.attributeName();if(this.getOptionValueSource(Z)==="env")return`environment variable '${K.envVar}'`;return`option '${K.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 U=Q.createHelp().visibleOptions(Q).filter((K)=>K.long).map((K)=>K.long);J=J.concat(U),Q=Q.parent}while(Q&&!Q._enablePositionalOptions);z=fS($,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",J=$.length,Q=this.parent?` for '${this.name()}'`:"",U=$.join(", "),K=`error: too many arguments${Q}. Expected ${z} argument${G} but got ${J}: ${U}.`;this.error(K,{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=fS($,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 Nu(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=$z.basename($,$z.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=(K)=>this._outputConfiguration.writeErr(K),J=this._outputConfiguration.getErrHasColors(),Q=this._outputConfiguration.getErrHelpWidth();else G=(K)=>this._outputConfiguration.writeOut(K),J=this._outputConfiguration.getOutHasColors(),Q=this._outputConfiguration.getOutHelpWidth();return{error:z,write:(K)=>{if(!J)K=this._outputConfiguration.stripColor(K);return G(K)},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((U)=>U.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((U)=>U.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 U;if(typeof z==="function")U=z({error:Q.error,command:Q.command});else U=z;if(U)Q.write(`${U}
|
|
27
|
-
`)}),this}_outputHelpIfRequested($){let z=this._getHelpOption();if(z&&$.find((J)=>z.is(J)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}});var uV4;var iS=q(()=>{Du();zQ2();uX();SS();gS();uV4=new CG});var uu;var cS=q(()=>{uu={name:"oh-my-agent",version:"11.9.0",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.7.0","@date-fns/tz":"^1.5.0","@napi-rs/keyring":"^1.3.0",axios:"^1.18.1","better-sqlite3":"^13.0.2",chokidar:"^5.0.0",commander:"^15.0.0","date-fns":"^4.4.0",eld:"^2.0.3","fast-xml-parser":"^5.10.1",minimatch:"^10.2.6","p-map":"^7.0.6",picocolors:"^1.1.1","puppeteer-core":"^25.4.0",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-parse":"^11.0.0","smol-toml":"^1.7.1",unified:"^11.0.5",ws:"^8.21.1",yaml:"^2.9.0",zod:"^4.4.3"},optionalDependencies:{pptxgenjs:"^4.0.1"},devDependencies:{"@biomejs/biome":"^2.5.6","@types/better-sqlite3":"^7.6.13","@types/mdast":"^4.0.4","@types/node":"^26.1.2","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.10",typescript:"^7.0.2",vitest:"^4.1.10"},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 Rk from"node:fs";import{homedir as uz5}from"node:os";import*as OX from"node:path";function JQ2($){if(Mu)throw Error("install context already set in this process");Mu=$}function QQ2(){if(Mu===null)throw Error("install context not set — entry point must call setInstallContext()");return Mu}function WU(){return QQ2().installRoot}function l3(){return QQ2().mode}function BU(){try{return l3()}catch{return"project"}}function wk(){try{return WU()}catch{return process.cwd()}}function UQ2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return Mz5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:uz5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function Mz5($){if(!OX.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of GQ2)if($===G||$.startsWith(G+OX.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=Rk.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of GQ2)if(z===G||z.startsWith(G+OX.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{Rk.accessSync(z,Rk.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var Mu=null,GQ2;var b8=q(()=>{GQ2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as Oz5}from"node:path";function YU($){return $.endsWith("/")?$:`${$}/`}function p3($,z){let G=z.split("/").filter((J)=>J.length>0);return Oz5($,...G)}var _8=".agents",Ou,e1,TG,KQ2,ZQ2,Iu,Iz5=".antigravitycli",kQ2,vz5=".migration-backup",Rz5="docs/plans",wz5=".qwen/tmp",Cz5,Tz5,Pz5,Ez5,bz5,_z5,xz5,lS;var $3=q(()=>{Ou=`${_8}/skills`,e1=`${_8}/results`,TG=`${_8}/state`,KQ2=`${TG}/sessions`,ZQ2=`${TG}/retry`,Iu=`${TG}/archive`,kQ2=`${_8}/backup`;Cz5=YU(e1),Tz5=YU(TG),Pz5=YU(Iz5),Ez5=YU(kQ2),bz5=YU(vz5),_z5=YU(Rz5),xz5=YU(wz5),lS=[Pz5,Cz5,Tz5,Ez5,_z5,bz5,xz5]});var Y1="first-fluke/oh-my-agent",L4,x8,vu,yz5,Sz5,zz,E1;var E0=q(()=>{$3();L4=Ou,x8=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],vu=["pi","opencode"],yz5=["copilot","hermes"],Sz5=["zcode"],zz=[...x8,...yz5,...Sz5].sort(),E1={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 HQ2={};C2(HQ2,{runAction:()=>V2,resolveJsonMode:()=>s2,printDescribe:()=>rz5,addOutputOptions:()=>e2});function e2($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!IX.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${IX.join(", ")}`);return J})}function hz5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&IX.includes(z))return z;if(process.env[YQ2]?.trim().toLowerCase()==="json")return"json";return"text"}function s2($){return hz5($)==="json"}function FQ2($){let z=$.at(-1);return z instanceof CG?z:null}function gz5($){let z=FQ2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function fz5($){if($ instanceof Error)return $.message;return String($)}function PG($){throw Error($)}function dS($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)PG(`${z} must not contain control characters`)}}function mz5($,z){if(dS($,z),/[?#%]/.test($))PG(`${z} must not contain ?, #, or %`);if($.includes(".."))PG(`${z} must not contain '..'`)}function iz5($,z){dS($,z);try{new URL($)}catch{PG(`${z} must be a valid absolute URL`)}}function pS($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){mz5($,z);return}if(G==="url"){iz5($,z);return}dS($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())pS(Q,`${z}[${J}]`,G)}function BQ2($){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 cz5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((U)=>U.trim()).filter(Boolean).filter((U)=>!zz.includes(U)).length>0)PG(`vendor must be one of ${zz.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!IX.includes(G))PG(`output must be one of ${IX.join(", ")}`)}function lz5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,U)=>{let K=Q.name?.()||String(U),Z=z[U];if(pS(Z,K,BQ2(K)),K==="agent-type"&&typeof Z==="string"&&!WQ2.includes(Z))PG(`agent-type must be one of ${WQ2.join(", ")}`)});let J=$.opts();cz5(J);for(let[Q,U]of Object.entries(J))pS(U,Q,BQ2(Q))}function pz5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function dz5($){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 VQ2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function nz5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function az5($){return $.options.some((z)=>z.long==="--dry-run")}function XQ2($){return{name:$.name(),path:VQ2($),summary:$.summary()||void 0,description:$.description(),arguments:pz5($),options:dz5($),supportsJsonOutput:nz5($),supportsDryRun:az5($),subcommands:$.commands.map((z)=>XQ2(z))}}function oz5($,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||VQ2(Q)===G)return Q;J.push(...Q.commands)}return null}function rz5($,z){let G=oz5($,z);if(!G)PG(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[YQ2]:"Set to json to force machine-readable output on commands that support it."},command:XQ2(G)};console.log(JSON.stringify(J,null,2))}function V2($,z={}){return async(...G)=>{let J=FQ2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=gz5(G);try{if(J)lz5(J);await $(...G)}catch(U){let K=fz5(U);if(z.supportsJsonOutput&&s2(Q))console.log(JSON.stringify({error:K},null,2));else console.error(K);process.exitCode=1}}}var YQ2="OH_MY_AG_OUTPUT_FORMAT",IX,WQ2;var K4=q(()=>{iS();E0();IX=["text","json"],WQ2=["backend","frontend","mobile","qa","debug","pm"]});var LQ2,qQ2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},NQ2=($)=>{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 DQ2=q(()=>{LQ2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var sz5,tz5,AQ2,ez5,jQ2,$G5,zG5,GG5,uQ2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",U=z?.ellipsisWidth??(Q?uQ2(Q,GG5,G).width:0),K=0,Z=G.controlWidth??0,k=G.tabWidth??8,W=G.emojiWidth??2,B=2,Y=G.regularWidth??1,F=G.wideWidth??2,V=[[$G5,Y],[sz5,0],[tz5,Z],[ez5,k],[jQ2,W],[AQ2,F]],X=0,H=0,L=$.length,N=0,D=!1,A=L,u=Math.max(0,J-U),I=0,j=0,M=0,O=0;$:while(!0){if(j>I||H>=L&&H>X){let w=$.slice(I,j)||$.slice(X,H);N=0;for(let C of w.replaceAll(zG5,"")){let v=C.codePointAt(0)||0;if(qQ2(v))O=2;else if(NQ2(v))O=F;else O=Y;if(M+O>u)A=Math.min(A,Math.max(I,X)+N);if(M+O>J){D=!0;break $}N+=C.length,M+=O}I=j=0}if(H>=L)break $;for(let w=0,C=V.length;w<C;w++){let[v,T]=V[w];if(v.lastIndex=H,v.test($)){if(N=v===AQ2?LQ2($.slice(H,v.lastIndex)):v===jQ2?1:v.lastIndex-H,O=N*T,M+O>u)A=Math.min(A,H+Math.floor((u-M)/T));if(M+O>J){D=!0;break $}M+=O,I=X,j=H,H=X=v.lastIndex;continue $}}H+=1}return{width:D?u:M,index:D?A:L,truncated:D,ellipsed:D&&J>=U}},MQ2;var OQ2=q(()=>{DQ2();sz5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,tz5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,AQ2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,ez5=/\t{1,1000}/y,jQ2=/[\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,$G5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,zG5=/\p{M}+/gu,GG5={limit:1/0,ellipsis:""},MQ2=uQ2});var JG5,QG5=($,z={})=>{return MQ2($,JG5,z).width},h7;var nS=q(()=>{OQ2();JG5={limit:1/0,ellipsis:"",ellipsisWidth:0},h7=QG5});function b0($,z,G){return String($).normalize().split(WG5).map((J)=>kG5(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)")}}});var uV4;var iS=q(()=>{Du();zQ2();uX();SS();gS();uV4=new CG});var uu;var cS=q(()=>{uu={name:"oh-my-agent",version:"11.9.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","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.7.0","@date-fns/tz":"^1.5.0","@napi-rs/keyring":"^1.3.0",axios:"^1.18.1","better-sqlite3":"^13.0.2",chokidar:"^5.0.0",commander:"^15.0.0","date-fns":"^4.4.0",eld:"^2.0.3","fast-xml-parser":"^5.10.1",minimatch:"^10.2.6","p-map":"^7.0.6",picocolors:"^1.1.1","puppeteer-core":"^25.4.0",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-parse":"^11.0.0","smol-toml":"^1.7.1",unified:"^11.0.5",ws:"^8.21.1",yaml:"^2.9.0",zod:"^4.4.3"},optionalDependencies:{pptxgenjs:"^4.0.1"},devDependencies:{"@biomejs/biome":"^2.5.6","@types/better-sqlite3":"^7.6.13","@types/mdast":"^4.0.4","@types/node":"^26.1.2","@types/ws":"^8.18.1","@vitest/coverage-v8":"^4.1.10",typescript:"^7.0.2",vitest:"^4.1.10"},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 Rk from"node:fs";import{homedir as uz5}from"node:os";import*as OX from"node:path";function JQ2($){if(Mu)throw Error("install context already set in this process");Mu=$}function QQ2(){if(Mu===null)throw Error("install context not set — entry point must call setInstallContext()");return Mu}function WU(){return QQ2().installRoot}function l3(){return QQ2().mode}function BU(){try{return l3()}catch{return"project"}}function wk(){try{return WU()}catch{return process.cwd()}}function UQ2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return Mz5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:uz5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function Mz5($){if(!OX.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of GQ2)if($===G||$.startsWith(G+OX.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=Rk.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of GQ2)if(z===G||z.startsWith(G+OX.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{Rk.accessSync(z,Rk.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var Mu=null,GQ2;var b8=q(()=>{GQ2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as Oz5}from"node:path";function YU($){return $.endsWith("/")?$:`${$}/`}function p3($,z){let G=z.split("/").filter((J)=>J.length>0);return Oz5($,...G)}var _8=".agents",Ou,e1,TG,KQ2,ZQ2,Iu,Iz5=".antigravitycli",kQ2,vz5=".migration-backup",Rz5="docs/plans",wz5=".qwen/tmp",Cz5,Tz5,Pz5,Ez5,bz5,_z5,xz5,lS;var $3=q(()=>{Ou=`${_8}/skills`,e1=`${_8}/results`,TG=`${_8}/state`,KQ2=`${TG}/sessions`,ZQ2=`${TG}/retry`,Iu=`${TG}/archive`,kQ2=`${_8}/backup`;Cz5=YU(e1),Tz5=YU(TG),Pz5=YU(Iz5),Ez5=YU(kQ2),bz5=YU(vz5),_z5=YU(Rz5),xz5=YU(wz5),lS=[Pz5,Cz5,Tz5,Ez5,_z5,bz5,xz5]});var Y1="first-fluke/oh-my-agent",L4,x8,vu,yz5,Sz5,zz,E1;var E0=q(()=>{$3();L4=Ou,x8=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],vu=["pi","opencode"],yz5=["copilot","hermes"],Sz5=["zcode"],zz=[...x8,...yz5,...Sz5].sort(),E1={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 HQ2={};C2(HQ2,{runAction:()=>V2,resolveJsonMode:()=>s2,printDescribe:()=>rz5,addOutputOptions:()=>e2});function e2($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!IX.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${IX.join(", ")}`);return J})}function hz5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&IX.includes(z))return z;if(process.env[YQ2]?.trim().toLowerCase()==="json")return"json";return"text"}function s2($){return hz5($)==="json"}function FQ2($){let z=$.at(-1);return z instanceof CG?z:null}function gz5($){let z=FQ2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function fz5($){if($ instanceof Error)return $.message;return String($)}function PG($){throw Error($)}function dS($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)PG(`${z} must not contain control characters`)}}function mz5($,z){if(dS($,z),/[?#%]/.test($))PG(`${z} must not contain ?, #, or %`);if($.includes(".."))PG(`${z} must not contain '..'`)}function iz5($,z){dS($,z);try{new URL($)}catch{PG(`${z} must be a valid absolute URL`)}}function pS($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){mz5($,z);return}if(G==="url"){iz5($,z);return}dS($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())pS(Q,`${z}[${J}]`,G)}function BQ2($){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 cz5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((U)=>U.trim()).filter(Boolean).filter((U)=>!zz.includes(U)).length>0)PG(`vendor must be one of ${zz.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!IX.includes(G))PG(`output must be one of ${IX.join(", ")}`)}function lz5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,U)=>{let K=Q.name?.()||String(U),Z=z[U];if(pS(Z,K,BQ2(K)),K==="agent-type"&&typeof Z==="string"&&!WQ2.includes(Z))PG(`agent-type must be one of ${WQ2.join(", ")}`)});let J=$.opts();cz5(J);for(let[Q,U]of Object.entries(J))pS(U,Q,BQ2(Q))}function pz5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function dz5($){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 VQ2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function nz5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function az5($){return $.options.some((z)=>z.long==="--dry-run")}function XQ2($){return{name:$.name(),path:VQ2($),summary:$.summary()||void 0,description:$.description(),arguments:pz5($),options:dz5($),supportsJsonOutput:nz5($),supportsDryRun:az5($),subcommands:$.commands.map((z)=>XQ2(z))}}function oz5($,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||VQ2(Q)===G)return Q;J.push(...Q.commands)}return null}function rz5($,z){let G=oz5($,z);if(!G)PG(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[YQ2]:"Set to json to force machine-readable output on commands that support it."},command:XQ2(G)};console.log(JSON.stringify(J,null,2))}function V2($,z={}){return async(...G)=>{let J=FQ2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=gz5(G);try{if(J)lz5(J);await $(...G)}catch(U){let K=fz5(U);if(z.supportsJsonOutput&&s2(Q))console.log(JSON.stringify({error:K},null,2));else console.error(K);process.exitCode=1}}}var YQ2="OH_MY_AG_OUTPUT_FORMAT",IX,WQ2;var K4=q(()=>{iS();E0();IX=["text","json"],WQ2=["backend","frontend","mobile","qa","debug","pm"]});var LQ2,qQ2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},NQ2=($)=>{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 DQ2=q(()=>{LQ2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var sz5,tz5,AQ2,ez5,jQ2,$G5,zG5,GG5,uQ2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",U=z?.ellipsisWidth??(Q?uQ2(Q,GG5,G).width:0),K=0,Z=G.controlWidth??0,k=G.tabWidth??8,W=G.emojiWidth??2,B=2,Y=G.regularWidth??1,F=G.wideWidth??2,V=[[$G5,Y],[sz5,0],[tz5,Z],[ez5,k],[jQ2,W],[AQ2,F]],X=0,H=0,L=$.length,N=0,D=!1,A=L,u=Math.max(0,J-U),I=0,j=0,M=0,O=0;$:while(!0){if(j>I||H>=L&&H>X){let w=$.slice(I,j)||$.slice(X,H);N=0;for(let C of w.replaceAll(zG5,"")){let v=C.codePointAt(0)||0;if(qQ2(v))O=2;else if(NQ2(v))O=F;else O=Y;if(M+O>u)A=Math.min(A,Math.max(I,X)+N);if(M+O>J){D=!0;break $}N+=C.length,M+=O}I=j=0}if(H>=L)break $;for(let w=0,C=V.length;w<C;w++){let[v,T]=V[w];if(v.lastIndex=H,v.test($)){if(N=v===AQ2?LQ2($.slice(H,v.lastIndex)):v===jQ2?1:v.lastIndex-H,O=N*T,M+O>u)A=Math.min(A,H+Math.floor((u-M)/T));if(M+O>J){D=!0;break $}M+=O,I=X,j=H,H=X=v.lastIndex;continue $}}H+=1}return{width:D?u:M,index:D?A:L,truncated:D,ellipsed:D&&J>=U}},MQ2;var OQ2=q(()=>{DQ2();sz5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,tz5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,AQ2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,ez5=/\t{1,1000}/y,jQ2=/[\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,$G5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,zG5=/\p{M}+/gu,GG5={limit:1/0,ellipsis:""},MQ2=uQ2});var JG5,QG5=($,z={})=>{return MQ2($,JG5,z).width},h7;var nS=q(()=>{OQ2();JG5={limit:1/0,ellipsis:"",ellipsisWidth:0},h7=QG5});function b0($,z,G){return String($).normalize().split(WG5).map((J)=>kG5(J,z,G)).join(`
|
|
28
28
|
`)}var Ru="\x1B",CQ2="",UG5=39,oS="\x07",TQ2="[",KG5="]",PQ2="m",rS,IQ2,vQ2=($)=>{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},RQ2=($)=>`${Ru}${TQ2}${$}${PQ2}`,wQ2=($)=>`${Ru}${rS}${$}${oS}`,aS=($,z,G)=>{let J=z[Symbol.iterator](),Q=!1,U=!1,K=$.at(-1),Z=K===void 0?0:h7(K),k=J.next(),W=J.next(),B=0;while(!k.done){let Y=k.value,F=h7(Y);if(Z+F<=G)$[$.length-1]+=Y;else $.push(Y),Z=0;if(Y===Ru||Y===CQ2)Q=!0,U=z.startsWith(rS,B+1);if(Q){if(U){if(Y===oS)Q=!1,U=!1}else if(Y===PQ2)Q=!1}else if(Z+=F,Z===G&&!W.done)$.push(""),Z=0;k=W,W=J.next(),B+=Y.length}if(K=$.at(-1),!Z&&K!==void 0&&K.length&&$.length>1)$[$.length-2]+=$.pop()},ZG5=($)=>{let z=$.split(" "),G=z.length;while(G){if(h7(z[G-1]))break;G--}if(G===z.length)return $;return z.slice(0,G).join(" ")+z.slice(G).join("")},kG5=($,z,G={})=>{if(G.trim!==!1&&$.trim()==="")return"";let J="",Q,U,K=$.split(" "),Z=[""],k=0;for(let Y=0;Y<K.length;Y++){let F=K[Y];if(G.trim!==!1){let X=Z.at(-1)??"",H=X.trimStart();if(X.length!==H.length)Z[Z.length-1]=H,k=h7(H)}if(Y!==0){if(k>=z&&(G.wordWrap===!1||G.trim===!1))Z.push(""),k=0;if(k||G.trim===!1)Z[Z.length-1]+=" ",k++}let V=h7(F);if(G.hard&&V>z){let X=z-k,H=1+Math.floor((V-X-1)/z);if(Math.floor((V-1)/z)<H)Z.push("");aS(Z,F,z),k=h7(Z.at(-1)??"");continue}if(k+V>z&&k&&V){if(G.wordWrap===!1&&k<z){aS(Z,F,z),k=h7(Z.at(-1)??"");continue}Z.push(""),k=0}if(k+V>z&&G.wordWrap===!1){aS(Z,F,z),k=h7(Z.at(-1)??"");continue}Z[Z.length-1]+=F,k+=V}if(G.trim!==!1)Z=Z.map((Y)=>ZG5(Y));let W=Z.join(`
|
|
29
29
|
`),B=!1;for(let Y=0;Y<W.length;Y++){let F=W[Y];if(J+=F,!B){if(B=F>="\uD800"&&F<="\uDBFF",B)continue}else B=!1;if(F===Ru||F===CQ2){IQ2.lastIndex=Y+1;let X=IQ2.exec(W)?.groups;if(X?.code!==void 0){let H=Number.parseFloat(X.code);Q=H===UG5?void 0:H}else if(X?.uri!==void 0)U=X.uri.length===0?void 0:X.uri}if(W[Y+1]===`
|
|
30
30
|
`){if(U)J+=wQ2("");let V=Q?vQ2(Q):void 0;if(Q&&V)J+=RQ2(V)}else if(F===`
|
package/package.json
CHANGED