@autodevjapan/godd-mcp-alpha 0.25.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/godd.cjs +2 -2
- package/package.json +1 -1
package/dist/godd.cjs
CHANGED
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let a of e.seen.entries()){let s=a[1];if(t===a[0]){i(a);continue}if(e.external){let u=e.external.registry.get(a[0])?.id;if(t!==a[0]&&u){i(a);continue}}if(e.metadataRegistry.get(a[0])?.id){i(a);continue}if(s.cycle){i(a);continue}if(s.count>1&&e.reused==="ref"){i(a);continue}}}function $r(e,t){let n=e.seen.get(t);if(!n)throw new Error("Unprocessed schema. This is a bug in Zod.");let o=a=>{let s=e.seen.get(a);if(s.ref===null)return;let c=s.def??s.schema,u={...c},l=s.ref;if(s.ref=null,l){o(l);let p=e.seen.get(l),f=p.schema;if(f.$ref&&(e.target==="draft-07"||e.target==="draft-04"||e.target==="openapi-3.0")?(c.allOf=c.allOf??[],c.allOf.push(f)):Object.assign(c,f),Object.assign(c,u),a._zod.parent===l)for(let h in c)h==="$ref"||h==="allOf"||h in u||delete c[h];if(f.$ref&&p.def)for(let h in c)h==="$ref"||h==="allOf"||h in p.def&&JSON.stringify(c[h])===JSON.stringify(p.def[h])&&delete c[h]}let d=a._zod.parent;if(d&&d!==l){o(d);let p=e.seen.get(d);if(p?.schema.$ref&&(c.$ref=p.schema.$ref,p.def))for(let f in c)f==="$ref"||f==="allOf"||f in p.def&&JSON.stringify(c[f])===JSON.stringify(p.def[f])&&delete c[f]}e.override({zodSchema:a,jsonSchema:c,path:s.path??[]})};for(let a of[...e.seen.entries()].reverse())o(a[0]);let r={};if(e.target==="draft-2020-12"?r.$schema="https://json-schema.org/draft/2020-12/schema":e.target==="draft-07"?r.$schema="http://json-schema.org/draft-07/schema#":e.target==="draft-04"?r.$schema="http://json-schema.org/draft-04/schema#":e.target,e.external?.uri){let a=e.external.registry.get(t)?.id;if(!a)throw new Error("Schema is missing an `id` property");r.$id=e.external.uri(a)}Object.assign(r,n.def??n.schema);let i=e.external?.defs??{};for(let a of e.seen.entries()){let s=a[1];s.def&&s.defId&&(i[s.defId]=s.def)}e.external||Object.keys(i).length>0&&(e.target==="draft-2020-12"?r.$defs=i:r.definitions=i);try{let a=JSON.parse(JSON.stringify(r));return Object.defineProperty(a,"~standard",{value:{...t["~standard"],jsonSchema:{input:Bn(t,"input",e.processors),output:Bn(t,"output",e.processors)}},enumerable:!1,writable:!1}),a}catch{throw new Error("Error converting schema to JSON.")}}function He(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let o=e._zod.def;if(o.type==="transform")return!0;if(o.type==="array")return He(o.element,n);if(o.type==="set")return He(o.valueType,n);if(o.type==="lazy")return He(o.getter(),n);if(o.type==="promise"||o.type==="optional"||o.type==="nonoptional"||o.type==="nullable"||o.type==="readonly"||o.type==="default"||o.type==="prefault")return He(o.innerType,n);if(o.type==="intersection")return He(o.left,n)||He(o.right,n);if(o.type==="record"||o.type==="map")return He(o.keyType,n)||He(o.valueType,n);if(o.type==="pipe")return He(o.in,n)||He(o.out,n);if(o.type==="object"){for(let r in o.shape)if(He(o.shape[r],n))return!0;return!1}if(o.type==="union"){for(let r of o.options)if(He(r,n))return!0;return!1}if(o.type==="tuple"){for(let r of o.items)if(He(r,n))return!0;return!!(o.rest&&He(o.rest,n))}return!1}var wp=(e,t={})=>n=>{let o=yr({...n,processors:t});return ue(e,o),_r(o,e),$r(o,e)},Bn=(e,t,n={})=>o=>{let{libraryOptions:r,target:i}=o??{},a=yr({...r??{},target:i,io:t,processors:n});return ue(e,a),_r(a,e),$r(a,e)};var x0={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},Sp=(e,t,n,o)=>{let r=n;r.type="string";let{minimum:i,maximum:a,format:s,patterns:c,contentEncoding:u}=e._zod.bag;if(typeof i=="number"&&(r.minLength=i),typeof a=="number"&&(r.maxLength=a),s&&(r.format=x0[s]??s,r.format===""&&delete r.format,s==="time"&&delete r.format),u&&(r.contentEncoding=u),c&&c.size>0){let l=[...c];l.length===1?r.pattern=l[0].source:l.length>1&&(r.allOf=[...l.map(d=>({...t.target==="draft-07"||t.target==="draft-04"||t.target==="openapi-3.0"?{type:"string"}:{},pattern:d.source}))])}},zp=(e,t,n,o)=>{let r=n,{minimum:i,maximum:a,format:s,multipleOf:c,exclusiveMaximum:u,exclusiveMinimum:l}=e._zod.bag;typeof s=="string"&&s.includes("int")?r.type="integer":r.type="number",typeof l=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.minimum=l,r.exclusiveMinimum=!0):r.exclusiveMinimum=l),typeof i=="number"&&(r.minimum=i,typeof l=="number"&&t.target!=="draft-04"&&(l>=i?delete r.minimum:delete r.exclusiveMinimum)),typeof u=="number"&&(t.target==="draft-04"||t.target==="openapi-3.0"?(r.maximum=u,r.exclusiveMaximum=!0):r.exclusiveMaximum=u),typeof a=="number"&&(r.maximum=a,typeof u=="number"&&t.target!=="draft-04"&&(u<=a?delete r.maximum:delete r.exclusiveMaximum)),typeof c=="number"&&(r.multipleOf=c)},Ip=(e,t,n,o)=>{n.type="boolean"},Pp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("BigInt cannot be represented in JSON Schema")},Tp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Symbols cannot be represented in JSON Schema")},jp=(e,t,n,o)=>{t.target==="openapi-3.0"?(n.type="string",n.nullable=!0,n.enum=[null]):n.type="null"},Ep=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Undefined cannot be represented in JSON Schema")},Op=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Void cannot be represented in JSON Schema")},Np=(e,t,n,o)=>{n.not={}},Cp=(e,t,n,o)=>{},Rp=(e,t,n,o)=>{},Dp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Date cannot be represented in JSON Schema")},Zp=(e,t,n,o)=>{let r=e._zod.def,i=Go(r.entries);i.every(a=>typeof a=="number")&&(n.type="number"),i.every(a=>typeof a=="string")&&(n.type="string"),n.enum=i},Ap=(e,t,n,o)=>{let r=e._zod.def,i=[];for(let a of r.values)if(a===void 0){if(t.unrepresentable==="throw")throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof a=="bigint"){if(t.unrepresentable==="throw")throw new Error("BigInt literals cannot be represented in JSON Schema");i.push(Number(a))}else i.push(a);if(i.length!==0)if(i.length===1){let a=i[0];n.type=a===null?"null":typeof a,t.target==="draft-04"||t.target==="openapi-3.0"?n.enum=[a]:n.const=a}else i.every(a=>typeof a=="number")&&(n.type="number"),i.every(a=>typeof a=="string")&&(n.type="string"),i.every(a=>typeof a=="boolean")&&(n.type="boolean"),i.every(a=>a===null)&&(n.type="null"),n.enum=i},Up=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("NaN cannot be represented in JSON Schema")},Mp=(e,t,n,o)=>{let r=n,i=e._zod.pattern;if(!i)throw new Error("Pattern not found in template literal");r.type="string",r.pattern=i.source},Lp=(e,t,n,o)=>{let r=n,i={type:"string",format:"binary",contentEncoding:"binary"},{minimum:a,maximum:s,mime:c}=e._zod.bag;a!==void 0&&(i.minLength=a),s!==void 0&&(i.maxLength=s),c?c.length===1?(i.contentMediaType=c[0],Object.assign(r,i)):(Object.assign(r,i),r.anyOf=c.map(u=>({contentMediaType:u}))):Object.assign(r,i)},qp=(e,t,n,o)=>{n.type="boolean"},Fp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Custom types cannot be represented in JSON Schema")},Vp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Function types cannot be represented in JSON Schema")},Jp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Transforms cannot be represented in JSON Schema")},Gp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Map cannot be represented in JSON Schema")},Kp=(e,t,n,o)=>{if(t.unrepresentable==="throw")throw new Error("Set cannot be represented in JSON Schema")},Bp=(e,t,n,o)=>{let r=n,i=e._zod.def,{minimum:a,maximum:s}=e._zod.bag;typeof a=="number"&&(r.minItems=a),typeof s=="number"&&(r.maxItems=s),r.type="array",r.items=ue(i.element,t,{...o,path:[...o.path,"items"]})},Hp=(e,t,n,o)=>{let r=n,i=e._zod.def;r.type="object",r.properties={};let a=i.shape;for(let u in a)r.properties[u]=ue(a[u],t,{...o,path:[...o.path,"properties",u]});let s=new Set(Object.keys(a)),c=new Set([...s].filter(u=>{let l=i.shape[u]._zod;return t.io==="input"?l.optin===void 0:l.optout===void 0}));c.size>0&&(r.required=Array.from(c)),i.catchall?._zod.def.type==="never"?r.additionalProperties=!1:i.catchall?i.catchall&&(r.additionalProperties=ue(i.catchall,t,{...o,path:[...o.path,"additionalProperties"]})):t.io==="output"&&(r.additionalProperties=!1)},au=(e,t,n,o)=>{let r=e._zod.def,i=r.inclusive===!1,a=r.options.map((s,c)=>ue(s,t,{...o,path:[...o.path,i?"oneOf":"anyOf",c]}));i?n.oneOf=a:n.anyOf=a},Wp=(e,t,n,o)=>{let r=e._zod.def,i=ue(r.left,t,{...o,path:[...o.path,"allOf",0]}),a=ue(r.right,t,{...o,path:[...o.path,"allOf",1]}),s=u=>"allOf"in u&&Object.keys(u).length===1,c=[...s(i)?i.allOf:[i],...s(a)?a.allOf:[a]];n.allOf=c},Yp=(e,t,n,o)=>{let r=n,i=e._zod.def;r.type="array";let a=t.target==="draft-2020-12"?"prefixItems":"items",s=t.target==="draft-2020-12"||t.target==="openapi-3.0"?"items":"additionalItems",c=i.items.map((p,f)=>ue(p,t,{...o,path:[...o.path,a,f]})),u=i.rest?ue(i.rest,t,{...o,path:[...o.path,s,...t.target==="openapi-3.0"?[i.items.length]:[]]}):null;t.target==="draft-2020-12"?(r.prefixItems=c,u&&(r.items=u)):t.target==="openapi-3.0"?(r.items={anyOf:c},u&&r.items.anyOf.push(u),r.minItems=c.length,u||(r.maxItems=c.length)):(r.items=c,u&&(r.additionalItems=u));let{minimum:l,maximum:d}=e._zod.bag;typeof l=="number"&&(r.minItems=l),typeof d=="number"&&(r.maxItems=d)},Xp=(e,t,n,o)=>{let r=n,i=e._zod.def;r.type="object";let a=i.keyType,c=a._zod.bag?.patterns;if(i.mode==="loose"&&c&&c.size>0){let l=ue(i.valueType,t,{...o,path:[...o.path,"patternProperties","*"]});r.patternProperties={};for(let d of c)r.patternProperties[d.source]=l}else(t.target==="draft-07"||t.target==="draft-2020-12")&&(r.propertyNames=ue(i.keyType,t,{...o,path:[...o.path,"propertyNames"]})),r.additionalProperties=ue(i.valueType,t,{...o,path:[...o.path,"additionalProperties"]});let u=a._zod.values;if(u){let l=[...u].filter(d=>typeof d=="string"||typeof d=="number");l.length>0&&(r.required=l)}},Qp=(e,t,n,o)=>{let r=e._zod.def,i=ue(r.innerType,t,o),a=t.seen.get(e);t.target==="openapi-3.0"?(a.ref=r.innerType,n.nullable=!0):n.anyOf=[i,{type:"null"}]},ef=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType},tf=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType,n.default=JSON.parse(JSON.stringify(r.defaultValue))},rf=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType,t.io==="input"&&(n._prefault=JSON.parse(JSON.stringify(r.defaultValue)))},nf=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType;let a;try{a=r.catchValue(void 0)}catch{throw new Error("Dynamic catch values are not supported in JSON Schema")}n.default=a},of=(e,t,n,o)=>{let r=e._zod.def,i=t.io==="input"?r.in._zod.def.type==="transform"?r.out:r.in:r.out;ue(i,t,o);let a=t.seen.get(e);a.ref=i},af=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType,n.readOnly=!0},sf=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType},su=(e,t,n,o)=>{let r=e._zod.def;ue(r.innerType,t,o);let i=t.seen.get(e);i.ref=r.innerType},cf=(e,t,n,o)=>{let r=e._zod.innerType;ue(r,t,o);let i=t.seen.get(e);i.ref=r},iu={string:Sp,number:zp,boolean:Ip,bigint:Pp,symbol:Tp,null:jp,undefined:Ep,void:Op,never:Np,any:Cp,unknown:Rp,date:Dp,enum:Zp,literal:Ap,nan:Up,template_literal:Mp,file:Lp,success:qp,custom:Fp,function:Vp,transform:Jp,map:Gp,set:Kp,array:Bp,object:Hp,union:au,intersection:Wp,tuple:Yp,record:Xp,nullable:Qp,nonoptional:ef,default:tf,prefault:rf,catch:nf,pipe:of,readonly:af,promise:sf,optional:su,lazy:cf};function Hn(e,t){if("_idmap"in e){let o=e,r=yr({...t,processors:iu}),i={};for(let c of o._idmap.entries()){let[u,l]=c;ue(l,r)}let a={},s={registry:o,uri:t?.uri,defs:i};r.external=s;for(let c of o._idmap.entries()){let[u,l]=c;_r(r,l),a[u]=$r(r,l)}if(Object.keys(i).length>0){let c=r.target==="draft-2020-12"?"$defs":"definitions";a.__shared={[c]:i}}return{schemas:a}}let n=yr({...t,processors:iu});return ue(e,n),_r(n,e),$r(n,e)}var cu=class{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(t){this.ctx.counter=t}get seen(){return this.ctx.seen}constructor(t){let n=t?.target??"draft-2020-12";n==="draft-4"&&(n="draft-04"),n==="draft-7"&&(n="draft-07"),this.ctx=yr({processors:iu,target:n,...t?.metadata&&{metadata:t.metadata},...t?.unrepresentable&&{unrepresentable:t.unrepresentable},...t?.override&&{override:t.override},...t?.io&&{io:t.io}})}process(t,n={path:[],schemaPath:[]}){return ue(t,this.ctx,n)}emit(t,n){n&&(n.cycles&&(this.ctx.cycles=n.cycles),n.reused&&(this.ctx.reused=n.reused),n.external&&(this.ctx.external=n.external)),_r(this.ctx,t);let o=$r(this.ctx,t),{"~standard":r,...i}=o;return i}};var Ay={};function Wn(e){return!!e._zod}function br(e,t){return Wn(e)?Ar(e,t):e.safeParse(t)}function uu(e){if(!e)return;let t;if(Wn(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function Ly(e){if(Wn(e)){let i=e._zod?.def;if(i){if(i.value!==void 0)return i.value;if(Array.isArray(i.values)&&i.values.length>0)return i.values[0]}}let n=e._def;if(n){if(n.value!==void 0)return n.value;if(Array.isArray(n.values)&&n.values.length>0)return n.values[0]}let o=e.value;if(o!==void 0)return o}var Q={};Ft(Q,{$brand:()=>Vo,$input:()=>$c,$output:()=>_c,NEVER:()=>Ua,TimePrecision:()=>wc,ZodAny:()=>Tf,ZodArray:()=>Nf,ZodBase64:()=>Tu,ZodBase64URL:()=>ju,ZodBigInt:()=>ro,ZodBigIntFormat:()=>Nu,ZodBoolean:()=>to,ZodCIDRv4:()=>Iu,ZodCIDRv6:()=>Pu,ZodCUID:()=>$u,ZodCUID2:()=>bu,ZodCatch:()=>Qf,ZodCodec:()=>Uu,ZodCustom:()=>qi,ZodCustomStringFormat:()=>Qn,ZodDate:()=>Zi,ZodDefault:()=>Kf,ZodDiscriminatedUnion:()=>Rf,ZodE164:()=>Eu,ZodEmail:()=>vu,ZodEmoji:()=>yu,ZodEnum:()=>Yn,ZodError:()=>P0,ZodExactOptional:()=>Vf,ZodFile:()=>qf,ZodFirstPartyTypeKind:()=>dm,ZodFunction:()=>cm,ZodGUID:()=>Ni,ZodIPv4:()=>Su,ZodIPv6:()=>zu,ZodISODate:()=>pu,ZodISODateTime:()=>du,ZodISODuration:()=>mu,ZodISOTime:()=>fu,ZodIntersection:()=>Df,ZodIssueCode:()=>j0,ZodJWT:()=>Ou,ZodKSUID:()=>wu,ZodLazy:()=>im,ZodLiteral:()=>Lf,ZodMAC:()=>Sf,ZodMap:()=>Uf,ZodNaN:()=>tm,ZodNanoID:()=>_u,ZodNever:()=>Ef,ZodNonOptional:()=>Zu,ZodNull:()=>Pf,ZodNullable:()=>Gf,ZodNumber:()=>eo,ZodNumberFormat:()=>Xr,ZodObject:()=>Ai,ZodOptional:()=>Du,ZodPipe:()=>Au,ZodPrefault:()=>Hf,ZodPromise:()=>sm,ZodReadonly:()=>rm,ZodRealError:()=>tt,ZodRecord:()=>Li,ZodSet:()=>Mf,ZodString:()=>Xn,ZodStringFormat:()=>me,ZodSuccess:()=>Xf,ZodSymbol:()=>zf,ZodTemplateLiteral:()=>om,ZodTransform:()=>Ff,ZodTuple:()=>Zf,ZodType:()=>J,ZodULID:()=>xu,ZodURL:()=>Di,ZodUUID:()=>Rt,ZodUndefined:()=>If,ZodUnion:()=>Ui,ZodUnknown:()=>jf,ZodVoid:()=>Of,ZodXID:()=>ku,ZodXor:()=>Cf,_ZodString:()=>hu,_default:()=>Bf,_function:()=>V_,any:()=>z_,array:()=>X,base64:()=>u_,base64url:()=>l_,bigint:()=>b_,boolean:()=>we,catch:()=>em,check:()=>J_,cidrv4:()=>s_,cidrv6:()=>c_,clone:()=>Te,codec:()=>L_,coerce:()=>pm,config:()=>ke,core:()=>lt,cuid:()=>Qy,cuid2:()=>e_,custom:()=>Mu,date:()=>P_,decode:()=>yf,decodeAsync:()=>$f,describe:()=>G_,discriminatedUnion:()=>Mi,e164:()=>d_,email:()=>Fy,emoji:()=>Yy,encode:()=>vf,encodeAsync:()=>_f,endsWith:()=>Jr,enum:()=>Oe,exactOptional:()=>Jf,file:()=>Z_,flattenError:()=>jn,float32:()=>v_,float64:()=>y_,formatError:()=>En,fromJSONSchema:()=>X_,function:()=>V_,getErrorMap:()=>O0,globalRegistry:()=>Ie,gt:()=>zt,gte:()=>je,guid:()=>Vy,hash:()=>h_,hex:()=>g_,hostname:()=>m_,httpUrl:()=>Wy,includes:()=>Fr,instanceof:()=>B_,int:()=>gu,int32:()=>__,int64:()=>x_,intersection:()=>oo,ipv4:()=>o_,ipv6:()=>a_,iso:()=>xr,json:()=>W_,jwt:()=>p_,keyof:()=>T_,ksuid:()=>n_,lazy:()=>am,length:()=>vr,literal:()=>Z,locales:()=>Vn,looseObject:()=>Ee,looseRecord:()=>N_,lowercase:()=>Lr,lt:()=>St,lte:()=>Be,mac:()=>i_,map:()=>C_,maxLength:()=>hr,maxSize:()=>Wt,meta:()=>K_,mime:()=>Gr,minLength:()=>Ct,minSize:()=>It,multipleOf:()=>Ht,nan:()=>M_,nanoid:()=>Xy,nativeEnum:()=>D_,negative:()=>Pi,never:()=>Cu,nonnegative:()=>ji,nonoptional:()=>Yf,nonpositive:()=>Ti,normalize:()=>Kr,null:()=>no,nullable:()=>Ci,nullish:()=>A_,number:()=>ce,object:()=>O,optional:()=>_e,overwrite:()=>gt,parse:()=>ff,parseAsync:()=>mf,partialRecord:()=>O_,pipe:()=>Ri,positive:()=>Ii,prefault:()=>Wf,preprocess:()=>Fi,prettifyError:()=>Va,promise:()=>F_,property:()=>Ei,readonly:()=>nm,record:()=>ve,refine:()=>um,regex:()=>Mr,regexes:()=>et,registry:()=>ai,safeDecode:()=>xf,safeDecodeAsync:()=>wf,safeEncode:()=>bf,safeEncodeAsync:()=>kf,safeParse:()=>gf,safeParseAsync:()=>hf,set:()=>R_,setErrorMap:()=>E0,size:()=>gr,slugify:()=>Kn,startsWith:()=>Vr,strictObject:()=>j_,string:()=>y,stringFormat:()=>f_,stringbool:()=>H_,success:()=>U_,superRefine:()=>lm,symbol:()=>w_,templateLiteral:()=>q_,toJSONSchema:()=>Hn,toLowerCase:()=>Hr,toUpperCase:()=>Wr,transform:()=>Ru,treeifyError:()=>Fa,trim:()=>Br,tuple:()=>Af,uint32:()=>$_,uint64:()=>k_,ulid:()=>t_,undefined:()=>S_,union:()=>pe,unknown:()=>ge,uppercase:()=>qr,url:()=>Hy,util:()=>w,uuid:()=>Jy,uuidv4:()=>Gy,uuidv6:()=>Ky,uuidv7:()=>By,void:()=>I_,xid:()=>r_,xor:()=>E_});var Oi={};Ft(Oi,{ZodAny:()=>Tf,ZodArray:()=>Nf,ZodBase64:()=>Tu,ZodBase64URL:()=>ju,ZodBigInt:()=>ro,ZodBigIntFormat:()=>Nu,ZodBoolean:()=>to,ZodCIDRv4:()=>Iu,ZodCIDRv6:()=>Pu,ZodCUID:()=>$u,ZodCUID2:()=>bu,ZodCatch:()=>Qf,ZodCodec:()=>Uu,ZodCustom:()=>qi,ZodCustomStringFormat:()=>Qn,ZodDate:()=>Zi,ZodDefault:()=>Kf,ZodDiscriminatedUnion:()=>Rf,ZodE164:()=>Eu,ZodEmail:()=>vu,ZodEmoji:()=>yu,ZodEnum:()=>Yn,ZodExactOptional:()=>Vf,ZodFile:()=>qf,ZodFunction:()=>cm,ZodGUID:()=>Ni,ZodIPv4:()=>Su,ZodIPv6:()=>zu,ZodIntersection:()=>Df,ZodJWT:()=>Ou,ZodKSUID:()=>wu,ZodLazy:()=>im,ZodLiteral:()=>Lf,ZodMAC:()=>Sf,ZodMap:()=>Uf,ZodNaN:()=>tm,ZodNanoID:()=>_u,ZodNever:()=>Ef,ZodNonOptional:()=>Zu,ZodNull:()=>Pf,ZodNullable:()=>Gf,ZodNumber:()=>eo,ZodNumberFormat:()=>Xr,ZodObject:()=>Ai,ZodOptional:()=>Du,ZodPipe:()=>Au,ZodPrefault:()=>Hf,ZodPromise:()=>sm,ZodReadonly:()=>rm,ZodRecord:()=>Li,ZodSet:()=>Mf,ZodString:()=>Xn,ZodStringFormat:()=>me,ZodSuccess:()=>Xf,ZodSymbol:()=>zf,ZodTemplateLiteral:()=>om,ZodTransform:()=>Ff,ZodTuple:()=>Zf,ZodType:()=>J,ZodULID:()=>xu,ZodURL:()=>Di,ZodUUID:()=>Rt,ZodUndefined:()=>If,ZodUnion:()=>Ui,ZodUnknown:()=>jf,ZodVoid:()=>Of,ZodXID:()=>ku,ZodXor:()=>Cf,_ZodString:()=>hu,_default:()=>Bf,_function:()=>V_,any:()=>z_,array:()=>X,base64:()=>u_,base64url:()=>l_,bigint:()=>b_,boolean:()=>we,catch:()=>em,check:()=>J_,cidrv4:()=>s_,cidrv6:()=>c_,codec:()=>L_,cuid:()=>Qy,cuid2:()=>e_,custom:()=>Mu,date:()=>P_,describe:()=>G_,discriminatedUnion:()=>Mi,e164:()=>d_,email:()=>Fy,emoji:()=>Yy,enum:()=>Oe,exactOptional:()=>Jf,file:()=>Z_,float32:()=>v_,float64:()=>y_,function:()=>V_,guid:()=>Vy,hash:()=>h_,hex:()=>g_,hostname:()=>m_,httpUrl:()=>Wy,instanceof:()=>B_,int:()=>gu,int32:()=>__,int64:()=>x_,intersection:()=>oo,ipv4:()=>o_,ipv6:()=>a_,json:()=>W_,jwt:()=>p_,keyof:()=>T_,ksuid:()=>n_,lazy:()=>am,literal:()=>Z,looseObject:()=>Ee,looseRecord:()=>N_,mac:()=>i_,map:()=>C_,meta:()=>K_,nan:()=>M_,nanoid:()=>Xy,nativeEnum:()=>D_,never:()=>Cu,nonoptional:()=>Yf,null:()=>no,nullable:()=>Ci,nullish:()=>A_,number:()=>ce,object:()=>O,optional:()=>_e,partialRecord:()=>O_,pipe:()=>Ri,prefault:()=>Wf,preprocess:()=>Fi,promise:()=>F_,readonly:()=>nm,record:()=>ve,refine:()=>um,set:()=>R_,strictObject:()=>j_,string:()=>y,stringFormat:()=>f_,stringbool:()=>H_,success:()=>U_,superRefine:()=>lm,symbol:()=>w_,templateLiteral:()=>q_,transform:()=>Ru,tuple:()=>Af,uint32:()=>$_,uint64:()=>k_,ulid:()=>t_,undefined:()=>S_,union:()=>pe,unknown:()=>ge,url:()=>Hy,uuid:()=>Jy,uuidv4:()=>Gy,uuidv6:()=>Ky,uuidv7:()=>By,void:()=>I_,xid:()=>r_,xor:()=>E_});var lu={};Ft(lu,{endsWith:()=>Jr,gt:()=>zt,gte:()=>je,includes:()=>Fr,length:()=>vr,lowercase:()=>Lr,lt:()=>St,lte:()=>Be,maxLength:()=>hr,maxSize:()=>Wt,mime:()=>Gr,minLength:()=>Ct,minSize:()=>It,multipleOf:()=>Ht,negative:()=>Pi,nonnegative:()=>ji,nonpositive:()=>Ti,normalize:()=>Kr,overwrite:()=>gt,positive:()=>Ii,property:()=>Ei,regex:()=>Mr,size:()=>gr,slugify:()=>Kn,startsWith:()=>Vr,toLowerCase:()=>Hr,toUpperCase:()=>Wr,trim:()=>Br,uppercase:()=>qr});var xr={};Ft(xr,{ZodISODate:()=>pu,ZodISODateTime:()=>du,ZodISODuration:()=>mu,ZodISOTime:()=>fu,date:()=>lf,datetime:()=>uf,duration:()=>pf,time:()=>df});var du=m("ZodISODateTime",(e,t)=>{_s.init(e,t),me.init(e,t)});function uf(e){return Sc(du,e)}var pu=m("ZodISODate",(e,t)=>{$s.init(e,t),me.init(e,t)});function lf(e){return zc(pu,e)}var fu=m("ZodISOTime",(e,t)=>{bs.init(e,t),me.init(e,t)});function df(e){return Ic(fu,e)}var mu=m("ZodISODuration",(e,t)=>{xs.init(e,t),me.init(e,t)});function pf(e){return Pc(mu,e)}var qy=(e,t)=>{Yo.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:n=>En(e,n)},flatten:{value:n=>jn(e,n)},addIssue:{value:n=>{e.issues.push(n),e.message=JSON.stringify(e.issues,In,2)}},addIssues:{value:n=>{e.issues.push(...n),e.message=JSON.stringify(e.issues,In,2)}},isEmpty:{get(){return e.issues.length===0}}})},P0=m("ZodError",qy),tt=m("ZodError",qy,{Parent:Error});var ff=On(tt),mf=Cn(tt),gf=Dn(tt),hf=Zn(tt),vf=Ja(tt),yf=Ga(tt),_f=Ka(tt),$f=Ba(tt),bf=Ha(tt),xf=Wa(tt),kf=Ya(tt),wf=Xa(tt);var J=m("ZodType",(e,t)=>(q.init(e,t),Object.assign(e["~standard"],{jsonSchema:{input:Bn(e,"input"),output:Bn(e,"output")}}),e.toJSONSchema=wp(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=(...n)=>e.clone(w.mergeDefs(t,{checks:[...t.checks??[],...n.map(o=>typeof o=="function"?{_zod:{check:o,def:{check:"custom"},onattach:[]}}:o)]}),{parent:!0}),e.with=e.check,e.clone=(n,o)=>Te(e,n,o),e.brand=()=>e,e.register=((n,o)=>(n.add(e,o),e)),e.parse=(n,o)=>ff(e,n,o,{callee:e.parse}),e.safeParse=(n,o)=>gf(e,n,o),e.parseAsync=async(n,o)=>mf(e,n,o,{callee:e.parseAsync}),e.safeParseAsync=async(n,o)=>hf(e,n,o),e.spa=e.safeParseAsync,e.encode=(n,o)=>vf(e,n,o),e.decode=(n,o)=>yf(e,n,o),e.encodeAsync=async(n,o)=>_f(e,n,o),e.decodeAsync=async(n,o)=>$f(e,n,o),e.safeEncode=(n,o)=>bf(e,n,o),e.safeDecode=(n,o)=>xf(e,n,o),e.safeEncodeAsync=async(n,o)=>kf(e,n,o),e.safeDecodeAsync=async(n,o)=>wf(e,n,o),e.refine=(n,o)=>e.check(um(n,o)),e.superRefine=n=>e.check(lm(n)),e.overwrite=n=>e.check(gt(n)),e.optional=()=>_e(e),e.exactOptional=()=>Jf(e),e.nullable=()=>Ci(e),e.nullish=()=>_e(Ci(e)),e.nonoptional=n=>Yf(e,n),e.array=()=>X(e),e.or=n=>pe([e,n]),e.and=n=>oo(e,n),e.transform=n=>Ri(e,Ru(n)),e.default=n=>Bf(e,n),e.prefault=n=>Wf(e,n),e.catch=n=>em(e,n),e.pipe=n=>Ri(e,n),e.readonly=()=>nm(e),e.describe=n=>{let o=e.clone();return Ie.add(o,{description:n}),o},Object.defineProperty(e,"description",{get(){return Ie.get(e)?.description},configurable:!0}),e.meta=(...n)=>{if(n.length===0)return Ie.get(e);let o=e.clone();return Ie.add(o,n[0]),o},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e.apply=n=>n(e),e)),hu=m("_ZodString",(e,t)=>{mr.init(e,t),J.init(e,t),e._zod.processJSONSchema=(o,r,i)=>Sp(e,o,r,i);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...o)=>e.check(Mr(...o)),e.includes=(...o)=>e.check(Fr(...o)),e.startsWith=(...o)=>e.check(Vr(...o)),e.endsWith=(...o)=>e.check(Jr(...o)),e.min=(...o)=>e.check(Ct(...o)),e.max=(...o)=>e.check(hr(...o)),e.length=(...o)=>e.check(vr(...o)),e.nonempty=(...o)=>e.check(Ct(1,...o)),e.lowercase=o=>e.check(Lr(o)),e.uppercase=o=>e.check(qr(o)),e.trim=()=>e.check(Br()),e.normalize=(...o)=>e.check(Kr(...o)),e.toLowerCase=()=>e.check(Hr()),e.toUpperCase=()=>e.check(Wr()),e.slugify=()=>e.check(Kn())}),Xn=m("ZodString",(e,t)=>{mr.init(e,t),hu.init(e,t),e.email=n=>e.check(si(vu,n)),e.url=n=>e.check(Gn(Di,n)),e.jwt=n=>e.check(zi(Ou,n)),e.emoji=n=>e.check(pi(yu,n)),e.guid=n=>e.check(Jn(Ni,n)),e.uuid=n=>e.check(ci(Rt,n)),e.uuidv4=n=>e.check(ui(Rt,n)),e.uuidv6=n=>e.check(li(Rt,n)),e.uuidv7=n=>e.check(di(Rt,n)),e.nanoid=n=>e.check(fi(_u,n)),e.guid=n=>e.check(Jn(Ni,n)),e.cuid=n=>e.check(mi($u,n)),e.cuid2=n=>e.check(gi(bu,n)),e.ulid=n=>e.check(hi(xu,n)),e.base64=n=>e.check(ki(Tu,n)),e.base64url=n=>e.check(wi(ju,n)),e.xid=n=>e.check(vi(ku,n)),e.ksuid=n=>e.check(yi(wu,n)),e.ipv4=n=>e.check(_i(Su,n)),e.ipv6=n=>e.check($i(zu,n)),e.cidrv4=n=>e.check(bi(Iu,n)),e.cidrv6=n=>e.check(xi(Pu,n)),e.e164=n=>e.check(Si(Eu,n)),e.datetime=n=>e.check(uf(n)),e.date=n=>e.check(lf(n)),e.time=n=>e.check(df(n)),e.duration=n=>e.check(pf(n))});function y(e){return bc(Xn,e)}var me=m("ZodStringFormat",(e,t)=>{de.init(e,t),hu.init(e,t)}),vu=m("ZodEmail",(e,t)=>{ls.init(e,t),me.init(e,t)});function Fy(e){return si(vu,e)}var Ni=m("ZodGUID",(e,t)=>{cs.init(e,t),me.init(e,t)});function Vy(e){return Jn(Ni,e)}var Rt=m("ZodUUID",(e,t)=>{us.init(e,t),me.init(e,t)});function Jy(e){return ci(Rt,e)}function Gy(e){return ui(Rt,e)}function Ky(e){return li(Rt,e)}function By(e){return di(Rt,e)}var Di=m("ZodURL",(e,t)=>{ds.init(e,t),me.init(e,t)});function Hy(e){return Gn(Di,e)}function Wy(e){return Gn(Di,{protocol:/^https?$/,hostname:et.domain,...w.normalizeParams(e)})}var yu=m("ZodEmoji",(e,t)=>{ps.init(e,t),me.init(e,t)});function Yy(e){return pi(yu,e)}var _u=m("ZodNanoID",(e,t)=>{fs.init(e,t),me.init(e,t)});function Xy(e){return fi(_u,e)}var $u=m("ZodCUID",(e,t)=>{ms.init(e,t),me.init(e,t)});function Qy(e){return mi($u,e)}var bu=m("ZodCUID2",(e,t)=>{gs.init(e,t),me.init(e,t)});function e_(e){return gi(bu,e)}var xu=m("ZodULID",(e,t)=>{hs.init(e,t),me.init(e,t)});function t_(e){return hi(xu,e)}var ku=m("ZodXID",(e,t)=>{vs.init(e,t),me.init(e,t)});function r_(e){return vi(ku,e)}var wu=m("ZodKSUID",(e,t)=>{ys.init(e,t),me.init(e,t)});function n_(e){return yi(wu,e)}var Su=m("ZodIPv4",(e,t)=>{ks.init(e,t),me.init(e,t)});function o_(e){return _i(Su,e)}var Sf=m("ZodMAC",(e,t)=>{Ss.init(e,t),me.init(e,t)});function i_(e){return kc(Sf,e)}var zu=m("ZodIPv6",(e,t)=>{ws.init(e,t),me.init(e,t)});function a_(e){return $i(zu,e)}var Iu=m("ZodCIDRv4",(e,t)=>{zs.init(e,t),me.init(e,t)});function s_(e){return bi(Iu,e)}var Pu=m("ZodCIDRv6",(e,t)=>{Is.init(e,t),me.init(e,t)});function c_(e){return xi(Pu,e)}var Tu=m("ZodBase64",(e,t)=>{Ps.init(e,t),me.init(e,t)});function u_(e){return ki(Tu,e)}var ju=m("ZodBase64URL",(e,t)=>{Ts.init(e,t),me.init(e,t)});function l_(e){return wi(ju,e)}var Eu=m("ZodE164",(e,t)=>{js.init(e,t),me.init(e,t)});function d_(e){return Si(Eu,e)}var Ou=m("ZodJWT",(e,t)=>{Es.init(e,t),me.init(e,t)});function p_(e){return zi(Ou,e)}var Qn=m("ZodCustomStringFormat",(e,t)=>{Os.init(e,t),me.init(e,t)});function f_(e,t,n={}){return Yr(Qn,e,t,n)}function m_(e){return Yr(Qn,"hostname",et.hostname,e)}function g_(e){return Yr(Qn,"hex",et.hex,e)}function h_(e,t){let n=t?.enc??"hex",o=`${e}_${n}`,r=et[o];if(!r)throw new Error(`Unrecognized hash format: ${o}`);return Yr(Qn,o,r,t)}var eo=m("ZodNumber",(e,t)=>{ti.init(e,t),J.init(e,t),e._zod.processJSONSchema=(o,r,i)=>zp(e,o,r,i),e.gt=(o,r)=>e.check(zt(o,r)),e.gte=(o,r)=>e.check(je(o,r)),e.min=(o,r)=>e.check(je(o,r)),e.lt=(o,r)=>e.check(St(o,r)),e.lte=(o,r)=>e.check(Be(o,r)),e.max=(o,r)=>e.check(Be(o,r)),e.int=o=>e.check(gu(o)),e.safe=o=>e.check(gu(o)),e.positive=o=>e.check(zt(0,o)),e.nonnegative=o=>e.check(je(0,o)),e.negative=o=>e.check(St(0,o)),e.nonpositive=o=>e.check(Be(0,o)),e.multipleOf=(o,r)=>e.check(Ht(o,r)),e.step=(o,r)=>e.check(Ht(o,r)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??Number.NEGATIVE_INFINITY,n.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(n.maximum??Number.POSITIVE_INFINITY,n.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(n.format??"").includes("int")||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function ce(e){return Tc(eo,e)}var Xr=m("ZodNumberFormat",(e,t)=>{Ns.init(e,t),eo.init(e,t)});function gu(e){return Ec(Xr,e)}function v_(e){return Oc(Xr,e)}function y_(e){return Nc(Xr,e)}function __(e){return Cc(Xr,e)}function $_(e){return Rc(Xr,e)}var to=m("ZodBoolean",(e,t)=>{Mn.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Ip(e,n,o,r)});function we(e){return Dc(to,e)}var ro=m("ZodBigInt",(e,t)=>{ri.init(e,t),J.init(e,t),e._zod.processJSONSchema=(o,r,i)=>Pp(e,o,r,i),e.gte=(o,r)=>e.check(je(o,r)),e.min=(o,r)=>e.check(je(o,r)),e.gt=(o,r)=>e.check(zt(o,r)),e.gte=(o,r)=>e.check(je(o,r)),e.min=(o,r)=>e.check(je(o,r)),e.lt=(o,r)=>e.check(St(o,r)),e.lte=(o,r)=>e.check(Be(o,r)),e.max=(o,r)=>e.check(Be(o,r)),e.positive=o=>e.check(zt(BigInt(0),o)),e.negative=o=>e.check(St(BigInt(0),o)),e.nonpositive=o=>e.check(Be(BigInt(0),o)),e.nonnegative=o=>e.check(je(BigInt(0),o)),e.multipleOf=(o,r)=>e.check(Ht(o,r));let n=e._zod.bag;e.minValue=n.minimum??null,e.maxValue=n.maximum??null,e.format=n.format??null});function b_(e){return Ac(ro,e)}var Nu=m("ZodBigIntFormat",(e,t)=>{Cs.init(e,t),ro.init(e,t)});function x_(e){return Mc(Nu,e)}function k_(e){return Lc(Nu,e)}var zf=m("ZodSymbol",(e,t)=>{Rs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Tp(e,n,o,r)});function w_(e){return qc(zf,e)}var If=m("ZodUndefined",(e,t)=>{Ds.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Ep(e,n,o,r)});function S_(e){return Fc(If,e)}var Pf=m("ZodNull",(e,t)=>{Zs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>jp(e,n,o,r)});function no(e){return Vc(Pf,e)}var Tf=m("ZodAny",(e,t)=>{As.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Cp(e,n,o,r)});function z_(){return Jc(Tf)}var jf=m("ZodUnknown",(e,t)=>{Us.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Rp(e,n,o,r)});function ge(){return Gc(jf)}var Ef=m("ZodNever",(e,t)=>{Ms.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Np(e,n,o,r)});function Cu(e){return Kc(Ef,e)}var Of=m("ZodVoid",(e,t)=>{Ls.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Op(e,n,o,r)});function I_(e){return Bc(Of,e)}var Zi=m("ZodDate",(e,t)=>{qs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(o,r,i)=>Dp(e,o,r,i),e.min=(o,r)=>e.check(je(o,r)),e.max=(o,r)=>e.check(Be(o,r));let n=e._zod.bag;e.minDate=n.minimum?new Date(n.minimum):null,e.maxDate=n.maximum?new Date(n.maximum):null});function P_(e){return Hc(Zi,e)}var Nf=m("ZodArray",(e,t)=>{Fs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Bp(e,n,o,r),e.element=t.element,e.min=(n,o)=>e.check(Ct(n,o)),e.nonempty=n=>e.check(Ct(1,n)),e.max=(n,o)=>e.check(hr(n,o)),e.length=(n,o)=>e.check(vr(n,o)),e.unwrap=()=>e.element});function X(e,t){return kp(Nf,e,t)}function T_(e){let t=e._zod.def.shape;return Oe(Object.keys(t))}var Ai=m("ZodObject",(e,t)=>{xp.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Hp(e,n,o,r),w.defineLazy(e,"shape",()=>t.shape),e.keyof=()=>Oe(Object.keys(e._zod.def.shape)),e.catchall=n=>e.clone({...e._zod.def,catchall:n}),e.passthrough=()=>e.clone({...e._zod.def,catchall:ge()}),e.loose=()=>e.clone({...e._zod.def,catchall:ge()}),e.strict=()=>e.clone({...e._zod.def,catchall:Cu()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=n=>w.extend(e,n),e.safeExtend=n=>w.safeExtend(e,n),e.merge=n=>w.merge(e,n),e.pick=n=>w.pick(e,n),e.omit=n=>w.omit(e,n),e.partial=(...n)=>w.partial(Du,e,n[0]),e.required=(...n)=>w.required(Zu,e,n[0])});function O(e,t){let n={type:"object",shape:e??{},...w.normalizeParams(t)};return new Ai(n)}function j_(e,t){return new Ai({type:"object",shape:e,catchall:Cu(),...w.normalizeParams(t)})}function Ee(e,t){return new Ai({type:"object",shape:e,catchall:ge(),...w.normalizeParams(t)})}var Ui=m("ZodUnion",(e,t)=>{Ln.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>au(e,n,o,r),e.options=t.options});function pe(e,t){return new Ui({type:"union",options:e,...w.normalizeParams(t)})}var Cf=m("ZodXor",(e,t)=>{Ui.init(e,t),Vs.init(e,t),e._zod.processJSONSchema=(n,o,r)=>au(e,n,o,r),e.options=t.options});function E_(e,t){return new Cf({type:"union",options:e,inclusive:!1,...w.normalizeParams(t)})}var Rf=m("ZodDiscriminatedUnion",(e,t)=>{Ui.init(e,t),Js.init(e,t)});function Mi(e,t,n){return new Rf({type:"union",options:t,discriminator:e,...w.normalizeParams(n)})}var Df=m("ZodIntersection",(e,t)=>{Gs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Wp(e,n,o,r)});function oo(e,t){return new Df({type:"intersection",left:e,right:t})}var Zf=m("ZodTuple",(e,t)=>{ni.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Yp(e,n,o,r),e.rest=n=>e.clone({...e._zod.def,rest:n})});function Af(e,t,n){let o=t instanceof q,r=o?n:t,i=o?t:null;return new Zf({type:"tuple",items:e,rest:i,...w.normalizeParams(r)})}var Li=m("ZodRecord",(e,t)=>{Ks.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Xp(e,n,o,r),e.keyType=t.keyType,e.valueType=t.valueType});function ve(e,t,n){return new Li({type:"record",keyType:e,valueType:t,...w.normalizeParams(n)})}function O_(e,t,n){let o=Te(e);return o._zod.values=void 0,new Li({type:"record",keyType:o,valueType:t,...w.normalizeParams(n)})}function N_(e,t,n){return new Li({type:"record",keyType:e,valueType:t,mode:"loose",...w.normalizeParams(n)})}var Uf=m("ZodMap",(e,t)=>{Bs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Gp(e,n,o,r),e.keyType=t.keyType,e.valueType=t.valueType,e.min=(...n)=>e.check(It(...n)),e.nonempty=n=>e.check(It(1,n)),e.max=(...n)=>e.check(Wt(...n)),e.size=(...n)=>e.check(gr(...n))});function C_(e,t,n){return new Uf({type:"map",keyType:e,valueType:t,...w.normalizeParams(n)})}var Mf=m("ZodSet",(e,t)=>{Hs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Kp(e,n,o,r),e.min=(...n)=>e.check(It(...n)),e.nonempty=n=>e.check(It(1,n)),e.max=(...n)=>e.check(Wt(...n)),e.size=(...n)=>e.check(gr(...n))});function R_(e,t){return new Mf({type:"set",valueType:e,...w.normalizeParams(t)})}var Yn=m("ZodEnum",(e,t)=>{Ws.init(e,t),J.init(e,t),e._zod.processJSONSchema=(o,r,i)=>Zp(e,o,r,i),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(o,r)=>{let i={};for(let a of o)if(n.has(a))i[a]=t.entries[a];else throw new Error(`Key ${a} not found in enum`);return new Yn({...t,checks:[],...w.normalizeParams(r),entries:i})},e.exclude=(o,r)=>{let i={...t.entries};for(let a of o)if(n.has(a))delete i[a];else throw new Error(`Key ${a} not found in enum`);return new Yn({...t,checks:[],...w.normalizeParams(r),entries:i})}});function Oe(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(o=>[o,o])):e;return new Yn({type:"enum",entries:n,...w.normalizeParams(t)})}function D_(e,t){return new Yn({type:"enum",entries:e,...w.normalizeParams(t)})}var Lf=m("ZodLiteral",(e,t)=>{Ys.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Ap(e,n,o,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function Z(e,t){return new Lf({type:"literal",values:Array.isArray(e)?e:[e],...w.normalizeParams(t)})}var qf=m("ZodFile",(e,t)=>{Xs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Lp(e,n,o,r),e.min=(n,o)=>e.check(It(n,o)),e.max=(n,o)=>e.check(Wt(n,o)),e.mime=(n,o)=>e.check(Gr(Array.isArray(n)?n:[n],o))});function Z_(e){return Xc(qf,e)}var Ff=m("ZodTransform",(e,t)=>{Qs.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Jp(e,n,o,r),e._zod.parse=(n,o)=>{if(o.direction==="backward")throw new ur(e.constructor.name);n.addIssue=i=>{if(typeof i=="string")n.issues.push(w.issue(i,n.value,t));else{let a=i;a.fatal&&(a.continue=!1),a.code??(a.code="custom"),a.input??(a.input=n.value),a.inst??(a.inst=e),n.issues.push(w.issue(a))}};let r=t.transform(n.value,n);return r instanceof Promise?r.then(i=>(n.value=i,n)):(n.value=r,n)}});function Ru(e){return new Ff({type:"transform",transform:e})}var Du=m("ZodOptional",(e,t)=>{oi.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>su(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function _e(e){return new Du({type:"optional",innerType:e})}var Vf=m("ZodExactOptional",(e,t)=>{ec.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>su(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Jf(e){return new Vf({type:"optional",innerType:e})}var Gf=m("ZodNullable",(e,t)=>{tc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Qp(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Ci(e){return new Gf({type:"nullable",innerType:e})}function A_(e){return _e(Ci(e))}var Kf=m("ZodDefault",(e,t)=>{rc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>tf(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Bf(e,t){return new Kf({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():w.shallowClone(t)}})}var Hf=m("ZodPrefault",(e,t)=>{nc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>rf(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Wf(e,t){return new Hf({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():w.shallowClone(t)}})}var Zu=m("ZodNonOptional",(e,t)=>{oc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>ef(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function Yf(e,t){return new Zu({type:"nonoptional",innerType:e,...w.normalizeParams(t)})}var Xf=m("ZodSuccess",(e,t)=>{ic.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>qp(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function U_(e){return new Xf({type:"success",innerType:e})}var Qf=m("ZodCatch",(e,t)=>{ac.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>nf(e,n,o,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function em(e,t){return new Qf({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}var tm=m("ZodNaN",(e,t)=>{sc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Up(e,n,o,r)});function M_(e){return Yc(tm,e)}var Au=m("ZodPipe",(e,t)=>{cc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>of(e,n,o,r),e.in=t.in,e.out=t.out});function Ri(e,t){return new Au({type:"pipe",in:e,out:t})}var Uu=m("ZodCodec",(e,t)=>{Au.init(e,t),qn.init(e,t)});function L_(e,t,n){return new Uu({type:"pipe",in:e,out:t,transform:n.decode,reverseTransform:n.encode})}var rm=m("ZodReadonly",(e,t)=>{uc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>af(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function nm(e){return new rm({type:"readonly",innerType:e})}var om=m("ZodTemplateLiteral",(e,t)=>{lc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Mp(e,n,o,r)});function q_(e,t){return new om({type:"template_literal",parts:e,...w.normalizeParams(t)})}var im=m("ZodLazy",(e,t)=>{fc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>cf(e,n,o,r),e.unwrap=()=>e._zod.def.getter()});function am(e){return new im({type:"lazy",getter:e})}var sm=m("ZodPromise",(e,t)=>{pc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>sf(e,n,o,r),e.unwrap=()=>e._zod.def.innerType});function F_(e){return new sm({type:"promise",innerType:e})}var cm=m("ZodFunction",(e,t)=>{dc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Vp(e,n,o,r)});function V_(e){return new cm({type:"function",input:Array.isArray(e?.input)?Af(e?.input):e?.input??X(ge()),output:e?.output??ge()})}var qi=m("ZodCustom",(e,t)=>{mc.init(e,t),J.init(e,t),e._zod.processJSONSchema=(n,o,r)=>Fp(e,n,o,r)});function J_(e){let t=new fe({check:"custom"});return t._zod.check=e,t}function Mu(e,t){return Qc(qi,e??(()=>!0),t)}function um(e,t={}){return eu(qi,e,t)}function lm(e){return tu(e)}var G_=ru,K_=nu;function B_(e,t={}){let n=new qi({type:"custom",check:"custom",fn:o=>o instanceof e,abort:!0,...w.normalizeParams(t)});return n._zod.bag.Class=e,n._zod.check=o=>{o.value instanceof e||o.issues.push({code:"invalid_type",expected:e.name,input:o.value,inst:n,path:[...n._zod.def.path??[]]})},n}var H_=(...e)=>ou({Codec:Uu,Boolean:to,String:Xn},...e);function W_(e){let t=am(()=>pe([y(e),ce(),we(),no(),X(t),ve(y(),t)]));return t}function Fi(e,t){return Ri(Ru(e),t)}var j0={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function E0(e){ke({customError:e})}function O0(){return ke().customError}var dm;dm||(dm={});var T={...Oi,...lu,iso:xr},N0=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"]);function C0(e,t){let n=e.$schema;return n==="https://json-schema.org/draft/2020-12/schema"?"draft-2020-12":n==="http://json-schema.org/draft-07/schema#"?"draft-7":n==="http://json-schema.org/draft-04/schema#"?"draft-4":t??"draft-2020-12"}function R0(e,t){if(!e.startsWith("#"))throw new Error("External $ref is not supported, only local refs (#/...) are allowed");let n=e.slice(1).split("/").filter(Boolean);if(n.length===0)return t.rootSchema;let o=t.version==="draft-2020-12"?"$defs":"definitions";if(n[0]===o){let r=n[1];if(!r||!t.defs[r])throw new Error(`Reference not found: ${e}`);return t.defs[r]}throw new Error(`Reference not found: ${e}`)}function Y_(e,t){if(e.not!==void 0){if(typeof e.not=="object"&&Object.keys(e.not).length===0)return T.never();throw new Error("not is not supported in Zod (except { not: {} } for never)")}if(e.unevaluatedItems!==void 0)throw new Error("unevaluatedItems is not supported");if(e.unevaluatedProperties!==void 0)throw new Error("unevaluatedProperties is not supported");if(e.if!==void 0||e.then!==void 0||e.else!==void 0)throw new Error("Conditional schemas (if/then/else) are not supported");if(e.dependentSchemas!==void 0||e.dependentRequired!==void 0)throw new Error("dependentSchemas and dependentRequired are not supported");if(e.$ref){let r=e.$ref;if(t.refs.has(r))return t.refs.get(r);if(t.processing.has(r))return T.lazy(()=>{if(!t.refs.has(r))throw new Error(`Circular reference not resolved: ${r}`);return t.refs.get(r)});t.processing.add(r);let i=R0(r,t),a=Le(i,t);return t.refs.set(r,a),t.processing.delete(r),a}if(e.enum!==void 0){let r=e.enum;if(t.version==="openapi-3.0"&&e.nullable===!0&&r.length===1&&r[0]===null)return T.null();if(r.length===0)return T.never();if(r.length===1)return T.literal(r[0]);if(r.every(a=>typeof a=="string"))return T.enum(r);let i=r.map(a=>T.literal(a));return i.length<2?i[0]:T.union([i[0],i[1],...i.slice(2)])}if(e.const!==void 0)return T.literal(e.const);let n=e.type;if(Array.isArray(n)){let r=n.map(i=>{let a={...e,type:i};return Y_(a,t)});return r.length===0?T.never():r.length===1?r[0]:T.union(r)}if(!n)return T.any();let o;switch(n){case"string":{let r=T.string();if(e.format){let i=e.format;i==="email"?r=r.check(T.email()):i==="uri"||i==="uri-reference"?r=r.check(T.url()):i==="uuid"||i==="guid"?r=r.check(T.uuid()):i==="date-time"?r=r.check(T.iso.datetime()):i==="date"?r=r.check(T.iso.date()):i==="time"?r=r.check(T.iso.time()):i==="duration"?r=r.check(T.iso.duration()):i==="ipv4"?r=r.check(T.ipv4()):i==="ipv6"?r=r.check(T.ipv6()):i==="mac"?r=r.check(T.mac()):i==="cidr"?r=r.check(T.cidrv4()):i==="cidr-v6"?r=r.check(T.cidrv6()):i==="base64"?r=r.check(T.base64()):i==="base64url"?r=r.check(T.base64url()):i==="e164"?r=r.check(T.e164()):i==="jwt"?r=r.check(T.jwt()):i==="emoji"?r=r.check(T.emoji()):i==="nanoid"?r=r.check(T.nanoid()):i==="cuid"?r=r.check(T.cuid()):i==="cuid2"?r=r.check(T.cuid2()):i==="ulid"?r=r.check(T.ulid()):i==="xid"?r=r.check(T.xid()):i==="ksuid"&&(r=r.check(T.ksuid()))}typeof e.minLength=="number"&&(r=r.min(e.minLength)),typeof e.maxLength=="number"&&(r=r.max(e.maxLength)),e.pattern&&(r=r.regex(new RegExp(e.pattern))),o=r;break}case"number":case"integer":{let r=n==="integer"?T.number().int():T.number();typeof e.minimum=="number"&&(r=r.min(e.minimum)),typeof e.maximum=="number"&&(r=r.max(e.maximum)),typeof e.exclusiveMinimum=="number"?r=r.gt(e.exclusiveMinimum):e.exclusiveMinimum===!0&&typeof e.minimum=="number"&&(r=r.gt(e.minimum)),typeof e.exclusiveMaximum=="number"?r=r.lt(e.exclusiveMaximum):e.exclusiveMaximum===!0&&typeof e.maximum=="number"&&(r=r.lt(e.maximum)),typeof e.multipleOf=="number"&&(r=r.multipleOf(e.multipleOf)),o=r;break}case"boolean":{o=T.boolean();break}case"null":{o=T.null();break}case"object":{let r={},i=e.properties||{},a=new Set(e.required||[]);for(let[c,u]of Object.entries(i)){let l=Le(u,t);r[c]=a.has(c)?l:l.optional()}if(e.propertyNames){let c=Le(e.propertyNames,t),u=e.additionalProperties&&typeof e.additionalProperties=="object"?Le(e.additionalProperties,t):T.any();if(Object.keys(r).length===0){o=T.record(c,u);break}let l=T.object(r).passthrough(),d=T.looseRecord(c,u);o=T.intersection(l,d);break}if(e.patternProperties){let c=e.patternProperties,u=Object.keys(c),l=[];for(let p of u){let f=Le(c[p],t),g=T.string().regex(new RegExp(p));l.push(T.looseRecord(g,f))}let d=[];if(Object.keys(r).length>0&&d.push(T.object(r).passthrough()),d.push(...l),d.length===0)o=T.object({}).passthrough();else if(d.length===1)o=d[0];else{let p=T.intersection(d[0],d[1]);for(let f=2;f<d.length;f++)p=T.intersection(p,d[f]);o=p}break}let s=T.object(r);e.additionalProperties===!1?o=s.strict():typeof e.additionalProperties=="object"?o=s.catchall(Le(e.additionalProperties,t)):o=s.passthrough();break}case"array":{let r=e.prefixItems,i=e.items;if(r&&Array.isArray(r)){let a=r.map(c=>Le(c,t)),s=i&&typeof i=="object"&&!Array.isArray(i)?Le(i,t):void 0;s?o=T.tuple(a).rest(s):o=T.tuple(a),typeof e.minItems=="number"&&(o=o.check(T.minLength(e.minItems))),typeof e.maxItems=="number"&&(o=o.check(T.maxLength(e.maxItems)))}else if(Array.isArray(i)){let a=i.map(c=>Le(c,t)),s=e.additionalItems&&typeof e.additionalItems=="object"?Le(e.additionalItems,t):void 0;s?o=T.tuple(a).rest(s):o=T.tuple(a),typeof e.minItems=="number"&&(o=o.check(T.minLength(e.minItems))),typeof e.maxItems=="number"&&(o=o.check(T.maxLength(e.maxItems)))}else if(i!==void 0){let a=Le(i,t),s=T.array(a);typeof e.minItems=="number"&&(s=s.min(e.minItems)),typeof e.maxItems=="number"&&(s=s.max(e.maxItems)),o=s}else o=T.array(T.any());break}default:throw new Error(`Unsupported type: ${n}`)}return e.description&&(o=o.describe(e.description)),e.default!==void 0&&(o=o.default(e.default)),o}function Le(e,t){if(typeof e=="boolean")return e?T.any():T.never();let n=Y_(e,t),o=e.type||e.enum!==void 0||e.const!==void 0;if(e.anyOf&&Array.isArray(e.anyOf)){let s=e.anyOf.map(u=>Le(u,t)),c=T.union(s);n=o?T.intersection(n,c):c}if(e.oneOf&&Array.isArray(e.oneOf)){let s=e.oneOf.map(u=>Le(u,t)),c=T.xor(s);n=o?T.intersection(n,c):c}if(e.allOf&&Array.isArray(e.allOf))if(e.allOf.length===0)n=o?n:T.any();else{let s=o?n:Le(e.allOf[0],t),c=o?0:1;for(let u=c;u<e.allOf.length;u++)s=T.intersection(s,Le(e.allOf[u],t));n=s}e.nullable===!0&&t.version==="openapi-3.0"&&(n=T.nullable(n)),e.readOnly===!0&&(n=T.readonly(n));let r={},i=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let s of i)s in e&&(r[s]=e[s]);let a=["contentEncoding","contentMediaType","contentSchema"];for(let s of a)s in e&&(r[s]=e[s]);for(let s of Object.keys(e))N0.has(s)||(r[s]=e[s]);return Object.keys(r).length>0&&t.registry.add(n,r),n}function X_(e,t){if(typeof e=="boolean")return e?T.any():T.never();let n=C0(e,t?.defaultTarget),o=e.$defs||e.definitions||{},r={version:n,defs:o,refs:new Map,processing:new Set,rootSchema:e,registry:t?.registry??Ie};return Le(e,r)}var pm={};Ft(pm,{bigint:()=>U0,boolean:()=>A0,date:()=>M0,number:()=>Z0,string:()=>D0});function D0(e){return xc(Xn,e)}function Z0(e){return jc(eo,e)}function A0(e){return Zc(to,e)}function U0(e){return Uc(ro,e)}function M0(e){return Wc(Zi,e)}ke(gc());var mm="2025-11-25";var Q_=[mm,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],kr="io.modelcontextprotocol/related-task",qu="2.0",Ne=Mu(e=>e!==null&&(typeof e=="object"||typeof e=="function")),e$=pe([y(),ce().int()]),t$=y(),MD=Ee({ttl:pe([ce(),no()]).optional(),pollInterval:ce().optional()}),q0=O({ttl:ce().optional()}),F0=O({taskId:y()}),gm=Ee({progressToken:e$.optional(),[kr]:F0.optional()}),dt=O({_meta:gm.optional()}),Vi=dt.extend({task:q0.optional()}),r$=e=>Vi.safeParse(e).success,Ce=O({method:y(),params:dt.loose().optional()}),ht=O({_meta:gm.optional()}),vt=O({method:y(),params:ht.loose().optional()}),Re=Ee({_meta:gm.optional()}),Fu=pe([y(),ce().int()]),n$=O({jsonrpc:Z(qu),id:Fu,...Ce.shape}).strict(),hm=e=>n$.safeParse(e).success,o$=O({jsonrpc:Z(qu),...vt.shape}).strict(),i$=e=>o$.safeParse(e).success,vm=O({jsonrpc:Z(qu),id:Fu,result:Re}).strict(),Ji=e=>vm.safeParse(e).success;var ne;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(ne||(ne={}));var ym=O({jsonrpc:Z(qu),id:Fu.optional(),error:O({code:ce().int(),message:y(),data:ge().optional()})}).strict();var a$=e=>ym.safeParse(e).success;var s$=pe([n$,o$,vm,ym]),LD=pe([vm,ym]),Vu=Re.strict(),V0=ht.extend({requestId:Fu.optional(),reason:y().optional()}),Ju=vt.extend({method:Z("notifications/cancelled"),params:V0}),J0=O({src:y(),mimeType:y().optional(),sizes:X(y()).optional(),theme:Oe(["light","dark"]).optional()}),Gi=O({icons:X(J0).optional()}),io=O({name:y(),title:y().optional()}),c$=io.extend({...io.shape,...Gi.shape,version:y(),websiteUrl:y().optional(),description:y().optional()}),G0=oo(O({applyDefaults:we().optional()}),ve(y(),ge())),K0=Fi(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,oo(O({form:G0.optional(),url:Ne.optional()}),ve(y(),ge()).optional())),B0=Ee({list:Ne.optional(),cancel:Ne.optional(),requests:Ee({sampling:Ee({createMessage:Ne.optional()}).optional(),elicitation:Ee({create:Ne.optional()}).optional()}).optional()}),H0=Ee({list:Ne.optional(),cancel:Ne.optional(),requests:Ee({tools:Ee({call:Ne.optional()}).optional()}).optional()}),W0=O({experimental:ve(y(),Ne).optional(),sampling:O({context:Ne.optional(),tools:Ne.optional()}).optional(),elicitation:K0.optional(),roots:O({listChanged:we().optional()}).optional(),tasks:B0.optional()}),Y0=dt.extend({protocolVersion:y(),capabilities:W0,clientInfo:c$}),_m=Ce.extend({method:Z("initialize"),params:Y0});var X0=O({experimental:ve(y(),Ne).optional(),logging:Ne.optional(),completions:Ne.optional(),prompts:O({listChanged:we().optional()}).optional(),resources:O({subscribe:we().optional(),listChanged:we().optional()}).optional(),tools:O({listChanged:we().optional()}).optional(),tasks:H0.optional()}),Q0=Re.extend({protocolVersion:y(),capabilities:X0,serverInfo:c$,instructions:y().optional()}),$m=vt.extend({method:Z("notifications/initialized"),params:ht.optional()});var Gu=Ce.extend({method:Z("ping"),params:dt.optional()}),ez=O({progress:ce(),total:_e(ce()),message:_e(y())}),tz=O({...ht.shape,...ez.shape,progressToken:e$}),Ku=vt.extend({method:Z("notifications/progress"),params:tz}),rz=dt.extend({cursor:t$.optional()}),Ki=Ce.extend({params:rz.optional()}),Bi=Re.extend({nextCursor:t$.optional()}),nz=Oe(["working","input_required","completed","failed","cancelled"]),Hi=O({taskId:y(),status:nz,ttl:pe([ce(),no()]),createdAt:y(),lastUpdatedAt:y(),pollInterval:_e(ce()),statusMessage:_e(y())}),ao=Re.extend({task:Hi}),oz=ht.merge(Hi),Wi=vt.extend({method:Z("notifications/tasks/status"),params:oz}),Bu=Ce.extend({method:Z("tasks/get"),params:dt.extend({taskId:y()})}),Hu=Re.merge(Hi),Wu=Ce.extend({method:Z("tasks/result"),params:dt.extend({taskId:y()})}),qD=Re.loose(),Yu=Ki.extend({method:Z("tasks/list")}),Xu=Bi.extend({tasks:X(Hi)}),Qu=Ce.extend({method:Z("tasks/cancel"),params:dt.extend({taskId:y()})}),u$=Re.merge(Hi),l$=O({uri:y(),mimeType:_e(y()),_meta:ve(y(),ge()).optional()}),d$=l$.extend({text:y()}),bm=y().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),p$=l$.extend({blob:bm}),Yi=Oe(["user","assistant"]),so=O({audience:X(Yi).optional(),priority:ce().min(0).max(1).optional(),lastModified:xr.datetime({offset:!0}).optional()}),f$=O({...io.shape,...Gi.shape,uri:y(),description:_e(y()),mimeType:_e(y()),annotations:so.optional(),_meta:_e(Ee({}))}),iz=O({...io.shape,...Gi.shape,uriTemplate:y(),description:_e(y()),mimeType:_e(y()),annotations:so.optional(),_meta:_e(Ee({}))}),az=Ki.extend({method:Z("resources/list")}),sz=Bi.extend({resources:X(f$)}),cz=Ki.extend({method:Z("resources/templates/list")}),uz=Bi.extend({resourceTemplates:X(iz)}),xm=dt.extend({uri:y()}),lz=xm,dz=Ce.extend({method:Z("resources/read"),params:lz}),pz=Re.extend({contents:X(pe([d$,p$]))}),fz=vt.extend({method:Z("notifications/resources/list_changed"),params:ht.optional()}),mz=xm,gz=Ce.extend({method:Z("resources/subscribe"),params:mz}),hz=xm,vz=Ce.extend({method:Z("resources/unsubscribe"),params:hz}),yz=ht.extend({uri:y()}),_z=vt.extend({method:Z("notifications/resources/updated"),params:yz}),$z=O({name:y(),description:_e(y()),required:_e(we())}),bz=O({...io.shape,...Gi.shape,description:_e(y()),arguments:_e(X($z)),_meta:_e(Ee({}))}),km=Ki.extend({method:Z("prompts/list")}),xz=Bi.extend({prompts:X(bz)}),kz=dt.extend({name:y(),arguments:ve(y(),y()).optional()}),wm=Ce.extend({method:Z("prompts/get"),params:kz}),Sm=O({type:Z("text"),text:y(),annotations:so.optional(),_meta:ve(y(),ge()).optional()}),zm=O({type:Z("image"),data:bm,mimeType:y(),annotations:so.optional(),_meta:ve(y(),ge()).optional()}),Im=O({type:Z("audio"),data:bm,mimeType:y(),annotations:so.optional(),_meta:ve(y(),ge()).optional()}),wz=O({type:Z("tool_use"),name:y(),id:y(),input:ve(y(),ge()),_meta:ve(y(),ge()).optional()}),Sz=O({type:Z("resource"),resource:pe([d$,p$]),annotations:so.optional(),_meta:ve(y(),ge()).optional()}),zz=f$.extend({type:Z("resource_link")}),Pm=pe([Sm,zm,Im,zz,Sz]),Iz=O({role:Yi,content:Pm}),Pz=Re.extend({description:y().optional(),messages:X(Iz)}),Tz=vt.extend({method:Z("notifications/prompts/list_changed"),params:ht.optional()}),jz=O({title:y().optional(),readOnlyHint:we().optional(),destructiveHint:we().optional(),idempotentHint:we().optional(),openWorldHint:we().optional()}),Ez=O({taskSupport:Oe(["required","optional","forbidden"]).optional()}),m$=O({...io.shape,...Gi.shape,description:y().optional(),inputSchema:O({type:Z("object"),properties:ve(y(),Ne).optional(),required:X(y()).optional()}).catchall(ge()),outputSchema:O({type:Z("object"),properties:ve(y(),Ne).optional(),required:X(y()).optional()}).catchall(ge()).optional(),annotations:jz.optional(),execution:Ez.optional(),_meta:ve(y(),ge()).optional()}),Tm=Ki.extend({method:Z("tools/list")}),Oz=Bi.extend({tools:X(m$)}),el=Re.extend({content:X(Pm).default([]),structuredContent:ve(y(),ge()).optional(),isError:we().optional()}),FD=el.or(Re.extend({toolResult:ge()})),Nz=Vi.extend({name:y(),arguments:ve(y(),ge()).optional()}),Xi=Ce.extend({method:Z("tools/call"),params:Nz}),Cz=vt.extend({method:Z("notifications/tools/list_changed"),params:ht.optional()}),VD=O({autoRefresh:we().default(!0),debounceMs:ce().int().nonnegative().default(300)}),Qi=Oe(["debug","info","notice","warning","error","critical","alert","emergency"]),Rz=dt.extend({level:Qi}),jm=Ce.extend({method:Z("logging/setLevel"),params:Rz}),Dz=ht.extend({level:Qi,logger:y().optional(),data:ge()}),Zz=vt.extend({method:Z("notifications/message"),params:Dz}),Az=O({name:y().optional()}),Uz=O({hints:X(Az).optional(),costPriority:ce().min(0).max(1).optional(),speedPriority:ce().min(0).max(1).optional(),intelligencePriority:ce().min(0).max(1).optional()}),Mz=O({mode:Oe(["auto","required","none"]).optional()}),Lz=O({type:Z("tool_result"),toolUseId:y().describe("The unique identifier for the corresponding tool call."),content:X(Pm).default([]),structuredContent:O({}).loose().optional(),isError:we().optional(),_meta:ve(y(),ge()).optional()}),qz=Mi("type",[Sm,zm,Im]),Lu=Mi("type",[Sm,zm,Im,wz,Lz]),Fz=O({role:Yi,content:pe([Lu,X(Lu)]),_meta:ve(y(),ge()).optional()}),Vz=Vi.extend({messages:X(Fz),modelPreferences:Uz.optional(),systemPrompt:y().optional(),includeContext:Oe(["none","thisServer","allServers"]).optional(),temperature:ce().optional(),maxTokens:ce().int(),stopSequences:X(y()).optional(),metadata:Ne.optional(),tools:X(m$).optional(),toolChoice:Mz.optional()}),Jz=Ce.extend({method:Z("sampling/createMessage"),params:Vz}),ea=Re.extend({model:y(),stopReason:_e(Oe(["endTurn","stopSequence","maxTokens"]).or(y())),role:Yi,content:qz}),Em=Re.extend({model:y(),stopReason:_e(Oe(["endTurn","stopSequence","maxTokens","toolUse"]).or(y())),role:Yi,content:pe([Lu,X(Lu)])}),Gz=O({type:Z("boolean"),title:y().optional(),description:y().optional(),default:we().optional()}),Kz=O({type:Z("string"),title:y().optional(),description:y().optional(),minLength:ce().optional(),maxLength:ce().optional(),format:Oe(["email","uri","date","date-time"]).optional(),default:y().optional()}),Bz=O({type:Oe(["number","integer"]),title:y().optional(),description:y().optional(),minimum:ce().optional(),maximum:ce().optional(),default:ce().optional()}),Hz=O({type:Z("string"),title:y().optional(),description:y().optional(),enum:X(y()),default:y().optional()}),Wz=O({type:Z("string"),title:y().optional(),description:y().optional(),oneOf:X(O({const:y(),title:y()})),default:y().optional()}),Yz=O({type:Z("string"),title:y().optional(),description:y().optional(),enum:X(y()),enumNames:X(y()).optional(),default:y().optional()}),Xz=pe([Hz,Wz]),Qz=O({type:Z("array"),title:y().optional(),description:y().optional(),minItems:ce().optional(),maxItems:ce().optional(),items:O({type:Z("string"),enum:X(y())}),default:X(y()).optional()}),eI=O({type:Z("array"),title:y().optional(),description:y().optional(),minItems:ce().optional(),maxItems:ce().optional(),items:O({anyOf:X(O({const:y(),title:y()}))}),default:X(y()).optional()}),tI=pe([Qz,eI]),rI=pe([Yz,Xz,tI]),nI=pe([rI,Gz,Kz,Bz]),oI=Vi.extend({mode:Z("form").optional(),message:y(),requestedSchema:O({type:Z("object"),properties:ve(y(),nI),required:X(y()).optional()})}),iI=Vi.extend({mode:Z("url"),message:y(),elicitationId:y(),url:y().url()}),aI=pe([oI,iI]),sI=Ce.extend({method:Z("elicitation/create"),params:aI}),cI=ht.extend({elicitationId:y()}),uI=vt.extend({method:Z("notifications/elicitation/complete"),params:cI}),co=Re.extend({action:Oe(["accept","decline","cancel"]),content:Fi(e=>e===null?void 0:e,ve(y(),pe([y(),ce(),we(),X(y())])).optional())}),lI=O({type:Z("ref/resource"),uri:y()});var dI=O({type:Z("ref/prompt"),name:y()}),pI=dt.extend({ref:pe([dI,lI]),argument:O({name:y(),value:y()}),context:O({arguments:ve(y(),y()).optional()}).optional()}),fI=Ce.extend({method:Z("completion/complete"),params:pI});var mI=Re.extend({completion:Ee({values:X(y()).max(100),total:_e(ce().int()),hasMore:_e(we())})}),gI=O({uri:y().startsWith("file://"),name:y().optional(),_meta:ve(y(),ge()).optional()}),hI=Ce.extend({method:Z("roots/list"),params:dt.optional()}),Om=Re.extend({roots:X(gI)}),vI=vt.extend({method:Z("notifications/roots/list_changed"),params:ht.optional()}),JD=pe([Gu,_m,fI,jm,wm,km,az,cz,dz,gz,vz,Xi,Tm,Bu,Wu,Yu,Qu]),GD=pe([Ju,Ku,$m,vI,Wi]),KD=pe([Vu,ea,Em,co,Om,Hu,Xu,ao]),BD=pe([Gu,Jz,sI,hI,Bu,Wu,Yu,Qu]),HD=pe([Ju,Ku,Zz,_z,fz,Cz,Tz,Wi,uI]),WD=pe([Vu,Q0,mI,Pz,xz,sz,uz,pz,el,Oz,Hu,Xu,ao]),K=class e extends Error{constructor(t,n,o){super(`MCP error ${t}: ${n}`),this.code=t,this.data=o,this.name="McpError"}static fromError(t,n,o){if(t===ne.UrlElicitationRequired&&o){let r=o;if(r.elicitations)return new fm(r.elicitations,n)}return new e(t,n,o)}},fm=class extends K{constructor(t,n=`URL elicitation${t.length>1?"s":""} required`){super(ne.UrlElicitationRequired,n,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}};function wr(e){return e==="completed"||e==="failed"||e==="cancelled"}var jZ=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Nm(e){let n=uu(e)?.method;if(!n)throw new Error("Schema is missing a method literal");let o=Ly(n);if(typeof o!="string")throw new Error("Schema method literal must be a string");return o}function Cm(e,t){let n=br(e,t);if(!n.success)throw n.error;return n.data}var kI=6e4,tl=class{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(Ju,n=>{this._oncancel(n)}),this.setNotificationHandler(Ku,n=>{this._onprogress(n)}),this.setRequestHandler(Gu,n=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(Bu,async(n,o)=>{let r=await this._taskStore.getTask(n.params.taskId,o.sessionId);if(!r)throw new K(ne.InvalidParams,"Failed to retrieve task: Task not found");return{...r}}),this.setRequestHandler(Wu,async(n,o)=>{let r=async()=>{let i=n.params.taskId;if(this._taskMessageQueue){let s;for(;s=await this._taskMessageQueue.dequeue(i,o.sessionId);){if(s.type==="response"||s.type==="error"){let c=s.message,u=c.id,l=this._requestResolvers.get(u);if(l)if(this._requestResolvers.delete(u),s.type==="response")l(c);else{let d=c,p=new K(d.error.code,d.error.message,d.error.data);l(p)}else{let d=s.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${u}`))}continue}await this._transport?.send(s.message,{relatedRequestId:o.requestId})}}let a=await this._taskStore.getTask(i,o.sessionId);if(!a)throw new K(ne.InvalidParams,`Task not found: ${i}`);if(!wr(a.status))return await this._waitForTaskUpdate(i,o.signal),await r();if(wr(a.status)){let s=await this._taskStore.getTaskResult(i,o.sessionId);return this._clearTaskQueue(i),{...s,_meta:{...s._meta,[kr]:{taskId:i}}}}return await r()};return await r()}),this.setRequestHandler(Yu,async(n,o)=>{try{let{tasks:r,nextCursor:i}=await this._taskStore.listTasks(n.params?.cursor,o.sessionId);return{tasks:r,nextCursor:i,_meta:{}}}catch(r){throw new K(ne.InvalidParams,`Failed to list tasks: ${r instanceof Error?r.message:String(r)}`)}}),this.setRequestHandler(Qu,async(n,o)=>{try{let r=await this._taskStore.getTask(n.params.taskId,o.sessionId);if(!r)throw new K(ne.InvalidParams,`Task not found: ${n.params.taskId}`);if(wr(r.status))throw new K(ne.InvalidParams,`Cannot cancel task in terminal status: ${r.status}`);await this._taskStore.updateTaskStatus(n.params.taskId,"cancelled","Client cancelled task execution.",o.sessionId),this._clearTaskQueue(n.params.taskId);let i=await this._taskStore.getTask(n.params.taskId,o.sessionId);if(!i)throw new K(ne.InvalidParams,`Task not found after cancellation: ${n.params.taskId}`);return{_meta:{},...i}}catch(r){throw r instanceof K?r:new K(ne.InvalidRequest,`Failed to cancel task: ${r instanceof Error?r.message:String(r)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,n,o,r,i=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(r,n),startTime:Date.now(),timeout:n,maxTotalTimeout:o,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(t){let n=this._timeoutInfo.get(t);if(!n)return!1;let o=Date.now()-n.startTime;if(n.maxTotalTimeout&&o>=n.maxTotalTimeout)throw this._timeoutInfo.delete(t),K.fromError(ne.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:n.maxTotalTimeout,totalElapsed:o});return clearTimeout(n.timeoutId),n.timeoutId=setTimeout(n.onTimeout,n.timeout),!0}_cleanupTimeout(t){let n=this._timeoutInfo.get(t);n&&(clearTimeout(n.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;let n=this.transport?.onclose;this._transport.onclose=()=>{n?.(),this._onclose()};let o=this.transport?.onerror;this._transport.onerror=i=>{o?.(i),this._onerror(i)};let r=this._transport?.onmessage;this._transport.onmessage=(i,a)=>{r?.(i,a),Ji(i)||a$(i)?this._onresponse(i):hm(i)?this._onrequest(i,a):i$(i)?this._onnotification(i):this._onerror(new Error(`Unknown message type: ${JSON.stringify(i)}`))},await this._transport.start()}_onclose(){let t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let o of this._timeoutInfo.values())clearTimeout(o.timeoutId);this._timeoutInfo.clear();for(let o of this._requestHandlerAbortControllers.values())o.abort();this._requestHandlerAbortControllers.clear();let n=K.fromError(ne.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let o of t.values())o(n)}_onerror(t){this.onerror?.(t)}_onnotification(t){let n=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;n!==void 0&&Promise.resolve().then(()=>n(t)).catch(o=>this._onerror(new Error(`Uncaught error in notification handler: ${o}`)))}_onrequest(t,n){let o=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,r=this._transport,i=t.params?._meta?.[kr]?.taskId;if(o===void 0){let l={jsonrpc:"2.0",id:t.id,error:{code:ne.MethodNotFound,message:"Method not found"}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{type:"error",message:l,timestamp:Date.now()},r?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):r?.send(l).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(t.id,a);let s=r$(t.params)?t.params.task:void 0,c=this._taskStore?this.requestTaskStore(t,r?.sessionId):void 0,u={signal:a.signal,sessionId:r?.sessionId,_meta:t.params?._meta,sendNotification:async l=>{if(a.signal.aborted)return;let d={relatedRequestId:t.id};i&&(d.relatedTask={taskId:i}),await this.notification(l,d)},sendRequest:async(l,d,p)=>{if(a.signal.aborted)throw new K(ne.ConnectionClosed,"Request was cancelled");let f={...p,relatedRequestId:t.id};i&&!f.relatedTask&&(f.relatedTask={taskId:i});let g=f.relatedTask?.taskId??i;return g&&c&&await c.updateTaskStatus(g,"input_required"),await this.request(l,d,f)},authInfo:n?.authInfo,requestId:t.id,requestInfo:n?.requestInfo,taskId:i,taskStore:c,taskRequestedTtl:s?.ttl,closeSSEStream:n?.closeSSEStream,closeStandaloneSSEStream:n?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(t.method)}).then(()=>o(t,u)).then(async l=>{if(a.signal.aborted)return;let d={result:l,jsonrpc:"2.0",id:t.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:"response",message:d,timestamp:Date.now()},r?.sessionId):await r?.send(d)},async l=>{if(a.signal.aborted)return;let d={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(l.code)?l.code:ne.InternalError,message:l.message??"Internal error",...l.data!==void 0&&{data:l.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:"error",message:d,timestamp:Date.now()},r?.sessionId):await r?.send(d)}).catch(l=>this._onerror(new Error(`Failed to send response: ${l}`))).finally(()=>{this._requestHandlerAbortControllers.get(t.id)===a&&this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){let{progressToken:n,...o}=t.params,r=Number(n),i=this._progressHandlers.get(r);if(!i){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}let a=this._responseHandlers.get(r),s=this._timeoutInfo.get(r);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(c){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(c);return}i(o)}_onresponse(t){let n=Number(t.id),o=this._requestResolvers.get(n);if(o){if(this._requestResolvers.delete(n),Ji(t))o(t);else{let a=new K(t.error.code,t.error.message,t.error.data);o(a)}return}let r=this._responseHandlers.get(n);if(r===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(n),this._cleanupTimeout(n);let i=!1;if(Ji(t)&&t.result&&typeof t.result=="object"){let a=t.result;if(a.task&&typeof a.task=="object"){let s=a.task;typeof s.taskId=="string"&&(i=!0,this._taskProgressTokens.set(s.taskId,n))}}if(i||this._progressHandlers.delete(n),Ji(t))r(t);else{let a=K.fromError(t.error.code,t.error.message,t.error.data);r(a)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,n,o){let{task:r}=o??{};if(!r){try{yield{type:"result",result:await this.request(t,n,o)}}catch(a){yield{type:"error",error:a instanceof K?a:new K(ne.InternalError,String(a))}}return}let i;try{let a=await this.request(t,ao,o);if(a.task)i=a.task.taskId,yield{type:"taskCreated",task:a.task};else throw new K(ne.InternalError,"Task creation did not return a task");for(;;){let s=await this.getTask({taskId:i},o);if(yield{type:"taskStatus",task:s},wr(s.status)){s.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:i},n,o)}:s.status==="failed"?yield{type:"error",error:new K(ne.InternalError,`Task ${i} failed`)}:s.status==="cancelled"&&(yield{type:"error",error:new K(ne.InternalError,`Task ${i} was cancelled`)});return}if(s.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:i},n,o)};return}let c=s.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(u=>setTimeout(u,c)),o?.signal?.throwIfAborted()}}catch(a){yield{type:"error",error:a instanceof K?a:new K(ne.InternalError,String(a))}}}request(t,n,o){let{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a,task:s,relatedTask:c}=o??{};return new Promise((u,l)=>{let d=U=>{l(U)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),s&&this.assertTaskCapability(t.method)}catch(U){d(U);return}o?.signal?.throwIfAborted();let p=this._requestMessageId++,f={...t,jsonrpc:"2.0",id:p};o?.onprogress&&(this._progressHandlers.set(p,o.onprogress),f.params={...t.params,_meta:{...t.params?._meta||{},progressToken:p}}),s&&(f.params={...f.params,task:s}),c&&(f.params={...f.params,_meta:{...f.params?._meta||{},[kr]:c}});let g=U=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(U)}},{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(C=>this._onerror(new Error(`Failed to send cancellation: ${C}`)));let R=U instanceof K?U:new K(ne.RequestTimeout,String(U));l(R)};this._responseHandlers.set(p,U=>{if(!o?.signal?.aborted){if(U instanceof Error)return l(U);try{let R=br(n,U.result);R.success?u(R.data):l(R.error)}catch(R){l(R)}}}),o?.signal?.addEventListener("abort",()=>{g(o?.signal?.reason)});let h=o?.timeout??kI,b=()=>g(K.fromError(ne.RequestTimeout,"Request timed out",{timeout:h}));this._setupTimeout(p,h,o?.maxTotalTimeout,b,o?.resetTimeoutOnProgress??!1);let I=c?.taskId;if(I){let U=R=>{let C=this._responseHandlers.get(p);C?C(R):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,U),this._enqueueTaskMessage(I,{type:"request",message:f,timestamp:Date.now()}).catch(R=>{this._cleanupTimeout(p),l(R)})}else this._transport.send(f,{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(U=>{this._cleanupTimeout(p),l(U)})})}async getTask(t,n){return this.request({method:"tasks/get",params:t},Hu,n)}async getTaskResult(t,n,o){return this.request({method:"tasks/result",params:t},n,o)}async listTasks(t,n){return this.request({method:"tasks/list",params:t},Xu,n)}async cancelTask(t,n){return this.request({method:"tasks/cancel",params:t},u$,n)}async notification(t,n){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);let o=n?.relatedTask?.taskId;if(o){let s={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[kr]:n.relatedTask}}};await this._enqueueTaskMessage(o,{type:"notification",message:s,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!n?.relatedRequestId&&!n?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let s={...t,jsonrpc:"2.0"};n?.relatedTask&&(s={...s,params:{...s.params,_meta:{...s.params?._meta||{},[kr]:n.relatedTask}}}),this._transport?.send(s,n).catch(c=>this._onerror(c))});return}let a={...t,jsonrpc:"2.0"};n?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[kr]:n.relatedTask}}}),await this._transport.send(a,n)}setRequestHandler(t,n){let o=Nm(t);this.assertRequestHandlerCapability(o),this._requestHandlers.set(o,(r,i)=>{let a=Cm(t,r);return Promise.resolve(n(a,i))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,n){let o=Nm(t);this._notificationHandlers.set(o,r=>{let i=Cm(t,r);return Promise.resolve(n(i))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){let n=this._taskProgressTokens.get(t);n!==void 0&&(this._progressHandlers.delete(n),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,n,o){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,n,o,r)}async _clearTaskQueue(t,n){if(this._taskMessageQueue){let o=await this._taskMessageQueue.dequeueAll(t,n);for(let r of o)if(r.type==="request"&&hm(r.message)){let i=r.message.id,a=this._requestResolvers.get(i);a?(a(new K(ne.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(i)):this._onerror(new Error(`Resolver missing for request ${i} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,n){let o=this._options?.defaultTaskPollInterval??1e3;try{let r=await this._taskStore?.getTask(t);r?.pollInterval&&(o=r.pollInterval)}catch{}return new Promise((r,i)=>{if(n.aborted){i(new K(ne.InvalidRequest,"Request cancelled"));return}let a=setTimeout(r,o);n.addEventListener("abort",()=>{clearTimeout(a),i(new K(ne.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,n){let o=this._taskStore;if(!o)throw new Error("No task store configured");return{createTask:async r=>{if(!t)throw new Error("No request provided");return await o.createTask(r,t.id,{method:t.method,params:t.params},n)},getTask:async r=>{let i=await o.getTask(r,n);if(!i)throw new K(ne.InvalidParams,"Failed to retrieve task: Task not found");return i},storeTaskResult:async(r,i,a)=>{await o.storeTaskResult(r,i,a,n);let s=await o.getTask(r,n);if(s){let c=Wi.parse({method:"notifications/tasks/status",params:s});await this.notification(c),wr(s.status)&&this._cleanupTaskProgressHandler(r)}},getTaskResult:r=>o.getTaskResult(r,n),updateTaskStatus:async(r,i,a)=>{let s=await o.getTask(r,n);if(!s)throw new K(ne.InvalidParams,`Task "${r}" not found - it may have been cleaned up`);if(wr(s.status))throw new K(ne.InvalidParams,`Cannot update task "${r}" from terminal status "${s.status}" to "${i}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await o.updateTaskStatus(r,i,a,n);let c=await o.getTask(r,n);if(c){let u=Wi.parse({method:"notifications/tasks/status",params:c});await this.notification(u),wr(c.status)&&this._cleanupTaskProgressHandler(r)}},listTasks:r=>o.listTasks(r,n)}}};function g$(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function h$(e,t){let n={...e};for(let o in t){let r=o,i=t[r];if(i===void 0)continue;let a=n[r];g$(a)&&g$(i)?n[r]={...a,...i}:n[r]=i}return n}var rk=ud(_h(),1),nk=ud(tk(),1);function mN(){let e=new rk.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,nk.default)(e),e}var Zl=class{constructor(t){this._ajv=t??mN()}getValidator(t){let n="$id"in t&&typeof t.$id=="string"?this._ajv.getSchema(t.$id)??this._ajv.compile(t):this._ajv.compile(t);return o=>n(o)?{valid:!0,data:o,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(n.errors)}}};var Al=class{constructor(t){this._server=t}requestStream(t,n,o){return this._server.requestStream(t,n,o)}createMessageStream(t,n){let o=this._server.getClientCapabilities();if((t.tools||t.toolChoice)&&!o?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let r=t.messages[t.messages.length-1],i=Array.isArray(r.content)?r.content:[r.content],a=i.some(l=>l.type==="tool_result"),s=t.messages.length>1?t.messages[t.messages.length-2]:void 0,c=s?Array.isArray(s.content)?s.content:[s.content]:[],u=c.some(l=>l.type==="tool_use");if(a){if(i.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!u)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(u){let l=new Set(c.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(i.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(l.size!==d.size||![...l].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:t},ea,n)}elicitInputStream(t,n){let o=this._server.getClientCapabilities(),r=t.mode??"form";switch(r){case"url":{if(!o?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!o?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let i=r==="form"&&t.mode===void 0?{...t,mode:"form"}:t;return this.requestStream({method:"elicitation/create",params:i},co,n)}async getTask(t,n){return this._server.getTask({taskId:t},n)}async getTaskResult(t,n,o){return this._server.getTaskResult({taskId:t},n,o)}async listTasks(t,n){return this._server.listTasks(t?{cursor:t}:void 0,n)}async cancelTask(t,n){return this._server.cancelTask({taskId:t},n)}};function ok(e,t,n){if(!e)throw new Error(`${n} does not support task creation (required for ${t})`);switch(t){case"tools/call":if(!e.tools?.call)throw new Error(`${n} does not support task creation for tools/call (required for ${t})`);break;default:break}}function ik(e,t,n){if(!e)throw new Error(`${n} does not support task creation (required for ${t})`);switch(t){case"sampling/createMessage":if(!e.sampling?.createMessage)throw new Error(`${n} does not support task creation for sampling/createMessage (required for ${t})`);break;case"elicitation/create":if(!e.elicitation?.create)throw new Error(`${n} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var Ul=class extends tl{constructor(t,n){super(n),this._serverInfo=t,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Qi.options.map((o,r)=>[o,r])),this.isMessageIgnored=(o,r)=>{let i=this._loggingLevels.get(r);return i?this.LOG_LEVEL_SEVERITY.get(o)<this.LOG_LEVEL_SEVERITY.get(i):!1},this._capabilities=n?.capabilities??{},this._instructions=n?.instructions,this._jsonSchemaValidator=n?.jsonSchemaValidator??new Zl,this.setRequestHandler(_m,o=>this._oninitialize(o)),this.setNotificationHandler($m,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(jm,async(o,r)=>{let i=r.sessionId||r.requestInfo?.headers["mcp-session-id"]||void 0,{level:a}=o.params,s=Qi.safeParse(a);return s.success&&this._loggingLevels.set(i,s.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Al(this)}),this._experimental}registerCapabilities(t){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=h$(this._capabilities,t)}setRequestHandler(t,n){let r=uu(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let i;if(Wn(r)){let s=r;i=s._zod?.def?.value??s.value}else{let s=r;i=s._def?.value??s.value}if(typeof i!="string")throw new Error("Schema method literal must be a string");if(i==="tools/call"){let s=async(c,u)=>{let l=br(Xi,c);if(!l.success){let g=l.error instanceof Error?l.error.message:String(l.error);throw new K(ne.InvalidParams,`Invalid tools/call request: ${g}`)}let{params:d}=l.data,p=await Promise.resolve(n(c,u));if(d.task){let g=br(ao,p);if(!g.success){let h=g.error instanceof Error?g.error.message:String(g.error);throw new K(ne.InvalidParams,`Invalid task creation result: ${h}`)}return g.data}let f=br(el,p);if(!f.success){let g=f.error instanceof Error?f.error.message:String(f.error);throw new K(ne.InvalidParams,`Invalid tools/call result: ${g}`)}return f.data};return super.setRequestHandler(t,s)}return super.setRequestHandler(t,n)}assertCapabilityForMethod(t){switch(t){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${t})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${t})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${t})`);break;case"ping":break}}assertNotificationCapability(t){switch(t){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${t})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${t})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${t})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${t})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(t){if(this._capabilities)switch(t){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${t})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${t})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${t})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${t})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${t})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${t})`);break;case"ping":case"initialize":break}}assertTaskCapability(t){ik(this._clientCapabilities?.tasks?.requests,t,"Client")}assertTaskHandlerCapability(t){this._capabilities&&ok(this._capabilities.tasks?.requests,t,"Server")}async _oninitialize(t){let n=t.params.protocolVersion;return this._clientCapabilities=t.params.capabilities,this._clientVersion=t.params.clientInfo,{protocolVersion:Q_.includes(n)?n:mm,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},Vu)}async createMessage(t,n){if((t.tools||t.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(t.messages.length>0){let o=t.messages[t.messages.length-1],r=Array.isArray(o.content)?o.content:[o.content],i=r.some(u=>u.type==="tool_result"),a=t.messages.length>1?t.messages[t.messages.length-2]:void 0,s=a?Array.isArray(a.content)?a.content:[a.content]:[],c=s.some(u=>u.type==="tool_use");if(i){if(r.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let u=new Set(s.filter(d=>d.type==="tool_use").map(d=>d.id)),l=new Set(r.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(u.size!==l.size||![...u].every(d=>l.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return t.tools?this.request({method:"sampling/createMessage",params:t},Em,n):this.request({method:"sampling/createMessage",params:t},ea,n)}async elicitInput(t,n){switch(t.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let r=t;return this.request({method:"elicitation/create",params:r},co,n)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let r=t.mode==="form"?t:{...t,mode:"form"},i=await this.request({method:"elicitation/create",params:r},co,n);if(i.action==="accept"&&i.content&&r.requestedSchema)try{let s=this._jsonSchemaValidator.getValidator(r.requestedSchema)(i.content);if(!s.valid)throw new K(ne.InvalidParams,`Elicitation response content does not match requested schema: ${s.errorMessage}`)}catch(a){throw a instanceof K?a:new K(ne.InternalError,`Error validating elicitation response: ${a instanceof Error?a.message:String(a)}`)}return i}}}createElicitationCompletionNotifier(t,n){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:t}},n)}async listRoots(t,n){return this.request({method:"roots/list",params:t},Om,n)}async sendLoggingMessage(t,n){if(this._capabilities.logging&&!this.isMessageIgnored(t.level,n))return this.notification({method:"notifications/message",params:t})}async sendResourceUpdated(t){return this.notification({method:"notifications/resources/updated",params:t})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}};var Ih=ud(require("node:process"),1);var Ml=class{append(t){this._buffer=this._buffer?Buffer.concat([this._buffer,t]):t}readMessage(){if(!this._buffer)return null;let t=this._buffer.indexOf(`
|
|
49
49
|
`);if(t===-1)return null;let n=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),gN(n)}clear(){this._buffer=void 0}};function gN(e){return s$.parse(JSON.parse(e))}function ak(e){return JSON.stringify(e)+`
|
|
50
50
|
`}var Ll=class{constructor(t=Ih.default.stdin,n=Ih.default.stdout){this._stdin=t,this._stdout=n,this._readBuffer=new Ml,this._started=!1,this._ondata=o=>{this._readBuffer.append(o),this.processReadBuffer()},this._onerror=o=>{this.onerror?.(o)}}async start(){if(this._started)throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");this._started=!0,this._stdin.on("data",this._ondata),this._stdin.on("error",this._onerror)}processReadBuffer(){for(;;)try{let t=this._readBuffer.readMessage();if(t===null)break;this.onmessage?.(t)}catch(t){this.onerror?.(t)}}async close(){this._stdin.off("data",this._ondata),this._stdin.off("error",this._onerror),this._stdin.listenerCount("data")===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(t){return new Promise(n=>{let o=ak(t);this._stdout.write(o)?n():this._stdout.once("drain",n)})}};var Ea=process.env.GODD_BRAND_PREFIX??"godd",W={displayName:"GoDD MCP \u03B1",cli:Ea,mcpKey:Ea,configFile:`config.${Ea}`,licensePrefix:Ea.toUpperCase(),toolPrefix:`${Ea}_`};var ql=require("node:fs"),ck=require("node:path");var Oa=["en","ja","ru"];function Na(e){return Oa.includes(e)?e:null}var hN=Q.object({vcs:Q.string().optional(),browser_automation:Q.string().optional(),e2e_testing:Q.string().optional(),unit_testing:Q.string().optional(),linting:Q.string().optional(),formatting:Q.string().optional(),type_checking:Q.string().optional(),coverage:Q.string().optional(),documentation:Q.string().optional(),secret_scanning:Q.string().optional(),security_analysis:Q.string().optional(),unused_code:Q.string().optional(),dependency_analysis:Q.string().optional()}),Ph=Q.enum(Oa),sk=Q.object({display_language:Ph.default("en"),main_language:Ph.default("en"),sub_languages:Q.array(Ph).default([]),programming_languages:Q.array(Q.string()).default([]),frontend:Q.array(Q.string()).default([]),backend:Q.array(Q.string()).default([]),database:Q.array(Q.string()).default([]),orm:Q.array(Q.string()).default([]),infra:Q.array(Q.string()).default([]),game:Q.array(Q.string()).default([]),mobile:Q.array(Q.string()).default([]),other:Q.array(Q.string()).default([]),tools:hN.default({})});function Fl(e=process.cwd()){let t=(0,ck.resolve)(e,W.configFile);if(!(0,ql.existsSync)(t))return null;try{let n=(0,ql.readFileSync)(t,"utf-8"),o=_N(n);return vN(o),yN(o),sk.parse(o)}catch(n){return console.error(`[${W.displayName}] Failed to parse ${W.configFile}:`,n instanceof Error?n.message:n),null}}function vN(e){if("language"in e&&!("display_language"in e)){let t=e.language;e.display_language=t,e.main_language=t,delete e.language}}function yN(e){if("e2e_tool"in e){let t=typeof e.tools=="object"&&!Array.isArray(e.tools)?e.tools:{};t.e2e_testing=e.e2e_tool,e.tools=t,delete e.e2e_tool}Array.isArray(e.tools)&&e.tools.length===0&&(e.tools={})}function _N(e){let t={},n="",o=e.split(`
|
|
51
|
-
`);for(let r of o){let i=r.trim();if(!i||i.startsWith("#"))continue;if(r.length-r.trimStart().length>=2&&n&&i.includes(":")&&!i.startsWith("- ")){let s=i.indexOf(":"),c=i.slice(0,s).trim(),u=i.slice(s+1).trim();if(c&&u){let l=t[n];l&&typeof l=="object"&&!Array.isArray(l)?l[c]=u:t[n]={[c]:u}}continue}if(i.startsWith("- ")){if(n){let s=t[n];Array.isArray(s)&&s.push(i.slice(2).trim())}}else if(i.includes(":")){let s=i.indexOf(":"),c=i.slice(0,s).trim(),u=i.slice(s+1).trim();u===""||u==="[]"?(t[c]=[],n=c):u.startsWith("[")&&u.endsWith("]")?(t[c]=u.slice(1,-1).split(",").map(l=>l.trim()).filter(Boolean),n=c):(t[c]=u,n=c)}}return t}var Vl=new Set(["typescript","javascript","python","java","csharp","cpp","c","go","rust","php","swift","kotlin","ruby","dart","r","scala","objective-c","sql","html-css","bash","elixir","haskell","perl","lua","julia","clojure","fsharp","groovy","visual-basic","powershell","erlang","ocaml","zig","nim","crystal","solidity","fortran","cobol","assembly","d","ada","v","pascal","prolog","gdscript","gdshader"]),Jl=new Set(["react","nextjs","vue","nuxt","svelte","angular","flutter","blazor","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"]),Gl=new Set(["express","nestjs","hono","fastify","fastapi","django","flask","gin","echo","fiber","chi","spring-boot","quarkus","micronaut","ktor","laravel","symfony","slim","codeigniter","cakephp","rails","sinatra","hanami","actix-web","axum","rocket","phoenix","aspnet","vapor","play","akka-http","servant","yesod","mojolicious","dancer","ring","pedestal","dart-frog"]),Kl=new Set(["postgresql","mysql","mongodb","redis","sqlite","dynamodb","cassandra","neo4j","elasticsearch","supabase","firebase","cockroachdb"]),Bl=new Set(["prisma","drizzle","typeorm","sequelize","sqlalchemy","tortoise-orm","eloquent","doctrine","activerecord","hibernate","mybatis","entity-framework","gorm","ent","diesel","sea-orm","ecto","exposed","peewee","django-orm"]),Hl=new Set(["docker","terraform","vercel","aws","gcp","github-actions","azure","cloudflare","fly-io","render","heroku","kubernetes","ansible","pulumi","netlify","railway"]),Wl=new Set(["react-native","expo","flutter","swiftui","uikit","jetpack-compose","kotlin-multiplatform","ionic","capacitor","maui","xamarin","tauri-mobile","nativescript"]),Yl=new Set(["godot","phaser","unity","unreal","bevy","love2d","monogame","pygame","libgdx","cocos2d","defold","renpy"]),$N={typescript:{frontend:["react","nextjs","vue","nuxt","svelte","angular","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"],backend:["express","nestjs","hono","fastify"],orm:["prisma","drizzle","typeorm","sequelize"],mobile:["react-native","expo","ionic","capacitor","nativescript"]},javascript:{frontend:["react","nextjs","vue","nuxt","svelte","angular","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"],backend:["express","nestjs","hono","fastify"],orm:["prisma","drizzle","typeorm","sequelize"],mobile:["react-native","expo","ionic","capacitor","nativescript"]},python:{backend:["fastapi","django","flask"],orm:["sqlalchemy","tortoise-orm","peewee","django-orm"],game:["pygame","renpy"]},go:{backend:["gin","echo","fiber","chi"],orm:["gorm","ent"]},rust:{frontend:["tauri"],backend:["actix-web","axum","rocket"],orm:["diesel","sea-orm"],game:["bevy"]},java:{backend:["spring-boot","quarkus","micronaut"],orm:["hibernate","mybatis"],mobile:["jetpack-compose"],game:["libgdx"]},kotlin:{backend:["spring-boot","ktor"],orm:["exposed","hibernate"],mobile:["jetpack-compose","kotlin-multiplatform"]},php:{backend:["laravel","symfony","slim","codeigniter","cakephp"],orm:["eloquent","doctrine"]},ruby:{backend:["rails","sinatra","hanami"],orm:["activerecord"]},swift:{backend:["vapor"],mobile:["swiftui","uikit"]},dart:{frontend:["flutter"],backend:["dart-frog"],mobile:["flutter"]},csharp:{backend:["aspnet"],orm:["entity-framework"],mobile:["maui","xamarin"],game:["unity","monogame"]},elixir:{backend:["phoenix"],orm:["ecto"]},scala:{backend:["play","akka-http"]},haskell:{backend:["servant","yesod"]},perl:{backend:["mojolicious","dancer"]},clojure:{backend:["ring","pedestal"]},lua:{game:["love2d","defold"]},gdscript:{game:["godot"]},cpp:{game:["unreal","cocos2d","godot"]}};function Io(e,t,n){if(n.length===0)return e;let o=new Set;for(let r of n){let i=$N[r];if(!i)continue;let a=i[t];if(a)for(let s of a)o.add(s)}return o.size===0?e:e.filter(r=>o.has(r))}function bN(e,t){let n=e.length,o=t.length,r=Array.from({length:n+1},()=>Array(o+1).fill(0));for(let i=0;i<=n;i++)r[i][0]=i;for(let i=0;i<=o;i++)r[0][i]=i;for(let i=1;i<=n;i++)for(let a=1;a<=o;a++){let s=e[i-1]===t[a-1]?0:1;r[i][a]=Math.min(r[i-1][a]+1,r[i][a-1]+1,r[i-1][a-1]+s)}return r[n][o]}function xN(e,t,n=2){let o=null,r=n+1;for(let i of t){if(Math.abs(i.length-e.length)>n)continue;let a=bN(e.toLowerCase(),i.toLowerCase());a<r&&(r=a,o=i)}return o}var kN=[{field:"programming_languages",known:Vl},{field:"frontend",known:Jl},{field:"backend",known:Gl},{field:"database",known:Kl},{field:"orm",known:Bl},{field:"infra",known:Hl},{field:"game",known:Yl},{field:"mobile",known:Wl}];function Xl(e){let t=[];for(let{field:n,known:o}of kN){let r=e[n];if(Array.isArray(r))for(let i of r)typeof i=="string"&&(o.has(i)||t.push({field:n,value:i,suggestion:xN(i,o)}))}return t}var uk=[{field:"display_language",type:"string",descriptions:{en:"GoDD display language (en / ja / ru)",ja:"GoDD \u306E\u8868\u793A\u8A00\u8A9E\uFF08en / ja / ru\uFF09",ru:"\u042F\u0437\u044B\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F GoDD (en / ja / ru)"},values:["en","ja","ru"]},{field:"main_language",type:"string",descriptions:{en:"Project main language (en / ja / ru)",ja:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30A4\u30F3\u8A00\u8A9E\uFF08en / ja / ru\uFF09",ru:"\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u044F\u0437\u044B\u043A \u043F\u0440\u043E\u0435\u043A\u0442\u0430 (en / ja / ru)"},values:["en","ja","ru"]},{field:"sub_languages",type:"string[]",descriptions:{en:"Team sub-languages",ja:"\u30C1\u30FC\u30E0\u306E\u30B5\u30D6\u8A00\u8A9E",ru:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B"},values:["en","ja","ru"]},{field:"programming_languages",type:"string[]",descriptions:{en:"Programming languages",ja:"\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E",ru:"\u042F\u0437\u044B\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F"},values:[...Vl]},{field:"frontend",type:"string[]",descriptions:{en:"Frontend frameworks",ja:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Jl]},{field:"backend",type:"string[]",descriptions:{en:"Backend frameworks",ja:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0411\u044D\u043A\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Gl]},{field:"database",type:"string[]",descriptions:{en:"Databases",ja:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9",ru:"\u0411\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445"},values:[...Kl]},{field:"orm",type:"string[]",descriptions:{en:"ORM",ja:"ORM",ru:"ORM"},values:[...Bl]},{field:"infra",type:"string[]",descriptions:{en:"Infrastructure",ja:"\u30A4\u30F3\u30D5\u30E9",ru:"\u0418\u043D\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430"},values:[...Hl]},{field:"game",type:"string[]",descriptions:{en:"Game engines / frameworks",ja:"\u30B2\u30FC\u30E0\u30A8\u30F3\u30B8\u30F3 / \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0418\u0433\u0440\u043E\u0432\u044B\u0435 \u0434\u0432\u0438\u0436\u043A\u0438 / \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Yl]},{field:"mobile",type:"string[]",descriptions:{en:"Mobile / Cross-platform",ja:"\u30E2\u30D0\u30A4\u30EB / \u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0",ru:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 / \u041A\u0440\u043E\u0441\u0441\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435\u043D\u043D\u044B\u0435"},values:[...Wl]},{field:"other",type:"string[]",descriptions:{en:"Other (no validation, free text)",ja:"\u305D\u306E\u4ED6\uFF08\u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\u5BFE\u8C61\u5916\u3001\u81EA\u7531\u8A18\u8FF0\uFF09",ru:"\u041F\u0440\u043E\u0447\u0435\u0435 (\u0431\u0435\u0437 \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438, \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442)"},values:[]}];function lk(){return new Set([...uk.map(e=>e.field),"tools"])}var wN={en:{validValues:"Valid values",toolsDescription:"Tool settings (optional). Keys: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"},ja:{validValues:"\u6709\u52B9\u5024",toolsDescription:"\u30C4\u30FC\u30EB\u8A2D\u5B9A\uFF08\u7701\u7565\u53EF\uFF09\u3002\u30AD\u30FC: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"},ru:{validValues:"\u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",toolsDescription:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E). \u041A\u043B\u044E\u0447\u0438: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"}};function dk(e="ja"){let t=wN[e],n=[];for(let o of uk)n.push(`### ${o.field} (${o.type})`),n.push(o.descriptions[e]),o.values.length>0&&n.push(`${t.validValues}: ${o.values.join(", ")}`),n.push("");return n.push("### tools (object)"),n.push(t.toolsDescription),n.push(""),n.join(`
|
|
51
|
+
`);for(let r of o){let i=r.trim();if(!i||i.startsWith("#"))continue;if(r.length-r.trimStart().length>=2&&n&&i.includes(":")&&!i.startsWith("- ")){let s=i.indexOf(":"),c=i.slice(0,s).trim(),u=i.slice(s+1).trim();if(c&&u){let l=t[n];l&&typeof l=="object"&&!Array.isArray(l)?l[c]=u:t[n]={[c]:u}}continue}if(i.startsWith("- ")){if(n){let s=t[n];Array.isArray(s)&&s.push(i.slice(2).trim())}}else if(i.includes(":")){let s=i.indexOf(":"),c=i.slice(0,s).trim(),u=i.slice(s+1).trim();u===""||u==="[]"?(t[c]=[],n=c):u.startsWith("[")&&u.endsWith("]")?(t[c]=u.slice(1,-1).split(",").map(l=>l.trim()).filter(Boolean),n=c):(t[c]=u,n=c)}}return t}var Vl=new Set(["typescript","javascript","python","java","csharp","cpp","c","go","rust","php","swift","kotlin","ruby","dart","r","scala","objective-c","sql","html-css","bash","elixir","haskell","perl","lua","julia","clojure","fsharp","groovy","visual-basic","powershell","erlang","ocaml","zig","nim","crystal","solidity","fortran","cobol","assembly","d","ada","v","pascal","prolog","gdscript","gdshader"]),Jl=new Set(["react","nextjs","vue","nuxt","svelte","angular","flutter","blazor","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"]),Gl=new Set(["express","nestjs","hono","fastify","fastapi","django","flask","gin","echo","fiber","chi","spring-boot","quarkus","micronaut","ktor","laravel","symfony","slim","codeigniter","cakephp","rails","sinatra","hanami","actix-web","axum","rocket","phoenix","aspnet","vapor","play","akka-http","servant","yesod","mojolicious","dancer","ring","pedestal","dart-frog"]),Kl=new Set(["postgresql","mysql","mongodb","redis","sqlite","dynamodb","cassandra","neo4j","elasticsearch","supabase","firebase","cockroachdb"]),Bl=new Set(["prisma","drizzle","typeorm","sequelize","sqlalchemy","tortoise-orm","eloquent","doctrine","activerecord","hibernate","mybatis","entity-framework","gorm","ent","diesel","sea-orm","ecto","exposed","peewee","django-orm"]),Hl=new Set(["docker","terraform","vercel","aws","gcp","github-actions","azure","cloudflare","fly-io","render","heroku","kubernetes","ansible","pulumi","netlify","railway"]),Wl=new Set(["react-native","expo","flutter","swiftui","uikit","jetpack-compose","kotlin-multiplatform","ionic","capacitor","maui","xamarin","tauri-mobile","nativescript"]),Yl=new Set(["godot","phaser","pyxel","unity","unreal","bevy","love2d","monogame","pygame","libgdx","cocos2d","defold","renpy"]),$N={typescript:{frontend:["react","nextjs","vue","nuxt","svelte","angular","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"],backend:["express","nestjs","hono","fastify"],orm:["prisma","drizzle","typeorm","sequelize"],mobile:["react-native","expo","ionic","capacitor","nativescript"]},javascript:{frontend:["react","nextjs","vue","nuxt","svelte","angular","solid","astro","remix","qwik","ember","htmx","alpine","vite","electron","tauri"],backend:["express","nestjs","hono","fastify"],orm:["prisma","drizzle","typeorm","sequelize"],mobile:["react-native","expo","ionic","capacitor","nativescript"]},python:{backend:["fastapi","django","flask"],orm:["sqlalchemy","tortoise-orm","peewee","django-orm"],game:["pygame","renpy","pyxel"]},go:{backend:["gin","echo","fiber","chi"],orm:["gorm","ent"]},rust:{frontend:["tauri"],backend:["actix-web","axum","rocket"],orm:["diesel","sea-orm"],game:["bevy"]},java:{backend:["spring-boot","quarkus","micronaut"],orm:["hibernate","mybatis"],mobile:["jetpack-compose"],game:["libgdx"]},kotlin:{backend:["spring-boot","ktor"],orm:["exposed","hibernate"],mobile:["jetpack-compose","kotlin-multiplatform"]},php:{backend:["laravel","symfony","slim","codeigniter","cakephp"],orm:["eloquent","doctrine"]},ruby:{backend:["rails","sinatra","hanami"],orm:["activerecord"]},swift:{backend:["vapor"],mobile:["swiftui","uikit"]},dart:{frontend:["flutter"],backend:["dart-frog"],mobile:["flutter"]},csharp:{backend:["aspnet"],orm:["entity-framework"],mobile:["maui","xamarin"],game:["unity","monogame"]},elixir:{backend:["phoenix"],orm:["ecto"]},scala:{backend:["play","akka-http"]},haskell:{backend:["servant","yesod"]},perl:{backend:["mojolicious","dancer"]},clojure:{backend:["ring","pedestal"]},lua:{game:["love2d","defold"]},gdscript:{game:["godot"]},cpp:{game:["unreal","cocos2d","godot"]}};function Io(e,t,n){if(n.length===0)return e;let o=new Set;for(let r of n){let i=$N[r];if(!i)continue;let a=i[t];if(a)for(let s of a)o.add(s)}return o.size===0?e:e.filter(r=>o.has(r))}function bN(e,t){let n=e.length,o=t.length,r=Array.from({length:n+1},()=>Array(o+1).fill(0));for(let i=0;i<=n;i++)r[i][0]=i;for(let i=0;i<=o;i++)r[0][i]=i;for(let i=1;i<=n;i++)for(let a=1;a<=o;a++){let s=e[i-1]===t[a-1]?0:1;r[i][a]=Math.min(r[i-1][a]+1,r[i][a-1]+1,r[i-1][a-1]+s)}return r[n][o]}function xN(e,t,n=2){let o=null,r=n+1;for(let i of t){if(Math.abs(i.length-e.length)>n)continue;let a=bN(e.toLowerCase(),i.toLowerCase());a<r&&(r=a,o=i)}return o}var kN=[{field:"programming_languages",known:Vl},{field:"frontend",known:Jl},{field:"backend",known:Gl},{field:"database",known:Kl},{field:"orm",known:Bl},{field:"infra",known:Hl},{field:"game",known:Yl},{field:"mobile",known:Wl}];function Xl(e){let t=[];for(let{field:n,known:o}of kN){let r=e[n];if(Array.isArray(r))for(let i of r)typeof i=="string"&&(o.has(i)||t.push({field:n,value:i,suggestion:xN(i,o)}))}return t}var uk=[{field:"display_language",type:"string",descriptions:{en:"GoDD display language (en / ja / ru)",ja:"GoDD \u306E\u8868\u793A\u8A00\u8A9E\uFF08en / ja / ru\uFF09",ru:"\u042F\u0437\u044B\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F GoDD (en / ja / ru)"},values:["en","ja","ru"]},{field:"main_language",type:"string",descriptions:{en:"Project main language (en / ja / ru)",ja:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30A4\u30F3\u8A00\u8A9E\uFF08en / ja / ru\uFF09",ru:"\u041E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u044F\u0437\u044B\u043A \u043F\u0440\u043E\u0435\u043A\u0442\u0430 (en / ja / ru)"},values:["en","ja","ru"]},{field:"sub_languages",type:"string[]",descriptions:{en:"Team sub-languages",ja:"\u30C1\u30FC\u30E0\u306E\u30B5\u30D6\u8A00\u8A9E",ru:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B"},values:["en","ja","ru"]},{field:"programming_languages",type:"string[]",descriptions:{en:"Programming languages",ja:"\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E",ru:"\u042F\u0437\u044B\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F"},values:[...Vl]},{field:"frontend",type:"string[]",descriptions:{en:"Frontend frameworks",ja:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Jl]},{field:"backend",type:"string[]",descriptions:{en:"Backend frameworks",ja:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0411\u044D\u043A\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Gl]},{field:"database",type:"string[]",descriptions:{en:"Databases",ja:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9",ru:"\u0411\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445"},values:[...Kl]},{field:"orm",type:"string[]",descriptions:{en:"ORM",ja:"ORM",ru:"ORM"},values:[...Bl]},{field:"infra",type:"string[]",descriptions:{en:"Infrastructure",ja:"\u30A4\u30F3\u30D5\u30E9",ru:"\u0418\u043D\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430"},values:[...Hl]},{field:"game",type:"string[]",descriptions:{en:"Game engines / frameworks",ja:"\u30B2\u30FC\u30E0\u30A8\u30F3\u30B8\u30F3 / \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF",ru:"\u0418\u0433\u0440\u043E\u0432\u044B\u0435 \u0434\u0432\u0438\u0436\u043A\u0438 / \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438"},values:[...Yl]},{field:"mobile",type:"string[]",descriptions:{en:"Mobile / Cross-platform",ja:"\u30E2\u30D0\u30A4\u30EB / \u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0",ru:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 / \u041A\u0440\u043E\u0441\u0441\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435\u043D\u043D\u044B\u0435"},values:[...Wl]},{field:"other",type:"string[]",descriptions:{en:"Other (no validation, free text)",ja:"\u305D\u306E\u4ED6\uFF08\u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\u5BFE\u8C61\u5916\u3001\u81EA\u7531\u8A18\u8FF0\uFF09",ru:"\u041F\u0440\u043E\u0447\u0435\u0435 (\u0431\u0435\u0437 \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u0438, \u0441\u0432\u043E\u0431\u043E\u0434\u043D\u044B\u0439 \u0442\u0435\u043A\u0441\u0442)"},values:[]}];function lk(){return new Set([...uk.map(e=>e.field),"tools"])}var wN={en:{validValues:"Valid values",toolsDescription:"Tool settings (optional). Keys: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"},ja:{validValues:"\u6709\u52B9\u5024",toolsDescription:"\u30C4\u30FC\u30EB\u8A2D\u5B9A\uFF08\u7701\u7565\u53EF\uFF09\u3002\u30AD\u30FC: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"},ru:{validValues:"\u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",toolsDescription:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 (\u043D\u0435\u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E). \u041A\u043B\u044E\u0447\u0438: vcs, browser_automation, e2e_testing, unit_testing, linting, formatting, type_checking, coverage, documentation, secret_scanning, security_analysis, unused_code, dependency_analysis"}};function dk(e="ja"){let t=wN[e],n=[];for(let o of uk)n.push(`### ${o.field} (${o.type})`),n.push(o.descriptions[e]),o.values.length>0&&n.push(`${t.validValues}: ${o.values.join(", ")}`),n.push("");return n.push("### tools (object)"),n.push(t.toolsDescription),n.push(""),n.join(`
|
|
52
52
|
`)}var Th="https://www.getgodd.dev/contact",SN={en:{header:"\u26A0 config.godd contains unrecognized values. Please fix them and try again.",problemValues:"Problematic values:",suggestion:(e,t)=>` - "${e}" \u2192 did you mean "${t}"?`,unsupported:e=>` - "${e}" \u2192 currently unsupported. Contact ${Th} to request support.`,fixHeader:"How to fix:",fixEdit:" 1. Edit config.godd directly to correct the values",fixReinit:' 2. Or run "godd init --force" to regenerate'},ja:{header:"\u26A0 config.godd \u306B\u8A8D\u8B58\u3067\u304D\u306A\u3044\u5024\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u4FEE\u6B63\u3057\u3066\u304B\u3089\u518D\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044\u3002",problemValues:"\u554F\u984C\u306E\u3042\u308B\u5024:",suggestion:(e,t)=>` - "${e}" \u2192 \u3082\u3057\u304B\u3057\u3066 "${t}" \u3067\u3059\u304B\uFF1F`,unsupported:e=>` - "${e}" \u2192 \u73FE\u5728\u672A\u5BFE\u5FDC\u3067\u3059\u3002\u5BFE\u5FDC\u3092\u3054\u5E0C\u671B\u306E\u5834\u5408\u306F ${Th} \u304B\u3089\u3054\u9023\u7D61\u304F\u3060\u3055\u3044\u3002`,fixHeader:"\u4FEE\u6B63\u65B9\u6CD5:",fixEdit:" 1. config.godd \u3092\u76F4\u63A5\u7DE8\u96C6\u3057\u3066\u6B63\u3057\u3044\u5024\u306B\u4FEE\u6B63\u3059\u308B",fixReinit:' 2. \u307E\u305F\u306F "godd init --force" \u3067\u518D\u751F\u6210\u3059\u308B'},ru:{header:"\u26A0 config.godd \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F. \u0418\u0441\u043F\u0440\u0430\u0432\u044C\u0442\u0435 \u0438\u0445 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",problemValues:"\u041F\u0440\u043E\u0431\u043B\u0435\u043C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F:",suggestion:(e,t)=>` - "${e}" \u2192 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443 "${t}"?`,unsupported:e=>` - "${e}" \u2192 \u043F\u043E\u043A\u0430 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F. \u0421\u0432\u044F\u0436\u0438\u0442\u0435\u0441\u044C \u0441 ${Th} \u0434\u043B\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u043A\u0438.`,fixHeader:"\u041A\u0430\u043A \u0438\u0441\u043F\u0440\u0430\u0432\u0438\u0442\u044C:",fixEdit:" 1. \u041E\u0442\u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0439\u0442\u0435 config.godd \u043D\u0430\u043F\u0440\u044F\u043C\u0443\u044E, \u0443\u043A\u0430\u0437\u0430\u0432 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",fixReinit:' 2. \u0418\u043B\u0438 \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u0435 "godd init --force" \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F'}};function jh(e,t="ja"){let n=SN[t],o=new Map;for(let i of e){let a=o.get(i.field)??[];a.push(i),o.set(i.field,a)}let r=[n.header,"",n.problemValues];for(let[i,a]of o){r.push(` ${i}:`);for(let s of a)r.push(s.suggestion?n.suggestion(s.value,s.suggestion):n.unsupported(s.value))}return r.push("",n.fixHeader,n.fixEdit,n.fixReinit),r.join(`
|
|
53
|
-
`)}var nr="0.25.0";var Eh={en:{dev:"Development (plan \u2192 implement \u2192 test \u2192 quality \u2192 docs in stages)",check:"Quality gate (verify Spec alignment, tests, types, lint, security)",docs:"Generate/update documentation",ship:"Ship (commit at proper granularity \u2192 quality check \u2192 push \u2192 create PR)",setup:"Environment setup (with recommended stack presets, confirms missing info)",review:"Review (CTO-level review + quality gate)",test:"Run/create tests",impact:"Impact analysis",commit:"Commit changes",push:"Push to remote",pr:"Create PR (template-compliant)",deploy:"Deploy (with verification & rollback plan)",adr:"Create ADR (Architecture Decision Record)",release:"Generate release notes (SemVer-compliant)",github:"GitHub configuration (repository/branch protection, etc.)",config:"Generate/repair config.godd (auto-detect stack + validation)"},ja:{dev:"\u958B\u767A\uFF08\u6BB5\u968E\u7684\u306B\u8A08\u753B\u2192\u5B9F\u88C5\u2192\u30C6\u30B9\u30C8\u2192\u54C1\u8CEA\u2192\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u5B9F\u884C\uFF09",check:"\u54C1\u8CEA\u30B2\u30FC\u30C8\uFF08Spec\u6574\u5408\u30FB\u30C6\u30B9\u30C8\u30FB\u578B\u30FBLint\u30FB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u691C\u8A3C\uFF09",docs:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u751F\u6210/\u66F4\u65B0",ship:"\u63D0\u51FA\uFF08\u9069\u5207\u306A\u7C92\u5EA6\u3067\u30B3\u30DF\u30C3\u30C8 \u2192 \u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2192 \u30D7\u30C3\u30B7\u30E5 \u2192 PR \u4F5C\u6210\uFF09",setup:"\u74B0\u5883\u69CB\u7BC9\uFF08\u63A8\u5968\u30B9\u30BF\u30C3\u30AF\u30D7\u30EA\u30BB\u30C3\u30C8\u4ED8\u304D\u30FB\u4E0D\u8DB3\u60C5\u5831\u306F\u78BA\u8A8D\uFF09",review:"\u30EC\u30D3\u30E5\u30FC\uFF08CTO \u30EC\u30D9\u30EB\u306E\u30EC\u30D3\u30E5\u30FC + \u54C1\u8CEA\u30B2\u30FC\u30C8\uFF09",test:"\u30C6\u30B9\u30C8\u5B9F\u884C/\u4F5C\u6210",impact:"\u5F71\u97FF\u5206\u6790",commit:"\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8",push:"\u30EA\u30E2\u30FC\u30C8\u306B\u30D7\u30C3\u30B7\u30E5",pr:"PR \u4F5C\u6210\uFF08\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u6E96\u62E0\uFF09",deploy:"\u30C7\u30D7\u30ED\u30A4\uFF08\u691C\u8A3C\u30FB\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF\u8A08\u753B\u4ED8\u304D\uFF09",adr:"ADR\uFF08Architecture Decision Record\uFF09\u4F5C\u6210",release:"\u30EA\u30EA\u30FC\u30B9\u30CE\u30FC\u30C8\u751F\u6210\uFF08SemVer \u6E96\u62E0\uFF09",github:"GitHub \u8A2D\u5B9A\uFF08\u30EA\u30DD\u30B8\u30C8\u30EA/\u30D6\u30E9\u30F3\u30C1\u4FDD\u8B77\u7B49\uFF09",config:"config.godd \u3092\u6B63\u78BA\u306B\u751F\u6210\u30FB\u4FEE\u6B63\u3059\u308B\uFF08\u30B9\u30BF\u30C3\u30AF\u81EA\u52D5\u691C\u51FA + \u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\uFF09"},ru:{dev:"\u0420\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0430 (\u043F\u043B\u0430\u043D \u2192 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u2192 \u0442\u0435\u0441\u0442\u044B \u2192 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u043E \u2192 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F \u043F\u043E\u044D\u0442\u0430\u043F\u043D\u043E)",check:"\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430 (Spec, \u0442\u0435\u0441\u0442\u044B, \u0442\u0438\u043F\u044B, \u043B\u0438\u043D\u0442\u0435\u0440, \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C)",docs:"\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F/\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0438",ship:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430 (\u043A\u043E\u043C\u043C\u0438\u0442 \u2192 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u2192 \u043F\u0443\u0448 \u2192 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 PR)",setup:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u0440\u0435\u0434\u044B (\u0441 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u043C\u0438 \u043F\u0440\u0435\u0441\u0435\u0442\u0430\u043C\u0438 \u0441\u0442\u0435\u043A\u0430)",review:"\u0420\u0435\u0432\u044C\u044E (CTO-\u0443\u0440\u043E\u0432\u0435\u043D\u044C + \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430)",test:"\u0417\u0430\u043F\u0443\u0441\u043A/\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0442\u0435\u0441\u0442\u043E\u0432",impact:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0432\u043B\u0438\u044F\u043D\u0438\u044F",commit:"\u0417\u0430\u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",push:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0439 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439",pr:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C PR (\u043F\u043E \u0448\u0430\u0431\u043B\u043E\u043D\u0443)",deploy:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C (\u0441 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u043E\u0439 \u0438 \u043F\u043B\u0430\u043D\u043E\u043C \u043E\u0442\u043A\u0430\u0442\u0430)",adr:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C ADR (\u0437\u0430\u043F\u0438\u0441\u044C \u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u043D\u043E\u0433\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u044F)",release:"\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u043C\u0435\u0442\u043A\u0438 \u043A \u0440\u0435\u043B\u0438\u0437\u0443 (SemVer)",github:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 GitHub (\u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439/\u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u0435\u0442\u043E\u043A \u0438 \u0442.\u0434.)",config:"\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F/\u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 config.godd (\u0430\u0432\u0442\u043E\u0434\u0435\u0442\u0435\u043A\u0442 \u0441\u0442\u0435\u043A\u0430 + \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u044F)"}};var zN={dev:[{name:"request",required:!0},{name:"done_when",required:!1}],check:[{name:"target",required:!1}],docs:[{name:"target",required:!1}],ship:[{name:"title",required:!1}],review:[{name:"target",required:!1},{name:"action",required:!1}],test:[{name:"target",required:!1}],impact:[{name:"target",required:!1}],commit:[{name:"message",required:!1}],pr:[{name:"title",required:!1}],deploy:[{name:"target",required:!1}],adr:[{name:"title",required:!1}],release:[{name:"tag",required:!1}],setup:[{name:"preset",required:!1}],github:[{name:"request",required:!1}],config:[]},Oh={en:{dev:{request:"Request details",done_when:"Completion criteria"},check:{target:"Check target (omit for all recent changes)"},docs:{target:"Target file/feature"},ship:{title:"PR title"},review:{target:"Target file/PR (e.g., PR URL, PR number, file path)",action:"Post-review action (approve / request-changes / comment)"},test:{target:"Test target"},impact:{target:"Analysis target"},commit:{message:"Commit message"},pr:{title:"PR title"},deploy:{target:"Deploy target"},adr:{title:"Decision title"},release:{tag:"Target tag (omit for HEAD since last release)"},setup:{preset:"Stack preset (omakase = recommended)"},github:{request:"Configuration request"}},ja:{dev:{request:"\u4F9D\u983C\u5185\u5BB9",done_when:"\u5B8C\u4E86\u6761\u4EF6"},check:{target:"\u30C1\u30A7\u30C3\u30AF\u5BFE\u8C61\uFF08\u7701\u7565\u6642: \u76F4\u8FD1\u306E\u5909\u66F4\u5168\u4F53\uFF09"},docs:{target:"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB/\u6A5F\u80FD"},ship:{title:"PR \u30BF\u30A4\u30C8\u30EB"},review:{target:"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB/PR\uFF08\u4F8B: PR URL, PR\u756A\u53F7, \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF09",action:"\u30EC\u30D3\u30E5\u30FC\u5F8C\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08approve / request-changes / comment\uFF09"},test:{target:"\u30C6\u30B9\u30C8\u5BFE\u8C61"},impact:{target:"\u5206\u6790\u5BFE\u8C61"},commit:{message:"\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8"},pr:{title:"PR \u30BF\u30A4\u30C8\u30EB"},deploy:{target:"\u30C7\u30D7\u30ED\u30A4\u5148"},adr:{title:"\u5224\u65AD\u306E\u30BF\u30A4\u30C8\u30EB"},release:{tag:"\u5BFE\u8C61\u30BF\u30B0\uFF08\u7701\u7565\u6642: \u76F4\u8FD1\u30EA\u30EA\u30FC\u30B9\u304B\u3089 HEAD\uFF09"},setup:{preset:"\u30B9\u30BF\u30C3\u30AF\u30D7\u30EA\u30BB\u30C3\u30C8\uFF08omakase = \u63A8\u5968\u69CB\u6210\uFF09"},github:{request:"\u8A2D\u5B9A\u5185\u5BB9"}},ru:{dev:{request:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",done_when:"\u041A\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F"},check:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: \u0432\u0441\u0435 \u043D\u0435\u0434\u0430\u0432\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F)"},docs:{target:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B/\u0444\u0443\u043D\u043A\u0446\u0438\u044F"},ship:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A PR"},review:{target:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B/PR (URL PR, \u043D\u043E\u043C\u0435\u0440 PR, \u043F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443)",action:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043F\u043E\u0441\u043B\u0435 \u0440\u0435\u0432\u044C\u044E (approve / request-changes / comment)"},test:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F"},impact:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u0430\u043D\u0430\u043B\u0438\u0437\u0430"},commit:{message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u043C\u0438\u0442\u0430"},pr:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A PR"},deploy:{target:"\u0426\u0435\u043B\u044C \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F"},adr:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0440\u0435\u0448\u0435\u043D\u0438\u044F"},release:{tag:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0442\u0435\u0433 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: \u043E\u0442 HEAD \u0434\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0440\u0435\u043B\u0438\u0437\u0430)"},setup:{preset:"\u041F\u0440\u0435\u0441\u0435\u0442 \u0441\u0442\u0435\u043A\u0430 (omakase = \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F)"},github:{request:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438"}}},IN=["dev","check","docs","ship","setup","review","test","impact","commit","push","pr","deploy","adr","release","github","config"];var Nh={dev:{slugs:["common","dev"]},ship:{slugs:["common","commit","push","pr","check"]},review:{slugs:["common","review","check"]}};var pk=new Set(["dev","review","setup","test","impact","docs","check","deploy","adr","release"]);function Ch(e){return e in Nh||pk.has(e)}function Rh(e){if(Nh[e])return Nh[e].slugs;if(pk.has(e))return["common",e]}var Dh=new Set(["config"]);function Zh(e="en"){let t=W.toolPrefix,n=Eh[e]??Eh.en;return IN.map(o=>({name:`${t}${o}`,description:n[o]??Eh.en[o]}))}function fk(e="en"){let t=W.toolPrefix,n=Oh[e]??Oh.en,o=Oh.en;return Zh(e).map(r=>{let i=r.name.replace(t,""),a=zN[i]??[];return{name:r.name,description:r.description,inputSchema:{type:"object",properties:Object.fromEntries(a.map(s=>[s.name,{type:"string",description:n[i]?.[s.name]??o[i]?.[s.name]??s.name}])),required:a.filter(s=>s.required).map(s=>s.name)}}})}var Po=require("node:fs"),bk=require("node:path");var at=require("node:fs"),le=require("node:path"),_k=require("node:readline"),ed=require("node:child_process");var PN={selectDisplayLanguage:"Select display language:",selectMainLanguage:"Select the main language for your project:",selectSubLanguages:"Select sub-languages used in your team:",selectSubLanguagesHint:"(comma-separated numbers, or press Enter to skip)",skipSubLanguages:"No sub-languages selected.",scanningProject:"Scanning project...",detectedStack:"Detected stack:",confirmStack:"Is this correct?",manualStackEntry:"Please select your tech stack manually.",selectProjectType:"What are you building? (select all that apply)",projectTypes:{web:"Web App (frontend + backend)",api:"API / Backend only",mobile:"Mobile App",game:"Game",cli:"CLI / Library / Script",desktop:"Desktop App"},selectProgrammingLanguages:"Programming languages:",selectFrontend:"Frontend frameworks:",selectBackend:"Backend frameworks:",selectDatabase:"Databases:",selectOrm:"ORM:",selectInfra:"Infrastructure:",selectGame:"Game engines / frameworks:",selectMobile:"Mobile / Cross-platform:",toolRecommendationsTitle:"Recommended tools for your stack:",toolInstallMode:"How would you like to install?",toolInstallDefault:"Default (install all)",toolInstallCustom:"Custom (choose individually)",toolInstallSkip:"Skip (install later)",toolInstallPrompt:"Install?",toolInstalling:"Installing",toolInstallSuccess:"Installed successfully.",toolInstallFailed:"Installation failed. You can install it later via setup prompt.",toolUniversalTag:"all projects",toolStackSpecificTag:"your stack",toolCategories:{vcs:"Version Control",browser_automation:"Browser Automation",e2e_testing:"E2E Testing",unit_testing:"Unit Testing",linting:"Linting",formatting:"Formatting",type_checking:"Type Checking",coverage:"Coverage",documentation:"Documentation",secret_scanning:"Secret Scanning",security_analysis:"Security Analysis",unused_code:"Unused Code Detection",dependency_analysis:"Dependency Analysis"},githubDetected:"GitHub repository detected. Configuring auto-delete for merged branches...",githubConfigSuccess:"\u2713 Merged branches will be auto-deleted on GitHub.",githubConfigFailed:"\u2717 Could not configure auto-delete. Run `gh repo edit --delete-branch-on-merge` manually.",configCreated:"Generated",configExists:"already exists",configOverwritten:"Overwritten",useForceFlag:"Use --force to overwrite.",languages:"Languages",frontend:"Frontend",backend:"Backend",database:"Database",orm:"ORM",infra:"Infra",game:"Game",mobile:"Mobile",pressEnterToClose:"Press Enter to close...",unknownCommand:"Unknown command",usage:"Usage:",installSuccess:"Registered with Cursor!",installUpdated:"Configuration updated",installUnchanged:"Already up to date",licenseNotSet:"License key is not set. Set GODD_LICENSE_KEY environment variable or run: godd install --license-key=YOUR_KEY",restartCursor:"Restart Cursor to activate the MCP server.",installFailed:"Installation failed:",uninstallTitle:"Uninstall",uninstallSuccess:"Removed from Cursor",uninstallNotFound:"Not found (already removed)",uninstallFailed:"Uninstall failed:",initTitle:"Project initialization",yes:"Yes",no:"No",none:"None",invalidChoice:"Invalid choice. Please try again.",enterNumbers:"Enter numbers",updateAvailable:"A newer version is available:",updateCurrent:"current:",licenseMissing:"GODD_LICENSE_KEY environment variable is not set.",licenseMissingHint:"Re-register with: godd install --license-key=YOUR_KEY",licenseFailed:"License validation failed",configNotFound:"not found in project directory.",configNotFoundHint:'Run "godd init" to generate project configuration for better prompt accuracy.',configUnknownValues:"contains unknown values:",didYouMean:"did you mean",serverStarted:"started (stdio)",corruptMcpJson:"is corrupt. Backed up to {backup} and creating a fresh config."},TN={selectDisplayLanguage:"\u8868\u793A\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectMainLanguage:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30A4\u30F3\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectSubLanguages:"\u30C1\u30FC\u30E0\u3067\u4F7F\u7528\u3059\u308B\u30B5\u30D6\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectSubLanguagesHint:"(\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u756A\u53F7\u3001\u307E\u305F\u306FEnter\u3067\u30B9\u30AD\u30C3\u30D7)",skipSubLanguages:"\u30B5\u30D6\u8A00\u8A9E\u306F\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002",scanningProject:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30B9\u30AD\u30E3\u30F3\u4E2D...",detectedStack:"\u691C\u51FA\u3055\u308C\u305F\u30B9\u30BF\u30C3\u30AF:",confirmStack:"\u3053\u306E\u5185\u5BB9\u3067\u6B63\u3057\u3044\u3067\u3059\u304B\uFF1F",manualStackEntry:"\u6280\u8853\u30B9\u30BF\u30C3\u30AF\u3092\u624B\u52D5\u3067\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",selectProjectType:"\u4F55\u3092\u4F5C\u308A\u307E\u3059\u304B\uFF1F\uFF08\u8A72\u5F53\u3059\u308B\u3082\u306E\u3092\u3059\u3079\u3066\u9078\u629E\uFF09",projectTypes:{web:"Web \u30A2\u30D7\u30EA\uFF08\u30D5\u30ED\u30F3\u30C8 + \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\uFF09",api:"API / \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u306E\u307F",mobile:"\u30E2\u30D0\u30A4\u30EB\u30A2\u30D7\u30EA",game:"\u30B2\u30FC\u30E0",cli:"CLI / \u30E9\u30A4\u30D6\u30E9\u30EA / \u30B9\u30AF\u30EA\u30D7\u30C8",desktop:"\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u30A2\u30D7\u30EA"},selectProgrammingLanguages:"\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E:",selectFrontend:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectBackend:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectDatabase:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9:",selectOrm:"ORM:",selectInfra:"\u30A4\u30F3\u30D5\u30E9:",selectGame:"\u30B2\u30FC\u30E0\u30A8\u30F3\u30B8\u30F3 / \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectMobile:"\u30E2\u30D0\u30A4\u30EB / \u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0:",toolRecommendationsTitle:"\u30B9\u30BF\u30C3\u30AF\u306B\u63A8\u5968\u3055\u308C\u308B\u30C4\u30FC\u30EB:",toolInstallMode:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u65B9\u6CD5\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",toolInstallDefault:"\u30C7\u30D5\u30A9\u30EB\u30C8\uFF08\u3059\u3079\u3066\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\uFF09",toolInstallCustom:"\u30AB\u30B9\u30BF\u30E0\uFF08\u500B\u5225\u306B\u9078\u629E\uFF09",toolInstallSkip:"\u30B9\u30AD\u30C3\u30D7\uFF08\u5F8C\u3067\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\uFF09",toolInstallPrompt:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\uFF1F",toolInstalling:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u4E2D",toolInstallSuccess:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002",toolInstallFailed:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002setup \u30D7\u30ED\u30F3\u30D7\u30C8\u3067\u5F8C\u304B\u3089\u5BFE\u5FDC\u3067\u304D\u307E\u3059\u3002",toolUniversalTag:"\u5168\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5171\u901A",toolStackSpecificTag:"\u30B9\u30BF\u30C3\u30AF\u56FA\u6709",toolCategories:{vcs:"\u30D0\u30FC\u30B8\u30E7\u30F3\u7BA1\u7406",browser_automation:"\u30D6\u30E9\u30A6\u30B6\u81EA\u52D5\u5316",e2e_testing:"E2E \u30C6\u30B9\u30C8",unit_testing:"\u30E6\u30CB\u30C3\u30C8\u30C6\u30B9\u30C8",linting:"\u30EA\u30F3\u30BF\u30FC",formatting:"\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u30FC",type_checking:"\u578B\u30C1\u30A7\u30C3\u30AF",coverage:"\u30AB\u30D0\u30EC\u30C3\u30B8",documentation:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u751F\u6210",secret_scanning:"\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30B9\u30AD\u30E3\u30F3",security_analysis:"\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u5206\u6790",unused_code:"\u672A\u4F7F\u7528\u30B3\u30FC\u30C9\u691C\u51FA",dependency_analysis:"\u4F9D\u5B58\u5206\u6790"},githubDetected:"GitHub \u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u30DE\u30FC\u30B8\u6E08\u307F\u30D6\u30E9\u30F3\u30C1\u306E\u81EA\u52D5\u524A\u9664\u3092\u8A2D\u5B9A\u4E2D...",githubConfigSuccess:"\u2713 \u30DE\u30FC\u30B8\u6E08\u307F\u30D6\u30E9\u30F3\u30C1\u306F GitHub \u4E0A\u3067\u81EA\u52D5\u524A\u9664\u3055\u308C\u307E\u3059\u3002",githubConfigFailed:"\u2717 \u81EA\u52D5\u524A\u9664\u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u624B\u52D5\u3067 `gh repo edit --delete-branch-on-merge` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",configCreated:"\u3092\u751F\u6210\u3057\u307E\u3057\u305F",configExists:"\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059",configOverwritten:"\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3057\u305F",useForceFlag:"\u4E0A\u66F8\u304D\u3059\u308B\u5834\u5408\u306F --force \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002",languages:"\u8A00\u8A9E",frontend:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9",backend:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9",database:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9",orm:"ORM",infra:"\u30A4\u30F3\u30D5\u30E9",game:"\u30B2\u30FC\u30E0",mobile:"\u30E2\u30D0\u30A4\u30EB",pressEnterToClose:"Enter \u30AD\u30FC\u3092\u62BC\u3059\u3068\u9589\u3058\u307E\u3059...",unknownCommand:"\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9",usage:"\u4F7F\u3044\u65B9:",installSuccess:"Cursor \u306B\u767B\u9332\u3057\u307E\u3057\u305F\uFF01",installUpdated:"\u8A2D\u5B9A\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F",installUnchanged:"\u65E2\u306B\u6700\u65B0\u306E\u8A2D\u5B9A\u3067\u3059",licenseNotSet:"\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u304C\u672A\u8A2D\u5B9A\u3067\u3059\u3002\u74B0\u5883\u5909\u6570 GODD_LICENSE_KEY \u3092\u8A2D\u5B9A\u3059\u308B\u304B\u3001godd install --license-key=YOUR_KEY \u3067\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",restartCursor:"Cursor \u3092\u518D\u8D77\u52D5\u3059\u308B\u3068 MCP \u30B5\u30FC\u30D0\u30FC\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002",installFailed:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F:",uninstallTitle:"\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB",uninstallSuccess:"Cursor \u304B\u3089\u524A\u9664\u3057\u307E\u3057\u305F",uninstallNotFound:"\u767B\u9332\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u65E2\u306B\u524A\u9664\u6E08\u307F\uFF09",uninstallFailed:"\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F:",initTitle:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u521D\u671F\u5316",yes:"\u306F\u3044",no:"\u3044\u3044\u3048",none:"\u306A\u3057",invalidChoice:"\u7121\u52B9\u306A\u9078\u629E\u3067\u3059\u3002\u3082\u3046\u4E00\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",enterNumbers:"\u756A\u53F7\u3092\u5165\u529B",updateAvailable:"\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059:",updateCurrent:"\u73FE\u5728:",licenseMissing:"GODD_LICENSE_KEY \u74B0\u5883\u5909\u6570\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",licenseMissingHint:"godd install --license-key=YOUR_KEY \u3067\u518D\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",licenseFailed:"\u30E9\u30A4\u30BB\u30F3\u30B9\u691C\u8A3C\u5931\u6557",configNotFound:"\u304C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",configNotFoundHint:"\u300Cgodd init\u300D\u3092\u5B9F\u884C\u3057\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u3092\u751F\u6210\u3059\u308B\u3068\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u7CBE\u5EA6\u304C\u5411\u4E0A\u3057\u307E\u3059\u3002",configUnknownValues:"\u306B\u4E0D\u660E\u306A\u5024\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059:",didYouMean:"\u3082\u3057\u304B\u3057\u3066",serverStarted:"\u3092\u8D77\u52D5\u3057\u307E\u3057\u305F (stdio)",corruptMcpJson:"\u304C\u58CA\u308C\u3066\u3044\u307E\u3059\u3002{backup} \u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u4F5C\u6210\u3057\u3001\u65B0\u898F\u8A2D\u5B9A\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002"},jN={selectDisplayLanguage:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044F\u0437\u044B\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F:",selectMainLanguage:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u044F\u0437\u044B\u043A \u043F\u0440\u043E\u0435\u043A\u0442\u0430:",selectSubLanguages:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B:",selectSubLanguagesHint:"(\u043D\u043E\u043C\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E \u0438\u043B\u0438 Enter \u0434\u043B\u044F \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430)",skipSubLanguages:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u044B.",scanningProject:"\u0421\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430...",detectedStack:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0441\u0442\u0435\u043A:",confirmStack:"\u0412\u0441\u0451 \u0432\u0435\u0440\u043D\u043E?",manualStackEntry:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0441\u0442\u0435\u043A \u0432\u0440\u0443\u0447\u043D\u0443\u044E.",selectProjectType:"\u0427\u0442\u043E \u0432\u044B \u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0435? (\u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0441\u0435 \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0438\u0435)",projectTypes:{web:"\u0412\u0435\u0431-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 (\u0444\u0440\u043E\u043D\u0442\u0435\u043D\u0434 + \u0431\u044D\u043A\u0435\u043D\u0434)",api:"API / \u0442\u043E\u043B\u044C\u043A\u043E \u0431\u044D\u043A\u0435\u043D\u0434",mobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435",game:"\u0418\u0433\u0440\u0430",cli:"CLI / \u0411\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0430 / \u0421\u043A\u0440\u0438\u043F\u0442",desktop:"\u0414\u0435\u0441\u043A\u0442\u043E\u043F\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435"},selectProgrammingLanguages:"\u042F\u0437\u044B\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F:",selectFrontend:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectBackend:"\u0411\u044D\u043A\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectDatabase:"\u0411\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445:",selectOrm:"ORM:",selectInfra:"\u0418\u043D\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430:",selectGame:"\u0418\u0433\u0440\u043E\u0432\u044B\u0435 \u0434\u0432\u0438\u0436\u043A\u0438 / \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectMobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 / \u043A\u0440\u043E\u0441\u0441\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435\u043D\u043D\u044B\u0435:",toolRecommendationsTitle:"\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u0442\u0435\u043A\u0430:",toolInstallMode:"\u041A\u0430\u043A \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C?",toolInstallDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435)",toolInstallCustom:"\u0412\u044B\u0431\u043E\u0440\u043E\u0447\u043D\u043E (\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u043E \u043E\u0434\u043D\u043E\u043C\u0443)",toolInstallSkip:"\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435)",toolInstallPrompt:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C?",toolInstalling:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430",toolInstallSuccess:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u043E.",toolInstallFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C. \u041C\u043E\u0436\u043D\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 setup.",toolUniversalTag:"\u0432\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B",toolStackSpecificTag:"\u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u0442\u0435\u043A\u0430",toolCategories:{vcs:"\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u0432\u0435\u0440\u0441\u0438\u0439",browser_automation:"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430",e2e_testing:"E2E \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",unit_testing:"\u042E\u043D\u0438\u0442-\u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",linting:"\u041B\u0438\u043D\u0442\u0438\u043D\u0433",formatting:"\u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",type_checking:"\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0442\u0438\u043F\u043E\u0432",coverage:"\u041F\u043E\u043A\u0440\u044B\u0442\u0438\u0435 \u043A\u043E\u0434\u0430",documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F",secret_scanning:"\u0421\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u043A\u0440\u0435\u0442\u043E\u0432",security_analysis:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438",unused_code:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u043D\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E \u043A\u043E\u0434\u0430",dependency_analysis:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0435\u0439"},githubDetected:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0451\u043D GitHub-\u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439. \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0430\u0432\u0442\u043E\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0451\u043D\u043D\u044B\u0445 \u0432\u0435\u0442\u043E\u043A...",githubConfigSuccess:"\u2713 \u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0451\u043D\u043D\u044B\u0435 \u0432\u0435\u0442\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C\u0441\u044F \u043D\u0430 GitHub.",githubConfigFailed:"\u2717 \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435. \u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 `gh repo edit --delete-branch-on-merge` \u0432\u0440\u0443\u0447\u043D\u0443\u044E.",configCreated:"\u0421\u043E\u0437\u0434\u0430\u043D",configExists:"\u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",configOverwritten:"\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u043D",useForceFlag:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 --force \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0438.",languages:"\u042F\u0437\u044B\u043A\u0438",frontend:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434",backend:"\u0411\u044D\u043A\u0435\u043D\u0434",database:"\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445",orm:"ORM",infra:"\u0418\u043D\u0444\u0440\u0430",game:"\u0418\u0433\u0440\u044B",mobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435",pressEnterToClose:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 Enter \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430...",unknownCommand:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430",usage:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435:",installSuccess:"\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 Cursor!",installUpdated:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430",installUnchanged:"\u0423\u0436\u0435 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E",licenseNotSet:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u043E\u043D\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 GODD_LICENSE_KEY \u0438\u043B\u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435: godd install --license-key=YOUR_KEY",restartCursor:"\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Cursor \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.",installFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438:",uninstallTitle:"\u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435",uninstallSuccess:"\u0423\u0434\u0430\u043B\u0435\u043D\u043E \u0438\u0437 Cursor",uninstallNotFound:"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E (\u0443\u0436\u0435 \u0443\u0434\u0430\u043B\u0435\u043D\u043E)",uninstallFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F:",initTitle:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430",yes:"\u0414\u0430",no:"\u041D\u0435\u0442",none:"\u041D\u0435\u0442",invalidChoice:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.",enterNumbers:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440\u0430",updateAvailable:"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F:",updateCurrent:"\u0442\u0435\u043A\u0443\u0449\u0430\u044F:",licenseMissing:"\u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F \u0441\u0440\u0435\u0434\u044B GODD_LICENSE_KEY \u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u0430.",licenseMissingHint:"\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435: godd install --license-key=YOUR_KEY",licenseFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",configNotFound:"\u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D \u0432 \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430.",configNotFoundHint:'\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 "godd init" \u0434\u043B\u044F \u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u0438 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430.',configUnknownValues:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F:",didYouMean:"\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443",serverStarted:"\u0437\u0430\u043F\u0443\u0449\u0435\u043D (stdio)",corruptMcpJson:"\u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0451\u043D. \u0420\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F: {backup}. \u0421\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u043D\u043E\u0432\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F."},mk={en:PN,ja:TN,ru:jN};function Je(e){return mk[e]??mk.en}var Ah={en:"English",ja:"\u65E5\u672C\u8A9E",ru:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"};var $=e=>({win32:e,darwin:e,linux:e}),_=(e,...t)=>t.some(n=>e.programming_languages.includes(n)),ln=(e,...t)=>t.some(n=>e.mobile.includes(n)),EN=[{category:"vcs",tool:"gh",installCmd:{win32:"winget install GitHub.cli",darwin:"brew install gh",linux:'(type -p wget >/dev/null || sudo apt-get install wget -y) && sudo mkdir -p -m 755 /etc/apt/keyrings && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt-get update && sudo apt-get install gh -y'},universal:!0,condition:()=>!0},{category:"browser_automation",tool:"browser-use",installCmd:$("pip install --upgrade browser-use"),universal:!0,condition:()=>!0},{category:"secret_scanning",tool:"gitleaks",installCmd:{win32:"winget install Gitleaks.Gitleaks",darwin:"brew install gitleaks",linux:"go install github.com/gitleaks/gitleaks/v8@latest"},universal:!0,condition:()=>!0},{category:"e2e_testing",tool:"playwright",installCmd:$("npm i -D @playwright/test@latest && npx playwright install"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"unit_testing",tool:"vitest",installCmd:$("npm i -D vitest@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"linting",tool:"biome",installCmd:$("npm i -D @biomejs/biome@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"formatting",tool:"biome",installCmd:$("npm i -D @biomejs/biome@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"type_checking",tool:"typescript",installCmd:$("npm i -D typescript@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"coverage",tool:"@vitest/coverage-v8",installCmd:$("npm i -D @vitest/coverage-v8@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"unused_code",tool:"knip",installCmd:$("npm i -D knip@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"dependency_analysis",tool:"dependency-cruiser",installCmd:$("npm i -D dependency-cruiser@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"documentation",tool:"typedoc",installCmd:$("npm i -D typedoc@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"e2e_testing",tool:"pytest",installCmd:$("pip install --upgrade pytest httpx pytest-asyncio"),universal:!1,condition:e=>_(e,"python")},{category:"unit_testing",tool:"pytest",installCmd:$("pip install --upgrade pytest"),universal:!1,condition:e=>_(e,"python")},{category:"linting",tool:"ruff",installCmd:$("pip install --upgrade ruff"),universal:!1,condition:e=>_(e,"python")},{category:"formatting",tool:"ruff",installCmd:$("pip install --upgrade ruff"),universal:!1,condition:e=>_(e,"python")},{category:"type_checking",tool:"pyright",installCmd:$("pip install --upgrade pyright"),universal:!1,condition:e=>_(e,"python")},{category:"coverage",tool:"pytest-cov",installCmd:$("pip install --upgrade pytest-cov"),universal:!1,condition:e=>_(e,"python")},{category:"unused_code",tool:"vulture",installCmd:$("pip install --upgrade vulture"),universal:!1,condition:e=>_(e,"python")},{category:"dependency_analysis",tool:"pipdeptree",installCmd:$("pip install --upgrade pipdeptree"),universal:!1,condition:e=>_(e,"python")},{category:"documentation",tool:"mkdocs",installCmd:$("pip install --upgrade mkdocs mkdocs-material"),universal:!1,condition:e=>_(e,"python")},{category:"security_analysis",tool:"bandit",installCmd:$("pip install --upgrade bandit"),universal:!1,condition:e=>_(e,"python")},{category:"unit_testing",tool:"testify",installCmd:$("go get github.com/stretchr/testify@latest"),universal:!1,condition:e=>_(e,"go")},{category:"formatting",tool:"gofmt",installCmd:$("echo gofmt \u2014 built-in with Go toolchain"),universal:!1,condition:e=>_(e,"go")},{category:"coverage",tool:"go-cover",installCmd:$("echo go test -cover \u2014 built-in with Go toolchain"),universal:!1,condition:e=>_(e,"go")},{category:"linting",tool:"golangci-lint",installCmd:{win32:"go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest",darwin:"brew install golangci-lint",linux:"go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"},universal:!1,condition:e=>_(e,"go")},{category:"unused_code",tool:"deadcode",installCmd:$("go install golang.org/x/tools/cmd/deadcode@latest"),universal:!1,condition:e=>_(e,"go")},{category:"documentation",tool:"godoc",installCmd:$("go install golang.org/x/tools/cmd/godoc@latest"),universal:!1,condition:e=>_(e,"go")},{category:"security_analysis",tool:"gosec",installCmd:$("go install github.com/securego/gosec/v2/cmd/gosec@latest"),universal:!1,condition:e=>_(e,"go")},{category:"unit_testing",tool:"junit5",installCmd:$("echo JUnit 5 \u2014 add to pom.xml or build.gradle"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"linting",tool:"checkstyle",installCmd:$("echo Checkstyle \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"formatting",tool:"google-java-format",installCmd:$("echo google-java-format \u2014 add to build config"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"coverage",tool:"jacoco",installCmd:$("echo JaCoCo \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")},{category:"security_analysis",tool:"spotbugs",installCmd:$("echo SpotBugs \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")},{category:"unit_testing",tool:"junit5",installCmd:$("echo JUnit 5 + MockK \u2014 add to build.gradle.kts"),universal:!1,condition:e=>_(e,"kotlin")},{category:"linting",tool:"detekt",installCmd:$("echo detekt \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"formatting",tool:"ktlint",installCmd:$("echo ktlint \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"coverage",tool:"kover",installCmd:$("echo Kover \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"documentation",tool:"dokka",installCmd:$("echo Dokka \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>_(e,"csharp")},{category:"formatting",tool:"dotnet-format",installCmd:$("echo dotnet format \u2014 built-in (.NET 6+)"),universal:!1,condition:e=>_(e,"csharp")},{category:"coverage",tool:"coverlet",installCmd:$("dotnet add package coverlet.collector"),universal:!1,condition:e=>_(e,"csharp")},{category:"linting",tool:"dotnet-analyzers",installCmd:$("echo .NET Analyzers \u2014 built-in with .NET 5+ SDK"),universal:!1,condition:e=>_(e,"csharp")},{category:"documentation",tool:"docfx",installCmd:$("dotnet tool install -g docfx"),universal:!1,condition:e=>_(e,"csharp")},{category:"unit_testing",tool:"googletest",installCmd:$("echo GoogleTest \u2014 add via CMake FetchContent"),universal:!1,condition:e=>_(e,"cpp","c")},{category:"linting",tool:"clang-tidy",installCmd:{win32:"choco install llvm",darwin:"brew install llvm",linux:"sudo apt-get install -y clang-tidy"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"formatting",tool:"clang-format",installCmd:{win32:"choco install llvm",darwin:"brew install clang-format",linux:"sudo apt-get install -y clang-format"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"coverage",tool:"lcov",installCmd:{win32:"choco install lcov",darwin:"brew install lcov",linux:"sudo apt-get install -y lcov"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"documentation",tool:"doxygen",installCmd:{win32:"choco install doxygen.install",darwin:"brew install doxygen",linux:"sudo apt-get install -y doxygen"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"security_analysis",tool:"cppcheck",installCmd:{win32:"choco install cppcheck",darwin:"brew install cppcheck",linux:"sudo apt-get install -y cppcheck"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"unit_testing",tool:"phpunit",installCmd:$("composer require --dev phpunit/phpunit"),universal:!1,condition:e=>_(e,"php")},{category:"linting",tool:"phpstan",installCmd:$("composer require --dev phpstan/phpstan"),universal:!1,condition:e=>_(e,"php")},{category:"formatting",tool:"php-cs-fixer",installCmd:$("composer require --dev friendsofphp/php-cs-fixer"),universal:!1,condition:e=>_(e,"php")},{category:"documentation",tool:"phpdoc",installCmd:$("composer require --dev phpdocumentor/phpdocumentor"),universal:!1,condition:e=>_(e,"php")},{category:"security_analysis",tool:"psalm",installCmd:$("composer require --dev vimeo/psalm"),universal:!1,condition:e=>_(e,"php")},{category:"unit_testing",tool:"rspec",installCmd:$("gem install rspec && rspec --init"),universal:!1,condition:e=>_(e,"ruby")},{category:"linting",tool:"rubocop",installCmd:$("gem install rubocop"),universal:!1,condition:e=>_(e,"ruby")},{category:"formatting",tool:"rubocop",installCmd:$("gem install rubocop"),universal:!1,condition:e=>_(e,"ruby")},{category:"coverage",tool:"simplecov",installCmd:$("gem install simplecov"),universal:!1,condition:e=>_(e,"ruby")},{category:"documentation",tool:"yard",installCmd:$("gem install yard"),universal:!1,condition:e=>_(e,"ruby")},{category:"security_analysis",tool:"brakeman",installCmd:$("gem install brakeman"),universal:!1,condition:e=>_(e,"ruby")},{category:"linting",tool:"swiftlint",installCmd:{win32:"echo SwiftLint \u2014 not available on Windows",darwin:"brew install swiftlint",linux:"echo SwiftLint \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"swift")},{category:"formatting",tool:"swiftformat",installCmd:{win32:"echo SwiftFormat \u2014 not available on Windows",darwin:"brew install swiftformat",linux:"echo SwiftFormat \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"swift")},{category:"linting",tool:"clippy",installCmd:$("rustup component add clippy"),universal:!1,condition:e=>_(e,"rust")},{category:"formatting",tool:"rustfmt",installCmd:$("rustup component add rustfmt"),universal:!1,condition:e=>_(e,"rust")},{category:"coverage",tool:"tarpaulin",installCmd:$("cargo install cargo-tarpaulin"),universal:!1,condition:e=>_(e,"rust")},{category:"security_analysis",tool:"cargo-audit",installCmd:$("cargo install cargo-audit"),universal:!1,condition:e=>_(e,"rust")},{category:"unit_testing",tool:"flutter-test",installCmd:$("echo flutter test \u2014 built-in with Flutter SDK"),universal:!1,condition:e=>ln(e,"flutter")},{category:"linting",tool:"flutter-lints",installCmd:$("dart pub add --dev flutter_lints"),universal:!1,condition:e=>ln(e,"flutter")},{category:"documentation",tool:"dartdoc",installCmd:$("dart pub global activate dartdoc"),universal:!1,condition:e=>_(e,"dart")},{category:"linting",tool:"credo",installCmd:$('echo Credo \u2014 add {:credo, "~> 1.7"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"type_checking",tool:"dialyxir",installCmd:$('echo Dialyxir \u2014 add {:dialyxir, "~> 1.4"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"coverage",tool:"excoveralls",installCmd:$('echo ExCoveralls \u2014 add {:excoveralls, "~> 0.18"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"documentation",tool:"ex-doc",installCmd:$('echo ExDoc \u2014 add {:ex_doc, "~> 0.34"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"unit_testing",tool:"scalatest",installCmd:$("echo ScalaTest \u2014 add to build.sbt"),universal:!1,condition:e=>_(e,"scala")},{category:"linting",tool:"scalafix",installCmd:$("echo Scalafix \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"formatting",tool:"scalafmt",installCmd:$("echo Scalafmt \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"coverage",tool:"scoverage",installCmd:$("echo Scoverage \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"unit_testing",tool:"testthat",installCmd:$(`Rscript -e 'install.packages("testthat")'`),universal:!1,condition:e=>_(e,"r")},{category:"linting",tool:"lintr",installCmd:$(`Rscript -e 'install.packages("lintr")'`),universal:!1,condition:e=>_(e,"r")},{category:"formatting",tool:"styler",installCmd:$(`Rscript -e 'install.packages("styler")'`),universal:!1,condition:e=>_(e,"r")},{category:"coverage",tool:"covr",installCmd:$(`Rscript -e 'install.packages("covr")'`),universal:!1,condition:e=>_(e,"r")},{category:"documentation",tool:"roxygen2",installCmd:$(`Rscript -e 'install.packages("roxygen2")'`),universal:!1,condition:e=>_(e,"r")},{category:"unit_testing",tool:"hspec",installCmd:$("cabal install hspec"),universal:!1,condition:e=>_(e,"haskell")},{category:"linting",tool:"hlint",installCmd:$("cabal install hlint"),universal:!1,condition:e=>_(e,"haskell")},{category:"formatting",tool:"ormolu",installCmd:$("cabal install ormolu"),universal:!1,condition:e=>_(e,"haskell")},{category:"linting",tool:"perlcritic",installCmd:$("cpanm Perl::Critic"),universal:!1,condition:e=>_(e,"perl")},{category:"formatting",tool:"perltidy",installCmd:$("cpanm Perl::Tidy"),universal:!1,condition:e=>_(e,"perl")},{category:"linting",tool:"clj-kondo",installCmd:{win32:"echo clj-kondo \u2014 download from GitHub releases",darwin:"brew install borkdude/brew/clj-kondo",linux:"echo clj-kondo \u2014 download from GitHub releases"},universal:!1,condition:e=>_(e,"clojure")},{category:"formatting",tool:"cljfmt",installCmd:$("echo cljfmt \u2014 add to deps.edn"),universal:!1,condition:e=>_(e,"clojure")},{category:"formatting",tool:"juliaformatter",installCmd:$(`julia -e 'using Pkg; Pkg.add("JuliaFormatter")'`),universal:!1,condition:e=>_(e,"julia")},{category:"documentation",tool:"documenter",installCmd:$(`julia -e 'using Pkg; Pkg.add("Documenter")'`),universal:!1,condition:e=>_(e,"julia")},{category:"unit_testing",tool:"busted",installCmd:$("luarocks install busted"),universal:!1,condition:e=>_(e,"lua")},{category:"linting",tool:"luacheck",installCmd:$("luarocks install luacheck"),universal:!1,condition:e=>_(e,"lua")},{category:"formatting",tool:"stylua",installCmd:{win32:"cargo install stylua",darwin:"brew install stylua",linux:"cargo install stylua"},universal:!1,condition:e=>_(e,"lua")},{category:"unit_testing",tool:"forge-test",installCmd:{win32:"echo Foundry \u2014 install from https://getfoundry.sh",darwin:"curl -L https://foundry.paradigm.xyz | bash && foundryup",linux:"curl -L https://foundry.paradigm.xyz | bash && foundryup"},universal:!1,condition:e=>_(e,"solidity")},{category:"linting",tool:"solhint",installCmd:$("npm i -g solhint@latest"),universal:!1,condition:e=>_(e,"solidity")},{category:"formatting",tool:"prettier-solidity",installCmd:$("npm i -D prettier@latest prettier-plugin-solidity@latest"),universal:!1,condition:e=>_(e,"solidity")},{category:"security_analysis",tool:"slither",installCmd:$("pip install --upgrade slither-analyzer"),universal:!1,condition:e=>_(e,"solidity")},{category:"e2e_testing",tool:"detox",installCmd:$("npm i -D detox@latest"),universal:!1,condition:e=>ln(e,"react-native","expo")},{category:"linting",tool:"detekt",installCmd:$("echo detekt \u2014 add Gradle plugin"),universal:!1,condition:e=>ln(e,"jetpack-compose","kotlin-multiplatform")},{category:"linting",tool:"swiftlint",installCmd:{win32:"echo SwiftLint \u2014 not available on Windows",darwin:"brew install swiftlint",linux:"echo SwiftLint \u2014 install from GitHub releases"},universal:!1,condition:e=>ln(e,"swiftui","uikit")},{category:"e2e_testing",tool:"cypress",installCmd:$("npm i -D cypress@latest"),universal:!1,condition:e=>ln(e,"ionic","capacitor")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>ln(e,"maui")},{category:"linting",tool:"gdlint",installCmd:$("pip install --upgrade gdtoolkit"),universal:!1,condition:e=>_(e,"gdscript")},{category:"formatting",tool:"gdformat",installCmd:$("pip install --upgrade gdtoolkit"),universal:!1,condition:e=>_(e,"gdscript")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>_(e,"fsharp")},{category:"formatting",tool:"fantomas",installCmd:$("dotnet tool install -g fantomas"),universal:!1,condition:e=>_(e,"fsharp")},{category:"unit_testing",tool:"alcotest",installCmd:$("opam install alcotest"),universal:!1,condition:e=>_(e,"ocaml")},{category:"formatting",tool:"ocamlformat",installCmd:$("opam install ocamlformat"),universal:!1,condition:e=>_(e,"ocaml")},{category:"linting",tool:"elvis",installCmd:$("echo elvis \u2014 add as rebar3 plugin"),universal:!1,condition:e=>_(e,"erlang")},{category:"linting",tool:"ameba",installCmd:$("echo Ameba \u2014 add to shard.yml"),universal:!1,condition:e=>_(e,"crystal")},{category:"linting",tool:"codenarc",installCmd:$("echo CodeNarc \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"groovy")},{category:"linting",tool:"oclint",installCmd:{win32:"echo OCLint \u2014 not available on Windows",darwin:"brew install oclint",linux:"echo OCLint \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"objective-c")},{category:"formatting",tool:"clang-format",installCmd:{win32:"choco install llvm",darwin:"brew install clang-format",linux:"sudo apt-get install -y clang-format"},universal:!1,condition:e=>_(e,"objective-c")},{category:"unit_testing",tool:"mstest",installCmd:$("dotnet add package MSTest.TestFramework MSTest.TestAdapter"),universal:!1,condition:e=>_(e,"visual-basic")},{category:"unit_testing",tool:"pester",installCmd:$("Install-Module -Name Pester -Force -SkipPublisherCheck"),universal:!1,condition:e=>_(e,"powershell")},{category:"linting",tool:"psscriptanalyzer",installCmd:$("Install-Module -Name PSScriptAnalyzer -Force"),universal:!1,condition:e=>_(e,"powershell")}];function gk(e){let t=new Set,n=[];for(let o of EN)t.has(o.category)||o.condition(e)&&(n.push(o),t.add(o.category));return n}function ON(){return(0,_k.createInterface)({input:process.stdin,output:process.stdout})}function Mh(e,t){return new Promise(n=>{e.question(t,o=>n(o.trim()))})}async function Uh(e,t,n,o="Invalid choice. Enter a number."){console.log(`
|
|
53
|
+
`)}var nr="0.26.0";var Eh={en:{dev:"Development (plan \u2192 implement \u2192 test \u2192 quality \u2192 docs in stages)",check:"Quality gate (verify Spec alignment, tests, types, lint, security)",docs:"Generate/update documentation",ship:"Ship (commit at proper granularity \u2192 quality check \u2192 push \u2192 create PR)",setup:"Environment setup (with recommended stack presets, confirms missing info)",review:"Review (CTO-level review + quality gate)",test:"Run/create tests",impact:"Impact analysis",commit:"Commit changes",push:"Push to remote",pr:"Create PR (template-compliant)",deploy:"Deploy (with verification & rollback plan)",adr:"Create ADR (Architecture Decision Record)",release:"Generate release notes (SemVer-compliant)",github:"GitHub configuration (repository/branch protection, etc.)",config:"Generate/repair config.godd (auto-detect stack + validation)"},ja:{dev:"\u958B\u767A\uFF08\u6BB5\u968E\u7684\u306B\u8A08\u753B\u2192\u5B9F\u88C5\u2192\u30C6\u30B9\u30C8\u2192\u54C1\u8CEA\u2192\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u5B9F\u884C\uFF09",check:"\u54C1\u8CEA\u30B2\u30FC\u30C8\uFF08Spec\u6574\u5408\u30FB\u30C6\u30B9\u30C8\u30FB\u578B\u30FBLint\u30FB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3092\u691C\u8A3C\uFF09",docs:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u751F\u6210/\u66F4\u65B0",ship:"\u63D0\u51FA\uFF08\u9069\u5207\u306A\u7C92\u5EA6\u3067\u30B3\u30DF\u30C3\u30C8 \u2192 \u54C1\u8CEA\u30C1\u30A7\u30C3\u30AF \u2192 \u30D7\u30C3\u30B7\u30E5 \u2192 PR \u4F5C\u6210\uFF09",setup:"\u74B0\u5883\u69CB\u7BC9\uFF08\u63A8\u5968\u30B9\u30BF\u30C3\u30AF\u30D7\u30EA\u30BB\u30C3\u30C8\u4ED8\u304D\u30FB\u4E0D\u8DB3\u60C5\u5831\u306F\u78BA\u8A8D\uFF09",review:"\u30EC\u30D3\u30E5\u30FC\uFF08CTO \u30EC\u30D9\u30EB\u306E\u30EC\u30D3\u30E5\u30FC + \u54C1\u8CEA\u30B2\u30FC\u30C8\uFF09",test:"\u30C6\u30B9\u30C8\u5B9F\u884C/\u4F5C\u6210",impact:"\u5F71\u97FF\u5206\u6790",commit:"\u5909\u66F4\u3092\u30B3\u30DF\u30C3\u30C8",push:"\u30EA\u30E2\u30FC\u30C8\u306B\u30D7\u30C3\u30B7\u30E5",pr:"PR \u4F5C\u6210\uFF08\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u6E96\u62E0\uFF09",deploy:"\u30C7\u30D7\u30ED\u30A4\uFF08\u691C\u8A3C\u30FB\u30ED\u30FC\u30EB\u30D0\u30C3\u30AF\u8A08\u753B\u4ED8\u304D\uFF09",adr:"ADR\uFF08Architecture Decision Record\uFF09\u4F5C\u6210",release:"\u30EA\u30EA\u30FC\u30B9\u30CE\u30FC\u30C8\u751F\u6210\uFF08SemVer \u6E96\u62E0\uFF09",github:"GitHub \u8A2D\u5B9A\uFF08\u30EA\u30DD\u30B8\u30C8\u30EA/\u30D6\u30E9\u30F3\u30C1\u4FDD\u8B77\u7B49\uFF09",config:"config.godd \u3092\u6B63\u78BA\u306B\u751F\u6210\u30FB\u4FEE\u6B63\u3059\u308B\uFF08\u30B9\u30BF\u30C3\u30AF\u81EA\u52D5\u691C\u51FA + \u30D0\u30EA\u30C7\u30FC\u30B7\u30E7\u30F3\uFF09"},ru:{dev:"\u0420\u0430\u0437\u0440\u0430\u0431\u043E\u0442\u043A\u0430 (\u043F\u043B\u0430\u043D \u2192 \u0440\u0435\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u2192 \u0442\u0435\u0441\u0442\u044B \u2192 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u043E \u2192 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F \u043F\u043E\u044D\u0442\u0430\u043F\u043D\u043E)",check:"\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430 (Spec, \u0442\u0435\u0441\u0442\u044B, \u0442\u0438\u043F\u044B, \u043B\u0438\u043D\u0442\u0435\u0440, \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u044C)",docs:"\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F/\u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0434\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u0438",ship:"\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430 (\u043A\u043E\u043C\u043C\u0438\u0442 \u2192 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u2192 \u043F\u0443\u0448 \u2192 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 PR)",setup:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0441\u0440\u0435\u0434\u044B (\u0441 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u043C\u0438 \u043F\u0440\u0435\u0441\u0435\u0442\u0430\u043C\u0438 \u0441\u0442\u0435\u043A\u0430)",review:"\u0420\u0435\u0432\u044C\u044E (CTO-\u0443\u0440\u043E\u0432\u0435\u043D\u044C + \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0430)",test:"\u0417\u0430\u043F\u0443\u0441\u043A/\u0441\u043E\u0437\u0434\u0430\u043D\u0438\u0435 \u0442\u0435\u0441\u0442\u043E\u0432",impact:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0432\u043B\u0438\u044F\u043D\u0438\u044F",commit:"\u0417\u0430\u0444\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F",push:"\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C \u0432 \u0443\u0434\u0430\u043B\u0451\u043D\u043D\u044B\u0439 \u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439",pr:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C PR (\u043F\u043E \u0448\u0430\u0431\u043B\u043E\u043D\u0443)",deploy:"\u0420\u0430\u0437\u0432\u0435\u0440\u043D\u0443\u0442\u044C (\u0441 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u043E\u0439 \u0438 \u043F\u043B\u0430\u043D\u043E\u043C \u043E\u0442\u043A\u0430\u0442\u0430)",adr:"\u0421\u043E\u0437\u0434\u0430\u0442\u044C ADR (\u0437\u0430\u043F\u0438\u0441\u044C \u0430\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u043D\u043E\u0433\u043E \u0440\u0435\u0448\u0435\u043D\u0438\u044F)",release:"\u0421\u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0437\u0430\u043C\u0435\u0442\u043A\u0438 \u043A \u0440\u0435\u043B\u0438\u0437\u0443 (SemVer)",github:"\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 GitHub (\u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439/\u0437\u0430\u0449\u0438\u0442\u0430 \u0432\u0435\u0442\u043E\u043A \u0438 \u0442.\u0434.)",config:"\u0413\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u044F/\u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 config.godd (\u0430\u0432\u0442\u043E\u0434\u0435\u0442\u0435\u043A\u0442 \u0441\u0442\u0435\u043A\u0430 + \u0432\u0430\u043B\u0438\u0434\u0430\u0446\u0438\u044F)"}};var zN={dev:[{name:"request",required:!0},{name:"done_when",required:!1}],check:[{name:"target",required:!1}],docs:[{name:"target",required:!1}],ship:[{name:"title",required:!1}],review:[{name:"target",required:!1},{name:"action",required:!1}],test:[{name:"target",required:!1}],impact:[{name:"target",required:!1}],commit:[{name:"message",required:!1}],pr:[{name:"title",required:!1}],deploy:[{name:"target",required:!1}],adr:[{name:"title",required:!1}],release:[{name:"tag",required:!1}],setup:[{name:"preset",required:!1}],github:[{name:"request",required:!1}],config:[]},Oh={en:{dev:{request:"Request details",done_when:"Completion criteria"},check:{target:"Check target (omit for all recent changes)"},docs:{target:"Target file/feature"},ship:{title:"PR title"},review:{target:"Target file/PR (e.g., PR URL, PR number, file path)",action:"Post-review action (approve / request-changes / comment)"},test:{target:"Test target"},impact:{target:"Analysis target"},commit:{message:"Commit message"},pr:{title:"PR title"},deploy:{target:"Deploy target"},adr:{title:"Decision title"},release:{tag:"Target tag (omit for HEAD since last release)"},setup:{preset:"Stack preset (omakase = recommended)"},github:{request:"Configuration request"}},ja:{dev:{request:"\u4F9D\u983C\u5185\u5BB9",done_when:"\u5B8C\u4E86\u6761\u4EF6"},check:{target:"\u30C1\u30A7\u30C3\u30AF\u5BFE\u8C61\uFF08\u7701\u7565\u6642: \u76F4\u8FD1\u306E\u5909\u66F4\u5168\u4F53\uFF09"},docs:{target:"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB/\u6A5F\u80FD"},ship:{title:"PR \u30BF\u30A4\u30C8\u30EB"},review:{target:"\u5BFE\u8C61\u30D5\u30A1\u30A4\u30EB/PR\uFF08\u4F8B: PR URL, PR\u756A\u53F7, \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\uFF09",action:"\u30EC\u30D3\u30E5\u30FC\u5F8C\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\uFF08approve / request-changes / comment\uFF09"},test:{target:"\u30C6\u30B9\u30C8\u5BFE\u8C61"},impact:{target:"\u5206\u6790\u5BFE\u8C61"},commit:{message:"\u30B3\u30DF\u30C3\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8"},pr:{title:"PR \u30BF\u30A4\u30C8\u30EB"},deploy:{target:"\u30C7\u30D7\u30ED\u30A4\u5148"},adr:{title:"\u5224\u65AD\u306E\u30BF\u30A4\u30C8\u30EB"},release:{tag:"\u5BFE\u8C61\u30BF\u30B0\uFF08\u7701\u7565\u6642: \u76F4\u8FD1\u30EA\u30EA\u30FC\u30B9\u304B\u3089 HEAD\uFF09"},setup:{preset:"\u30B9\u30BF\u30C3\u30AF\u30D7\u30EA\u30BB\u30C3\u30C8\uFF08omakase = \u63A8\u5968\u69CB\u6210\uFF09"},github:{request:"\u8A2D\u5B9A\u5185\u5BB9"}},ru:{dev:{request:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438",done_when:"\u041A\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0438\u044F"},check:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: \u0432\u0441\u0435 \u043D\u0435\u0434\u0430\u0432\u043D\u0438\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F)"},docs:{target:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B/\u0444\u0443\u043D\u043A\u0446\u0438\u044F"},ship:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A PR"},review:{target:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0444\u0430\u0439\u043B/PR (URL PR, \u043D\u043E\u043C\u0435\u0440 PR, \u043F\u0443\u0442\u044C \u043A \u0444\u0430\u0439\u043B\u0443)",action:"\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043F\u043E\u0441\u043B\u0435 \u0440\u0435\u0432\u044C\u044E (approve / request-changes / comment)"},test:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F"},impact:{target:"\u041E\u0431\u044A\u0435\u043A\u0442 \u0430\u043D\u0430\u043B\u0438\u0437\u0430"},commit:{message:"\u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043A\u043E\u043C\u043C\u0438\u0442\u0430"},pr:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A PR"},deploy:{target:"\u0426\u0435\u043B\u044C \u0440\u0430\u0437\u0432\u0451\u0440\u0442\u044B\u0432\u0430\u043D\u0438\u044F"},adr:{title:"\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u0440\u0435\u0448\u0435\u043D\u0438\u044F"},release:{tag:"\u0426\u0435\u043B\u0435\u0432\u043E\u0439 \u0442\u0435\u0433 (\u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E: \u043E\u0442 HEAD \u0434\u043E \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0440\u0435\u043B\u0438\u0437\u0430)"},setup:{preset:"\u041F\u0440\u0435\u0441\u0435\u0442 \u0441\u0442\u0435\u043A\u0430 (omakase = \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F)"},github:{request:"\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438"}}},IN=["dev","check","docs","ship","setup","review","test","impact","commit","push","pr","deploy","adr","release","github","config"];var Nh={dev:{slugs:["common","dev"]},ship:{slugs:["common","commit","push","pr","check"]},review:{slugs:["common","review","check"]}};var pk=new Set(["dev","review","setup","test","impact","docs","check","deploy","adr","release"]);function Ch(e){return e in Nh||pk.has(e)}function Rh(e){if(Nh[e])return Nh[e].slugs;if(pk.has(e))return["common",e]}var Dh=new Set(["config"]);function Zh(e="en"){let t=W.toolPrefix,n=Eh[e]??Eh.en;return IN.map(o=>({name:`${t}${o}`,description:n[o]??Eh.en[o]}))}function fk(e="en"){let t=W.toolPrefix,n=Oh[e]??Oh.en,o=Oh.en;return Zh(e).map(r=>{let i=r.name.replace(t,""),a=zN[i]??[];return{name:r.name,description:r.description,inputSchema:{type:"object",properties:Object.fromEntries(a.map(s=>[s.name,{type:"string",description:n[i]?.[s.name]??o[i]?.[s.name]??s.name}])),required:a.filter(s=>s.required).map(s=>s.name)}}})}var Po=require("node:fs"),bk=require("node:path");var at=require("node:fs"),le=require("node:path"),_k=require("node:readline"),ed=require("node:child_process");var PN={selectDisplayLanguage:"Select display language:",selectMainLanguage:"Select the main language for your project:",selectSubLanguages:"Select sub-languages used in your team:",selectSubLanguagesHint:"(comma-separated numbers, or press Enter to skip)",skipSubLanguages:"No sub-languages selected.",scanningProject:"Scanning project...",detectedStack:"Detected stack:",confirmStack:"Is this correct?",manualStackEntry:"Please select your tech stack manually.",selectProjectType:"What are you building? (select all that apply)",projectTypes:{web:"Web App (frontend + backend)",api:"API / Backend only",mobile:"Mobile App",game:"Game",cli:"CLI / Library / Script",desktop:"Desktop App"},selectProgrammingLanguages:"Programming languages:",selectFrontend:"Frontend frameworks:",selectBackend:"Backend frameworks:",selectDatabase:"Databases:",selectOrm:"ORM:",selectInfra:"Infrastructure:",selectGame:"Game engines / frameworks:",selectMobile:"Mobile / Cross-platform:",toolRecommendationsTitle:"Recommended tools for your stack:",toolInstallMode:"How would you like to install?",toolInstallDefault:"Default (install all)",toolInstallCustom:"Custom (choose individually)",toolInstallSkip:"Skip (install later)",toolInstallPrompt:"Install?",toolInstalling:"Installing",toolInstallSuccess:"Installed successfully.",toolInstallFailed:"Installation failed. You can install it later via setup prompt.",toolUniversalTag:"all projects",toolStackSpecificTag:"your stack",toolCategories:{vcs:"Version Control",browser_automation:"Browser Automation",e2e_testing:"E2E Testing",unit_testing:"Unit Testing",linting:"Linting",formatting:"Formatting",type_checking:"Type Checking",coverage:"Coverage",documentation:"Documentation",secret_scanning:"Secret Scanning",security_analysis:"Security Analysis",unused_code:"Unused Code Detection",dependency_analysis:"Dependency Analysis"},githubDetected:"GitHub repository detected. Configuring auto-delete for merged branches...",githubConfigSuccess:"\u2713 Merged branches will be auto-deleted on GitHub.",githubConfigFailed:"\u2717 Could not configure auto-delete. Run `gh repo edit --delete-branch-on-merge` manually.",configCreated:"Generated",configExists:"already exists",configOverwritten:"Overwritten",useForceFlag:"Use --force to overwrite.",languages:"Languages",frontend:"Frontend",backend:"Backend",database:"Database",orm:"ORM",infra:"Infra",game:"Game",mobile:"Mobile",pressEnterToClose:"Press Enter to close...",unknownCommand:"Unknown command",usage:"Usage:",installSuccess:"Registered with Cursor!",installUpdated:"Configuration updated",installUnchanged:"Already up to date",licenseNotSet:"License key is not set. Set GODD_LICENSE_KEY environment variable or run: godd install --license-key=YOUR_KEY",restartCursor:"Restart Cursor to activate the MCP server.",installFailed:"Installation failed:",uninstallTitle:"Uninstall",uninstallSuccess:"Removed from Cursor",uninstallNotFound:"Not found (already removed)",uninstallFailed:"Uninstall failed:",initTitle:"Project initialization",yes:"Yes",no:"No",none:"None",invalidChoice:"Invalid choice. Please try again.",enterNumbers:"Enter numbers",updateAvailable:"A newer version is available:",updateCurrent:"current:",licenseMissing:"GODD_LICENSE_KEY environment variable is not set.",licenseMissingHint:"Re-register with: godd install --license-key=YOUR_KEY",licenseFailed:"License validation failed",configNotFound:"not found in project directory.",configNotFoundHint:'Run "godd init" to generate project configuration for better prompt accuracy.',configUnknownValues:"contains unknown values:",didYouMean:"did you mean",serverStarted:"started (stdio)",corruptMcpJson:"is corrupt. Backed up to {backup} and creating a fresh config."},TN={selectDisplayLanguage:"\u8868\u793A\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectMainLanguage:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30A4\u30F3\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectSubLanguages:"\u30C1\u30FC\u30E0\u3067\u4F7F\u7528\u3059\u308B\u30B5\u30D6\u8A00\u8A9E\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",selectSubLanguagesHint:"(\u30AB\u30F3\u30DE\u533A\u5207\u308A\u306E\u756A\u53F7\u3001\u307E\u305F\u306FEnter\u3067\u30B9\u30AD\u30C3\u30D7)",skipSubLanguages:"\u30B5\u30D6\u8A00\u8A9E\u306F\u9078\u629E\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002",scanningProject:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3092\u30B9\u30AD\u30E3\u30F3\u4E2D...",detectedStack:"\u691C\u51FA\u3055\u308C\u305F\u30B9\u30BF\u30C3\u30AF:",confirmStack:"\u3053\u306E\u5185\u5BB9\u3067\u6B63\u3057\u3044\u3067\u3059\u304B\uFF1F",manualStackEntry:"\u6280\u8853\u30B9\u30BF\u30C3\u30AF\u3092\u624B\u52D5\u3067\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002",selectProjectType:"\u4F55\u3092\u4F5C\u308A\u307E\u3059\u304B\uFF1F\uFF08\u8A72\u5F53\u3059\u308B\u3082\u306E\u3092\u3059\u3079\u3066\u9078\u629E\uFF09",projectTypes:{web:"Web \u30A2\u30D7\u30EA\uFF08\u30D5\u30ED\u30F3\u30C8 + \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\uFF09",api:"API / \u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u306E\u307F",mobile:"\u30E2\u30D0\u30A4\u30EB\u30A2\u30D7\u30EA",game:"\u30B2\u30FC\u30E0",cli:"CLI / \u30E9\u30A4\u30D6\u30E9\u30EA / \u30B9\u30AF\u30EA\u30D7\u30C8",desktop:"\u30C7\u30B9\u30AF\u30C8\u30C3\u30D7\u30A2\u30D7\u30EA"},selectProgrammingLanguages:"\u30D7\u30ED\u30B0\u30E9\u30DF\u30F3\u30B0\u8A00\u8A9E:",selectFrontend:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectBackend:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectDatabase:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9:",selectOrm:"ORM:",selectInfra:"\u30A4\u30F3\u30D5\u30E9:",selectGame:"\u30B2\u30FC\u30E0\u30A8\u30F3\u30B8\u30F3 / \u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF:",selectMobile:"\u30E2\u30D0\u30A4\u30EB / \u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0:",toolRecommendationsTitle:"\u30B9\u30BF\u30C3\u30AF\u306B\u63A8\u5968\u3055\u308C\u308B\u30C4\u30FC\u30EB:",toolInstallMode:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u65B9\u6CD5\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044:",toolInstallDefault:"\u30C7\u30D5\u30A9\u30EB\u30C8\uFF08\u3059\u3079\u3066\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\uFF09",toolInstallCustom:"\u30AB\u30B9\u30BF\u30E0\uFF08\u500B\u5225\u306B\u9078\u629E\uFF09",toolInstallSkip:"\u30B9\u30AD\u30C3\u30D7\uFF08\u5F8C\u3067\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\uFF09",toolInstallPrompt:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u307E\u3059\u304B\uFF1F",toolInstalling:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u4E2D",toolInstallSuccess:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u304C\u5B8C\u4E86\u3057\u307E\u3057\u305F\u3002",toolInstallFailed:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002setup \u30D7\u30ED\u30F3\u30D7\u30C8\u3067\u5F8C\u304B\u3089\u5BFE\u5FDC\u3067\u304D\u307E\u3059\u3002",toolUniversalTag:"\u5168\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5171\u901A",toolStackSpecificTag:"\u30B9\u30BF\u30C3\u30AF\u56FA\u6709",toolCategories:{vcs:"\u30D0\u30FC\u30B8\u30E7\u30F3\u7BA1\u7406",browser_automation:"\u30D6\u30E9\u30A6\u30B6\u81EA\u52D5\u5316",e2e_testing:"E2E \u30C6\u30B9\u30C8",unit_testing:"\u30E6\u30CB\u30C3\u30C8\u30C6\u30B9\u30C8",linting:"\u30EA\u30F3\u30BF\u30FC",formatting:"\u30D5\u30A9\u30FC\u30DE\u30C3\u30BF\u30FC",type_checking:"\u578B\u30C1\u30A7\u30C3\u30AF",coverage:"\u30AB\u30D0\u30EC\u30C3\u30B8",documentation:"\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u751F\u6210",secret_scanning:"\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u30B9\u30AD\u30E3\u30F3",security_analysis:"\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u5206\u6790",unused_code:"\u672A\u4F7F\u7528\u30B3\u30FC\u30C9\u691C\u51FA",dependency_analysis:"\u4F9D\u5B58\u5206\u6790"},githubDetected:"GitHub \u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u691C\u51FA\u3057\u307E\u3057\u305F\u3002\u30DE\u30FC\u30B8\u6E08\u307F\u30D6\u30E9\u30F3\u30C1\u306E\u81EA\u52D5\u524A\u9664\u3092\u8A2D\u5B9A\u4E2D...",githubConfigSuccess:"\u2713 \u30DE\u30FC\u30B8\u6E08\u307F\u30D6\u30E9\u30F3\u30C1\u306F GitHub \u4E0A\u3067\u81EA\u52D5\u524A\u9664\u3055\u308C\u307E\u3059\u3002",githubConfigFailed:"\u2717 \u81EA\u52D5\u524A\u9664\u306E\u8A2D\u5B9A\u306B\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u624B\u52D5\u3067 `gh repo edit --delete-branch-on-merge` \u3092\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",configCreated:"\u3092\u751F\u6210\u3057\u307E\u3057\u305F",configExists:"\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059",configOverwritten:"\u3092\u4E0A\u66F8\u304D\u3057\u307E\u3057\u305F",useForceFlag:"\u4E0A\u66F8\u304D\u3059\u308B\u5834\u5408\u306F --force \u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002",languages:"\u8A00\u8A9E",frontend:"\u30D5\u30ED\u30F3\u30C8\u30A8\u30F3\u30C9",backend:"\u30D0\u30C3\u30AF\u30A8\u30F3\u30C9",database:"\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9",orm:"ORM",infra:"\u30A4\u30F3\u30D5\u30E9",game:"\u30B2\u30FC\u30E0",mobile:"\u30E2\u30D0\u30A4\u30EB",pressEnterToClose:"Enter \u30AD\u30FC\u3092\u62BC\u3059\u3068\u9589\u3058\u307E\u3059...",unknownCommand:"\u4E0D\u660E\u306A\u30B3\u30DE\u30F3\u30C9",usage:"\u4F7F\u3044\u65B9:",installSuccess:"Cursor \u306B\u767B\u9332\u3057\u307E\u3057\u305F\uFF01",installUpdated:"\u8A2D\u5B9A\u3092\u66F4\u65B0\u3057\u307E\u3057\u305F",installUnchanged:"\u65E2\u306B\u6700\u65B0\u306E\u8A2D\u5B9A\u3067\u3059",licenseNotSet:"\u30E9\u30A4\u30BB\u30F3\u30B9\u30AD\u30FC\u304C\u672A\u8A2D\u5B9A\u3067\u3059\u3002\u74B0\u5883\u5909\u6570 GODD_LICENSE_KEY \u3092\u8A2D\u5B9A\u3059\u308B\u304B\u3001godd install --license-key=YOUR_KEY \u3067\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",restartCursor:"Cursor \u3092\u518D\u8D77\u52D5\u3059\u308B\u3068 MCP \u30B5\u30FC\u30D0\u30FC\u304C\u6709\u52B9\u306B\u306A\u308A\u307E\u3059\u3002",installFailed:"\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F:",uninstallTitle:"\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB",uninstallSuccess:"Cursor \u304B\u3089\u524A\u9664\u3057\u307E\u3057\u305F",uninstallNotFound:"\u767B\u9332\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u65E2\u306B\u524A\u9664\u6E08\u307F\uFF09",uninstallFailed:"\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u306B\u5931\u6557\u3057\u307E\u3057\u305F:",initTitle:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u521D\u671F\u5316",yes:"\u306F\u3044",no:"\u3044\u3044\u3048",none:"\u306A\u3057",invalidChoice:"\u7121\u52B9\u306A\u9078\u629E\u3067\u3059\u3002\u3082\u3046\u4E00\u5EA6\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002",enterNumbers:"\u756A\u53F7\u3092\u5165\u529B",updateAvailable:"\u65B0\u3057\u3044\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059:",updateCurrent:"\u73FE\u5728:",licenseMissing:"GODD_LICENSE_KEY \u74B0\u5883\u5909\u6570\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002",licenseMissingHint:"godd install --license-key=YOUR_KEY \u3067\u518D\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\u3002",licenseFailed:"\u30E9\u30A4\u30BB\u30F3\u30B9\u691C\u8A3C\u5931\u6557",configNotFound:"\u304C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002",configNotFoundHint:"\u300Cgodd init\u300D\u3092\u5B9F\u884C\u3057\u3066\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u8A2D\u5B9A\u3092\u751F\u6210\u3059\u308B\u3068\u3001\u30D7\u30ED\u30F3\u30D7\u30C8\u306E\u7CBE\u5EA6\u304C\u5411\u4E0A\u3057\u307E\u3059\u3002",configUnknownValues:"\u306B\u4E0D\u660E\u306A\u5024\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059:",didYouMean:"\u3082\u3057\u304B\u3057\u3066",serverStarted:"\u3092\u8D77\u52D5\u3057\u307E\u3057\u305F (stdio)",corruptMcpJson:"\u304C\u58CA\u308C\u3066\u3044\u307E\u3059\u3002{backup} \u306B\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3092\u4F5C\u6210\u3057\u3001\u65B0\u898F\u8A2D\u5B9A\u3092\u4F5C\u6210\u3057\u307E\u3059\u3002"},jN={selectDisplayLanguage:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u044F\u0437\u044B\u043A \u043E\u0442\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F:",selectMainLanguage:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043E\u0441\u043D\u043E\u0432\u043D\u043E\u0439 \u044F\u0437\u044B\u043A \u043F\u0440\u043E\u0435\u043A\u0442\u0430:",selectSubLanguages:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043A\u043E\u043C\u0430\u043D\u0434\u044B:",selectSubLanguagesHint:"(\u043D\u043E\u043C\u0435\u0440\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043F\u044F\u0442\u0443\u044E \u0438\u043B\u0438 Enter \u0434\u043B\u044F \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u0430)",skipSubLanguages:"\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u044F\u0437\u044B\u043A\u0438 \u043D\u0435 \u0432\u044B\u0431\u0440\u0430\u043D\u044B.",scanningProject:"\u0421\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430...",detectedStack:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u044B\u0439 \u0441\u0442\u0435\u043A:",confirmStack:"\u0412\u0441\u0451 \u0432\u0435\u0440\u043D\u043E?",manualStackEntry:"\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u0445\u043D\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0441\u0442\u0435\u043A \u0432\u0440\u0443\u0447\u043D\u0443\u044E.",selectProjectType:"\u0427\u0442\u043E \u0432\u044B \u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0435? (\u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432\u0441\u0435 \u043F\u043E\u0434\u0445\u043E\u0434\u044F\u0449\u0438\u0435)",projectTypes:{web:"\u0412\u0435\u0431-\u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 (\u0444\u0440\u043E\u043D\u0442\u0435\u043D\u0434 + \u0431\u044D\u043A\u0435\u043D\u0434)",api:"API / \u0442\u043E\u043B\u044C\u043A\u043E \u0431\u044D\u043A\u0435\u043D\u0434",mobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435",game:"\u0418\u0433\u0440\u0430",cli:"CLI / \u0411\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0430 / \u0421\u043A\u0440\u0438\u043F\u0442",desktop:"\u0414\u0435\u0441\u043A\u0442\u043E\u043F\u043D\u043E\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435"},selectProgrammingLanguages:"\u042F\u0437\u044B\u043A\u0438 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F:",selectFrontend:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectBackend:"\u0411\u044D\u043A\u0435\u043D\u0434-\u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectDatabase:"\u0411\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445:",selectOrm:"ORM:",selectInfra:"\u0418\u043D\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430:",selectGame:"\u0418\u0433\u0440\u043E\u0432\u044B\u0435 \u0434\u0432\u0438\u0436\u043A\u0438 / \u0444\u0440\u0435\u0439\u043C\u0432\u043E\u0440\u043A\u0438:",selectMobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435 / \u043A\u0440\u043E\u0441\u0441\u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435\u043D\u043D\u044B\u0435:",toolRecommendationsTitle:"\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u0435 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u044B \u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u0442\u0435\u043A\u0430:",toolInstallMode:"\u041A\u0430\u043A \u0432\u044B \u0445\u043E\u0442\u0438\u0442\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C?",toolInstallDefault:"\u041F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0432\u0441\u0435)",toolInstallCustom:"\u0412\u044B\u0431\u043E\u0440\u043E\u0447\u043D\u043E (\u0432\u044B\u0431\u0440\u0430\u0442\u044C \u043F\u043E \u043E\u0434\u043D\u043E\u043C\u0443)",toolInstallSkip:"\u041F\u0440\u043E\u043F\u0443\u0441\u0442\u0438\u0442\u044C (\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435)",toolInstallPrompt:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C?",toolInstalling:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430",toolInstallSuccess:"\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u043E.",toolInstallFailed:"\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C. \u041C\u043E\u0436\u043D\u043E \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u043E\u0437\u0436\u0435 \u0447\u0435\u0440\u0435\u0437 setup.",toolUniversalTag:"\u0432\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B",toolStackSpecificTag:"\u0434\u043B\u044F \u0432\u0430\u0448\u0435\u0433\u043E \u0441\u0442\u0435\u043A\u0430",toolCategories:{vcs:"\u041A\u043E\u043D\u0442\u0440\u043E\u043B\u044C \u0432\u0435\u0440\u0441\u0438\u0439",browser_automation:"\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430",e2e_testing:"E2E \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",unit_testing:"\u042E\u043D\u0438\u0442-\u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",linting:"\u041B\u0438\u043D\u0442\u0438\u043D\u0433",formatting:"\u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435",type_checking:"\u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0442\u0438\u043F\u043E\u0432",coverage:"\u041F\u043E\u043A\u0440\u044B\u0442\u0438\u0435 \u043A\u043E\u0434\u0430",documentation:"\u0414\u043E\u043A\u0443\u043C\u0435\u043D\u0442\u0430\u0446\u0438\u044F",secret_scanning:"\u0421\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0441\u0435\u043A\u0440\u0435\u0442\u043E\u0432",security_analysis:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438",unused_code:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u0435 \u043D\u0435\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u043E\u0433\u043E \u043A\u043E\u0434\u0430",dependency_analysis:"\u0410\u043D\u0430\u043B\u0438\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0435\u0439"},githubDetected:"\u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0451\u043D GitHub-\u0440\u0435\u043F\u043E\u0437\u0438\u0442\u043E\u0440\u0438\u0439. \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0430\u0432\u0442\u043E\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u043E\u0431\u044A\u0435\u0434\u0438\u043D\u0451\u043D\u043D\u044B\u0445 \u0432\u0435\u0442\u043E\u043A...",githubConfigSuccess:"\u2713 \u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0451\u043D\u043D\u044B\u0435 \u0432\u0435\u0442\u043A\u0438 \u0431\u0443\u0434\u0443\u0442 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u0443\u0434\u0430\u043B\u044F\u0442\u044C\u0441\u044F \u043D\u0430 GitHub.",githubConfigFailed:"\u2717 \u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0438\u0442\u044C \u0430\u0432\u0442\u043E\u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0435. \u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 `gh repo edit --delete-branch-on-merge` \u0432\u0440\u0443\u0447\u043D\u0443\u044E.",configCreated:"\u0421\u043E\u0437\u0434\u0430\u043D",configExists:"\u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442",configOverwritten:"\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u043D",useForceFlag:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439\u0442\u0435 --force \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0438.",languages:"\u042F\u0437\u044B\u043A\u0438",frontend:"\u0424\u0440\u043E\u043D\u0442\u0435\u043D\u0434",backend:"\u0411\u044D\u043A\u0435\u043D\u0434",database:"\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445",orm:"ORM",infra:"\u0418\u043D\u0444\u0440\u0430",game:"\u0418\u0433\u0440\u044B",mobile:"\u041C\u043E\u0431\u0438\u043B\u044C\u043D\u044B\u0435",pressEnterToClose:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 Enter \u0434\u043B\u044F \u0432\u044B\u0445\u043E\u0434\u0430...",unknownCommand:"\u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u0430\u044F \u043A\u043E\u043C\u0430\u043D\u0434\u0430",usage:"\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u043D\u0438\u0435:",installSuccess:"\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u043D\u043E \u0432 Cursor!",installUpdated:"\u041A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F \u043E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0430",installUnchanged:"\u0423\u0436\u0435 \u0430\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E",licenseNotSet:"\u041B\u0438\u0446\u0435\u043D\u0437\u0438\u043E\u043D\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u043D\u0435 \u0437\u0430\u0434\u0430\u043D. \u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 GODD_LICENSE_KEY \u0438\u043B\u0438 \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435: godd install --license-key=YOUR_KEY",restartCursor:"\u041F\u0435\u0440\u0435\u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 Cursor \u0434\u043B\u044F \u0430\u043A\u0442\u0438\u0432\u0430\u0446\u0438\u0438 MCP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.",installFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438:",uninstallTitle:"\u0423\u0434\u0430\u043B\u0435\u043D\u0438\u0435",uninstallSuccess:"\u0423\u0434\u0430\u043B\u0435\u043D\u043E \u0438\u0437 Cursor",uninstallNotFound:"\u041D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E (\u0443\u0436\u0435 \u0443\u0434\u0430\u043B\u0435\u043D\u043E)",uninstallFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F:",initTitle:"\u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043F\u0440\u043E\u0435\u043A\u0442\u0430",yes:"\u0414\u0430",no:"\u041D\u0435\u0442",none:"\u041D\u0435\u0442",invalidChoice:"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u044B\u0431\u043E\u0440. \u041F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437.",enterNumbers:"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440\u0430",updateAvailable:"\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0430 \u043D\u043E\u0432\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F:",updateCurrent:"\u0442\u0435\u043A\u0443\u0449\u0430\u044F:",licenseMissing:"\u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F \u0441\u0440\u0435\u0434\u044B GODD_LICENSE_KEY \u043D\u0435 \u0437\u0430\u0434\u0430\u043D\u0430.",licenseMissingHint:"\u041F\u043E\u0432\u0442\u043E\u0440\u043D\u043E \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0439\u0442\u0435: godd install --license-key=YOUR_KEY",licenseFailed:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0432\u0435\u0440\u043A\u0438 \u043B\u0438\u0446\u0435\u043D\u0437\u0438\u0438",configNotFound:"\u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D \u0432 \u0434\u0438\u0440\u0435\u043A\u0442\u043E\u0440\u0438\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430.",configNotFoundHint:'\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 "godd init" \u0434\u043B\u044F \u0433\u0435\u043D\u0435\u0440\u0430\u0446\u0438\u0438 \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043F\u0440\u043E\u0435\u043A\u0442\u0430.',configUnknownValues:"\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F:",didYouMean:"\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u0432\u044B \u0438\u043C\u0435\u043B\u0438 \u0432 \u0432\u0438\u0434\u0443",serverStarted:"\u0437\u0430\u043F\u0443\u0449\u0435\u043D (stdio)",corruptMcpJson:"\u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0451\u043D. \u0420\u0435\u0437\u0435\u0440\u0432\u043D\u0430\u044F \u043A\u043E\u043F\u0438\u044F: {backup}. \u0421\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u043D\u043E\u0432\u0430\u044F \u043A\u043E\u043D\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044F."},mk={en:PN,ja:TN,ru:jN};function Je(e){return mk[e]??mk.en}var Ah={en:"English",ja:"\u65E5\u672C\u8A9E",ru:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439"};var $=e=>({win32:e,darwin:e,linux:e}),_=(e,...t)=>t.some(n=>e.programming_languages.includes(n)),ln=(e,...t)=>t.some(n=>e.mobile.includes(n)),EN=[{category:"vcs",tool:"gh",installCmd:{win32:"winget install GitHub.cli",darwin:"brew install gh",linux:'(type -p wget >/dev/null || sudo apt-get install wget -y) && sudo mkdir -p -m 755 /etc/apt/keyrings && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null && sudo apt-get update && sudo apt-get install gh -y'},universal:!0,condition:()=>!0},{category:"browser_automation",tool:"browser-use",installCmd:$("pip install --upgrade browser-use"),universal:!0,condition:()=>!0},{category:"secret_scanning",tool:"gitleaks",installCmd:{win32:"winget install Gitleaks.Gitleaks",darwin:"brew install gitleaks",linux:"go install github.com/gitleaks/gitleaks/v8@latest"},universal:!0,condition:()=>!0},{category:"e2e_testing",tool:"playwright",installCmd:$("npm i -D @playwright/test@latest && npx playwright install"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"unit_testing",tool:"vitest",installCmd:$("npm i -D vitest@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"linting",tool:"biome",installCmd:$("npm i -D @biomejs/biome@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"formatting",tool:"biome",installCmd:$("npm i -D @biomejs/biome@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"type_checking",tool:"typescript",installCmd:$("npm i -D typescript@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"coverage",tool:"@vitest/coverage-v8",installCmd:$("npm i -D @vitest/coverage-v8@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"unused_code",tool:"knip",installCmd:$("npm i -D knip@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"dependency_analysis",tool:"dependency-cruiser",installCmd:$("npm i -D dependency-cruiser@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"documentation",tool:"typedoc",installCmd:$("npm i -D typedoc@latest"),universal:!1,condition:e=>_(e,"typescript","javascript")},{category:"e2e_testing",tool:"pytest",installCmd:$("pip install --upgrade pytest httpx pytest-asyncio"),universal:!1,condition:e=>_(e,"python")},{category:"unit_testing",tool:"pytest",installCmd:$("pip install --upgrade pytest"),universal:!1,condition:e=>_(e,"python")},{category:"linting",tool:"ruff",installCmd:$("pip install --upgrade ruff"),universal:!1,condition:e=>_(e,"python")},{category:"formatting",tool:"ruff",installCmd:$("pip install --upgrade ruff"),universal:!1,condition:e=>_(e,"python")},{category:"type_checking",tool:"pyright",installCmd:$("pip install --upgrade pyright"),universal:!1,condition:e=>_(e,"python")},{category:"coverage",tool:"pytest-cov",installCmd:$("pip install --upgrade pytest-cov"),universal:!1,condition:e=>_(e,"python")},{category:"unused_code",tool:"vulture",installCmd:$("pip install --upgrade vulture"),universal:!1,condition:e=>_(e,"python")},{category:"dependency_analysis",tool:"pipdeptree",installCmd:$("pip install --upgrade pipdeptree"),universal:!1,condition:e=>_(e,"python")},{category:"documentation",tool:"mkdocs",installCmd:$("pip install --upgrade mkdocs mkdocs-material"),universal:!1,condition:e=>_(e,"python")},{category:"security_analysis",tool:"bandit",installCmd:$("pip install --upgrade bandit"),universal:!1,condition:e=>_(e,"python")},{category:"unit_testing",tool:"testify",installCmd:$("go get github.com/stretchr/testify@latest"),universal:!1,condition:e=>_(e,"go")},{category:"formatting",tool:"gofmt",installCmd:$("echo gofmt \u2014 built-in with Go toolchain"),universal:!1,condition:e=>_(e,"go")},{category:"coverage",tool:"go-cover",installCmd:$("echo go test -cover \u2014 built-in with Go toolchain"),universal:!1,condition:e=>_(e,"go")},{category:"linting",tool:"golangci-lint",installCmd:{win32:"go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest",darwin:"brew install golangci-lint",linux:"go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest"},universal:!1,condition:e=>_(e,"go")},{category:"unused_code",tool:"deadcode",installCmd:$("go install golang.org/x/tools/cmd/deadcode@latest"),universal:!1,condition:e=>_(e,"go")},{category:"documentation",tool:"godoc",installCmd:$("go install golang.org/x/tools/cmd/godoc@latest"),universal:!1,condition:e=>_(e,"go")},{category:"security_analysis",tool:"gosec",installCmd:$("go install github.com/securego/gosec/v2/cmd/gosec@latest"),universal:!1,condition:e=>_(e,"go")},{category:"unit_testing",tool:"junit5",installCmd:$("echo JUnit 5 \u2014 add to pom.xml or build.gradle"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"linting",tool:"checkstyle",installCmd:$("echo Checkstyle \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"formatting",tool:"google-java-format",installCmd:$("echo google-java-format \u2014 add to build config"),universal:!1,condition:e=>_(e,"java")&&!_(e,"kotlin")},{category:"coverage",tool:"jacoco",installCmd:$("echo JaCoCo \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")},{category:"security_analysis",tool:"spotbugs",installCmd:$("echo SpotBugs \u2014 add Gradle/Maven plugin"),universal:!1,condition:e=>_(e,"java")},{category:"unit_testing",tool:"junit5",installCmd:$("echo JUnit 5 + MockK \u2014 add to build.gradle.kts"),universal:!1,condition:e=>_(e,"kotlin")},{category:"linting",tool:"detekt",installCmd:$("echo detekt \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"formatting",tool:"ktlint",installCmd:$("echo ktlint \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"coverage",tool:"kover",installCmd:$("echo Kover \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"documentation",tool:"dokka",installCmd:$("echo Dokka \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"kotlin")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>_(e,"csharp")},{category:"formatting",tool:"dotnet-format",installCmd:$("echo dotnet format \u2014 built-in (.NET 6+)"),universal:!1,condition:e=>_(e,"csharp")},{category:"coverage",tool:"coverlet",installCmd:$("dotnet add package coverlet.collector"),universal:!1,condition:e=>_(e,"csharp")},{category:"linting",tool:"dotnet-analyzers",installCmd:$("echo .NET Analyzers \u2014 built-in with .NET 5+ SDK"),universal:!1,condition:e=>_(e,"csharp")},{category:"documentation",tool:"docfx",installCmd:$("dotnet tool install -g docfx"),universal:!1,condition:e=>_(e,"csharp")},{category:"unit_testing",tool:"googletest",installCmd:$("echo GoogleTest \u2014 add via CMake FetchContent"),universal:!1,condition:e=>_(e,"cpp","c")},{category:"linting",tool:"clang-tidy",installCmd:{win32:"choco install llvm",darwin:"brew install llvm",linux:"sudo apt-get install -y clang-tidy"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"formatting",tool:"clang-format",installCmd:{win32:"choco install llvm",darwin:"brew install clang-format",linux:"sudo apt-get install -y clang-format"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"coverage",tool:"lcov",installCmd:{win32:"choco install lcov",darwin:"brew install lcov",linux:"sudo apt-get install -y lcov"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"documentation",tool:"doxygen",installCmd:{win32:"choco install doxygen.install",darwin:"brew install doxygen",linux:"sudo apt-get install -y doxygen"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"security_analysis",tool:"cppcheck",installCmd:{win32:"choco install cppcheck",darwin:"brew install cppcheck",linux:"sudo apt-get install -y cppcheck"},universal:!1,condition:e=>_(e,"cpp","c")},{category:"unit_testing",tool:"phpunit",installCmd:$("composer require --dev phpunit/phpunit"),universal:!1,condition:e=>_(e,"php")},{category:"linting",tool:"phpstan",installCmd:$("composer require --dev phpstan/phpstan"),universal:!1,condition:e=>_(e,"php")},{category:"formatting",tool:"php-cs-fixer",installCmd:$("composer require --dev friendsofphp/php-cs-fixer"),universal:!1,condition:e=>_(e,"php")},{category:"documentation",tool:"phpdoc",installCmd:$("composer require --dev phpdocumentor/phpdocumentor"),universal:!1,condition:e=>_(e,"php")},{category:"security_analysis",tool:"psalm",installCmd:$("composer require --dev vimeo/psalm"),universal:!1,condition:e=>_(e,"php")},{category:"unit_testing",tool:"rspec",installCmd:$("gem install rspec && rspec --init"),universal:!1,condition:e=>_(e,"ruby")},{category:"linting",tool:"rubocop",installCmd:$("gem install rubocop"),universal:!1,condition:e=>_(e,"ruby")},{category:"formatting",tool:"rubocop",installCmd:$("gem install rubocop"),universal:!1,condition:e=>_(e,"ruby")},{category:"coverage",tool:"simplecov",installCmd:$("gem install simplecov"),universal:!1,condition:e=>_(e,"ruby")},{category:"documentation",tool:"yard",installCmd:$("gem install yard"),universal:!1,condition:e=>_(e,"ruby")},{category:"security_analysis",tool:"brakeman",installCmd:$("gem install brakeman"),universal:!1,condition:e=>_(e,"ruby")},{category:"linting",tool:"swiftlint",installCmd:{win32:"echo SwiftLint \u2014 not available on Windows",darwin:"brew install swiftlint",linux:"echo SwiftLint \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"swift")},{category:"formatting",tool:"swiftformat",installCmd:{win32:"echo SwiftFormat \u2014 not available on Windows",darwin:"brew install swiftformat",linux:"echo SwiftFormat \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"swift")},{category:"linting",tool:"clippy",installCmd:$("rustup component add clippy"),universal:!1,condition:e=>_(e,"rust")},{category:"formatting",tool:"rustfmt",installCmd:$("rustup component add rustfmt"),universal:!1,condition:e=>_(e,"rust")},{category:"coverage",tool:"tarpaulin",installCmd:$("cargo install cargo-tarpaulin"),universal:!1,condition:e=>_(e,"rust")},{category:"security_analysis",tool:"cargo-audit",installCmd:$("cargo install cargo-audit"),universal:!1,condition:e=>_(e,"rust")},{category:"unit_testing",tool:"flutter-test",installCmd:$("echo flutter test \u2014 built-in with Flutter SDK"),universal:!1,condition:e=>ln(e,"flutter")},{category:"linting",tool:"flutter-lints",installCmd:$("dart pub add --dev flutter_lints"),universal:!1,condition:e=>ln(e,"flutter")},{category:"documentation",tool:"dartdoc",installCmd:$("dart pub global activate dartdoc"),universal:!1,condition:e=>_(e,"dart")},{category:"linting",tool:"credo",installCmd:$('echo Credo \u2014 add {:credo, "~> 1.7"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"type_checking",tool:"dialyxir",installCmd:$('echo Dialyxir \u2014 add {:dialyxir, "~> 1.4"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"coverage",tool:"excoveralls",installCmd:$('echo ExCoveralls \u2014 add {:excoveralls, "~> 0.18"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"documentation",tool:"ex-doc",installCmd:$('echo ExDoc \u2014 add {:ex_doc, "~> 0.34"} to mix.exs'),universal:!1,condition:e=>_(e,"elixir")},{category:"unit_testing",tool:"scalatest",installCmd:$("echo ScalaTest \u2014 add to build.sbt"),universal:!1,condition:e=>_(e,"scala")},{category:"linting",tool:"scalafix",installCmd:$("echo Scalafix \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"formatting",tool:"scalafmt",installCmd:$("echo Scalafmt \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"coverage",tool:"scoverage",installCmd:$("echo Scoverage \u2014 add sbt plugin"),universal:!1,condition:e=>_(e,"scala")},{category:"unit_testing",tool:"testthat",installCmd:$(`Rscript -e 'install.packages("testthat")'`),universal:!1,condition:e=>_(e,"r")},{category:"linting",tool:"lintr",installCmd:$(`Rscript -e 'install.packages("lintr")'`),universal:!1,condition:e=>_(e,"r")},{category:"formatting",tool:"styler",installCmd:$(`Rscript -e 'install.packages("styler")'`),universal:!1,condition:e=>_(e,"r")},{category:"coverage",tool:"covr",installCmd:$(`Rscript -e 'install.packages("covr")'`),universal:!1,condition:e=>_(e,"r")},{category:"documentation",tool:"roxygen2",installCmd:$(`Rscript -e 'install.packages("roxygen2")'`),universal:!1,condition:e=>_(e,"r")},{category:"unit_testing",tool:"hspec",installCmd:$("cabal install hspec"),universal:!1,condition:e=>_(e,"haskell")},{category:"linting",tool:"hlint",installCmd:$("cabal install hlint"),universal:!1,condition:e=>_(e,"haskell")},{category:"formatting",tool:"ormolu",installCmd:$("cabal install ormolu"),universal:!1,condition:e=>_(e,"haskell")},{category:"linting",tool:"perlcritic",installCmd:$("cpanm Perl::Critic"),universal:!1,condition:e=>_(e,"perl")},{category:"formatting",tool:"perltidy",installCmd:$("cpanm Perl::Tidy"),universal:!1,condition:e=>_(e,"perl")},{category:"linting",tool:"clj-kondo",installCmd:{win32:"echo clj-kondo \u2014 download from GitHub releases",darwin:"brew install borkdude/brew/clj-kondo",linux:"echo clj-kondo \u2014 download from GitHub releases"},universal:!1,condition:e=>_(e,"clojure")},{category:"formatting",tool:"cljfmt",installCmd:$("echo cljfmt \u2014 add to deps.edn"),universal:!1,condition:e=>_(e,"clojure")},{category:"formatting",tool:"juliaformatter",installCmd:$(`julia -e 'using Pkg; Pkg.add("JuliaFormatter")'`),universal:!1,condition:e=>_(e,"julia")},{category:"documentation",tool:"documenter",installCmd:$(`julia -e 'using Pkg; Pkg.add("Documenter")'`),universal:!1,condition:e=>_(e,"julia")},{category:"unit_testing",tool:"busted",installCmd:$("luarocks install busted"),universal:!1,condition:e=>_(e,"lua")},{category:"linting",tool:"luacheck",installCmd:$("luarocks install luacheck"),universal:!1,condition:e=>_(e,"lua")},{category:"formatting",tool:"stylua",installCmd:{win32:"cargo install stylua",darwin:"brew install stylua",linux:"cargo install stylua"},universal:!1,condition:e=>_(e,"lua")},{category:"unit_testing",tool:"forge-test",installCmd:{win32:"echo Foundry \u2014 install from https://getfoundry.sh",darwin:"curl -L https://foundry.paradigm.xyz | bash && foundryup",linux:"curl -L https://foundry.paradigm.xyz | bash && foundryup"},universal:!1,condition:e=>_(e,"solidity")},{category:"linting",tool:"solhint",installCmd:$("npm i -g solhint@latest"),universal:!1,condition:e=>_(e,"solidity")},{category:"formatting",tool:"prettier-solidity",installCmd:$("npm i -D prettier@latest prettier-plugin-solidity@latest"),universal:!1,condition:e=>_(e,"solidity")},{category:"security_analysis",tool:"slither",installCmd:$("pip install --upgrade slither-analyzer"),universal:!1,condition:e=>_(e,"solidity")},{category:"e2e_testing",tool:"detox",installCmd:$("npm i -D detox@latest"),universal:!1,condition:e=>ln(e,"react-native","expo")},{category:"linting",tool:"detekt",installCmd:$("echo detekt \u2014 add Gradle plugin"),universal:!1,condition:e=>ln(e,"jetpack-compose","kotlin-multiplatform")},{category:"linting",tool:"swiftlint",installCmd:{win32:"echo SwiftLint \u2014 not available on Windows",darwin:"brew install swiftlint",linux:"echo SwiftLint \u2014 install from GitHub releases"},universal:!1,condition:e=>ln(e,"swiftui","uikit")},{category:"e2e_testing",tool:"cypress",installCmd:$("npm i -D cypress@latest"),universal:!1,condition:e=>ln(e,"ionic","capacitor")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>ln(e,"maui")},{category:"linting",tool:"gdlint",installCmd:$("pip install --upgrade gdtoolkit"),universal:!1,condition:e=>_(e,"gdscript")},{category:"formatting",tool:"gdformat",installCmd:$("pip install --upgrade gdtoolkit"),universal:!1,condition:e=>_(e,"gdscript")},{category:"unit_testing",tool:"xunit",installCmd:$("dotnet add package xunit xunit.runner.visualstudio"),universal:!1,condition:e=>_(e,"fsharp")},{category:"formatting",tool:"fantomas",installCmd:$("dotnet tool install -g fantomas"),universal:!1,condition:e=>_(e,"fsharp")},{category:"unit_testing",tool:"alcotest",installCmd:$("opam install alcotest"),universal:!1,condition:e=>_(e,"ocaml")},{category:"formatting",tool:"ocamlformat",installCmd:$("opam install ocamlformat"),universal:!1,condition:e=>_(e,"ocaml")},{category:"linting",tool:"elvis",installCmd:$("echo elvis \u2014 add as rebar3 plugin"),universal:!1,condition:e=>_(e,"erlang")},{category:"linting",tool:"ameba",installCmd:$("echo Ameba \u2014 add to shard.yml"),universal:!1,condition:e=>_(e,"crystal")},{category:"linting",tool:"codenarc",installCmd:$("echo CodeNarc \u2014 add Gradle plugin"),universal:!1,condition:e=>_(e,"groovy")},{category:"linting",tool:"oclint",installCmd:{win32:"echo OCLint \u2014 not available on Windows",darwin:"brew install oclint",linux:"echo OCLint \u2014 install from GitHub releases"},universal:!1,condition:e=>_(e,"objective-c")},{category:"formatting",tool:"clang-format",installCmd:{win32:"choco install llvm",darwin:"brew install clang-format",linux:"sudo apt-get install -y clang-format"},universal:!1,condition:e=>_(e,"objective-c")},{category:"unit_testing",tool:"mstest",installCmd:$("dotnet add package MSTest.TestFramework MSTest.TestAdapter"),universal:!1,condition:e=>_(e,"visual-basic")},{category:"unit_testing",tool:"pester",installCmd:$("Install-Module -Name Pester -Force -SkipPublisherCheck"),universal:!1,condition:e=>_(e,"powershell")},{category:"linting",tool:"psscriptanalyzer",installCmd:$("Install-Module -Name PSScriptAnalyzer -Force"),universal:!1,condition:e=>_(e,"powershell")}];function gk(e){let t=new Set,n=[];for(let o of EN)t.has(o.category)||o.condition(e)&&(n.push(o),t.add(o.category));return n}function ON(){return(0,_k.createInterface)({input:process.stdin,output:process.stdout})}function Mh(e,t){return new Promise(n=>{e.question(t,o=>n(o.trim()))})}async function Uh(e,t,n,o="Invalid choice. Enter a number."){console.log(`
|
|
54
54
|
${t}`);for(let r=0;r<n.length;r++)console.log(` ${r+1}. ${n[r].label}`);for(;;){let r=await Mh(e," > "),i=parseInt(r,10)-1;if(i>=0&&i<n.length)return n[i].value;console.log(` ${o}`)}}async function qt(e,t,n,o){console.log(`
|
|
55
55
|
${t}`);for(let a=0;a<o.length;a++)console.log(` ${a+1}. ${o[a].label}`);console.log(` ${n}`);let r=await Mh(e," > ");if(!r)return[];let i=r.split(",").map(a=>parseInt(a.trim(),10)-1).filter(a=>a>=0&&a<o.length);return[...new Set(i.map(a=>o[a].value))]}async function hk(e,t,n){let r=(await Mh(e,`
|
|
56
56
|
${t} (${n.yes}/${n.no}) > `)).toLowerCase();return r==="y"||r==="yes"||r===n.yes.toLowerCase()}function vk(e){try{return JSON.parse((0,at.readFileSync)(e,"utf-8"))}catch{return null}}function xe(e){try{return(0,at.readFileSync)(e,"utf-8")}catch{return""}}function Ca(e){try{return(0,at.readdirSync)(e)}catch{return[]}}function Pe(e,t){return Ca(e).some(n=>n.endsWith(t))}function or(e,t){try{let n=(0,le.resolve)(e,t);return(0,at.existsSync)(n)&&(0,at.statSync)(n).isDirectory()}catch{return!1}}function Ql(e){let t=c=>(0,at.existsSync)((0,le.resolve)(e,c)),n=(c,u)=>c.includes(u),o={programming_languages:[],frontend:[],backend:[],database:[],orm:[],infra:[],game:[],mobile:[],other:[]},r=t("package.json"),i=r?vk((0,le.resolve)(e,"package.json")):null,a=r?{...i?.dependencies??{},...i?.devDependencies??{}}:{};if(t("tsconfig.json")||t("tsconfig.base.json")?o.programming_languages.push("typescript"):r&&(a.typescript?o.programming_languages.push("typescript"):o.programming_languages.push("javascript")),(t("pyproject.toml")||t("requirements.txt")||t("Pipfile"))&&o.programming_languages.push("python"),t("go.mod")&&o.programming_languages.push("go"),t("Cargo.toml")&&o.programming_languages.push("rust"),t("pom.xml")||t("build.gradle")||t("build.gradle.kts")){let c=t("build.gradle.kts"),u=c?"build.gradle.kts":t("build.gradle")?"build.gradle":null,l=u?xe((0,le.resolve)(e,u)):"";o.programming_languages.push("java"),(c||l.includes("kotlin"))&&o.programming_languages.push("kotlin"),!c&&u&&l.includes("groovy")&&o.programming_languages.push("groovy")}if((Pe(e,".sln")||Pe(e,".csproj"))&&o.programming_languages.push("csharp"),Pe(e,".fsproj")&&o.programming_languages.push("fsharp"),Pe(e,".vbproj")&&o.programming_languages.push("visual-basic"),t("CMakeLists.txt")){let c=xe((0,le.resolve)(e,"CMakeLists.txt"));c.includes("CXX")||c.includes("cpp")||c.includes("c++")?o.programming_languages.push("cpp"):o.programming_languages.push("c")}else Pe(e,".vcxproj")&&o.programming_languages.push("cpp");if(t("composer.json")&&o.programming_languages.push("php"),(t("Gemfile")||t("Rakefile"))&&o.programming_languages.push("ruby"),t("Package.swift")&&o.programming_languages.push("swift"),t("pubspec.yaml")&&o.programming_languages.push("dart"),t("build.sbt")&&o.programming_languages.push("scala"),t("mix.exs")&&o.programming_languages.push("elixir"),t("rebar.config")&&o.programming_languages.push("erlang"),(t("project.clj")||t("deps.edn"))&&o.programming_languages.push("clojure"),t("Project.toml")&&o.programming_languages.push("julia"),(Pe(e,".cabal")||t("stack.yaml"))&&o.programming_languages.push("haskell"),Pe(e,".Rproj")&&o.programming_languages.push("r"),(t("cpanfile")||t("Makefile.PL"))&&o.programming_languages.push("perl"),t("build.zig")&&o.programming_languages.push("zig"),Pe(e,".nimble")&&o.programming_languages.push("nim"),t("shard.yml")&&o.programming_languages.push("crystal"),(t("dune-project")||Pe(e,".opam"))&&o.programming_languages.push("ocaml"),(t("dub.json")||t("dub.sdl"))&&o.programming_languages.push("d"),t("v.mod")&&o.programming_languages.push("v"),(t("hardhat.config.js")||t("hardhat.config.ts")||t("foundry.toml")||t("truffle-config.js"))&&o.programming_languages.push("solidity"),t("fpm.toml")&&o.programming_languages.push("fortran"),Pe(e,".gpr")&&o.programming_languages.push("ada"),(Pe(e,".dpr")||Pe(e,".lpr"))&&o.programming_languages.push("pascal"),(or(e,".xcodeproj")||or(e,".xcworkspace"))&&!n(o.programming_languages,"swift")&&o.programming_languages.push("objective-c"),r&&((a.react||a["react-dom"])&&o.frontend.push("react"),a.next&&o.frontend.push("nextjs"),a.vue&&o.frontend.push("vue"),a.nuxt&&o.frontend.push("nuxt"),(a.svelte||a["@sveltejs/kit"])&&o.frontend.push("svelte"),a["@angular/core"]&&o.frontend.push("angular"),a["solid-js"]&&o.frontend.push("solid"),a.astro&&o.frontend.push("astro"),a["@remix-run/react"]&&o.frontend.push("remix"),a["@builder.io/qwik"]&&o.frontend.push("qwik"),a["ember-source"]&&o.frontend.push("ember"),a["htmx.org"]&&o.frontend.push("htmx"),a.alpinejs&&o.frontend.push("alpine"),a.vite&&o.frontend.push("vite"),a.electron&&o.frontend.push("electron"),a.express&&o.backend.push("express"),a.fastify&&o.backend.push("fastify"),a.hono&&o.backend.push("hono"),a["@nestjs/core"]&&o.backend.push("nestjs"),(a.prisma||a["@prisma/client"])&&o.orm.push("prisma"),a["drizzle-orm"]&&o.orm.push("drizzle"),a.typeorm&&o.orm.push("typeorm"),a.sequelize&&o.orm.push("sequelize"),a.hardhat&&o.other.push("hardhat")),t("pubspec.yaml")&&xe((0,le.resolve)(e,"pubspec.yaml")).includes("flutter")&&o.frontend.push("flutter"),Pe(e,".csproj")){let c=Ca(e).filter(u=>u.endsWith(".csproj"));for(let u of c)if(xe((0,le.resolve)(e,u)).includes("Microsoft.AspNetCore.Components")){o.frontend.push("blazor");break}}let s=t("pyproject.toml")?xe((0,le.resolve)(e,"pyproject.toml")):t("requirements.txt")?xe((0,le.resolve)(e,"requirements.txt")):"";if(s&&(s.includes("fastapi")&&o.backend.push("fastapi"),s.includes("django")&&o.backend.push("django"),s.includes("flask")&&o.backend.push("flask"),(s.includes("sqlalchemy")||s.includes("SQLAlchemy"))&&o.orm.push("sqlalchemy"),s.includes("tortoise")&&o.orm.push("tortoise-orm"),s.includes("peewee")&&o.orm.push("peewee")),t("composer.json")){let c=vk((0,le.resolve)(e,"composer.json")),u={...c?.require??{},...c?.["require-dev"]??{}};u["laravel/framework"]&&o.backend.push("laravel"),u["symfony/framework-bundle"]&&o.backend.push("symfony"),u["slim/slim"]&&o.backend.push("slim"),u["cakephp/cakephp"]&&o.backend.push("cakephp"),u["codeigniter4/framework"]&&o.backend.push("codeigniter"),u["doctrine/orm"]&&o.orm.push("doctrine")}if(t("Gemfile")){let c=xe((0,le.resolve)(e,"Gemfile"));c.includes("rails")&&o.backend.push("rails"),c.includes("sinatra")&&o.backend.push("sinatra"),c.includes("hanami")&&o.backend.push("hanami"),c.includes("activerecord")&&o.orm.push("activerecord")}if(t("pom.xml")){let c=xe((0,le.resolve)(e,"pom.xml"));c.includes("spring-boot")&&o.backend.push("spring-boot"),c.includes("quarkus")&&o.backend.push("quarkus"),c.includes("micronaut")&&o.backend.push("micronaut"),c.includes("hibernate")&&o.orm.push("hibernate"),c.includes("mybatis")&&o.orm.push("mybatis")}if(t("build.gradle")||t("build.gradle.kts")){let c=xe((0,le.resolve)(e,t("build.gradle.kts")?"build.gradle.kts":"build.gradle"));c.includes("spring-boot")&&o.backend.push("spring-boot"),c.includes("quarkus")&&o.backend.push("quarkus"),c.includes("ktor")&&o.backend.push("ktor"),c.includes("micronaut")&&o.backend.push("micronaut"),c.includes("hibernate")&&o.orm.push("hibernate"),c.includes("exposed")&&o.orm.push("exposed")}if(Pe(e,".csproj")){let c=Ca(e).filter(u=>u.endsWith(".csproj"));for(let u of c){let l=xe((0,le.resolve)(e,u));l.includes("Microsoft.AspNetCore")&&o.backend.push("aspnet"),l.includes("Microsoft.EntityFrameworkCore")&&o.orm.push("entity-framework")}}if(t("go.mod")){let c=xe((0,le.resolve)(e,"go.mod"));c.includes("gin-gonic")&&o.backend.push("gin"),c.includes("labstack/echo")&&o.backend.push("echo"),c.includes("gofiber/fiber")&&o.backend.push("fiber"),c.includes("go-chi/chi")&&o.backend.push("chi"),c.includes("gorm.io")&&o.orm.push("gorm"),c.includes("entgo.io/ent")&&o.orm.push("ent")}if(t("Cargo.toml")){let c=xe((0,le.resolve)(e,"Cargo.toml"));c.includes("actix-web")&&o.backend.push("actix-web"),c.includes("axum")&&o.backend.push("axum"),c.includes("rocket")&&o.backend.push("rocket"),c.includes("diesel")&&o.orm.push("diesel"),c.includes("sea-orm")&&o.orm.push("sea-orm")}if(t("mix.exs")){let c=xe((0,le.resolve)(e,"mix.exs"));c.includes("phoenix")&&o.backend.push("phoenix"),c.includes("ecto")&&o.orm.push("ecto")}if(t("build.sbt")){let c=xe((0,le.resolve)(e,"build.sbt"));c.includes("play")&&o.backend.push("play"),c.includes("akka-http")&&o.backend.push("akka-http")}if(t("Package.swift")&&xe((0,le.resolve)(e,"Package.swift")).includes("vapor")&&o.backend.push("vapor"),Pe(e,".cabal")||t("stack.yaml")){let c=Ca(e).filter(l=>l.endsWith(".cabal")),u=c.length>0?xe((0,le.resolve)(e,c[0])):"";u.includes("servant")&&o.backend.push("servant"),u.includes("yesod")&&o.backend.push("yesod")}if(t("cpanfile")){let c=xe((0,le.resolve)(e,"cpanfile"));c.includes("Mojolicious")&&o.backend.push("mojolicious"),c.includes("Dancer")&&o.backend.push("dancer")}if(t("project.clj")||t("deps.edn")){let c=t("deps.edn")?xe((0,le.resolve)(e,"deps.edn")):xe((0,le.resolve)(e,"project.clj"));c.includes("ring")&&o.backend.push("ring"),c.includes("pedestal")&&o.backend.push("pedestal")}if(t("docker-compose.yml")||t("docker-compose.yaml")){let c=xe((0,le.resolve)(e,t("docker-compose.yml")?"docker-compose.yml":"docker-compose.yaml"));c.includes("postgres")&&o.database.push("postgresql"),(c.includes("mysql")||c.includes("mariadb"))&&o.database.push("mysql"),c.includes("mongo")&&o.database.push("mongodb"),c.includes("redis")&&o.database.push("redis"),c.includes("cassandra")&&o.database.push("cassandra"),c.includes("neo4j")&&o.database.push("neo4j"),c.includes("elasticsearch")&&o.database.push("elasticsearch")}if((t("Dockerfile")||t("docker-compose.yml")||t("docker-compose.yaml"))&&o.infra.push("docker"),(t("terraform")||t("main.tf"))&&o.infra.push("terraform"),(t("vercel.json")||t(".vercel"))&&o.infra.push("vercel"),(t("railway.json")||t("railway.toml"))&&o.infra.push("railway"),t(".github/workflows")&&o.infra.push("github-actions"),(t("netlify.toml")||t(".netlify"))&&o.infra.push("netlify"),t("fly.toml")&&o.infra.push("fly-io"),t("render.yaml")&&o.infra.push("render"),(t("Procfile")||t("app.json"))&&o.infra.push("heroku"),(t("ansible.cfg")||or(e,"playbooks"))&&o.infra.push("ansible"),t("Pulumi.yaml")&&o.infra.push("pulumi"),(or(e,"k8s")||or(e,"kubernetes")||t("skaffold.yaml"))&&o.infra.push("kubernetes"),(t("wrangler.toml")||t("wrangler.jsonc"))&&o.infra.push("cloudflare"),t("project.godot")&&(o.programming_languages.push("gdscript"),Pe(e,".gdshader")&&o.programming_languages.push("gdshader")),t("project.godot")&&o.game.push("godot"),a.phaser&&o.game.push("phaser"),(t("ProjectSettings/ProjectVersion.txt")||or(e,"Assets"))&&t("ProjectSettings/ProjectVersion.txt")&&o.game.push("unity"),Pe(e,".uproject")&&o.game.push("unreal"),t("Cargo.toml")&&xe((0,le.resolve)(e,"Cargo.toml")).includes("bevy")&&o.game.push("bevy"),t("main.lua")&&t("conf.lua")&&o.game.push("love2d"),or(e,"game")&&t("game/script.rpy")&&o.game.push("renpy"),s&&s.includes("pygame")&&o.game.push("pygame"),t("game.project")&&o.game.push("defold"),r&&(a["react-native"]&&o.mobile.push("react-native"),(a.expo||a["expo-router"])&&o.mobile.push("expo"),(a["@ionic/react"]||a["@ionic/angular"]||a["@ionic/vue"])&&o.mobile.push("ionic"),a["@capacitor/core"]&&o.mobile.push("capacitor"),(a["nativescript-core"]||a["@nativescript/core"])&&o.mobile.push("nativescript")),t("pubspec.yaml")&&xe((0,le.resolve)(e,"pubspec.yaml")).includes("flutter")&&o.mobile.push("flutter"),(or(e,".xcodeproj")||or(e,".xcworkspace"))&&n(o.programming_languages,"swift")&&o.mobile.push("swiftui"),t("build.gradle.kts")||t("build.gradle")){let c=t("build.gradle.kts")?"build.gradle.kts":"build.gradle",u=xe((0,le.resolve)(e,c));(u.includes("compose")||u.includes("jetpack"))&&o.mobile.push("jetpack-compose"),(u.includes("multiplatform")||u.includes("KotlinMultiplatform"))&&o.mobile.push("kotlin-multiplatform")}if(Pe(e,".csproj")){let c=Ca(e).filter(u=>u.endsWith(".csproj"));for(let u of c){let l=xe((0,le.resolve)(e,u));if(l.includes("Microsoft.Maui")||l.includes("Maui")){o.mobile.push("maui");break}}}for(let c of Object.keys(o))o[c]=[...new Set(o[c])];return o}function NN(e){return e.programming_languages.length===0&&e.frontend.length===0&&e.backend.length===0&&e.database.length===0&&e.orm.length===0&&e.infra.length===0&&e.game.length===0&&e.mobile.length===0}var CN=[...Vl],RN=[...Jl],DN=[...Gl],ZN=[...Kl],AN=[...Bl],UN=[...Hl],MN=[...Yl],LN=[...Wl],qN=["web","api","mobile","game","cli","desktop"];function FN(e){let t=new Set(e);return{frontend:t.has("web")||t.has("desktop"),backend:t.has("web")||t.has("api"),database:t.has("web")||t.has("api")||t.has("mobile"),orm:t.has("web")||t.has("api")||t.has("mobile"),game:t.has("game"),mobile:t.has("mobile")}}async function yk(e,t){let n=h=>h.map(b=>({value:b,label:b})),o=t.selectSubLanguagesHint,r=qN.map(h=>({value:h,label:t.projectTypes[h]??h})),i=await qt(e,t.selectProjectType,o,r),a=FN(i),s=await qt(e,t.selectProgrammingLanguages,o,n(CN)),c=[],u=[],l=[],d=[],p=[],f=[];if(a.frontend){let h=Io(RN,"frontend",s);c=await qt(e,t.selectFrontend,o,n(h))}if(a.backend){let h=Io(DN,"backend",s);u=await qt(e,t.selectBackend,o,n(h))}if(a.database&&(l=await qt(e,t.selectDatabase,o,n(ZN))),a.orm){let h=Io(AN,"orm",s);d=await qt(e,t.selectOrm,o,n(h))}let g=await qt(e,t.selectInfra,o,n(UN));if(a.game){let h=Io(MN,"game",s);p=await qt(e,t.selectGame,o,n(h))}if(a.mobile){let h=Io(LN,"mobile",s);f=await qt(e,t.selectMobile,o,n(h))}return{programming_languages:s,frontend:c,backend:u,database:l,orm:d,infra:g,game:p,mobile:f,other:[]}}function VN(e,t){let n=(o,r)=>{r.length>0&&console.log(` ${o}: ${r.join(", ")}`)};n(t.languages,e.programming_languages),n(t.frontend,e.frontend),n(t.backend,e.backend),n(t.database,e.database),n(t.orm,e.orm),n(t.infra,e.infra),n(t.game,e.game),n(t.mobile,e.mobile)}function JN(e){let t=process.platform;return e.installCmd[t]??e.installCmd.linux}function GN(e){try{return(0,ed.execSync)(JN(e),{stdio:"inherit",timeout:12e4}),!0}catch{return!1}}function KN(e){try{return(0,ed.execSync)("git remote get-url origin",{cwd:e,encoding:"utf-8",timeout:1e4,stdio:["pipe","pipe","pipe"]}).trim().includes("github.com")}catch{return!1}}function BN(e){try{return(0,ed.execSync)("gh repo edit --delete-branch-on-merge",{cwd:e,stdio:"inherit",timeout:3e4}),!0}catch{return!1}}function HN(e){let t=r=>r.length===0?"[]":`[${r.join(", ")}]`,n=[`display_language: ${e.display_language}`,`main_language: ${e.main_language}`,`sub_languages: ${t(e.sub_languages)}`,`programming_languages: ${t(e.stack.programming_languages)}`,`frontend: ${t(e.stack.frontend)}`,`backend: ${t(e.stack.backend)}`,`database: ${t(e.stack.database)}`,`orm: ${t(e.stack.orm)}`,`infra: ${t(e.stack.infra)}`,`game: ${t(e.stack.game)}`,`mobile: ${t(e.stack.mobile)}`,`other: ${t(e.stack.other)}`],o=Object.entries(e.tools).filter(([,r])=>r);if(o.length>0){n.push("tools:");for(let[r,i]of o)n.push(` ${r}: ${i}`)}return n.push(""),n.join(`
|