oh-my-agent 10.17.0 → 10.17.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 +14 -8
- package/bin/cli.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -146,7 +146,6 @@ Pick a preset and you're ready:
|
|
|
146
146
|
| **oma-architecture** | Weighs architecture tradeoffs and draws module boundaries, with ADR/ATAM/CBAM analysis. |
|
|
147
147
|
| **oma-backend** | Builds and secures your APIs in Python, Node.js, or Rust. |
|
|
148
148
|
| **oma-brainstorm** | Explores ideas with you before you commit to building. |
|
|
149
|
-
| **oma-coordination** | Guides manual step-by-step coordination of PM, frontend, backend, mobile, and QA agents. |
|
|
150
149
|
| **oma-db** | Designs your schema, migrations, indexes, and vector stores. |
|
|
151
150
|
| **oma-debug** | Finds the root cause, fixes the bug, and writes a regression test. |
|
|
152
151
|
| **oma-deepsec** | Scans your code for security holes and blocks risky pull requests. |
|
|
@@ -168,13 +167,22 @@ Pick a preset and you're ready:
|
|
|
168
167
|
| **oma-scholar** | Searches academic literature and helps you run peer review. |
|
|
169
168
|
| **oma-scm** | Manages your branches, merges, worktrees, and Conventional Commits. |
|
|
170
169
|
| **oma-search** | Routes each query to the best source and scores how much you can trust the result. |
|
|
171
|
-
| **oma-skill-creator** | Writes and audits new OMA skills in the SSL-lite format. |
|
|
172
170
|
| **oma-slide** | Generates distinctive, animation-rich HTML presentation decks and exports to PDF/PNG/PPTX. |
|
|
173
171
|
| **oma-tf-infra** | Provisions multi-cloud infrastructure with Terraform. |
|
|
174
172
|
| **oma-translator** | Translates between languages so it reads like a native wrote it. |
|
|
175
173
|
| **oma-video** | Generates short-form, explainer, and demo videos through a key-optional Remotion pipeline. |
|
|
176
174
|
| **oma-voice** | Generates voiceovers and transcribes audio on-device, no cloud needed. |
|
|
177
175
|
|
|
176
|
+
<details>
|
|
177
|
+
<summary>Internal & meta tools</summary>
|
|
178
|
+
|
|
179
|
+
| Agent | What They Do |
|
|
180
|
+
|-------|-------------|
|
|
181
|
+
| **oma-coordination** | Guides manual step-by-step coordination of PM, frontend, backend, mobile, and QA agents. |
|
|
182
|
+
| **oma-skill-creator** | Writes and audits new OMA skills in the SSL-lite format. |
|
|
183
|
+
|
|
184
|
+
</details>
|
|
185
|
+
|
|
178
186
|
## How It Works
|
|
179
187
|
|
|
180
188
|
Just chat. Describe what you want and oh-my-agent figures out which agents to use.
|
|
@@ -200,7 +208,7 @@ Or use slash commands for structured workflows:
|
|
|
200
208
|
| 2 | `/plan` | Breaks your feature down into prioritized tasks |
|
|
201
209
|
| 3 | `/work` | Builds your feature step by step across multiple agents |
|
|
202
210
|
| 3 | `/orchestrate` | Runs multiple agents in parallel to build your feature faster |
|
|
203
|
-
| 3 | `/ultrawork` | Builds your feature through five quality phases
|
|
211
|
+
| 3 | `/ultrawork` | Builds your feature through five gated quality phases; every review runs in a fresh, isolated reviewer session (cross-context review) |
|
|
204
212
|
| 3 | `/ralph` | Repeats `/ultrawork` until an independent verifier passes every criterion |
|
|
205
213
|
| 4 | `/review` | Reviews your code for security, performance, and accessibility issues |
|
|
206
214
|
| 4 | `/deepsec` | Runs a deep security scan and blocks risky pull requests |
|
|
@@ -209,7 +217,7 @@ Or use slash commands for structured workflows:
|
|
|
209
217
|
| 6 | `/scm` | Manages your branches, merges, and Conventional Commits |
|
|
210
218
|
| - | `/schedule` | Schedules an agent job to run on a recurring interval |
|
|
211
219
|
|
|
212
|
-
**Auto-detection**: You don't even need slash commands — keywords like "architecture", "plan", "review", and "debug" in your message (in 11 languages!) auto-activate the right workflow.
|
|
220
|
+
**Auto-detection**: You don't even need slash commands — keywords like "architecture", "plan", "review", and "debug" in your message (in 11 languages!) auto-activate the right workflow. Detection accuracy is measured, not assumed: `oma verify triggers` scores the detector against a labeled 171-prompt corpus (currently **0% missed-fire**, under 10% false-fire) and gates CI on it.
|
|
213
221
|
|
|
214
222
|
### Per-Agent Models
|
|
215
223
|
|
|
@@ -229,11 +237,9 @@ agents:
|
|
|
229
237
|
|
|
230
238
|
## Why oh-my-agent?
|
|
231
239
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
- **Portable** — `.agents/` travels with your project, not trapped in one IDE
|
|
240
|
+
- **Portable** — `.agents/` travels with your project, not trapped in one IDE. `oma emit` projects the same SSOT into open-standard artifacts — [Agent Skills](https://agentskills.io/specification)-conformant skill folders, a `.claude-plugin/marketplace.json`, and `AGENTS.md` — so oma skills work in any tool that reads the open spec, with a drift check in CI keeping the generated output honest
|
|
235
241
|
- **Role-based** — Agents modeled like a real engineering team, not a pile of prompts
|
|
236
|
-
- **Token-efficient** — Two-layer skill design saves ~75% of tokens
|
|
242
|
+
- **Token-efficient** — Two-layer skill design saves ~75% of tokens ([how it works](https://github.com/first-fluke/oh-my-agent/blob/main/web/docs/guide/usage.md))
|
|
237
243
|
- **Quality-first** — Charter preflight, quality gates, and review workflows built in:
|
|
238
244
|
- `oma verify <agent>` — a deterministic check battery per agent type: a shared core (scope violation, charter alignment, hardcoded secrets, TODO scan, declared outputs) plus type-specific checks (TypeScript strict, tests, raw SQL, Flutter analyze, inline styles, …)
|
|
239
245
|
- `session.quota_cap` — per-session token / spawn / per-vendor budget caps in `oma-config.yaml`; `orchestrate` Step 5 blocks the next spawn when exceeded
|
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 g4.env){let z=$.attributeName();if(this.getOptionValue(z)===void 0||["default","config","env"].includes(this.getOptionValueSource(z)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,g4.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new Ok5(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=SW2($,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=SW2($,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 Ak5(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=GG.basename($,GG.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(g4.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 yW2($){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 gf(){if(g4.env.NO_COLOR||g4.env.FORCE_COLOR==="0"||g4.env.FORCE_COLOR==="false")return!1;if(g4.env.FORCE_COLOR||g4.env.CLICOLOR_FORCE!==void 0)return!0;return}Ik5.Command=hf;Ik5.useColor=gf});var mW2=C((wk5)=>{var{Argument:gW2}=gR(),{Command:ff}=uW2(),{CommanderError:vk5,InvalidArgumentError:hW2}=YF(),{Help:Ek5}=xf(),{Option:fW2}=Sf();wk5.program=new ff;wk5.createCommand=($)=>new ff($);wk5.createOption=($,z)=>new fW2($,z);wk5.createArgument=($,z)=>new gW2($,z);wk5.Command=ff;wk5.Option=fW2;wk5.Argument=gW2;wk5.Help=Ek5;wk5.CommanderError=vk5;wk5.InvalidArgumentError=hW2;wk5.InvalidOptionArgumentError=hW2});var cW2,nn4,an4,on4,rn4,sn4,tn4,en4,fR,$a4,za4,Ga4;var mf=k(()=>{cW2=E2(mW2(),1),{program:nn4,createCommand:an4,createArgument:on4,createOption:rn4,CommanderError:sn4,InvalidArgumentError:tn4,InvalidOptionArgumentError:en4,Command:fR,Argument:$a4,Option:za4,Help:Ga4}=cW2.default});var mR;var cf=k(()=>{mR={name:"oh-my-agent",version:"10.17.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.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 iY from"node:fs";import{homedir as mk5}from"node:os";import*as VF from"node:path";function lW2($){if(cR)throw Error("install context already set in this process");cR=$}function pW2(){if(cR===null)throw Error("install context not set — entry point must call setInstallContext()");return cR}function lY(){return pW2().installRoot}function Q6(){return pW2().mode}function pY(){try{return Q6()}catch{return"project"}}function dW2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return ck5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:mk5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function ck5($){if(!VF.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of iW2)if($===G||$.startsWith(G+VF.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=iY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of iW2)if(z===G||z.startsWith(G+VF.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{iY.accessSync(z,iY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var cR=null,iW2;var JG=k(()=>{iW2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as ik5}from"node:path";function BF($){return $.endsWith("/")?$:`${$}/`}function T7($,z){let G=z.split("/").filter((J)=>J.length>0);return ik5($,...G)}var T0=".agents",iR,b3,_J,nW2,aW2,lR,lk5=".antigravitycli",oW2,pk5=".migration-backup",dk5,nk5,ak5,ok5,rk5,lf;var _3=k(()=>{iR=`${T0}/skills`,b3=`${T0}/results`,_J=`${T0}/state`,nW2=`${_J}/sessions`,aW2=`${_J}/retry`,lR=`${_J}/archive`,oW2=`${T0}/backup`;dk5=BF(b3),nk5=BF(_J),ak5=BF(lk5),ok5=BF(oW2),rk5=BF(pk5),lf=[ak5,dk5,nk5,ok5,rk5]});var c1="first-fluke/oh-my-agent",h4,b0,pR,sk5,tk5,QG,G3;var _$=k(()=>{_3();h4=iR,b0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],pR=["pi","opencode"],sk5=["copilot","hermes"],tk5=["zcode"],QG=[...b0,...sk5,...tk5].sort(),G3={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 GY2={};z5(GY2,{runAction:()=>C2,resolveJsonMode:()=>k5,printDescribe:()=>BA5,addOutputOptions:()=>A5});function A5($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!XF.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${XF.join(", ")}`);return J})}function ek5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&XF.includes(z))return z;if(process.env[tW2]?.trim().toLowerCase()==="json")return"json";return"text"}function k5($){return ek5($)==="json"}function eW2($){let z=$.at(-1);return z instanceof fR?z:null}function $A5($){let z=eW2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function zA5($){if($ instanceof Error)return $.message;return String($)}function xJ($){throw Error($)}function df($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)xJ(`${z} must not contain control characters`)}}function GA5($,z){if(df($,z),/[?#%]/.test($))xJ(`${z} must not contain ?, #, or %`);if($.includes(".."))xJ(`${z} must not contain '..'`)}function JA5($,z){df($,z);try{new URL($)}catch{xJ(`${z} must be a valid absolute URL`)}}function pf($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){GA5($,z);return}if(G==="url"){JA5($,z);return}df($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())pf(Q,`${z}[${J}]`,G)}function sW2($){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 QA5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!QG.includes(K)).length>0)xJ(`vendor must be one of ${QG.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!XF.includes(G))xJ(`output must be one of ${XF.join(", ")}`)}function KA5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if(pf(U,Z,sW2(Z)),Z==="agent-type"&&typeof U==="string"&&!rW2.includes(U))xJ(`agent-type must be one of ${rW2.join(", ")}`)});let J=$.opts();QA5(J);for(let[Q,K]of Object.entries(J))pf(K,Q,sW2(Q))}function ZA5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function UA5($){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 $Y2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function WA5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function YA5($){return $.options.some((z)=>z.long==="--dry-run")}function zY2($){return{name:$.name(),path:$Y2($),summary:$.summary()||void 0,description:$.description(),arguments:ZA5($),options:UA5($),supportsJsonOutput:WA5($),supportsDryRun:YA5($),subcommands:$.commands.map((z)=>zY2(z))}}function VA5($,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||$Y2(Q)===G)return Q;J.push(...Q.commands)}return null}function BA5($,z){let G=VA5($,z);if(!G)xJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[tW2]:"Set to json to force machine-readable output on commands that support it."},command:zY2(G)};console.log(JSON.stringify(J,null,2))}function C2($,z={}){return async(...G)=>{let J=eW2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=$A5(G);try{if(J)KA5(J);await $(...G)}catch(K){let Z=zA5(K);if(z.supportsJsonOutput&&k5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var tW2="OH_MY_AG_OUTPUT_FORMAT",XF,rW2;var f4=k(()=>{mf();_$();XF=["text","json"],rW2=["backend","frontend","mobile","qa","debug","pm"]});var JY2,QY2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},KY2=($)=>{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 ZY2=k(()=>{JY2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var XA5,HA5,UY2,qA5,WY2,LA5,FA5,NA5,YY2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?YY2(Q,NA5,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=[[LA5,B],[XA5,0],[HA5,U],[qA5,Y],[WY2,W],[UY2,H]],q=0,L=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,D=0,I=0,R=0;$:while(!0){if(D>O||L>=F&&L>q){let v=$.slice(O,D)||$.slice(q,L);N=0;for(let T of v.replaceAll(FA5,"")){let _=T.codePointAt(0)||0;if(QY2(_))R=2;else if(KY2(_))R=H;else R=B;if(I+R>M)j=Math.min(j,Math.max(O,q)+N);if(I+R>J){A=!0;break $}N+=T.length,I+=R}O=D=0}if(L>=F)break $;for(let v=0,T=X.length;v<T;v++){let[_,g]=X[v];if(_.lastIndex=L,_.test($)){if(N=_===UY2?JY2($.slice(L,_.lastIndex)):_===WY2?1:_.lastIndex-L,R=N*g,I+R>M)j=Math.min(j,L+Math.floor((M-I)/g));if(I+R>J){A=!0;break $}I+=R,O=q,D=L,L=q=_.lastIndex;continue $}}L+=1}return{width:A?M:I,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},VY2;var BY2=k(()=>{ZY2();XA5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,HA5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,UY2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,qA5=/\t{1,1000}/y,WY2=/[\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,LA5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,FA5=/\p{M}+/gu,NA5={limit:1/0,ellipsis:""},VY2=YY2});var kA5,AA5=($,z={})=>{return VY2($,kA5,z).width},w6;var nf=k(()=>{BY2();kA5={limit:1/0,ellipsis:"",ellipsisWidth:0},w6=AA5});function x$($,z,G){return String($).normalize().split(RA5).map((J)=>IA5(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 yW2($){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 gf(){if(g4.env.NO_COLOR||g4.env.FORCE_COLOR==="0"||g4.env.FORCE_COLOR==="false")return!1;if(g4.env.FORCE_COLOR||g4.env.CLICOLOR_FORCE!==void 0)return!0;return}Ik5.Command=hf;Ik5.useColor=gf});var mW2=C((wk5)=>{var{Argument:gW2}=gR(),{Command:ff}=uW2(),{CommanderError:vk5,InvalidArgumentError:hW2}=YF(),{Help:Ek5}=xf(),{Option:fW2}=Sf();wk5.program=new ff;wk5.createCommand=($)=>new ff($);wk5.createOption=($,z)=>new fW2($,z);wk5.createArgument=($,z)=>new gW2($,z);wk5.Command=ff;wk5.Option=fW2;wk5.Argument=gW2;wk5.Help=Ek5;wk5.CommanderError=vk5;wk5.InvalidArgumentError=hW2;wk5.InvalidOptionArgumentError=hW2});var cW2,nn4,an4,on4,rn4,sn4,tn4,en4,fR,$a4,za4,Ga4;var mf=k(()=>{cW2=E2(mW2(),1),{program:nn4,createCommand:an4,createArgument:on4,createOption:rn4,CommanderError:sn4,InvalidArgumentError:tn4,InvalidOptionArgumentError:en4,Command:fR,Argument:$a4,Option:za4,Help:Ga4}=cW2.default});var mR;var cf=k(()=>{mR={name:"oh-my-agent",version:"10.17.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.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 iY from"node:fs";import{homedir as mk5}from"node:os";import*as VF from"node:path";function lW2($){if(cR)throw Error("install context already set in this process");cR=$}function pW2(){if(cR===null)throw Error("install context not set — entry point must call setInstallContext()");return cR}function lY(){return pW2().installRoot}function Q6(){return pW2().mode}function pY(){try{return Q6()}catch{return"project"}}function dW2($){let z=process.env.OMA_HOME,G=$.global===!0||process.env.OMA_INSTALL_GLOBAL==="1";if(z!==void 0&&z!=="")return ck5(z),{installRoot:z,mode:G?"global":"project"};if(G)return{installRoot:mk5(),mode:"global"};return{installRoot:process.cwd(),mode:"project"}}function ck5($){if(!VF.isAbsolute($))throw Error("OMA_HOME must be absolute path");for(let G of iW2)if($===G||$.startsWith(G+VF.sep))throw Error(`OMA_HOME=${$} is forbidden (system path ${G})`);let z;try{z=iY.realpathSync($)}catch(G){let J=G instanceof Error?G.message:String(G);throw Error(`OMA_HOME=${$}: ${J}`)}for(let G of iW2)if(z===G||z.startsWith(G+VF.sep))throw Error(`OMA_HOME=${z} is forbidden (system path ${G})`);try{iY.accessSync(z,iY.constants.W_OK)}catch{throw Error(`OMA_HOME=${z} is not writable`)}}var cR=null,iW2;var JG=k(()=>{iW2=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as ik5}from"node:path";function BF($){return $.endsWith("/")?$:`${$}/`}function T7($,z){let G=z.split("/").filter((J)=>J.length>0);return ik5($,...G)}var T0=".agents",iR,b3,_J,nW2,aW2,lR,lk5=".antigravitycli",oW2,pk5=".migration-backup",dk5,nk5,ak5,ok5,rk5,lf;var _3=k(()=>{iR=`${T0}/skills`,b3=`${T0}/results`,_J=`${T0}/state`,nW2=`${_J}/sessions`,aW2=`${_J}/retry`,lR=`${_J}/archive`,oW2=`${T0}/backup`;dk5=BF(b3),nk5=BF(_J),ak5=BF(lk5),ok5=BF(oW2),rk5=BF(pk5),lf=[ak5,dk5,nk5,ok5,rk5]});var c1="first-fluke/oh-my-agent",h4,b0,pR,sk5,tk5,QG,G3;var _$=k(()=>{_3();h4=iR,b0=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],pR=["pi","opencode"],sk5=["copilot","hermes"],tk5=["zcode"],QG=[...b0,...sk5,...tk5].sort(),G3={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 GY2={};z5(GY2,{runAction:()=>C2,resolveJsonMode:()=>k5,printDescribe:()=>BA5,addOutputOptions:()=>A5});function A5($,z="Output as JSON"){return $.option("--json",z).option("--output <format>","Output format (text/json)",(G)=>{let J=G.trim().toLowerCase();if(!XF.includes(J))throw Error(`Invalid output format: ${G}. Expected one of ${XF.join(", ")}`);return J})}function ek5($){if($?.json)return"json";let z=$?.output?.trim().toLowerCase();if(z&&XF.includes(z))return z;if(process.env[tW2]?.trim().toLowerCase()==="json")return"json";return"text"}function k5($){return ek5($)==="json"}function eW2($){let z=$.at(-1);return z instanceof fR?z:null}function $A5($){let z=eW2($);if(z)return z.opts();let G=$.at(-1);return G&&typeof G==="object"?G:{}}function zA5($){if($ instanceof Error)return $.message;return String($)}function xJ($){throw Error($)}function df($,z){for(let G of $){let J=G.charCodeAt(0);if(J>=0&&J<=31||J===127)xJ(`${z} must not contain control characters`)}}function GA5($,z){if(df($,z),/[?#%]/.test($))xJ(`${z} must not contain ?, #, or %`);if($.includes(".."))xJ(`${z} must not contain '..'`)}function JA5($,z){df($,z);try{new URL($)}catch{xJ(`${z} must be a valid absolute URL`)}}function pf($,z,G="text"){if(typeof $==="string"){if(G==="identifier"){GA5($,z);return}if(G==="url"){JA5($,z);return}df($,z);return}if(Array.isArray($))for(let[J,Q]of $.entries())pf(Q,`${z}[${J}]`,G)}function sW2($){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 QA5($){let z=$.vendor;if(typeof z==="string"){if(z.split(",").map((K)=>K.trim()).filter(Boolean).filter((K)=>!QG.includes(K)).length>0)xJ(`vendor must be one of ${QG.join(", ")}`)}let G=$.output;if(typeof G==="string"&&!XF.includes(G))xJ(`output must be one of ${XF.join(", ")}`)}function KA5($){let z=$.processedArgs??$.args??[];($.registeredArguments??[]).forEach((Q,K)=>{let Z=Q.name?.()||String(K),U=z[K];if(pf(U,Z,sW2(Z)),Z==="agent-type"&&typeof U==="string"&&!rW2.includes(U))xJ(`agent-type must be one of ${rW2.join(", ")}`)});let J=$.opts();QA5(J);for(let[Q,K]of Object.entries(J))pf(K,Q,sW2(Q))}function ZA5($){return($.registeredArguments??[]).map((z)=>({name:z.name?.()||"",required:!!z.required,variadic:!!z.variadic}))}function UA5($){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 $Y2($){let z=[],G=$;while(G?.parent)z.unshift(G.name()),G=G.parent;return z.join(" ")}function WA5($){return $.options.some((z)=>z.long==="--json"||z.long==="--output")}function YA5($){return $.options.some((z)=>z.long==="--dry-run")}function zY2($){return{name:$.name(),path:$Y2($),summary:$.summary()||void 0,description:$.description(),arguments:ZA5($),options:UA5($),supportsJsonOutput:WA5($),supportsDryRun:YA5($),subcommands:$.commands.map((z)=>zY2(z))}}function VA5($,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||$Y2(Q)===G)return Q;J.push(...Q.commands)}return null}function BA5($,z){let G=VA5($,z);if(!G)xJ(`Unknown command: ${z}`);let J={name:$.name(),version:$.version(),description:$.description(),env:{[tW2]:"Set to json to force machine-readable output on commands that support it."},command:zY2(G)};console.log(JSON.stringify(J,null,2))}function C2($,z={}){return async(...G)=>{let J=eW2(G);if(J&&G.length>=2)G[G.length-2]=J.optsWithGlobals();let Q=$A5(G);try{if(J)KA5(J);await $(...G)}catch(K){let Z=zA5(K);if(z.supportsJsonOutput&&k5(Q))console.log(JSON.stringify({error:Z},null,2));else console.error(Z);process.exitCode=1}}}var tW2="OH_MY_AG_OUTPUT_FORMAT",XF,rW2;var f4=k(()=>{mf();_$();XF=["text","json"],rW2=["backend","frontend","mobile","qa","debug","pm"]});var JY2,QY2=($)=>{return $===12288||$>=65281&&$<=65376||$>=65504&&$<=65510},KY2=($)=>{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 ZY2=k(()=>{JY2=(()=>{let $=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return(z)=>{let G=0;$.lastIndex=0;while($.test(z))G+=1;return z.length-G}})()});var XA5,HA5,UY2,qA5,WY2,LA5,FA5,NA5,YY2=($,z={},G={})=>{let J=z.limit??1/0,Q=z.ellipsis??"",K=z?.ellipsisWidth??(Q?YY2(Q,NA5,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=[[LA5,B],[XA5,0],[HA5,U],[qA5,Y],[WY2,W],[UY2,H]],q=0,L=0,F=$.length,N=0,A=!1,j=F,M=Math.max(0,J-K),O=0,D=0,I=0,R=0;$:while(!0){if(D>O||L>=F&&L>q){let v=$.slice(O,D)||$.slice(q,L);N=0;for(let T of v.replaceAll(FA5,"")){let _=T.codePointAt(0)||0;if(QY2(_))R=2;else if(KY2(_))R=H;else R=B;if(I+R>M)j=Math.min(j,Math.max(O,q)+N);if(I+R>J){A=!0;break $}N+=T.length,I+=R}O=D=0}if(L>=F)break $;for(let v=0,T=X.length;v<T;v++){let[_,g]=X[v];if(_.lastIndex=L,_.test($)){if(N=_===UY2?JY2($.slice(L,_.lastIndex)):_===WY2?1:_.lastIndex-L,R=N*g,I+R>M)j=Math.min(j,L+Math.floor((M-I)/g));if(I+R>J){A=!0;break $}I+=R,O=q,D=L,L=q=_.lastIndex;continue $}}L+=1}return{width:A?M:I,index:A?j:F,truncated:A,ellipsed:A&&J>=K}},VY2;var BY2=k(()=>{ZY2();XA5=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,HA5=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,UY2=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,qA5=/\t{1,1000}/y,WY2=/[\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,LA5=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,FA5=/\p{M}+/gu,NA5={limit:1/0,ellipsis:""},VY2=YY2});var kA5,AA5=($,z={})=>{return VY2($,kA5,z).width},w6;var nf=k(()=>{BY2();kA5={limit:1/0,ellipsis:"",ellipsisWidth:0},w6=AA5});function x$($,z,G){return String($).normalize().split(RA5).map((J)=>IA5(J,z,G)).join(`
|
|
28
28
|
`)}var dR="\x1B",FY2="",jA5=39,of="\x07",NY2="[",MA5="]",kY2="m",rf,XY2,HY2=($)=>{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},qY2=($)=>`${dR}${NY2}${$}${kY2}`,LY2=($)=>`${dR}${rf}${$}${of}`,af=($,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===dR||B===FY2)Q=!0,K=z.startsWith(rf,V+1);if(Q){if(K){if(B===of)Q=!1,K=!1}else if(B===kY2)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()},OA5=($)=>{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("")},IA5=($,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("");af(U,H,z),Y=w6(U.at(-1)??"");continue}if(Y+X>z&&Y&&X){if(G.wordWrap===!1&&Y<z){af(U,H,z),Y=w6(U.at(-1)??"");continue}U.push(""),Y=0}if(Y+X>z&&G.wordWrap===!1){af(U,H,z),Y=w6(U.at(-1)??"");continue}U[U.length-1]+=H,Y+=X}if(G.trim!==!1)U=U.map((B)=>OA5(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===dR||H===FY2){XY2.lastIndex=B+1;let q=XY2.exec(W)?.groups;if(q?.code!==void 0){let L=Number.parseFloat(q.code);Q=L===jA5?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+=LY2("");let X=Q?HY2(Q):void 0;if(Q&&X)J+=qY2(X)}else if(H===`
|
package/package.json
CHANGED