@apptoolkit/harness 0.0.0-stage → 1.0.0
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 +57 -2
- package/dist/apptoolkit-harness-1.0.0.tgz +0 -0
- package/dist/bun/apptoolkit-harness-1.0.0.tgz +0 -0
- package/dist/bun/native/LICENSE +21 -0
- package/dist/bun/native/README.md +33 -0
- package/dist/bun/native/harness +4 -0
- package/dist/bun/native/payload/HARNESS.md +21 -0
- package/dist/bun/native/payload/author-style/README.md +56 -0
- package/dist/bun/native/payload/author-style/biome-core.json +57 -0
- package/dist/bun/native/payload/author-style/biome-react.json +9 -0
- package/dist/bun/native/payload/author-style/biome-sql.json +9 -0
- package/dist/bun/native/payload/author-style/bun.lock +37 -0
- package/dist/bun/native/payload/author-style/check.llm.md +17 -0
- package/dist/bun/native/payload/author-style/check.test.llm.md +17 -0
- package/dist/bun/native/payload/author-style/check.test.ts +238 -0
- package/dist/bun/native/payload/author-style/check.ts +181 -0
- package/dist/bun/native/payload/author-style/member-spacing.test.ts +172 -0
- package/dist/bun/native/payload/author-style/member-spacing.ts +106 -0
- package/dist/bun/native/payload/author-style/package.json +18 -0
- package/dist/bun/native/payload/author-style/plugins/class-member-order.grit +133 -0
- package/dist/bun/native/payload/author-style/plugins/event-handler-names.grit +110 -0
- package/dist/bun/native/payload/author-style/plugins/explicit-arrow-body.grit +15 -0
- package/dist/bun/native/payload/author-style/plugins/explicit-source-constructs.grit +10 -0
- package/dist/bun/native/payload/author-style/plugins/react-arrow-body.grit +85 -0
- package/dist/bun/native/payload/author-style/plugins/sql-style.grit +125 -0
- package/dist/bun/native/payload/author-style/react-module.llm.md +17 -0
- package/dist/bun/native/payload/author-style/react-module.test.ts +150 -0
- package/dist/bun/native/payload/author-style/react-module.ts +255 -0
- package/dist/bun/native/payload/author-style/source-policy.llm.md +17 -0
- package/dist/bun/native/payload/author-style/source-policy.test.ts +70 -0
- package/dist/bun/native/payload/author-style/source-policy.ts +215 -0
- package/dist/bun/native/payload/author-style/spacing.llm.md +17 -0
- package/dist/bun/native/payload/author-style/spacing.test.ts +174 -0
- package/dist/bun/native/payload/author-style/spacing.ts +211 -0
- package/dist/bun/native/payload/harness/POLICY.md +33 -0
- package/dist/bun/native/payload/harness/PROJECT.md +26 -0
- package/dist/bun/native/payload/harness/REVIEW.md +17 -0
- package/dist/bun/native/payload/harness/TEMPLATES.md +20 -0
- package/dist/bun/native/payload/harness/WORKFLOWS.md +65 -0
- package/dist/bun/native/payload/harness/runtime/ZOD-LICENSE +21 -0
- package/dist/bun/native/payload/harness/runtime/harness.mjs +104 -0
- package/dist/bun/native/payload/harness/services/README.md +26 -0
- package/dist/bun/native/payload/harness/services/penpot.json +7 -0
- package/dist/bun/native/payload/harness/services/plane.json +9 -0
- package/dist/bun/native/payload/harness/workflows/W01.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W02.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W03.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W04.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W05.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W06.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W07.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W08.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W09.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W10.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W11.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W12.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W13.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W14.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W15.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W16.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W17.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W18.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W19.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W20.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W21.md +15 -0
- package/dist/bun/native/payload/harness/workflows/W22.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W23.md +21 -0
- package/dist/bun/native/payload/harness/workflows/W24.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W25.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W26.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W27.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W28.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W29.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W30.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W31.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W32.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W33.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W34.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W35.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W36.md +13 -0
- package/dist/bun/native/payload/harness/workflows/W37.md +13 -0
- package/dist/bun/npm/LICENSE +21 -0
- package/dist/bun/npm/README.md +33 -0
- package/dist/bun/npm/harness.js +104 -0
- package/dist/bun/npm/package.json +23 -0
- package/dist/bun/npm/payload/HARNESS.md +21 -0
- package/dist/bun/npm/payload/author-style/README.md +56 -0
- package/dist/bun/npm/payload/author-style/biome-core.json +57 -0
- package/dist/bun/npm/payload/author-style/biome-react.json +9 -0
- package/dist/bun/npm/payload/author-style/biome-sql.json +9 -0
- package/dist/bun/npm/payload/author-style/bun.lock +37 -0
- package/dist/bun/npm/payload/author-style/check.llm.md +17 -0
- package/dist/bun/npm/payload/author-style/check.test.llm.md +17 -0
- package/dist/bun/npm/payload/author-style/check.test.ts +238 -0
- package/dist/bun/npm/payload/author-style/check.ts +181 -0
- package/dist/bun/npm/payload/author-style/member-spacing.test.ts +172 -0
- package/dist/bun/npm/payload/author-style/member-spacing.ts +106 -0
- package/dist/bun/npm/payload/author-style/package.json +18 -0
- package/dist/bun/npm/payload/author-style/plugins/class-member-order.grit +133 -0
- package/dist/bun/npm/payload/author-style/plugins/event-handler-names.grit +110 -0
- package/dist/bun/npm/payload/author-style/plugins/explicit-arrow-body.grit +15 -0
- package/dist/bun/npm/payload/author-style/plugins/explicit-source-constructs.grit +10 -0
- package/dist/bun/npm/payload/author-style/plugins/react-arrow-body.grit +85 -0
- package/dist/bun/npm/payload/author-style/plugins/sql-style.grit +125 -0
- package/dist/bun/npm/payload/author-style/react-module.llm.md +17 -0
- package/dist/bun/npm/payload/author-style/react-module.test.ts +150 -0
- package/dist/bun/npm/payload/author-style/react-module.ts +255 -0
- package/dist/bun/npm/payload/author-style/source-policy.llm.md +17 -0
- package/dist/bun/npm/payload/author-style/source-policy.test.ts +70 -0
- package/dist/bun/npm/payload/author-style/source-policy.ts +215 -0
- package/dist/bun/npm/payload/author-style/spacing.llm.md +17 -0
- package/dist/bun/npm/payload/author-style/spacing.test.ts +174 -0
- package/dist/bun/npm/payload/author-style/spacing.ts +211 -0
- package/dist/bun/npm/payload/harness/POLICY.md +33 -0
- package/dist/bun/npm/payload/harness/PROJECT.md +26 -0
- package/dist/bun/npm/payload/harness/REVIEW.md +17 -0
- package/dist/bun/npm/payload/harness/TEMPLATES.md +20 -0
- package/dist/bun/npm/payload/harness/WORKFLOWS.md +65 -0
- package/dist/bun/npm/payload/harness/runtime/ZOD-LICENSE +21 -0
- package/dist/bun/npm/payload/harness/runtime/harness.mjs +104 -0
- package/dist/bun/npm/payload/harness/services/README.md +26 -0
- package/dist/bun/npm/payload/harness/services/penpot.json +7 -0
- package/dist/bun/npm/payload/harness/services/plane.json +9 -0
- package/dist/bun/npm/payload/harness/workflows/W01.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W02.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W03.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W04.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W05.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W06.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W07.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W08.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W09.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W10.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W11.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W12.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W13.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W14.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W15.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W16.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W17.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W18.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W19.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W20.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W21.md +15 -0
- package/dist/bun/npm/payload/harness/workflows/W22.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W23.md +21 -0
- package/dist/bun/npm/payload/harness/workflows/W24.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W25.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W26.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W27.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W28.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W29.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W30.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W31.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W32.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W33.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W34.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W35.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W36.md +13 -0
- package/dist/bun/npm/payload/harness/workflows/W37.md +13 -0
- package/dist/npm/LICENSE +21 -0
- package/dist/npm/README.md +30 -0
- package/dist/npm/harness.js +104 -0
- package/dist/npm/package.json +25 -0
- package/dist/npm/payload/HARNESS.md +21 -0
- package/dist/npm/payload/author-style/README.md +56 -0
- package/dist/npm/payload/author-style/biome-core.json +57 -0
- package/dist/npm/payload/author-style/biome-react.json +9 -0
- package/dist/npm/payload/author-style/biome-sql.json +9 -0
- package/dist/npm/payload/author-style/check.llm.md +17 -0
- package/dist/npm/payload/author-style/check.test.llm.md +17 -0
- package/dist/npm/payload/author-style/check.test.ts +224 -0
- package/dist/npm/payload/author-style/check.ts +179 -0
- package/dist/npm/payload/author-style/member-spacing.test.ts +172 -0
- package/dist/npm/payload/author-style/member-spacing.ts +106 -0
- package/dist/npm/payload/author-style/package-lock.json +180 -0
- package/dist/npm/payload/author-style/package.json +17 -0
- package/dist/npm/payload/author-style/plugins/class-member-order.grit +133 -0
- package/dist/npm/payload/author-style/plugins/event-handler-names.grit +110 -0
- package/dist/npm/payload/author-style/plugins/explicit-arrow-body.grit +15 -0
- package/dist/npm/payload/author-style/plugins/explicit-source-constructs.grit +10 -0
- package/dist/npm/payload/author-style/plugins/react-arrow-body.grit +85 -0
- package/dist/npm/payload/author-style/plugins/sql-style.grit +125 -0
- package/dist/npm/payload/author-style/react-module.llm.md +17 -0
- package/dist/npm/payload/author-style/react-module.test.ts +150 -0
- package/dist/npm/payload/author-style/react-module.ts +255 -0
- package/dist/npm/payload/author-style/source-policy.llm.md +17 -0
- package/dist/npm/payload/author-style/source-policy.test.ts +70 -0
- package/dist/npm/payload/author-style/source-policy.ts +215 -0
- package/dist/npm/payload/author-style/spacing.llm.md +17 -0
- package/dist/npm/payload/author-style/spacing.test.ts +174 -0
- package/dist/npm/payload/author-style/spacing.ts +211 -0
- package/dist/npm/payload/harness/POLICY.md +33 -0
- package/dist/npm/payload/harness/PROJECT.md +26 -0
- package/dist/npm/payload/harness/REVIEW.md +17 -0
- package/dist/npm/payload/harness/TEMPLATES.md +20 -0
- package/dist/npm/payload/harness/WORKFLOWS.md +65 -0
- package/dist/npm/payload/harness/runtime/ZOD-LICENSE +21 -0
- package/dist/npm/payload/harness/runtime/harness.mjs +104 -0
- package/dist/npm/payload/harness/services/README.md +26 -0
- package/dist/npm/payload/harness/services/penpot.json +7 -0
- package/dist/npm/payload/harness/services/plane.json +9 -0
- package/dist/npm/payload/harness/workflows/W01.md +13 -0
- package/dist/npm/payload/harness/workflows/W02.md +13 -0
- package/dist/npm/payload/harness/workflows/W03.md +13 -0
- package/dist/npm/payload/harness/workflows/W04.md +13 -0
- package/dist/npm/payload/harness/workflows/W05.md +13 -0
- package/dist/npm/payload/harness/workflows/W06.md +13 -0
- package/dist/npm/payload/harness/workflows/W07.md +13 -0
- package/dist/npm/payload/harness/workflows/W08.md +13 -0
- package/dist/npm/payload/harness/workflows/W09.md +13 -0
- package/dist/npm/payload/harness/workflows/W10.md +13 -0
- package/dist/npm/payload/harness/workflows/W11.md +13 -0
- package/dist/npm/payload/harness/workflows/W12.md +13 -0
- package/dist/npm/payload/harness/workflows/W13.md +13 -0
- package/dist/npm/payload/harness/workflows/W14.md +13 -0
- package/dist/npm/payload/harness/workflows/W15.md +13 -0
- package/dist/npm/payload/harness/workflows/W16.md +13 -0
- package/dist/npm/payload/harness/workflows/W17.md +13 -0
- package/dist/npm/payload/harness/workflows/W18.md +13 -0
- package/dist/npm/payload/harness/workflows/W19.md +13 -0
- package/dist/npm/payload/harness/workflows/W20.md +13 -0
- package/dist/npm/payload/harness/workflows/W21.md +15 -0
- package/dist/npm/payload/harness/workflows/W22.md +13 -0
- package/dist/npm/payload/harness/workflows/W23.md +21 -0
- package/dist/npm/payload/harness/workflows/W24.md +13 -0
- package/dist/npm/payload/harness/workflows/W25.md +13 -0
- package/dist/npm/payload/harness/workflows/W26.md +13 -0
- package/dist/npm/payload/harness/workflows/W27.md +13 -0
- package/dist/npm/payload/harness/workflows/W28.md +13 -0
- package/dist/npm/payload/harness/workflows/W29.md +13 -0
- package/dist/npm/payload/harness/workflows/W30.md +13 -0
- package/dist/npm/payload/harness/workflows/W31.md +13 -0
- package/dist/npm/payload/harness/workflows/W32.md +13 -0
- package/dist/npm/payload/harness/workflows/W33.md +13 -0
- package/dist/npm/payload/harness/workflows/W34.md +13 -0
- package/dist/npm/payload/harness/workflows/W35.md +13 -0
- package/dist/npm/payload/harness/workflows/W36.md +13 -0
- package/dist/npm/payload/harness/workflows/W37.md +13 -0
- package/package.json +35 -4
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
var rp=Object.defineProperty;var op=(e)=>e;function np(e,t){this[e]=op.bind(null,t)}var Vo=(e,t)=>{for(var r in t)rp(e,r,{get:t[r],enumerable:!0,configurable:!0,set:np.bind(t,r)})};var ip=(e,t,r)=>()=>{if(e)try{t=e(e=0)}catch(o){r=[o]}if(r)throw r[0];return t};var Yu={};Vo(Yu,{selectChoice:()=>Fh});import{openSync as Oh}from"node:fs";import{WriteStream as Ch}from"node:tty";import{Box as Rh,Text as Wo,render as Ih,useApp as Ah,useInput as Th}from"ink";import{createElement as gt,useRef as Nh,useState as jh}from"react";function Dh({question:e,choices:t,select:r}){let[o,n]=jh(0),i=Nh(0),{exit:s}=Ah();return Th((c,a)=>{if(a.escape||c==="q")s();else if(a.upArrow)i.current=Math.max(0,i.current-1),n(i.current);else if(a.downArrow)i.current=Math.min(t.length-1,i.current+1),n(i.current);else if(a.return){let u=t[i.current];if(u)r(u.value),s()}}),gt(Rh,{flexDirection:"column"},gt(Wo,{bold:!0},e),...t.map(({label:c,value:a},u)=>gt(Wo,{key:a,color:u===o?"cyan":"white"},`${u===o?"›":" "} ${c}`)),gt(Wo,{dimColor:!0},"Use the arrow keys, Enter to select, or Esc to cancel."))}async function Fh(e,t){let r,o=process.stdout.isTTY?void 0:new Ch(Oh("/dev/tty","w")),n=Ih(gt(Dh,{question:e,choices:t,select(i){r=i}}),o?{stdout:o}:{});try{await n.waitUntilExit()}finally{o?.destroy()}if(r===void 0)throw Error("The operation was cancelled.");return r}var Qu=()=>{};import{resolve as rr}from"node:path";import{fileURLToPath as Lh}from"node:url";function He(e){let t=Object.values(e).filter((o)=>typeof o==="number");return Object.entries(e).filter(([o,n])=>t.indexOf(+o)===-1).map(([o,n])=>n)}function sr(e,t="|"){return e.map((r)=>ur(r)).join(t)}function Ke(e,t){if(typeof t==="bigint")return t.toString();return t}class Ho{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;if(e!==void 0)this._value=e(),this._getter=void 0;return this._value}}function Ge(e){return new Ho(e)}function Ko(e){return e===null||e===void 0}function yt(e){let t=e.startsWith("^")?1:0,r=e.endsWith("$")?e.length-1:e.length;return e.slice(t,r)}function Go(e,t){let r=e/t,o=Math.round(r),n=4*Number.EPSILON*Math.max(Math.abs(r),1);if(Math.abs(r-o)<n)return 0;return r-o}function Q(e,t,r){Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0})}function qe(e){let t=Object.getOwnPropertyDescriptor(e,"shape");return t?.get?t.get.raw:t?.value}function ue(e){return qe(e._zod.def)??e._zod.def.shape}function qo(e,t,r){Object.defineProperty(e,t,{get(){let o=r();return Q(this,t,o),o},enumerable:!0,configurable:!0})}function Xo(e,t,r){if(t in e)Q(e,t,r);else e[t]=r}function be(e,t,r,o){let n=ue(t);for(let i of r){let s=Object.getOwnPropertyDescriptor(n,i);if(!s.enumerable)continue;if(s.get)qo(e,i,()=>{let c=t._zod.def.shape[i];return o?o(c,i):c});else Xo(e,i,o?o(s.value,i):s.value)}}function sp(e,t){for(let r of Reflect.ownKeys(t)){let o=Object.getOwnPropertyDescriptor(t,r);if(!o.enumerable)continue;if(o.get)qo(e,r,()=>t[r]);else Xo(e,r,o.value)}}function W(...e){let t={};for(let r of e){let o=Object.getOwnPropertyDescriptors(r);Object.assign(t,o)}return Object.defineProperties({},t)}function Yo(e){return JSON.stringify(e)}function Qo(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}var cr="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function Ce(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}var en=Ge(()=>{if(B.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(e){return!1}});function Re(e){if(Ce(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;if(typeof t!=="function")return!0;let r=t.prototype;if(Ce(r)===!1)return!1;if(Object.prototype.hasOwnProperty.call(r,"isPrototypeOf")===!1)return!1;return!0}function ar(e){if(Re(e))return{...e};if(Array.isArray(e))return[...e];if(e instanceof Map)return new Map(e);if(e instanceof Set)return new Set(e);return e}var tn=new Set(["string","number","symbol"]);function ge(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ne(e,t,r){let o=new e._zod.constr(t??e._zod.def);if(!t||r?.parent)o._zod.parent=e;return o}function x(e){let t=e;if(!t)return{};if(typeof t==="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}if(delete t.message,typeof t.error==="string")return{...t,error:()=>t.error};return t}function ur(e){if(typeof e==="bigint")return e.toString()+"n";if(typeof e==="string")return`"${e}"`;return`${e}`}function rn(e){return Object.keys(e).filter((t)=>e[t]._zod.optin!==void 0&&e[t]._zod.optout==="optional")}var xt=(()=>({safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]}))(),pr={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function cp(e,t){let r=e._zod.def,o=r.checks;if(o&&o.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let i={};return be(i,e,vt(e,t)),ne(e,W(r,{shape:i,checks:[]}))}function vt(e,t){let r=ue(e),o=[];for(let n of Reflect.ownKeys(t)){if(!Object.getOwnPropertyDescriptor(r,n)?.enumerable)throw Error(`Unrecognized key: "${String(n)}"`);if(t[n])o.push(n)}return o}function ap(e,t){let r=e._zod.def,o=r.checks;if(o&&o.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let i=new Set(vt(e,t)),s={};return be(s,e,Reflect.ownKeys(ue(e)).filter((c)=>!i.has(c))),ne(e,W(r,{shape:s,checks:[]}))}function up(e,t){if(!Re(t))throw Error("Invalid input to extend: expected a plain object");let r=e._zod.def.checks;if(r&&r.length>0){let n=ue(e);for(let i of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,i)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return ne(e,W(e._zod.def,{shape:on(e,t)}))}function on(e,t){let r={};return be(r,e,Reflect.ownKeys(ue(e))),sp(r,t),r}function pp(e,t){if(!Re(t))throw Error("Invalid input to safeExtend: expected a plain object");return ne(e,W(e._zod.def,{shape:on(e,t)}))}function lp(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 r={};be(r,e,Reflect.ownKeys(ue(e))),be(r,t,Reflect.ownKeys(ue(t)));let o=W(e._zod.def,{shape:r,get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]});return ne(e,o)}function nn(e,t,r,o="partial"){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${o}() cannot be used on object schemas containing refinements`);let c=r?new Set(vt(t,r)):void 0,a={};return be(a,t,Reflect.ownKeys(ue(t)),e&&((u,p)=>c&&!c.has(p)?u:new e({type:"optional",innerType:u}))),ne(t,W(t._zod.def,{shape:a,checks:[]}))}function fp(e,t,r){let o=r?new Set(vt(t,r)):void 0,n={};return be(n,t,Reflect.ownKeys(ue(t)),(i,s)=>o&&!o.has(s)?i:new e({type:"nonoptional",innerType:i})),ne(t,W(t._zod.def,{shape:n}))}function ie(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function sn(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function wt(e,t){return t.map((r)=>{var o;return(o=r).path??(o.path=[]),r.path.unshift(e),r})}function Ve(e){return typeof e==="string"?e:e?.message}function lr(e){let t=[];for(let r of e??[]){let o=r._zod.def;if(!/_(length|size)$|_equals$/.test(o.check))break;let n=o.maximum??o.length??o.size;if(n>=0)t.push([n,r])}return t}function _t(e,t,r){var o;for(let n=t;n<e.length;n++)(o=e[n]).schema??(o.schema=r)}function ye(e,t,r){var o;let n=e.inst?._zod?.traits;if(n?.has("$ZodType"))if(n.has("$ZodCheck"))(o=e).schema??(o.schema=e.inst);else e.schema=e.inst;let i=e.schema!==e.inst?e.schema?._zod.def?.error:void 0,s=e.message?e.message:Ve(e.inst?._zod.def?.error?.(e))??Ve(i?.(e))??Ve(t?.error?.(e))??Ve(r.customError?.(e))??Ve(r.localeError?.(e))??"Invalid input",c={};for(let a of Object.keys(e)){if(a==="inst"||a==="schema"||a==="continue"||a==="input"||a==="__proto__")continue;c[a]=e[a]}if(c.path??(c.path=[]),c.message=s,t?.reportInput)c.input=e.input;return c}var dp=/[\uD800-\uDBFF]/;function bt(e){let t=e.length;if(!dp.test(e))return t;let r=t;for(let o=0;o<t-1;o++)if((e.charCodeAt(o)&64512)===55296&&(e.charCodeAt(o+1)&64512)===56320)r--,o++;return r}function kt(e){if(Array.isArray(e))return"array";if(typeof e==="string")return"string";return"unknown"}function cn(e){let t=typeof e;switch(t){case"number":return Number.isNaN(e)?"nan":"number";case"object":{if(e===null)return"null";if(Array.isArray(e))return"array";let r=e;if(r&&Object.getPrototypeOf(r)!==Object.prototype&&"constructor"in r&&r.constructor)return r.constructor.name}}return t}function ke(...e){let[t,r,o]=e;if(typeof t==="string")return{message:t,code:"custom",input:r,inst:o};return{...t}}function an(e,t){for(let r in t){let o=Object.getOwnPropertyDescriptor(t,r);if(o.get)Object.defineProperty(e,r,{...o,enumerable:!1});else hp(e,r,o.value)}}function pe(e,t,r,o=!0){return Object.defineProperty(e,t,{configurable:!0,writable:!0,enumerable:o,value:r}),r}function $t(e,t,r){return pe(e,t,r,!1)}function zt(e,t){for(let r in e){let o=e[r];Object.defineProperty(t,r,{configurable:!0,enumerable:!0,get(){return pe(this,r,o(this))},set(n){pe(this,r,n)}})}return t}function hp(e,t,r){Object.defineProperty(e,t,{configurable:!0,get(){return this==null?r:pe(this,t,r.bind(this))},set(o){pe(this,t,o)}})}function mp(e,t){let r=Object.getPrototypeOf(e);return t in r?void 0:r}var ir,me=!1,gp={configurable:!0,get(){me=!0;return}};function b(e,t,r){let o=Object.getPrototypeOf(e._zod);if(t in o&&ir!==e._zod){ir=void 0;return}ir=e._zod,Object.defineProperty(o,t,{configurable:!0,get(){Object.defineProperty(this,t,gp);let n=me;me=!1;try{let i=r(this);if(me)delete this[t];else Object.defineProperty(this,t,{configurable:!0,writable:!0,value:i});return me=me||n,i}catch(i){throw delete this[t],me=me||n,i}},set(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})}function yp(e,t,r,o){let n=mp(e,t);if(!n)return;Object.defineProperty(n,t,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:o,value:void 0};return Object.defineProperty(this,t,i),i.value=r(this),Object.defineProperty(this,t,i),i.value},set(i){Object.defineProperty(this,t,{configurable:!0,writable:!0,enumerable:o,value:i})}})}var xp="~constantCatch";function un(e){let t=()=>e;return t[xp]=!0,t}var pn;var fr={value:void 0,enumerable:!1},ln="captureStackTrace"in Error?Error:null;function vp(e){let t=ln;if(t){let r=t.stackTraceLimit;if(typeof r==="number"){try{t.stackTraceLimit=0}catch{return ln=null,new e}try{return new e}finally{t.stackTraceLimit=r}}}return new e}function h(e,t,r,o){let n={};function i(f){this.def=f,this.constr=l,this.traits=new Set}i.prototype=n;let s=r,c=s&&new WeakSet;function a(f,d){if(!f._zod){fr.value=new i(d);try{Object.defineProperty(f,"_zod",fr)}finally{fr.value=void 0}}else if(f._zod.traits.has(e))return;if(f._zod.traits.add(e),t(f,d),c){let m=Object.getPrototypeOf(f),y=f._zod.constr.prototype,v=m;while(v&&v!==y)v=Object.getPrototypeOf(v);let k=v??m;if(!c.has(k))c.add(k),an(k,s)}let g=l.prototype;for(let m in g){if(!Object.prototype.hasOwnProperty.call(g,m))continue;if(!(m in f))f[m]=g[m].bind(f)}}let u=o?.Parent??Object;class p extends u{}Object.defineProperty(p,"name",{value:e});function l(f){let d=o?.Parent?vp(p):this;a(d,f);let g=d._zod.deferred;if(g){for(let y of g)y();d._zod.deferred=void 0}let m=globalThis.__zod_globalConfig?.postProcessor;if(m)m(d);return d}return Object.defineProperty(l,"init",{value:a}),Object.defineProperty(l,Symbol.hasInstance,{value:(f)=>{if(o?.Parent&&f instanceof o.Parent)return!0;return f?._zod?.traits?.has(e)}}),Object.defineProperty(l,"name",{value:e}),l}class se extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class Xe extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`);this.name="ZodEncodeError"}}(pn=globalThis).__zod_globalConfig??(pn.__zod_globalConfig={});var B=globalThis.__zod_globalConfig;function te(e){if(e)Object.assign(B,e);return B}function wp(){let e=this._zod;return e.message??(e.message=JSON.stringify(e.def,Ke,2)),e.message}function _p(e){this._zod.message=e}var bp={get:wp,set:_p,enumerable:!0,configurable:!0},hr={value:void 0,enumerable:!1},fn=new WeakSet([Object.prototype,Error.prototype]),dn=(e,t)=>{e.name="$ZodError",hr.value=t,Object.defineProperty(e,"issues",hr),hr.value=void 0,Object.defineProperty(e,"message",bp);let r=Object.getPrototypeOf(e);if(!fn.has(r))fn.add(r),Object.defineProperty(r,"toString",{configurable:!0,enumerable:!1,get(){let o=()=>this.message;return Object.defineProperty(this,"toString",{value:o,configurable:!0,writable:!0}),o},set(o){Object.defineProperty(this,"toString",{value:o,configurable:!0,writable:!0})}})},hn=h("$ZodError",dn),Gh=h("$ZodError",dn,void 0,{Parent:Error});function kp(e,t,r){if(!Object.prototype.hasOwnProperty.call(e,t))if(t==="__proto__")Object.defineProperty(e,t,{value:r(),writable:!0,enumerable:!0,configurable:!0});else e[t]=r();return e[t]}function mn(e,t=(r)=>r.message){let r={},o=[];for(let n of e.issues)if(n.path.length>0)kp(r,n.path[0],()=>[]).push(t(n));else o.push(t(n));return{formErrors:o,fieldErrors:r}}function gn(e,t=(r)=>r.message){let r={_errors:[]},o=(n,i=[])=>{for(let s of n.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map((c)=>o({issues:c},[...i,...s.path]));else if(s.code==="invalid_key")o({issues:s.issues},[...i,...s.path]);else if(s.code==="invalid_element")o({issues:s.issues},[...i,...s.path]);else{let c=[...i,...s.path];if(c.length===0)r._errors.push(t(s));else{let a=r,u=0;while(u<c.length){let p=c[u],l=u===c.length-1;if(p==="_errors"){if(l)a._errors.push(t(s));u++;continue}if(!Object.prototype.hasOwnProperty.call(a,p))Object.defineProperty(a,p,{value:{_errors:[]},enumerable:!0,writable:!0,configurable:!0});let f=a[p];if(l)f._errors.push(t(s));a=f,u++}}}};return o(e),r}function St(e,t){return{callee:t?.callee??e,Err:t?.Err}}var Pt=(e)=>{let t=(r,o,n,i)=>{let s=n?{...n,async:!1}:{async:!1},c=r._zod.run({value:o,issues:[]},s);if(c instanceof Promise)throw new se;if(c.issues.length){let a=new(i?.Err??e)(c.issues.map((u)=>ye(u,s,te())));throw cr(a,i?.callee??t),a}return c.value};return t};var Et=(e)=>{let t=async(r,o,n,i)=>{let s=n?{...n,async:!0}:{async:!0},c=r._zod.run({value:o,issues:[]},s);if(c instanceof Promise)c=await c;if(c.issues.length){let a=new(i?.Err??e)(c.issues.map((u)=>ye(u,s,te())));throw cr(a,i?.callee??t),a}return c.value};return t};var Zt=(e)=>(t,r,o)=>{let n=o?{...o,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},n);if(i instanceof Promise)throw new se;return i.issues.length?yn(e,i.issues,n):{success:!0,data:i.value}};function yn(e,t,r){let o;return{success:!1,get error(){if(!o)o=new e(t.map((n)=>ye(n,r,te()))),t=void 0,r=void 0;return o},set error(n){o=n,t=void 0,r=void 0}}}var Ot=(e)=>async(t,r,o)=>{let n=o?{...o,async:!0}:{async:!0},i=t._zod.run({value:r,issues:[]},n);if(i instanceof Promise)i=await i;return i.issues.length?yn(e,i.issues,n):{success:!0,data:i.value}};var $p=Symbol.for("zod.compile.invalid"),zp=Symbol.for("zod.compile.fallback"),mr=(e,t,r)=>{let o=e._zod.bag.validator;if(o!==void 0){if(o(t)!==$p)return!0;if(o.definite===!0&&r===void 0)return!1}return Sp(e,t,r)};function Sp(e,t,r){let o=r?{...r,async:!1,abortEarly:!0}:{async:!1,abortEarly:!0},n=e._zod.bag.fallbackRun,i;if(n)o[zp]=!0,i=n({value:t,issues:[]},o);else i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new se;return i.issues.length===0}var gr=async(e,t,r)=>{let o=r?{...r,async:!0,abortEarly:!0}:{async:!0,abortEarly:!0},n=e._zod.run({value:t,issues:[]},o);if(n instanceof Promise)n=await n;return n.issues.length===0},xn=(e)=>{let t=Pt(e),r=(o,n,i,s)=>{let c=i?{...i,direction:"backward"}:{direction:"backward"};return t(o,n,c,St(r,s))};return r};var vn=(e)=>{let t=Pt(e),r=(o,n,i,s)=>t(o,n,i,St(r,s));return r};var wn=(e)=>{let t=Et(e),r=async(o,n,i,s)=>{let c=i?{...i,direction:"backward"}:{direction:"backward"};return await t(o,n,c,St(r,s))};return r};var _n=(e)=>{let t=Et(e),r=async(o,n,i,s)=>await t(o,n,i,St(r,s));return r};var bn=(e)=>(t,r,o)=>{let n=o?{...o,direction:"backward"}:{direction:"backward"};return Zt(e)(t,r,n)};var kn=(e)=>(t,r,o)=>Zt(e)(t,r,o);var $n=(e)=>async(t,r,o)=>{let n=o?{...o,direction:"backward"}:{direction:"backward"};return Ot(e)(t,r,n)};var zn=(e)=>async(t,r,o)=>Ot(e)(t,r,o);var Sn=/^[cC][0-9a-z]{6,}$/,Pn=/^[0-9a-z]+$/,En=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,Zn=/^[0-9a-vA-V]{20}$/,On=/^[A-Za-z0-9]{27}$/,Cn=/^[a-zA-Z0-9_-]{21}$/;function Rn(e){return new RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var In=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var An=/^([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})$/,xr=(e)=>{if(!e)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var Tn=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var Pp="^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$";function Nn(){return new RegExp(Pp,"u")}var jn=/^(?:(?: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])$/,Dn=/^(([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}|:))$/;var Fn=/^((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])$/,Ln=/^(([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])$/,Mn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Un=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$/;var Wn=/^https?$/,Bn=/^\+[1-9]\d{6,14}$/;var Jn="(?:(?:\\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 Ep(e){return new RegExp(`^${e}$`)}var Vn=Ep(Jn);function yr(e){return typeof e.precision==="number"?e.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":e.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${e.precision}}`:e.seconds?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?":"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function Hn(e){return new RegExp(`^${yr(e)}$`)}function Kn(e){let t=["Z"];if(e.offset)t.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let r=`${yr({precision:e.precision,seconds:!0})}(?:${t.join("|")})`,o=e.local?`${r}|${yr({precision:e.precision})}`:r;return new RegExp(`^${Jn}T(?:${o})$`)}var Gn=/^[\s\S]{0,}$/;var qn=/^-?\d+n?$/;var vr=/^-?\d+(?:\.\d+)?$/,Xn=/^(?:true|false)$/i;var Yn=/^[^A-Z]*$/,Qn=/^[^a-z]*$/;var T=h("$ZodCheck",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var wr=(e)=>{let t=e.value;return!Ko(t)&&t.length!==void 0},Ct={number:"number",bigint:"bigint",object:"date"},_r=h("$ZodCheckLessThan",(e,t)=>{T.init(e,t);let r=Ct[typeof t.value];e._zod.check=(o)=>{if(t.inclusive?o.value<=t.value:o.value<t.value)return;o.issues.push({origin:Ct[typeof o.value]??r,code:"too_big",maximum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),br=h("$ZodCheckGreaterThan",(e,t)=>{T.init(e,t);let r=Ct[typeof t.value];e._zod.check=(o)=>{if(t.inclusive?o.value>=t.value:o.value>t.value)return;o.issues.push({origin:Ct[typeof o.value]??r,code:"too_small",minimum:typeof t.value==="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ei=h("$ZodCheckMultipleOf",(e,t)=>{T.init(e,t),e._zod.check=(r)=>{if(typeof r.value!==typeof t.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof r.value==="bigint"?t.value!==BigInt(0)&&r.value%t.value===BigInt(0):Go(r.value,t.value)===0)return;r.issues.push({origin:typeof r.value,code:"not_multiple_of",divisor:t.value,input:r.value,inst:e,continue:!t.abort})}}),ti=h("$ZodCheckNumberFormat",(e,t)=>{T.init(e,t),t.format=t.format||"float64";let r=t.format?.includes("int"),o=r?"int":"number",[n,i]=xt[t.format];e._zod.check=(s)=>{let c=s.value;if(r){if(!Number.isInteger(c)){s.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:c,inst:e});return}if(!Number.isSafeInteger(c)){if(c>0)s.issues.push({input:c,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});else s.issues.push({input:c,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}if(c<n)s.issues.push({origin:"number",input:c,code:"too_small",minimum:n,inclusive:!0,inst:e,continue:!t.abort});if(c>i)s.issues.push({origin:"number",input:c,code:"too_big",maximum:i,inclusive:!0,inst:e,continue:!t.abort})}});var ri=h("$ZodCheckMaxLength",(e,t)=>{var r;T.init(e,t),(r=e._zod.def).when??(r.when=wr),e._zod.check=(o)=>{let n=o.value,i=n.length;if((typeof n==="string"&&i>t.maximum?bt(n):i)<=t.maximum)return;let c=kt(n);o.issues.push({origin:c,code:"too_big",maximum:t.maximum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),oi=h("$ZodCheckMinLength",(e,t)=>{var r;T.init(e,t),(r=e._zod.def).when??(r.when=wr),e._zod.check=(o)=>{let n=o.value,i=n.length;if((typeof n==="string"&&i>=t.minimum&&i<t.minimum*2?bt(n):i)>=t.minimum)return;let c=kt(n);o.issues.push({origin:c,code:"too_small",minimum:t.minimum,inclusive:!0,input:n,inst:e,continue:!t.abort})}}),ni=h("$ZodCheckLengthEquals",(e,t)=>{var r;T.init(e,t),(r=e._zod.def).when??(r.when=wr),e._zod.check=(o)=>{let n=o.value,i=n.length,s=typeof n==="string"&&i>=t.length&&i<=t.length*2?bt(n):i;if(s===t.length)return;let c=kt(n),a=s>t.length;o.issues.push({origin:c,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),Qe=h("$ZodCheckStringFormat",(e,t)=>{var r,o;if(T.init(e,t),t.pattern)(r=e._zod).check??(r.check=(n)=>{if(t.pattern.lastIndex=0,t.pattern.test(n.value))return;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})});else(o=e._zod).check??(o.check=()=>{})}),ii=h("$ZodCheckRegex",(e,t)=>{Qe.init(e,t),e._zod.check=(r)=>{if(t.pattern.lastIndex=0,t.pattern.test(r.value))return;r.issues.push({origin:"string",code:"invalid_format",format:"regex",input:r.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),si=h("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Yn),Qe.init(e,t)}),ci=h("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Qn),Qe.init(e,t)}),ai=h("$ZodCheckIncludes",(e,t)=>{T.init(e,t);let r=ge(t.includes),o=new RegExp(typeof t.position==="number"?`^.{${t.position},}${r}`:r);t.pattern=o,e._zod.check=(n)=>{if(n.value.includes(t.includes,t.position))return;n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),ui=h("$ZodCheckStartsWith",(e,t)=>{T.init(e,t);let r=new RegExp(`^${ge(t.prefix)}.*`);t.pattern??(t.pattern=r),e._zod.check=(o)=>{if(o.value.startsWith(t.prefix))return;o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),pi=h("$ZodCheckEndsWith",(e,t)=>{T.init(e,t);let r=new RegExp(`.*${ge(t.suffix)}$`);t.pattern??(t.pattern=r),e._zod.check=(o)=>{if(o.value.endsWith(t.suffix))return;o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}});var li=h("$ZodCheckOverwrite",(e,t)=>{T.init(e,t),e._zod.check=(r)=>{r.value=t.tx(r.value)}});class kr{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-=1}}write(e){if(typeof e==="function"){e(this,{execution:"sync"}),e(this,{execution:"async"});return}let r=e.split(`
|
|
3
|
+
`).filter((i)=>i),o=Math.min(...r.map((i)=>i.length-i.trimStart().length)),n=r.map((i)=>i.slice(o)).map((i)=>" ".repeat(this.indent*2)+i);for(let i of n)this.content.push(i)}compile(){let e=Function,t=this?.content??[""];return new e(...Object.keys(this.closed),`return function (${this.args.join(", ")}) {
|
|
4
|
+
${t.join(`
|
|
5
|
+
`)}
|
|
6
|
+
};`)(...Object.values(this.closed))}}var di={major:4,minor:6,patch:7};var E=h("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=di;let o=e._zod.def.checks,n=e._zod.traits.has("$ZodCheck")?[e,...o??[]]:o?.length?[...o]:[];for(let i of n)for(let s of i._zod.onattach)s(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let i=(c,a,u)=>{if(c.memo)return c;let p=ie(c),l;for(let f of a){if(f._zod.def.when){if(sn(c))continue;if(!f._zod.def.when(c))continue}else if(p)continue;let d=c.issues.length,g=f._zod.check(c);if(g instanceof Promise&&u?.async===!1)throw new se;if(l||g instanceof Promise)l=(l??Promise.resolve()).then(async()=>{if(await g,c.issues.length===d)return;if(_t(c.issues,d,e),!p)p=ie(c,d)});else{if(c.issues.length===d)continue;if(_t(c.issues,d,e),!p)p=ie(c,d)}}if(l)return l.then(()=>c);return c},s=(c,a,u)=>{if(ie(c))return c.aborted=!0,c;let p=i(a,n,u);if(p instanceof Promise){if(u.async===!1)throw new se;return p.then((l)=>e._zod.parse(l,u))}return e._zod.parse(p,u)};e._zod.run=(c,a)=>{if(a.skipChecks)return e._zod.parse(c,a);if(a.direction==="backward"){let p=e._zod.parse({value:c.value,issues:[]},{...a,skipChecks:!0});if(p instanceof Promise)return p.then((l)=>s(l,c,a));return s(p,c,a)}let u=e._zod.parse(c,a);if(u instanceof Promise){if(a.async===!1)throw new se;return u.then((p)=>i(p,n,a))}return i(u,n,a)}}},{get "~standard"(){return $t(this,"~standard",zr(this))},set "~standard"(e){pe(this,"~standard",e)}}),$i=(e,t)=>e.issues.length?{issues:e.issues.map((r)=>ye(r,t,te()))}:{value:e.value};async function Op(e,t){let r={async:!0};return $i(await e._zod.run({value:t,issues:[]},r),r)}function zr(e){return{validate:(t)=>{let r={async:!1};try{let o=e._zod.run({value:t,issues:[]},r);if(!(o instanceof Promise))return $i(o,r)}catch(o){}return Op(e,t)},vendor:"zod",version:1}}var Tt=h("$ZodString",(e,t)=>{E.init(e,t),e._zod.pattern=t.pattern??Gn,e._zod.parse=(r,o)=>{if(t.coerce)try{r.value=String(r.value)}catch(n){}if(typeof r.value==="string")return r;return r.issues.push({expected:"string",code:"invalid_type",input:r.value,inst:e}),r}}),Z=h("$ZodStringFormat",(e,t)=>{Qe.init(e,t),Tt.init(e,t)}),zi=h("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=An),Z.init(e,t)}),Si=h("$ZodUUID",(e,t)=>{if(t.version){let o={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(o===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=xr(o))}else t.pattern??(t.pattern=xr());Z.init(e,t)}),Pi=h("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Tn),Z.init(e,t)}),Ei=1,It=2;function Zi(e){try{if(typeof URL<"u"&&typeof URL.canParse==="function")return URL.canParse(e);return new URL(e),!0}catch{return!1}}function Cp(e,t){if(!("normalize"in t)&&!("hostname"in t)&&!("protocol"in t))return Zi(e)||It;return Rp(e,t)}function Rp(e,t){if(!t.normalize&&t.protocol?.source===Wn.source&&!/^https?:\/\//i.test(e))return Ei;try{if(typeof URL<"u"){let r=URL;if(typeof r.parse==="function")return r.parse(e)??It}return new URL(e)}catch{return It}}var Ip=/[\t\n\r]/g;function hi(e){return e.replace(Ip,"")}function Ap(e,t){return t.lastIndex=0,t.test(e.hostname)}function Tp(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(":")?e.protocol.slice(0,-1):e.protocol)}var Oi=h("$ZodURL",(e,t)=>{Z.init(e,t),e._zod.check=(r)=>{try{let o=r.value.trim(),n=Cp(o,t);if(n===Ei){r.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:r.value,inst:e,continue:!t.abort});return}if(n===It){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort});return}if(n===!0){r.value=hi(o);return}if(t.hostname&&!Ap(n,t.hostname))r.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:r.value,inst:e,continue:!t.abort});if(t.protocol&&!Tp(n,t.protocol))r.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:r.value,inst:e,continue:!t.abort});r.value=t.normalize?n.href:hi(o);return}catch(o){r.issues.push({code:"invalid_format",format:"url",input:r.value,inst:e,continue:!t.abort})}}}),Ci=h("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=Nn()),Z.init(e,t)}),Ri=h("$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.pattern=t.length===void 0?Cn:Rn(t.length)),Z.init(e,t)}),Ii=h("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=Sn),Z.init(e,t)}),Ai=h("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Pn),Z.init(e,t)}),Ti=h("$ZodULID",(e,t)=>{t.pattern??(t.pattern=En),Z.init(e,t)}),Ni=h("$ZodXID",(e,t)=>{t.pattern??(t.pattern=Zn),Z.init(e,t)}),ji=h("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=On),Z.init(e,t)}),Di=h("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Kn(t)),Z.init(e,t)}),Fi=h("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Vn),Z.init(e,t)}),Li=h("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=Hn(t)),Z.init(e,t)}),Mi=h("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=In),Z.init(e,t)}),Ui=h("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=jn),Z.init(e,t)}),Np=/^[0-9a-fA-F:.]+$/;function Wi(e){if(!Np.test(e))return!1;return Zi(`http://[${e}]`)}var Bi=h("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Dn),Z.init(e,t),e._zod.check=(r)=>{if(!Wi(r.value))r.issues.push({code:"invalid_format",format:"ipv6",input:r.value,inst:e,continue:!t.abort})}});var Ji=h("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=Fn),Z.init(e,t)});function jp(e){let t=e.split("/");if(t.length!==2)return!1;let[r,o]=t;if(!o)return!1;let n=Number(o);if(`${n}`!==o)return!1;if(n<0||n>128)return!1;return Wi(r)}var Vi=h("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Ln),Z.init(e,t),e._zod.check=(r)=>{if(!jp(r.value))r.issues.push({code:"invalid_format",format:"cidrv6",input:r.value,inst:e,continue:!t.abort})}});function Hi(e){if(e==="")return!0;if(/\s/.test(e))return!1;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}var Sr=/^[0-9a-zA-Z+/]*={0,2}$/,Ki=h("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Sr),Z.init(e,t),e._zod.check=(r)=>{if(Hi(r.value))return;r.issues.push({code:"invalid_format",format:"base64",input:r.value,inst:e,continue:!t.abort})}}),Nt=/^[A-Za-z0-9_-]*$/;function Dp(e){if(!Nt.test(e))return!1;let t=e.replace(/[-_]/g,(o)=>o==="-"?"+":"/"),r=t.padEnd(Math.ceil(t.length/4)*4,"=");return Hi(r)}var Gi=h("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Nt),Z.init(e,t),e._zod.check=(r)=>{if(Dp(r.value))return;r.issues.push({code:"invalid_format",format:"base64url",input:r.value,inst:e,continue:!t.abort})}}),qi=h("$ZodE164",(e,t)=>{t.pattern??(t.pattern=Bn),Z.init(e,t)});function Fp(e,t=null){try{let r=e.split(".");if(r.length!==3)return!1;let[o]=r;if(!o)return!1;let n=JSON.parse(atob(o));if("typ"in n&&n?.typ!=="JWT")return!1;if(!n.alg)return!1;if(t&&(!("alg"in n)||n.alg!==t))return!1;return!0}catch{return!1}}var Xi=h("$ZodJWT",(e,t)=>{Z.init(e,t),e._zod.check=(r)=>{if(Fp(r.value,t.alg))return;r.issues.push({code:"invalid_format",format:"jwt",input:r.value,inst:e,continue:!t.abort})}});var Pr=h("$ZodNumber",(e,t)=>{E.init(e,t),e._zod.pattern=vr,e._zod.parse=(r,o)=>{if(t.coerce)try{r.value=Number(r.value)}catch(s){}let n=r.value;if(typeof n==="number"&&!Number.isNaN(n)&&Number.isFinite(n))return r;let i=typeof n==="number"?Number.isNaN(n)?"NaN":!Number.isFinite(n)?String(n):void 0:void 0;return r.issues.push({expected:"number",code:"invalid_type",input:n,inst:e,...i?{received:i}:{}}),r}}),Yi=h("$ZodNumberFormat",(e,t)=>{ti.init(e,t),Pr.init(e,t)}),Qi=h("$ZodBoolean",(e,t)=>{E.init(e,t),e._zod.pattern=Xn,e._zod.parse=(r,o)=>{if(t.coerce)try{r.value=Boolean(r.value)}catch(i){}let n=r.value;if(typeof n==="boolean")return r;return r.issues.push({expected:"boolean",code:"invalid_type",input:n,inst:e}),r}}),es=h("$ZodBigInt",(e,t)=>{E.init(e,t),e._zod.pattern=qn,e._zod.parse=(r,o)=>{if(t.coerce)try{r.value=BigInt(r.value)}catch(n){}if(typeof r.value==="bigint")return r;return r.issues.push({expected:"bigint",code:"invalid_type",input:r.value,inst:e}),r}});var ts=h("$ZodUnknown",(e,t)=>{E.init(e,t),e._zod.parse=(r)=>r}),rs=h("$ZodNever",(e,t)=>{E.init(e,t),e._zod.parse=(r,o)=>(r.issues.push({expected:"never",code:"invalid_type",input:r.value,inst:e}),r)});var os=h("$ZodDate",(e,t)=>{E.init(e,t),e._zod.parse=(r,o)=>{if(t.coerce)try{r.value=new Date(r.value)}catch(c){}let n=r.value,i=n instanceof Date;if(i&&!Number.isNaN(n.getTime()))return r;return r.issues.push({expected:"date",code:"invalid_type",input:n,...i?{received:"Invalid Date"}:{},inst:e}),r}});function Lp(e,t){let r=lr(e._zod.def.checks);if(!r.length)return;let o=Math.min(...r.map((i)=>i[0])),n=e._zod.parse;e._zod.parse=(i,s)=>{let c=t(i.value);if(c>o&&!s?.skipChecks&&s?.direction!=="backward"){for(let[a,u]of lr(e._zod.def.checks))if(c>a&&u._zod.def.when(i)){let p=i.issues.length;return u._zod.check(i),i.issues[p].continue=!1,_t(i.issues,p,e),i}}return n(i,s)}}var Mp=(e)=>Array.isArray(e)?e.length:-1;function mi(e,t,r){if(e.issues.length)t.issues.push(...wt(r,e.issues));t.value[r]=e.value}var ns=h("$ZodArray",(e,t)=>{E.init(e,t);let r=B.memoizer;r?.attach(e),e._zod.parse=(o,n)=>{let i=o.value;if(!Array.isArray(i))return o.issues.push({expected:"array",code:"invalid_type",input:i,inst:e}),o;o.value=r?r.alloc(e,o,Array(i.length),n):Array(i.length);let s=[],c=n?.abortEarly;for(let a=0;a<i.length;a++){let u=i[a],p=t.element._zod.run({value:u,issues:[]},n);if(p instanceof Promise)s.push(p.then((l)=>mi(l,o,a)));else if(mi(p,o,a),c&&p.issues.length!==0&&ie(p))break}if(s.length)return Promise.all(s).then(()=>o);return o},Lp(e,Mp)});function At(e,t,r,o,n,i){let s=r in o,c=i==="optional";if(!s&&c&&n==="optional")return;if(e.issues.length){if(n!==void 0&&c&&!s)return;t.issues.push(...wt(r,e.issues))}if(!s&&n===void 0){if(!e.issues.length)t.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[r]});return}if(e.value===void 0){if(s||n==="defaulted"&&!c)t.value[r]=void 0}else t.value[r]=e.value}var Up=[];function is(e){let t=Object.keys(e.shape),r=Object.getOwnPropertySymbols(e.shape),o=r.length?r:Up,n=o.length?[...t,...o]:t;for(let s of n)if(!e.shape?.[s]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=rn(e.shape);return{...e,allKeys:n,symbolKeys:o,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(i)}}function ss(e,t,r,o,n,i,s){let c=[],a=n.keySet,u=n.catchall._zod,p=u.def.type,{optin:l,optout:f}=u,d=0;for(let g in t){if(s&&r.issues.length!==d){if(ie(r,d))break;d=r.issues.length}if(a.has(g))continue;if(g==="__proto__"){if(p==="never")c.push(g);continue}if(p==="never"){c.push(g);continue}let m=u.run({value:t[g],issues:[]},o);if(m instanceof Promise)e.push(m.then((y)=>At(y,r,g,t,l,f)));else At(m,r,g,t,l,f)}if(c.length)r.issues.push({code:"unrecognized_keys",keys:c,input:t,inst:i,continue:!0});if(!e.length)return r;return Promise.all(e).then(()=>r)}var Wp=h("$ZodObject",(e,t)=>{E.init(e,t);let r=Object.getOwnPropertyDescriptor(t,"shape"),o=r?.get?r.get.raw:t.shape??{};if(o){let u=()=>{let p={...o};return Object.defineProperty(t,"shape",{value:p}),u.raw=p,p};u.raw=o,Object.defineProperty(t,"shape",{get:u})}let n=Ge(()=>is(t));b(e,"propValues",(u)=>{let p=u.def.shape,l={};for(let f in p){let d=p[f]._zod;if(d.values){if(!Object.prototype.hasOwnProperty.call(l,f))Q(l,f,new Set);for(let g of d.values)l[f].add(g);if(d.optin!==void 0)l[f].add(void 0)}}return l});let i=Ce,s=t.catchall,c,a=B.memoizer;a?.attach(e),e._zod.parse=(u,p)=>{c??(c=n.value);let l=u.value;if(!i(l))return u.issues.push({expected:"object",code:"invalid_type",input:l,inst:e}),u;u.value=a?a.alloc(e,u,{},p):{};let f=[],d=c.shape,g=p?.abortEarly,m=u.issues.length;for(let y of c.allKeys){if(g&&u.issues.length!==m){if(ie(u,m))break;m=u.issues.length}if(y==="__proto__")continue;let v=d[y],k=v._zod.optin,G=v._zod.optout,z=v._zod.run({value:l[y],issues:[]},p);if(z instanceof Promise)f.push(z.then((I)=>At(I,u,y,l,k,G)));else At(z,u,y,l,k,G)}if(!s)return f.length?Promise.all(f).then(()=>u):u;return ss(f,l,u,p,n.value,e,g===!0)}}),cs=h("$ZodObjectJIT",(e,t)=>{Wp.init(e,t);let r=e._zod.parse,o=Ge(()=>is(t)),n=B.memoizer,i=(d)=>{let g=o.value,m=g.symbolKeys,y=new kr(["payload","ctx"],{shape:d,inst:e,memo:n,syms:m}),v=(I)=>`shape[${I}]._zod.run({ value: input[${I}], issues: [] }, ctx)`,k=(I,S)=>`
|
|
7
|
+
let ${I}_ab = false;
|
|
8
|
+
for (let i = 0; i < ${I}.issues.length; i++) {
|
|
9
|
+
const iss = ${I}.issues[i];
|
|
10
|
+
iss.path = iss.path ? [${S}, ...iss.path] : [${S}];
|
|
11
|
+
payload.issues.push(iss);
|
|
12
|
+
if (iss.continue !== true) ${I}_ab = true;
|
|
13
|
+
}
|
|
14
|
+
if (${I}_ab && ctx && ctx.abortEarly) {
|
|
15
|
+
payload.value = newResult;
|
|
16
|
+
return payload;
|
|
17
|
+
}`;y.write("const input = payload.value;");let G=Object.create(null),z=0;for(let I of g.allKeys)G[I]=`key_${z++}`;y.write(n?"const newResult = memo.alloc(inst, payload, {}, ctx);":"const newResult = {};");for(let I of g.allKeys){if(I==="__proto__")continue;let S=G[I],q=typeof I==="symbol"?`syms[${m.indexOf(I)}]`:Yo(I),or=`${q} in input`,Bo=d[I],nr=Bo?._zod?.optin,Jo=nr!==void 0,ep=Bo?._zod?.optout==="optional";if(y.write(`const ${S} = ${v(q)};`),Jo&&ep){let tp=nr==="optional"?`${S}_present`:`${S}.value !== undefined || ${S}_present`;y.write(`
|
|
18
|
+
const ${S}_present = ${or};
|
|
19
|
+
if (!${S}.issues.length || ${S}_present) {
|
|
20
|
+
if (${S}.issues.length) {${k(S,q)}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (${tp}) {
|
|
24
|
+
newResult[${q}] = ${S}.value;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
`)}else if(!Jo)y.write(`
|
|
29
|
+
const ${S}_present = ${or};
|
|
30
|
+
if (${S}.issues.length) {${k(S,q)}
|
|
31
|
+
}
|
|
32
|
+
if (!${S}_present && !${S}.issues.length) {
|
|
33
|
+
payload.issues.push({
|
|
34
|
+
code: "invalid_type",
|
|
35
|
+
expected: "nonoptional",
|
|
36
|
+
input: undefined,
|
|
37
|
+
path: [${q}]
|
|
38
|
+
});
|
|
39
|
+
if (ctx && ctx.abortEarly) {
|
|
40
|
+
payload.value = newResult;
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (${S}_present) {
|
|
46
|
+
newResult[${q}] = ${S}.value;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
`);else if(y.write(`
|
|
50
|
+
if (${S}.issues.length) {${k(S,q)}
|
|
51
|
+
}
|
|
52
|
+
`),nr==="defaulted")y.write(`newResult[${q}] = ${S}.value;`);else y.write(`
|
|
53
|
+
if (${S}.value !== undefined || ${or}) {
|
|
54
|
+
newResult[${q}] = ${S}.value;
|
|
55
|
+
}
|
|
56
|
+
`)}return y.write("payload.value = newResult;"),y.write("return payload;"),y.compile()},s,c=Ce,a=!B.jitless,p=a&&en.value,l=t.catchall,f;e._zod.parse=(d,g)=>{f??(f=o.value);let m=d.value;if(!c(m))return d.issues.push({expected:"object",code:"invalid_type",input:m,inst:e}),d;if(a&&p&&g?.async===!1&&g.jitless!==!0){if(!s)s=i(t.shape);if(d=s(d,g),!l)return d;return ss([],m,d,g,f,e,g?.abortEarly===!0)}return r(d,g)}});function gi(e,t,r,o){for(let i of e)if(i.issues.length===0)return t.value=i.value,t;let n=e.filter((i)=>!ie(i));if(n.length===1)return t.value=n[0].value,n[0];return t.issues.push({code:"invalid_union",input:t.value,inst:r,errors:e.map((i)=>i.issues.map((s)=>ye(s,o,te())))}),t}var Er=h("$ZodUnion",(e,t)=>{E.init(e,t),b(e,"optin",(o)=>o.def.options.some((n)=>n._zod.optin==="defaulted")?"defaulted":o.def.options.some((n)=>n._zod.optin!==void 0)?"optional":void 0),b(e,"optout",(o)=>o.def.options.some((n)=>n._zod.optout==="optional")?"optional":void 0),b(e,"values",(o)=>{if(o.def.options.every((n)=>n._zod.values))return new Set(o.def.options.flatMap((n)=>Array.from(n._zod.values)));return}),b(e,"pattern",(o)=>{if(o.def.options.every((n)=>n._zod.pattern)){let n=o.def.options.map((i)=>i._zod.pattern);return new RegExp(`^(${n.map((i)=>yt(i.source)).join("|")})$`)}return});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(o,n)=>{if(r)return r(o,n);let i=!1,s=[];for(let c of t.options){let a=c._zod.run({value:o.value,issues:[]},n);if(a instanceof Promise)s.push(a),i=!0;else{if(a.issues.length===0)return a;s.push(a)}}if(!i)return gi(s,o,e,n);return Promise.all(s).then((c)=>gi(c,o,e,n))}});function Bp(e){let t=new Map;for(let r of e.options){let o=r._zod.propValues?.[e.discriminator];if(!o||o.size===0)throw Error(`Invalid discriminated union option at index "${e.options.indexOf(r)}"`);for(let n of o)if(t.has(n)){if(n!==void 0)throw Error(`Duplicate discriminator value "${String(n)}"`);t.set(n,null)}else t.set(n,r)}return t}var as=h("$ZodDiscriminatedUnion",(e,t)=>{t.inclusive=!1,Er.init(e,t);let r=e._zod.parse;b(e,"propValues",(n)=>{let i={},s=0;for(let c of n.def.options){let a=c._zod.propValues;if(!a||Object.keys(a).length===0)throw Error(`Invalid discriminated union option at index "${n.def.options.indexOf(c)}"`);if(a[n.def.discriminator]?.has(void 0))s++;for(let[u,p]of Object.entries(a)){if(!Object.prototype.hasOwnProperty.call(i,u))Q(i,u,new Set);for(let l of p)i[u].add(l)}}if(!n.def.unionFallback&&s>1)i[n.def.discriminator]?.delete(void 0);return i}),t.options.forEach((n,i)=>{let s=qe(n._zod.def);if(s&&!Object.prototype.hasOwnProperty.call(s,t.discriminator))throw Error(`Invalid discriminated union option at index "${i}"`)});let o=Ge(()=>Bp(t));e._zod.parse=(n,i)=>{let s=n.value;if(!Ce(s))return n.issues.push({code:"invalid_type",expected:"object",input:s,inst:e}),n;let c=s?.[t.discriminator],a=o.value.get(c);if(a&&(c!==void 0||i.direction!=="backward"))return a._zod.run(n,i);if(t.unionFallback||i.direction==="backward")return r(n,i);return n.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:t.discriminator,options:Array.from(o.value.keys()).filter((u)=>o.value.get(u)!==null),input:s,path:[t.discriminator],inst:e}),n}}),us=h("$ZodIntersection",(e,t)=>{E.init(e,t),e._zod.parse=(r,o)=>{let n=r.value,i=t.left._zod.run({value:n,issues:[]},o),s=t.right._zod.run({value:n,issues:[]},o);if(i instanceof Promise||s instanceof Promise)return Promise.all([i,s]).then(([a,u])=>yi(r,a,u));return yi(r,i,s)}});function $r(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e===+t)return{valid:!0,data:e};if(Re(e)&&Re(t)){let r=Object.keys(t),o=Object.keys(e).filter((i)=>r.indexOf(i)!==-1),n={...e,...t};if(Object.prototype.hasOwnProperty.call(n,"__proto__"))delete n.__proto__;for(let i of o){if(i==="__proto__")continue;let s=$r(e[i],t[i]);if(!s.valid)return{valid:!1,mergeErrorPath:[i,...s.mergeErrorPath]};n[i]=s.data}return{valid:!0,data:n}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let r=[];for(let o=0;o<e.length;o++){let n=e[o],i=t[o],s=$r(n,i);if(!s.valid)return{valid:!1,mergeErrorPath:[o,...s.mergeErrorPath]};r.push(s.data)}return{valid:!0,data:r}}return{valid:!1,mergeErrorPath:[]}}function yi(e,t,r){let o=new Map,n,i=new Map,s=(u,p)=>{let l;if(u.code==="unrecognized_keys"&&!u.path?.length)n??(n=u),l=u.keys;else if(u.code==="invalid_key"&&u.origin==="record"&&u.path?.length===1){let f=String(u.path[0]);if(!i.has(f))i.set(f,u);l=[f]}else return!1;for(let f of l){if(!o.has(f))o.set(f,{});o.get(f)[p]=!0}return!0};for(let u of t.issues)if(!s(u,"l"))e.issues.push(u);for(let u of r.issues)if(!s(u,"r"))e.issues.push(u);let c=[...o].filter(([,u])=>u.l&&u.r).map(([u])=>u);if(c.length){let u=n?c.filter((p)=>n.keys.includes(p)):[];if(u.length)e.issues.push({...n,keys:u});for(let p of c)if(!u.includes(p)&&i.has(p))e.issues.push(i.get(p))}let a=$r(t.value,r.value);if(!a.valid){if(ie(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(a.mergeErrorPath)}`)}return e.value=a.data,e}var ps=h("$ZodEnum",(e,t)=>{E.init(e,t);let r=He(t.entries),o=new Set(r);e._zod.values=o,b(e,"pattern",(n)=>{let i=He(n.def.entries).filter((s)=>tn.has(typeof s));return new RegExp(i.length?`^(${i.map((s)=>ge(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(n,i)=>{let s=n.value;if(o.has(s))return n;return n.issues.push({code:"invalid_value",values:r,input:s,inst:e}),n}}),ls=h("$ZodLiteral",(e,t)=>{E.init(e,t);let r=new Set(t.values);e._zod.values=r,b(e,"pattern",(o)=>{let n=o.def.values;return new RegExp(n.length?`^(${n.map((i)=>typeof i==="string"?ge(i):i?ge(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),e._zod.parse=(o,n)=>{let i=o.value;if(r.has(i))return o;return o.issues.push({code:"invalid_value",values:t.values,input:i,inst:e}),o}});var fs=h("$ZodTransform",(e,t)=>{E.init(e,t),e._zod.optin="optional",B.memoizer?.guard(e),e._zod.parse=(r,o)=>{if(o.direction==="backward")throw new Xe(e.constructor.name);let n=t.transform(r.value,r);if(o.async)return(n instanceof Promise?n:Promise.resolve(n)).then((s)=>(r.value=s,r));if(n instanceof Promise)throw new se;return r.value=n,r}});function xi(e,t){return e.value=t.issues.length?void 0:t.value,e}var Zr=h("$ZodOptional",(e,t)=>{E.init(e,t),b(e,"optin",(r)=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),e._zod.optout="optional",b(e,"values",(r)=>{let o=r.def.innerType._zod.values;return o?new Set([...o,void 0]):void 0}),b(e,"pattern",(r)=>{let o=r.def.innerType._zod.pattern;return o?new RegExp(`^(${yt(o.source)})?$`):void 0}),e._zod.parse=(r,o)=>{if(r.value===void 0){if(t.innerType._zod.optin!=="defaulted")return r;let n=t.innerType._zod.run({value:r.value,issues:[]},o);if(n instanceof Promise)return n.then((i)=>xi(r,i));return xi(r,n)}return t.innerType._zod.run(r,o)}}),ds=h("$ZodExactOptional",(e,t)=>{Zr.init(e,t),b(e,"values",(r)=>r.def.innerType._zod.values),b(e,"pattern",(r)=>r.def.innerType._zod.pattern),e._zod.parse=(r,o)=>t.innerType._zod.run(r,o)}),hs=h("$ZodNullable",(e,t)=>{E.init(e,t),b(e,"optin",(r)=>r.def.innerType._zod.optin),b(e,"optout",(r)=>r.def.innerType._zod.optout),b(e,"pattern",(r)=>{let o=r.def.innerType._zod.pattern;return o?new RegExp(`^(${yt(o.source)}|null)$`):void 0}),b(e,"values",(r)=>r.def.innerType._zod.values?new Set([...r.def.innerType._zod.values,null]):void 0),e._zod.parse=(r,o)=>{if(r.value===null)return r;return t.innerType._zod.run(r,o)}}),ms=h("$ZodDefault",(e,t)=>{E.init(e,t),e._zod.optin="defaulted",b(e,"values",(r)=>r.def.innerType._zod.values),e._zod.parse=(r,o)=>{if(o.direction==="backward")return t.innerType._zod.run(r,o);if(r.value===void 0)return r.value=t.defaultValue,r;let n=t.innerType._zod.run(r,o);if(n instanceof Promise)return n.then((i)=>vi(i,t));return vi(n,t)}});function vi(e,t){if(e.value===void 0)e.value=t.defaultValue;return e}var gs=h("$ZodPrefault",(e,t)=>{E.init(e,t),e._zod.optin="defaulted",b(e,"values",(r)=>r.def.innerType._zod.values),e._zod.parse=(r,o)=>{if(o.direction==="backward")return t.innerType._zod.run(r,o);if(r.value===void 0)r.value=t.defaultValue;return t.innerType._zod.run(r,o)}}),ys=h("$ZodNonOptional",(e,t)=>{E.init(e,t),b(e,"values",(r)=>{let o=r.def.innerType._zod.values;return o?new Set([...o].filter((n)=>n!==void 0)):void 0}),e._zod.parse=(r,o)=>{let n=t.innerType._zod.run(r,o);if(n instanceof Promise)return n.then((i)=>wi(i,e));return wi(n,e)}});function wi(e,t){if(!e.issues.length&&e.value===void 0)e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t});return e}function _i(e,t,r,o){if(!t.issues.length){if(e.value=t.value,t.memo)e.memo=!0;return e}return e.value=r.catchValue({...t,value:e.value,error:{issues:t.issues.map((n)=>ye(n,o,te()))},input:e.value}),e}var xs=h("$ZodCatch",(e,t)=>{E.init(e,t),b(e,"optin",(r)=>r.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),b(e,"optout",(r)=>r.def.innerType._zod.optout),b(e,"values",(r)=>r.def.innerType._zod.values),e._zod.parse=(r,o)=>{if(o.direction==="backward")return t.innerType._zod.run(r,o);let n=t.innerType._zod.run({value:r.value,issues:[]},o);if(n instanceof Promise)return n.then((i)=>_i(r,i,t,o));return _i(r,n,t,o)}});var vs=h("$ZodPipe",(e,t)=>{E.init(e,t),b(e,"values",(r)=>r.def.in._zod.values),b(e,"optin",(r)=>r.def.in._zod.optin),b(e,"optout",(r)=>r.def.out._zod.optout),b(e,"propValues",(r)=>r.def.in._zod.propValues),e._zod.parse=(r,o)=>{if(o.direction==="backward"){let i=t.out._zod.run(r,o);if(i instanceof Promise)return i.then((s)=>Rt(s,t.in,o));return Rt(i,t.in,o)}let n=t.in._zod.run(r,o);if(n instanceof Promise)return n.then((i)=>Rt(i,t.out,o));return Rt(n,t.out,o)}});function Rt(e,t,r){if(e.issues.some((o)=>o.code!=="unrecognized_keys"))return e.aborted=!0,e;return t._zod.run({value:e.value,issues:e.issues},r)}var ws=h("$ZodReadonly",(e,t)=>{E.init(e,t),b(e,"propValues",(r)=>r.def.innerType._zod.propValues),b(e,"values",(r)=>r.def.innerType._zod.values),b(e,"optin",(r)=>r.def.innerType?._zod?.optin),b(e,"optout",(r)=>r.def.innerType?._zod?.optout),e._zod.parse=(r,o)=>{if(o.direction==="backward")return t.innerType._zod.run(r,o);let n=t.innerType._zod.run(r,o);if(n instanceof Promise)return n.then(bi);return bi(n)}});function bi(e){if(!e.memo)e.value=Object.freeze(e.value);return e}var _s=h("$ZodCustom",(e,t)=>{T.init(e,t),E.init(e,t),e._zod.parse=(r,o)=>r,e._zod.check=(r)=>{let o=r.value,n=t.fn(o);if(n instanceof Promise)return n.then((i)=>ki(i,r,o,e));ki(n,r,o,e);return}});function ki(e,t,r,o){if(!e){let n={code:"custom",input:r,inst:o,path:[...o._zod.def.path??[]],continue:!o._zod.def.abort};if(o._zod.def.params)n.params=o._zod.def.params;t.issues.push(ke(n))}}class ks extends Error{constructor(){super("Cannot parse a reference cycle that closes through a transform");this.name="ZodCyclicError"}}var Cr="~memo",bs=[];function $s(e){return e!==null&&typeof e==="object"}function Or(e){return e.map((t)=>t.path?{...t,path:t.path.slice()}:{...t})}var zs=new WeakMap,et=0,Ft=1,tt=2;function Lt(e,t,r){let o=zs.get(e);if(o!==void 0)return o?tt:et;if(t.has(e))return tt;t.add(e);let n=et,i=(p)=>{if(n!==tt&&p?._zod){let l=Lt(p,t,r);if(l>n)n=l}},s=(p,l)=>{let f=et;for(let d of Reflect.ownKeys(p)){let g=Object.getOwnPropertyDescriptor(p,d);if(l&&!g.enumerable)continue;let m=g.get?Ft:g.value?._zod?Lt(g.value,t,r):et;if(m>f)f=m}return f},c=(p)=>{if(p>n)n=p},a=e._zod.def,u=a.type;switch(u){case"object":{let p=qe(a);c(p?s(p,!0):Ft),i(a.catchall);break}case"array":i(a.element);break;case"tuple":for(let p of a.items)i(p);i(a.rest);break;case"record":case"map":i(a.keyType),i(a.valueType);break;case"set":i(a.valueType);break;case"union":for(let p of a.options)i(p);break;case"intersection":i(a.left),i(a.right);break;case"optional":case"nullable":case"default":case"prefault":case"catch":case"readonly":case"nonoptional":case"promise":case"success":i(a.innerType);break;case"pipe":i(a.in),i(a.out);break;case"function":i(a.input),i(a.output);break;case"lazy":{let p=a._cachedInner??(r?e._zod.innerType:void 0);c(p?Lt(p,t,!1):Ft);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 p in a){let l=Object.getOwnPropertyDescriptor(a,p);if(!l||l.get)continue;let f=l.value;if(!f||typeof f!=="object")continue;if(f._zod)i(f);else if(Array.isArray(f))for(let d of f)i(d)}}return t.delete(e),Jp(e,n)}function Jp(e,t){if(t!==Ft)zs.set(e,t===tt);return t}function Vp(e,t){let r=e.buckets.get(t);if(!r)r=new WeakMap,e.buckets.set(t,r);return r}var jt,Dt=[],Hp={alloc(e,t,r){let o=jt;if(!o)return r;jt=void 0;let n={value:r,issues:null};return o.set(t.value,n),Dt.push(n),r},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let r=e._zod.parse,o=(n,i)=>{if(i.direction!=="backward"&&Kp(i,n.value))throw new ks;return r(n,i)};if(e._zod.parse=o,e._zod.run===r)e._zod.run=o})},attach(e){var t;let r,o=!1,n,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let s=e._zod.parse,c=(a,u)=>{if(r===void 0){let v=Lt(e,new Set,!1);if(v===et){if(e._zod.parse=s,e._zod.run===c)e._zod.run=s;return s(a,u)}if(v===tt||o)r=!0;else o=!0}let p=a.value;if(!$s(p))return s(a,u);let l=u[Cr];if(!l)l={buckets:new WeakMap,backEdges:void 0},u[Cr]=l;let f;if(n===u)f=i;else f=Vp(l,e),n=u,i=f;let d=f.get(p);if(d){if(a.value=d.value,d.issues){if(d.issues.length)a.issues.push(...Or(d.issues))}else a.memo=!0,l.backEdges??(l.backEdges=new WeakSet),l.backEdges.add(d.value);return a}jt=f;let g=Dt.length,m=s(a,u);jt=void 0;let y=Dt.length>g?Dt.pop():void 0;if(m instanceof Promise)return m.then((v)=>{if(y)y.issues=v.issues.length?Or(v.issues):bs;return v});if(y)y.issues=m.issues.length?Or(m.issues):bs;return m};if(e._zod.parse=c,e._zod.run===s)e._zod.run=c})}};function Ss(){return Hp}function Kp(e,t){let r=e[Cr]?.backEdges;return r!==void 0&&$s(t)&&r.has(t)}var Gp=()=>{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(i){return e[i]??null}let r={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"},o={nan:"NaN"};function n(i,s){if(i==="number"&&typeof s==="number"&&!Number.isFinite(s))return String(s);return o[i]??i}return(i)=>{switch(i.code){case"invalid_type":{let s=n(i.expected),c=cn(i.input),a=n(c,i.input);return`Invalid input: expected ${s}, received ${a}`}case"invalid_value":if(i.values.length===1)return`Invalid input: expected ${ur(i.values[0])}`;return`Invalid option: expected one of ${sr(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",c=t(i.origin);if(c)return`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${c.unit??"elements"}`;return`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",c=t(i.origin);if(c)return`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${c.unit}`;return`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;if(s.format==="starts_with")return`Invalid string: must start with "${s.prefix}"`;if(s.format==="ends_with")return`Invalid string: must end with "${s.suffix}"`;if(s.format==="includes")return`Invalid string: must include "${s.includes}"`;if(s.format==="regex")return`Invalid string: must match pattern ${s.pattern}`;return`Invalid ${r[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${sr(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":if(i.options&&Array.isArray(i.options)&&i.options.length>0)return`Invalid discriminator value. Expected ${i.options.map((c)=>`'${c}'`).join(" | ")}`;if(i.inclusive===!1)return"Invalid input: more than one option matched";return"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Rr(){return{localeError:Gp()}}var Ps;class Es{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];if(this._map.set(e,r),r&&typeof r==="object"&&"id"in r)this._idmap.set(r.id,e);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);if(t&&typeof t==="object"&&"id"in t)this._idmap.delete(t.id);return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}}function qp(){return new Es}(Ps=globalThis).__zod_globalRegistry??(Ps.__zod_globalRegistry=qp());var $e=globalThis.__zod_globalRegistry;function Mt(e){if(e.checks)e.checks=[...e.checks];return e}function Zs(e,t){return new e(Mt({type:"string",...x(t)}))}function Os(e,t){return new e(Mt({type:"string",coerce:!0,...x(t)}))}function Cs(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...x(t)})}function Rs(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...x(t)})}function Ir(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...x(t)})}function Is(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...x(t)})}function As(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...x(t)})}function Ts(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...x(t)})}function Ar(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...x(t)})}function Ns(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...x(t)})}function js(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...x(t)})}function Ds(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...x(t)})}function Fs(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...x(t)})}function Ls(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...x(t)})}function Ms(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...x(t)})}function Us(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...x(t)})}function Ws(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...x(t)})}function Bs(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...x(t)})}function Js(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...x(t)})}function Vs(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...x(t)})}function Hs(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...x(t)})}function Ks(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...x(t)})}function Gs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...x(t)})}function qs(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...x(t)})}function Xs(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...x(t)})}function Ys(e,t){return new e({type:"string",format:"date",check:"string_format",...x(t)})}function Qs(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...x(t)})}function ec(e,t){return new e({type:"string",format:"duration",check:"string_format",...x(t)})}function tc(e,t){return new e(Mt({type:"number",checks:[],...x(t)}))}function rc(e,t){return new e(Mt({type:"number",coerce:!0,checks:[],...x(t)}))}function oc(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...x(t)})}function nc(e,t){return new e({type:"boolean",...x(t)})}function ic(e,t){return new e({type:"boolean",coerce:!0,...x(t)})}function sc(e,t){return new e({type:"bigint",coerce:!0,...x(t)})}function cc(e){return new e({type:"unknown"})}function ac(e,t){return new e({type:"never",...x(t)})}function uc(e,t){return new e({type:"date",coerce:!0,...x(t)})}function Ie(e,t){return new _r({check:"less_than",...x(t),value:e,inclusive:!1})}function le(e,t){return new _r({check:"less_than",...x(t),value:e,inclusive:!0})}function Ae(e,t){return new br({check:"greater_than",...x(t),value:e,inclusive:!1})}function fe(e,t){return new br({check:"greater_than",...x(t),value:e,inclusive:!0})}function rt(e,t){return new ei({check:"multiple_of",...x(t),value:e})}function Ut(e,t){return new ri({check:"max_length",...x(t),maximum:e})}function Te(e,t){return new oi({check:"min_length",...x(t),minimum:e})}function Wt(e,t){return new ni({check:"length_equals",...x(t),length:e})}function Tr(e,t){return new ii({check:"string_format",format:"regex",...x(t),pattern:e})}function Nr(e){return new si({check:"string_format",format:"lowercase",...x(e)})}function jr(e){return new ci({check:"string_format",format:"uppercase",...x(e)})}function Dr(e,t){return new ai({check:"string_format",format:"includes",...x(t),includes:e})}function Fr(e,t){return new ui({check:"string_format",format:"starts_with",...x(t),prefix:e})}function Lr(e,t){return new pi({check:"string_format",format:"ends_with",...x(t),suffix:e})}function xe(e){return new li({check:"overwrite",tx:e})}function Mr(e){return xe((t)=>t.normalize(e))}function Ur(){return xe((e)=>e.trim())}function Wr(){return xe((e)=>e.toLowerCase())}function Br(){return xe((e)=>e.toUpperCase())}function Jr(){return xe((e)=>Qo(e))}function pc(e,t,r){return new e({type:"array",element:t,...x(r)})}function lc(e,t,r){return new e({type:"custom",check:"custom",fn:t,...x(r)})}function fc(e,t){let r=Xp((o)=>(o.addIssue=(n)=>{if(typeof n==="string")o.issues.push(ke(n,o.value,r._zod.def));else{let i=n;if(i.fatal)i.continue=!1;if(i.code??(i.code="custom"),!("input"in i))i.input=o.value;i.inst??(i.inst=r),i.continue??(i.continue=!r._zod.def.abort),o.issues.push(ke(i))}},e(o.value,o)),t);return r}function Xp(e,t){let r=new T({check:"custom",...x(t)});return r._zod.check=e,r}function ot(e,...t){for(let r of t)for(let o of Reflect.ownKeys(r))if(Object.prototype.propertyIsEnumerable.call(r,o))Q(e,o,r[o]);return e}function Hr(e){let t=e?.target??"draft-2020-12";if(t==="draft-4")t="draft-04";if(t==="draft-7")t="draft-07";return{processors:e.processors??{},metadataRegistry:e?.metadata??$e,target:t,unrepresentable:e?.unrepresentable??"throw",override:e?.override??(()=>{}),io:e?.io??"output",counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??"ref",reused:e?.reused??"inline",intersections:[],deferred:[],external:e?.external??void 0}}function re(e,t,r,o,n){let i=typeof t.unrepresentable==="function"?t.unrepresentable({zodSchema:e,path:o.path,message:n}):t.unrepresentable;if(i==="any")return!1;if(i===void 0||i==="throw")throw Error(n);return Object.assign(r,i),!0}function A(e,t,r={path:[],schemaPath:[]}){var o;let n=e._zod.def,i=t.seen.get(e);if(i){if(i.count++,r.schemaPath.includes(e))i.cycle=r.path;return i.schema}let s={schema:{},count:1,cycle:void 0,path:r.path};t.seen.set(e,s),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;let c=e._zod.toJSONSchema?.();if(c)s.schema=c;else{let p={...r,schemaPath:[...r.schemaPath,e],path:r.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,s.schema,p);else{let f=s.schema,d=t.processors[n.type];if(!d)throw Error(`[toJSONSchema]: Non-representable type encountered: ${n.type}`);d(e,t,f,p)}let l=e._zod.parent;if(l){if(!s.ref)s.ref=l;A(l,t,p),t.seen.get(l).isParent=!0}}let a=t.metadataRegistry.get(e);if(a)ot(s.schema,a);if(t.io==="input"&&F(e))delete s.schema.examples,delete s.schema.default;if(t.io==="input"&&"_prefault"in s.schema)(o=s.schema).default??(o.default=s.schema._prefault);return delete s.schema._prefault,t.seen.get(e).schema}function dc(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Kr(e,t){let r=e.seen.get(t);if(!r)throw Error("Unprocessed schema. This is a bug in Zod.");if(e.external&&e.sharedDefsExtractedFor===e.external)return;let o=new Map;for(let s of e.seen.entries()){let c=e.metadataRegistry.get(s[0])?.id;if(c){let a=o.get(c);if(a&&a!==s[0])throw Error(`Duplicate schema id "${c}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);o.set(c,s[0])}}let n=(s)=>{let c=e.target==="draft-2020-12"?"$defs":"definitions";if(e.external){let l=e.external.registry.get(s[0])?.id,f=e.external.uri??((g)=>g);if(l)return{ref:f(l)};let d=s[1].defId??s[1].schema.id??`schema${e.counter++}`;return s[1].defId=d,{defId:d,ref:`${f("__shared")}#/${c}/${dc(d)}`}}let a="#",u=`${a}/${c}/`;if(s[1]===r&&!s[1].schema.id)return{ref:a};let p=s[1].schema.id??`__schema${e.counter++}`;return{defId:p,ref:u+dc(p)}},i=(s)=>{if(s[1].schema.$ref)return;let c=s[1],{ref:a,defId:u}=n(s);if(c.def={...c.schema},u)c.defId=u;let p=c.schema;for(let l in p)delete p[l];p.$ref=a};if(e.cycles==="throw")for(let s of e.seen.entries()){let c=s[1];if(c.cycle)throw Error(`Cycle detected: #/${c.cycle?.join("/")}/<root>
|
|
57
|
+
|
|
58
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let s of e.seen.entries()){let c=s[1];if(t===s[0]){i(s);continue}if(e.external){let u=e.external.registry.get(s[0])?.id;if(t!==s[0]&&u){i(s);continue}}if(e.metadataRegistry.get(s[0])?.id){i(s);continue}if(c.cycle){i(s);continue}if(c.count>1){if(e.reused==="ref")i(s)}}if(e.external)e.sharedDefsExtractedFor=e.external}function gc(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let r=[];for(let o of t){if(!o||typeof o!=="object")return;gc(o);let n=Object.keys(o);if(n.length!==1||n[0]!=="type")return;let i=o.type;for(let s of Array.isArray(i)?i:[i]){if(typeof s!=="string")return;if(!r.includes(s))r.push(s)}}delete e.anyOf,e.type=r.length===1?r[0]:r}var yc=new Set(["type","properties","required","additionalProperties"]),hc=["oneOf","anyOf"];function mc(e){let t=e.additionalProperties;if(t===void 0||t===!1||typeof t!=="object"||t===null)return null;return Object.keys(t).length?t:null}function Vr(e){let t=[];for(let i of e){if(typeof i!=="object"||i.type!=="object")return null;for(let s in i)if(!yc.has(s))return null;t.push(i)}let r={},o=new Set;for(let i of t){for(let s in i.properties){if(Object.prototype.hasOwnProperty.call(r,s))continue;let c=[];for(let u of t){let p=u.properties?.[s]??mc(u);if(p===null||p===void 0)continue;if(!c.some((l)=>JSON.stringify(l)===JSON.stringify(p)))c.push(p)}let a=c.length===1?c[0]:Vr(c)??{allOf:c};Q(r,s,a)}for(let s of i.required??[])o.add(s)}let n={type:"object",properties:r};if(o.size)n.required=[...o];if(t.every((i)=>i.additionalProperties===!1))n.additionalProperties=!1;else{let i=[];for(let s of t){let c=mc(s);if(c&&!i.some((a)=>JSON.stringify(a)===JSON.stringify(c)))i.push(c)}if(i.length===1)n.additionalProperties=i[0];else if(i.length>1)n.additionalProperties={allOf:i}}return n}function Yp(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let n of yc)if(n in e)return;let r=t.filter((n)=>hc.some((i)=>Array.isArray(n[i]))),o=null;if(!r.length)o=Vr(t);else{let n=r[0],i=hc.find((a)=>Array.isArray(n[a]));if(Object.keys(n).length!==1)return;let s=t.filter((a)=>a!==n),c=n[i].map((a)=>Vr([...s,a]));if(c.some((a)=>!a))return;o={[i]:c}}if(!o)return;delete e.allOf,ot(e,o)}function Gr(e,t){let r=e.seen.get(t);if(!r)throw Error("Unprocessed schema. This is a bug in Zod.");let o=(c)=>{let a=e.seen.get(c);if(a.ref===null)return;let u=a.def??a.schema,p={...u},l=a.ref;if(a.ref=null,l){o(l);let d=e.seen.get(l),g=d.schema;if(g.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0"))u.allOf=u.allOf??[],u.allOf.push(g);else ot(u,g);if(ot(u,p),c._zod.parent===l)for(let y in u){if(y==="$ref"||y==="allOf")continue;if(!(y in p))delete u[y]}if(g.$ref&&d.def)for(let y in u){if(y==="$ref"||y==="allOf")continue;if(y in d.def&&JSON.stringify(u[y])===JSON.stringify(d.def[y]))delete u[y]}}let f=c._zod.parent;if(f&&f!==l){o(f);let d=e.seen.get(f);if(d?.schema.$ref){if(u.$ref=d.schema.$ref,d.def)for(let g in u){if(g==="$ref"||g==="allOf")continue;if(g in d.def&&JSON.stringify(u[g])===JSON.stringify(d.def[g]))delete u[g]}}}e.override({zodSchema:c,jsonSchema:u,path:a.path??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let c of[...e.seen.entries()].reverse())o(c[0]);if(e.target!=="openapi-3.0")for(let c of e.seen.entries())gc(c[1].def??c[1].schema);for(let c of e.deferred)c();if(e.intersections.length){let c=new Map;for(let a of e.seen.values())for(let u of[a.schema,a.def]){let p=u?.allOf;if(!Array.isArray(p))continue;let l=c.get(p);if(l)l.push(u);else c.set(p,[u])}for(let a of e.intersections)for(let u of c.get(a)??[])Yp(u)}}let n={};if(e.target==="draft-2020-12")n.$schema="https://json-schema.org/draft/2020-12/schema";else if(e.target==="draft-07")n.$schema="http://json-schema.org/draft-07/schema#";else if(e.target==="draft-04")n.$schema="http://json-schema.org/draft-04/schema#";else if(e.target==="openapi-3.0");if(e.external?.uri){let c=e.external.registry.get(t)?.id;if(!c)throw Error("Schema is missing an `id` property");n.$id=e.external.uri(c)}ot(n,r.defId?r.schema:r.def??r.schema);let i=e.metadataRegistry.get(t)?.id;if(i!==void 0&&n.id===i)delete n.id;let s=e.external?.defs??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let c of e.seen.entries()){let a=c[1];if(a.def&&a.defId){if(a.def.id===a.defId)delete a.def.id;Q(s,a.defId,a.def)}}if(e.external)e.sharedEmitDoneFor=e.external;if(e.external);else if(Object.keys(s).length>0)if(e.target==="draft-2020-12")n.$defs=s;else n.definitions=s;try{let c=JSON.parse(JSON.stringify(n));return Object.defineProperty(c,"~standard",{value:{...t["~standard"],jsonSchema:{input:nt(t,"input",e.processors),output:nt(t,"output",e.processors)}},enumerable:!1,writable:!1}),c}catch(c){throw Error("Error converting schema to JSON.")}}function F(e,t){let r=t??{seen:new Set};if(r.seen.has(e))return!1;r.seen.add(e);let o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return F(o.element,r);if(o.type==="set")return F(o.valueType,r);if(o.type==="lazy")return F(o.getter(),r);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault"||o.type==="catch")return F(o.innerType,r);if(o.type==="intersection")return F(o.left,r)||F(o.right,r);if(o.type==="record"||o.type==="map")return F(o.keyType,r)||F(o.valueType,r);if(o.type==="pipe"){if(e._zod.traits.has("$ZodCodec"))return!0;return F(o.in,r)||F(o.out,r)}if(o.type==="object"){for(let n in o.shape)if(F(o.shape[n],r))return!0;return!1}if(o.type==="union"){for(let n of o.options)if(F(n,r))return!0;return!1}if(o.type==="tuple"){for(let n of o.items)if(F(n,r))return!0;if(o.rest&&F(o.rest,r))return!0;return!1}return!1}var xc=(e,t={})=>(r)=>{let o=Hr({...r,processors:t});return A(e,o),Kr(o,e),Gr(o,e)},nt=(e,t,r={})=>(o)=>{let{libraryOptions:n,target:i}=o??{},s=Hr({...n??{},target:i,io:t,processors:r});return A(e,s),Kr(s,e),Gr(s,e)};var Ne=(e,t,r)=>{if(e[t]===void 0||r>e[t])e[t]=r},je=(e,t,r)=>{if(e[t]===void 0||r<e[t])e[t]=r},vc=(e,t)=>{Ne(e,"minimum",t),je(e,"maximum",t)},kc=(e,t)=>{if(e.multipleOf??(e.multipleOf=[]),!e.multipleOf.includes(t))e.multipleOf.push(t)},$c=(e,t)=>{e.patterns??(e.patterns=new Set),e.patterns.add(t)},zc=(e,t)=>{e.mime=e.mime?e.mime.filter((r)=>t.includes(r)):[...t]},Sc=(e,t)=>{if(e.format=t,t.includes("int"))e.isInt=!0},wc=(e,t)=>Ne(e,"minimum",t.minimum),_c=(e,t)=>je(e,"maximum",t.maximum),bc=(e)=>(t,r)=>{Sc(t,r.format);let[o,n]=e[r.format];Ne(t,"minimum",o),je(t,"maximum",n)},Qp={greater_than:(e,t)=>Ne(e,t.inclusive?"minimum":"exclusiveMinimum",t.value),less_than:(e,t)=>je(e,t.inclusive?"maximum":"exclusiveMaximum",t.value),multiple_of:(e,t)=>kc(e,t.value),number_format:bc(xt),bigint_format:bc(pr),min_length:wc,max_length:_c,length_equals:(e,t)=>vc(e,t.length),min_size:wc,max_size:_c,size_equals:(e,t)=>vc(e,t.size),string_format:(e,t)=>{if(Sc(e,t.format),t.pattern)$c(e,t.pattern);if(t.format==="base64"||t.format==="base64url")e.contentEncoding=t.format;if(t.local||t.precision===-1)e.laxFormat=!0},mime_type:(e,t)=>zc(e,t.mime)};function j(e){let t={},r=e._zod.def,o=e._zod.traits.has("$ZodCheck")?[e,...r.checks??[]]:r.checks??[];for(let i of o)Qp[i._zod.def.check]?.(t,i._zod.def);let n=e._zod.bag;if(n.minimum!==void 0)Ne(t,"minimum",n.minimum);if(n.exclusiveMinimum!==void 0)Ne(t,"exclusiveMinimum",n.exclusiveMinimum);if(n.maximum!==void 0)je(t,"maximum",n.maximum);if(n.exclusiveMaximum!==void 0)je(t,"exclusiveMaximum",n.exclusiveMaximum);if(n.multipleOf!==void 0)kc(t,n.multipleOf);if(n.format!==void 0){if(t.format??(t.format=n.format),n.format.includes("int"))t.isInt=!0}if(n.mime)zc(t,n.mime);for(let i of n.patterns??[])$c(t,i);return t}var el={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},tl=new Map([[Sr,Mn],[Nt,Un]]),rl=(e)=>tl.get(e)??e,Pc=(e,t,r,o)=>{let n=r;n.type="string";let{minimum:i,maximum:s,format:c,patterns:a,contentEncoding:u,laxFormat:p}=j(e);if(typeof i==="number")n.minLength=i;if(typeof s==="number")n.maxLength=s;if(c){if(n.format=el[c]??c,n.format==="")delete n.format;if(c==="time"||p)delete n.format}if(u)n.contentEncoding=u;if(a&&a.size>0){let l=[...a].map(rl);if(l.length===1)n.pattern=l[0].source;else if(l.length>1)n.allOf=[...l.map((f)=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:f.source}))]}},Ec=(e,t,r,o)=>{let n=r,{minimum:i,maximum:s,multipleOf:c,exclusiveMaximum:a,exclusiveMinimum:u,isInt:p}=j(e);n.type=p?"integer":"number";let l=typeof u==="number"&&u>=(i??Number.NEGATIVE_INFINITY),f=typeof a==="number"&&a<=(s??Number.POSITIVE_INFINITY),d=t.target==="draft-04"||t.target==="openapi-3.0";if(l)if(d)n.minimum=u,n.exclusiveMinimum=!0;else n.exclusiveMinimum=u;else if(typeof i==="number")n.minimum=i;if(f)if(d)n.maximum=a,n.exclusiveMaximum=!0;else n.exclusiveMaximum=a;else if(typeof s==="number")n.maximum=s;if(c){let g=new Set;for(let v of c)if(Number.isFinite(v)&&v!==0)g.add(Math.abs(v));else re(e,t,n,o,`A multipleOf divisor of ${v} cannot be represented in JSON Schema`);let[m,...y]=g;if(m!==void 0)n.multipleOf=m;if(y.length)n.allOf=[...n.allOf??[],...y.map((v)=>({multipleOf:v}))]}},Zc=(e,t,r,o)=>{r.type="boolean"},Oc=(e,t,r,o)=>{re(e,t,r,o,"BigInt cannot be represented in JSON Schema")};var Cc=(e,t,r,o)=>{r.not={}};var Rc=(e,t,r,o)=>{},Ic=(e,t,r,o)=>{re(e,t,r,o,"Date cannot be represented in JSON Schema")},Ac=(e,t,r,o)=>{let n=e._zod.def,i=He(n.entries);if(i.length===0){r.not={};return}if(i.every((s)=>typeof s==="number"))r.type="number";if(i.every((s)=>typeof s==="string"))r.type="string";r.enum=i},Tc=(e,t,r,o)=>{let n=e._zod.def;if(n.values.length===0){r.not={};return}let i=[];for(let s of n.values)if(s===void 0){if(re(e,t,r,o,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof s==="bigint"){if(re(e,t,r,o,"BigInt literals cannot be represented in JSON Schema"))return;i.push(Number(s))}else i.push(s);if(i.length===0);else if(i.length===1){let s=i[0];if(r.type=s===null?"null":typeof s,t.target==="draft-04"||t.target==="openapi-3.0")r.enum=[s];else r.const=s}else{if(i.every((s)=>typeof s==="number"))r.type="number";if(i.every((s)=>typeof s==="string"))r.type="string";if(i.every((s)=>typeof s==="boolean"))r.type="boolean";if(i.every((s)=>s===null))r.type="null";r.enum=i}};var Nc=(e,t,r,o)=>{re(e,t,r,o,"Custom types cannot be represented in JSON Schema")};var jc=(e,t,r,o)=>{re(e,t,r,o,"Transforms cannot be represented in JSON Schema")};var Dc=(e,t,r,o)=>{let n=r,i=e._zod.def,{minimum:s,maximum:c}=j(e);if(typeof s==="number")n.minItems=s;if(typeof c==="number")n.maxItems=c;n.type="array",n.items=A(i.element,t,{...o,path:[...o.path,"items"]})};function qr(e){let t=e._zod.def;if(t.type==="pipe"&&t.in._zod.traits.has("$ZodTransform"))return qr(t.out);if(t.type==="catch")return qr(t.innerType);return e._zod.optin}var Fc=(e,t,r,o)=>{let n=r,i=e._zod.def,s=i.shape;if(Object.getOwnPropertySymbols(s).length&&re(e,t,n,o,"Symbol keys cannot be represented in JSON Schema"))return;n.type="object",n.properties={};for(let u in s)Q(n.properties,u,A(s[u],t,{...o,path:[...o.path,"properties",u]}));let a=[];for(let u of Object.keys(s)){let p=i.shape[u];if(t.io==="input"?qr(p)===void 0:p._zod.optout===void 0)a.push(u)}if(a.length>0)n.required=a;if(i.catchall?._zod.def.type==="never")n.additionalProperties=!1;else if(!i.catchall){if(t.io==="output")n.additionalProperties=!1}else if(i.catchall)n.additionalProperties=A(i.catchall,t,{...o,path:[...o.path,"additionalProperties"]})},Lc=(e,t,r,o)=>{let n=e._zod.def,i=n.inclusive===!1,s=n.options.map((c,a)=>A(c,t,{...o,path:[...o.path,i?"oneOf":"anyOf",a]}));if(i)r.oneOf=s;else r.anyOf=s},Mc=(e,t,r,o)=>{let n=e._zod.def,i=A(n.left,t,{...o,path:[...o.path,"allOf",0]}),s=A(n.right,t,{...o,path:[...o.path,"allOf",1]}),c=(u)=>("allOf"in u)&&Object.keys(u).length===1,a=[...c(i)?i.allOf:[i],...c(s)?s.allOf:[s]];r.allOf=a,t.intersections.push(a)};var Uc=(e,t,r,o)=>{let n=e._zod.def,i=A(n.innerType,t,o),s=t.seen.get(e);if(t.target==="openapi-3.0")s.ref=n.innerType,r.nullable=!0;else r.anyOf=[i,{type:"null"}]},Wc=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);i.ref=n.innerType},Xr=Symbol();function Bc(e,t,r,o,n){let i=!1,s=JSON.stringify(e,(c,a)=>{if(typeof a!=="bigint")return a;return i=!0,null});if(!i)return JSON.parse(s);return re(t,r,o,n,"BigInt defaults cannot be represented in JSON Schema"),Xr}var Jc=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);i.ref=n.innerType;let s=Bc(n.defaultValue,e,t,r,o);if(s!==Xr)r.default=s},Vc=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);if(i.ref=n.innerType,t.io!=="input")return;let s=Bc(n.defaultValue,e,t,r,o);if(s!==Xr)r._prefault=s},Hc=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);i.ref=n.innerType;let s;try{s=n.catchValue(void 0)}catch{re(e,t,r,o,"Dynamic catch values are not supported in JSON Schema");return}r.default=s},Kc=(e,t,r,o)=>{let n=e._zod.def,i=n.in._zod.traits.has("$ZodTransform"),s=t.io==="input"?i?n.out:n.in:n.out;A(s,t,o);let c=t.seen.get(e);c.ref=s},Gc=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);i.ref=n.innerType,r.readOnly=!0};var Yr=(e,t,r,o)=>{let n=e._zod.def;A(n.innerType,t,o);let i=t.seen.get(e);i.ref=n.innerType};var qc=new WeakSet([Object.prototype,Error.prototype]);function Bt(e,t,r){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let o=r(this);return Object.defineProperty(this,t,{value:o,configurable:!0,writable:!0}),o},set(o){Object.defineProperty(this,t,{value:o,configurable:!0,writable:!0})}})}var ll=(e,t)=>{hn.init(e,t),e.name="ZodError";let r=Object.getPrototypeOf(e);if(qc.has(r))return;qc.add(r),Bt(r,"format",(o)=>(n)=>gn(o,n)),Bt(r,"flatten",(o)=>(n)=>mn(o,n)),Bt(r,"addIssue",(o)=>(n)=>{o.issues.push(n),o.message=JSON.stringify(o.issues,Ke,2)}),Bt(r,"addIssues",(o)=>(n)=>{o.issues.push(...n),o.message=JSON.stringify(o.issues,Ke,2)}),Object.defineProperty(r,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}})};var J=h("ZodError",ll,void 0,{Parent:Error});var Xc=Pt(J),Yc=Et(J),Qc=Zt(J),ea=Ot(J),ta=xn(J),ra=vn(J),oa=wn(J),na=_n(J),ia=bn(J),sa=kn(J),ca=$n(J),aa=zn(J);function dl(){if(!B.localeError)te(Rr())}function eo(){if(!B.memoizer)te({memoizer:Ss()})}var O=h("ZodType",(e,t)=>(dl(),E.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(W(t,{checks:[...t.checks??[],...e.map((r)=>typeof r==="function"?{_zod:{check:r,def:{check:"custom"},onattach:[]}}:r)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return ne(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(sf(e,t))},superRefine(e,t){return this.check(cf(e,t))},overwrite(e){return this.check(xe(e))},optional(){return la(this)},exactOptional(){return Vl(this)},nullable(){return fa(this)},nullish(){return la(fa(this))},nonoptional(e){return Yl(this,e)},array(){return _(this)},or(e){return no([this,e])},and(e){return Ul(this,e)},transform(e){return da(this,Jl(e))},default(e){return Gl(this,e)},prefault(e){return Xl(this,e)},catch(e){return ef(this,e)},pipe(e){return da(this,e)},readonly(){return of(this)},describe(e){let t=this.clone();return $e.add(t,{description:e}),t},meta(...e){if(e.length===0)return $e.get(this);let t=this.clone();return $e.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 $t(this,"~standard",{...zr(this),jsonSchema:{input:nt(this,"input"),output:nt(this,"output")}})},set "~standard"(e){pe(this,"~standard",e)},parse:function e(t,r){return Xc(this,t,r,{callee:e})},parseAsync:async function e(t,r){return await Yc(this,t,r,{callee:e})},safeParse(e,t){return Qc(this,e,t)},async safeParseAsync(e,t){return ea(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){pe(this,"spa",e)},validate(e,t){return mr(this,e,t)},validateAsync(e,t){return gr(this,e,t)},encode:function e(t,r){return ta(this,t,r,{callee:e})},decode:function e(t,r){return ra(this,t,r,{callee:e})},encodeAsync:async function e(t,r){return await oa(this,t,r,{callee:e})},decodeAsync:async function e(t,r){return await na(this,t,r,{callee:e})},safeEncode(e,t){return ia(this,e,t)},safeDecode(e,t){return sa(this,e,t)},async safeEncodeAsync(e,t){return ca(this,e,t)},async safeDecodeAsync(e,t){return aa(this,e,t)},toJSONSchema(e){return xc(this,{})(e)},get description(){return $e.get(this)?.description},get _def(){return this._zod.def}}),ha=h("_ZodString",(e,t)=>{Tt.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Pc(e,r,o,n)},zt({format:(e)=>j(e).format??null,minLength:(e)=>j(e).minimum??null,maxLength:(e)=>j(e).maximum??null},{regex(...e){return this.check(Tr(...e))},includes(...e){return this.check(Dr(...e))},startsWith(...e){return this.check(Fr(...e))},endsWith(...e){return this.check(Lr(...e))},min(...e){return this.check(Te(...e))},max(...e){return this.check(Ut(...e))},length(...e){return this.check(Wt(...e))},nonempty(...e){return this.check(Te(1,...e))},lowercase(e){return this.check(Nr(e))},uppercase(e){return this.check(jr(e))},trim(){return this.check(Ur())},normalize(...e){return this.check(Mr(...e))},toLowerCase(){return this.check(Wr())},toUpperCase(){return this.check(Br())},slugify(){return this.check(Jr())}})),to=h("ZodString",(e,t)=>{Tt.init(e,t),ha.init(e,t)},{email(e){return this.check(Cs(xl,e))},url(e){return this.check(Ar(ma,e))},jwt(e){return this.check(qs(Tl,e))},emoji(e){return this.check(Ns(_l,e))},guid(e){return this.check(Rs(vl,e))},uuid(e){return this.check(Ir(st,e))},uuidv4(e){return this.check(Is(st,e))},uuidv6(e){return this.check(As(st,e))},uuidv7(e){return this.check(Ts(st,e))},nanoid(e){return this.check(js(bl,e))},cuid(e){return this.check(Ds(kl,e))},cuid2(e){return this.check(Fs($l,e))},ulid(e){return this.check(Ls(zl,e))},base64(e){return this.check(Hs(Rl,e))},base64url(e){return this.check(Ks(Il,e))},xid(e){return this.check(Ms(Sl,e))},ksuid(e){return this.check(Us(Pl,e))},ipv4(e){return this.check(Ws(El,e))},ipv6(e){return this.check(Bs(Zl,e))},cidrv4(e){return this.check(Js(Ol,e))},cidrv6(e){return this.check(Vs(Cl,e))},e164(e){return this.check(Gs(Al,e))},datetime(e){return this.check(Xs(hl,e))},date(e){return this.check(Ys(ml,e))},time(e){return this.check(Qs(gl,e))},duration(e){return this.check(ec(yl,e))}});function w(e){return Zs(to,e)}var C=h("ZodStringFormat",(e,t)=>{Z.init(e,t),ha.init(e,t)}),hl=h("ZodISODateTime",(e,t)=>{Di.init(e,t),C.init(e,t)}),ml=h("ZodISODate",(e,t)=>{Fi.init(e,t),C.init(e,t)}),gl=h("ZodISOTime",(e,t)=>{Li.init(e,t),C.init(e,t)}),yl=h("ZodISODuration",(e,t)=>{Mi.init(e,t),C.init(e,t)}),xl=h("ZodEmail",(e,t)=>{Pi.init(e,t),C.init(e,t)});var vl=h("ZodGUID",(e,t)=>{zi.init(e,t),C.init(e,t)});var st=h("ZodUUID",(e,t)=>{Si.init(e,t),C.init(e,t)});function ro(e){return Ir(st,e)}var ma=h("ZodURL",(e,t)=>{Oi.init(e,t),C.init(e,t)});function wl(e){return Ar(ma,e)}var _l=h("ZodEmoji",(e,t)=>{Ci.init(e,t),C.init(e,t)});var bl=h("ZodNanoID",(e,t)=>{Ri.init(e,t),C.init(e,t)});var kl=h("ZodCUID",(e,t)=>{Ii.init(e,t),C.init(e,t)});var $l=h("ZodCUID2",(e,t)=>{Ai.init(e,t),C.init(e,t)});var zl=h("ZodULID",(e,t)=>{Ti.init(e,t),C.init(e,t)});var Sl=h("ZodXID",(e,t)=>{Ni.init(e,t),C.init(e,t)});var Pl=h("ZodKSUID",(e,t)=>{ji.init(e,t),C.init(e,t)});var El=h("ZodIPv4",(e,t)=>{Ui.init(e,t),C.init(e,t)});var Zl=h("ZodIPv6",(e,t)=>{Bi.init(e,t),C.init(e,t)});var Ol=h("ZodCIDRv4",(e,t)=>{Ji.init(e,t),C.init(e,t)});var Cl=h("ZodCIDRv6",(e,t)=>{Vi.init(e,t),C.init(e,t)});var Rl=h("ZodBase64",(e,t)=>{Ki.init(e,t),C.init(e,t)});var Il=h("ZodBase64URL",(e,t)=>{Gi.init(e,t),C.init(e,t)});var Al=h("ZodE164",(e,t)=>{qi.init(e,t),C.init(e,t)});var Tl=h("ZodJWT",(e,t)=>{Xi.init(e,t),C.init(e,t)});var Jt=h("ZodNumber",(e,t)=>{Pr.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Ec(e,r,o,n),e.isFinite=!0},zt({minValue:(e)=>{let{minimum:t,exclusiveMinimum:r}=j(e);return Math.max(t??Number.NEGATIVE_INFINITY,r??Number.NEGATIVE_INFINITY)},maxValue:(e)=>{let{maximum:t,exclusiveMaximum:r}=j(e);return Math.min(t??Number.POSITIVE_INFINITY,r??Number.POSITIVE_INFINITY)},isInt:(e)=>{let{isInt:t,multipleOf:r}=j(e);return!!t||!!r?.some(Number.isSafeInteger)},format:(e)=>j(e).format??null},{gt(e,t){return this.check(Ae(e,t))},gte(e,t){return this.check(fe(e,t))},min(e,t){return this.check(fe(e,t))},lt(e,t){return this.check(Ie(e,t))},lte(e,t){return this.check(le(e,t))},max(e,t){return this.check(le(e,t))},int(e){return this.check(ua(e))},safe(e){return this.check(ua(e))},positive(e){return this.check(Ae(0,e))},nonnegative(e){return this.check(fe(0,e))},negative(e){return this.check(Ie(0,e))},nonpositive(e){return this.check(le(0,e))},multipleOf(e,t){return this.check(rt(e,t))},step(e,t){return this.check(rt(e,t))},finite(){return this}}));function ga(e){return tc(Jt,e)}var Nl=h("ZodNumberFormat",(e,t)=>{Yi.init(e,t),Jt.init(e,t)});function ua(e){return oc(Nl,e)}var oo=h("ZodBoolean",(e,t)=>{Qi.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Zc(e,r,o,n)});function De(e){return nc(oo,e)}var ya=h("ZodBigInt",(e,t)=>{es.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Oc(e,r,o,n)},zt({minValue:(e)=>j(e).minimum??null,maxValue:(e)=>j(e).maximum??null,format:(e)=>j(e).format??null},{gte(e,t){return this.check(fe(e,t))},min(e,t){return this.check(fe(e,t))},gt(e,t){return this.check(Ae(e,t))},lt(e,t){return this.check(Ie(e,t))},lte(e,t){return this.check(le(e,t))},max(e,t){return this.check(le(e,t))},positive(e){return this.check(Ae(BigInt(0),e))},negative(e){return this.check(Ie(BigInt(0),e))},nonpositive(e){return this.check(le(BigInt(0),e))},nonnegative(e){return this.check(fe(BigInt(0),e))},multipleOf(e,t){return this.check(rt(e,t))}}));var jl=h("ZodUnknown",(e,t)=>{ts.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Rc(e,r,o,n)});function pa(){return cc(jl)}var Dl=h("ZodNever",(e,t)=>{rs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Cc(e,r,o,n)});function xa(e){return ac(Dl,e)}var va=h("ZodDate",(e,t)=>{os.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Ic(e,r,o,n),e.min=(r,o)=>e.check(fe(r,o)),e.max=(r,o)=>e.check(le(r,o))},zt({minDate:(e)=>{let{minimum:t}=j(e);return t?new Date(t):null},maxDate:(e)=>{let{maximum:t}=j(e);return t?new Date(t):null}},{}));var Fl=h("ZodArray",(e,t)=>{eo(),ns.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Dc(e,r,o,n),e.element=t.element},{min(e,t){return this.check(Te(e,t))},nonempty(e){return this.check(Te(1,e))},max(e,t){return this.check(Ut(e,t))},length(e,t){return this.check(Wt(e,t))},unwrap(){return this.element}});function _(e,t){return pc(Fl,e,t)}var wa=h("ZodObject",(e,t)=>{eo(),cs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Fc(e,r,o,n),yp(e,"shape",(r)=>r._zod.def.shape,!1)},{keyof(){return X(Object.keys(this._zod.def.shape))},catchall(e){return this.clone(W(this._zod.def,{catchall:e}))},passthrough(){return this.clone(W(this._zod.def,{catchall:pa()}))},loose(){return this.clone(W(this._zod.def,{catchall:pa()}))},strict(){return this.clone(W(this._zod.def,{catchall:xa()}))},strip(){return this.clone(W(this._zod.def,{catchall:void 0}))},extend(e){return up(this,e)},safeExtend(e){return pp(this,e)},merge(e){return lp(this,e)},pick(e){return cp(this,e)},omit(e){return ap(this,e)},partial(...e){return nn(ba,this,e[0])},exactPartial(...e){return nn(ka,this,e[0],"exactPartial")},required(...e){return fp($a,this,e[0])}});function ct(e,t){let r={type:"object",shape:e??{},...x(t)};return new wa(r)}function P(e,t){return new wa({type:"object",shape:e,catchall:xa(),...x(t)})}var _a=h("ZodUnion",(e,t)=>{Er.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Lc(e,r,o,n),e.options=t.options});function no(e,t){return new _a({type:"union",options:e,...x(t)})}var Ll=h("ZodDiscriminatedUnion",(e,t)=>{_a.init(e,t),as.init(e,t)});function io(e,t,r){return new Ll({type:"union",options:t,discriminator:e,...x(r)})}var Ml=h("ZodIntersection",(e,t)=>{us.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Mc(e,r,o,n)});function Ul(e,t){return new Ml({type:"intersection",left:e,right:t})}var Qr=h("ZodEnum",(e,t)=>{ps.init(e,t),O.init(e,t),e._zod.processJSONSchema=(o,n,i)=>Ac(e,o,n,i),e.enum=t.entries,e.options=[...e._zod.values];let r=new Set(Object.keys(t.entries));e.extract=(o,n)=>{let i={};for(let s of o)if(r.has(s))i[s]=t.entries[s];else throw Error(`Key ${s} not found in enum`);return new Qr({...t,checks:[],...x(n),entries:i})},e.exclude=(o,n)=>{let i={...t.entries};for(let s of o)if(r.has(s))delete i[s];else throw Error(`Key ${s} not found in enum`);return new Qr({...t,checks:[],...x(n),entries:i})}});function X(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map((o)=>[o,o])):e;return new Qr({type:"enum",entries:r,...x(t)})}var Wl=h("ZodLiteral",(e,t)=>{ls.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Tc(e,r,o,n),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 V(e,t){return new Wl({type:"literal",values:Array.isArray(e)?e:[e],...x(t)})}var Bl=h("ZodTransform",(e,t)=>{eo(),fs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>jc(e,r,o,n),e._zod.parse=(r,o)=>{if(o.direction==="backward")throw new Xe(e.constructor.name);r.addIssue=(i)=>{if(typeof i==="string")r.issues.push(ke(i,r.value,t));else{let s=i;if(s.fatal)s.continue=!1;if(s.code??(s.code="custom"),!("input"in s))s.input=r.value;s.inst??(s.inst=e),r.issues.push(ke(s))}};let n=t.transform(r.value,r);if(n instanceof Promise)return n.then((i)=>(r.value=i,r));return r.value=n,r}});function Jl(e){return new Bl({type:"transform",transform:e})}var ba=h("ZodOptional",(e,t)=>{Zr.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Yr(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function la(e){return new ba({type:"optional",innerType:e})}var ka=h("ZodExactOptional",(e,t)=>{ds.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Yr(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function Vl(e){return new ka({type:"optional",innerType:e})}var Hl=h("ZodNullable",(e,t)=>{hs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Uc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function fa(e){return new Hl({type:"nullable",innerType:e})}var Kl=h("ZodDefault",(e,t)=>{ms.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Jc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Gl(e,t){return new Kl({type:"default",innerType:e,get defaultValue(){return typeof t==="function"?t():ar(t)}})}var ql=h("ZodPrefault",(e,t)=>{gs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Vc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function Xl(e,t){return new ql({type:"prefault",innerType:e,get defaultValue(){return typeof t==="function"?t():ar(t)}})}var $a=h("ZodNonOptional",(e,t)=>{ys.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Wc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function Yl(e,t){return new $a({type:"nonoptional",innerType:e,...x(t)})}var Ql=h("ZodCatch",(e,t)=>{xs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Hc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ef(e,t){return new Ql({type:"catch",innerType:e,catchValue:typeof t==="function"?t:un(t)})}var tf=h("ZodPipe",(e,t)=>{vs.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Kc(e,r,o,n),e.in=t.in,e.out=t.out});function da(e,t){return new tf({type:"pipe",in:e,out:t})}var rf=h("ZodReadonly",(e,t)=>{ws.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Gc(e,r,o,n),e.unwrap=()=>e._zod.def.innerType});function of(e){return new rf({type:"readonly",innerType:e})}var nf=h("ZodCustom",(e,t)=>{_s.init(e,t),O.init(e,t),e._zod.processJSONSchema=(r,o,n)=>Nc(e,r,o,n)});function sf(e,t={}){return lc(nf,e,t)}function cf(e,t){return fc(e,t)}var so={};Vo(so,{bigint:()=>ff,boolean:()=>lf,date:()=>df,number:()=>pf,string:()=>uf});function uf(e){return Os(to,e)}function pf(e){return rc(Jt,e)}function lf(e){return ic(oo,e)}function ff(e){return sc(ya,e)}function df(e){return uc(va,e)}var co=X(["codex","claude","opencode"]),hf=w().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/),mf="Initialize an AppToolkit workspace, register an existing checkout, or find the approved project workflow.",gf={codex:".agents/skills/apptoolkit/SKILL.md",claude:".claude/skills/apptoolkit/SKILL.md",opencode:".opencode/commands/apptoolkit.md"},za=["For requests involving this workspace, read `llm/HARNESS.md` and use its workflow index to open the relevant procedure. Follow the established rules for the project and target repository.","","For a request like “Dame mi lista de pendientes”, open W01. For a new feature, use W16 to establish requirements before W18 implementation."].join(`
|
|
59
|
+
`);function ao(e){let t=new Set(_(co).parse(e)),r=[];if(t.has("codex")||t.has("opencode"))r.push({path:"AGENTS.md",content:za});if(t.has("claude"))r.push({path:"CLAUDE.md",content:za});return r}function yf(e,t){let r=["---"];if(e!=="opencode")r.push("name: apptoolkit");if(r.push(`description: ${mf}`),e==="claude")r.push('argument-hint: "[init | add repo <path> | workflow <request>]"');if(r.push("---","",`# AppToolkit Harness ${t}`,""),e!=="codex")r.push("Treat the following as user arguments, never as shell source.","","$ARGUMENTS","");return r.push("Find the installed workspace root using `llm/harness/workspace.json`. Open the session from that root when discovery is ambiguous.","Read `llm/HARNESS.md`, the project settings, and relevant repository instructions before choosing a workflow. Read the indexed workflow by ID instead of loading every workflow.","","Use `rtk proxy bun --no-env-file <workspace>/llm/harness/runtime/harness.mjs` for deterministic operations. If only Node.js is available, replace `bun --no-env-file` with `node`. Substitute absolute paths with individually quoted arguments.","","- For `init`, use `init --root <workspace> --json` to load the configuration template. Ask about budgets and discover approved project rules, tool routes, authority, and documentation conventions. Keep service connections and snapshots opt-in. Save the agreed answers as an explicit JSON input with credential references only. Apply it with `init --root <workspace> --config <input>`.","- For `add repo <path>`, identify the existing checkout and ask whether harness files there may be versioned. Preview `add repo <path> --root <workspace>` with the agreed `--repo-versioned` or `--repo-local` choice. Apply with `--yes` only after the user approves that plan. Keep shared knowledge in the workspace and scope repository-specific instructions to the checkout.","- For feature requests, use W16 to settle the definition before W18 implementation. In existing projects, an authoritative ticket or approved specification may satisfy that gate.","- For other requests, resolve the closest workflow from the index. Obtain separate authority for external writes and Git writes. Do not grant tool access or move credentials into the workspace.",""),r.join(`
|
|
60
|
+
`)}function uo(e,t){let r=_(co).parse(e),o=hf.parse(t);return[...new Set(r)].map((n)=>({path:gf[n],content:yf(n,o)}))}import{randomUUID as qf}from"node:crypto";import{lstatSync as Xf,readFileSync as Yf,realpathSync as Ga,renameSync as Qf,rmSync as ed,writeFileSync as td}from"node:fs";import{dirname as rd,join as Be,relative as od,resolve as qa}from"node:path";import{mkdirSync as If,readFileSync as Af,rmSync as ja,writeFileSync as Tf}from"node:fs";import{tmpdir as Nf}from"node:os";import{resolve as fo}from"node:path";import{createHash as xf,randomUUID as vf}from"node:crypto";import{chmodSync as wf,linkSync as _f,lstatSync as Vt,mkdirSync as bf,readFileSync as kf,realpathSync as Ea,renameSync as $f,rmSync as zf,unlinkSync as Sf,writeFileSync as Pf}from"node:fs";import{dirname as Sa,isAbsolute as Za,relative as Oa,resolve as ut,sep as Ef}from"node:path";var Pa=16777216;class Ht extends Error{}function Ca(e){return"code"in e&&e.code==="ENOENT"}function de(e){let t=Ea(ut(e));if(!Vt(t).isDirectory())throw Error(`Expected an existing directory at ${t}.`);return t}function po(e,t){let r=Oa(e,t);return r!==".."&&!r.startsWith(`..${Ef}`)&&!Za(r)}function ve(e,t){if(!po(e,t))throw Error(`Path ${t} is outside ${e}.`);return Oa(e,t)||"."}function oe(e){let t=e.split("/");if(Za(e)||/[\\\u0000-\u001f\u007f]/u.test(e)||t.some((r)=>!r||r==="."||r===".."||r===".git"))throw Error(`Expected a safe relative path. Received ${JSON.stringify(e)}.`)}function Kt(e,t){if(oe(t),Ea(e)!==e||!Vt(e).isDirectory())throw Error(`The installation base changed. Inspect ${e} before retrying.`);let r=t.split("/"),o=e;for(let[n,i]of r.entries()){o=ut(o,i);let s=Vt(o,{throwIfNoEntry:!1});if(!s)break;let c=n===r.length-1;if(s.isSymbolicLink()||!c&&!s.isDirectory()||c&&!s.isFile())throw new Ht(`Expected a regular file path. Inspect ${o} before retrying.`)}return ut(e,t)}function M(e){return xf("sha256").update(e).digest("hex")}function U(e,t=420){let r=Buffer.isBuffer(e)?e:Buffer.from(e);return{bytes:r,hash:M(r),mode:t}}function R(e,t){let r=Kt(e,t),o=Vt(r,{throwIfNoEntry:!1});if(!o)return null;if(o.size>Pa)throw Error(`The file at ${r} exceeds the ${Pa}-byte installation limit.`);return U(kf(r),o.mode&511)}function ce(e,t){return e?.hash===t?.hash&&e?.mode===t?.mode}function at(e){if(!ce(R(e.base,e.path),e.before))throw Error(`File changed after planning. Replan before applying ${ut(e.base,e.path)}.`)}function Gt(e){at(e);let t=Kt(e.base,e.path);if(!e.after){Sf(t);return}bf(Sa(t),{recursive:!0}),at(e);let r=ut(Sa(t),`.apptoolkit-${vf()}.tmp`),o=e.after;try{if(Pf(r,o.bytes,{flag:"wx",mode:o.mode}),wf(r,o.mode),e.before)at(e),$f(r,t);else _f(r,t)}finally{zf(r,{force:!0})}}import{spawnSync as Zf}from"node:child_process";import{lstatSync as Of,realpathSync as Ra}from"node:fs";import{dirname as Ia,resolve as lo}from"node:path";function Cf(){let e={};for(let[t,r]of Object.entries(process.env))if(!t.startsWith("GIT_"))e[t]=r;return{...e,GIT_OPTIONAL_LOCKS:"0",LC_ALL:"C"}}function Fe(e,t,r=[0],o=!1){let i=Zf("rtk",["proxy","git",...o?["--literal-pathspecs"]:[],"-C",e,...t],{encoding:"utf8",env:Cf(),maxBuffer:1048576,timeout:1e4});if(i.error)throw Error(`Cannot run Git ${t[0]} in ${e}. Verify RTK and Git are installed.`,{cause:i.error});if(i.status===null||!r.includes(i.status))throw Error(`Git ${t[0]} failed in ${e}: ${i.stderr.trim()||`exit ${i.status}`}`);return{output:i.stdout,status:i.status}}function Aa(e){let t=e;while(!0){let r=Of(lo(t,".git"),{throwIfNoEntry:!1});if(r?.isDirectory()||r?.isFile())return t;if(r)throw Error(`Unsupported Git metadata at ${lo(t,".git")}. Inspect the repository before retrying.`);let o=Ia(t);if(o===t)return;t=o}}function L(e){if(!Aa(e))return;let t=Ra(Fe(e,["rev-parse","--show-toplevel"]).output.trimEnd()),r=Ra(Fe(e,["rev-parse","--path-format=absolute","--git-common-dir"]).output.trimEnd()),o=Fe(e,["rev-parse","--path-format=absolute","--git-path","info/exclude"]).output.trimEnd();if(lo(r,"info/exclude")!==o)throw Error(`Git returned a local exclude path outside the expected metadata directory for ${e}.`);return{root:t,commonDirectory:r,exclude:"info/exclude"}}function ze(e,t){if(Aa(Ia(e))!==t)throw Error(`The path ${e} belongs to a different Git checkout. Select that checkout explicitly before retrying.`)}function Le(e,t){let r=ve(e.root,t);return Fe(e.root,["ls-files","--cached","-z","--",r],[0],!0).output.split("\x00").includes(r)}function qt(e,t){let r=Fe(e.git.root,["check-ignore","--quiet","--",`./${e.path}`],[0,1]);if(!t&&r.status!==0)throw Error(`Git did not ignore ${e.path} in ${e.git.root}. Check for an existing tracked file or a higher-priority rule before retrying.`);if(t&&r.status===0)throw Error(`Git ignores ${e.path} in ${e.git.root}. Choose local mode or resolve the existing exclusion before retrying.`)}function Rf(e){if(e.includes("://")){try{let n=new URL(e);if(n.hostname&&n.pathname!=="/")return`${n.host.toLowerCase()}${n.pathname.replace(/\.git\/?$/,"").replace(/\/$/,"")}`}catch(n){throw Error("Git returned an invalid origin URL. Correct the local repository configuration before retrying.",{cause:n})}return}let t=/^(?:[^@/:\s]+@)?([^/:\s]+):([^\s]+)$/.exec(e),r=t?.[1],o=t?.[2];if(r&&o)return`${r.toLowerCase()}/${o.replace(/^\//,"").replace(/\.git\/?$/,"").replace(/\/$/,"")}`;return}function Ta(e){let t=Fe(e,["config","--local","--get","remote.origin.url"],[0,1]);if(t.status===1)return;let r=Rf(t.output.trimEnd());if(!r)return;return M(r)}function Xt(e){return`/${e.replace(/[\\[\]*? #!]/gu,"\\$&")}`}var jf=so.number().int().positive(),Da=new WeakMap;function Fa(e,t){Da.set(e,t)}function Df(e){let t=fo(Nf(),`apptoolkit-${M(e).slice(0,24)}.lock`),r=fo(t,"owner");try{If(t,{mode:448})}catch(o){if(!(o instanceof Error)||!("code"in o)||o.code!=="EEXIST")throw Error(`Cannot acquire the installation lock ${t}.`,{cause:o});let n;try{n=jf.parse(Af(r,"utf8"))}catch(i){throw Error(`An installation lock already exists at ${t}. If no install is running, remove the stale lock directory and retry.`,{cause:i})}try{process.kill(n,0)}catch(i){if(i instanceof Error&&"code"in i&&i.code==="ESRCH")throw Error(`The previous installation stopped. Remove its stale lock at ${t} and rerun the same installation to resume.`,{cause:i});throw Error(`Cannot confirm whether the installation holding ${t} is still running.`,{cause:i})}throw Error(`Another installation is running for ${e} with process ID ${n}. Retry after it finishes.`)}try{Tf(r,`${process.pid}
|
|
61
|
+
`,{mode:384,flag:"wx"})}catch(o){try{ja(t,{recursive:!0})}catch(n){throw AggregateError([o,n],`Cannot record or remove the installation lock at ${t}.`)}throw Error(`Cannot record the installation lock owner at ${r}.`,{cause:o})}return t}function Ff(e){let t=new Map;for(let r of e){let n=t.get(r.git.root)??L(r.git.root)?.commonDirectory;if(n!==r.git.commonDirectory)throw Error(`Git metadata changed after planning in ${r.git.root}. Replan the installation.`);if(t.set(r.git.root,n),!r.versioned&&Le(r.git,r.absolute))throw Error(`Git started tracking ${r.absolute} after planning. Replan before applying local mode.`)}}function Lf(e,t){let r=[t];for(let o of e.reverse())try{Gt({...o,before:o.after,after:o.before})}catch(n){r.push(Error(`Cannot restore ${fo(o.base,o.path)} after the installation failed.`,{cause:n}))}if(r.length>1)throw AggregateError(r,"Installation stopped and some files could not be restored. Inspect the reported paths and replan.");throw t}function Mf(e){let{exclusions:t,files:r,checks:o}=e,n=[];for(let i of[...e.guards??[],...t,...r])at(i);for(let i of e.boundaries??[])ze(i.absolute,i.gitRoot);Ff(o);try{for(let i of t)Gt(i),n.push(i);for(let i of o)qt(i,i.versioned);for(let i of r)Gt(i),n.push(i)}catch(i){Lf(n,Error("Could not apply the workspace installation. Inspect the cause and replan before retrying.",{cause:i}))}return n.length}function Na(e){let t=[];for(let r of e.reverse())try{ja(r,{recursive:!0})}catch(o){if(!(o instanceof Error)||!Ca(o))t.push(Error(`Cannot remove the installation lock at ${r}. Inspect it before retrying.`,{cause:o}))}return t}function La(e,t){let r=[],o;try{for(let i of[...new Set(e)].sort())r.push(Df(i));o=t()}catch(i){let s=Na(r);if(s.length)throw AggregateError([i,...s],"The installation failed and some locks could not be removed.");throw i}let n=Na(r);if(n.length)throw AggregateError(n,"The installation completed and some locks could not be removed.");return o}function Ma(e,t){return La([e],t)}function ho(e,t){let r=[e,...t.exclusions.map((o)=>o.base),...t.checks.map((o)=>o.git.commonDirectory)];return La(r,()=>Mf(t))}function mo(e){let t=Da.get(e);if(!t)throw Error("Apply requires a plan created by this process. Run the workspace planner again.");if(e.conflicts.length)throw Error(`Resolve the workspace conflicts before applying: ${e.conflicts.map((o)=>o.path).join(", ")}.`);return{changed:ho(e.root,t),receipt:e.receipt}}import{resolve as Uf}from"node:path";var Ua=X(["codex","claude","opencode"]),Wa=X(["plane","penpot"]),go=w().regex(/^[a-f0-9]{64}$/),Ba=P({path:w().min(1),versioned:De(),identity:go.optional()}),Ja=P({schema:V(1),version:w().min(1),hosts:_(Ua),workspaceVersioned:De(),repositories:_(Ba),services:_(Wa),installation:w().regex(/^[a-f0-9]{16}$/).optional(),files:_(P({path:w().min(1),hash:go,versioned:De(),fragment:go.optional()}))}),Va=P({root:w().min(1),action:X(["install","update","add-repo"]),version:w().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/),contentDirectory:w(),hosts:_(Ua).min(1),workspaceVersioned:De(),repositories:_(Ba),services:_(Wa),repository:w().min(1).optional()}),H="llm/harness/workspace.json";var Wf=new Set([".agents/skills/apptoolkit/SKILL.md",".claude/skills/apptoolkit/SKILL.md",".opencode/commands/apptoolkit.md","AGENTS.md","CLAUDE.md",".claude/rules/apptoolkit.md"]);function yo(e,t){if(e.startsWith("llm/harness/")||e.startsWith("llm/author-style/")||Wf.has(e))return e!==H&&e!=="llm/harness/project.json";if(e==="llm/HARNESS.md"||e==="llm/README.md")return!0;return t.some((r)=>e===Se(r.path))}function Se(e){if(e===".")return"llm/harness-context.llm.md";return`${e}/llm/harness-context.llm.md`}function Y(e){let t=de(e),r=R(t,H);if(!r)return;try{let o=Ja.parse(JSON.parse(r.bytes.toString("utf8"))),n=new Set,i=new Set;for(let s of o.repositories){if(s.path!==".")oe(s.path);if(n.has(s.path))throw Error(`Repeated repository path ${s.path}.`);n.add(s.path)}for(let s of o.files){if(oe(s.path),!yo(s.path,o.repositories)||i.has(s.path))throw Error(`Unexpected managed file ${s.path}.`);i.add(s.path)}return o}catch(o){throw Error(`Cannot read the installation receipt at ${Uf(t,H)}. Restore a valid receipt before retrying.`,{cause:o})}}var ae=w().trim().min(1).max(120).regex(/^[\p{L}\p{N}][\p{L}\p{N} ./_:+-]*$/u),Ka=w().regex(/^[A-Z_][A-Z0-9_]*$/).max(120),Me=w().min(1).max(512).refine((e)=>{if(/^[A-Za-z]:|[\\\u0000-\u001f\u007f]/u.test(e))return!1;return e.split("/").every((t)=>t!==""&&t!=="."&&t!==".."&&t!==".git")},"Use a workspace-relative path without traversal."),Ue=no([V("."),Me]),We=X(["plane","penpot"]),Bf=new Set(["localhost","127.0.0.1","[::1]"]),xo=wl().max(512).pipe(w().refine((e)=>{let t=new URL(e);return(t.protocol==="https:"||t.protocol==="http:"&&Bf.has(t.hostname))&&!t.username&&!t.password&&!t.search&&!t.hash},"Use HTTPS or loopback HTTP without credentials, query, or fragment.")),Ha={baseUrl:xo,tokenEnv:Ka,snapshots:X(["off","versioned"])},Jf=io("provider",[P({...Ha,provider:V("plane"),workspace:w().regex(/^[A-Za-z0-9][A-Za-z0-9_-]{0,119}$/),projectId:ro(),auth:X(["api-key","oauth"]).default("api-key")}),P({...Ha,provider:V("penpot"),fileId:ro()})]),Vf=io("mode",[P({mode:V("unlimited")}),P({mode:V("limited"),limits:_(P({category:ae,maximum:ga().positive(),unit:ae})).min(1).max(12)})]),Hf=P({category:ae,scope:ae,authority:ae,provider:ae,access:io("method",[P({method:V("local"),path:Me}),P({method:V("cli"),command:ae}),P({method:V("mcp"),server:ae}),P({method:V("api"),baseUrl:xo,tokenEnv:Ka.optional()}),P({method:V("web"),baseUrl:xo})])}),Kf=P({kind:ae,template:Me.optional(),requiredSections:_(ae).max(30),checklist:_(w().trim().min(1).max(200)).max(30),prohibitedText:_(w().trim().min(1).max(120)).max(30)}),Gf=P({path:Ue,budget:Vf,rules:_(Me).max(50),routes:_(Hf).max(50),documentation:_(Kf).max(50),services:_(Jf).max(2)}).superRefine((e,t)=>{let r=new Set;for(let[n,i]of e.routes.entries()){let s=`${i.category.toLowerCase()}
|
|
62
|
+
${i.scope.toLowerCase()}`;if(r.has(s))t.addIssue({code:"custom",path:["routes",n],message:"Choose one authority for this category and scope."});r.add(s)}let o=new Set;for(let[n,i]of e.services.entries()){if(o.has(i.provider))t.addIssue({code:"custom",path:["services",n],message:"Configure each built-in service once per project."});o.add(i.provider)}}),Pe=P({schema:V(1),projects:_(Gf).min(1).max(100)}).superRefine((e,t)=>{let r=new Set;for(let[o,n]of e.projects.entries()){if(r.has(n.path))t.addIssue({code:"custom",path:["projects",o,"path"],message:"Each project must appear once."});r.add(n.path)}});var wo="llm/harness/project.json",nd=1048576;function he(e){try{return Xf(e)}catch(t){if(t instanceof Error&&"code"in t&&t.code==="ENOENT")return;throw Error(`Inspect ${e}.`,{cause:t})}}function _o(e){let t=he(e);if(!t?.isFile()||t.size>nd)throw Error(`Expected a regular JSON file of at most 1 MiB at ${e}.`);try{return JSON.parse(Yf(e,"utf8"))}catch(r){throw Error(`Read JSON configuration at ${e}.`,{cause:r})}}function Xa(e){let t=e;for(let r of["llm","harness"])if(t=Be(t,r),!he(t)?.isDirectory())throw Error(`Expected an installed, nonsymlink workspace directory at ${t}.`);return t}function pt(e){let t=Ga(qa(e));Xa(t);let r=Y(t);if(!r)throw Error("Install the harness in the selected workspace before configuring it.");return{root:t,receipt:r}}function Ya(e,t){if(Xa(e),!he(t))return;let r=Pe.safeParse(_o(t));if(!r.success){let o=r.error.issues.map((n)=>`${n.path.join(".")||"settings"} ${n.message}`);throw Error(`Invalid project settings in ${t}. ${o.join(" ")}`)}return r.data}function Ee(e){return Ya(e,Be(e,wo))}function id(e,t,r){if(r)return r;let o=Be(e,t),n=[];if(he(o)?.isDirectory()&&Ga(o)===o){for(let i of["AGENTS.md","CLAUDE.md","CONTRIBUTING.md"])if(he(Be(o,i))?.isFile())n.push(i)}return{path:t,budget:null,rules:n,routes:[],documentation:[],services:[]}}function bo(e){let{root:t,receipt:r}=pt(e),o=Ee(t);return{schema:1,projects:[...new Set([".",...r.repositories.map((i)=>i.path)])].map((i)=>{let s=o?.projects.find((c)=>c.path===i);return id(t,i,s)})}}function vo(e){return`${JSON.stringify(e,null,2)}
|
|
63
|
+
`}function sd(e,t){let r=rd(e),o=Be(r,`.project.${qf()}.json`);try{td(o,vo(t),{flag:"wx",mode:384}),Qf(o,e)}catch(n){try{ed(o,{force:!0})}catch(i){throw AggregateError([n,i],`Write project settings and clean the draft at ${e}.`)}throw Error(`Write project settings at ${e}.`,{cause:n})}}async function ko(e){let{root:t}=pt(e.root),r=Ya(t,qa(e.configPath));if(!r)throw Error("Provide the approved project settings JSON file.");return Ma(t,()=>{let{receipt:o}=pt(t),n=new Set([".",...o.repositories.map((u)=>u.path)]);for(let u of r.projects){if(!n.has(u.path))throw Error(`Register ${u.path} before initializing its settings.`);for(let p of u.services){if(!o.services.includes(p.provider))throw Error(`Select ${p.provider} during workspace installation before connecting it.`);if(p.snapshots==="versioned"&&!o.workspaceVersioned)throw Error("Versioned service snapshots require a versioned workspace harness.")}}let i=Be(t,wo);if(!o.workspaceVersioned){let u=L(t);if(u)qt({git:u,path:od(u.root,i)},!1)}let s=Ee(t),c=new Map(s?.projects.map((u)=>[u.path,u]));for(let u of r.projects)c.set(u.path,u);let a=Pe.parse({schema:1,projects:[...c.values()]});if(s&&vo(s)===vo(a))return{path:i,changed:!1,projects:a.projects.length};return sd(i,a),{path:i,changed:!0,projects:a.projects.length}})}var cd=P({root:w().min(1),project:Ue,service:We,verifyHealth:De().optional(),verifyRead:De()}),ad=ct({results:_(ct({id:ro()})).max(1)}),ud=ct({name:w().min(1)}),pd=131072;class we extends Error{}function zo(e){let{root:t,receipt:r}=pt(e.root);if(!r.services.includes(e.service))throw Error(`${e.service} is not selected in the installed workspace.`);if(e.project!=="."&&!r.repositories.some((i)=>i.path===e.project))throw Error(`Register ${e.project} before using its service connections.`);let n=Ee(t)?.projects.find((i)=>i.path===e.project)?.services.find((i)=>i.provider===e.service);if(!n)throw Error(`Initialize the ${e.service} connection for ${e.project} first.`);return{root:t,receipt:r,connection:n}}function $o(e,t){let r=new URL(e);if(!r.pathname.endsWith("/"))r.pathname+="/";return new URL(t,r)}function ld(e){if(e.provider==="plane"){let r=`api/v1/workspaces/${e.workspace}/projects/${e.projectId}/work-items/`,o=$o(e.baseUrl,r);return o.searchParams.set("per_page","1"),o.searchParams.set("fields","id"),o}let t=$o(e.baseUrl,"api/rpc/command/get-file-summary");return t.searchParams.set("id",e.fileId),t}function fd(e,t){let r=new Headers({Accept:"application/json"});if(e.provider==="penpot")r.set("Authorization",`Token ${t}`);else if(e.auth==="oauth")r.set("Authorization",`Bearer ${t}`);else r.set("X-API-Key",t);return r}async function dd(e){if(!e.headers.get("content-type")?.toLowerCase().startsWith("application/json"))throw await e.body?.cancel(),new we("Expected an application/json response from the service.");let r=e.body?.getReader();if(!r)throw new we("The service response has no body.");let o=[],n=0;try{for(;;){let i=await r.read();if(i.done)return Buffer.concat(o,n).toString("utf8");if(n+=i.value.byteLength,n>pd)throw await r.cancel(),new we("The service response exceeded the 128 KiB verification limit.");o.push(i.value)}}finally{r.releaseLock()}}async function hd(e,t){let r=await t($o(e.baseUrl,"./"),{method:"HEAD",redirect:"manual",signal:AbortSignal.timeout(1e4)});return await r.body?.cancel(),r.status}async function md(e,t,r){let o=await r(ld(e),{method:"GET",headers:fd(e,t),redirect:"error",signal:AbortSignal.timeout(1e4)});if(!o.ok)throw await o.body?.cancel(),new we(`The selected resource returned HTTP ${o.status}. Confirm the target and its read permission.`);let n=await dd(o),i=e.provider==="plane"?ad:ud,s=!1;try{s=i.safeParse(JSON.parse(n)).success}catch(c){throw new we("The service returned invalid JSON.",{cause:c})}if(!s)throw new we("The response does not match the expected resource read.");return o.status}async function So(e,t={}){let r=cd.parse(e),{connection:o}=zo(r),i=(t.environment??process.env)[o.tokenEnv],s=typeof i==="string"&&/^[\x21-\x7e]+$/.test(i),c={provider:o.provider,project:r.project,baseUrl:o.baseUrl,credentialEnv:o.tokenEnv,credentialAvailable:s,snapshots:o.snapshots,connectivity:"unchecked",read:"unchecked"},a=t.fetch??fetch;if(r.verifyRead){if(!s)throw Error(`Provide ${o.tokenEnv} in the process environment before verifying access.`);try{let u=await md(o,i,a);return{...c,connectivity:"reachable",read:"verified",httpStatus:u}}catch(u){let p=u instanceof we?u.message:"Check the configured host and retry.";throw Error(`Verify ${o.provider} read for ${r.project}. ${p}`,{cause:u})}}if(r.verifyHealth)try{let u=await hd(o,a);return{...c,connectivity:u>=500?"service-error":"reachable",httpStatus:u}}catch(u){throw Error(`Check ${o.provider} connectivity for ${r.project}.`,{cause:u})}return c}import{createHash as gd}from"node:crypto";import{constants as Qa,createReadStream as yd,openSync as xd}from"node:fs";import{join as vd,relative as eu,resolve as wd}from"node:path";var tu=Me.refine((e)=>e.startsWith("harness-snapshots/"),{message:"Keep native service exports in the workspace harness-snapshots directory."}),_d=w().regex(/^[a-f0-9]{64}$/),bd=P({path:tu,bytes:ga().int().positive(),sha256:_d}),kd=P({root:w().min(1),project:Ue,service:We}),ru=P({schema:V(1),project:Ue,service:We,files:_(bd).min(1).max(30)}).refine((e)=>new Set(e.files.map((t)=>t.path)).size===e.files.length,"Duplicate snapshot paths.");function ou(e,t){let r=wd(e,t),o=tu.parse(eu(e,r)),n=e,i=o.split("/");for(let[s,c]of i.entries()){n=vd(n,c);let a=he(n);if(!(s===i.length-1?a?.isFile():a?.isDirectory()))throw Error(`Expected a regular nonsymlink snapshot path at ${n}.`)}return r}async function nu(e,t){let r=ou(e,t),o=he(r);if(!o?.isFile()||o.size===0)throw Error(`Expected a nonempty snapshot file at ${r}.`);let n=gd("sha256");try{let s=xd(r,Qa.O_RDONLY|Qa.O_NOFOLLOW),c=yd(r,{fd:s});for await(let a of c)n.update(a)}catch(s){throw Error(`Read snapshot bytes at ${r}.`,{cause:s})}let i=he(r);if(!i||o.dev!==i.dev||o.ino!==i.ino||o.mtimeMs!==i.mtimeMs||o.size!==i.size)throw Error(`Snapshot changed while reading ${r}. Retry with a stable export.`);return{path:eu(e,r),bytes:o.size,sha256:n.digest("hex")}}function iu(e){let{root:t,receipt:r,connection:o}=zo(kd.parse(e));if(!r.workspaceVersioned||o.snapshots!=="versioned")throw Error("Enable versioned snapshots for this project and provider before working with a snapshot.");return t}async function Po(e){let t=iu({root:e.root,project:e.project,service:e.service}),r=_(w().min(1)).min(1).max(30).parse(e.paths),o=[];for(let n of r)o.push(await nu(t,n));return ru.parse({schema:1,project:e.project,service:e.service,files:o})}async function Eo(e){let t=iu({root:e.root,project:e.project,service:e.service}),r=ou(t,e.manifestPath),o=ru.parse(_o(r));if(o.project!==e.project||o.service!==e.service)throw Error("The snapshot manifest belongs to a different project or service.");for(let n of o.files){let i=await nu(t,n.path);if(i.bytes!==n.bytes||i.sha256!==n.sha256)throw Error(`Snapshot integrity check failed for ${n.path}.`)}return{manifestPath:r,project:o.project,service:o.service,files:o.files.length}}import{closeSync as su,constants as Zo,fstatSync as cu,lstatSync as au,openSync as $d,readSync as zd,realpathSync as Sd}from"node:fs";import{isAbsolute as pu,join as Pd}from"node:path";var Ed=262144,Zd=new Set([".aws",".git",".gnupg",".npm",".ssh","credentials","node_modules","passwords","private","processing","raw","secret","secrets"]);function lu(e){let t=e.toLowerCase(),r=t.replace(/(?:\.llm)?\.md$/,"");return t.startsWith(".env")||Zd.has(r)}function Od(e){if(pu(e)||/[\\:\x00-\x1f\x7f]/.test(e))throw Error("Provide a relative path inside the project root.");let t=e.split("/");for(let r of t){if(r===""||r==="."||r==="..")throw Error("Paths must use explicit project-relative segments.");if(lu(r))throw Error(`The path crosses a protected location at "${r}".`)}return t}function uu(e,t){if(!pu(e))throw Error("Provide an absolute project root.");if(!au(e).isDirectory())throw Error("The project root must be a directory.");let r=Sd(e);if(r.split("/").filter(Boolean).some((i,s)=>(s!==0||i!=="private")&&lu(i)))throw Error("The project root crosses a protected location.");let n;for(let[i,s]of t.entries()){if(r=Pd(r,s),n=au(r),n.isSymbolicLink())throw Error(`Symbolic links are not allowed in the project path at "${s}".`);if(i<t.length-1&&!n.isDirectory())throw Error(`Expected a directory at "${s}".`)}if(!n?.isFile())throw Error("The project path must resolve to a regular file.");return{path:r,info:n}}function Cd(e,t,r,o){let n=cu(e);if(!n.isFile()||n.ino!==t.ino||n.dev!==t.dev)throw Error("The file changed while opening. Retry after checking its path.");if(n.size>r)throw Error(`${o} source exceeds ${r} bytes. Use a narrower input.`);let i=Buffer.alloc(n.size+1),s=0;while(s<i.length){let a=zd(e,i,s,i.length-s,s);if(a===0)break;s+=a}if(s>r)throw Error(`${o} source exceeds ${r} bytes. Use a narrower input.`);let c=cu(e);if(c.size!==s||n.size!==c.size||n.mtimeMs!==c.mtimeMs||n.ctimeMs!==c.ctimeMs)throw Error("The source changed during the read. Retry with a stable file.");return i.subarray(0,s)}function Rd(e,t,r,o){let n;try{n=Cd(e,t,r,o)}catch(i){try{su(e)}catch(s){throw AggregateError([i,s],"Reading and closing the file both failed.")}throw i}return su(e),n}function Yt(e,t,r,o){try{let n=Od(t),{path:i,info:s}=uu(e,n),c=$d(i,Zo.O_RDONLY|Zo.O_NOFOLLOW|Zo.O_NONBLOCK),a=Rd(c,s,r,o),u=uu(e,n);if(u.path!==i||u.info.ino!==s.ino||u.info.dev!==s.dev)throw Error("The file path changed during the read. Retry after verifying the current path.");return new TextDecoder("utf-8",{fatal:!0}).decode(a)}catch(n){let i=n instanceof Error?n.message:String(n);throw Error(`Unable to read ${o} "${t}". ${i}`,{cause:n})}}function lt(e,t){if(!t.toLowerCase().endsWith(".md"))throw Error("Provide a relative Markdown path inside the project root.");return Yt(e,t,Ed,"Markdown context")}function fu(e){return e.match(/[^\n]*\n|[^\n]+$/g)??[]}function du(e,t,r){let o=e.toLowerCase().replace(/[^\p{L}\p{M}\p{N}_\s-]/gu,"").trim().replace(/\s+/g,"-");return{title:e,level:t,line:r,locator:`line:${r}`,anchor:`#${o}`}}function Id(e){let t=/^ {0,3}(`{3,}|~{3,})/.exec(e)?.[1];if(t)return{marker:t.charAt(0),length:t.length};return}function Ad(e,t){let r=/^ {0,3}(`{3,}|~{3,})[ \t]*$/.exec(e)?.[1];return r!==void 0&&r.startsWith(t.marker)&&r.length>=t.length}function Td(e,t){let r=/^ {0,3}(#{1,6})[ \t]+(.*)$/.exec(e),o=r?.[1],n=r?.[2];if(o&&n){let i=n.replace(/(?:^|[ \t]+)#+[ \t]*$/,"").trim();if(i)return du(i,o.length,t)}return}function Nd(e){if(!e.trim()||/^(?: {4}|\t)/.test(e))return!1;return!/^ {0,3}(?:[>#<]|[-+*][ \t]|\d+[.)][ \t]|\[[^\]]+\]:|(?:[*_-][ \t]*){3,})/.test(e)}function hu(e){let t=[],r,o,n=!1,i=-1;if(e[0]?.trim()==="---")i=e.findIndex((s,c)=>c>0&&/^(---|\.\.\.)$/.test(s.trim()));for(let[s,c]of e.entries()){if(s<=i)continue;let a=c.replace(/\r?\n$/,""),u=s+1;if(r){if(Ad(a,r))r=void 0;continue}if(n||a.trimStart().startsWith("<!--")){n=!a.includes("-->"),o=void 0;continue}if(r=Id(a),r){o=void 0;continue}let p=Td(a,u);if(p){t.push(p),o=void 0;continue}let l=/^ {0,3}(=+|-+)[ \t]*$/.exec(a)?.[1];if(l&&o){let f=o.lines.join(" "),d=l.startsWith("=")?1:2;t.push(du(f,d,o.line)),o=void 0;continue}if(!Nd(a)){o=void 0;continue}if(!o)o={line:u,lines:[]};o.lines.push(a.trim())}return t}var Oo=w().min(1).refine((e)=>!/[\x00-\x1f\x7f]/.test(e),"Control characters are not allowed."),jd=P({root:Oo.max(4096),file:Oo.max(4096),section:Oo.max(512).optional()}),mu=128,gu=16384;function Dd(e,t){let r=e.filter((n)=>{if(/^line:[1-9][0-9]*$/.test(t))return n.locator===t;if(t.startsWith("#"))return n.anchor===t;return n.title===t}),[o]=r;if(!o)throw Error(`No heading matches "${t}". List the heading index and use an exact locator.`);if(r.length>1){let n=r.slice(0,8).map((s)=>s.locator),i=r.length>n.length?", or another locator from the index":"";throw Error(`Heading "${t}" is ambiguous. Use one of ${n.join(", ")}${i}.`)}return o}function yu(e,t){if(Buffer.byteLength(e)>gu)throw Error(`Context output exceeds ${gu} bytes. ${t}`)}function xu(e){let t=jd.parse(e),r=fu(lt(t.root,t.file)),o=hu(r);if(t.section===void 0){if(o.length>mu)throw Error(`Heading index exceeds ${mu} entries. Request a known section or use a narrower map.`);let u={kind:"index",file:t.file,headings:o};return yu(JSON.stringify(u),"Request a known section or use a narrower map."),u}let n=Dd(o,t.section),i=o.find((u)=>u.line>n.line&&u.level<=n.level),s=i?i.line-1:r.length,c=r.slice(n.line-1,s).join(""),a={kind:"section",file:t.file,heading:n,startLine:n.line,endLine:s,text:c};return yu(JSON.stringify(a),"Choose a smaller child section or a narrower map."),a}import{realpathSync as Vd}from"node:fs";import{isAbsolute as Io,normalize as Hd,relative as Kd,resolve as Gd}from"node:path";var wu=X(["lines","functions","branches"]),Fd=X(["LF","LH","FNF","FNH","BRF","BRH"]),Ld={lines:{found:"LF",hit:"LH"},functions:{found:"FNF",hit:"FNH"},branches:{found:"BRF",hit:"BRH"}};function _u(e){return{source:e,summaries:new Map,lines:new Map,branches:new Map,functionNames:new Set,functionHits:new Map,groupIds:new Set,aliasHits:new Map,versionSeen:!1}}function N(e,t){let r=Number(e);if(!/^\d+$/.test(e)||!Number.isSafeInteger(r)||r<t)throw Error("Expected an integer within the supported range.");return r}function ft(e,t,r){if(e.has(t))throw Error("Duplicate coverage entry.");e.set(t,r)}function vu(e,t){if(e.has(t))throw Error("Duplicate coverage identity.");e.add(t)}function Md(e,t){let[r,o,,n,i]=t.split(",");if(!r||!o||i!==void 0)throw Error("Expected a line number and execution count.");let s=N(r,1);if(n!==void 0)N(n,s);ft(e.lines,String(s),N(o,0)>0)}function Ud(e,t){let r=/^([^,]+),([ef]?u?\d+(?:\^\d+)?),(.+),([^,]+)$/.exec(t),o=r?.[1],n=r?.[2],i=r?.[3],s=r?.[4];if(!o||!n||!i||!s)throw Error("Expected a branch line, block, identity and hit count.");let[,c,a]=/^[ef]?u?(\d+)(?:\^(\d+))?$/.exec(n)??[];if(!c)throw Error("Expected a numeric branch block.");let u=JSON.stringify([N(o,1),N(c,0),a===void 0?null:N(a,0),/^\d+$/.test(i)?N(i,0):i]);ft(e.branches,u,s!=="-"&&N(s,0)>0)}function Wd(e,t,r){let o=t==="FN"?/^(\d+),(?:(\d+),)?(.+)$/:/^(\d+),(\d+)(?:,(\d+))?$/,[,n,i,s]=o.exec(r)??[];if(n===void 0)throw Error("Malformed function definition.");if(t==="FN"&&s){let c=N(n,1);if(i)N(i,c);vu(e.functionNames,s);return}if(t==="FNL"&&i){let c=N(i,1);if(s)N(s,c);vu(e.groupIds,String(N(n,0)));return}throw Error("Malformed function definition.")}function Bd(e,t,r){if(t==="FNDA"){let[,a,u]=/^(\d+),(.+)$/.exec(r)??[];if(!a||!u)throw Error("Expected a function hit count and name.");ft(e.functionHits,u,N(a,0)>0);return}let[,o,n,i]=/^(\d+),(\d+),(.+)$/.exec(r)??[];if(!o||!n||!i)throw Error("Expected an alias group, hit count and name.");let s=String(N(o,0)),c=e.aliasHits.get(s)??new Map;ft(c,i,N(n,0)>0),e.aliasHits.set(s,c)}function bu(e,t,r){let o=Fd.safeParse(t);if(o.success){ft(e.summaries,o.data,N(r,0));return}switch(t){case"VER":if(e.versionSeen||!r)throw Error("Expected one source version per record.");e.versionSeen=!0;return;case"DA":return Md(e,r);case"BRDA":return Ud(e,r);case"FN":case"FNL":return Wd(e,t,r);case"FNDA":case"FNA":return Bd(e,t,r);default:throw Error("Unsupported LCOV field. Export a line, function and branch report.")}}function Co(e){let t=0;for(let r of e.values())if(r)t+=1;return{found:e.size,hit:t}}function Jd(e){let t=e.functionNames.size>0||e.functionHits.size>0,r=e.groupIds.size>0||e.aliasHits.size>0;if(t&&r)throw Error("Function records mix classic names and alias groups.");if(r){let o=0;if(e.groupIds.size!==e.aliasHits.size)throw Error("Missing function group or alias records.");for(let n of e.groupIds){let i=e.aliasHits.get(n);if(!i?.size)throw Error("Function group is missing execution records.");if(Array.from(i.values()).some(Boolean))o+=1}return{found:e.groupIds.size,hit:o}}if(e.functionNames.size!==e.functionHits.size)throw Error("Missing function names or execution records.");for(let o of e.functionNames)if(!e.functionHits.has(o))throw Error("A function definition has no matching execution record.");return Co(e.functionHits)}function ku(e,t){let r=Ld[t],o=e.summaries.get(r.found),n=e.summaries.get(r.hit);if(o===void 0||n===void 0)throw Error(`Missing ${r.found} or ${r.hit} summary.`);let i;switch(t){case"lines":i=Co(e.lines);break;case"functions":i=Jd(e);break;case"branches":i=Co(e.branches);break}if(i.found!==o||i.hit!==n)throw Error(`Summary ${n}/${o} differs from measured entries ${i.hit}/${i.found}.`);if(n!==o)throw Error(`Only ${n}/${o} were covered. The requirement is 100 percent.`);return i}var Qt=w().min(1).max(4096).refine((e)=>!/[\x00-\x1f\x7f]/.test(e)),qd=P({root:Qt,file:Qt,config:Qt}),Xd=P({files:_(Qt).min(1).max(1e4),metrics:_(wu).min(1).max(3)});function Ro(e){if(Io(e)||/[\\:\x00-\x1f\x7f]/.test(e)||e.split("/").some((t)=>!t||t==="."||t===".."))throw Error(`Use a project-relative source path in the coverage configuration. Received "${e}".`);return e}function $u(e,t){let r=Kd(e,t);if(!r||r===".."||r.startsWith("../")||Io(r))return;return r}function Yd(e,t,r){if(!e||/[\\:\x00-\x1f\x7f]/.test(e))throw Error("Expected a valid source path in the LCOV record.");if(Io(e)){let o=$u(t,e)??$u(r,e);if(o)return Ro(o);throw Error("An LCOV source is outside the project root.")}return Ro(Hd(e))}function Qd(e,t){for(let[r,o]of t)try{let n=ku(e,r);o.found+=n.found,o.hit+=n.hit}catch(n){let i=n instanceof Error?n.message:String(n);throw Error(`${e.source} ${r}. ${i}`,{cause:n})}}function eh(e,t,r,o){let n=Vd(t),i=new Set,s=new Set,c,a=!1;for(let[p,l]of e.split(/\r?\n/).entries()){if(!l.trim()||l.startsWith("#"))continue;try{if(/[\x00-\x08\x0b-\x1f\x7f]/.test(l))throw Error("Control characters are not allowed in coverage records.");if(l.startsWith("TN:")&&!c&&!a)a=!0;else if((l.startsWith("SF:")||l.startsWith("KF:"))&&!c){let f=l.slice(3),[,d,g]=/^(\d+),(.*)$/.exec(f)??[],m=Yd(g??f,t,n);if(d!==void 0){let y=Number(d);if(!Number.isSafeInteger(y)||s.has(y))throw Error("Expected a distinct safe integer source index.");s.add(y)}if(i.has(m))throw Error(`Duplicate LCOV source "${m}".`);if(!r.has(m))throw Error(`Unexpected LCOV source "${m}".`);c=_u(m),a=!1}else if(l==="end_of_record"&&c)Qd(c,o),i.add(c.source),c=void 0;else if(c){let f=l.indexOf(":");if(f<1)throw Error("Malformed LCOV field.");bu(c,l.slice(0,f),l.slice(f+1))}else throw Error("Expected an LCOV source record.")}catch(f){let d=f instanceof Error?f.message:String(f);throw Error(`LCOV line ${p+1}. ${d}`,{cause:f})}}if(c||a)throw Error("The final LCOV record is incomplete.");let u=Array.from(r).filter((p)=>!i.has(p));if(u.length)throw Error(`LCOV is missing ${u.length} expected source files. First missing path is "${u[0]}".`)}function zu(e){let t=qd.parse(e),r=Yt(t.root,t.config,262144,"coverage configuration"),o;try{o=Xd.parse(JSON.parse(r))}catch(a){throw Error(`Invalid coverage configuration "${t.config}". Provide JSON arrays for files and metrics.`,{cause:a})}let n=new Set(o.files.map(Ro)),i=new Map;for(let a of o.metrics)i.set(a,{found:0,hit:0});if(n.size!==o.files.length||i.size!==o.metrics.length)throw Error("Coverage configuration contains duplicate files or metrics.");let s=Yt(t.root,t.file,16777216,"LCOV report");eh(s,Gd(t.root),n,i);let c=Array.from(i,([a,u])=>{if(u.found===0)throw Error(`No measurable ${a} were found for the selected scope.`);return{metric:a,...u,percent:100}});return{file:t.file,config:t.config,sources:n.size,metrics:c}}import{lstatSync as Bu}from"node:fs";import{relative as Wu,resolve as _e}from"node:path";import{lstatSync as th,readdirSync as Pu}from"node:fs";import{basename as Su,resolve as dt}from"node:path";var rh=ct({name:w().optional(),workspaces:no([_(w()),ct({packages:_(w())})]).optional()}),oh=new Set(["package.json","pnpm-workspace.yaml","Cargo.toml","go.mod","pyproject.toml","Gemfile","pom.xml","composer.json"]),Eu=new Set([".git",".DS_Store",".agents",".claude",".opencode","llm","node_modules","dist","vendor"]);function nh(e){let t=R(e,"package.json");if(!t)return;try{return rh.parse(JSON.parse(t.bytes.toString("utf8")))}catch(r){throw Error(`Cannot read ${dt(e,"package.json")}. Correct the manifest and retry.`,{cause:r})}}function Je(e,t){if(t===".")return e;oe(t);let r=de(dt(e,t));if(!po(e,r)||r!==dt(e,t))throw Error(`Choose a real directory inside ${e}. The repository path resolves through a symbolic link: ${t}.`);if(L(r)?.root!==r)throw Error(`Choose the Git repository root at ${r} before registering it.`);return r}function ih(e){let t=Pu(e,{withFileTypes:!0});if(t.length>2048)throw Error(`Workspace discovery is limited to 2048 entries at ${e}. Choose a narrower directory.`);let r=[];for(let o of t.sort((n,i)=>n.name.localeCompare(i.name,"en"))){if(!o.isDirectory()||o.name.startsWith(".")||Eu.has(o.name))continue;let n=dt(e,o.name);if(!th(dt(n,".git"),{throwIfNoEntry:!1}))continue;if(L(n)?.root!==n)throw Error(`The Git metadata in ${n} does not identify that checkout as a repository root.`);oe(o.name),r.push({path:o.name,name:o.name,gitRoot:n})}return r}function Ze(e){let t=de(e),r=L(t),o=ih(t),n=new Set(Pu(t)),i=nh(t),s=Boolean(i?.workspaces||n.has("pnpm-workspace.yaml")||n.has("lerna.json")),c=[...oh].some((l)=>n.has(l)),a=r?{gitRoot:r.root}:{};if(o.length&&!s){let l=[...o];if(c)l.unshift({path:".",name:i?.name??Su(t),...a});return{root:t,kind:"workspace",monorepo:s,repositories:l,...a}}let u=[...n].every((l)=>Eu.has(l)),p={path:".",name:i?.name??Su(t),...a};return{root:t,kind:u?"blank":"existing",monorepo:s,repositories:[p],...a}}import{lstatSync as Cu}from"node:fs";import{resolve as ht}from"node:path";function sh(e,t,r,o=!1){let n=`# appToolkit harness ${t} begin`,i=`# appToolkit harness ${t} end`,s=e.includes(`\r
|
|
64
|
+
`)?`\r
|
|
65
|
+
`:`
|
|
66
|
+
`,c=e.split(s),a=c.indexOf(n),u=c.indexOf(i);if(a===-1!==(u===-1)||a!==-1&&u<=a||c.lastIndexOf(n)!==a||c.lastIndexOf(i)!==u)throw Error(`The existing appToolkit local exclusion block ${t} is malformed. Repair it before retrying.`);let p=new Set(r);if(o&&a!==-1)for(let d of c.slice(a+1,u)){if(!d.startsWith("/"))throw Error(`The existing appToolkit local exclusion block ${t} contains an unsupported pattern.`);p.add(d)}let l=p.size?[n,...[...p].sort(),i]:[];if(a!==-1)return c.splice(a,u-a+1,...l),c.join(s);if(!l.length)return e;return`${e&&!e.endsWith(s)?`${e}${s}`:e}${l.join(s)}${s}`}function Ao(e,t,r,o=!1){let n=R(e.commonDirectory,e.exclude),i=n?.bytes.toString("utf8")??"";if(n&&!Buffer.from(i).equals(n.bytes))throw Error(`Cannot update the non-UTF-8 local exclusions at ${ht(e.commonDirectory,e.exclude)}.`);let s=sh(i,t,r,o),c=s||n?U(s,n?.mode):null;if(ce(n,c))return;return{base:e.commonDirectory,path:e.exclude,before:n,after:c}}function Zu(e,t){let r=new Map,o=L(e);if(o)r.set(".",o);for(let n of t){if(n.path===".")continue;let i=ht(e,n.path);if(!Cu(i,{throwIfNoEntry:!1})?.isDirectory())continue;let c=L(i);if(c?.root===i)r.set(n.path,c)}return r}function Ou(e,t){let r=[...t.keys()].filter((n)=>n!=="."&&e.startsWith(`${n}/`));r.sort((n,i)=>i.length-n.length);let o=r[0]??".";return t.get(o)}function Ru(e,t,r,o,n){let i=Zu(e,t.repositories),s=new Map,c=[],a=[];if(r){let d=Zu(e,r.repositories);for(let g of d.values())s.set(g.commonDirectory,{scope:g,patterns:new Set});for(let g of n){let m=ht(e,g),y=Ou(g,d);ze(m,y?.root),a.push(y?{absolute:m,gitRoot:y.root}:{absolute:m})}}let u=[...t.files,{path:"llm/harness/workspace.json",versioned:t.workspaceVersioned},{path:"llm/harness/project.json",versioned:t.workspaceVersioned}],p=new Set(t.repositories.filter((d)=>!Cu(ht(e,d.path),{throwIfNoEntry:!1})).map((d)=>Se(d.path)));for(let d of u){if(p.has(d.path))continue;let g=Ou(d.path,i),m=ht(e,d.path);if(ze(m,g?.root),a.push(g?{absolute:m,gitRoot:g.root}:{absolute:m}),!g)continue;let y=ve(g.root,m);if(c.push({git:g,path:y,absolute:m,versioned:d.versioned}),d.versioned)continue;if(Le(g,m)){o.push({path:d.path,reason:"Git already tracks this file. Choose versioned mode or separately remove it from the index before retrying."});continue}let v=s.get(g.commonDirectory)??{scope:g,patterns:new Set};v.patterns.add(Xt(y)),s.set(g.commonDirectory,v)}let l=[],f=t.installation??M(e).slice(0,16);for(let{scope:d,patterns:g}of s.values()){let m=Ao(d,f,g);if(m)l.push(m)}return{operations:l,checks:c,boundaries:a}}import{lstatSync as ch,readdirSync as ah}from"node:fs";import{resolve as Iu}from"node:path";var Au=4096,uh=67108864,ph=new Set([".git","node_modules","raw","processing",".npmrc"]);function Tu(e){if(!e)throw Error("The release content directory is required for install and update.");let t=de(e),r=new Map,o=["."],n=0;while(o.length){let i=o.pop();if(!i)break;let s=ah(Iu(t,i),{withFileTypes:!0});for(let c of s.sort((a,u)=>a.name.localeCompare(u.name,"en"))){let a=i==="."?c.name:`${i}/${c.name}`;if(oe(a),ph.has(c.name)||/^\.env(?:$|\.(?!example$))/u.test(c.name))throw Error(`The release payload includes an unsupported private path: ${a}.`);if(c.isDirectory()&&!ch(Iu(t,a)).isSymbolicLink()){if(o.length+r.size>=Au||a.split("/").length>12)throw Error(`Release content exceeds the directory limits at ${a}.`);o.push(a);continue}let u=`llm/${a}`;if(!c.isFile()||!yo(u,[]))throw Error(`The release payload includes an unsupported file: ${a}.`);let p=R(t,a);if(!p)throw Error(`The release payload changed while reading ${a}.`);if(n+=p.bytes.length,r.size>=Au||n>uh)throw Error(`The release payload exceeds the installation limits at ${a}.`);r.set(u,p)}}if(!r.has("llm/HARNESS.md"))throw Error("The release payload is missing the harness index HARNESS.md.");return r}var er="llm/harness/project.json";function Nu(e,t,r,o){let n=t.repositories.find((c)=>!r.repositories.some((a)=>a.path===c.path));if(!n)return;let i=r.repositories.find((c)=>c.identity&&c.identity===n.identity);if(!i)return;let s=R(e,er);if(!s)return;try{let c=Pe.parse(JSON.parse(s.bytes.toString("utf8")));if(!c.projects.some((p)=>p.path===n.path))return;if(c.projects.some((p)=>p.path===i.path)){o.push({path:er,reason:"Both the old and new checkout paths already have project settings. Reconcile them before registering the move."});return}let a=c.projects.map((p)=>{if(p.path===n.path)return{...p,path:i.path};return p}),u=U(`${JSON.stringify(Pe.parse({...c,projects:a}),null,2)}
|
|
67
|
+
`,s.mode);return{base:e,path:er,before:s,after:u}}catch(c){throw Error(`Cannot reassign the project settings in ${er}. Restore a valid settings file before retrying.`,{cause:c})}}import{lstatSync as lh}from"node:fs";import{resolve as fh}from"node:path";var To="<!-- apptoolkit-harness:begin -->",tr="<!-- apptoolkit-harness:end -->";function Du(e){return["AGENTS.md","CLAUDE.md",".claude/rules/apptoolkit.md"].includes(e)}function dh(e,t){let r=e.indexOf(To),o=e.indexOf(tr);if(r===-1&&o===-1)return;if(r<0||o<=r||e.lastIndexOf(To)!==r||e.lastIndexOf(tr)!==o)throw Error(`The AppToolkit router block in ${t} is malformed. Review its markers before retrying.`);let n=o+tr.length;return{prefix:e.slice(0,r),old:e.slice(r,n),suffix:e.slice(n)}}function ju(e,t,r,o,n,i,s){let c;try{c=R(e,t)}catch(m){if(!(m instanceof Ht))throw m;s.push(`Preserved the existing native instructions path ${t}. Use the installed apptoolkit command to open the harness explicitly.`);return}let a=c?.bytes.toString("utf8")??"",u=n?.files.find((m)=>m.path===t)?.fragment,p=a.includes(`\r
|
|
68
|
+
`)?`\r
|
|
69
|
+
`:`
|
|
70
|
+
`,l=[To,r.trimEnd().replaceAll(`
|
|
71
|
+
`,p),tr].join(p),f=M(l);if(c&&!Buffer.from(a).equals(c.bytes)){i.push({path:t,reason:"The native project instructions are not UTF-8. Open the harness explicitly from the agent instead."});return}let d=dh(a,t);if(u&&!d){i.push({path:t,reason:"The previously installed router block was removed. Restore or reconcile it before updating."});return}if(d){let m=M(d.old);if(m!==u&&m!==f){i.push({path:t,reason:"The existing router block has local edits. Reconcile it before applying the release."});return}if(!u&&!o&&(d.prefix||d.suffix!==p)){s.push(`Preserved the existing ${t}. Use the installed apptoolkit command to open the harness explicitly.`);return}return{content:U(`${d.prefix}${l}${d.suffix}`,c?.mode),versioned:o,fragment:f,observed:c}}if(c&&!o){s.push(`Preserved the existing ${t} in local mode. Use the installed apptoolkit command to open the harness explicitly.`);return}let g=a;if(a&&!a.endsWith(`${p}${p}`))g=a.endsWith(p)?`${a}${p}`:`${a}${p}${p}`;return{content:U(`${g}${l}${p}`,c?.mode),versioned:o,fragment:f,observed:c}}function Fu(e,t,r,o,n){let i=new Map;if(t.hosts.includes("codex")&&lh(fh(e,"AGENTS.override.md"),{throwIfNoEntry:!1}))n.push("Codex may prioritize the existing AGENTS.override.md. Use $apptoolkit explicitly to open the harness.");for(let{path:s,content:c}of ao(t.hosts)){let p=s==="CLAUDE.md"&&r?.files.some((d)=>d.path===".claude/rules/apptoolkit.md")?".claude/rules/apptoolkit.md":s,l=[],f=ju(e,p,c,t.workspaceVersioned,r,o,l);if(f)i.set(p,f);else if(p==="CLAUDE.md"&&!t.workspaceVersioned&&l.length){let d=ju(e,".claude/rules/apptoolkit.md",c,!1,r,o,n);if(d)i.set(".claude/rules/apptoolkit.md",d),n.push("Claude uses .claude/rules/apptoolkit.md alongside the preserved CLAUDE.md.");else n.push(...l)}else n.push(...l)}return i}import{lstatSync as hh}from"node:fs";import{basename as mh,resolve as Lu}from"node:path";function mt(e,t){return!hh(Lu(e,t),{throwIfNoEntry:!1})}function No(e,t){let r=ve(e,Lu(e,t));if(r!==".")oe(r);return r}function Mu(e,t,r){let o=Je(e,t),n=L(o);if(r&&!n)throw Error(`Cannot version files in ${o} because Git does not manage this directory.`);let i=n&&Ta(n.root);return i?{path:t,versioned:r,identity:i}:{path:t,versioned:r}}function gh(e,t,r){let o=t.repository;if(!o)throw Error("Specify the directory of the Git repository to register.");let n=No(e,o);if(r.repositories.find((p)=>p.path===n)&&!mt(e,n))return Je(e,n),r.repositories;if(mt(e,n)){let p=r.repositories.filter((f)=>mh(f.path)===o),l=p[0];if(l&&p.length===1&&!mt(e,l.path))return Je(e,l.path),r.repositories}if(n===".")throw Error("Select the directory of a Git checkout inside the workspace.");let s=t.repositories.find((p)=>No(e,p.path)===n)?.versioned;if(s===void 0)throw Error(`Choose whether generated files inside ${n} should be versioned before registering it.`);let c=Mu(e,n,s),a=r.repositories.filter((p)=>c.identity&&p.identity===c.identity&&mt(e,p.path)),u=a[0];if(a.length>1)throw Error(`More than one missing registration matches ${n}. Resolve the ambiguous repository paths before retrying.`);return[...r.repositories.filter((p)=>p.path!==u?.path),c]}function Uu(e,t,r){let{root:o}=e;if(t.action==="add-repo"){if(!r)throw Error("Install the workspace harness before registering an additional repository.");return gh(o,t,r).sort((c,a)=>c.path.localeCompare(a.path,"en"))}let n=t.workspaceVersioned&&Boolean(e.gitRoot),i=t.repositories;if(!i.length&&r)i=r.repositories;if(!i.length&&e.kind==="workspace")throw Error("Select the repositories to register in this workspace.");if(!i.length)i=[{path:".",versioned:n}];let s=new Map;for(let c of i){let a=No(o,c.path);if(s.has(a))throw Error(`Repository ${a} was selected more than once.`);let u=r?.repositories.find((p)=>p.path===a);if(u&&mt(o,a))s.set(a,{...u,versioned:c.versioned});else s.set(a,Mu(o,a,c.versioned))}if(r?.repositories.some((c)=>!s.has(c.path)))throw Error("The new selection omits a registered repository. Keep the existing selection when reinstalling or updating.");return[...s.values()].sort((c,a)=>c.path.localeCompare(a.path,"en"))}import{resolve as yh}from"node:path";var xh=P({root:w().min(1),repository:w().min(1),file:w().endsWith(".llm.md")}),jo=new WeakMap;function Do(e){let t=xh.parse(e),r=de(t.root),o=R(r,H),n=Y(r),i=n?.repositories.find((y)=>y.path===t.repository);if(!n||!i)throw Error(`Register repository ${t.repository} in the workspace before excluding generated files.`);if(i.versioned)throw Error(`Repository ${t.repository} is configured to version its generated files.`);let s=Je(r,i.path),c=Kt(s,t.file),a=L(s);ze(c,a?.root);let u={root:r,writes:[],conflicts:[]},p=[{base:r,path:H,before:o,after:o}],l=[a?{absolute:c,gitRoot:a.root}:{absolute:c}];if(!ce(o,R(r,H)))throw Error("The installation receipt changed while planning. Retry the artifact command.");if(!a)return jo.set(u,{exclusions:[],files:[],checks:[],guards:p,boundaries:l}),u;if(Le(a,c))u.conflicts.push({path:t.file,reason:"Git already tracks this file. Resolve its index status before choosing local mode."});let f=ve(a.root,c),d=n.installation??M(r).slice(0,16),g=Ao(a,`${d} artifacts`,new Set([Xt(f)]),!0),m=g?[g]:[];if(g)u.writes.push({path:yh(g.base,g.path),before:g.before?.hash??null,after:g.after?.hash??null});return jo.set(u,{exclusions:m,files:[],checks:[{git:a,path:f,absolute:c,versioned:!1}],guards:p,boundaries:l}),u}function Fo(e){let t=jo.get(e);if(!t||e.conflicts.length)throw Error("Resolve the artifact conflicts and create a new plan in this process before applying.");return{changed:ho(e.root,t)}}function vh(e,t){let r=_e(e,t,"llm"),o=Wu(r,_e(e,"llm/HARNESS.md"));return["# Harness context","",`Start from the workspace folder at \`${Wu(_e(e,t),e)||"."}\` and open the [harness index](${encodeURI(o)}).`,"Read the workspace profile and this repository’s own instructions before changing code.","Use the repository-specific settings for services, documentation conventions and validation.",""].join(`
|
|
72
|
+
`)}function wh(e,t,r,o,n,i){let s=new Map;if(t.action!=="add-repo"){for(let[l,f]of Tu(t.contentDirectory))s.set(l,{content:f,versioned:r.workspaceVersioned});for(let l of uo(r.hosts,r.version))s.set(l.path,{content:U(l.content),versioned:r.workspaceVersioned});for(let[l,f]of Fu(e,r,o,n,i))s.set(l,f);let c="llm/README.md",a=R(e,c),u=o?.files.some((l)=>l.path===c),p=U(`# LLM workspace
|
|
73
|
+
|
|
74
|
+
Open the [harness index](HARNESS.md) for workspace rules, project routing, workflows and tools.
|
|
75
|
+
`);if(!a||u||a.hash===p.hash)s.set(c,{content:p,versioned:r.workspaceVersioned})}for(let c of r.repositories){if(!Bu(_e(e,c.path),{throwIfNoEntry:!1}))continue;let a=Se(c.path);s.set(a,{content:U(vh(e,c.path)),versioned:c.versioned})}return s}function _h(e,t,r,o,n,i){let s=[],c=new Map(o?.files.map((p)=>[p.path,p])),a=new Set(o?.repositories.map((p)=>Se(p.path))),u=new Set(r.repositories.filter((p)=>!Bu(_e(e,p.path),{throwIfNoEntry:!1})).map((p)=>Se(p.path)));for(let[p,{content:l,versioned:f,fragment:d,observed:g}]of t){let m=R(e,p),y=c.get(p),v=U(l.bytes,m?.mode??l.mode);if(g!==void 0&&!ce(m,g))throw Error(`The native router ${p} changed while planning. Retry the workspace command.`);if(!d&&m&&m.hash!==v.hash&&m.hash!==y?.hash)i.push({path:p,reason:"A different local file is present. Review or move it before applying this release."});else if(!ce(m,v))s.push({base:e,path:p,before:m,after:v});r.files.push({path:p,hash:v.hash,versioned:f,...d?{fragment:d}:{}})}for(let p of c.values()){if(t.has(p.path))continue;if(Du(p.path)||u.has(p.path)||n==="add-repo"&&!a.has(p.path)){r.files.push(p);continue}let l=R(e,p.path);if(!l)continue;if(l.hash!==p.hash){i.push({path:p.path,reason:"The release retires this file, but it has local edits. Preserve the changes before updating."});continue}s.push({base:e,path:p.path,before:l,after:null})}return r.files.sort((p,l)=>p.path.localeCompare(l.path,"en")),s}function Ju(e){let t=Va.parse(e),r=Ze(t.root),{root:o}=r,n=R(o,H),i=Y(o);if(t.action==="update"&&!i)throw Error("Install the workspace harness before updating it.");if(t.action==="install"&&i&&i.version!==t.version)throw Error(`This workspace already has harness ${i.version}. Use update to select ${t.version}.`);let s=t.action==="add-repo"&&i,c=Uu(r,t,i),a=s?i.workspaceVersioned:t.workspaceVersioned;if(a&&!r.gitRoot)throw Error(`The workspace at ${o} does not have Git. Choose local workspace mode before retrying.`);let u={schema:1,version:s?i.version:t.version,hosts:s?i.hosts:[...new Set(t.hosts)].sort(),workspaceVersioned:a,repositories:c,services:s?i.services:[...new Set(t.services)].sort(),installation:i?.installation??M(o).slice(0,16),files:[]},p=[],l=[],f=wh(o,t,u,i,p,l),d=_h(o,f,u,i,t.action,p);if(s){let z=Nu(o,i,u,p);if(z)d.push(z)}let g=d.filter((z)=>z.after===null).map((z)=>z.path),m=Ru(o,u,i,p,g),y=new Set(m.checks.filter((z)=>!z.versioned&&z.git.commonDirectory!==_e(z.git.root,".git")).map((z)=>z.git.commonDirectory));for(let z of y)l.push(`Local Git exclusions use ${_e(z,"info/exclude")}. Linked worktrees that share this Git directory use the same exclusions.`);let v=U(`${JSON.stringify(u,null,2)}
|
|
76
|
+
`,n?.mode);if(!ce(n,R(o,H)))throw Error("The installation receipt changed while planning. Retry the workspace command.");if(!ce(n,v))d.push({base:o,path:H,before:n,after:v});let k=[...m.operations,...d].map((z)=>({path:z.base===o?z.path:_e(z.base,z.path),before:z.before?.hash??null,after:z.after?.hash??null})),G={root:o,action:t.action,writes:k,conflicts:p,notices:l,receipt:u};return Fa(G,{exclusions:m.operations,files:d,checks:m.checks,guards:[{base:o,path:H,before:n,after:n}],boundaries:m.boundaries}),G}import{parseArgs as bh}from"node:util";var Lo=X(["codex","claude","opencode"]),Oe=X(["plane","penpot"]);function Vu(e){let t=bh({args:e,allowPositionals:!0,options:{help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},root:{type:"string"},json:{type:"boolean"},yes:{type:"boolean",short:"y"},plan:{type:"boolean"},hosts:{type:"string"},versioned:{type:"boolean"},local:{type:"boolean"},repo:{type:"string",multiple:!0},"repo-mode":{type:"string",multiple:!0},"repo-versioned":{type:"boolean"},"repo-local":{type:"boolean"},"enable-service":{type:"string",multiple:!0},config:{type:"string"},project:{type:"string"},"verify-read":{type:"boolean"},"verify-health":{type:"boolean"},manifest:{type:"string"},file:{type:"string",multiple:!0},section:{type:"string"}}}),{values:r}=t;if(r.versioned&&r.local||r["repo-versioned"]&&r["repo-local"])throw Error("Choose exactly one Git storage mode for each scope.");if(r.plan&&r.yes)throw Error("Choose --plan to preview or --yes to apply.");return t}function K(e,t){return w().min(1,`Supply ${t}.`).parse(e??"")}function Hu(e){let t=new Map;for(let r of e){let o=r.lastIndexOf("="),n=r.slice(0,o),i=r.slice(o+1);if(o<1||i!=="local"&&i!=="versioned"||t.has(n))throw Error(`Invalid or duplicate --repo-mode ${r}. Use <path>=local or <path>=versioned.`);t.set(n,i==="versioned")}return t}import{readFileSync as Ku}from"node:fs";var kh=P({kind:w().min(1),title:w().min(1).optional(),headings:_(w().min(1)).default([]),checkedItems:_(w().min(1)).default([]),requiredText:_(w().min(1)).default([]),forbiddenText:_(w().min(1)).default([])});function $h(e){let t,r=[];for(let o of e.split(/\r?\n/)){let n=/^ {0,3}(`{3,}|~{3,})(.*)$/.exec(o),i=n?.[1];if(t){if(i?.startsWith(t)&&!n?.[2]?.trim())t=void 0}else if(i)t=i;else r.push(o)}return r}function Gu(e,t){let r=kh.parse(JSON.parse(Ku(e,"utf8"))),o=Ku(t,"utf8"),n=$h(o),i=n.join(`
|
|
77
|
+
`),s=o.toLowerCase(),c=n.flatMap((l)=>{let f=/^ {0,3}#{1,6}[ \t]+(.+?)\s*$/.exec(l);return f?.[1]?[f[1].replace(/[ \t]+#+[ \t]*$/,"")]:[]}),a=new Set(n.flatMap((l)=>{let f=/^\s*[-+*]\s+\[[xX]\]\s+(.+?)\s*$/.exec(l);return f?.[1]?[f[1]]:[]})),u=[],p=-1;if(r.title&&c[0]!==r.title)u.push(`Expected the first heading to be ${r.title}.`);for(let l of r.headings){let f=c.indexOf(l,p+1);if(f<0)u.push(`Missing or out-of-order heading: ${l}.`);else p=f}for(let l of r.checkedItems)if(!a.has(l))u.push(`Checklist item must be checked: ${l}.`);for(let l of r.requiredText)if(!i.includes(l))u.push(`Required text is absent: ${l}.`);for(let[l,f]of r.forbiddenText.entries())if(s.includes(f.toLowerCase()))u.push(`Forbidden text rule ${l+1} matched.`);return{kind:r.kind,valid:u.length===0,issues:u}}import{resolve as Mo}from"node:path";var zh=[{label:"Keep harness files local",value:"local"},{label:"Make harness files available to commit",value:"versioned"}],qu=[{label:"No",value:"no"},{label:"Yes",value:"yes"}];async function Uo(e,t,r){if(!e)throw Error(`Supply ${r} for a noninteractive run.`);return await e(t,zh)==="versioned"}async function Sh(e){let{options:t,select:r}=e;if(t.hosts)return[...new Set(_(Lo).min(1).parse(t.hosts.split(",")))];if(!r)throw Error("Supply --hosts codex,claude,opencode or a subset for a noninteractive install.");let n=await r("Which agent hosts should this workspace support?",[{label:"Codex, Claude Code and OpenCode",value:"codex,claude,opencode"},{label:"Codex",value:"codex"},{label:"Claude Code",value:"claude"},{label:"OpenCode",value:"opencode"},{label:"Codex and Claude Code",value:"codex,claude"},{label:"Codex and OpenCode",value:"codex,opencode"},{label:"Claude Code and OpenCode",value:"claude,opencode"}]);return _(Lo).parse(n.split(","))}async function Ph(e,t){let{options:r,select:o}=e,n=Hu(r["repo-mode"]??[]),i=new Set(t.repositories.map(({path:a})=>a)),s=new Set(r.repo??[]),c=[];for(let a of[...s,...n.keys()])if(!i.has(a))throw Error(`No repository was detected at ${a}. Inspect the workspace for accepted relative paths.`);for(let a of t.repositories){if(s.size&&!s.has(a.path))continue;if(t.kind==="workspace"&&o&&!s.size&&!n.has(a.path)){if(await o(`Register ${a.path}?`,[{label:"Register",value:"yes"},{label:"Skip",value:"no"}])==="no")continue}let u=`--repo-mode ${a.path}=local or ${a.path}=versioned`,p=a.gitRoot?n.get(a.path)??await Uo(o,`Version files generated inside ${a.path}?`,u):!1;c.push({path:a.path,versioned:p})}if(t.kind==="workspace"&&c.length===0)throw Error("Select at least one repository for the shared workspace.");return c}async function Eh(e){let{root:t,options:r,select:o,emit:n}=e,i=Ze(t);if(!r.json){let p={blank:"an empty project",existing:"an existing project",workspace:"a parent workspace"};n(`Detected ${i.monorepo?"a monorepo":p[i.kind]} at ${i.root}.`)}let s=await Sh(e),c=i.gitRoot?r.versioned||!r.local&&await Uo(o,"Version the central harness with this Git repository?","--local or --versioned"):!1;if(r.versioned&&!i.gitRoot)throw Error("The workspace root has no Git repository. Use --local.");let a=await Ph(e,i),u=_(Oe).parse(r["enable-service"]??[]);if(o&&!r["enable-service"]){for(let p of Oe.options)if(await o(`Offer ${p==="plane"?"Plane for agent work items":"Penpot for design"} during setup?`,qu)==="yes")u.push(p)}return{hosts:s,workspaceVersioned:c,repositories:a,services:[...new Set(u)]}}function Zh(e){let t=Y(e);if(!t)throw Error(`No harness is registered at ${e}. Run install first.`);return{hosts:t.hosts,workspaceVersioned:t.workspaceVersioned,repositories:t.repositories,services:t.services}}async function Xu(e,t,r){let{root:o,version:n,options:i,emit:s,select:c,contentDirectory:a}=e;if(!a&&t!=="add-repo")throw Error("Run this command from a release package. Use bunx @apptoolkit/harness@latest update for an installed workspace.");let u=Y(o),p=t==="install"&&!u?await Eh(e):Zh(o),l;if(t==="update"&&i["enable-service"]){let m=_(Oe).parse(i["enable-service"]);p.services=[...new Set([...p.services,...m])]}if(t==="add-repo"){l=K(r,"the checkout path");let m=Mo(o,l),y=p.repositories.find(({path:k})=>Mo(o,k)===m),v=i["repo-versioned"]||(i["repo-local"]?!1:y?.versioned??await Uo(c,`Version files generated inside ${l}?`,"--repo-local or --repo-versioned"));p.repositories=[...p.repositories.filter(({path:k})=>Mo(o,k)!==m),{path:l,versioned:v}]}let f=Ju({root:o,action:t,version:n,contentDirectory:a??"",...p,...l?{repository:l}:{}}),d={action:t,root:f.root,writes:f.writes.map(({path:m,before:y,after:v})=>({path:m,effect:v===null?"remove":y===null?"create":"update",before:y,after:v})),conflicts:f.conflicts,notices:f.notices};if(!i.json){s(`Plan for ${f.root} contains ${d.writes.length} change(s).`);for(let m of d.writes)s(` ${m.effect} ${m.path}`);for(let m of d.conflicts)s(` conflict ${m.path}: ${m.reason}`);for(let m of d.notices)s(` note ${m}`)}if(i.plan||!i.yes&&!c){if(i.json)s(d);return f.conflicts.length?1:0}if(f.conflicts.length){if(i.json)s(d);throw Error("Resolve the reported installation conflicts before applying the plan.")}if(!i.yes&&f.writes.length&&c&&await c("Apply this plan?",qu)!=="yes")return 0;let g=mo(f);if(i.json)s({...d,changed:g.changed,version:g.receipt.version,hosts:g.receipt.hosts});else if(s(`Applied ${g.changed} change(s) for @apptoolkit/harness ${g.receipt.version}.`),t==="install"){s(`Open ${f.root} in your selected agent host.`);for(let m of g.receipt.hosts)s(` ${m}: ${m==="codex"?"$":"/"}apptoolkit init`)}return 0}var Mh=`@apptoolkit/harness 1.0.0
|
|
78
|
+
|
|
79
|
+
install Inspect and prepare a project or workspace
|
|
80
|
+
inspect Report workspace topology and installation state
|
|
81
|
+
init --json Print the project setup template for the agent
|
|
82
|
+
init --config <file> Apply validated project choices
|
|
83
|
+
add repo <path> Register a related checkout
|
|
84
|
+
protect <file> Preview or apply a local exclusion for a source map
|
|
85
|
+
update Reconcile this package version with the workspace
|
|
86
|
+
workflow <W01-W37|list> Read a single workflow or the index
|
|
87
|
+
context <file> List headings or read an exact --section
|
|
88
|
+
verify document <file> Check a document against a local --config policy
|
|
89
|
+
verify coverage <lcov> Require 100% measured coverage for the configured source scope
|
|
90
|
+
service status <name> Inspect opt-in Plane or Penpot access
|
|
91
|
+
service snapshot <name> Prepare or verify an opt-in snapshot manifest
|
|
92
|
+
|
|
93
|
+
Shared options: --root <path> --json --plan --yes
|
|
94
|
+
Install options: --hosts codex,claude,opencode --local | --versioned
|
|
95
|
+
--repo <path> --repo-mode <path>=local|versioned
|
|
96
|
+
--enable-service plane|penpot
|
|
97
|
+
Add options: --repo-local | --repo-versioned
|
|
98
|
+
Service options: --project <repo> --verify-health --verify-read --manifest <file> | --file <export>
|
|
99
|
+
Use --plan to preview. Noninteractive workspace changes require --yes and explicit choices.
|
|
100
|
+
`;function Uh(){return Lh(new URL("./payload/",import.meta.url))}function Wh(e,t){if(t==="list")return lt(e,"llm/harness/WORKFLOWS.md");let r=w().regex(/^W(?:0[1-9]|[12][0-9]|3[0-7])$/,"Choose W01 through W37 or list.").parse(t??""),o=lt(e,`llm/harness/workflows/${r}.md`);if(Buffer.byteLength(o)>32768)throw Error(`Workflow ${r} is larger than 32 KiB. Use context to read a section.`);return o}async function Bh(){let{values:e,positionals:t}=Vu(process.argv.slice(2)),[r,o,n,i]=t;if(e.version)return process.stdout.write(`1.0.0
|
|
101
|
+
`),0;if(e.help||!r)return process.stdout.write(Mh),0;let s=rr(e.root??process.cwd()),c=(y)=>{if(typeof y==="string")process.stdout.write(`${y.trimEnd()}
|
|
102
|
+
`);else process.stdout.write(`${JSON.stringify(y,null,2)}
|
|
103
|
+
`)};if(r==="inspect"&&!o){let y=Ze(s),v=Y(y.root),G=(v?Ee(y.root):void 0)?.projects.map(({path:z,budget:I,services:S})=>({path:z,budget:I.mode,services:S.map(({provider:q})=>q)}))??[];return c({...y,installation:v??null,configuredProjects:G}),0}if(r==="init"&&!o){if(!e.config)return c(await bo(s)),0;if(e.plan)throw Error("Use init without --config to read the setup template. Applying a configuration requires a separate invocation.");return c(await ko({root:s,configPath:rr(e.config)})),0}if(r==="workflow"&&!n){let y=Wh(s,o);return c(e.json?{id:o,document:y}:y),0}if(r==="context"&&!n){let y=K(o,"the workspace-relative Markdown path");return c(xu({root:s,file:y,...e.section?{section:e.section}:{}})),0}if(r==="verify"&&o==="document"&&!i){let y=rr(K(e.config,"--config <policy.json>")),v=rr(K(n,"the document path")),k=Gu(y,v);return c(k),k.valid?0:1}if(r==="verify"&&o==="coverage"&&!i){let y=K(n,"the workspace-relative LCOV report"),v=K(e.config,"--config <coverage-policy.json>");return c(zu({root:s,file:y,config:v})),0}if(r==="protect"&&!n){let y=K(e.project,"--project <repo>"),v=K(o,"the repository-relative source map path"),k=Do({root:s,repository:y,file:v});if(e.yes&&!k.conflicts.length)c({...k,...Fo(k)});else c(k);return k.conflicts.length?1:0}if(r==="service"&&o==="status"&&!i){let y=Oe.parse(n),v=K(e.project,"--project <repo>");return c(await So({root:s,service:y,project:v,verifyRead:e["verify-read"]??!1,verifyHealth:e["verify-health"]??!1})),0}if(r==="service"&&o==="snapshot"&&!i){let y=Oe.parse(n),v=K(e.project,"--project <repo>"),k=e.file??[];if(k.length&&e.manifest)throw Error("Choose --file to prepare a manifest or --manifest to verify it.");if(k.length)c(await Po({root:s,service:y,project:v,paths:k}));else{let G=K(e.manifest,"--manifest <snapshot.json>");c(await Eo({root:s,service:y,project:v,manifestPath:G}))}return 0}let a=r==="add"&&o==="repo"&&!i,u=r==="install"&&!o;if(!a&&!u&&!(r==="update"&&!o))throw Error("Unknown command or arguments. Run with --help for usage.");let f=process.stdin.isTTY&&!e.json&&!e.plan&&!e.yes?await Promise.resolve().then(() => (Qu(),Yu)):void 0,d={root:s,version:"1.0.0",options:e,emit:c},g={contentDirectory:Uh()},m=f?{select:f.selectChoice}:{};return Xu({...d,...g,...m},a?"add-repo":u?"install":"update",n)}try{process.exitCode=await Bh()}catch(e){let t=e instanceof Error?e.message:String(e);process.stderr.write(`apptoolkit: ${t}
|
|
104
|
+
`),process.exitCode=1}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@apptoolkit/harness",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A portable harness for configuring AI coding agents and engineering workflows.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"harness": "./harness.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"harness.js",
|
|
12
|
+
"payload/"
|
|
13
|
+
],
|
|
14
|
+
"packageManager": "bun@1.4.2",
|
|
15
|
+
"publishConfig": {
|
|
16
|
+
"access": "public",
|
|
17
|
+
"registry": "https://registry.npmjs.org/"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"ink": "7.1.1",
|
|
21
|
+
"react": "19.3.1"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# AppToolkit Harness
|
|
2
|
+
|
|
3
|
+
Use this index when adopting a project or opening a fresh agent session. Resolve the project, read its applicable rules, and open the smallest workflow that matches the request.
|
|
4
|
+
|
|
5
|
+
| Need | Start here |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| Find the procedure for a natural request | [Workflow index](harness/WORKFLOWS.md) |
|
|
8
|
+
| Start a new feature or an unresolved change | [W16 Feature definition](harness/workflows/W16.md) |
|
|
9
|
+
| Adopt, initialize or update this installation | [W20 Adoption](harness/workflows/W20.md) |
|
|
10
|
+
| Resolve repositories, services and project conventions | [Project guide](harness/PROJECT.md) |
|
|
11
|
+
| Check permissions, engineering rules and learning | [Operating policy](harness/POLICY.md) |
|
|
12
|
+
| Audit a claim or independently review code | [Independent review](harness/REVIEW.md) |
|
|
13
|
+
| Prepare a decision, work unit or checkpoint | [Templates](harness/TEMPLATES.md) |
|
|
14
|
+
| Verify coverage against an explicit source inventory | [W23 Verification](harness/workflows/W23.md) |
|
|
15
|
+
| Verify authored TypeScript without a compatible project Biome configuration | [Style tools](author-style/README.md) |
|
|
16
|
+
|
|
17
|
+
Begin with the installed workspace and project records for the active root. Apply the nearest repository guidance as well as shared decisions relevant to that repository. Use source maps to locate the relevant sections. For a natural request such as “Give me my pending list” or “Dame mi lista de pendientes”, open only [W01](harness/workflows/W01.md), resolve its target and use the project's authorized sources.
|
|
18
|
+
|
|
19
|
+
Run `rtk proxy bun --no-env-file llm/harness/runtime/harness.mjs context llm/HARNESS.md` from the installation root to list heading locators without returning the body. If only Node.js is available, replace `bun --no-env-file` with `node` in installed runtime commands. Add `--section line:1` with the locator reported for the desired heading. An exact title or anchor also works when unique. Select a line locator for repeated titles. The reader opens regular project-relative Markdown files, rejects protected locations and symbolic links, and returns a bounded section with its source line range.
|
|
20
|
+
|
|
21
|
+
Open an indexed workflow directly with `rtk proxy bunx --bun @apptoolkit/harness workflow W01` or `rtk proxy npx @apptoolkit/harness workflow W01`. Use [W21](harness/workflows/W21.md) to plan local source-map protection and [W23](harness/workflows/W23.md) to check a fresh LCOV report.
|