@enhance-eng/enhance-dev 0.1.40-dev.sha-55adcfde7950 → 0.1.40-dev.sha-8f67e2642093

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.
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{FailedToExitError as e,parseRouter as t}from"trpc-cli";import{z as n}from"zod";import{z as r}from"zod/mini";import{createHash as i}from"node:crypto";import{TRPCError as a,initTRPC as o}from"@trpc/server";import{middlewareMarker as s}from"@trpc/server/unstable-core-do-not-import";import{setTimeout as c}from"node:timers/promises";import l from"node:assert/strict";import{TRPCClientError as u}from"@trpc/client";import{Buffer as ee}from"node:buffer";var te=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);const ne=[`appearance-unsupported-component`,`styles-unsupported-component`,`text-shadow-blend-unsupported`,`recording-aspect-not-preserved`],d={unversioned:void 0,v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8,v9:9,v10:10,v11:11,v12:12},re={[d.v1]:`layout`,[d.v2]:`layout`,[d.v3]:`typography`,[d.v4]:`typography`,[d.v5]:`typography`,[d.v6]:`geometry`,[d.v7]:`geometry`,[d.v8]:`geometry`,[d.v9]:`geometry`,[d.v10]:`geometry`,[d.v11]:`css`,[d.v12]:`text-shadow-blend`},f=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ie=e=>Array.isArray(e)?e:void 0,ae=(e,...t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),oe=e=>`${e}~mask`,se={alpha:`alpha`,luminance:`luminance`,vector:`outline`},ce=e=>{if(!f(e)||!f(e.compositing))return;let t=e.compositing.mask;return typeof t==`string`?se[t]:void 0},p=e=>f(e)?ae(e,`blendMode`,`blendSource`):e,m=e=>f(e)&&`paint`in e?{...ae(e,`paint`,`alignment`),paints:[e.paint]}:e,le=e=>{if(!f(e)||!f(e.progression))return e;let t=e.progression.startValue,n=e.value;return{...ae(e,`progression`),value:typeof t==`number`&&typeof n==`number`?Math.max(t,n):n}},ue=e=>f(e)&&e.kind===`image`?ae(e,`adjustments`):e,de=e=>ie(e)?.filter(e=>!f(e)||e.kind!==`inner`).map(e=>f(e)?{...e,spread:0}:e)??e,fe=e=>{if(!f(e))return e;let t={...e,paint:p(e.paint)};return e.alignment===`inside`?{...t,alignment:`center`}:t},pe=e=>{if(!f(e)||e.kind!==`span`)return e;let t=ae(e,`decorationBlendMode`),n=ie(e.fills);n!==void 0&&(t.fills=n.map(e=>p(e))),f(e.stroke)&&(t.stroke=fe(e.stroke));let r=ie(e.children);return r!==void 0&&(t.children=r.map(e=>pe(e))),t},me=(e,t)=>{let n=ie(t.fills);if(n===void 0)return;let[r]=n,i=f(r)?r.blendMode:void 0;typeof i==`string`&&n.length===1&&(e.blendMode??`normal`)===`normal`&&(t.blendMode=i),t.fills=n.map(e=>p(e))},he=(e,t)=>{let n={...e};`border`in e&&(n.border=m(e.border)),`outline`in e&&(n.outline=m(e.outline));let r=ie(e.fills);r!==void 0&&(n.fills=r.map(e=>ue(e)));let i=ie(e.filters);return i!==void 0&&(n.filters=i.map(e=>le(e))),t?(`shadows`in e&&(n.shadows=de(e.shadows)),me(e,n),n):n},ge=e=>{let t=e.props;if(!f(t)||!f(t.paintFallback))return{...e};let n=t.paintFallback.mask;if(n===void 0)return{...e};let r=ae(t.paintFallback,`mask`),i=Object.keys(r).length===0?ae(t,`paintFallback`):{...t,paintFallback:r},a=e.styles,o=ae(e,`props`);return f(n)&&f(a)&&(o.styles=Object.fromEntries(Object.entries(a).filter(([e,t])=>n[e]!==t))),Object.keys(i).length>0&&(o.props=i),o},_e=e=>{let t=e.compositing;return f(t)?t.groupMode===void 0?t.paintSemantics===`web`&&(e.component===`frame`||e.component===`group`):t.groupMode===`isolated`:!1},ve=e=>{let t={...e};return`stroke`in e&&(t.stroke=fe(e.stroke)),f(e.decoration)&&(t.decoration=ae(e.decoration,`blendMode`)),t},ye=e=>{if(!f(e))return e;let t=ae(ge(e),`compositing`);_e(e)&&f(t.styles)&&(t.styles={...t.styles,isolation:`isolate`});let n=e.component===`text`;if(f(e.appearance)&&(t.appearance=he(e.appearance,n)),!n)return t;f(e.typography)&&(t.typography=ve(e.typography));let r=t.props,i=f(r)?ie(r.richText):void 0;return i!==void 0&&f(r)&&(t.props={...r,richText:i.map(e=>pe(e))}),t},be=e=>f(e)&&typeof e.sortKey==`string`?e.sortKey:``,xe=e=>{let t=new Map;for(let[n,r]of Object.entries(e)){if(!f(r)||typeof r.parentId!=`string`)continue;let e=t.get(r.parentId);e===void 0?t.set(r.parentId,[n]):e.push(n)}let n=t=>be(e[t]),r=(e,t)=>n(e)<n(t)?-1:Number(n(e)>n(t));for(let e of t.values())e.sort(r);return t},Se=(e,t,n)=>({id:e,label:`Mask`,labelOrigin:`generated`,component:`group`,styles:{},geometry:{kind:`mask`,maskId:t,mode:n}}),Ce=(e,t,n,r)=>{let i=``;for(let a of t){let t=ce(e[a]);t!==void 0&&(i=oe(a),n[i]=Se(i,a,t),r[i]=r[a]);let o=r[a];i!==``&&f(o)&&(r[a]={...o,parentId:i})}},we=(e,t,n)=>{for(let[r,i]of xe(n)){let a=i.filter(t=>ce(e[t])!==void 0),[o]=i,s=t[r],c=ce(e[o]);c!==void 0&&a.length===1&&f(s)&&s.component===`group`&&s.geometry===void 0?t[r]={...s,geometry:{kind:`mask`,maskId:o,mode:c}}:Ce(e,i,t,n)}},Te=e=>{let t=e.nodes;if(!f(t))return e;let n=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,ye(t)]));if(!f(e.relationships))return{...e,nodes:n};let r={...e.relationships};return we(t,n,r),{...e,nodes:n,relationships:r}},Ee=e=>typeof e==`object`&&!!e&&!Array.isArray(e),De=e=>Array.isArray(e),Oe=e=>{if(!Ee(e))return e;let t={...e};return Reflect.deleteProperty(t,`blendMode`),Reflect.deleteProperty(t,`blendSource`),t},ke=e=>{if(!Ee(e)||e.component!==`text`||!Ee(e.appearance))return e;let t=e.appearance.shadows;return De(t)?{...e,appearance:{...e.appearance,shadows:t.map(e=>Oe(e))}}:e},Ae=e=>{let t=e.nodes;return Ee(t)?{...e,nodes:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,ke(t)]))}:e},je=new Set([...Object.values(d),13]),Me=e=>je.has(e),Ne=new Set([`text-shadow-blend`,`css`,`geometry`]),Pe=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Fe=e=>{if(!Pe(e))return e;let t=Object.fromEntries(Object.entries(e).filter(([e])=>e!==`gridTrack`)),n=t.container;Pe(n)&&(t.container=Object.fromEntries(Object.entries(n).filter(([e])=>e!==`materialized`)));for(let e of[`horizontal`,`vertical`]){let n=t[e];Pe(n)&&n.mode===`hug`&&(t[e]=Object.fromEntries(Object.entries(n).filter(([e])=>e!==`basis`)))}return t},Ie=e=>{let t=e.version;if(!Me(t))return null;if(t===13||!Pe(e.nodes))return e;let n=Object.entries(re).find(([e])=>Number(e)===t)?.[1];return Ne.has(n)?{...e,version:13}:Object.values(e.nodes).some(e=>Pe(e)&&e.geometry!==void 0)?null:n===`typography`?{...e,version:13}:{...e,version:13,nodes:Object.fromEntries(Object.entries(e.nodes).map(([e,t])=>[e,Pe(t)&&t.layout!==void 0?{...t,layout:Fe(t.layout)}:t]))}},Le=e=>{let t=Ie(e);return t===null||t===e?t:Ae(e.version===d.v12?t:Te(t))},Re=n.strictObject({}),ze=n.object({firstAgentWorkAt:n.iso.datetime().nullable()}),Be=n.object({cursor:n.string().nullable().default(null),limit:n.number().int().min(1).max(100).default(20)}),Ve=e=>n.object({items:n.array(e),truncated:n.boolean()}),He=2048,Ue=n.enum([`never-captured`,`capture-pending`,`extension-unavailable`,`capture-failed`,`source-mismatch`,`upload-incomplete`,`blob-missing`,`image-load-failed`,`unsupported-legacy-state`]),We=n.object({background:n.string().optional(),documentVersion:n.number().int().positive().optional(),thumbnailId:n.uuid(),url:n.string(),width:n.literal(528),height:n.literal(312),bytes:n.number().int().min(1).max(1048576)}),Ge=n.object({canvasId:n.uuid(),thumbnailId:n.uuid(),clientReleaseIdentity:n.string().min(1).max(100),attemptedOperation:n.literal(`thumbnail-download`),recoveryOutcome:n.literal(`fallback-shown`)}),Ke=n.object({recorded:n.literal(!0)}),qe=n.enum([`invite-only`,`link-view`,`link-comment`,`link-edit`]),Je=n.enum([`owner`,`can-edit`,`can-comment`,`can-view`]),Ye=n.enum([`can-edit`,`can-comment`,`can-view`]),Xe=n.object({read:n.boolean(),comment:n.enum([`yes`,`sign-in`,`no`]),edit:n.enum([`yes`,`sign-in`,`no`]).default(`no`),grants:n.array(n.object({source:n.enum([`direct`,`team`,`link`]),accessLevel:Je})).default([]),grantableAccessLevels:n.array(Ye).default([]),share:n.boolean(),manage:n.boolean(),readHistory:n.boolean().default(!1)}),h=n.object({id:n.uuid(),title:n.string().min(1),accessState:qe,organisationId:n.uuid().nullable(),sourceUrl:n.string().nullable(),unresolvedCount:n.number().int().min(0),viewerCan:Xe,createdAt:n.iso.datetime(),lastActivityAt:n.iso.datetime()}),Ze=n.object({title:n.string().trim().min(1),organisationId:n.uuid().nullable().default(null),sourceUrl:n.string().nullable().default(null)}),Qe=h.extend({version:n.number().int().positive()}),$e=n.object({canvasId:n.uuid()}),et=n.union([n.literal(`own`),n.literal(`everything`),n.uuid()]),tt=n.object({collection:et.default(`own`),title:n.string().trim().min(1).optional().describe(`Title text to match before returning canvas ids.`),deleted:n.boolean().default(!1),accessState:qe.optional(),scope:n.enum([`all`,`mine`,`shared`]).default(`all`),hasUnresolved:n.boolean().default(!1)}),nt=h.extend({screenCount:n.number().int().min(0),hasRecording:n.boolean(),lastViewedAt:n.iso.datetime().nullable()}),rt=Ve(n.union([nt.extend({thumbnail:We}),nt.extend({thumbnail:n.null(),thumbnailFallbackReason:Ue})])),it=n.object({canvasId:n.uuid(),title:n.string().trim().min(1)}),at=n.object({canvasId:n.uuid()}),ot=n.object({canvasId:n.uuid(),deletedAt:n.iso.datetime()}),st=n.object({canvasId:n.uuid(),organisationId:n.union([n.uuid(),n.literal(`personal`)])}),ct=n.object({canvas:h}),lt=n.object({canvasId:n.uuid(),organisationId:n.union([n.uuid(),n.literal(`personal`)]),title:n.string().trim().min(1).optional()}),ut=n.object({canvas:h}),dt=n.object({canvasId:n.uuid(),confirmation:n.string().min(1)}),ft=n.object({canvasId:n.uuid()}),pt=n.object({canvasId:n.uuid(),accessState:qe}),mt=n.object({canvas:h,widened:n.boolean()}),ht=n.object({canvasId:n.uuid()}),gt=n.object({lastViewedAt:n.iso.datetime().nullable()}),_t=n.object({canvasId:n.uuid()}),vt=n.object({canvasId:n.uuid()}),yt=/javascript|vbscript|data\s*:\s*text\/html|expression\s*\(|@import/iu,bt=n.string().refine(e=>!yt.test(e),`unsafe CSS value`),g=n.number(),_=n.number().nonnegative(),v=g,xt=_,y=n.number().min(0).max(1),St=n.string().min(1),Ct=n.object({space:n.enum([`srgb`,`display-p3`]),red:y,green:y,blue:y,alpha:y,definitionId:St.optional()}),wt=n.object({id:St,position:y,color:Ct}),Tt=n.object({id:St,visible:n.boolean()}),Et=Tt.extend({kind:n.literal(`blur`),value:xt,parameter:n.enum([`radius`,`standard-deviation`]).optional()}),Dt=[Tt.extend({kind:n.literal(`brightness`),value:xt}),Tt.extend({kind:n.literal(`contrast`),value:xt}),Tt.extend({kind:n.literal(`grayscale`),value:y}),Tt.extend({kind:n.literal(`hue-rotate`),value:v}),Tt.extend({kind:n.literal(`invert`),value:y}),Tt.extend({kind:n.literal(`saturate`),value:xt}),Tt.extend({kind:n.literal(`sepia`),value:y})],Ot=n.discriminatedUnion(`kind`,[Et,...Dt]),kt=n.discriminatedUnion(`kind`,[Et.extend({progression:n.object({startValue:xt,start:n.object({x:v,y:v}),end:n.object({x:v,y:v})}).optional()}),...Dt]),At=n.tuple([v,v,v,v,v,v]).refine(([e,t,n,r])=>e*r!==t*n,`paint transform must be invertible`),jt=[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`plus-lighter`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],Mt=n.enum(jt),Nt=n.object({kind:n.literal(`figma`),originalMode:n.string(),mappedMode:Mt,sourceGuid:n.string().optional(),path:n.array(n.string())}),Pt=n.object({id:St,blendMode:Mt.optional(),blendSource:Nt.optional(),visible:n.boolean(),opacity:y}),Ft=n.discriminatedUnion(`kind`,[Pt.extend({kind:n.literal(`solid`),color:Ct}),Pt.extend({kind:n.literal(`linear-gradient`),angle:v,transform:At.optional(),stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`radial-gradient`),center:n.object({x:v,y:v}),radius:n.object({x:xt,y:xt}),transform:At.optional(),stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`angular-gradient`),transform:At,stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`diamond-gradient`),transform:At,stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`image`),assetId:n.string().min(1),fit:n.enum([`fill`,`cover`,`fit`,`crop`,`tile`]),tileScale:v.positive().optional(),tileOrigin:n.enum([`center`,`top-left`]).optional(),rotation:n.union([n.literal(0),n.literal(90),n.literal(180),n.literal(270)]).optional(),crop:n.object({x:y,y,width:y,height:y}).optional(),transform:At.optional(),filters:n.array(Ot).optional(),naturalSize:n.object({width:v.positive(),height:v.positive()}).optional()}).refine(e=>e.crop===void 0||e.transform===void 0,{message:`image paint cannot have both a crop rectangle and an affine transform`,path:[`transform`]})]),It=n.intersection(Ft,n.object({alternatives:n.partialRecord(n.enum([`solid`,`linear-gradient`,`radial-gradient`,`angular-gradient`,`diamond-gradient`,`image`]),Ft).optional()})),Lt=n.object({id:St,name:n.string().trim().min(1),value:n.union([Ct.omit({definitionId:!0}),n.object({definitionId:St})]),source:n.object({kind:n.literal(`figma`),key:St,modeId:St.optional()}).optional()}),Rt=n.object({op:n.literal(`setArtworkColor`),nodeId:n.literal(`root`),colorId:n.string().min(1),definition:Lt.nullable()}).refine(e=>e.definition===null||e.definition.id===e.colorId,`colour identity must match`),zt=n.object({ratio:_,offset:g.optional()}),Bt=n.object({min:_.optional(),max:_.optional(),minParent:zt.optional(),maxParent:zt.optional()}).refine(({min:e,max:t})=>e===void 0||t===void 0||e<=t,`size minimum cannot exceed maximum`),Vt=n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`fixed`),value:_}).strict(),Bt.extend({mode:n.literal(`hug`),implicitExtent:_.optional()}).strict(),Bt.extend({mode:n.literal(`fill`),offset:g.optional()}).strict()]),Ht=n.object({top:_,right:_,bottom:_,left:_}),Ut=n.union([n.literal(`auto`),g]),Wt=n.object({top:Ut,right:Ut,bottom:Ut,left:Ut}),Gt=n.object({mode:n.enum([`auto-fill`,`auto-fit`]),minimum:n.number().positive()}),Kt=n.object({x:g,y:g}),qt=n.object({direction:n.enum([`row`,`column`]),alignItems:n.enum([`start`,`center`,`end`,`stretch`]),alignContent:n.enum([`start`,`center`,`end`,`stretch`,`space-between`,`space-around`,`space-evenly`]).optional(),justifyContent:n.enum([`start`,`center`,`end`,`space-between`,`space-around`,`space-evenly`]),gap:g,rowGap:g.optional(),columnGap:g.optional(),crossGapMode:n.literal(`auto`).optional(),wrap:n.enum([`nowrap`,`wrap`]).optional(),gridColumns:n.number().int().positive().optional(),gridAutoRepeat:Gt.optional(),padding:Ht}).strict(),Jt=n.object({rotation:g.optional(),flipHorizontal:n.boolean().optional(),flipVertical:n.boolean().optional(),aspectRatioLocked:n.boolean().optional(),aspectRatio:n.number().positive().optional(),horizontal:Vt.optional(),vertical:Vt.optional(),position:n.enum([`flow`,`absolute`]).optional(),retainedIgnore:n.literal(!0).optional(),gridParticipation:n.literal(`unassigned`).optional(),gridEmptyPlacement:n.literal(`manual`).optional(),gridAutoTrackPolicy:n.object({rows:n.literal(`extend-last`).optional(),columns:n.literal(`extend-last`).optional()}).strict().optional(),retainedFlexSpacing:n.object({gap:n.union([g,bt.min(1)]),counterGap:n.union([g,bt.min(1)]),crossGapMode:n.literal(`auto`).optional()}).strict().optional(),alignSelf:n.enum([`auto`,`start`,`center`,`end`,`stretch`]).optional(),flexGrow:_.optional(),flexShrink:_.optional(),flexBasis:n.union([n.literal(`auto`),_,zt]).optional(),flowOffset:Kt.optional(),order:g.int().optional(),margin:Wt.partial().optional(),clipContent:n.boolean().optional(),container:qt.partial().extend({padding:Ht.partial().optional()}).optional()}).strict(),Yt=g,Xt=_,Zt=n.number().min(0).max(1),Qt=n.string().min(1),$t=n.object({topLeft:Xt,topRight:Xt,bottomRight:Xt,bottomLeft:Xt,smoothing:Zt.optional()}),en=n.array(Xt).min(1),tn=n.enum([`none`,`round`,`square`]),nn=n.object({visible:n.boolean(),layoutInclusion:n.enum([`always`,`visible`,`none`]).optional(),width:n.object({top:Xt,right:Xt,bottom:Xt,left:Xt}),style:n.enum([`solid`,`dashed`,`dotted`]),paints:n.array(It),dashPattern:en.optional(),dashCap:tn.optional(),dashOrigin:n.literal(`css`).optional(),alignment:n.enum([`inside`,`center`,`outside`]).optional()}),rn=nn.pick({width:!0,style:!0,layoutInclusion:!0}),an=n.object({visible:n.boolean(),width:Xt,offset:Yt,style:n.enum([`solid`,`dashed`,`dotted`]),paints:n.array(It),dashPattern:en.optional(),dashCap:tn.optional()}),on=n.object({id:Qt,visible:n.boolean(),kind:n.enum([`outer`,`inner`]),color:Ct,offsetX:Yt,offsetY:Yt,blur:Xt,spread:Yt,blendMode:Mt.optional(),blendSource:Nt.optional(),isShownBehindNode:n.boolean().optional()}),sn=n.object({opacity:Zt,blendMode:Mt,fills:n.array(It),border:nn,retainedBorder:rn.optional(),outline:an,radius:$t,shadows:n.array(on),filters:n.array(Ot),backdropFilters:n.array(kt)}),cn=sn.partial().refine(e=>Object.keys(e).length>0,`appearance values cannot be empty`),ln=[`opacity`,`blendMode`,`fills`,`border`,`retainedBorder`,`outline`,`radius`,`shadows`,`filters`,`backdropFilters`],un=n.enum(ln),dn=sn.partial().extend({clear:n.array(un).min(1).max(ln.length).optional()}).refine(e=>Object.keys(e).length>0,`appearance patch cannot be empty`).refine(({clear:e,...t})=>e===void 0||e.every(e=>t[e]===void 0),`appearance patch cannot set and clear the same property`),fn=n.number(),pn=n.number().nonnegative(),mn=n.string().regex(/^[\u{20}-\u{7E}]{4}$/u),hn=mn.refine(e=>![`wght`,`opsz`].includes(e)),b=n.object({family:n.string().min(1),fallbackFamilies:n.array(n.string().min(1)),size:pn,weight:n.number().min(1).max(1e3),variations:n.record(hn,fn).optional(),features:n.record(mn,n.number().int().nonnegative().max(65535)).optional(),opticalSize:n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`auto`)}),n.object({mode:n.literal(`font-default`)}),n.object({mode:n.literal(`fixed`),value:fn})]).optional(),style:n.enum([`normal`,`italic`,`oblique`]),lineHeight:n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`normal`)}),n.object({mode:n.literal(`fixed`),value:pn}),n.object({mode:n.literal(`percent`),value:pn})]),letterSpacing:n.union([fn,n.object({mode:n.literal(`percent`),value:fn})]),align:n.enum([`left`,`center`,`right`,`justify`]),direction:n.enum([`auto`,`ltr`,`rtl`]).optional(),verticalAlign:n.enum([`top`,`middle`,`bottom`]),verticalTrim:n.enum([`none`,`cap-height`]).optional(),transform:n.enum([`none`,`uppercase`,`lowercase`,`capitalize`]),decoration:n.object({line:n.enum([`none`,`underline`,`line-through`]),style:n.enum([`solid`,`double`,`dotted`,`dashed`,`wavy`]),color:Ct.optional(),blendMode:Mt.optional(),thickness:n.union([pn,n.object({mode:n.literal(`percent`),value:pn}),n.object({mode:n.literal(`font-default`)})]).optional(),offset:n.union([fn,n.object({mode:n.literal(`percent`),value:fn})]).optional(),skipInk:n.enum([`auto`,`none`,`all`]).optional()}),stroke:n.object({width:pn,paint:It,alignment:n.enum([`center`,`outside`]).optional()}).optional(),wrapping:n.enum([`wrap`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]),wrapStyle:n.enum([`auto`,`pretty`,`balance`]).optional(),paragraphSpacing:pn.optional(),paragraphIndent:pn.optional(),listStyle:n.enum([`none`,`bulleted`,`numbered`]).optional(),listSpacing:pn.optional(),hangingList:n.boolean().optional(),hangingPunctuation:n.boolean().optional(),truncation:n.object({mode:n.enum([`none`,`ellipsis`]),maxLines:n.number().int().min(1).nullable()}).optional(),insets:n.object({top:fn,right:fn,bottom:fn,left:fn}).optional()}),gn=b.pick({align:!0,direction:!0,wrapStyle:!0,paragraphSpacing:!0,paragraphIndent:!0,listStyle:!0,listSpacing:!0,hangingList:!0}).partial().extend({listLevel:n.number().int().min(1).optional(),listStart:n.number().int().min(1).optional()}).strict(),_n=b.partial().strict(),vn=b.keyof().options,yn=_n.extend({featureChanges:n.object({set:b.shape.features,clear:n.array(mn).optional(),removeIfEmpty:n.boolean().optional()}).strict().optional(),variationChanges:n.object({set:b.shape.variations,clear:n.array(hn).optional(),removeIfEmpty:n.boolean().optional()}).strict().optional(),clear:n.array(b.keyof()).max(vn.length).optional()}).refine(e=>e.clear?.every(t=>e[t]===void 0)??!0,`a typography property cannot be set and cleared in the same patch`).refine(e=>[`features`,`variations`].every(t=>{let n=e[t===`features`?`featureChanges`:`variationChanges`];return n===void 0||e[t]===void 0&&e.clear?.includes(t)!==!0&&(n.clear?.every(e=>n.set?.[e]===void 0)??!0)}),`font settings cannot be replaced and patched, or set and cleared, together`),bn={"font-family":[`family`,`fallbackFamilies`],"font-size":[`size`],"font-weight":[`weight`],"font-variation-settings":[`weight`,`variations`,`opticalSize`],"font-optical-sizing":[`opticalSize`],"font-feature-settings":[`features`],"font-style":[`style`],"line-height":[`lineHeight`],"letter-spacing":[`letterSpacing`],"text-align":[`align`],direction:[`direction`],"unicode-bidi":[`direction`],"text-indent":[`paragraphIndent`],"hanging-punctuation":[`hangingPunctuation`],"align-content":[`verticalAlign`],"text-box":[`verticalTrim`],"text-box-trim":[`verticalTrim`],"text-box-edge":[`verticalTrim`],"text-transform":[`transform`],"text-decoration":[`decoration`],"text-decoration-line":[`decoration`],"text-decoration-style":[`decoration`],"text-decoration-color":[`decoration`],"text-decoration-thickness":[`decoration`],"text-underline-offset":[`decoration`],"text-decoration-skip-ink":[`decoration`],"-webkit-text-stroke":[`stroke`],"-webkit-text-stroke-width":[`stroke`],"-webkit-text-stroke-color":[`stroke`],"--canvas-text-stroke-alignment":[`stroke`],"paint-order":[`stroke`],"white-space":[`wrapping`],"text-wrap-style":[`wrapStyle`],"text-wrap":[`wrapStyle`]},xn=/^(?:behavior|-moz-binding)$/iu,Sn=n.string().min(1).regex(/^(?:--[\w-]+|-(?:webkit|moz|ms|o)-[a-z][a-z\d-]*|[a-z][a-z\d-]*)$/iu).refine(e=>!xn.test(e),`unsafe CSS property`),x=n.object({id:n.string().min(1),property:Sn,value:bt,enabled:n.boolean()}),Cn=n.object({declarations:n.array(x)}).refine(({declarations:e})=>new Set(e.map(e=>e.id)).size===e.length,`additional style ids must be unique`),wn=n.array(x.shape.id).refine(e=>new Set(e).size===e.length,`declaration ids must be unique`),Tn=n.object({set:n.array(x).refine(e=>new Set(e.map(e=>e.id)).size===e.length,`declaration ids must be unique`).optional(),clear:wn.optional(),order:wn.optional(),empty:n.enum([`keep`,`remove`]).optional()}).strict().refine(e=>e.set?.every(t=>e.clear?.includes(t.id)!==!0)??!0,`a declaration cannot be set and cleared in the same patch`),En=new Set([`#`,`%`,`/`,`:`,`<`,`>`,`?`,`@`,`[`,`\\`,`]`,`^`,`|`]),Dn=e=>{if(e.hostname.startsWith(`[`))return!0;let t=decodeURIComponent(e.hostname);for(let e of t){let t=e.codePointAt(0)??0;if(t===127||t<=32||En.has(e))return!1}return t!==``},On=new Set([`http:`,`https:`,`mailto:`,`tel:`]),kn=e=>{let t=e.trim();if(t===``)return!1;try{let e=new URL(t,`https://enhance.invalid/`);return On.has(e.protocol)&&(![`http:`,`https:`].includes(e.protocol)||Dn(e))}catch{return!1}},An=new Set(`alignItems.backgroundColor.borderBottom.borderBottomLeftRadius.borderBottomRightRadius.borderLeft.borderRight.borderTop.borderTopLeftRadius.borderTopRightRadius.boxShadow.boxSizing.color.columnGap.display.flexDirection.fontFamily.fontFeatureSettings.fontOpticalSizing.fontSize.fontStretch.fontStyle.fontVariant.fontVariantCaps.fontVariantLigatures.fontVariantNumeric.fontVariantPosition.fontKerning.fontVariationSettings.fontWeight.justifyContent.letterSpacing.lineHeight.marginBottom.marginLeft.marginRight.marginTop.opacity.paddingBottom.paddingLeft.paddingRight.paddingTop.rowGap.textDecorationColor.textDecorationLine.textDecorationSkipInk.textDecorationStyle.textDecorationThickness.textShadow.textTransform.textUnderlineOffset.verticalAlign.whiteSpace.WebkitTextStrokeColor.WebkitTextStrokeWidth.--canvas-text-stroke-alignment`.split(`.`)),jn=b.pick({family:!0,fallbackFamilies:!0,size:!0,weight:!0,style:!0,variations:!0,opticalSize:!0,features:!0,lineHeight:!0,letterSpacing:!0,transform:!0,decoration:!0,paragraphSpacing:!0,paragraphIndent:!0,listSpacing:!0,hangingList:!0,hangingPunctuation:!0,verticalTrim:!0,wrapStyle:!0}).extend({decoration:b.shape.decoration.omit({blendMode:!0})}).strict(),Mn=jn.keyof().options,Nn=n.object({id:n.string().min(1),name:n.string().trim().min(1),description:n.string().max(2e3),sortKey:n.string().min(1).optional(),sourceStyleId:n.string().min(1).optional(),sourceCanvasId:n.uuid().optional(),sourceRevision:n.number().int().positive().optional(),typography:jn.extend({listStyle:b.shape.listStyle}).transform(e=>(Reflect.deleteProperty(e,`listStyle`),e))}).strict().refine(e=>e.sourceCanvasId===void 0||e.sourceStyleId!==void 0,{message:`A source canvas belongs to a reference snapshot.`,path:[`sourceCanvasId`]}).refine(e=>e.sourceRevision===void 0||e.sourceCanvasId!==void 0&&e.sourceStyleId!==void 0,{message:`A published revision belongs to a source style and canvas.`,path:[`sourceRevision`]}),Pn=n.object({id:Nn.shape.id,position:n.enum([`normal`,`subscript`,`superscript`]).optional(),overrides:n.partialRecord(n.enum([`fontWeight`,`fontStyle`,`fontVariationSettings`,`fontOpticalSizing`,`textDecorationLine`,`textDecorationStyle`,`textDecorationColor`,`textDecorationThickness`,`textUnderlineOffset`,`textDecorationSkipInk`]),n.union([n.string().max(1e3),n.number()])).optional()}).strict(),Fn=It.array().optional();n.object({fills:Fn});const In=gn.pick({paragraphSpacing:!0,paragraphIndent:!0,listSpacing:!0,wrapStyle:!0}).extend({hangingPunctuation:b.shape.hangingPunctuation,verticalTrim:b.shape.verticalTrim,stroke:b.shape.stroke.nullable(),decorationBlendMode:b.shape.decoration.shape.blendMode,backgroundBlendMode:Mt.optional()}).strip(),Ln=e=>typeof e==`string`&&kn(e)?e:void 0,Rn=e=>{if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=Object.entries(e);return t.some(([e,t])=>!An.has(e)||typeof t!=`string`&&typeof t!=`number`)?null:Object.fromEntries(t)},zn=e=>{let t=Reflect.get(e,`sourcePath`);return{...Object.fromEntries(Object.entries(e).filter(([e])=>![`text`,`href`,`sourcePath`,`styles`,`fills`,`stroke`,`decorationBlendMode`,`backgroundBlendMode`,`paragraph`,`paragraphSpacing`,`paragraphIndent`,`listSpacing`,`hangingPunctuation`,`verticalTrim`,`wrapStyle`,`soft`,`textStyle`].includes(e))),...typeof t==`string`&&{sourcePath:t}}},Bn=e=>{let t=[],n=e.toReversed().map(e=>({value:e,target:t})),r=new Set;for(;n.length>0;){let e=n.pop();if(e===void 0)continue;if(`done`in e){r.delete(e.done);continue}let t=[],i=Hn(e.value,t);if(i===null)return null;if(e.target.push(i),i.kind!==`span`)continue;let a=e.value;if(typeof a!=`object`||!a||r.has(a))return null;r.add(a),n.push({done:a});let o=Reflect.get(a,`children`);if(!Array.isArray(o))return null;let s=o;for(let e of s.toReversed())n.push({value:e,target:t})}return t},Vn=e=>{let t=Reflect.get(e,`soft`);return t!==void 0&&t!==!0?null:{...zn(e),kind:`break`,...t===!0&&{soft:t}}},Hn=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=Reflect.get(e,`kind`),r=zn(e);if(n===`break`)return Vn(e);if(n===`text`){let t=Reflect.get(e,`text`);return typeof t==`string`?{...r,kind:n,text:t}:null}if(n!==`span`)return null;let i=Reflect.get(e,`children`),a=Rn(Reflect.get(e,`styles`)),o=Fn.safeParse(Reflect.get(e,`fills`)),s=gn.optional().safeParse(Reflect.get(e,`paragraph`)),c=In.safeParse(e),l=Pn.optional().safeParse(Reflect.get(e,`textStyle`));if(a===null||!o.success||!s.success||!c.success||!l.success||!Array.isArray(i))return null;let u=Ln(Reflect.get(e,`href`));return{...r,kind:n,styles:a,children:t,...l.data!==void 0&&{textStyle:l.data},...o.data!==void 0&&{fills:o.data},...s.data!==void 0&&{paragraph:s.data},...Object.fromEntries(Object.entries(c.data).filter(([,e])=>e!==void 0)),...u!==void 0&&{href:u}}},Un=e=>e.kind===`text`?e.text:e.soft===!0?`\u2028`:`
2
+ import{FailedToExitError as e,parseRouter as t}from"trpc-cli";import{z as n}from"zod";import{z as r}from"zod/mini";import{createHash as i}from"node:crypto";import{TRPCError as a,initTRPC as o}from"@trpc/server";import{middlewareMarker as s}from"@trpc/server/unstable-core-do-not-import";import{setTimeout as c}from"node:timers/promises";import l from"node:assert/strict";import{TRPCClientError as u}from"@trpc/client";import{Buffer as ee}from"node:buffer";var te=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);const ne=[`appearance-unsupported-component`,`styles-unsupported-component`,`text-shadow-blend-unsupported`,`recording-aspect-not-preserved`],d={unversioned:void 0,v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8,v9:9,v10:10,v11:11,v12:12},re={[d.v1]:`layout`,[d.v2]:`layout`,[d.v3]:`typography`,[d.v4]:`typography`,[d.v5]:`typography`,[d.v6]:`geometry`,[d.v7]:`geometry`,[d.v8]:`geometry`,[d.v9]:`geometry`,[d.v10]:`geometry`,[d.v11]:`css`,[d.v12]:`text-shadow-blend`},f=e=>typeof e==`object`&&!!e&&!Array.isArray(e),ie=e=>Array.isArray(e)?e:void 0,ae=(e,...t)=>Object.fromEntries(Object.entries(e).filter(([e])=>!t.includes(e))),oe=e=>`${e}~mask`,se={alpha:`alpha`,luminance:`luminance`,vector:`outline`},ce=e=>{if(!f(e)||!f(e.compositing))return;let t=e.compositing.mask;return typeof t==`string`?se[t]:void 0},p=e=>f(e)?ae(e,`blendMode`,`blendSource`):e,m=e=>f(e)&&`paint`in e?{...ae(e,`paint`,`alignment`),paints:[e.paint]}:e,le=e=>{if(!f(e)||!f(e.progression))return e;let t=e.progression.startValue,n=e.value;return{...ae(e,`progression`),value:typeof t==`number`&&typeof n==`number`?Math.max(t,n):n}},ue=e=>f(e)&&e.kind===`image`?ae(e,`adjustments`):e,de=e=>ie(e)?.filter(e=>!f(e)||e.kind!==`inner`).map(e=>f(e)?{...e,spread:0}:e)??e,fe=e=>{if(!f(e))return e;let t={...e,paint:p(e.paint)};return e.alignment===`inside`?{...t,alignment:`center`}:t},pe=e=>{if(!f(e)||e.kind!==`span`)return e;let t=ae(e,`decorationBlendMode`),n=ie(e.fills);n!==void 0&&(t.fills=n.map(e=>p(e))),f(e.stroke)&&(t.stroke=fe(e.stroke));let r=ie(e.children);return r!==void 0&&(t.children=r.map(e=>pe(e))),t},me=(e,t)=>{let n=ie(t.fills);if(n===void 0)return;let[r]=n,i=f(r)?r.blendMode:void 0;typeof i==`string`&&n.length===1&&(e.blendMode??`normal`)===`normal`&&(t.blendMode=i),t.fills=n.map(e=>p(e))},he=(e,t)=>{let n={...e};`border`in e&&(n.border=m(e.border)),`outline`in e&&(n.outline=m(e.outline));let r=ie(e.fills);r!==void 0&&(n.fills=r.map(e=>ue(e)));let i=ie(e.filters);return i!==void 0&&(n.filters=i.map(e=>le(e))),t?(`shadows`in e&&(n.shadows=de(e.shadows)),me(e,n),n):n},ge=e=>{let t=e.props;if(!f(t)||!f(t.paintFallback))return{...e};let n=t.paintFallback.mask;if(n===void 0)return{...e};let r=ae(t.paintFallback,`mask`),i=Object.keys(r).length===0?ae(t,`paintFallback`):{...t,paintFallback:r},a=e.styles,o=ae(e,`props`);return f(n)&&f(a)&&(o.styles=Object.fromEntries(Object.entries(a).filter(([e,t])=>n[e]!==t))),Object.keys(i).length>0&&(o.props=i),o},_e=e=>{let t=e.compositing;return f(t)?t.groupMode===void 0?t.paintSemantics===`web`&&(e.component===`frame`||e.component===`group`):t.groupMode===`isolated`:!1},ve=e=>{let t={...e};return`stroke`in e&&(t.stroke=fe(e.stroke)),f(e.decoration)&&(t.decoration=ae(e.decoration,`blendMode`)),t},ye=e=>{if(!f(e))return e;let t=ae(ge(e),`compositing`);_e(e)&&f(t.styles)&&(t.styles={...t.styles,isolation:`isolate`});let n=e.component===`text`;if(f(e.appearance)&&(t.appearance=he(e.appearance,n)),!n)return t;f(e.typography)&&(t.typography=ve(e.typography));let r=t.props,i=f(r)?ie(r.richText):void 0;return i!==void 0&&f(r)&&(t.props={...r,richText:i.map(e=>pe(e))}),t},be=e=>f(e)&&typeof e.sortKey==`string`?e.sortKey:``,xe=e=>{let t=new Map;for(let[n,r]of Object.entries(e)){if(!f(r)||typeof r.parentId!=`string`)continue;let e=t.get(r.parentId);e===void 0?t.set(r.parentId,[n]):e.push(n)}let n=t=>be(e[t]),r=(e,t)=>n(e)<n(t)?-1:Number(n(e)>n(t));for(let e of t.values())e.sort(r);return t},Se=(e,t,n)=>({id:e,label:`Mask`,labelOrigin:`generated`,component:`group`,styles:{},geometry:{kind:`mask`,maskId:t,mode:n}}),Ce=(e,t,n,r)=>{let i=``;for(let a of t){let t=ce(e[a]);t!==void 0&&(i=oe(a),n[i]=Se(i,a,t),r[i]=r[a]);let o=r[a];i!==``&&f(o)&&(r[a]={...o,parentId:i})}},we=(e,t,n)=>{for(let[r,i]of xe(n)){let a=i.filter(t=>ce(e[t])!==void 0),[o]=i,s=t[r],c=ce(e[o]);c!==void 0&&a.length===1&&f(s)&&s.component===`group`&&s.geometry===void 0?t[r]={...s,geometry:{kind:`mask`,maskId:o,mode:c}}:Ce(e,i,t,n)}},Te=e=>{let t=e.nodes;if(!f(t))return e;let n=Object.fromEntries(Object.entries(t).map(([e,t])=>[e,ye(t)]));if(!f(e.relationships))return{...e,nodes:n};let r={...e.relationships};return we(t,n,r),{...e,nodes:n,relationships:r}},Ee=e=>typeof e==`object`&&!!e&&!Array.isArray(e),De=e=>Array.isArray(e),Oe=e=>{if(!Ee(e))return e;let t={...e};return Reflect.deleteProperty(t,`blendMode`),Reflect.deleteProperty(t,`blendSource`),t},ke=e=>{if(!Ee(e)||e.component!==`text`||!Ee(e.appearance))return e;let t=e.appearance.shadows;return De(t)?{...e,appearance:{...e.appearance,shadows:t.map(e=>Oe(e))}}:e},Ae=e=>{let t=e.nodes;return Ee(t)?{...e,nodes:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,ke(t)]))}:e},je=new Set([...Object.values(d),13]),Me=e=>je.has(e),Ne=new Set([`text-shadow-blend`,`css`,`geometry`]),Pe=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Fe=e=>{if(!Pe(e))return e;let t=Object.fromEntries(Object.entries(e).filter(([e])=>e!==`gridTrack`)),n=t.container;Pe(n)&&(t.container=Object.fromEntries(Object.entries(n).filter(([e])=>e!==`materialized`)));for(let e of[`horizontal`,`vertical`]){let n=t[e];Pe(n)&&n.mode===`hug`&&(t[e]=Object.fromEntries(Object.entries(n).filter(([e])=>e!==`basis`)))}return t},Ie=e=>{let t=e.version;if(!Me(t))return null;if(t===13||!Pe(e.nodes))return e;let n=Object.entries(re).find(([e])=>Number(e)===t)?.[1];return Ne.has(n)?{...e,version:13}:Object.values(e.nodes).some(e=>Pe(e)&&e.geometry!==void 0)?null:n===`typography`?{...e,version:13}:{...e,version:13,nodes:Object.fromEntries(Object.entries(e.nodes).map(([e,t])=>[e,Pe(t)&&t.layout!==void 0?{...t,layout:Fe(t.layout)}:t]))}},Le=e=>{let t=Ie(e);return t===null||t===e?t:Ae(e.version===d.v12?t:Te(t))},Re=n.strictObject({}),ze=n.object({firstAgentWorkAt:n.iso.datetime().nullable()}),Be=n.object({cursor:n.string().nullable().default(null),limit:n.number().int().min(1).max(100).default(20)}),Ve=e=>n.object({items:n.array(e),truncated:n.boolean()}),He=2048,Ue=n.enum([`never-captured`,`capture-pending`,`extension-unavailable`,`capture-failed`,`source-mismatch`,`upload-incomplete`,`blob-missing`,`image-load-failed`,`unsupported-legacy-state`]),We=n.object({background:n.string().optional(),documentVersion:n.number().int().positive().optional(),thumbnailId:n.uuid(),url:n.string(),width:n.literal(528),height:n.literal(312),bytes:n.number().int().min(1).max(1048576)}),Ge=n.object({canvasId:n.uuid(),thumbnailId:n.uuid(),clientReleaseIdentity:n.string().min(1).max(100),attemptedOperation:n.literal(`thumbnail-download`),recoveryOutcome:n.literal(`fallback-shown`)}),Ke=n.object({recorded:n.literal(!0)}),qe=n.enum([`invite-only`,`link-view`,`link-comment`,`link-edit`]),Je=n.enum([`owner`,`can-edit`,`can-comment`,`can-view`]),Ye=n.enum([`can-edit`,`can-comment`,`can-view`]),Xe=n.object({read:n.boolean(),comment:n.enum([`yes`,`sign-in`,`no`]),edit:n.enum([`yes`,`sign-in`,`no`]).default(`no`),grants:n.array(n.object({source:n.enum([`direct`,`team`,`link`]),accessLevel:Je})).default([]),grantableAccessLevels:n.array(Ye).default([]),share:n.boolean(),manage:n.boolean(),readHistory:n.boolean().default(!1)}),h=n.object({id:n.uuid(),title:n.string().min(1),accessState:qe,organisationId:n.uuid().nullable(),sourceUrl:n.string().nullable(),unresolvedCount:n.number().int().min(0),viewerCan:Xe,createdAt:n.iso.datetime(),lastActivityAt:n.iso.datetime()}),Ze=n.object({title:n.string().trim().min(1),organisationId:n.uuid().nullable().default(null),sourceUrl:n.string().nullable().default(null)}),Qe=h.extend({version:n.number().int().positive()}),$e=n.object({canvasId:n.uuid()}),et=n.union([n.literal(`own`),n.literal(`everything`),n.uuid()]),tt=n.object({collection:et.default(`own`),title:n.string().trim().min(1).optional().describe(`Title text to match before returning canvas ids.`),deleted:n.boolean().default(!1),accessState:qe.optional(),scope:n.enum([`all`,`mine`,`shared`]).default(`all`),hasUnresolved:n.boolean().default(!1)}),nt=h.extend({screenCount:n.number().int().min(0),hasRecording:n.boolean(),lastViewedAt:n.iso.datetime().nullable()}),rt=Ve(n.union([nt.extend({thumbnail:We}),nt.extend({thumbnail:n.null(),thumbnailFallbackReason:Ue})])),it=n.object({canvasId:n.uuid(),title:n.string().trim().min(1)}),at=n.object({canvasId:n.uuid()}),ot=n.object({canvasId:n.uuid(),deletedAt:n.iso.datetime()}),st=n.object({canvasId:n.uuid(),organisationId:n.union([n.uuid(),n.literal(`personal`)])}),ct=n.object({canvas:h}),lt=n.object({canvasId:n.uuid(),organisationId:n.union([n.uuid(),n.literal(`personal`)]),title:n.string().trim().min(1).optional()}),ut=n.object({canvas:h}),dt=n.object({canvasId:n.uuid(),confirmation:n.string().min(1)}),ft=n.object({canvasId:n.uuid()}),pt=n.object({canvasId:n.uuid(),accessState:qe}),mt=n.object({canvas:h,widened:n.boolean()}),ht=n.object({canvasId:n.uuid()}),gt=n.object({lastViewedAt:n.iso.datetime().nullable()}),_t=n.object({canvasId:n.uuid()}),vt=n.object({canvasId:n.uuid()}),yt=/javascript|vbscript|data\s*:\s*text\/html|expression\s*\(|@import/iu,bt=n.string().refine(e=>!yt.test(e),`unsafe CSS value`),g=n.number(),_=n.number().nonnegative(),v=g,xt=_,y=n.number().min(0).max(1),St=n.string().min(1),Ct=n.object({space:n.enum([`srgb`,`display-p3`]),red:y,green:y,blue:y,alpha:y,definitionId:St.optional()}),wt=n.object({id:St,position:y,color:Ct}),Tt=n.object({id:St,visible:n.boolean()}),Et=Tt.extend({kind:n.literal(`blur`),value:xt,parameter:n.enum([`radius`,`standard-deviation`]).optional()}),Dt=[Tt.extend({kind:n.literal(`brightness`),value:xt}),Tt.extend({kind:n.literal(`contrast`),value:xt}),Tt.extend({kind:n.literal(`grayscale`),value:y}),Tt.extend({kind:n.literal(`hue-rotate`),value:v}),Tt.extend({kind:n.literal(`invert`),value:y}),Tt.extend({kind:n.literal(`saturate`),value:xt}),Tt.extend({kind:n.literal(`sepia`),value:y})],Ot=n.discriminatedUnion(`kind`,[Et,...Dt]),kt=n.discriminatedUnion(`kind`,[Et.extend({progression:n.object({startValue:xt,start:n.object({x:v,y:v}),end:n.object({x:v,y:v})}).optional()}),...Dt]),At=n.tuple([v,v,v,v,v,v]).refine(([e,t,n,r])=>e*r!==t*n,`paint transform must be invertible`),jt=[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`plus-lighter`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],Mt=n.enum(jt),Nt=n.object({kind:n.literal(`figma`),originalMode:n.string(),mappedMode:Mt,sourceGuid:n.string().optional(),path:n.array(n.string())}),Pt=n.object({id:St,blendMode:Mt.optional(),blendSource:Nt.optional(),visible:n.boolean(),opacity:y}),Ft=n.discriminatedUnion(`kind`,[Pt.extend({kind:n.literal(`solid`),color:Ct}),Pt.extend({kind:n.literal(`linear-gradient`),angle:v,transform:At.optional(),stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`radial-gradient`),center:n.object({x:v,y:v}),radius:n.object({x:xt,y:xt}),transform:At.optional(),stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`angular-gradient`),transform:At,stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`diamond-gradient`),transform:At,stops:n.array(wt).min(2)}),Pt.extend({kind:n.literal(`image`),assetId:n.string().min(1),fit:n.enum([`fill`,`cover`,`fit`,`crop`,`tile`]),tileScale:v.positive().optional(),tileOrigin:n.enum([`center`,`top-left`]).optional(),rotation:n.union([n.literal(0),n.literal(90),n.literal(180),n.literal(270)]).optional(),crop:n.object({x:y,y,width:y,height:y}).optional(),transform:At.optional(),filters:n.array(Ot).optional(),naturalSize:n.object({width:v.positive(),height:v.positive()}).optional()}).refine(e=>e.crop===void 0||e.transform===void 0,{message:`image paint cannot have both a crop rectangle and an affine transform`,path:[`transform`]})]),It=n.intersection(Ft,n.object({alternatives:n.partialRecord(n.enum([`solid`,`linear-gradient`,`radial-gradient`,`angular-gradient`,`diamond-gradient`,`image`]),Ft).optional(),recentGradient:n.enum([`linear-gradient`,`radial-gradient`,`angular-gradient`,`diamond-gradient`]).optional()})),Lt=n.object({id:St,name:n.string().trim().min(1),value:n.union([Ct.omit({definitionId:!0}),n.object({definitionId:St})]),source:n.object({kind:n.literal(`figma`),key:St,modeId:St.optional()}).optional()}),Rt=n.object({op:n.literal(`setArtworkColor`),nodeId:n.literal(`root`),colorId:n.string().min(1),definition:Lt.nullable()}).refine(e=>e.definition===null||e.definition.id===e.colorId,`colour identity must match`),zt=n.object({ratio:_,offset:g.optional()}),Bt=n.object({min:_.optional(),max:_.optional(),minParent:zt.optional(),maxParent:zt.optional()}).refine(({min:e,max:t})=>e===void 0||t===void 0||e<=t,`size minimum cannot exceed maximum`),Vt=n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`fixed`),value:_}).strict(),Bt.extend({mode:n.literal(`hug`),implicitExtent:_.optional()}).strict(),Bt.extend({mode:n.literal(`fill`),offset:g.optional()}).strict()]),Ht=n.object({top:_,right:_,bottom:_,left:_}),Ut=n.union([n.literal(`auto`),g]),Wt=n.object({top:Ut,right:Ut,bottom:Ut,left:Ut}),Gt=n.object({mode:n.enum([`auto-fill`,`auto-fit`]),minimum:n.number().positive()}),Kt=n.object({x:g,y:g}),qt=n.object({direction:n.enum([`row`,`column`]),alignItems:n.enum([`start`,`center`,`end`,`stretch`]),alignContent:n.enum([`start`,`center`,`end`,`stretch`,`space-between`,`space-around`,`space-evenly`]).optional(),justifyContent:n.enum([`start`,`center`,`end`,`space-between`,`space-around`,`space-evenly`]),gap:g,rowGap:g.optional(),columnGap:g.optional(),crossGapMode:n.literal(`auto`).optional(),wrap:n.enum([`nowrap`,`wrap`]).optional(),gridColumns:n.number().int().positive().optional(),gridAutoRepeat:Gt.optional(),padding:Ht}).strict(),Jt=n.object({rotation:g.optional(),flipHorizontal:n.boolean().optional(),flipVertical:n.boolean().optional(),aspectRatioLocked:n.boolean().optional(),aspectRatio:n.number().positive().optional(),horizontal:Vt.optional(),vertical:Vt.optional(),position:n.enum([`flow`,`absolute`]).optional(),retainedIgnore:n.literal(!0).optional(),gridParticipation:n.literal(`unassigned`).optional(),gridEmptyPlacement:n.literal(`manual`).optional(),gridAutoTrackPolicy:n.object({rows:n.literal(`extend-last`).optional(),columns:n.literal(`extend-last`).optional()}).strict().optional(),retainedFlexSpacing:n.object({gap:n.union([g,bt.min(1)]),counterGap:n.union([g,bt.min(1)]),crossGapMode:n.literal(`auto`).optional()}).strict().optional(),alignSelf:n.enum([`auto`,`start`,`center`,`end`,`stretch`]).optional(),flexGrow:_.optional(),flexShrink:_.optional(),flexBasis:n.union([n.literal(`auto`),_,zt]).optional(),flowOffset:Kt.optional(),order:g.int().optional(),margin:Wt.partial().optional(),clipContent:n.boolean().optional(),container:qt.partial().extend({padding:Ht.partial().optional()}).optional()}).strict(),Yt=g,Xt=_,Zt=n.number().min(0).max(1),Qt=n.string().min(1),$t=n.object({topLeft:Xt,topRight:Xt,bottomRight:Xt,bottomLeft:Xt,smoothing:Zt.optional()}),en=n.array(Xt).min(1),tn=n.enum([`none`,`round`,`square`]),nn=n.object({visible:n.boolean(),layoutInclusion:n.enum([`always`,`visible`,`none`]).optional(),width:n.object({top:Xt,right:Xt,bottom:Xt,left:Xt}),style:n.enum([`solid`,`dashed`,`dotted`]),paints:n.array(It),dashPattern:en.optional(),dashCap:tn.optional(),dashOrigin:n.literal(`css`).optional(),alignment:n.enum([`inside`,`center`,`outside`]).optional()}),rn=nn.pick({width:!0,style:!0,layoutInclusion:!0}),an=n.object({visible:n.boolean(),width:Xt,offset:Yt,style:n.enum([`solid`,`dashed`,`dotted`]),paints:n.array(It),dashPattern:en.optional(),dashCap:tn.optional()}),on=n.object({id:Qt,visible:n.boolean(),kind:n.enum([`outer`,`inner`]),color:Ct,offsetX:Yt,offsetY:Yt,blur:Xt,spread:Yt,blendMode:Mt.optional(),blendSource:Nt.optional(),isShownBehindNode:n.boolean().optional()}),sn=n.object({opacity:Zt,blendMode:Mt,fills:n.array(It),border:nn,retainedBorder:rn.optional(),outline:an,radius:$t,shadows:n.array(on),filters:n.array(Ot),backdropFilters:n.array(kt)}),cn=sn.partial().refine(e=>Object.keys(e).length>0,`appearance values cannot be empty`),ln=[`opacity`,`blendMode`,`fills`,`border`,`retainedBorder`,`outline`,`radius`,`shadows`,`filters`,`backdropFilters`],un=n.enum(ln),dn=sn.partial().extend({clear:n.array(un).min(1).max(ln.length).optional()}).refine(e=>Object.keys(e).length>0,`appearance patch cannot be empty`).refine(({clear:e,...t})=>e===void 0||e.every(e=>t[e]===void 0),`appearance patch cannot set and clear the same property`),fn=n.number(),pn=n.number().nonnegative(),mn=n.string().regex(/^[\u{20}-\u{7E}]{4}$/u),hn=mn.refine(e=>![`wght`,`opsz`].includes(e)),b=n.object({family:n.string().min(1),fallbackFamilies:n.array(n.string().min(1)),size:pn,weight:n.number().min(1).max(1e3),variations:n.record(hn,fn).optional(),features:n.record(mn,n.number().int().nonnegative().max(65535)).optional(),opticalSize:n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`auto`)}),n.object({mode:n.literal(`font-default`)}),n.object({mode:n.literal(`fixed`),value:fn})]).optional(),style:n.enum([`normal`,`italic`,`oblique`]),lineHeight:n.discriminatedUnion(`mode`,[n.object({mode:n.literal(`normal`)}),n.object({mode:n.literal(`fixed`),value:pn}),n.object({mode:n.literal(`percent`),value:pn})]),letterSpacing:n.union([fn,n.object({mode:n.literal(`percent`),value:fn})]),align:n.enum([`left`,`center`,`right`,`justify`]),direction:n.enum([`auto`,`ltr`,`rtl`]).optional(),verticalAlign:n.enum([`top`,`middle`,`bottom`]),verticalTrim:n.enum([`none`,`cap-height`]).optional(),transform:n.enum([`none`,`uppercase`,`lowercase`,`capitalize`]),decoration:n.object({line:n.enum([`none`,`underline`,`line-through`]),style:n.enum([`solid`,`double`,`dotted`,`dashed`,`wavy`]),color:Ct.optional(),blendMode:Mt.optional(),thickness:n.union([pn,n.object({mode:n.literal(`percent`),value:pn}),n.object({mode:n.literal(`font-default`)})]).optional(),offset:n.union([fn,n.object({mode:n.literal(`percent`),value:fn})]).optional(),skipInk:n.enum([`auto`,`none`,`all`]).optional()}),stroke:n.object({width:pn,paint:It,alignment:n.enum([`center`,`outside`]).optional()}).optional(),wrapping:n.enum([`wrap`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]),wrapStyle:n.enum([`auto`,`pretty`,`balance`]).optional(),paragraphSpacing:pn.optional(),paragraphIndent:pn.optional(),listStyle:n.enum([`none`,`bulleted`,`numbered`]).optional(),listSpacing:pn.optional(),hangingList:n.boolean().optional(),hangingPunctuation:n.boolean().optional(),truncation:n.object({mode:n.enum([`none`,`ellipsis`]),maxLines:n.number().int().min(1).nullable()}).optional(),insets:n.object({top:fn,right:fn,bottom:fn,left:fn}).optional()}),gn=b.pick({align:!0,direction:!0,wrapStyle:!0,paragraphSpacing:!0,paragraphIndent:!0,listStyle:!0,listSpacing:!0,hangingList:!0}).partial().extend({listLevel:n.number().int().min(1).optional(),listStart:n.number().int().min(1).optional()}).strict(),_n=b.partial().strict(),vn=b.keyof().options,yn=_n.extend({featureChanges:n.object({set:b.shape.features,clear:n.array(mn).optional(),removeIfEmpty:n.boolean().optional()}).strict().optional(),variationChanges:n.object({set:b.shape.variations,clear:n.array(hn).optional(),removeIfEmpty:n.boolean().optional()}).strict().optional(),clear:n.array(b.keyof()).max(vn.length).optional()}).refine(e=>e.clear?.every(t=>e[t]===void 0)??!0,`a typography property cannot be set and cleared in the same patch`).refine(e=>[`features`,`variations`].every(t=>{let n=e[t===`features`?`featureChanges`:`variationChanges`];return n===void 0||e[t]===void 0&&e.clear?.includes(t)!==!0&&(n.clear?.every(e=>n.set?.[e]===void 0)??!0)}),`font settings cannot be replaced and patched, or set and cleared, together`),bn={"font-family":[`family`,`fallbackFamilies`],"font-size":[`size`],"font-weight":[`weight`],"font-variation-settings":[`weight`,`variations`,`opticalSize`],"font-optical-sizing":[`opticalSize`],"font-feature-settings":[`features`],"font-style":[`style`],"line-height":[`lineHeight`],"letter-spacing":[`letterSpacing`],"text-align":[`align`],direction:[`direction`],"unicode-bidi":[`direction`],"text-indent":[`paragraphIndent`],"hanging-punctuation":[`hangingPunctuation`],"align-content":[`verticalAlign`],"text-box":[`verticalTrim`],"text-box-trim":[`verticalTrim`],"text-box-edge":[`verticalTrim`],"text-transform":[`transform`],"text-decoration":[`decoration`],"text-decoration-line":[`decoration`],"text-decoration-style":[`decoration`],"text-decoration-color":[`decoration`],"text-decoration-thickness":[`decoration`],"text-underline-offset":[`decoration`],"text-decoration-skip-ink":[`decoration`],"-webkit-text-stroke":[`stroke`],"-webkit-text-stroke-width":[`stroke`],"-webkit-text-stroke-color":[`stroke`],"--canvas-text-stroke-alignment":[`stroke`],"paint-order":[`stroke`],"white-space":[`wrapping`],"text-wrap-style":[`wrapStyle`],"text-wrap":[`wrapStyle`]},xn=/^(?:behavior|-moz-binding)$/iu,Sn=n.string().min(1).regex(/^(?:--[\w-]+|-(?:webkit|moz|ms|o)-[a-z][a-z\d-]*|[a-z][a-z\d-]*)$/iu).refine(e=>!xn.test(e),`unsafe CSS property`),x=n.object({id:n.string().min(1),property:Sn,value:bt,enabled:n.boolean()}),Cn=n.object({declarations:n.array(x)}).refine(({declarations:e})=>new Set(e.map(e=>e.id)).size===e.length,`additional style ids must be unique`),wn=n.array(x.shape.id).refine(e=>new Set(e).size===e.length,`declaration ids must be unique`),Tn=n.object({set:n.array(x).refine(e=>new Set(e.map(e=>e.id)).size===e.length,`declaration ids must be unique`).optional(),clear:wn.optional(),order:wn.optional(),empty:n.enum([`keep`,`remove`]).optional()}).strict().refine(e=>e.set?.every(t=>e.clear?.includes(t.id)!==!0)??!0,`a declaration cannot be set and cleared in the same patch`),En=new Set([`#`,`%`,`/`,`:`,`<`,`>`,`?`,`@`,`[`,`\\`,`]`,`^`,`|`]),Dn=e=>{if(e.hostname.startsWith(`[`))return!0;let t=decodeURIComponent(e.hostname);for(let e of t){let t=e.codePointAt(0)??0;if(t===127||t<=32||En.has(e))return!1}return t!==``},On=new Set([`http:`,`https:`,`mailto:`,`tel:`]),kn=e=>{let t=e.trim();if(t===``)return!1;try{let e=new URL(t,`https://enhance.invalid/`);return On.has(e.protocol)&&(![`http:`,`https:`].includes(e.protocol)||Dn(e))}catch{return!1}},An=new Set(`alignItems.backgroundColor.borderBottom.borderBottomLeftRadius.borderBottomRightRadius.borderLeft.borderRight.borderTop.borderTopLeftRadius.borderTopRightRadius.boxShadow.boxSizing.color.columnGap.display.flexDirection.fontFamily.fontFeatureSettings.fontOpticalSizing.fontSize.fontStretch.fontStyle.fontVariant.fontVariantCaps.fontVariantLigatures.fontVariantNumeric.fontVariantPosition.fontKerning.fontVariationSettings.fontWeight.justifyContent.letterSpacing.lineHeight.marginBottom.marginLeft.marginRight.marginTop.opacity.paddingBottom.paddingLeft.paddingRight.paddingTop.rowGap.textDecorationColor.textDecorationLine.textDecorationSkipInk.textDecorationStyle.textDecorationThickness.textShadow.textTransform.textUnderlineOffset.verticalAlign.whiteSpace.WebkitTextStrokeColor.WebkitTextStrokeWidth.--canvas-text-stroke-alignment`.split(`.`)),jn=b.pick({family:!0,fallbackFamilies:!0,size:!0,weight:!0,style:!0,variations:!0,opticalSize:!0,features:!0,lineHeight:!0,letterSpacing:!0,transform:!0,decoration:!0,paragraphSpacing:!0,paragraphIndent:!0,listSpacing:!0,hangingList:!0,hangingPunctuation:!0,verticalTrim:!0,wrapStyle:!0}).extend({decoration:b.shape.decoration.omit({blendMode:!0})}).strict(),Mn=jn.keyof().options,Nn=n.object({id:n.string().min(1),name:n.string().trim().min(1),description:n.string().max(2e3),sortKey:n.string().min(1).optional(),sourceStyleId:n.string().min(1).optional(),sourceCanvasId:n.uuid().optional(),sourceRevision:n.number().int().positive().optional(),typography:jn.extend({listStyle:b.shape.listStyle}).transform(e=>(Reflect.deleteProperty(e,`listStyle`),e))}).strict().refine(e=>e.sourceCanvasId===void 0||e.sourceStyleId!==void 0,{message:`A source canvas belongs to a reference snapshot.`,path:[`sourceCanvasId`]}).refine(e=>e.sourceRevision===void 0||e.sourceCanvasId!==void 0&&e.sourceStyleId!==void 0,{message:`A published revision belongs to a source style and canvas.`,path:[`sourceRevision`]}),Pn=n.object({id:Nn.shape.id,position:n.enum([`normal`,`subscript`,`superscript`]).optional(),overrides:n.partialRecord(n.enum([`fontWeight`,`fontStyle`,`fontVariationSettings`,`fontOpticalSizing`,`textDecorationLine`,`textDecorationStyle`,`textDecorationColor`,`textDecorationThickness`,`textUnderlineOffset`,`textDecorationSkipInk`]),n.union([n.string().max(1e3),n.number()])).optional()}).strict(),Fn=It.array().optional();n.object({fills:Fn});const In=gn.pick({paragraphSpacing:!0,paragraphIndent:!0,listSpacing:!0,wrapStyle:!0}).extend({hangingPunctuation:b.shape.hangingPunctuation,verticalTrim:b.shape.verticalTrim,stroke:b.shape.stroke.nullable(),decorationBlendMode:b.shape.decoration.shape.blendMode,backgroundBlendMode:Mt.optional()}).strip(),Ln=e=>typeof e==`string`&&kn(e)?e:void 0,Rn=e=>{if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=Object.entries(e);return t.some(([e,t])=>!An.has(e)||typeof t!=`string`&&typeof t!=`number`)?null:Object.fromEntries(t)},zn=e=>{let t=Reflect.get(e,`sourcePath`);return{...Object.fromEntries(Object.entries(e).filter(([e])=>![`text`,`href`,`sourcePath`,`styles`,`fills`,`stroke`,`decorationBlendMode`,`backgroundBlendMode`,`paragraph`,`paragraphSpacing`,`paragraphIndent`,`listSpacing`,`hangingPunctuation`,`verticalTrim`,`wrapStyle`,`soft`,`textStyle`].includes(e))),...typeof t==`string`&&{sourcePath:t}}},Bn=e=>{let t=[],n=e.toReversed().map(e=>({value:e,target:t})),r=new Set;for(;n.length>0;){let e=n.pop();if(e===void 0)continue;if(`done`in e){r.delete(e.done);continue}let t=[],i=Hn(e.value,t);if(i===null)return null;if(e.target.push(i),i.kind!==`span`)continue;let a=e.value;if(typeof a!=`object`||!a||r.has(a))return null;r.add(a),n.push({done:a});let o=Reflect.get(a,`children`);if(!Array.isArray(o))return null;let s=o;for(let e of s.toReversed())n.push({value:e,target:t})}return t},Vn=e=>{let t=Reflect.get(e,`soft`);return t!==void 0&&t!==!0?null:{...zn(e),kind:`break`,...t===!0&&{soft:t}}},Hn=(e,t)=>{if(typeof e!=`object`||!e)return null;let n=Reflect.get(e,`kind`),r=zn(e);if(n===`break`)return Vn(e);if(n===`text`){let t=Reflect.get(e,`text`);return typeof t==`string`?{...r,kind:n,text:t}:null}if(n!==`span`)return null;let i=Reflect.get(e,`children`),a=Rn(Reflect.get(e,`styles`)),o=Fn.safeParse(Reflect.get(e,`fills`)),s=gn.optional().safeParse(Reflect.get(e,`paragraph`)),c=In.safeParse(e),l=Pn.optional().safeParse(Reflect.get(e,`textStyle`));if(a===null||!o.success||!s.success||!c.success||!l.success||!Array.isArray(i))return null;let u=Ln(Reflect.get(e,`href`));return{...r,kind:n,styles:a,children:t,...l.data!==void 0&&{textStyle:l.data},...o.data!==void 0&&{fills:o.data},...s.data!==void 0&&{paragraph:s.data},...Object.fromEntries(Object.entries(c.data).filter(([,e])=>e!==void 0)),...u!==void 0&&{href:u}}},Un=e=>e.kind===`text`?e.text:e.soft===!0?`\u2028`:`
3
3
  `,S=e=>{let t=e.toReversed(),n=[];for(;t.length>0;){let e=t.pop();if(e===void 0)break;if(e.kind===`span`)for(let n of e.children.toReversed())t.push(n);else n.push(Un(e))}return n.join(``)},Wn=e=>{let t=e.props;if(t===void 0||!Array.isArray(t.richText))return[];let n=Bn(t.richText);if(n===null)return[];let r=t.text;return S(n)===r?n:[]},Gn=e=>{let t=[...Wn(e)];for(;t.length>0;){let e=t.pop();if(e?.kind===`span`){if(e.fills!==void 0)return!0;for(let n of e.children)t.push(n)}}return!1},Kn=e=>{let t=new Set,n=(e,r)=>{for(let i of e)i.kind===`span`?n(i.children,i.href??r):t.add(r)};return n(e),t.size===1?[...t][0]??null:null},qn=e=>[...Object.keys(e.styles),...e.stroke===void 0?[]:[`WebkitTextStrokeWidth`,`WebkitTextStrokeColor`,`--canvas-text-stroke-alignment`]],C=n.object({url:n.url(),expiresAt:n.iso.datetime(),headers:n.record(n.string(),n.string())}),Jn=n.object({url:n.url(),expiresAt:n.iso.datetime(),bytes:n.number().int().min(0)}),Yn=`/v1/canvas-assets/`,Xn=[`image/avif`,`image/gif`,`image/jpeg`,`image/png`,`image/webp`],Zn=n.object({canvasId:n.uuid(),contentType:n.enum(Xn),bytes:n.number().int().positive()}),Qn=n.object({assetId:n.uuid(),path:n.string().startsWith(`/v1/canvas-assets/`),upload:C}),$n=(e,t)=>`${Yn}${encodeURIComponent(e)}/${encodeURIComponent(t)}`,er=n.tuple([n.uuid(),n.uuid()]),tr=e=>{if(!e.startsWith(`/v1/canvas-assets/`))return null;let t=er.safeParse(e.slice(18).split(`/`)).data;return t===void 0?null:{canvasId:t[0],assetId:t[1]}},nr=[`font/ttf`,`font/otf`,`font/woff`,`font/woff2`],rr=n.object({canvasId:n.uuid(),sha256:n.string().regex(/^[a-f0-9]{64}$/u)}),ir=rr.extend({bytes:n.number().int().positive()}),ar=ir.extend({contentType:n.enum(nr)}),or=n.object({path:n.string().startsWith(`/v1/canvas-assets/`)}),sr=or.extend({upload:C}),cr=(e,t)=>`${Yn}${encodeURIComponent(e)}/fonts/${encodeURIComponent(t)}`,lr=n.object({canvasId:n.uuid(),sources:n.array(rr).min(1)}),ur=n.object({resources:n.array(n.object({source:rr,path:n.string()}))}),dr=e=>{if(!e.startsWith(`/v1/canvas-assets/`))return null;let[t,n,r,i]=e.slice(18).split(`/`,4);return n!==`fonts`||i!==void 0?null:rr.safeParse({canvasId:t,sha256:r}).data??null},fr=1e3,pr={image:Xn,font:nr},mr=n.strictObject({canvasId:n.uuid(),clientToken:n.uuid()}),hr=n.discriminatedUnion(`kind`,[mr.extend({kind:n.literal(`image`),contentType:n.enum(Xn),bytes:n.number().int().positive(),sha256:n.string().regex(/^[a-f0-9]{64}$/u)}),mr.extend({kind:n.literal(`font`),contentType:n.enum(nr),bytes:n.number().int().positive(),sha256:n.string().regex(/^[a-f0-9]{64}$/u)})]),gr=n.discriminatedUnion(`kind`,[n.strictObject({kind:n.literal(`image`),width:n.number().int().positive(),height:n.number().int().positive()}),n.strictObject({kind:n.literal(`font`),family:n.string().min(1),subfamily:n.string(),style:n.enum([`normal`,`italic`,`oblique`]),minimumWeight:n.number().min(1).max(fr),maximumWeight:n.number().min(1).max(fr)}).refine(e=>e.minimumWeight<=e.maximumWeight,`Font weight bounds must be ordered.`)]),_r=n.strictObject({canvasId:n.uuid(),clientToken:n.uuid(),assetId:n.uuid(),kind:n.enum([`image`,`font`]),contentType:n.string(),bytes:n.number().int().positive(),sha256:n.string().regex(/^[a-f0-9]{64}$/u),path:n.string().startsWith(`/v1/canvas-assets/`),state:n.enum([`awaiting_upload`,`ready`]),metadata:gr.nullable()}).refine(e=>e.state===`ready`==(e.metadata!==null),`Readiness must match verified metadata.`).refine(e=>e.metadata===null||e.metadata.kind===e.kind,`Metadata must describe the reserved asset kind.`).refine(e=>pr[e.kind].includes(e.contentType),`Content type must match the asset kind.`).refine(e=>e.path===(e.kind===`image`?$n(e.canvasId,e.assetId):cr(e.canvasId,e.sha256)),`The resource path must match its native identity.`),vr=_r.safeExtend({upload:C.nullable()}).refine(e=>e.state===`awaiting_upload`==(e.upload!==null),`Only pending uploads receive upload access.`),yr=new Set([`aspect-ratio`,`-webkit-line-clamp`,`line-clamp`,`flex-grow`,`flex-shrink`,`font-weight`,`opacity`,`order`,`z-index`,`grid-area`,`grid-row`,`grid-column`,`grid-row-start`,`grid-row-end`,`grid-column-start`,`grid-column-end`]),br=(e,t)=>typeof t==`number`&&!yr.has(e.toLowerCase())?`${String(t)}px`:String(t),xr=[`top`,`right`,`bottom`,`left`],Sr=[`grid-template-rows`,`grid-template-columns`,`grid-template-areas`],Cr={gap:[`row-gap`,`column-gap`],"text-wrap":[`text-wrap-mode`,`text-wrap-style`],padding:xr.map(e=>`padding-${e}`),margin:xr.map(e=>`margin-${e}`),flex:[`flex-grow`,`flex-shrink`,`flex-basis`],"flex-flow":[`flex-direction`,`flex-wrap`],"place-content":[`align-content`,`justify-content`],"place-items":[`align-items`,`justify-items`],"place-self":[`align-self`,`justify-self`],"grid-template":Sr,grid:[...Sr,`grid-auto-rows`,`grid-auto-columns`,`grid-auto-flow`],"grid-row":[`grid-row-start`,`grid-row-end`],"grid-column":[`grid-column-start`,`grid-column-end`],"grid-area":[`grid-row-start`,`grid-column-start`,`grid-row-end`,`grid-column-end`]},wr=e=>Cr[e.toLowerCase()]??[e.toLowerCase()],Tr=(e,t)=>{if(e.isEscaped)return{...e,isEscaped:!1};if(t===`\\`)return{...e,isEscaped:!0};if(e.quote!==``)return{...e,quote:e.quote===t?``:e.quote};if([`"`,`'`].includes(t))return{...e,quote:t};let n=[`(`,`[`,`{`].includes(t)?1:[`)`,`]`,`}`].includes(t)?-1:0;return{...e,depth:e.depth+n}},Er=(e,t=`space`)=>{let n=[],r=``,i={depth:0,quote:``,isEscaped:!1};for(let a of e){let e=i.depth===0&&i.quote===``&&!i.isEscaped;i=Tr(i,a),e&&(t===`space`?/\s/u.test(a):a===t)?((t!==`space`||r!==``)&&n.push(r.trim()),r=``):r+=a}return(t!==`space`||r!==``)&&n.push(r.trim()),n},Dr=e=>/^(?:--|-?[_a-z\u{80}-\u{FFFF}])[-\w\u{80}-\u{FFFF}]*$/iu.test(e)&&!/^(?:auto|span|initial|unset)$/iu.test(e)?e:`auto`,Or=(e,t,n)=>{let r=Er(t,`/`),i=r[0]??t;if(e!==`grid-area`)return r[n]??Dr(i);let a=r[1]??Dr(i);return[i,a,r[2]??Dr(i),r[3]??Dr(a)][n]??t},kr=(e,t,n)=>{let r=Er(n?e:t),i=r.filter(e=>!/^(?:auto-flow|dense)$/iu.test(e)).join(` `),a=`${n?`row`:`column`}${r.some(e=>/^dense$/iu.test(e))?` dense`:``}`;return[n?`none`:e,n?t:`none`,`none`,n&&i!==``?i:`auto`,!n&&i!==``?i:`auto`,a]},Ar=(e,t,n)=>{if(/^(?:none|initial|unset)$/iu.test(t))return[`none`,`none`,`none`,`auto`,`auto`,`row`][n]??t;let r=Er(t,`/`),i=r[0]??t,a=r[1];if(i===``||a===``||r.length>2)return t;let o=Er(i).some(e=>e.toLowerCase()===`auto-flow`),s=a!==void 0&&Er(a).some(e=>e.toLowerCase()===`auto-flow`);if(e===`grid`&&a!==void 0&&o!==s)return kr(i,a,o)[n]??t;if(o||s)return t;let c=/["']/u.test(i);return a===void 0&&!c?t:[c?t:i,a??`none`,c?i:`none`,`auto`,`auto`,`row`][n]??t},jr=e=>{let t=[],n=`0%`;for(let r of e)/^(?:\d+(?:\.\d*)?|\.\d+)$/u.test(r)&&t.length<2?t.push(r):n=r;return[t[0]??`1`,t[1]??`1`,n]},Mr=(e,t,n)=>{if(/(?:var|env)\(|^(?:inherit|revert(?:-layer)?)$/iu.test(t))return t;if(/^grid-(?:area|row|column)$/u.test(e))return Or(e,t,n);if(e===`grid-template`||e===`grid`)return Ar(e,t,n);let r=Er(t);return e===`text-wrap`?n===0?r.find(e=>/^(?:wrap|nowrap)$/u.test(e))??`wrap`:r.find(e=>/^(?:auto|balance|pretty|stable)$/u.test(e))??`auto`:e===`flex-flow`?n===0?r.find(e=>/^(?:row|column)(?:-reverse)?$/u.test(e))??`row`:r.find(e=>/^(?:nowrap|wrap|wrap-reverse)$/u.test(e))??`nowrap`:e===`flex`?t===`none`?[`0`,`0`,`auto`][n]??t:t===`initial`?[`0`,`1`,`auto`][n]??t:jr(r)[n]??t:r[n]??(n===3?r[1]:void 0)??r[0]??t},Nr=e=>e.additionalStyles===void 0?{}:Object.fromEntries(e.additionalStyles.declarations.filter(e=>e.enabled).map(e=>[e.property,e.value])),Pr=e=>{let t=new Set(e.additionalStyles?.declarations.map(e=>e.property.toLowerCase()));return{...Object.fromEntries(Object.entries(e.styles).filter(([e])=>!t.has(e.toLowerCase()))),...Nr(e)}},Fr=e=>/!important\s*$/iu.test(String(e)),Ir=(e,t)=>{let n=String(e).replace(/\s*!important\s*$/iu,``).trim();return t||n.includes(`(`)?n:n.toLowerCase()},Lr=(e,t)=>{let n=null,r=!1,i=Object.entries(Pr(e));for(let[e,a]of i){let i=wr(e),o=i.indexOf(t);if(o===-1)continue;let s=Fr(a);if(r&&!s)continue;let c=Ir(a,/^grid(?:-|$)/iu.test(e));n=i.length===1?c:Mr(e.toLowerCase(),c,o),r=s}return n??void 0},Rr=new WeakMap,zr=(e,t)=>{let n=Rr.get(e.styles),r=n!==void 0&&n.additionalStyles===e.additionalStyles?n:{additionalStyles:e.additionalStyles,values:new Map};if(r!==n&&Rr.set(e.styles,r),r.values.has(t))return r.values.get(t);let i=Lr(e,t);return r.values.set(t,i),i},Br=(e,t)=>{let n=new Set(Object.entries(Pr(e)).filter(([,e])=>Fr(e)).flatMap(([e])=>wr(e)));return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,wr(e).some(e=>n.has(e))&&!Fr(t)?`${br(e,t)} !important`:t]))},Vr=(e,t)=>{let n=new Set,r=e;for(;r!==void 0&&!n.has(r.id);){n.add(r.id);let e=zr(r,`writing-mode`);if(e!==void 0&&e!==`inherit`&&e!==`unset`)return e;if(t===void 0)break;let i=t.relationships[r.id]?.parentId;if(i===void 0)break;r=t.nodes[i]}return`horizontal-tb`},Hr=(e,t,n)=>{let r=/^(?:vertical|sideways)-/u.test(Vr(e,n));return[t===`horizontal`?`width`:`height`,t===`vertical`===r?`inline-size`:`block-size`]},Ur=e=>{if(e===void 0)return`freeform`;let t=zr(e,`display`);if(t!==void 0)return/^(?:(?:inline|block)\s+|inline-)?grid$/u.test(t)?`grid`:/^(?:(?:inline|block)\s+|inline-)?flex$/u.test(t)?`flex`:`freeform`;let n=e.layout?.container;return n===void 0?`freeform`:n.gridColumns!==void 0||n.gridAutoRepeat!==void 0?`grid`:`flex`},Wr=(e,t)=>{if(e===void 0||Ur(e)!==`flex`)return;let n=e.layout?.container?.direction??(t=>zr(e,t))(`flex-direction`)??`row`;if(!/^(?:row|column)(?:-reverse)?$/u.test(n))return;let r=/^(?:vertical|sideways)-/u.test(Vr(e,t));return n.startsWith(`column`)===r?`horizontal`:`vertical`},Gr=n.enum([`png`,`jpeg`]),Kr=n.number().positive(),qr=n.strictObject({format:Gr.optional(),scale:Kr.optional()}),Jr=n.strictObject({format:Gr.nullable().optional(),scale:Kr.nullable().optional()}).refine(e=>e.format!==void 0||e.scale!==void 0),Yr=n.number(),Xr=Yr.nonnegative(),Zr=n.string().min(1).max(200),Qr=n.string().regex(/^[MmLlHhVvCcSsQqTtAaZzEe\d\s.,+-]*$/u),$r=n.strictObject({x:Yr,y:Yr,width:Xr,height:Xr}),ei=n.strictObject({kind:n.literal(`path`),path:Qr.min(1),fillRule:n.enum([`nonzero`,`evenodd`]),viewBox:$r.extend({width:Xr.positive(),height:Xr.positive()})}),ti=n.strictObject({kind:n.literal(`polygon`),count:n.number().int().min(3),innerRatio:n.number().min(0).max(1).optional(),cornerRadius:Xr,cornerSmoothing:n.number().min(0).max(1)}),ni=n.enum([`union`,`subtract`,`intersect`,`exclude`]),ri=n.strictObject({kind:n.literal(`boolean`),operation:ni,operandIds:n.array(Zr).min(1).refine(e=>new Set(e).size===e.length),result:n.strictObject({path:Qr,fillRule:n.literal(`nonzero`),isEmpty:n.boolean(),bounds:$r,inputKey:n.string().regex(/^[a-f0-9]{16}$/u)}).refine(e=>e.isEmpty===(e.path===``))}),ii=n.discriminatedUnion(`kind`,[ei,ti,n.strictObject({kind:n.literal(`mask`),maskId:Zr,mode:n.enum([`alpha`,`luminance`,`outline`]).optional()}),ri]),ai=`Update Enhance: compositing is no longer supported. Use the isolation style or a mask group.`,oi=n.literal(13,{error:`This editor uses an unsupported document format. Update the editor before changing this canvas.`});n.object({signature:n.string().regex(/^[a-f0-9]{16}$/u),image:n.string().startsWith(`data:image/jpeg;base64,`),families:n.array(n.string().min(1)).min(1)});const w=n.object({x:n.number(),y:n.number(),width:n.number().nonnegative(),height:n.number().nonnegative()}),si=n.enum([`start`,`center`,`end`,`stretch`,`scale`]),ci=n.object({x:si,y:si}),li=n.enum([`source`,`generated`,`content`,`user`]),T=n.looseObject({id:n.string().min(1),label:n.string(),component:n.string().min(1),labelOrigin:li.optional(),visible:n.boolean().optional(),locked:n.boolean().optional(),constraints:ci.optional(),styles:n.record(n.string(),n.union([n.string(),n.number()])),layout:Jt.optional(),responsive:n.never().optional(),appearance:cn.optional(),exportSettings:qr.optional(),typography:_n.optional(),additionalStyles:Cn.optional(),geometry:ii.optional(),compositing:n.never({error:ai}).optional(),props:n.record(n.string(),n.unknown()).optional(),box:w.optional()}),ui=n.object({version:n.literal(13),nodes:n.record(n.string(),T),relationships:n.record(n.string(),n.object({parentId:n.string().min(1),sortKey:n.string().min(1)})),tombstones:n.record(n.string(),n.literal(!0)).default({})}),di=n.record(n.string(),n.unknown()),fi=n.preprocess(e=>{let t=di.safeParse(e).data;return t===void 0?e:Object.keys(t).length===0?pi():Le(t)},ui),pi=()=>({version:13,nodes:{root:{id:`root`,label:`Canvas`,component:`root`,labelOrigin:`generated`,visible:!0,locked:!1,styles:{}}},relationships:{},tombstones:{}}),mi=n.string().min(1),hi=n.object({code:n.enum([`asset-unavailable`,`content-omitted`,`cross-origin-frame`,`nodes-truncated`,`responsive-behavior-not-editable`,`style-degraded`,`unsupported-surface`]),message:n.string().min(1),temporaryId:mi.optional()}),gi=n.enum([`text-stroke-inside`,`text-stroke-outside-translucent`,`text-stroke-paints`,`text-inner-shadow`,`text-shadow-spread`,`text-shadow-blend`,`text-background-blur`,`progressive-layer-blur`,`progressive-background-blur`,`blend-plus-darker`,`blend-linear-burn`,`image-exposure`,`image-contrast`,`image-saturation`,`image-temperature`,`image-tint`,`image-highlights`,`image-shadows`,`effect-noise`,`effect-texture`,`effect-glass`]),_i=n.object({nodeCount:n.number().int().positive(),unsupportedFeatures:n.array(n.object({feature:gi,count:n.number().int().positive()})).optional(),sourceNodeCount:n.number().int().positive().optional(),collapsedNodeCount:n.number().int().nonnegative().optional(),collapsedWrapperNodeCount:n.number().int().nonnegative().optional(),collapsedNeutralWrapperNodeCount:n.number().int().nonnegative().optional(),collapsedTransferredWrapperNodeCount:n.number().int().nonnegative().optional(),layoutContainerCount:n.number().int().nonnegative().optional(),removedLeafNodeCount:n.number().int().nonnegative().optional(),retainedSemanticOwnerNodeCount:n.number().int().nonnegative().optional(),truncatedNodeCount:n.number().int().nonnegative().optional(),addedLayoutNodeCount:n.number().int().nonnegative().optional(),issues:n.array(hi)}),vi=T.omit({id:!0}).extend({temporaryId:mi}),yi=n.object({temporaryId:mi,parentTemporaryId:mi,sortKey:n.string().min(1)}),bi=n.object({version:n.literal(1),rootTemporaryId:mi,nodes:n.array(vi).min(1),relationships:n.array(yi),report:_i.catch({nodeCount:0,issues:[]})}).transform(e=>({...e,report:{...e.report,nodeCount:e.nodes.length}})),xi=n.object({canvasId:n.uuid(),documentFormatVersion:oi,mutationId:n.uuid(),baseVersion:n.number().int().positive(),screenNodeId:n.string().min(1),draft:bi}),Si=n.object({canvasId:n.uuid(),mutationId:n.uuid(),previousVersion:n.number().int().positive(),version:n.number().int().positive(),rootNodeId:n.string().min(1),idMap:n.record(mi,n.string().min(1)),insertedNodeIds:n.array(n.string().min(1)),removedNodeIds:n.array(n.string().min(1)),boxes:n.record(n.string().min(1),w),affectedBounds:w}),Ci=[`queued`,`claimed`,`grant`,`navigate`,`document`,`sources`,`fonts`,`layout`,`target`,`capture`,`serialize`,`compile`,`commit`,`upload`,`complete`],wi=[`queued`,`running`,`succeeded`,`failed`,`cancelled`,`expired`],Ti=[`VERSION_CHANGED`,`TARGET_NOT_FOUND`,`TARGET_INVALID`,`OUTPUT_TOO_LARGE`,`READINESS_TIMEOUT`,`SOURCE_FAILED`,`BROWSER_CRASH`,`CAPTURE_FAILED`,`CONVERSION_FAILED`,`PREPARATION_FAILED`,`UPLOAD_FAILED`,`WORKER_UNAVAILABLE`,`CANCELLED`,`EXPIRED`,`INTERNAL`],Ei=[`ASSET_UNAVAILABLE`,`FONT_FALLBACK`,`LOCAL_FONT_FALLBACK`,`SOURCE_FALLBACK`,`SCALE_REDUCED`],Di=n.number().int().positive(),Oi=n.object({x:n.number(),y:n.number(),width:n.number().positive(),height:n.number().positive()}),E=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`content`)}),n.object({kind:n.literal(`page`),pageId:n.string().min(1)}),n.object({kind:n.literal(`node`),nodeId:n.string().min(1)}),n.object({kind:n.literal(`bounds`),bounds:Oi})]),ki=n.object({kind:n.literal(`recording`),recordingId:n.uuid(),atMs:n.number().int().nonnegative()}),Ai=n.object({kind:n.literal(`recording`),recordingId:n.uuid(),requestedAtMs:n.number().int().nonnegative(),settledAtMs:n.number().int().nonnegative()}),ji=n.object({recordingId:n.uuid(),atMs:n.number().int().nonnegative(),screenId:n.uuid(),screenNodeId:n.string().min(1),viewport:n.object({width:n.number().int().positive(),height:n.number().int().positive()}),box:Oi,version:n.number().int().positive(),alreadyPresent:n.boolean()}),Mi=n.object({canvasId:n.uuid(),expectedVersion:n.number().int().positive().optional(),scope:n.strictObject({pageId:n.string().min(1).optional(),nodeIds:n.array(n.string().min(1))}).optional(),target:E.default({kind:`content`}),sourceState:ki.optional(),scale:n.number().positive().default(1),maxOutputPixels:Di.optional(),format:n.literal(`png`).default(`png`)}).refine(e=>e.sourceState===void 0||e.target.kind===`node`,{message:`a source state requires a node render target`,path:[`sourceState`]}),Ni=n.enum(Ci),Pi=n.enum(wi),Fi=n.enum(Ti),Ii=n.enum(Ei),Li=n.object({code:Ii,message:n.string().min(1).max(500),sourceId:n.string().min(1).nullable()}),D=n.object({reason:Fi,phase:Ni,message:n.string().min(1).max(500),retryable:n.boolean(),sourceId:n.string().min(1).nullable()}),Ri=n.object({phase:Ni,durationMs:n.number().int().min(0)}),zi=n.object({canvasId:n.uuid(),requestedVersion:n.number().int().positive(),loadedVersion:n.number().int().positive(),target:E,sourceState:Ai.optional(),snapshot:ji.optional(),bounds:Oi,width:n.number().int().positive(),height:n.number().int().positive(),scale:n.number().positive(),contentType:n.literal(`image/png`),bytes:n.number().int().positive(),warnings:n.array(Li),timings:n.array(Ri),expiresAt:n.iso.datetime()}),Bi=n.object({id:n.uuid(),canvasId:n.uuid(),purpose:n.enum([`inspection`,`snapshot`,`thumbnail`,`export`]),phase:Ni,requestedVersion:n.number().int().positive(),target:E,sourceState:ki.optional(),scale:n.number().positive(),maxOutputPixels:Di.optional(),format:n.literal(`png`),attempt:n.number().int().min(0),lastFailure:D.optional(),createdAt:n.iso.datetime(),updatedAt:n.iso.datetime()}),Vi=n.discriminatedUnion(`state`,[Bi.extend({state:n.literal(`queued`),result:n.null(),failure:n.null()}),Bi.extend({state:n.literal(`running`),result:n.null(),failure:n.null()}),Bi.extend({state:n.literal(`succeeded`),phase:n.literal(`complete`),result:zi,failure:n.null()}),Bi.extend({state:n.literal(`failed`),result:n.null(),failure:D}),Bi.extend({state:n.literal(`cancelled`),result:n.null(),failure:D.extend({reason:n.literal(`CANCELLED`)})}),Bi.extend({state:n.literal(`expired`),result:n.null(),failure:D.extend({reason:n.literal(`EXPIRED`)})})]),Hi=n.object({job:Vi,alreadyExists:n.boolean()}),Ui=n.object({jobId:n.uuid()}),Wi=n.object({job:Vi}),Gi=n.object({jobId:n.uuid()}),Ki=n.object({job:Vi}),qi=n.discriminatedUnion(`status`,[n.object({status:n.literal(`available`),version:n.number().int().positive(),format:n.literal(`enhance-scene-json`),code:n.string(),prototypes:n.array(n.object({nodeId:n.string(),prototypeId:n.uuid(),deploymentId:n.uuid(),capability:n.literal(`canvas.read`),canvasPath:n.string(),input:n.object({canvasRef:n.uuid(),view:n.literal(`source`),nodeId:n.string()}),guidance:n.string()})),guidance:n.string()}),n.object({status:n.literal(`unavailable`),guidance:n.string()})]),Ji=n.object({canvasId:n.uuid(),nodeId:n.string().min(1),expectedVersion:n.number().int().positive(),scale:n.number().positive()}),Yi=n.object({jobId:n.uuid()}),Xi=n.object({jobId:n.uuid(),download:Jn,source:qi.optional()}),Zi=n.strictObject({previewJobId:n.uuid(),scope:n.strictObject({pageId:n.string().min(1).optional(),nodeIds:n.array(n.string().min(1))}),placement:n.strictObject({kind:n.literal(`below-source`)})}),Qi=n.object({canvasId:n.uuid(),recordingId:n.uuid(),atMs:n.number().int().nonnegative(),context:n.strictObject({expectedVersion:n.number().int().positive(),request:Zi}).optional()}),$i=n.object({job:Vi,alreadyExists:n.boolean()}),ea=n.object({rootIds:n.array(n.string().min(1))}),ta=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`adjacent`)}),n.object({kind:n.literal(`insert-children`),pageId:n.string().min(1).optional(),targetNodeId:n.string().min(1)}),n.object({kind:n.literal(`replace`),targetNodeId:n.string().min(1)})]),na=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`screen`),nodeId:n.string().min(1)}),n.object({kind:n.literal(`html`),html:n.string().min(1),label:n.string().min(1),idPrefix:n.string().min(1).regex(/^[\w-]+$/u).optional()})]),ra=n.object({source:na,destination:ta,revisionPolicy:n.enum([`strict`,`rebase`]).optional()}).superRefine((e,t)=>{e.source.kind===`screen`&&e.destination.kind!==`adjacent`&&t.addIssue({code:`custom`,message:`stored screens convert beside their source`,path:[`destination`]}),e.source.kind===`html`&&e.destination.kind===`adjacent`&&t.addIssue({code:`custom`,message:`authored HTML requires an editable destination`,path:[`destination`]})}),ia=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`screen`),nodeId:n.string().min(1)}),n.object({kind:n.literal(`html`),label:n.string().min(1)})]),aa=n.object({id:n.uuid(),canvasId:n.uuid(),source:ia,destination:ta,phase:Ni,requestedVersion:n.number().int().positive(),attempt:n.number().int().nonnegative(),createdAt:n.iso.datetime(),updatedAt:n.iso.datetime()}),oa=n.discriminatedUnion(`state`,[aa.extend({state:n.literal(`queued`),result:n.null(),failure:n.null()}),aa.extend({state:n.literal(`running`),result:n.null(),failure:n.null()}),aa.extend({state:n.literal(`succeeded`),phase:n.literal(`complete`),result:Si.extend({report:_i}),failure:n.null()}),aa.extend({state:n.literal(`failed`),result:n.null(),failure:D}),aa.extend({state:n.literal(`cancelled`),result:n.null(),failure:D.extend({reason:n.literal(`CANCELLED`)})}),aa.extend({state:n.literal(`expired`),result:n.null(),failure:D.extend({reason:n.literal(`EXPIRED`)})})]),sa=ra.and(n.object({canvasId:n.uuid(),expectedVersion:n.number().int().positive().optional(),mutationId:n.uuid().optional(),writeScope:ea.optional(),scope:Mi.shape.scope})).refine(e=>e.scope===void 0&&e.revisionPolicy!==`strict`||e.expectedVersion!==void 0,{message:`scoped or strict conversion requires an expected version`,path:[`expectedVersion`]}),ca=n.object({job:oa,alreadyExists:n.boolean()}),la=n.object({jobId:n.uuid()}),ua=n.object({job:oa}),da=n.object({jobId:n.uuid()}),fa=n.object({job:oa});n.discriminatedUnion(`state`,[n.object({state:n.literal(`loading`),jobId:n.uuid()}),n.object({state:n.literal(`ready`),jobId:n.uuid(),loadedVersion:n.number().int().positive(),draft:bi}),n.object({state:n.literal(`failed`),jobId:n.uuid(),message:n.string().min(1)})]);const pa=n.object({add:n.array(n.object({resourceId:n.string().min(1)}).catchall(n.unknown())),remove:n.array(n.string().min(1))}),ma=n.union([n.string(),g]),O=n.union([x.shape.value,g]).nullable().optional(),ha=n.strictObject({border:O,"border-block":O,"border-block-color":O,"border-block-style":O,"border-block-width":O,"border-block-end":O,"border-block-end-color":O,"border-block-end-style":O,"border-block-end-width":O,"border-block-start":O,"border-block-start-color":O,"border-block-start-style":O,"border-block-start-width":O,"border-bottom":O,"border-bottom-color":O,"border-bottom-style":O,"border-bottom-left-radius":ma.optional(),"border-bottom-right-radius":ma.optional(),"border-bottom-width":ma.optional(),"border-color":n.string().nullable().optional(),"border-image":O,"border-image-source":O,"border-image-slice":O,"border-image-width":O,"border-image-outset":O,"border-image-repeat":O,"border-inline":O,"border-inline-color":O,"border-inline-style":O,"border-inline-width":O,"border-inline-end":O,"border-inline-end-color":O,"border-inline-end-style":O,"border-inline-end-width":O,"border-inline-start":O,"border-inline-start-color":O,"border-inline-start-style":O,"border-inline-start-width":O,"border-left":O,"border-left-color":O,"border-left-style":O,"border-left-width":ma.optional(),"border-radius":ma.nullable().optional(),"border-right":O,"border-right-color":O,"border-right-style":O,"border-right-width":ma.optional(),"border-style":O,"border-top":O,"border-top-color":O,"border-top-style":O,"border-top-left-radius":ma.optional(),"border-top-right-radius":ma.optional(),"border-top-width":ma.optional(),"border-width":ma.nullable().optional(),outline:O,"outline-color":O,"outline-style":O,"outline-offset":ma.optional(),"outline-width":ma.optional()}),ga=n.string().regex(/^(?:\d+(?:\.\d+)?|\.\d+)px$/u),_a=n.string().regex(/^-?(?:\d+(?:\.\d+)?|\.\d+)px$/u),va=x.shape.value.refine(e=>!/\burl\s*\(/iu.test(e),`invalid text colour`),ya=n.union([b.shape.weight,n.enum([`normal`,`bold`,`bolder`,`lighter`]),n.string().regex(/^\d+(?:\.\d+)?$/u).refine(e=>b.shape.weight.safeParse(Number(e)).success)]),k={color:va,"font-family":x.shape.value,"font-size":n.union([_,ga]),"font-weight":ya,"font-style":n.enum([`normal`,`italic`,`oblique`]),"letter-spacing":g,"line-height":n.union([n.number().positive(),n.string().regex(/^(?:\d+(?:\.\d+)?(?:px|em|rem|%)?|normal)$/u)]),"text-align":n.enum([`left`,`center`,`right`]),"white-space":n.enum([`normal`,`nowrap`,`pre`,`pre-wrap`,`pre-line`,`break-spaces`])},ba=n.strictObject({color:k.color.optional(),"font-family":k[`font-family`].optional(),"font-size":k[`font-size`].optional(),"font-weight":k[`font-weight`].optional(),"font-style":k[`font-style`].optional(),"letter-spacing":k[`letter-spacing`].optional(),"line-height":k[`line-height`].optional(),"text-align":k[`text-align`].optional(),"white-space":k[`white-space`].optional()}),xa=n.union([x.shape.value,g]).nullable().optional(),Sa=n.strictObject({"text-decoration":xa,"text-decoration-line":xa,"text-decoration-style":xa,"text-decoration-color":xa,"text-decoration-thickness":xa,"text-underline-offset":xa,"text-decoration-skip-ink":xa,color:k.color.nullable().optional(),"font-family":k[`font-family`].nullable().optional(),"font-size":k[`font-size`].nullable().optional(),"font-weight":k[`font-weight`].nullable().optional(),"font-optical-sizing":n.enum([`auto`,`none`]).nullable().optional(),"font-variation-settings":x.shape.value.nullable().optional(),"font-feature-settings":x.shape.value.nullable().optional(),"text-wrap":x.shape.value.nullable().optional(),"text-wrap-mode":x.shape.value.nullable().optional(),"text-wrap-style":x.shape.value.nullable().optional(),"text-box":x.shape.value.nullable().optional(),"text-box-trim":x.shape.value.nullable().optional(),"text-box-edge":x.shape.value.nullable().optional(),"font-style":k[`font-style`].nullable().optional(),"font-stretch":n.union([n.enum([`normal`,`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`]),n.string().regex(/^\d+(?:\.\d+)?%$/u)]).nullable().optional(),"letter-spacing":n.union([g,_a,n.literal(`normal`)]).nullable().optional(),"line-height":k[`line-height`].nullable().optional(),"text-align":k[`text-align`].nullable().optional(),"text-indent":n.union([g,_a]).nullable().optional(),"white-space":k[`white-space`].nullable().optional(),"word-spacing":n.union([g,_a,n.literal(`normal`)]).nullable().optional()}),Ca=x.shape.value,wa=n.union([n.string(),g]),A=n.union([x.shape.value,g]).nullable().optional(),Ta=Sa.extend(ha.shape).extend({"align-content":A,"align-items":A,"align-self":A,"aspect-ratio":A,"block-size":A,bottom:A,"box-sizing":A,display:A,flex:A,"flex-basis":A,"flex-direction":A,"flex-grow":A,"flex-shrink":A,"flex-wrap":A,grid:A,"grid-template":A,"grid-template-columns":A,"grid-template-rows":A,"grid-template-areas":A,"grid-auto-columns":A,"grid-auto-rows":A,"grid-auto-flow":A,"grid-row":A,"grid-column":A,"grid-area":A,"grid-row-start":A,"grid-row-end":A,"grid-column-start":A,"grid-column-end":A,"justify-items":A,"justify-self":A,"place-items":A,"place-self":A,"place-content":A,height:A,"inline-size":A,inset:A,"inset-block":A,"inset-block-end":A,"inset-block-start":A,"inset-inline":A,"inset-inline-end":A,"inset-inline-start":A,isolation:A,"justify-content":A,left:A,margin:A,"margin-block":A,"margin-block-end":A,"margin-block-start":A,"margin-inline":A,"margin-inline-end":A,"margin-inline-start":A,"max-block-size":A,"max-height":A,"max-inline-size":A,"max-width":A,"min-block-size":A,"min-height":A,"min-inline-size":A,"min-width":A,order:A,padding:A,"padding-block":A,"padding-block-end":A,"padding-block-start":A,"padding-inline":A,"padding-inline-end":A,"padding-inline-start":A,position:A,right:A,top:A,width:A,background:n.string().nullable().optional(),"background-color":n.string().nullable().optional(),"background-image":A,"background-size":A,"background-position":A,"background-repeat":A,"background-origin":A,"background-blend-mode":A,"box-shadow":n.string().nullable().optional(),"column-gap":wa.optional(),gap:wa.optional(),"margin-bottom":wa.optional(),"margin-left":wa.optional(),"margin-right":wa.optional(),"margin-top":wa.optional(),opacity:n.union([n.string(),n.number()]).nullable().optional(),overflow:Ca.nullable().optional(),"overflow-x":Ca.nullable().optional(),"overflow-y":Ca.nullable().optional(),"padding-bottom":wa.optional(),"padding-left":wa.optional(),"padding-right":wa.optional(),"padding-top":wa.optional(),"row-gap":wa.optional(),"stroke-width":wa.optional()}),Ea=n.union([Ta.keyof(),x.shape.property.refine(e=>e.startsWith(`--`))]),Da=Ta.catchall(A).refine(e=>Object.keys(e).every(e=>Ea.safeParse(e).success)),Oa=n.record(n.string(),n.unknown()),ka=n.number().int().positive(),Aa=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`retain`),count:ka,attributes:Oa.optional(),shouldPreserveParagraph:n.boolean().optional()}),n.object({kind:n.literal(`delete`),count:ka}),n.object({kind:n.literal(`insert`),text:n.string().min(1).refine(e=>e.isWellFormed()),attributes:Oa.optional(),shouldPreserveParagraph:n.boolean().optional()})]),ja=n.object({baseLength:n.number().int().nonnegative(),representation:n.enum([`plain`,`rich`,`links`]).optional(),steps:n.array(Aa),endAttributes:Oa.optional(),properties:Oa.refine(e=>[`text`,`richText`,`links`].every(t=>!Object.hasOwn(e,t))).optional()}).superRefine((e,t)=>{let n=0;for(let t of e.steps)t.kind!==`insert`&&(n+=t.count);n!==e.baseLength&&t.addIssue({code:`custom`,message:`text change must consume its exact base`})}),Ma=n.object({actionId:n.string().min(1),baseVersion:n.number().int().nonnegative(),isActive:n.boolean()}),Na=n.object({baseVersion:n.number().int().nonnegative(),after:n.array(n.string().min(1)),change:ja}),Pa=n.object({actionId:n.string().min(1),baseVersion:n.number().int().nonnegative(),originalChange:ja,inverse:ja,history:Ma.optional(),source:Na.optional()}),Fa=n.object({op:n.literal(`editText`),nodeId:n.string().min(1),change:ja,actionId:n.string().min(1).optional(),revision:Pa.optional(),history:Ma.optional(),source:Na.optional()}),Ia=2e3,La=n.object({title:n.string().trim().min(1).max(200)}).strict(),Ra=n.array(Nn.shape.id),za=n.object({canvasId:n.uuid()}),Ba=n.object({definition:Nn.refine(e=>e.sourceStyleId===void 0),revision:n.number().int().positive(),fontFaces:n.array(n.record(n.string(),n.unknown()))}),Va=n.object({styles:n.array(Ba).refine(e=>new Set(e.map(e=>e.definition.id)).size===e.length)}),Ha=za.extend({revision:n.number().int().positive(),documentVersion:n.number().int().positive(),description:n.string().max(Ia),publishedAt:n.iso.datetime(),...Va.shape}),Ua=za.extend({mutationId:n.uuid(),expectedRevision:n.number().int().nonnegative(),documentVersion:n.number().int().positive(),publish:Ra,remove:Ra,description:n.string().trim().max(Ia)}).strict().refine(e=>{let t=[...e.publish,...e.remove];return t.length>0&&new Set(t).size===t.length},{message:`Select each changed style once.`}),Wa=n.object({canvasId:n.uuid(),title:n.string().max(200)}),Ga=n.object({search:n.string().trim().max(200).default(``),cursor:Wa.nullable().default(null),limit:n.number().int().min(1).max(50).default(20)}),Ka=n.object({canvasId:n.uuid(),title:n.string(),organisationId:n.uuid().nullable(),revision:n.number().int().positive(),styleCount:n.number().int().positive(),publishedAt:n.iso.datetime()}),qa=n.object({items:n.array(Ka).max(50),nextCursor:Wa.nullable()}),Ja=n.object({parentId:n.string().min(1),sortKey:n.string().min(1)}),Ya=n.object({op:n.literal(`insertConvertedSubtree`),destination:ta,sourceNodeId:n.string().min(1).optional(),rootNodeId:n.string().min(1),nodes:n.record(n.string().min(1),T),relationships:n.record(n.string().min(1),Ja)}),j=n.string().min(1),Xa=n.string().min(1),Za=w.extend({width:n.number().positive(),height:n.number().positive()}),Qa=n.object({parentId:j,afterId:j.optional()}),$a=n.object({parentId:j,sortKey:Xa}),eo=n.object({op:n.literal(`setStyles`),nodeId:j,styles:Da,clear:n.array(Ea).min(1).refine(e=>new Set(e).size===e.length).optional()}).refine(e=>(e.clear??[]).every(t=>!Object.hasOwn(e.styles,t))),to=n.discriminatedUnion(`op`,[Ya,n.object({op:n.literal(`insertNode`),node:T,parentage:$a,prototypeSource:n.object({canvasId:n.uuid(),nodeId:j,documentVersion:n.number().int().nonnegative(),versionEntryId:n.uuid().optional()}).optional(),pageCopyBase:n.string().refine(e=>e.trim()!==``).optional()}),Qa.extend({op:n.literal(`insertText`),nodeId:j,label:n.string().default(`Text`),text:n.string(),box:Za,styles:ba.default({})}),Qa.extend({op:n.literal(`insertPrototype`),nodeId:j,label:n.string().default(`Prototype`),prototypeId:n.uuid(),deploymentId:n.uuid(),box:Za,canvasPageId:j.optional()}),n.object({op:n.literal(`setPrototypeDeployment`),nodeId:j,prototypeId:n.uuid(),deploymentId:n.uuid(),expected:n.object({prototypeId:n.uuid(),deploymentId:n.uuid()}).optional()}),Fa,n.object({op:n.literal(`setText`),nodeId:j,text:n.string()}),n.object({op:n.literal(`setBox`),nodeId:j,box:n.union([w,n.literal(`default`)])}),n.object({op:n.literal(`setLabel`),nodeId:j,label:n.string().trim().min(1),labelOrigin:li.nullable().optional()}),n.object({op:n.literal(`setContainerKind`),nodeId:j,component:n.enum([`frame`,`group`])}),n.object({op:n.literal(`setVisibility`),nodeId:j,visible:n.boolean().nullable()}),n.object({op:n.literal(`setLocked`),nodeId:j,locked:n.boolean().nullable()}),n.object({op:n.literal(`setConstraints`),nodeId:j,constraints:ci.nullable()}),eo,n.object({op:n.literal(`patchExportSettings`),nodeId:j,exportSettings:Jr}),n.object({op:n.literal(`setAppearance`),nodeId:j,appearance:dn}),n.object({op:n.literal(`setLayout`),nodeId:j,layout:n.union([Jt,n.literal(`default`)]),fields:n.array(Jt.keyof()).optional()}),n.object({op:n.literal(`patchTypography`),nodeId:j,typography:yn}),n.object({op:n.literal(`setTypography`),nodeId:j,typography:n.union([_n,n.literal(`default`)])}),n.object({op:n.literal(`patchAdditionalStyles`),nodeId:j,additionalStyles:Tn}),n.object({op:n.literal(`setAdditionalStyles`),nodeId:j,additionalStyles:n.union([Cn,n.literal(`default`)])}),Rt,n.object({op:n.literal(`setTextStyleLibrary`),nodeId:n.literal(`root`),sourceCanvasId:n.uuid(),library:La.nullable()}),n.object({op:n.literal(`patchFontLibrary`),nodeId:n.literal(`root`),fonts:pa}),n.object({op:n.literal(`setTextStyle`),nodeId:n.literal(`root`),styleId:Nn.shape.id,textStyle:Nn.nullable(),changedTextNodeIds:n.array(j).optional()}).refine(e=>e.textStyle===null||e.textStyle.id===e.styleId,`text style identity must match`),n.object({op:n.literal(`setGeometry`),nodeId:j,geometry:n.union([ii,n.literal(`default`)])}),n.object({op:n.literal(`setProps`),nodeId:j,props:n.union([n.record(n.string(),n.unknown()),n.literal(`default`)])}),n.object({op:n.literal(`setParentage`),nodeId:j,parentage:$a}),Qa.extend({op:n.literal(`move`),nodeId:j}),n.object({op:n.literal(`remove`),nodeId:j,removedText:n.record(j,T.pick({props:!0})).optional()})]),no=to.options.map(e=>e.shape.op.value),ro=n.preprocess((e,t)=>typeof e!=`object`||!e||Reflect.get(e,`op`)!==`setCompositing`?e:(t.issues.push({code:`custom`,message:ai,input:e}),n.NEVER),to),io=Si.extend({operation:Ya,next:n.array(n.string().min(1))}),ao=n.record(n.string(),n.unknown()),oo=n.object({canvasId:n.uuid(),afterVersion:n.number().int().positive().optional()}),so=n.object({screenId:n.uuid(),clientToken:n.uuid(),route:n.string().nullable(),title:n.string().nullable(),viewport:n.object({width:n.number().int().positive(),height:n.number().int().positive()}),atMs:n.number().int().min(0).nullable(),sourceRecordingId:n.uuid().nullable(),assetBundle:n.object({assetBundleId:n.uuid(),sourceUrl:n.string(),assets:n.array(n.object({url:n.string(),contentType:n.string(),path:n.string().startsWith(`/v1/recording-assets/`)})),missingAssetCount:n.number().int().min(0)}).nullable(),download:Jn.nullable()}),co=n.object({mutationId:n.uuid(),previousVersion:n.number().int().positive(),version:n.number().int().positive(),operations:n.array(ro)}),lo=n.object({mutations:n.array(co).optional(),version:n.number().int().min(1),restoreFenceVersion:n.number().int().positive().optional(),document:ao,screens:n.array(so)}),uo=n.object({canvasId:n.uuid(),baseVersion:n.number().int().min(1),document:ao.refine(e=>ui.safeParse(e).success,`A save requires a valid current-format canvas document.`),screenIds:n.array(n.uuid())}),fo=n.discriminatedUnion(`outcome`,[n.object({outcome:n.literal(`saved`),version:n.number().int().min(1)}),n.object({outcome:n.literal(`conflict`),version:n.number().int().min(1),document:ao})]),po=e=>typeof e==`object`&&!!e&&!Array.isArray(e),mo=(e,t,n)=>{if(!po(e)||typeof e.data!=`string`)return e;let r=n(e.data,t);return r===e.data?e:{...e,data:r}},ho=(e,t)=>{if(!po(e)||!Array.isArray(e.sources))return e;let n=e.sources,r=n.map(n=>mo(n,e,t));return r.every((e,t)=>e===n[t])?e:{...e,sources:r}},go=(e,t)=>{if(!Array.isArray(e?.fontFaces))return e;let n=e.fontFaces,r=n.map(e=>ho(e,t));return r.every((e,t)=>e===n[t])?e:{...e,fontFaces:r}},_o=n.object({start:n.number().int().nonnegative(),end:n.number().int().positive(),href:n.url().refine(e=>[`http:`,`https:`].includes(new URL(e).protocol))}),vo=n.object({text:n.string(),links:n.array(_o).optional()}),yo=(e,t)=>{let n=e.start-t.start;return n===0?e.end-t.end:n},bo=e=>vo.safeParse(e.props).data?.text??null,xo=e=>{let t=vo.safeParse(e.props).data;if(t===void 0)return[];let n=t.links;if(n===void 0)return[];let r=n.filter(({start:e,end:n})=>e<n&&n<=t.text.length).toSorted(yo),i=[];for(let e of r)(i.at(-1)?.end??0)<=e.start&&i.push(e);return i},So=n.enum([`position`,`layout`,`clip`,`cornerRadius`,`blending`,`typography`,`nativeControl`,`textDecoration`,`fill`,`outline`,`textStroke`,`border`,`outerShadow`,`innerShadow`,`filters`,`additionalStyles`,`vector`,`export`,`source`]),Co=n.object({id:n.string().min(1),label:n.string().max(500),kind:n.string().min(1).max(100),parentId:n.string().min(1).nullable(),childCount:n.number().int().min(0),box:Oi.nullable(),propertySections:n.array(So)}),wo=n.object({canvasId:n.uuid()}),To=n.object({canvasId:n.uuid(),openUrl:n.url(),title:n.string().min(1),version:n.number().int().positive(),nodeCount:n.number().int().min(0),rootChildCount:n.number().int().min(0),bounds:Oi.nullable(),kinds:n.record(n.string(),n.number().int().min(0)),next:n.array(n.string().min(1))}),Eo=n.object({canvasId:n.uuid()}),Do=n.object({canvasId:n.uuid(),version:n.number().int().positive(),nodes:n.array(Co)}),Oo=n.object({canvasId:n.uuid(),nodeId:n.string().min(1)}),ko=n.object({canvasId:n.uuid(),version:n.number().int().positive(),node:Co.extend({styles:n.record(n.string(),n.union([n.string(),n.number()])),layout:Jt.optional(),appearance:cn.optional(),geometry:ii.optional(),typography:_n.optional(),additionalStyles:Cn.optional(),props:n.record(n.string(),n.unknown()),children:n.array(n.string().min(1))}),next:n.array(n.string().min(1))}),Ao=[[`alignSelf`,`align-self`],[`order`,`order`],[`flexGrow`,`flex-grow`],[`flexShrink`,`flex-shrink`],[`flexBasis`,`flex-basis`],[`aspectRatio`,`aspect-ratio`]],jo=[[`direction`,`flex-direction`],[`wrap`,`flex-wrap`],[`alignItems`,`align-items`],[`alignContent`,`align-content`],[`justifyContent`,`justify-content`],[`rowGap`,`row-gap`],[`columnGap`,`column-gap`]],Mo=[`top`,`right`,`bottom`,`left`],No=(e,t,n)=>{let r={...e};for(let e of Mo)n.has(`${t}-${e}`)&&Reflect.deleteProperty(r,e);return r},Po=(e,t)=>{let n={...e};if((t.has(`display`)||t.has(`grid-auto-flow`))&&Reflect.deleteProperty(n,`gridEmptyPlacement`),n.gridAutoTrackPolicy===void 0)return n;let r={...n.gridAutoTrackPolicy};for(let e of[`columns`,`rows`])(t.has(`display`)||t.has(`grid-auto-${e}`)||t.has(`grid-template-${e}`))&&Reflect.deleteProperty(r,e);return Object.keys(r).length===0?Reflect.deleteProperty(n,`gridAutoTrackPolicy`):n.gridAutoTrackPolicy=r,n},Fo=(e,t)=>{let n=new Set([...t].flatMap(e=>wr(e))),r=Po(e,n);for(let[e,t]of Ao)n.has(t)&&Reflect.deleteProperty(r,e);if(r.margin!==void 0&&(r.margin=No(r.margin,`margin`,n)),r.container===void 0)return r;let i={...r.container},a=i.direction===`column`?`column-gap`:`row-gap`;(n.has(a)||n.has(`display`))&&Reflect.deleteProperty(i,`crossGapMode`),(n.has(`row-gap`)||n.has(`column-gap`))&&i.gap!==void 0&&(i.rowGap??=i.gap,i.columnGap??=i.gap,Reflect.deleteProperty(i,`gap`));for(let[e,t]of jo)n.has(t)&&Reflect.deleteProperty(i,e);return i.padding!==void 0&&(i.padding=No(i.padding,`padding`,n)),n.has(`grid-template-columns`)&&(Reflect.deleteProperty(i,`gridColumns`),Reflect.deleteProperty(i,`gridAutoRepeat`)),r.container=i,r},Io=(e,t,n)=>{if(e===void 0||e.mode===`fixed`)return e;let r={...e};for(let e of[`min`,`max`])t.every(t=>!n.has(`${e}-${t}`))||(Reflect.deleteProperty(r,e),Reflect.deleteProperty(r,`${e}Parent`));return r},Lo=(e,t,n)=>{let r=new Set([...t].flatMap(e=>wr(e))),i=Fo(e,r);if(r.has(`display`)&&Reflect.deleteProperty(i,`retainedFlexSpacing`),[`overflow`,`overflow-x`,`overflow-y`].some(e=>r.has(e))&&Reflect.deleteProperty(i,`clipContent`),r.has(`position`)&&(Reflect.deleteProperty(i,`position`),Reflect.deleteProperty(i,`retainedIgnore`),Reflect.deleteProperty(i,`gridParticipation`)),r.has(`transform`))for(let e of[`rotation`,`flipHorizontal`,`flipVertical`])Reflect.deleteProperty(i,e);[`inset`,`left`,`right`,`top`,`bottom`].some(e=>r.has(e))&&Reflect.deleteProperty(i,`flowOffset`);for(let e of[`horizontal`,`vertical`]){let t=n[e].some(e=>r.has(e))?void 0:Io(i[e],n[e],r);t===void 0?Reflect.deleteProperty(i,e):i[e]=t}return i},Ro=T.shape.id,zo=w.extend({width:n.number().positive(),height:n.number().positive()}),Bo=n.record(Ro,Ro),Vo=n.strictObject({fingerprint:n.string().regex(/^[a-f0-9]{64}$/u),revisionPolicy:n.enum([`strict`,`rebase`]),copiedNodeIds:Bo.optional()}),Ho=n.object({canvasId:n.uuid(),mutationId:n.uuid(),documentFormatVersion:oi,baseVersion:n.number().int().positive(),operations:n.array(ro).min(1),requestContext:Vo.optional(),writeScope:ea.optional()}),Uo=n.object({canvasId:n.uuid(),mutationId:n.uuid(),previousVersion:n.number().int().positive(),version:n.number().int().positive(),operations:n.array(ro),insertedNodeIds:n.array(Ro),changedNodeIds:n.array(Ro),removedNodeIds:n.array(Ro),boxes:n.record(Ro,w),affectedBounds:zo.nullable(),copiedNodeIds:Bo.optional(),next:n.array(n.string().min(1))}),Wo=n.strictObject({canvasId:n.uuid(),mutationId:n.uuid(),fingerprint:Vo.shape.fingerprint}),Go=n.discriminatedUnion(`state`,[n.strictObject({state:n.literal(`not-found`)}),n.strictObject({state:n.literal(`committed`),result:Uo})]),Ko={nodes:1e3,fields:20,id:200,label:500,value:1e3},qo=n.object({available:n.boolean(),omittedNodes:n.number().int().nonnegative(),nodes:n.array(n.object({nodeId:n.string().min(1),label:n.string().max(Ko.label),kind:n.enum([`inserted`,`removed`,`changed`,`unchanged`,`unavailable`]),omittedFields:n.number().int().nonnegative(),fields:n.array(n.object({label:n.string().max(Ko.id),before:n.string().max(Ko.value).nullable(),after:n.string().max(Ko.value).nullable(),truncated:n.boolean()})).max(Ko.fields)})).max(Ko.nodes)}),Jo=`page`,Yo=`frame`,Xo=`group`,Zo=`rectangle`,Qo=`image`,$o=`text`,es=[`position`,`layout`,`cornerRadius`,`blending`,`fill`,`outline`,`border`,`outerShadow`,`innerShadow`,`filters`,`additionalStyles`,`export`],ts=[`position`,`layout`,`clip`,...es.filter(e=>e!==`position`&&e!==`layout`)],ns=[...es,`vector`],rs=Object.fromEntries([{objectKind:`prototype`,label:`Prototype`,category:`import`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!0,commentAnchor:`node`},capture:{preservesHtmlCssAssets:!0},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:[`position`,`layout`,`cornerRadius`,`blending`,`outline`,`outerShadow`,`innerShadow`,`filters`]},{objectKind:`root`,label:`Canvas`,category:`container`,capabilities:{canSelect:!1,canContainChildren:!0,canEditProperties:!1},selectionBehavior:{hitTarget:`children`},propertySections:[]},{objectKind:Jo,label:`Page`,category:`container`,capabilities:{canSelect:!1,canContainChildren:!1,canEditProperties:!1},selectionBehavior:{hitTarget:`children`},propertySections:[]},{objectKind:`screen`,label:`Screen`,category:`import`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!1,commentAnchor:`screen`},capture:{preservesHtmlCssAssets:!0},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:[`position`,`layout`,`source`]},{objectKind:Yo,label:`Frame`,category:`container`,capabilities:{canSelect:!0,canContainChildren:!0,canEditProperties:!0,commentAnchor:`node`},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:ts},{objectKind:Xo,label:`Group`,category:`container`,capabilities:{canSelect:!0,canContainChildren:!0,canEditProperties:!0,commentAnchor:`node`},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:[`position`,`layout`,`blending`,`filters`,`additionalStyles`,`export`]},{objectKind:Zo,label:`Rectangle`,category:`primitive`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!0,commentAnchor:`node`},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:es},{objectKind:Qo,label:`Image`,category:`media`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!0,commentAnchor:`node`},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`scale`,preservesAspect:!0,canLockAspectRatio:!0},propertySections:es},{objectKind:`svg`,label:`SVG`,category:`primitive`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!0,commentAnchor:`node`},capture:{preservesVectorData:!0},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`scale`,preservesAspect:!0,canLockAspectRatio:!0},propertySections:ns},{objectKind:`boolean`,label:`Boolean`,category:`container`,capabilities:{canSelect:!0,canContainChildren:!0,canEditProperties:!0,commentAnchor:`node`},capture:{preservesVectorData:!0},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`scale`,preservesAspect:!1,canLockAspectRatio:!0},propertySections:ns},{objectKind:`recording`,label:`Recording`,category:`media`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!1},capture:{preservesAssets:!0},selectionBehavior:{hitTarget:`frame`},resizeBehavior:{mode:`scale`,preservesAspect:!0,canLockAspectRatio:!0},propertySections:[]},{objectKind:$o,label:`Text`,category:`primitive`,capabilities:{canSelect:!0,canContainChildren:!1,canEditProperties:!0,commentAnchor:`node`},selectionBehavior:{hitTarget:`text`},resizeBehavior:{mode:`reflow`,preservesAspect:!1,canLockAspectRatio:!1},propertySections:[`position`,`layout`,`typography`,`nativeControl`,`textDecoration`,`textStroke`,`blending`,`fill`,`outerShadow`,`filters`,`additionalStyles`,`export`]}].map(e=>[e.objectKind,e])),is=e=>rs[e]??null,as=e=>is(e)?.propertySections??[],M=T.shape.id,os=n.array(M).min(1),ss=n.strictObject({x:n.number(),y:n.number()}),cs=n.strictObject({width:n.number().positive().optional(),height:n.number().positive().optional()}).refine(e=>e.width!==void 0||e.height!==void 0,{message:`Specify width, height, or both.`}),ls=n.discriminatedUnion(`kind`,[n.strictObject({kind:n.literal(`position`),nodeId:M,parentPosition:ss}),n.strictObject({kind:n.literal(`resize`),nodeId:M,size:cs}),n.strictObject({kind:n.literal(`relative-position`),nodeId:M,referenceNodeId:M,side:n.enum([`above`,`below`,`left`,`right`]),gap:n.number().nonnegative(),align:n.enum([`start`,`center`,`end`])}),n.strictObject({kind:n.literal(`move`),nodeIds:os,targetNodeId:M,position:n.enum([`before`,`inside`,`after`])}),n.strictObject({kind:n.literal(`group`),nodeIds:os,label:n.string().min(1).optional()}),n.strictObject({kind:n.literal(`ungroup`),nodeIds:os}),n.strictObject({kind:n.literal(`label`),nodeId:M,label:n.string().min(1)}),n.strictObject({kind:n.literal(`visibility`),nodeId:M,visible:n.boolean()}),n.strictObject({kind:n.literal(`lock`),nodeId:M,locked:n.boolean()})]),us=n.strictObject({kind:n.literal(`arrange`),changes:n.array(ls).min(1)}),ds=n.strictObject({kind:n.literal(`duplicate`),nodeIds:os,destination:n.discriminatedUnion(`kind`,[n.strictObject({kind:n.literal(`native`)}),n.strictObject({kind:n.literal(`inside`),parentId:M})])}),fs=n.discriminatedUnion(`kind`,[n.strictObject({kind:n.literal(`compile-screens`),sources:n.array(n.strictObject({screenId:n.uuid(),captureId:n.uuid(),label:n.string().min(1)})).min(1)}),us,ds,n.strictObject({kind:n.literal(`compile-html`),contextOperations:n.array(ro).refine(e=>e.every(e=>`nodeId`in e&&![`remove`,`move`,`setParentage`,`insertText`,`insertPrototype`,`insertNode`,`insertConvertedSubtree`].includes(e.op)),`Compilation context may update retained fields only.`),fragments:n.array(n.strictObject({id:M,parentNodeId:M,html:n.string().min(1)})).min(1).refine(e=>new Set(e.map(e=>e.id)).size===e.length,`HTML fragment ids must be unique.`)})]),ps=n.strictObject({pageId:M.optional(),nodeIds:n.array(M)}),ms=n.strictObject({request:fs,scope:ps}),hs=n.strictObject({operations:n.array(ro),idMap:n.record(M,M),rootNodeIds:n.array(M)}),gs=hs.extend({compilations:n.array(n.strictObject({id:M,draft:bi})).optional()});n.discriminatedUnion(`state`,[n.object({state:n.literal(`loading`),jobId:n.uuid()}),n.object({state:n.literal(`ready`),jobId:n.uuid(),loadedVersion:n.number().int().positive(),plan:gs}),n.object({state:n.literal(`failed`),jobId:n.uuid(),message:n.string().min(1)})]);const _s=n.object({id:n.uuid(),canvasId:n.uuid(),requestedVersion:n.number().int().positive(),request:fs,scope:ps,phase:Ni,attempt:n.number().int().nonnegative(),createdAt:n.iso.datetime(),updatedAt:n.iso.datetime()}),vs=n.discriminatedUnion(`state`,[_s.extend({state:n.enum([`queued`,`running`]),result:n.null(),failure:n.null()}),_s.extend({state:n.literal(`succeeded`),phase:n.literal(`complete`),result:hs.extend({loadedVersion:n.number().int().positive()}),failure:n.null()}),_s.extend({state:n.enum([`failed`,`cancelled`,`expired`]),result:n.null(),failure:D})]),ys=n.strictObject({canvasId:n.uuid(),expectedVersion:n.number().int().positive(),request:fs,scope:ps}),bs=n.object({job:vs,alreadyExists:n.boolean()}),xs=n.object({jobId:n.uuid()}),Ss=n.object({job:vs}),Cs=`x-enhance-agent-client`,ws=n.string().trim().min(1).max(80).regex(/^[\w .+/-]+$/u),Ts=n.strictObject({path:n.enum([`local_mcp`,`hosted_mcp`,`direct_cli`]),name:ws.optional(),version:ws.optional()}),Es=Ts.pick({path:!0}).strip(),Ds=n.strictObject({agent_client:n.enum([`claude_code`,`codex`,`cursor`,`unknown`]),connection_path:Ts.shape.path,identity_source:n.enum([`mcp_client_info`,`documented_cli_fallback`,`unavailable`]),auth_method:n.enum([`personal_agent_token`,`mcp_oauth`]),agent_client_version:ws.optional()}),Os=e=>{let t=Ts.safeParse(e);if(t.success)return t.data;let n=Es.safeParse(e);return{path:n.success?n.data.path:`direct_cli`}},ks=n.enum([`green`,`blue`,`indigo`,`amber`,`lime`,`teal`,`cyan`,`sky`,`violet`,`purple`,`fuchsia`,`pink`]),As=n.string().regex(/^[0-9a-f]{32}$/),js=n.object({viewKey:As.optional(),admissionOrder:n.number().int().nonnegative().optional(),followColour:ks.optional()}),Ms=n.object({pageId:n.string().min(1).nullable().optional(),followingViewKey:As.nullable().optional()}),Ns=`enhance3.canvas.v1`,Ps=16384,Fs=n.enum([`blue`,`violet`,`green`,`amber`,`magenta`,`teal`,`red`,`orange`]),Is=n.object({kind:n.literal(`person`),connectionId:n.uuid(),personId:n.uuid(),displayName:n.string().min(1).max(100),initials:n.string().min(1).max(8),avatarUrl:n.string().max(He).nullable().optional(),colour:Fs}),Ls=Is.extend(js.shape),Rs=n.object({kind:n.literal(`guest`),connectionId:n.uuid(),displayName:n.string().min(1).max(100),initials:n.string().min(1).max(8),colour:Fs,...js.shape}),zs=n.discriminatedUnion(`kind`,[Ls,Rs]),Bs=n.object({kind:n.literal(`agent`),personId:n.uuid(),displayName:n.string().min(1).max(100),initials:n.string().min(1).max(8),tokenLabel:n.string().min(1).max(100),agentAttribution:Ds.optional(),colour:Fs}),Vs=n.discriminatedUnion(`kind`,[Is.omit({connectionId:!0,avatarUrl:!0}),Bs]),Hs=n.object({x:n.number(),y:n.number()}),Us=w.extend({width:n.number().positive(),height:n.number().positive()}),Ws=n.object({count:n.number().int().positive(),bounds:Us.nullable()}),Gs=n.object({kind:n.enum([`drag`,`resize`]),baseVersion:n.number().int().positive(),boxes:n.record(n.string().min(1),Us).refine(e=>Object.keys(e).length<=100&&new TextEncoder().encode(JSON.stringify(e)).byteLength<=16384),summary:Ws.optional()}),Ks=n.object({cursor:Hs.nullable().optional(),input:n.enum([`pointer`,`touch`,`keyboard`]).optional(),focused:n.boolean().optional(),selectedNodeIds:n.array(n.string().min(1)).max(100).refine(e=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=Ps).optional(),selectionSummary:Ws.nullable().optional(),visibleWorldBox:Us.optional(),gesture:Gs.nullable().optional(),cursorChat:n.string().max(140).nullable().optional(),...Ms.shape}).refine(e=>Object.keys(e).length>0,`presence patch cannot be empty`),qs=n.object({actor:zs,seq:n.number().int().nonnegative(),cursor:Hs.nullable(),input:n.enum([`pointer`,`touch`,`keyboard`]),focused:n.boolean(),selectedNodeIds:n.array(n.string().min(1)).max(100).refine(e=>new TextEncoder().encode(JSON.stringify(e)).byteLength<=Ps),selectionSummary:Ws.nullable().optional(),visibleWorldBox:Us.nullable(),gesture:Gs.nullable(),cursorChat:n.string().max(140).nullable().default(null),...Ms.shape,followOrder:n.number().int().nonnegative().optional(),expiresAt:n.iso.datetime()}),Js=n.enum([`reading`,`writing`,`creating`,`deleting`,`rendering`]),Ys=n.object({activityId:n.uuid(),canvasId:n.uuid(),actor:Bs,phase:Js,nodeIds:n.array(n.string().min(1)).max(100),bounds:Us.nullable(),expiresAt:n.iso.datetime()}),Xs=n.object({canvasId:n.uuid(),phase:Js,nodeIds:n.array(n.string().min(1)).max(100).default([]),bounds:Us.nullable().default(null)}),Zs=n.object({activityId:n.uuid(),expiresAt:n.iso.datetime(),renewAfterMs:n.number().int().positive()}),Qs=Xs.extend({activityId:n.uuid()}),$s=n.object({canvasId:n.uuid(),activityId:n.uuid()}),ec=n.object({ended:n.literal(!0)}),tc={v:n.literal(1),seq:n.number().int().nonnegative()};n.discriminatedUnion(`type`,[n.object({...tc,type:n.literal(`access.changed`),payload:n.object({})}),n.object({...tc,type:n.literal(`comments.changed`),payload:n.object({threadId:n.uuid()})}),n.object({...tc,type:n.literal(`resources.changed`),payload:n.object({})}),n.object({...tc,type:n.literal(`room.snapshot`),payload:n.object({connectionId:n.uuid(),viewKey:js.shape.viewKey,peers:n.array(qs),activities:n.array(Ys),documentVersion:n.number().int().positive()})}),n.object({...tc,type:n.literal(`presence.patch`),payload:qs}),n.object({...tc,type:n.literal(`presence.left`),payload:n.object({connectionId:n.uuid()})}),n.object({...tc,type:n.literal(`agent.activity`),payload:n.object({activityId:n.uuid(),activity:Ys.nullable()})}),n.object({...tc,type:n.literal(`document.committed`),payload:n.object({mutationId:n.uuid(),actor:Vs,previousVersion:n.number().int().positive(),version:n.number().int().positive(),operations:n.array(ro).min(1)})}),n.object({...tc,type:n.literal(`sync.required`),payload:n.object({version:n.number().int().positive(),reason:n.enum([`gap`,`relay`,`replace`,`history-restored`])})}),n.object({...tc,type:n.literal(`room.ping`),payload:n.object({pingId:n.uuid(),sentAt:n.iso.datetime()})}),n.object({...tc,type:n.literal(`room.error`),payload:n.object({code:n.enum([`auth`,`permission`,`protocol`,`payload`,`rate`,`unavailable`]),message:n.string().min(1).max(200)})})]),n.discriminatedUnion(`type`,[n.object({v:n.literal(1),type:n.literal(`presence.patch`),seq:n.number().int().nonnegative(),payload:Ks}),n.object({v:n.literal(1),type:n.literal(`selection.chunk`),seq:n.number().int().nonnegative(),payload:n.object({transferId:n.uuid(),offset:n.number().int().nonnegative(),total:n.number().int().positive(),nodeIds:n.array(n.string().min(1)).min(1).max(1e3)})}),n.object({v:n.literal(1),type:n.literal(`selection.unavailable`),seq:n.number().int().nonnegative(),payload:n.object({count:n.number().int().positive()})}),n.object({v:n.literal(1),type:n.literal(`room.pong`),seq:n.number().int().nonnegative(),payload:n.object({pingId:n.uuid()})})]).refine(e=>e.type!==`selection.chunk`||e.payload.offset+e.payload.nodeIds.length<=e.payload.total&&new TextEncoder().encode(JSON.stringify(e)).byteLength<=49152);const nc=n.object({canvasId:n.uuid(),protocols:n.array(n.literal(Ns)).min(1).max(1),viewId:n.uuid().optional()}),rc=n.object({endpoint:n.url(),ticket:n.string().min(1).max(4096),protocol:n.literal(Ns),expiresAt:n.iso.datetime()}),ic=n.uuid(),ac=T.shape.id,oc=n.array(ac),sc=/^\/c\/([^/]+)\/?$/iu,cc=e=>{let t=e.trim(),n=ic.safeParse(t);if(n.success)return{ok:!0,value:{canvasId:n.data,nodeIds:[]}};if(!URL.canParse(t))return{ok:!1,reason:`reference`};let r=new URL(t);try{decodeURIComponent(r.search),decodeURIComponent(r.hash)}catch{return{ok:!1,reason:`reference`}}let i=ic.safeParse(sc.exec(r.pathname)?.[1]);if(!i.success||![`http:`,`https:`].includes(r.protocol))return{ok:!1,reason:`reference`};let a=r.searchParams.getAll(`page`),o=a[0];if(a.length>1||o!==void 0&&!ac.safeParse(o).success)return{ok:!1,reason:`page`};let s=new URLSearchParams(r.hash.slice(1));if(s.has(`recording`)||s.has(`version`)||r.searchParams.has(`version`))return{ok:!1,reason:`unsupported`};let c=s.getAll(`prototype`),l=s.getAll(`selection`);if(c.length>1||c.length>0&&l.length>0)return{ok:!1,reason:`selection`};let u=oc.safeParse(c.length>0?c:l);return u.success?{ok:!0,value:{canvasId:i.data,...o!==void 0&&{pageId:o},nodeIds:[...new Set(u.data)]}}:{ok:!1,reason:`selection`}},lc=(e,t)=>{if(!URL.canParse(e)||![`https:`,`http:`].includes(new URL(e).protocol))return{ok:!1,reason:`reference`};let n=new URL(`/c/${encodeURIComponent(t.canvasId)}`,new URL(e).origin);t.pageId!==void 0&&n.searchParams.set(`page`,t.pageId);let r=new URLSearchParams,i=new Set(t.nodeIds);for(let e of i)r.append(`selection`,e);n.hash=r.toString();let a=cc(n.href);return a.ok?{ok:!0,url:n.href}:a},uc=`root`,dc=`canvas-page-default`,fc=e=>Object.entries(e.relationships).filter(([,e])=>e.parentId===uc).toSorted(([e,t],[n,r])=>t.sortKey===r.sortKey?e.localeCompare(n):t.sortKey<r.sortKey?-1:1).map(([e])=>e),pc=e=>{let t=fc(e).filter(t=>e.nodes[t]?.component===Jo);return t.length>0?t:[dc]},mc=(e,t)=>{let n=new Set,r=t;for(;r!==void 0&&!n.has(r);){n.add(r);let t=e.nodes[r];if(t===void 0||t.component===`page`)return null;let i=e.relationships[r]?.parentId;if(i===uc){let e=t.props?.canvasPageId;return typeof e==`string`?e:dc}r=i}return null},hc=(e,t)=>{let n=new Map;for(let[t,r]of Object.entries(e.relationships)){let e=n.get(r.parentId)??[];e.push(t),n.set(r.parentId,e)}let r=new Set,i=[...t];for(;i.length>0;){let t=i.pop();t===void 0||r.has(t)||e.nodes[t]===void 0||(r.add(t),i.push(...n.get(t)??[]))}return r},gc=(e,t)=>{let n=pc(t);if(e.pageId!==void 0&&!n.includes(e.pageId))return{ok:!1,reason:`page`};let r=e.nodeIds.map(e=>mc(t,e));if(r.some(e=>e===null||!n.includes(e)))return{ok:!1,reason:`selection`};if(e.pageId!==void 0&&r.some(t=>t!==e.pageId))return{ok:!1,reason:`inconsistent-page`};if(new Set(r).size>1)return{ok:!1,reason:`mixed-pages`};let i=e.pageId??r[0]??null,a=e.nodeIds.length>0?[...new Set(e.nodeIds)]:fc(t).filter(e=>{let n=mc(t,e);return n!==null&&(i===null||n===i)});return{ok:!0,pageId:i,rootNodeIds:a,nodeIds:hc(t,a)}},_c=n.object({jobId:n.uuid()}),vc=n.object({jobId:n.uuid(),canvasId:n.uuid(),requestedVersion:n.number().int().positive(),target:E,sourceState:ki.optional()}),yc=n.discriminatedUnion(`purpose`,[vc.extend({purpose:n.literal(`preparation`),preparation:ms,screens:n.array(so).optional(),sourceState:n.undefined().optional(),scale:n.literal(1),format:n.literal(`json`)}),vc.extend({purpose:n.enum([`inspection`,`snapshot`,`thumbnail`,`export`]),scale:n.number().positive(),maxOutputPixels:Di.optional(),format:n.literal(`png`)}),vc.extend({purpose:n.literal(`conversion`),target:n.object({kind:n.literal(`node`),nodeId:n.string().min(1)}),sourceState:n.undefined().optional(),conversion:ra,scale:n.literal(1),format:n.literal(`json`)})]);n.object({jobId:n.uuid()}),n.object({jobId:n.uuid()});const bc=n.object({jobId:n.uuid(),canvasId:n.uuid(),requestedVersion:n.number().int().positive(),grantToken:n.string().startsWith(`rgr_`).min(40).max(100),grantCookieName:n.string().min(1).max(100),renderUrl:n.url(),deadlineAt:n.iso.datetime().optional(),releaseIdentity:n.string().min(1).max(100)});n.discriminatedUnion(`purpose`,[bc.extend({purpose:n.literal(`preparation`),target:E,preparation:ms,sourceState:n.undefined().optional(),scale:n.literal(1)}),bc.extend({purpose:n.enum([`inspection`,`snapshot`,`thumbnail`,`export`]),target:E,sourceState:ki.optional(),scale:n.number().positive(),maxOutputPixels:Di.optional(),outputKey:n.string().min(1).max(500)}),bc.extend({purpose:n.literal(`conversion`),target:n.object({kind:n.literal(`node`),nodeId:n.string().min(1).max(200)}),sourceState:n.undefined().optional(),conversion:ra,scale:n.literal(1)})]),n.object({jobId:n.uuid(),loadedVersion:n.number().int().positive(),bounds:Oi,width:n.number().int().positive(),height:n.number().int().positive(),scale:n.number().positive(),bytes:n.number().int().positive(),storageKey:n.string().min(1).max(500),warnings:n.array(Li),timings:n.array(Ri),sourceState:Ai.optional(),snapshot:n.object({artifactBytes:n.number().int().positive(),artifactStorageKey:n.string().min(1).max(500),route:n.string().optional(),title:n.string().optional(),viewport:n.object({width:n.number().int().positive(),height:n.number().int().positive()})}).optional()}),n.object({accepted:n.literal(!0)}),n.object({jobId:n.uuid(),loadedVersion:n.number().int().positive(),draft:bi}),n.object({accepted:n.literal(!0)}),n.object({recordingId:n.uuid(),requestedAtMs:n.number().int().nonnegative(),settledAtMs:n.number().int().nonnegative(),artifact:n.string().min(1),route:n.string().optional(),title:n.string().optional(),viewport:n.object({width:n.number().int().positive(),height:n.number().int().positive()})}),n.object({jobId:n.uuid(),failure:D}),n.object({accepted:n.literal(!0),willRetry:n.boolean()}),n.object({workerId:n.string().regex(/^[\w.-]+$/u).min(1).max(100),releaseIdentity:n.string().min(1).max(100),timestamp:n.coerce.number().int().nonnegative(),nonce:n.uuid(),mac:n.base64().min(32).max(200)});const xc=n.object({total:n.number().int().nonnegative(),loading:n.number().int().nonnegative(),unavailable:n.number().int().nonnegative()}),Sc=n.object({jobId:n.uuid(),canvasId:n.uuid().nullable(),requestedVersion:n.number().int().positive().nullable(),loadedVersion:n.number().int().positive().nullable(),phase:Ni.exclude([`queued`,`claimed`,`capture`,`upload`,`complete`]),sources:xc,warnings:n.array(Li),timings:n.array(Ri),sourceState:Ai.optional()}),Cc=n.object({selector:n.string().min(1).max(500),contentSelector:n.string().min(1).max(500).optional(),expectsPaint:n.boolean().optional(),bounds:Oi,width:n.number().int().positive(),height:n.number().int().positive(),scale:n.number().positive()});n.discriminatedUnion(`state`,[Sc.extend({state:n.literal(`loading`),capture:n.null(),failure:n.null()}),Sc.extend({state:n.literal(`ready`),phase:n.literal(`target`),canvasId:n.uuid(),requestedVersion:n.number().int().positive(),loadedVersion:n.number().int().positive(),capture:Cc,failure:n.null()}),Sc.extend({state:n.literal(`failed`),failure:n.object({reason:Fi,message:n.string().min(1).max(500),sourceId:n.string().min(1).max(200).nullable()}),capture:n.null()})]),n.object({jobId:n.uuid(),loadedVersion:n.number().int().positive(),plan:gs});const wc=n.string().min(1),Tc=n.object({canvasId:n.uuid()}),Ec=n.object({canvasId:n.uuid(),status:n.enum([`selected`,`none`,`offline`,`stale`,`updating`,`unsupported`]),documentVersion:n.number().int().positive(),selectionRevision:n.number().int().positive().nullable(),selectionChangedAt:n.iso.datetime().nullable(),selectedNodeIds:n.array(wc),missingNodeIds:n.array(wc),nodes:n.array(Co),contextRootId:wc.nullable(),visibleWorldBox:Oi.nullable(),next:n.array(n.string().min(1)).max(12)}),Dc=n.discriminatedUnion(`kind`,[n.object({kind:n.literal(`recording`),recordingId:n.string()})]),Oc=n.object({html:n.string().optional(),viewport:n.object({width:n.number(),height:n.number()}),atMs:n.number(),screenId:n.string().nullable().default(null),sourceNodeId:n.string().optional(),provenance:Dc.optional()}),kc=n.object({provenance:Dc.optional(),report:_i.optional()}),Ac=n.object({recordingId:n.string()}),jc=n.object({prototypeId:n.uuid(),deploymentId:n.uuid()});n.object({preparedExperience:n.enum([`agent-connection`,`whisper-prototype`]),ownerPersonId:n.uuid(),resources:n.array(n.string().min(1))});const Mc=`$structure`,Nc=e=>{let t=[];for(let[n,r]of Object.entries(e))[`kind`,`children`,`text`,`soft`].includes(n)||(n===`styles`||n===`paragraph`?typeof r==`object`&&r&&t.push(...Object.entries(r).map(([e,t])=>[`${n}.${e}`,t])):t.push([n,r]));return Object.fromEntries(t)},Pc=e=>Object.fromEntries(Object.entries(e).filter(([e])=>e!==`text`&&e!==`children`)),Fc=(e,t)=>{let n={...e,...t};return t.listStyle===`none`&&(Reflect.deleteProperty(n,`listLevel`),Reflect.deleteProperty(n,`listStart`)),n},Ic=(e,t,n)=>{let r=e.listStyle??t;if(r!==`bulleted`&&r!==`numbered`)return e;let i=e.listLevel??1,a=Math.max(1,i+n);if(a===i)return e;let o={...e,listLevel:a};return Reflect.deleteProperty(o,`listStart`),o},Lc=(e,t)=>{let n=0;return e.map(e=>{let r=n;if(n+=S(e.children).length,r<=t.start||r>t.end||e.paragraph?.listStart===void 0)return e;let i={...e.paragraph};return Reflect.deleteProperty(i,`listStart`),{...e,paragraph:i}})},Rc=e=>{let t=[],n=0;for(let{index:r}of e.matchAll(/\n/gu))t.push({start:n,end:r+1,contentEnd:r}),n=r+1;return t.push({start:n,end:e.length,contentEnd:e.length}),t},zc=(e,t)=>{let n=Math.min(t.anchor,t.focus),r=Math.max(t.anchor,t.focus);return n===r?n>=e.start&&n<=e.contentEnd:n<e.end&&r>e.start},Bc=e=>{let t=e.toReversed().map(e=>({node:e})),n=[],r=0;for(;t.length>0;){let e=t.pop();if(e===void 0)break;if(`leave`in e){e.leave.end=r;continue}let i=e.node;if(i.kind!==`span`){r+=i.kind===`text`?i.text.length:1;continue}if(i.paragraph!==void 0){let e={start:r,end:r,formatting:i.paragraph};n.push(e),t.push({leave:e})}for(let e of i.children.toReversed())t.push({node:e})}return n},Vc=(e,t)=>{let n=e.filter(e=>e.start===e.end?e.start===t:e.start<=t&&t<e.end);if(n.length===0){let n=e.at(-1);return n?.end===t?n.formatting:{}}let r={};for(let e of n)r={...r,...e.formatting};return r},Hc=e=>e.flatMap(e=>{if(e.kind!==`span`)return[e];let t=Hc(e.children);if(e.paragraph===void 0)return[{...e,children:t}];let n={...e};return Reflect.deleteProperty(n,`paragraph`),Object.keys(n).filter(e=>![`kind`,`children`,`styles`].includes(e)).length===0&&Object.keys(e.styles).length===0?t:[{...n,children:t}]}),Uc=e=>e.some(e=>e.kind===`span`&&(e.paragraph!==void 0||e.paragraphSpacing!==void 0||e.paragraphIndent!==void 0||e.listSpacing!==void 0||e.wrapStyle!==void 0||Uc(e.children))),Wc=e=>{let t=[[]];for(let n of e){let e=n.kind===`span`?Wc(n.children).map(e=>e.length===0&&n.children.length>0?[]:[{...n,children:e}]):n.kind===`break`?n.soft===!0?[[n]]:[[n],[]]:n.text.split(`
4
4
  `).map((e,t,r)=>{let i=t<r.length-1?`${e}\n`:e;return i===``&&n.text!==``?[]:[{...n,text:i}]});t.at(-1)?.push(...e[0]??[]),t.push(...e.slice(1))}return t},Gc=(e,t)=>{let n={cursor:0};return t.map(({start:t})=>{let r=(n.active??[]).filter(e=>e.end>t);for(n.active=r;n.cursor<e.length;){let i=e[n.cursor];if(i===void 0||i.start>t)break;(i.end>t||i.start===t)&&r.push(i),n.cursor+=1}if(r.length===0){let n=e.at(-1);return n?.end===t?n.formatting:{}}let i={};for(let e of r)i={...i,...e.formatting};return i})},Kc=e=>{let t=S(e),n=Bc(e),r=Wc(Hc(e)),i=Rc(t),a=Gc(n,i);return i.map((e,t)=>({kind:`span`,paragraph:a[t]??{},styles:{},children:r[t]??[]}))},qc=(e,t,n)=>{let r=Rc(S(e));return Kc(e).map((e,i)=>{let a=r[i];return a===void 0?e:zc(a,t)?{...e,paragraph:n(e.paragraph??{})}:e})},Jc=(e,t)=>Vc(Bc(e),t),Yc=(e,t,n)=>{if(!Uc(e))return t;let r=S(t),i=S(e),a=n.replaces&&n.end===i.length&&n.start<i.length,o=r===``||!a&&r.endsWith(`
5
5
  `)?[{kind:`span`,styles:{},children:[],paragraph:Jc(e,r===``?n.start:i.length)}]:[],s=Kc([...t,...o]);return n.replaces?Lc(s,{start:n.start,end:r.length-i.length+n.end}):s},Xc={color:`inherit`,textDecorationLine:`underline`,textDecorationThickness:`0.08em`,textUnderlineOffset:`0.14em`},Zc=new Set(Mn),Qc=new Set(Object.entries(bn).flatMap(([e,t])=>t.some(e=>Zc.has(e))?[e.replaceAll(/-([a-z])/gu,(e,t)=>t.toUpperCase())]:[])),$c=(e,t,n=!1,r={})=>{if(e===null||r.paragraphSpacing!==void 0||r.paragraphIndent!==void 0||r.listSpacing!==void 0||r.hangingPunctuation!==void 0||r.verticalTrim!==void 0||r.wrapStyle!==void 0)return null;if(Object.keys(t).every(e=>!Qc.has(e))&&(r.position===void 0||r.position===e.position))return e;if(n){let n=Pn.safeParse({...e,...r.position!==void 0&&{position:r.position},overrides:{...e.overrides,...Object.fromEntries(Object.entries(t).filter(([e])=>(e!==`fontFeatureSettings`||r.position===void 0)&&Qc.has(e)))}});return n.success?n.data:null}return Object.keys(t).some(e=>Qc.has(e))?null:e},el=e=>({...e.paragraphSpacing!==void 0&&{paragraphSpacing:e.paragraphSpacing},...e.paragraphIndent!==void 0&&{paragraphIndent:e.paragraphIndent},...e.listSpacing!==void 0&&{listSpacing:e.listSpacing},...e.hangingPunctuation!==void 0&&{hangingPunctuation:e.hangingPunctuation},...e.verticalTrim!==void 0&&{verticalTrim:e.verticalTrim},...e.wrapStyle!==void 0&&{wrapStyle:e.wrapStyle},...e.stroke!==void 0&&{stroke:e.stroke},...e.decorationBlendMode!==void 0&&{decorationBlendMode:e.decorationBlendMode},...e.backgroundBlendMode!==void 0&&{backgroundBlendMode:e.backgroundBlendMode}}),tl=e=>{if(e.href!==void 0)for(let[t,n]of Object.entries(Xc))e.styles[t]===n&&Reflect.deleteProperty(e.styles,t);Reflect.deleteProperty(e,`href`)},nl=(e,t)=>e.flatMap(e=>{if(e.kind!==`span`)return[e];let n={...e,styles:{...e.styles},children:nl(e.children,t)};if(t.type===`format`){let e=Object.keys(el(t));for(let t of e)Reflect.deleteProperty(n,t);let r=$c(n.textStyle??null,t.styles,t.shouldOverrideTextStyle,{paragraphSpacing:t.paragraphSpacing,paragraphIndent:t.paragraphIndent,listSpacing:t.listSpacing,hangingPunctuation:t.hangingPunctuation,verticalTrim:t.verticalTrim,wrapStyle:t.wrapStyle,position:t.textStylePosition});r===null?Reflect.deleteProperty(n,`textStyle`):n.textStyle=r}else if(t.type===`text-style`)return Reflect.deleteProperty(n,`textStyle`),[n];if(t.type===`link`)tl(n);else if(t.type===`paint`)Reflect.deleteProperty(n,`fills`),Reflect.deleteProperty(n.styles,`color`);else for(let e of qn(t))Reflect.deleteProperty(n.styles,e);let r=Object.keys(n).filter(e=>![`kind`,`children`,`styles`].includes(e));return Object.keys(n.styles).length===0&&r.length===0?n.children:[n]}),rl=(e,t)=>e.map(e=>e.kind===`span`?e.href!==void 0||e.children.some(e=>e.kind===`span`)?{...e,children:rl(e.children,t)}:{...e,styles:{...e.styles,...t}}:{kind:`span`,styles:t,children:[e]}),il=(e,t)=>{let n=Kn(e);if(t.href!==null&&t.href===n)return e;let r=nl(e,t);return t.href===null?r:[{kind:`span`,styles:Xc,href:t.href,children:r}]},al=(e,t)=>{if(t.type===`link`)return il(e,t);let n=nl(e,t);if(t.type===`text-style`)return t.binding===null?n:[{kind:`span`,styles:{},textStyle:t.binding,children:n}];if(t.type===`format`){let e=t.styles.textDecorationLine===void 0&&t.styles.lineHeight===void 0?[{kind:`span`,styles:t.styles,children:n}]:rl(n,t.styles),r=el(t);return Object.keys(r).length===0?e:[{kind:`span`,styles:{},...r,children:e}]}return t.fills===null?n:[{kind:`span`,styles:{},fills:t.fills,children:n}]},ol={},sl=()=>ol.current??=new Intl.Segmenter(void 0,{granularity:`grapheme`}),cl=e=>new Set([0,e.length,...Array.from(sl().segment(e),({index:e})=>e)]),ll=(e,t)=>{let n=cl(e);return t.start<=t.end&&n.has(t.start)&&n.has(t.end)},ul=(e,t)=>{let n=new Set([0]),r=0;for(let t of e)r+=t.length,n.add(r);return t.start<=t.end&&n.has(t.start)&&n.has(t.end)},dl=e=>e.kind===`text`?e.text.length:e.kind===`break`?1:S(e.children).length,fl=(e,t,n)=>{let r=0;return e.flatMap(e=>{let i=dl(e),a=Math.max(0,t-r),o=Math.min(i,n-r);return r+=i,a>=o?[]:a===0&&o===i?[e]:e.kind===`span`?[{...e,children:fl(e.children,a,o)}]:e.kind===`text`?[{...e,text:e.text.slice(a,o)}]:[e]})},pl=e=>JSON.stringify(Object.fromEntries(Object.entries(e).filter(([e])=>![`children`,`text`].includes(e))),(e,t)=>typeof t==`object`&&t&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).toSorted(([e],[t])=>e.localeCompare(t,`en`))):t),ml=e=>e.kind===`span`&&e.paragraph!==void 0&&S(e.children).endsWith(`
package/dist/main.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{$t as e,A as t,At as n,Bt as r,Dt as i,Ft as a,It as o,Lt as s,Mn as c,Mr as l,Mt as u,Nn as d,Ot as f,Pt as ee,Qn as te,Rt as ne,Tt as re,Xn as ie,Zn as ae,_ as p,_t as oe,a as se,ar as ce,at as le,c as m,ct as ue,f as de,fr as h,gr as fe,h as pe,hr as me,jt as g,kt as _,m as he,mr as ge,n as v,nn as _e,o as ve,p as ye,pr as y,r as be,s as xe,t as Se,tn as Ce,tt as we,u as Te,ur as Ee,ut as De,wn as Oe,wt as ke,y as Ae}from"./cli-output-identity.lib-yjqaUPGi.mjs";import{C as je,E as Me,S as Ne,T as Pe,_ as Fe,b as Ie,c as Le,f as b,g as Re,h as x,i as ze,l as Be,m as Ve,n as He,o as Ue,p as We,r as Ge,s as Ke,t as qe,u as Je,v as Ye,w as Xe,x as Ze,y as Qe}from"./mutation-key.adapter-DmgY95E8.mjs";import{t as $e}from"./capability-inventory.mapper-B_GMS9z3.mjs";import S from"node:process";import{Command as et}from"commander";import{createCli as tt,parseRouter as nt}from"trpc-cli";import{z as C}from"zod";import{hostname as rt,tmpdir as it}from"node:os";import{createInterface as at}from"node:readline";import{chmodSync as ot,existsSync as st,lstatSync as ct,mkdirSync as lt,readFileSync as ut,readdirSync as dt,statSync as ft,unlinkSync as pt,writeFileSync as w}from"node:fs";import T from"node:path";import{createHash as mt,randomUUID as E}from"node:crypto";import{setTimeout as ht}from"node:timers/promises";import{mkdir as gt,readFile as D,rename as _t,stat as vt,writeFile as yt}from"node:fs/promises";import{channel as bt}from"node:diagnostics_channel";import{proxify as xt}from"trpc-cli/dist/proxify.js";const St=new Set([`cursive`,`emoji`,`fantasy`,`fangsong`,`math`,`monospace`,`sans-serif`,`serif`,`system-ui`,`ui-monospace`,`ui-rounded`,`ui-sans-serif`,`ui-serif`]),Ct=/^-?[_a-z][-\w]*$/iu,wt=/^var\(--[-\w]+\)$/iu,Tt=e=>St.has(e.toLowerCase()),Et=e=>e.replaceAll(/\\(?:([\da-f]{1,6})(?:\r\n|[\t\n\f\r ])?|(\r\n|[\n\r\f])|([^\da-f]))/giu,(e,t,n,r)=>{if(n!==void 0)return``;if(t===void 0)return r??``;let i=Number.parseInt(t,16);return String.fromCodePoint(i===0||i>1114111||i>=55296&&i<=57343?65533:i)}),Dt=e=>{let t=e.trim(),n=t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`);return Et(n?t.slice(1,-1):t)},Ot=e=>e.startsWith(`"`)&&Tt(Dt(e))?JSON.stringify(Dt(e)):Ct.test(e)||wt.test(e)?e:JSON.stringify(e),kt=e=>e===void 0?{}:{...e!==`auto`&&{direction:e},"unicode-bidi":e===`auto`?`plaintext`:`isolate`},At=e=>[...new Set([e.family,...e.family===`Inter`?[`Inter Variable`]:[],...e.family===`JetBrains Mono`?[`JetBrains Mono Variable`]:[],...e.fallbackFamilies])].map(e=>Ot(e)).join(`, `),jt=e=>Object.entries({...e.variations,...e.weight!==void 0&&{wght:e.weight},...e.opticalSize?.mode===`fixed`&&{opsz:e.opticalSize.value}}).toSorted(([e],[t])=>e.localeCompare(t,`en`,{caseFirst:`upper`})).map(([e,t])=>`${JSON.stringify(e)} ${String(t)}`).join(`, `),Mt=e=>{let t=Object.entries(e??{}).toSorted(([e],[t])=>e.localeCompare(t,`en`)).map(([e,t])=>`${JSON.stringify(e)} ${String(t)}`).join(`, `);return t===``?`normal`:t},Nt=e=>e.mode===`normal`?`normal`:e.mode===`percent`?String(e.value/100):e.value;function Pt(e){return{...e.lineHeight!==void 0&&{"line-height":Nt(e.lineHeight)},...e.letterSpacing!==void 0&&{"letter-spacing":typeof e.letterSpacing==`number`?e.letterSpacing:`${String(e.letterSpacing.value/100)}em`}}}const Ft=e=>e===void 0?`auto`:typeof e==`number`?e:e.mode===`font-default`?`from-font`:`${String(e.value)}%`,It=e=>({"text-decoration-line":e.line,"text-decoration-style":e.style,"text-decoration-color":e.color===void 0?`currentColor`:Pe(e.color),"text-decoration-thickness":Ft(e.thickness),"text-underline-offset":Ft(e.offset),"text-decoration-skip-ink":e.skipInk??`auto`}),Lt=e=>`${JSON.stringify(e)}\n`,Rt=e=>{if(e<1)throw RangeError(`a chunk has to be able to hold at least one character`);let t=``,n=[],r=!1,i=!1,a=()=>{let e={body:t,continues:r,eventCount:n.length-+!!r,firstEventMs:n.length===0?0:Math.min(...n),lastEventMs:n.length===0?0:Math.max(...n)};return r=!t.endsWith(`
2
+ import{$t as e,A as t,At as n,Bt as r,Dt as i,Ft as a,It as o,Lt as s,Mn as c,Mr as l,Mt as u,Nn as d,Ot as f,Pt as ee,Qn as te,Rt as ne,Tt as re,Xn as ie,Zn as ae,_ as p,_t as oe,a as se,ar as ce,at as le,c as m,ct as ue,f as de,fr as h,gr as fe,h as pe,hr as me,jt as g,kt as _,m as he,mr as ge,n as v,nn as _e,o as ve,p as ye,pr as y,r as be,s as xe,t as Se,tn as Ce,tt as we,u as Te,ur as Ee,ut as De,wn as Oe,wt as ke,y as Ae}from"./cli-output-identity.lib-DVJbI5SB.mjs";import{C as je,E as Me,S as Ne,T as Pe,_ as Fe,b as Ie,c as Le,f as b,g as Re,h as x,i as ze,l as Be,m as Ve,n as He,o as Ue,p as We,r as Ge,s as Ke,t as qe,u as Je,v as Ye,w as Xe,x as Ze,y as Qe}from"./mutation-key.adapter-BDsB95r-.mjs";import{t as $e}from"./capability-inventory.mapper-B_GMS9z3.mjs";import S from"node:process";import{Command as et}from"commander";import{createCli as tt,parseRouter as nt}from"trpc-cli";import{z as C}from"zod";import{hostname as rt,tmpdir as it}from"node:os";import{createInterface as at}from"node:readline";import{chmodSync as ot,existsSync as st,lstatSync as ct,mkdirSync as lt,readFileSync as ut,readdirSync as dt,statSync as ft,unlinkSync as pt,writeFileSync as w}from"node:fs";import T from"node:path";import{createHash as mt,randomUUID as E}from"node:crypto";import{setTimeout as ht}from"node:timers/promises";import{mkdir as gt,readFile as D,rename as _t,stat as vt,writeFile as yt}from"node:fs/promises";import{channel as bt}from"node:diagnostics_channel";import{proxify as xt}from"trpc-cli/dist/proxify.js";const St=new Set([`cursive`,`emoji`,`fantasy`,`fangsong`,`math`,`monospace`,`sans-serif`,`serif`,`system-ui`,`ui-monospace`,`ui-rounded`,`ui-sans-serif`,`ui-serif`]),Ct=/^-?[_a-z][-\w]*$/iu,wt=/^var\(--[-\w]+\)$/iu,Tt=e=>St.has(e.toLowerCase()),Et=e=>e.replaceAll(/\\(?:([\da-f]{1,6})(?:\r\n|[\t\n\f\r ])?|(\r\n|[\n\r\f])|([^\da-f]))/giu,(e,t,n,r)=>{if(n!==void 0)return``;if(t===void 0)return r??``;let i=Number.parseInt(t,16);return String.fromCodePoint(i===0||i>1114111||i>=55296&&i<=57343?65533:i)}),Dt=e=>{let t=e.trim(),n=t.startsWith(`"`)&&t.endsWith(`"`)||t.startsWith(`'`)&&t.endsWith(`'`);return Et(n?t.slice(1,-1):t)},Ot=e=>e.startsWith(`"`)&&Tt(Dt(e))?JSON.stringify(Dt(e)):Ct.test(e)||wt.test(e)?e:JSON.stringify(e),kt=e=>e===void 0?{}:{...e!==`auto`&&{direction:e},"unicode-bidi":e===`auto`?`plaintext`:`isolate`},At=e=>[...new Set([e.family,...e.family===`Inter`?[`Inter Variable`]:[],...e.family===`JetBrains Mono`?[`JetBrains Mono Variable`]:[],...e.fallbackFamilies])].map(e=>Ot(e)).join(`, `),jt=e=>Object.entries({...e.variations,...e.weight!==void 0&&{wght:e.weight},...e.opticalSize?.mode===`fixed`&&{opsz:e.opticalSize.value}}).toSorted(([e],[t])=>e.localeCompare(t,`en`,{caseFirst:`upper`})).map(([e,t])=>`${JSON.stringify(e)} ${String(t)}`).join(`, `),Mt=e=>{let t=Object.entries(e??{}).toSorted(([e],[t])=>e.localeCompare(t,`en`)).map(([e,t])=>`${JSON.stringify(e)} ${String(t)}`).join(`, `);return t===``?`normal`:t},Nt=e=>e.mode===`normal`?`normal`:e.mode===`percent`?String(e.value/100):e.value;function Pt(e){return{...e.lineHeight!==void 0&&{"line-height":Nt(e.lineHeight)},...e.letterSpacing!==void 0&&{"letter-spacing":typeof e.letterSpacing==`number`?e.letterSpacing:`${String(e.letterSpacing.value/100)}em`}}}const Ft=e=>e===void 0?`auto`:typeof e==`number`?e:e.mode===`font-default`?`from-font`:`${String(e.value)}%`,It=e=>({"text-decoration-line":e.line,"text-decoration-style":e.style,"text-decoration-color":e.color===void 0?`currentColor`:Pe(e.color),"text-decoration-thickness":Ft(e.thickness),"text-underline-offset":Ft(e.offset),"text-decoration-skip-ink":e.skipInk??`auto`}),Lt=e=>`${JSON.stringify(e)}\n`,Rt=e=>{if(e<1)throw RangeError(`a chunk has to be able to hold at least one character`);let t=``,n=[],r=!1,i=!1,a=()=>{let e={body:t,continues:r,eventCount:n.length-+!!r,firstEventMs:n.length===0?0:Math.min(...n),lastEventMs:n.length===0?0:Math.max(...n)};return r=!t.endsWith(`
3
3
  `),t=``,n=r?[n.at(-1)??0]:[],e};return{pending:()=>t.length,add:r=>{let o=[],s=Lt(r.event);for(n.push(r.atMs),i=!0;t.length+s.length>=e;){let n=e-t.length;t+=s.slice(0,n),s=s.slice(n),o.push(a())}return t+=s,o},drain:()=>!i||t.length>0?[a()]:[]}},zt=(e,t)=>{let n=Rt(t);return[...e.flatMap(e=>n.add(e)),...n.drain()]},O=[`recording.start`,`recording.appendChunk`,`recording.complete`],Bt=e=>async t=>{let n=r.parse(await e.mutate(O[0],{sourceUrl:t.sourceUrl,viewport:t.viewport,pageTitle:t.pageTitle,audio:null})),i=n.upload;try{let r=zt(t.entries,8388608);for(let[t,a]of r.entries()){let r=new TextEncoder().encode(a.body),o=await e.upload({url:i.url,headers:i.headers,body:r});i=s.parse(await e.mutate(O[1],{recordingId:n.recordingId,index:t,firstEventMs:a.firstEventMs,lastEventMs:a.lastEventMs,eventCount:a.eventCount,continues:a.continues,bytes:r.byteLength,etag:o})).upload}let a=Math.max(0,...t.entries.map(e=>e.atMs));return ne.parse(await e.mutate(O[2],{recordingId:n.recordingId,durationMs:a,viewport:t.viewport,sourceUrl:t.sourceUrl,interrupted:!1,...t.canvasId!==void 0&&{canvasId:t.canvasId},audioChunkCount:0,hasRecoverableBytes:!1}))}catch{throw new g(`Recording ${n.recordingId} began, but not every chunk was committed.`,`Run 'enhance recording discard --recording-id ${n.recordingId}' to remove the incomplete attempt before retrying the fixture.`)}},Vt=[`screen.create`,`screen.complete`],Ht=e=>async t=>{let n=o.parse(await e.mutate(Vt[0],{clientToken:t.clientToken,provenance:t.provenance,route:t.route,pageTitle:t.pageTitle,viewport:t.viewport,bytes:t.body.byteLength}));try{let r=await e.upload({url:n.upload.url,headers:n.upload.headers,body:t.body}),i=a.parse(await e.mutate(Vt[1],{screenId:n.screenId,etag:r}));return{screenId:i.screenId,clientToken:t.clientToken,route:t.route,title:t.pageTitle,viewport:t.viewport,atMs:t.provenance?.atMs??null,sourceRecordingId:t.provenance?.sourceRecordingId??null,assetBundle:null,download:null,storedBytes:i.storedBytes}}catch{throw new g(`Screen ${n.screenId} was reserved, but its upload did not complete.`,`Retry 'enhance fixture screen' with the same --client-token ${t.clientToken}.`)}},k=[`organisation.create`,`canvas.create`,`screen.create`,`screen.complete`,`canvas.document.get`,`canvas.document.save`],Ut=(t,n)=>async r=>{let i=e.parse(await t.mutate(k[0],{name:r.organisationName})).organisation,a=l.parse(await t.mutate(k[1],{title:r.canvasTitle,organisationId:i.id,sourceUrl:null}));try{let e=[];for(let t of r.screens)e.push(await n(t));let o=ie.parse(await t.query(k[4],{canvasId:a.id})),s=Ce();for(let[t,n]of e.entries())s=_e(s,{id:`fixture-screen-${String(t+1)}`,label:`Fixture screen ${String(t+1)}`,screenId:n.screenId,viewport:r.screens[t]?.viewport??{width:1440,height:900},at:{x:48+t*48,y:48+t*48}});let c=ae.parse(await t.mutate(k[5],{canvasId:a.id,baseVersion:o.version,document:s,screenIds:e.map(e=>e.screenId)}));if(c.outcome===`conflict`)throw new g(`World canvas ${a.id} was created, but another writer changed its document.`,`Read 'enhance canvas document get --canvas-id ${a.id}' before adding the screens.`);return{organisationId:i.id,canvasId:a.id,screenIds:e.map(e=>e.screenId),documentVersion:c.version}}catch(e){throw e instanceof g?e:new g(`Organisation ${i.id} and canvas ${a.id} exist, but the world is incomplete.`,`Inspect 'enhance canvas get --canvas-id ${a.id}' before retrying any missing steps.`)}},Wt=async(e,t)=>{if(e!==void 0&&e!==``)return e.trim();if(S.stdin.isTTY)throw new u(`BAD_REQUEST`,`A token is required and interactive prompting is disabled.`,`Pass '--token <token>' or pipe one line to '${t}'.`);let n=at({input:S.stdin,crlfDelay:1/0});for await(let e of n){n.close();let t=e.trim();if(t!==``)return t;break}throw new u(`BAD_REQUEST`,`A token is required.`,`Pass '--token <token>' or pipe one line to '${t}'.`)},Gt=async e=>{if(e!==void 0)return e.trim();if(S.stdin.isTTY)return null;let t=at({input:S.stdin,crlfDelay:1/0});for await(let e of t){t.close();let n=e.trim();return n===``?null:n}return null},Kt=(e,t,n)=>{let r=e.command(`auth`).description(`Store and inspect the agent credential.`);r.command(`login`).description(`Authenticate in a browser, then store a revocable agent credential.`).option(`--token <token>`,`Use an existing agent token instead of browser authentication.`).option(`--no-open`,`Print the authorization URL without opening the browser.`).action(async e=>{let r=await Gt(e.token);if(r!==null){n.result(await t.loginWithToken(r));return}n.result(await t.loginWithBrowser({label:`CLI on ${rt()}`.slice(0,120),openBrowser:e.open,onReady:e=>{n.result({status:`waiting_for_browser`,url:e})}}))}),r.command(`status`).description(`Resolve the stored token to its person, label, and expiry.`).action(async()=>{n.result(await t.status())}),r.command(`logout`).description(`Delete the local credential file; this does not revoke the server token.`).action(async()=>{n.result(await t.logout())})},qt=C.coerce.number().int().positive(),Jt=C.coerce.number().positive(),Yt=C.uuid(),Xt=C.union([C.string(),C.number(),C.null()]),Zt=C.record(C.string(),Xt),Qt=C.array(C.object({nodeId:C.string().min(1).max(200),textContent:C.string()})).min(1),$t=C.array(C.object({nodeId:C.string().min(1).max(200),name:C.string()})).min(1),en=C.array(C.object({nodeIds:C.array(C.string().min(1).max(200)).min(1),styles:Zt})).min(1),tn=C.array(C.object({id:C.string().min(1).max(200),parentId:C.string().min(1).max(200).optional()})).min(1),nn=C.array(C.union([C.object({nodeId:C.string().min(1).max(200),before:C.string().min(1).max(200)}),C.object({nodeId:C.string().min(1).max(200),after:C.string().min(1).max(200)}),C.object({nodeId:C.string().min(1).max(200),parentId:C.string().min(1).max(200),index:C.number().int().nonnegative().optional()})])).min(1),rn=C.array(C.string().min(1).max(200)).min(1),an=C.coerce.number().int().min(0),on=C.uuid().nullable(),A=(e,t,n)=>{let r=e.safeParse(t);if(r.success)return r.data;throw new u(`BAD_REQUEST`,`${n} is invalid.`,`Run the command with --help.`)},j=e=>A(qt,e,`--base-version`),M=(e,t,n)=>{let r=on.safeParse(t??null);if(!r.success)throw new u(`BAD_REQUEST`,`--client-token must be a UUID.`,`Mint one UUID and reuse it only when retrying the exact same command.`);e.mutationKey.select(r.data,n)},sn=(e,t)=>e.mutationKey.current(`canvas.applyOperations`,{purpose:t}),cn=async(e,t,r,i)=>{M(e,t.clientToken,!1);let a=n(t.canvas),o=j(t.baseVersion);return _(a)&&Ve(a,await x(e,a.canvasId,o),i),Re(e.remote).execute({canvasId:a.canvasId,mutationId:sn(e,r),baseVersion:o,operations:[...i]})},N=async(e,t,r,i)=>{M(e,t.clientToken,!1);let a=n(t.canvas);return We(e.remote).execute({...a,baseVersion:j(t.baseVersion),mutationId:sn(e,`canvas.edit`),edits:r,...i!==void 0&&{idPrefix:i}})},P=(e,t)=>{if(!e.startsWith(`@`))return e;let n=e.slice(1);if(n===``)throw new u(`BAD_REQUEST`,`${t} @ must name a file.`,`Pass ${t} @/absolute/path/to/file or an inline value.`);let r=T.resolve(n);try{if(!ft(r).isFile())throw Error(`not a regular file`);return ut(r,`utf8`)}catch{throw new u(`BAD_REQUEST`,`Could not read the file at ${r}.`,`Use a readable regular UTF-8 file.`)}},ln=C.array(te).min(1),un=e=>{try{return JSON.parse(P(e,`--operations`))}catch(e){throw e instanceof u?e:new u(`BAD_REQUEST`,`--operations must be one valid JSON array.`,`Pass inline JSON or @/absolute/path/layout.json; run 'enhance canvas apply --help' for examples.`)}},dn=e=>{let t=un(e),n=ln.safeParse(t);if(!n.success){let e=n.error.issues[0];throw new u(`BAD_REQUEST`,`The canvas operation batch is invalid${e===void 0||e.path.length===0?``:` at ${e.path.join(`.`)}`}.`,`Correct the named operation; run 'enhance canvas apply --help' for the supported vocabulary.`)}return n.data},fn=C.coerce.number().int().positive(),pn=e=>{let t=fn.safeParse(e);if(t.success)return t.data;throw new u(`BAD_REQUEST`,`--base-version is invalid.`,`Run 'enhance canvas apply --help'.`)},mn=(e,t)=>{let n=C.uuid().nullable().safeParse(t??null);if(!n.success)throw new u(`BAD_REQUEST`,`--client-token must be a UUID.`,`Mint one UUID and reuse it only when retrying this exact operation batch.`);return e.mutationKey.select(n.data,!1),e.mutationKey.current(`canvas.applyOperations`,{})},hn=(e,t)=>{e.command(`apply`).description(`Apply an atomic canvas edit batch and return its affected bounds.`).summary(`Apply edits and return affected bounds.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID to edit.`).requiredOption(`--base-version <integer>`,`Exact version returned by canvas inspect or tree.`).requiredOption(`--operations <json-or-@path>`,`JSON operation array inline, or @path to a JSON file.`).option(`--client-token <uuid>`,`Stable UUID to reuse only when retrying this exact batch.`).addHelpText(`after`,[``,`Supported operations: insertNode, insertText, insertPrototype, setText, editText, setBox, setLabel, setVisibility, setLocked, setConstraints, setStyles, setAppearance, setLayout, patchTypography, setTypography, patchAdditionalStyles, setAdditionalStyles, setProps, setParentage, move, remove.`,`Use editText for revision-aware character or range changes. setText replaces the whole text and is rejected if it conflicts with a newer text edit.`,`Example:`,` enhance canvas apply --canvas <url-or-id> --base-version 3 --operations '[{"op":"insertText","nodeId":"txt_summary","parentId":"root","text":"Checkout needs an address.","box":{"x":120,"y":594,"width":720,"height":80},"styles":{"font-size":24}}]'`].join(`
4
4
  `)).action(async e=>{mn(t,e.clientToken);let r=n(e.canvas),i=pn(e.baseVersion),a=dn(e.operations);_(r)&&Ve(r,await x(t,r.canvasId,i),a);let o=await t.invocation.invoke({capability:b(t.catalog(),`canvas.apply`),arguments:{canvasId:r.canvasId,baseVersion:i,operations:[...a]},clientToken:e.clientToken??null});t.output.result(o)})},gn=e=>{try{return JSON.parse(e)}catch{return}},_n=e=>{if(e===void 0)return null;let t=ce.safeParse(gn(e));if(t.success)return t.data;throw new u(`BAD_REQUEST`,`--bounds must be a positive world rectangle.`,`Pass JSON with x, y, width and height.`)},vn=e=>e===void 0?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e!==``).slice(0,100),yn=(e,t)=>{e.command(`begin`).description(`Start visible agent activity.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID.`).requiredOption(`--phase <phase>`,`reading, writing, creating, deleting, or rendering.`).option(`--node-ids <ids>`,`Comma-separated stable node ids.`).option(`--bounds <json>`,`Optional world rectangle for not-yet-created content.`).action(async e=>{let n=d.safeParse(e.phase);if(!n.success)throw new u(`BAD_REQUEST`,`--phase is invalid.`,`Use reading, writing, creating, deleting, or rendering.`);let r=f(e.canvas),i=c.parse(await t.remote.mutate(`canvas.realtime.activity.begin`,{canvasId:r,phase:n.data,nodeIds:vn(e.nodeIds),bounds:_n(e.bounds)}));t.output.result({...i,next:[`enhance canvas work update --canvas ${r} --activity-id ${i.activityId} --phase ${n.data}`,`enhance canvas finish-working-on-nodes --canvas ${r} --activity-id ${i.activityId}`]})})},bn=(e,t)=>{e.command(`update`).description(`Move visible agent activity.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID.`).requiredOption(`--activity-id <uuid>`,`Lease id returned by work begin.`).requiredOption(`--phase <phase>`,`Current agent phase.`).option(`--node-ids <ids>`,`Comma-separated current stable node ids.`).option(`--bounds <json>`,`Optional current world rectangle.`).action(async e=>{t.output.result(c.parse(await t.remote.mutate(`canvas.realtime.activity.renew`,{canvasId:f(e.canvas),activityId:Yt.parse(e.activityId),phase:d.parse(e.phase),nodeIds:vn(e.nodeIds),bounds:_n(e.bounds)})))})},xn=(e,t)=>{e.command(`finish-working-on-nodes`).description(`End visible agent activity.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID.`).requiredOption(`--activity-id <uuid>`,`Lease id returned by canvas work begin.`).action(async e=>{if(!await Fe(t.remote).finish(f(e.canvas),Yt.parse(e.activityId)))throw new u(`NOT_FOUND`,`The activity could not be finished.`,`It may already have expired; run canvas work begin for new work.`);t.output.result({ended:!0,activityId:e.activityId})})},Sn=(e,t)=>{let n=e.command(`work`).description(`Manage visible agent activity.`);yn(n,t),bn(n,t),xn(e,t)},F=(e,t,n)=>{let r=(()=>{try{return JSON.parse(P(e,n))}catch(e){throw e instanceof u?e:new u(`BAD_REQUEST`,`${n} must be valid JSON.`,`Pass inline JSON or @/absolute/path/to/input.json; run the command with --help.`)}})(),i=t.safeParse(r);if(i.success)return i.data;let a=i.error.issues[0];throw new u(`BAD_REQUEST`,`${n} is invalid${a===void 0||a.path.length===0?``:` at ${a.path.join(`.`)}`}.`,a?.message??`Correct the JSON shape and retry.`)},Cn=(e,t)=>{e.command(`set-text-content`).description(`Set Text node values.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID to edit.`).requiredOption(`--base-version <integer>`,`Exact current canvas version.`).requiredOption(`--updates <json-or-@path>`,`Array of {nodeId,textContent} updates.`).option(`--client-token <uuid>`,`Stable UUID for retrying this exact batch.`).action(async e=>{let n=F(e.updates,Qt,`--updates`).map(e=>({kind:`set_text`,nodeId:e.nodeId,text:e.textContent}));t.output.result(await N(t,e,n))})},wn=(e,t)=>{e.command(`rename-nodes`).description(`Rename layers.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID to edit.`).requiredOption(`--base-version <integer>`,`Exact current canvas version.`).requiredOption(`--updates <json-or-@path>`,`Array of {nodeId,name} updates.`).option(`--client-token <uuid>`,`Stable UUID for retrying this exact batch.`).action(async e=>{let n=F(e.updates,$t,`--updates`).map(e=>({kind:`rename`,nodeId:e.nodeId,name:e.name}));t.output.result(await N(t,e,n))})},Tn=(e,t)=>{e.command(`delete-nodes`).description(`Delete node subtrees.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID to edit.`).requiredOption(`--base-version <integer>`,`Exact current canvas version.`).requiredOption(`--node-ids <json-or-@path>`,`JSON array of stable node ids.`).option(`--client-token <uuid>`,`Stable UUID for retrying this exact batch.`).action(async e=>{let n=F(e.nodeIds,rn,`--node-ids`);t.output.result(await cn(t,e,`delete-nodes`,n.map(e=>({op:`remove`,nodeId:e}))))})},En=(e,t)=>{e.command(`update-styles`).description(`Update visual and layout styles.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID to edit.`).requiredOption(`--base-version <integer>`,`Exact current canvas version.`).requiredOption(`--updates <json-or-@path>`,`Array of {nodeIds,styles} updates.`).option(`--client-token <uuid>`,`Stable UUID for retrying this exact batch.`).action(async e=>{let n=F(e.updates,en,`--updates`);t.output.result(await N(t,e,n.map(e=>({kind:`set_styles`,...e}))))})},Dn=(e,t)=>{e.command(`edit`).description(`Apply an atomic canvas edit batch.`).requiredOption(`--canvas <url-or-id>`,`Canvas or selection URL, or canvas UUID.`).requiredOption(`--base-version <integer>`,`Canvas version to edit; use the previous write result to continue.`).requiredOption(`--edits <json-or-@path>`,`Array of edits with kind set_text, set_styles, rename, duplicate or move.`).option(`--client-token <uuid>`,`Stable UUID for retrying this exact batch.`).addHelpText(`after`,`
5
5
  Edit shapes (combine related edits in one array):
@@ -22,4 +22,4 @@ For transcript-led selection, inspect nearby --at-ms renders and reject transiti
22
22
  Preview first: canvas render --node-id rec_<recording-uuid> --at-ms <integer>, then inspect its PNG. This command persists the accepted moment.
23
23
  `).action(async e=>{let n=C.uuid().nullable().safeParse(e.clientToken??null),r=C.uuid().safeParse(e.recordingId);if(!n.success||!r.success)throw new u(`BAD_REQUEST`,`The recording id or client token is not a UUID.`,"Use the recording id from `recording list`; mint one client token per accepted moment.");t.output.result(await t.invocation.invoke({capability:b(t.catalog(),`recording.snapshot`),arguments:{canvasId:f(e.canvas),recordingId:r.data,atMs:ro(e.atMs,`--at-ms`,!1),timeoutMs:ro(e.timeoutMs,`--timeout-ms`,!0)},clientToken:n.data}))})},ao=(e,t,n)=>{if(e!==`canvas.document.save`||typeof n!=`object`||!n||!(`outcome`in n)||n.outcome!==`conflict`)return n;throw new u(`CONFLICT`,`The canvas document changed before this save landed.`,`Run 'enhance canvas document get --canvas-id ${typeof t==`object`&&t&&`canvasId`in t&&typeof t.canvasId==`string`?t.canvasId:`<canvas-id>`}', merge your change into that document, then retry with its version.`)},oo=(e,t)=>xt(e,e=>({[e]:{query:async n=>t.query(e,n),mutate:async n=>ao(e,n,await t.mutate(e,n))}})),so=(e,t)=>{let n=e.commands.find(e=>e.name()===`transcript`);if(n===void 0)throw TypeError(`the API router did not supply transcript commands`);n.command(`get`).description(`Read timestamped speech cues as candidate moments; render and inspect candidate PNGs before snapshotting.`).requiredOption(`--canvas <url-or-id>`,`Canvas URL or UUID containing the recording.`).requiredOption(`--recording-id <uuid>`,`Recording UUID returned by recording list.`).action(async e=>{let n=C.uuid().safeParse(e.recordingId);if(!n.success)throw new u(`BAD_REQUEST`,`--recording-id must be a UUID.`,"Use the recording id returned by `enhance recording list`.");t.output.result(await t.invocation.invoke({capability:b(t.catalog(),`transcript.read`),arguments:{canvasId:f(e.canvas),recordingId:n.data},clientToken:null}))})},co={jsonInput:`auto`,prompts:!1,logger:`ndjson`,errorMapping:`stable-exit-codes`},lo=e=>{let t=e.state;return{logger:e.output.logger,prompts:co.prompts,process:ga(),formatError:e=>{let n=m(e,t.pendingParserMessage);return t.exitCode=xe(n,!1,e),t.pendingParserMessage=null,JSON.stringify(n)}}},uo=e=>typeof e==`object`&&e&&!Array.isArray(e)?Object.fromEntries(Object.entries(e)):null,fo=e=>{let t=uo(e),n=t===null?void 0:t.description;return typeof n==`string`&&n!==``?n:null},po=e=>({descriptions:new Map(e.flatMap(([e,t])=>{let n=fo(t.meta);return n===null?[]:[[e,n]]})),mutationPaths:new Set(e.flatMap(([e,t])=>t.type===`mutation`?[e]:[]))}),mo=()=>{let e=null;return()=>(e??=ye(),e)},ho=(e,t,n)=>{let r=Ht(t.remote),i=Ke({remote:t.remote,mutationKey:t.mutationKey,configDirectory:t.configDirectory,now:()=>new Date,progress:t.output.result});Kt(e,Qe(t.credentials,t.remote,Ue(t.remote)),t.output),Ba(e,i,n,t.output),pa(e,t),Qa(e,{invocation:i,catalog:n,output:t.output}),Va(e,{version:t.version,credentials:t.credentials,remote:t.remote,output:t.output}),Za(e,{screen:r,recording:Bt(t.remote),world:Ut(t.remote,r)},t.output),za(e,t.output,n),ei(e,{remote:t.remote,mutationKey:t.mutationKey,invocation:i,catalog:n,output:t.output,configDirectory:t.configDirectory,now:()=>new Date}),io(e,{invocation:i,catalog:n,output:t.output}),no(e,i,n,t.output),so(e,{invocation:i,catalog:n,output:t.output})},go=e=>{let t=nt({router:he()}),n=mo(),{descriptions:r,mutationPaths:i}=po(t),a=tt({router:oo(t,e.remote),name:e.commandName,version:e.version,description:`Operate Enhance as the authenticated person.`,jsonInput:co.jsonInput}),o=lo(e),s=a.buildProgram(o);if(!(s instanceof et))throw TypeError(`trpc-cli did not return a Commander program`);Na(s),ho(s,e,n),ka(s,{descriptions:r,mutationPaths:i,mutationKey:e.mutationKey,output:e.output}),s.description(`Operate Enhance as the authenticated person.`);let c=e.state;return{program:s,run:async()=>{try{await a.run(o,s)}catch(t){if(!(t instanceof de))throw t;if(t.requestedCode!==0&&c.pendingParserMessage!==null){let n=m(t,c.pendingParserMessage);c.exitCode=xe(n,!0),c.pendingParserMessage=null,e.output.failure(n)}throw t}}}},_o=e=>S.exit(e),vo=36e5,$=e=>typeof e==`object`&&!!e&&!Array.isArray(e),yo=e=>{if(Array.isArray(e))return e.map(e=>JSON.stringify(e));if(!$(e)||!Array.isArray(e.items)||`nextCursor`in e)return[JSON.stringify(e)];let t=e.items;if(t.length===0)return[JSON.stringify(e)];let n=e.truncated===!0;return t.map(e=>JSON.stringify($(e)?{...e,truncated:n}:{value:e,truncated:n}))},bo=e=>{let t=`${e.join(`
24
24
  `)}\n`;if(!(t.length>25e3||e.some(e=>e.length>2e3))){S.stdout.write(t);return}let n=mt(`sha256`).update(t).digest(`hex`).slice(0,16),r=T.join(it(),`enhance-${n}.ndjson`);w(r,t,{mode:384}),S.stdout.write(`${JSON.stringify({path:r,characters:t.length,records:e.length})}\n`)},xo=e=>{try{let t=new URL(e),n=new Set;for(let e of t.searchParams.keys())n.add(e.toLowerCase());return n.has(`x-amz-signature`)||n.has(`x-amz-credential`)||n.has(`x-amz-algorithm`)}catch{return!1}},So=e=>typeof e==`string`?xo(e):Array.isArray(e)?e.some(e=>So(e)):$(e)?Object.values(e).some(e=>So(e)):!1,Co=e=>{lt(e,{recursive:!0,mode:448}),ot(e,448)},wo=e=>{if(!st(e))return;let t=Date.now()-vo,n=dt(e,{withFileTypes:!0});for(let r of n){if(!r.isFile()||!r.name.startsWith(`result-`))continue;let n=T.join(e,r.name);ct(n).mtimeMs<t&&pt(n)}},To=e=>({...e,sensitive:!0,cleanup:`unlink-after-use`,deleteAfter:new Date(Date.now()+vo).toISOString()}),Eo=(e,t)=>{let n=yo(e),r=`${n.join(`
25
- `)}\n`;Co(t);let i=T.join(t,`result-${E()}.ndjson`);w(i,r,{mode:384,flag:`wx`}),S.stdout.write(`${JSON.stringify(To({path:i,characters:r.length,records:n.length,reason:`signed-url`}))}\n`)},Do=e=>$(e)?typeof e.token==`string`?{field:`token`,value:e.token}:typeof e.acceptToken==`string`?{field:`acceptToken`,value:e.acceptToken}:null:null,Oo=(e,t,n)=>{let r=`${t.value}\n`;Co(n);let i=T.join(n,`result-${E()}.token`);w(i,r,{mode:384,flag:`wx`});let a=Object.fromEntries(Object.entries(e).filter(([e])=>e!==t.field));S.stdout.write(`${JSON.stringify({...a,secret:To({path:i,field:t.field,characters:r.length})})}\n`)},ko=e=>e.includes(`Usage:`)||e.includes(`Options:`)||e.includes(`Commands:`),Ao=ee.omit({fields:!0}).extend({remediation:C.string(),fields:C.array(C.object({path:C.string(),message:C.string()})).optional()}),jo=e=>{try{let t=JSON.parse(e),n=Ao.safeParse(t);return n.success?{code:n.data.code,message:n.data.message,remediation:n.data.remediation,...n.data.fields!==void 0&&{fields:n.data.fields}}:null}catch{return null}},Mo=(e,t)=>{if(typeof e==`string`&&ko(e)){S.stdout.write(e);return}let n=Do(e);if(n!==null&&$(e)){Oo(e,n,t);return}if(So(e)){Eo(e,t);return}let r=be(e);if(r!==null){let e=null;if(r.detail!==null){Co(t);let n=T.join(t,`result-${E()}.ndjson`),i=`${JSON.stringify(r.detail)}\n`;w(n,i,{mode:384,flag:`wx`}),e=To({path:n,characters:i.length,records:1})}S.stdout.write(`${JSON.stringify({...r.value,...e!==null&&{detail:e}})}\n`);return}bo(yo(e))},No=e=>{S.stderr.write(`${JSON.stringify(e)}\n`)},Po=(e,t,n=`enhance`)=>{let r=e,i=T.join(t,`sensitive`);return wo(i),{result:e=>{Mo(v(e,n),i)},failure:e=>{No(Se(e,n))},logger:{info:(...e)=>{Mo(v(e.length===1?e[0]:e,n),i)},error:(...e)=>{let t=String(v(e.map(String).join(``),n)),i=jo(t);i===null?r.pendingParserMessage=t:No(i)}}}};(async()=>{let e=ze(),t={exitCode:1,pendingParserMessage:null},n=Po(t,e.configDirectory,e.commandName),r=Ge(e.configDirectory),i=qe(),a=He(e.apiUrl,r,i),o=go({apiUrl:e.apiUrl,version:`0.1.40-dev.sha-55adcfde7950`,credentials:r,remote:a,mutationKey:i,output:n,state:t,configDirectory:e.configDirectory,commandName:e.commandName});try{await o.run()}catch(e){e instanceof de&&_o(e.requestedCode===0?0:t.exitCode),n.failure(m(e,null)),_o(1)}})().catch(e=>{S.stderr.write(`${e instanceof Error?e.message:`CLI startup failed.`}\n`),S.exitCode=1});export{};
25
+ `)}\n`;Co(t);let i=T.join(t,`result-${E()}.ndjson`);w(i,r,{mode:384,flag:`wx`}),S.stdout.write(`${JSON.stringify(To({path:i,characters:r.length,records:n.length,reason:`signed-url`}))}\n`)},Do=e=>$(e)?typeof e.token==`string`?{field:`token`,value:e.token}:typeof e.acceptToken==`string`?{field:`acceptToken`,value:e.acceptToken}:null:null,Oo=(e,t,n)=>{let r=`${t.value}\n`;Co(n);let i=T.join(n,`result-${E()}.token`);w(i,r,{mode:384,flag:`wx`});let a=Object.fromEntries(Object.entries(e).filter(([e])=>e!==t.field));S.stdout.write(`${JSON.stringify({...a,secret:To({path:i,field:t.field,characters:r.length})})}\n`)},ko=e=>e.includes(`Usage:`)||e.includes(`Options:`)||e.includes(`Commands:`),Ao=ee.omit({fields:!0}).extend({remediation:C.string(),fields:C.array(C.object({path:C.string(),message:C.string()})).optional()}),jo=e=>{try{let t=JSON.parse(e),n=Ao.safeParse(t);return n.success?{code:n.data.code,message:n.data.message,remediation:n.data.remediation,...n.data.fields!==void 0&&{fields:n.data.fields}}:null}catch{return null}},Mo=(e,t)=>{if(typeof e==`string`&&ko(e)){S.stdout.write(e);return}let n=Do(e);if(n!==null&&$(e)){Oo(e,n,t);return}if(So(e)){Eo(e,t);return}let r=be(e);if(r!==null){let e=null;if(r.detail!==null){Co(t);let n=T.join(t,`result-${E()}.ndjson`),i=`${JSON.stringify(r.detail)}\n`;w(n,i,{mode:384,flag:`wx`}),e=To({path:n,characters:i.length,records:1})}S.stdout.write(`${JSON.stringify({...r.value,...e!==null&&{detail:e}})}\n`);return}bo(yo(e))},No=e=>{S.stderr.write(`${JSON.stringify(e)}\n`)},Po=(e,t,n=`enhance`)=>{let r=e,i=T.join(t,`sensitive`);return wo(i),{result:e=>{Mo(v(e,n),i)},failure:e=>{No(Se(e,n))},logger:{info:(...e)=>{Mo(v(e.length===1?e[0]:e,n),i)},error:(...e)=>{let t=String(v(e.map(String).join(``),n)),i=jo(t);i===null?r.pendingParserMessage=t:No(i)}}}};(async()=>{let e=ze(),t={exitCode:1,pendingParserMessage:null},n=Po(t,e.configDirectory,e.commandName),r=Ge(e.configDirectory),i=qe(),a=He(e.apiUrl,r,i),o=go({apiUrl:e.apiUrl,version:`0.1.40-dev.sha-8f67e2642093`,credentials:r,remote:a,mutationKey:i,output:n,state:t,configDirectory:e.configDirectory,commandName:e.commandName});try{await o.run()}catch(e){e instanceof de&&_o(e.requestedCode===0?0:t.exitCode),n.failure(m(e,null)),_o(1)}})().catch(e=>{S.stderr.write(`${e instanceof Error?e.message:`CLI startup failed.`}\n`),S.exitCode=1});export{};