oh-my-agent 20.28.0 → 20.29.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.
Files changed (2) hide show
  1. package/bin/cli-main.js +2 -2
  2. package/package.json +1 -1
package/bin/cli-main.js CHANGED
@@ -24,7 +24,7 @@ Expecting one of '${r.join("', '")}'`);if(this._lifeCycleHooks[e])this._lifeCycl
24
24
  `),this.outputHelp({error:!0});let r=t||{},n=r.exitCode||1,i=r.code||"commander.error";this._exit(n,i,e)}_parseOptionsEnv(){this.options.forEach((e)=>{if(e.envVar&&e.envVar in zr.env){let t=e.attributeName();if(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))if(e.required||e.optional)this.emit(`optionEnv:${e.name()}`,zr.env[e.envVar]);else this.emit(`optionEnv:${e.name()}`)}})}_parseOptionsImplied(){let e=new dK(this.options),t=(r)=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter((r)=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach((r)=>{Object.keys(r.implied).filter((n)=>!t(n)).forEach((n)=>{this.setOptionValueWithSource(n,r.implied[n],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=(o)=>{let s=o.attributeName(),a=this.getOptionValue(s),c=this.options.find((u)=>u.negate&&s===u.attributeName()),l=this.options.find((u)=>!u.negate&&s===u.attributeName());if(c&&(c.presetArg===void 0&&a===!1||c.presetArg!==void 0&&a===c.presetArg))return c;return l||o},n=(o)=>{let s=r(o),a=s.attributeName();if(this.getOptionValueSource(a)==="env")return`environment variable '${s.envVar}'`;return`option '${s.flags}'`},i=`error: ${n(e)} cannot be used with ${n(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let n=[],i=this;do{let o=i.createHelp().visibleOptions(i).filter((s)=>s.long).map((s)=>s.long);n=n.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);t=fK(e,n)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",n=e.length,i=this.parent?` for '${this.name()}'`:"",o=e.join(", "),s=`error: too many arguments${i}. Expected ${t} argument${r} but got ${n}: ${o}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let n=[];this.createHelp().visibleCommands(this).forEach((i)=>{if(n.push(i.name()),i.alias())n.push(i.alias())}),t=fK(e,n)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let n=this.createOption(t,r);return this._versionOptionName=n.attributeName(),this._registerOption(n),this.on("option:"+n.name(),()=>{this._outputConfiguration.writeOut(`${e}
25
25
  `),this._exit(0,"commander.version",e)}),this}description(e,t){if(e===void 0&&t===void 0)return this._description;if(this._description=e,t)this._argsDescription=t;return this}summary(e){if(e===void 0)return this._summary;return this._summary=e,this}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)t=this.commands[this.commands.length-1];if(e===t._name)throw Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let n=[r.name()].concat(r.aliases()).join("|");throw Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${n}'`)}return t._aliases.push(e),this}aliases(e){if(e===void 0)return this._aliases;return e.forEach((t)=>this.alias(t)),this}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map((r)=>iR(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){if(e===void 0)return this._name;return this._name=e,this}helpGroup(e){if(e===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=e,this}commandsGroup(e){if(e===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=e,this}optionsGroup(e){if(e===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=e,this}_initOptionGroup(e){if(this._defaultOptionGroup&&!e.helpGroupHeading)e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){if(this._defaultCommandGroup&&!e.helpGroup())e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=U4.basename(e,U4.extname(e)),this}executableDir(e){if(e===void 0)return this._executableDir;return this._executableDir=e,this}helpInformation(e){let t=this.createHelp(),r=this._getOutputContext(e);t.prepareContext({error:r.error,helpWidth:r.helpWidth,outputHasColors:r.hasColors});let n=t.formatHelp(this,t);if(r.hasColors)return n;return this._outputConfiguration.stripColor(n)}_getOutputContext(e){e=e||{};let t=!!e.error,r,n,i;if(t)r=(s)=>this._outputConfiguration.writeErr(s),n=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth();else r=(s)=>this._outputConfiguration.writeOut(s),n=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth();return{error:t,write:(s)=>{if(!n)s=this._outputConfiguration.stripColor(s);return r(s)},hasColors:n,helpWidth:i}}outputHelp(e){let t;if(typeof e==="function")t=e,e=void 0;let r=this._getOutputContext(e),n={error:r.error,write:r.write,command:this};this._getCommandAndAncestors().reverse().forEach((o)=>o.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let i=this.helpInformation({error:r.error});if(t){if(i=t(i),typeof i!=="string"&&!Buffer.isBuffer(i))throw Error("outputHelp callback must return a string or a Buffer")}if(r.write(i),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",n),this._getCommandAndAncestors().forEach((o)=>o.emit("afterAllHelp",n))}helpOption(e,t){if(typeof e==="boolean"){if(e){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(e??"-h, --help",t??"display help for command"),e||t)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let t=Number(zr.exitCode??0);if(t===0&&e&&typeof e!=="function"&&e.error)t=1;this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${r.join("', '")}'`);let n=`${e}Help`;return this.on(n,(i)=>{let o;if(typeof t==="function")o=t({error:i.error,command:i.command});else o=t;if(o)i.write(`${o}
27
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((n)=>t.is(n)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}});var Fen;var e3=v(()=>{oR();$9e();yk();uK();pK();Fen=new o5});var H4;var vk=v(()=>{H4={name:"oh-my-agent",version:"20.28.0",description:"Agent skills and specialist teams for Claude Code, Codex, Cursor and other coding agents. Load one skill or install domain presets, project hooks and parallel workflows with test gates.",type:"module",bin:{"oh-my-agent":"./bin/cli.js",oma:"./bin/cli.js"},files:["bin","assets/serena"],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-main.js --target node --minify --external @napi-rs/keyring --external jsonc-parser && node ./scripts/write-bin-entry.mjs && bun run check:bundle",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:bundle":"node ./scripts/check-bundle.mjs","check:emit-drift":"node ./scripts/check-emit-drift.mjs","check:repo-archive":"node ./scripts/check-repo-archive.mjs",test:"vitest run","test:coverage":"vitest run --coverage",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^1.7.0","@dagrejs/dagre":"^3.1.1","@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","jsonc-parser":"^3.3.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-gfm":"^4.0.1","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:{"@babel/parser":"7.29.3","@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-orchestration","oma-dev-workflow","oma-tf-infra","oma-scm","oma-pdf","oma-recap"]}}});import{homedir as C9e}from"node:os";import{isAbsolute as xEt,join as AEt,resolve as SEt}from"node:path";function _9e(e,t){let r=Array.from(e).some((n)=>{let i=n.charCodeAt(0);return i<32||i===127});if(!xEt(e)||r)throw Error(`${t} must be an absolute path without control characters`);return SEt(e)}function Yr(e=process.env,t=C9e()){return _9e(e.OMA_HOME||AEt(t,".oma"),"OMA_HOME")}function Cs(e=process.env,t=C9e()){return e.OMA_STATE_HOME===void 0?Yr(e,t):_9e(e.OMA_STATE_HOME,"OMA_STATE_HOME")}var cR=()=>{};import{homedir as EEt}from"node:os";import{join as bk}from"node:path";function $c(e=process.env,t=EEt()){let r=Yr(e,t),n=bk(r,"state");return{home:r,definitions:bk(r,".agents"),state:n,serena:bk(n,"serena"),schedule:bk(r,"schedule"),backup:bk(r,"backup")}}var gi=v(()=>{cR();cR()});import*as s5 from"node:fs";import{homedir as $Et}from"node:os";import*as Fl from"node:path";function R9e(e){if(lR)throw Error("install context already set in this process");lR=e}function P9e(){if(lR===null)throw Error("install context not set — entry point must call setInstallContext()");return lR}function G4(){return P9e().installRoot}function ti(){return P9e().mode}function wt(){try{return ti()}catch{return"project"}}function b6(){try{return G4()}catch{return process.cwd()}}function uR(e,t,r=$Et()){return t==="project"&&Fl.resolve(e)===Fl.resolve(r)}function I9e(e){if(e.global===!0||process.env.OMA_INSTALL_GLOBAL==="1"){let r=Yr();return CEt(r),{installRoot:r,mode:"global"}}return{installRoot:process.cwd(),mode:"project"}}function CEt(e){if(!Fl.isAbsolute(e))throw Error("OMA_HOME must be absolute path");for(let n of T9e)if(e===n||e.startsWith(n+Fl.sep))throw Error(`OMA_HOME=${e} is forbidden (system path ${n})`);let t,r=Fl.resolve(e);try{while(!s5.existsSync(r)){let n=Fl.dirname(r);if(n===r)break;r=n}if(t=s5.realpathSync(r),!s5.statSync(t).isDirectory())throw Error("nearest existing ancestor is not a directory")}catch(n){let i=n instanceof Error?n.message:String(n);throw Error(`OMA_HOME=${e}: ${i}`)}for(let n of T9e)if(t===n||t.startsWith(n+Fl.sep))throw Error(`OMA_HOME=${e} is forbidden (system path ${n})`);try{s5.accessSync(t,s5.constants.W_OK)}catch{throw Error(`OMA_HOME=${e} is not writable`)}}var lR=null,T9e;var yi=v(()=>{gi();T9e=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as OEt}from"node:path";function r3(e){return e.endsWith("/")?e:`${e}/`}function C2(e,t){let r=t.split("/").filter((n)=>n.length>0);return OEt(e,...r)}var pr=".agents",t3,jn,t1,itn,otn,stn,MEt=".antigravitycli",M9e,DEt=".migration-backup",jEt="docs/plans",LEt=".qwen/tmp",NEt,FEt,zEt,BEt,UEt,HEt,GEt,hK;var Xr=v(()=>{t3=`${pr}/skills`,jn=`${pr}/results`,t1=`${pr}/state`,itn=`${t1}/sessions`,otn=`${t1}/retry`,stn=`${t1}/archive`,M9e=`${pr}/backup`;NEt=r3(jn),FEt=r3(t1),zEt=r3(MEt),BEt=r3(M9e),UEt=r3(DEt),HEt=r3(jEt),GEt=r3(LEt),hK=[".agents/oma-config.local.cue",".agents/oma-config.local.yaml",zEt,NEt,FEt,BEt,HEt,UEt,GEt]});var Zr="first-fluke/oh-my-agent",Jt,zl,gK,WEt,VEt,W4,ri;var _2=v(()=>{Xr();Jt=t3,zl=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],gK=["pi","opencode"],WEt=["copilot","hermes"],VEt=["zcode"],W4=[...zl,...gK,...WEt,...VEt].sort(),ri={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"}}});function pe(e,t="Output as JSON"){return e.option("--json",t).option("--output <format>","Output format (text/json)",(r)=>{let n=r.trim().toLowerCase();if(!kk.includes(n))throw Error(`Invalid output format: ${r}. Expected one of ${kk.join(", ")}`);return n})}function qEt(e){if(e?.json)return"json";let t=e?.output?.trim().toLowerCase();if(t&&kk.includes(t))return t;if(process.env[L9e]?.trim().toLowerCase()==="json")return"json";return"text"}function fe(e){return qEt(e)==="json"}function N9e(e){let t=e.at(-1);return t instanceof o5?t:null}function KEt(e){let t=N9e(e);if(t)return t.opts();let r=e.at(-1);return r&&typeof r==="object"?r:{}}function JEt(e){if(e instanceof Error)return e.message;return String(e)}function r1(e){throw Error(e)}function vK(e,t){for(let r of e){let n=r.charCodeAt(0);if(n>=0&&n<=31||n===127)r1(`${t} must not contain control characters`)}}function YEt(e,t){if(vK(e,t),/[?#%]/.test(e))r1(`${t} must not contain ?, #, or %`);if(e.includes(".."))r1(`${t} must not contain '..'`)}function XEt(e,t){vK(e,t);try{new URL(e)}catch{r1(`${t} must be a valid absolute URL`)}}function yK(e,t,r="text"){if(typeof e==="string"){if(r==="identifier"){YEt(e,t);return}if(r==="url"){XEt(e,t);return}vK(e,t);return}if(Array.isArray(e))for(let[n,i]of e.entries())yK(i,`${t}[${n}]`,r)}function j9e(e){let t=e.toLowerCase();if(t==="url"||t.endsWith("url"))return"url";if(t.includes("id")||t.includes("type")||t.includes("vendor")||t.includes("session"))return"identifier";return"text"}function ZEt(e){let t=e.vendor;if(typeof t==="string"){if(t.split(",").map((o)=>o.trim()).filter(Boolean).filter((o)=>!W4.includes(o)).length>0)r1(`vendor must be one of ${W4.join(", ")}`)}let r=e.output;if(typeof r==="string"&&!kk.includes(r))r1(`output must be one of ${kk.join(", ")}`)}function QEt(e){let t=e.processedArgs??e.args??[];(e.registeredArguments??[]).forEach((i,o)=>{let s=i.name?.()||String(o),a=t[o];if(yK(a,s,j9e(s)),s==="agent-type"&&typeof a==="string"&&!D9e.includes(a))r1(`agent-type must be one of ${D9e.join(", ")}`)});let n=e.opts();ZEt(n);for(let[i,o]of Object.entries(n))yK(o,i,j9e(i))}function e$t(e){return(e.registeredArguments??[]).map((t)=>({name:t.name?.()||"",required:!!t.required,variadic:!!t.variadic}))}function t$t(e){return e.options.map((t)=>({flags:t.flags,long:t.long||void 0,short:t.short||void 0,description:t.description||"",required:!!t.required||!!t.mandatory,optional:!!t.optional,defaultValue:t.defaultValue}))}function F9e(e){let t=[],r=e;while(r?.parent)t.unshift(r.name()),r=r.parent;return t.join(" ")}function r$t(e){return e.options.some((t)=>t.long==="--json"||t.long==="--output")}function n$t(e){return e.options.some((t)=>t.long==="--dry-run")}function z9e(e){return{name:e.name(),path:F9e(e),summary:e.summary()||void 0,description:e.description(),arguments:e$t(e),options:t$t(e),supportsJsonOutput:r$t(e),supportsDryRun:n$t(e),subcommands:e.commands.filter((t)=>!t._hidden).map((t)=>z9e(t))}}function i$t(e,t){if(!t?.trim())return e;let r=t.trim(),n=[...e.commands];while(n.length>0){let i=n.shift();if(!i)continue;if(i.name()===r||F9e(i)===r)return i;n.push(...i.commands)}return null}function B9e(e,t){let r=i$t(e,t);if(!r)r1(`Unknown command: ${t}`);let n={name:e.name(),version:e.version(),description:e.description(),env:{[L9e]:"Set to json to force machine-readable output on commands that support it."},command:z9e(r)};console.log(JSON.stringify(n,null,2))}function Y(e,t={}){return async(...r)=>{let n=N9e(r);if(n&&r.length>=2)r[r.length-2]=n.optsWithGlobals();let i=KEt(r);try{if(n)QEt(n);await e(...r)}catch(o){let s=JEt(o);if(t.supportsJsonOutput&&fe(i))console.log(JSON.stringify({error:s},null,2));else console.error(s);let a=o&&typeof o==="object"&&"exitCode"in o?o.exitCode:void 0;process.exitCode=typeof a==="number"&&Number.isInteger(a)&&a>0&&a<=255?a:1}}}var L9e="OH_MY_AG_OUTPUT_FORMAT",kk,D9e;var Ct=v(()=>{e3();_2();kk=["text","json"],D9e=["backend","frontend","mobile","qa","debug","pm"]});var pa,a5;var bK=v(()=>{pa={domain:[{name:"oma-architecture",desc:"Evaluate system boundaries and architectural tradeoffs. Use for architecture decisions, design reviews, and ADRs."},{name:"oma-backend",desc:"Implement server APIs, authentication, and application data access. Schema modeling and query tuning use oma-db."},{name:"oma-db",desc:"Design schemas and migrations, tune queries, or plan vector retrieval and database operations. Application API implementation uses oma-backend."},{name:"oma-frontend",desc:"Implement or modify web UI in React, Next.js, or Angular. Use for components, pages, styles, forms, and frontend state or data flows."},{name:"oma-mobile",desc:"Implement Flutter, React Native, native Swift, or native Kotlin Android apps. Use for mobile screens, widgets, platform integrations, and application data flows."}],design:[{name:"oma-design",desc:"Define or review a visual system, DESIGN.md, or redesign direction. Use for typography, layout, color, motion, and interaction design decisions."}],coordination:[{name:"oma-brainstorm",desc:"Explore goals, constraints, and alternative approaches before choosing a design. Use when the user requests ideation or design exploration."},{name:"oma-coordination",desc:"Coordinate assigned specialist tasks and handoffs manually. Use when supervising a multi-agent project step by step."},{name:"oma-orchestration",desc:"Dispatch and supervise parallel specialist agents with durable task state. Use when automated multi-agent execution is requested."},{name:"oma-pm",desc:"Turn product requirements into scoped tasks with dependencies and acceptance criteria. Use for implementation planning and prioritization."},{name:"oma-qa",desc:"Review changes for correctness, security, accessibility, and performance. Use for scoped quality reviews or verification plans; bug fixes use oma-debug."}],utility:[{name:"oma-academic-writing",desc:"Draft and revise academic prose against a rubric, evidence, and citation requirements. Use for essays, reports, literature reviews, or academic style audits."},{name:"oma-debug",desc:"Diagnose a reproducible failure, fix its cause, and verify the regression. Use for crashes, incorrect behavior, and failing tests."},{name:"oma-docs",desc:"Check documentation references, sync docs to code changes, and detect translation drift. Use for documentation maintenance in a repository."},{name:"oma-explanation",desc:"Create an offline HTML explanation of a code change (diff, PR, branch) or of a topic, system, or question. Use when a visual walkthrough document is requested."},{name:"oma-hwp",desc:"Convert Hangul HWP, HWPX, or HWPML documents to Markdown with kordoc. Use for text, table, and image extraction from these formats."},{name:"oma-image",desc:"Generate raster images or reference-guided variations through the OMA image CLI. Use for image assets or explicit vendor comparisons; pixel editing uses an editor."},{name:"oma-market",desc:"Research customer pain points, trends, and competitors through the OMA market engine. Use for market discovery or voice-of-customer analysis."},{name:"oma-pdf",desc:"Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf. Use for PDF parsing, not PDF layout creation."},{name:"oma-recap",desc:"Summarize AI conversation histories for a specified date or period. Use for daily work recaps and cross-tool activity summaries."},{name:"oma-refactor",desc:"Restructure existing code while preserving observable behavior. Use for targeted technical debt or hotspot work with characterization tests."},{name:"oma-scholar",desc:"Search academic literature and generate, validate, or compare Knows paper sidecars. Use for claim/evidence analysis and literature synthesis."},{name:"oma-scm",desc:"Manage Git branches, merges, conflicts, commits, and release baselines. Use for repository history and change-management operations."},{name:"oma-search",desc:"Find external documentation, web sources, or remote code with citations. Local code navigation uses the configured code tools."},{name:"oma-security",desc:"Scan application source, agent skills, and MCP components; run penetration tests against scoped web test deployments, validate findings, and configure scan gates. Use oma-qa for broad quality reviews and domain skills for remediation."},{name:"oma-skill-creation",desc:"Create or revise OMA skills and their references. Use for skill routing, execution contracts, conditional loading, and authoring validation."},{name:"oma-slide",desc:"Create, import, revise, or export presentation decks through the OMA slide CLI or the ppt-master route. Use for HTML slides, editable PPTX, and PDF, PNG, or PPTX deck delivery."},{name:"oma-translation",desc:"Translate or revise localized UI strings and prose while preserving meaning, terminology, placeholders, and structure."},{name:"oma-video",desc:"Create videos through the OMA video CLI, or analyze and edit existing clips with media tools. Use for frame extraction, visual analysis, silence cuts, dubbing assembly, sound effects, scripts, and composition; audio-only work uses oma-voice."},{name:"oma-voice",desc:"Generate or transcribe speech with Voicebox or VoiceStudio, or process existing audio locally. Use for narration, transcripts, timed speech, and loudness conversion; video editing uses oma-video."}],infrastructure:[{name:"oma-dev-workflow",desc:"Configure development tasks, git hooks, CI/CD, or release automation. Use when creating or fixing a repository development workflow."},{name:"oma-observability",desc:"Design or troubleshoot telemetry, SLOs, and incident diagnostics. Route to the relevant signal, system boundary, or vendor guide."},{name:"oma-tf-infra",desc:"Create or review Terraform infrastructure and plans. Use for cloud resources, IAM, networking, state management, and infrastructure changes."}]},a5={security:["oma-security","oma-architecture","oma-qa","oma-debug","oma-refactor","oma-scm"],fullstack:["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-backend","oma-mobile","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-tf-infra","oma-dev-workflow"],"fullstack-web":["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],"fullstack-mobile":["oma-architecture","oma-brainstorm","oma-design","oma-mobile","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],frontend:["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-pm","oma-qa","oma-debug","oma-scm"],backend:["oma-architecture","oma-brainstorm","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],mobile:["oma-architecture","oma-brainstorm","oma-mobile","oma-pm","oma-qa","oma-debug","oma-scm"],devops:["oma-architecture","oma-brainstorm","oma-tf-infra","oma-dev-workflow","oma-observability","oma-pm","oma-qa","oma-debug","oma-scm"],research:["oma-scholar","oma-market","oma-pdf","oma-hwp","oma-academic-writing","oma-search","oma-translation","oma-scm"],content:["oma-design","oma-image","oma-voice","oma-academic-writing","oma-translation","oma-scm"],all:[...pa.domain,...pa.design,...pa.coordination,...pa.utility,...pa.infrastructure].map((e)=>e.name)}});var fa=v(()=>{Xr();bK();_2()});function ne(e,t,r){function n(a,c){if(!a._zod)Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1});if(a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);let l=s.prototype,u=Object.keys(l);for(let d=0;d<u.length;d++){let p=u[d];if(!(p in a))a[p]=l[p].bind(a)}}let i=r?.Parent??Object;class o extends i{}Object.defineProperty(o,"name",{value:e});function s(a){var c;let l=r?.Parent?new o:this;n(l,a),(c=l._zod).deferred??(c.deferred=[]);for(let u of l._zod.deferred)u();return l}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:(a)=>{if(r?.Parent&&a instanceof r.Parent)return!0;return a?._zod?.traits?.has(e)}}),Object.defineProperty(s,"name",{value:e}),s}function T2(e){if(e)Object.assign(k6,e);return k6}var U9e,vtn,V4,wk,k6;var n3=v(()=>{vtn=Symbol("zod_brand");V4=class V4 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};wk=class wk extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}};(U9e=globalThis).__zod_globalConfig??(U9e.__zod_globalConfig={});k6=globalThis.__zod_globalConfig});function pR(e){let t=Object.values(e).filter((n)=>typeof n==="number");return Object.entries(e).filter(([n,i])=>t.indexOf(+n)===-1).map(([n,i])=>i)}function wK(e,t="|"){return e.map((r)=>EK(r)).join(t)}function Ak(e,t){if(typeof t==="bigint")return t.toString();return t}function fR(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw Error("cached value already set")}}}function mR(e){return e===null||e===void 0}function hR(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function G9e(e,t){let r=e/t,n=Math.round(r),i=Number.EPSILON*Math.max(Math.abs(r),1);if(Math.abs(r-n)<i)return 0;return r-n}function yr(e,t,r){let n=void 0;Object.defineProperty(e,t,{get(){if(n===H9e)return;if(n===void 0)n=H9e,n=r();return n},set(i){Object.defineProperty(e,t,{value:i})},configurable:!0})}function i3(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function n1(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function xK(e){return JSON.stringify(e)}function W9e(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function xk(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function o3(e){if(xk(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let r=t.prototype;if(xk(r)===!1)return!1;if(Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)return!1;return!0}function SK(e){if(o3(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}function i1(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c5(e,t,r){let n=new e._zod.constr(t??e._zod.def);if(!t||r?.parent)n._zod.parent=e;return n}function Ve(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function EK(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function K9e(e){return Object.keys(e).filter((t)=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function o$t(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let o=n1(e._zod.def,{get shape(){let s={};for(let a in t){if(!(a in r.shape))throw Error(`Unrecognized key: "${a}"`);if(!t[a])continue;s[a]=r.shape[a]}return i3(this,"shape",s),s},checks:[]});return c5(e,o)}function s$t(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let o=n1(e._zod.def,{get shape(){let s={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw Error(`Unrecognized key: "${a}"`);if(!t[a])continue;delete s[a]}return i3(this,"shape",s),s},checks:[]});return c5(e,o)}function a$t(e,t){if(!o3(t))throw Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=e._zod.def.shape;for(let s in t)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let i=n1(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t};return i3(this,"shape",o),o}});return c5(e,i)}function c$t(e,t){if(!o3(t))throw Error("Invalid input to safeExtend: expected a plain object");let r=n1(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return i3(this,"shape",n),n}});return c5(e,r)}function l$t(e,t){if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=n1(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return i3(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return c5(e,r)}function u$t(e,t,r){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let s=n1(t._zod.def,{get shape(){let a=t._zod.def.shape,c={...a};if(r)for(let l in r){if(!(l in a))throw Error(`Unrecognized key: "${l}"`);if(!r[l])continue;c[l]=e?new e({type:"optional",innerType:a[l]}):a[l]}else for(let l in a)c[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return i3(this,"shape",c),c},checks:[]});return c5(t,s)}function d$t(e,t,r){let n=n1(t._zod.def,{get shape(){let i=t._zod.def.shape,o={...i};if(r)for(let s in r){if(!(s in o))throw Error(`Unrecognized key: "${s}"`);if(!r[s])continue;o[s]=new e({type:"nonoptional",innerType:i[s]})}else for(let s in i)o[s]=new e({type:"nonoptional",innerType:i[s]});return i3(this,"shape",o),o}});return c5(t,n)}function s3(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Y9e(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function o1(e,t){return t.map((r)=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function dR(e){return typeof e==="string"?e:e?.message}function Bl(e,t,r){let n=e.message?e.message:dR(e.inst?._zod.def?.error?.(e))??dR(t?.error?.(e))??dR(r.customError?.(e))??dR(r.localeError?.(e))??"Invalid input",{inst:i,continue:o,input:s,...a}=e;if(a.path??(a.path=[]),a.message=n,t?.reportInput)a.input=s;return a}function gR(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function X9e(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function a3(...e){let[t,r,n]=e;if(typeof t==="string")return{message:t,code:"custom",input:r,inst:n};return{...t}}var H9e,AK,V9e,q9e,J9e;var Ul=v(()=>{n3();H9e=Symbol("evaluating");AK="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};V9e=fR(()=>{if(k6.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});q9e=new Set(["string","number","symbol"]);J9e={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}});function Q9e(e,t=(r)=>r.message){let r={},n=[];for(let i of e.issues)if(i.path.length>0)r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(t(i));else n.push(t(i));return{formErrors:n,fieldErrors:r}}function eye(e,t=(r)=>r.message){let r={_errors:[]},n=(i,o=[])=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>n({issues:a},[...o,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...o,...s.path]);else{let a=[...o,...s.path];if(a.length===0)r._errors.push(t(s));else{let c=r,l=0;while(l<a.length){let u=a[l];if(l!==a.length-1)c[u]=c[u]||{_errors:[]};else c[u]=c[u]||{_errors:[]},c[u]._errors.push(t(s));c=c[u],l++}}}};return n(e),r}var Z9e=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Ak,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},yR,$K;var CK=v(()=>{n3();Ul();yR=ne("$ZodError",Z9e),$K=ne("$ZodError",Z9e,{Parent:Error})});var vR=(e)=>(t,r,n,i)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new V4;if(s.issues.length){let a=new(i?.Err??e)(s.issues.map((c)=>Bl(c,o,T2())));throw AK(a,i?.callee),a}return s.value},bR=(e)=>async(t,r,n,i)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)s=await s;if(s.issues.length){let a=new(i?.Err??e)(s.issues.map((c)=>Bl(c,o,T2())));throw AK(a,i?.callee),a}return s.value},Sk=(e)=>(t,r,n)=>{let i=n?{...n,async:!1}:{async:!1},o=t._zod.run({value:r,issues:[]},i);if(o instanceof Promise)throw new V4;return o.issues.length?{success:!1,error:new(e??yR)(o.issues.map((s)=>Bl(s,i,T2())))}:{success:!0,data:o.value}},tye,Ek=(e)=>async(t,r,n)=>{let i=n?{...n,async:!0}:{async:!0},o=t._zod.run({value:r,issues:[]},i);if(o instanceof Promise)o=await o;return o.issues.length?{success:!1,error:new e(o.issues.map((s)=>Bl(s,i,T2())))}:{success:!0,data:o.value}},rye,nye=(e)=>(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return vR(e)(t,r,i)},iye=(e)=>(t,r,n)=>vR(e)(t,r,n),oye=(e)=>async(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return bR(e)(t,r,i)},sye=(e)=>async(t,r,n)=>bR(e)(t,r,n),aye=(e)=>(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Sk(e)(t,r,i)},cye=(e)=>(t,r,n)=>Sk(e)(t,r,n),lye=(e)=>async(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Ek(e)(t,r,i)},uye=(e)=>async(t,r,n)=>Ek(e)(t,r,n);var _K=v(()=>{n3();CK();Ul();tye=Sk($K),rye=Ek($K)});function kye(){return new RegExp(f$t,"u")}function Rye(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function Pye(e){return new RegExp(`^${Rye(e)}$`)}function Iye(e){let t=Rye({precision:e.precision}),r=["Z"];if(e.local)r.push("");if(e.offset)r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${_ye}T(?:${n})$`)}var dye,pye,fye,mye,hye,gye,yye,vye,TK=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)},bye,f$t="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wye,xye,Aye,Sye,Eye,RK,$ye,Cye,_ye="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Tye,Oye=(e)=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Mye,PK,Dye,jye,Lye,Nye;var wR=v(()=>{dye=/^[cC][0-9a-z]{6,}$/,pye=/^[0-9a-z]+$/,fye=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,mye=/^[0-9a-vA-V]{20}$/,hye=/^[A-Za-z0-9]{27}$/,gye=/^[a-zA-Z0-9_-]{21}$/,yye=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,vye=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,bye=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;wye=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xye=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Aye=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Sye=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Eye=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,RK=/^[A-Za-z0-9_-]*$/,$ye=/^https?$/,Cye=/^\+[1-9]\d{6,14}$/,Tye=new RegExp(`^${_ye}$`);Mye=/^-?\d+$/,PK=/^-?\d+(?:\.\d+)?$/,Dye=/^(?:true|false)$/i,jye=/^null$/i,Lye=/^[^A-Z]*$/,Nye=/^[^a-z]*$/});var es,Fye,IK,OK,zye,Bye,Uye,Hye,Gye,$k,Wye,Vye,qye,Kye,Jye,Yye,Xye;var xR=v(()=>{n3();wR();Ul();es=ne("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Fye={number:"number",bigint:"bigint",object:"date"},IK=ne("$ZodCheckLessThan",(e,t)=>{es.init(e,t);let r=Fye[typeof t.value];e._zod.onattach.push((n)=>{let i=n._zod.bag,o=(t.inclusive?i.maximum:i.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(t.value<o)if(t.inclusive)i.maximum=t.value;else i.exclusiveMaximum=t.value}),e._zod.check=(n)=>{if(t.inclusive?n.value<=t.value:n.value<t.value)return;n.issues.push({origin:r,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),OK=ne("$ZodCheckGreaterThan",(e,t)=>{es.init(e,t);let r=Fye[typeof t.value];e._zod.onattach.push((n)=>{let i=n._zod.bag,o=(t.inclusive?i.minimum:i.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(t.value>o)if(t.inclusive)i.minimum=t.value;else i.exclusiveMinimum=t.value}),e._zod.check=(n)=>{if(t.inclusive?n.value>=t.value:n.value>t.value)return;n.issues.push({origin:r,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),zye=ne("$ZodCheckMultipleOf",(e,t)=>{es.init(e,t),e._zod.onattach.push((r)=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=(r)=>{if(typeof r.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof r.value==="bigint"?r.value%t.value===BigInt(0):G9e(r.value,t.value)===0)return;r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Bye=ne("$ZodCheckNumberFormat",(e,t)=>{es.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[i,o]=J9e[t.format];e._zod.onattach.push((s)=>{let a=s._zod.bag;if(a.format=t.format,a.minimum=i,a.maximum=o,r)a.pattern=Mye}),e._zod.check=(s)=>{let a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){if(a>0)s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});else s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}if(a<i)s.issues.push({origin:"number",input:a,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!t.abort});if(a>o)s.issues.push({origin:"number",input:a,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!t.abort})}}),Uye=ne("$ZodCheckMaxLength",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag.maximum??Number.POSITIVE_INFINITY;if(t.maximum<i)n._zod.bag.maximum=t.maximum}),e._zod.check=(n)=>{let i=n.value;if(i.length<=t.maximum)return;let s=gR(i);n.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),Hye=ne("$ZodCheckMinLength",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(t.minimum>i)n._zod.bag.minimum=t.minimum}),e._zod.check=(n)=>{let i=n.value;if(i.length>=t.minimum)return;let s=gR(i);n.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),Gye=ne("$ZodCheckLengthEquals",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.minimum=t.length,i.maximum=t.length,i.length=t.length}),e._zod.check=(n)=>{let i=n.value,o=i.length;if(o===t.length)return;let s=gR(i),a=o>t.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),$k=ne("$ZodCheckStringFormat",(e,t)=>{var r,n;if(es.init(e,t),e._zod.onattach.push((i)=>{let o=i._zod.bag;if(o.format=t.format,t.pattern)o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern)}),t.pattern)(r=e._zod).check??(r.check=(i)=>{if(t.pattern.lastIndex=0,t.pattern.test(i.value))return;i.issues.push({origin:"string",code:"invalid_format",format:t.format,input:i.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(n=e._zod).check??(n.check=()=>{})}),Wye=ne("$ZodCheckRegex",(e,t)=>{$k.init(e,t),e._zod.check=(r)=>{if(t.pattern.lastIndex=0,t.pattern.test(r.value))return;r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Vye=ne("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Lye),$k.init(e,t)}),qye=ne("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Nye),$k.init(e,t)}),Kye=ne("$ZodCheckIncludes",(e,t)=>{es.init(e,t);let r=i1(t.includes),n=new RegExp(typeof t.position==="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push((i)=>{let o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=(i)=>{if(i.value.includes(t.includes,t.position))return;i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:i.value,inst:e,continue:!t.abort})}}),Jye=ne("$ZodCheckStartsWith",(e,t)=>{es.init(e,t);let r=new RegExp(`^${i1(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=(n)=>{if(n.value.startsWith(t.prefix))return;n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Yye=ne("$ZodCheckEndsWith",(e,t)=>{es.init(e,t);let r=new RegExp(`.*${i1(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=(n)=>{if(n.value.endsWith(t.suffix))return;n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Xye=ne("$ZodCheckOverwrite",(e,t)=>{es.init(e,t),e._zod.check=(r)=>{r.value=t.tx(r.value)}})});class MK{constructor(e=[]){if(this.content=[],this.indent=0,this)this.args=e}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let r=e.split(`
27
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();if(t&&e.find((n)=>t.is(n)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}});var Fen;var e3=v(()=>{oR();$9e();yk();uK();pK();Fen=new o5});var H4;var vk=v(()=>{H4={name:"oh-my-agent",version:"20.29.1",description:"Agent skills and specialist teams for Claude Code, Codex, Cursor and other coding agents. Load one skill or install domain presets, project hooks and parallel workflows with test gates.",type:"module",bin:{"oh-my-agent":"./bin/cli.js",oma:"./bin/cli.js"},files:["bin","assets/serena"],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-main.js --target node --minify --external @napi-rs/keyring --external jsonc-parser && node ./scripts/write-bin-entry.mjs && bun run check:bundle",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:bundle":"node ./scripts/check-bundle.mjs","check:emit-drift":"node ./scripts/check-emit-drift.mjs","check:repo-archive":"node ./scripts/check-repo-archive.mjs",test:"vitest run","test:coverage":"vitest run --coverage",prepublishOnly:"bun run build"},dependencies:{"@clack/prompts":"^1.7.0","@dagrejs/dagre":"^3.1.1","@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","jsonc-parser":"^3.3.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-gfm":"^4.0.1","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:{"@babel/parser":"7.29.3","@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-orchestration","oma-dev-workflow","oma-tf-infra","oma-scm","oma-pdf","oma-recap"]}}});import{homedir as C9e}from"node:os";import{isAbsolute as xEt,join as AEt,resolve as SEt}from"node:path";function _9e(e,t){let r=Array.from(e).some((n)=>{let i=n.charCodeAt(0);return i<32||i===127});if(!xEt(e)||r)throw Error(`${t} must be an absolute path without control characters`);return SEt(e)}function Yr(e=process.env,t=C9e()){return _9e(e.OMA_HOME||AEt(t,".oma"),"OMA_HOME")}function Cs(e=process.env,t=C9e()){return e.OMA_STATE_HOME===void 0?Yr(e,t):_9e(e.OMA_STATE_HOME,"OMA_STATE_HOME")}var cR=()=>{};import{homedir as EEt}from"node:os";import{join as bk}from"node:path";function $c(e=process.env,t=EEt()){let r=Yr(e,t),n=bk(r,"state");return{home:r,definitions:bk(r,".agents"),state:n,serena:bk(n,"serena"),schedule:bk(r,"schedule"),backup:bk(r,"backup")}}var gi=v(()=>{cR();cR()});import*as s5 from"node:fs";import{homedir as $Et}from"node:os";import*as Fl from"node:path";function R9e(e){if(lR)throw Error("install context already set in this process");lR=e}function P9e(){if(lR===null)throw Error("install context not set — entry point must call setInstallContext()");return lR}function G4(){return P9e().installRoot}function ti(){return P9e().mode}function wt(){try{return ti()}catch{return"project"}}function b6(){try{return G4()}catch{return process.cwd()}}function uR(e,t,r=$Et()){return t==="project"&&Fl.resolve(e)===Fl.resolve(r)}function I9e(e){if(e.global===!0||process.env.OMA_INSTALL_GLOBAL==="1"){let r=Yr();return CEt(r),{installRoot:r,mode:"global"}}return{installRoot:process.cwd(),mode:"project"}}function CEt(e){if(!Fl.isAbsolute(e))throw Error("OMA_HOME must be absolute path");for(let n of T9e)if(e===n||e.startsWith(n+Fl.sep))throw Error(`OMA_HOME=${e} is forbidden (system path ${n})`);let t,r=Fl.resolve(e);try{while(!s5.existsSync(r)){let n=Fl.dirname(r);if(n===r)break;r=n}if(t=s5.realpathSync(r),!s5.statSync(t).isDirectory())throw Error("nearest existing ancestor is not a directory")}catch(n){let i=n instanceof Error?n.message:String(n);throw Error(`OMA_HOME=${e}: ${i}`)}for(let n of T9e)if(t===n||t.startsWith(n+Fl.sep))throw Error(`OMA_HOME=${e} is forbidden (system path ${n})`);try{s5.accessSync(t,s5.constants.W_OK)}catch{throw Error(`OMA_HOME=${e} is not writable`)}}var lR=null,T9e;var yi=v(()=>{gi();T9e=["/etc","/usr","/bin","/boot","/sys","/proc"]});import{join as OEt}from"node:path";function r3(e){return e.endsWith("/")?e:`${e}/`}function C2(e,t){let r=t.split("/").filter((n)=>n.length>0);return OEt(e,...r)}var pr=".agents",t3,jn,t1,itn,otn,stn,MEt=".antigravitycli",M9e,DEt=".migration-backup",jEt="docs/plans",LEt=".qwen/tmp",NEt,FEt,zEt,BEt,UEt,HEt,GEt,hK;var Xr=v(()=>{t3=`${pr}/skills`,jn=`${pr}/results`,t1=`${pr}/state`,itn=`${t1}/sessions`,otn=`${t1}/retry`,stn=`${t1}/archive`,M9e=`${pr}/backup`;NEt=r3(jn),FEt=r3(t1),zEt=r3(MEt),BEt=r3(M9e),UEt=r3(DEt),HEt=r3(jEt),GEt=r3(LEt),hK=[".agents/oma-config.local.cue",".agents/oma-config.local.yaml",zEt,NEt,FEt,BEt,HEt,UEt,GEt]});var Zr="first-fluke/oh-my-agent",Jt,zl,gK,WEt,VEt,W4,ri;var _2=v(()=>{Xr();Jt=t3,zl=["antigravity","claude","codex","commandcode","cursor","grok","kimi","kiro","qwen"],gK=["pi","opencode"],WEt=["copilot","hermes"],VEt=["zcode"],W4=[...zl,...gK,...WEt,...VEt].sort(),ri={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"}}});function pe(e,t="Output as JSON"){return e.option("--json",t).option("--output <format>","Output format (text/json)",(r)=>{let n=r.trim().toLowerCase();if(!kk.includes(n))throw Error(`Invalid output format: ${r}. Expected one of ${kk.join(", ")}`);return n})}function qEt(e){if(e?.json)return"json";let t=e?.output?.trim().toLowerCase();if(t&&kk.includes(t))return t;if(process.env[L9e]?.trim().toLowerCase()==="json")return"json";return"text"}function fe(e){return qEt(e)==="json"}function N9e(e){let t=e.at(-1);return t instanceof o5?t:null}function KEt(e){let t=N9e(e);if(t)return t.opts();let r=e.at(-1);return r&&typeof r==="object"?r:{}}function JEt(e){if(e instanceof Error)return e.message;return String(e)}function r1(e){throw Error(e)}function vK(e,t){for(let r of e){let n=r.charCodeAt(0);if(n>=0&&n<=31||n===127)r1(`${t} must not contain control characters`)}}function YEt(e,t){if(vK(e,t),/[?#%]/.test(e))r1(`${t} must not contain ?, #, or %`);if(e.includes(".."))r1(`${t} must not contain '..'`)}function XEt(e,t){vK(e,t);try{new URL(e)}catch{r1(`${t} must be a valid absolute URL`)}}function yK(e,t,r="text"){if(typeof e==="string"){if(r==="identifier"){YEt(e,t);return}if(r==="url"){XEt(e,t);return}vK(e,t);return}if(Array.isArray(e))for(let[n,i]of e.entries())yK(i,`${t}[${n}]`,r)}function j9e(e){let t=e.toLowerCase();if(t==="url"||t.endsWith("url"))return"url";if(t.includes("id")||t.includes("type")||t.includes("vendor")||t.includes("session"))return"identifier";return"text"}function ZEt(e){let t=e.vendor;if(typeof t==="string"){if(t.split(",").map((o)=>o.trim()).filter(Boolean).filter((o)=>!W4.includes(o)).length>0)r1(`vendor must be one of ${W4.join(", ")}`)}let r=e.output;if(typeof r==="string"&&!kk.includes(r))r1(`output must be one of ${kk.join(", ")}`)}function QEt(e){let t=e.processedArgs??e.args??[];(e.registeredArguments??[]).forEach((i,o)=>{let s=i.name?.()||String(o),a=t[o];if(yK(a,s,j9e(s)),s==="agent-type"&&typeof a==="string"&&!D9e.includes(a))r1(`agent-type must be one of ${D9e.join(", ")}`)});let n=e.opts();ZEt(n);for(let[i,o]of Object.entries(n))yK(o,i,j9e(i))}function e$t(e){return(e.registeredArguments??[]).map((t)=>({name:t.name?.()||"",required:!!t.required,variadic:!!t.variadic}))}function t$t(e){return e.options.map((t)=>({flags:t.flags,long:t.long||void 0,short:t.short||void 0,description:t.description||"",required:!!t.required||!!t.mandatory,optional:!!t.optional,defaultValue:t.defaultValue}))}function F9e(e){let t=[],r=e;while(r?.parent)t.unshift(r.name()),r=r.parent;return t.join(" ")}function r$t(e){return e.options.some((t)=>t.long==="--json"||t.long==="--output")}function n$t(e){return e.options.some((t)=>t.long==="--dry-run")}function z9e(e){return{name:e.name(),path:F9e(e),summary:e.summary()||void 0,description:e.description(),arguments:e$t(e),options:t$t(e),supportsJsonOutput:r$t(e),supportsDryRun:n$t(e),subcommands:e.commands.filter((t)=>!t._hidden).map((t)=>z9e(t))}}function i$t(e,t){if(!t?.trim())return e;let r=t.trim(),n=[...e.commands];while(n.length>0){let i=n.shift();if(!i)continue;if(i.name()===r||F9e(i)===r)return i;n.push(...i.commands)}return null}function B9e(e,t){let r=i$t(e,t);if(!r)r1(`Unknown command: ${t}`);let n={name:e.name(),version:e.version(),description:e.description(),env:{[L9e]:"Set to json to force machine-readable output on commands that support it."},command:z9e(r)};console.log(JSON.stringify(n,null,2))}function Y(e,t={}){return async(...r)=>{let n=N9e(r);if(n&&r.length>=2)r[r.length-2]=n.optsWithGlobals();let i=KEt(r);try{if(n)QEt(n);await e(...r)}catch(o){let s=JEt(o);if(t.supportsJsonOutput&&fe(i))console.log(JSON.stringify({error:s},null,2));else console.error(s);let a=o&&typeof o==="object"&&"exitCode"in o?o.exitCode:void 0;process.exitCode=typeof a==="number"&&Number.isInteger(a)&&a>0&&a<=255?a:1}}}var L9e="OH_MY_AG_OUTPUT_FORMAT",kk,D9e;var Ct=v(()=>{e3();_2();kk=["text","json"],D9e=["backend","frontend","mobile","qa","debug","pm"]});var pa,a5;var bK=v(()=>{pa={domain:[{name:"oma-architecture",desc:"Evaluate system boundaries and architectural tradeoffs. Use for architecture decisions, design reviews, and ADRs."},{name:"oma-backend",desc:"Implement server APIs, authentication, and application data access. Schema modeling and query tuning use oma-db."},{name:"oma-db",desc:"Design schemas and migrations, tune queries, or plan vector retrieval and database operations. Application API implementation uses oma-backend."},{name:"oma-frontend",desc:"Implement or modify web UI in React, Next.js, or Angular. Use for components, pages, styles, forms, and frontend state or data flows."},{name:"oma-mobile",desc:"Implement Flutter, React Native, native Swift, or native Kotlin Android apps. Use for mobile screens, widgets, platform integrations, and application data flows."}],design:[{name:"oma-design",desc:"Define or review a visual system, DESIGN.md, or redesign direction. Use for typography, layout, color, motion, and interaction design decisions."}],coordination:[{name:"oma-brainstorm",desc:"Explore goals, constraints, and alternative approaches before choosing a design. Use when the user requests ideation or design exploration."},{name:"oma-coordination",desc:"Coordinate assigned specialist tasks and handoffs manually. Use when supervising a multi-agent project step by step."},{name:"oma-orchestration",desc:"Dispatch and supervise parallel specialist agents with durable task state. Use when automated multi-agent execution is requested."},{name:"oma-pm",desc:"Turn product requirements into scoped tasks with dependencies and acceptance criteria. Use for implementation planning and prioritization."},{name:"oma-qa",desc:"Review changes for correctness, security, accessibility, and performance. Use for scoped quality reviews or verification plans; bug fixes use oma-debug."}],utility:[{name:"oma-academic-writing",desc:"Draft and revise academic prose against a rubric, evidence, and citation requirements. Use for essays, reports, literature reviews, or academic style audits."},{name:"oma-debug",desc:"Diagnose a reproducible failure, fix its cause, and verify the regression. Use for crashes, incorrect behavior, and failing tests."},{name:"oma-docs",desc:"Check documentation references, sync docs to code changes, and detect translation drift. Use for documentation maintenance in a repository."},{name:"oma-explanation",desc:"Create an offline HTML explanation of a code change (diff, PR, branch) or of a topic, system, or question. Use when a visual walkthrough document is requested."},{name:"oma-hwp",desc:"Convert Hangul HWP, HWPX, or HWPML documents to Markdown with kordoc. Use for text, table, and image extraction from these formats."},{name:"oma-image",desc:"Generate raster images or reference-guided variations through the OMA image CLI. Use for image assets or explicit vendor comparisons; pixel editing uses an editor."},{name:"oma-market",desc:"Research customer pain points, trends, and competitors through the OMA market engine. Use for market discovery or voice-of-customer analysis."},{name:"oma-pdf",desc:"Extract PDF text, headings, tables, and images into Markdown using opendataloader-pdf. Use for PDF parsing, not PDF layout creation."},{name:"oma-recap",desc:"Summarize AI conversation histories for a specified date or period. Use for daily work recaps and cross-tool activity summaries."},{name:"oma-refactor",desc:"Restructure existing code while preserving observable behavior. Use for targeted technical debt or hotspot work with characterization tests."},{name:"oma-scholar",desc:"Search academic literature and generate, validate, or compare Knows paper sidecars. Use for claim/evidence analysis and literature synthesis."},{name:"oma-scm",desc:"Manage Git branches, merges, conflicts, commits, and release baselines. Use for repository history and change-management operations."},{name:"oma-search",desc:"Find external documentation, web sources, or remote code with citations. Local code navigation uses the configured code tools."},{name:"oma-security",desc:"Scan application source, agent skills, and MCP components; run penetration tests against scoped web test deployments, validate findings, and configure scan gates. Use oma-qa for broad quality reviews and domain skills for remediation."},{name:"oma-skill-creation",desc:"Create or revise OMA skills and their references. Use for skill routing, execution contracts, conditional loading, and authoring validation."},{name:"oma-slide",desc:"Create, import, revise, or export presentation decks through the OMA slide CLI or the ppt-master route. Use for HTML slides, editable PPTX, and PDF, PNG, or PPTX deck delivery."},{name:"oma-translation",desc:"Translate or revise localized UI strings and prose while preserving meaning, terminology, placeholders, and structure."},{name:"oma-video",desc:"Create videos through the OMA video CLI, or analyze and edit existing clips with media tools. Use for frame extraction, visual analysis, silence cuts, dubbing assembly, sound effects, scripts, and composition; audio-only work uses oma-voice."},{name:"oma-voice",desc:"Generate or transcribe speech with Voicebox or VoiceStudio, or process existing audio locally. Use for narration, transcripts, timed speech, and loudness conversion; video editing uses oma-video."}],infrastructure:[{name:"oma-dev-workflow",desc:"Configure development tasks, git hooks, CI/CD, or release automation. Use when creating or fixing a repository development workflow."},{name:"oma-observability",desc:"Design or troubleshoot telemetry, SLOs, and incident diagnostics. Route to the relevant signal, system boundary, or vendor guide."},{name:"oma-tf-infra",desc:"Create or review Terraform infrastructure and plans. Use for cloud resources, IAM, networking, state management, and infrastructure changes."}]},a5={security:["oma-security","oma-architecture","oma-qa","oma-debug","oma-refactor","oma-scm"],fullstack:["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-backend","oma-mobile","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-tf-infra","oma-dev-workflow"],"fullstack-web":["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],"fullstack-mobile":["oma-architecture","oma-brainstorm","oma-design","oma-mobile","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],frontend:["oma-architecture","oma-brainstorm","oma-design","oma-frontend","oma-pm","oma-qa","oma-debug","oma-scm"],backend:["oma-architecture","oma-brainstorm","oma-backend","oma-db","oma-pm","oma-qa","oma-debug","oma-scm","oma-dev-workflow"],mobile:["oma-architecture","oma-brainstorm","oma-mobile","oma-pm","oma-qa","oma-debug","oma-scm"],devops:["oma-architecture","oma-brainstorm","oma-tf-infra","oma-dev-workflow","oma-observability","oma-pm","oma-qa","oma-debug","oma-scm"],research:["oma-scholar","oma-market","oma-pdf","oma-hwp","oma-academic-writing","oma-search","oma-translation","oma-scm"],content:["oma-design","oma-image","oma-voice","oma-academic-writing","oma-translation","oma-scm"],all:[...pa.domain,...pa.design,...pa.coordination,...pa.utility,...pa.infrastructure].map((e)=>e.name)}});var fa=v(()=>{Xr();bK();_2()});function ne(e,t,r){function n(a,c){if(!a._zod)Object.defineProperty(a,"_zod",{value:{def:c,constr:s,traits:new Set},enumerable:!1});if(a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);let l=s.prototype,u=Object.keys(l);for(let d=0;d<u.length;d++){let p=u[d];if(!(p in a))a[p]=l[p].bind(a)}}let i=r?.Parent??Object;class o extends i{}Object.defineProperty(o,"name",{value:e});function s(a){var c;let l=r?.Parent?new o:this;n(l,a),(c=l._zod).deferred??(c.deferred=[]);for(let u of l._zod.deferred)u();return l}return Object.defineProperty(s,"init",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:(a)=>{if(r?.Parent&&a instanceof r.Parent)return!0;return a?._zod?.traits?.has(e)}}),Object.defineProperty(s,"name",{value:e}),s}function T2(e){if(e)Object.assign(k6,e);return k6}var U9e,vtn,V4,wk,k6;var n3=v(()=>{vtn=Symbol("zod_brand");V4=class V4 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};wk=class wk extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}};(U9e=globalThis).__zod_globalConfig??(U9e.__zod_globalConfig={});k6=globalThis.__zod_globalConfig});function pR(e){let t=Object.values(e).filter((n)=>typeof n==="number");return Object.entries(e).filter(([n,i])=>t.indexOf(+n)===-1).map(([n,i])=>i)}function wK(e,t="|"){return e.map((r)=>EK(r)).join(t)}function Ak(e,t){if(typeof t==="bigint")return t.toString();return t}function fR(e){return{get value(){{let r=e();return Object.defineProperty(this,"value",{value:r}),r}throw Error("cached value already set")}}}function mR(e){return e===null||e===void 0}function hR(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function G9e(e,t){let r=e/t,n=Math.round(r),i=Number.EPSILON*Math.max(Math.abs(r),1);if(Math.abs(r-n)<i)return 0;return r-n}function yr(e,t,r){let n=void 0;Object.defineProperty(e,t,{get(){if(n===H9e)return;if(n===void 0)n=H9e,n=r();return n},set(i){Object.defineProperty(e,t,{value:i})},configurable:!0})}function i3(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function n1(...e){let t={};for(let r of e){let n=Object.getOwnPropertyDescriptors(r);Object.assign(t,n)}return Object.defineProperties({},t)}function xK(e){return JSON.stringify(e)}function W9e(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function xk(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function o3(e){if(xk(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let r=t.prototype;if(xk(r)===!1)return!1;if(Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)return!1;return!0}function SK(e){if(o3(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}function i1(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c5(e,t,r){let n=new e._zod.constr(t??e._zod.def);if(!t||r?.parent)n._zod.parent=e;return n}function Ve(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function EK(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function K9e(e){return Object.keys(e).filter((t)=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}function o$t(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let o=n1(e._zod.def,{get shape(){let s={};for(let a in t){if(!(a in r.shape))throw Error(`Unrecognized key: "${a}"`);if(!t[a])continue;s[a]=r.shape[a]}return i3(this,"shape",s),s},checks:[]});return c5(e,o)}function s$t(e,t){let r=e._zod.def,n=r.checks;if(n&&n.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let o=n1(e._zod.def,{get shape(){let s={...e._zod.def.shape};for(let a in t){if(!(a in r.shape))throw Error(`Unrecognized key: "${a}"`);if(!t[a])continue;delete s[a]}return i3(this,"shape",s),s},checks:[]});return c5(e,o)}function a$t(e,t){if(!o3(t))throw Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let o=e._zod.def.shape;for(let s in t)if(Object.getOwnPropertyDescriptor(o,s)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let i=n1(e._zod.def,{get shape(){let o={...e._zod.def.shape,...t};return i3(this,"shape",o),o}});return c5(e,i)}function c$t(e,t){if(!o3(t))throw Error("Invalid input to safeExtend: expected a plain object");let r=n1(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return i3(this,"shape",n),n}});return c5(e,r)}function l$t(e,t){if(e._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let r=n1(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return i3(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return c5(e,r)}function u$t(e,t,r){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let s=n1(t._zod.def,{get shape(){let a=t._zod.def.shape,c={...a};if(r)for(let l in r){if(!(l in a))throw Error(`Unrecognized key: "${l}"`);if(!r[l])continue;c[l]=e?new e({type:"optional",innerType:a[l]}):a[l]}else for(let l in a)c[l]=e?new e({type:"optional",innerType:a[l]}):a[l];return i3(this,"shape",c),c},checks:[]});return c5(t,s)}function d$t(e,t,r){let n=n1(t._zod.def,{get shape(){let i=t._zod.def.shape,o={...i};if(r)for(let s in r){if(!(s in o))throw Error(`Unrecognized key: "${s}"`);if(!r[s])continue;o[s]=new e({type:"nonoptional",innerType:i[s]})}else for(let s in i)o[s]=new e({type:"nonoptional",innerType:i[s]});return i3(this,"shape",o),o}});return c5(t,n)}function s3(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function Y9e(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function o1(e,t){return t.map((r)=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function dR(e){return typeof e==="string"?e:e?.message}function Bl(e,t,r){let n=e.message?e.message:dR(e.inst?._zod.def?.error?.(e))??dR(t?.error?.(e))??dR(r.customError?.(e))??dR(r.localeError?.(e))??"Invalid input",{inst:i,continue:o,input:s,...a}=e;if(a.path??(a.path=[]),a.message=n,t?.reportInput)a.input=s;return a}function gR(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function X9e(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function a3(...e){let[t,r,n]=e;if(typeof t==="string")return{message:t,code:"custom",input:r,inst:n};return{...t}}var H9e,AK,V9e,q9e,J9e;var Ul=v(()=>{n3();H9e=Symbol("evaluating");AK="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};V9e=fR(()=>{if(k6.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});q9e=new Set(["string","number","symbol"]);J9e={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}});function Q9e(e,t=(r)=>r.message){let r={},n=[];for(let i of e.issues)if(i.path.length>0)r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(t(i));else n.push(t(i));return{formErrors:n,fieldErrors:r}}function eye(e,t=(r)=>r.message){let r={_errors:[]},n=(i,o=[])=>{for(let s of i.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((a)=>n({issues:a},[...o,...s.path]));else if(s.code==="invalid_key")n({issues:s.issues},[...o,...s.path]);else if(s.code==="invalid_element")n({issues:s.issues},[...o,...s.path]);else{let a=[...o,...s.path];if(a.length===0)r._errors.push(t(s));else{let c=r,l=0;while(l<a.length){let u=a[l];if(l!==a.length-1)c[u]=c[u]||{_errors:[]};else c[u]=c[u]||{_errors:[]},c[u]._errors.push(t(s));c=c[u],l++}}}};return n(e),r}var Z9e=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Ak,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},yR,$K;var CK=v(()=>{n3();Ul();yR=ne("$ZodError",Z9e),$K=ne("$ZodError",Z9e,{Parent:Error})});var vR=(e)=>(t,r,n,i)=>{let o=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new V4;if(s.issues.length){let a=new(i?.Err??e)(s.issues.map((c)=>Bl(c,o,T2())));throw AK(a,i?.callee),a}return s.value},bR=(e)=>async(t,r,n,i)=>{let o=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)s=await s;if(s.issues.length){let a=new(i?.Err??e)(s.issues.map((c)=>Bl(c,o,T2())));throw AK(a,i?.callee),a}return s.value},Sk=(e)=>(t,r,n)=>{let i=n?{...n,async:!1}:{async:!1},o=t._zod.run({value:r,issues:[]},i);if(o instanceof Promise)throw new V4;return o.issues.length?{success:!1,error:new(e??yR)(o.issues.map((s)=>Bl(s,i,T2())))}:{success:!0,data:o.value}},tye,Ek=(e)=>async(t,r,n)=>{let i=n?{...n,async:!0}:{async:!0},o=t._zod.run({value:r,issues:[]},i);if(o instanceof Promise)o=await o;return o.issues.length?{success:!1,error:new e(o.issues.map((s)=>Bl(s,i,T2())))}:{success:!0,data:o.value}},rye,nye=(e)=>(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return vR(e)(t,r,i)},iye=(e)=>(t,r,n)=>vR(e)(t,r,n),oye=(e)=>async(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return bR(e)(t,r,i)},sye=(e)=>async(t,r,n)=>bR(e)(t,r,n),aye=(e)=>(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Sk(e)(t,r,i)},cye=(e)=>(t,r,n)=>Sk(e)(t,r,n),lye=(e)=>async(t,r,n)=>{let i=n?{...n,direction:"backward"}:{direction:"backward"};return Ek(e)(t,r,i)},uye=(e)=>async(t,r,n)=>Ek(e)(t,r,n);var _K=v(()=>{n3();CK();Ul();tye=Sk($K),rye=Ek($K)});function kye(){return new RegExp(f$t,"u")}function Rye(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function Pye(e){return new RegExp(`^${Rye(e)}$`)}function Iye(e){let t=Rye({precision:e.precision}),r=["Z"];if(e.local)r.push("");if(e.offset)r.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let n=`${t}(?:${r.join("|")})`;return new RegExp(`^${_ye}T(?:${n})$`)}var dye,pye,fye,mye,hye,gye,yye,vye,TK=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)},bye,f$t="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wye,xye,Aye,Sye,Eye,RK,$ye,Cye,_ye="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Tye,Oye=(e)=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},Mye,PK,Dye,jye,Lye,Nye;var wR=v(()=>{dye=/^[cC][0-9a-z]{6,}$/,pye=/^[0-9a-z]+$/,fye=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,mye=/^[0-9a-vA-V]{20}$/,hye=/^[A-Za-z0-9]{27}$/,gye=/^[a-zA-Z0-9_-]{21}$/,yye=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,vye=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,bye=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;wye=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,xye=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Aye=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Sye=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Eye=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,RK=/^[A-Za-z0-9_-]*$/,$ye=/^https?$/,Cye=/^\+[1-9]\d{6,14}$/,Tye=new RegExp(`^${_ye}$`);Mye=/^-?\d+$/,PK=/^-?\d+(?:\.\d+)?$/,Dye=/^(?:true|false)$/i,jye=/^null$/i,Lye=/^[^A-Z]*$/,Nye=/^[^a-z]*$/});var es,Fye,IK,OK,zye,Bye,Uye,Hye,Gye,$k,Wye,Vye,qye,Kye,Jye,Yye,Xye;var xR=v(()=>{n3();wR();Ul();es=ne("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])}),Fye={number:"number",bigint:"bigint",object:"date"},IK=ne("$ZodCheckLessThan",(e,t)=>{es.init(e,t);let r=Fye[typeof t.value];e._zod.onattach.push((n)=>{let i=n._zod.bag,o=(t.inclusive?i.maximum:i.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(t.value<o)if(t.inclusive)i.maximum=t.value;else i.exclusiveMaximum=t.value}),e._zod.check=(n)=>{if(t.inclusive?n.value<=t.value:n.value<t.value)return;n.issues.push({origin:r,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),OK=ne("$ZodCheckGreaterThan",(e,t)=>{es.init(e,t);let r=Fye[typeof t.value];e._zod.onattach.push((n)=>{let i=n._zod.bag,o=(t.inclusive?i.minimum:i.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(t.value>o)if(t.inclusive)i.minimum=t.value;else i.exclusiveMinimum=t.value}),e._zod.check=(n)=>{if(t.inclusive?n.value>=t.value:n.value>t.value)return;n.issues.push({origin:r,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),zye=ne("$ZodCheckMultipleOf",(e,t)=>{es.init(e,t),e._zod.onattach.push((r)=>{var n;(n=r._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=(r)=>{if(typeof r.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof r.value==="bigint"?r.value%t.value===BigInt(0):G9e(r.value,t.value)===0)return;r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),Bye=ne("$ZodCheckNumberFormat",(e,t)=>{es.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),n=r?"int":"number",[i,o]=J9e[t.format];e._zod.onattach.push((s)=>{let a=s._zod.bag;if(a.format=t.format,a.minimum=i,a.maximum=o,r)a.pattern=Mye}),e._zod.check=(s)=>{let a=s.value;if(r){if(!Number.isInteger(a)){s.issues.push({expected:n,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){if(a>0)s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});else s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,inclusive:!0,continue:!t.abort});return}}if(a<i)s.issues.push({origin:"number",input:a,code:"too_small",minimum:i,inclusive:!0,inst:e,continue:!t.abort});if(a>o)s.issues.push({origin:"number",input:a,code:"too_big",maximum:o,inclusive:!0,inst:e,continue:!t.abort})}}),Uye=ne("$ZodCheckMaxLength",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag.maximum??Number.POSITIVE_INFINITY;if(t.maximum<i)n._zod.bag.maximum=t.maximum}),e._zod.check=(n)=>{let i=n.value;if(i.length<=t.maximum)return;let s=gR(i);n.issues.push({origin:s,code:"too_big",maximum:t.maximum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),Hye=ne("$ZodCheckMinLength",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(t.minimum>i)n._zod.bag.minimum=t.minimum}),e._zod.check=(n)=>{let i=n.value;if(i.length>=t.minimum)return;let s=gR(i);n.issues.push({origin:s,code:"too_small",minimum:t.minimum,inclusive:!0,input:i,inst:e,continue:!t.abort})}}),Gye=ne("$ZodCheckLengthEquals",(e,t)=>{var r;es.init(e,t),(r=e._zod.def).when??(r.when=(n)=>{let i=n.value;return!mR(i)&&i.length!==void 0}),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.minimum=t.length,i.maximum=t.length,i.length=t.length}),e._zod.check=(n)=>{let i=n.value,o=i.length;if(o===t.length)return;let s=gR(i),a=o>t.length;n.issues.push({origin:s,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),$k=ne("$ZodCheckStringFormat",(e,t)=>{var r,n;if(es.init(e,t),e._zod.onattach.push((i)=>{let o=i._zod.bag;if(o.format=t.format,t.pattern)o.patterns??(o.patterns=new Set),o.patterns.add(t.pattern)}),t.pattern)(r=e._zod).check??(r.check=(i)=>{if(t.pattern.lastIndex=0,t.pattern.test(i.value))return;i.issues.push({origin:"string",code:"invalid_format",format:t.format,input:i.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})});else(n=e._zod).check??(n.check=()=>{})}),Wye=ne("$ZodCheckRegex",(e,t)=>{$k.init(e,t),e._zod.check=(r)=>{if(t.pattern.lastIndex=0,t.pattern.test(r.value))return;r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Vye=ne("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Lye),$k.init(e,t)}),qye=ne("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Nye),$k.init(e,t)}),Kye=ne("$ZodCheckIncludes",(e,t)=>{es.init(e,t);let r=i1(t.includes),n=new RegExp(typeof t.position==="number"?`^.{${t.position}}${r}`:r);t.pattern=n,e._zod.onattach.push((i)=>{let o=i._zod.bag;o.patterns??(o.patterns=new Set),o.patterns.add(n)}),e._zod.check=(i)=>{if(i.value.includes(t.includes,t.position))return;i.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:i.value,inst:e,continue:!t.abort})}}),Jye=ne("$ZodCheckStartsWith",(e,t)=>{es.init(e,t);let r=new RegExp(`^${i1(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=(n)=>{if(n.value.startsWith(t.prefix))return;n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Yye=ne("$ZodCheckEndsWith",(e,t)=>{es.init(e,t);let r=new RegExp(`.*${i1(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.onattach.push((n)=>{let i=n._zod.bag;i.patterns??(i.patterns=new Set),i.patterns.add(r)}),e._zod.check=(n)=>{if(n.value.endsWith(t.suffix))return;n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Xye=ne("$ZodCheckOverwrite",(e,t)=>{es.init(e,t),e._zod.check=(r)=>{r.value=t.tx(r.value)}})});class MK{constructor(e=[]){if(this.content=[],this.indent=0,this)this.args=e}indented(e){this.indent+=1,e(this),this.indent-=1}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let r=e.split(`
28
28
  `).filter((o)=>o),n=Math.min(...r.map((o)=>o.length-o.trimStart().length)),i=r.map((o)=>o.slice(n)).map((o)=>" ".repeat(this.indent*2)+o);for(let o of i)this.content.push(o)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[""]).map((i)=>` ${i}`)];return new e(...t,n.join(`
29
29
  `))}}var Qye;var DK=v(()=>{Qye={major:4,minor:4,patch:3}});function C0e(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}function m$t(e){if(!RK.test(e))return!1;let t=e.replace(/[-_]/g,(n)=>n==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return C0e(r)}function h$t(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[n]=r;if(!n)return!1;let i=JSON.parse(atob(n));if("typ"in i&&i?.typ!=="JWT")return!1;if(!i.alg)return!1;if(t&&(!("alg"in i)||i.alg!==t))return!1;return!0}catch{return!1}}function e0e(e,t,r){if(e.issues.length)t.issues.push(...o1(r,e.issues));t.value[r]=e.value}function SR(e,t,r,n,i,o){let s=r in n;if(e.issues.length){if(i&&o&&!s)return;t.issues.push(...o1(r,e.issues))}if(!s&&!i){if(!e.issues.length)t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}if(e.value===void 0){if(s)t.value[r]=void 0}else t.value[r]=e.value}function N0e(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let r=K9e(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function F0e(e,t,r,n,i,o){let s=[],a=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin==="optional",d=c.optout==="optional";for(let p in t){if(p==="__proto__")continue;if(a.has(p))continue;if(l==="never"){s.push(p);continue}let f=c.run({value:t[p],issues:[]},n);if(f instanceof Promise)e.push(f.then((m)=>SR(m,r,p,t,u,d)));else SR(f,r,p,t,u,d)}if(s.length)r.issues.push({code:"unrecognized_keys",keys:s,input:t,inst:o});if(!e.length)return r;return Promise.all(e).then(()=>r)}function t0e(e,t,r,n){for(let o of e)if(o.issues.length===0)return t.value=o.value,t;let i=e.filter((o)=>!s3(o));if(i.length===1)return t.value=i[0].value,i[0];return t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map((o)=>o.issues.map((s)=>Bl(s,n,T2())))}),t}function jK(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(o3(e)&&o3(t)){let r=Object.keys(t),n=Object.keys(e).filter((o)=>r.indexOf(o)!==-1),i={...e,...t};for(let o of n){let s=jK(e[o],t[o]);if(!s.valid)return{valid:!1,mergeErrorPath:[o,...s.mergeErrorPath]};i[o]=s.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let n=0;n<e.length;n++){let i=e[n],o=t[n],s=jK(i,o);if(!s.valid)return{valid:!1,mergeErrorPath:[n,...s.mergeErrorPath]};r.push(s.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function r0e(e,t,r){let n=new Map,i;for(let a of t.issues)if(a.code==="unrecognized_keys"){i??(i=a);for(let c of a.keys){if(!n.has(c))n.set(c,{});n.get(c).l=!0}}else e.issues.push(a);for(let a of r.issues)if(a.code==="unrecognized_keys")for(let c of a.keys){if(!n.has(c))n.set(c,{});n.get(c).r=!0}else e.issues.push(a);let o=[...n].filter(([,a])=>a.l&&a.r).map(([a])=>a);if(o.length&&i)e.issues.push({...i,keys:o});if(s3(e))return e;let s=jK(t.value,r.value);if(!s.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(s.mergeErrorPath)}`);return e.value=s.data,e}function n0e(e,t){if(t===void 0&&(e.issues.length||e.fallback))return{issues:[],value:void 0};return e}function i0e(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}function o0e(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}function AR(e,t,r){if(e.issues.length)return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},r)}function s0e(e){return e.value=Object.freeze(e.value),e}function a0e(e,t,r,n){if(!e){let i={code:"custom",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};if(n._zod.def.params)i.params=n._zod.def.params;t.issues.push(a3(i))}}var Rn,ER,Ln,c0e,l0e,u0e,d0e,p0e,f0e,m0e,h0e,g0e,y0e,v0e,b0e,k0e,w0e,x0e,A0e,S0e,E0e,$0e,_0e,T0e,R0e,P0e,LK,I0e,O0e,M0e,D0e,j0e,L0e,g$t,z0e,B0e,U0e,H0e,G0e,W0e,V0e,NK,q0e,K0e,J0e,Y0e,X0e,Z0e,Q0e,e8e,t8e,r8e;var n8e=v(()=>{xR();n3();_K();wR();Ul();DK();Ul();Rn=ne("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Qye;let n=[...e._zod.def.checks??[]];if(e._zod.traits.has("$ZodCheck"))n.unshift(e);for(let i of n)for(let o of i._zod.onattach)o(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let i=(s,a,c)=>{let l=s3(s),u;for(let d of a){if(d._zod.def.when){if(Y9e(s))continue;if(!d._zod.def.when(s))continue}else if(l)continue;let p=s.issues.length,f=d._zod.check(s);if(f instanceof Promise&&c?.async===!1)throw new V4;if(u||f instanceof Promise)u=(u??Promise.resolve()).then(async()=>{if(await f,s.issues.length===p)return;if(!l)l=s3(s,p)});else{if(s.issues.length===p)continue;if(!l)l=s3(s,p)}}if(u)return u.then(()=>s);return s},o=(s,a,c)=>{if(s3(s))return s.aborted=!0,s;let l=i(a,n,c);if(l instanceof Promise){if(c.async===!1)throw new V4;return l.then((u)=>e._zod.parse(u,c))}return e._zod.parse(l,c)};e._zod.run=(s,a)=>{if(a.skipChecks)return e._zod.parse(s,a);if(a.direction==="backward"){let l=e._zod.parse({value:s.value,issues:[]},{...a,skipChecks:!0});if(l instanceof Promise)return l.then((u)=>o(u,s,a));return o(l,s,a)}let c=e._zod.parse(s,a);if(c instanceof Promise){if(a.async===!1)throw new V4;return c.then((l)=>i(l,n,a))}return i(c,n,a)}}yr(e,"~standard",()=>({validate:(i)=>{try{let o=tye(e,i);return o.success?{value:o.data}:{issues:o.error?.issues}}catch(o){return rye(e,i).then((s)=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:"zod",version:1}))}),ER=ne("$ZodString",(e,t)=>{Rn.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Oye(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch(i){}if(typeof r.value==="string")return r;return r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),Ln=ne("$ZodStringFormat",(e,t)=>{$k.init(e,t),ER.init(e,t)}),c0e=ne("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=vye),Ln.init(e,t)}),l0e=ne("$ZodUUID",(e,t)=>{if(t.version){let n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=TK(n))}else t.pattern??(t.pattern=TK());Ln.init(e,t)}),u0e=ne("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=bye),Ln.init(e,t)}),d0e=ne("$ZodURL",(e,t)=>{Ln.init(e,t),e._zod.check=(r)=>{try{let n=r.value.trim();if(!t.normalize&&t.protocol?.source===$ye.source){if(!/^https?:\/\//i.test(n)){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}}let i=new URL(n);if(t.hostname){if(t.hostname.lastIndex=0,!t.hostname.test(i.hostname))r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort})}if(t.protocol){if(t.protocol.lastIndex=0,!t.protocol.test(i.protocol.endsWith(":")?i.protocol.slice(0,-1):i.protocol))r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort})}if(t.normalize)r.value=i.href;else r.value=n;return}catch(n){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),p0e=ne("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=kye()),Ln.init(e,t)}),f0e=ne("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=gye),Ln.init(e,t)}),m0e=ne("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=dye),Ln.init(e,t)}),h0e=ne("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=pye),Ln.init(e,t)}),g0e=ne("$ZodULID",(e,t)=>{t.pattern??(t.pattern=fye),Ln.init(e,t)}),y0e=ne("$ZodXID",(e,t)=>{t.pattern??(t.pattern=mye),Ln.init(e,t)}),v0e=ne("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=hye),Ln.init(e,t)}),b0e=ne("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Iye(t)),Ln.init(e,t)}),k0e=ne("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Tye),Ln.init(e,t)}),w0e=ne("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Pye(t)),Ln.init(e,t)}),x0e=ne("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=yye),Ln.init(e,t)}),A0e=ne("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=wye),Ln.init(e,t),e._zod.bag.format="ipv4"}),S0e=ne("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=xye),Ln.init(e,t),e._zod.bag.format="ipv6",e._zod.check=(r)=>{try{new URL(`http://[${r.value}]`)}catch{r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}}}),E0e=ne("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Aye),Ln.init(e,t)}),$0e=ne("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Sye),Ln.init(e,t),e._zod.check=(r)=>{let n=r.value.split("/");try{if(n.length!==2)throw Error();let[i,o]=n;if(!o)throw Error();let s=Number(o);if(`${s}`!==o)throw Error();if(s<0||s>128)throw Error();new URL(`http://[${i}]`)}catch{r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}}});_0e=ne("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Eye),Ln.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=(r)=>{if(C0e(r.value))return;r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}});T0e=ne("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=RK),Ln.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=(r)=>{if(m$t(r.value))return;r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),R0e=ne("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Cye),Ln.init(e,t)});P0e=ne("$ZodJWT",(e,t)=>{Ln.init(e,t),e._zod.check=(r)=>{if(h$t(r.value,t.alg))return;r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}}),LK=ne("$ZodNumber",(e,t)=>{Rn.init(e,t),e._zod.pattern=e._zod.bag.pattern??PK,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Number(r.value)}catch(s){}let i=r.value;if(typeof i==="number"&&!Number.isNaN(i)&&Number.isFinite(i))return r;let o=typeof i==="number"?Number.isNaN(i)?"NaN":!Number.isFinite(i)?"Infinity":void 0:void 0;return r.issues.push({expected:"number",code:"invalid_type",input:i,inst:e,...o?{received:o}:{}}),r}}),I0e=ne("$ZodNumberFormat",(e,t)=>{Bye.init(e,t),LK.init(e,t)}),O0e=ne("$ZodBoolean",(e,t)=>{Rn.init(e,t),e._zod.pattern=Dye,e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=Boolean(r.value)}catch(o){}let i=r.value;if(typeof i==="boolean")return r;return r.issues.push({expected:"boolean",code:"invalid_type",input:i,inst:e}),r}}),M0e=ne("$ZodNull",(e,t)=>{Rn.init(e,t),e._zod.pattern=jye,e._zod.values=new Set([null]),e._zod.parse=(r,n)=>{let i=r.value;if(i===null)return r;return r.issues.push({expected:"null",code:"invalid_type",input:i,inst:e}),r}}),D0e=ne("$ZodUnknown",(e,t)=>{Rn.init(e,t),e._zod.parse=(r)=>r}),j0e=ne("$ZodNever",(e,t)=>{Rn.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});L0e=ne("$ZodArray",(e,t)=>{Rn.init(e,t),e._zod.parse=(r,n)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:e}),r;r.value=Array(i.length);let o=[];for(let s=0;s<i.length;s++){let a=i[s],c=t.element._zod.run({value:a,issues:[]},n);if(c instanceof Promise)o.push(c.then((l)=>e0e(l,r,s)));else e0e(c,r,s)}if(o.length)return Promise.all(o).then(()=>r);return r}});g$t=ne("$ZodObject",(e,t)=>{if(Rn.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){let a=t.shape;Object.defineProperty(t,"shape",{get:()=>{let c={...a};return Object.defineProperty(t,"shape",{value:c}),c}})}let n=fR(()=>N0e(t));yr(e._zod,"propValues",()=>{let a=t.shape,c={};for(let l in a){let u=a[l]._zod;if(u.values){c[l]??(c[l]=new Set);for(let d of u.values)c[l].add(d)}}return c});let i=xk,o=t.catchall,s;e._zod.parse=(a,c)=>{s??(s=n.value);let l=a.value;if(!i(l))return a.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),a;a.value={};let u=[],d=s.shape;for(let p of s.keys){let f=d[p],m=f._zod.optin==="optional",h=f._zod.optout==="optional",g=f._zod.run({value:l[p],issues:[]},c);if(g instanceof Promise)u.push(g.then((y)=>SR(y,a,p,l,m,h)));else SR(g,a,p,l,m,h)}if(!o)return u.length?Promise.all(u).then(()=>a):a;return F0e(u,l,a,c,n.value,e)}}),z0e=ne("$ZodObjectJIT",(e,t)=>{g$t.init(e,t);let r=e._zod.parse,n=fR(()=>N0e(t)),i=(p)=>{let f=new MK(["shape","payload","ctx"]),m=n.value,h=(k)=>{let w=xK(k);return`shape[${w}]._zod.run({ value: input[${w}], issues: [] }, ctx)`};f.write("const input = payload.value;");let g=Object.create(null),y=0;for(let k of m.keys)g[k]=`key_${y++}`;f.write("const newResult = {};");for(let k of m.keys){let w=g[k],A=xK(k),x=p[k],E=x?._zod?.optin==="optional",S=x?._zod?.optout==="optional";if(f.write(`const ${w} = ${h(k)};`),E&&S)f.write(`
30
30
  if (${w}.issues.length) {
@@ -507,7 +507,7 @@ ${e.replaceAll('"""',"\\\"\\\"\\\"").trim()}
507
507
  """`}function OVt(e){let t=e.indexOf(IVt),r=e.indexOf(iTe);if(t===-1||r===-1||r<t)return e;let n=r+iTe.length,i=e.slice(n).replace(/^\n/,"");return e.slice(0,t)+i}function oTe(e,t){return e.replace("Follow the vendor-specific execution protocol:",`Follow \`${t}\`:`)}function MVt(e){let t=z1(e,".agents","agents");if(!sO(t))return[];return SVt(t,{withFileTypes:!0}).filter((r)=>r.isFile()&&r.name.endsWith(".md")).map((r)=>{let n=r.name,i=n.replace(".md",""),o=EVt(z1(t,n),"utf-8"),{frontmatter:s,body:a}=Mr(o);return{agentKey:i,entry:n,frontmatter:s,body:a}})}function DVt(e,t,r,n,i,o=".agents"){let{agentKey:s,entry:a,frontmatter:c,body:l}=e,u=$Vt[n]||{},d=r.tools||c.tools||t.toolsDefault,f=(Array.isArray(d)?d:String(d||"").split(",").map((x)=>x.trim()).filter(Boolean)).map((x)=>u[x.toLowerCase()]||x),m=Array.isArray(t.toolsDefault)?f:f.join(", "),h=Array.isArray(m)?m.length>0:m.trim().length>0,g=r.model||c.model||t.modelDefault,y={name:c.name||s,description:r.description||c.description,tools:h?m:void 0,model:(n==="opencode"||n==="qwen")&&g==="inherit"?void 0:g};if(t.maxTurnsDefault||r.maxTurns||c.maxTurns)y[_Vt(n)]=r.maxTurns||c.maxTurns||t.maxTurnsDefault;if(r.effort)if(n==="opencode")y.variant=r.effort;else y.effort=r.effort;if(r.kind)y.kind=r.kind;if(r.temperature!==void 0)y.temperature=r.temperature;if(r.timeoutMins!==void 0)y[TVt(n)]=r.timeoutMins;if(r.mcpServers)y.mcpServers=r.mcpServers;if(c.skills&&RVt(n))y.skills=c.skills;if(r.extra)Object.assign(y,r.extra);if(n==="opencode")y.mode="subagent";let b=rh(i==="Simple"?OVt(l):l,o),k=t.protocolPath?.replace(/^\.agents\//,`${o}/`),w=`<!-- Generated by oh-my-agent CLI. Source: ${o}/agents/${a} -->
508
508
  ${oTe(b,k)}`,A=NVt(y,n);return{fileName:a,content:$9(A,w)}}function jVt(e,t,r,n=".agents"){let{agentKey:i,entry:o,frontmatter:s,body:a}=e,c=s.name||i,l=String(r.description||s.description||c),u=String(r.model||s.model||t.modelDefault),d=r.effort||t.effortDefault||"medium",p=typeof r.extra?.sandbox_mode==="string"?r.extra.sandbox_mode:"workspace-write",f=oTe(rh(a,n),t.protocolPath?.replace(/^\.agents\//,`${n}/`)),m=Array.isArray(s.skills)?s.skills.map((g)=>String(g)).filter(Boolean):[],h=[`# Generated by oh-my-agent CLI. Source: ${n}/agents/${o}`,`name = ${nh(c)}`,`description = ${nh(l)}`,`model = ${nh(u)}`,`model_reasoning_effort = ${nh(d)}`,`sandbox_mode = ${nh(p)}`,`developer_instructions = ${PVt(f)}`];for(let g of m)h.push(""),h.push("[[skills.config]]"),h.push(`path = ${nh(`${n}/skills/${g}/SKILL.md`)}`),h.push("enabled = true");if(r.mcpServers&&Object.keys(r.mcpServers).length>0){h.push(""),h.push("[mcp_servers]");for(let[g,y]of Object.entries(r.mcpServers))h.push(`${g} = ${nh(String(y))}`)}return{fileName:`${i}.toml`,content:`${h.join(`
509
509
  `)}
510
- `}}function NVt(e,t){let r=LVt[t];if(!r)return{...e};let n=new Set(r),i={};for(let[o,s]of Object.entries(e))if(n.has(o))i[o]=s;else if(t==="claude"&&o==="effort")console.warn("[agent-composer] Dropped 'effort' from claude variant (R14: Claude subagent frontmatter does not support effort — use CLI session --effort instead)");else console.warn(`[agent-composer] Dropped '${o}' from ${t} variant (not supported by this runtime)`);return i}function FVt(e,t){try{let r=Za(e),n=gx(t,r);if(n.cli!=="opencode")return{};return{model:n.cliModel,effort:n.effort}}catch{return{}}}function M9(e,t,r){let n=z1(e,".agents","agents"),i=z1(n,"variants",`${r}.json`);if(!sO(n)||!sO(i)&&r!=="qwen")return 0;let o=sO(i)?oO({variantPath:i,kind:"agent",validate:(l)=>{if(!l?.destDir)return;if(M1(t,l.destDir,"agent dest dir"),l.protocolPath){if(/[`\r\n]/.test(l.protocolPath))throw Error(`protocol path "${l.protocolPath}" contains forbidden characters.`);M1(t,l.protocolPath,"protocol path")}}}):r==="qwen"?CVt:void 0;if(!o?.destDir)return 0;let s=wt()==="global"&&r==="opencode"?z1(t,".config","opencode","agents"):z1(t,o.destDir);AVt(s,{recursive:!0});let a={};try{if(a=Za(wt()==="global"?e:t),!a.model_preset)a=Za(e)}catch{}let c=0;for(let l of MVt(e)){let u={...o.agents[l.agentKey]||{}},d=iu(l.agentKey);if(d){let m=a.model_preset==="auto"&&!!a.agents?.[d],h=r==="qwen"&&!!a.model_preset&&a.model_preset!=="free"&&a.model_preset!=="auto";if(m||h){let g=gx(d,a,void 0,{});if(g.cli===r&&g.cliModel){if(u.model=g.cliModel,g.effort)u.effort=g.effort}}}if(r==="opencode"&&a.model_preset!=="auto"){let m=FVt(e,l.agentKey);if(m.model&&!u.model)u.model=m.model;if(m.effort&&!u.effort)u.effort=m.effort}let p=wt()==="global"?z1(e,".agents"):".agents",f=r==="codex"?jVt(l,o,u,p):DVt(l,o,u,r,void 0,p);Qt(z1(s,f.fileName),f.content),c+=1}return c}var $Vt,CVt,IVt="<!-- CHARTER_CHECK_BEGIN -->",iTe="<!-- CHARTER_CHECK_END -->",LVt;var vx=v(()=>{X3();yx();Os();ni();Ms();yi();QI();zQ();$Vt={claude:{read:"Read",write:"Write",edit:"Edit",bash:"Bash",grep:"Grep",glob:"Glob"},cursor:{read:"read_file",write:"write_file",edit:"replace",bash:"run_shell_command",grep:"grep_search",glob:"glob"},grok:{read:"read_file",write:"write_file",edit:"search_replace",bash:"run_terminal_cmd",grep:"grep",glob:"list_dir",ask:"ask_user"},qwen:{read:"read_file",write:"write_file",edit:"edit",bash:"run_shell_command",grep:"grep_search",glob:"glob"}},CVt={vendor:"qwen",destDir:".qwen/agents",modelDefault:"inherit",toolsDefault:[],protocolPath:".agents/skills/_shared/runtime/execution-protocols/qwen.md",agents:{}};LVt={claude:["name","description","tools","model","maxTurns","skills","memory","permissionMode"],codex:["name","description","model","model_reasoning_effort","sandbox_mode"],antigravity:["name","description","model"],qwen:["name","description","model","tools","approvalMode","maxTurns"],opencode:["name","description","mode","model","variant","temperature","tools","permission"]}});import*as su from"node:fs";import{dirname as sTe,isAbsolute as aTe,resolve as cTe,sep as zVt}from"node:path";function uTe(e){if(process.platform!=="win32")return e;if(e.startsWith(lTe))return e;if(e.length<=BVt)return e;return lTe+e}function B1(e,t,r,n){if(n!==void 0){let a=aTe(e)?e:cTe(sTe(t),e),c=su.realpathSync(a),l=su.realpathSync(n);if(c!==l&&!c.startsWith(l+zVt))throw Error(`createLink: target ${c} escapes SSOT base ${l}`)}if(process.platform!=="win32")return su.symlinkSync(e,t,r),"symlink";try{return su.symlinkSync(e,t,r),"symlink"}catch(a){if(!UVt(a))throw a}let i=aTe(e)?e:cTe(sTe(t),e),o=uTe(i),s=uTe(t);if(r==="dir")return su.symlinkSync(o,s,"junction"),BQ("junction"),"junction";try{return su.linkSync(o,s),BQ("hardlink"),"hardlink"}catch{return su.copyFileSync(o,s),BQ("copy"),"copy"}}function UVt(e){if(!e||typeof e!=="object")return!1;let t=e.code;return t==="EPERM"||t==="EACCES"}function BQ(e){if(dTe.has(e))return;dTe.add(e);let t=HVt[e];if(t)console.warn(t)}var BVt=260,lTe="\\\\?\\",dTe,HVt;var bx=v(()=>{dTe=new Set;HVt={symlink:"",junction:"note: using directory junctions because symlinks need admin or Developer Mode",hardlink:"note: using hardlinks because symlinks need admin or Developer Mode (content stays in sync via shared inode)",copy:"note: copying files because symlinks and hardlinks both failed (likely cross-volume) — re-run install after editing .agents/* to refresh"}});function D9(e){if(e.vendor!=="qwen")return e;let t={...e.events},r=t.SessionStart,n=r?Array.isArray(r)?[...r]:[r]:[];for(let o of[{hook:"code-intelligence-primer.ts",timeout:3},{hook:"state-boundary.ts",timeout:5}])if(!n.some((s)=>s.hook===o.hook))n.push(o);t.SessionStart=n;let i=t.PostToolUse;if(i)t.PostToolUse=(Array.isArray(i)?i:[i]).map((o)=>o.matcher==="write_file|replace"||o.matcher==="write_file|edit|replace"?{...o,matcher:"write_file|edit|replace|notebook_edit"}:o);return{...e,events:t}}function j9(e){let t=GVt[e.vendor];if(!t)return e;let r={...e.events};for(let n of e.vendor==="kiro"?["preToolUse","postToolUse"]:["PreToolUse","PostToolUse"]){let i=r[n],o=i?Array.isArray(i)?[...i]:[i]:[];if(!o.some((s)=>s.hook==="diagnostic-feedback.ts"))o.push({hook:"diagnostic-feedback.ts",matcher:t,timeout:11});r[n]=o}return{...e,events:r}}var GVt;var aO=v(()=>{GVt={claude:"Edit|Write|MultiEdit",codex:"apply_patch|Edit|Write",qwen:"write_file|edit|replace|edit_file",commandcode:"write|edit",kimi:"WriteFile|StrReplaceFile|Edit|Write",grok:"hashline_edit|apply_patch|create_file|write_file|edit_file|str_replace",kiro:"fs_write"}});import{existsSync as WVt,readFileSync as VVt}from"node:fs";function pTe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function UQ(e,t,r){let n="";if(WVt(e))n=VVt(e,"utf-8");let i=pTe(t),o=!1;for(let[s,a]of Object.entries(r)){let c=pTe(s);if(new RegExp(`${c}\\s*=\\s*${a}`,"i").test(n))continue;let u=new RegExp(`${c}\\s*=\\s*${!a}`,"i"),d=`${s} = ${a}`;if(u.test(n)){n=n.replace(u,()=>d),o=!0;continue}if(new RegExp(`\\[${i}\\]`,"i").test(n))n=n.replace(new RegExp(`(\\[${i}\\][^[]*)`,"i"),(f)=>`${f}${d}
510
+ `}}function NVt(e,t){let r=LVt[t];if(!r)return{...e};let n=new Set(r),i={};for(let[o,s]of Object.entries(e))if(n.has(o))i[o]=s;else if(t==="claude"&&o==="effort")console.warn("[agent-composer] Dropped 'effort' from claude variant (R14: Claude subagent frontmatter does not support effort — use CLI session --effort instead)");else console.warn(`[agent-composer] Dropped '${o}' from ${t} variant (not supported by this runtime)`);return i}function FVt(e,t){try{let r=Za(e),n=gx(t,r);if(n.cli!=="opencode")return{};return{model:n.cliModel,effort:n.effort}}catch{return{}}}function M9(e,t,r){let n=z1(e,".agents","agents"),i=z1(n,"variants",`${r}.json`);if(!sO(n)||!sO(i)&&r!=="qwen")return 0;let o=sO(i)?oO({variantPath:i,kind:"agent",validate:(l)=>{if(!l?.destDir)return;if(M1(t,l.destDir,"agent dest dir"),l.protocolPath){if(/[`\r\n]/.test(l.protocolPath))throw Error(`protocol path "${l.protocolPath}" contains forbidden characters.`);M1(t,l.protocolPath,"protocol path")}}}):r==="qwen"?CVt:void 0;if(!o?.destDir)return 0;let s=wt()==="global"&&r==="opencode"?z1(t,".config","opencode","agents"):z1(t,o.destDir);AVt(s,{recursive:!0});let a={};try{if(a=Za(wt()==="global"?e:t),!a.model_preset)a=Za(e)}catch{}let c=0;for(let l of MVt(e)){let u={...o.agents[l.agentKey]||{}},d=iu(l.agentKey);if(d){let m=a.model_preset==="auto"&&!!a.agents?.[d],h=!!a.model_preset&&a.model_preset!=="free"&&a.model_preset!=="auto"&&(r==="qwen"||o.modelDefault!=="inherit");if(m||h){let g;try{g=gx(d,a,void 0,{})}catch{}if(g?.cli===r&&g.cliModel){if(u.model=g.cliModel,g.effort)u.effort=g.effort}}}if(r==="opencode"&&a.model_preset!=="auto"){let m=FVt(e,l.agentKey);if(m.model&&!u.model)u.model=m.model;if(m.effort&&!u.effort)u.effort=m.effort}let p=wt()==="global"?z1(e,".agents"):".agents",f=r==="codex"?jVt(l,o,u,p):DVt(l,o,u,r,void 0,p);Qt(z1(s,f.fileName),f.content),c+=1}return c}var $Vt,CVt,IVt="<!-- CHARTER_CHECK_BEGIN -->",iTe="<!-- CHARTER_CHECK_END -->",LVt;var vx=v(()=>{X3();yx();Os();ni();Ms();yi();QI();zQ();$Vt={claude:{read:"Read",write:"Write",edit:"Edit",bash:"Bash",grep:"Grep",glob:"Glob"},cursor:{read:"read_file",write:"write_file",edit:"replace",bash:"run_shell_command",grep:"grep_search",glob:"glob"},grok:{read:"read_file",write:"write_file",edit:"search_replace",bash:"run_terminal_cmd",grep:"grep",glob:"list_dir",ask:"ask_user"},qwen:{read:"read_file",write:"write_file",edit:"edit",bash:"run_shell_command",grep:"grep_search",glob:"glob"}},CVt={vendor:"qwen",destDir:".qwen/agents",modelDefault:"inherit",toolsDefault:[],protocolPath:".agents/skills/_shared/runtime/execution-protocols/qwen.md",agents:{}};LVt={claude:["name","description","tools","model","maxTurns","skills","memory","permissionMode"],codex:["name","description","model","model_reasoning_effort","sandbox_mode"],antigravity:["name","description","model"],qwen:["name","description","model","tools","approvalMode","maxTurns"],opencode:["name","description","mode","model","variant","temperature","tools","permission"]}});import*as su from"node:fs";import{dirname as sTe,isAbsolute as aTe,resolve as cTe,sep as zVt}from"node:path";function uTe(e){if(process.platform!=="win32")return e;if(e.startsWith(lTe))return e;if(e.length<=BVt)return e;return lTe+e}function B1(e,t,r,n){if(n!==void 0){let a=aTe(e)?e:cTe(sTe(t),e),c=su.realpathSync(a),l=su.realpathSync(n);if(c!==l&&!c.startsWith(l+zVt))throw Error(`createLink: target ${c} escapes SSOT base ${l}`)}if(process.platform!=="win32")return su.symlinkSync(e,t,r),"symlink";try{return su.symlinkSync(e,t,r),"symlink"}catch(a){if(!UVt(a))throw a}let i=aTe(e)?e:cTe(sTe(t),e),o=uTe(i),s=uTe(t);if(r==="dir")return su.symlinkSync(o,s,"junction"),BQ("junction"),"junction";try{return su.linkSync(o,s),BQ("hardlink"),"hardlink"}catch{return su.copyFileSync(o,s),BQ("copy"),"copy"}}function UVt(e){if(!e||typeof e!=="object")return!1;let t=e.code;return t==="EPERM"||t==="EACCES"}function BQ(e){if(dTe.has(e))return;dTe.add(e);let t=HVt[e];if(t)console.warn(t)}var BVt=260,lTe="\\\\?\\",dTe,HVt;var bx=v(()=>{dTe=new Set;HVt={symlink:"",junction:"note: using directory junctions because symlinks need admin or Developer Mode",hardlink:"note: using hardlinks because symlinks need admin or Developer Mode (content stays in sync via shared inode)",copy:"note: copying files because symlinks and hardlinks both failed (likely cross-volume) — re-run install after editing .agents/* to refresh"}});function D9(e){if(e.vendor!=="qwen")return e;let t={...e.events},r=t.SessionStart,n=r?Array.isArray(r)?[...r]:[r]:[];for(let o of[{hook:"code-intelligence-primer.ts",timeout:3},{hook:"state-boundary.ts",timeout:5}])if(!n.some((s)=>s.hook===o.hook))n.push(o);t.SessionStart=n;let i=t.PostToolUse;if(i)t.PostToolUse=(Array.isArray(i)?i:[i]).map((o)=>o.matcher==="write_file|replace"||o.matcher==="write_file|edit|replace"?{...o,matcher:"write_file|edit|replace|notebook_edit"}:o);return{...e,events:t}}function j9(e){let t=GVt[e.vendor];if(!t)return e;let r={...e.events};for(let n of e.vendor==="kiro"?["preToolUse","postToolUse"]:["PreToolUse","PostToolUse"]){let i=r[n],o=i?Array.isArray(i)?[...i]:[i]:[];if(!o.some((s)=>s.hook==="diagnostic-feedback.ts"))o.push({hook:"diagnostic-feedback.ts",matcher:t,timeout:11});r[n]=o}return{...e,events:r}}var GVt;var aO=v(()=>{GVt={claude:"Edit|Write|MultiEdit",codex:"apply_patch|Edit|Write",qwen:"write_file|edit|replace|edit_file",commandcode:"write|edit",kimi:"WriteFile|StrReplaceFile|Edit|Write",grok:"hashline_edit|apply_patch|create_file|write_file|edit_file|str_replace",kiro:"fs_write"}});import{existsSync as WVt,readFileSync as VVt}from"node:fs";function pTe(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function UQ(e,t,r){let n="";if(WVt(e))n=VVt(e,"utf-8");let i=pTe(t),o=!1;for(let[s,a]of Object.entries(r)){let c=pTe(s);if(new RegExp(`${c}\\s*=\\s*${a}`,"i").test(n))continue;let u=new RegExp(`${c}\\s*=\\s*${!a}`,"i"),d=`${s} = ${a}`;if(u.test(n)){n=n.replace(u,()=>d),o=!0;continue}if(new RegExp(`\\[${i}\\]`,"i").test(n))n=n.replace(new RegExp(`(\\[${i}\\][^[]*)`,"i"),(f)=>`${f}${d}
511
511
  `);else n=`${n.trimEnd()}
512
512
 
513
513
  [${t}]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-agent",
3
- "version": "20.28.0",
3
+ "version": "20.29.1",
4
4
  "description": "Agent skills and specialist teams for Claude Code, Codex, Cursor and other coding agents. Load one skill or install domain presets, project hooks and parallel workflows with test gates.",
5
5
  "type": "module",
6
6
  "bin": {