git-agents 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Florent Klein
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -17,20 +17,25 @@ bunx git-agents@latest
17
17
  ## Install
18
18
 
19
19
  ```bash
20
- bun install --global git-agents
20
+ bun i -g git-agents
21
21
  ```
22
22
 
23
23
  Or with npm:
24
24
 
25
25
  ```bash
26
- npm install --global git-agents
26
+ npm i -g git-agents
27
27
  ```
28
28
 
29
- > **Requires [Bun](https://bun.sh)** — install it first if you haven't already.
29
+ > **Requires [Bun](https://bun.sh)** — install it first if you haven't already:
30
+ > ```bash
31
+ > curl -fsSL https://bun.sh/install | bash
32
+ > ```
30
33
 
31
34
  ### From source
32
35
 
33
36
  ```bash
37
+ git clone https://github.com/floklein/git-agents.git
38
+ cd git-agents
34
39
  bun install
35
40
  bun link # makes `ga` and `git-agents` available globally
36
41
  ```
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{createCliRenderer as He}from"@opentui/core";import{createRoot as Ke}from"@opentui/react";import{join as L,relative as xe}from"path";import{homedir as B}from"os";import{existsSync as Pe,mkdirSync as we,readFileSync as Re,writeFileSync as ke}from"fs";var R=L(B(),".git-agents"),K=L(R,"config.json"),Qe=L(R,".agents"),Ze=L(B(),".agents");function z(){try{if(!Pe(K))return null;let e=Re(K,"utf8");return JSON.parse(e)}catch{return null}}function Q(e){we(R,{recursive:!0}),ke(K,JSON.stringify(e,null,2),"utf8")}function Y(e){let t=xe(B(),e);return L(R,t)}import{useState as de}from"react";import{useKeyboard as _e}from"@opentui/react";import{useKeyboard as Se}from"@opentui/react";import{jsxDEV as I}from"@opentui/react/jsx-dev-runtime";function Z({onNavigate:e}){return Se((t)=>{if(t.name==="escape"||t.ctrl&&t.name==="c")process.exit(0)}),I("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:[I("box",{flexDirection:"column",alignItems:"center",gap:1,children:[I("ascii-font",{font:"tiny",text:"git-agents"},void 0,!1,void 0,this),I("text",{children:"Sync your Claude agents directory with a remote git repo"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),I("box",{flexDirection:"column",width:40,marginTop:2,children:I("select",{focused:!0,options:[{name:"Pull",description:"Download agents from remote to local"},{name:"Push",description:"Upload local agents to remote"},{name:"Edit Config",description:"Change remote configuration"}],onSelect:(t)=>{if(t===0)e({id:"sync",mode:"pull"});else if(t===1)e({id:"sync",mode:"push"});else if(t===2)e({id:"setup"})},height:6},void 0,!1,void 0,this)},void 0,!1,void 0,this),I("box",{marginTop:1,children:I("text",{children:"\u2191\u2193 navigate Enter select Ctrl+C quit"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as N,useEffect as Fe}from"react";import{useKeyboard as Le}from"@opentui/react";import{TextAttributes as F}from"@opentui/core";var{$:C}=globalThis.Bun;async function $(){try{let e=await C`gh --version`.quiet();return{ok:e.exitCode===0,output:e.stdout.toString()}}catch(e){return{ok:!1,error:e.message??"gh not found"}}}async function q(){try{return{ok:(await C`gh auth status`.quiet()).exitCode===0}}catch{return{ok:!1,error:"Not authenticated. Run: gh auth login"}}}async function D(e){try{return{ok:(await C`gh repo view ${e}`.quiet()).exitCode===0}}catch{return{ok:!1}}}async function E(e){try{let t=await C`gh repo create ${e} --private`.quiet();return{ok:t.exitCode===0,output:t.stdout.toString()}}catch(t){return{ok:!1,error:t.stderr?.toString()??t.message}}}async function j(e){try{let n=(await C`gh repo view ${e} --json sshUrl --jq .sshUrl`.quiet()).stdout.toString().trim();return{ok:!!n,output:n}}catch(t){return{ok:!1,error:t.message}}}async function V(e){try{return{ok:(await C`git ls-remote ${e}`.quiet()).exitCode===0}}catch{return{ok:!1,error:"Cannot reach repository"}}}async function J(e,t){try{return{ok:(await C`git clone ${e} ${t}`.quiet()).exitCode===0}}catch(n){return{ok:!1,error:n.stderr?.toString()??n.message}}}async function ee(e){try{let t=await C`git -C ${e} pull`.quiet();return{ok:t.exitCode===0,output:t.stdout.toString()}}catch(t){let n=t.stderr?.toString()??t.message??"";if(n.includes("no such ref was fetched")||n.includes("couldn't find remote ref"))return{ok:!0,output:"Remote is empty"};return{ok:!1,error:n}}}async function te(e,t){try{if(await C`git -C ${e} add -A`.quiet(),!(await C`git -C ${e} status --porcelain`.quiet()).stdout.toString().trim())return{ok:!0,output:"Nothing to commit"};return await C`git -C ${e} commit -m ${t}`.quiet(),{ok:(await C`git -C ${e} push -u origin HEAD`.quiet()).exitCode===0}}catch(n){return{ok:!1,error:n.stderr?.toString()??n.message}}}import{join as i}from"path";import{homedir as Ge}from"os";var a=Ge(),ne=[{id:"amp",name:"Amp",globalPath:i(a,".config/agents")},{id:"kimi-cli",name:"Kimi Code CLI",globalPath:i(a,".config/agents")},{id:"replit",name:"Replit",globalPath:i(a,".config/agents")},{id:"universal",name:"Universal",globalPath:i(a,".config/agents")},{id:"antigravity",name:"Antigravity",globalPath:i(a,".gemini/antigravity")},{id:"augment",name:"Augment",globalPath:i(a,".augment")},{id:"bob",name:"IBM Bob",globalPath:i(a,".bob")},{id:"claude-code",name:"Claude Code",globalPath:i(a,".claude")},{id:"openclaw",name:"OpenClaw",globalPath:i(a,".openclaw")},{id:"cline",name:"Cline",globalPath:i(a,".agents")},{id:"warp",name:"Warp",globalPath:i(a,".agents")},{id:"codebuddy",name:"CodeBuddy",globalPath:i(a,".codebuddy")},{id:"codex",name:"Codex",globalPath:i(a,".codex")},{id:"command-code",name:"Command Code",globalPath:i(a,".commandcode")},{id:"continue",name:"Continue",globalPath:i(a,".continue")},{id:"cortex",name:"Cortex Code",globalPath:i(a,".snowflake/cortex")},{id:"crush",name:"Crush",globalPath:i(a,".config/crush")},{id:"cursor",name:"Cursor",globalPath:i(a,".cursor")},{id:"deepagents",name:"Deep Agents",globalPath:i(a,".deepagents/agent")},{id:"droid",name:"Droid",globalPath:i(a,".factory")},{id:"firebender",name:"Firebender",globalPath:i(a,".firebender")},{id:"gemini-cli",name:"Gemini CLI",globalPath:i(a,".gemini")},{id:"github-copilot",name:"GitHub Copilot",globalPath:i(a,".copilot")},{id:"goose",name:"Goose",globalPath:i(a,".config/goose")},{id:"junie",name:"Junie",globalPath:i(a,".junie")},{id:"iflow-cli",name:"iFlow CLI",globalPath:i(a,".iflow")},{id:"kilo",name:"Kilo Code",globalPath:i(a,".kilocode")},{id:"kiro-cli",name:"Kiro CLI",globalPath:i(a,".kiro")},{id:"kode",name:"Kode",globalPath:i(a,".kode")},{id:"mcpjam",name:"MCPJam",globalPath:i(a,".mcpjam")},{id:"mistral-vibe",name:"Mistral Vibe",globalPath:i(a,".vibe")},{id:"mux",name:"Mux",globalPath:i(a,".mux")},{id:"opencode",name:"OpenCode",globalPath:i(a,".config/opencode")},{id:"openhands",name:"OpenHands",globalPath:i(a,".openhands")},{id:"pi",name:"Pi",globalPath:i(a,".pi/agent")},{id:"qoder",name:"Qoder",globalPath:i(a,".qoder")},{id:"qwen-code",name:"Qwen Code",globalPath:i(a,".qwen")},{id:"roo",name:"Roo Code",globalPath:i(a,".roo")},{id:"trae",name:"Trae",globalPath:i(a,".trae")},{id:"trae-cn",name:"Trae CN",globalPath:i(a,".trae-cn")},{id:"windsurf",name:"Windsurf",globalPath:i(a,".codeium/windsurf")},{id:"zencoder",name:"Zencoder",globalPath:i(a,".zencoder")},{id:"neovate",name:"Neovate",globalPath:i(a,".neovate")},{id:"pochi",name:"Pochi",globalPath:i(a,".pochi")},{id:"adal",name:"AdaL",globalPath:i(a,".adal")}];import{existsSync as Ie,readdirSync as oe,mkdirSync as Ae,cpSync as Me}from"fs";import{join as ve}from"path";function U(e){if(!Ie(e))return[];try{return oe(e,{withFileTypes:!0}).filter((t)=>t.isDirectory()).map((t)=>{let n=ve(e,t.name),o=0;try{o=oe(n).length}catch{}return{name:t.name,fileCount:o}}).sort((t,n)=>t.name.localeCompare(n.name))}catch{return[]}}function re(e,t){let n=U(e),o=U(t),m=new Map(n.map((f)=>[f.name,f])),u=new Map(o.map((f)=>[f.name,f])),c=[],d=[],h=[],b=[];for(let f of n)if(!u.has(f.name))c.push(f);else{let k=u.get(f.name);if(f.fileCount!==k.fileCount)h.push(f);else b.push(f)}for(let f of o)if(!m.has(f.name))d.push(f);return{added:c,removed:d,modified:h,unchanged:b}}function ie(e,t){Ae(t,{recursive:!0}),Me(e,t,{recursive:!0,force:!0})}async function ae(e){if(!(await e.checkGhInstalled()).ok)return{type:"gh-not-installed"};if(!(await e.checkGhAuth()).ok)return{type:"needs-auth"};return{type:"ok"}}async function se(e,t){if(!(await t.ghRepoExists(e)).ok)return{type:"not-found"};let o=await t.ghGetRepoCloneUrl(e);if(!o.ok||!o.output)return{type:"error",message:"Could not get repo URL from gh CLI."};return{type:"found",url:o.output.trim()}}async function le(e,t){let n=await t.ghCreateRepo(e);if(!n.ok)return{type:"error",message:`Failed to create repo: ${n.error??"unknown error"}`};let o=await t.ghGetRepoCloneUrl(e);if(!o.ok||!o.output)return{type:"error",message:"Could not get repo URL after creating it."};return{type:"ok",url:o.output.trim()}}async function ce(e,t,n){let o={remote:t,repoUrl:t==="git"?e:void 0};if(n.isAlreadyCloned())return n.writeConfig(o),{type:"ok",config:o};let m=await n.cloneRepo(e,"");if(!m.ok)return{type:"error",message:`Failed to clone: ${m.error??"unknown error"}`};return n.writeConfig(o),{type:"ok",config:o}}async function ge(e,t){if(!(await t.checkGitRepoExists(e)).ok)return{type:"error",message:`Cannot reach repository: ${e}`};return{type:"ok"}}async function pe(e,t,n,o){let m=await o.gitPull(n);if(!m.ok)return{type:"error",message:`Failed to pull remote: ${m.error??"unknown error"}`};let u=new Map;for(let d of t){let h=u.get(d.globalPath)??[];u.set(d.globalPath,[...h,d])}let c=[];for(let[d,h]of u){let b=Y(d),f=e==="pull"?b:d,k=e==="pull"?d:b,v=re(f,k),P=U(f),S=U(k);if(P.length===0&&S.length===0)continue;for(let y of h)c.push({def:y,diff:v,remoteCount:e==="pull"?P.length:S.length,localCount:e==="pull"?S.length:P.length})}return{type:"ok",agentDiffs:c}}async function ue(e,t,n,o){let m=new Set;try{for(let u of t){if(m.has(u.def.globalPath))continue;m.add(u.def.globalPath);let c=Y(u.def.globalPath),d=e==="pull"?c:u.def.globalPath,h=e==="pull"?u.def.globalPath:c;ie(d,h)}}catch(u){return{type:"error",message:`Failed to copy agents: ${u.message}`}}if(e==="push"){let u=await o.gitAddCommitPush(n,`sync: update agents from local (${new Date().toISOString().slice(0,10)})`);if(!u.ok)return{type:"error",message:`Failed to push: ${u.error??"unknown error"}`}}return{type:"ok",message:e==="pull"?"Pull complete! Local agents updated.":"Push complete! Remote updated."}}import{jsxDEV as s}from"@opentui/react/jsx-dev-runtime";function fe({mode:e,onBack:t}){let[n,o]=N("loading"),[m,u]=N("Fetching remote..."),[c,d]=N([]),[h,b]=N(null),[f,k]=N("");Le((p)=>{if(p.name==="escape"){if(n==="done"||n==="review")t()}});let v={gitPull:ee,gitAddCommitPush:te};Fe(()=>{async function p(){u("Pulling remote changes...");let g=await pe(e,ne,R,v);if(g.type==="error"){b(g.message),o("done");return}u("Comparing agents..."),d(g.agentDiffs),o("review")}p()},[]);async function P(p){if(!p){t();return}o("executing"),u(e==="pull"?"Copying agents from remote...":"Copying agents to remote...");let g=await ue(e,c,R,v);if(g.type==="error")b(g.message);else k(g.message),b(null);o("done")}let S=e==="pull"?"Pull":"Push";if(n==="loading"||n==="executing")return s("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:s("text",{children:m},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(n==="done")return s("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:1,children:[h?s("text",{fg:"#ff5555",children:h},void 0,!1,void 0,this):s("text",{fg:"#50fa7b",children:f},void 0,!1,void 0,this),s("text",{attributes:F.DIM,children:"Press Esc to go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let y=new Set,_=c.reduce((p,g)=>{if(y.has(g.def.globalPath))return p;return y.add(g.def.globalPath),p+g.remoteCount},0);y.clear();let A=c.reduce((p,g)=>{if(y.has(g.def.globalPath))return p;return y.add(g.def.globalPath),p+g.localCount},0),H=c.some((p)=>p.diff.added.length>0||p.diff.removed.length>0||p.diff.modified.length>0);return s("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:1,children:[s("ascii-font",{font:"tiny",text:S},void 0,!1,void 0,this),s("box",{flexDirection:"column",border:!0,borderStyle:"rounded",title:" Comparison ",paddingX:2,paddingY:1,width:60,gap:1,children:[s("box",{flexDirection:"row",justifyContent:"space-between",children:[s("text",{children:[s("span",{children:"Remote: "},void 0,!1,void 0,this),s("span",{fg:"#8be9fd",children:[_," skills"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),s("text",{children:[s("span",{children:"Local: "},void 0,!1,void 0,this),s("span",{fg:"#8be9fd",children:[A," skills"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),c.length===0&&s("text",{attributes:F.DIM,children:"No agents found"},void 0,!1,void 0,this),c.map((p)=>{let g=p.diff,O=g.added.length>0||g.removed.length>0||g.modified.length>0;return s("box",{flexDirection:"column",children:[s("box",{flexDirection:"row",justifyContent:"space-between",children:[s("text",{fg:"#bd93f9",children:p.def.name},void 0,!1,void 0,this),s("text",{attributes:F.DIM,children:[p.remoteCount,"\u2193 / ",p.localCount,"\u2191"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),g.added.map((w)=>s("text",{children:[s("span",{fg:"#50fa7b",children:" + "},void 0,!1,void 0,this),s("span",{children:w.name},void 0,!1,void 0,this)]},w.name,!0,void 0,this)),g.removed.map((w)=>s("text",{children:[s("span",{fg:"#ff5555",children:" - "},void 0,!1,void 0,this),s("span",{children:w.name},void 0,!1,void 0,this)]},w.name,!0,void 0,this)),g.modified.map((w)=>s("text",{children:[s("span",{fg:"#ffb86c",children:" ~ "},void 0,!1,void 0,this),s("span",{children:w.name},void 0,!1,void 0,this)]},w.name,!0,void 0,this)),!O&&g.unchanged.length>0&&s("text",{attributes:F.DIM,children:[" ",g.unchanged.length," skill",g.unchanged.length!==1?"s":""," unchanged"]},void 0,!0,void 0,this)]},p.def.id,!0,void 0,this)})]},void 0,!0,void 0,this),s("box",{flexDirection:"column",alignItems:"center",gap:1,children:[s("text",{children:[s("span",{children:["Confirm ",e,"? "]},void 0,!0,void 0,this),s("span",{attributes:F.DIM,children:"(No is default \u2014 press Enter to cancel)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s("select",{focused:!0,options:[{name:"No, cancel",description:"Go back to main menu"},{name:`Yes, ${e}`,description:H?"Apply changes":"No changes to apply"}],onSelect:(p)=>P(p===1),width:30,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this),s("text",{attributes:F.DIM,children:"Esc to cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as M,useEffect as Ue}from"react";import{useKeyboard as Ne}from"@opentui/react";import{TextAttributes as x}from"@opentui/core";import{existsSync as Te}from"fs";import{join as Oe}from"path";import{jsxDEV as r}from"@opentui/react/jsx-dev-runtime";var T="git-agents-remote";function me({existingConfig:e,onComplete:t}){let[n,o]=M("welcome"),[m,u]=M(e?.remote??"gh"),[c,d]=M(e?.repoUrl??""),[h,b]=M(""),[f,k]=M(!1),[v,P]=M(""),[S,y]=M("");Ne((l)=>{if(l.ctrl&&l.name==="c")process.exit(0);if(n==="welcome"&&l.name==="return")o("choose-remote");if(n==="gh-auth-needed"&&l.name==="return")_();if(n==="error"&&l.name==="return")o("choose-remote")});async function _(){if(o("gh-checking"),y("Checking gh auth..."),!(await q()).ok){o("gh-auth-needed");return}p()}let A={checkGhInstalled:$,checkGhAuth:q,ghRepoExists:D,ghCreateRepo:E,ghGetRepoCloneUrl:j,checkGitRepoExists:V,cloneRepo:(l,G)=>J(l,G),isAlreadyCloned:()=>Te(Oe(R,".git")),writeConfig:Q};async function H(){o("gh-checking"),y("Checking gh CLI...");let l=await ae(A);if(l.type==="gh-not-installed"){P("GitHub CLI (gh) is not installed. Install it from https://cli.github.com and try again."),o("error");return}if(l.type==="needs-auth"){o("gh-auth-needed");return}p()}async function p(){o("gh-checking"),y("Checking for git-agents repo...");let l=await se(T,A);if(l.type==="error"){P(l.message),o("error");return}if(l.type==="not-found"){k(!1),o("gh-repo-check");return}k(!0),b(l.url),o("gh-confirm")}async function g(){o("gh-checking"),y(`Creating private repo "${T}"...`);let l=await le(T,A);if(l.type==="error"){P(l.message),o("error");return}b(l.url),o("gh-confirm")}async function O(l,G){o("cloning"),y(`Cloning ${l}...`);let W=await ce(l,G,{...A,cloneRepo:(Ce)=>J(Ce,R)});if(W.type==="error"){P(W.message),o("error");return}o("done")}async function w(l){o("git-url-checking"),y("Validating repository...");let G=await ge(l,A);if(G.type==="error"){P(`${G.message}
4
- Make sure the URL is correct and you have access.`),o("error");return}await O(l,"git")}if(Ue(()=>{if(n==="done")t({remote:m,repoUrl:m==="git"?h||c:void 0})},[n]),n==="welcome")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("ascii-font",{font:"tiny",text:"git-agents"},void 0,!1,void 0,this),r("box",{flexDirection:"column",alignItems:"center",gap:1,width:60,children:[r("text",{children:"Sync your Claude agents skills with a remote git repo."},void 0,!1,void 0,this),r("text",{attributes:x.DIM,children:"Keeps ~/.agents in sync across machines using git."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("text",{children:[r("span",{attributes:x.DIM,children:"Press "},void 0,!1,void 0,this),r("span",{children:"Enter"},void 0,!1,void 0,this),r("span",{attributes:x.DIM,children:" to start setup"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(n==="choose-remote")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{children:"Choose how to connect your remote:"},void 0,!1,void 0,this),r("select",{focused:!0,options:[{name:"GitHub CLI (gh)",description:"Auto-create and manage a private GitHub repo"},{name:"Custom Git Repo",description:"Use any existing remote git repository"}],selectedIndex:m==="gh"?0:1,onSelect:(l)=>{let G=l===0?"gh":"git";if(u(G),G==="gh")H();else o("git-url-input")},width:50,height:4},void 0,!1,void 0,this),r("text",{attributes:x.DIM,children:"\u2191\u2193 navigate Enter select"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(n==="gh-checking")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:r("text",{children:S},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(n==="gh-auth-needed")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{fg:"#ffb86c",children:"Not authenticated with GitHub CLI."},void 0,!1,void 0,this),r("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,children:r("text",{children:[r("span",{attributes:x.DIM,children:"Run in another terminal: "},void 0,!1,void 0,this),r("span",{fg:"#50fa7b",children:"gh auth login"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),r("text",{children:[r("span",{attributes:x.DIM,children:"Press "},void 0,!1,void 0,this),r("span",{children:"Enter"},void 0,!1,void 0,this),r("span",{attributes:x.DIM,children:" once authenticated to continue"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(n==="gh-repo-check")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{children:["Repo ",r("span",{fg:"#8be9fd",children:['"',T,'"']},void 0,!0,void 0,this)," does not exist on your GitHub account."]},void 0,!0,void 0,this),r("select",{focused:!0,options:[{name:`Create private repo "${T}"`,description:"Recommended"},{name:"Cancel",description:"Go back to remote selection"}],onSelect:(l)=>{if(l===0)g();else o("choose-remote")},width:50,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(n==="gh-confirm")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{fg:"#50fa7b",children:f?"Found existing repo!":"Repository ready!"},void 0,!1,void 0,this),r("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,flexDirection:"column",gap:1,children:[r("text",{children:[r("span",{attributes:x.DIM,children:"Repo: "},void 0,!1,void 0,this),r("span",{fg:"#8be9fd",children:h},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r("text",{children:[r("span",{attributes:x.DIM,children:"Will clone to: "},void 0,!1,void 0,this),r("span",{children:"~/.git-agents"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),r("select",{focused:!0,options:[{name:"Continue",description:"Clone repo and save config"},{name:"Cancel",description:"Go back to remote selection"}],onSelect:(l)=>{if(l===0)O(h,"gh");else o("choose-remote")},width:40,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(n==="git-url-input")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{children:"Enter the Git repository URL:"},void 0,!1,void 0,this),r("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,width:60,children:r("input",{focused:!0,placeholder:"git@github.com:user/repo.git",value:c,onInput:d,onSubmit:()=>{if(c.trim())w(c.trim())},flexGrow:1},void 0,!1,void 0,this)},void 0,!1,void 0,this),r("text",{attributes:x.DIM,children:"Enter to confirm Esc to go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(n==="git-url-checking")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:r("text",{children:S},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(n==="cloning")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:r("text",{children:S},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(n==="error")return r("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[r("text",{fg:"#ff5555",children:v},void 0,!1,void 0,this),r("text",{children:[r("span",{attributes:x.DIM,children:"Press "},void 0,!1,void 0,this),r("span",{children:"Enter"},void 0,!1,void 0,this),r("span",{attributes:x.DIM,children:" to try again"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return null}import{jsxDEV as X}from"@opentui/react/jsx-dev-runtime";function he({initialScreen:e,initialConfig:t}){let[n,o]=de(e),[m,u]=de(t);if(_e((c)=>{if(c.ctrl&&c.name==="c")process.exit(0)}),n.id==="setup")return X(me,{existingConfig:n.existingConfig??m,onComplete:(c)=>{u(c),o({id:"main"})}},void 0,!1,void 0,this);if(n.id==="sync")return X(fe,{mode:n.mode,onBack:()=>o({id:"main"})},void 0,!1,void 0,this);return X(Z,{onNavigate:(c)=>o(c)},void 0,!1,void 0,this)}import{jsxDEV as Je}from"@opentui/react/jsx-dev-runtime";var Be=process.argv.slice(2),ye=Be[0],be=z(),Ye=!be?{id:"setup"}:ye==="pull"?{id:"sync",mode:"pull"}:ye==="push"?{id:"sync",mode:"push"}:{id:"main"},qe=await He({exitOnCtrlC:!1});Ke(qe).render(Je(he,{initialScreen:Ye,initialConfig:be??void 0},void 0,!1,void 0,this));
3
+ var tn=Object.defineProperty;var un=(f)=>f;function pn(f,n){this[f]=un.bind(null,n)}var en=(f,n)=>{for(var g in n)tn(f,g,{get:n[g],enumerable:!0,configurable:!0,set:pn.bind(n,g)})};import{createCliRenderer as vl}from"@opentui/core";import{createRoot as Cl}from"@opentui/react";import{join as ef,relative as wl}from"path";import{homedir as Hn}from"os";import{existsSync as $l,mkdirSync as Rl,readFileSync as Sl,writeFileSync as Ml}from"fs";var Cf={};en(Cf,{void:()=>jg,util:()=>A,unknown:()=>mg,union:()=>Vg,undefined:()=>Ng,tuple:()=>ig,transformer:()=>Zg,symbol:()=>Lg,string:()=>Rn,strictObject:()=>og,setErrorMap:()=>dn,set:()=>xg,record:()=>rg,quotelessJson:()=>Zn,promise:()=>eg,preprocess:()=>sg,pipeline:()=>fl,ostring:()=>nl,optional:()=>ag,onumber:()=>gl,oboolean:()=>ll,objectUtil:()=>tf,object:()=>Kg,number:()=>Sn,nullable:()=>dg,null:()=>Fg,never:()=>Eg,nativeEnum:()=>pg,nan:()=>Og,map:()=>cg,makeIssue:()=>Nf,literal:()=>tg,lazy:()=>Tg,late:()=>zg,isValid:()=>a,isDirty:()=>If,isAsync:()=>Hf,isAborted:()=>Pf,intersection:()=>Ig,instanceof:()=>Ug,getParsedType:()=>c,getErrorMap:()=>_f,function:()=>yg,enum:()=>ug,effect:()=>Zg,discriminatedUnion:()=>Pg,defaultErrorMap:()=>u,datetimeRegex:()=>Gn,date:()=>Cg,custom:()=>$n,coerce:()=>bl,boolean:()=>Mn,bigint:()=>vg,array:()=>kg,any:()=>Dg,addIssueToContext:()=>_,ZodVoid:()=>Df,ZodUnknown:()=>d,ZodUnion:()=>Yf,ZodUndefined:()=>Xf,ZodType:()=>B,ZodTuple:()=>y,ZodTransformer:()=>i,ZodSymbol:()=>Ff,ZodString:()=>o,ZodSet:()=>Rf,ZodSchema:()=>B,ZodRecord:()=>mf,ZodReadonly:()=>vf,ZodPromise:()=>Sf,ZodPipeline:()=>kf,ZodParsedType:()=>M,ZodOptional:()=>P,ZodObject:()=>L,ZodNumber:()=>s,ZodNullable:()=>e,ZodNull:()=>Qf,ZodNever:()=>x,ZodNativeEnum:()=>zf,ZodNaN:()=>jf,ZodMap:()=>Ef,ZodLiteral:()=>Af,ZodLazy:()=>Bf,ZodIssueCode:()=>R,ZodIntersection:()=>hf,ZodFunction:()=>Wf,ZodFirstPartyTypeKind:()=>X,ZodError:()=>m,ZodEnum:()=>nf,ZodEffects:()=>i,ZodDiscriminatedUnion:()=>rf,ZodDefault:()=>Uf,ZodDate:()=>wf,ZodCatch:()=>Of,ZodBranded:()=>cf,ZodBoolean:()=>Jf,ZodBigInt:()=>ff,ZodArray:()=>V,ZodAny:()=>$f,Schema:()=>B,ParseStatus:()=>N,OK:()=>F,NEVER:()=>Gl,INVALID:()=>J,EMPTY_PATH:()=>sn,DIRTY:()=>Gf,BRAND:()=>Ag});var A;(function(f){f.assertEqual=(b)=>{};function n(b){}f.assertIs=n;function g(b){throw Error()}f.assertNever=g,f.arrayToEnum=(b)=>{let w={};for(let G of b)w[G]=G;return w},f.getValidEnumValues=(b)=>{let w=f.objectKeys(b).filter(($)=>typeof b[b[$]]!=="number"),G={};for(let $ of w)G[$]=b[$];return f.objectValues(G)},f.objectValues=(b)=>{return f.objectKeys(b).map(function(w){return b[w]})},f.objectKeys=typeof Object.keys==="function"?(b)=>Object.keys(b):(b)=>{let w=[];for(let G in b)if(Object.prototype.hasOwnProperty.call(b,G))w.push(G);return w},f.find=(b,w)=>{for(let G of b)if(w(G))return G;return},f.isInteger=typeof Number.isInteger==="function"?(b)=>Number.isInteger(b):(b)=>typeof b==="number"&&Number.isFinite(b)&&Math.floor(b)===b;function l(b,w=" | "){return b.map((G)=>typeof G==="string"?`'${G}'`:G).join(w)}f.joinValues=l,f.jsonStringifyReplacer=(b,w)=>{if(typeof w==="bigint")return w.toString();return w}})(A||(A={}));var tf;(function(f){f.mergeShapes=(n,g)=>{return{...n,...g}}})(tf||(tf={}));var M=A.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),c=(f)=>{switch(typeof f){case"undefined":return M.undefined;case"string":return M.string;case"number":return Number.isNaN(f)?M.nan:M.number;case"boolean":return M.boolean;case"function":return M.function;case"bigint":return M.bigint;case"symbol":return M.symbol;case"object":if(Array.isArray(f))return M.array;if(f===null)return M.null;if(f.then&&typeof f.then==="function"&&f.catch&&typeof f.catch==="function")return M.promise;if(typeof Map<"u"&&f instanceof Map)return M.map;if(typeof Set<"u"&&f instanceof Set)return M.set;if(typeof Date<"u"&&f instanceof Date)return M.date;return M.object;default:return M.unknown}};var R=A.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Zn=(f)=>{return JSON.stringify(f,null,2).replace(/"([^"]+)":/g,"$1:")};class m extends Error{get errors(){return this.issues}constructor(f){super();this.issues=[],this.addIssue=(g)=>{this.issues=[...this.issues,g]},this.addIssues=(g=[])=>{this.issues=[...this.issues,...g]};let n=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,n);else this.__proto__=n;this.name="ZodError",this.issues=f}format(f){let n=f||function(b){return b.message},g={_errors:[]},l=(b)=>{for(let w of b.issues)if(w.code==="invalid_union")w.unionErrors.map(l);else if(w.code==="invalid_return_type")l(w.returnTypeError);else if(w.code==="invalid_arguments")l(w.argumentsError);else if(w.path.length===0)g._errors.push(n(w));else{let G=g,$=0;while($<w.path.length){let S=w.path[$];if($!==w.path.length-1)G[S]=G[S]||{_errors:[]};else G[S]=G[S]||{_errors:[]},G[S]._errors.push(n(w));G=G[S],$++}}};return l(this),g}static assert(f){if(!(f instanceof m))throw Error(`Not a ZodError: ${f}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,A.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(f=(n)=>n.message){let n={},g=[];for(let l of this.issues)if(l.path.length>0){let b=l.path[0];n[b]=n[b]||[],n[b].push(f(l))}else g.push(f(l));return{formErrors:g,fieldErrors:n}}get formErrors(){return this.flatten()}}m.create=(f)=>{return new m(f)};var an=(f,n)=>{let g;switch(f.code){case R.invalid_type:if(f.received===M.undefined)g="Required";else g=`Expected ${f.expected}, received ${f.received}`;break;case R.invalid_literal:g=`Invalid literal value, expected ${JSON.stringify(f.expected,A.jsonStringifyReplacer)}`;break;case R.unrecognized_keys:g=`Unrecognized key(s) in object: ${A.joinValues(f.keys,", ")}`;break;case R.invalid_union:g="Invalid input";break;case R.invalid_union_discriminator:g=`Invalid discriminator value. Expected ${A.joinValues(f.options)}`;break;case R.invalid_enum_value:g=`Invalid enum value. Expected ${A.joinValues(f.options)}, received '${f.received}'`;break;case R.invalid_arguments:g="Invalid function arguments";break;case R.invalid_return_type:g="Invalid function return type";break;case R.invalid_date:g="Invalid date";break;case R.invalid_string:if(typeof f.validation==="object")if("includes"in f.validation){if(g=`Invalid input: must include "${f.validation.includes}"`,typeof f.validation.position==="number")g=`${g} at one or more positions greater than or equal to ${f.validation.position}`}else if("startsWith"in f.validation)g=`Invalid input: must start with "${f.validation.startsWith}"`;else if("endsWith"in f.validation)g=`Invalid input: must end with "${f.validation.endsWith}"`;else A.assertNever(f.validation);else if(f.validation!=="regex")g=`Invalid ${f.validation}`;else g="Invalid";break;case R.too_small:if(f.type==="array")g=`Array must contain ${f.exact?"exactly":f.inclusive?"at least":"more than"} ${f.minimum} element(s)`;else if(f.type==="string")g=`String must contain ${f.exact?"exactly":f.inclusive?"at least":"over"} ${f.minimum} character(s)`;else if(f.type==="number")g=`Number must be ${f.exact?"exactly equal to ":f.inclusive?"greater than or equal to ":"greater than "}${f.minimum}`;else if(f.type==="bigint")g=`Number must be ${f.exact?"exactly equal to ":f.inclusive?"greater than or equal to ":"greater than "}${f.minimum}`;else if(f.type==="date")g=`Date must be ${f.exact?"exactly equal to ":f.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(f.minimum))}`;else g="Invalid input";break;case R.too_big:if(f.type==="array")g=`Array must contain ${f.exact?"exactly":f.inclusive?"at most":"less than"} ${f.maximum} element(s)`;else if(f.type==="string")g=`String must contain ${f.exact?"exactly":f.inclusive?"at most":"under"} ${f.maximum} character(s)`;else if(f.type==="number")g=`Number must be ${f.exact?"exactly":f.inclusive?"less than or equal to":"less than"} ${f.maximum}`;else if(f.type==="bigint")g=`BigInt must be ${f.exact?"exactly":f.inclusive?"less than or equal to":"less than"} ${f.maximum}`;else if(f.type==="date")g=`Date must be ${f.exact?"exactly":f.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(f.maximum))}`;else g="Invalid input";break;case R.custom:g="Invalid input";break;case R.invalid_intersection_types:g="Intersection results could not be merged";break;case R.not_multiple_of:g=`Number must be a multiple of ${f.multipleOf}`;break;case R.not_finite:g="Number must be finite";break;default:g=n.defaultError,A.assertNever(f)}return{message:g}},u=an;var fn=u;function dn(f){fn=f}function _f(){return fn}var Nf=(f)=>{let{data:n,path:g,errorMaps:l,issueData:b}=f,w=[...g,...b.path||[]],G={...b,path:w};if(b.message!==void 0)return{...b,path:w,message:b.message};let $="",S=l.filter((q)=>!!q).slice().reverse();for(let q of S)$=q(G,{data:n,defaultError:$}).message;return{...b,path:w,message:$}},sn=[];function _(f,n){let g=_f(),l=Nf({issueData:n,data:f.data,path:f.path,errorMaps:[f.common.contextualErrorMap,f.schemaErrorMap,g,g===u?void 0:u].filter((b)=>!!b)});f.common.issues.push(l)}class N{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(f,n){let g=[];for(let l of n){if(l.status==="aborted")return J;if(l.status==="dirty")f.dirty();g.push(l.value)}return{status:f.value,value:g}}static async mergeObjectAsync(f,n){let g=[];for(let l of n){let b=await l.key,w=await l.value;g.push({key:b,value:w})}return N.mergeObjectSync(f,g)}static mergeObjectSync(f,n){let g={};for(let l of n){let{key:b,value:w}=l;if(b.status==="aborted")return J;if(w.status==="aborted")return J;if(b.status==="dirty")f.dirty();if(w.status==="dirty")f.dirty();if(b.value!=="__proto__"&&(typeof w.value<"u"||l.alwaysSet))g[b.value]=w.value}return{status:f.value,value:g}}}var J=Object.freeze({status:"aborted"}),Gf=(f)=>({status:"dirty",value:f}),F=(f)=>({status:"valid",value:f}),Pf=(f)=>f.status==="aborted",If=(f)=>f.status==="dirty",a=(f)=>f.status==="valid",Hf=(f)=>typeof Promise<"u"&&f instanceof Promise;var H;(function(f){f.errToObj=(n)=>typeof n==="string"?{message:n}:n||{},f.toString=(n)=>typeof n==="string"?n:n?.message})(H||(H={}));class I{constructor(f,n,g,l){this._cachedPath=[],this.parent=f,this.data=n,this._path=g,this._key=l}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var nn=(f,n)=>{if(a(n))return{success:!0,data:n.value};else{if(!f.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let g=new m(f.common.issues);return this._error=g,this._error}}}};function h(f){if(!f)return{};let{errorMap:n,invalid_type_error:g,required_error:l,description:b}=f;if(n&&(g||l))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(n)return{errorMap:n,description:b};return{errorMap:(G,$)=>{let{message:S}=f;if(G.code==="invalid_enum_value")return{message:S??$.defaultError};if(typeof $.data>"u")return{message:S??l??$.defaultError};if(G.code!=="invalid_type")return{message:$.defaultError};return{message:S??g??$.defaultError}},description:b}}class B{get description(){return this._def.description}_getType(f){return c(f.data)}_getOrReturnCtx(f,n){return n||{common:f.parent.common,data:f.data,parsedType:c(f.data),schemaErrorMap:this._def.errorMap,path:f.path,parent:f.parent}}_processInputParams(f){return{status:new N,ctx:{common:f.parent.common,data:f.data,parsedType:c(f.data),schemaErrorMap:this._def.errorMap,path:f.path,parent:f.parent}}}_parseSync(f){let n=this._parse(f);if(Hf(n))throw Error("Synchronous parse encountered promise.");return n}_parseAsync(f){let n=this._parse(f);return Promise.resolve(n)}parse(f,n){let g=this.safeParse(f,n);if(g.success)return g.data;throw g.error}safeParse(f,n){let g={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:f,parsedType:c(f)},l=this._parseSync({data:f,path:g.path,parent:g});return nn(g,l)}"~validate"(f){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:f,parsedType:c(f)};if(!this["~standard"].async)try{let g=this._parseSync({data:f,path:[],parent:n});return a(g)?{value:g.value}:{issues:n.common.issues}}catch(g){if(g?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;n.common={issues:[],async:!0}}return this._parseAsync({data:f,path:[],parent:n}).then((g)=>a(g)?{value:g.value}:{issues:n.common.issues})}async parseAsync(f,n){let g=await this.safeParseAsync(f,n);if(g.success)return g.data;throw g.error}async safeParseAsync(f,n){let g={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:f,parsedType:c(f)},l=this._parse({data:f,path:g.path,parent:g}),b=await(Hf(l)?l:Promise.resolve(l));return nn(g,b)}refine(f,n){let g=(l)=>{if(typeof n==="string"||typeof n>"u")return{message:n};else if(typeof n==="function")return n(l);else return n};return this._refinement((l,b)=>{let w=f(l),G=()=>b.addIssue({code:R.custom,...g(l)});if(typeof Promise<"u"&&w instanceof Promise)return w.then(($)=>{if(!$)return G(),!1;else return!0});if(!w)return G(),!1;else return!0})}refinement(f,n){return this._refinement((g,l)=>{if(!f(g))return l.addIssue(typeof n==="function"?n(g,l):n),!1;else return!0})}_refinement(f){return new i({schema:this,typeName:X.ZodEffects,effect:{type:"refinement",refinement:f}})}superRefine(f){return this._refinement(f)}constructor(f){this.spa=this.safeParseAsync,this._def=f,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(n)=>this["~validate"](n)}}optional(){return P.create(this,this._def)}nullable(){return e.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return V.create(this)}promise(){return Sf.create(this,this._def)}or(f){return Yf.create([this,f],this._def)}and(f){return hf.create(this,f,this._def)}transform(f){return new i({...h(this._def),schema:this,typeName:X.ZodEffects,effect:{type:"transform",transform:f}})}default(f){let n=typeof f==="function"?f:()=>f;return new Uf({...h(this._def),innerType:this,defaultValue:n,typeName:X.ZodDefault})}brand(){return new cf({typeName:X.ZodBranded,type:this,...h(this._def)})}catch(f){let n=typeof f==="function"?f:()=>f;return new Of({...h(this._def),innerType:this,catchValue:n,typeName:X.ZodCatch})}describe(f){return new this.constructor({...this._def,description:f})}pipe(f){return kf.create(this,f)}readonly(){return vf.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var fg=/^c[^\s-]{8,}$/i,ng=/^[0-9a-z]+$/,gg=/^[0-9A-HJKMNP-TV-Z]{26}$/i,lg=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,bg=/^[a-z0-9_-]{21}$/i,Gg=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,wg=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,$g=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Rg="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",uf,Sg=/^(?:(?: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])$/,Mg=/^(?:(?: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])\/(3[0-2]|[12]?[0-9])$/,_g=/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Hg=/^(([0-9a-fA-F]{1,4}:){7,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}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,qg=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Wg=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ln="((\\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])))",Jg=new RegExp(`^${ln}$`);function bn(f){let n="[0-5]\\d";if(f.precision)n=`${n}\\.\\d{${f.precision}}`;else if(f.precision==null)n=`${n}(\\.\\d+)?`;let g=f.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${n})${g}`}function Xg(f){return new RegExp(`^${bn(f)}$`)}function Gn(f){let n=`${ln}T${bn(f)}`,g=[];if(g.push(f.local?"Z?":"Z"),f.offset)g.push("([+-]\\d{2}:?\\d{2})");return n=`${n}(${g.join("|")})`,new RegExp(`^${n}$`)}function Qg(f,n){if((n==="v4"||!n)&&Sg.test(f))return!0;if((n==="v6"||!n)&&_g.test(f))return!0;return!1}function Yg(f,n){if(!Gg.test(f))return!1;try{let[g]=f.split(".");if(!g)return!1;let l=g.replace(/-/g,"+").replace(/_/g,"/").padEnd(g.length+(4-g.length%4)%4,"="),b=JSON.parse(atob(l));if(typeof b!=="object"||b===null)return!1;if("typ"in b&&b?.typ!=="JWT")return!1;if(!b.alg)return!1;if(n&&b.alg!==n)return!1;return!0}catch{return!1}}function hg(f,n){if((n==="v4"||!n)&&Mg.test(f))return!0;if((n==="v6"||!n)&&Hg.test(f))return!0;return!1}class o extends B{_parse(f){if(this._def.coerce)f.data=String(f.data);if(this._getType(f)!==M.string){let b=this._getOrReturnCtx(f);return _(b,{code:R.invalid_type,expected:M.string,received:b.parsedType}),J}let g=new N,l=void 0;for(let b of this._def.checks)if(b.kind==="min"){if(f.data.length<b.value)l=this._getOrReturnCtx(f,l),_(l,{code:R.too_small,minimum:b.value,type:"string",inclusive:!0,exact:!1,message:b.message}),g.dirty()}else if(b.kind==="max"){if(f.data.length>b.value)l=this._getOrReturnCtx(f,l),_(l,{code:R.too_big,maximum:b.value,type:"string",inclusive:!0,exact:!1,message:b.message}),g.dirty()}else if(b.kind==="length"){let w=f.data.length>b.value,G=f.data.length<b.value;if(w||G){if(l=this._getOrReturnCtx(f,l),w)_(l,{code:R.too_big,maximum:b.value,type:"string",inclusive:!0,exact:!0,message:b.message});else if(G)_(l,{code:R.too_small,minimum:b.value,type:"string",inclusive:!0,exact:!0,message:b.message});g.dirty()}}else if(b.kind==="email"){if(!$g.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"email",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="emoji"){if(!uf)uf=new RegExp(Rg,"u");if(!uf.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"emoji",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="uuid"){if(!lg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"uuid",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="nanoid"){if(!bg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"nanoid",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="cuid"){if(!fg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"cuid",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="cuid2"){if(!ng.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"cuid2",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="ulid"){if(!gg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"ulid",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="url")try{new URL(f.data)}catch{l=this._getOrReturnCtx(f,l),_(l,{validation:"url",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="regex"){if(b.regex.lastIndex=0,!b.regex.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"regex",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="trim")f.data=f.data.trim();else if(b.kind==="includes"){if(!f.data.includes(b.value,b.position))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:{includes:b.value,position:b.position},message:b.message}),g.dirty()}else if(b.kind==="toLowerCase")f.data=f.data.toLowerCase();else if(b.kind==="toUpperCase")f.data=f.data.toUpperCase();else if(b.kind==="startsWith"){if(!f.data.startsWith(b.value))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:{startsWith:b.value},message:b.message}),g.dirty()}else if(b.kind==="endsWith"){if(!f.data.endsWith(b.value))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:{endsWith:b.value},message:b.message}),g.dirty()}else if(b.kind==="datetime"){if(!Gn(b).test(f.data))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:"datetime",message:b.message}),g.dirty()}else if(b.kind==="date"){if(!Jg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:"date",message:b.message}),g.dirty()}else if(b.kind==="time"){if(!Xg(b).test(f.data))l=this._getOrReturnCtx(f,l),_(l,{code:R.invalid_string,validation:"time",message:b.message}),g.dirty()}else if(b.kind==="duration"){if(!wg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"duration",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="ip"){if(!Qg(f.data,b.version))l=this._getOrReturnCtx(f,l),_(l,{validation:"ip",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="jwt"){if(!Yg(f.data,b.alg))l=this._getOrReturnCtx(f,l),_(l,{validation:"jwt",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="cidr"){if(!hg(f.data,b.version))l=this._getOrReturnCtx(f,l),_(l,{validation:"cidr",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="base64"){if(!qg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"base64",code:R.invalid_string,message:b.message}),g.dirty()}else if(b.kind==="base64url"){if(!Wg.test(f.data))l=this._getOrReturnCtx(f,l),_(l,{validation:"base64url",code:R.invalid_string,message:b.message}),g.dirty()}else A.assertNever(b);return{status:g.value,value:f.data}}_regex(f,n,g){return this.refinement((l)=>f.test(l),{validation:n,code:R.invalid_string,...H.errToObj(g)})}_addCheck(f){return new o({...this._def,checks:[...this._def.checks,f]})}email(f){return this._addCheck({kind:"email",...H.errToObj(f)})}url(f){return this._addCheck({kind:"url",...H.errToObj(f)})}emoji(f){return this._addCheck({kind:"emoji",...H.errToObj(f)})}uuid(f){return this._addCheck({kind:"uuid",...H.errToObj(f)})}nanoid(f){return this._addCheck({kind:"nanoid",...H.errToObj(f)})}cuid(f){return this._addCheck({kind:"cuid",...H.errToObj(f)})}cuid2(f){return this._addCheck({kind:"cuid2",...H.errToObj(f)})}ulid(f){return this._addCheck({kind:"ulid",...H.errToObj(f)})}base64(f){return this._addCheck({kind:"base64",...H.errToObj(f)})}base64url(f){return this._addCheck({kind:"base64url",...H.errToObj(f)})}jwt(f){return this._addCheck({kind:"jwt",...H.errToObj(f)})}ip(f){return this._addCheck({kind:"ip",...H.errToObj(f)})}cidr(f){return this._addCheck({kind:"cidr",...H.errToObj(f)})}datetime(f){if(typeof f==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:f});return this._addCheck({kind:"datetime",precision:typeof f?.precision>"u"?null:f?.precision,offset:f?.offset??!1,local:f?.local??!1,...H.errToObj(f?.message)})}date(f){return this._addCheck({kind:"date",message:f})}time(f){if(typeof f==="string")return this._addCheck({kind:"time",precision:null,message:f});return this._addCheck({kind:"time",precision:typeof f?.precision>"u"?null:f?.precision,...H.errToObj(f?.message)})}duration(f){return this._addCheck({kind:"duration",...H.errToObj(f)})}regex(f,n){return this._addCheck({kind:"regex",regex:f,...H.errToObj(n)})}includes(f,n){return this._addCheck({kind:"includes",value:f,position:n?.position,...H.errToObj(n?.message)})}startsWith(f,n){return this._addCheck({kind:"startsWith",value:f,...H.errToObj(n)})}endsWith(f,n){return this._addCheck({kind:"endsWith",value:f,...H.errToObj(n)})}min(f,n){return this._addCheck({kind:"min",value:f,...H.errToObj(n)})}max(f,n){return this._addCheck({kind:"max",value:f,...H.errToObj(n)})}length(f,n){return this._addCheck({kind:"length",value:f,...H.errToObj(n)})}nonempty(f){return this.min(1,H.errToObj(f))}trim(){return new o({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new o({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new o({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((f)=>f.kind==="datetime")}get isDate(){return!!this._def.checks.find((f)=>f.kind==="date")}get isTime(){return!!this._def.checks.find((f)=>f.kind==="time")}get isDuration(){return!!this._def.checks.find((f)=>f.kind==="duration")}get isEmail(){return!!this._def.checks.find((f)=>f.kind==="email")}get isURL(){return!!this._def.checks.find((f)=>f.kind==="url")}get isEmoji(){return!!this._def.checks.find((f)=>f.kind==="emoji")}get isUUID(){return!!this._def.checks.find((f)=>f.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((f)=>f.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((f)=>f.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((f)=>f.kind==="cuid2")}get isULID(){return!!this._def.checks.find((f)=>f.kind==="ulid")}get isIP(){return!!this._def.checks.find((f)=>f.kind==="ip")}get isCIDR(){return!!this._def.checks.find((f)=>f.kind==="cidr")}get isBase64(){return!!this._def.checks.find((f)=>f.kind==="base64")}get isBase64url(){return!!this._def.checks.find((f)=>f.kind==="base64url")}get minLength(){let f=null;for(let n of this._def.checks)if(n.kind==="min"){if(f===null||n.value>f)f=n.value}return f}get maxLength(){let f=null;for(let n of this._def.checks)if(n.kind==="max"){if(f===null||n.value<f)f=n.value}return f}}o.create=(f)=>{return new o({checks:[],typeName:X.ZodString,coerce:f?.coerce??!1,...h(f)})};function Bg(f,n){let g=(f.toString().split(".")[1]||"").length,l=(n.toString().split(".")[1]||"").length,b=g>l?g:l,w=Number.parseInt(f.toFixed(b).replace(".","")),G=Number.parseInt(n.toFixed(b).replace(".",""));return w%G/10**b}class s extends B{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(f){if(this._def.coerce)f.data=Number(f.data);if(this._getType(f)!==M.number){let b=this._getOrReturnCtx(f);return _(b,{code:R.invalid_type,expected:M.number,received:b.parsedType}),J}let g=void 0,l=new N;for(let b of this._def.checks)if(b.kind==="int"){if(!A.isInteger(f.data))g=this._getOrReturnCtx(f,g),_(g,{code:R.invalid_type,expected:"integer",received:"float",message:b.message}),l.dirty()}else if(b.kind==="min"){if(b.inclusive?f.data<b.value:f.data<=b.value)g=this._getOrReturnCtx(f,g),_(g,{code:R.too_small,minimum:b.value,type:"number",inclusive:b.inclusive,exact:!1,message:b.message}),l.dirty()}else if(b.kind==="max"){if(b.inclusive?f.data>b.value:f.data>=b.value)g=this._getOrReturnCtx(f,g),_(g,{code:R.too_big,maximum:b.value,type:"number",inclusive:b.inclusive,exact:!1,message:b.message}),l.dirty()}else if(b.kind==="multipleOf"){if(Bg(f.data,b.value)!==0)g=this._getOrReturnCtx(f,g),_(g,{code:R.not_multiple_of,multipleOf:b.value,message:b.message}),l.dirty()}else if(b.kind==="finite"){if(!Number.isFinite(f.data))g=this._getOrReturnCtx(f,g),_(g,{code:R.not_finite,message:b.message}),l.dirty()}else A.assertNever(b);return{status:l.value,value:f.data}}gte(f,n){return this.setLimit("min",f,!0,H.toString(n))}gt(f,n){return this.setLimit("min",f,!1,H.toString(n))}lte(f,n){return this.setLimit("max",f,!0,H.toString(n))}lt(f,n){return this.setLimit("max",f,!1,H.toString(n))}setLimit(f,n,g,l){return new s({...this._def,checks:[...this._def.checks,{kind:f,value:n,inclusive:g,message:H.toString(l)}]})}_addCheck(f){return new s({...this._def,checks:[...this._def.checks,f]})}int(f){return this._addCheck({kind:"int",message:H.toString(f)})}positive(f){return this._addCheck({kind:"min",value:0,inclusive:!1,message:H.toString(f)})}negative(f){return this._addCheck({kind:"max",value:0,inclusive:!1,message:H.toString(f)})}nonpositive(f){return this._addCheck({kind:"max",value:0,inclusive:!0,message:H.toString(f)})}nonnegative(f){return this._addCheck({kind:"min",value:0,inclusive:!0,message:H.toString(f)})}multipleOf(f,n){return this._addCheck({kind:"multipleOf",value:f,message:H.toString(n)})}finite(f){return this._addCheck({kind:"finite",message:H.toString(f)})}safe(f){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:H.toString(f)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:H.toString(f)})}get minValue(){let f=null;for(let n of this._def.checks)if(n.kind==="min"){if(f===null||n.value>f)f=n.value}return f}get maxValue(){let f=null;for(let n of this._def.checks)if(n.kind==="max"){if(f===null||n.value<f)f=n.value}return f}get isInt(){return!!this._def.checks.find((f)=>f.kind==="int"||f.kind==="multipleOf"&&A.isInteger(f.value))}get isFinite(){let f=null,n=null;for(let g of this._def.checks)if(g.kind==="finite"||g.kind==="int"||g.kind==="multipleOf")return!0;else if(g.kind==="min"){if(n===null||g.value>n)n=g.value}else if(g.kind==="max"){if(f===null||g.value<f)f=g.value}return Number.isFinite(n)&&Number.isFinite(f)}}s.create=(f)=>{return new s({checks:[],typeName:X.ZodNumber,coerce:f?.coerce||!1,...h(f)})};class ff extends B{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(f){if(this._def.coerce)try{f.data=BigInt(f.data)}catch{return this._getInvalidInput(f)}if(this._getType(f)!==M.bigint)return this._getInvalidInput(f);let g=void 0,l=new N;for(let b of this._def.checks)if(b.kind==="min"){if(b.inclusive?f.data<b.value:f.data<=b.value)g=this._getOrReturnCtx(f,g),_(g,{code:R.too_small,type:"bigint",minimum:b.value,inclusive:b.inclusive,message:b.message}),l.dirty()}else if(b.kind==="max"){if(b.inclusive?f.data>b.value:f.data>=b.value)g=this._getOrReturnCtx(f,g),_(g,{code:R.too_big,type:"bigint",maximum:b.value,inclusive:b.inclusive,message:b.message}),l.dirty()}else if(b.kind==="multipleOf"){if(f.data%b.value!==BigInt(0))g=this._getOrReturnCtx(f,g),_(g,{code:R.not_multiple_of,multipleOf:b.value,message:b.message}),l.dirty()}else A.assertNever(b);return{status:l.value,value:f.data}}_getInvalidInput(f){let n=this._getOrReturnCtx(f);return _(n,{code:R.invalid_type,expected:M.bigint,received:n.parsedType}),J}gte(f,n){return this.setLimit("min",f,!0,H.toString(n))}gt(f,n){return this.setLimit("min",f,!1,H.toString(n))}lte(f,n){return this.setLimit("max",f,!0,H.toString(n))}lt(f,n){return this.setLimit("max",f,!1,H.toString(n))}setLimit(f,n,g,l){return new ff({...this._def,checks:[...this._def.checks,{kind:f,value:n,inclusive:g,message:H.toString(l)}]})}_addCheck(f){return new ff({...this._def,checks:[...this._def.checks,f]})}positive(f){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:H.toString(f)})}negative(f){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:H.toString(f)})}nonpositive(f){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:H.toString(f)})}nonnegative(f){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:H.toString(f)})}multipleOf(f,n){return this._addCheck({kind:"multipleOf",value:f,message:H.toString(n)})}get minValue(){let f=null;for(let n of this._def.checks)if(n.kind==="min"){if(f===null||n.value>f)f=n.value}return f}get maxValue(){let f=null;for(let n of this._def.checks)if(n.kind==="max"){if(f===null||n.value<f)f=n.value}return f}}ff.create=(f)=>{return new ff({checks:[],typeName:X.ZodBigInt,coerce:f?.coerce??!1,...h(f)})};class Jf extends B{_parse(f){if(this._def.coerce)f.data=Boolean(f.data);if(this._getType(f)!==M.boolean){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.boolean,received:g.parsedType}),J}return F(f.data)}}Jf.create=(f)=>{return new Jf({typeName:X.ZodBoolean,coerce:f?.coerce||!1,...h(f)})};class wf extends B{_parse(f){if(this._def.coerce)f.data=new Date(f.data);if(this._getType(f)!==M.date){let b=this._getOrReturnCtx(f);return _(b,{code:R.invalid_type,expected:M.date,received:b.parsedType}),J}if(Number.isNaN(f.data.getTime())){let b=this._getOrReturnCtx(f);return _(b,{code:R.invalid_date}),J}let g=new N,l=void 0;for(let b of this._def.checks)if(b.kind==="min"){if(f.data.getTime()<b.value)l=this._getOrReturnCtx(f,l),_(l,{code:R.too_small,message:b.message,inclusive:!0,exact:!1,minimum:b.value,type:"date"}),g.dirty()}else if(b.kind==="max"){if(f.data.getTime()>b.value)l=this._getOrReturnCtx(f,l),_(l,{code:R.too_big,message:b.message,inclusive:!0,exact:!1,maximum:b.value,type:"date"}),g.dirty()}else A.assertNever(b);return{status:g.value,value:new Date(f.data.getTime())}}_addCheck(f){return new wf({...this._def,checks:[...this._def.checks,f]})}min(f,n){return this._addCheck({kind:"min",value:f.getTime(),message:H.toString(n)})}max(f,n){return this._addCheck({kind:"max",value:f.getTime(),message:H.toString(n)})}get minDate(){let f=null;for(let n of this._def.checks)if(n.kind==="min"){if(f===null||n.value>f)f=n.value}return f!=null?new Date(f):null}get maxDate(){let f=null;for(let n of this._def.checks)if(n.kind==="max"){if(f===null||n.value<f)f=n.value}return f!=null?new Date(f):null}}wf.create=(f)=>{return new wf({checks:[],coerce:f?.coerce||!1,typeName:X.ZodDate,...h(f)})};class Ff extends B{_parse(f){if(this._getType(f)!==M.symbol){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.symbol,received:g.parsedType}),J}return F(f.data)}}Ff.create=(f)=>{return new Ff({typeName:X.ZodSymbol,...h(f)})};class Xf extends B{_parse(f){if(this._getType(f)!==M.undefined){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.undefined,received:g.parsedType}),J}return F(f.data)}}Xf.create=(f)=>{return new Xf({typeName:X.ZodUndefined,...h(f)})};class Qf extends B{_parse(f){if(this._getType(f)!==M.null){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.null,received:g.parsedType}),J}return F(f.data)}}Qf.create=(f)=>{return new Qf({typeName:X.ZodNull,...h(f)})};class $f extends B{constructor(){super(...arguments);this._any=!0}_parse(f){return F(f.data)}}$f.create=(f)=>{return new $f({typeName:X.ZodAny,...h(f)})};class d extends B{constructor(){super(...arguments);this._unknown=!0}_parse(f){return F(f.data)}}d.create=(f)=>{return new d({typeName:X.ZodUnknown,...h(f)})};class x extends B{_parse(f){let n=this._getOrReturnCtx(f);return _(n,{code:R.invalid_type,expected:M.never,received:n.parsedType}),J}}x.create=(f)=>{return new x({typeName:X.ZodNever,...h(f)})};class Df extends B{_parse(f){if(this._getType(f)!==M.undefined){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.void,received:g.parsedType}),J}return F(f.data)}}Df.create=(f)=>{return new Df({typeName:X.ZodVoid,...h(f)})};class V extends B{_parse(f){let{ctx:n,status:g}=this._processInputParams(f),l=this._def;if(n.parsedType!==M.array)return _(n,{code:R.invalid_type,expected:M.array,received:n.parsedType}),J;if(l.exactLength!==null){let w=n.data.length>l.exactLength.value,G=n.data.length<l.exactLength.value;if(w||G)_(n,{code:w?R.too_big:R.too_small,minimum:G?l.exactLength.value:void 0,maximum:w?l.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:l.exactLength.message}),g.dirty()}if(l.minLength!==null){if(n.data.length<l.minLength.value)_(n,{code:R.too_small,minimum:l.minLength.value,type:"array",inclusive:!0,exact:!1,message:l.minLength.message}),g.dirty()}if(l.maxLength!==null){if(n.data.length>l.maxLength.value)_(n,{code:R.too_big,maximum:l.maxLength.value,type:"array",inclusive:!0,exact:!1,message:l.maxLength.message}),g.dirty()}if(n.common.async)return Promise.all([...n.data].map((w,G)=>{return l.type._parseAsync(new I(n,w,n.path,G))})).then((w)=>{return N.mergeArray(g,w)});let b=[...n.data].map((w,G)=>{return l.type._parseSync(new I(n,w,n.path,G))});return N.mergeArray(g,b)}get element(){return this._def.type}min(f,n){return new V({...this._def,minLength:{value:f,message:H.toString(n)}})}max(f,n){return new V({...this._def,maxLength:{value:f,message:H.toString(n)}})}length(f,n){return new V({...this._def,exactLength:{value:f,message:H.toString(n)}})}nonempty(f){return this.min(1,f)}}V.create=(f,n)=>{return new V({type:f,minLength:null,maxLength:null,exactLength:null,typeName:X.ZodArray,...h(n)})};function qf(f){if(f instanceof L){let n={};for(let g in f.shape){let l=f.shape[g];n[g]=P.create(qf(l))}return new L({...f._def,shape:()=>n})}else if(f instanceof V)return new V({...f._def,type:qf(f.element)});else if(f instanceof P)return P.create(qf(f.unwrap()));else if(f instanceof e)return e.create(qf(f.unwrap()));else if(f instanceof y)return y.create(f.items.map((n)=>qf(n)));else return f}class L extends B{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let f=this._def.shape(),n=A.objectKeys(f);return this._cached={shape:f,keys:n},this._cached}_parse(f){if(this._getType(f)!==M.object){let S=this._getOrReturnCtx(f);return _(S,{code:R.invalid_type,expected:M.object,received:S.parsedType}),J}let{status:g,ctx:l}=this._processInputParams(f),{shape:b,keys:w}=this._getCached(),G=[];if(!(this._def.catchall instanceof x&&this._def.unknownKeys==="strip")){for(let S in l.data)if(!w.includes(S))G.push(S)}let $=[];for(let S of w){let q=b[S],U=l.data[S];$.push({key:{status:"valid",value:S},value:q._parse(new I(l,U,l.path,S)),alwaysSet:S in l.data})}if(this._def.catchall instanceof x){let S=this._def.unknownKeys;if(S==="passthrough")for(let q of G)$.push({key:{status:"valid",value:q},value:{status:"valid",value:l.data[q]}});else if(S==="strict"){if(G.length>0)_(l,{code:R.unrecognized_keys,keys:G}),g.dirty()}else if(S==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let S=this._def.catchall;for(let q of G){let U=l.data[q];$.push({key:{status:"valid",value:q},value:S._parse(new I(l,U,l.path,q)),alwaysSet:q in l.data})}}if(l.common.async)return Promise.resolve().then(async()=>{let S=[];for(let q of $){let U=await q.key,j=await q.value;S.push({key:U,value:j,alwaysSet:q.alwaysSet})}return S}).then((S)=>{return N.mergeObjectSync(g,S)});else return N.mergeObjectSync(g,$)}get shape(){return this._def.shape()}strict(f){return H.errToObj,new L({...this._def,unknownKeys:"strict",...f!==void 0?{errorMap:(n,g)=>{let l=this._def.errorMap?.(n,g).message??g.defaultError;if(n.code==="unrecognized_keys")return{message:H.errToObj(f).message??l};return{message:l}}}:{}})}strip(){return new L({...this._def,unknownKeys:"strip"})}passthrough(){return new L({...this._def,unknownKeys:"passthrough"})}extend(f){return new L({...this._def,shape:()=>({...this._def.shape(),...f})})}merge(f){return new L({unknownKeys:f._def.unknownKeys,catchall:f._def.catchall,shape:()=>({...this._def.shape(),...f._def.shape()}),typeName:X.ZodObject})}setKey(f,n){return this.augment({[f]:n})}catchall(f){return new L({...this._def,catchall:f})}pick(f){let n={};for(let g of A.objectKeys(f))if(f[g]&&this.shape[g])n[g]=this.shape[g];return new L({...this._def,shape:()=>n})}omit(f){let n={};for(let g of A.objectKeys(this.shape))if(!f[g])n[g]=this.shape[g];return new L({...this._def,shape:()=>n})}deepPartial(){return qf(this)}partial(f){let n={};for(let g of A.objectKeys(this.shape)){let l=this.shape[g];if(f&&!f[g])n[g]=l;else n[g]=l.optional()}return new L({...this._def,shape:()=>n})}required(f){let n={};for(let g of A.objectKeys(this.shape))if(f&&!f[g])n[g]=this.shape[g];else{let b=this.shape[g];while(b instanceof P)b=b._def.innerType;n[g]=b}return new L({...this._def,shape:()=>n})}keyof(){return wn(A.objectKeys(this.shape))}}L.create=(f,n)=>{return new L({shape:()=>f,unknownKeys:"strip",catchall:x.create(),typeName:X.ZodObject,...h(n)})};L.strictCreate=(f,n)=>{return new L({shape:()=>f,unknownKeys:"strict",catchall:x.create(),typeName:X.ZodObject,...h(n)})};L.lazycreate=(f,n)=>{return new L({shape:f,unknownKeys:"strip",catchall:x.create(),typeName:X.ZodObject,...h(n)})};class Yf extends B{_parse(f){let{ctx:n}=this._processInputParams(f),g=this._def.options;function l(b){for(let G of b)if(G.result.status==="valid")return G.result;for(let G of b)if(G.result.status==="dirty")return n.common.issues.push(...G.ctx.common.issues),G.result;let w=b.map((G)=>new m(G.ctx.common.issues));return _(n,{code:R.invalid_union,unionErrors:w}),J}if(n.common.async)return Promise.all(g.map(async(b)=>{let w={...n,common:{...n.common,issues:[]},parent:null};return{result:await b._parseAsync({data:n.data,path:n.path,parent:w}),ctx:w}})).then(l);else{let b=void 0,w=[];for(let $ of g){let S={...n,common:{...n.common,issues:[]},parent:null},q=$._parseSync({data:n.data,path:n.path,parent:S});if(q.status==="valid")return q;else if(q.status==="dirty"&&!b)b={result:q,ctx:S};if(S.common.issues.length)w.push(S.common.issues)}if(b)return n.common.issues.push(...b.ctx.common.issues),b.result;let G=w.map(($)=>new m($));return _(n,{code:R.invalid_union,unionErrors:G}),J}}get options(){return this._def.options}}Yf.create=(f,n)=>{return new Yf({options:f,typeName:X.ZodUnion,...h(n)})};var p=(f)=>{if(f instanceof Bf)return p(f.schema);else if(f instanceof i)return p(f.innerType());else if(f instanceof Af)return[f.value];else if(f instanceof nf)return f.options;else if(f instanceof zf)return A.objectValues(f.enum);else if(f instanceof Uf)return p(f._def.innerType);else if(f instanceof Xf)return[void 0];else if(f instanceof Qf)return[null];else if(f instanceof P)return[void 0,...p(f.unwrap())];else if(f instanceof e)return[null,...p(f.unwrap())];else if(f instanceof cf)return p(f.unwrap());else if(f instanceof vf)return p(f.unwrap());else if(f instanceof Of)return p(f._def.innerType);else return[]};class rf extends B{_parse(f){let{ctx:n}=this._processInputParams(f);if(n.parsedType!==M.object)return _(n,{code:R.invalid_type,expected:M.object,received:n.parsedType}),J;let g=this.discriminator,l=n.data[g],b=this.optionsMap.get(l);if(!b)return _(n,{code:R.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[g]}),J;if(n.common.async)return b._parseAsync({data:n.data,path:n.path,parent:n});else return b._parseSync({data:n.data,path:n.path,parent:n})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(f,n,g){let l=new Map;for(let b of n){let w=p(b.shape[f]);if(!w.length)throw Error(`A discriminator value for key \`${f}\` could not be extracted from all schema options`);for(let G of w){if(l.has(G))throw Error(`Discriminator property ${String(f)} has duplicate value ${String(G)}`);l.set(G,b)}}return new rf({typeName:X.ZodDiscriminatedUnion,discriminator:f,options:n,optionsMap:l,...h(g)})}}function pf(f,n){let g=c(f),l=c(n);if(f===n)return{valid:!0,data:f};else if(g===M.object&&l===M.object){let b=A.objectKeys(n),w=A.objectKeys(f).filter(($)=>b.indexOf($)!==-1),G={...f,...n};for(let $ of w){let S=pf(f[$],n[$]);if(!S.valid)return{valid:!1};G[$]=S.data}return{valid:!0,data:G}}else if(g===M.array&&l===M.array){if(f.length!==n.length)return{valid:!1};let b=[];for(let w=0;w<f.length;w++){let G=f[w],$=n[w],S=pf(G,$);if(!S.valid)return{valid:!1};b.push(S.data)}return{valid:!0,data:b}}else if(g===M.date&&l===M.date&&+f===+n)return{valid:!0,data:f};else return{valid:!1}}class hf extends B{_parse(f){let{status:n,ctx:g}=this._processInputParams(f),l=(b,w)=>{if(Pf(b)||Pf(w))return J;let G=pf(b.value,w.value);if(!G.valid)return _(g,{code:R.invalid_intersection_types}),J;if(If(b)||If(w))n.dirty();return{status:n.value,value:G.data}};if(g.common.async)return Promise.all([this._def.left._parseAsync({data:g.data,path:g.path,parent:g}),this._def.right._parseAsync({data:g.data,path:g.path,parent:g})]).then(([b,w])=>l(b,w));else return l(this._def.left._parseSync({data:g.data,path:g.path,parent:g}),this._def.right._parseSync({data:g.data,path:g.path,parent:g}))}}hf.create=(f,n,g)=>{return new hf({left:f,right:n,typeName:X.ZodIntersection,...h(g)})};class y extends B{_parse(f){let{status:n,ctx:g}=this._processInputParams(f);if(g.parsedType!==M.array)return _(g,{code:R.invalid_type,expected:M.array,received:g.parsedType}),J;if(g.data.length<this._def.items.length)return _(g,{code:R.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J;if(!this._def.rest&&g.data.length>this._def.items.length)_(g,{code:R.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty();let b=[...g.data].map((w,G)=>{let $=this._def.items[G]||this._def.rest;if(!$)return null;return $._parse(new I(g,w,g.path,G))}).filter((w)=>!!w);if(g.common.async)return Promise.all(b).then((w)=>{return N.mergeArray(n,w)});else return N.mergeArray(n,b)}get items(){return this._def.items}rest(f){return new y({...this._def,rest:f})}}y.create=(f,n)=>{if(!Array.isArray(f))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new y({items:f,typeName:X.ZodTuple,rest:null,...h(n)})};class mf extends B{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(f){let{status:n,ctx:g}=this._processInputParams(f);if(g.parsedType!==M.object)return _(g,{code:R.invalid_type,expected:M.object,received:g.parsedType}),J;let l=[],b=this._def.keyType,w=this._def.valueType;for(let G in g.data)l.push({key:b._parse(new I(g,G,g.path,G)),value:w._parse(new I(g,g.data[G],g.path,G)),alwaysSet:G in g.data});if(g.common.async)return N.mergeObjectAsync(n,l);else return N.mergeObjectSync(n,l)}get element(){return this._def.valueType}static create(f,n,g){if(n instanceof B)return new mf({keyType:f,valueType:n,typeName:X.ZodRecord,...h(g)});return new mf({keyType:o.create(),valueType:f,typeName:X.ZodRecord,...h(n)})}}class Ef extends B{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(f){let{status:n,ctx:g}=this._processInputParams(f);if(g.parsedType!==M.map)return _(g,{code:R.invalid_type,expected:M.map,received:g.parsedType}),J;let l=this._def.keyType,b=this._def.valueType,w=[...g.data.entries()].map(([G,$],S)=>{return{key:l._parse(new I(g,G,g.path,[S,"key"])),value:b._parse(new I(g,$,g.path,[S,"value"]))}});if(g.common.async){let G=new Map;return Promise.resolve().then(async()=>{for(let $ of w){let S=await $.key,q=await $.value;if(S.status==="aborted"||q.status==="aborted")return J;if(S.status==="dirty"||q.status==="dirty")n.dirty();G.set(S.value,q.value)}return{status:n.value,value:G}})}else{let G=new Map;for(let $ of w){let{key:S,value:q}=$;if(S.status==="aborted"||q.status==="aborted")return J;if(S.status==="dirty"||q.status==="dirty")n.dirty();G.set(S.value,q.value)}return{status:n.value,value:G}}}}Ef.create=(f,n,g)=>{return new Ef({valueType:n,keyType:f,typeName:X.ZodMap,...h(g)})};class Rf extends B{_parse(f){let{status:n,ctx:g}=this._processInputParams(f);if(g.parsedType!==M.set)return _(g,{code:R.invalid_type,expected:M.set,received:g.parsedType}),J;let l=this._def;if(l.minSize!==null){if(g.data.size<l.minSize.value)_(g,{code:R.too_small,minimum:l.minSize.value,type:"set",inclusive:!0,exact:!1,message:l.minSize.message}),n.dirty()}if(l.maxSize!==null){if(g.data.size>l.maxSize.value)_(g,{code:R.too_big,maximum:l.maxSize.value,type:"set",inclusive:!0,exact:!1,message:l.maxSize.message}),n.dirty()}let b=this._def.valueType;function w($){let S=new Set;for(let q of $){if(q.status==="aborted")return J;if(q.status==="dirty")n.dirty();S.add(q.value)}return{status:n.value,value:S}}let G=[...g.data.values()].map(($,S)=>b._parse(new I(g,$,g.path,S)));if(g.common.async)return Promise.all(G).then(($)=>w($));else return w(G)}min(f,n){return new Rf({...this._def,minSize:{value:f,message:H.toString(n)}})}max(f,n){return new Rf({...this._def,maxSize:{value:f,message:H.toString(n)}})}size(f,n){return this.min(f,n).max(f,n)}nonempty(f){return this.min(1,f)}}Rf.create=(f,n)=>{return new Rf({valueType:f,minSize:null,maxSize:null,typeName:X.ZodSet,...h(n)})};class Wf extends B{constructor(){super(...arguments);this.validate=this.implement}_parse(f){let{ctx:n}=this._processInputParams(f);if(n.parsedType!==M.function)return _(n,{code:R.invalid_type,expected:M.function,received:n.parsedType}),J;function g(G,$){return Nf({data:G,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,_f(),u].filter((S)=>!!S),issueData:{code:R.invalid_arguments,argumentsError:$}})}function l(G,$){return Nf({data:G,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,_f(),u].filter((S)=>!!S),issueData:{code:R.invalid_return_type,returnTypeError:$}})}let b={errorMap:n.common.contextualErrorMap},w=n.data;if(this._def.returns instanceof Sf){let G=this;return F(async function(...$){let S=new m([]),q=await G._def.args.parseAsync($,b).catch((r)=>{throw S.addIssue(g($,r)),S}),U=await Reflect.apply(w,this,q);return await G._def.returns._def.type.parseAsync(U,b).catch((r)=>{throw S.addIssue(l(U,r)),S})})}else{let G=this;return F(function(...$){let S=G._def.args.safeParse($,b);if(!S.success)throw new m([g($,S.error)]);let q=Reflect.apply(w,this,S.data),U=G._def.returns.safeParse(q,b);if(!U.success)throw new m([l(q,U.error)]);return U.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...f){return new Wf({...this._def,args:y.create(f).rest(d.create())})}returns(f){return new Wf({...this._def,returns:f})}implement(f){return this.parse(f)}strictImplement(f){return this.parse(f)}static create(f,n,g){return new Wf({args:f?f:y.create([]).rest(d.create()),returns:n||d.create(),typeName:X.ZodFunction,...h(g)})}}class Bf extends B{get schema(){return this._def.getter()}_parse(f){let{ctx:n}=this._processInputParams(f);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Bf.create=(f,n)=>{return new Bf({getter:f,typeName:X.ZodLazy,...h(n)})};class Af extends B{_parse(f){if(f.data!==this._def.value){let n=this._getOrReturnCtx(f);return _(n,{received:n.data,code:R.invalid_literal,expected:this._def.value}),J}return{status:"valid",value:f.data}}get value(){return this._def.value}}Af.create=(f,n)=>{return new Af({value:f,typeName:X.ZodLiteral,...h(n)})};function wn(f,n){return new nf({values:f,typeName:X.ZodEnum,...h(n)})}class nf extends B{_parse(f){if(typeof f.data!=="string"){let n=this._getOrReturnCtx(f),g=this._def.values;return _(n,{expected:A.joinValues(g),received:n.parsedType,code:R.invalid_type}),J}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(f.data)){let n=this._getOrReturnCtx(f),g=this._def.values;return _(n,{received:n.data,code:R.invalid_enum_value,options:g}),J}return F(f.data)}get options(){return this._def.values}get enum(){let f={};for(let n of this._def.values)f[n]=n;return f}get Values(){let f={};for(let n of this._def.values)f[n]=n;return f}get Enum(){let f={};for(let n of this._def.values)f[n]=n;return f}extract(f,n=this._def){return nf.create(f,{...this._def,...n})}exclude(f,n=this._def){return nf.create(this.options.filter((g)=>!f.includes(g)),{...this._def,...n})}}nf.create=wn;class zf extends B{_parse(f){let n=A.getValidEnumValues(this._def.values),g=this._getOrReturnCtx(f);if(g.parsedType!==M.string&&g.parsedType!==M.number){let l=A.objectValues(n);return _(g,{expected:A.joinValues(l),received:g.parsedType,code:R.invalid_type}),J}if(!this._cache)this._cache=new Set(A.getValidEnumValues(this._def.values));if(!this._cache.has(f.data)){let l=A.objectValues(n);return _(g,{received:g.data,code:R.invalid_enum_value,options:l}),J}return F(f.data)}get enum(){return this._def.values}}zf.create=(f,n)=>{return new zf({values:f,typeName:X.ZodNativeEnum,...h(n)})};class Sf extends B{unwrap(){return this._def.type}_parse(f){let{ctx:n}=this._processInputParams(f);if(n.parsedType!==M.promise&&n.common.async===!1)return _(n,{code:R.invalid_type,expected:M.promise,received:n.parsedType}),J;let g=n.parsedType===M.promise?n.data:Promise.resolve(n.data);return F(g.then((l)=>{return this._def.type.parseAsync(l,{path:n.path,errorMap:n.common.contextualErrorMap})}))}}Sf.create=(f,n)=>{return new Sf({type:f,typeName:X.ZodPromise,...h(n)})};class i extends B{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===X.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(f){let{status:n,ctx:g}=this._processInputParams(f),l=this._def.effect||null,b={addIssue:(w)=>{if(_(g,w),w.fatal)n.abort();else n.dirty()},get path(){return g.path}};if(b.addIssue=b.addIssue.bind(b),l.type==="preprocess"){let w=l.transform(g.data,b);if(g.common.async)return Promise.resolve(w).then(async(G)=>{if(n.value==="aborted")return J;let $=await this._def.schema._parseAsync({data:G,path:g.path,parent:g});if($.status==="aborted")return J;if($.status==="dirty")return Gf($.value);if(n.value==="dirty")return Gf($.value);return $});else{if(n.value==="aborted")return J;let G=this._def.schema._parseSync({data:w,path:g.path,parent:g});if(G.status==="aborted")return J;if(G.status==="dirty")return Gf(G.value);if(n.value==="dirty")return Gf(G.value);return G}}if(l.type==="refinement"){let w=(G)=>{let $=l.refinement(G,b);if(g.common.async)return Promise.resolve($);if($ instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return G};if(g.common.async===!1){let G=this._def.schema._parseSync({data:g.data,path:g.path,parent:g});if(G.status==="aborted")return J;if(G.status==="dirty")n.dirty();return w(G.value),{status:n.value,value:G.value}}else return this._def.schema._parseAsync({data:g.data,path:g.path,parent:g}).then((G)=>{if(G.status==="aborted")return J;if(G.status==="dirty")n.dirty();return w(G.value).then(()=>{return{status:n.value,value:G.value}})})}if(l.type==="transform")if(g.common.async===!1){let w=this._def.schema._parseSync({data:g.data,path:g.path,parent:g});if(!a(w))return J;let G=l.transform(w.value,b);if(G instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:G}}else return this._def.schema._parseAsync({data:g.data,path:g.path,parent:g}).then((w)=>{if(!a(w))return J;return Promise.resolve(l.transform(w.value,b)).then((G)=>({status:n.value,value:G}))});A.assertNever(l)}}i.create=(f,n,g)=>{return new i({schema:f,typeName:X.ZodEffects,effect:n,...h(g)})};i.createWithPreprocess=(f,n,g)=>{return new i({schema:n,effect:{type:"preprocess",transform:f},typeName:X.ZodEffects,...h(g)})};class P extends B{_parse(f){if(this._getType(f)===M.undefined)return F(void 0);return this._def.innerType._parse(f)}unwrap(){return this._def.innerType}}P.create=(f,n)=>{return new P({innerType:f,typeName:X.ZodOptional,...h(n)})};class e extends B{_parse(f){if(this._getType(f)===M.null)return F(null);return this._def.innerType._parse(f)}unwrap(){return this._def.innerType}}e.create=(f,n)=>{return new e({innerType:f,typeName:X.ZodNullable,...h(n)})};class Uf extends B{_parse(f){let{ctx:n}=this._processInputParams(f),g=n.data;if(n.parsedType===M.undefined)g=this._def.defaultValue();return this._def.innerType._parse({data:g,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}Uf.create=(f,n)=>{return new Uf({innerType:f,typeName:X.ZodDefault,defaultValue:typeof n.default==="function"?n.default:()=>n.default,...h(n)})};class Of extends B{_parse(f){let{ctx:n}=this._processInputParams(f),g={...n,common:{...n.common,issues:[]}},l=this._def.innerType._parse({data:g.data,path:g.path,parent:{...g}});if(Hf(l))return l.then((b)=>{return{status:"valid",value:b.status==="valid"?b.value:this._def.catchValue({get error(){return new m(g.common.issues)},input:g.data})}});else return{status:"valid",value:l.status==="valid"?l.value:this._def.catchValue({get error(){return new m(g.common.issues)},input:g.data})}}removeCatch(){return this._def.innerType}}Of.create=(f,n)=>{return new Of({innerType:f,typeName:X.ZodCatch,catchValue:typeof n.catch==="function"?n.catch:()=>n.catch,...h(n)})};class jf extends B{_parse(f){if(this._getType(f)!==M.nan){let g=this._getOrReturnCtx(f);return _(g,{code:R.invalid_type,expected:M.nan,received:g.parsedType}),J}return{status:"valid",value:f.data}}}jf.create=(f)=>{return new jf({typeName:X.ZodNaN,...h(f)})};var Ag=Symbol("zod_brand");class cf extends B{_parse(f){let{ctx:n}=this._processInputParams(f),g=n.data;return this._def.type._parse({data:g,path:n.path,parent:n})}unwrap(){return this._def.type}}class kf extends B{_parse(f){let{status:n,ctx:g}=this._processInputParams(f);if(g.common.async)return(async()=>{let b=await this._def.in._parseAsync({data:g.data,path:g.path,parent:g});if(b.status==="aborted")return J;if(b.status==="dirty")return n.dirty(),Gf(b.value);else return this._def.out._parseAsync({data:b.value,path:g.path,parent:g})})();else{let l=this._def.in._parseSync({data:g.data,path:g.path,parent:g});if(l.status==="aborted")return J;if(l.status==="dirty")return n.dirty(),{status:"dirty",value:l.value};else return this._def.out._parseSync({data:l.value,path:g.path,parent:g})}}static create(f,n){return new kf({in:f,out:n,typeName:X.ZodPipeline})}}class vf extends B{_parse(f){let n=this._def.innerType._parse(f),g=(l)=>{if(a(l))l.value=Object.freeze(l.value);return l};return Hf(n)?n.then((l)=>g(l)):g(n)}unwrap(){return this._def.innerType}}vf.create=(f,n)=>{return new vf({innerType:f,typeName:X.ZodReadonly,...h(n)})};function gn(f,n){let g=typeof f==="function"?f(n):typeof f==="string"?{message:f}:f;return typeof g==="string"?{message:g}:g}function $n(f,n={},g){if(f)return $f.create().superRefine((l,b)=>{let w=f(l);if(w instanceof Promise)return w.then((G)=>{if(!G){let $=gn(n,l),S=$.fatal??g??!0;b.addIssue({code:"custom",...$,fatal:S})}});if(!w){let G=gn(n,l),$=G.fatal??g??!0;b.addIssue({code:"custom",...G,fatal:$})}return});return $f.create()}var zg={object:L.lazycreate},X;(function(f){f.ZodString="ZodString",f.ZodNumber="ZodNumber",f.ZodNaN="ZodNaN",f.ZodBigInt="ZodBigInt",f.ZodBoolean="ZodBoolean",f.ZodDate="ZodDate",f.ZodSymbol="ZodSymbol",f.ZodUndefined="ZodUndefined",f.ZodNull="ZodNull",f.ZodAny="ZodAny",f.ZodUnknown="ZodUnknown",f.ZodNever="ZodNever",f.ZodVoid="ZodVoid",f.ZodArray="ZodArray",f.ZodObject="ZodObject",f.ZodUnion="ZodUnion",f.ZodDiscriminatedUnion="ZodDiscriminatedUnion",f.ZodIntersection="ZodIntersection",f.ZodTuple="ZodTuple",f.ZodRecord="ZodRecord",f.ZodMap="ZodMap",f.ZodSet="ZodSet",f.ZodFunction="ZodFunction",f.ZodLazy="ZodLazy",f.ZodLiteral="ZodLiteral",f.ZodEnum="ZodEnum",f.ZodEffects="ZodEffects",f.ZodNativeEnum="ZodNativeEnum",f.ZodOptional="ZodOptional",f.ZodNullable="ZodNullable",f.ZodDefault="ZodDefault",f.ZodCatch="ZodCatch",f.ZodPromise="ZodPromise",f.ZodBranded="ZodBranded",f.ZodPipeline="ZodPipeline",f.ZodReadonly="ZodReadonly"})(X||(X={}));var Ug=(f,n={message:`Input not instance of ${f.name}`})=>$n((g)=>g instanceof f,n),Rn=o.create,Sn=s.create,Og=jf.create,vg=ff.create,Mn=Jf.create,Cg=wf.create,Lg=Ff.create,Ng=Xf.create,Fg=Qf.create,Dg=$f.create,mg=d.create,Eg=x.create,jg=Df.create,kg=V.create,Kg=L.create,og=L.strictCreate,Vg=Yf.create,Pg=rf.create,Ig=hf.create,ig=y.create,rg=mf.create,cg=Ef.create,xg=Rf.create,yg=Wf.create,Tg=Bf.create,tg=Af.create,ug=nf.create,pg=zf.create,eg=Sf.create,Zg=i.create,ag=P.create,dg=e.create,sg=i.createWithPreprocess,fl=kf.create,nl=()=>Rn().optional(),gl=()=>Sn().optional(),ll=()=>Mn().optional(),bl={string:(f)=>o.create({...f,coerce:!0}),number:(f)=>s.create({...f,coerce:!0}),boolean:(f)=>Jf.create({...f,coerce:!0}),bigint:(f)=>ff.create({...f,coerce:!0}),date:(f)=>wf.create({...f,coerce:!0})};var Gl=J;var _n=Cf.object({remote:Cf.enum(["gh","git"]),repoUrl:Cf.string().optional()});var T=ef(Hn(),".git-agents"),qn=ef(T,"config.json");function Wn(f=qn){try{if(!$l(f))return null;let n=Sl(f,"utf8"),g=_n.safeParse(JSON.parse(n));return g.success?g.data:null}catch{return null}}function Jn(f,n=T,g=qn){Rl(n,{recursive:!0}),Ml(g,JSON.stringify(f,null,2),"utf8")}function Zf(f){let n=wl(Hn(),f);return ef(T,n)}import{useState as rn}from"react";import{useKeyboard as Ol}from"@opentui/react";import{useKeyboard as _l}from"@opentui/react";import{jsxDEV as gf}from"@opentui/react/jsx-dev-runtime";function Xn({onNavigate:f}){return _l((n)=>{if(n.name==="escape")process.exit(0)}),gf("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:[gf("box",{flexDirection:"column",alignItems:"center",gap:1,children:[gf("ascii-font",{font:"tiny",text:"git-agents"},void 0,!1,void 0,this),gf("text",{children:"Sync your Claude agents directory with a remote git repo"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),gf("box",{flexDirection:"column",width:40,marginTop:2,children:gf("select",{focused:!0,options:[{name:"Pull",description:"Download agents from remote to local"},{name:"Push",description:"Upload local agents to remote"},{name:"Edit Config",description:"Change remote configuration"}],onSelect:(n)=>{if(n===0)f({id:"sync",mode:"pull"});else if(n===1)f({id:"sync",mode:"push"});else if(n===2)f({id:"setup"})},height:6},void 0,!1,void 0,this)},void 0,!1,void 0,this),gf("box",{marginTop:1,children:gf("text",{children:"\u2191\u2193 navigate Enter select Ctrl+C quit"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as of,useEffect as hl}from"react";import{useKeyboard as Bl}from"@opentui/react";import{TextAttributes as Lf}from"@opentui/core";var{$:E}=globalThis.Bun;async function Qn(){try{let f=await E`gh --version`.quiet();return{ok:f.exitCode===0,output:f.stdout.toString()}}catch(f){return{ok:!1,error:f.message??"gh not found"}}}async function af(){try{return{ok:(await E`gh auth status`.quiet()).exitCode===0}}catch{return{ok:!1,error:"Not authenticated. Run: gh auth login"}}}async function Yn(f){try{return{ok:(await E`gh repo view ${f}`.quiet()).exitCode===0}}catch{return{ok:!1}}}async function hn(f){try{let n=await E`gh repo create ${f} --private`.quiet();return{ok:n.exitCode===0,output:n.stdout.toString()}}catch(n){return{ok:!1,error:n.stderr?.toString()??n.message}}}async function Bn(f){try{let g=(await E`gh repo view ${f} --json sshUrl --jq .sshUrl`.quiet()).stdout.toString().trim();return{ok:!!g,output:g}}catch(n){return{ok:!1,error:n.message}}}async function An(f){try{return{ok:(await E`git ls-remote ${f}`.quiet()).exitCode===0}}catch{return{ok:!1,error:"Cannot reach repository"}}}async function zn(f,n){try{return{ok:(await E`git clone ${f} ${n}`.quiet()).exitCode===0}}catch(g){return{ok:!1,error:g.stderr?.toString()??g.message}}}async function Un(f){try{let n=await E`git -C ${f} pull`.quiet();return{ok:n.exitCode===0,output:n.stdout.toString()}}catch(n){let g=n.stderr?.toString()??n.message??"";if(g.includes("no such ref was fetched")||g.includes("couldn't find remote ref"))return{ok:!0,output:"Remote is empty"};return{ok:!1,error:g}}}async function On(f,n){try{if(await E`git -C ${f} add -A`.quiet(),!(await E`git -C ${f} status --porcelain`.quiet()).stdout.toString().trim())return{ok:!0,output:"Nothing to commit"};return await E`git -C ${f} commit -m ${n}`.quiet(),{ok:(await E`git -C ${f} push -u origin HEAD`.quiet()).exitCode===0}}catch(g){return{ok:!1,error:g.stderr?.toString()??g.message}}}async function vn(f,n){try{return{ok:(await E`git -C ${f} remote set-url origin ${n}`.quiet()).exitCode===0}}catch(g){return{ok:!1,error:g.stderr?.toString()??g.message}}}import{join as Q}from"path";import{homedir as Hl}from"os";var Y=Hl(),Cn=[{id:"amp",name:"Amp",globalPath:Q(Y,".config/agents")},{id:"kimi-cli",name:"Kimi Code CLI",globalPath:Q(Y,".config/agents")},{id:"replit",name:"Replit",globalPath:Q(Y,".config/agents")},{id:"universal",name:"Universal",globalPath:Q(Y,".config/agents")},{id:"antigravity",name:"Antigravity",globalPath:Q(Y,".gemini/antigravity")},{id:"augment",name:"Augment",globalPath:Q(Y,".augment")},{id:"bob",name:"IBM Bob",globalPath:Q(Y,".bob")},{id:"claude-code",name:"Claude Code",globalPath:Q(Y,".claude")},{id:"openclaw",name:"OpenClaw",globalPath:Q(Y,".openclaw")},{id:"cline",name:"Cline",globalPath:Q(Y,".agents")},{id:"warp",name:"Warp",globalPath:Q(Y,".agents")},{id:"codebuddy",name:"CodeBuddy",globalPath:Q(Y,".codebuddy")},{id:"codex",name:"Codex",globalPath:Q(Y,".codex")},{id:"command-code",name:"Command Code",globalPath:Q(Y,".commandcode")},{id:"continue",name:"Continue",globalPath:Q(Y,".continue")},{id:"cortex",name:"Cortex Code",globalPath:Q(Y,".snowflake/cortex")},{id:"crush",name:"Crush",globalPath:Q(Y,".config/crush")},{id:"cursor",name:"Cursor",globalPath:Q(Y,".cursor")},{id:"deepagents",name:"Deep Agents",globalPath:Q(Y,".deepagents/agent")},{id:"droid",name:"Droid",globalPath:Q(Y,".factory")},{id:"firebender",name:"Firebender",globalPath:Q(Y,".firebender")},{id:"gemini-cli",name:"Gemini CLI",globalPath:Q(Y,".gemini")},{id:"github-copilot",name:"GitHub Copilot",globalPath:Q(Y,".copilot")},{id:"goose",name:"Goose",globalPath:Q(Y,".config/goose")},{id:"junie",name:"Junie",globalPath:Q(Y,".junie")},{id:"iflow-cli",name:"iFlow CLI",globalPath:Q(Y,".iflow")},{id:"kilo",name:"Kilo Code",globalPath:Q(Y,".kilocode")},{id:"kiro-cli",name:"Kiro CLI",globalPath:Q(Y,".kiro")},{id:"kode",name:"Kode",globalPath:Q(Y,".kode")},{id:"mcpjam",name:"MCPJam",globalPath:Q(Y,".mcpjam")},{id:"mistral-vibe",name:"Mistral Vibe",globalPath:Q(Y,".vibe")},{id:"mux",name:"Mux",globalPath:Q(Y,".mux")},{id:"opencode",name:"OpenCode",globalPath:Q(Y,".config/opencode")},{id:"openhands",name:"OpenHands",globalPath:Q(Y,".openhands")},{id:"pi",name:"Pi",globalPath:Q(Y,".pi/agent")},{id:"qoder",name:"Qoder",globalPath:Q(Y,".qoder")},{id:"qwen-code",name:"Qwen Code",globalPath:Q(Y,".qwen")},{id:"roo",name:"Roo Code",globalPath:Q(Y,".roo")},{id:"trae",name:"Trae",globalPath:Q(Y,".trae")},{id:"trae-cn",name:"Trae CN",globalPath:Q(Y,".trae-cn")},{id:"windsurf",name:"Windsurf",globalPath:Q(Y,".codeium/windsurf")},{id:"zencoder",name:"Zencoder",globalPath:Q(Y,".zencoder")},{id:"neovate",name:"Neovate",globalPath:Q(Y,".neovate")},{id:"pochi",name:"Pochi",globalPath:Q(Y,".pochi")},{id:"adal",name:"AdaL",globalPath:Q(Y,".adal")}];import{existsSync as ql,readdirSync as df,statSync as Wl,mkdirSync as Jl,cpSync as Xl}from"fs";import{join as Ln,relative as Ql}from"path";import{createHash as Nn}from"crypto";function Yl(f){let n=[];function g(b){for(let w of df(b,{withFileTypes:!0})){let G=Ln(b,w.name);if(w.isFile())n.push([Ql(f,G),Wl(G).size]);else if(w.isDirectory())g(G)}}g(f),n.sort((b,w)=>b[0].localeCompare(w[0]));let l=Nn("sha256");for(let[b,w]of n)l.update(`${b}\x00${w}\x00`);return l.digest("hex")}function Kf(f){if(!ql(f))return[];try{return df(f,{withFileTypes:!0}).filter((n)=>n.isDirectory()).map((n)=>{let g=Ln(f,n.name),l=0,b=Nn("sha256").digest("hex");try{l=df(g,{withFileTypes:!0}).filter((w)=>w.isFile()).length,b=Yl(g)}catch{}return{name:n.name,fileCount:l,contentHash:b}}).sort((n,g)=>n.name.localeCompare(g.name))}catch{return[]}}function Fn(f,n){let g=Kf(f),l=Kf(n),b=new Map(g.map((U)=>[U.name,U])),w=new Map(l.map((U)=>[U.name,U])),G=[],$=[],S=[],q=[];for(let U of g)if(!w.has(U.name))G.push(U);else{let j=w.get(U.name);if(U.contentHash!==j.contentHash)S.push(U);else q.push(U)}for(let U of l)if(!b.has(U.name))$.push(U);return{added:G,removed:$,modified:S,unchanged:q}}function Dn(f,n){Jl(n,{recursive:!0}),Xl(f,n,{recursive:!0,force:!0})}async function mn(f){if(!(await f.checkGhInstalled()).ok)return{type:"gh-not-installed"};if(!(await f.checkGhAuth()).ok)return{type:"needs-auth"};return{type:"ok"}}async function En(f,n){if(!(await n.ghRepoExists(f)).ok)return{type:"not-found"};let l=await n.ghGetRepoCloneUrl(f);if(!l.ok||!l.output)return{type:"error",message:"Could not get repo URL from gh CLI."};return{type:"found",url:l.output.trim()}}async function jn(f,n){let g=await n.ghCreateRepo(f);if(!g.ok)return{type:"error",message:`Failed to create repo: ${g.error??"unknown error"}`};let l=await n.ghGetRepoCloneUrl(f);if(!l.ok||!l.output)return{type:"error",message:"Could not get repo URL after creating it."};return{type:"ok",url:l.output.trim()}}async function kn(f,n,g,l){let b={remote:n,repoUrl:n==="git"?f:void 0};if(l.isAlreadyCloned()){let G=await l.gitSetRemoteUrl(g,f);if(!G.ok)return{type:"error",message:`Failed to update remote URL: ${G.error??"unknown error"}`};return l.writeConfig(b),{type:"ok",config:b}}let w=await l.cloneRepo(f);if(!w.ok)return{type:"error",message:`Failed to clone: ${w.error??"unknown error"}`};return l.writeConfig(b),{type:"ok",config:b}}async function Kn(f,n){if(!(await n.checkGitRepoExists(f)).ok)return{type:"error",message:`Cannot reach repository: ${f}`};return{type:"ok"}}async function on(f,n,g,l){let b=await l.gitPull(g);if(!b.ok)return{type:"error",message:`Failed to pull remote: ${b.error??"unknown error"}`};let w=new Map;for(let $ of n){let S=w.get($.globalPath)??[];w.set($.globalPath,[...S,$])}let G=[];for(let[$,S]of w){let q=Zf($),U=f==="pull"?q:$,j=f==="pull"?$:q,r=Fn(U,j),K=Kf(U),t=Kf(j);if(K.length===0&&t.length===0)continue;G.push({defs:S,diff:r,remoteCount:f==="pull"?K.length:t.length,localCount:f==="pull"?t.length:K.length})}return{type:"ok",agentDiffs:G}}async function Vn(f,n,g,l){let b=new Set;try{for(let w of n){let G=w.defs[0].globalPath;if(b.has(G))continue;b.add(G);let $=Zf(G);Dn(f==="pull"?$:G,f==="pull"?G:$)}}catch(w){return{type:"error",message:`Failed to copy agents: ${w.message}`}}if(f==="push"){let w=await l.gitAddCommitPush(g,`sync: update agents from local (${new Date().toISOString().slice(0,10)})`);if(!w.ok)return{type:"error",message:`Failed to push: ${w.error??"unknown error"}`}}return{type:"ok",message:f==="pull"?"Pull complete! Local agents updated.":"Push complete! Remote updated."}}import{jsxDEV as z}from"@opentui/react/jsx-dev-runtime";function Pn({mode:f,onBack:n}){let[g,l]=of("loading"),[b,w]=of("Fetching remote..."),[G,$]=of([]),[S,q]=of(null),[U,j]=of("");Bl((C)=>{if(C.name==="escape"){if(g==="done"||g==="review")n()}});let r={gitPull:Un,gitAddCommitPush:On};hl(()=>{async function C(){w("Pulling remote changes...");let v=await on(f,Cn,T,r);if(v.type==="error"){q(v.message),l("done");return}w("Comparing agents..."),$(v.agentDiffs),l("review")}C()},[]);async function K(C){if(!C){n();return}l("executing"),w(f==="pull"?"Copying agents from remote...":"Copying agents to remote...");let v=await Vn(f,G,T,r);if(v.type==="error")q(v.message);else j(v.message),q(null);l("done")}let t=f==="pull"?"Pull":"Push";if(g==="loading"||g==="executing")return z("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:z("text",{children:b},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(g==="done")return z("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:1,children:[S?z("text",{fg:"#ff5555",children:S},void 0,!1,void 0,this):z("text",{fg:"#50fa7b",children:U},void 0,!1,void 0,this),z("text",{attributes:Lf.DIM,children:"Press Esc to go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let Z=G.reduce((C,v)=>C+v.remoteCount,0),xf=G.reduce((C,v)=>C+v.localCount,0),lf=G.some((C)=>C.diff.added.length>0||C.diff.removed.length>0||C.diff.modified.length>0);return z("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:1,children:[z("ascii-font",{font:"tiny",text:t},void 0,!1,void 0,this),z("box",{flexDirection:"column",border:!0,borderStyle:"rounded",title:" Comparison ",paddingX:2,paddingY:1,width:60,gap:1,children:[z("box",{flexDirection:"row",justifyContent:"space-between",children:[z("text",{children:[z("span",{children:"Remote: "},void 0,!1,void 0,this),z("span",{fg:"#8be9fd",children:[Z," skills"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z("text",{children:[z("span",{children:"Local: "},void 0,!1,void 0,this),z("span",{fg:"#8be9fd",children:[xf," skills"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),G.length===0&&z("text",{attributes:Lf.DIM,children:"No agents found"},void 0,!1,void 0,this),G.map((C)=>{let v=C.diff,yf=v.added.length>0||v.removed.length>0||v.modified.length>0;return z("box",{flexDirection:"column",children:[z("box",{flexDirection:"row",justifyContent:"space-between",children:[z("text",{fg:"#bd93f9",children:C.defs.map((D)=>D.name).join(", ")},void 0,!1,void 0,this),z("text",{attributes:Lf.DIM,children:[C.remoteCount,"\u2193 / ",C.localCount,"\u2191"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),v.added.map((D)=>z("text",{children:[z("span",{fg:"#50fa7b",children:" + "},void 0,!1,void 0,this),z("span",{children:D.name},void 0,!1,void 0,this)]},D.name,!0,void 0,this)),v.removed.map((D)=>z("text",{children:[z("span",{fg:"#ff5555",children:" - "},void 0,!1,void 0,this),z("span",{children:D.name},void 0,!1,void 0,this)]},D.name,!0,void 0,this)),v.modified.map((D)=>z("text",{children:[z("span",{fg:"#ffb86c",children:" ~ "},void 0,!1,void 0,this),z("span",{children:D.name},void 0,!1,void 0,this)]},D.name,!0,void 0,this)),!yf&&v.unchanged.length>0&&z("text",{attributes:Lf.DIM,children:[" ",v.unchanged.length," skill",v.unchanged.length!==1?"s":""," unchanged"]},void 0,!0,void 0,this)]},C.defs.map((D)=>D.id).join(","),!0,void 0,this)})]},void 0,!0,void 0,this),z("box",{flexDirection:"column",alignItems:"center",gap:1,children:[z("text",{children:[z("span",{children:["Confirm ",f,"? "]},void 0,!0,void 0,this),z("span",{attributes:Lf.DIM,children:"(No is default \u2014 press Enter to cancel)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("select",{focused:!0,options:[{name:"No, cancel",description:"Go back to main menu"},{name:`Yes, ${f}`,description:lf?"Apply changes":"No changes to apply"}],onSelect:(C)=>K(C===1),width:30,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z("text",{attributes:Lf.DIM,children:"Esc to cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}import{useState as Mf}from"react";import{useKeyboard as Al}from"@opentui/react";import{TextAttributes as k}from"@opentui/core";import{existsSync as zl}from"fs";import{join as Ul}from"path";import{jsxDEV as W}from"@opentui/react/jsx-dev-runtime";var Vf="git-agents-remote";function In({existingConfig:f,onComplete:n}){let[g,l]=Mf("welcome"),[b,w]=Mf(f?.remote??"gh"),[G,$]=Mf(f?.repoUrl??""),[S,q]=Mf(""),[U,j]=Mf(!1),[r,K]=Mf(""),[t,Z]=Mf("");Al((O)=>{if(g==="welcome"&&O.name==="return")l("choose-remote");if(g==="gh-auth-needed"&&O.name==="return")xf();if(g==="error"&&O.name==="return")l("choose-remote");if(g==="git-url-input"&&O.name==="escape")l("choose-remote")});async function xf(){if(l("gh-checking"),Z("Checking gh auth..."),!(await af()).ok){l("gh-auth-needed");return}v()}let lf={checkGhInstalled:Qn,checkGhAuth:af,ghRepoExists:Yn,ghCreateRepo:hn,ghGetRepoCloneUrl:Bn,checkGitRepoExists:An,cloneRepo:(O)=>zn(O,T),isAlreadyCloned:()=>zl(Ul(T,".git")),writeConfig:Jn,gitSetRemoteUrl:vn};async function C(){l("gh-checking"),Z("Checking gh CLI...");let O=await mn(lf);if(O.type==="gh-not-installed"){K("GitHub CLI (gh) is not installed. Install it from https://cli.github.com and try again."),l("error");return}if(O.type==="needs-auth"){l("gh-auth-needed");return}v()}async function v(){l("gh-checking"),Z("Checking for git-agents repo...");let O=await En(Vf,lf);if(O.type==="error"){K(O.message),l("error");return}if(O.type==="not-found"){j(!1),l("gh-repo-check");return}j(!0),q(O.url),l("gh-confirm")}async function yf(){l("gh-checking"),Z(`Creating private repo "${Vf}"...`);let O=await jn(Vf,lf);if(O.type==="error"){K(O.message),l("error");return}q(O.url),l("gh-confirm")}async function D(O,bf){l("cloning"),Z(`Cloning ${O}...`);let Tf=await kn(O,bf,T,lf);if(Tf.type==="error"){K(Tf.message),l("error");return}n(Tf.config)}async function Tn(O){l("git-url-checking"),Z("Validating repository...");let bf=await Kn(O,lf);if(bf.type==="error"){K(`${bf.message}
4
+ Make sure the URL is correct and you have access.`),l("error");return}await D(O,"git")}if(g==="welcome")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("ascii-font",{font:"tiny",text:"git-agents"},void 0,!1,void 0,this),W("box",{flexDirection:"column",alignItems:"center",gap:1,width:60,children:[W("text",{children:"Sync your Claude agents skills with a remote git repo."},void 0,!1,void 0,this),W("text",{attributes:k.DIM,children:"Keeps your AI agents in sync across machines using git."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W("text",{children:[W("span",{attributes:k.DIM,children:"Press "},void 0,!1,void 0,this),W("span",{children:"Enter"},void 0,!1,void 0,this),W("span",{attributes:k.DIM,children:" to start setup"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(g==="choose-remote")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{children:"Choose how to connect your remote:"},void 0,!1,void 0,this),W("select",{focused:!0,options:[{name:"GitHub CLI (gh)",description:"Auto-create and manage a private GitHub repo"},{name:"Custom Git Repo",description:"Use any existing remote git repository"}],selectedIndex:b==="gh"?0:1,onSelect:(O)=>{let bf=O===0?"gh":"git";if(w(bf),bf==="gh")C();else l("git-url-input")},width:50,height:4},void 0,!1,void 0,this),W("text",{attributes:k.DIM,children:"\u2191\u2193 navigate Enter select"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(g==="gh-checking")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:W("text",{children:t},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(g==="gh-auth-needed")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{fg:"#ffb86c",children:"Not authenticated with GitHub CLI."},void 0,!1,void 0,this),W("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,children:W("text",{children:[W("span",{attributes:k.DIM,children:"Run in another terminal: "},void 0,!1,void 0,this),W("span",{fg:"#50fa7b",children:"gh auth login"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),W("text",{children:[W("span",{attributes:k.DIM,children:"Press "},void 0,!1,void 0,this),W("span",{children:"Enter"},void 0,!1,void 0,this),W("span",{attributes:k.DIM,children:" once authenticated to continue"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);if(g==="gh-repo-check")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{children:["Repo ",W("span",{fg:"#8be9fd",children:['"',Vf,'"']},void 0,!0,void 0,this)," does not exist on your GitHub account."]},void 0,!0,void 0,this),W("select",{focused:!0,options:[{name:`Create private repo "${Vf}"`,description:"Recommended"},{name:"Cancel",description:"Go back to remote selection"}],onSelect:(O)=>{if(O===0)yf();else l("choose-remote")},width:50,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(g==="gh-confirm")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{fg:"#50fa7b",children:U?"Found existing repo!":"Repository ready!"},void 0,!1,void 0,this),W("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,flexDirection:"column",gap:1,children:[W("text",{children:[W("span",{attributes:k.DIM,children:"Repo: "},void 0,!1,void 0,this),W("span",{fg:"#8be9fd",children:S},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W("text",{children:[W("span",{attributes:k.DIM,children:"Will clone to: "},void 0,!1,void 0,this),W("span",{children:"~/.git-agents"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),W("select",{focused:!0,options:[{name:"Continue",description:"Clone repo and save config"},{name:"Cancel",description:"Go back to remote selection"}],onSelect:(O)=>{if(O===0)D(S,"gh");else l("choose-remote")},width:40,height:4},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(g==="git-url-input")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{children:"Enter the Git repository URL:"},void 0,!1,void 0,this),W("box",{border:!0,borderStyle:"rounded",paddingX:2,paddingY:1,width:60,children:W("input",{focused:!0,placeholder:"git@github.com:user/repo.git",value:G,onInput:$,onSubmit:()=>{if(G.trim())Tn(G.trim())},flexGrow:1},void 0,!1,void 0,this)},void 0,!1,void 0,this),W("text",{attributes:k.DIM,children:"Enter to confirm Esc to go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(g==="git-url-checking")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:W("text",{children:t},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(g==="cloning")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,children:W("text",{children:t},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(g==="error")return W("box",{flexDirection:"column",alignItems:"center",justifyContent:"center",flexGrow:1,gap:2,children:[W("text",{fg:"#ff5555",children:r},void 0,!1,void 0,this),W("text",{children:[W("span",{attributes:k.DIM,children:"Press "},void 0,!1,void 0,this),W("span",{children:"Enter"},void 0,!1,void 0,this),W("span",{attributes:k.DIM,children:" to try again"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return null}import{jsxDEV as sf}from"@opentui/react/jsx-dev-runtime";function cn({initialScreen:f,initialConfig:n}){let[g,l]=rn(f),[b,w]=rn(n);if(Ol((G)=>{if(G.ctrl&&G.name==="c")process.exit(0)}),g.id==="setup")return sf(In,{existingConfig:g.existingConfig??b,onComplete:(G)=>{w(G),l({id:"main"})}},void 0,!1,void 0,this);if(g.id==="sync")return sf(Pn,{mode:g.mode,onBack:()=>l({id:"main"})},void 0,!1,void 0,this);return sf(Xn,{onNavigate:(G)=>l(G)},void 0,!1,void 0,this)}import{jsxDEV as Dl}from"@opentui/react/jsx-dev-runtime";var Ll=process.argv.slice(2),xn=Ll[0],yn=Wn(),Nl=!yn?{id:"setup"}:xn==="pull"?{id:"sync",mode:"pull"}:xn==="push"?{id:"sync",mode:"push"}:{id:"main"},Fl=await vl({exitOnCtrlC:!1});Cl(Fl).render(Dl(cn,{initialScreen:Nl,initialConfig:yn??void 0},void 0,!1,void 0,this));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-agents",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "TUI CLI to sync your AI agents and skills across machines using git",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -40,7 +40,8 @@
40
40
  "dependencies": {
41
41
  "@opentui/core": "^0.1.95",
42
42
  "@opentui/react": "^0.1.95",
43
- "react": "^19.2.4"
43
+ "react": "^19.2.4",
44
+ "zod": "^3.25.76"
44
45
  },
45
46
  "devDependencies": {
46
47
  "@types/bun": "latest",