hivefloor 0.0.1 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,20 +1,63 @@
1
1
  # hivefloor
2
2
 
3
- The command-line tool that connects Claude Code to your Hivefloor office: a live 3D view of your sessions as robots.
3
+ The command-line tool that connects Claude Code to your [Hivefloor](https://github.com/valerymelou/hivefloor) office: a live 3D view of your sessions as robots.
4
4
 
5
- > Status: placeholder release to reserve the name. Commands (`init`, `hook`, `doctor`, `preview`, `pause`, `resume`, `uninstall`) arrive in the next milestones. Follow progress at https://github.com/valerymelou/hivefloor.
5
+ ## Quick start
6
6
 
7
- The CLI has **zero runtime dependencies** and only ever sends fields from the allowlist in `@hivefloor/schema`.
7
+ ```bash
8
+ npm install -g hivefloor # or use a standalone binary (no Node needed)
9
+ hivefloor init --url https://your-office.example.com
10
+ hivefloor doctor
11
+ ```
12
+
13
+ Run `hivefloor add-project "Ledgerly"` from a project folder to show it by name; every other folder stays private. Deploying your own office: [self-hosting guide](https://github.com/valerymelou/hivefloor/blob/main/docs/self-hosting.md).
14
+
15
+ - **Private by construction.** Each event is built field by field from the allowlist in `@hivefloor/schema`. Private projects send only which robot, what kind of work and when. See [privacy](https://github.com/valerymelou/hivefloor/blob/main/docs/privacy.md).
16
+ - **Never in Claude's way.** `hivefloor hook` always exits 0, prints nothing and hands sending to a detached process. Hooks are registered with `"async": true`.
17
+ - **Zero runtime dependencies.** The npm package is one bundled file for Node 20 or later. Standalone binaries (no Node needed) are built with Bun.
18
+
19
+ ## Commands
20
+
21
+ | Command | What it does |
22
+ | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
23
+ | `hivefloor init [--url URL] [--public NAME]` | Writes the config and secret and registers the Claude Code hooks. Safe to run again; backs up settings. |
24
+ | `hivefloor init --rotate` | Creates a new secret (set it on the relay too). |
25
+ | `hivefloor init --secret-stdin` | Reads the relay's existing secret from stdin. |
26
+ | `hivefloor add-project NAME` | Makes a project public: in the machine config and in `office.config.json`. Safe to run again. See below. |
27
+ | `hivefloor doctor` | Checks config, secret, hooks, relay, names and clock; sends a dry-run event; shows what leaves the machine. |
28
+ | `hivefloor preview` | Prints the event a hook payload on stdin would send, without sending it. |
29
+ | `hivefloor pause` / `resume` | Stops or restarts sending. |
30
+ | `hivefloor uninstall [--purge]` | Removes only Hivefloor's hooks; `--purge` also deletes the config, secret and state. |
31
+ | `hivefloor deploy [--dry-run]` | From a Hivefloor checkout: validates `office.config.json` and deploys the relay with Wrangler. |
32
+ | `hivefloor hook [--record]` | Reads one hook payload from stdin. Used by the hooks; `--record` saves a scrubbed copy. |
33
+ | `hivefloor --version` | Prints the version. |
34
+
35
+ Set `HIVEFLOOR_DEBUG=1` to log each decision (never the payload) to `debug.log`, and `HIVEFLOOR_HOME` to use another folder than `~/.config/hivefloor`. Details: [docs/hooks.md](https://github.com/valerymelou/hivefloor/blob/main/docs/hooks.md).
36
+
37
+ ### Public projects
38
+
39
+ A public project's name must match in your machine config and in the relay's `office.config.json`; the relay rejects any other name. `hivefloor add-project "Name"` updates both.
40
+
41
+ | Option | What it does |
42
+ | ---------------------- | -------------------------------------------------------------------------------------------- |
43
+ | `--path DIR` | The project's folder. Defaults to the current folder. |
44
+ | `--office-config FILE` | The relay's config. Defaults to `office.config.json` in the current folder, if there is one. |
45
+ | `--color #RRGGBB` | The room's colour. Without it, an existing colour is kept. |
46
+ | `--deploy` | Runs `hivefloor deploy` afterwards, from the folder that holds the office config. |
47
+
48
+ Without an office config, it updates your machine config and prints the exact entry to add on the relay. Anyone viewing the office can see a public project's name and its task titles.
8
49
 
9
50
  ## Develop
10
51
 
11
52
  ```bash
12
- pnpm nx test cli # unit tests with coverage (target: 90% lines)
13
- pnpm nx typecheck cli
14
- pnpm nx lint cli
15
- pnpm nx build cli
53
+ pnpm nx test cli # unit, property and integration tests (90% coverage minimum); builds first
54
+ pnpm nx build cli # bundle to dist/packages/cli/bin.mjs with tsdown
55
+ pnpm nx bench cli # hook benchmark of the Node bundle (CI gates the binary at p95 < 50 ms)
56
+ pnpm nx compile cli # standalone binaries with bun build --compile (needs Bun 1.4)
16
57
  ```
17
58
 
59
+ Code layout: `src/core/` holds pure functions (payload reading, project matching, categories, identity, goals, debounce, event building, `decide`, settings merging, doctor checks); `src/edge/` holds file, config and network I/O; `src/commands/` holds one module per command; `src/main.ts` dispatches and `src/bin.ts` wires in the process.
60
+
18
61
  ## Licence
19
62
 
20
63
  MIT
package/bin.mjs ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ import{a as e,c as t,o as n,r,s as i,t as a}from"./urls-CuA4EHSE.mjs";import{createRequire as o}from"node:module";import{spawn as s}from"node:child_process";import{createHash as c,createHmac as l,randomBytes as u}from"node:crypto";import{homedir as d}from"node:os";import{createInterface as f}from"node:readline/promises";import{constants as p,existsSync as m,realpathSync as h}from"node:fs";import{appendFile as g,copyFile as _,mkdir as v,readFile as y,readdir as ee,realpath as te,rename as ne,rm as b,stat as x,writeFile as re}from"node:fs/promises";import{basename as S,dirname as C,join as w,posix as ie,relative as ae,resolve as T,win32 as oe}from"node:path";import{parseArgs as E}from"node:util";function se(e,t,n){return l(`sha256`,e).update(`${String(t)}.${n}`).digest(`hex`)}async function ce(e,t){let n=Math.floor(t.now()/1e3);try{return(await t.fetch(t.endpoint,{method:`POST`,headers:{"content-type":`application/json`,"x-office-timestamp":String(n),"x-office-signature":se(t.secret,n,e),...t.dryRun===!0?{"x-office-dry-run":`1`}:{}},body:e,redirect:`error`,signal:AbortSignal.timeout(1500)})).status}catch{return}}function le(e){if(e!==void 0)try{return h(e)}catch{return e}}function ue(e,t){return{file:e,args:t!==void 0&&/\.(c|m)?js$/.test(t)?[t]:[]}}function de(e,t,n=`both`){let r=0,i=e.length;if(n===`both`)for(;r<i&&t.includes(e.charAt(r));)r++;for(;i>r&&t.includes(e.charAt(i-1));)i--;return e.slice(r,i)}function fe(e,t){return/^[A-Za-z0-9_@%+=:,./\\-]+$/.test(e)?e:t?`"${e.replaceAll(`"`,`""`)}"`:`'${e.replaceAll(`'`,`'\\''`)}'`}function pe(e){return e!==void 0&&/\.(c|m)?js$/.test(e)}function me(e){let t=t=>fe(t,e.windows);return pe(e.script)?/[\\/]_npx[\\/]/.test(e.script)?{command:`npx --yes hivefloor@${e.version} hook`,warning:`You ran init through npx, so every hook call will start npx. Install hivefloor globally (npm install -g hivefloor) or use the standalone binary, then run init again.`}:{command:`${t(e.execPath)} ${t(e.script)} hook`}:{command:`${t(e.execPath)} hook`}}function he(e){let t;try{t=new URL(e.trim())}catch{return}if(t.protocol!==`https:`&&t.protocol!==`http:`)return;let n=de(t.pathname,`/`,`end`),r=n.endsWith(`/ingest`)?n.slice(0,-7):n;return`${t.origin}${r}/ingest`}function ge(e){return e.replace(/\/ingest$/,``)}function D(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function _e(e){if(!(e.length===0||e.length>8388608))try{let t=JSON.parse(e);return D(t)?t:void 0}catch{return}}function O(e,t){let n=e?.[t];return typeof n==`string`&&n.length>0?n:void 0}function ve(e,t){let n=e?.[t];return D(n)?n:void 0}function k(e,t){let n=e?.[t];return Array.isArray(n)?n:[]}function A(e,t){let n=e.trim();return(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`))&&(n=t.home+n.slice(1)),t.windows&&(n=n.replaceAll(`\\`,`/`).toLowerCase()),n=n.replace(/\/{2,}/g,`/`),n.length>1&&n.endsWith(`/`)&&(n=n.slice(0,-1)),n}function ye(e,t){return t===`/`||e===t||e.startsWith(`${t}/`)}function be(e,t,n){let r=A(e,n),i;for(let e of t){let t=A(e.path,n);ye(r,t)&&(i===void 0||t.length>i.length)&&(i={length:t.length,project:e})}return i?.project.public!==!0||i.project.name===void 0?{isPublic:!1}:{isPublic:!0,name:i.project.name}}function j(e){return D(e)&&typeof e.name==`string`?e.name:void 0}function xe(e,t,n){return e.map((e,r)=>r===t?n:e)}function Se(e,t,n,r){let i=A(t,r),a=e.findIndex(e=>D(e)&&typeof e.path==`string`&&A(e.path,r)===i),o=e[a];if(!D(o))return{projects:[...e,{path:t,public:!0,name:n}],change:`added`};if(o.public===!0&&o.name===n)return{projects:e,change:`unchanged`};let s=o.public===!0?j(o):void 0;return{projects:xe(e,a,{...o,public:!0,name:n}),change:`updated`,...s===void 0?{}:{previousName:s}}}function Ce(e,t){let n=t.name.toLowerCase(),r=e.findIndex(e=>j(e)?.trim().toLowerCase()===n),i=e[r],a=j(i);return!D(i)||a===void 0?{kind:`ok`,projects:[...e,t],change:`added`}:a===t.name?t.color===void 0||i.color===t.color?{kind:`ok`,projects:e,change:`unchanged`}:{kind:`ok`,projects:xe(e,r,{...i,color:t.color}),change:`updated`}:{kind:`conflict`,existing:a}}async function M(e){try{return JSON.parse(await y(e,`utf8`))}catch{return}}async function N(e,t,n=384){await v(C(e),{recursive:!0,mode:448});let r=`${e}.${u(6).toString(`hex`)}.tmp`;try{await re(r,t,{mode:n}),await ne(r,e)}catch(e){throw await b(r,{force:!0}),e}}async function we(e,t){let n;try{n=await ee(e)}catch{return}await Promise.all(n.filter(e=>e.startsWith(t)).map(t=>b(w(e,t),{force:!0})))}function P(e,t,n){let r=n?oe:ie,i=e.HIVEFLOOR_HOME??(n?r.join(e.APPDATA??r.join(t,`AppData`,`Roaming`),`hivefloor`):r.join(e.XDG_CONFIG_HOME??r.join(t,`.config`),`hivefloor`)),a=w(i,`state`);return{dir:i,config:w(i,`config.json`),secret:w(i,`secret`),stateDir:a,configCache:w(a,`config.cache.json`),debugLog:w(i,`debug.log`),recordings:w(i,`recordings`)}}function Te(e,t,n){return w(e,n===void 0?`${t}.json`:`${t}.${n}.json`)}function Ee(e){return w(e.stateDir,`office.cache.json`)}async function F(e){let t;try{t=await y(e.config,`utf8`)}catch{return}try{let e=JSON.parse(t);return D(e)?e:null}catch{return null}}async function I(e,t){let n=`${JSON.stringify(t,null,2)}\n`,{checkMachineConfig:r}=await import(`./validate-config-WKKxO7uI.mjs`),i=r(n);return i.ok&&await N(e.config,n),i}function L(e,...t){e.stdout(`${t.join(`
3
+ `)}\n`)}async function R(e){let t;try{t=await y(e.config,`utf8`)}catch{return}let n=c(`sha256`).update(t).digest(`hex`),r=await M(e.configCache);if(D(r)&&r.digest===n&&D(r.config))return r.config;let{validateMachineConfig:i}=await import(`./validate-config-WKKxO7uI.mjs`),a=i(t);return a!==void 0&&await N(e.configCache,JSON.stringify({digest:n,config:a})),a}async function z(e){try{let t=(await y(e.secret,`utf8`)).trim();return t.length>0?t:void 0}catch{return}}async function De(e){for(let t of[e,w(e,`apps`,`relay`)]){let n=await Oe(e,t);if(n!==void 0)return n}}async function Oe(e,t){try{let n=o(w(t,`package.json`)).resolve(`wrangler/package.json`),r=ae(h(e),h(n));if(r.startsWith(`..`)||T(r)===r)return;let i=JSON.parse(await y(n,`utf8`)),a=D(i)?i.bin:void 0,s=typeof a==`string`?a:D(a)&&typeof a.wrangler==`string`?a.wrangler:void 0;return s===void 0?void 0:w(C(n),s)}catch{return}}const ke={config:{type:`string`,default:`office.config.json`},"wrangler-config":{type:`string`,default:w(`apps`,`relay`,`wrangler.jsonc`)},"dry-run":{type:`boolean`},"push-secret":{type:`boolean`}};async function Ae(e,t){let n=P(e.env,e.home,e.windows),r=await z(n);if(r!==void 0)return t?r:void 0;if(!t){if(!e.interactive)return;let t=await e.ask(`Create a secret and set it on the relay? This replaces any secret it already has. [Y/n] `);if(/^n/i.test(t.trim()))return}let i=e.randomSecret();return await N(n.secret,`${i}\n`,384),i}async function je(e,t){let{values:n}=E({args:[...e],options:ke,strict:!0}),r=T(t.cwd,n.config),i;try{i=await y(r,`utf8`)}catch{return t.stderr(`hivefloor: no ${r}. Copy office.config.example.json to office.config.json and edit it.\n`),1}let{checkOfficeConfig:a}=await import(`./validate-config-WKKxO7uI.mjs`),o=a(i);if(!o.ok)return t.stderr(`hivefloor: ${r} is invalid:\n ${o.problems.join(`
4
+ `)}\n`),1;let s=JSON.stringify(o.config);if(Buffer.byteLength(s)>5120)return t.stderr(`hivefloor: ${r} is too large for a Worker variable (5120 bytes). Shorten names or remove projects.\n`),1;let c=T(t.cwd,n[`wrangler-config`]),l=await De(t.cwd);if(!m(c)||l===void 0)return t.stderr(`hivefloor: run deploy from your Hivefloor checkout after pnpm install (looked for ${c} and Wrangler).\n`),1;L(t,`✓ ${r} is valid (${String(o.config.publicProjects.length)} public projects).`);let u=t.script!==void 0&&/\.(c|m)?js$/.test(t.script)?t.execPath:`node`,d=await t.runProcess(u,[l,`deploy`,`--config`,c,`--var`,`OFFICE_CONFIG:${s}`,...n[`dry-run`]===!0?[`--dry-run`]:[]]);if(d!==0)return d;if(n[`dry-run`]===!0)return L(t,``,`Dry run: nothing was deployed and no secret was set.`),0;let f=await Ae(t,n[`push-secret`]===!0);if(f===void 0)return L(t,``,await z(P(t.env,t.home,t.windows))===void 0?`This machine has no secret, so the relay was left as it is. To create one and set it: hivefloor deploy --push-secret`:`Deployed. Next: hivefloor init --url <your office URL>`),0;let p=await t.runProcess(u,[l,`secret`,`put`,`HIVEFLOOR_SECRET`,`--config`,c],f);return p===0?(L(t,``,`✓ Secret set on the relay.`,`Next: hivefloor init --url <your office URL>`),0):(t.stderr(`hivefloor: deployed, but setting the secret failed. Run: hivefloor deploy --push-secret
5
+ `),p)}const B=`office.config.json`,Me={path:{type:`string`},"office-config":{type:`string`},color:{type:`string`},deploy:{type:`boolean`}};function Ne(e,t){return{kind:`failed`,message:`${e} is invalid:\n ${t.join(`
6
+ `)}`}}async function Pe(e,t,n){let r=T(n.cwd,e??B),i;try{i=await y(r,`utf8`)}catch{return e===void 0?{kind:`absent`}:{kind:`failed`,message:`no ${r}. Check the path given to --office-config.`}}let{checkOfficeConfig:a}=await import(`./validate-config-WKKxO7uI.mjs`),o=a(i);if(!o.ok)return Ne(r,o.problems);let s=JSON.parse(i),c=s.publicProjects,l=Ce(Array.isArray(c)?c:[],t);if(l.kind===`conflict`)return{kind:`failed`,message:`${r} already lists "${l.existing}", and names can't differ only by case. Use that exact name, or rename it there first.`};if(l.change===`unchanged`)return{kind:`ready`,path:r,change:`unchanged`,text:i};let u=`${JSON.stringify({...s,publicProjects:l.projects},null,2)}\n`,d=a(u);return d.ok?Buffer.byteLength(JSON.stringify(d.config))>5120?{kind:`failed`,message:`adding "${t.name}" makes ${r} too large for a Worker variable (5120 bytes). Shorten names or remove projects.`}:{kind:`ready`,path:r,change:l.change,text:u}:Ne(r,d.problems)}async function Fe(e,t){if(e===void 0)return t.cwd;try{let n=await te(T(t.cwd,e));return(await x(n)).isDirectory()?n:void 0}catch{return}}async function Ie(e,t){let n=await te(e),{mode:r}=await x(n);await N(n,t,r&511)}function Le(e,t){let n=S(e),r=n===B?`hivefloor deploy`:`hivefloor deploy --config ${fe(n,t.windows)}`;return C(e)===t.cwd?r:`${r} (from ${C(e)})`}function Re(e,t,n){if(e.kind!==`ready`)return[`No ${B} in ${n.cwd}, so the relay rejects "${t.name}" until you add it there.`,`Add this to "publicProjects" in ${B}, in your Hivefloor checkout:`,` ${JSON.stringify(t)}`,`Then run hivefloor deploy from that checkout, or run this again with --office-config PATH.`];let r=Le(e.path,n);return e.change===`unchanged`?[`If the relay doesn't know "${t.name}" yet, run: ${r}`]:[`Next: ${r}. The relay rejects "${t.name}" until it is deployed.`]}async function ze(e,t){let{values:n,positionals:r}=E({args:[...e],options:Me,strict:!0,allowPositionals:!0}),[i,a]=r;if(i===void 0||a!==void 0)return t.stderr(`Usage: hivefloor add-project NAME [--path DIR] [--office-config FILE] [--color #RRGGBB] [--deploy]
7
+ `),2;let o=e=>(t.stderr(`hivefloor: ${e}\n`),1),s=i.trim(),c=n.color===void 0?{name:s}:{name:s,color:n.color},{publicProjectProblems:l}=await import(`./validate-config-WKKxO7uI.mjs`),u=l(c);if(u.length>0)return o(`"${s}" can't be a public project:\n ${u.join(`
8
+ `)}`);let d=P(t.env,t.home,t.windows),f=await F(d);if(f===void 0)return o(`no ${d.config}. Run hivefloor init first.`);if(f===null)return o(`${d.config} is not a JSON object. Fix or delete it first.`);let p=await Fe(n.path,t);if(p===void 0)return o(`${String(n.path)} is not a folder.`);let m=await Pe(n[`office-config`],c,t);if(m.kind===`failed`)return o(m.message);if(m.kind===`absent`&&n.deploy===!0)return o(`--deploy needs ${B}, and there is none in ${t.cwd}. Run from your Hivefloor checkout or pass --office-config PATH. Nothing was changed.`);let h=f.projects,g=Se(Array.isArray(h)?h:[],p,s,{home:t.home,windows:t.windows});if(g.change!==`unchanged`){let e=await I(d,{...f,projects:g.projects});if(!e.ok)return o(`the config would be invalid:\n ${e.problems.join(`
9
+ `)}`)}let _=m.kind===`ready`&&m.change!==`unchanged`;_&&await Ie(m.path,m.text);let v=[...g.change===`unchanged`?[]:[`✓ ${p} is public as "${s}" in ${d.config}`],..._?[`✓ ${m.change===`added`?`Added`:`Recoloured`} "${s}" (${m.path})`]:[]];return L(t,...v.length>0?v:[`Nothing to change: ${p} is already public as "${s}".`]),g.previousName!==void 0&&L(t,`! "${g.previousName}" stays in ${B}. Remove it there if nothing else uses it.`),L(t,`! Anyone viewing the office can see this project's name and its task titles.`),m.kind===`ready`&&n.deploy===!0?je([`--config`,m.path],{...t,cwd:C(m.path)}):(L(t,``,...Re(m,c,t)),0)}const Be=/* @__PURE__ */ new Map([[`Read`,`reading`],[`Glob`,`reading`],[`Grep`,`reading`],[`LSP`,`reading`],[`ListMcpResourcesTool`,`reading`],[`ReadMcpResourceTool`,`reading`],[`Edit`,`coding`],[`MultiEdit`,`coding`],[`Write`,`coding`],[`NotebookEdit`,`coding`],[`WebFetch`,`research`],[`WebSearch`,`research`],[`Agent`,`delegating`],[`Task`,`delegating`],[`SendMessage`,`delegating`],[`ListAgents`,`delegating`],[`SubagentHandback`,`delegating`],[`Workflow`,`delegating`],[`TaskStop`,`delegating`],[`TaskCreate`,`planning`],[`TaskUpdate`,`planning`],[`TaskGet`,`planning`],[`TaskList`,`planning`],[`TodoWrite`,`planning`],[`EnterPlanMode`,`planning`],[`ExitPlanMode`,`planning`],[`AskUserQuestion`,`planning`],[`Monitor`,`monitoring`],[`CronCreate`,`monitoring`],[`CronDelete`,`monitoring`],[`CronList`,`monitoring`],[`ScheduleWakeup`,`monitoring`],[`EnterWorktree`,`vcs`],[`ExitWorktree`,`vcs`],[`RemoteTrigger`,`integration`]]),Ve=/* @__PURE__ */ new Set([`Bash`,`PowerShell`]),He=/* @__PURE__ */ new Set([`vitest`,`jest`,`pytest`,`mocha`,`playwright`,`cypress`,`rspec`,`phpunit`,`ava`,`karma`,`jasmine`,`nextest`]),Ue=/* @__PURE__ */ new Set([`test`,`tests`,`e2e`,`test-ci`]),We=/* @__PURE__ */ new Set([`git`,`gh`,`glab`,`hg`,`svn`,`jj`]);function Ge(e){let t=e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1);return t.endsWith(`.exe`)?t.slice(0,-4):t}function Ke(e){return He.has(Ge(e))||Ue.has(e)||e.startsWith(`test:`)}function qe(e){let t=!1;for(let n of e.toLowerCase().split(/&&|\|\||[;|\n]/)){let e=n.split(/\s+/).filter(e=>e.length>0&&!e.includes(`=`)),[r]=e;if(r!==void 0){if(We.has(Ge(r)))t=!0;else if(e.some(Ke))return`testing`}}return t?`vcs`:`terminal`}function Je(e){if(!e.startsWith(`mcp__`))return;let t=e.slice(5),n=t.indexOf(`__`),r=n===-1?t:t.slice(0,n);return r.length>0?r:void 0}function Ye(e,t,n){if(Ve.has(e))return qe(O(t,`command`)??``);let r=Je(e);return r===void 0?Be.get(e)??`working`:(D(n)&&Object.hasOwn(n,r)?n[r]:void 0)??`integration`}const Xe=/* @__PURE__ */ new Set([`start`,`end`,`spawn`,`done`,`idle`]);function Ze(e,t,n){return e===void 0||Xe.has(t.kind)||e.kind!==t.kind||e.cat!==t.cat||e.goal!==t.goal?!0:n-e.at>=10}function Qe(e){let t={v:1,t:e.t,seq:e.seq,sid:e.sid,role:e.role,kind:e.kind};return e.aid!==void 0&&(t.aid=e.aid),e.kind===`tool`&&e.cat!==void 0&&(t.cat=e.cat),e.project!==void 0&&(t.project=e.project,e.goal!==void 0&&(t.goal=e.goal)),t}function $e(e,t){return Math.floor(e/t)*t}const et=/[\u0000-\u001f\u007f-\u009f]+/g;function tt(e,t){if(e.length<=t)return e;let n=``;for(let r of e){if(n.length+r.length>t-1)break;n+=r}return`${n.trimEnd()}…`}function nt(e,t){let n=e.trim().toLowerCase();if(n.startsWith(t.privatePrefix.toLowerCase())||t.blockWords.some(e=>n.includes(e.toLowerCase())))return;let i=tt(e.replace(et,` `).split(/\s+/).filter(e=>e.length>0&&!r(e)).join(` `),t.maxLength);return i.length>0&&!r(i)?i:void 0}function rt(e,t){return e.tasks.find(e=>e.id===t)?.subject}function it(e,t){if(t.fromTaskList){let n=(e.activeTask===void 0?void 0:rt(e,e.activeTask))??e.todo;if(n!==void 0)return nt(n,t)}if(t.fromSessionTitle&&e.title!==void 0)return nt(e.title,t)}function at(e,t){let n=e.tasks.filter(e=>e.id!==t.id);return{...e,tasks:[...n,t].slice(-50)}}function ot(e,t){if(t===void 0||e.activeTask!==t)return e;let n={...e};return delete n.activeTask,n}function st(e,t){let n=O(t,`taskId`)??O(t,`task_id`)??O(t,`id`);if(n===void 0)return e;let r=O(t,`subject`),i=r===void 0?e:at(e,{id:n,subject:r}),a=O(t,`status`);return a===`in_progress`?{...i,activeTask:n}:a===`completed`||a===`deleted`?ot(i,n):i}function ct(e,t){let n=k(t,`todos`).find(e=>D(e)&&e.status===`in_progress`),r=D(n)?O(n,`activeForm`)??O(n,`content`):void 0;if(r!==void 0)return{...e,todo:r};let i={...e};return delete i.todo,i}function lt(e,t){let n=O(t,`session_title`),r=n===void 0?e:{...e,title:n};switch(O(t,`hook_event_name`)??``){case`TaskCreated`:{let e=O(t,`task_id`),n=O(t,`task_subject`);return e===void 0||n===void 0?r:at(r,{id:e,subject:n})}case`TaskCompleted`:return ot(r,O(t,`task_id`));case`PreToolUse`:{let e=O(t,`tool_name`),n=ve(t,`tool_input`);return e===`TaskUpdate`?st(r,n):e===`TodoWrite`?ct(r,n):r}default:return r}}function ut(e){return(/* @__PURE__ */ new Date(e*1e3)).toISOString().slice(0,10)}function dt(e,t){return l(`sha256`,e).update(`hivefloor:salt:${t}`).digest(`hex`)}function ft(e,t){return l(`sha256`,e).update(t).digest(`hex`).slice(0,6)}function pt(e){return c(`sha256`).update(e).digest(`hex`).slice(0,16)}function mt(e,t){return e!==void 0&&e!==`claude`&&t.includes(e)?e:i}function ht(e,t){let{payload:n,config:r}=e,i=t===void 0?`main`:`agent`;switch(O(n,`hook_event_name`)??``){case`SessionStart`:return{kind:`start`,target:`main`};case`UserPromptSubmit`:return{kind:`thinking`,target:`main`};case`Stop`:return t===void 0?{kind:`idle`,target:`main`}:void 0;case`SessionEnd`:return{kind:`end`,target:`main`};case`SubagentStart`:return t===void 0?void 0:{kind:`spawn`,target:i};case`SubagentStop`:return t===void 0||e.agent===void 0?void 0:{kind:`done`,target:i};case`PreToolUse`:{let e=O(n,`tool_name`);return e===void 0?void 0:{kind:`tool`,cat:Ye(e,ve(n,`tool_input`),r.mcpCategories),target:i}}default:return}}function gt(e,t,n){return{kind:e.kind,at:n,...e.cat===void 0?{}:{cat:e.cat},...t===void 0?{}:{goal:t}}}function V(e){let{payload:n,config:r,now:i}=e,a=O(n,`session_id`);if(a===void 0)return{};let o=O(n,`agent_id`),s=e.session??{v:1,seq:0,saltDay:ut(i),goal:{tasks:[]}},c={...s,goal:lt(s.goal,n)},l=JSON.stringify(c)===JSON.stringify(e.session)?{}:{session:c},u=ht(e,o);if(u===void 0)return l;let d=be(O(n,`cwd`)??``,r.projects,e.paths),f=u.target===`main`,p=f?c:e.agent??{seq:0},m=f&&d.isPublic?it(c.goal,r.goals):void 0;if(!Ze(p.last,{kind:u.kind,...u.cat?{cat:u.cat}:{},...m?{goal:m}:{}},i))return l;let h=dt(e.secret,c.saltDay),g=Qe({t:$e(i,r.timestampRoundingSec),seq:p.seq,sid:ft(h,a),...f||o===void 0?{}:{aid:ft(h,o)},role:f?t:mt(O(n,`agent_type`),r.publicAgentTypes),kind:u.kind,...u.cat===void 0?{}:{cat:u.cat},...d.name===void 0?{}:{project:d.name},...m===void 0?{}:{goal:m}}),_={seq:p.seq+1,last:gt(u,m,i)};return f?{event:g,session:{...c,..._},...u.kind===`end`?{remove:`session`}:{}}:{event:g,...l,agent:{v:1,..._},...u.kind===`done`?{remove:`agent`}:{}}}const H=[`SessionStart`,`UserPromptSubmit`,`PreToolUse`,`Stop`,`SubagentStart`,`SubagentStop`,`TaskCreated`,`TaskCompleted`,`SessionEnd`];function _t(e){return de(e,`"'`)}function vt(e){let t=e.trim();if(!t.endsWith(` hook`))return!1;let n=_t(t.slice(0,-5)).split(/[\\/]/),r=n.at(-1)?.toLowerCase();return n.length>1&&(r===`node`||r===`node.exe`)}function yt(e){let t=e.trim().split(/\s+/).map(_t);return vt(e)||t.some((e,n)=>e.toLowerCase().includes(`hivefloor`)&&t[n+1]===`hook`)}function U(e){return D(e)&&e.type===`command`&&typeof e.command==`string`&&yt(e.command)}function W(e,t){let n=e[t];return Array.isArray(n)?n:[]}function G(e){return D(e)&&Array.isArray(e.hooks)?e.hooks:[]}function bt(e){return{type:`command`,command:e,async:!0}}function xt(e,t){let n=D(e.hooks)?{...e.hooks}:{},r=[],i=bt(t);for(let e of H){let t=W(n,e),a=t.flatMap(G).filter(U);(a.length!==1||JSON.stringify(a[0])!==JSON.stringify(i))&&(n[e]=[...St(t),{hooks:[i]}],r.push(e))}return{settings:r.length===0?e:{...e,hooks:n},events:r}}function St(e){return e.flatMap(e=>{let t=G(e);if(!D(e)||!t.some(U))return[e];let n=t.filter(e=>!U(e));return n.length===0?[]:[{...e,hooks:n}]})}function Ct(e){let t=e.hooks;if(!D(t))return{settings:e,events:[]};let n={},r=[];for(let[e,i]of Object.entries(t)){let a=W(t,e);if(!a.flatMap(G).some(U)){n[e]=i;continue}let o=St(a);o.length>0&&(n[e]=o),r.push(e)}if(r.length===0)return{settings:e,events:r};let i=Object.keys(n).length>0;return{settings:Object.fromEntries(Object.entries(e).flatMap(([e,t])=>e===`hooks`?i?[[e,n]]:[]:[[e,t]])),events:r}}function wt(e){if(!D(e.hooks))return[];let t=e.hooks;return Object.keys(t).flatMap(e=>W(t,e).flatMap(G).filter(U).map(t=>{let n=t;return{event:e,command:String(n.command),async:n.async===!0}}))}const K=(e,t,n)=>n===void 0?{status:e,title:t}:{status:e,title:t,detail:n};function Tt(e,t){let n=t===null?NaN:Date.parse(t);if(Number.isNaN(n))return K(`warn`,`Clock`,`The relay sent no usable Date header.`);let r=Math.round((e-n)/1e3);return Math.abs(r)>30?K(`warn`,`Clock`,`Your clock is ${String(Math.abs(r))} s ${r>0?`ahead of`:`behind`} the relay. Beyond 60 s every event is rejected; sync your clock.`):K(`ok`,`Clock`,`Within ${String(Math.abs(r))} s of the relay.`)}function Et(e,t,n){return(D(e)?k(e,t):[]).flatMap(e=>{if(n===void 0)return typeof e==`string`?[e]:[];let t=D(e)?O(e,n):void 0;return t===void 0?[]:[t]})}function Dt(e,t){let n=new Set(Et(t,`publicProjects`,`name`)),r=new Set(Et(t,`agentTypes`)),i=e.projects.flatMap(e=>e.public&&e.name!==void 0&&!n.has(e.name)?[e.name]:[]),a=e.publicAgentTypes.filter(e=>!r.has(e));return[i.length===0?K(`ok`,`Public projects`,`Every public project is known to the relay.`):K(`fail`,`Public projects`,`Not in the relay's office.config.json: ${i.join(`, `)}. Their events are rejected; add them there and redeploy, or fix the names here.`),a.length===0?K(`ok`,`Agent types`,`Every public agent type is known to the relay.`):K(`warn`,`Agent types`,`Not in the relay's agentTypes: ${a.join(`, `)}. Those subagents are rejected; add them there or remove them from publicAgentTypes.`)]}function Ot(e){switch(e){case 204:case 200:return K(`ok`,`Signed test event`,`The relay accepted it (dry run: the office did not change).`);case 401:case 403:return K(`fail`,`Signed test event`,`The relay rejected the signature. The secret here and the relay secret differ: run init --rotate and update the relay secret.`);case 400:case 422:return K(`fail`,`Signed test event`,`The relay rejected the event. A project or agent name is probably missing from the relay config.`);case 404:return K(`fail`,`Signed test event`,`No relay at this address. Check the office URL, or deploy the relay.`);case 413:return K(`fail`,`Signed test event`,`The relay said the event is too large; this is a bug, please report it.`);case 429:return K(`warn`,`Signed test event`,`The relay is over Cloudflare's daily limit and pauses until the reset.`);case void 0:return K(`fail`,`Signed test event`,`Could not reach the relay (network error or 1.5 s timeout).`);default:return K(`fail`,`Signed test event`,`The relay answered ${String(e)}.`)}}function kt(e){let t=new Set(e.map(e=>e.event)),n=H.filter(e=>!t.has(e));return e.length===0?K(`fail`,`Claude Code hooks`,`Not registered. Run hivefloor init.`):n.length>0?K(`fail`,`Claude Code hooks`,`Missing for ${n.join(`, `)}. Run hivefloor init.`):e.some(e=>!e.async)?K(`warn`,`Claude Code hooks`,`Some hooks are not async, so Claude Code waits for them. Run hivefloor init.`):new Set(e.map(e=>e.command)).size>1?K(`warn`,`Claude Code hooks`,`Hooks run different commands. Run hivefloor init.`):K(`ok`,`Claude Code hooks`,`Registered for ${String(H.length)} events: ${e[0]?.command??``}`)}function At(e){let t={ok:`✓`,warn:`!`,fail:`✗`};return e.map(e=>`${t[e.status]} ${e.title}${e.detail===void 0?``:`: ${e.detail}`}`).join(`
10
+ `)}function q(e,t){return w(e.CLAUDE_CONFIG_DIR??w(t,`.claude`),`settings.json`)}async function J(e){let t;try{t=await y(e,`utf8`)}catch{return{kind:`missing`,settings:{}}}try{let e=JSON.parse(t);return D(e)?{kind:`ok`,settings:e}:{kind:`invalid`,reason:`it is not a JSON object`}}catch{return{kind:`invalid`,reason:`it is not valid JSON`}}}async function jt(e,t,n,r){let i;if(n){let t=`${e}.hivefloor-backup-${new Date(r).toISOString().replace(/[:.]/g,`-`)}`;for(let n=0;i===void 0;n++){let r=n===0?t:`${t}-${String(n)}`;try{await _(e,r,p.COPYFILE_EXCL),i=r}catch(e){if(e.code!==`EEXIST`||n>=99)throw e}}}return await N(e,`${JSON.stringify(t,null,2)}\n`,420),i}async function Mt(e){let t;try{t=await y(e.config,`utf8`)}catch{return{check:{status:`fail`,title:`Config`,detail:`No config at ${e.config}. Run hivefloor init.`}}}let{checkMachineConfig:n}=await import(`./validate-config-WKKxO7uI.mjs`),r=n(t);return r.ok?{check:{status:`ok`,title:`Config`,detail:e.config},config:r.config}:{check:{status:`fail`,title:`Config`,detail:`${e.config} is invalid: ${r.problems.join(`; `)}`}}}async function Nt(e,t){let n=await z(e);return n===void 0?{check:{status:`fail`,title:`Secret`,detail:`Missing ${e.secret}. Run hivefloor init.`}}:!t&&(await x(e.secret)).mode&63?{check:{status:`warn`,title:`Secret`,detail:`${e.secret} is readable by other users: chmod 600 it.`},secret:n}:{check:{status:`ok`,title:`Secret`,detail:`Present and private.`},secret:n}}async function Pt(e,t,n){let r=`${ge(e.endpoint)}/api/config`;try{let i=await n.fetch(r,{signal:AbortSignal.timeout(5e3),redirect:`error`});if(!i.ok)return[{status:`fail`,title:`Relay`,detail:`GET ${r} answered ${String(i.status)}.`}];let a=await i.json();return await N(Ee(t),JSON.stringify(a)),[{status:`ok`,title:`Relay`,detail:r},Tt(n.now(),i.headers.get(`date`)),...Dt(e,a)]}catch{return[{status:`fail`,title:`Relay`,detail:`Could not reach ${r}.`}]}}function Ft(e,t,n,r){let{event:i}=V({payload:{session_id:`hivefloor-doctor-${String(n.now())}`,cwd:n.cwd,...r},config:e,secret:t,now:Math.floor(n.now()/1e3),paths:{home:n.home,windows:n.windows}});return i===void 0?void 0:JSON.stringify(i)}async function It(e,t){let{values:n}=E({args:[...e],options:{settings:{type:`string`}},strict:!0}),r=P(t.env,t.home,t.windows),i=[],{check:a,config:o}=await Mt(r);i.push(a),o?.paused===!0&&i.push({status:`warn`,title:`Sending`,detail:`Paused. Run hivefloor resume.`});let{check:s,secret:c}=await Nt(r,t.windows);i.push(s);let l=n.settings??q(t.env,t.home),u=await J(l);if(i.push(u.kind===`invalid`?{status:`fail`,title:`Claude Code hooks`,detail:`${l} can't be read: ${u.reason}.`}:kt(wt(u.settings))),o!==void 0&&(i.push(...await Pt(o,r,t)),c!==void 0)){let e=Ft(o,c,t,{hook_event_name:`SessionStart`}),n=e===void 0?void 0:await ce(e,{endpoint:o.endpoint,secret:c,now:t.now,fetch:t.fetch,dryRun:!0});i.push(Ot(n))}if(L(t,At(i)),o!==void 0){let e=Ft(o,c??`example`,t,{hook_event_name:`PreToolUse`,tool_name:`Edit`});L(t,``,`When Claude edits a file in ${t.cwd}, exactly this leaves your machine:`,e??`(nothing)`)}return+!!i.some(e=>e.status===`fail`)}const Y=`0.1.1`,Lt={url:{type:`string`},"secret-stdin":{type:`boolean`},rotate:{type:`boolean`},public:{type:`string`},command:{type:`string`},settings:{type:`string`}};async function Rt(e,t,n){let r=typeof n==`string`?n:void 0,i=t;if(i===void 0&&e.interactive){let t=r===void 0?``:` [${r.replace(/\/ingest$/,``)}]`;i=(await e.ask(`Office URL${t}: `)).trim()||r}i??=r;let o=i===void 0?void 0:he(i);return o!==void 0&&a(o)?o:void 0}async function zt(e,t,n,r){if(n!==void 0&&!r)return{secret:n,created:!1};if(t){let t=(await e.readStdin()).trim();return t.length>=16?{secret:t,created:!1}:void 0}if(e.interactive&&!r){let t=(await e.ask(`Paste the office secret, or press Enter to create one: `)).trim();if(t.length>0)return t.length>=16?{secret:t,created:!1}:void 0}return{secret:e.randomSecret(),created:!0}}async function Bt(e,t,n){if(t!==void 0)return{path:e.cwd,public:!0,name:t};let r=n.some(t=>typeof t==`object`&&!!t&&t.path===e.cwd);if(!e.interactive||r)return;let i=(await e.ask(`Show ${e.cwd} in the office as a public project? [y/N] `)).trim().toLowerCase();if(i!==`y`&&i!==`yes`)return;let a=(await e.ask(`Its name in office.config.json [${S(e.cwd)}]: `)).trim()||S(e.cwd);return{path:e.cwd,public:!0,name:a}}async function Vt(e,t){let{values:n}=E({args:[...e],options:Lt,strict:!0}),r=P(t.env,t.home,t.windows),i=await F(r);if(i===null)return t.stderr(`hivefloor: ${r.config} is not a JSON object. Fix or delete it, then run init again.\n`),1;let a=i??{},o=await Rt(t,n.url,a.endpoint);if(o===void 0)return t.stderr(`hivefloor: give the office URL with --url, for example --url https://office.example.com (https, or http only for localhost).
11
+ `),1;let s=await zt(t,n[`secret-stdin`]===!0,await z(r),n.rotate===!0);if(s===void 0)return t.stderr(`hivefloor: the secret must be at least 16 characters.
12
+ `),1;let c=a.projects,l=Array.isArray(c)?c:[],u=await Bt(t,n.public,l),d={$schema:`https://unpkg.com/hivefloor/machine.schema.json`,v:1,...a,endpoint:o,...u===void 0?{}:{projects:[...l.filter(e=>e.path!==t.cwd),u]}},f=[];if(JSON.stringify(d)!==JSON.stringify(i)){let e=await I(r,d);if(!e.ok)return t.stderr(`hivefloor: the config would be invalid:\n ${e.problems.join(`
13
+ `)}\n`),1;f.push(`Wrote ${r.config}`)}(s.created||await z(r)!==s.secret)&&(await N(r.secret,`${s.secret}\n`,384),f.push(`Wrote ${r.secret} (mode 600)`));let p=n.settings??q(t.env,t.home),m=await J(p);if(m.kind===`invalid`)return t.stderr(`hivefloor: ${p} can't be updated because ${m.reason}. Fix it, then run init again.\n`),1;let h=n.command===void 0?me({execPath:t.execPath,script:t.script,version:Y,windows:t.windows}):{command:n.command},g=xt(m.settings,h.command);if(g.events.length>0){let e=await jt(p,g.settings,m.kind===`ok`,t.now());f.push(`Registered the hook for ${String(g.events.length)} events in ${p}${e===void 0?``:` (backup: ${e})`}`)}return f.length===0?L(t,`Nothing to change: Hivefloor is already set up.`):L(t,...f.map(e=>`✓ ${e}`)),h.warning!==void 0&&L(t,`! ${h.warning}`),s.created&&L(t,``,`New secret created. Set the same value on your relay (it is shown only now):`,` ${s.secret}`,` hivefloor deploy --push-secret (from your Hivefloor checkout)`),L(t,``,`Next: hivefloor doctor checks the connection and shows exactly what leaves this machine.`),0}async function Ht(e,t,n){E({args:[...t],options:{},strict:!0});let r=P(n.env,n.home,n.windows),i=await F(r);if(i==null)return n.stderr(`hivefloor: no valid config at ${r.config}. Run hivefloor init first.\n`),1;if(i.paused===!0!==e){let t=await I(r,{...i,paused:e});if(!t.ok)return n.stderr(`hivefloor: ${r.config} is invalid:\n ${t.problems.join(`
14
+ `)}\n`),1}return L(n,e?`Paused: nothing is sent until you run hivefloor resume.`:`Resumed: your office sees your sessions again.`),0}async function Ut(e,t){E({args:[...e],options:{},strict:!0});let n=P(t.env,t.home,t.windows),r=await R(n);if(r===void 0)return t.stderr(`hivefloor: no valid config at ${n.config}. Run hivefloor init first.\n`),1;let i=_e(await t.readStdin());if(i===void 0)return t.stderr(`hivefloor: pipe one hook payload (a JSON object) into hivefloor preview.
15
+ `),1;let{event:a}=V({payload:i,config:r,secret:await z(n)??`preview-without-a-secret`,now:Math.floor(t.now()/1e3),paths:{home:t.home,windows:t.windows}});if(a===void 0)return L(t,`Nothing would be sent for ${O(i,`hook_event_name`)??`this payload`}.`),0;L(t,`This would leave your machine:`,JSON.stringify(a,null,2)),r.paused&&L(t,`! Sending is paused (hivefloor resume).`);let o=await M(Ee(n));return a.project!==void 0&&D(o)&&(k(o,`publicProjects`).some(e=>D(e)&&e.name===a.project)||L(t,`! The relay did not know "${a.project}" at the last hivefloor doctor, so it would reject this event.`)),0}async function Wt(e,t){let{values:n}=E({args:[...e],options:{purge:{type:`boolean`},settings:{type:`string`}},strict:!0}),r=n.settings??q(t.env,t.home),i=await J(r);if(i.kind===`invalid`)return t.stderr(`hivefloor: ${r} can't be updated because ${i.reason}. Remove the hivefloor hooks by hand.\n`),1;let a=Ct(i.settings);if(a.events.length>0){let e=await jt(r,a.settings,i.kind===`ok`,t.now());L(t,`✓ Removed the Hivefloor hook from ${String(a.events.length)} events in ${r}${e===void 0?``:` (backup: ${e})`}`)}else L(t,`No Hivefloor hooks in ${r}.`);let o=P(t.env,t.home,t.windows);return n.purge===!0?(await b(o.dir,{recursive:!0,force:!0}),L(t,`✓ Deleted ${o.dir} (config, secret and state).`)):L(t,`Kept ${o.dir}. Run hivefloor uninstall --purge to delete it too.`),0}const Gt=/* @__PURE__ */ new Set([`hook_event_name`,`source`,`reason`,`permission_mode`,`status`,`level`]),Kt=/^[A-Za-z_][A-Za-z0-9_]{0,63}$/;function qt(e){return Je(e)===void 0?e:`mcp__<server>__<tool>`}function Jt(e,t){return t===`tool_name`?qt(e):t!==void 0&&Gt.has(t)&&Kt.test(e)?e:`<string:${String(e.length)}>`}function X(e,t,n=0){if(typeof e==`string`)return Jt(e,t);if(typeof e==`number`||typeof e==`boolean`||e===null)return e;if(n>=6)return`<nested>`;if(Array.isArray(e))return e.slice(0,20).map(e=>X(e,t,n+1));if(!D(e))return null;let r={},i=0;for(let[t,a]of Object.entries(e)){let e=Kt.test(t)?t:`<key:${String(i)}>`;r[e]=X(a,t,n+1),i++}return r}const Z=e=>Number.isInteger(e)&&e>=0,Q=e=>typeof e==`string`&&e.length>0,Yt=n,Xt=e;function Zt(e){if(!D(e)||!Z(e.at)||!Yt.includes(String(e.kind)))return;let t=e.cat,n=e.goal;return{kind:e.kind,at:e.at,...typeof t==`string`&&Xt.includes(t)?{cat:t}:{},...Q(n)?{goal:n}:{}}}function Qt(e){if(e.v!==1||!Z(e.seq))return;let t=Zt(e.last);return{seq:e.seq,...t===void 0?{}:{last:t}}}function $t(e){if(!D(e))return{tasks:[]};let t=Array.isArray(e.tasks)?e.tasks.flatMap(e=>D(e)&&Q(e.id)&&Q(e.subject)?[{id:e.id,subject:e.subject}]:[]):[],{title:n,activeTask:r,todo:i}=e;return{tasks:t,...Q(n)?{title:n}:{},...Q(r)?{activeTask:r}:{},...Q(i)?{todo:i}:{}}}function en(e){if(!D(e)||typeof e.saltDay!=`string`||!/^\d{4}-\d{2}-\d{2}$/.test(e.saltDay))return;let t=Qt(e);return t===void 0?void 0:{v:1,...t,saltDay:e.saltDay,goal:$t(e.goal)}}function tn(e){if(!D(e))return;let t=Qt(e);return t===void 0?void 0:{v:1,...t}}async function nn(e,t,n){if(!e.debug)return;let r=JSON.stringify({at:new Date(e.now()).toISOString(),hook:t,event:n.event??null});await g(e.files.debugLog,`${r}\n`,{mode:384})}async function rn(e,t){let n=`${(O(t,`hook_event_name`)??`unknown`).replace(/[^A-Za-z]/g,``)}-${String(e.now())}.json`;await N(w(e.files.recordings,n),`${JSON.stringify(X(t),null,2)}\n`)}async function an(e,t){let n=_e(e);if(n===void 0)return;t.record&&await rn(t,n);let r=await R(t.files);if(r===void 0||r.paused)return;let i=await z(t.files),a=O(n,`session_id`);if(i===void 0||a===void 0)return;let o=O(n,`agent_id`),s=pt(a),c=Te(t.files.stateDir,s),l=o===void 0?void 0:Te(t.files.stateDir,s,pt(o)),u=en(await M(c)),d=l===void 0?void 0:tn(await M(l)),f=V({payload:n,config:r,secret:i,now:Math.floor(t.now()/1e3),paths:t.paths,...u===void 0?{}:{session:u},...d===void 0?{}:{agent:d}});f.event!==void 0&&t.launchSender(JSON.stringify(f.event)),f.remove===`session`?await we(t.files.stateDir,`${s}.`):(f.session!==void 0&&await N(c,JSON.stringify(f.session)),l!==void 0&&f.remove===`agent`?await b(l,{force:!0}):l!==void 0&&f.agent!==void 0&&await N(l,JSON.stringify(f.agent))),await nn(t,O(n,`hook_event_name`),f)}const on=`hivefloor ${Y}: show your Claude Code sessions in a Hivefloor office
16
+
17
+ Usage:
18
+ hivefloor init [--url URL] [--public NAME] [--rotate] [--secret-stdin]
19
+ Connect this machine to your office and register the hooks
20
+ hivefloor add-project NAME [--path DIR] [--office-config FILE] [--color #RRGGBB] [--deploy]
21
+ Make a project public, here and in office.config.json
22
+ hivefloor doctor Check the setup and show exactly what leaves this machine
23
+ hivefloor preview Print the event a hook payload on stdin would send
24
+ hivefloor pause | resume Stop or restart sending
25
+ hivefloor uninstall [--purge]
26
+ Remove the hooks (and with --purge, the config and secret)
27
+ hivefloor deploy [--config FILE] [--dry-run]
28
+ Validate office.config.json and deploy the relay (from a checkout)
29
+ hivefloor hook [--record] Read one Claude Code hook payload from stdin (used by the hooks)
30
+ hivefloor --version Print the version
31
+
32
+ Docs: https://github.com/valerymelou/hivefloor
33
+ `,sn=/* @__PURE__ */ new Map([[`init`,Vt],[`add-project`,ze],[`doctor`,It],[`preview`,Ut],[`pause`,(e,t)=>Ht(!0,e,t)],[`resume`,(e,t)=>Ht(!1,e,t)],[`uninstall`,Wt],[`deploy`,je]]);async function cn(e,t){let n=P(t.env,t.home,t.windows),r=await R(n),i=await z(n);if(e===void 0||r===void 0||i===void 0||r.paused)return;let a=await ce(e,{endpoint:r.endpoint,secret:i,now:t.now,fetch:t.fetch});t.env.HIVEFLOOR_DEBUG===`1`&&await g(n.debugLog,`${JSON.stringify({at:new Date(t.now()).toISOString(),status:a??null})}\n`)}async function ln(e,t){try{await an(await t.readStdin(),{files:P(t.env,t.home,t.windows),paths:{home:t.home,windows:t.windows},now:t.now,launchSender:t.launchSender,record:e.includes(`--record`),debug:t.env.HIVEFLOOR_DEBUG===`1`})}catch{}return 0}async function un(e,t){let[n,...r]=e;if(n===`hook`)return ln(r,t);if(n===`__send`){try{await cn(r[0],t)}catch{}return 0}if(n===`--version`||n===`-v`)return t.stdout(`${Y}\n`),0;if(n===void 0||n===`help`||n===`--help`||n===`-h`)return t.stdout(on),0;let i=sn.get(n);if(i===void 0)return t.stderr(`hivefloor: unknown command "${n}"\n\n${on}`),2;try{return await i(r,t)}catch(e){let r=e instanceof Error?e.message:String(e);return t.stderr(`hivefloor ${n}: ${r}\n`),2}}const $=process.argv.slice(2),dn=le(process.argv[1]);if($[0]===`hook`||$[0]===`__send`){let e=()=>process.exit(0);process.on(`uncaughtException`,e),process.on(`unhandledRejection`,e),setTimeout(e,2500).unref()}async function fn(){if(process.stdin.isTTY)return``;let e=[],t=0;for await(let n of process.stdin){if(t+=n.length,t>8388608)return``;e.push(n)}return Buffer.concat(e).toString(`utf8`)}async function pn(e){let t=f({input:process.stdin,output:process.stdout});try{return await t.question(e)}finally{t.close()}}function mn(e){try{let t=ue(process.execPath,dn);s(t.file,[...t.args,`__send`,e],{detached:!0,stdio:`ignore`,windowsHide:!0}).unref()}catch{}}function hn(e,t,n){return new Promise(r=>{let i=s(e,[...t],{stdio:[n===void 0?`inherit`:`pipe`,`inherit`,`inherit`]});i.stdin?.end(n),i.on(`error`,()=>{r(1)}),i.on(`close`,e=>{r(e??1)})})}process.exitCode=await un($,{env:process.env,home:d(),cwd:process.cwd(),windows:process.platform===`win32`,execPath:process.execPath,script:dn,now:()=>Date.now(),readStdin:fn,stdout:e=>process.stdout.write(e),stderr:e=>process.stderr.write(e),interactive:process.stdin.isTTY&&process.stdout.isTTY,ask:pn,randomSecret:()=>u(32).toString(`base64url`),fetch,runProcess:hn,launchSender:mn});export{};
@@ -0,0 +1,173 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "$schema": {
6
+ "description": "The JSON Schema, for editor autocomplete.",
7
+ "type": "string"
8
+ },
9
+ "v": {
10
+ "type": "number",
11
+ "const": 1,
12
+ "description": "The config version. Always 1."
13
+ },
14
+ "endpoint": {
15
+ "type": "string",
16
+ "description": "The relay ingest URL: https, or http for localhost only."
17
+ },
18
+ "projects": {
19
+ "default": [],
20
+ "description": "Folders and whether they are public. Any other folder is private.",
21
+ "maxItems": 500,
22
+ "type": "array",
23
+ "items": {
24
+ "type": "object",
25
+ "properties": {
26
+ "path": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "maxLength": 1024,
30
+ "description": "An absolute folder, or one starting with ~. The longest matching path wins."
31
+ },
32
+ "public": {
33
+ "type": "boolean",
34
+ "description": "Whether sessions here show the project name and goals to visitors."
35
+ },
36
+ "name": {
37
+ "description": "The project name in office.config.json. Required when public is true.",
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "maxLength": 40
41
+ }
42
+ },
43
+ "required": [
44
+ "path",
45
+ "public"
46
+ ],
47
+ "additionalProperties": false
48
+ }
49
+ },
50
+ "publicAgentTypes": {
51
+ "default": [],
52
+ "description": "Subagent types sent by name. Others are sent as a generic helper.",
53
+ "maxItems": 50,
54
+ "type": "array",
55
+ "items": {
56
+ "type": "string",
57
+ "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,39}$"
58
+ }
59
+ },
60
+ "goals": {
61
+ "default": {
62
+ "fromTaskList": true,
63
+ "fromSessionTitle": true,
64
+ "maxLength": 60,
65
+ "blockWords": [
66
+ "security",
67
+ "vulnerability",
68
+ "CVE",
69
+ "exploit",
70
+ "token",
71
+ "secret",
72
+ "password",
73
+ "credential"
74
+ ],
75
+ "privatePrefix": "[private]"
76
+ },
77
+ "description": "Which goals are sent for public projects.",
78
+ "type": "object",
79
+ "properties": {
80
+ "fromTaskList": {
81
+ "default": true,
82
+ "description": "Use the task Claude has in progress.",
83
+ "type": "boolean"
84
+ },
85
+ "fromSessionTitle": {
86
+ "default": true,
87
+ "description": "Use the session title when no task is in progress.",
88
+ "type": "boolean"
89
+ },
90
+ "maxLength": {
91
+ "default": 60,
92
+ "description": "Longest goal sent, in characters.",
93
+ "type": "integer",
94
+ "minimum": 10,
95
+ "maximum": 60
96
+ },
97
+ "blockWords": {
98
+ "default": [
99
+ "security",
100
+ "vulnerability",
101
+ "CVE",
102
+ "exploit",
103
+ "token",
104
+ "secret",
105
+ "password",
106
+ "credential"
107
+ ],
108
+ "description": "A goal containing any of these words is not sent.",
109
+ "maxItems": 200,
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string",
113
+ "minLength": 1,
114
+ "maxLength": 40
115
+ }
116
+ },
117
+ "privatePrefix": {
118
+ "default": "[private]",
119
+ "description": "A task title starting with this is never sent.",
120
+ "type": "string",
121
+ "minLength": 1,
122
+ "maxLength": 20
123
+ }
124
+ },
125
+ "additionalProperties": false
126
+ },
127
+ "mcpCategories": {
128
+ "default": {},
129
+ "description": "MCP server name to work category. Server names are only read locally.",
130
+ "type": "object",
131
+ "propertyNames": {
132
+ "type": "string",
133
+ "minLength": 1,
134
+ "maxLength": 100
135
+ },
136
+ "additionalProperties": {
137
+ "type": "string",
138
+ "enum": [
139
+ "reading",
140
+ "coding",
141
+ "testing",
142
+ "vcs",
143
+ "terminal",
144
+ "research",
145
+ "delegating",
146
+ "planning",
147
+ "designing",
148
+ "monitoring",
149
+ "integration",
150
+ "working"
151
+ ]
152
+ }
153
+ },
154
+ "timestampRoundingSec": {
155
+ "default": 5,
156
+ "description": "Timestamps are rounded to this many seconds, so timing reveals less.",
157
+ "type": "integer",
158
+ "minimum": 1,
159
+ "maximum": 60
160
+ },
161
+ "paused": {
162
+ "default": false,
163
+ "description": "Send nothing. Set by hivefloor pause and resume.",
164
+ "type": "boolean"
165
+ }
166
+ },
167
+ "required": [
168
+ "v",
169
+ "endpoint"
170
+ ],
171
+ "additionalProperties": false,
172
+ "title": "Hivefloor machine config"
173
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hivefloor",
3
- "version": "0.0.1",
3
+ "version": "0.1.1",
4
4
  "description": "Connect Claude Code to your Hivefloor office: a live 3D view of your sessions as robots.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -20,13 +20,19 @@
20
20
  "license": "MIT",
21
21
  "author": "Valery Melou",
22
22
  "type": "module",
23
- "main": "./src/index.js",
24
- "types": "./src/index.d.ts",
23
+ "bin": {
24
+ "hivefloor": "./bin.mjs"
25
+ },
26
+ "files": [
27
+ "*.mjs",
28
+ "machine.schema.json",
29
+ "README.md",
30
+ "LICENSE"
31
+ ],
25
32
  "engines": {
26
33
  "node": ">=20"
27
34
  },
28
35
  "publishConfig": {
29
36
  "access": "public"
30
- },
31
- "module": "./src/index.js"
32
- }
37
+ }
38
+ }
@@ -0,0 +1 @@
1
+ const e=[`reading`,`coding`,`testing`,`vcs`,`terminal`,`research`,`delegating`,`planning`,`designing`,`monitoring`,`integration`,`working`],t=[`start`,`thinking`,`tool`,`idle`,`end`,`spawn`,`done`],n=[`working`,`thinking`,`waiting`,`idle`,`away`],r=[`open`,`busy`,`limited`],i=`claude`,a=`Helper`,o=[`private`,`other`],s=/[\u0000-\u001f\u007f-\u009f]/,c=/^[a-z0-9-]+$/i,l=/^[a-z]{2,}$/i,u=/[^a-z0-9./:-]+/i;function d(e){let t=e.indexOf(`/`);if(t<=0)return!1;let n=e.slice(0,t),r=n.slice(n.lastIndexOf(`.`)+1),i=n.split(`.`);return i.length>=2&&i.every(e=>c.test(e))&&l.test(r)}function f(e){return s.test(e)}function p(e){let t=e.toLowerCase();return t.includes(`://`)||t.includes(`www.`)?!0:e.split(u).some(d)}function m(e){let t=e.normalize(`NFKD`).replace(/\p{M}/gu,``).toLowerCase().replace(/[^a-z0-9]+/g,`-`),n=+!!t.startsWith(`-`),r=t.endsWith(`-`)?t.length-1:t.length;return t.slice(n,Math.max(n,r))}function h(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`https:`||t.protocol===`http:`&&[`localhost`,`127.0.0.1`,`[::1]`].includes(t.hostname)}export{e as a,i as c,n as d,m as i,r as l,f as n,t as o,p as r,a as s,h as t,o as u};
@@ -0,0 +1,112 @@
1
+ import{a as e,c as t,d as n,i as r,l as i,n as a,o,r as s,s as c,t as l,u}from"./urls-CuA4EHSE.mjs";function d(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function f(e,t=`|`){return e.map(e=>me(e)).join(t)}function p(e,t){return typeof t==`bigint`?t.toString():t}var m=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function h(e){return new m(e)}function ee(e){return e==null}function te(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ne(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}function g(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function re(e){let t=Object.getOwnPropertyDescriptor(e,`shape`);return t?.get?t.get.raw:t?.value}function _(e){return re(e._zod.def)??e._zod.def.shape}function ie(e,t,n){Object.defineProperty(e,t,{get(){let e=n();return g(this,t,e),e},enumerable:!0,configurable:!0})}function ae(e,t,n){t in e?g(e,t,n):e[t]=n}function v(e,t,n,r){let i=_(t);for(let a of n){let n=Object.getOwnPropertyDescriptor(i,a);n.enumerable&&(n.get?ie(e,a,()=>{let e=t._zod.def.shape[a];return r?r(e,a):e}):ae(e,a,r?r(n.value,a):n.value))}}function oe(e,t){for(let n of Reflect.ownKeys(t)){let r=Object.getOwnPropertyDescriptor(t,n);r.enumerable&&(r.get?ie(e,n,()=>t[n]):ae(e,n,r.value))}}function y(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function se(e){return JSON.stringify(e)}function ce(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}const le=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function ue(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const de=/* @__PURE__*/ h(()=>{if(P.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function b(e){if(ue(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return ue(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function fe(e){return b(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}const pe=/* @__PURE__*/ new Set([`string`,`number`,`symbol`]);function x(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function S(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function C(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function me(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function he(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}const ge={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},_e={int64:[/* @__PURE__*/ BigInt(`-9223372036854775808`),/* @__PURE__*/ BigInt(`9223372036854775807`)],uint64:[/* @__PURE__*/ BigInt(0),/* @__PURE__*/ BigInt(`18446744073709551615`)]};function ve(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);let i={};return v(i,e,ye(e,t)),S(e,y(n,{shape:i,checks:[]}))}function ye(e,t){let n=_(e),r=[];for(let e of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(n,e)?.enumerable)throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&r.push(e)}return r}function be(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);let i=new Set(ye(e,t)),a={};return v(a,e,Reflect.ownKeys(_(e)).filter(e=>!i.has(e))),S(e,y(n,{shape:a,checks:[]}))}function xe(e,t){if(!b(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=_(e);for(let e of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return S(e,y(e._zod.def,{shape:Se(e,t)}))}function Se(e,t){let n={};return v(n,e,Reflect.ownKeys(_(e))),oe(n,t),n}function Ce(e,t){if(!b(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return S(e,y(e._zod.def,{shape:Se(e,t)}))}function we(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);let n={};return v(n,e,Reflect.ownKeys(_(e))),v(n,t,Reflect.ownKeys(_(t))),S(e,y(e._zod.def,{shape:n,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Te(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);let a=n?new Set(ye(t,n)):void 0,o={};return v(o,t,Reflect.ownKeys(_(t)),e&&((t,n)=>a&&!a.has(n)?t:new e({type:`optional`,innerType:t}))),S(t,y(t._zod.def,{shape:o,checks:[]}))}function Ee(e,t,n){let r=n?new Set(ye(t,n)):void 0,i={};return v(i,t,Reflect.ownKeys(_(t)),(t,n)=>r&&!r.has(n)?t:new e({type:`nonoptional`,innerType:t})),S(t,y(t._zod.def,{shape:i}))}function w(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function De(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function T(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function E(e){return typeof e==`string`?e:e?.message}function Oe(e){let t=[];for(let n of e??[]){let e=n._zod.def;if(!/_(length|size)$|_equals$/.test(e.check))break;let r=e.maximum??e.length??e.size;r>=0&&t.push([r,n])}return t}function ke(e,t,n){var r;for(let i=t;i<e.length;i++)(r=e[i]).schema??(r.schema=n)}function D(e,t,n){var r;let i=e.inst?._zod?.traits;i?.has(`$ZodType`)&&(i.has(`$ZodCheck`)?(r=e).schema??(r.schema=e.inst):e.schema=e.inst);let a=e.schema===e.inst?void 0:e.schema?._zod.def?.error,o=e.message?e.message:E(e.inst?._zod.def?.error?.(e))??E(a?.(e))??E(t?.error?.(e))??E(n.customError?.(e))??E(n.localeError?.(e))??`Invalid input`,s={};for(let t of Object.keys(e))t!==`inst`&&t!==`schema`&&t!==`continue`&&t!==`input`&&t!==`__proto__`&&(s[t]=e[t]);return s.path??=[],s.message=o,t?.reportInput&&(s.input=e.input),s}const Ae=/[\uD800-\uDBFF]/;function je(e){let t=e.length;if(!Ae.test(e))return t;let n=t;for(let r=0;r<t-1;r++)(e.charCodeAt(r)&64512)==55296&&(e.charCodeAt(r+1)&64512)==56320&&(n--,r++);return n}function Me(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Ne(e){let t=typeof e;switch(t){case`number`:return Number.isNaN(e)?`nan`:`number`;case`object`:{if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=e;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&`constructor`in t&&t.constructor)return t.constructor.name}}return t}function O(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}function Pe(e,t){for(let n in t){let r=Object.getOwnPropertyDescriptor(t,n);r.get?Object.defineProperty(e,n,{...r,enumerable:!1}):Le(e,n,r.value)}}function k(e,t,n,r=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:r,value:n}),n}function Fe(e,t,n){return k(e,t,n,!1)}/* @__NO_SIDE_EFFECTS__ */
2
+ function Ie(e,t){for(let n in e){let r=e[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!0,get(){return k(this,n,r(this))},set(e){k(this,n,e)}})}return t}function Le(e,t,n){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?n:k(this,t,n.bind(this))},set(e){k(this,t,e)}})}function Re(e,t){let n=Object.getPrototypeOf(e);return t in n?void 0:n}let ze,A=!1;const Be={configurable:!0,get(){A=!0}};function j(e,t,n){let r=Object.getPrototypeOf(e._zod);t in r&&ze!==e._zod?ze=void 0:(ze=e._zod,Object.defineProperty(r,t,{configurable:!0,get(){Object.defineProperty(this,t,Be);let e=A;A=!1;try{let r=n(this);return A?delete this[t]:Object.defineProperty(this,t,{configurable:!0,writable:!0,value:r}),A||=e,r}catch(n){throw delete this[t],A||=e,n}},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:e})}}))}function Ve(e,t,n,r){let i=Re(e,t);i&&Object.defineProperty(i,t,{configurable:!0,get(){let e={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,t,e),e.value=n(this),Object.defineProperty(this,t,e),e.value},set(e){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:r,value:e})}})}function He(e){let t=()=>e;return t[`~constantCatch`]=!0,t}var Ue;const We={value:void 0,enumerable:!1};let Ge=`captureStackTrace`in Error?Error:null;function Ke(e){let t=Ge;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Ge=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}/* @__NO_SIDE_EFFECTS__ */
3
+ function M(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=/* @__PURE__ */ new Set}a.prototype=i;let o=n,s=o&&/* @__PURE__ */ new WeakSet;function c(n,r){if(!n._zod){We.value=new a(r);try{Object.defineProperty(n,"_zod",We)}finally{We.value=void 0}}else if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),Pe(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?Ke(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var N=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},qe=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ue=globalThis).__zod_globalConfig??(Ue.__zod_globalConfig={});const P=globalThis.__zod_globalConfig;function F(e){return e&&Object.assign(P,e),P}function Je(){let e=this._zod;return e.message??=JSON.stringify(e.def,p,2),e.message}function Ye(e){this._zod.message=e}const Xe={get:Je,set:Ye,enumerable:!0,configurable:!0},Ze={value:void 0,enumerable:!1},Qe=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]),$e=/* @__PURE__ */ M(`$ZodError`,(e,t)=>{e.name=`$ZodError`,Ze.value=t,Object.defineProperty(e,"issues",Ze),Ze.value=void 0,Object.defineProperty(e,"message",Xe);let n=Object.getPrototypeOf(e);Qe.has(n)||(Qe.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))});function et(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function tt(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?et(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function nt(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i],o=i===e.length-1;if(n===`_errors`){o&&r._errors.push(t(a)),i++;continue}Object.prototype.hasOwnProperty.call(r,n)||Object.defineProperty(r,n,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let s=r[n];o&&s._errors.push(t(a)),r=s,i++}}}};return r(e),n}function rt(e,t){return{callee:t?.callee??e,Err:t?.Err}}const it=e=>{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new N;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>D(e,o,F())));throw le(n,a?.callee??t),n}return s.value};return t},at=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>D(e,o,F())));throw le(n,a?.callee??t),n}return s.value};return t},ot=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new N;return a.issues.length?st(e,a.issues,i):{success:!0,data:a.value}};function st(e,t,n){let r;return{success:!1,get error(){return r||(r=new e(t.map(e=>D(e,n,F()))),t=void 0,n=void 0),r},set error(e){r=e,t=void 0,n=void 0}}}const ct=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?st(e,a.issues,i):{success:!0,data:a.value}},lt=/* @__PURE__ */ Symbol.for(`zod.compile.invalid`),ut=/* @__PURE__ */ Symbol.for(`zod.compile.fallback`),dt=((e,t,n)=>{let r=e._zod.bag.validator;if(r!==void 0){if(r(t)!==lt)return!0;if(r.definite===!0&&n===void 0)return!1}return ft(e,t,n)});function ft(e,t,n){let r=n?{...n,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},i=e._zod.bag.fallbackRun,a;if(i?(r[ut]=!0,a=i({value:t,issues:[]},r)):a=e._zod.run({value:t,issues:[]},r),a instanceof Promise)throw new N;return a.issues.length===0}const pt=async(e,t,n)=>{let r=n?{...n,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},i=e._zod.run({value:t,issues:[]},r);return i instanceof Promise&&(i=await i),i.issues.length===0},mt=e=>{let t=it(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,rt(n,a))};return n},ht=e=>{let t=it(e),n=(e,r,i,a)=>t(e,r,i,rt(n,a));return n},gt=e=>{let t=at(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,rt(n,a))};return n},_t=e=>{let t=at(e),n=async(e,r,i,a)=>await t(e,r,i,rt(n,a));return n},vt=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return ot(e)(t,n,i)},yt=e=>(t,n,r)=>ot(e)(t,n,r),bt=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return ct(e)(t,n,i)},xt=e=>async(t,n,r)=>ct(e)(t,n,r),St=/^[cC][0-9a-z]{6,}$/,Ct=/^[0-9a-z]+$/,wt=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Tt=/^[0-9a-vA-V]{20}$/,Et=/^[A-Za-z0-9]{27}$/,Dt=/^[a-zA-Z0-9_-]{21}$/;function Ot(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}const kt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,At=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,jt=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Mt=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;function Nt(){return/* @__PURE__ */ RegExp(`^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`,`u`)}const Pt=/^(?:(?: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])$/,Ft=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,It=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Lt=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Rt=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,zt=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/,Bt=/^https?$/,Vt=/^\+[1-9]\d{6,14}$/,Ht=`(?:(?:\\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])))`;function Ut(e){return RegExp(`^${e}$`)}const Wt=/*@__PURE__*/ Ut(Ht);function Gt(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Kt(e){return RegExp(`^${Gt(e)}$`)}function qt(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${Gt({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${Gt({precision:e.precision})}`:n;return RegExp(`^${Ht}T(?:${r})$`)}const Jt=/^[\s\S]{0,}$/,Yt=/^-?\d+$/,Xt=/^-?\d+(?:\.\d+)?$/,Zt=/^(?:true|false)$/i,Qt=/^[^A-Z]*$/,$t=/^[^a-z]*$/,I=/*@__PURE__*/ M(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),en=e=>{let t=e.value;return!ee(t)&&t.length!==void 0},tn={number:`number`,bigint:`bigint`,object:`date`},nn=/*@__PURE__*/ M(`$ZodCheckLessThan`,(e,t)=>{I.init(e,t);let n=tn[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:tn[typeof r.value]??n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),rn=/*@__PURE__*/ M(`$ZodCheckGreaterThan`,(e,t)=>{I.init(e,t);let n=tn[typeof t.value];e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:tn[typeof r.value]??n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),an=/*@__PURE__*/ M(`$ZodCheckMultipleOf`,(e,t)=>{I.init(e,t),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):ne(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),on=/*@__PURE__*/ M(`$ZodCheckNumberFormat`,(e,t)=>{I.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=ge[t.format];e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),sn=/*@__PURE__*/ M(`$ZodCheckMaxLength`,(e,t)=>{var n;I.init(e,t),(n=e._zod.def).when??(n.when=en),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?je(r):i)<=t.maximum)return;let a=Me(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),cn=/*@__PURE__*/ M(`$ZodCheckMinLength`,(e,t)=>{var n;I.init(e,t),(n=e._zod.def).when??(n.when=en),e._zod.check=n=>{let r=n.value,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i<t.minimum*2?je(r):i)>=t.minimum)return;let a=Me(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ln=/*@__PURE__*/ M(`$ZodCheckLengthEquals`,(e,t)=>{var n;I.init(e,t),(n=e._zod.def).when??(n.when=en),e._zod.check=n=>{let r=n.value,i=r.length,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?je(r):i;if(a===t.length)return;let o=Me(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),un=/*@__PURE__*/ M(`$ZodCheckStringFormat`,(e,t)=>{var n,r;I.init(e,t),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),dn=/*@__PURE__*/ M(`$ZodCheckRegex`,(e,t)=>{un.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),fn=/*@__PURE__*/ M(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Qt,un.init(e,t)}),pn=/*@__PURE__*/ M(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=$t,un.init(e,t)}),mn=/*@__PURE__*/ M(`$ZodCheckIncludes`,(e,t)=>{I.init(e,t);let n=x(t.includes);t.pattern=new RegExp(typeof t.position==`number`?`^.{${t.position},}${n}`:n),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),hn=/*@__PURE__*/ M(`$ZodCheckStartsWith`,(e,t)=>{I.init(e,t);let n=RegExp(`^${x(t.prefix)}.*`);t.pattern??=n,e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),gn=/*@__PURE__*/ M(`$ZodCheckEndsWith`,(e,t)=>{I.init(e,t);let n=RegExp(`.*${x(t.suffix)}$`);t.pattern??=n,e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),_n=/*@__PURE__*/ M(`$ZodCheckOverwrite`,(e,t)=>{I.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var vn=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}indented(e){this.indent+=1;try{e(this)}finally{--this.indent}}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
4
+ `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(`
5
+ `)}\n};`)(...Object.values(this.closed))}};const yn={major:4,minor:6,patch:7},L=/*@__PURE__*/ M(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=yn;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=w(t),a;for(let o of n){if(o._zod.def.when){if(De(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new N;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(ke(t.issues,n,e),i||=w(t,n))});else{if(t.issues.length===n)continue;ke(t.issues,n,e),i||=w(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(w(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new N;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new N;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Fe(this,`~standard`,Sn(this))},set"~standard"(e){k(this,`~standard`,e)}}),bn=(e,t)=>e.issues.length?{issues:e.issues.map(e=>D(e,t,F()))}:{value:e.value};async function xn(e,t){let n={async:!0};return bn(await e._zod.run({value:t,issues:[]},n),n)}function Sn(e){return{validate:t=>{let n={async:!1};try{let r=e._zod.run({value:t,issues:[]},n);if(!(r instanceof Promise))return bn(r,n)}catch{}return xn(e,t)},vendor:`zod`,version:1}}const Cn=/*@__PURE__*/ M(`$ZodString`,(e,t)=>{L.init(e,t),e._zod.pattern=t.pattern??Jt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),R=/*@__PURE__*/ M(`$ZodStringFormat`,(e,t)=>{un.init(e,t),Cn.init(e,t)}),wn=/*@__PURE__*/ M(`$ZodGUID`,(e,t)=>{t.pattern??=At,R.init(e,t)}),Tn=/*@__PURE__*/ M(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=jt(e)}else t.pattern??=jt();R.init(e,t)}),En=/*@__PURE__*/ M(`$ZodEmail`,(e,t)=>{t.pattern??=Mt,R.init(e,t)});function Dn(e){try{return typeof URL<`u`&&typeof URL.canParse==`function`?URL.canParse(e):(new URL(e),!0)}catch{return!1}}function On(e,t){return!(`normalize`in t)&&!(`hostname`in t)&&!(`protocol`in t)?Dn(e)||2:kn(e,t)}function kn(e,t){if(!t.normalize&&t.protocol?.source===Bt.source&&!/^https?:\/\//i.test(e))return 1;try{if(typeof URL<`u`){let t=URL;if(typeof t.parse==`function`)return t.parse(e)??2}return new URL(e)}catch{return 2}}const An=/[\t\n\r]/g;function jn(e){return e.replace(An,``)}function Mn(e,t){return t.lastIndex=0,t.test(e.hostname)}function Nn(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}const Pn=/*@__PURE__*/ M(`$ZodURL`,(e,t)=>{R.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=On(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}if(i===!0){n.value=jn(r);return}t.hostname&&!Mn(i,t.hostname)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort}),t.protocol&&!Nn(i,t.protocol)&&n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort}),n.value=t.normalize?i.href:jn(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Fn=/*@__PURE__*/ M(`$ZodEmoji`,(e,t)=>{t.pattern??=Nt(),R.init(e,t)}),In=/*@__PURE__*/ M(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?Dt:Ot(t.length),R.init(e,t)}),Ln=/*@__PURE__*/ M(`$ZodCUID`,(e,t)=>{t.pattern??=St,R.init(e,t)}),Rn=/*@__PURE__*/ M(`$ZodCUID2`,(e,t)=>{t.pattern??=Ct,R.init(e,t)}),zn=/*@__PURE__*/ M(`$ZodULID`,(e,t)=>{t.pattern??=wt,R.init(e,t)}),Bn=/*@__PURE__*/ M(`$ZodXID`,(e,t)=>{t.pattern??=Tt,R.init(e,t)}),Vn=/*@__PURE__*/ M(`$ZodKSUID`,(e,t)=>{t.pattern??=Et,R.init(e,t)}),Hn=/*@__PURE__*/ M(`$ZodISODateTime`,(e,t)=>{t.pattern??=qt(t),R.init(e,t)}),Un=/*@__PURE__*/ M(`$ZodISODate`,(e,t)=>{t.pattern??=Wt,R.init(e,t)}),Wn=/*@__PURE__*/ M(`$ZodISOTime`,(e,t)=>{t.pattern??=Kt(t),R.init(e,t)}),Gn=/*@__PURE__*/ M(`$ZodISODuration`,(e,t)=>{t.pattern??=kt,R.init(e,t)}),Kn=/*@__PURE__*/ M(`$ZodIPv4`,(e,t)=>{t.pattern??=Pt,R.init(e,t)}),qn=/^[0-9a-fA-F:.]+$/;function Jn(e){return qn.test(e)?Dn(`http://[${e}]`):!1}const Yn=/*@__PURE__*/ M(`$ZodIPv6`,(e,t)=>{t.pattern??=Ft,R.init(e,t),e._zod.check=n=>{Jn(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),Xn=/*@__PURE__*/ M(`$ZodCIDRv4`,(e,t)=>{t.pattern??=It,R.init(e,t)});function Zn(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:Jn(n)}const Qn=/*@__PURE__*/ M(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Lt,R.init(e,t),e._zod.check=n=>{Zn(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function $n(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const er=/^[0-9a-zA-Z+/]*={0,2}$/,tr=/*@__PURE__*/ M(`$ZodBase64`,(e,t)=>{t.pattern??=er,R.init(e,t),e._zod.check=n=>{$n(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}}),nr=/^[A-Za-z0-9_-]*$/;function rr(e){if(!nr.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return $n(t.padEnd(Math.ceil(t.length/4)*4,`=`))}const ir=/*@__PURE__*/ M(`$ZodBase64URL`,(e,t)=>{t.pattern??=nr,R.init(e,t),e._zod.check=n=>{rr(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),ar=/*@__PURE__*/ M(`$ZodE164`,(e,t)=>{t.pattern??=Vt,R.init(e,t)});function or(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}const sr=/*@__PURE__*/ M(`$ZodJWT`,(e,t)=>{R.init(e,t),e._zod.check=n=>{or(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),cr=/*@__PURE__*/ M(`$ZodNumber`,(e,t)=>{L.init(e,t),e._zod.pattern=Xt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),lr=/*@__PURE__*/ M(`$ZodNumberFormat`,(e,t)=>{on.init(e,t),cr.init(e,t)}),ur=/*@__PURE__*/ M(`$ZodBoolean`,(e,t)=>{L.init(e,t),e._zod.pattern=Zt,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),dr=/*@__PURE__*/ M(`$ZodUnknown`,(e,t)=>{L.init(e,t),e._zod.parse=e=>e}),fr=/*@__PURE__*/ M(`$ZodNever`,(e,t)=>{L.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function pr(e,t){let n=Oe(e._zod.def.checks);if(!n.length)return;let r=Math.min(...n.map(e=>e[0])),i=e._zod.parse;e._zod.parse=(n,a)=>{let o=t(n.value);if(o>r&&!a?.skipChecks&&a?.direction!==`backward`){for(let[t,r]of Oe(e._zod.def.checks))if(o>t&&r._zod.def.when(n)){let t=n.issues.length;return r._zod.check(n),n.issues[t].continue=!1,ke(n.issues,t,e),n}}return i(n,a)}}const mr=e=>Array.isArray(e)?e.length:-1;function hr(e,t,n){e.issues.length&&t.issues.push(...T(n,e.issues)),t.value[n]=e.value}const gr=/*@__PURE__*/ M(`$ZodArray`,(e,t)=>{L.init(e,t);let n=P.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[],s=i?.abortEarly;for(let e=0;e<a.length;e++){let n=a[e],c=t.element._zod.run({value:n,issues:[]},i);if(c instanceof Promise)o.push(c.then(t=>hr(t,r,e)));else if(hr(c,r,e),s&&c.issues.length!==0&&w(c))break}return o.length?Promise.all(o).then(()=>r):r},pr(e,mr)});function _r(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(o||!s||i!==`optional`){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...T(n,e.issues))}!o&&i===void 0?e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]}):e.value===void 0?(o||i===`defaulted`&&!s)&&(t.value[n]=void 0):t.value[n]=e.value}}const vr=[];function yr(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:vr,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=he(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function br(e,t,n,r,i,a,o){let s=[],c=i.keySet,l=i.catchall._zod,u=l.def.type,d=l.optin,f=l.optout,p=0;for(let i in t){if(o&&n.issues.length!==p){if(w(n,p))break;p=n.issues.length}if(c.has(i))continue;if(i===`__proto__`){u===`never`&&s.push(i);continue}if(u===`never`){s.push(i);continue}let a=l.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>_r(e,n,i,t,d,f))):_r(a,n,i,t,d,f)}return s.length&&n.issues.push({code:`unrecognized_keys`,keys:s,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}const xr=/*@__PURE__*/ M(`$ZodObject`,(e,t)=>{L.init(e,t);let n=Object.getOwnPropertyDescriptor(t,`shape`),r=n?.get?n.get.raw:t.shape??{};if(r){let e=()=>{let n={...r};return Object.defineProperty(t,"shape",{value:n}),e.raw=n,n};e.raw=r,Object.defineProperty(t,"shape",{get:e})}let i=h(()=>yr(t));j(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||g(n,e,/* @__PURE__ */ new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let a=ue,o=t.catchall,s,c=P.memoizer;c?.attach(e),e._zod.parse=(t,n)=>{s??=i.value;let r=t.value;if(!a(r))return t.issues.push({expected:`object`,code:`invalid_type`,input:r,inst:e}),t;t.value=c?c.alloc(e,t,{},n):{};let l=[],u=s.shape,d=n?.abortEarly,f=t.issues.length;for(let e of s.allKeys){if(d&&t.issues.length!==f){if(w(t,f))break;f=t.issues.length}if(e===`__proto__`)continue;let i=u[e],a=i._zod.optin,o=i._zod.optout,s=i._zod.run({value:r[e],issues:[]},n);s instanceof Promise?l.push(s.then(n=>_r(n,t,e,r,a,o))):_r(s,t,e,r,a,o)}return o?br(l,r,t,n,i.value,e,d===!0):l.length?Promise.all(l).then(()=>t):t}}),Sr=/*@__PURE__*/ M(`$ZodObjectJIT`,(e,t)=>{xr.init(e,t);let n=e._zod.parse,r=h(()=>yr(t)),i=P.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new vn([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>`
6
+ let ${e}_ab = false;
7
+ for (let i = 0; i < ${e}.issues.length; i++) {
8
+ const iss = ${e}.issues[i];
9
+ iss.path = iss.path ? [${t}, ...iss.path] : [${t}];
10
+ payload.issues.push(iss);
11
+ if (iss.continue !== true) ${e}_ab = true;
12
+ }
13
+ if (${e}_ab && ctx && ctx.abortEarly) {
14
+ payload.value = newResult;
15
+ return payload;
16
+ }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:se(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(`
17
+ const ${n}_present = ${i};
18
+ if (!${n}.issues.length || ${n}_present) {
19
+ if (${n}.issues.length) {${c(n,r)}
20
+ }
21
+
22
+ if (${e}) {
23
+ newResult[${r}] = ${n}.value;
24
+ }
25
+ }
26
+
27
+ `)}else f?(o.write(`
28
+ if (${n}.issues.length) {${c(n,r)}
29
+ }
30
+ `),d===`defaulted`?o.write(`newResult[${r}] = ${n}.value;`):o.write(`
31
+ if (${n}.value !== undefined || ${i}) {
32
+ newResult[${r}] = ${n}.value;
33
+ }
34
+ `)):o.write(`
35
+ const ${n}_present = ${i};
36
+ if (${n}.issues.length) {${c(n,r)}
37
+ }
38
+ if (!${n}_present && !${n}.issues.length) {
39
+ payload.issues.push({
40
+ code: "invalid_type",
41
+ expected: "nonoptional",
42
+ input: undefined,
43
+ path: [${r}]
44
+ });
45
+ if (ctx && ctx.abortEarly) {
46
+ payload.value = newResult;
47
+ return payload;
48
+ }
49
+ }
50
+
51
+ if (${n}_present) {
52
+ newResult[${r}] = ${n}.value;
53
+ }
54
+
55
+ `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=ue,c=!P.jitless,l=c&&de.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?br([],p,i,f,d,e,f?.abortEarly===!0):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function Cr(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!w(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>D(e,r,F())))}),t)}const wr=/*@__PURE__*/ M(`$ZodUnion`,(e,t)=>{L.init(e,t),j(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),j(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),j(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),j(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>te(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Cr(t,r,e,i)):Cr(o,r,e,i)}}),Tr=/*@__PURE__*/ M(`$ZodIntersection`,(e,t)=>{L.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Dr(e,t,n)):Dr(e,i,a)}});function Er(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(b(e)&&b(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=Er(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Er(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Dr(e,t,n){let r=/* @__PURE__ */ new Map,i,a=/* @__PURE__ */ new Map,o=(e,t)=>{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=Er(t.value,n.value);if(!c.valid){if(w(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}const Or=/*@__PURE__*/ M(`$ZodRecord`,(e,t)=>{L.init(e,t);let n=P.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!b(a))return r.issues.push({expected:`record`,code:`invalid_type`,input:a,inst:e}),r;let o=[],s=t.keyType._zod.values;if(s&&!t.partial){r.value=n?n.alloc(e,r,{},i):{};let c=/* @__PURE__ */ new Set;for(let n of s)if(typeof n==`string`||typeof n==`number`||typeof n==`symbol`){if(c.add(typeof n==`number`?n.toString():n),n===`__proto__`)continue;let s=t.keyType._zod.run({value:n,issues:[]},i);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){r.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>D(e,i,F())),input:n,path:[n],inst:e});continue}let l=s.value;if(l===`__proto__`)continue;let u=t.valueType._zod.run({value:a[n],issues:[]},i);u instanceof Promise?o.push(u.then(e=>{e.issues.length&&r.issues.push(...T(n,e.issues)),r.value[l]=e.value})):(u.issues.length&&r.issues.push(...T(n,u.issues)),r.value[l]=u.value)}let l;for(let e in a)if(!c.has(e)){if(t.mode===`loose`){if(e===`__proto__`)continue;r.value[e]=a[e]}else l??=[],l.push(e)}l&&l.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:l,continue:!0})}else{r.value=n?n.alloc(e,r,{},i):{};let c;for(let n of Reflect.ownKeys(a)){if(n===`__proto__`||!Object.prototype.propertyIsEnumerable.call(a,n))continue;let l=t.keyType._zod.run({value:n,issues:[]},i);if(l instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof n==`string`&&Xt.test(n)&&l.issues.length){let e=t.keyType._zod.run({value:Number(n),issues:[]},i);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(l=e)}if(l.issues.length){t.mode===`loose`?r.value[n]=a[n]:s?(c??=[],c.push(n)):r.issues.push({code:`invalid_key`,origin:`record`,issues:l.issues.map(e=>D(e,i,F())),input:n,path:[n],inst:e});continue}let u=l.value;if(u===`__proto__`)continue;let d=t.valueType._zod.run({value:a[n],issues:[]},i);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&r.issues.push(...T(n,e.issues)),r.value[u]=e.value})):(d.issues.length&&r.issues.push(...T(n,d.issues)),r.value[u]=d.value)}c&&c.length>0&&r.issues.push({code:`unrecognized_keys`,input:a,inst:e,keys:c,continue:!0})}return o.length?Promise.all(o).then(()=>r):r}}),kr=/*@__PURE__*/ M(`$ZodEnum`,(e,t)=>{L.init(e,t);let n=d(t.entries),r=new Set(n);e._zod.values=r,j(e,`pattern`,e=>{let t=d(e.def.entries).filter(e=>pe.has(typeof e));return RegExp(t.length?`^(${t.map(e=>x(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Ar=/*@__PURE__*/ M(`$ZodLiteral`,(e,t)=>{L.init(e,t);let n=new Set(t.values);e._zod.values=n,j(e,`pattern`,e=>{let t=e.def.values;return RegExp(t.length?`^(${t.map(e=>typeof e==`string`?x(e):e?x(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`)}),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),jr=/*@__PURE__*/ M(`$ZodTransform`,(e,t)=>{L.init(e,t),e._zod.optin=`optional`,P.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new qe(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n));if(i instanceof Promise)throw new N;return n.value=i,n}});function Mr(e,t){return e.value=t.issues.length?void 0:t.value,e}const Nr=/*@__PURE__*/ M(`$ZodOptional`,(e,t)=>{L.init(e,t),j(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,j(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?/* @__PURE__ */ new Set([...t,void 0]):void 0}),j(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${te(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Mr(e,t)):Mr(e,r)}return t.innerType._zod.run(e,n)}}),Pr=/*@__PURE__*/ M(`$ZodExactOptional`,(e,t)=>{Nr.init(e,t),j(e,`values`,e=>e.def.innerType._zod.values),j(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Fr=/*@__PURE__*/ M(`$ZodNullable`,(e,t)=>{L.init(e,t),j(e,`optin`,e=>e.def.innerType._zod.optin),j(e,`optout`,e=>e.def.innerType._zod.optout),j(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${te(t.source)}|null)$`):void 0}),j(e,`values`,e=>e.def.innerType._zod.values?/* @__PURE__ */ new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Ir=/*@__PURE__*/ M(`$ZodDefault`,(e,t)=>{L.init(e,t),e._zod.optin=`defaulted`,j(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Lr(e,t)):Lr(r,t)}});function Lr(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Rr=/*@__PURE__*/ M(`$ZodPrefault`,(e,t)=>{L.init(e,t),e._zod.optin=`defaulted`,j(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),zr=/*@__PURE__*/ M(`$ZodNonOptional`,(e,t)=>{L.init(e,t),j(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Br(t,e)):Br(i,e)}});function Br(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Vr(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>D(e,r,F()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}const Hr=/*@__PURE__*/ M(`$ZodCatch`,(e,t)=>{L.init(e,t),j(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),j(e,`optout`,e=>e.def.innerType._zod.optout),j(e,`values`,e=>e.def.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Vr(e,r,t,n)):Vr(e,r,t,n)}}),Ur=/*@__PURE__*/ M(`$ZodPipe`,(e,t)=>{L.init(e,t),j(e,`values`,e=>e.def.in._zod.values),j(e,`optin`,e=>e.def.in._zod.optin),j(e,`optout`,e=>e.def.out._zod.optout),j(e,`propValues`,e=>e.def.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>Wr(e,t.in,n)):Wr(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Wr(e,t.out,n)):Wr(r,t.out,n)}});function Wr(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const Gr=/*@__PURE__*/ M(`$ZodReadonly`,(e,t)=>{L.init(e,t),j(e,`propValues`,e=>e.def.innerType._zod.propValues),j(e,`values`,e=>e.def.innerType._zod.values),j(e,`optin`,e=>e.def.innerType?._zod?.optin),j(e,`optout`,e=>e.def.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Kr):Kr(r)}});function Kr(e){return e.memo||(e.value=Object.freeze(e.value)),e}const qr=/*@__PURE__*/ M(`$ZodCustom`,(e,t)=>{I.init(e,t),L.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Jr(t,n,r,e));Jr(i,n,r,e)}});function Jr(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(O(e))}}var Yr=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}};const Xr=`~memo`,Zr=[];function Qr(e){return typeof e==`object`&&!!e}function $r(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}const ei=/*@__PURE__*/ new WeakMap;function ti(e,t,n){let r=ei.get(e);if(r!==void 0)return r?2:0;if(t.has(e))return 2;t.add(e);let i=0,a=e=>{if(i!==2&&e?._zod){let r=ti(e,t,n);r>i&&(i=r)}},o=(e,r)=>{let i=0;for(let a of Reflect.ownKeys(e)){let o=Object.getOwnPropertyDescriptor(e,a);if(r&&!o.enumerable)continue;let s=o.get?1:o.value?._zod?ti(o.value,t,n):0;s>i&&(i=s)}return i},s=e=>{e>i&&(i=e)},c=e._zod.def;switch(c.type){case`object`:{let e=re(c);s(e?o(e,!0):1),a(c.catchall);break}case`array`:a(c.element);break;case`tuple`:for(let e of c.items)a(e);a(c.rest);break;case`record`:case`map`:a(c.keyType),a(c.valueType);break;case`set`:a(c.valueType);break;case`union`:for(let e of c.options)a(e);break;case`intersection`:a(c.left),a(c.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:a(c.innerType);break;case`pipe`:a(c.in),a(c.out);break;case`function`:a(c.input),a(c.output);break;case`lazy`:{let r=c._cachedInner??(n?e._zod.innerType:void 0);s(r?ti(r,t,!1):1);break}case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in c){let t=Object.getOwnPropertyDescriptor(c,e);if(!t||t.get)continue;let n=t.value;if(n&&typeof n==`object`){if(n._zod)a(n);else if(Array.isArray(n))for(let e of n)a(e)}}}return t.delete(e),ni(e,i)}function ni(e,t){return t!==1&&ei.set(e,t===2),t}function ri(e,t){let n=e.buckets.get(t);return n||(n=/* @__PURE__ */ new WeakMap,e.buckets.set(t,n)),n}let ii;const ai=[],oi={alloc(e,t,n){let r=ii;if(!r)return n;ii=void 0;let i={value:n,issues:null};return r.set(t.value,i),ai.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&ci(n,e.value))throw new Yr;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r=!1,i,a;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,o=(s,c)=>{if(n===void 0){let i=ti(e,/* @__PURE__ */ new Set,!1);if(i===0)return e._zod.parse=t,e._zod.run===o&&(e._zod.run=t),t(s,c);i===2||r?n=!0:r=!0}let l=s.value;if(!Qr(l))return t(s,c);let u=c[Xr];u||(u={buckets:/* @__PURE__ */ new WeakMap,backEdges:void 0},c[Xr]=u);let d;i===c?d=a:(d=ri(u,e),i=c,a=d);let f=d.get(l);if(f)return s.value=f.value,f.issues?f.issues.length&&s.issues.push(...$r(f.issues)):(s.memo=!0,u.backEdges??(u.backEdges=/* @__PURE__ */ new WeakSet),u.backEdges.add(f.value)),s;ii=d;let p=ai.length,m=t(s,c);ii=void 0;let h=ai.length>p?ai.pop():void 0;return m instanceof Promise?m.then(e=>(h&&(h.issues=e.issues.length?$r(e.issues):Zr),e)):(h&&(h.issues=m.issues.length?$r(m.issues):Zr),m)};e._zod.parse=o,e._zod.run===t&&(e._zod.run=o)})}};function si(){return oi}function ci(e,t){let n=e[Xr]?.backEdges;return n!==void 0&&Qr(t)&&n.has(t)}const li=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,currency_code:`currency code`,credit_card:`credit card number`,iban:`IBAN`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Ne(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${me(e.values[0])}`:`Invalid option: expected one of ${f(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${f(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function ui(){return{localeError:li()}}var di,fi=class{constructor(){this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=/* @__PURE__ */ new WeakMap,this._idmap=/* @__PURE__ */ new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function pi(){return new fi}(di=globalThis).__zod_globalRegistry??(di.__zod_globalRegistry=pi());const mi=globalThis.__zod_globalRegistry;function hi(e){return e.checks&&=[...e.checks],e}// @__NO_SIDE_EFFECTS__
56
+ function gi(e,t){return new e(hi({type:`string`,...C(t)}))}// @__NO_SIDE_EFFECTS__
57
+ function _i(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
58
+ function vi(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
59
+ function yi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
60
+ function bi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...C(t)})}// @__NO_SIDE_EFFECTS__
61
+ function xi(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...C(t)})}// @__NO_SIDE_EFFECTS__
62
+ function Si(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...C(t)})}// @__NO_SIDE_EFFECTS__
63
+ function Ci(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
64
+ function wi(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
65
+ function Ti(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
66
+ function Ei(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
67
+ function Di(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
68
+ function Oi(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
69
+ function ki(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
70
+ function Ai(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
71
+ function ji(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
72
+ function Mi(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
73
+ function Ni(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
74
+ function Pi(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
75
+ function Fi(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
76
+ function Ii(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
77
+ function Li(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
78
+ function Ri(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...C(t)})}// @__NO_SIDE_EFFECTS__
79
+ function zi(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...C(t)})}// @__NO_SIDE_EFFECTS__
80
+ function Bi(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...C(t)})}// @__NO_SIDE_EFFECTS__
81
+ function Vi(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...C(t)})}// @__NO_SIDE_EFFECTS__
82
+ function Hi(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...C(t)})}// @__NO_SIDE_EFFECTS__
83
+ function Ui(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...C(t)})}// @__NO_SIDE_EFFECTS__
84
+ function Wi(e,t){return new e({type:`boolean`,...C(t)})}// @__NO_SIDE_EFFECTS__
85
+ function Gi(e){return new e({type:`unknown`})}// @__NO_SIDE_EFFECTS__
86
+ function Ki(e,t){return new e({type:`never`,...C(t)})}// @__NO_SIDE_EFFECTS__
87
+ function qi(e,t){return new nn({check:`less_than`,...C(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__
88
+ function Ji(e,t){return new nn({check:`less_than`,...C(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__
89
+ function Yi(e,t){return new rn({check:`greater_than`,...C(t),value:e,inclusive:!1})}// @__NO_SIDE_EFFECTS__
90
+ function Xi(e,t){return new rn({check:`greater_than`,...C(t),value:e,inclusive:!0})}// @__NO_SIDE_EFFECTS__
91
+ function Zi(e,t){return new an({check:`multiple_of`,...C(t),value:e})}// @__NO_SIDE_EFFECTS__
92
+ function Qi(e,t){return new sn({check:`max_length`,...C(t),maximum:e})}// @__NO_SIDE_EFFECTS__
93
+ function $i(e,t){return new cn({check:`min_length`,...C(t),minimum:e})}// @__NO_SIDE_EFFECTS__
94
+ function ea(e,t){return new ln({check:`length_equals`,...C(t),length:e})}// @__NO_SIDE_EFFECTS__
95
+ function ta(e,t){return new dn({check:`string_format`,format:`regex`,...C(t),pattern:e})}// @__NO_SIDE_EFFECTS__
96
+ function na(e){return new fn({check:`string_format`,format:`lowercase`,...C(e)})}// @__NO_SIDE_EFFECTS__
97
+ function ra(e){return new pn({check:`string_format`,format:`uppercase`,...C(e)})}// @__NO_SIDE_EFFECTS__
98
+ function ia(e,t){return new mn({check:`string_format`,format:`includes`,...C(t),includes:e})}// @__NO_SIDE_EFFECTS__
99
+ function aa(e,t){return new hn({check:`string_format`,format:`starts_with`,...C(t),prefix:e})}// @__NO_SIDE_EFFECTS__
100
+ function oa(e,t){return new gn({check:`string_format`,format:`ends_with`,...C(t),suffix:e})}// @__NO_SIDE_EFFECTS__
101
+ function z(e){return new _n({check:`overwrite`,tx:e})}// @__NO_SIDE_EFFECTS__
102
+ function sa(e){return/* @__PURE__ */ z(t=>t.normalize(e))}// @__NO_SIDE_EFFECTS__
103
+ function ca(){return/* @__PURE__ */ z(e=>e.trim())}// @__NO_SIDE_EFFECTS__
104
+ function la(){return/* @__PURE__ */ z(e=>e.toLowerCase())}// @__NO_SIDE_EFFECTS__
105
+ function ua(){return/* @__PURE__ */ z(e=>e.toUpperCase())}// @__NO_SIDE_EFFECTS__
106
+ function da(){return/* @__PURE__ */ z(e=>ce(e))}// @__NO_SIDE_EFFECTS__
107
+ function fa(e,t,n){return new e({type:`array`,element:t,...C(n)})}// @__NO_SIDE_EFFECTS__
108
+ function pa(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...C(n)})}// @__NO_SIDE_EFFECTS__
109
+ function ma(e,t){let n=/* @__PURE__ */ ha(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(O(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(O(r))}},e(t.value,t)),t);return n}// @__NO_SIDE_EFFECTS__
110
+ function ha(e,t){let n=new I({check:`custom`,...C(t)});return n._zod.check=e,n}function ga(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&g(e,t,n[t]);return e}function _a(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??mi,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:/* @__PURE__ */ new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function B(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function V(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,V(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&ga(o.schema,c),t.io===`input`&&H(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function va(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function ya(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;let r=/* @__PURE__ */ new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${va(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+va(a)}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
111
+
112
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0])a(n);else{if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}(e.metadataRegistry.get(n[0])?.id||r.cycle||r.count>1&&e.reused===`ref`)&&a(n)}}e.external&&(e.sharedDefsExtractedFor=e.external)}function ba(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;ba(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}const xa=/* @__PURE__ */ new Set([`type`,`properties`,`required`,`additionalProperties`]),Sa=[`oneOf`,`anyOf`];function Ca(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function wa(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!xa.has(e))return null;t.push(n)}let n={},r=/* @__PURE__ */ new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??Ca(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}g(n,r,e.length===1?e[0]:wa(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=Ca(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function Ta(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of xa)if(t in e)return;let n=t.filter(e=>Sa.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=wa(t);else{let e=n[0],i=Sa.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>wa([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,ga(e,r))}function Ea(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):ga(i,s),ga(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())ba(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=/* @__PURE__ */ new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])Ta(e)}}let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}ga(i,n.defId?n.schema:n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,g(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:Oa(t,`input`,e.processors),output:Oa(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function H(e,t){let n=t??{seen:/* @__PURE__ */ new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return H(r.element,n);if(r.type===`set`)return H(r.valueType,n);if(r.type===`lazy`)return H(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`||r.type===`catch`)return H(r.innerType,n);if(r.type===`intersection`)return H(r.left,n)||H(r.right,n);if(r.type===`record`||r.type===`map`)return H(r.keyType,n)||H(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:H(r.in,n)||H(r.out,n);if(r.type===`object`){for(let e in r.shape)if(H(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(H(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(H(e,n))return!0;return!!(r.rest&&H(r.rest,n))}return!1}const Da=(e,t={})=>n=>{let r=_a({...n,processors:t});return V(e,r),ya(r,e),Ea(r,e)},Oa=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=_a({...i??{},target:a,io:t,processors:n});return V(e,o),ya(o,e),Ea(o,e)},U=(e,t,n)=>{(e[t]===void 0||n>e[t])&&(e[t]=n)},W=(e,t,n)=>{(e[t]===void 0||n<e[t])&&(e[t]=n)},ka=(e,t)=>{U(e,`minimum`,t),W(e,`maximum`,t)},Aa=(e,t)=>{e.multipleOf??=[],e.multipleOf.includes(t)||e.multipleOf.push(t)},ja=(e,t)=>{e.patterns??=/* @__PURE__ */ new Set,e.patterns.add(t)},Ma=(e,t)=>{e.mime=e.mime?e.mime.filter(e=>t.includes(e)):[...t]},Na=(e,t)=>{e.format=t,t.includes(`int`)&&(e.isInt=!0)},Pa=(e,t)=>U(e,`minimum`,t.minimum),Fa=(e,t)=>W(e,`maximum`,t.maximum),Ia=e=>(t,n)=>{Na(t,n.format);let[r,i]=e[n.format];U(t,`minimum`,r),W(t,`maximum`,i)},La={greater_than:(e,t)=>U(e,t.inclusive?`minimum`:`exclusiveMinimum`,t.value),less_than:(e,t)=>W(e,t.inclusive?`maximum`:`exclusiveMaximum`,t.value),multiple_of:(e,t)=>Aa(e,t.value),number_format:Ia(ge),bigint_format:Ia(_e),min_length:Pa,max_length:Fa,length_equals:(e,t)=>ka(e,t.length),min_size:Pa,max_size:Fa,size_equals:(e,t)=>ka(e,t.size),string_format:(e,t)=>{Na(e,t.format),t.pattern&&ja(e,t.pattern),(t.format===`base64`||t.format===`base64url`)&&(e.contentEncoding=t.format),(t.local||t.precision===-1)&&(e.laxFormat=!0)},mime_type:(e,t)=>Ma(e,t.mime)};function G(e){let t={},n=e._zod.def,r=e._zod.traits.has(`$ZodCheck`)?[e,...n.checks??[]]:n.checks??[];for(let e of r)La[e._zod.def.check]?.(t,e._zod.def);let i=e._zod.bag;i.minimum!==void 0&&U(t,`minimum`,i.minimum),i.exclusiveMinimum!==void 0&&U(t,`exclusiveMinimum`,i.exclusiveMinimum),i.maximum!==void 0&&W(t,`maximum`,i.maximum),i.exclusiveMaximum!==void 0&&W(t,`exclusiveMaximum`,i.exclusiveMaximum),i.multipleOf!==void 0&&Aa(t,i.multipleOf),i.format!==void 0&&(t.format??=i.format,i.format.includes(`int`)&&(t.isInt=!0)),i.mime&&Ma(t,i.mime);for(let e of i.patterns??[])ja(t,e);return t}const Ra={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},za=/* @__PURE__ */ new Map([[er,Rt],[nr,zt]]),Ba=e=>za.get(e)??e,Va=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=G(e);if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Ra[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c].map(Ba);e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},Ha=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,multipleOf:s,exclusiveMaximum:c,exclusiveMinimum:l,isInt:u}=G(e);i.type=u?`integer`:`number`;let d=typeof l==`number`&&l>=(a??-1/0),f=typeof c==`number`&&c<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;if(d?p?(i.minimum=l,i.exclusiveMinimum=!0):i.exclusiveMinimum=l:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=c,i.exclusiveMaximum=!0):i.exclusiveMaximum=c:typeof o==`number`&&(i.maximum=o),s){let n=/* @__PURE__ */ new Set;for(let a of s)Number.isFinite(a)&&a!==0?n.add(Math.abs(a)):B(e,t,i,r,`A multipleOf divisor of ${a} cannot be represented in JSON Schema`);let[a,...o]=n;a!==void 0&&(i.multipleOf=a),o.length&&(i.allOf=[...i.allOf??[],...o.map(e=>({multipleOf:e}))])}},Ua=(e,t,n,r)=>{n.type=`boolean`},Wa=(e,t,n,r)=>{n.not={}},Ga=(e,t,n,r)=>{let i=e._zod.def,a=d(i.entries);a.length===0?n.not={}:(a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a)},Ka=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(B(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(B(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},qa=(e,t,n,r)=>{B(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},Ja=(e,t,n,r)=>{B(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},Ya=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=G(e);typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=V(a.element,t,{...r,path:[...r.path,`items`]})};function Xa(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?Xa(t.out):t.type===`catch`?Xa(t.innerType):e._zod.optin}const Za=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&B(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)g(i.properties,e,V(o[e],t,{...r,path:[...r.path,`properties`,e]}));let s=[];for(let e of Object.keys(o)){let n=a.shape[e];(t.io===`input`?Xa(n)===void 0:n._zod.optout===void 0)&&s.push(e)}s.length>0&&(i.required=s),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=V(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Qa=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>V(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},$a=(e,t,n,r)=>{let i=e._zod.def,a=V(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=V(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)};function eo(e,t,n){if(t.$ref){if(n.has(t))return t;n.add(t);let r=e.get(t)?.def;if(!r)return t;let i=eo(e,r,n);return i===r?t:i}for(let r of[`anyOf`,`oneOf`]){let i=t[r];if(!Array.isArray(i))continue;let a=i.map(t=>eo(e,t,n));a.some((e,t)=>e!==i[t])&&(t={...t,[r]:a})}let r=Array.isArray(t.type)?t.type:[t.type],i=!r.includes(`string`)&&r.some(e=>e===`number`||e===`integer`),a=t.enum??(t.const===void 0?void 0:[t.const]);if(!i&&!a?.some(e=>typeof e==`number`))return t;let{minimum:o,maximum:s,exclusiveMinimum:c,exclusiveMaximum:l,multipleOf:u,format:d,id:f,...p}=t;return p.enum?p.enum=p.enum.map(e=>typeof e==`number`?String(e):e):typeof p.const==`number`&&(p.const=String(p.const)),i&&(p.type=`string`,a||(p.pattern=(r.includes(`number`)?Xt:Yt).source)),p}const to=/* @__PURE__ */ new WeakMap;function no(e){let t=/* @__PURE__ */ new Map;for(let n of e.seen.values())n.def&&!t.has(n.schema)&&t.set(n.schema,n);let n=/* @__PURE__ */ new Map;for(let r of to.get(e)??[]){let i=e.seen.get(r),a=(i?.def??i?.schema)?.propertyNames;if(!a||a===!0||n.has(a))continue;let o=eo(t,a,/* @__PURE__ */ new Set);o!==a&&n.set(a,o)}if(n.size)for(let t of e.seen.values())for(let e of[t.schema,t.def]){let t=e&&n.get(e.propertyNames);t&&(e.propertyNames=t)}}const ro=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=G(o).patterns;if(a.mode===`loose`&&s&&s.size>0){let e=V(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)g(i.patternProperties,Ba(t).source,e)}else{if(t.target===`draft-07`||t.target===`draft-2020-12`){i.propertyNames=V(a.keyType,t,{...r,path:[...r.path,`propertyNames`]});let n=to.get(t);n||(n=[],to.set(t,n),t.deferred.push(()=>no(t))),n.push(e)}i.additionalProperties=V(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]})}let c=o._zod.values,l=t.io===`input`&&Xa(a.valueType)!==void 0;if(c&&!a.partial&&!l){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e.map(String))}},io=(e,t,n,r)=>{let i=e._zod.def,a=V(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},ao=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},oo=Symbol();function so(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(B(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),oo):JSON.parse(o)}const co=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=so(i.defaultValue,e,t,n,r);o!==oo&&(n.default=o)},lo=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=so(i.defaultValue,e,t,n,r);o!==oo&&(n._prefault=o)},uo=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{B(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},fo=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;V(o,t,r);let s=t.seen.get(e);s.ref=o},po=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},mo=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ho=/* @__PURE__ */ new WeakSet([Object.prototype,Error.prototype]);function go(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}const K=/*@__PURE__*/ M(`ZodError`,(e,t)=>{$e.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);ho.has(n)||(ho.add(n),go(n,`format`,e=>t=>nt(e,t)),go(n,`flatten`,e=>t=>tt(e,t)),go(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,p,2)}),go(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,p,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),_o=/* @__PURE__ */ it(K),vo=/* @__PURE__ */ at(K),yo=/* @__PURE__ */ ot(K),bo=/* @__PURE__ */ ct(K),xo=/* @__PURE__ */ mt(K),So=/* @__PURE__ */ ht(K),Co=/* @__PURE__ */ gt(K),wo=/* @__PURE__ */ _t(K),To=/* @__PURE__ */ vt(K),Eo=/* @__PURE__ */ yt(K),Do=/* @__PURE__ */ bt(K),Oo=/* @__PURE__ */ xt(K);function ko(){P.localeError||F(ui())}function Ao(){P.memoizer||F({memoizer:si()})}const q=/*@__PURE__*/ M(`ZodType`,(e,t)=>(ko(),L.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(y(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return S(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(Hs(e,t))},superRefine(e,t){return this.check(Us(e,t))},overwrite(e){return this.check(/* @__PURE__ */ z(e))},optional(){return ws(this)},exactOptional(){return Es(this)},nullable(){return Os(this)},nullish(){return ws(Os(this))},nonoptional(e){return Ps(this,e)},array(){return Z(this)},or(e){return ps([this,e])},and(e){return hs(this,e)},transform(e){return Rs(this,Ss(e))},default(e){return As(this,e)},prefault(e){return Ms(this,e)},catch(e){return Is(this,e)},pipe(e){return Rs(this,e)},readonly(){return Bs(this)},describe(e){let t=this.clone();return mi.add(t,{description:e}),t},meta(...e){if(e.length===0)return mi.get(this);let t=this.clone();return mi.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Fe(this,`~standard`,{...Sn(this),jsonSchema:{input:Oa(this,`input`),output:Oa(this,`output`)}})},set"~standard"(e){k(this,`~standard`,e)},parse:function e(t,n){return _o(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await vo(this,t,n,{callee:e})},safeParse(e,t){return yo(this,e,t)},async safeParseAsync(e,t){return bo(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){k(this,`spa`,e)},validate(e,t){return dt(this,e,t)},validateAsync(e,t){return pt(this,e,t)},encode:function e(t,n){return xo(this,t,n,{callee:e})},decode:function e(t,n){return So(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await Co(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await wo(this,t,n,{callee:e})},safeEncode(e,t){return To(this,e,t)},safeDecode(e,t){return Eo(this,e,t)},async safeEncodeAsync(e,t){return Do(this,e,t)},async safeDecodeAsync(e,t){return Oo(this,e,t)},toJSONSchema(e){return Da(this,{})(e)},get description(){return mi.get(this)?.description},get _def(){return this._zod.def}}),jo=/*@__PURE__*/ M(`_ZodString`,(e,t)=>{Cn.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Va(e,t,n,r)},/*@__PURE__*/ Ie({format:e=>G(e).format??null,minLength:e=>G(e).minimum??null,maxLength:e=>G(e).maximum??null},{regex(...e){return this.check(/* @__PURE__ */ ta(...e))},includes(...e){return this.check(/* @__PURE__ */ ia(...e))},startsWith(...e){return this.check(/* @__PURE__ */ aa(...e))},endsWith(...e){return this.check(/* @__PURE__ */ oa(...e))},min(...e){return this.check(/* @__PURE__ */ $i(...e))},max(...e){return this.check(/* @__PURE__ */ Qi(...e))},length(...e){return this.check(/* @__PURE__ */ ea(...e))},nonempty(...e){return this.check(/* @__PURE__ */ $i(1,...e))},lowercase(e){return this.check(/* @__PURE__ */ na(e))},uppercase(e){return this.check(/* @__PURE__ */ ra(e))},trim(){return this.check(/* @__PURE__ */ ca())},normalize(...e){return this.check(/* @__PURE__ */ sa(...e))},toLowerCase(){return this.check(/* @__PURE__ */ la())},toUpperCase(){return this.check(/* @__PURE__ */ ua())},slugify(){return this.check(/* @__PURE__ */ da())}})),Mo=/*@__PURE__*/ M(`ZodString`,(e,t)=>{Cn.init(e,t),jo.init(e,t)},{email(e){return this.check(/* @__PURE__ */ _i(Lo,e))},url(e){return this.check(/* @__PURE__ */ Ci(Bo,e))},jwt(e){return this.check(/* @__PURE__ */ Ri(ts,e))},emoji(e){return this.check(/* @__PURE__ */ wi(Vo,e))},guid(e){return this.check(/* @__PURE__ */ vi(Ro,e))},uuid(e){return this.check(/* @__PURE__ */ yi(zo,e))},uuidv4(e){return this.check(/* @__PURE__ */ bi(zo,e))},uuidv6(e){return this.check(/* @__PURE__ */ xi(zo,e))},uuidv7(e){return this.check(/* @__PURE__ */ Si(zo,e))},nanoid(e){return this.check(/* @__PURE__ */ Ti(Ho,e))},cuid(e){return this.check(/* @__PURE__ */ Ei(Uo,e))},cuid2(e){return this.check(/* @__PURE__ */ Di(Wo,e))},ulid(e){return this.check(/* @__PURE__ */ Oi(Go,e))},base64(e){return this.check(/* @__PURE__ */ Fi(Qo,e))},base64url(e){return this.check(/* @__PURE__ */ Ii($o,e))},xid(e){return this.check(/* @__PURE__ */ ki(Ko,e))},ksuid(e){return this.check(/* @__PURE__ */ Ai(qo,e))},ipv4(e){return this.check(/* @__PURE__ */ ji(Jo,e))},ipv6(e){return this.check(/* @__PURE__ */ Mi(Yo,e))},cidrv4(e){return this.check(/* @__PURE__ */ Ni(Xo,e))},cidrv6(e){return this.check(/* @__PURE__ */ Pi(Zo,e))},e164(e){return this.check(/* @__PURE__ */ Li(es,e))},datetime(e){return this.check(/* @__PURE__ */ zi(No,e))},date(e){return this.check(/* @__PURE__ */ Bi(Po,e))},time(e){return this.check(/* @__PURE__ */ Vi(Fo,e))},duration(e){return this.check(/* @__PURE__ */ Hi(Io,e))}});function J(e){return/* @__PURE__ */ gi(Mo,e)}const Y=/*@__PURE__*/ M(`ZodStringFormat`,(e,t)=>{R.init(e,t),jo.init(e,t)}),No=/*@__PURE__*/ M(`ZodISODateTime`,(e,t)=>{Hn.init(e,t),Y.init(e,t)}),Po=/*@__PURE__*/ M(`ZodISODate`,(e,t)=>{Un.init(e,t),Y.init(e,t)}),Fo=/*@__PURE__*/ M(`ZodISOTime`,(e,t)=>{Wn.init(e,t),Y.init(e,t)}),Io=/*@__PURE__*/ M(`ZodISODuration`,(e,t)=>{Gn.init(e,t),Y.init(e,t)}),Lo=/*@__PURE__*/ M(`ZodEmail`,(e,t)=>{En.init(e,t),Y.init(e,t)}),Ro=/*@__PURE__*/ M(`ZodGUID`,(e,t)=>{wn.init(e,t),Y.init(e,t)}),zo=/*@__PURE__*/ M(`ZodUUID`,(e,t)=>{Tn.init(e,t),Y.init(e,t)}),Bo=/*@__PURE__*/ M(`ZodURL`,(e,t)=>{Pn.init(e,t),Y.init(e,t)}),Vo=/*@__PURE__*/ M(`ZodEmoji`,(e,t)=>{Fn.init(e,t),Y.init(e,t)}),Ho=/*@__PURE__*/ M(`ZodNanoID`,(e,t)=>{In.init(e,t),Y.init(e,t)}),Uo=/*@__PURE__*/ M(`ZodCUID`,(e,t)=>{Ln.init(e,t),Y.init(e,t)}),Wo=/*@__PURE__*/ M(`ZodCUID2`,(e,t)=>{Rn.init(e,t),Y.init(e,t)}),Go=/*@__PURE__*/ M(`ZodULID`,(e,t)=>{zn.init(e,t),Y.init(e,t)}),Ko=/*@__PURE__*/ M(`ZodXID`,(e,t)=>{Bn.init(e,t),Y.init(e,t)}),qo=/*@__PURE__*/ M(`ZodKSUID`,(e,t)=>{Vn.init(e,t),Y.init(e,t)}),Jo=/*@__PURE__*/ M(`ZodIPv4`,(e,t)=>{Kn.init(e,t),Y.init(e,t)}),Yo=/*@__PURE__*/ M(`ZodIPv6`,(e,t)=>{Yn.init(e,t),Y.init(e,t)}),Xo=/*@__PURE__*/ M(`ZodCIDRv4`,(e,t)=>{Xn.init(e,t),Y.init(e,t)}),Zo=/*@__PURE__*/ M(`ZodCIDRv6`,(e,t)=>{Qn.init(e,t),Y.init(e,t)}),Qo=/*@__PURE__*/ M(`ZodBase64`,(e,t)=>{tr.init(e,t),Y.init(e,t)}),$o=/*@__PURE__*/ M(`ZodBase64URL`,(e,t)=>{ir.init(e,t),Y.init(e,t)}),es=/*@__PURE__*/ M(`ZodE164`,(e,t)=>{ar.init(e,t),Y.init(e,t)}),ts=/*@__PURE__*/ M(`ZodJWT`,(e,t)=>{sr.init(e,t),Y.init(e,t)}),ns=/*@__PURE__*/ M(`ZodNumber`,(e,t)=>{cr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ha(e,t,n,r),e.isFinite=!0},/*@__PURE__*/ Ie({minValue:e=>{let{minimum:t,exclusiveMinimum:n}=G(e);return Math.max(t??-1/0,n??-1/0)},maxValue:e=>{let{maximum:t,exclusiveMaximum:n}=G(e);return Math.min(t??1/0,n??1/0)},isInt:e=>{let{isInt:t,multipleOf:n}=G(e);return!!t||!!n?.some(Number.isSafeInteger)},format:e=>G(e).format??null},{gt(e,t){return this.check(/* @__PURE__ */ Yi(e,t))},gte(e,t){return this.check(/* @__PURE__ */ Xi(e,t))},min(e,t){return this.check(/* @__PURE__ */ Xi(e,t))},lt(e,t){return this.check(/* @__PURE__ */ qi(e,t))},lte(e,t){return this.check(/* @__PURE__ */ Ji(e,t))},max(e,t){return this.check(/* @__PURE__ */ Ji(e,t))},int(e){return this.check(X(e))},safe(e){return this.check(X(e))},positive(e){return this.check(/* @__PURE__ */ Yi(0,e))},nonnegative(e){return this.check(/* @__PURE__ */ Xi(0,e))},negative(e){return this.check(/* @__PURE__ */ qi(0,e))},nonpositive(e){return this.check(/* @__PURE__ */ Ji(0,e))},multipleOf(e,t){return this.check(/* @__PURE__ */ Zi(e,t))},step(e,t){return this.check(/* @__PURE__ */ Zi(e,t))},finite(){return this}})),rs=/*@__PURE__*/ M(`ZodNumberFormat`,(e,t)=>{lr.init(e,t),ns.init(e,t)});function X(e){return/* @__PURE__ */ Ui(rs,e)}const is=/*@__PURE__*/ M(`ZodBoolean`,(e,t)=>{ur.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ua(e,t,n,r)});function as(e){return/* @__PURE__ */ Wi(is,e)}const os=/*@__PURE__*/ M(`ZodUnknown`,(e,t)=>{dr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function ss(){return/* @__PURE__ */ Gi(os)}const cs=/*@__PURE__*/ M(`ZodNever`,(e,t)=>{fr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Wa(e,t,n,r)});function ls(e){return/* @__PURE__ */ Ki(cs,e)}const us=/*@__PURE__*/ M(`ZodArray`,(e,t)=>{Ao(),gr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ya(e,t,n,r),e.element=t.element},{min(e,t){return this.check(/* @__PURE__ */ $i(e,t))},nonempty(e){return this.check(/* @__PURE__ */ $i(1,e))},max(e,t){return this.check(/* @__PURE__ */ Qi(e,t))},length(e,t){return this.check(/* @__PURE__ */ ea(e,t))},unwrap(){return this.element}});function Z(e,t){return/* @__PURE__ */ fa(us,e,t)}const ds=/*@__PURE__*/ M(`ZodObject`,(e,t)=>{Ao(),Sr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Za(e,t,n,r),Ve(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return $(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(y(this._zod.def,{catchall:e}))},passthrough(){return this.clone(y(this._zod.def,{catchall:ss()}))},loose(){return this.clone(y(this._zod.def,{catchall:ss()}))},strict(){return this.clone(y(this._zod.def,{catchall:ls()}))},strip(){return this.clone(y(this._zod.def,{catchall:void 0}))},extend(e){return xe(this,e)},safeExtend(e){return Ce(this,e)},merge(e){return we(this,e)},pick(e){return ve(this,e)},omit(e){return be(this,e)},partial(...e){return Te(Cs,this,e[0])},exactPartial(...e){return Te(Ts,this,e[0],`exactPartial`)},required(...e){return Ee(Ns,this,e[0])}});function Q(e,t){return new ds({type:`object`,shape:e,catchall:ls(),...C(t)})}const fs=/*@__PURE__*/ M(`ZodUnion`,(e,t)=>{wr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qa(e,t,n,r),e.options=t.options});function ps(e,t){return new fs({type:`union`,options:e,...C(t)})}const ms=/*@__PURE__*/ M(`ZodIntersection`,(e,t)=>{Tr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$a(e,t,n,r)});function hs(e,t){return new ms({type:`intersection`,left:e,right:t})}const gs=/*@__PURE__*/ M(`ZodRecord`,(e,t)=>{Ao(),Or.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ro(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function _s(e,t,n){return!t||!t._zod?new gs({type:`record`,keyType:J(),valueType:e,...C(t)}):new gs({type:`record`,keyType:e,valueType:t,...C(n)})}const vs=/*@__PURE__*/ M(`ZodEnum`,(e,t)=>{kr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ga(e,t,n,r),e.enum=t.entries,e.options=[...e._zod.values];let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new vs({...t,checks:[],...C(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new vs({...t,checks:[],...C(r),entries:i})}});function $(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new vs({type:`enum`,entries:n,...C(t)})}const ys=/*@__PURE__*/ M(`ZodLiteral`,(e,t)=>{Ar.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ka(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function bs(e,t){return new ys({type:`literal`,values:Array.isArray(e)?e:[e],...C(t)})}const xs=/*@__PURE__*/ M(`ZodTransform`,(e,t)=>{Ao(),jr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ja(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new qe(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(O(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(O(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function Ss(e){return new xs({type:`transform`,transform:e})}const Cs=/*@__PURE__*/ M(`ZodOptional`,(e,t)=>{Nr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function ws(e){return new Cs({type:`optional`,innerType:e})}const Ts=/*@__PURE__*/ M(`ZodExactOptional`,(e,t)=>{Pr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Es(e){return new Ts({type:`optional`,innerType:e})}const Ds=/*@__PURE__*/ M(`ZodNullable`,(e,t)=>{Fr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>io(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Os(e){return new Ds({type:`nullable`,innerType:e})}const ks=/*@__PURE__*/ M(`ZodDefault`,(e,t)=>{Ir.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>co(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function As(e,t){return new ks({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():fe(t)}})}const js=/*@__PURE__*/ M(`ZodPrefault`,(e,t)=>{Rr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>lo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ms(e,t){return new js({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():fe(t)}})}const Ns=/*@__PURE__*/ M(`ZodNonOptional`,(e,t)=>{zr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ao(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ps(e,t){return new Ns({type:`nonoptional`,innerType:e,...C(t)})}const Fs=/*@__PURE__*/ M(`ZodCatch`,(e,t)=>{Hr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>uo(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Is(e,t){return new Fs({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:He(t)})}const Ls=/*@__PURE__*/ M(`ZodPipe`,(e,t)=>{Ur.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fo(e,t,n,r),e.in=t.in,e.out=t.out});function Rs(e,t){return new Ls({type:`pipe`,in:e,out:t})}const zs=/*@__PURE__*/ M(`ZodReadonly`,(e,t)=>{Gr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>po(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Bs(e){return new zs({type:`readonly`,innerType:e})}const Vs=/*@__PURE__*/ M(`ZodCustom`,(e,t)=>{qr.init(e,t),q.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qa(e,t,n,r)});function Hs(e,t={}){return/* @__PURE__ */ pa(Vs,e,t)}function Us(e,t){return/* @__PURE__ */ ma(e,t)}const Ws=/* @__PURE__ */ RegExp(`^[0-9a-f]{6}$`),Gs=bs(1);J().regex(Ws).brand(),J().regex(Ws).brand(),J().regex(/* @__PURE__ */ RegExp(`^[0-9a-f]{6}(:[0-9a-f]{6})?$`)).brand(),J().min(1).max(40).regex(/^[a-z0-9]+(-[a-z0-9]+)*$/).brand();const Ks=J().regex(/^#[0-9a-fA-F]{6}$/,`Expected a #rrggbb colour`),qs=J().min(1).max(40).refine(e=>e.trim().length>0,`Must not be blank`).refine(e=>!a(e),`Must not contain control characters`),Js=J().regex(/^[A-Za-z][A-Za-z0-9_-]{0,39}$/,`Expected a letter, then letters, digits, - or _`).refine(e=>e!==t,`"${t}" is reserved for main sessions`);ps([bs(t),Js]),J().min(1).max(60).refine(e=>!a(e),`Must not contain control characters`).refine(e=>!s(e),`Must not contain links`);const Ys=$(e);$(o),$(n),$(i),X().nonnegative();const Xs=[`security`,`vulnerability`,`CVE`,`exploit`,`token`,`secret`,`password`,`credential`],Zs=Q({path:J().min(1).max(1024).describe(`An absolute folder, or one starting with ~. The longest matching path wins.`),public:as().describe(`Whether sessions here show the project name and goals to visitors.`),name:qs.optional().describe(`The project name in office.config.json. Required when public is true.`)}).refine(e=>!e.public||e.name!==void 0,{message:`A public project needs the name it has in office.config.json`,path:[`name`]}),Qs=Q({fromTaskList:as().default(!0).describe(`Use the task Claude has in progress.`),fromSessionTitle:as().default(!0).describe(`Use the session title when no task is in progress.`),maxLength:X().min(10).max(60).default(60).describe(`Longest goal sent, in characters.`),blockWords:Z(J().min(1).max(40)).max(200).default([...Xs]).describe(`A goal containing any of these words is not sent.`),privatePrefix:J().min(1).max(20).default(`[private]`).describe(`A task title starting with this is never sent.`)}),$s=Q({$schema:J().optional().describe(`The JSON Schema, for editor autocomplete.`),v:Gs.describe(`The config version. Always 1.`),endpoint:J().refine(l,`Expected an https URL (http only for localhost)`).describe(`The relay ingest URL: https, or http for localhost only.`),projects:Z(Zs).max(500).default([]).describe(`Folders and whether they are public. Any other folder is private.`),publicAgentTypes:Z(Js).max(50).default([]).describe(`Subagent types sent by name. Others are sent as a generic helper.`),goals:Qs.default({fromTaskList:!0,fromSessionTitle:!0,maxLength:60,blockWords:[...Xs],privatePrefix:`[private]`}).describe(`Which goals are sent for public projects.`),mcpCategories:_s(J().min(1).max(100),Ys).default({}).describe(`MCP server name to work category. Server names are only read locally.`),timestampRoundingSec:X().min(1).max(60).default(5).describe(`Timestamps are rounded to this many seconds, so timing reveals less.`),paused:as().default(!1).describe(`Send nothing. Set by hivefloor pause and resume.`)});function ec(e){try{return new Intl.DateTimeFormat(`en`,{timeZone:e}),!0}catch{return!1}}const tc=Q({name:qs.describe(`The room name. Must match the project name in the machine config exactly.`),color:Ks.optional().describe(`The room colour as #rrggbb. Without one, a colour is picked from a fixed palette.`),group:J().regex(/^[a-z0-9]+(-[a-z0-9]+)*$/,`Expected a lowercase slug such as "web"`).max(40).optional().describe(`A lowercase slug such as "web". Stored, but not used yet.`)}),nc=Q({name:qs.default(`Private projects`).describe(`The room name.`),color:Ks.default(`#8d94ab`).describe(`The room colour as #rrggbb.`),visible:as().default(!0).describe(`Set to false to hide the private room and its robots from visitors entirely.`)}),rc=Q({idleAfterSec:X().min(30).max(3600).default(180).describe(`Seconds without an event before a robot goes for coffee.`),awayAfterSec:X().min(60).max(86400).default(900).describe(`Seconds without an event before a robot leaves the building until its next event.`),leaveAfterSec:X().min(120).max(604800).default(3600).describe(`Seconds without an event before a robot is removed from the office.`)}).refine(e=>e.idleAfterSec<e.awayAfterSec,{message:`idleAfterSec must be less than awayAfterSec`,path:[`awayAfterSec`]}).refine(e=>e.awayAfterSec<e.leaveAfterSec,{message:`awayAfterSec must be less than leaveAfterSec`,path:[`leaveAfterSec`]}),ic=Q({roomsPerFloor:X().min(2).max(16).multipleOf(2).default(8).describe(`Rooms on a floor before a new floor starts. Must be even.`),desksPerRow:X().min(1).max(6).default(3).describe(`Desks in a row.`),maxRowsPerRoom:X().min(1).max(8).default(4).describe(`Desk rows a room can grow to.`),tableSeats:X().min(1).max(12).default(6).describe(`Seats for subagents at the team table.`),roomCloseAfterSec:X().min(60).max(86400).default(1800).describe(`Seconds a room stays empty before it closes and frees its place.`),rowRemoveAfterSec:X().min(0).max(86400).default(600).describe(`Seconds an empty desk row stays before it is removed.`),maxRenderedRobots:X().min(1).max(500).default(40).describe(`Robots drawn at once. The rest show as a "+N" sign; the list view shows everyone.`),maxVisibleRooms:X().min(2).max(64).default(12).describe(`Rooms drawn at once. The quietest fold into an "Other projects" room.`)}),ac=ic.parse({}),oc=Q({$schema:J().optional().describe(`The JSON Schema, for editor autocomplete.`),v:Gs.describe(`The config version. Always 1.`),title:qs.default(`Hivefloor`).describe(`The office name, shown in the header.`),owner:qs.describe(`Your name, shown under the title.`),timezone:J().refine(ec,`Expected an IANA time zone such as "Africa/Douala"`).describe(`Your IANA time zone, such as "Africa/Douala". Used for the daily reset time.`),publicProjects:Z(tc).max(100).default([]).describe(`Projects shown by name. Everything else goes to the private room.`),privateRoom:nc.default({name:`Private projects`,color:`#8d94ab`,visible:!0}).describe(`The shared room for every private session.`),agentTypes:Z(Js).max(50).default([c]).describe(`Subagent types the relay accepts by name.`),presence:rc.default({idleAfterSec:180,awayAfterSec:900,leaveAfterSec:3600}).describe(`When quiet robots go for coffee, step out and leave.`),layout:ic.default(ac).describe(`Limits of the elastic office.`),viewerCap:X().min(1).max(1e4).default(500).describe(`Live visitors at once. Others get a view that updates every few minutes.`)}).superRefine((e,t)=>{let n=/* @__PURE__ */ new Map,i=/* @__PURE__ */ new Map;e.publicProjects.forEach((e,a)=>{let o=[`publicProjects`,a,`name`],s=e.name.trim().toLowerCase(),c=r(e.name);n.has(s)?t.addIssue({code:`custom`,path:o,message:`Duplicate project name "${e.name}"`}):i.has(c)&&t.addIssue({code:`custom`,path:o,message:`"${e.name}" has the same room id as another project`}),c.length===0&&t.addIssue({code:`custom`,path:o,message:`Name needs at least one letter or digit`}),u.includes(c)&&t.addIssue({code:`custom`,path:o,message:`"${c}" is a reserved room id`}),n.set(s,a),i.set(c,a)}),new Set(e.agentTypes).size!==e.agentTypes.length&&t.addIssue({code:`custom`,path:[`agentTypes`],message:`Agent types must be unique`})}),sc=Symbol(`not JSON`);function cc(e){try{return JSON.parse(e)}catch{return sc}}function lc(e){return e.map(e=>`${e.path.length===0?`(file)`:e.path.map(String).join(`.`)}: ${e.message}`)}function uc(e){let t=cc(e);if(t===sc)return{ok:!1,problems:[`(file): not valid JSON`]};let n=$s.safeParse(t);return n.success?{ok:!0,config:n.data}:{ok:!1,problems:lc(n.error.issues)}}function dc(e){let t=oc.safeParse({v:1,owner:`Owner`,timezone:`UTC`,publicProjects:[e]});return t.success?[]:lc(t.error.issues.map(e=>({...e,path:e.path.slice(2)})))}function fc(e){let t=uc(e);return t.ok?t.config:void 0}function pc(e){let t=cc(e);if(t===sc)return{ok:!1,problems:[`(file): not valid JSON`]};let n=oc.safeParse(t);return n.success?{ok:!0,config:n.data}:{ok:!1,problems:lc(n.error.issues)}}export{uc as checkMachineConfig,pc as checkOfficeConfig,dc as publicProjectProblems,fc as validateMachineConfig};
package/src/index.d.ts DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * Hivefloor CLI: connects Claude Code to a Hivefloor office.
3
- *
4
- * The commands (`init`, `hook`, `doctor`, ...) arrive in milestones M2 and M3.
5
- *
6
- * @packageDocumentation
7
- */
8
- export { CLI_NAME, notice } from './package-info.js';
package/src/index.js DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * Hivefloor CLI: connects Claude Code to a Hivefloor office.
3
- *
4
- * The commands (`init`, `hook`, `doctor`, ...) arrive in milestones M2 and M3.
5
- *
6
- * @packageDocumentation
7
- */
8
- export { CLI_NAME, notice } from './package-info.js';
9
- //# sourceMappingURL=index.js.map
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/cli/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,15 +0,0 @@
1
- /**
2
- * The name the CLI is published and invoked under (`npx hivefloor`).
3
- */
4
- export declare const CLI_NAME = "hivefloor";
5
- /**
6
- * Builds the placeholder message printed while the CLI has no commands yet.
7
- *
8
- * @returns A one-line notice pointing to the project.
9
- *
10
- * @example
11
- * ```ts
12
- * notice(); // "hivefloor: no commands yet, see https://github.com/valerymelou/hivefloor"
13
- * ```
14
- */
15
- export declare function notice(): string;
@@ -1,18 +0,0 @@
1
- /**
2
- * The name the CLI is published and invoked under (`npx hivefloor`).
3
- */
4
- export const CLI_NAME = 'hivefloor';
5
- /**
6
- * Builds the placeholder message printed while the CLI has no commands yet.
7
- *
8
- * @returns A one-line notice pointing to the project.
9
- *
10
- * @example
11
- * ```ts
12
- * notice(); // "hivefloor: no commands yet, see https://github.com/valerymelou/hivefloor"
13
- * ```
14
- */
15
- export function notice() {
16
- return `${CLI_NAME}: no commands yet, see https://github.com/valerymelou/hivefloor`;
17
- }
18
- //# sourceMappingURL=package-info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-info.js","sourceRoot":"","sources":["../../../../packages/cli/src/package-info.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC;AAEpC;;;;;;;;;GASG;AACH,MAAM,UAAU,MAAM;IACpB,OAAO,GAAG,QAAQ,iEAAiE,CAAC;AACtF,CAAC"}