@maincode-ai/matilda-code 0.20.1 → 0.20.2

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.
Files changed (35) hide show
  1. package/chunks/{agent-CE34X462.js → agent-WQRHTEJK.js} +1 -1
  2. package/chunks/{agent-headless-CNI7H4BU.js → agent-headless-VPF3VPXU.js} +1 -1
  3. package/chunks/{chunk-WUQZ3WFM.js → chunk-A7VPKVYG.js} +1 -1
  4. package/chunks/{chunk-T75X5DJI.js → chunk-DORRYU7L.js} +1 -1
  5. package/chunks/{chunk-J56KRT6Z.js → chunk-IGQPRDMV.js} +525 -522
  6. package/chunks/{chunk-SKBC2YV2.js → chunk-QJO23A2D.js} +1 -1
  7. package/chunks/{chunk-DHBNZZZO.js → chunk-RGBIKCMN.js} +3 -3
  8. package/chunks/{chunk-OQVITNHW.js → chunk-YZVC65QR.js} +2 -2
  9. package/chunks/{computer-use-4533FJAL.js → computer-use-3BJWOZSA.js} +1 -1
  10. package/chunks/{contextCommand-M7LA5BRD.js → contextCommand-SOQLJJIW.js} +1 -1
  11. package/chunks/{edit-U4P4JWQ6.js → edit-ZIPLKFNT.js} +1 -1
  12. package/chunks/{en-ZU6RPTEW.js → en-75JQMW7P.js} +1 -1
  13. package/chunks/{enter-worktree-CUDNIQNH.js → enter-worktree-MWQ3Z7HX.js} +1 -1
  14. package/chunks/{enterPlanMode-SUTLQUZO.js → enterPlanMode-XT6MNE2L.js} +1 -1
  15. package/chunks/{exit-worktree-72O3N4X4.js → exit-worktree-O7DBPVFA.js} +1 -1
  16. package/chunks/{exitPlanMode-ZP75YCUK.js → exitPlanMode-FDXKFQJF.js} +1 -1
  17. package/chunks/{geminiContentGenerator-KPR5Q3XX.js → geminiContentGenerator-HXWUQ2DI.js} +1 -1
  18. package/chunks/{glob-V7YUXA6Z.js → glob-GYLGTXYL.js} +1 -1
  19. package/chunks/{grep-WOVNDJPG.js → grep-ZNYUS2MU.js} +1 -1
  20. package/chunks/{matildaAgentContentGenerator-Y5CHD2WJ.js → matildaAgentContentGenerator-HG4ABAJG.js} +1 -1
  21. package/chunks/{matildaContentGenerator-F2DTT47Z.js → matildaContentGenerator-WEAUMFNT.js} +1 -1
  22. package/chunks/{monitor-G7G765XR.js → monitor-755GJUC4.js} +1 -1
  23. package/chunks/{notebook-edit-QK7K5ALF.js → notebook-edit-SWCJ3FMF.js} +1 -1
  24. package/chunks/{openaiContentGenerator-XLDE2S4K.js → openaiContentGenerator-JIODOCNJ.js} +1 -1
  25. package/chunks/{ripGrep-W5JZVWA4.js → ripGrep-5GE6ECVF.js} +1 -1
  26. package/chunks/{scheduler-C7N3Q67S.js → scheduler-VA6HAYT4.js} +1 -1
  27. package/chunks/{serve-WDV5Q7R4.js → serve-TVYEQNS6.js} +2 -2
  28. package/chunks/{shell-IEGVNM6S.js → shell-JNZXS437.js} +1 -1
  29. package/chunks/{src-Y3JZTLKR.js → src-MMNXN6E3.js} +1 -1
  30. package/chunks/{team-create-OPP7B3G2.js → team-create-CUBBNHIF.js} +1 -1
  31. package/chunks/{workflow-B3DRPVNT.js → workflow-WRWIXJCG.js} +2 -2
  32. package/chunks/{write-file-T7MBHX53.js → write-file-7BFZXGIJ.js} +1 -1
  33. package/cli.js +380 -386
  34. package/locales/en.js +6 -0
  35. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{b as Ce,f as wr,g as Ai,i as wi,l as kr}from"./chunk-OQVITNHW.js";import{Fe as gi,L as pi,M as mi,Pj as Di,Se as yi,Sj as Ei,Tj as Ci,mj as bi,nj as xi,oj as vi,ui as hl,yh as Si}from"./chunk-J56KRT6Z.js";import{i as fi}from"./chunk-T75X5DJI.js";import{e as Ot}from"./chunk-DC7LAFZZ.js";import{da as hi}from"./chunk-CFBZKYFB.js";import{e as di}from"./chunk-IOCF4XSR.js";import{L as Q,Y as Ee,c as oe,j as Nt,s as De}from"./chunk-QWBNNEV2.js";import{b}from"./chunk-GZPNIYVZ.js";import{a as ut,d as L,f as We}from"./chunk-OWGSC52X.js";var Br=L((Yp,ns)=>{"use strict";b();var Or=Symbol("singleComment"),rs=Symbol("multiComment"),Fl=()=>"",Rl=(t,e,r)=>t.slice(e,r).replace(/\S/g," "),Ll=(t,e)=>{let r=e-1,n=0;for(;t[r]==="\\";)r-=1,n+=1;return!!(n%2)};ns.exports=(t,e={})=>{if(typeof t!="string")throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof t}\``);let r=e.whitespace===!1?Fl:Rl,n=!1,i=!1,u=0,a="";for(let f=0;f<t.length;f++){let p=t[f],m=t[f+1];if(!i&&p==='"'&&(Ll(t,f)||(n=!n)),!n){if(!i&&p+m==="//")a+=t.slice(u,f),u=f,i=Or,f++;else if(i===Or&&p+m===`\r
3
+ import{b as Ce,f as wr,g as Ai,i as wi,l as kr}from"./chunk-YZVC65QR.js";import{Fe as gi,L as pi,M as mi,Pj as Di,Se as yi,Sj as Ei,Tj as Ci,mj as bi,nj as xi,oj as vi,ui as hl,yh as Si}from"./chunk-IGQPRDMV.js";import{i as fi}from"./chunk-DORRYU7L.js";import{e as Ot}from"./chunk-DC7LAFZZ.js";import{da as hi}from"./chunk-CFBZKYFB.js";import{e as di}from"./chunk-IOCF4XSR.js";import{L as Q,Y as Ee,c as oe,j as Nt,s as De}from"./chunk-QWBNNEV2.js";import{b}from"./chunk-GZPNIYVZ.js";import{a as ut,d as L,f as We}from"./chunk-OWGSC52X.js";var Br=L((Yp,ns)=>{"use strict";b();var Or=Symbol("singleComment"),rs=Symbol("multiComment"),Fl=()=>"",Rl=(t,e,r)=>t.slice(e,r).replace(/\S/g," "),Ll=(t,e)=>{let r=e-1,n=0;for(;t[r]==="\\";)r-=1,n+=1;return!!(n%2)};ns.exports=(t,e={})=>{if(typeof t!="string")throw new TypeError(`Expected argument \`jsonString\` to be a \`string\`, got \`${typeof t}\``);let r=e.whitespace===!1?Fl:Rl,n=!1,i=!1,u=0,a="";for(let f=0;f<t.length;f++){let p=t[f],m=t[f+1];if(!i&&p==='"'&&(Ll(t,f)||(n=!n)),!n){if(!i&&p+m==="//")a+=t.slice(u,f),u=f,i=Or,f++;else if(i===Or&&p+m===`\r
4
4
  `){f++,i=!1,a+=r(t,u,f),u=f;continue}else if(i===Or&&p===`
5
5
  `)i=!1,a+=r(t,u,f),u=f;else if(!i&&p+m==="/*"){a+=t.slice(u,f),u=f,i=rs,f++;continue}else if(i===rs&&p+m==="*/"){f++,i=!1,a+=r(t,u,f+1),u=f+1;continue}}}return a+(i?r(t.slice(u)):t.slice(u))}});var xs=L((ft,Vr)=>{b();(function(e,r){typeof ft=="object"&&typeof Vr=="object"?Vr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof ft=="object"?ft.esprima=r():e.esprima=r()})(ft,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={exports:{},id:n,loaded:!1};return t[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}return r.m=t,r.c=e,r.p="",r(0)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(1),i=r(3),u=r(8),a=r(15);function f(d,s,o){var l=null,c=function(O,j){o&&o(O,j),l&&l.visit(O,j)},y=typeof o=="function"?c:null,S=!1;if(s){S=typeof s.comment=="boolean"&&s.comment;var D=typeof s.attachComment=="boolean"&&s.attachComment;(S||D)&&(l=new n.CommentHandler,l.attach=D,s.comment=!0,y=c)}var E=!1;s&&typeof s.sourceType=="string"&&(E=s.sourceType==="module");var C;s&&typeof s.jsx=="boolean"&&s.jsx?C=new i.JSXParser(d,s,y):C=new u.Parser(d,s,y);var T=E?C.parseModule():C.parseScript(),F=T;return S&&l&&(F.comments=l.comments),C.config.tokens&&(F.tokens=C.tokens),C.config.tolerant&&(F.errors=C.errorHandler.errors),F}e.parse=f;function p(d,s,o){var l=s||{};return l.sourceType="module",f(d,l,o)}e.parseModule=p;function m(d,s,o){var l=s||{};return l.sourceType="script",f(d,l,o)}e.parseScript=m;function h(d,s,o){var l=new a.Tokenizer(d,s),c;c=[];try{for(;;){var y=l.getNextToken();if(!y)break;o&&(y=o(y)),c.push(y)}}catch(S){l.errorHandler.tolerate(S)}return l.errorHandler.tolerant&&(c.errors=l.errors()),c}e.tokenize=h;var g=r(2);e.Syntax=g.Syntax,e.version="4.0.1"},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(2),i=function(){function u(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return u.prototype.insertInnerComments=function(a,f){if(a.type===n.Syntax.BlockStatement&&a.body.length===0){for(var p=[],m=this.leading.length-1;m>=0;--m){var h=this.leading[m];f.end.offset>=h.start&&(p.unshift(h.comment),this.leading.splice(m,1),this.trailing.splice(m,1))}p.length&&(a.innerComments=p)}},u.prototype.findTrailingComments=function(a){var f=[];if(this.trailing.length>0){for(var p=this.trailing.length-1;p>=0;--p){var m=this.trailing[p];m.start>=a.end.offset&&f.unshift(m.comment)}return this.trailing.length=0,f}var h=this.stack[this.stack.length-1];if(h&&h.node.trailingComments){var g=h.node.trailingComments[0];g&&g.range[0]>=a.end.offset&&(f=h.node.trailingComments,delete h.node.trailingComments)}return f},u.prototype.findLeadingComments=function(a){for(var f=[],p;this.stack.length>0;){var m=this.stack[this.stack.length-1];if(m&&m.start>=a.start.offset)p=m.node,this.stack.pop();else break}if(p){for(var h=p.leadingComments?p.leadingComments.length:0,g=h-1;g>=0;--g){var d=p.leadingComments[g];d.range[1]<=a.start.offset&&(f.unshift(d),p.leadingComments.splice(g,1))}return p.leadingComments&&p.leadingComments.length===0&&delete p.leadingComments,f}for(var g=this.leading.length-1;g>=0;--g){var m=this.leading[g];m.start<=a.start.offset&&(f.unshift(m.comment),this.leading.splice(g,1))}return f},u.prototype.visitNode=function(a,f){if(!(a.type===n.Syntax.Program&&a.body.length>0)){this.insertInnerComments(a,f);var p=this.findTrailingComments(f),m=this.findLeadingComments(f);m.length>0&&(a.leadingComments=m),p.length>0&&(a.trailingComments=p),this.stack.push({node:a,start:f.start.offset})}},u.prototype.visitComment=function(a,f){var p=a.type[0]==="L"?"Line":"Block",m={type:p,value:a.value};if(a.range&&(m.range=a.range),a.loc&&(m.loc=a.loc),this.comments.push(m),this.attach){var h={comment:{type:p,value:a.value,range:[f.start.offset,f.end.offset]},start:f.start.offset};a.loc&&(h.comment.loc=a.loc),a.type=p,this.leading.push(h),this.trailing.push(h)}},u.prototype.visit=function(a,f){a.type==="LineComment"?this.visitComment(a,f):a.type==="BlockComment"?this.visitComment(a,f):this.attach&&this.visitNode(a,f)},u}();e.CommentHandler=i},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",AwaitExpression:"AwaitExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(t,e,r){"use strict";var n=this&&this.__extends||function(){var s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,l){o.__proto__=l}||function(o,l){for(var c in l)l.hasOwnProperty(c)&&(o[c]=l[c])};return function(o,l){s(o,l);function c(){this.constructor=o}o.prototype=l===null?Object.create(l):(c.prototype=l.prototype,new c)}}();Object.defineProperty(e,"__esModule",{value:!0});var i=r(4),u=r(5),a=r(6),f=r(7),p=r(8),m=r(13),h=r(14);m.TokenName[100]="JSXIdentifier",m.TokenName[101]="JSXText";function g(s){var o;switch(s.type){case a.JSXSyntax.JSXIdentifier:var l=s;o=l.name;break;case a.JSXSyntax.JSXNamespacedName:var c=s;o=g(c.namespace)+":"+g(c.name);break;case a.JSXSyntax.JSXMemberExpression:var y=s;o=g(y.object)+"."+g(y.property);break;default:break}return o}var d=function(s){n(o,s);function o(l,c,y){return s.call(this,l,c,y)||this}return o.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():s.prototype.parsePrimaryExpression.call(this)},o.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.line,this.scanner.lineStart=this.startMarker.index-this.startMarker.column},o.prototype.finishJSX=function(){this.nextToken()},o.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},o.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},o.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},o.prototype.scanXHTMLEntity=function(l){for(var c="&",y=!0,S=!1,D=!1,E=!1;!this.scanner.eof()&&y&&!S;){var C=this.scanner.source[this.scanner.index];if(C===l)break;if(S=C===";",c+=C,++this.scanner.index,!S)switch(c.length){case 2:D=C==="#";break;case 3:D&&(E=C==="x",y=E||i.Character.isDecimalDigit(C.charCodeAt(0)),D=D&&!E);break;default:y=y&&!(D&&!i.Character.isDecimalDigit(C.charCodeAt(0))),y=y&&!(E&&!i.Character.isHexDigit(C.charCodeAt(0)));break}}if(y&&S&&c.length>2){var T=c.substr(1,c.length-2);D&&T.length>1?c=String.fromCharCode(parseInt(T.substr(1),10)):E&&T.length>2?c=String.fromCharCode(parseInt("0"+T.substr(1),16)):!D&&!E&&h.XHTMLEntities[T]&&(c=h.XHTMLEntities[T])}return c},o.prototype.lexJSX=function(){var l=this.scanner.source.charCodeAt(this.scanner.index);if(l===60||l===62||l===47||l===58||l===61||l===123||l===125){var c=this.scanner.source[this.scanner.index++];return{type:7,value:c,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(l===34||l===39){for(var y=this.scanner.index,S=this.scanner.source[this.scanner.index++],D="";!this.scanner.eof();){var E=this.scanner.source[this.scanner.index++];if(E===S)break;E==="&"?D+=this.scanXHTMLEntity(S):D+=E}return{type:8,value:D,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:y,end:this.scanner.index}}if(l===46){var C=this.scanner.source.charCodeAt(this.scanner.index+1),T=this.scanner.source.charCodeAt(this.scanner.index+2),c=C===46&&T===46?"...":".",y=this.scanner.index;return this.scanner.index+=c.length,{type:7,value:c,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:y,end:this.scanner.index}}if(l===96)return{type:10,value:"",lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(i.Character.isIdentifierStart(l)&&l!==92){var y=this.scanner.index;for(++this.scanner.index;!this.scanner.eof();){var E=this.scanner.source.charCodeAt(this.scanner.index);if(i.Character.isIdentifierPart(E)&&E!==92)++this.scanner.index;else if(E===45)++this.scanner.index;else break}var F=this.scanner.source.slice(y,this.scanner.index);return{type:100,value:F,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:y,end:this.scanner.index}}return this.scanner.lex()},o.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;var l=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(l)),l},o.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart;for(var l=this.scanner.index,c="";!this.scanner.eof();){var y=this.scanner.source[this.scanner.index];if(y==="{"||y==="<")break;++this.scanner.index,c+=y,i.Character.isLineTerminator(y.charCodeAt(0))&&(++this.scanner.lineNumber,y==="\r"&&this.scanner.source[this.scanner.index]===`
6
6
  `&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart;var S={type:101,value:c,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:l,end:this.scanner.index};return c.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(S)),S},o.prototype.peekJSXToken=function(){var l=this.scanner.saveState();this.scanner.scanComments();var c=this.lexJSX();return this.scanner.restoreState(l),c},o.prototype.expectJSX=function(l){var c=this.nextJSXToken();(c.type!==7||c.value!==l)&&this.throwUnexpectedToken(c)},o.prototype.matchJSX=function(l){var c=this.peekJSXToken();return c.type===7&&c.value===l},o.prototype.parseJSXIdentifier=function(){var l=this.createJSXNode(),c=this.nextJSXToken();return c.type!==100&&this.throwUnexpectedToken(c),this.finalize(l,new u.JSXIdentifier(c.value))},o.prototype.parseJSXElementName=function(){var l=this.createJSXNode(),c=this.parseJSXIdentifier();if(this.matchJSX(":")){var y=c;this.expectJSX(":");var S=this.parseJSXIdentifier();c=this.finalize(l,new u.JSXNamespacedName(y,S))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var D=c;this.expectJSX(".");var E=this.parseJSXIdentifier();c=this.finalize(l,new u.JSXMemberExpression(D,E))}return c},o.prototype.parseJSXAttributeName=function(){var l=this.createJSXNode(),c,y=this.parseJSXIdentifier();if(this.matchJSX(":")){var S=y;this.expectJSX(":");var D=this.parseJSXIdentifier();c=this.finalize(l,new u.JSXNamespacedName(S,D))}else c=y;return c},o.prototype.parseJSXStringLiteralAttribute=function(){var l=this.createJSXNode(),c=this.nextJSXToken();c.type!==8&&this.throwUnexpectedToken(c);var y=this.getTokenRaw(c);return this.finalize(l,new f.Literal(c.value,y))},o.prototype.parseJSXExpressionAttribute=function(){var l=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var c=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(l,new u.JSXExpressionContainer(c))},o.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},o.prototype.parseJSXNameValueAttribute=function(){var l=this.createJSXNode(),c=this.parseJSXAttributeName(),y=null;return this.matchJSX("=")&&(this.expectJSX("="),y=this.parseJSXAttributeValue()),this.finalize(l,new u.JSXAttribute(c,y))},o.prototype.parseJSXSpreadAttribute=function(){var l=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var c=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(l,new u.JSXSpreadAttribute(c))},o.prototype.parseJSXAttributes=function(){for(var l=[];!this.matchJSX("/")&&!this.matchJSX(">");){var c=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();l.push(c)}return l},o.prototype.parseJSXOpeningElement=function(){var l=this.createJSXNode();this.expectJSX("<");var c=this.parseJSXElementName(),y=this.parseJSXAttributes(),S=this.matchJSX("/");return S&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(l,new u.JSXOpeningElement(c,S,y))},o.prototype.parseJSXBoundaryElement=function(){var l=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var c=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(l,new u.JSXClosingElement(c))}var y=this.parseJSXElementName(),S=this.parseJSXAttributes(),D=this.matchJSX("/");return D&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(l,new u.JSXOpeningElement(y,D,S))},o.prototype.parseJSXEmptyExpression=function(){var l=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.finalize(l,new u.JSXEmptyExpression)},o.prototype.parseJSXExpressionContainer=function(){var l=this.createJSXNode();this.expectJSX("{");var c;return this.matchJSX("}")?(c=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),c=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(l,new u.JSXExpressionContainer(c))},o.prototype.parseJSXChildren=function(){for(var l=[];!this.scanner.eof();){var c=this.createJSXChildNode(),y=this.nextJSXText();if(y.start<y.end){var S=this.getTokenRaw(y),D=this.finalize(c,new u.JSXText(y.value,S));l.push(D)}if(this.scanner.source[this.scanner.index]==="{"){var E=this.parseJSXExpressionContainer();l.push(E)}else break}return l},o.prototype.parseComplexJSXElement=function(l){for(var c=[];!this.scanner.eof();){l.children=l.children.concat(this.parseJSXChildren());var y=this.createJSXChildNode(),S=this.parseJSXBoundaryElement();if(S.type===a.JSXSyntax.JSXOpeningElement){var D=S;if(D.selfClosing){var E=this.finalize(y,new u.JSXElement(D,[],null));l.children.push(E)}else c.push(l),l={node:y,opening:D,closing:null,children:[]}}if(S.type===a.JSXSyntax.JSXClosingElement){l.closing=S;var C=g(l.opening.name),T=g(l.closing.name);if(C!==T&&this.tolerateError("Expected corresponding JSX closing tag for %0",C),c.length>0){var E=this.finalize(l.node,new u.JSXElement(l.opening,l.children,l.closing));l=c[c.length-1],l.children.push(E),c.pop()}else break}}return l},o.prototype.parseJSXElement=function(){var l=this.createJSXNode(),c=this.parseJSXOpeningElement(),y=[],S=null;if(!c.selfClosing){var D=this.parseComplexJSXElement({node:l,opening:c,closing:S,children:y});y=D.children,S=D.closing}return this.finalize(l,new u.JSXElement(c,y,S))},o.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var l=this.parseJSXElement();return this.finishJSX(),l},o.prototype.isStartOfExpression=function(){return s.prototype.isStartOfExpression.call(this)||this.match("<")},o}(p.Parser);e.JSXParser=d},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};e.Character={fromCodePoint:function(n){return n<65536?String.fromCharCode(n):String.fromCharCode(55296+(n-65536>>10))+String.fromCharCode(56320+(n-65536&1023))},isWhiteSpace:function(n){return n===32||n===9||n===11||n===12||n===160||n>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(n)>=0},isLineTerminator:function(n){return n===10||n===13||n===8232||n===8233},isIdentifierStart:function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n===92||n>=128&&r.NonAsciiIdentifierStart.test(e.Character.fromCodePoint(n))},isIdentifierPart:function(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===92||n>=128&&r.NonAsciiIdentifierPart.test(e.Character.fromCodePoint(n))},isDecimalDigit:function(n){return n>=48&&n<=57},isHexDigit:function(n){return n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102},isOctalDigit:function(n){return n>=48&&n<=55}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(6),i=function(){function l(c){this.type=n.JSXSyntax.JSXClosingElement,this.name=c}return l}();e.JSXClosingElement=i;var u=function(){function l(c,y,S){this.type=n.JSXSyntax.JSXElement,this.openingElement=c,this.children=y,this.closingElement=S}return l}();e.JSXElement=u;var a=function(){function l(){this.type=n.JSXSyntax.JSXEmptyExpression}return l}();e.JSXEmptyExpression=a;var f=function(){function l(c){this.type=n.JSXSyntax.JSXExpressionContainer,this.expression=c}return l}();e.JSXExpressionContainer=f;var p=function(){function l(c){this.type=n.JSXSyntax.JSXIdentifier,this.name=c}return l}();e.JSXIdentifier=p;var m=function(){function l(c,y){this.type=n.JSXSyntax.JSXMemberExpression,this.object=c,this.property=y}return l}();e.JSXMemberExpression=m;var h=function(){function l(c,y){this.type=n.JSXSyntax.JSXAttribute,this.name=c,this.value=y}return l}();e.JSXAttribute=h;var g=function(){function l(c,y){this.type=n.JSXSyntax.JSXNamespacedName,this.namespace=c,this.name=y}return l}();e.JSXNamespacedName=g;var d=function(){function l(c,y,S){this.type=n.JSXSyntax.JSXOpeningElement,this.name=c,this.selfClosing=y,this.attributes=S}return l}();e.JSXOpeningElement=d;var s=function(){function l(c){this.type=n.JSXSyntax.JSXSpreadAttribute,this.argument=c}return l}();e.JSXSpreadAttribute=s;var o=function(){function l(c,y){this.type=n.JSXSyntax.JSXText,this.value=c,this.raw=y}return l}();e.JSXText=o},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(2),i=function(){function x(v){this.type=n.Syntax.ArrayExpression,this.elements=v}return x}();e.ArrayExpression=i;var u=function(){function x(v){this.type=n.Syntax.ArrayPattern,this.elements=v}return x}();e.ArrayPattern=u;var a=function(){function x(v,A,M){this.type=n.Syntax.ArrowFunctionExpression,this.id=null,this.params=v,this.body=A,this.generator=!1,this.expression=M,this.async=!1}return x}();e.ArrowFunctionExpression=a;var f=function(){function x(v,A,M){this.type=n.Syntax.AssignmentExpression,this.operator=v,this.left=A,this.right=M}return x}();e.AssignmentExpression=f;var p=function(){function x(v,A){this.type=n.Syntax.AssignmentPattern,this.left=v,this.right=A}return x}();e.AssignmentPattern=p;var m=function(){function x(v,A,M){this.type=n.Syntax.ArrowFunctionExpression,this.id=null,this.params=v,this.body=A,this.generator=!1,this.expression=M,this.async=!0}return x}();e.AsyncArrowFunctionExpression=m;var h=function(){function x(v,A,M){this.type=n.Syntax.FunctionDeclaration,this.id=v,this.params=A,this.body=M,this.generator=!1,this.expression=!1,this.async=!0}return x}();e.AsyncFunctionDeclaration=h;var g=function(){function x(v,A,M){this.type=n.Syntax.FunctionExpression,this.id=v,this.params=A,this.body=M,this.generator=!1,this.expression=!1,this.async=!0}return x}();e.AsyncFunctionExpression=g;var d=function(){function x(v){this.type=n.Syntax.AwaitExpression,this.argument=v}return x}();e.AwaitExpression=d;var s=function(){function x(v,A,M){var ee=v==="||"||v==="&&";this.type=ee?n.Syntax.LogicalExpression:n.Syntax.BinaryExpression,this.operator=v,this.left=A,this.right=M}return x}();e.BinaryExpression=s;var o=function(){function x(v){this.type=n.Syntax.BlockStatement,this.body=v}return x}();e.BlockStatement=o;var l=function(){function x(v){this.type=n.Syntax.BreakStatement,this.label=v}return x}();e.BreakStatement=l;var c=function(){function x(v,A){this.type=n.Syntax.CallExpression,this.callee=v,this.arguments=A}return x}();e.CallExpression=c;var y=function(){function x(v,A){this.type=n.Syntax.CatchClause,this.param=v,this.body=A}return x}();e.CatchClause=y;var S=function(){function x(v){this.type=n.Syntax.ClassBody,this.body=v}return x}();e.ClassBody=S;var D=function(){function x(v,A,M){this.type=n.Syntax.ClassDeclaration,this.id=v,this.superClass=A,this.body=M}return x}();e.ClassDeclaration=D;var E=function(){function x(v,A,M){this.type=n.Syntax.ClassExpression,this.id=v,this.superClass=A,this.body=M}return x}();e.ClassExpression=E;var C=function(){function x(v,A){this.type=n.Syntax.MemberExpression,this.computed=!0,this.object=v,this.property=A}return x}();e.ComputedMemberExpression=C;var T=function(){function x(v,A,M){this.type=n.Syntax.ConditionalExpression,this.test=v,this.consequent=A,this.alternate=M}return x}();e.ConditionalExpression=T;var F=function(){function x(v){this.type=n.Syntax.ContinueStatement,this.label=v}return x}();e.ContinueStatement=F;var O=function(){function x(){this.type=n.Syntax.DebuggerStatement}return x}();e.DebuggerStatement=O;var j=function(){function x(v,A){this.type=n.Syntax.ExpressionStatement,this.expression=v,this.directive=A}return x}();e.Directive=j;var q=function(){function x(v,A){this.type=n.Syntax.DoWhileStatement,this.body=v,this.test=A}return x}();e.DoWhileStatement=q;var z=function(){function x(){this.type=n.Syntax.EmptyStatement}return x}();e.EmptyStatement=z;var xe=function(){function x(v){this.type=n.Syntax.ExportAllDeclaration,this.source=v}return x}();e.ExportAllDeclaration=xe;var qe=function(){function x(v){this.type=n.Syntax.ExportDefaultDeclaration,this.declaration=v}return x}();e.ExportDefaultDeclaration=qe;var vr=function(){function x(v,A,M){this.type=n.Syntax.ExportNamedDeclaration,this.declaration=v,this.specifiers=A,this.source=M}return x}();e.ExportNamedDeclaration=vr;var Dr=function(){function x(v,A){this.type=n.Syntax.ExportSpecifier,this.exported=A,this.local=v}return x}();e.ExportSpecifier=Dr;var H=function(){function x(v){this.type=n.Syntax.ExpressionStatement,this.expression=v}return x}();e.ExpressionStatement=H;var pe=function(){function x(v,A,M){this.type=n.Syntax.ForInStatement,this.left=v,this.right=A,this.body=M,this.each=!1}return x}();e.ForInStatement=pe;var ve=function(){function x(v,A,M){this.type=n.Syntax.ForOfStatement,this.left=v,this.right=A,this.body=M}return x}();e.ForOfStatement=ve;var me=function(){function x(v,A,M,ee){this.type=n.Syntax.ForStatement,this.init=v,this.test=A,this.update=M,this.body=ee}return x}();e.ForStatement=me;var He=function(){function x(v,A,M,ee){this.type=n.Syntax.FunctionDeclaration,this.id=v,this.params=A,this.body=M,this.generator=ee,this.expression=!1,this.async=!1}return x}();e.FunctionDeclaration=He;var ge=function(){function x(v,A,M,ee){this.type=n.Syntax.FunctionExpression,this.id=v,this.params=A,this.body=M,this.generator=ee,this.expression=!1,this.async=!1}return x}();e.FunctionExpression=ge;var kt=function(){function x(v){this.type=n.Syntax.Identifier,this.name=v}return x}();e.Identifier=kt;var Tt=function(){function x(v,A,M){this.type=n.Syntax.IfStatement,this.test=v,this.consequent=A,this.alternate=M}return x}();e.IfStatement=Tt;var It=function(){function x(v,A){this.type=n.Syntax.ImportDeclaration,this.specifiers=v,this.source=A}return x}();e.ImportDeclaration=It;var J=function(){function x(v){this.type=n.Syntax.ImportDefaultSpecifier,this.local=v}return x}();e.ImportDefaultSpecifier=J;var it=function(){function x(v){this.type=n.Syntax.ImportNamespaceSpecifier,this.local=v}return x}();e.ImportNamespaceSpecifier=it;var Ft=function(){function x(v,A){this.type=n.Syntax.ImportSpecifier,this.local=v,this.imported=A}return x}();e.ImportSpecifier=Ft;var Rt=function(){function x(v,A){this.type=n.Syntax.LabeledStatement,this.label=v,this.body=A}return x}();e.LabeledStatement=Rt;var st=function(){function x(v,A){this.type=n.Syntax.Literal,this.value=v,this.raw=A}return x}();e.Literal=st;var Lt=function(){function x(v,A){this.type=n.Syntax.MetaProperty,this.meta=v,this.property=A}return x}();e.MetaProperty=Lt;var Pt=function(){function x(v,A,M,ee,Ar){this.type=n.Syntax.MethodDefinition,this.key=v,this.computed=A,this.value=M,this.kind=ee,this.static=Ar}return x}();e.MethodDefinition=Pt;var Mt=function(){function x(v){this.type=n.Syntax.Program,this.body=v,this.sourceType="module"}return x}();e.Module=Mt;var ot=function(){function x(v,A){this.type=n.Syntax.NewExpression,this.callee=v,this.arguments=A}return x}();e.NewExpression=ot;var at=function(){function x(v){this.type=n.Syntax.ObjectExpression,this.properties=v}return x}();e.ObjectExpression=at;var ae=function(){function x(v){this.type=n.Syntax.ObjectPattern,this.properties=v}return x}();e.ObjectPattern=ae;var ue=function(){function x(v,A,M,ee,Ar,dl){this.type=n.Syntax.Property,this.key=A,this.computed=M,this.value=ee,this.kind=v,this.method=Ar,this.shorthand=dl}return x}();e.Property=ue;var se=function(){function x(v,A,M,ee){this.type=n.Syntax.Literal,this.value=v,this.raw=A,this.regex={pattern:M,flags:ee}}return x}();e.RegexLiteral=se;var Er=function(){function x(v){this.type=n.Syntax.RestElement,this.argument=v}return x}();e.RestElement=Er;var Cr=function(){function x(v){this.type=n.Syntax.ReturnStatement,this.argument=v}return x}();e.ReturnStatement=Cr;var Wu=function(){function x(v){this.type=n.Syntax.Program,this.body=v,this.sourceType="script"}return x}();e.Script=Wu;var zu=function(){function x(v){this.type=n.Syntax.SequenceExpression,this.expressions=v}return x}();e.SequenceExpression=zu;var Xu=function(){function x(v){this.type=n.Syntax.SpreadElement,this.argument=v}return x}();e.SpreadElement=Xu;var Ju=function(){function x(v,A){this.type=n.Syntax.MemberExpression,this.computed=!1,this.object=v,this.property=A}return x}();e.StaticMemberExpression=Ju;var Vu=function(){function x(){this.type=n.Syntax.Super}return x}();e.Super=Vu;var Ku=function(){function x(v,A){this.type=n.Syntax.SwitchCase,this.test=v,this.consequent=A}return x}();e.SwitchCase=Ku;var Yu=function(){function x(v,A){this.type=n.Syntax.SwitchStatement,this.discriminant=v,this.cases=A}return x}();e.SwitchStatement=Yu;var Qu=function(){function x(v,A){this.type=n.Syntax.TaggedTemplateExpression,this.tag=v,this.quasi=A}return x}();e.TaggedTemplateExpression=Qu;var Zu=function(){function x(v,A){this.type=n.Syntax.TemplateElement,this.value=v,this.tail=A}return x}();e.TemplateElement=Zu;var el=function(){function x(v,A){this.type=n.Syntax.TemplateLiteral,this.quasis=v,this.expressions=A}return x}();e.TemplateLiteral=el;var tl=function(){function x(){this.type=n.Syntax.ThisExpression}return x}();e.ThisExpression=tl;var rl=function(){function x(v){this.type=n.Syntax.ThrowStatement,this.argument=v}return x}();e.ThrowStatement=rl;var nl=function(){function x(v,A,M){this.type=n.Syntax.TryStatement,this.block=v,this.handler=A,this.finalizer=M}return x}();e.TryStatement=nl;var il=function(){function x(v,A){this.type=n.Syntax.UnaryExpression,this.operator=v,this.argument=A,this.prefix=!0}return x}();e.UnaryExpression=il;var sl=function(){function x(v,A,M){this.type=n.Syntax.UpdateExpression,this.operator=v,this.argument=A,this.prefix=M}return x}();e.UpdateExpression=sl;var ol=function(){function x(v,A){this.type=n.Syntax.VariableDeclaration,this.declarations=v,this.kind=A}return x}();e.VariableDeclaration=ol;var al=function(){function x(v,A){this.type=n.Syntax.VariableDeclarator,this.id=v,this.init=A}return x}();e.VariableDeclarator=al;var ul=function(){function x(v,A){this.type=n.Syntax.WhileStatement,this.test=v,this.body=A}return x}();e.WhileStatement=ul;var ll=function(){function x(v,A){this.type=n.Syntax.WithStatement,this.object=v,this.body=A}return x}();e.WithStatement=ll;var cl=function(){function x(v,A){this.type=n.Syntax.YieldExpression,this.argument=v,this.delegate=A}return x}();e.YieldExpression=cl},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(9),i=r(10),u=r(11),a=r(7),f=r(12),p=r(2),m=r(13),h="ArrowParameterPlaceHolder",g=function(){function d(s,o,l){o===void 0&&(o={}),this.config={range:typeof o.range=="boolean"&&o.range,loc:typeof o.loc=="boolean"&&o.loc,source:null,tokens:typeof o.tokens=="boolean"&&o.tokens,comment:typeof o.comment=="boolean"&&o.comment,tolerant:typeof o.tolerant=="boolean"&&o.tolerant},this.config.loc&&o.source&&o.source!==null&&(this.config.source=String(o.source)),this.delegate=l,this.errorHandler=new i.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new f.Scanner(s,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.lookahead={type:2,value:"",lineNumber:this.scanner.lineNumber,lineStart:0,start:0,end:0},this.hasLineTerminator=!1,this.context={isModule:!1,await:!1,allowIn:!0,allowStrictDirective:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:!1},this.tokens=[],this.startMarker={index:0,line:this.scanner.lineNumber,column:0},this.lastMarker={index:0,line:this.scanner.lineNumber,column:0},this.nextToken(),this.lastMarker={index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}return d.prototype.throwError=function(s){for(var o=[],l=1;l<arguments.length;l++)o[l-1]=arguments[l];var c=Array.prototype.slice.call(arguments,1),y=s.replace(/%(\d)/g,function(C,T){return n.assert(T<c.length,"Message reference must be in range"),c[T]}),S=this.lastMarker.index,D=this.lastMarker.line,E=this.lastMarker.column+1;throw this.errorHandler.createError(S,D,E,y)},d.prototype.tolerateError=function(s){for(var o=[],l=1;l<arguments.length;l++)o[l-1]=arguments[l];var c=Array.prototype.slice.call(arguments,1),y=s.replace(/%(\d)/g,function(C,T){return n.assert(T<c.length,"Message reference must be in range"),c[T]}),S=this.lastMarker.index,D=this.scanner.lineNumber,E=this.lastMarker.column+1;this.errorHandler.tolerateError(S,D,E,y)},d.prototype.unexpectedTokenError=function(s,o){var l=o||u.Messages.UnexpectedToken,c;if(s?(o||(l=s.type===2?u.Messages.UnexpectedEOS:s.type===3?u.Messages.UnexpectedIdentifier:s.type===6?u.Messages.UnexpectedNumber:s.type===8?u.Messages.UnexpectedString:s.type===10?u.Messages.UnexpectedTemplate:u.Messages.UnexpectedToken,s.type===4&&(this.scanner.isFutureReservedWord(s.value)?l=u.Messages.UnexpectedReserved:this.context.strict&&this.scanner.isStrictModeReservedWord(s.value)&&(l=u.Messages.StrictReservedWord))),c=s.value):c="ILLEGAL",l=l.replace("%0",c),s&&typeof s.lineNumber=="number"){var y=s.start,S=s.lineNumber,D=this.lastMarker.index-this.lastMarker.column,E=s.start-D+1;return this.errorHandler.createError(y,S,E,l)}else{var y=this.lastMarker.index,S=this.lastMarker.line,E=this.lastMarker.column+1;return this.errorHandler.createError(y,S,E,l)}},d.prototype.throwUnexpectedToken=function(s,o){throw this.unexpectedTokenError(s,o)},d.prototype.tolerateUnexpectedToken=function(s,o){this.errorHandler.tolerate(this.unexpectedTokenError(s,o))},d.prototype.collectComments=function(){if(!this.config.comment)this.scanner.scanComments();else{var s=this.scanner.scanComments();if(s.length>0&&this.delegate)for(var o=0;o<s.length;++o){var l=s[o],c=void 0;c={type:l.multiLine?"BlockComment":"LineComment",value:this.scanner.source.slice(l.slice[0],l.slice[1])},this.config.range&&(c.range=l.range),this.config.loc&&(c.loc=l.loc);var y={start:{line:l.loc.start.line,column:l.loc.start.column,offset:l.range[0]},end:{line:l.loc.end.line,column:l.loc.end.column,offset:l.range[1]}};this.delegate(c,y)}}},d.prototype.getTokenRaw=function(s){return this.scanner.source.slice(s.start,s.end)},d.prototype.convertToken=function(s){var o={type:m.TokenName[s.type],value:this.getTokenRaw(s)};if(this.config.range&&(o.range=[s.start,s.end]),this.config.loc&&(o.loc={start:{line:this.startMarker.line,column:this.startMarker.column},end:{line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}}),s.type===9){var l=s.pattern,c=s.flags;o.regex={pattern:l,flags:c}}return o},d.prototype.nextToken=function(){var s=this.lookahead;this.lastMarker.index=this.scanner.index,this.lastMarker.line=this.scanner.lineNumber,this.lastMarker.column=this.scanner.index-this.scanner.lineStart,this.collectComments(),this.scanner.index!==this.startMarker.index&&(this.startMarker.index=this.scanner.index,this.startMarker.line=this.scanner.lineNumber,this.startMarker.column=this.scanner.index-this.scanner.lineStart);var o=this.scanner.lex();return this.hasLineTerminator=s.lineNumber!==o.lineNumber,o&&this.context.strict&&o.type===3&&this.scanner.isStrictModeReservedWord(o.value)&&(o.type=4),this.lookahead=o,this.config.tokens&&o.type!==2&&this.tokens.push(this.convertToken(o)),s},d.prototype.nextRegexToken=function(){this.collectComments();var s=this.scanner.scanRegExp();return this.config.tokens&&(this.tokens.pop(),this.tokens.push(this.convertToken(s))),this.lookahead=s,this.nextToken(),s},d.prototype.createNode=function(){return{index:this.startMarker.index,line:this.startMarker.line,column:this.startMarker.column}},d.prototype.startNode=function(s,o){o===void 0&&(o=0);var l=s.start-s.lineStart,c=s.lineNumber;return l<0&&(l+=o,c--),{index:s.start,line:c,column:l}},d.prototype.finalize=function(s,o){if(this.config.range&&(o.range=[s.index,this.lastMarker.index]),this.config.loc&&(o.loc={start:{line:s.line,column:s.column},end:{line:this.lastMarker.line,column:this.lastMarker.column}},this.config.source&&(o.loc.source=this.config.source)),this.delegate){var l={start:{line:s.line,column:s.column,offset:s.index},end:{line:this.lastMarker.line,column:this.lastMarker.column,offset:this.lastMarker.index}};this.delegate(o,l)}return o},d.prototype.expect=function(s){var o=this.nextToken();(o.type!==7||o.value!==s)&&this.throwUnexpectedToken(o)},d.prototype.expectCommaSeparator=function(){if(this.config.tolerant){var s=this.lookahead;s.type===7&&s.value===","?this.nextToken():s.type===7&&s.value===";"?(this.nextToken(),this.tolerateUnexpectedToken(s)):this.tolerateUnexpectedToken(s,u.Messages.UnexpectedToken)}else this.expect(",")},d.prototype.expectKeyword=function(s){var o=this.nextToken();(o.type!==4||o.value!==s)&&this.throwUnexpectedToken(o)},d.prototype.match=function(s){return this.lookahead.type===7&&this.lookahead.value===s},d.prototype.matchKeyword=function(s){return this.lookahead.type===4&&this.lookahead.value===s},d.prototype.matchContextualKeyword=function(s){return this.lookahead.type===3&&this.lookahead.value===s},d.prototype.matchAssign=function(){if(this.lookahead.type!==7)return!1;var s=this.lookahead.value;return s==="="||s==="*="||s==="**="||s==="/="||s==="%="||s==="+="||s==="-="||s==="<<="||s===">>="||s===">>>="||s==="&="||s==="^="||s==="|="},d.prototype.isolateCoverGrammar=function(s){var o=this.context.isBindingElement,l=this.context.isAssignmentTarget,c=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var y=s.call(this);return this.context.firstCoverInitializedNameError!==null&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=o,this.context.isAssignmentTarget=l,this.context.firstCoverInitializedNameError=c,y},d.prototype.inheritCoverGrammar=function(s){var o=this.context.isBindingElement,l=this.context.isAssignmentTarget,c=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var y=s.call(this);return this.context.isBindingElement=this.context.isBindingElement&&o,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&l,this.context.firstCoverInitializedNameError=c||this.context.firstCoverInitializedNameError,y},d.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type!==2&&!this.match("}")&&this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.line=this.startMarker.line,this.lastMarker.column=this.startMarker.column)},d.prototype.parsePrimaryExpression=function(){var s=this.createNode(),o,l,c;switch(this.lookahead.type){case 3:(this.context.isModule||this.context.await)&&this.lookahead.value==="await"&&this.tolerateUnexpectedToken(this.lookahead),o=this.matchAsyncFunction()?this.parseFunctionExpression():this.finalize(s,new a.Identifier(this.nextToken().value));break;case 6:case 8:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,u.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,l=this.nextToken(),c=this.getTokenRaw(l),o=this.finalize(s,new a.Literal(l.value,c));break;case 1:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,l=this.nextToken(),c=this.getTokenRaw(l),o=this.finalize(s,new a.Literal(l.value==="true",c));break;case 5:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,l=this.nextToken(),c=this.getTokenRaw(l),o=this.finalize(s,new a.Literal(null,c));break;case 10:o=this.parseTemplateLiteral();break;case 7:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,o=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":o=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":o=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,l=this.nextRegexToken(),c=this.getTokenRaw(l),o=this.finalize(s,new a.RegexLiteral(l.regex,c,l.pattern,l.flags));break;default:o=this.throwUnexpectedToken(this.nextToken())}break;case 4:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?o=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?o=this.finalize(s,new a.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?o=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),o=this.finalize(s,new a.ThisExpression)):this.matchKeyword("class")?o=this.parseClassExpression():o=this.throwUnexpectedToken(this.nextToken()));break;default:o=this.throwUnexpectedToken(this.nextToken())}return o},d.prototype.parseSpreadElement=function(){var s=this.createNode();this.expect("...");var o=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(s,new a.SpreadElement(o))},d.prototype.parseArrayInitializer=function(){var s=this.createNode(),o=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),o.push(null);else if(this.match("...")){var l=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),o.push(l)}else o.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(s,new a.ArrayExpression(o))},d.prototype.parsePropertyMethod=function(s){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var o=this.context.strict,l=this.context.allowStrictDirective;this.context.allowStrictDirective=s.simple;var c=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&s.firstRestricted&&this.tolerateUnexpectedToken(s.firstRestricted,s.message),this.context.strict&&s.stricted&&this.tolerateUnexpectedToken(s.stricted,s.message),this.context.strict=o,this.context.allowStrictDirective=l,c},d.prototype.parsePropertyMethodFunction=function(){var s=!1,o=this.createNode(),l=this.context.allowYield;this.context.allowYield=!0;var c=this.parseFormalParameters(),y=this.parsePropertyMethod(c);return this.context.allowYield=l,this.finalize(o,new a.FunctionExpression(null,c.params,y,s))},d.prototype.parsePropertyMethodAsyncFunction=function(){var s=this.createNode(),o=this.context.allowYield,l=this.context.await;this.context.allowYield=!1,this.context.await=!0;var c=this.parseFormalParameters(),y=this.parsePropertyMethod(c);return this.context.allowYield=o,this.context.await=l,this.finalize(s,new a.AsyncFunctionExpression(null,c.params,y))},d.prototype.parseObjectPropertyKey=function(){var s=this.createNode(),o=this.nextToken(),l;switch(o.type){case 8:case 6:this.context.strict&&o.octal&&this.tolerateUnexpectedToken(o,u.Messages.StrictOctalLiteral);var c=this.getTokenRaw(o);l=this.finalize(s,new a.Literal(o.value,c));break;case 3:case 1:case 5:case 4:l=this.finalize(s,new a.Identifier(o.value));break;case 7:o.value==="["?(l=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):l=this.throwUnexpectedToken(o);break;default:l=this.throwUnexpectedToken(o)}return l},d.prototype.isPropertyKey=function(s,o){return s.type===p.Syntax.Identifier&&s.name===o||s.type===p.Syntax.Literal&&s.value===o},d.prototype.parseObjectProperty=function(s){var o=this.createNode(),l=this.lookahead,c,y=null,S=null,D=!1,E=!1,C=!1,T=!1;if(l.type===3){var F=l.value;this.nextToken(),D=this.match("["),T=!this.hasLineTerminator&&F==="async"&&!this.match(":")&&!this.match("(")&&!this.match("*")&&!this.match(","),y=T?this.parseObjectPropertyKey():this.finalize(o,new a.Identifier(F))}else this.match("*")?this.nextToken():(D=this.match("["),y=this.parseObjectPropertyKey());var O=this.qualifiedPropertyName(this.lookahead);if(l.type===3&&!T&&l.value==="get"&&O)c="get",D=this.match("["),y=this.parseObjectPropertyKey(),this.context.allowYield=!1,S=this.parseGetterMethod();else if(l.type===3&&!T&&l.value==="set"&&O)c="set",D=this.match("["),y=this.parseObjectPropertyKey(),S=this.parseSetterMethod();else if(l.type===7&&l.value==="*"&&O)c="init",D=this.match("["),y=this.parseObjectPropertyKey(),S=this.parseGeneratorMethod(),E=!0;else if(y||this.throwUnexpectedToken(this.lookahead),c="init",this.match(":")&&!T)!D&&this.isPropertyKey(y,"__proto__")&&(s.value&&this.tolerateError(u.Messages.DuplicateProtoProperty),s.value=!0),this.nextToken(),S=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))S=T?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0;else if(l.type===3){var F=this.finalize(o,new a.Identifier(l.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),C=!0;var j=this.isolateCoverGrammar(this.parseAssignmentExpression);S=this.finalize(o,new a.AssignmentPattern(F,j))}else C=!0,S=F}else this.throwUnexpectedToken(this.nextToken());return this.finalize(o,new a.Property(c,y,D,S,E,C))},d.prototype.parseObjectInitializer=function(){var s=this.createNode();this.expect("{");for(var o=[],l={value:!1};!this.match("}");)o.push(this.parseObjectProperty(l)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(s,new a.ObjectExpression(o))},d.prototype.parseTemplateHead=function(){n.assert(this.lookahead.head,"Template literal must start with a template head");var s=this.createNode(),o=this.nextToken(),l=o.value,c=o.cooked;return this.finalize(s,new a.TemplateElement({raw:l,cooked:c},o.tail))},d.prototype.parseTemplateElement=function(){this.lookahead.type!==10&&this.throwUnexpectedToken();var s=this.createNode(),o=this.nextToken(),l=o.value,c=o.cooked;return this.finalize(s,new a.TemplateElement({raw:l,cooked:c},o.tail))},d.prototype.parseTemplateLiteral=function(){var s=this.createNode(),o=[],l=[],c=this.parseTemplateHead();for(l.push(c);!c.tail;)o.push(this.parseExpression()),c=this.parseTemplateElement(),l.push(c);return this.finalize(s,new a.TemplateLiteral(l,o))},d.prototype.reinterpretExpressionAsPattern=function(s){switch(s.type){case p.Syntax.Identifier:case p.Syntax.MemberExpression:case p.Syntax.RestElement:case p.Syntax.AssignmentPattern:break;case p.Syntax.SpreadElement:s.type=p.Syntax.RestElement,this.reinterpretExpressionAsPattern(s.argument);break;case p.Syntax.ArrayExpression:s.type=p.Syntax.ArrayPattern;for(var o=0;o<s.elements.length;o++)s.elements[o]!==null&&this.reinterpretExpressionAsPattern(s.elements[o]);break;case p.Syntax.ObjectExpression:s.type=p.Syntax.ObjectPattern;for(var o=0;o<s.properties.length;o++)this.reinterpretExpressionAsPattern(s.properties[o].value);break;case p.Syntax.AssignmentExpression:s.type=p.Syntax.AssignmentPattern,delete s.operator,this.reinterpretExpressionAsPattern(s.left);break;default:break}},d.prototype.parseGroupExpression=function(){var s;if(this.expect("("),this.match(")"))this.nextToken(),this.match("=>")||this.expect("=>"),s={type:h,params:[],async:!1};else{var o=this.lookahead,l=[];if(this.match("..."))s=this.parseRestElement(l),this.expect(")"),this.match("=>")||this.expect("=>"),s={type:h,params:[s],async:!1};else{var c=!1;if(this.context.isBindingElement=!0,s=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var y=[];for(this.context.isAssignmentTarget=!1,y.push(s);this.lookahead.type!==2&&this.match(",");){if(this.nextToken(),this.match(")")){this.nextToken();for(var S=0;S<y.length;S++)this.reinterpretExpressionAsPattern(y[S]);c=!0,s={type:h,params:y,async:!1}}else if(this.match("...")){this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),y.push(this.parseRestElement(l)),this.expect(")"),this.match("=>")||this.expect("=>"),this.context.isBindingElement=!1;for(var S=0;S<y.length;S++)this.reinterpretExpressionAsPattern(y[S]);c=!0,s={type:h,params:y,async:!1}}else y.push(this.inheritCoverGrammar(this.parseAssignmentExpression));if(c)break}c||(s=this.finalize(this.startNode(o),new a.SequenceExpression(y)))}if(!c){if(this.expect(")"),this.match("=>")&&(s.type===p.Syntax.Identifier&&s.name==="yield"&&(c=!0,s={type:h,params:[s],async:!1}),!c)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),s.type===p.Syntax.SequenceExpression)for(var S=0;S<s.expressions.length;S++)this.reinterpretExpressionAsPattern(s.expressions[S]);else this.reinterpretExpressionAsPattern(s);var D=s.type===p.Syntax.SequenceExpression?s.expressions:[s];s={type:h,params:D,async:!1}}this.context.isBindingElement=!1}}}return s},d.prototype.parseArguments=function(){this.expect("(");var s=[];if(!this.match(")"))for(;;){var o=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAssignmentExpression);if(s.push(o),this.match(")")||(this.expectCommaSeparator(),this.match(")")))break}return this.expect(")"),s},d.prototype.isIdentifierName=function(s){return s.type===3||s.type===4||s.type===1||s.type===5},d.prototype.parseIdentifierName=function(){var s=this.createNode(),o=this.nextToken();return this.isIdentifierName(o)||this.throwUnexpectedToken(o),this.finalize(s,new a.Identifier(o.value))},d.prototype.parseNewExpression=function(){var s=this.createNode(),o=this.parseIdentifierName();n.assert(o.name==="new","New expression must start with `new`");var l;if(this.match("."))if(this.nextToken(),this.lookahead.type===3&&this.context.inFunctionBody&&this.lookahead.value==="target"){var c=this.parseIdentifierName();l=new a.MetaProperty(o,c)}else this.throwUnexpectedToken(this.lookahead);else{var y=this.isolateCoverGrammar(this.parseLeftHandSideExpression),S=this.match("(")?this.parseArguments():[];l=new a.NewExpression(y,S),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return this.finalize(s,l)},d.prototype.parseAsyncArgument=function(){var s=this.parseAssignmentExpression();return this.context.firstCoverInitializedNameError=null,s},d.prototype.parseAsyncArguments=function(){this.expect("(");var s=[];if(!this.match(")"))for(;;){var o=this.match("...")?this.parseSpreadElement():this.isolateCoverGrammar(this.parseAsyncArgument);if(s.push(o),this.match(")")||(this.expectCommaSeparator(),this.match(")")))break}return this.expect(")"),s},d.prototype.parseLeftHandSideExpressionAllowCall=function(){var s=this.lookahead,o=this.matchContextualKeyword("async"),l=this.context.allowIn;this.context.allowIn=!0;var c;for(this.matchKeyword("super")&&this.context.inFunctionBody?(c=this.createNode(),this.nextToken(),c=this.finalize(c,new a.Super),!this.match("(")&&!this.match(".")&&!this.match("[")&&this.throwUnexpectedToken(this.lookahead)):c=this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression);;)if(this.match(".")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");var y=this.parseIdentifierName();c=this.finalize(this.startNode(s),new a.StaticMemberExpression(c,y))}else if(this.match("(")){var S=o&&s.lineNumber===this.lookahead.lineNumber;this.context.isBindingElement=!1,this.context.isAssignmentTarget=!1;var D=S?this.parseAsyncArguments():this.parseArguments();if(c=this.finalize(this.startNode(s),new a.CallExpression(c,D)),S&&this.match("=>")){for(var E=0;E<D.length;++E)this.reinterpretExpressionAsPattern(D[E]);c={type:h,params:D,async:!0}}}else if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");var y=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),c=this.finalize(this.startNode(s),new a.ComputedMemberExpression(c,y))}else if(this.lookahead.type===10&&this.lookahead.head){var C=this.parseTemplateLiteral();c=this.finalize(this.startNode(s),new a.TaggedTemplateExpression(c,C))}else break;return this.context.allowIn=l,c},d.prototype.parseSuper=function(){var s=this.createNode();return this.expectKeyword("super"),!this.match("[")&&!this.match(".")&&this.throwUnexpectedToken(this.lookahead),this.finalize(s,new a.Super)},d.prototype.parseLeftHandSideExpression=function(){n.assert(this.context.allowIn,"callee of new expression always allow in keyword.");for(var s=this.startNode(this.lookahead),o=this.matchKeyword("super")&&this.context.inFunctionBody?this.parseSuper():this.inheritCoverGrammar(this.matchKeyword("new")?this.parseNewExpression:this.parsePrimaryExpression);;)if(this.match("[")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect("[");var l=this.isolateCoverGrammar(this.parseExpression);this.expect("]"),o=this.finalize(s,new a.ComputedMemberExpression(o,l))}else if(this.match(".")){this.context.isBindingElement=!1,this.context.isAssignmentTarget=!0,this.expect(".");var l=this.parseIdentifierName();o=this.finalize(s,new a.StaticMemberExpression(o,l))}else if(this.lookahead.type===10&&this.lookahead.head){var c=this.parseTemplateLiteral();o=this.finalize(s,new a.TaggedTemplateExpression(o,c))}else break;return o},d.prototype.parseUpdateExpression=function(){var s,o=this.lookahead;if(this.match("++")||this.match("--")){var l=this.startNode(o),c=this.nextToken();s=this.inheritCoverGrammar(this.parseUnaryExpression),this.context.strict&&s.type===p.Syntax.Identifier&&this.scanner.isRestrictedWord(s.name)&&this.tolerateError(u.Messages.StrictLHSPrefix),this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment);var y=!0;s=this.finalize(l,new a.UpdateExpression(c.value,s,y)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else if(s=this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall),!this.hasLineTerminator&&this.lookahead.type===7&&(this.match("++")||this.match("--"))){this.context.strict&&s.type===p.Syntax.Identifier&&this.scanner.isRestrictedWord(s.name)&&this.tolerateError(u.Messages.StrictLHSPostfix),this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var S=this.nextToken().value,y=!1;s=this.finalize(this.startNode(o),new a.UpdateExpression(S,s,y))}return s},d.prototype.parseAwaitExpression=function(){var s=this.createNode();this.nextToken();var o=this.parseUnaryExpression();return this.finalize(s,new a.AwaitExpression(o))},d.prototype.parseUnaryExpression=function(){var s;if(this.match("+")||this.match("-")||this.match("~")||this.match("!")||this.matchKeyword("delete")||this.matchKeyword("void")||this.matchKeyword("typeof")){var o=this.startNode(this.lookahead),l=this.nextToken();s=this.inheritCoverGrammar(this.parseUnaryExpression),s=this.finalize(o,new a.UnaryExpression(l.value,s)),this.context.strict&&s.operator==="delete"&&s.argument.type===p.Syntax.Identifier&&this.tolerateError(u.Messages.StrictDelete),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}else this.context.await&&this.matchContextualKeyword("await")?s=this.parseAwaitExpression():s=this.parseUpdateExpression();return s},d.prototype.parseExponentiationExpression=function(){var s=this.lookahead,o=this.inheritCoverGrammar(this.parseUnaryExpression);if(o.type!==p.Syntax.UnaryExpression&&this.match("**")){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var l=o,c=this.isolateCoverGrammar(this.parseExponentiationExpression);o=this.finalize(this.startNode(s),new a.BinaryExpression("**",l,c))}return o},d.prototype.binaryPrecedence=function(s){var o=s.value,l;return s.type===7?l=this.operatorPrecedence[o]||0:s.type===4?l=o==="instanceof"||this.context.allowIn&&o==="in"?7:0:l=0,l},d.prototype.parseBinaryExpression=function(){var s=this.lookahead,o=this.inheritCoverGrammar(this.parseExponentiationExpression),l=this.lookahead,c=this.binaryPrecedence(l);if(c>0){this.nextToken(),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var y=[s,this.lookahead],S=o,D=this.isolateCoverGrammar(this.parseExponentiationExpression),E=[S,l.value,D],C=[c];c=this.binaryPrecedence(this.lookahead),!(c<=0);){for(;E.length>2&&c<=C[C.length-1];){D=E.pop();var T=E.pop();C.pop(),S=E.pop(),y.pop();var F=this.startNode(y[y.length-1]);E.push(this.finalize(F,new a.BinaryExpression(T,S,D)))}E.push(this.nextToken().value),C.push(c),y.push(this.lookahead),E.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var O=E.length-1;o=E[O];for(var j=y.pop();O>1;){var q=y.pop(),z=j&&j.lineStart,F=this.startNode(q,z),T=E[O-1];o=this.finalize(F,new a.BinaryExpression(T,E[O-2],o)),O-=2,j=q}}return o},d.prototype.parseConditionalExpression=function(){var s=this.lookahead,o=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var l=this.context.allowIn;this.context.allowIn=!0;var c=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=l,this.expect(":");var y=this.isolateCoverGrammar(this.parseAssignmentExpression);o=this.finalize(this.startNode(s),new a.ConditionalExpression(o,c,y)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return o},d.prototype.checkPatternParam=function(s,o){switch(o.type){case p.Syntax.Identifier:this.validateParam(s,o,o.name);break;case p.Syntax.RestElement:this.checkPatternParam(s,o.argument);break;case p.Syntax.AssignmentPattern:this.checkPatternParam(s,o.left);break;case p.Syntax.ArrayPattern:for(var l=0;l<o.elements.length;l++)o.elements[l]!==null&&this.checkPatternParam(s,o.elements[l]);break;case p.Syntax.ObjectPattern:for(var l=0;l<o.properties.length;l++)this.checkPatternParam(s,o.properties[l].value);break;default:break}s.simple=s.simple&&o instanceof a.Identifier},d.prototype.reinterpretAsCoverFormalsList=function(s){var o=[s],l,c=!1;switch(s.type){case p.Syntax.Identifier:break;case h:o=s.params,c=s.async;break;default:return null}l={simple:!0,paramSet:{}};for(var y=0;y<o.length;++y){var S=o[y];S.type===p.Syntax.AssignmentPattern?S.right.type===p.Syntax.YieldExpression&&(S.right.argument&&this.throwUnexpectedToken(this.lookahead),S.right.type=p.Syntax.Identifier,S.right.name="yield",delete S.right.argument,delete S.right.delegate):c&&S.type===p.Syntax.Identifier&&S.name==="await"&&this.throwUnexpectedToken(this.lookahead),this.checkPatternParam(l,S),o[y]=S}if(this.context.strict||!this.context.allowYield)for(var y=0;y<o.length;++y){var S=o[y];S.type===p.Syntax.YieldExpression&&this.throwUnexpectedToken(this.lookahead)}if(l.message===u.Messages.StrictParamDupe){var D=this.context.strict?l.stricted:l.firstRestricted;this.throwUnexpectedToken(D,l.message)}return{simple:l.simple,params:o,stricted:l.stricted,firstRestricted:l.firstRestricted,message:l.message}},d.prototype.parseAssignmentExpression=function(){var s;if(!this.context.allowYield&&this.matchKeyword("yield"))s=this.parseYieldExpression();else{var o=this.lookahead,l=o;if(s=this.parseConditionalExpression(),l.type===3&&l.lineNumber===this.lookahead.lineNumber&&l.value==="async"&&(this.lookahead.type===3||this.matchKeyword("yield"))){var c=this.parsePrimaryExpression();this.reinterpretExpressionAsPattern(c),s={type:h,params:[c],async:!0}}if(s.type===h||this.match("=>")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var y=s.async,S=this.reinterpretAsCoverFormalsList(s);if(S){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var D=this.context.strict,E=this.context.allowStrictDirective;this.context.allowStrictDirective=S.simple;var C=this.context.allowYield,T=this.context.await;this.context.allowYield=!0,this.context.await=y;var F=this.startNode(o);this.expect("=>");var O=void 0;if(this.match("{")){var j=this.context.allowIn;this.context.allowIn=!0,O=this.parseFunctionSourceElements(),this.context.allowIn=j}else O=this.isolateCoverGrammar(this.parseAssignmentExpression);var q=O.type!==p.Syntax.BlockStatement;this.context.strict&&S.firstRestricted&&this.throwUnexpectedToken(S.firstRestricted,S.message),this.context.strict&&S.stricted&&this.tolerateUnexpectedToken(S.stricted,S.message),s=y?this.finalize(F,new a.AsyncArrowFunctionExpression(S.params,O,q)):this.finalize(F,new a.ArrowFunctionExpression(S.params,O,q)),this.context.strict=D,this.context.allowStrictDirective=E,this.context.allowYield=C,this.context.await=T}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(u.Messages.InvalidLHSInAssignment),this.context.strict&&s.type===p.Syntax.Identifier){var z=s;this.scanner.isRestrictedWord(z.name)&&this.tolerateUnexpectedToken(l,u.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(z.name)&&this.tolerateUnexpectedToken(l,u.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(s):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),l=this.nextToken();var xe=l.value,qe=this.isolateCoverGrammar(this.parseAssignmentExpression);s=this.finalize(this.startNode(o),new a.AssignmentExpression(xe,s,qe)),this.context.firstCoverInitializedNameError=null}}return s},d.prototype.parseExpression=function(){var s=this.lookahead,o=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var l=[];for(l.push(o);this.lookahead.type!==2&&this.match(",");)this.nextToken(),l.push(this.isolateCoverGrammar(this.parseAssignmentExpression));o=this.finalize(this.startNode(s),new a.SequenceExpression(l))}return o},d.prototype.parseStatementListItem=function(){var s;if(this.context.isAssignmentTarget=!0,this.context.isBindingElement=!0,this.lookahead.type===4)switch(this.lookahead.value){case"export":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,u.Messages.IllegalExportDeclaration),s=this.parseExportDeclaration();break;case"import":this.context.isModule||this.tolerateUnexpectedToken(this.lookahead,u.Messages.IllegalImportDeclaration),s=this.parseImportDeclaration();break;case"const":s=this.parseLexicalDeclaration({inFor:!1});break;case"function":s=this.parseFunctionDeclaration();break;case"class":s=this.parseClassDeclaration();break;case"let":s=this.isLexicalDeclaration()?this.parseLexicalDeclaration({inFor:!1}):this.parseStatement();break;default:s=this.parseStatement();break}else s=this.parseStatement();return s},d.prototype.parseBlock=function(){var s=this.createNode();this.expect("{");for(var o=[];!this.match("}");)o.push(this.parseStatementListItem());return this.expect("}"),this.finalize(s,new a.BlockStatement(o))},d.prototype.parseLexicalBinding=function(s,o){var l=this.createNode(),c=[],y=this.parsePattern(c,s);this.context.strict&&y.type===p.Syntax.Identifier&&this.scanner.isRestrictedWord(y.name)&&this.tolerateError(u.Messages.StrictVarName);var S=null;return s==="const"?!this.matchKeyword("in")&&!this.matchContextualKeyword("of")&&(this.match("=")?(this.nextToken(),S=this.isolateCoverGrammar(this.parseAssignmentExpression)):this.throwError(u.Messages.DeclarationMissingInitializer,"const")):(!o.inFor&&y.type!==p.Syntax.Identifier||this.match("="))&&(this.expect("="),S=this.isolateCoverGrammar(this.parseAssignmentExpression)),this.finalize(l,new a.VariableDeclarator(y,S))},d.prototype.parseBindingList=function(s,o){for(var l=[this.parseLexicalBinding(s,o)];this.match(",");)this.nextToken(),l.push(this.parseLexicalBinding(s,o));return l},d.prototype.isLexicalDeclaration=function(){var s=this.scanner.saveState();this.scanner.scanComments();var o=this.scanner.lex();return this.scanner.restoreState(s),o.type===3||o.type===7&&o.value==="["||o.type===7&&o.value==="{"||o.type===4&&o.value==="let"||o.type===4&&o.value==="yield"},d.prototype.parseLexicalDeclaration=function(s){var o=this.createNode(),l=this.nextToken().value;n.assert(l==="let"||l==="const","Lexical declaration must be either let or const");var c=this.parseBindingList(l,s);return this.consumeSemicolon(),this.finalize(o,new a.VariableDeclaration(c,l))},d.prototype.parseBindingRestElement=function(s,o){var l=this.createNode();this.expect("...");var c=this.parsePattern(s,o);return this.finalize(l,new a.RestElement(c))},d.prototype.parseArrayPattern=function(s,o){var l=this.createNode();this.expect("[");for(var c=[];!this.match("]");)if(this.match(","))this.nextToken(),c.push(null);else{if(this.match("...")){c.push(this.parseBindingRestElement(s,o));break}else c.push(this.parsePatternWithDefault(s,o));this.match("]")||this.expect(",")}return this.expect("]"),this.finalize(l,new a.ArrayPattern(c))},d.prototype.parsePropertyPattern=function(s,o){var l=this.createNode(),c=!1,y=!1,S=!1,D,E;if(this.lookahead.type===3){var C=this.lookahead;D=this.parseVariableIdentifier();var T=this.finalize(l,new a.Identifier(C.value));if(this.match("=")){s.push(C),y=!0,this.nextToken();var F=this.parseAssignmentExpression();E=this.finalize(this.startNode(C),new a.AssignmentPattern(T,F))}else this.match(":")?(this.expect(":"),E=this.parsePatternWithDefault(s,o)):(s.push(C),y=!0,E=T)}else c=this.match("["),D=this.parseObjectPropertyKey(),this.expect(":"),E=this.parsePatternWithDefault(s,o);return this.finalize(l,new a.Property("init",D,c,E,S,y))},d.prototype.parseObjectPattern=function(s,o){var l=this.createNode(),c=[];for(this.expect("{");!this.match("}");)c.push(this.parsePropertyPattern(s,o)),this.match("}")||this.expect(",");return this.expect("}"),this.finalize(l,new a.ObjectPattern(c))},d.prototype.parsePattern=function(s,o){var l;return this.match("[")?l=this.parseArrayPattern(s,o):this.match("{")?l=this.parseObjectPattern(s,o):(this.matchKeyword("let")&&(o==="const"||o==="let")&&this.tolerateUnexpectedToken(this.lookahead,u.Messages.LetInLexicalBinding),s.push(this.lookahead),l=this.parseVariableIdentifier(o)),l},d.prototype.parsePatternWithDefault=function(s,o){var l=this.lookahead,c=this.parsePattern(s,o);if(this.match("=")){this.nextToken();var y=this.context.allowYield;this.context.allowYield=!0;var S=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowYield=y,c=this.finalize(this.startNode(l),new a.AssignmentPattern(c,S))}return c},d.prototype.parseVariableIdentifier=function(s){var o=this.createNode(),l=this.nextToken();return l.type===4&&l.value==="yield"?this.context.strict?this.tolerateUnexpectedToken(l,u.Messages.StrictReservedWord):this.context.allowYield||this.throwUnexpectedToken(l):l.type!==3?this.context.strict&&l.type===4&&this.scanner.isStrictModeReservedWord(l.value)?this.tolerateUnexpectedToken(l,u.Messages.StrictReservedWord):(this.context.strict||l.value!=="let"||s!=="var")&&this.throwUnexpectedToken(l):(this.context.isModule||this.context.await)&&l.type===3&&l.value==="await"&&this.tolerateUnexpectedToken(l),this.finalize(o,new a.Identifier(l.value))},d.prototype.parseVariableDeclaration=function(s){var o=this.createNode(),l=[],c=this.parsePattern(l,"var");this.context.strict&&c.type===p.Syntax.Identifier&&this.scanner.isRestrictedWord(c.name)&&this.tolerateError(u.Messages.StrictVarName);var y=null;return this.match("=")?(this.nextToken(),y=this.isolateCoverGrammar(this.parseAssignmentExpression)):c.type!==p.Syntax.Identifier&&!s.inFor&&this.expect("="),this.finalize(o,new a.VariableDeclarator(c,y))},d.prototype.parseVariableDeclarationList=function(s){var o={inFor:s.inFor},l=[];for(l.push(this.parseVariableDeclaration(o));this.match(",");)this.nextToken(),l.push(this.parseVariableDeclaration(o));return l},d.prototype.parseVariableStatement=function(){var s=this.createNode();this.expectKeyword("var");var o=this.parseVariableDeclarationList({inFor:!1});return this.consumeSemicolon(),this.finalize(s,new a.VariableDeclaration(o,"var"))},d.prototype.parseEmptyStatement=function(){var s=this.createNode();return this.expect(";"),this.finalize(s,new a.EmptyStatement)},d.prototype.parseExpressionStatement=function(){var s=this.createNode(),o=this.parseExpression();return this.consumeSemicolon(),this.finalize(s,new a.ExpressionStatement(o))},d.prototype.parseIfClause=function(){return this.context.strict&&this.matchKeyword("function")&&this.tolerateError(u.Messages.StrictFunction),this.parseStatement()},d.prototype.parseIfStatement=function(){var s=this.createNode(),o,l=null;this.expectKeyword("if"),this.expect("(");var c=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),o=this.finalize(this.createNode(),new a.EmptyStatement)):(this.expect(")"),o=this.parseIfClause(),this.matchKeyword("else")&&(this.nextToken(),l=this.parseIfClause())),this.finalize(s,new a.IfStatement(c,o,l))},d.prototype.parseDoWhileStatement=function(){var s=this.createNode();this.expectKeyword("do");var o=this.context.inIteration;this.context.inIteration=!0;var l=this.parseStatement();this.context.inIteration=o,this.expectKeyword("while"),this.expect("(");var c=this.parseExpression();return!this.match(")")&&this.config.tolerant?this.tolerateUnexpectedToken(this.nextToken()):(this.expect(")"),this.match(";")&&this.nextToken()),this.finalize(s,new a.DoWhileStatement(l,c))},d.prototype.parseWhileStatement=function(){var s=this.createNode(),o;this.expectKeyword("while"),this.expect("(");var l=this.parseExpression();if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),o=this.finalize(this.createNode(),new a.EmptyStatement);else{this.expect(")");var c=this.context.inIteration;this.context.inIteration=!0,o=this.parseStatement(),this.context.inIteration=c}return this.finalize(s,new a.WhileStatement(l,o))},d.prototype.parseForStatement=function(){var s=null,o=null,l=null,c=!0,y,S,D=this.createNode();if(this.expectKeyword("for"),this.expect("("),this.match(";"))this.nextToken();else if(this.matchKeyword("var")){s=this.createNode(),this.nextToken();var E=this.context.allowIn;this.context.allowIn=!1;var C=this.parseVariableDeclarationList({inFor:!0});if(this.context.allowIn=E,C.length===1&&this.matchKeyword("in")){var T=C[0];T.init&&(T.id.type===p.Syntax.ArrayPattern||T.id.type===p.Syntax.ObjectPattern||this.context.strict)&&this.tolerateError(u.Messages.ForInOfLoopInitializer,"for-in"),s=this.finalize(s,new a.VariableDeclaration(C,"var")),this.nextToken(),y=s,S=this.parseExpression(),s=null}else C.length===1&&C[0].init===null&&this.matchContextualKeyword("of")?(s=this.finalize(s,new a.VariableDeclaration(C,"var")),this.nextToken(),y=s,S=this.parseAssignmentExpression(),s=null,c=!1):(s=this.finalize(s,new a.VariableDeclaration(C,"var")),this.expect(";"))}else if(this.matchKeyword("const")||this.matchKeyword("let")){s=this.createNode();var F=this.nextToken().value;if(!this.context.strict&&this.lookahead.value==="in")s=this.finalize(s,new a.Identifier(F)),this.nextToken(),y=s,S=this.parseExpression(),s=null;else{var E=this.context.allowIn;this.context.allowIn=!1;var C=this.parseBindingList(F,{inFor:!0});this.context.allowIn=E,C.length===1&&C[0].init===null&&this.matchKeyword("in")?(s=this.finalize(s,new a.VariableDeclaration(C,F)),this.nextToken(),y=s,S=this.parseExpression(),s=null):C.length===1&&C[0].init===null&&this.matchContextualKeyword("of")?(s=this.finalize(s,new a.VariableDeclaration(C,F)),this.nextToken(),y=s,S=this.parseAssignmentExpression(),s=null,c=!1):(this.consumeSemicolon(),s=this.finalize(s,new a.VariableDeclaration(C,F)))}}else{var O=this.lookahead,E=this.context.allowIn;if(this.context.allowIn=!1,s=this.inheritCoverGrammar(this.parseAssignmentExpression),this.context.allowIn=E,this.matchKeyword("in"))(!this.context.isAssignmentTarget||s.type===p.Syntax.AssignmentExpression)&&this.tolerateError(u.Messages.InvalidLHSInForIn),this.nextToken(),this.reinterpretExpressionAsPattern(s),y=s,S=this.parseExpression(),s=null;else if(this.matchContextualKeyword("of"))(!this.context.isAssignmentTarget||s.type===p.Syntax.AssignmentExpression)&&this.tolerateError(u.Messages.InvalidLHSInForLoop),this.nextToken(),this.reinterpretExpressionAsPattern(s),y=s,S=this.parseAssignmentExpression(),s=null,c=!1;else{if(this.match(",")){for(var j=[s];this.match(",");)this.nextToken(),j.push(this.isolateCoverGrammar(this.parseAssignmentExpression));s=this.finalize(this.startNode(O),new a.SequenceExpression(j))}this.expect(";")}}typeof y>"u"&&(this.match(";")||(o=this.parseExpression()),this.expect(";"),this.match(")")||(l=this.parseExpression()));var q;if(!this.match(")")&&this.config.tolerant)this.tolerateUnexpectedToken(this.nextToken()),q=this.finalize(this.createNode(),new a.EmptyStatement);else{this.expect(")");var z=this.context.inIteration;this.context.inIteration=!0,q=this.isolateCoverGrammar(this.parseStatement),this.context.inIteration=z}return typeof y>"u"?this.finalize(D,new a.ForStatement(s,o,l,q)):c?this.finalize(D,new a.ForInStatement(y,S,q)):this.finalize(D,new a.ForOfStatement(y,S,q))},d.prototype.parseContinueStatement=function(){var s=this.createNode();this.expectKeyword("continue");var o=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var l=this.parseVariableIdentifier();o=l;var c="$"+l.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,c)||this.throwError(u.Messages.UnknownLabel,l.name)}return this.consumeSemicolon(),o===null&&!this.context.inIteration&&this.throwError(u.Messages.IllegalContinue),this.finalize(s,new a.ContinueStatement(o))},d.prototype.parseBreakStatement=function(){var s=this.createNode();this.expectKeyword("break");var o=null;if(this.lookahead.type===3&&!this.hasLineTerminator){var l=this.parseVariableIdentifier(),c="$"+l.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,c)||this.throwError(u.Messages.UnknownLabel,l.name),o=l}return this.consumeSemicolon(),o===null&&!this.context.inIteration&&!this.context.inSwitch&&this.throwError(u.Messages.IllegalBreak),this.finalize(s,new a.BreakStatement(o))},d.prototype.parseReturnStatement=function(){this.context.inFunctionBody||this.tolerateError(u.Messages.IllegalReturn);var s=this.createNode();this.expectKeyword("return");var o=!this.match(";")&&!this.match("}")&&!this.hasLineTerminator&&this.lookahead.type!==2||this.lookahead.type===8||this.lookahead.type===10,l=o?this.parseExpression():null;return this.consumeSemicolon(),this.finalize(s,new a.ReturnStatement(l))},d.prototype.parseWithStatement=function(){this.context.strict&&this.tolerateError(u.Messages.StrictModeWith);var s=this.createNode(),o;this.expectKeyword("with"),this.expect("(");var l=this.parseExpression();return!this.match(")")&&this.config.tolerant?(this.tolerateUnexpectedToken(this.nextToken()),o=this.finalize(this.createNode(),new a.EmptyStatement)):(this.expect(")"),o=this.parseStatement()),this.finalize(s,new a.WithStatement(l,o))},d.prototype.parseSwitchCase=function(){var s=this.createNode(),o;this.matchKeyword("default")?(this.nextToken(),o=null):(this.expectKeyword("case"),o=this.parseExpression()),this.expect(":");for(var l=[];!(this.match("}")||this.matchKeyword("default")||this.matchKeyword("case"));)l.push(this.parseStatementListItem());return this.finalize(s,new a.SwitchCase(o,l))},d.prototype.parseSwitchStatement=function(){var s=this.createNode();this.expectKeyword("switch"),this.expect("(");var o=this.parseExpression();this.expect(")");var l=this.context.inSwitch;this.context.inSwitch=!0;var c=[],y=!1;for(this.expect("{");!this.match("}");){var S=this.parseSwitchCase();S.test===null&&(y&&this.throwError(u.Messages.MultipleDefaultsInSwitch),y=!0),c.push(S)}return this.expect("}"),this.context.inSwitch=l,this.finalize(s,new a.SwitchStatement(o,c))},d.prototype.parseLabelledStatement=function(){var s=this.createNode(),o=this.parseExpression(),l;if(o.type===p.Syntax.Identifier&&this.match(":")){this.nextToken();var c=o,y="$"+c.name;Object.prototype.hasOwnProperty.call(this.context.labelSet,y)&&this.throwError(u.Messages.Redeclaration,"Label",c.name),this.context.labelSet[y]=!0;var S=void 0;if(this.matchKeyword("class"))this.tolerateUnexpectedToken(this.lookahead),S=this.parseClassDeclaration();else if(this.matchKeyword("function")){var D=this.lookahead,E=this.parseFunctionDeclaration();this.context.strict?this.tolerateUnexpectedToken(D,u.Messages.StrictFunction):E.generator&&this.tolerateUnexpectedToken(D,u.Messages.GeneratorInLegacyContext),S=E}else S=this.parseStatement();delete this.context.labelSet[y],l=new a.LabeledStatement(c,S)}else this.consumeSemicolon(),l=new a.ExpressionStatement(o);return this.finalize(s,l)},d.prototype.parseThrowStatement=function(){var s=this.createNode();this.expectKeyword("throw"),this.hasLineTerminator&&this.throwError(u.Messages.NewlineAfterThrow);var o=this.parseExpression();return this.consumeSemicolon(),this.finalize(s,new a.ThrowStatement(o))},d.prototype.parseCatchClause=function(){var s=this.createNode();this.expectKeyword("catch"),this.expect("("),this.match(")")&&this.throwUnexpectedToken(this.lookahead);for(var o=[],l=this.parsePattern(o),c={},y=0;y<o.length;y++){var S="$"+o[y].value;Object.prototype.hasOwnProperty.call(c,S)&&this.tolerateError(u.Messages.DuplicateBinding,o[y].value),c[S]=!0}this.context.strict&&l.type===p.Syntax.Identifier&&this.scanner.isRestrictedWord(l.name)&&this.tolerateError(u.Messages.StrictCatchVariable),this.expect(")");var D=this.parseBlock();return this.finalize(s,new a.CatchClause(l,D))},d.prototype.parseFinallyClause=function(){return this.expectKeyword("finally"),this.parseBlock()},d.prototype.parseTryStatement=function(){var s=this.createNode();this.expectKeyword("try");var o=this.parseBlock(),l=this.matchKeyword("catch")?this.parseCatchClause():null,c=this.matchKeyword("finally")?this.parseFinallyClause():null;return!l&&!c&&this.throwError(u.Messages.NoCatchOrFinally),this.finalize(s,new a.TryStatement(o,l,c))},d.prototype.parseDebuggerStatement=function(){var s=this.createNode();return this.expectKeyword("debugger"),this.consumeSemicolon(),this.finalize(s,new a.DebuggerStatement)},d.prototype.parseStatement=function(){var s;switch(this.lookahead.type){case 1:case 5:case 6:case 8:case 10:case 9:s=this.parseExpressionStatement();break;case 7:var o=this.lookahead.value;o==="{"?s=this.parseBlock():o==="("?s=this.parseExpressionStatement():o===";"?s=this.parseEmptyStatement():s=this.parseExpressionStatement();break;case 3:s=this.matchAsyncFunction()?this.parseFunctionDeclaration():this.parseLabelledStatement();break;case 4:switch(this.lookahead.value){case"break":s=this.parseBreakStatement();break;case"continue":s=this.parseContinueStatement();break;case"debugger":s=this.parseDebuggerStatement();break;case"do":s=this.parseDoWhileStatement();break;case"for":s=this.parseForStatement();break;case"function":s=this.parseFunctionDeclaration();break;case"if":s=this.parseIfStatement();break;case"return":s=this.parseReturnStatement();break;case"switch":s=this.parseSwitchStatement();break;case"throw":s=this.parseThrowStatement();break;case"try":s=this.parseTryStatement();break;case"var":s=this.parseVariableStatement();break;case"while":s=this.parseWhileStatement();break;case"with":s=this.parseWithStatement();break;default:s=this.parseExpressionStatement();break}break;default:s=this.throwUnexpectedToken(this.lookahead)}return s},d.prototype.parseFunctionSourceElements=function(){var s=this.createNode();this.expect("{");var o=this.parseDirectivePrologues(),l=this.context.labelSet,c=this.context.inIteration,y=this.context.inSwitch,S=this.context.inFunctionBody;for(this.context.labelSet={},this.context.inIteration=!1,this.context.inSwitch=!1,this.context.inFunctionBody=!0;this.lookahead.type!==2&&!this.match("}");)o.push(this.parseStatementListItem());return this.expect("}"),this.context.labelSet=l,this.context.inIteration=c,this.context.inSwitch=y,this.context.inFunctionBody=S,this.finalize(s,new a.BlockStatement(o))},d.prototype.validateParam=function(s,o,l){var c="$"+l;this.context.strict?(this.scanner.isRestrictedWord(l)&&(s.stricted=o,s.message=u.Messages.StrictParamName),Object.prototype.hasOwnProperty.call(s.paramSet,c)&&(s.stricted=o,s.message=u.Messages.StrictParamDupe)):s.firstRestricted||(this.scanner.isRestrictedWord(l)?(s.firstRestricted=o,s.message=u.Messages.StrictParamName):this.scanner.isStrictModeReservedWord(l)?(s.firstRestricted=o,s.message=u.Messages.StrictReservedWord):Object.prototype.hasOwnProperty.call(s.paramSet,c)&&(s.stricted=o,s.message=u.Messages.StrictParamDupe)),typeof Object.defineProperty=="function"?Object.defineProperty(s.paramSet,c,{value:!0,enumerable:!0,writable:!0,configurable:!0}):s.paramSet[c]=!0},d.prototype.parseRestElement=function(s){var o=this.createNode();this.expect("...");var l=this.parsePattern(s);return this.match("=")&&this.throwError(u.Messages.DefaultRestParameter),this.match(")")||this.throwError(u.Messages.ParameterAfterRestParameter),this.finalize(o,new a.RestElement(l))},d.prototype.parseFormalParameter=function(s){for(var o=[],l=this.match("...")?this.parseRestElement(o):this.parsePatternWithDefault(o),c=0;c<o.length;c++)this.validateParam(s,o[c],o[c].value);s.simple=s.simple&&l instanceof a.Identifier,s.params.push(l)},d.prototype.parseFormalParameters=function(s){var o;if(o={simple:!0,params:[],firstRestricted:s},this.expect("("),!this.match(")"))for(o.paramSet={};this.lookahead.type!==2&&(this.parseFormalParameter(o),!(this.match(")")||(this.expect(","),this.match(")")))););return this.expect(")"),{simple:o.simple,params:o.params,stricted:o.stricted,firstRestricted:o.firstRestricted,message:o.message}},d.prototype.matchAsyncFunction=function(){var s=this.matchContextualKeyword("async");if(s){var o=this.scanner.saveState();this.scanner.scanComments();var l=this.scanner.lex();this.scanner.restoreState(o),s=o.lineNumber===l.lineNumber&&l.type===4&&l.value==="function"}return s},d.prototype.parseFunctionDeclaration=function(s){var o=this.createNode(),l=this.matchContextualKeyword("async");l&&this.nextToken(),this.expectKeyword("function");var c=l?!1:this.match("*");c&&this.nextToken();var y,S=null,D=null;if(!s||!this.match("(")){var E=this.lookahead;S=this.parseVariableIdentifier(),this.context.strict?this.scanner.isRestrictedWord(E.value)&&this.tolerateUnexpectedToken(E,u.Messages.StrictFunctionName):this.scanner.isRestrictedWord(E.value)?(D=E,y=u.Messages.StrictFunctionName):this.scanner.isStrictModeReservedWord(E.value)&&(D=E,y=u.Messages.StrictReservedWord)}var C=this.context.await,T=this.context.allowYield;this.context.await=l,this.context.allowYield=!c;var F=this.parseFormalParameters(D),O=F.params,j=F.stricted;D=F.firstRestricted,F.message&&(y=F.message);var q=this.context.strict,z=this.context.allowStrictDirective;this.context.allowStrictDirective=F.simple;var xe=this.parseFunctionSourceElements();return this.context.strict&&D&&this.throwUnexpectedToken(D,y),this.context.strict&&j&&this.tolerateUnexpectedToken(j,y),this.context.strict=q,this.context.allowStrictDirective=z,this.context.await=C,this.context.allowYield=T,l?this.finalize(o,new a.AsyncFunctionDeclaration(S,O,xe)):this.finalize(o,new a.FunctionDeclaration(S,O,xe,c))},d.prototype.parseFunctionExpression=function(){var s=this.createNode(),o=this.matchContextualKeyword("async");o&&this.nextToken(),this.expectKeyword("function");var l=o?!1:this.match("*");l&&this.nextToken();var c,y=null,S,D=this.context.await,E=this.context.allowYield;if(this.context.await=o,this.context.allowYield=!l,!this.match("(")){var C=this.lookahead;y=!this.context.strict&&!l&&this.matchKeyword("yield")?this.parseIdentifierName():this.parseVariableIdentifier(),this.context.strict?this.scanner.isRestrictedWord(C.value)&&this.tolerateUnexpectedToken(C,u.Messages.StrictFunctionName):this.scanner.isRestrictedWord(C.value)?(S=C,c=u.Messages.StrictFunctionName):this.scanner.isStrictModeReservedWord(C.value)&&(S=C,c=u.Messages.StrictReservedWord)}var T=this.parseFormalParameters(S),F=T.params,O=T.stricted;S=T.firstRestricted,T.message&&(c=T.message);var j=this.context.strict,q=this.context.allowStrictDirective;this.context.allowStrictDirective=T.simple;var z=this.parseFunctionSourceElements();return this.context.strict&&S&&this.throwUnexpectedToken(S,c),this.context.strict&&O&&this.tolerateUnexpectedToken(O,c),this.context.strict=j,this.context.allowStrictDirective=q,this.context.await=D,this.context.allowYield=E,o?this.finalize(s,new a.AsyncFunctionExpression(y,F,z)):this.finalize(s,new a.FunctionExpression(y,F,z,l))},d.prototype.parseDirective=function(){var s=this.lookahead,o=this.createNode(),l=this.parseExpression(),c=l.type===p.Syntax.Literal?this.getTokenRaw(s).slice(1,-1):null;return this.consumeSemicolon(),this.finalize(o,c?new a.Directive(l,c):new a.ExpressionStatement(l))},d.prototype.parseDirectivePrologues=function(){for(var s=null,o=[];;){var l=this.lookahead;if(l.type!==8)break;var c=this.parseDirective();o.push(c);var y=c.directive;if(typeof y!="string")break;y==="use strict"?(this.context.strict=!0,s&&this.tolerateUnexpectedToken(s,u.Messages.StrictOctalLiteral),this.context.allowStrictDirective||this.tolerateUnexpectedToken(l,u.Messages.IllegalLanguageModeDirective)):!s&&l.octal&&(s=l)}return o},d.prototype.qualifiedPropertyName=function(s){switch(s.type){case 3:case 8:case 1:case 5:case 6:case 4:return!0;case 7:return s.value==="[";default:break}return!1},d.prototype.parseGetterMethod=function(){var s=this.createNode(),o=!1,l=this.context.allowYield;this.context.allowYield=!o;var c=this.parseFormalParameters();c.params.length>0&&this.tolerateError(u.Messages.BadGetterArity);var y=this.parsePropertyMethod(c);return this.context.allowYield=l,this.finalize(s,new a.FunctionExpression(null,c.params,y,o))},d.prototype.parseSetterMethod=function(){var s=this.createNode(),o=!1,l=this.context.allowYield;this.context.allowYield=!o;var c=this.parseFormalParameters();c.params.length!==1?this.tolerateError(u.Messages.BadSetterArity):c.params[0]instanceof a.RestElement&&this.tolerateError(u.Messages.BadSetterRestParameter);var y=this.parsePropertyMethod(c);return this.context.allowYield=l,this.finalize(s,new a.FunctionExpression(null,c.params,y,o))},d.prototype.parseGeneratorMethod=function(){var s=this.createNode(),o=!0,l=this.context.allowYield;this.context.allowYield=!0;var c=this.parseFormalParameters();this.context.allowYield=!1;var y=this.parsePropertyMethod(c);return this.context.allowYield=l,this.finalize(s,new a.FunctionExpression(null,c.params,y,o))},d.prototype.isStartOfExpression=function(){var s=!0,o=this.lookahead.value;switch(this.lookahead.type){case 7:s=o==="["||o==="("||o==="{"||o==="+"||o==="-"||o==="!"||o==="~"||o==="++"||o==="--"||o==="/"||o==="/=";break;case 4:s=o==="class"||o==="delete"||o==="function"||o==="let"||o==="new"||o==="super"||o==="this"||o==="typeof"||o==="void"||o==="yield";break;default:break}return s},d.prototype.parseYieldExpression=function(){var s=this.createNode();this.expectKeyword("yield");var o=null,l=!1;if(!this.hasLineTerminator){var c=this.context.allowYield;this.context.allowYield=!1,l=this.match("*"),l?(this.nextToken(),o=this.parseAssignmentExpression()):this.isStartOfExpression()&&(o=this.parseAssignmentExpression()),this.context.allowYield=c}return this.finalize(s,new a.YieldExpression(o,l))},d.prototype.parseClassElement=function(s){var o=this.lookahead,l=this.createNode(),c="",y=null,S=null,D=!1,E=!1,C=!1,T=!1;if(this.match("*"))this.nextToken();else{D=this.match("["),y=this.parseObjectPropertyKey();var F=y;if(F.name==="static"&&(this.qualifiedPropertyName(this.lookahead)||this.match("*"))&&(o=this.lookahead,C=!0,D=this.match("["),this.match("*")?this.nextToken():y=this.parseObjectPropertyKey()),o.type===3&&!this.hasLineTerminator&&o.value==="async"){var O=this.lookahead.value;O!==":"&&O!=="("&&O!=="*"&&(T=!0,o=this.lookahead,y=this.parseObjectPropertyKey(),o.type===3&&o.value==="constructor"&&this.tolerateUnexpectedToken(o,u.Messages.ConstructorIsAsync))}}var j=this.qualifiedPropertyName(this.lookahead);return o.type===3?o.value==="get"&&j?(c="get",D=this.match("["),y=this.parseObjectPropertyKey(),this.context.allowYield=!1,S=this.parseGetterMethod()):o.value==="set"&&j&&(c="set",D=this.match("["),y=this.parseObjectPropertyKey(),S=this.parseSetterMethod()):o.type===7&&o.value==="*"&&j&&(c="init",D=this.match("["),y=this.parseObjectPropertyKey(),S=this.parseGeneratorMethod(),E=!0),!c&&y&&this.match("(")&&(c="init",S=T?this.parsePropertyMethodAsyncFunction():this.parsePropertyMethodFunction(),E=!0),c||this.throwUnexpectedToken(this.lookahead),c==="init"&&(c="method"),D||(C&&this.isPropertyKey(y,"prototype")&&this.throwUnexpectedToken(o,u.Messages.StaticPrototype),!C&&this.isPropertyKey(y,"constructor")&&((c!=="method"||!E||S&&S.generator)&&this.throwUnexpectedToken(o,u.Messages.ConstructorSpecialMethod),s.value?this.throwUnexpectedToken(o,u.Messages.DuplicateConstructor):s.value=!0,c="constructor")),this.finalize(l,new a.MethodDefinition(y,D,S,c,C))},d.prototype.parseClassElementList=function(){var s=[],o={value:!1};for(this.expect("{");!this.match("}");)this.match(";")?this.nextToken():s.push(this.parseClassElement(o));return this.expect("}"),s},d.prototype.parseClassBody=function(){var s=this.createNode(),o=this.parseClassElementList();return this.finalize(s,new a.ClassBody(o))},d.prototype.parseClassDeclaration=function(s){var o=this.createNode(),l=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var c=s&&this.lookahead.type!==3?null:this.parseVariableIdentifier(),y=null;this.matchKeyword("extends")&&(this.nextToken(),y=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var S=this.parseClassBody();return this.context.strict=l,this.finalize(o,new a.ClassDeclaration(c,y,S))},d.prototype.parseClassExpression=function(){var s=this.createNode(),o=this.context.strict;this.context.strict=!0,this.expectKeyword("class");var l=this.lookahead.type===3?this.parseVariableIdentifier():null,c=null;this.matchKeyword("extends")&&(this.nextToken(),c=this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall));var y=this.parseClassBody();return this.context.strict=o,this.finalize(s,new a.ClassExpression(l,c,y))},d.prototype.parseModule=function(){this.context.strict=!0,this.context.isModule=!0,this.scanner.isModule=!0;for(var s=this.createNode(),o=this.parseDirectivePrologues();this.lookahead.type!==2;)o.push(this.parseStatementListItem());return this.finalize(s,new a.Module(o))},d.prototype.parseScript=function(){for(var s=this.createNode(),o=this.parseDirectivePrologues();this.lookahead.type!==2;)o.push(this.parseStatementListItem());return this.finalize(s,new a.Script(o))},d.prototype.parseModuleSpecifier=function(){var s=this.createNode();this.lookahead.type!==8&&this.throwError(u.Messages.InvalidModuleSpecifier);var o=this.nextToken(),l=this.getTokenRaw(o);return this.finalize(s,new a.Literal(o.value,l))},d.prototype.parseImportSpecifier=function(){var s=this.createNode(),o,l;return this.lookahead.type===3?(o=this.parseVariableIdentifier(),l=o,this.matchContextualKeyword("as")&&(this.nextToken(),l=this.parseVariableIdentifier())):(o=this.parseIdentifierName(),l=o,this.matchContextualKeyword("as")?(this.nextToken(),l=this.parseVariableIdentifier()):this.throwUnexpectedToken(this.nextToken())),this.finalize(s,new a.ImportSpecifier(l,o))},d.prototype.parseNamedImports=function(){this.expect("{");for(var s=[];!this.match("}");)s.push(this.parseImportSpecifier()),this.match("}")||this.expect(",");return this.expect("}"),s},d.prototype.parseImportDefaultSpecifier=function(){var s=this.createNode(),o=this.parseIdentifierName();return this.finalize(s,new a.ImportDefaultSpecifier(o))},d.prototype.parseImportNamespaceSpecifier=function(){var s=this.createNode();this.expect("*"),this.matchContextualKeyword("as")||this.throwError(u.Messages.NoAsAfterImportNamespace),this.nextToken();var o=this.parseIdentifierName();return this.finalize(s,new a.ImportNamespaceSpecifier(o))},d.prototype.parseImportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalImportDeclaration);var s=this.createNode();this.expectKeyword("import");var o,l=[];if(this.lookahead.type===8)o=this.parseModuleSpecifier();else{if(this.match("{")?l=l.concat(this.parseNamedImports()):this.match("*")?l.push(this.parseImportNamespaceSpecifier()):this.isIdentifierName(this.lookahead)&&!this.matchKeyword("default")?(l.push(this.parseImportDefaultSpecifier()),this.match(",")&&(this.nextToken(),this.match("*")?l.push(this.parseImportNamespaceSpecifier()):this.match("{")?l=l.concat(this.parseNamedImports()):this.throwUnexpectedToken(this.lookahead))):this.throwUnexpectedToken(this.nextToken()),!this.matchContextualKeyword("from")){var c=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause;this.throwError(c,this.lookahead.value)}this.nextToken(),o=this.parseModuleSpecifier()}return this.consumeSemicolon(),this.finalize(s,new a.ImportDeclaration(l,o))},d.prototype.parseExportSpecifier=function(){var s=this.createNode(),o=this.parseIdentifierName(),l=o;return this.matchContextualKeyword("as")&&(this.nextToken(),l=this.parseIdentifierName()),this.finalize(s,new a.ExportSpecifier(o,l))},d.prototype.parseExportDeclaration=function(){this.context.inFunctionBody&&this.throwError(u.Messages.IllegalExportDeclaration);var s=this.createNode();this.expectKeyword("export");var o;if(this.matchKeyword("default"))if(this.nextToken(),this.matchKeyword("function")){var l=this.parseFunctionDeclaration(!0);o=this.finalize(s,new a.ExportDefaultDeclaration(l))}else if(this.matchKeyword("class")){var l=this.parseClassDeclaration(!0);o=this.finalize(s,new a.ExportDefaultDeclaration(l))}else if(this.matchContextualKeyword("async")){var l=this.matchAsyncFunction()?this.parseFunctionDeclaration(!0):this.parseAssignmentExpression();o=this.finalize(s,new a.ExportDefaultDeclaration(l))}else{this.matchContextualKeyword("from")&&this.throwError(u.Messages.UnexpectedToken,this.lookahead.value);var l=this.match("{")?this.parseObjectInitializer():this.match("[")?this.parseArrayInitializer():this.parseAssignmentExpression();this.consumeSemicolon(),o=this.finalize(s,new a.ExportDefaultDeclaration(l))}else if(this.match("*")){if(this.nextToken(),!this.matchContextualKeyword("from")){var c=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause;this.throwError(c,this.lookahead.value)}this.nextToken();var y=this.parseModuleSpecifier();this.consumeSemicolon(),o=this.finalize(s,new a.ExportAllDeclaration(y))}else if(this.lookahead.type===4){var l=void 0;switch(this.lookahead.value){case"let":case"const":l=this.parseLexicalDeclaration({inFor:!1});break;case"var":case"class":case"function":l=this.parseStatementListItem();break;default:this.throwUnexpectedToken(this.lookahead)}o=this.finalize(s,new a.ExportNamedDeclaration(l,[],null))}else if(this.matchAsyncFunction()){var l=this.parseFunctionDeclaration();o=this.finalize(s,new a.ExportNamedDeclaration(l,[],null))}else{var S=[],D=null,E=!1;for(this.expect("{");!this.match("}");)E=E||this.matchKeyword("default"),S.push(this.parseExportSpecifier()),this.match("}")||this.expect(",");if(this.expect("}"),this.matchContextualKeyword("from"))this.nextToken(),D=this.parseModuleSpecifier(),this.consumeSemicolon();else if(E){var c=this.lookahead.value?u.Messages.UnexpectedToken:u.Messages.MissingFromClause;this.throwError(c,this.lookahead.value)}else this.consumeSemicolon();o=this.finalize(s,new a.ExportNamedDeclaration(null,S,D))}return o},d}();e.Parser=g},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});function r(n,i){if(!n)throw new Error("ASSERT: "+i)}e.assert=r},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function n(){this.errors=[],this.tolerant=!1}return n.prototype.recordError=function(i){this.errors.push(i)},n.prototype.tolerate=function(i){if(this.tolerant)this.recordError(i);else throw i},n.prototype.constructError=function(i,u){var a=new Error(i);try{throw a}catch(f){Object.create&&Object.defineProperty&&(a=Object.create(f),Object.defineProperty(a,"column",{value:u}))}return a},n.prototype.createError=function(i,u,a,f){var p="Line "+u+": "+f,m=this.constructError(p,a);return m.index=i,m.lineNumber=u,m.description=f,m},n.prototype.throwError=function(i,u,a,f){throw this.createError(i,u,a,f)},n.prototype.tolerateError=function(i,u,a,f){var p=this.createError(i,u,a,f);if(this.tolerant)this.recordError(p);else throw p},n}();e.ErrorHandler=r},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Messages={BadGetterArity:"Getter must not have any formal parameters",BadSetterArity:"Setter must have exactly one formal parameter",BadSetterRestParameter:"Setter function argument must not be a rest parameter",ConstructorIsAsync:"Class constructor may not be an async method",ConstructorSpecialMethod:"Class constructor may not be an accessor",DeclarationMissingInitializer:"Missing initializer in %0 declaration",DefaultRestParameter:"Unexpected token =",DuplicateBinding:"Duplicate binding %0",DuplicateConstructor:"A class may only have one constructor",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ForInOfLoopInitializer:"%0 loop variable declaration may not have an initializer",GeneratorInLegacyContext:"Generator declarations are not allowed in legacy contexts",IllegalBreak:"Illegal break statement",IllegalContinue:"Illegal continue statement",IllegalExportDeclaration:"Unexpected token",IllegalImportDeclaration:"Unexpected token",IllegalLanguageModeDirective:"Illegal 'use strict' directive in function with non-simple parameter list",IllegalReturn:"Illegal return statement",InvalidEscapedReservedWord:"Keyword must not contain escaped characters",InvalidHexEscapeSequence:"Invalid hexadecimal escape sequence",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",InvalidLHSInForLoop:"Invalid left-hand side in for-loop",InvalidModuleSpecifier:"Unexpected token",InvalidRegExp:"Invalid regular expression",LetInLexicalBinding:"let is disallowed as a lexically bound name",MissingFromClause:"Unexpected token",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NewlineAfterThrow:"Illegal newline after throw",NoAsAfterImportNamespace:"Unexpected token",NoCatchOrFinally:"Missing catch or finally after try",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",Redeclaration:"%0 '%1' has already been declared",StaticPrototype:"Classes may not have static property named prototype",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictFunction:"In strict mode code, functions can only be declared at top level or inside a block",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictModeWith:"Strict mode code may not include a with statement",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",TemplateOctalLiteral:"Octal literals are not allowed in template strings.",UnexpectedEOS:"Unexpected end of input",UnexpectedIdentifier:"Unexpected identifier",UnexpectedNumber:"Unexpected number",UnexpectedReserved:"Unexpected reserved word",UnexpectedString:"Unexpected string",UnexpectedTemplate:"Unexpected quasi %0",UnexpectedToken:"Unexpected token %0",UnexpectedTokenIllegal:"Unexpected token ILLEGAL",UnknownLabel:"Undefined label '%0'",UnterminatedRegExp:"Invalid regular expression: missing /"}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(9),i=r(4),u=r(11);function a(m){return"0123456789abcdef".indexOf(m.toLowerCase())}function f(m){return"01234567".indexOf(m)}var p=function(){function m(h,g){this.source=h,this.errorHandler=g,this.trackComment=!1,this.isModule=!1,this.length=h.length,this.index=0,this.lineNumber=h.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return m.prototype.saveState=function(){return{index:this.index,lineNumber:this.lineNumber,lineStart:this.lineStart}},m.prototype.restoreState=function(h){this.index=h.index,this.lineNumber=h.lineNumber,this.lineStart=h.lineStart},m.prototype.eof=function(){return this.index>=this.length},m.prototype.throwUnexpectedToken=function(h){return h===void 0&&(h=u.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,h)},m.prototype.tolerateUnexpectedToken=function(h){h===void 0&&(h=u.Messages.UnexpectedTokenIllegal),this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,h)},m.prototype.skipSingleLineComment=function(h){var g=[],d,s;for(this.trackComment&&(g=[],d=this.index-h,s={start:{line:this.lineNumber,column:this.index-this.lineStart-h},end:{}});!this.eof();){var o=this.source.charCodeAt(this.index);if(++this.index,i.Character.isLineTerminator(o)){if(this.trackComment){s.end={line:this.lineNumber,column:this.index-this.lineStart-1};var l={multiLine:!1,slice:[d+h,this.index-1],range:[d,this.index-1],loc:s};g.push(l)}return o===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,g}}if(this.trackComment){s.end={line:this.lineNumber,column:this.index-this.lineStart};var l={multiLine:!1,slice:[d+h,this.index],range:[d,this.index],loc:s};g.push(l)}return g},m.prototype.skipMultiLineComment=function(){var h=[],g,d;for(this.trackComment&&(h=[],g=this.index-2,d={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var s=this.source.charCodeAt(this.index);if(i.Character.isLineTerminator(s))s===13&&this.source.charCodeAt(this.index+1)===10&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(s===42){if(this.source.charCodeAt(this.index+1)===47){if(this.index+=2,this.trackComment){d.end={line:this.lineNumber,column:this.index-this.lineStart};var o={multiLine:!0,slice:[g+2,this.index-2],range:[g,this.index],loc:d};h.push(o)}return h}++this.index}else++this.index}if(this.trackComment){d.end={line:this.lineNumber,column:this.index-this.lineStart};var o={multiLine:!0,slice:[g+2,this.index],range:[g,this.index],loc:d};h.push(o)}return this.tolerateUnexpectedToken(),h},m.prototype.scanComments=function(){var h;this.trackComment&&(h=[]);for(var g=this.index===0;!this.eof();){var d=this.source.charCodeAt(this.index);if(i.Character.isWhiteSpace(d))++this.index;else if(i.Character.isLineTerminator(d))++this.index,d===13&&this.source.charCodeAt(this.index)===10&&++this.index,++this.lineNumber,this.lineStart=this.index,g=!0;else if(d===47)if(d=this.source.charCodeAt(this.index+1),d===47){this.index+=2;var s=this.skipSingleLineComment(2);this.trackComment&&(h=h.concat(s)),g=!0}else if(d===42){this.index+=2;var s=this.skipMultiLineComment();this.trackComment&&(h=h.concat(s))}else break;else if(g&&d===45)if(this.source.charCodeAt(this.index+1)===45&&this.source.charCodeAt(this.index+2)===62){this.index+=3;var s=this.skipSingleLineComment(3);this.trackComment&&(h=h.concat(s))}else break;else if(d===60&&!this.isModule)if(this.source.slice(this.index+1,this.index+4)==="!--"){this.index+=4;var s=this.skipSingleLineComment(4);this.trackComment&&(h=h.concat(s))}else break;else break}return h},m.prototype.isFutureReservedWord=function(h){switch(h){case"enum":case"export":case"import":case"super":return!0;default:return!1}},m.prototype.isStrictModeReservedWord=function(h){switch(h){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},m.prototype.isRestrictedWord=function(h){return h==="eval"||h==="arguments"},m.prototype.isKeyword=function(h){switch(h.length){case 2:return h==="if"||h==="in"||h==="do";case 3:return h==="var"||h==="for"||h==="new"||h==="try"||h==="let";case 4:return h==="this"||h==="else"||h==="case"||h==="void"||h==="with"||h==="enum";case 5:return h==="while"||h==="break"||h==="catch"||h==="throw"||h==="const"||h==="yield"||h==="class"||h==="super";case 6:return h==="return"||h==="typeof"||h==="delete"||h==="switch"||h==="export"||h==="import";case 7:return h==="default"||h==="finally"||h==="extends";case 8:return h==="function"||h==="continue"||h==="debugger";case 10:return h==="instanceof";default:return!1}},m.prototype.codePointAt=function(h){var g=this.source.charCodeAt(h);if(g>=55296&&g<=56319){var d=this.source.charCodeAt(h+1);if(d>=56320&&d<=57343){var s=g;g=(s-55296)*1024+d-56320+65536}}return g},m.prototype.scanHexEscape=function(h){for(var g=h==="u"?4:2,d=0,s=0;s<g;++s)if(!this.eof()&&i.Character.isHexDigit(this.source.charCodeAt(this.index)))d=d*16+a(this.source[this.index++]);else return null;return String.fromCharCode(d)},m.prototype.scanUnicodeCodePointEscape=function(){var h=this.source[this.index],g=0;for(h==="}"&&this.throwUnexpectedToken();!this.eof()&&(h=this.source[this.index++],!!i.Character.isHexDigit(h.charCodeAt(0)));)g=g*16+a(h);return(g>1114111||h!=="}")&&this.throwUnexpectedToken(),i.Character.fromCodePoint(g)},m.prototype.getIdentifier=function(){for(var h=this.index++;!this.eof();){var g=this.source.charCodeAt(this.index);if(g===92)return this.index=h,this.getComplexIdentifier();if(g>=55296&&g<57343)return this.index=h,this.getComplexIdentifier();if(i.Character.isIdentifierPart(g))++this.index;else break}return this.source.slice(h,this.index)},m.prototype.getComplexIdentifier=function(){var h=this.codePointAt(this.index),g=i.Character.fromCodePoint(h);this.index+=g.length;var d;for(h===92&&(this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,d=this.scanUnicodeCodePointEscape()):(d=this.scanHexEscape("u"),(d===null||d==="\\"||!i.Character.isIdentifierStart(d.charCodeAt(0)))&&this.throwUnexpectedToken()),g=d);!this.eof()&&(h=this.codePointAt(this.index),!!i.Character.isIdentifierPart(h));)d=i.Character.fromCodePoint(h),g+=d,this.index+=d.length,h===92&&(g=g.substr(0,g.length-1),this.source.charCodeAt(this.index)!==117&&this.throwUnexpectedToken(),++this.index,this.source[this.index]==="{"?(++this.index,d=this.scanUnicodeCodePointEscape()):(d=this.scanHexEscape("u"),(d===null||d==="\\"||!i.Character.isIdentifierPart(d.charCodeAt(0)))&&this.throwUnexpectedToken()),g+=d);return g},m.prototype.octalToDecimal=function(h){var g=h!=="0",d=f(h);return!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(g=!0,d=d*8+f(this.source[this.index++]),"0123".indexOf(h)>=0&&!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(d=d*8+f(this.source[this.index++]))),{code:d,octal:g}},m.prototype.scanIdentifier=function(){var h,g=this.index,d=this.source.charCodeAt(g)===92?this.getComplexIdentifier():this.getIdentifier();if(d.length===1?h=3:this.isKeyword(d)?h=4:d==="null"?h=5:d==="true"||d==="false"?h=1:h=3,h!==3&&g+d.length!==this.index){var s=this.index;this.index=g,this.tolerateUnexpectedToken(u.Messages.InvalidEscapedReservedWord),this.index=s}return{type:h,value:d,lineNumber:this.lineNumber,lineStart:this.lineStart,start:g,end:this.index}},m.prototype.scanPunctuator=function(){var h=this.index,g=this.source[this.index];switch(g){case"(":case"{":g==="{"&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,this.source[this.index]==="."&&this.source[this.index+1]==="."&&(this.index+=2,g="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:g=this.source.substr(this.index,4),g===">>>="?this.index+=4:(g=g.substr(0,3),g==="==="||g==="!=="||g===">>>"||g==="<<="||g===">>="||g==="**="?this.index+=3:(g=g.substr(0,2),g==="&&"||g==="||"||g==="=="||g==="!="||g==="+="||g==="-="||g==="*="||g==="/="||g==="++"||g==="--"||g==="<<"||g===">>"||g==="&="||g==="|="||g==="^="||g==="%="||g==="<="||g===">="||g==="=>"||g==="**"?this.index+=2:(g=this.source[this.index],"<>=!+-*%&|^/".indexOf(g)>=0&&++this.index)))}return this.index===h&&this.throwUnexpectedToken(),{type:7,value:g,lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},m.prototype.scanHexLiteral=function(h){for(var g="";!this.eof()&&i.Character.isHexDigit(this.source.charCodeAt(this.index));)g+=this.source[this.index++];return g.length===0&&this.throwUnexpectedToken(),i.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseInt("0x"+g,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},m.prototype.scanBinaryLiteral=function(h){for(var g="",d;!this.eof()&&(d=this.source[this.index],!(d!=="0"&&d!=="1"));)g+=this.source[this.index++];return g.length===0&&this.throwUnexpectedToken(),this.eof()||(d=this.source.charCodeAt(this.index),(i.Character.isIdentifierStart(d)||i.Character.isDecimalDigit(d))&&this.throwUnexpectedToken()),{type:6,value:parseInt(g,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},m.prototype.scanOctalLiteral=function(h,g){var d="",s=!1;for(i.Character.isOctalDigit(h.charCodeAt(0))?(s=!0,d="0"+this.source[this.index++]):++this.index;!this.eof()&&i.Character.isOctalDigit(this.source.charCodeAt(this.index));)d+=this.source[this.index++];return!s&&d.length===0&&this.throwUnexpectedToken(),(i.Character.isIdentifierStart(this.source.charCodeAt(this.index))||i.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:6,value:parseInt(d,8),octal:s,lineNumber:this.lineNumber,lineStart:this.lineStart,start:g,end:this.index}},m.prototype.isImplicitOctalLiteral=function(){for(var h=this.index+1;h<this.length;++h){var g=this.source[h];if(g==="8"||g==="9")return!1;if(!i.Character.isOctalDigit(g.charCodeAt(0)))return!0}return!0},m.prototype.scanNumericLiteral=function(){var h=this.index,g=this.source[h];n.assert(i.Character.isDecimalDigit(g.charCodeAt(0))||g===".","Numeric literal must start with a decimal digit or a decimal point");var d="";if(g!=="."){if(d=this.source[this.index++],g=this.source[this.index],d==="0"){if(g==="x"||g==="X")return++this.index,this.scanHexLiteral(h);if(g==="b"||g==="B")return++this.index,this.scanBinaryLiteral(h);if(g==="o"||g==="O")return this.scanOctalLiteral(g,h);if(g&&i.Character.isOctalDigit(g.charCodeAt(0))&&this.isImplicitOctalLiteral())return this.scanOctalLiteral(g,h)}for(;i.Character.isDecimalDigit(this.source.charCodeAt(this.index));)d+=this.source[this.index++];g=this.source[this.index]}if(g==="."){for(d+=this.source[this.index++];i.Character.isDecimalDigit(this.source.charCodeAt(this.index));)d+=this.source[this.index++];g=this.source[this.index]}if(g==="e"||g==="E")if(d+=this.source[this.index++],g=this.source[this.index],(g==="+"||g==="-")&&(d+=this.source[this.index++]),i.Character.isDecimalDigit(this.source.charCodeAt(this.index)))for(;i.Character.isDecimalDigit(this.source.charCodeAt(this.index));)d+=this.source[this.index++];else this.throwUnexpectedToken();return i.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:6,value:parseFloat(d),lineNumber:this.lineNumber,lineStart:this.lineStart,start:h,end:this.index}},m.prototype.scanStringLiteral=function(){var h=this.index,g=this.source[h];n.assert(g==="'"||g==='"',"String literal must starts with a quote"),++this.index;for(var d=!1,s="";!this.eof();){var o=this.source[this.index++];if(o===g){g="";break}else if(o==="\\")if(o=this.source[this.index++],!o||!i.Character.isLineTerminator(o.charCodeAt(0)))switch(o){case"u":if(this.source[this.index]==="{")++this.index,s+=this.scanUnicodeCodePointEscape();else{var l=this.scanHexEscape(o);l===null&&this.throwUnexpectedToken(),s+=l}break;case"x":var c=this.scanHexEscape(o);c===null&&this.throwUnexpectedToken(u.Messages.InvalidHexEscapeSequence),s+=c;break;case"n":s+=`
@@ -34,13 +34,13 @@ Do **not** translate or rewrite:
34
34
  Raw tool/system outputs may contain fixed-format English. Preserve them verbatim, and if needed, add a short **${t}** explanation below.
35
35
  `}function kl(t){let e=new RegExp(String.raw`<!--\s*${Zi}\s*(.*?)\s*-->`,"i"),r=t.match(e);if(r?.[1]?.trim())return r[1].trim();let n=t.match(/^#.*?CRITICAL:\s*(.*?)\s+Output Language Rule\b/im);return n?.[1]?.trim()?n[1].trim():null}function Tl(){let t=Nr();if(!Ae.existsSync(t))return null;try{let e=Ae.readFileSync(t,"utf-8");return kl(e)}catch{return null}}function ts(t,e){let r=e??Nr(),n=wl(t),i=Bt.dirname(r);Ae.mkdirSync(i,{recursive:!0}),Ae.writeFileSync(r,n,"utf-8")}function Il(t,e){let r=es(t);ts(r,e)}function Xp(t,e){let r=e?.getOutputLanguageFilePath();Il(t,r),r||e?.setOutputLanguageFilePath(Nr())}function Jp(t){if(Tl())return;let r=es(t);ts(r)}b();var Ze=We(hl(),1);import*as _ from"node:fs";import*as R from"node:path";import{homedir as sr,platform as Mo}from"node:os";import B from"node:process";var Et=We(Br(),1);b();b();b();var is={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32"},Pl=Ee("COLOR_UTILS"),Ml=new Set(["black","red","green","yellow","blue","cyan","magenta","white","gray","grey","blackbright","redbright","greenbright","yellowbright","bluebright","cyanbright","magentabright","whitebright"]);function _r(t){let e=t.toLowerCase();if(e.startsWith("#"))return/^#[0-9A-Fa-f]{3}([0-9A-Fa-f]{3})?$/.test(t)?e:void 0;if(Ml.has(e))return e;if(is[e])return is[e];Pl.warn(`[ColorUtils] Could not resolve color "${t}" to an Ink-compatible format.`)}var Nl={black:"#000000",red:"#ff0000",green:"#00ff00",yellow:"#ffff00",blue:"#0000ff",cyan:"#00ffff",magenta:"#ff00ff",white:"#ffffff",gray:"#808080",grey:"#808080",blackbright:"#808080",redbright:"#ff8080",greenbright:"#80ff80",yellowbright:"#ffff80",bluebright:"#8080ff",cyanbright:"#80ffff",magentabright:"#ff80ff",whitebright:"#ffffff"};function ss(t){let e=(_r(t)??t).toLowerCase();return e.startsWith("#")?/^#[0-9a-f]{3}$/.test(e)?`#${e.slice(1).split("").map(r=>r+r).join("")}`:/^#[0-9a-f]{6}$/.test(e)?e:void 0:Nl[e]}function em(t,e,r){if(r<=0)return t;if(r>=1)return e;let n=ss(t),i=ss(e);if(!n||!i)return"";let u=parseInt(n.slice(1,3),16),a=parseInt(n.slice(3,5),16),f=parseInt(n.slice(5,7),16),p=parseInt(i.slice(1,3),16),m=parseInt(i.slice(3,5),16),h=parseInt(i.slice(5,7),16),g=(s,o)=>Math.round(s+(o-s)*r),d=s=>Math.max(0,Math.min(255,s)).toString(16).padStart(2,"0");return`#${d(g(u,p))}${d(g(a,m))}${d(g(f,h))}`}var lt;function Ol(){if(lt!==void 0)return lt;let t=process.env.COLORTERM;return t==="truecolor"||t==="24bit"||t==="kmscon"||process.stdout.getColorDepth&&process.stdout.getColorDepth()>=24?lt=!0:lt=!1}var ye;function Bl(){if(ye!==void 0)return ye;if(process.env.NO_COLOR)return ye="none";if(Ol())return ye="truecolor";let t=process.stdout.getColorDepth?.();return typeof t=="number"?t>=24?ye="truecolor":t>=8?ye="256":t>=4?ye="16":ye="none":ye="256"}function tm(){let t=Bl();return t==="truecolor"||t==="256"}var G={type:"light",Background:"#FAFAFA",Foreground:"",LightBlue:"#89BDCD",AccentBlue:"#3B82F6",AccentPurple:"#8B5CF6",AccentCyan:"#06B6D4",AccentGreen:"#3CA84B",AccentYellow:"#D5A40A",AccentRed:"#DD4C4C",AccentYellowDim:"#8B7000",AccentRedDim:"#993333",DiffAdded:"#C6EAD8",DiffRemoved:"#FFCCCC",Comment:"#008000",Gray:"#97a0b0",GradientColors:["#4796E4","#847ACE","#C3677F"]},N={type:"dark",Background:"#1E1E2E",Foreground:"",LightBlue:"#ADD8E6",AccentBlue:"#89B4FA",AccentPurple:"#CBA6F7",AccentCyan:"#89DCEB",AccentGreen:"#A6E3A1",AccentYellow:"#F9E2AF",AccentRed:"#F38BA8",AccentYellowDim:"#8B7530",AccentRedDim:"#8B3A4A",DiffAdded:"#28350B",DiffRemoved:"#430000",Comment:"#6C7086",Gray:"#6C7086",GradientColors:["#4796E4","#847ACE","#C3677F"]},sm={type:"ansi",Background:"black",Foreground:"white",LightBlue:"blue",AccentBlue:"blue",AccentPurple:"magenta",AccentCyan:"cyan",AccentGreen:"green",AccentYellow:"yellow",AccentRed:"red",AccentYellowDim:"yellow",AccentRedDim:"red",DiffAdded:"green",DiffRemoved:"red",Comment:"gray",Gray:"gray"},Oe=class t{constructor(e,r,n,i,u){this.name=e;this.type=r;this.colors=i;this.semanticColors=u??{text:{primary:this.colors.Foreground,secondary:this.colors.Gray,link:this.colors.AccentBlue,accent:this.colors.AccentPurple,code:this.colors.LightBlue},background:{primary:this.colors.Background,diff:{added:this.colors.DiffAdded,removed:this.colors.DiffRemoved}},border:{default:this.colors.Gray,focused:this.colors.AccentBlue},ui:{comment:this.colors.Gray,symbol:this.colors.AccentCyan,gradient:this.colors.GradientColors},status:{error:this.colors.AccentRed,success:this.colors.AccentGreen,warning:this.colors.AccentYellow,errorDim:this.colors.AccentRedDim,warningDim:this.colors.AccentYellowDim}},this._colorMap=Object.freeze(this._buildColorMap(n));let a=n.hljs?.color;this.defaultColor=(a?t._resolveColor(a):void 0)??""}defaultColor;_colorMap;semanticColors;getInkColor(e){return this._colorMap[e]}static _resolveColor(e){return _r(e)}_buildColorMap(e){let r={};for(let n in e){if(!n.startsWith("hljs-")&&n!=="hljs")continue;let i=e[n];if(i?.color){let u=t._resolveColor(i.color);u!==void 0&&(r[n]=u)}}return r}};function om(t){let e={type:"custom",Background:t.background?.primary??t.Background??"",Foreground:t.text?.primary??t.Foreground??"",LightBlue:t.text?.code??t.LightBlue??"",AccentBlue:t.text?.link??t.AccentBlue??"",AccentPurple:t.text?.accent??t.AccentPurple??"",AccentCyan:t.text?.link??t.AccentCyan??"",AccentGreen:t.status?.success??t.AccentGreen??"",AccentYellow:t.status?.warning??t.AccentYellow??"",AccentRed:t.status?.error??t.AccentRed??"",AccentYellowDim:t.status?.warningDim??t.AccentYellowDim??"",AccentRedDim:t.status?.errorDim??t.AccentRedDim??"",DiffAdded:t.background?.diff?.added??t.DiffAdded??"",DiffRemoved:t.background?.diff?.removed??t.DiffRemoved??"",Comment:t.ui?.comment??t.Comment??"",Gray:t.text?.secondary??t.Gray??"",GradientColors:t.ui?.gradient??t.GradientColors},r={hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:e.Background,color:e.Foreground},"hljs-keyword":{color:e.AccentBlue},"hljs-literal":{color:e.AccentBlue},"hljs-symbol":{color:e.AccentBlue},"hljs-name":{color:e.AccentBlue},"hljs-link":{color:e.AccentBlue,textDecoration:"underline"},"hljs-built_in":{color:e.AccentCyan},"hljs-type":{color:e.AccentCyan},"hljs-number":{color:e.AccentGreen},"hljs-class":{color:e.AccentGreen},"hljs-string":{color:e.AccentYellow},"hljs-meta-string":{color:e.AccentYellow},"hljs-regexp":{color:e.AccentRed},"hljs-template-tag":{color:e.AccentRed},"hljs-subst":{color:e.Foreground},"hljs-function":{color:e.Foreground},"hljs-title":{color:e.Foreground},"hljs-params":{color:e.Foreground},"hljs-formula":{color:e.Foreground},"hljs-comment":{color:e.Comment,fontStyle:"italic"},"hljs-quote":{color:e.Comment,fontStyle:"italic"},"hljs-doctag":{color:e.Comment},"hljs-meta":{color:e.Gray},"hljs-meta-keyword":{color:e.Gray},"hljs-tag":{color:e.Gray},"hljs-variable":{color:e.AccentPurple},"hljs-template-variable":{color:e.AccentPurple},"hljs-attr":{color:e.LightBlue},"hljs-attribute":{color:e.LightBlue},"hljs-builtin-name":{color:e.LightBlue},"hljs-section":{color:e.AccentYellow},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"},"hljs-bullet":{color:e.AccentYellow},"hljs-selector-tag":{color:e.AccentYellow},"hljs-selector-id":{color:e.AccentYellow},"hljs-selector-class":{color:e.AccentYellow},"hljs-selector-attr":{color:e.AccentYellow},"hljs-selector-pseudo":{color:e.AccentYellow},"hljs-addition":{backgroundColor:e.AccentGreen,display:"inline-block",width:"100%"},"hljs-deletion":{backgroundColor:e.AccentRed,display:"inline-block",width:"100%"}},n={text:{primary:t.text?.primary??e.Foreground,secondary:t.text?.secondary??e.Gray,link:t.text?.link??e.AccentBlue,accent:t.text?.accent??e.AccentPurple,code:t.text?.code??e.LightBlue},background:{primary:t.background?.primary??e.Background,diff:{added:t.background?.diff?.added??e.DiffAdded,removed:t.background?.diff?.removed??e.DiffRemoved}},border:{default:t.border?.default??e.Gray,focused:t.border?.focused??e.AccentBlue},ui:{comment:t.ui?.comment??e.Comment,symbol:t.ui?.symbol??e.Gray,gradient:t.ui?.gradient??e.GradientColors},status:{error:t.status?.error??e.AccentRed,success:t.status?.success??e.AccentGreen,warning:t.status?.warning??e.AccentYellow,errorDim:t.status?.errorDim??e.AccentRedDim,warningDim:t.status?.warningDim??e.AccentYellowDim}};return new Oe(t.name,"custom",r,e,n)}function am(t){return t.name&&!_l(t.name)?{isValid:!1,error:`Invalid theme name: ${t.name}`}:{isValid:!0}}function _l(t){return t.trim().length>0&&t.trim().length<=50}var Ur=new Oe("Default Light","light",{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:G.Background,color:G.Foreground},"hljs-comment":{color:G.Comment},"hljs-quote":{color:G.Comment},"hljs-variable":{color:G.Foreground},"hljs-keyword":{color:G.AccentBlue},"hljs-selector-tag":{color:G.AccentBlue},"hljs-built_in":{color:G.AccentBlue},"hljs-name":{color:G.AccentBlue},"hljs-tag":{color:G.AccentBlue},"hljs-string":{color:G.AccentRed},"hljs-title":{color:G.AccentRed},"hljs-section":{color:G.AccentRed},"hljs-attribute":{color:G.AccentRed},"hljs-literal":{color:G.AccentRed},"hljs-template-tag":{color:G.AccentRed},"hljs-template-variable":{color:G.AccentRed},"hljs-type":{color:G.AccentRed},"hljs-addition":{color:G.AccentGreen},"hljs-deletion":{color:G.AccentRed},"hljs-selector-attr":{color:G.AccentCyan},"hljs-selector-pseudo":{color:G.AccentCyan},"hljs-meta":{color:G.AccentCyan},"hljs-doctag":{color:G.Gray},"hljs-attr":{color:G.AccentRed},"hljs-symbol":{color:G.AccentCyan},"hljs-bullet":{color:G.AccentCyan},"hljs-link":{color:G.AccentCyan},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}},G);b();var jr=new Oe("Default","dark",{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:N.Background,color:N.Foreground},"hljs-keyword":{color:N.AccentBlue},"hljs-literal":{color:N.AccentBlue},"hljs-symbol":{color:N.AccentBlue},"hljs-name":{color:N.AccentBlue},"hljs-link":{color:N.AccentBlue,textDecoration:"underline"},"hljs-built_in":{color:N.AccentCyan},"hljs-type":{color:N.AccentCyan},"hljs-number":{color:N.AccentGreen},"hljs-class":{color:N.AccentGreen},"hljs-string":{color:N.AccentYellow},"hljs-meta-string":{color:N.AccentYellow},"hljs-regexp":{color:N.AccentRed},"hljs-template-tag":{color:N.AccentRed},"hljs-subst":{color:N.Foreground},"hljs-function":{color:N.Foreground},"hljs-title":{color:N.Foreground},"hljs-params":{color:N.Foreground},"hljs-formula":{color:N.Foreground},"hljs-comment":{color:N.Comment,fontStyle:"italic"},"hljs-quote":{color:N.Comment,fontStyle:"italic"},"hljs-doctag":{color:N.Comment},"hljs-meta":{color:N.Gray},"hljs-meta-keyword":{color:N.Gray},"hljs-tag":{color:N.Gray},"hljs-variable":{color:N.AccentPurple},"hljs-template-variable":{color:N.AccentPurple},"hljs-attr":{color:N.LightBlue},"hljs-attribute":{color:N.LightBlue},"hljs-builtin-name":{color:N.LightBlue},"hljs-section":{color:N.AccentYellow},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"},"hljs-bullet":{color:N.AccentYellow},"hljs-selector-tag":{color:N.AccentYellow},"hljs-selector-id":{color:N.AccentYellow},"hljs-selector-class":{color:N.AccentYellow},"hljs-selector-attr":{color:N.AccentYellow},"hljs-selector-pseudo":{color:N.AccentYellow},"hljs-addition":{backgroundColor:"#144212",display:"inline-block",width:"100%"},"hljs-deletion":{backgroundColor:"#600",display:"inline-block",width:"100%"}},N);b();import*as Be from"node:fs";import*as we from"node:path";var os=We(Br(),1);var Ul="trustedFolders.json";function jl(){return process.env.MATILDA_CODE_TRUSTED_FOLDERS_PATH?process.env.MATILDA_CODE_TRUSTED_FOLDERS_PATH:we.join(Q.getGlobalMatildaDir(),Ul)}var Gr=class{constructor(e,r){this.user=e;this.errors=r}get rules(){return Object.entries(this.user.config).map(([e,r])=>({path:e,trustLevel:r}))}isPathTrusted(e){let r=[],n=[];for(let i of this.rules)switch(i.trustLevel){case"TRUST_FOLDER":r.push(i.path);break;case"TRUST_PARENT":r.push(we.dirname(i.path));break;case"DO_NOT_TRUST":n.push(i.path);break;default:break}for(let i of r)if(hi(e,i))return!0;for(let i of n)if(we.normalize(e)===we.normalize(i))return!1}setValue(e,r){this.user.config[e]=r,$l(this.user)}},_t;function Gl(){if(_t)return _t;let t=[],e={},r=jl();try{if(Be.existsSync(r)){let n=Be.readFileSync(r,"utf-8"),i=JSON.parse((0,os.default)(n));typeof i!="object"||i===null||Array.isArray(i)?t.push({message:"Trusted folders file is not a valid JSON object.",path:r}):e=i}}catch(n){t.push({message:oe(n),path:r})}return _t=new Gr({path:r,config:e},t),_t}function $l(t){try{let e=we.dirname(t.path);Be.existsSync(e)||Be.mkdirSync(e,{recursive:!0}),di(t.path,JSON.stringify(t.config,null,2),{encoding:"utf-8",mode:384,forceMode:!0,noFollow:!0})}catch(e){Ce("Error saving trusted folders file."),Ce(e instanceof Error?e.message:String(e))}}function ql(t){return t.security?.folderTrust?.enabled??!1}function Hl(t){let e=Gl();if(t&&(e.user.config=t),e.errors.length>0){let n=e.errors.map(i=>`Error in ${i.path}: ${i.message}`);throw new Nt(`${n.join(`
36
36
  `)}
37
- Please fix the configuration file and try again.`)}let r=e.isPathTrusted(process.cwd());return{isTrusted:r,source:r!==void 0?"file":void 0}}function $r(t,e){if(!ql(t))return{isTrusted:!0,source:void 0};let r=gi.get()?.workspaceState?.isTrusted;return r!==void 0?{isTrusted:r,source:"ide"}:Hl(e)}b();function ct(t){if(!t||typeof t!="object")return!1;let e=t;return Object.prototype.hasOwnProperty.call(e,"modelProviders")}function Wl(t){if(t.isTrusted&&ct(t.workspace.settings))return"Workspace";if(ct(t.user.settings))return"User"}function as(t){return Wl(t)??"User"}b();var wm=new Set(["boolean","enum"]);var Z={type:"object",description:"A hook definition with an optional matcher and a list of hook configurations.",properties:{matcher:{type:"string",description:"An optional matcher pattern to filter when this hook definition applies."},sequential:{type:"boolean",description:"Whether the hooks should be executed sequentially instead of in parallel."},hooks:{type:"array",description:"The list of hook configurations to execute.",required:!0,items:{type:"object",description:"A hook configuration entry that defines a hook to execute.",properties:{type:{type:"string",description:'The type of hook. Note: "function" type is only available via SDK registration, not settings.json.',enum:["command","http"],required:!0},command:{type:"string",description:'The command to execute when the hook is triggered. Required for "command" type.'},url:{type:"string",description:'The URL to send the POST request to. Required for "http" type.'},headers:{type:"object",description:"HTTP headers to include in the request. Supports env var interpolation ($VAR, ${VAR}).",additionalProperties:{type:"string"}},allowedEnvVars:{type:"array",description:"List of environment variables allowed for interpolation in headers and URL.",items:{type:"string"}},name:{type:"string",description:"An optional name for the hook."},description:{type:"string",description:"An optional description of what the hook does."},timeout:{type:"number",description:"Timeout in seconds for the hook execution."},env:{type:"object",description:"Environment variables to set when executing the hook command.",additionalProperties:{type:"string"}},async:{type:"boolean",description:'Whether to execute the hook asynchronously (non-blocking, for "command" type only).'},once:{type:"boolean",description:'Whether to execute the hook only once per session (for "http" type).'},statusMessage:{type:"string",description:"A message to display while the hook is executing."},shell:{type:"string",description:"The shell to use for command execution.",enum:["bash","powershell"]}}}}}},ls={mcpServers:{type:"object",label:"MCP Servers",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for MCP servers.",showInDialog:!1,mergeStrategy:"shallow_merge"},channels:{type:"object",label:"Channels",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for messaging channels.",showInDialog:!1,mergeStrategy:"shallow_merge"},modelProviders:{type:"object",label:"Model Providers",category:"Model",requiresRestart:!1,default:{},description:"Model providers configuration grouped by authType. Each authType contains an array of model configurations.",showInDialog:!1,mergeStrategy:"replace"},plansDirectory:{type:"string",label:"Plans Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. Defaults to ~/.matilda/plans.",showInDialog:!1},env:{type:"object",label:"Environment Variables",category:"Advanced",requiresRestart:!0,default:{},description:"Environment variables to set as fallback defaults. These are loaded with the lowest priority: system environment variables > .env files > settings.json env field.",showInDialog:!1,mergeStrategy:"shallow_merge"},proxy:{type:"string",label:"Proxy",category:"Advanced",requiresRestart:!0,default:void 0,description:"Proxy URL for CLI HTTP requests. Takes precedence over proxy environment variables when --proxy is not provided.",showInDialog:!1},general:{type:"object",label:"General",category:"General",requiresRestart:!1,default:{},description:"General application settings.",showInDialog:!1,properties:{preferredEditor:{type:"string",label:"Preferred Editor",category:"General",requiresRestart:!1,default:void 0,description:"The preferred editor to open files in.",showInDialog:!0},vimMode:{type:"boolean",label:"Vim Mode",category:"General",requiresRestart:!1,default:!1,description:"Enable Vim keybindings",showInDialog:!0},enableAutoUpdate:{type:"boolean",label:"Enable Auto Update",category:"General",requiresRestart:!1,default:!0,description:"Automatically install Matilda Code updates on startup when possible. Update checks and \u201Cnew version available\u201D notices (with the install command) still run when this is off.",showInDialog:!0},showSessionRecap:{type:"boolean",label:"Show Session Recap",category:"General",requiresRestart:!1,default:!1,description:'Auto-show a one-line "where you left off" recap when returning to the terminal after being away. Off by default. Use /recap to trigger manually regardless of this setting.',showInDialog:!0},sessionRecapAwayThresholdMinutes:{type:"number",label:"Session Recap Away Threshold (minutes)",category:"General",requiresRestart:!1,default:5,description:"How many minutes the terminal must be blurred before an auto-recap fires on the next focus-in. Matches Claude Code's default of 5 minutes; raise if you briefly alt-tab and do not want recaps to pile up.",showInDialog:!0},cleanupPeriodDays:{type:"number",label:"Cleanup Period (days)",category:"General",requiresRestart:!0,default:30,description:"Number of days to retain ~/.matilda/file-history/ session backups used by /rewind. Backups older than this are removed by a background housekeeping pass that runs at most once per day. Set to 0 for minimum retention (~1 hour) \u2014 protects sessions touched in the last hour, plus the currently active session. Other persistent caches will honor the same setting in the future.",showInDialog:!0},gitCoAuthor:{type:"object",label:"Attribution",category:"General",requiresRestart:!1,default:{commit:!0,pr:!0,prMessage:"Written by Matilda \u{1F1E6}\u{1F1FA} made by [Maincode](https://maincode.com)"},description:"Attribution added to git commits and pull requests created through Matilda.",showInDialog:!1,legacyTypes:["boolean"],properties:{commit:{type:"boolean",label:"Attribution: commit",category:"General",requiresRestart:!1,default:!0,description:"Add a Co-authored-by trailer to git commit messages AND attach a per-file AI-attribution git note (`refs/notes/ai-attribution`) for commits made through Matilda. Disabling skips both.",showInDialog:!0},pr:{type:"boolean",label:"Attribution: PR",category:"General",requiresRestart:!1,default:!0,description:"Append a Matilda attribution line to PR descriptions when running `gh pr create`.",showInDialog:!0},prMessage:{type:"string",label:"Attribution: PR message",category:"General",requiresRestart:!1,default:"Written by Matilda \u{1F1E6}\u{1F1FA} made by [Maincode](https://maincode.com)",description:"The footer appended to PR descriptions when `gitCoAuthor.pr` is enabled. Customize it to rebrand the footer, or set it to an empty string to append nothing.",showInDialog:!1}}},debugKeystrokeLogging:{type:"boolean",label:"Debug Keystroke Logging",category:"General",requiresRestart:!1,default:!1,description:"Enable debug logging of keystrokes to the console.",showInDialog:!1},language:{type:"enum",label:"Language: UI",category:"General",requiresRestart:!0,default:"auto",description:'The language for the user interface. Use "auto" to detect from system settings. You can also use custom language codes (e.g., "es", "fr") by placing JS language files in ~/.matilda/locales/ (e.g., ~/.matilda/locales/es.js).',showInDialog:!0,options:[]},outputLanguage:{type:"string",label:"Language: Model",category:"General",requiresRestart:!0,default:"auto",description:'The language for LLM output. Use "auto" to detect from system settings, or set a specific language.',showInDialog:!0},dynamicCommandTranslation:{type:"boolean",label:"Language: Dynamic Command Translation",category:"General",requiresRestart:!1,default:!1,description:"Enable AI translation for dynamic slash command descriptions. When disabled, dynamic commands use their original descriptions and do not trigger translation model calls.",showInDialog:!0},terminalBell:{type:"boolean",label:"Terminal Bell Notification",category:"General",requiresRestart:!1,default:!0,description:"Play terminal bell sound when response completes or needs approval.",showInDialog:!0},preventSystemSleep:{type:"boolean",label:"Prevent System Sleep While Running",category:"General",requiresRestart:!0,default:!0,description:"Prevent the system from sleeping while Matilda is streaming a model response or executing tools. Idle prompt time and permission prompts do not inhibit sleep.",showInDialog:!0},chatRecording:{type:"boolean",label:"Chat Recording",category:"General",requiresRestart:!0,default:!0,description:"Enable saving chat history to disk. Disabling this will also prevent --continue and --resume from working.",showInDialog:!1},defaultFileEncoding:{type:"enum",label:"Default File Encoding",category:"General",requiresRestart:!1,default:"utf-8",description:'Default encoding for new files. Use "utf-8" (default) for UTF-8 without BOM, or "utf-8-bom" for UTF-8 with BOM. Only change this if your project specifically requires BOM.',showInDialog:!1,options:[{value:"utf-8",label:"UTF-8 (without BOM)"},{value:"utf-8-bom",label:"UTF-8 with BOM"}]}}},output:{type:"object",label:"Output",category:"General",requiresRestart:!1,default:{},description:"Settings for the CLI output.",showInDialog:!1,properties:{format:{type:"enum",label:"Output Format",category:"General",requiresRestart:!1,default:"text",description:"The format of the CLI output.",showInDialog:!1,options:[{value:"text",label:"Text"},{value:"json",label:"JSON"}]}}},dualOutput:{type:"object",label:"Dual Output",category:"Advanced",requiresRestart:!0,default:{},description:"Dual-output sidecar mode: emit structured JSON events to a second channel while the TUI renders normally on stdout. See docs/users/features/dual-output.md. CLI flags take precedence over these settings.",showInDialog:!1,properties:{jsonFile:{type:"string",label:"JSON Event File",category:"Advanced",requiresRestart:!0,default:void 0,description:"File path for structured JSON event output. Equivalent to --json-file. Ignored if --json-fd or --json-file is also set.",showInDialog:!1},inputFile:{type:"string",label:"Remote Input File",category:"Advanced",requiresRestart:!0,default:void 0,description:"File path for remote input commands (JSONL). Equivalent to --input-file. Ignored if --input-file is also set.",showInDialog:!1}}},ui:{type:"object",label:"UI",category:"UI",requiresRestart:!1,default:{},description:"User interface settings.",showInDialog:!1,properties:{theme:{type:"string",label:"Theme",category:"UI",requiresRestart:!1,default:"Matilda Dark",description:"The color theme for the UI.",showInDialog:!0},autoModeAcknowledged:{type:"boolean",label:"Auto Mode Acknowledged",category:"UI",requiresRestart:!1,default:!1,description:"True once the user has seen the first-time information message about the AUTO approval mode. Set automatically; not intended for manual configuration.",showInDialog:!1},statusLine:{type:"object",label:"Status Line",category:"UI",requiresRestart:!1,default:void 0,description:'Status line display configuration. Use `type: "preset"` with built-in item ids, or `type: "command"` with a shell command. Optional command `refreshInterval` (seconds, >= 1) re-runs the command on a timer so external data stays fresh. Set `respectUserColors: true` to preserve ANSI color codes in command output instead of applying dim/theme styling. Set `hideContextIndicator: true` to hide the built-in context usage indicator in the footer right section.',showInDialog:!1},customThemes:{type:"object",label:"Custom Themes",category:"UI",requiresRestart:!1,default:{},description:"Custom theme definitions.",showInDialog:!1},hideBuiltinWorktreeIndicator:{type:"boolean",label:"Hide Built-in Worktree Indicator",category:"UI",requiresRestart:!1,default:!1,description:"When true, the built-in `\u2387 worktree-<branch> (<slug>)` line in the Footer is hidden. The worktree state is still surfaced to custom statusline scripts via the stdin payload (`worktree.{name, path, branch, original_cwd, original_branch}`). Keep at the default `false` unless your custom statusline renders the worktree itself \u2014 otherwise an active worktree silently has no UI affordance.",showInDialog:!1},hideWindowTitle:{type:"boolean",label:"Hide Window Title",category:"UI",requiresRestart:!0,default:!1,description:"Hide the window title bar",showInDialog:!1},showStatusInTitle:{type:"boolean",label:"Show Status in Title",category:"UI",requiresRestart:!1,default:!1,description:"Show Matilda status and thoughts in the terminal window title",showInDialog:!1},hideTips:{type:"boolean",label:"Hide Tips",category:"UI",requiresRestart:!1,default:!1,description:"Hide helpful tips in the UI",showInDialog:!0},showLineNumbers:{type:"boolean",label:"Show Line Numbers in Code",category:"UI",requiresRestart:!1,default:!0,description:"Show line numbers in the code output.",showInDialog:!0},renderMode:{type:"enum",label:"Markdown Render Mode",category:"UI",requiresRestart:!1,default:"render",description:'Default Markdown display mode. Use "render" for rich visual previews, or "raw" to show source-oriented Markdown by default. Toggle during a session with Alt/Option+M; on macOS the terminal must send Option as Meta.',showInDialog:!0,options:[{value:"render",label:"Render visual previews"},{value:"raw",label:"Show raw source"}]},showCitations:{type:"boolean",label:"Show Citations",category:"UI",requiresRestart:!1,default:!1,description:"Show citations for generated text in the chat.",showInDialog:!1},customWittyPhrases:{type:"array",label:"Custom Witty Phrases",category:"UI",requiresRestart:!1,default:[],description:"Custom witty phrases to display during loading.",showInDialog:!1},enableWelcomeBack:{type:"boolean",label:"Show Welcome Back Dialog",category:"UI",requiresRestart:!1,default:!0,description:'Show welcome back dialog when returning to a project with conversation history. Choosing "Start new chat session" suppresses the dialog for that project until the project summary changes.',showInDialog:!0},enableUserFeedback:{type:"boolean",label:"Enable User Feedback",category:"UI",requiresRestart:!1,default:!0,description:"Show optional feedback dialog after conversations to help improve Matilda performance.",showInDialog:!0},enableFollowupSuggestions:{type:"boolean",label:"Enable Follow-up Suggestions",category:"UI",requiresRestart:!1,default:!1,description:"Show context-aware follow-up suggestions after task completion. Press Tab or Right Arrow to accept, Enter to accept and submit.",showInDialog:!0},enableCacheSharing:{type:"boolean",label:"Enable Cache Sharing for Suggestions",category:"UI",requiresRestart:!1,default:!0,description:"Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental).",showInDialog:!1},enableSpeculation:{type:"boolean",label:"Enable Speculative Execution",category:"UI",requiresRestart:!1,default:!1,description:"Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental).",showInDialog:!1},accessibility:{type:"object",label:"Accessibility",category:"UI",requiresRestart:!0,default:{},description:"Accessibility settings.",showInDialog:!1,properties:{enableLoadingPhrases:{type:"boolean",label:"Enable Loading Phrases",category:"UI",requiresRestart:!0,default:!0,description:"Enable loading phrases (disable for accessibility)",showInDialog:!0},screenReader:{type:"boolean",label:"Screen Reader Mode",category:"UI",requiresRestart:!0,default:void 0,description:"Render output in plain-text to be more screen reader accessible",showInDialog:!1}}},feedbackLastShownTimestamp:{type:"number",label:"Feedback Last Shown Timestamp",category:"UI",requiresRestart:!1,default:0,description:"The last time the feedback dialog was shown.",showInDialog:!1},compactMode:{type:"boolean",label:"Compact Mode",category:"UI",requiresRestart:!1,default:!1,description:"Hide tool output and thinking for a cleaner view (toggle with Ctrl+O).",showInDialog:!0},compactInline:{type:"boolean",label:"Compact Inline",category:"UI",requiresRestart:!0,default:!1,description:"Compact tool display within each group instead of merging across groups. Requires compactMode to be enabled.",showInDialog:!0},useTerminalBuffer:{type:"boolean",label:"Virtualized History (reduces flicker on long sessions)",category:"UI",requiresRestart:!1,default:!1,description:"Render conversation history in an in-app scrollable viewport instead of the terminal scrollback buffer. Recommended if you see flicker, scroll-storm, or interface freeze on long sessions, after Ctrl+O, after Ctrl+E / Ctrl+F (expand), after window resize, or when alt-tabbing back. Scroll with Shift+\u2191/\u2193 (line), PgUp/PgDn (page), Ctrl+Home/End (top/bottom), or the mouse wheel. Does NOT use the host terminal scrollback while enabled; for native text selection, hold Shift (or Option on macOS) while dragging.",showInDialog:!0},shellOutputMaxLines:{type:"number",label:"Shell Output Max Lines",category:"UI",requiresRestart:!1,default:5,description:"Max number of shell output lines shown inline. Set to 0 to disable the cap and show full output. The hidden line count is still surfaced via the `+N lines` indicator.",showInDialog:!0},hideBanner:{type:"boolean",label:"Hide Banner",category:"UI",requiresRestart:!1,default:!1,description:"Hide the startup ASCII banner and info panel.",showInDialog:!0},modelDisplayName:{type:"string",label:"Model Display Name",category:"UI",requiresRestart:!1,default:"",description:'Override the model name shown in the UI (footer, status line, /about, /model, /context). Display-only \u2014 API requests still use the real model id. Leave empty to show the actual model. Set to a single brand name (e.g. "matilda") to always present that regardless of the backing model.',showInDialog:!0},startupAnimation:{type:"boolean",label:"Startup Animation",category:"UI",requiresRestart:!1,default:!0,description:"Play the Matilda flower bloom on launch before the banner settles in. Skipped automatically for screen readers, non-interactive terminals, and when the banner is hidden.",showInDialog:!0},shimmer:{type:"boolean",label:"Loading Shimmer",category:"UI",requiresRestart:!1,default:!0,description:"Animate a shimmering highlight over the loading verb while Matilda is thinking. Disable for a static label. Skipped automatically for screen readers and when NO_COLOR is set.",showInDialog:!0},reducedMotion:{type:"boolean",label:"Reduced Motion",category:"UI",requiresRestart:!1,default:!1,description:"Snap animations to their final state instead of easing them \u2014 focus transitions, selection highlights, dialog reveals and flourishes become instant. Motion is also disabled automatically for screen readers, non-interactive terminals, and when NO_COLOR is set.",showInDialog:!0},customBannerTitle:{type:"string",label:"Custom Banner Title",category:"UI",requiresRestart:!1,default:"",description:'Replace the default ">_ Matilda" title shown in the banner info panel. The version suffix is always appended.',showInDialog:!1},customBannerSubtitle:{type:"string",label:"Custom Banner Subtitle",category:"UI",requiresRestart:!1,default:"",description:"Optional subtitle line rendered between the banner title and the auth/model line. When unset, the info panel keeps its blank spacer row.",showInDialog:!1},customAsciiArt:{type:"object",label:"Custom ASCII Art",category:"UI",requiresRestart:!1,default:void 0,description:'Replace the default MATILDA ASCII art. Accepts an inline string, {"path": "..."}, or {"small": ..., "large": ...} for width-aware selection.',showInDialog:!1,jsonSchemaOverride:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1},{type:"object",properties:{small:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1}]},large:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1}]}},additionalProperties:!1}]}}}},ide:{type:"object",label:"IDE",category:"IDE",requiresRestart:!0,default:{},description:"IDE integration settings.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Auto-connect to IDE",category:"IDE",requiresRestart:!0,default:!1,description:"Enable IDE integration mode",showInDialog:!0},hasSeenNudge:{type:"boolean",label:"Has Seen IDE Integration Nudge",category:"IDE",requiresRestart:!1,default:!1,description:"Whether the user has seen the IDE integration nudge.",showInDialog:!1}}},privacy:{type:"object",label:"Privacy",category:"Privacy",requiresRestart:!0,default:{},description:"Privacy-related settings.",showInDialog:!1,properties:{usageStatisticsEnabled:{type:"boolean",label:"Enable Usage Statistics",category:"Privacy",requiresRestart:!0,default:!1,description:"Enable collection of usage statistics",showInDialog:!0}}},telemetry:{type:"object",label:"Telemetry",category:"Advanced",requiresRestart:!0,default:void 0,description:"Telemetry configuration.",showInDialog:!1,jsonSchemaOverride:{type:"object",properties:{includeSensitiveSpanAttributes:{description:"When enabled, user prompts, system prompts, tool inputs/outputs, and model responses are written to native OTel span attributes in addition to the log-to-span bridge. Warning: this may expose sensitive data (file contents, shell commands, conversation history) to your OTLP backend.",type:"boolean",default:!1},resourceAttributes:{description:"Static resource attributes attached to every span/log/metric the SDK exports (OTLP or file outfile \u2014 they share the same Resource). Merged with the OTEL_RESOURCE_ATTRIBUTES env var; settings win on key conflict. Reserved keys (service.version, session.id) are dropped with a warning.",type:"object",additionalProperties:{type:"string"},default:{}},metrics:{description:"Per-signal cardinality controls for exported metrics.",type:"object",additionalProperties:!1,properties:{includeSessionId:{description:"Include session.id on every metric data point. WARNING: each CLI session creates a new value, causing unbounded metric time-series fan-out at the backend. Only enable for short-term debugging \u2014 spans and logs still carry session.id.",type:"boolean",default:!1}}}},additionalProperties:!0}},outboundCorrelation:{type:"object",label:"Outbound Correlation",category:"Advanced",requiresRestart:!0,default:void 0,description:"SECURITY-RELEVANT. Controls what client-side correlation data matilda-code writes into outbound LLM API requests (Matilda-compatible, OpenAI, Anthropic, etc.) \u2014 separate from `telemetry.*` which governs data flow into the operator's OWN OTLP collector. All values default to off. Opt in only when the LLM provider also reports into your OTel collector for cross-process trace stitching (e.g. ARMS Tracing + Matilda-compatible).",showInDialog:!1,jsonSchemaOverride:{type:"object",properties:{propagateTraceContext:{description:"Requires `telemetry.enabled: true`. Inject W3C `traceparent` on outbound `fetch` requests (LLM SDK calls, MCP StreamableHTTP, WebFetch, ...) AND as a `TRACEPARENT` environment variable in shell child processes (Bash tool, hooks, monitor). When enabled, any existing `TRACEPARENT` in the parent environment is overwritten with matilda-code's own trace context. Default: false \u2014 trace context stays internal to the operator's OTLP collector. Set true when you want cross-process trace stitching with an OTel-aware LLM provider (e.g. ARMS+Matilda-compatible) or need shell scripts / CLI tools to participate in distributed tracing.",type:"boolean",default:!1}},additionalProperties:!1}},fastModel:{type:"string",label:"Fast Model",category:"Model",requiresRestart:!1,default:"",description:"Model used for generating prompt suggestions and speculative execution. Leave empty to use the main model. A smaller/faster model (e.g., matilda3-coder-flash) reduces latency and cost.",showInDialog:!0},model:{type:"object",label:"Model",category:"Model",requiresRestart:!1,default:{},description:"Settings related to the generative model.",showInDialog:!1,properties:{name:{type:"string",label:"Model",category:"Model",requiresRestart:!1,default:void 0,description:"The model to use for conversations.",showInDialog:!1},maxSessionTurns:{type:"number",label:"Max Session Turns",category:"Model",requiresRestart:!1,default:-1,description:"Maximum number of user/model/tool turns to keep in a session. -1 means unlimited.",showInDialog:!1},maxWallTimeSeconds:{type:"number",label:"Max Wall-Clock Time (seconds)",category:"Model",requiresRestart:!1,default:-1,description:"Run-level wall-clock budget for headless / unattended runs, in seconds. -1 means unlimited; otherwise must be in [1, ~2,147,483] (sub-second values and values above ~24 days are rejected as typos). Overridable per-invocation via --max-wall-time (which also accepts duration suffixes like 5m, 1.5h).",showInDialog:!1},maxToolCalls:{type:"number",label:"Max Tool Calls",category:"Model",requiresRestart:!1,default:-1,description:'Cumulative tool-call budget for a run (counts every executed tool, success or failure; structured_output under --json-schema is exempt). -1 means unlimited; 0 means "no tool calls allowed" (first call aborts). Capped at 1,000,000 to catch typos. Overridable via --max-tool-calls.',showInDialog:!1},chatCompression:{type:"object",label:"Chat Compression",category:"Model",requiresRestart:!1,default:void 0,description:"Chat compression settings.",showInDialog:!1},sessionTokenLimit:{type:"number",label:"Session Token Limit",category:"Model",requiresRestart:!1,default:void 0,description:"The maximum number of tokens allowed in a session.",showInDialog:!1},skipNextSpeakerCheck:{type:"boolean",label:"Skip Next Speaker Check",category:"Model",requiresRestart:!1,default:!0,description:"Skip the next speaker check.",showInDialog:!1},skipLoopDetection:{type:"boolean",label:"Skip Loop Detection",category:"Model",requiresRestart:!1,default:!0,description:"Skip streaming loop detection. Defaults to true to avoid false-positive interruptions; set to false to re-enable as an unattended-run guardrail.",showInDialog:!1},skipStartupContext:{type:"boolean",label:"Skip Startup Context",category:"Model",requiresRestart:!0,default:!1,description:"Avoid sending the workspace startup context at the beginning of each session.",showInDialog:!1},enableOpenAILogging:{type:"boolean",label:"Enable OpenAI Logging",category:"Model",requiresRestart:!1,default:!1,description:"Enable OpenAI logging.",showInDialog:!1},openAILoggingDir:{type:"string",label:"OpenAI Logging Directory",category:"Model",requiresRestart:!1,default:void 0,description:"Custom directory path for OpenAI API logs. If not specified, defaults to logs/openai in the current working directory.",showInDialog:!1},generationConfig:{type:"object",label:"Generation Configuration",category:"Model",requiresRestart:!1,default:void 0,description:"Generation configuration settings.",showInDialog:!1,properties:{timeout:{type:"number",label:"Timeout",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Request timeout in milliseconds.",parentKey:"generationConfig",showInDialog:!1},maxRetries:{type:"number",label:"Max Retries",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Maximum number of retries for failed requests.",parentKey:"generationConfig",showInDialog:!1},enableCacheControl:{type:"boolean",label:"Enable Cache Control",category:"Generation Configuration",requiresRestart:!1,default:!0,description:"Enable cache control for Matilda-compatible providers.",parentKey:"generationConfig",showInDialog:!1},splitToolMedia:{type:"boolean",label:"Split Tool Result Media",category:"Generation Configuration",requiresRestart:!1,default:!0,description:'When true, media (images / audio / video / files) returned by tool calls \u2014 including the built-in read_file and MCP tools \u2014 is split into a follow-up user message instead of being embedded in the `role: "tool"` message. The OpenAI Chat Completions spec only permits text on tool messages, so strict OpenAI-compatible servers (e.g., doubao / new-api / LM Studio) silently drop or reject embedded media and the model never sees an image read via read_file (MaincodeHQ/matilda-code#4876, #3616). Default true is spec-compliant and safe for permissive providers; set false only to restore the legacy embed-in-tool-message behavior.',parentKey:"generationConfig",showInDialog:!1},schemaCompliance:{type:"enum",label:"Tool Schema Compliance",category:"Generation Configuration",requiresRestart:!1,default:"auto",description:'The compliance mode for tool schemas sent to the model. Use "openapi_30" for strict OpenAPI 3.0 compatibility (e.g., for Gemini).',parentKey:"generationConfig",showInDialog:!1,options:[{value:"auto",label:"Auto (Default)"},{value:"openapi_30",label:"OpenAPI 3.0 Strict"}]},contextWindowSize:{type:"number",label:"Context Window Size",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Overrides the default context window size for the selected model. Use this setting when a provider's effective context limit differs from Matilda's default. This value defines the model's assumed maximum context capacity, not a per-request token limit.",parentKey:"generationConfig",showInDialog:!1}}}}},modelPricing:{type:"object",label:"Model Pricing",category:"Model",requiresRestart:!1,default:void 0,description:'Optional per-model pricing for cost estimation in /stats model. Example: {"matilda3-coder": {"inputPerMillionTokens": 0.30, "outputPerMillionTokens": 1.20}}',showInDialog:!1},context:{type:"object",label:"Context",category:"Context",requiresRestart:!1,default:{},description:"Settings for managing context provided to the model.",showInDialog:!1,properties:{fileName:{type:"object",label:"Context File Name",category:"Context",requiresRestart:!1,default:void 0,description:"The name of the context file.",showInDialog:!1},importFormat:{type:"string",label:"Memory Import Format",category:"Context",requiresRestart:!1,default:void 0,description:"The format to use when importing memory.",showInDialog:!1},includeDirectories:{type:"array",label:"Include Directories",category:"Context",requiresRestart:!1,default:[],description:"Additional directories to include in the workspace context. Missing directories will be skipped with a warning.",showInDialog:!1,mergeStrategy:"concat"},loadFromIncludeDirectories:{type:"boolean",label:"Load Memory From Include Directories",category:"Context",requiresRestart:!1,default:!1,description:"Whether to load memory files from include directories.",showInDialog:!1},clearContextOnIdle:{type:"object",label:"Clear Context On Idle",category:"Context",requiresRestart:!1,default:{},description:"Settings for clearing stale or oversized tool result context. Use -1 to disable a threshold.",showInDialog:!1,properties:{toolResultsThresholdMinutes:{type:"number",label:"Tool Results Idle Threshold (minutes)",category:"Context",requiresRestart:!1,default:5,description:"Minutes of inactivity before clearing old tool result content. Use -1 to disable. Default 5 keeps long agent sessions snappy.",showInDialog:!1},toolResultsNumToKeep:{type:"number",label:"Tool Results Number To Keep",category:"Context",requiresRestart:!1,default:5,description:"Number of most-recent compactable tool results to preserve when clearing. Floor at 1.",showInDialog:!1},toolResultsTotalCharsThreshold:{type:"number",label:"Tool Results Total Chars Threshold",category:"Context",requiresRestart:!1,default:5e5,description:"Total compactable tool result output characters allowed in history before clearing oldest results. Use -1 to disable. This is a soft threshold: protected recent tool results may keep the total above it.",showInDialog:!1}}},fileFiltering:{type:"object",label:"File Filtering",category:"Context",requiresRestart:!0,default:{},description:"Settings for git-aware file filtering.",showInDialog:!1,properties:{respectGitIgnore:{type:"boolean",label:"Respect .gitignore",category:"Context",requiresRestart:!0,default:!0,description:"Respect .gitignore files when searching",showInDialog:!0},respectMatildaIgnore:{type:"boolean",label:"Respect .matildaignore",category:"Context",requiresRestart:!0,default:!0,description:"Respect .matildaignore files when searching",showInDialog:!0},enableRecursiveFileSearch:{type:"boolean",label:"Enable Recursive File Search",category:"Context",requiresRestart:!0,default:!0,description:"Enable recursive file search functionality",showInDialog:!1},enableFuzzySearch:{type:"boolean",label:"Enable Fuzzy Search",category:"Context",requiresRestart:!0,default:!0,description:"Enable fuzzy search when searching for files.",showInDialog:!0}}}}},memory:{type:"object",label:"Memory",category:"Memory",requiresRestart:!1,default:{},description:"Settings for managed auto-memory.",showInDialog:!1,properties:{enableManagedAutoMemory:{type:"boolean",label:"Enable Managed Auto-Memory",category:"Memory",requiresRestart:!1,default:!0,description:"Enable background extraction of memories from conversations.",showInDialog:!1},enableManagedAutoDream:{type:"boolean",label:"Enable Managed Auto-Dream",category:"Memory",requiresRestart:!1,default:!0,description:"Enable automatic consolidation (dream) of collected memories.",showInDialog:!1},enableAutoSkill:{type:"boolean",label:"Enable Auto Skill",category:"Memory",requiresRestart:!1,default:!0,description:"Enable background review for reusable project skills after tool-heavy sessions.",showInDialog:!1}}},slashCommands:{type:"object",label:"Slash Commands",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for slash commands exposed by the CLI. Useful for locking down the command surface in multi-tenant or enterprise deployments.",showInDialog:!1,properties:{disabled:{type:"array",label:"Disabled Slash Commands",category:"Advanced",requiresRestart:!0,default:void 0,description:'Slash command names to hide and refuse to execute. Matched case-insensitively against the final command name (for extension commands this is the disambiguated form, e.g. "myext.deploy"). Merged as a union across settings scopes, so workspace settings can add to but not remove entries defined in system/user settings.',showInDialog:!1,mergeStrategy:"union"}}},skills:{type:"object",label:"Skills",category:"Advanced",requiresRestart:!1,default:{},description:"Configuration for skills (SKILL.md-based capabilities) exposed to the model.",showInDialog:!1,properties:{disabled:{type:"array",label:"Disabled Skills",category:"Advanced",requiresRestart:!1,default:void 0,description:"Skill names to hide. Matched case-insensitively against the skill name. Hidden skills do not appear in <available_skills> or as /<name> slash commands. UNION-merged across systemDefaults/user/workspace/system scopes \u2014 workspace cannot remove entries defined in higher scopes.",showInDialog:!1,mergeStrategy:"union"}}},permissions:{type:"object",label:"Permissions",category:"Tools",requiresRestart:!0,default:{},description:"Permission rules controlling tool usage. Rules are evaluated in priority order: deny > ask > allow.",showInDialog:!1,properties:{allow:{type:"array",label:"Allow Rules",category:"Tools",requiresRestart:!0,default:void 0,description:'Tools or commands that are auto-approved without confirmation. Examples: "ShellTool", "Bash(git *)", "ReadFileTool".',showInDialog:!1,mergeStrategy:"union"},ask:{type:"array",label:"Ask Rules",category:"Tools",requiresRestart:!0,default:void 0,description:"Tools or commands that always require user confirmation. Takes precedence over allow rules.",showInDialog:!1,mergeStrategy:"union"},deny:{type:"array",label:"Deny Rules",category:"Tools",requiresRestart:!0,default:void 0,description:'Tools or commands that are always blocked. Highest priority rule. Examples: "ShellTool", "Bash(rm -rf *)".',showInDialog:!1,mergeStrategy:"union"},autoMode:{type:"object",label:"Auto Mode",category:"Tools",requiresRestart:!0,default:{},description:"Settings consumed by the AUTO approval mode classifier.",showInDialog:!1,properties:{classifier:{type:"object",label:"Auto Mode Classifier",category:"Tools",requiresRestart:!0,default:{},description:"Runtime controls for the AUTO approval mode classifier.",showInDialog:!1,properties:{timeouts:{type:"object",label:"Auto Mode Classifier Timeouts",category:"Tools",requiresRestart:!0,default:{},description:"Timeouts for the two AUTO classifier stages, in milliseconds.",showInDialog:!1,properties:{stage1Ms:{type:"number",label:"Auto Mode Stage 1 Timeout",category:"Tools",requiresRestart:!0,default:void 0,description:"Timeout in milliseconds for the fast stage-1 AUTO classifier.",showInDialog:!1},stage2Ms:{type:"number",label:"Auto Mode Stage 2 Timeout",category:"Tools",requiresRestart:!0,default:void 0,description:"Timeout in milliseconds for the stage-2 AUTO classifier review.",showInDialog:!1}}},thinking:{type:"object",label:"Auto Mode Classifier Thinking",category:"Tools",requiresRestart:!0,default:{},description:"Provider/API-level thinking controls for the AUTO classifier.",showInDialog:!1,properties:{stage2Enabled:{type:"boolean",label:"Auto Mode Stage 2 Thinking",category:"Tools",requiresRestart:!0,default:!1,description:"Whether stage 2 may use provider/API-level thinking. Stage 1 always keeps thinking disabled.",showInDialog:!1}}}}},hints:{type:"object",label:"Classifier Hints",category:"Tools",requiresRestart:!0,default:{},description:"Natural-language hints injected into the classifier system prompt.",showInDialog:!1,properties:{allow:{type:"array",label:"Auto Mode Allow Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of actions AUTO mode should allow.",showInDialog:!1,mergeStrategy:"union"},softDeny:{type:"array",label:"Auto Mode Soft-Deny Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of destructive / irreversible actions AUTO mode should block unless the user explicitly authorised that exact action and scope.",showInDialog:!1,mergeStrategy:"union"},hardDeny:{type:"array",label:"Auto Mode Hard-Deny Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of security-boundary actions the AUTO classifier must block even when an autoMode allow hint or recent user request would normally authorise them. Does not override permissions.allow; use permissions.deny for deterministic hard permission rules.",showInDialog:!1,mergeStrategy:"union"},deny:{type:"array",label:"Auto Mode Deny Hints (legacy)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated alias for `softDeny`. Entries here are merged into the SOFT BLOCK user section so existing settings keep working; new configurations should use `softDeny` or `hardDeny` instead.",showInDialog:!1,mergeStrategy:"union"}}},environment:{type:"array",label:"Auto Mode Environment",category:"Tools",requiresRestart:!0,default:void 0,description:"Environment / context lines injected into the classifier system prompt.",showInDialog:!1,mergeStrategy:"union"}}}}},tools:{type:"object",label:"Tools",category:"Tools",requiresRestart:!0,default:{},description:"Settings for built-in and custom tools.",showInDialog:!1,properties:{sandbox:{type:"object",label:"Sandbox",category:"Tools",requiresRestart:!0,default:void 0,description:"Sandbox execution environment (can be a boolean or a path string).",showInDialog:!1},sandboxImage:{type:"string",label:"Sandbox Image",category:"Tools",requiresRestart:!0,default:void 0,description:"Sandbox image URI used by Docker/Podman when --sandbox-image and MATILDA_SANDBOX_IMAGE are not set.",showInDialog:!1},toolSearch:{type:"object",label:"Tool Search",category:"Tools",requiresRestart:!0,default:{},description:"Settings for the ToolSearch discovery mechanism.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Enable ToolSearch",category:"Tools",requiresRestart:!0,default:!0,description:"When enabled, MCP tools are loaded on-demand via ToolSearch to reduce prompt size. Disable this for models that rely on prefix-based KV caching (e.g. DeepSeek) to keep the prompt prefix stable and maximize cache hit rates.",showInDialog:!0}}},shell:{type:"object",label:"Shell",category:"Tools",requiresRestart:!1,default:{},description:"Settings for shell execution.",showInDialog:!1,properties:{enableInteractiveShell:{type:"boolean",label:"Interactive Shell (PTY)",category:"Tools",requiresRestart:!0,default:!0,description:"Use node-pty for an interactive shell experience. Falls back to child_process if PTY is unavailable.",showInDialog:!0},pager:{type:"string",label:"Pager",category:"Tools",requiresRestart:!1,default:"cat",description:"The pager command to use for shell output. Defaults to `cat`.",showInDialog:!1},showColor:{type:"boolean",label:"Show Color",category:"Tools",requiresRestart:!1,default:!1,description:"Show color in shell output.",showInDialog:!1}}},core:{type:"array",label:"Core Tools (deprecated)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.allow instead.",showInDialog:!1},allowed:{type:"array",label:"Allowed Tools (deprecated)",category:"Advanced",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.allow instead.",showInDialog:!1},exclude:{type:"array",label:"Exclude Tools (deprecated)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.deny instead.",showInDialog:!1,mergeStrategy:"union"},disabled:{type:"array",label:"Disabled Tools",category:"Tools",requiresRestart:!0,default:void 0,description:"Tool names hidden from the registry. Differs from permissions.deny: disabled tools are not registered at all, so they never appear in /tools and cannot be discovered by the model. Managed by the daemon mutation route POST /workspace/tools/:name/enable.",showInDialog:!1,mergeStrategy:"union"},approvalMode:{type:"enum",label:"Tool Approval Mode",category:"Tools",requiresRestart:!1,default:"default",description:"Approval mode for tool usage. Controls how tools are approved before execution.",showInDialog:!0,options:[{value:"plan",label:"Plan"},{value:"default",label:"Ask permissions"},{value:"auto-edit",label:"Auto Edit"},{value:"auto",label:"Auto"},{value:"bogan",label:"BOGAN"}]},autoAccept:{type:"boolean",label:"Auto Accept",category:"Tools",requiresRestart:!1,default:!1,description:"Automatically accept and execute tool calls that are considered safe (e.g., read-only operations) without explicit user confirmation.",showInDialog:!1},discoveryCommand:{type:"string",label:"Tool Discovery Command",category:"Tools",requiresRestart:!0,default:void 0,description:"Command to run for tool discovery.",showInDialog:!1},callCommand:{type:"string",label:"Tool Call Command",category:"Tools",requiresRestart:!0,default:void 0,description:"Command to run for tool calls.",showInDialog:!1},useRipgrep:{type:"boolean",label:"Use Ripgrep",category:"Tools",requiresRestart:!1,default:!0,description:"Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance.",showInDialog:!1},useBuiltinRipgrep:{type:"boolean",label:"Use Builtin Ripgrep",category:"Tools",requiresRestart:!1,default:!0,description:'Use the bundled ripgrep binary. When set to false, the system-level "rg" command will be used instead. This setting is only effective when useRipgrep is true.',showInDialog:!1},truncateToolOutputThreshold:{type:"number",label:"Tool Output Truncation Threshold",category:"General",requiresRestart:!0,default:bi,description:"Truncate tool output if it is larger than this many characters. Set to -1 to disable.",showInDialog:!1},truncateToolOutputLines:{type:"number",label:"Tool Output Truncation Lines",category:"General",requiresRestart:!0,default:xi,description:"The number of lines to keep when truncating tool output.",showInDialog:!1},toolOutputBatchBudget:{type:"number",label:"Tool Output Batch Budget",category:"General",requiresRestart:!0,default:vi,description:"Per-message budget (characters) for the combined output of one batch of tool calls; the largest results are offloaded to disk when exceeded. Set to -1 to disable.",showInDialog:!1},computerUse:{type:"object",label:"Computer Use",category:"Tools",requiresRestart:!0,default:{},description:"Cross-platform desktop automation via the cua-driver native driver (trycua/cua). On first invocation a pinned, signed + notarized binary (~20MB) is downloaded into ~/.matilda/computer-use/ and the user is walked through macOS Accessibility / Screen Recording permissions if needed. Exposes cua-driver's full tool surface (click, type_text, scroll, drag, press_key, get_window_state, page, launch_app, and more).",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Enable Computer Use",category:"Tools",requiresRestart:!0,default:!0,description:"When enabled (default), the cua-driver computer_use__* tools are registered as deferred built-ins.",showInDialog:!0},maxImageDimension:{type:"number",label:"Max Screenshot Dimension",category:"Tools",requiresRestart:!0,default:-1,description:"Longest-edge pixel cap applied to cua-driver screenshots (via set_config's max_image_dimension). -1 (default) keeps cua-driver's built-in default (1568); 0 disables resizing (full resolution); a positive value caps the longest edge. Lower caps cut vision-token cost at the expense of fine detail. Overridable via the MATILDA_COMPUTER_USE_MAX_IMAGE_DIMENSION env var.",showInDialog:!1}}}}},policy:{type:"object",label:"Daemon Policy",category:"Daemon",requiresRestart:!0,default:{},description:"Daemon multi-client coordination policies. Tool-level allow/deny rules live under `permissions`; this section is for runtime mediation behavior between concurrent HTTP clients sharing one `matilda serve` daemon.",showInDialog:!1,properties:{permissionStrategy:{type:"enum",label:"Permission Mediation Policy",category:"Daemon",requiresRestart:!0,default:"first-responder",description:'How permission requests resolve when multiple clients are attached. `first-responder` (default) = any client decides, first wins. `designated` = only the prompt originator decides; falls back to first-responder if originator is anonymous. NOTE: client identity comes from self-declared X-Matilda-Client-Id with no proof-of-possession (pair-token identity is not implemented yet), so any client observing originatorClientId on SSE frames can register with the same id and impersonate the originator. `consensus` = N-of-M voters must agree. Default N=floor(M/2)+1, which means UNANIMITY for M=2 (quorum=2, both must agree) and supermajority for larger even M (M=4 \u2192 quorum=3; M=6 \u2192 quorum=4). For M=2 specifically, split votes resolve only via permissionTimeoutMs. `local-only` = only loopback clients can RESOLVE; remote clients can still ABORT a pending permission via the cancel sentinel ({outcome:"cancelled"}) \u2014 cancel stays cross-policy for consistency. Strict-cancel-too deployments need a dedicated loopback-bound daemon. Requires daemon restart \u2014 read once at boot.',showInDialog:!0,options:[{value:"first-responder",label:"First Responder"},{value:"designated",label:"Designated Originator"},{value:"consensus",label:"Consensus Quorum"},{value:"local-only",label:"Local Only"}]},consensusQuorum:{type:"number",label:"Consensus Quorum Override",category:"Daemon",requiresRestart:!0,default:void 0,description:"Optional fixed quorum size for consensus policy. Capped at M (count of registered voters at request issue time) to prevent unreachable quorum. Unset = floor(M/2)+1. Requires daemon restart \u2014 read once at boot.",showInDialog:!1,jsonSchemaOverride:{type:"integer",minimum:1,description:"Optional fixed quorum size for consensus policy. Capped at M (count of registered voters at request issue time) to prevent unreachable quorum. Unset = floor(M/2)+1. Requires daemon restart \u2014 read once at boot."}}}},mcp:{type:"object",label:"MCP",category:"MCP",requiresRestart:!0,default:{},description:"Settings for Model Context Protocol (MCP) servers.",showInDialog:!1,properties:{serverCommand:{type:"string",label:"MCP Server Command",category:"MCP",requiresRestart:!0,default:void 0,description:"Command to start an MCP server.",showInDialog:!1},allowed:{type:"array",label:"Allow MCP Servers",category:"MCP",requiresRestart:!0,default:void 0,description:"A list of MCP servers to allow.",showInDialog:!1,mergeStrategy:"concat"},excluded:{type:"array",label:"Exclude MCP Servers",category:"MCP",requiresRestart:!0,default:void 0,description:"A list of MCP servers to exclude.",showInDialog:!1,mergeStrategy:"concat"}}},security:{type:"object",label:"Security",category:"Security",requiresRestart:!0,default:{},description:"Security-related settings.",showInDialog:!1,properties:{folderTrust:{type:"object",label:"Folder Trust",category:"Security",requiresRestart:!1,default:{},description:"Settings for folder trust.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Folder Trust",category:"Security",requiresRestart:!0,default:!1,description:"Setting to track whether Folder trust is enabled.",showInDialog:!1}}},auth:{type:"object",label:"Authentication",category:"Security",requiresRestart:!0,default:{},description:"Authentication settings.",showInDialog:!1,properties:{selectedType:{type:"string",label:"Selected Auth Type",category:"Security",requiresRestart:!0,default:void 0,description:"The currently selected authentication type.",showInDialog:!1},enforcedType:{type:"string",label:"Enforced Auth Type",category:"Advanced",requiresRestart:!0,default:void 0,description:"The required auth type. If this does not match the selected auth type, the user will be prompted to re-authenticate.",showInDialog:!1},useExternal:{type:"boolean",label:"Use External Auth",category:"Security",requiresRestart:!0,default:void 0,description:"Whether to use an external authentication flow.",showInDialog:!1},apiKey:{type:"string",label:"API Key",category:"Security",requiresRestart:!0,default:void 0,description:"API key for OpenAI compatible authentication.",showInDialog:!1},baseUrl:{type:"string",label:"Base URL",category:"Security",requiresRestart:!0,default:void 0,description:"Base URL for OpenAI compatible API.",showInDialog:!1}}},allowedHttpHookUrls:{type:"array",label:"Allowed HTTP Hook URLs",category:"Security",requiresRestart:!1,default:[],description:"Whitelist of URL patterns for HTTP hooks. Supports * wildcard. If empty, all URLs are allowed (subject to SSRF protection).",showInDialog:!1,items:{type:"string",description:"URL pattern (supports * wildcard)"}}}},advanced:{type:"object",label:"Advanced",category:"Advanced",requiresRestart:!0,default:{},description:"Advanced settings for power users.",showInDialog:!1,properties:{autoConfigureMemory:{type:"boolean",label:"Auto Configure Max Old Space Size",category:"Advanced",requiresRestart:!0,default:!1,description:"Automatically configure Node.js memory limits",showInDialog:!1},dnsResolutionOrder:{type:"string",label:"DNS Resolution Order",category:"Advanced",requiresRestart:!0,default:void 0,description:"The DNS resolution order.",showInDialog:!1},excludedEnvVars:{type:"array",label:"Excluded Project Environment Variables",category:"Advanced",requiresRestart:!1,default:["DEBUG","DEBUG_MODE"],description:"Environment variables to exclude from project context.",showInDialog:!1,mergeStrategy:"union"},bugCommand:{type:"object",label:"Bug Command",category:"Advanced",requiresRestart:!1,default:void 0,description:"Configuration for the bug report command.",showInDialog:!1},runtimeOutputDir:{type:"string",label:"Runtime Output Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom directory for runtime output (temp files, debug logs, session data, todos, etc.). Config files remain at ~/.matilda (or MATILDA_HOME if set). Env var MATILDA_RUNTIME_DIR takes priority.",showInDialog:!1}}},agents:{type:"object",label:"Agents",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for multi-agent collaboration features (Arena, Team, Swarm).",showInDialog:!1,properties:{displayMode:{type:"enum",label:"Display Mode",category:"Advanced",requiresRestart:!1,default:void 0,description:'Display mode for multi-agent sessions. Currently only "in-process" is supported.',showInDialog:!1,options:[{value:"in-process",label:"In-process"}]},arena:{type:"object",label:"Arena",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Arena (multi-model competitive execution).",showInDialog:!1,properties:{worktreeBaseDir:{type:"string",label:"Worktree Base Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom base directory for Arena worktrees. Defaults to ~/.matilda/arena.",showInDialog:!1},preserveArtifacts:{type:"boolean",label:"Preserve Arena Artifacts",category:"Advanced",requiresRestart:!1,default:!1,description:"When enabled, Arena worktrees and session state files are preserved after the session ends or the main agent exits.",showInDialog:!0},maxRoundsPerAgent:{type:"number",label:"Max Rounds Per Agent",category:"Advanced",requiresRestart:!1,default:void 0,description:"Maximum number of rounds (turns) each agent can execute. No limit if unset.",showInDialog:!1},timeoutSeconds:{type:"number",label:"Timeout (seconds)",category:"Advanced",requiresRestart:!1,default:void 0,description:"Total timeout in seconds for the Arena session. No limit if unset.",showInDialog:!1}}},team:{type:"object",label:"Team",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Agent Team (role-based collaborative execution). Reserved for future use.",showInDialog:!1},swarm:{type:"object",label:"Swarm",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Agent Swarm (parallel sub-agent execution). Reserved for future use.",showInDialog:!1}}},disableAllHooks:{type:"boolean",label:"Disable All Hooks",category:"Advanced",requiresRestart:!0,default:!1,description:"Temporarily disable all hooks without deleting configurations. Default is false (hooks enabled).",showInDialog:!1},stopHookBlockingCap:{type:"number",label:"Stop Hook Blocking Cap",category:"Advanced",requiresRestart:!0,default:8,description:"Maximum consecutive blocking Stop/SubagentStop hook decisions before Matilda overrides the hook loop and ends the turn. Can be overridden by MATILDA_CODE_STOP_HOOK_BLOCK_CAP.",showInDialog:!1},hooks:{type:"object",label:"Hooks",category:"Advanced",requiresRestart:!1,default:{},description:"Hook event configurations for extending CLI behavior at various lifecycle points.",showInDialog:!1,properties:{UserPromptSubmit:{type:"array",label:"Before Agent Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before agent processing. Can modify prompts or inject context.",showInDialog:!1,mergeStrategy:"concat",items:Z},UserPromptExpansion:{type:"array",label:"Prompt Expansion Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a slash command expands into a prompt.",showInDialog:!1,mergeStrategy:"concat",items:Z},Stop:{type:"array",label:"After Agent Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute after agent processing. Can post-process responses or log interactions.",showInDialog:!1,mergeStrategy:"concat",items:Z},Notification:{type:"array",label:"Notification Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when notifications are sent.",showInDialog:!1,mergeStrategy:"concat",items:Z},PreToolUse:{type:"array",label:"Pre Tool Use Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before tool execution.",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolUse:{type:"array",label:"Post Tool Use Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute after successful tool execution.",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolUseFailure:{type:"array",label:"Post Tool Use Failure Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when tool execution fails. ",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolBatch:{type:"array",label:"Post Tool Batch Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute once after all tool calls in a batch resolve.",showInDialog:!1,mergeStrategy:"concat",items:Z},SessionStart:{type:"array",label:"Session Start Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a new session starts or resumes.",showInDialog:!1,mergeStrategy:"concat",items:Z},SessionEnd:{type:"array",label:"Session End Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a session ends.",showInDialog:!1,mergeStrategy:"concat",items:Z},PreCompact:{type:"array",label:"Pre Compact Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before conversation compaction.",showInDialog:!1,mergeStrategy:"concat",items:Z},SubagentStart:{type:"array",label:"Subagent Start Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a subagent (Task tool call) is started.",showInDialog:!1,mergeStrategy:"concat",items:Z},SubagentStop:{type:"array",label:"Subagent Stop Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute right before a subagent (Task tool call) concludes its response.",showInDialog:!1,mergeStrategy:"concat",items:Z},PermissionRequest:{type:"array",label:"Permission Request Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a permission dialog is displayed.",showInDialog:!1,mergeStrategy:"concat",items:Z}}},experimental:{type:"object",label:"Experimental",category:"Experimental",requiresRestart:!0,default:{},description:"Settings to enable experimental features.",showInDialog:!1,properties:{cron:{type:"boolean",label:"Enable Cron/Loop Tools",category:"Experimental",requiresRestart:!0,default:!0,description:"Enable in-session cron/loop tools. When enabled, the model can create recurring prompts using cron_create, cron_list, and cron_delete tools. Can be disabled via MATILDA_CODE_DISABLE_CRON=1 environment variable.",showInDialog:!0},agentTeam:{type:"boolean",label:"Enable Agent Team",category:"Experimental",requiresRestart:!0,default:!1,description:"Enable agent team collaboration tools (experimental). When enabled, the model can create agent teams and coordinate work using team_create, team_delete, send_message, task_create, task_update, and task_list tools. Can also be enabled via MATILDA_CODE_ENABLE_AGENT_TEAM=1 environment variable.",showInDialog:!0},emitToolUseSummaries:{type:"boolean",label:"Tool Use Summaries",category:"Experimental",requiresRestart:!1,default:!0,description:"Generate a short LLM-based label after each tool batch completes. In compact mode the label replaces the generic `Tool \xD7 N` header; in full mode it appears as a dim `\u25CF <label>` line below the tool group. Requires a fast model to be configured; runs in parallel with the next API call so latency is hidden. Currently affects interactive CLI rendering only \u2014 SDK / non-interactive emission of the `tool_use_summary` message is not yet wired (the message factory is exported for a follow-up PR). Can be overridden with MATILDA_CODE_EMIT_TOOL_USE_SUMMARIES=0 or =1.",showInDialog:!0}}},worktree:{type:"object",label:"Worktree",category:"Advanced",requiresRestart:!1,default:{},description:'Configuration for general-purpose git worktrees created by the CLI (the `enter_worktree` tool, the `agent isolation: "worktree"` parameter, and the startup `--worktree` flag). Does NOT affect Agent Arena worktrees \u2014 see `agents.arena.worktreeBaseDir` for those.',showInDialog:!1,properties:{symlinkDirectories:{type:"array",label:"Symlink Directories Into Worktrees",category:"Advanced",requiresRestart:!1,default:void 0,description:"Directories under the main repository to symlink into every general-purpose worktree on creation. Useful for sharing large opt-in dirs like `node_modules` so the model can run tests / builds inside the worktree without a fresh install. Paths must be relative to the repo root; absolute paths, anything containing `..`, and any path inside `.git` or `.matilda` (the CLI-managed metadata tree, which contains the worktrees directory itself) are rejected. Missing source dirs and existing destination paths are silently skipped (no overwrite, no failure).",showInDialog:!1}}}};function dt(){let t=ls;return t.general?.properties?.language&&(t.general.properties.language.options=Ai()),ls}b();function zl(t,e){let r=/\$(?:(\w+)|{([^}]+)})/g;return t.replace(r,(n,i,u)=>{let a=i||u;return e&&typeof e[a]=="string"?e[a]:process&&process.env&&typeof process.env[a]=="string"?process.env[a]:n})}function ze(t,e){return qr(t,new WeakSet,e)}function qr(t,e,r){if(t==null||typeof t=="boolean"||typeof t=="number")return t;if(typeof t=="string")return zl(t,r);if(Array.isArray(t)){if(e.has(t))return[...t];e.add(t);let n=t.map(i=>qr(i,e,r));return e.delete(t),n}if(typeof t=="object"){if(e.has(t))return{...t};e.add(t);let n={...t};for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&(n[i]=qr(n[i],e,r));return e.delete(t),n}return t}b();import*as le from"node:fs";function fs(t,e=""){let r={};for(let n in t){let i=e?`${e}.${n}`:n,u=t[n];r[i]={...u,key:i},u.properties&&(r={...r,...fs(u.properties,i)})}return r}var cs;function Ut(){return cs??(cs=fs(dt()))}function ps(t){return Ut()[t]}function Xl(t){return Ut()[t]?.requiresRestart??!1}function Hr(t){return Ut()[t]?.default}function Xe(t,e){let[r,...n]=e;if(!r||!(r in t))return;let i=t[r];if(n.length===0)return i;if(i&&typeof i=="object"&&i!==null)return Xe(i,n)}function ke(t,e){return Xe(t,e.split("."))}function ds(t,e,r){let n=ps(t);if(!n)return;let i=t.split("."),u=Xe(e,i);return u!==void 0||(u=Xe(r,i),u!==void 0)?u:n.default}var hs=["tools.approvalMode","general.language","general.outputLanguage","ui.theme","general.vimMode","tools.shell.enableInteractiveShell","general.preferredEditor","ide.enabled","ui.showLineNumbers","ui.hideTips","general.terminalBell","ui.enableWelcomeBack","general.gitCoAuthor.commit","general.gitCoAuthor.pr","context.fileFiltering.respectGitIgnore","context.fileFiltering.respectMatildaIgnore","general.disableAutoUpdate","privacy.usageStatisticsEnabled"];function Mm(){return Object.values(Ut()).filter(e=>e.showInDialog===!0).map(e=>e.key).sort((e,r)=>{let n=hs.indexOf(e),i=hs.indexOf(r);return n!==-1&&i!==-1?n-i:n!==-1?-1:i!==-1?1:0})}function ht(t,e){let r=t.split(".");return Xe(e,r)!==void 0}function ms(t){for(let e of t)if(e==="__proto__"||e==="constructor"||e==="prototype")return!0;return!1}function gs(t,e,r){let n=e.split(".");if(ms(n))return;let i=n.pop();if(!i)return;let u=t;for(let a of n)(!u[a]||typeof u[a]!="object")&&(u[a]={}),u=u[a];u[i]=r}function $(t,e,r){let n=e.split(".");if(ms(n))return;let i=n.pop();if(!i)return;let u=t;for(let a of n){u[a]===void 0&&(u[a]={});let f=u[a];if(typeof f=="object"&&f!==null)u=f;else return}u[i]=r}function Wr(t,e){let r=e.split("."),n=r.pop();if(!n)return;let i=t;for(let u of r){let a=i[u];if(typeof a!="object"||a===null)return;i=a}delete i[n]}function Nm(t,e,r){let n=JSON.parse(JSON.stringify(r));return gs(n,t,e),n}function Om(t,e,r){let n=structuredClone(r);return gs(n,t,e),n}function Bm(t){return Array.from(t).filter(e=>Xl(e))}function _m(t,e,r,n){t.forEach(i=>{let u=i.split("."),a=Xe(e,u),f=ht(i,r.forScope(n).settings);if(a===void 0){f&&r.setValue(n,i,void 0);return}let p=a===Hr(i);(f||!p)&&r.setValue(n,i,a)})}function Um(t,e,r,n,i){let u=ps(t),a;i&&ht(t,i)?a=ds(t,i,{}):ht(t,e)?a=ds(t,e,{}):a=Hr(t);let f=String(a);if(t==="general.outputLanguage"&&Mr(a))f=kr("Auto (detect from system)");else if(u?.type==="enum"&&u.options){let g=u.options?.find(d=>d.value===a);g?.label?f=kr(g.label)||g.label:f=`${a}`}let p=Hr(t),m=a!==p,h=n.has(t);return ht(t,e)||h?`${f}*`:m||h?`${f}*`:f}function jm(t,e){return!ht(t,e)}function ys(t){try{if(le.existsSync(t)){let e=`${t}.orig`;return le.copyFileSync(t,e),!0}}catch{}return!1}function Ss(t){try{let e=`${t}.orig`;if(le.existsSync(e))return le.copyFileSync(e,t),le.unlinkSync(e),!0}catch(e){console.error(`[settingsUtils] restoreSettingsFromBackup(${t}) failed:`,e)}return!1}function bs(t){try{let e=`${t}.orig`;le.existsSync(e)&&le.unlinkSync(e)}catch{}}b();function zr(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Xr(t,e,r,n=[]){for(let i of Object.keys(e)){if(i==="__proto__"||i==="constructor"||i==="prototype")continue;let u=[...n,i],a=e[i],f=t[i],p=r(u);if(p==="shallow_merge"&&f&&a){let m=typeof f=="object"&&f!==null?f:{},h=typeof a=="object"&&a!==null?a:{};t[i]={...m,...h};continue}if(Array.isArray(f)){let m=Array.isArray(a)?a:[a];if(p==="concat"){t[i]=f.concat(m);continue}if(p==="union"){t[i]=[...new Set(f.concat(m))];continue}}zr(f)&&zr(a)?Xr(f,a,r,u):zr(a)?(t[i]={},Xr(t[i],a,r,u)):t[i]=a}return t}function Jr(t,...e){let r={};for(let n of e)n&&Xr(r,n,t);return r}b();var Ke=We(Ao(),1);import*as Vt from"node:fs";b();import*as X from"node:fs";function Cn(t,e,r={}){let{backupSuffix:n=".orig",encoding:i="utf-8"}=r,u=`${t}.tmp`,a=`${t}${n}`;try{X.existsSync(u)&&X.unlinkSync(u)}catch{}try{if(X.writeFileSync(u,e,{encoding:i,flush:!0}),X.existsSync(t)){if(X.statSync(t).isDirectory()){try{X.unlinkSync(u)}catch{}throw new Error(`Cannot write to '${t}' because it is a directory`)}try{X.renameSync(t,a)}catch(p){try{X.unlinkSync(u)}catch{}throw new Error(`Failed to backup existing file: ${p instanceof Error?p.message:String(p)}`)}}try{X.renameSync(u,t)}catch(f){let p,m=!1;if(X.existsSync(a)){m=!0;try{X.renameSync(a,t)}catch(g){p=g instanceof Error?g.message:String(g)}}let h=f instanceof Error?f.message:String(f);throw p?new Error(`Failed to write file: ${h}. Automatic restore failed: ${p}. Manual recovery may be required using backup file '${a}'.`):m?new Error(`Failed to write file: ${h}. Target was automatically restored from backup '${a}'.`):new Error(`Failed to write file: ${h}. No backup file was available for restoration.`)}}catch(f){try{X.existsSync(u)&&X.unlinkSync(u)}catch{}throw f}}function An(t,e,r=!1,n=[]){if(!Vt.existsSync(t)){let p=(0,Ke.stringify)(e,null,2);return Cn(t,p),!0}let i=Vt.readFileSync(t,"utf-8"),u;try{u=(0,Ke.parse)(i)}catch(p){return Ce("Error parsing settings file."),Ce(`Settings file may be corrupted: ${p instanceof Error?p.message:String(p)}`),!1}let a=Jt(u,e,r,n),f=(0,Ke.stringify)(a,null,2);try{(0,Ke.parse)(f)}catch(p){return Ce("Error: Refusing to write settings file \u2014 the result would not be valid JSON."),Ce(p instanceof Error?p.message:String(p)),!1}return Cn(t,f),!0}function Jt(t,e,r=!1,n=[],i=[]){let u=t;if(r){let a=Object.keys(u).filter(f=>!(f in e));for(let f of a)delete u[f]}for(let a of Object.getOwnPropertyNames(e)){if(a==="__proto__"||a==="constructor"||a==="prototype")continue;let f=e[a],p=[...i,a],m=typeof f=="object"&&f!==null&&!Array.isArray(f)&&Object.keys(f).length>0;if(Cd(p,n)){u[a]=m?Jt({},f):f;continue}m&&(typeof u[a]!="object"||u[a]===null||Array.isArray(u[a]))?u[a]=Jt({},f,r,n,p):m&&typeof u[a]=="object"&&u[a]!==null&&!Array.isArray(u[a])?u[a]=Jt(u[a],f,r,n,p):u[a]=f}return u}function Cd(t,e){return t.length===e.length&&t.every((r,n)=>r===e[n])}b();b();var xt=Ee("SETTINGS_MIGRATION");function Ad(t){return t==="SystemDefaults"?"system default":t.toLowerCase()}var vt=class{constructor(e,r){this.migrations=e;this.scope=r}migrate(e){xt.debug("MigrationScheduler: Starting migration chain");let r=e,n=[],i=[];for(let a of this.migrations)try{if(a.shouldMigrate(r)){xt.debug(`MigrationScheduler: Executing migration ${a.fromVersion} \u2192 ${a.toVersion}`);let f=Ad(this.scope),p=a.migrate(r,f);r=p.settings,i.push(...p.warnings),n.push({fromVersion:a.fromVersion,toVersion:a.toVersion}),xt.debug(`MigrationScheduler: Migration ${a.fromVersion} \u2192 ${a.toVersion} completed successfully`)}}catch(f){throw xt.error(`MigrationScheduler: Migration ${a.fromVersion} \u2192 ${a.toVersion} failed:`,f),f}let u=r.$version??1;return xt.debug(`MigrationScheduler: Migration chain complete. Final version: ${u}, Executed: ${n.length} migrations`),{settings:r,finalVersion:u,executedMigrations:n,warnings:i}}};b();b();var Ye={accessibility:"ui.accessibility",allowedTools:"tools.allowed",allowMCPServers:"mcp.allowed",autoAccept:"tools.autoAccept",autoConfigureMaxOldSpaceSize:"advanced.autoConfigureMemory",bugCommand:"advanced.bugCommand",chatCompression:"model.chatCompression",checkpointing:"general.checkpointing",coreTools:"tools.core",contextFileName:"context.fileName",customThemes:"ui.customThemes",customWittyPhrases:"ui.customWittyPhrases",debugKeystrokeLogging:"general.debugKeystrokeLogging",dnsResolutionOrder:"advanced.dnsResolutionOrder",enforcedAuthType:"security.auth.enforcedType",excludeTools:"tools.exclude",excludeMCPServers:"mcp.excluded",excludedProjectEnvVars:"advanced.excludedEnvVars",extensions:"extensions",fileFiltering:"context.fileFiltering",folderTrustFeature:"security.folderTrust.featureEnabled",folderTrust:"security.folderTrust.enabled",hasSeenIdeIntegrationNudge:"ide.hasSeenNudge",hideWindowTitle:"ui.hideWindowTitle",showStatusInTitle:"ui.showStatusInTitle",hideTips:"ui.hideTips",showLineNumbers:"ui.showLineNumbers",showCitations:"ui.showCitations",ideMode:"ide.enabled",includeDirectories:"context.includeDirectories",loadMemoryFromIncludeDirectories:"context.loadFromIncludeDirectories",maxSessionTurns:"model.maxSessionTurns",mcpServers:"mcpServers",mcpServerCommand:"mcp.serverCommand",memoryImportFormat:"context.importFormat",model:"model.name",preferredEditor:"general.preferredEditor",sandbox:"tools.sandbox",selectedAuthType:"security.auth.selectedType",shouldUseNodePtyShell:"tools.shell.enableInteractiveShell",shellPager:"tools.shell.pager",shellShowColor:"tools.shell.showColor",skipNextSpeakerCheck:"model.skipNextSpeakerCheck",telemetry:"telemetry",theme:"ui.theme",toolDiscoveryCommand:"tools.discoveryCommand",toolCallCommand:"tools.callCommand",usageStatisticsEnabled:"privacy.usageStatisticsEnabled",useExternalAuth:"security.auth.useExternal",useRipgrep:"tools.useRipgrep",vimMode:"general.vimMode",enableWelcomeBack:"ui.enableWelcomeBack",approvalMode:"tools.approvalMode",sessionTokenLimit:"model.sessionTokenLimit",contentGenerator:"model.generationConfig",skipLoopDetection:"model.skipLoopDetection",skipStartupContext:"model.skipStartupContext",enableOpenAILogging:"model.enableOpenAILogging",tavilyApiKey:"advanced.tavilyApiKey"},Kt=new Set(["ui","tools","mcp","advanced","model","general","context","security","ide","privacy","telemetry","extensions"]),Yt={disableAutoUpdate:"general.disableAutoUpdate",disableUpdateNag:"general.disableUpdateNag",disableLoadingPhrases:"ui.accessibility.disableLoadingPhrases",disableFuzzySearch:"context.fileFiltering.disableFuzzySearch",disableCacheControl:"model.generationConfig.disableCacheControl"},wo=new Set(["disableAutoUpdate","disableUpdateNag"]),ko=["theme","model","autoAccept","hideTips","vimMode","checkpointing","accessibility","allowedTools","allowMCPServers","autoConfigureMaxOldSpaceSize","bugCommand","chatCompression","coreTools","contextFileName","customThemes","customWittyPhrases","debugKeystrokeLogging","dnsResolutionOrder","enforcedAuthType","excludeTools","excludeMCPServers","excludedProjectEnvVars","fileFiltering","folderTrustFeature","folderTrust","hasSeenIdeIntegrationNudge","hideWindowTitle","showStatusInTitle","showLineNumbers","showCitations","ideMode","includeDirectories","loadMemoryFromIncludeDirectories","maxSessionTurns","mcpServerCommand","memoryImportFormat","preferredEditor","sandbox","selectedAuthType","shouldUseNodePtyShell","shellPager","shellShowColor","skipNextSpeakerCheck","toolDiscoveryCommand","toolCallCommand","usageStatisticsEnabled","useExternalAuth","useRipgrep","enableWelcomeBack","approvalMode","sessionTokenLimit","contentGenerator","skipLoopDetection","skipStartupContext","enableOpenAILogging","tavilyApiKey","disableAutoUpdate","disableUpdateNag","disableLoadingPhrases","disableFuzzySearch","disableCacheControl"];var Qt=class{fromVersion=1;toVersion=2;shouldMigrate(e){if(typeof e!="object"||e===null)return!1;let r=e,n=r.$version;return typeof n=="number"&&n>=2?!1:ko.some(i=>{if(!(i in r))return!1;let u=r[i];return!(typeof u=="object"&&u!==null&&!Array.isArray(u))})}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=e,i={},u=new Set,a=[];for(let[f,p]of Object.entries(Ye))if(f in n){let m=n[f];if(Kt.has(f)&&typeof m=="object"&&m!==null&&!Array.isArray(m)){i[f]=m,u.add(f);continue}if(typeof m=="object"&&m!==null&&!Array.isArray(m)&&p.startsWith(f+"."))for(let[h,g]of Object.entries(m))$(i,`${p}.${h}`,g);else $(i,p,m);u.add(f)}for(let[f,p]of Object.entries(Yt))if(f in n){let m=n[f];wo.has(f)?$(i,p,m===!0):typeof m=="boolean"&&$(i,p,m),u.add(f)}"mcpServers"in n&&(i.mcpServers=n.mcpServers,u.add("mcpServers"));for(let f of Object.keys(n))if(!u.has(f))if(Array.from(u).some(m=>{let h=Ye[m]||Yt[m];return h?h.startsWith(f+"."):!1})){let m=n[f];if(typeof m=="object"&&m!==null&&!Array.isArray(m))for(let[h,g]of Object.entries(m)){let d=`${f}.${h}`;Array.from(u).some(o=>(Ye[o]||Yt[o])===d)||$(i,d,g)}else i[f]=n[f]}else i[f]=n[f];return i.$version=2,{settings:i,warnings:a}}},wn=new Qt;b();var wd={"general.disableAutoUpdate":"general.enableAutoUpdate","general.disableUpdateNag":"general.enableAutoUpdate","ui.accessibility.disableLoadingPhrases":"ui.accessibility.enableLoadingPhrases","context.fileFiltering.disableFuzzySearch":"context.fileFiltering.enableFuzzySearch","model.generationConfig.disableCacheControl":"model.generationConfig.enableCacheControl"},kd={"general.enableAutoUpdate":["general.disableAutoUpdate","general.disableUpdateNag"]};function To(t){if(t===void 0)return{isPresent:!1,isValid:!1};if(typeof t=="boolean")return{isPresent:!0,isValid:!0,booleanValue:t};if(typeof t=="string"){let e=t.trim().toLowerCase();if(e==="true")return{isPresent:!0,isValid:!0,booleanValue:!0};if(e==="false")return{isPresent:!0,isValid:!0,booleanValue:!1}}return{isPresent:!0,isValid:!1}}var Zt=class{fromVersion=2;toVersion=3;shouldMigrate(e){return typeof e!="object"||e===null?!1:e.$version===2}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=structuredClone(e),i=new Set,u=[];for(let[a,f]of Object.entries(kd)){let p=!1,m=!1;for(let h of f){let g=ke(n,h),d=To(g);d.isPresent&&(Wr(n,h),i.add(h),d.isValid?(m=!0,d.booleanValue===!0&&(p=!0)):u.push(`Removed deprecated setting '${h}' from ${r} settings because the value is invalid. Expected boolean.`))}m&&$(n,a,!p)}for(let[a,f]of Object.entries(wd)){if(i.has(a))continue;let p=ke(n,a),m=To(p);m.isPresent&&(Wr(n,a),m.isValid?$(n,f,!m.booleanValue):u.push(`Removed deprecated setting '${a}' from ${r} settings because the value is invalid. Expected boolean or string "true"/"false".`))}return n.$version=3,{settings:n,warnings:u}}},kn=new Zt;b();var be="general.gitCoAuthor",er=class{fromVersion=3;toVersion=4;shouldMigrate(e){if(typeof e!="object"||e===null)return!1;let r=e;if(r.$version===3)return!0;if(r.$version===void 0){let n=ke(r,be);return!(n===void 0||typeof n=="object"&&n!==null&&!Array.isArray(n))}return!1}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=structuredClone(e),i=[],u=ke(n,be);if(typeof u=="boolean")$(n,be,{commit:u,pr:u});else if(typeof u=="string"){let a=u.trim().toLowerCase(),f=["false","no","off","0","disabled",""];["true","yes","on","1","enabled"].includes(a)?$(n,be,{commit:!0,pr:!0}):f.includes(a)?$(n,be,{commit:!1,pr:!1}):($(n,be,{commit:!1,pr:!1}),i.push(`Reset '${be}' in ${r} settings to {commit: false, pr: false} because the stored string '${u}' was not a recognized boolean form.`))}else u!==void 0&&(typeof u!="object"||u===null||Array.isArray(u))&&($(n,be,{commit:!1,pr:!1}),i.push(`Reset '${be}' in ${r} settings to {commit: false, pr: false} because the stored value was not a boolean or object.`));return n.$version=4,{settings:n,warnings:i}}},Tn=new er;b();var Id="Matilda",Io=Symbol("generatedMaincloudProfileRepairCandidate"),Fd=new Set(["http://localhost:18002/v1","http://10.22.0.13:18390/v1"]),Rd="OPENAI_API_KEY",Ld=1048576;function ie(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Pd(t){let e=ie(t.modelProviders)?t.modelProviders.openai:void 0;if(!Array.isArray(e)||e.length!==1)return null;let[r]=e;if(!ie(r))return null;let n=r.id,i=r.envKey,u=r.baseUrl,a=ie(r.generationConfig)?r.generationConfig.contextWindowSize:void 0,f=ie(t.model)?t.model.name:void 0,p=t.fastModel,m=ie(t.security)&&ie(t.security.auth)?t.security.auth.selectedType:void 0;return typeof n!="string"||i!==Rd||typeof u!="string"||!Fd.has(u)||a!==Ld||f!==n||p!==n||m!=="openai"?null:n}function Dt(t){return ie(t)?Pd(t)!==null:!1}function Fo(t){Object.defineProperty(t,Io,{value:!0,enumerable:!1,configurable:!0})}function Md(t){return!!(t&&typeof t=="object"&&t[Io]===!0)}function Nd(t){let e=structuredClone(t),r=Di(Ot,{baseUrl:Ei(Ot),apiKey:"",modelIds:Ci(Ot)}),n=r.modelSelection?.modelId,i=r.modelProviders?.find(f=>f.authType==="openai");if(n&&($(e,"model.name",n),$(e,"fastModel",n)),$(e,"ui.modelDisplayName",Id),i){let f=ie(e.modelProviders)?structuredClone(e.modelProviders):{};f.openai=structuredClone(i.models),e.modelProviders=f}$(e,"security.auth.selectedType","openai");let u=ie(e.security)?structuredClone(e.security):{},a=ie(u.auth)?structuredClone(u.auth):{};delete a.apiKey,delete a.baseUrl,u.auth=a,e.security=u;for(let[f,p]of Object.entries(r.providerState??{}))$(e,f,structuredClone(p));return e.$version=5,e}function Od(t){return{...structuredClone(t),$version:5}}var tr=class{fromVersion=4;toVersion=5;shouldMigrate(e){if(!ie(e))return!1;let r=e.$version;return r===4||r===void 0}migrate(e,r){if(!ie(e))throw new Error("Settings must be an object");return Md(e)&&Dt(e)?{settings:Nd(e),warnings:[`Updated ${r} settings from the generated internal maincloud profile to the current managed Matilda profile.`]}:{settings:Od(e),warnings:[]}}},In=new tr;var Ro=[wn,kn,Tn,In];function Lo(t,e){return new vt([...Ro],e).migrate(t)}function Po(t){if(typeof t!="object"||t===null)return!1;let r=t.$version,n=Ro.some(i=>i.shouldMigrate(t));return typeof r=="number"&&r>=je?!1:n}var Y=Ee("SETTINGS");function _o(t){let e,r=dt();for(let n of t){if(!r||!r[n])return;e=r[n],r=e.properties}return e?.mergeStrategy}var d0=De;function Uo(){return Q.getGlobalSettingsPath()}function h0(){return R.dirname(Uo())}var jo=["DEBUG","DEBUG_MODE"],Ln="MATILDA_CODE_SETTINGS_CORRUPTED_PATH",Pn="MATILDA_CODE_SETTINGS_WAS_RECOVERED",Qe=["MATILDA_HOME","MATILDA_RUNTIME_DIR","MATILDA_CODE_MCP_APPROVALS_PATH",Ln,Pn],Fn=new Set([...Qe,"MATILDA_SERVER_TOKEN","MATILDA_CLI_ENTRY","NODE_OPTIONS","NODE_PATH","NODE_TLS_REJECT_UNAUTHORIZED","LD_PRELOAD","LD_AUDIT","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","BASH_ENV","ENV","PATH","HOME","TMPDIR","TMP","TEMP"]),rr=new Set,nr=new Set,Re=new Map,Rn=!1,je=5,Ge="$version";function Go(){return B.env.MATILDA_CODE_SYSTEM_SETTINGS_PATH?B.env.MATILDA_CODE_SYSTEM_SETTINGS_PATH:Mo()==="darwin"?"/Library/Application Support/MatildaCode/settings.json":Mo()==="win32"?"C:\\ProgramData\\matilda-code\\settings.json":"/etc/matilda-code/settings.json"}function Bd(){return B.env.MATILDA_CODE_SYSTEM_DEFAULTS_PATH?B.env.MATILDA_CODE_SYSTEM_DEFAULTS_PATH:R.join(R.dirname(Go()),"system-defaults.json")}var us=(i=>(i.User="User",i.Workspace="Workspace",i.System="System",i.SystemDefaults="SystemDefaults",i))(us||{});function _d(t,e){let r=t[Ge];if(typeof r!="number"||r<je)return[];let n=[],i=new Set;for(let[a,f]of Object.entries(Ye)){if(a===f||!(a in t))continue;let p=t[a];Kt.has(a)&&typeof p=="object"&&p!==null&&!Array.isArray(p)||(i.add(a),n.push(`Warning: Legacy setting '${a}' will be ignored in ${e}. Please use '${f}' instead.`))}let u=new Set(Object.keys(dt()));for(let a of Object.keys(t))a!==Ge&&(i.has(a)||u.has(a)||Y.warn(`Unknown setting '${a}' will be ignored in ${e}.`));return n}function $o(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ud(t){return $o(t)?Object.values(t).some(e=>Array.isArray(e)&&e.length>0):!1}function jd(t){if(!t.isTrusted)return[];let e=t.user.originalSettings,r=t.workspace.originalSettings;if(!ct(e)||!ct(r))return[];let n=e.modelProviders,i=r.modelProviders;return!($o(i)&&Object.keys(i).length===0)||!Ud(n)?[]:[`Warning: '${t.workspace.path}' defines an empty 'modelProviders' object. This has no effect with current merge behavior, but may indicate a configuration error. If REPLACE semantics are introduced for 'modelProviders' in the future, this would override user-level model providers in '${t.user.path}'.`]}function f0(t){let e=new Set;for(let r of t.migrationWarnings)e.add(`Warning: ${r}`);for(let r of["User","Workspace"]){let n=t.forScope(r);if(n.rawJson===void 0)continue;let i=n.originalSettings;for(let u of _d(i,n.path))e.add(u)}for(let r of jd(t))e.add(r);return[...e]}function No(t,e){let r=t.mcpServers;if(!r||Object.keys(r).length===0)return t;let n={};for(let[i,u]of Object.entries(r))n[i]={...u,scope:e};return{...t,mcpServers:n}}function qo(t,e,r,n,i){let u=i?No(n,"workspace"):{};return Jr(_o,{},e,r,u,No(t,"system"))}var ir=class{constructor(e,r,n,i,u,a,f=[],p=void 0,m=!1){this.system=e,this.systemDefaults=r,this.user=n,this.workspace=i,this.isTrusted=u,this.migratedInMemorScopes=a,this.migrationWarnings=f,this.corruptedPath=p,this.wasRecovered=m,this._merged=this.computeMergedSettings()}system;systemDefaults;user;workspace;isTrusted;migratedInMemorScopes;migrationWarnings;corruptedPath;wasRecovered;corruptionDialogDismissed=!1;_merged;get merged(){return this._merged}computeMergedSettings(){return qo(this.system.settings,this.systemDefaults.settings,this.user.settings,this.workspace.settings,this.isTrusted)}forScope(e){switch(e){case"User":return this.user;case"Workspace":return this.workspace;case"System":return this.system;case"SystemDefaults":return this.systemDefaults;default:throw new Error(`Invalid scope: ${e}`)}}setValue(e,r,n){r==="model.name"&&typeof n=="string"&&(n=fi(n));let i=this.forScope(e);$(i.settings,r,n),$(i.originalSettings,r,n),this._merged=this.computeMergedSettings();let u=r==="mcpServers"?r.split("."):[];Jd(i,Xd(r,n),u)}recomputeMerged(){this._merged=this.computeMergedSettings()}reloadScopeFromDisk(e){let r=this.forScope(e);try{if(!_.existsSync(r.path)){r.settings={},r.originalSettings={},r.rawJson=void 0,this._merged=this.computeMergedSettings();return}let n=_.readFileSync(r.path,"utf-8"),i=JSON.parse((0,Et.default)(n));if(i&&typeof i=="object"&&!Array.isArray(i)){let u=ze(i,Ho());r.settings=u,r.originalSettings=structuredClone(i),r.rawJson=n}}catch(n){Y.warn(`reloadScopeFromDisk(${e}): ${oe(n)}`)}this._merged=this.computeMergedSettings()}getUserHooks(){return this.user.settings.hooks}getProjectHooks(){if(this.isTrusted)return this.workspace.settings.hooks}};function p0(){let t={path:"",settings:{},originalSettings:{},rawJson:"{}"};return new ir(t,t,t,t,!1,new Set,[],void 0,!1)}function Mn(){let t=sr(),e=Q.getGlobalMatildaDir(),r=new Set([R.normalize(R.join(t,".env")),R.normalize(R.join(e,".env"))]),n=R.normalize(R.join(t,De,".env"));return r.add(n),r}var Oo=!1;function Gd(){if(Oo||(Oo=!0,B.env.MATILDA_HOME&&B.env.MATILDA_RUNTIME_DIR))return;let t=B.env.MATILDA_HOME,e=Q.getGlobalMatildaDir(),r=[R.join(e,".env")];t||r.push(R.join(R.dirname(e),".env"));for(let i of r)Bo(i);let n=B.env.MATILDA_HOME;if(n&&n!==t){let i=Q.getGlobalMatildaDir();i!==e&&Bo(R.join(i,".env"))}}function Bo(t){if(_.existsSync(t))try{let e=Ze.parse(_.readFileSync(t,"utf-8"));for(let r of Qe)e[r]&&!Object.hasOwn(B.env,r)&&(B.env[r]=e[r])}catch{}}function Ho(){let t=Q.getGlobalMatildaDir(),e=[R.join(t,".env")];B.env.MATILDA_HOME||e.push(R.join(R.dirname(t),".env"));let r={};for(let n of e)if(_.existsSync(n))try{let i=Ze.parse(_.readFileSync(n,"utf-8"));for(let u in i)Object.hasOwn(i,u)&&!Object.hasOwn(B.env,u)&&(r[u]??=i[u])}catch(i){Y.warn(`Failed to read home .env candidate ${n}: ${oe(i)}`)}return r}function $d(t){if(!B.env.MATILDA_HOME)return null;let e=Q.getGlobalMatildaDir(),r=B.env.MATILDA_HOME;delete B.env.MATILDA_HOME;let n;try{n=Q.getGlobalMatildaDir()}finally{B.env.MATILDA_HOME=r}if(R.resolve(e)===R.resolve(n)||_.existsSync(t))return null;let i=R.join(n,"settings.json");return _.existsSync(i)?`MATILDA_HOME points to "${e}" but no settings.json was found there. Existing config remains at "${n}" \u2014 OAuth tokens, settings, memory, extensions, and skills are not auto-migrated. Copy them manually if you want them to apply at the new location.`:null}function Wo(t){return R.resolve(t)===R.resolve(R.join(sr(),De,"settings.json"))}function qd(t){let{filePath:e,scope:r,settingsObject:n}=t;if(r!=="User"||!Wo(e)||!Dt(n))return null;let i=R.join(R.dirname(e),"settings.json.pre-maincloud.bak");if(!_.existsSync(i))return null;try{let u=_.readFileSync(i,"utf-8"),a=JSON.parse((0,Et.default)(u));return typeof a!="object"||a===null||Array.isArray(a)?null:(_.writeFileSync(e,u,"utf-8"),Y.warn(`Restored ${e} from ${i} before applying managed Matilda settings.`),{settingsObject:a,content:u})}catch(u){return Y.warn(`Failed to restore ${i}: ${oe(u)}`),null}}function Hd(t){let{filePath:e,scope:r,settingsObject:n}=t;return r==="User"&&Wo(e)&&Dt(n)}function zo(t,e,r=Mn()){let n=sr(),i=$r(t).isTrusted,u=Q.getGlobalMatildaDir(),a=R.normalize(R.join(n,De)),f=R.normalize(u)!==a,p=d=>i!==!1||r.has(R.normalize(d)),m=()=>{let d=[R.join(u,".env")];f&&d.push(R.join(a,".env")),d.push(R.join(n,".env"));for(let s of d)if(_.existsSync(s)&&p(s))return s;return null},h=R.resolve(e),g=!1;for(;;){if(h===n){g=!0;let s=m();if(s)return s}else{let s=R.join(h,De,".env");if(_.existsSync(s)&&p(s))return s;let o=R.join(h,".env");if(_.existsSync(o)&&p(o))return o}let d=R.dirname(h);if(d===h||!d)return g?null:m();h=d}}function Xo(t){if(t&&_.existsSync(t)){let e=_.readFileSync(t),r=Ze.parse(e);r.GOOGLE_CLOUD_PROJECT?B.env.GOOGLE_CLOUD_PROJECT=r.GOOGLE_CLOUD_PROJECT:B.env.GOOGLE_CLOUD_PROJECT="cloudshell-gca"}else B.env.GOOGLE_CLOUD_PROJECT="cloudshell-gca"}function Wd(t){let e=Mn(),r=zo(t,B.cwd(),e);if(B.env.CLOUD_SHELL==="true"&&Xo(r),r)try{let n=_.readFileSync(r,"utf-8"),i=Ze.parse(n),u=t?.advanced?.excludedEnvVars||jo,a=R.normalize(r),f=e.has(a),p=f||R.basename(R.dirname(a))===De;for(let m in i)if(Object.hasOwn(i,m)){if(!f&&Qe.includes(m)||!p&&u.includes(m))continue;Object.hasOwn(B.env,m)||(B.env[m]=i[m],rr.add(m)),Rn||Re.set(m,i[m])}}catch{}if(t.env)for(let[n,i]of Object.entries(t.env))Qe.includes(n)||(!Object.hasOwn(B.env,n)&&typeof i=="string"&&(B.env[n]=i,nr.add(n)),!Rn&&typeof i=="string"&&!Re.has(n)&&Re.set(n,i));Rn=!0}function m0(t,e){let r=Mn(),n=zo(t,e,r);B.env.CLOUD_SHELL==="true"&&Xo(n);let i=!1,u=new Map,a=new Map;if(n)try{let h=_.readFileSync(n,"utf-8"),g=Ze.parse(h),d=t?.advanced?.excludedEnvVars||jo,s=R.normalize(n),o=r.has(s),l=o||R.basename(R.dirname(s))===De;for(let c in g)Object.hasOwn(g,c)&&(Fn.has(c)||!o&&Qe.includes(c)||!l&&d.includes(c)||u.set(c,g[c]))}catch{i=!0}if(t.env)for(let[h,g]of Object.entries(t.env))Fn.has(h)||Qe.includes(h)||typeof g=="string"&&(u.has(h)||i&&Re.has(h)||a.set(h,g));let f=new Set([...u.keys(),...a.keys()]),p=[],m=[];if(!i){let h=new Set([...Re.keys(),...rr,...nr]);for(let g of h)!f.has(g)&&!Fn.has(g)&&(delete B.env[g],m.push(g))}for(let[h,g]of u)B.env[h]!==g&&p.push(h),B.env[h]=g;for(let[h,g]of a)B.env[h]!==g&&p.push(h),B.env[h]=g;if(!i){rr.clear();for(let h of u.keys())rr.add(h);Re.clear();for(let[h,g]of u)Re.set(h,g);for(let[h,g]of a)Re.set(h,g)}nr.clear();for(let h of a.keys())nr.add(h);return{updatedKeys:p,removedKeys:m}}var zd=".corrupted";function g0(t=B.cwd(),e=!0){let r=typeof e=="object"?e:{consumeCorruptionEnvVars:e};Gd();let n=Uo(),i=$d(n),u={},a={},f={},p={},m=[],h=Go(),g=Bd(),d=new Set,s=R.resolve(t),o=R.resolve(sr()),l=s;try{l=_.realpathSync(s)}catch{}let c=_.realpathSync(o),y=new Q(t).getWorkspaceSettingsPath(),S=(H,pe)=>{try{if(_.existsSync(H)){let ve=_.readFileSync(H,"utf-8"),me,He=`${H}${zd}`,ge=!1,kt=!1,Tt=null;try{me=JSON.parse((0,Et.default)(ve))}catch(ae){try{_.copyFileSync(H,He),ge=!0}catch(se){Y.warn(`Failed to copy corrupted file: ${oe(se)}`)}let ue=`${H}.orig`;if(_.existsSync(ue)){Y.warn(`Settings file ${H} has invalid JSON (${oe(ae)}). Attempting recovery from backup ${ue}.`);try{let se=_.readFileSync(ue,"utf-8"),Er=JSON.parse((0,Et.default)(se));_.writeFileSync(H,se,"utf-8"),ve=se,me=Er;let Cr=`Settings file ${H} had invalid JSON and was recovered from backup ${ue}. Some recent settings changes may have been lost.`;Y.warn(Cr),kt=!0}catch(se){Y.warn(`Failed to recover from backup ${ue}: ${oe(se)}. Falling back to empty settings.`)}}if(!me){let se=`Settings file ${H} has invalid JSON. Your settings have been reset.`;if(Y.warn(se),ge)try{_.writeFileSync(H,"{}","utf-8")}catch{}return{settings:{},migrationWarnings:[],corruptedPath:ge?He:void 0,wasRecovered:!1}}}let It=B.env[Ln];if((r.consumeCorruptionEnvVars??!0)&&It&&It===He&&pe==="User"&&(ge=!0,Tt=B.env[Pn]==="1",delete B.env[Ln],delete B.env[Pn]),typeof me!="object"||me===null||Array.isArray(me))return m.push({message:"Settings file is not a valid JSON object.",path:H}),{settings:{}};let J=me,it=qd({filePath:H,scope:pe,settingsObject:J});it&&(J=it.settingsObject,ve=it.content);let Ft=Hd({filePath:H,scope:pe,settingsObject:J});Ft&&Fo(J);let Rt=Ge in J,st=J[Ge],Lt=Rt&&typeof st!="number",Pt=typeof st=="number"&&st<je,Mt,ot=ae=>{try{An(H,J,!0)||Y.error(`${ae}: updateSettingsFilePreservingFormat returned false for ${H}`)}catch(ue){Y.error(`${ae}: ${oe(ue)}`)}};if(Po(J)){let ae=Lo(J,pe);ae.executedMigrations.length>0?(J=ae.settings,Mt=ae.warnings,ot("Error migrating settings file on disk")):(Pt||Lt)&&!ge&&(J[Ge]=je,Y.warn(`Settings version metadata in ${H} could not be migrated by any registered migration. Normalizing ${Ge} to ${je}.`),ot("Error normalizing settings version on disk"))}else(!Rt||Lt||Pt)&&!ge&&!(Dt(J)&&!Ft)&&(J[Ge]=je,ot("Error normalizing settings version on disk"));let at={settings:J,rawJson:ve,migrationWarnings:Mt??[]};return ge&&(at.corruptedPath=He,at.wasRecovered=kt||(Tt??!1)),at}}catch(ve){m.push({message:oe(ve),path:H})}return{settings:{}}},D=S(h,"System"),E=S(g,"SystemDefaults"),C=S(n,"User"),T={settings:{},rawJson:void 0};l!==c&&(T=S(y,"Workspace"));let F=structuredClone(D.settings),O=structuredClone(E.settings),j=structuredClone(C.settings),q=structuredClone(T.settings),z=Ho();u=ze(D.settings,z),a=ze(E.settings,z),f=ze(C.settings,z),p=ze(T.settings,z),f.ui?.theme==="VS"?f.ui.theme=Ur.name:f.ui?.theme==="VS2015"&&(f.ui.theme=jr.name),p.ui?.theme==="VS"?p.ui.theme=Ur.name:p.ui?.theme==="VS2015"&&(p.ui.theme=jr.name);let xe=Jr(_o,{},u,f),qe=$r(xe).isTrusted??!0,vr=qo(u,a,f,p,qe);if(r.skipLoadEnvironment||Wd(vr),m.length>0){let H=m.map(pe=>`Error in ${pe.path}: ${pe.message}`);throw new Nt(`${H.join(`
37
+ Please fix the configuration file and try again.`)}let r=e.isPathTrusted(process.cwd());return{isTrusted:r,source:r!==void 0?"file":void 0}}function $r(t,e){if(!ql(t))return{isTrusted:!0,source:void 0};let r=gi.get()?.workspaceState?.isTrusted;return r!==void 0?{isTrusted:r,source:"ide"}:Hl(e)}b();function ct(t){if(!t||typeof t!="object")return!1;let e=t;return Object.prototype.hasOwnProperty.call(e,"modelProviders")}function Wl(t){if(t.isTrusted&&ct(t.workspace.settings))return"Workspace";if(ct(t.user.settings))return"User"}function as(t){return Wl(t)??"User"}b();var wm=new Set(["boolean","enum"]);var Z={type:"object",description:"A hook definition with an optional matcher and a list of hook configurations.",properties:{matcher:{type:"string",description:"An optional matcher pattern to filter when this hook definition applies."},sequential:{type:"boolean",description:"Whether the hooks should be executed sequentially instead of in parallel."},hooks:{type:"array",description:"The list of hook configurations to execute.",required:!0,items:{type:"object",description:"A hook configuration entry that defines a hook to execute.",properties:{type:{type:"string",description:'The type of hook. Note: "function" type is only available via SDK registration, not settings.json.',enum:["command","http"],required:!0},command:{type:"string",description:'The command to execute when the hook is triggered. Required for "command" type.'},url:{type:"string",description:'The URL to send the POST request to. Required for "http" type.'},headers:{type:"object",description:"HTTP headers to include in the request. Supports env var interpolation ($VAR, ${VAR}).",additionalProperties:{type:"string"}},allowedEnvVars:{type:"array",description:"List of environment variables allowed for interpolation in headers and URL.",items:{type:"string"}},name:{type:"string",description:"An optional name for the hook."},description:{type:"string",description:"An optional description of what the hook does."},timeout:{type:"number",description:"Timeout in seconds for the hook execution."},env:{type:"object",description:"Environment variables to set when executing the hook command.",additionalProperties:{type:"string"}},async:{type:"boolean",description:'Whether to execute the hook asynchronously (non-blocking, for "command" type only).'},once:{type:"boolean",description:'Whether to execute the hook only once per session (for "http" type).'},statusMessage:{type:"string",description:"A message to display while the hook is executing."},shell:{type:"string",description:"The shell to use for command execution.",enum:["bash","powershell"]}}}}}},ls={mcpServers:{type:"object",label:"MCP Servers",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for MCP servers.",showInDialog:!1,mergeStrategy:"shallow_merge"},channels:{type:"object",label:"Channels",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for messaging channels.",showInDialog:!1,mergeStrategy:"shallow_merge"},modelProviders:{type:"object",label:"Model Providers",category:"Model",requiresRestart:!1,default:{},description:"Model providers configuration grouped by authType. Each authType contains an array of model configurations.",showInDialog:!1,mergeStrategy:"replace"},plansDirectory:{type:"string",label:"Plans Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom directory for approved Plan Mode files. Relative paths are resolved from the project root, and the resolved path must stay within the project root. Defaults to ~/.matilda/plans.",showInDialog:!1},env:{type:"object",label:"Environment Variables",category:"Advanced",requiresRestart:!0,default:{},description:"Environment variables to set as fallback defaults. These are loaded with the lowest priority: system environment variables > .env files > settings.json env field.",showInDialog:!1,mergeStrategy:"shallow_merge"},proxy:{type:"string",label:"Proxy",category:"Advanced",requiresRestart:!0,default:void 0,description:"Proxy URL for CLI HTTP requests. Takes precedence over proxy environment variables when --proxy is not provided.",showInDialog:!1},general:{type:"object",label:"General",category:"General",requiresRestart:!1,default:{},description:"General application settings.",showInDialog:!1,properties:{preferredEditor:{type:"string",label:"Preferred Editor",category:"General",requiresRestart:!1,default:void 0,description:"The preferred editor to open files in.",showInDialog:!0},vimMode:{type:"boolean",label:"Vim Mode",category:"General",requiresRestart:!1,default:!1,description:"Enable Vim keybindings",showInDialog:!0},enableAutoUpdate:{type:"boolean",label:"Enable Auto Update",category:"General",requiresRestart:!1,default:!0,description:"Automatically install Matilda Code updates on startup when possible. Update checks and \u201Cnew version available\u201D notices (with the install command) still run when this is off.",showInDialog:!0},showSessionRecap:{type:"boolean",label:"Show Session Recap",category:"General",requiresRestart:!1,default:!1,description:'Auto-show a one-line "where you left off" recap when returning to the terminal after being away. Off by default. Use /recap to trigger manually regardless of this setting.',showInDialog:!0},sessionRecapAwayThresholdMinutes:{type:"number",label:"Session Recap Away Threshold (minutes)",category:"General",requiresRestart:!1,default:5,description:"How many minutes the terminal must be blurred before an auto-recap fires on the next focus-in. Matches Claude Code's default of 5 minutes; raise if you briefly alt-tab and do not want recaps to pile up.",showInDialog:!0},cleanupPeriodDays:{type:"number",label:"Cleanup Period (days)",category:"General",requiresRestart:!0,default:30,description:"Number of days to retain ~/.matilda/file-history/ session backups used by /rewind. Backups older than this are removed by a background housekeeping pass that runs at most once per day. Set to 0 for minimum retention (~1 hour) \u2014 protects sessions touched in the last hour, plus the currently active session. Other persistent caches will honor the same setting in the future.",showInDialog:!0},gitCoAuthor:{type:"object",label:"Attribution",category:"General",requiresRestart:!1,default:{commit:!0,pr:!0,prMessage:"Written by Matilda \u{1F1E6}\u{1F1FA} made by [Maincode](https://maincode.com)"},description:"Attribution added to git commits and pull requests created through Matilda.",showInDialog:!1,legacyTypes:["boolean"],properties:{commit:{type:"boolean",label:"Attribution: commit",category:"General",requiresRestart:!1,default:!0,description:"Add a Co-authored-by trailer to git commit messages AND attach a per-file AI-attribution git note (`refs/notes/ai-attribution`) for commits made through Matilda. Disabling skips both.",showInDialog:!0},pr:{type:"boolean",label:"Attribution: PR",category:"General",requiresRestart:!1,default:!0,description:"Append a Matilda attribution line to PR descriptions when running `gh pr create`.",showInDialog:!0},prMessage:{type:"string",label:"Attribution: PR message",category:"General",requiresRestart:!1,default:"Written by Matilda \u{1F1E6}\u{1F1FA} made by [Maincode](https://maincode.com)",description:"The footer appended to PR descriptions when `gitCoAuthor.pr` is enabled. Customize it to rebrand the footer, or set it to an empty string to append nothing.",showInDialog:!1}}},debugKeystrokeLogging:{type:"boolean",label:"Debug Keystroke Logging",category:"General",requiresRestart:!1,default:!1,description:"Enable debug logging of keystrokes to the console.",showInDialog:!1},language:{type:"enum",label:"Language: UI",category:"General",requiresRestart:!0,default:"auto",description:'The language for the user interface. Use "auto" to detect from system settings. You can also use custom language codes (e.g., "es", "fr") by placing JS language files in ~/.matilda/locales/ (e.g., ~/.matilda/locales/es.js).',showInDialog:!0,options:[]},outputLanguage:{type:"string",label:"Language: Model",category:"General",requiresRestart:!0,default:"auto",description:'The language for LLM output. Use "auto" to detect from system settings, or set a specific language.',showInDialog:!0},dynamicCommandTranslation:{type:"boolean",label:"Language: Dynamic Command Translation",category:"General",requiresRestart:!1,default:!1,description:"Enable AI translation for dynamic slash command descriptions. When disabled, dynamic commands use their original descriptions and do not trigger translation model calls.",showInDialog:!0},terminalBell:{type:"boolean",label:"Terminal Bell Notification",category:"General",requiresRestart:!1,default:!0,description:"Play terminal bell sound when response completes or needs approval.",showInDialog:!0},preventSystemSleep:{type:"boolean",label:"Prevent System Sleep While Running",category:"General",requiresRestart:!0,default:!0,description:"Prevent the system from sleeping while Matilda is streaming a model response or executing tools. Idle prompt time and permission prompts do not inhibit sleep.",showInDialog:!0},chatRecording:{type:"boolean",label:"Chat Recording",category:"General",requiresRestart:!0,default:!0,description:"Enable saving chat history to disk. Disabling this will also prevent --continue and --resume from working.",showInDialog:!1},defaultFileEncoding:{type:"enum",label:"Default File Encoding",category:"General",requiresRestart:!1,default:"utf-8",description:'Default encoding for new files. Use "utf-8" (default) for UTF-8 without BOM, or "utf-8-bom" for UTF-8 with BOM. Only change this if your project specifically requires BOM.',showInDialog:!1,options:[{value:"utf-8",label:"UTF-8 (without BOM)"},{value:"utf-8-bom",label:"UTF-8 with BOM"}]}}},output:{type:"object",label:"Output",category:"General",requiresRestart:!1,default:{},description:"Settings for the CLI output.",showInDialog:!1,properties:{format:{type:"enum",label:"Output Format",category:"General",requiresRestart:!1,default:"text",description:"The format of the CLI output.",showInDialog:!1,options:[{value:"text",label:"Text"},{value:"json",label:"JSON"}]}}},dualOutput:{type:"object",label:"Dual Output",category:"Advanced",requiresRestart:!0,default:{},description:"Dual-output sidecar mode: emit structured JSON events to a second channel while the TUI renders normally on stdout. See docs/users/features/dual-output.md. CLI flags take precedence over these settings.",showInDialog:!1,properties:{jsonFile:{type:"string",label:"JSON Event File",category:"Advanced",requiresRestart:!0,default:void 0,description:"File path for structured JSON event output. Equivalent to --json-file. Ignored if --json-fd or --json-file is also set.",showInDialog:!1},inputFile:{type:"string",label:"Remote Input File",category:"Advanced",requiresRestart:!0,default:void 0,description:"File path for remote input commands (JSONL). Equivalent to --input-file. Ignored if --input-file is also set.",showInDialog:!1}}},ui:{type:"object",label:"UI",category:"UI",requiresRestart:!1,default:{},description:"User interface settings.",showInDialog:!1,properties:{theme:{type:"string",label:"Theme",category:"UI",requiresRestart:!1,default:"Matilda Dark",description:"The color theme for the UI.",showInDialog:!0},autoModeAcknowledged:{type:"boolean",label:"Auto Mode Acknowledged",category:"UI",requiresRestart:!1,default:!1,description:"True once the user has seen the first-time information message about the AUTO approval mode. Set automatically; not intended for manual configuration.",showInDialog:!1},statusLine:{type:"object",label:"Status Line",category:"UI",requiresRestart:!1,default:void 0,description:'Status line display configuration. Use `type: "preset"` with built-in item ids, or `type: "command"` with a shell command. Optional command `refreshInterval` (seconds, >= 1) re-runs the command on a timer so external data stays fresh. Set `respectUserColors: true` to preserve ANSI color codes in command output instead of applying dim/theme styling. Set `hideContextIndicator: true` to hide the built-in context usage indicator in the footer right section.',showInDialog:!1},customThemes:{type:"object",label:"Custom Themes",category:"UI",requiresRestart:!1,default:{},description:"Custom theme definitions.",showInDialog:!1},hideBuiltinWorktreeIndicator:{type:"boolean",label:"Hide Built-in Worktree Indicator",category:"UI",requiresRestart:!1,default:!1,description:"When true, the built-in `\u2387 worktree-<branch> (<slug>)` line in the Footer is hidden. The worktree state is still surfaced to custom statusline scripts via the stdin payload (`worktree.{name, path, branch, original_cwd, original_branch}`). Keep at the default `false` unless your custom statusline renders the worktree itself \u2014 otherwise an active worktree silently has no UI affordance.",showInDialog:!1},hideWindowTitle:{type:"boolean",label:"Hide Window Title",category:"UI",requiresRestart:!0,default:!1,description:"Hide the window title bar",showInDialog:!1},showStatusInTitle:{type:"boolean",label:"Show Status in Title",category:"UI",requiresRestart:!1,default:!1,description:"Show Matilda status and thoughts in the terminal window title",showInDialog:!1},hideTips:{type:"boolean",label:"Hide Tips",category:"UI",requiresRestart:!1,default:!1,description:"Hide helpful tips in the UI",showInDialog:!0},showLineNumbers:{type:"boolean",label:"Show Line Numbers in Code",category:"UI",requiresRestart:!1,default:!0,description:"Show line numbers in the code output.",showInDialog:!0},renderMode:{type:"enum",label:"Markdown Render Mode",category:"UI",requiresRestart:!1,default:"render",description:'Default Markdown display mode. Use "render" for rich visual previews, or "raw" to show source-oriented Markdown by default. Toggle during a session with Alt/Option+M; on macOS the terminal must send Option as Meta.',showInDialog:!0,options:[{value:"render",label:"Render visual previews"},{value:"raw",label:"Show raw source"}]},showCitations:{type:"boolean",label:"Show Citations",category:"UI",requiresRestart:!1,default:!1,description:"Show citations for generated text in the chat.",showInDialog:!1},customWittyPhrases:{type:"array",label:"Custom Witty Phrases",category:"UI",requiresRestart:!1,default:[],description:"Custom witty phrases to display during loading.",showInDialog:!1},enableWelcomeBack:{type:"boolean",label:"Show Welcome Back Dialog",category:"UI",requiresRestart:!1,default:!0,description:'Show welcome back dialog when returning to a project with conversation history. Choosing "Start new chat session" suppresses the dialog for that project until the project summary changes.',showInDialog:!0},enableUserFeedback:{type:"boolean",label:"Enable User Feedback",category:"UI",requiresRestart:!1,default:!0,description:"Show optional feedback dialog after conversations to help improve Matilda performance.",showInDialog:!0},enableFollowupSuggestions:{type:"boolean",label:"Enable Follow-up Suggestions",category:"UI",requiresRestart:!1,default:!1,description:"Show context-aware follow-up suggestions after task completion. Press Tab or Right Arrow to accept, Enter to accept and submit.",showInDialog:!0},enableCacheSharing:{type:"boolean",label:"Enable Cache Sharing for Suggestions",category:"UI",requiresRestart:!1,default:!0,description:"Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental).",showInDialog:!1},enableSpeculation:{type:"boolean",label:"Enable Speculative Execution",category:"UI",requiresRestart:!1,default:!1,description:"Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental).",showInDialog:!1},accessibility:{type:"object",label:"Accessibility",category:"UI",requiresRestart:!0,default:{},description:"Accessibility settings.",showInDialog:!1,properties:{enableLoadingPhrases:{type:"boolean",label:"Enable Loading Phrases",category:"UI",requiresRestart:!0,default:!0,description:"Enable loading phrases (disable for accessibility)",showInDialog:!0},screenReader:{type:"boolean",label:"Screen Reader Mode",category:"UI",requiresRestart:!0,default:void 0,description:"Render output in plain-text to be more screen reader accessible",showInDialog:!1}}},feedbackLastShownTimestamp:{type:"number",label:"Feedback Last Shown Timestamp",category:"UI",requiresRestart:!1,default:0,description:"The last time the feedback dialog was shown.",showInDialog:!1},compactMode:{type:"boolean",label:"Compact Mode",category:"UI",requiresRestart:!1,default:!1,description:"Hide tool output and thinking for a cleaner view (toggle with Ctrl+O).",showInDialog:!0},compactInline:{type:"boolean",label:"Compact Inline",category:"UI",requiresRestart:!0,default:!1,description:"Compact tool display within each group instead of merging across groups. Requires compactMode to be enabled.",showInDialog:!0},useTerminalBuffer:{type:"boolean",label:"Virtualized History (reduces flicker on long sessions)",category:"UI",requiresRestart:!1,default:!1,description:"Render conversation history in an in-app scrollable viewport instead of the terminal scrollback buffer. Recommended if you see flicker, scroll-storm, or interface freeze on long sessions, after Ctrl+O, after Ctrl+E / Ctrl+F (expand), after window resize, or when alt-tabbing back. Scroll with Shift+\u2191/\u2193 (line), PgUp/PgDn (page), Ctrl+Home/End (top/bottom), or the mouse wheel. Does NOT use the host terminal scrollback while enabled; for native text selection, hold Shift (or Option on macOS) while dragging.",showInDialog:!0},shellOutputMaxLines:{type:"number",label:"Shell Output Max Lines",category:"UI",requiresRestart:!1,default:5,description:"Max number of shell output lines shown inline. Set to 0 to disable the cap and show full output. The hidden line count is still surfaced via the `+N lines` indicator.",showInDialog:!0},hideBanner:{type:"boolean",label:"Hide Banner",category:"UI",requiresRestart:!1,default:!1,description:"Hide the startup ASCII banner and info panel.",showInDialog:!0},modelDisplayName:{type:"string",label:"Model Display Name",category:"UI",requiresRestart:!1,default:"",description:'Override the model name shown in the UI (footer, status line, /about, /context). Display-only \u2014 API requests still use the real model id. Leave empty to show the actual model. Set to a single brand name (e.g. "matilda") to always present that regardless of the backing model.',showInDialog:!0},startupAnimation:{type:"boolean",label:"Startup Animation",category:"UI",requiresRestart:!1,default:!0,description:"Play the Matilda flower bloom on launch before the banner settles in. Skipped automatically for screen readers, non-interactive terminals, and when the banner is hidden.",showInDialog:!0},shimmer:{type:"boolean",label:"Loading Shimmer",category:"UI",requiresRestart:!1,default:!0,description:"Animate a shimmering highlight over the loading verb while Matilda is thinking. Disable for a static label. Skipped automatically for screen readers and when NO_COLOR is set.",showInDialog:!0},reducedMotion:{type:"boolean",label:"Reduced Motion",category:"UI",requiresRestart:!1,default:!1,description:"Snap animations to their final state instead of easing them \u2014 focus transitions, selection highlights, dialog reveals and flourishes become instant. Motion is also disabled automatically for screen readers, non-interactive terminals, and when NO_COLOR is set.",showInDialog:!0},customBannerTitle:{type:"string",label:"Custom Banner Title",category:"UI",requiresRestart:!1,default:"",description:'Replace the default ">_ Matilda" title shown in the banner info panel. The version suffix is always appended.',showInDialog:!1},customBannerSubtitle:{type:"string",label:"Custom Banner Subtitle",category:"UI",requiresRestart:!1,default:"",description:"Optional subtitle line rendered between the banner title and the auth/model line. When unset, the info panel keeps its blank spacer row.",showInDialog:!1},customAsciiArt:{type:"object",label:"Custom ASCII Art",category:"UI",requiresRestart:!1,default:void 0,description:'Replace the default MATILDA ASCII art. Accepts an inline string, {"path": "..."}, or {"small": ..., "large": ...} for width-aware selection.',showInDialog:!1,jsonSchemaOverride:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1},{type:"object",properties:{small:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1}]},large:{oneOf:[{type:"string"},{type:"object",properties:{path:{type:"string"}},required:["path"],additionalProperties:!1}]}},additionalProperties:!1}]}}}},ide:{type:"object",label:"IDE",category:"IDE",requiresRestart:!0,default:{},description:"IDE integration settings.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Auto-connect to IDE",category:"IDE",requiresRestart:!0,default:!1,description:"Enable IDE integration mode",showInDialog:!0},hasSeenNudge:{type:"boolean",label:"Has Seen IDE Integration Nudge",category:"IDE",requiresRestart:!1,default:!1,description:"Whether the user has seen the IDE integration nudge.",showInDialog:!1}}},privacy:{type:"object",label:"Privacy",category:"Privacy",requiresRestart:!0,default:{},description:"Privacy-related settings.",showInDialog:!1,properties:{usageStatisticsEnabled:{type:"boolean",label:"Enable Usage Statistics",category:"Privacy",requiresRestart:!0,default:!1,description:"Enable collection of usage statistics",showInDialog:!0}}},telemetry:{type:"object",label:"Telemetry",category:"Advanced",requiresRestart:!0,default:void 0,description:"Telemetry configuration.",showInDialog:!1,jsonSchemaOverride:{type:"object",properties:{includeSensitiveSpanAttributes:{description:"When enabled, user prompts, system prompts, tool inputs/outputs, and model responses are written to native OTel span attributes in addition to the log-to-span bridge. Warning: this may expose sensitive data (file contents, shell commands, conversation history) to your OTLP backend.",type:"boolean",default:!1},resourceAttributes:{description:"Static resource attributes attached to every span/log/metric the SDK exports (OTLP or file outfile \u2014 they share the same Resource). Merged with the OTEL_RESOURCE_ATTRIBUTES env var; settings win on key conflict. Reserved keys (service.version, session.id) are dropped with a warning.",type:"object",additionalProperties:{type:"string"},default:{}},metrics:{description:"Per-signal cardinality controls for exported metrics.",type:"object",additionalProperties:!1,properties:{includeSessionId:{description:"Include session.id on every metric data point. WARNING: each CLI session creates a new value, causing unbounded metric time-series fan-out at the backend. Only enable for short-term debugging \u2014 spans and logs still carry session.id.",type:"boolean",default:!1}}}},additionalProperties:!0}},outboundCorrelation:{type:"object",label:"Outbound Correlation",category:"Advanced",requiresRestart:!0,default:void 0,description:"SECURITY-RELEVANT. Controls what client-side correlation data matilda-code writes into outbound LLM API requests (Matilda-compatible, OpenAI, Anthropic, etc.) \u2014 separate from `telemetry.*` which governs data flow into the operator's OWN OTLP collector. All values default to off. Opt in only when the LLM provider also reports into your OTel collector for cross-process trace stitching (e.g. ARMS Tracing + Matilda-compatible).",showInDialog:!1,jsonSchemaOverride:{type:"object",properties:{propagateTraceContext:{description:"Requires `telemetry.enabled: true`. Inject W3C `traceparent` on outbound `fetch` requests (LLM SDK calls, MCP StreamableHTTP, WebFetch, ...) AND as a `TRACEPARENT` environment variable in shell child processes (Bash tool, hooks, monitor). When enabled, any existing `TRACEPARENT` in the parent environment is overwritten with matilda-code's own trace context. Default: false \u2014 trace context stays internal to the operator's OTLP collector. Set true when you want cross-process trace stitching with an OTel-aware LLM provider (e.g. ARMS+Matilda-compatible) or need shell scripts / CLI tools to participate in distributed tracing.",type:"boolean",default:!1}},additionalProperties:!1}},fastModel:{type:"string",label:"Fast Model",category:"Model",requiresRestart:!1,default:"",description:"Model used for generating prompt suggestions and speculative execution. Leave empty to use the main model. A smaller/faster model (e.g., matilda3-coder-flash) reduces latency and cost.",showInDialog:!0},model:{type:"object",label:"Model",category:"Model",requiresRestart:!1,default:{},description:"Settings related to the generative model.",showInDialog:!1,properties:{name:{type:"string",label:"Model",category:"Model",requiresRestart:!1,default:void 0,description:"The model to use for conversations.",showInDialog:!1},maxSessionTurns:{type:"number",label:"Max Session Turns",category:"Model",requiresRestart:!1,default:-1,description:"Maximum number of user/model/tool turns to keep in a session. -1 means unlimited.",showInDialog:!1},maxWallTimeSeconds:{type:"number",label:"Max Wall-Clock Time (seconds)",category:"Model",requiresRestart:!1,default:-1,description:"Run-level wall-clock budget for headless / unattended runs, in seconds. -1 means unlimited; otherwise must be in [1, ~2,147,483] (sub-second values and values above ~24 days are rejected as typos). Overridable per-invocation via --max-wall-time (which also accepts duration suffixes like 5m, 1.5h).",showInDialog:!1},maxToolCalls:{type:"number",label:"Max Tool Calls",category:"Model",requiresRestart:!1,default:-1,description:'Cumulative tool-call budget for a run (counts every executed tool, success or failure; structured_output under --json-schema is exempt). -1 means unlimited; 0 means "no tool calls allowed" (first call aborts). Capped at 1,000,000 to catch typos. Overridable via --max-tool-calls.',showInDialog:!1},chatCompression:{type:"object",label:"Chat Compression",category:"Model",requiresRestart:!1,default:void 0,description:"Chat compression settings.",showInDialog:!1},sessionTokenLimit:{type:"number",label:"Session Token Limit",category:"Model",requiresRestart:!1,default:void 0,description:"The maximum number of tokens allowed in a session.",showInDialog:!1},skipNextSpeakerCheck:{type:"boolean",label:"Skip Next Speaker Check",category:"Model",requiresRestart:!1,default:!0,description:"Skip the next speaker check.",showInDialog:!1},skipLoopDetection:{type:"boolean",label:"Skip Loop Detection",category:"Model",requiresRestart:!1,default:!0,description:"Skip streaming loop detection. Defaults to true to avoid false-positive interruptions; set to false to re-enable as an unattended-run guardrail.",showInDialog:!1},skipStartupContext:{type:"boolean",label:"Skip Startup Context",category:"Model",requiresRestart:!0,default:!1,description:"Avoid sending the workspace startup context at the beginning of each session.",showInDialog:!1},enableOpenAILogging:{type:"boolean",label:"Enable OpenAI Logging",category:"Model",requiresRestart:!1,default:!1,description:"Enable OpenAI logging.",showInDialog:!1},openAILoggingDir:{type:"string",label:"OpenAI Logging Directory",category:"Model",requiresRestart:!1,default:void 0,description:"Custom directory path for OpenAI API logs. If not specified, defaults to logs/openai in the current working directory.",showInDialog:!1},generationConfig:{type:"object",label:"Generation Configuration",category:"Model",requiresRestart:!1,default:void 0,description:"Generation configuration settings.",showInDialog:!1,properties:{timeout:{type:"number",label:"Timeout",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Request timeout in milliseconds.",parentKey:"generationConfig",showInDialog:!1},maxRetries:{type:"number",label:"Max Retries",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Maximum number of retries for failed requests.",parentKey:"generationConfig",showInDialog:!1},enableCacheControl:{type:"boolean",label:"Enable Cache Control",category:"Generation Configuration",requiresRestart:!1,default:!0,description:"Enable cache control for Matilda-compatible providers.",parentKey:"generationConfig",showInDialog:!1},splitToolMedia:{type:"boolean",label:"Split Tool Result Media",category:"Generation Configuration",requiresRestart:!1,default:!0,description:'When true, media (images / audio / video / files) returned by tool calls \u2014 including the built-in read_file and MCP tools \u2014 is split into a follow-up user message instead of being embedded in the `role: "tool"` message. The OpenAI Chat Completions spec only permits text on tool messages, so strict OpenAI-compatible servers (e.g., doubao / new-api / LM Studio) silently drop or reject embedded media and the model never sees an image read via read_file (MaincodeHQ/matilda-code#4876, #3616). Default true is spec-compliant and safe for permissive providers; set false only to restore the legacy embed-in-tool-message behavior.',parentKey:"generationConfig",showInDialog:!1},schemaCompliance:{type:"enum",label:"Tool Schema Compliance",category:"Generation Configuration",requiresRestart:!1,default:"auto",description:'The compliance mode for tool schemas sent to the model. Use "openapi_30" for strict OpenAPI 3.0 compatibility (e.g., for Gemini).',parentKey:"generationConfig",showInDialog:!1,options:[{value:"auto",label:"Auto (Default)"},{value:"openapi_30",label:"OpenAPI 3.0 Strict"}]},contextWindowSize:{type:"number",label:"Context Window Size",category:"Generation Configuration",requiresRestart:!1,default:void 0,description:"Overrides the default context window size for the selected model. Use this setting when a provider's effective context limit differs from Matilda's default. This value defines the model's assumed maximum context capacity, not a per-request token limit.",parentKey:"generationConfig",showInDialog:!1}}}}},modelPricing:{type:"object",label:"Model Pricing",category:"Model",requiresRestart:!1,default:void 0,description:'Optional per-model pricing for cost estimation in /stats model. Example: {"matilda3-coder": {"inputPerMillionTokens": 0.30, "outputPerMillionTokens": 1.20}}',showInDialog:!1},context:{type:"object",label:"Context",category:"Context",requiresRestart:!1,default:{},description:"Settings for managing context provided to the model.",showInDialog:!1,properties:{fileName:{type:"object",label:"Context File Name",category:"Context",requiresRestart:!1,default:void 0,description:"The name of the context file.",showInDialog:!1},importFormat:{type:"string",label:"Memory Import Format",category:"Context",requiresRestart:!1,default:void 0,description:"The format to use when importing memory.",showInDialog:!1},includeDirectories:{type:"array",label:"Include Directories",category:"Context",requiresRestart:!1,default:[],description:"Additional directories to include in the workspace context. Missing directories will be skipped with a warning.",showInDialog:!1,mergeStrategy:"concat"},loadFromIncludeDirectories:{type:"boolean",label:"Load Memory From Include Directories",category:"Context",requiresRestart:!1,default:!1,description:"Whether to load memory files from include directories.",showInDialog:!1},clearContextOnIdle:{type:"object",label:"Clear Context On Idle",category:"Context",requiresRestart:!1,default:{},description:"Settings for clearing stale or oversized tool result context. Use -1 to disable a threshold.",showInDialog:!1,properties:{toolResultsThresholdMinutes:{type:"number",label:"Tool Results Idle Threshold (minutes)",category:"Context",requiresRestart:!1,default:5,description:"Minutes of inactivity before clearing old tool result content. Use -1 to disable. Default 5 keeps long agent sessions snappy.",showInDialog:!1},toolResultsNumToKeep:{type:"number",label:"Tool Results Number To Keep",category:"Context",requiresRestart:!1,default:5,description:"Number of most-recent compactable tool results to preserve when clearing. Floor at 1.",showInDialog:!1},toolResultsTotalCharsThreshold:{type:"number",label:"Tool Results Total Chars Threshold",category:"Context",requiresRestart:!1,default:5e5,description:"Total compactable tool result output characters allowed in history before clearing oldest results. Use -1 to disable. This is a soft threshold: protected recent tool results may keep the total above it.",showInDialog:!1}}},fileFiltering:{type:"object",label:"File Filtering",category:"Context",requiresRestart:!0,default:{},description:"Settings for git-aware file filtering.",showInDialog:!1,properties:{respectGitIgnore:{type:"boolean",label:"Respect .gitignore",category:"Context",requiresRestart:!0,default:!0,description:"Respect .gitignore files when searching",showInDialog:!0},respectMatildaIgnore:{type:"boolean",label:"Respect .matildaignore",category:"Context",requiresRestart:!0,default:!0,description:"Respect .matildaignore files when searching",showInDialog:!0},enableRecursiveFileSearch:{type:"boolean",label:"Enable Recursive File Search",category:"Context",requiresRestart:!0,default:!0,description:"Enable recursive file search functionality",showInDialog:!1},enableFuzzySearch:{type:"boolean",label:"Enable Fuzzy Search",category:"Context",requiresRestart:!0,default:!0,description:"Enable fuzzy search when searching for files.",showInDialog:!0}}}}},memory:{type:"object",label:"Memory",category:"Memory",requiresRestart:!1,default:{},description:"Settings for managed auto-memory.",showInDialog:!1,properties:{enableManagedAutoMemory:{type:"boolean",label:"Enable Managed Auto-Memory",category:"Memory",requiresRestart:!1,default:!0,description:"Enable background extraction of memories from conversations.",showInDialog:!1},enableManagedAutoDream:{type:"boolean",label:"Enable Managed Auto-Dream",category:"Memory",requiresRestart:!1,default:!0,description:"Enable automatic consolidation (dream) of collected memories.",showInDialog:!1},enableAutoSkill:{type:"boolean",label:"Enable Auto Skill",category:"Memory",requiresRestart:!1,default:!0,description:"Enable background review for reusable project skills after tool-heavy sessions.",showInDialog:!1}}},slashCommands:{type:"object",label:"Slash Commands",category:"Advanced",requiresRestart:!0,default:{},description:"Configuration for slash commands exposed by the CLI. Useful for locking down the command surface in multi-tenant or enterprise deployments.",showInDialog:!1,properties:{disabled:{type:"array",label:"Disabled Slash Commands",category:"Advanced",requiresRestart:!0,default:void 0,description:'Slash command names to hide and refuse to execute. Matched case-insensitively against the final command name (for extension commands this is the disambiguated form, e.g. "myext.deploy"). Merged as a union across settings scopes, so workspace settings can add to but not remove entries defined in system/user settings.',showInDialog:!1,mergeStrategy:"union"}}},skills:{type:"object",label:"Skills",category:"Advanced",requiresRestart:!1,default:{},description:"Configuration for skills (SKILL.md-based capabilities) exposed to the model.",showInDialog:!1,properties:{disabled:{type:"array",label:"Disabled Skills",category:"Advanced",requiresRestart:!1,default:void 0,description:"Skill names to hide. Matched case-insensitively against the skill name. Hidden skills do not appear in <available_skills> or as /<name> slash commands. UNION-merged across systemDefaults/user/workspace/system scopes \u2014 workspace cannot remove entries defined in higher scopes.",showInDialog:!1,mergeStrategy:"union"}}},permissions:{type:"object",label:"Permissions",category:"Tools",requiresRestart:!0,default:{},description:"Permission rules controlling tool usage. Rules are evaluated in priority order: deny > ask > allow.",showInDialog:!1,properties:{allow:{type:"array",label:"Allow Rules",category:"Tools",requiresRestart:!0,default:void 0,description:'Tools or commands that are auto-approved without confirmation. Examples: "ShellTool", "Bash(git *)", "ReadFileTool".',showInDialog:!1,mergeStrategy:"union"},ask:{type:"array",label:"Ask Rules",category:"Tools",requiresRestart:!0,default:void 0,description:"Tools or commands that always require user confirmation. Takes precedence over allow rules.",showInDialog:!1,mergeStrategy:"union"},deny:{type:"array",label:"Deny Rules",category:"Tools",requiresRestart:!0,default:void 0,description:'Tools or commands that are always blocked. Highest priority rule. Examples: "ShellTool", "Bash(rm -rf *)".',showInDialog:!1,mergeStrategy:"union"},autoMode:{type:"object",label:"Auto Mode",category:"Tools",requiresRestart:!0,default:{},description:"Settings consumed by the AUTO approval mode classifier.",showInDialog:!1,properties:{classifier:{type:"object",label:"Auto Mode Classifier",category:"Tools",requiresRestart:!0,default:{},description:"Runtime controls for the AUTO approval mode classifier.",showInDialog:!1,properties:{timeouts:{type:"object",label:"Auto Mode Classifier Timeouts",category:"Tools",requiresRestart:!0,default:{},description:"Timeouts for the two AUTO classifier stages, in milliseconds.",showInDialog:!1,properties:{stage1Ms:{type:"number",label:"Auto Mode Stage 1 Timeout",category:"Tools",requiresRestart:!0,default:void 0,description:"Timeout in milliseconds for the fast stage-1 AUTO classifier.",showInDialog:!1},stage2Ms:{type:"number",label:"Auto Mode Stage 2 Timeout",category:"Tools",requiresRestart:!0,default:void 0,description:"Timeout in milliseconds for the stage-2 AUTO classifier review.",showInDialog:!1}}},thinking:{type:"object",label:"Auto Mode Classifier Thinking",category:"Tools",requiresRestart:!0,default:{},description:"Provider/API-level thinking controls for the AUTO classifier.",showInDialog:!1,properties:{stage2Enabled:{type:"boolean",label:"Auto Mode Stage 2 Thinking",category:"Tools",requiresRestart:!0,default:!1,description:"Whether stage 2 may use provider/API-level thinking. Stage 1 always keeps thinking disabled.",showInDialog:!1}}}}},hints:{type:"object",label:"Classifier Hints",category:"Tools",requiresRestart:!0,default:{},description:"Natural-language hints injected into the classifier system prompt.",showInDialog:!1,properties:{allow:{type:"array",label:"Auto Mode Allow Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of actions AUTO mode should allow.",showInDialog:!1,mergeStrategy:"union"},softDeny:{type:"array",label:"Auto Mode Soft-Deny Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of destructive / irreversible actions AUTO mode should block unless the user explicitly authorised that exact action and scope.",showInDialog:!1,mergeStrategy:"union"},hardDeny:{type:"array",label:"Auto Mode Hard-Deny Hints",category:"Tools",requiresRestart:!0,default:void 0,description:"Natural-language descriptions of security-boundary actions the AUTO classifier must block even when an autoMode allow hint or recent user request would normally authorise them. Does not override permissions.allow; use permissions.deny for deterministic hard permission rules.",showInDialog:!1,mergeStrategy:"union"},deny:{type:"array",label:"Auto Mode Deny Hints (legacy)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated alias for `softDeny`. Entries here are merged into the SOFT BLOCK user section so existing settings keep working; new configurations should use `softDeny` or `hardDeny` instead.",showInDialog:!1,mergeStrategy:"union"}}},environment:{type:"array",label:"Auto Mode Environment",category:"Tools",requiresRestart:!0,default:void 0,description:"Environment / context lines injected into the classifier system prompt.",showInDialog:!1,mergeStrategy:"union"}}}}},tools:{type:"object",label:"Tools",category:"Tools",requiresRestart:!0,default:{},description:"Settings for built-in and custom tools.",showInDialog:!1,properties:{sandbox:{type:"object",label:"Sandbox",category:"Tools",requiresRestart:!0,default:void 0,description:"Sandbox execution environment (can be a boolean or a path string).",showInDialog:!1},sandboxImage:{type:"string",label:"Sandbox Image",category:"Tools",requiresRestart:!0,default:void 0,description:"Sandbox image URI used by Docker/Podman when --sandbox-image and MATILDA_SANDBOX_IMAGE are not set.",showInDialog:!1},toolSearch:{type:"object",label:"Tool Search",category:"Tools",requiresRestart:!0,default:{},description:"Settings for the ToolSearch discovery mechanism.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Enable ToolSearch",category:"Tools",requiresRestart:!0,default:!0,description:"When enabled, MCP tools are loaded on-demand via ToolSearch to reduce prompt size. Disable this for models that rely on prefix-based KV caching (e.g. DeepSeek) to keep the prompt prefix stable and maximize cache hit rates.",showInDialog:!0}}},shell:{type:"object",label:"Shell",category:"Tools",requiresRestart:!1,default:{},description:"Settings for shell execution.",showInDialog:!1,properties:{enableInteractiveShell:{type:"boolean",label:"Interactive Shell (PTY)",category:"Tools",requiresRestart:!0,default:!0,description:"Use node-pty for an interactive shell experience. Falls back to child_process if PTY is unavailable.",showInDialog:!0},pager:{type:"string",label:"Pager",category:"Tools",requiresRestart:!1,default:"cat",description:"The pager command to use for shell output. Defaults to `cat`.",showInDialog:!1},showColor:{type:"boolean",label:"Show Color",category:"Tools",requiresRestart:!1,default:!1,description:"Show color in shell output.",showInDialog:!1}}},core:{type:"array",label:"Core Tools (deprecated)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.allow instead.",showInDialog:!1},allowed:{type:"array",label:"Allowed Tools (deprecated)",category:"Advanced",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.allow instead.",showInDialog:!1},exclude:{type:"array",label:"Exclude Tools (deprecated)",category:"Tools",requiresRestart:!0,default:void 0,description:"Deprecated. Use permissions.deny instead.",showInDialog:!1,mergeStrategy:"union"},disabled:{type:"array",label:"Disabled Tools",category:"Tools",requiresRestart:!0,default:void 0,description:"Tool names hidden from the registry. Differs from permissions.deny: disabled tools are not registered at all, so they never appear in /tools and cannot be discovered by the model. Managed by the daemon mutation route POST /workspace/tools/:name/enable.",showInDialog:!1,mergeStrategy:"union"},approvalMode:{type:"enum",label:"Tool Approval Mode",category:"Tools",requiresRestart:!1,default:"default",description:"Approval mode for tool usage. Controls how tools are approved before execution.",showInDialog:!0,options:[{value:"plan",label:"Plan"},{value:"default",label:"Ask permissions"},{value:"auto-edit",label:"Auto Edit"},{value:"auto",label:"Auto"},{value:"bogan",label:"BOGAN"}]},autoAccept:{type:"boolean",label:"Auto Accept",category:"Tools",requiresRestart:!1,default:!1,description:"Automatically accept and execute tool calls that are considered safe (e.g., read-only operations) without explicit user confirmation.",showInDialog:!1},discoveryCommand:{type:"string",label:"Tool Discovery Command",category:"Tools",requiresRestart:!0,default:void 0,description:"Command to run for tool discovery.",showInDialog:!1},callCommand:{type:"string",label:"Tool Call Command",category:"Tools",requiresRestart:!0,default:void 0,description:"Command to run for tool calls.",showInDialog:!1},useRipgrep:{type:"boolean",label:"Use Ripgrep",category:"Tools",requiresRestart:!1,default:!0,description:"Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance.",showInDialog:!1},useBuiltinRipgrep:{type:"boolean",label:"Use Builtin Ripgrep",category:"Tools",requiresRestart:!1,default:!0,description:'Use the bundled ripgrep binary. When set to false, the system-level "rg" command will be used instead. This setting is only effective when useRipgrep is true.',showInDialog:!1},truncateToolOutputThreshold:{type:"number",label:"Tool Output Truncation Threshold",category:"General",requiresRestart:!0,default:bi,description:"Truncate tool output if it is larger than this many characters. Set to -1 to disable.",showInDialog:!1},truncateToolOutputLines:{type:"number",label:"Tool Output Truncation Lines",category:"General",requiresRestart:!0,default:xi,description:"The number of lines to keep when truncating tool output.",showInDialog:!1},toolOutputBatchBudget:{type:"number",label:"Tool Output Batch Budget",category:"General",requiresRestart:!0,default:vi,description:"Per-message budget (characters) for the combined output of one batch of tool calls; the largest results are offloaded to disk when exceeded. Set to -1 to disable.",showInDialog:!1},computerUse:{type:"object",label:"Computer Use",category:"Tools",requiresRestart:!0,default:{},description:"Cross-platform desktop automation via the cua-driver native driver (trycua/cua). On first invocation a pinned, signed + notarized binary (~20MB) is downloaded into ~/.matilda/computer-use/ and the user is walked through macOS Accessibility / Screen Recording permissions if needed. Exposes cua-driver's full tool surface (click, type_text, scroll, drag, press_key, get_window_state, page, launch_app, and more).",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Enable Computer Use",category:"Tools",requiresRestart:!0,default:!0,description:"When enabled (default), the cua-driver computer_use__* tools are registered as deferred built-ins.",showInDialog:!0},maxImageDimension:{type:"number",label:"Max Screenshot Dimension",category:"Tools",requiresRestart:!0,default:-1,description:"Longest-edge pixel cap applied to cua-driver screenshots (via set_config's max_image_dimension). -1 (default) keeps cua-driver's built-in default (1568); 0 disables resizing (full resolution); a positive value caps the longest edge. Lower caps cut vision-token cost at the expense of fine detail. Overridable via the MATILDA_COMPUTER_USE_MAX_IMAGE_DIMENSION env var.",showInDialog:!1}}}}},policy:{type:"object",label:"Daemon Policy",category:"Daemon",requiresRestart:!0,default:{},description:"Daemon multi-client coordination policies. Tool-level allow/deny rules live under `permissions`; this section is for runtime mediation behavior between concurrent HTTP clients sharing one `matilda serve` daemon.",showInDialog:!1,properties:{permissionStrategy:{type:"enum",label:"Permission Mediation Policy",category:"Daemon",requiresRestart:!0,default:"first-responder",description:'How permission requests resolve when multiple clients are attached. `first-responder` (default) = any client decides, first wins. `designated` = only the prompt originator decides; falls back to first-responder if originator is anonymous. NOTE: client identity comes from self-declared X-Matilda-Client-Id with no proof-of-possession (pair-token identity is not implemented yet), so any client observing originatorClientId on SSE frames can register with the same id and impersonate the originator. `consensus` = N-of-M voters must agree. Default N=floor(M/2)+1, which means UNANIMITY for M=2 (quorum=2, both must agree) and supermajority for larger even M (M=4 \u2192 quorum=3; M=6 \u2192 quorum=4). For M=2 specifically, split votes resolve only via permissionTimeoutMs. `local-only` = only loopback clients can RESOLVE; remote clients can still ABORT a pending permission via the cancel sentinel ({outcome:"cancelled"}) \u2014 cancel stays cross-policy for consistency. Strict-cancel-too deployments need a dedicated loopback-bound daemon. Requires daemon restart \u2014 read once at boot.',showInDialog:!0,options:[{value:"first-responder",label:"First Responder"},{value:"designated",label:"Designated Originator"},{value:"consensus",label:"Consensus Quorum"},{value:"local-only",label:"Local Only"}]},consensusQuorum:{type:"number",label:"Consensus Quorum Override",category:"Daemon",requiresRestart:!0,default:void 0,description:"Optional fixed quorum size for consensus policy. Capped at M (count of registered voters at request issue time) to prevent unreachable quorum. Unset = floor(M/2)+1. Requires daemon restart \u2014 read once at boot.",showInDialog:!1,jsonSchemaOverride:{type:"integer",minimum:1,description:"Optional fixed quorum size for consensus policy. Capped at M (count of registered voters at request issue time) to prevent unreachable quorum. Unset = floor(M/2)+1. Requires daemon restart \u2014 read once at boot."}}}},mcp:{type:"object",label:"MCP",category:"MCP",requiresRestart:!0,default:{},description:"Settings for Model Context Protocol (MCP) servers.",showInDialog:!1,properties:{serverCommand:{type:"string",label:"MCP Server Command",category:"MCP",requiresRestart:!0,default:void 0,description:"Command to start an MCP server.",showInDialog:!1},allowed:{type:"array",label:"Allow MCP Servers",category:"MCP",requiresRestart:!0,default:void 0,description:"A list of MCP servers to allow.",showInDialog:!1,mergeStrategy:"concat"},excluded:{type:"array",label:"Exclude MCP Servers",category:"MCP",requiresRestart:!0,default:void 0,description:"A list of MCP servers to exclude.",showInDialog:!1,mergeStrategy:"concat"}}},security:{type:"object",label:"Security",category:"Security",requiresRestart:!0,default:{},description:"Security-related settings.",showInDialog:!1,properties:{folderTrust:{type:"object",label:"Folder Trust",category:"Security",requiresRestart:!1,default:{},description:"Settings for folder trust.",showInDialog:!1,properties:{enabled:{type:"boolean",label:"Folder Trust",category:"Security",requiresRestart:!0,default:!1,description:"Setting to track whether Folder trust is enabled.",showInDialog:!1}}},auth:{type:"object",label:"Authentication",category:"Security",requiresRestart:!0,default:{},description:"Authentication settings.",showInDialog:!1,properties:{selectedType:{type:"string",label:"Selected Auth Type",category:"Security",requiresRestart:!0,default:void 0,description:"The currently selected authentication type.",showInDialog:!1},enforcedType:{type:"string",label:"Enforced Auth Type",category:"Advanced",requiresRestart:!0,default:void 0,description:"The required auth type. If this does not match the selected auth type, the user will be prompted to re-authenticate.",showInDialog:!1},useExternal:{type:"boolean",label:"Use External Auth",category:"Security",requiresRestart:!0,default:void 0,description:"Whether to use an external authentication flow.",showInDialog:!1},apiKey:{type:"string",label:"API Key",category:"Security",requiresRestart:!0,default:void 0,description:"API key for OpenAI compatible authentication.",showInDialog:!1},baseUrl:{type:"string",label:"Base URL",category:"Security",requiresRestart:!0,default:void 0,description:"Base URL for OpenAI compatible API.",showInDialog:!1}}},allowedHttpHookUrls:{type:"array",label:"Allowed HTTP Hook URLs",category:"Security",requiresRestart:!1,default:[],description:"Whitelist of URL patterns for HTTP hooks. Supports * wildcard. If empty, all URLs are allowed (subject to SSRF protection).",showInDialog:!1,items:{type:"string",description:"URL pattern (supports * wildcard)"}}}},advanced:{type:"object",label:"Advanced",category:"Advanced",requiresRestart:!0,default:{},description:"Advanced settings for power users.",showInDialog:!1,properties:{autoConfigureMemory:{type:"boolean",label:"Auto Configure Max Old Space Size",category:"Advanced",requiresRestart:!0,default:!1,description:"Automatically configure Node.js memory limits",showInDialog:!1},dnsResolutionOrder:{type:"string",label:"DNS Resolution Order",category:"Advanced",requiresRestart:!0,default:void 0,description:"The DNS resolution order.",showInDialog:!1},excludedEnvVars:{type:"array",label:"Excluded Project Environment Variables",category:"Advanced",requiresRestart:!1,default:["DEBUG","DEBUG_MODE"],description:"Environment variables to exclude from project context.",showInDialog:!1,mergeStrategy:"union"},bugCommand:{type:"object",label:"Bug Command",category:"Advanced",requiresRestart:!1,default:void 0,description:"Configuration for the bug report command.",showInDialog:!1},runtimeOutputDir:{type:"string",label:"Runtime Output Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom directory for runtime output (temp files, debug logs, session data, todos, etc.). Config files remain at ~/.matilda (or MATILDA_HOME if set). Env var MATILDA_RUNTIME_DIR takes priority.",showInDialog:!1}}},agents:{type:"object",label:"Agents",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for multi-agent collaboration features (Arena, Team, Swarm).",showInDialog:!1,properties:{displayMode:{type:"enum",label:"Display Mode",category:"Advanced",requiresRestart:!1,default:void 0,description:'Display mode for multi-agent sessions. Currently only "in-process" is supported.',showInDialog:!1,options:[{value:"in-process",label:"In-process"}]},arena:{type:"object",label:"Arena",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Arena (multi-model competitive execution).",showInDialog:!1,properties:{worktreeBaseDir:{type:"string",label:"Worktree Base Directory",category:"Advanced",requiresRestart:!0,default:void 0,description:"Custom base directory for Arena worktrees. Defaults to ~/.matilda/arena.",showInDialog:!1},preserveArtifacts:{type:"boolean",label:"Preserve Arena Artifacts",category:"Advanced",requiresRestart:!1,default:!1,description:"When enabled, Arena worktrees and session state files are preserved after the session ends or the main agent exits.",showInDialog:!0},maxRoundsPerAgent:{type:"number",label:"Max Rounds Per Agent",category:"Advanced",requiresRestart:!1,default:void 0,description:"Maximum number of rounds (turns) each agent can execute. No limit if unset.",showInDialog:!1},timeoutSeconds:{type:"number",label:"Timeout (seconds)",category:"Advanced",requiresRestart:!1,default:void 0,description:"Total timeout in seconds for the Arena session. No limit if unset.",showInDialog:!1}}},team:{type:"object",label:"Team",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Agent Team (role-based collaborative execution). Reserved for future use.",showInDialog:!1},swarm:{type:"object",label:"Swarm",category:"Advanced",requiresRestart:!1,default:{},description:"Settings for Agent Swarm (parallel sub-agent execution). Reserved for future use.",showInDialog:!1}}},disableAllHooks:{type:"boolean",label:"Disable All Hooks",category:"Advanced",requiresRestart:!0,default:!1,description:"Temporarily disable all hooks without deleting configurations. Default is false (hooks enabled).",showInDialog:!1},stopHookBlockingCap:{type:"number",label:"Stop Hook Blocking Cap",category:"Advanced",requiresRestart:!0,default:8,description:"Maximum consecutive blocking Stop/SubagentStop hook decisions before Matilda overrides the hook loop and ends the turn. Can be overridden by MATILDA_CODE_STOP_HOOK_BLOCK_CAP.",showInDialog:!1},hooks:{type:"object",label:"Hooks",category:"Advanced",requiresRestart:!1,default:{},description:"Hook event configurations for extending CLI behavior at various lifecycle points.",showInDialog:!1,properties:{UserPromptSubmit:{type:"array",label:"Before Agent Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before agent processing. Can modify prompts or inject context.",showInDialog:!1,mergeStrategy:"concat",items:Z},UserPromptExpansion:{type:"array",label:"Prompt Expansion Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a slash command expands into a prompt.",showInDialog:!1,mergeStrategy:"concat",items:Z},Stop:{type:"array",label:"After Agent Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute after agent processing. Can post-process responses or log interactions.",showInDialog:!1,mergeStrategy:"concat",items:Z},Notification:{type:"array",label:"Notification Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when notifications are sent.",showInDialog:!1,mergeStrategy:"concat",items:Z},PreToolUse:{type:"array",label:"Pre Tool Use Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before tool execution.",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolUse:{type:"array",label:"Post Tool Use Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute after successful tool execution.",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolUseFailure:{type:"array",label:"Post Tool Use Failure Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when tool execution fails. ",showInDialog:!1,mergeStrategy:"concat",items:Z},PostToolBatch:{type:"array",label:"Post Tool Batch Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute once after all tool calls in a batch resolve.",showInDialog:!1,mergeStrategy:"concat",items:Z},SessionStart:{type:"array",label:"Session Start Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a new session starts or resumes.",showInDialog:!1,mergeStrategy:"concat",items:Z},SessionEnd:{type:"array",label:"Session End Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a session ends.",showInDialog:!1,mergeStrategy:"concat",items:Z},PreCompact:{type:"array",label:"Pre Compact Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute before conversation compaction.",showInDialog:!1,mergeStrategy:"concat",items:Z},SubagentStart:{type:"array",label:"Subagent Start Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a subagent (Task tool call) is started.",showInDialog:!1,mergeStrategy:"concat",items:Z},SubagentStop:{type:"array",label:"Subagent Stop Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute right before a subagent (Task tool call) concludes its response.",showInDialog:!1,mergeStrategy:"concat",items:Z},PermissionRequest:{type:"array",label:"Permission Request Hooks",category:"Advanced",requiresRestart:!1,default:[],description:"Hooks that execute when a permission dialog is displayed.",showInDialog:!1,mergeStrategy:"concat",items:Z}}},experimental:{type:"object",label:"Experimental",category:"Experimental",requiresRestart:!0,default:{},description:"Settings to enable experimental features.",showInDialog:!1,properties:{cron:{type:"boolean",label:"Enable Cron/Loop Tools",category:"Experimental",requiresRestart:!0,default:!0,description:"Enable in-session cron/loop tools. When enabled, the model can create recurring prompts using cron_create, cron_list, and cron_delete tools. Can be disabled via MATILDA_CODE_DISABLE_CRON=1 environment variable.",showInDialog:!0},agentTeam:{type:"boolean",label:"Enable Agent Team",category:"Experimental",requiresRestart:!0,default:!1,description:"Enable agent team collaboration tools (experimental). When enabled, the model can create agent teams and coordinate work using team_create, team_delete, send_message, task_create, task_update, and task_list tools. Can also be enabled via MATILDA_CODE_ENABLE_AGENT_TEAM=1 environment variable.",showInDialog:!0},emitToolUseSummaries:{type:"boolean",label:"Tool Use Summaries",category:"Experimental",requiresRestart:!1,default:!0,description:"Generate a short LLM-based label after each tool batch completes. In compact mode the label replaces the generic `Tool \xD7 N` header; in full mode it appears as a dim `\u25CF <label>` line below the tool group. Requires a fast model to be configured; runs in parallel with the next API call so latency is hidden. Currently affects interactive CLI rendering only \u2014 SDK / non-interactive emission of the `tool_use_summary` message is not yet wired (the message factory is exported for a follow-up PR). Can be overridden with MATILDA_CODE_EMIT_TOOL_USE_SUMMARIES=0 or =1.",showInDialog:!0}}},worktree:{type:"object",label:"Worktree",category:"Advanced",requiresRestart:!1,default:{},description:'Configuration for general-purpose git worktrees created by the CLI (the `enter_worktree` tool, the `agent isolation: "worktree"` parameter, and the startup `--worktree` flag). Does NOT affect Agent Arena worktrees \u2014 see `agents.arena.worktreeBaseDir` for those.',showInDialog:!1,properties:{symlinkDirectories:{type:"array",label:"Symlink Directories Into Worktrees",category:"Advanced",requiresRestart:!1,default:void 0,description:"Directories under the main repository to symlink into every general-purpose worktree on creation. Useful for sharing large opt-in dirs like `node_modules` so the model can run tests / builds inside the worktree without a fresh install. Paths must be relative to the repo root; absolute paths, anything containing `..`, and any path inside `.git` or `.matilda` (the CLI-managed metadata tree, which contains the worktrees directory itself) are rejected. Missing source dirs and existing destination paths are silently skipped (no overwrite, no failure).",showInDialog:!1}}}};function dt(){let t=ls;return t.general?.properties?.language&&(t.general.properties.language.options=Ai()),ls}b();function zl(t,e){let r=/\$(?:(\w+)|{([^}]+)})/g;return t.replace(r,(n,i,u)=>{let a=i||u;return e&&typeof e[a]=="string"?e[a]:process&&process.env&&typeof process.env[a]=="string"?process.env[a]:n})}function ze(t,e){return qr(t,new WeakSet,e)}function qr(t,e,r){if(t==null||typeof t=="boolean"||typeof t=="number")return t;if(typeof t=="string")return zl(t,r);if(Array.isArray(t)){if(e.has(t))return[...t];e.add(t);let n=t.map(i=>qr(i,e,r));return e.delete(t),n}if(typeof t=="object"){if(e.has(t))return{...t};e.add(t);let n={...t};for(let i in n)Object.prototype.hasOwnProperty.call(n,i)&&(n[i]=qr(n[i],e,r));return e.delete(t),n}return t}b();import*as le from"node:fs";function fs(t,e=""){let r={};for(let n in t){let i=e?`${e}.${n}`:n,u=t[n];r[i]={...u,key:i},u.properties&&(r={...r,...fs(u.properties,i)})}return r}var cs;function Ut(){return cs??(cs=fs(dt()))}function ps(t){return Ut()[t]}function Xl(t){return Ut()[t]?.requiresRestart??!1}function Hr(t){return Ut()[t]?.default}function Xe(t,e){let[r,...n]=e;if(!r||!(r in t))return;let i=t[r];if(n.length===0)return i;if(i&&typeof i=="object"&&i!==null)return Xe(i,n)}function ke(t,e){return Xe(t,e.split("."))}function ds(t,e,r){let n=ps(t);if(!n)return;let i=t.split("."),u=Xe(e,i);return u!==void 0||(u=Xe(r,i),u!==void 0)?u:n.default}var hs=["tools.approvalMode","general.language","general.outputLanguage","ui.theme","general.vimMode","tools.shell.enableInteractiveShell","general.preferredEditor","ide.enabled","ui.showLineNumbers","ui.hideTips","general.terminalBell","ui.enableWelcomeBack","general.gitCoAuthor.commit","general.gitCoAuthor.pr","context.fileFiltering.respectGitIgnore","context.fileFiltering.respectMatildaIgnore","general.disableAutoUpdate","privacy.usageStatisticsEnabled"];function Mm(){return Object.values(Ut()).filter(e=>e.showInDialog===!0).map(e=>e.key).sort((e,r)=>{let n=hs.indexOf(e),i=hs.indexOf(r);return n!==-1&&i!==-1?n-i:n!==-1?-1:i!==-1?1:0})}function ht(t,e){let r=t.split(".");return Xe(e,r)!==void 0}function ms(t){for(let e of t)if(e==="__proto__"||e==="constructor"||e==="prototype")return!0;return!1}function gs(t,e,r){let n=e.split(".");if(ms(n))return;let i=n.pop();if(!i)return;let u=t;for(let a of n)(!u[a]||typeof u[a]!="object")&&(u[a]={}),u=u[a];u[i]=r}function $(t,e,r){let n=e.split(".");if(ms(n))return;let i=n.pop();if(!i)return;let u=t;for(let a of n){u[a]===void 0&&(u[a]={});let f=u[a];if(typeof f=="object"&&f!==null)u=f;else return}u[i]=r}function Wr(t,e){let r=e.split("."),n=r.pop();if(!n)return;let i=t;for(let u of r){let a=i[u];if(typeof a!="object"||a===null)return;i=a}delete i[n]}function Nm(t,e,r){let n=JSON.parse(JSON.stringify(r));return gs(n,t,e),n}function Om(t,e,r){let n=structuredClone(r);return gs(n,t,e),n}function Bm(t){return Array.from(t).filter(e=>Xl(e))}function _m(t,e,r,n){t.forEach(i=>{let u=i.split("."),a=Xe(e,u),f=ht(i,r.forScope(n).settings);if(a===void 0){f&&r.setValue(n,i,void 0);return}let p=a===Hr(i);(f||!p)&&r.setValue(n,i,a)})}function Um(t,e,r,n,i){let u=ps(t),a;i&&ht(t,i)?a=ds(t,i,{}):ht(t,e)?a=ds(t,e,{}):a=Hr(t);let f=String(a);if(t==="general.outputLanguage"&&Mr(a))f=kr("Auto (detect from system)");else if(u?.type==="enum"&&u.options){let g=u.options?.find(d=>d.value===a);g?.label?f=kr(g.label)||g.label:f=`${a}`}let p=Hr(t),m=a!==p,h=n.has(t);return ht(t,e)||h?`${f}*`:m||h?`${f}*`:f}function jm(t,e){return!ht(t,e)}function ys(t){try{if(le.existsSync(t)){let e=`${t}.orig`;return le.copyFileSync(t,e),!0}}catch{}return!1}function Ss(t){try{let e=`${t}.orig`;if(le.existsSync(e))return le.copyFileSync(e,t),le.unlinkSync(e),!0}catch(e){console.error(`[settingsUtils] restoreSettingsFromBackup(${t}) failed:`,e)}return!1}function bs(t){try{let e=`${t}.orig`;le.existsSync(e)&&le.unlinkSync(e)}catch{}}b();function zr(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function Xr(t,e,r,n=[]){for(let i of Object.keys(e)){if(i==="__proto__"||i==="constructor"||i==="prototype")continue;let u=[...n,i],a=e[i],f=t[i],p=r(u);if(p==="shallow_merge"&&f&&a){let m=typeof f=="object"&&f!==null?f:{},h=typeof a=="object"&&a!==null?a:{};t[i]={...m,...h};continue}if(Array.isArray(f)){let m=Array.isArray(a)?a:[a];if(p==="concat"){t[i]=f.concat(m);continue}if(p==="union"){t[i]=[...new Set(f.concat(m))];continue}}zr(f)&&zr(a)?Xr(f,a,r,u):zr(a)?(t[i]={},Xr(t[i],a,r,u)):t[i]=a}return t}function Jr(t,...e){let r={};for(let n of e)n&&Xr(r,n,t);return r}b();var Ke=We(Ao(),1);import*as Vt from"node:fs";b();import*as X from"node:fs";function Cn(t,e,r={}){let{backupSuffix:n=".orig",encoding:i="utf-8"}=r,u=`${t}.tmp`,a=`${t}${n}`;try{X.existsSync(u)&&X.unlinkSync(u)}catch{}try{if(X.writeFileSync(u,e,{encoding:i,flush:!0}),X.existsSync(t)){if(X.statSync(t).isDirectory()){try{X.unlinkSync(u)}catch{}throw new Error(`Cannot write to '${t}' because it is a directory`)}try{X.renameSync(t,a)}catch(p){try{X.unlinkSync(u)}catch{}throw new Error(`Failed to backup existing file: ${p instanceof Error?p.message:String(p)}`)}}try{X.renameSync(u,t)}catch(f){let p,m=!1;if(X.existsSync(a)){m=!0;try{X.renameSync(a,t)}catch(g){p=g instanceof Error?g.message:String(g)}}let h=f instanceof Error?f.message:String(f);throw p?new Error(`Failed to write file: ${h}. Automatic restore failed: ${p}. Manual recovery may be required using backup file '${a}'.`):m?new Error(`Failed to write file: ${h}. Target was automatically restored from backup '${a}'.`):new Error(`Failed to write file: ${h}. No backup file was available for restoration.`)}}catch(f){try{X.existsSync(u)&&X.unlinkSync(u)}catch{}throw f}}function An(t,e,r=!1,n=[]){if(!Vt.existsSync(t)){let p=(0,Ke.stringify)(e,null,2);return Cn(t,p),!0}let i=Vt.readFileSync(t,"utf-8"),u;try{u=(0,Ke.parse)(i)}catch(p){return Ce("Error parsing settings file."),Ce(`Settings file may be corrupted: ${p instanceof Error?p.message:String(p)}`),!1}let a=Jt(u,e,r,n),f=(0,Ke.stringify)(a,null,2);try{(0,Ke.parse)(f)}catch(p){return Ce("Error: Refusing to write settings file \u2014 the result would not be valid JSON."),Ce(p instanceof Error?p.message:String(p)),!1}return Cn(t,f),!0}function Jt(t,e,r=!1,n=[],i=[]){let u=t;if(r){let a=Object.keys(u).filter(f=>!(f in e));for(let f of a)delete u[f]}for(let a of Object.getOwnPropertyNames(e)){if(a==="__proto__"||a==="constructor"||a==="prototype")continue;let f=e[a],p=[...i,a],m=typeof f=="object"&&f!==null&&!Array.isArray(f)&&Object.keys(f).length>0;if(Cd(p,n)){u[a]=m?Jt({},f):f;continue}m&&(typeof u[a]!="object"||u[a]===null||Array.isArray(u[a]))?u[a]=Jt({},f,r,n,p):m&&typeof u[a]=="object"&&u[a]!==null&&!Array.isArray(u[a])?u[a]=Jt(u[a],f,r,n,p):u[a]=f}return u}function Cd(t,e){return t.length===e.length&&t.every((r,n)=>r===e[n])}b();b();var xt=Ee("SETTINGS_MIGRATION");function Ad(t){return t==="SystemDefaults"?"system default":t.toLowerCase()}var vt=class{constructor(e,r){this.migrations=e;this.scope=r}migrate(e){xt.debug("MigrationScheduler: Starting migration chain");let r=e,n=[],i=[];for(let a of this.migrations)try{if(a.shouldMigrate(r)){xt.debug(`MigrationScheduler: Executing migration ${a.fromVersion} \u2192 ${a.toVersion}`);let f=Ad(this.scope),p=a.migrate(r,f);r=p.settings,i.push(...p.warnings),n.push({fromVersion:a.fromVersion,toVersion:a.toVersion}),xt.debug(`MigrationScheduler: Migration ${a.fromVersion} \u2192 ${a.toVersion} completed successfully`)}}catch(f){throw xt.error(`MigrationScheduler: Migration ${a.fromVersion} \u2192 ${a.toVersion} failed:`,f),f}let u=r.$version??1;return xt.debug(`MigrationScheduler: Migration chain complete. Final version: ${u}, Executed: ${n.length} migrations`),{settings:r,finalVersion:u,executedMigrations:n,warnings:i}}};b();b();var Ye={accessibility:"ui.accessibility",allowedTools:"tools.allowed",allowMCPServers:"mcp.allowed",autoAccept:"tools.autoAccept",autoConfigureMaxOldSpaceSize:"advanced.autoConfigureMemory",bugCommand:"advanced.bugCommand",chatCompression:"model.chatCompression",checkpointing:"general.checkpointing",coreTools:"tools.core",contextFileName:"context.fileName",customThemes:"ui.customThemes",customWittyPhrases:"ui.customWittyPhrases",debugKeystrokeLogging:"general.debugKeystrokeLogging",dnsResolutionOrder:"advanced.dnsResolutionOrder",enforcedAuthType:"security.auth.enforcedType",excludeTools:"tools.exclude",excludeMCPServers:"mcp.excluded",excludedProjectEnvVars:"advanced.excludedEnvVars",extensions:"extensions",fileFiltering:"context.fileFiltering",folderTrustFeature:"security.folderTrust.featureEnabled",folderTrust:"security.folderTrust.enabled",hasSeenIdeIntegrationNudge:"ide.hasSeenNudge",hideWindowTitle:"ui.hideWindowTitle",showStatusInTitle:"ui.showStatusInTitle",hideTips:"ui.hideTips",showLineNumbers:"ui.showLineNumbers",showCitations:"ui.showCitations",ideMode:"ide.enabled",includeDirectories:"context.includeDirectories",loadMemoryFromIncludeDirectories:"context.loadFromIncludeDirectories",maxSessionTurns:"model.maxSessionTurns",mcpServers:"mcpServers",mcpServerCommand:"mcp.serverCommand",memoryImportFormat:"context.importFormat",model:"model.name",preferredEditor:"general.preferredEditor",sandbox:"tools.sandbox",selectedAuthType:"security.auth.selectedType",shouldUseNodePtyShell:"tools.shell.enableInteractiveShell",shellPager:"tools.shell.pager",shellShowColor:"tools.shell.showColor",skipNextSpeakerCheck:"model.skipNextSpeakerCheck",telemetry:"telemetry",theme:"ui.theme",toolDiscoveryCommand:"tools.discoveryCommand",toolCallCommand:"tools.callCommand",usageStatisticsEnabled:"privacy.usageStatisticsEnabled",useExternalAuth:"security.auth.useExternal",useRipgrep:"tools.useRipgrep",vimMode:"general.vimMode",enableWelcomeBack:"ui.enableWelcomeBack",approvalMode:"tools.approvalMode",sessionTokenLimit:"model.sessionTokenLimit",contentGenerator:"model.generationConfig",skipLoopDetection:"model.skipLoopDetection",skipStartupContext:"model.skipStartupContext",enableOpenAILogging:"model.enableOpenAILogging",tavilyApiKey:"advanced.tavilyApiKey"},Kt=new Set(["ui","tools","mcp","advanced","model","general","context","security","ide","privacy","telemetry","extensions"]),Yt={disableAutoUpdate:"general.disableAutoUpdate",disableUpdateNag:"general.disableUpdateNag",disableLoadingPhrases:"ui.accessibility.disableLoadingPhrases",disableFuzzySearch:"context.fileFiltering.disableFuzzySearch",disableCacheControl:"model.generationConfig.disableCacheControl"},wo=new Set(["disableAutoUpdate","disableUpdateNag"]),ko=["theme","model","autoAccept","hideTips","vimMode","checkpointing","accessibility","allowedTools","allowMCPServers","autoConfigureMaxOldSpaceSize","bugCommand","chatCompression","coreTools","contextFileName","customThemes","customWittyPhrases","debugKeystrokeLogging","dnsResolutionOrder","enforcedAuthType","excludeTools","excludeMCPServers","excludedProjectEnvVars","fileFiltering","folderTrustFeature","folderTrust","hasSeenIdeIntegrationNudge","hideWindowTitle","showStatusInTitle","showLineNumbers","showCitations","ideMode","includeDirectories","loadMemoryFromIncludeDirectories","maxSessionTurns","mcpServerCommand","memoryImportFormat","preferredEditor","sandbox","selectedAuthType","shouldUseNodePtyShell","shellPager","shellShowColor","skipNextSpeakerCheck","toolDiscoveryCommand","toolCallCommand","usageStatisticsEnabled","useExternalAuth","useRipgrep","enableWelcomeBack","approvalMode","sessionTokenLimit","contentGenerator","skipLoopDetection","skipStartupContext","enableOpenAILogging","tavilyApiKey","disableAutoUpdate","disableUpdateNag","disableLoadingPhrases","disableFuzzySearch","disableCacheControl"];var Qt=class{fromVersion=1;toVersion=2;shouldMigrate(e){if(typeof e!="object"||e===null)return!1;let r=e,n=r.$version;return typeof n=="number"&&n>=2?!1:ko.some(i=>{if(!(i in r))return!1;let u=r[i];return!(typeof u=="object"&&u!==null&&!Array.isArray(u))})}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=e,i={},u=new Set,a=[];for(let[f,p]of Object.entries(Ye))if(f in n){let m=n[f];if(Kt.has(f)&&typeof m=="object"&&m!==null&&!Array.isArray(m)){i[f]=m,u.add(f);continue}if(typeof m=="object"&&m!==null&&!Array.isArray(m)&&p.startsWith(f+"."))for(let[h,g]of Object.entries(m))$(i,`${p}.${h}`,g);else $(i,p,m);u.add(f)}for(let[f,p]of Object.entries(Yt))if(f in n){let m=n[f];wo.has(f)?$(i,p,m===!0):typeof m=="boolean"&&$(i,p,m),u.add(f)}"mcpServers"in n&&(i.mcpServers=n.mcpServers,u.add("mcpServers"));for(let f of Object.keys(n))if(!u.has(f))if(Array.from(u).some(m=>{let h=Ye[m]||Yt[m];return h?h.startsWith(f+"."):!1})){let m=n[f];if(typeof m=="object"&&m!==null&&!Array.isArray(m))for(let[h,g]of Object.entries(m)){let d=`${f}.${h}`;Array.from(u).some(o=>(Ye[o]||Yt[o])===d)||$(i,d,g)}else i[f]=n[f]}else i[f]=n[f];return i.$version=2,{settings:i,warnings:a}}},wn=new Qt;b();var wd={"general.disableAutoUpdate":"general.enableAutoUpdate","general.disableUpdateNag":"general.enableAutoUpdate","ui.accessibility.disableLoadingPhrases":"ui.accessibility.enableLoadingPhrases","context.fileFiltering.disableFuzzySearch":"context.fileFiltering.enableFuzzySearch","model.generationConfig.disableCacheControl":"model.generationConfig.enableCacheControl"},kd={"general.enableAutoUpdate":["general.disableAutoUpdate","general.disableUpdateNag"]};function To(t){if(t===void 0)return{isPresent:!1,isValid:!1};if(typeof t=="boolean")return{isPresent:!0,isValid:!0,booleanValue:t};if(typeof t=="string"){let e=t.trim().toLowerCase();if(e==="true")return{isPresent:!0,isValid:!0,booleanValue:!0};if(e==="false")return{isPresent:!0,isValid:!0,booleanValue:!1}}return{isPresent:!0,isValid:!1}}var Zt=class{fromVersion=2;toVersion=3;shouldMigrate(e){return typeof e!="object"||e===null?!1:e.$version===2}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=structuredClone(e),i=new Set,u=[];for(let[a,f]of Object.entries(kd)){let p=!1,m=!1;for(let h of f){let g=ke(n,h),d=To(g);d.isPresent&&(Wr(n,h),i.add(h),d.isValid?(m=!0,d.booleanValue===!0&&(p=!0)):u.push(`Removed deprecated setting '${h}' from ${r} settings because the value is invalid. Expected boolean.`))}m&&$(n,a,!p)}for(let[a,f]of Object.entries(wd)){if(i.has(a))continue;let p=ke(n,a),m=To(p);m.isPresent&&(Wr(n,a),m.isValid?$(n,f,!m.booleanValue):u.push(`Removed deprecated setting '${a}' from ${r} settings because the value is invalid. Expected boolean or string "true"/"false".`))}return n.$version=3,{settings:n,warnings:u}}},kn=new Zt;b();var be="general.gitCoAuthor",er=class{fromVersion=3;toVersion=4;shouldMigrate(e){if(typeof e!="object"||e===null)return!1;let r=e;if(r.$version===3)return!0;if(r.$version===void 0){let n=ke(r,be);return!(n===void 0||typeof n=="object"&&n!==null&&!Array.isArray(n))}return!1}migrate(e,r){if(typeof e!="object"||e===null)throw new Error("Settings must be an object");let n=structuredClone(e),i=[],u=ke(n,be);if(typeof u=="boolean")$(n,be,{commit:u,pr:u});else if(typeof u=="string"){let a=u.trim().toLowerCase(),f=["false","no","off","0","disabled",""];["true","yes","on","1","enabled"].includes(a)?$(n,be,{commit:!0,pr:!0}):f.includes(a)?$(n,be,{commit:!1,pr:!1}):($(n,be,{commit:!1,pr:!1}),i.push(`Reset '${be}' in ${r} settings to {commit: false, pr: false} because the stored string '${u}' was not a recognized boolean form.`))}else u!==void 0&&(typeof u!="object"||u===null||Array.isArray(u))&&($(n,be,{commit:!1,pr:!1}),i.push(`Reset '${be}' in ${r} settings to {commit: false, pr: false} because the stored value was not a boolean or object.`));return n.$version=4,{settings:n,warnings:i}}},Tn=new er;b();var Id="Matilda",Io=Symbol("generatedMaincloudProfileRepairCandidate"),Fd=new Set(["http://localhost:18002/v1","http://10.22.0.13:18390/v1"]),Rd="OPENAI_API_KEY",Ld=1048576;function ie(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Pd(t){let e=ie(t.modelProviders)?t.modelProviders.openai:void 0;if(!Array.isArray(e)||e.length!==1)return null;let[r]=e;if(!ie(r))return null;let n=r.id,i=r.envKey,u=r.baseUrl,a=ie(r.generationConfig)?r.generationConfig.contextWindowSize:void 0,f=ie(t.model)?t.model.name:void 0,p=t.fastModel,m=ie(t.security)&&ie(t.security.auth)?t.security.auth.selectedType:void 0;return typeof n!="string"||i!==Rd||typeof u!="string"||!Fd.has(u)||a!==Ld||f!==n||p!==n||m!=="openai"?null:n}function Dt(t){return ie(t)?Pd(t)!==null:!1}function Fo(t){Object.defineProperty(t,Io,{value:!0,enumerable:!1,configurable:!0})}function Md(t){return!!(t&&typeof t=="object"&&t[Io]===!0)}function Nd(t){let e=structuredClone(t),r=Di(Ot,{baseUrl:Ei(Ot),apiKey:"",modelIds:Ci(Ot)}),n=r.modelSelection?.modelId,i=r.modelProviders?.find(f=>f.authType==="openai");if(n&&($(e,"model.name",n),$(e,"fastModel",n)),$(e,"ui.modelDisplayName",Id),i){let f=ie(e.modelProviders)?structuredClone(e.modelProviders):{};f.openai=structuredClone(i.models),e.modelProviders=f}$(e,"security.auth.selectedType","openai");let u=ie(e.security)?structuredClone(e.security):{},a=ie(u.auth)?structuredClone(u.auth):{};delete a.apiKey,delete a.baseUrl,u.auth=a,e.security=u;for(let[f,p]of Object.entries(r.providerState??{}))$(e,f,structuredClone(p));return e.$version=5,e}function Od(t){return{...structuredClone(t),$version:5}}var tr=class{fromVersion=4;toVersion=5;shouldMigrate(e){if(!ie(e))return!1;let r=e.$version;return r===4||r===void 0}migrate(e,r){if(!ie(e))throw new Error("Settings must be an object");return Md(e)&&Dt(e)?{settings:Nd(e),warnings:[`Updated ${r} settings from the generated internal maincloud profile to the current managed Matilda profile.`]}:{settings:Od(e),warnings:[]}}},In=new tr;var Ro=[wn,kn,Tn,In];function Lo(t,e){return new vt([...Ro],e).migrate(t)}function Po(t){if(typeof t!="object"||t===null)return!1;let r=t.$version,n=Ro.some(i=>i.shouldMigrate(t));return typeof r=="number"&&r>=je?!1:n}var Y=Ee("SETTINGS");function _o(t){let e,r=dt();for(let n of t){if(!r||!r[n])return;e=r[n],r=e.properties}return e?.mergeStrategy}var d0=De;function Uo(){return Q.getGlobalSettingsPath()}function h0(){return R.dirname(Uo())}var jo=["DEBUG","DEBUG_MODE"],Ln="MATILDA_CODE_SETTINGS_CORRUPTED_PATH",Pn="MATILDA_CODE_SETTINGS_WAS_RECOVERED",Qe=["MATILDA_HOME","MATILDA_RUNTIME_DIR","MATILDA_CODE_MCP_APPROVALS_PATH",Ln,Pn],Fn=new Set([...Qe,"MATILDA_SERVER_TOKEN","MATILDA_CLI_ENTRY","NODE_OPTIONS","NODE_PATH","NODE_TLS_REJECT_UNAUTHORIZED","LD_PRELOAD","LD_AUDIT","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","BASH_ENV","ENV","PATH","HOME","TMPDIR","TMP","TEMP"]),rr=new Set,nr=new Set,Re=new Map,Rn=!1,je=5,Ge="$version";function Go(){return B.env.MATILDA_CODE_SYSTEM_SETTINGS_PATH?B.env.MATILDA_CODE_SYSTEM_SETTINGS_PATH:Mo()==="darwin"?"/Library/Application Support/MatildaCode/settings.json":Mo()==="win32"?"C:\\ProgramData\\matilda-code\\settings.json":"/etc/matilda-code/settings.json"}function Bd(){return B.env.MATILDA_CODE_SYSTEM_DEFAULTS_PATH?B.env.MATILDA_CODE_SYSTEM_DEFAULTS_PATH:R.join(R.dirname(Go()),"system-defaults.json")}var us=(i=>(i.User="User",i.Workspace="Workspace",i.System="System",i.SystemDefaults="SystemDefaults",i))(us||{});function _d(t,e){let r=t[Ge];if(typeof r!="number"||r<je)return[];let n=[],i=new Set;for(let[a,f]of Object.entries(Ye)){if(a===f||!(a in t))continue;let p=t[a];Kt.has(a)&&typeof p=="object"&&p!==null&&!Array.isArray(p)||(i.add(a),n.push(`Warning: Legacy setting '${a}' will be ignored in ${e}. Please use '${f}' instead.`))}let u=new Set(Object.keys(dt()));for(let a of Object.keys(t))a!==Ge&&(i.has(a)||u.has(a)||Y.warn(`Unknown setting '${a}' will be ignored in ${e}.`));return n}function $o(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ud(t){return $o(t)?Object.values(t).some(e=>Array.isArray(e)&&e.length>0):!1}function jd(t){if(!t.isTrusted)return[];let e=t.user.originalSettings,r=t.workspace.originalSettings;if(!ct(e)||!ct(r))return[];let n=e.modelProviders,i=r.modelProviders;return!($o(i)&&Object.keys(i).length===0)||!Ud(n)?[]:[`Warning: '${t.workspace.path}' defines an empty 'modelProviders' object. This has no effect with current merge behavior, but may indicate a configuration error. If REPLACE semantics are introduced for 'modelProviders' in the future, this would override user-level model providers in '${t.user.path}'.`]}function f0(t){let e=new Set;for(let r of t.migrationWarnings)e.add(`Warning: ${r}`);for(let r of["User","Workspace"]){let n=t.forScope(r);if(n.rawJson===void 0)continue;let i=n.originalSettings;for(let u of _d(i,n.path))e.add(u)}for(let r of jd(t))e.add(r);return[...e]}function No(t,e){let r=t.mcpServers;if(!r||Object.keys(r).length===0)return t;let n={};for(let[i,u]of Object.entries(r))n[i]={...u,scope:e};return{...t,mcpServers:n}}function qo(t,e,r,n,i){let u=i?No(n,"workspace"):{};return Jr(_o,{},e,r,u,No(t,"system"))}var ir=class{constructor(e,r,n,i,u,a,f=[],p=void 0,m=!1){this.system=e,this.systemDefaults=r,this.user=n,this.workspace=i,this.isTrusted=u,this.migratedInMemorScopes=a,this.migrationWarnings=f,this.corruptedPath=p,this.wasRecovered=m,this._merged=this.computeMergedSettings()}system;systemDefaults;user;workspace;isTrusted;migratedInMemorScopes;migrationWarnings;corruptedPath;wasRecovered;corruptionDialogDismissed=!1;_merged;get merged(){return this._merged}computeMergedSettings(){return qo(this.system.settings,this.systemDefaults.settings,this.user.settings,this.workspace.settings,this.isTrusted)}forScope(e){switch(e){case"User":return this.user;case"Workspace":return this.workspace;case"System":return this.system;case"SystemDefaults":return this.systemDefaults;default:throw new Error(`Invalid scope: ${e}`)}}setValue(e,r,n){r==="model.name"&&typeof n=="string"&&(n=fi(n));let i=this.forScope(e);$(i.settings,r,n),$(i.originalSettings,r,n),this._merged=this.computeMergedSettings();let u=r==="mcpServers"?r.split("."):[];Jd(i,Xd(r,n),u)}recomputeMerged(){this._merged=this.computeMergedSettings()}reloadScopeFromDisk(e){let r=this.forScope(e);try{if(!_.existsSync(r.path)){r.settings={},r.originalSettings={},r.rawJson=void 0,this._merged=this.computeMergedSettings();return}let n=_.readFileSync(r.path,"utf-8"),i=JSON.parse((0,Et.default)(n));if(i&&typeof i=="object"&&!Array.isArray(i)){let u=ze(i,Ho());r.settings=u,r.originalSettings=structuredClone(i),r.rawJson=n}}catch(n){Y.warn(`reloadScopeFromDisk(${e}): ${oe(n)}`)}this._merged=this.computeMergedSettings()}getUserHooks(){return this.user.settings.hooks}getProjectHooks(){if(this.isTrusted)return this.workspace.settings.hooks}};function p0(){let t={path:"",settings:{},originalSettings:{},rawJson:"{}"};return new ir(t,t,t,t,!1,new Set,[],void 0,!1)}function Mn(){let t=sr(),e=Q.getGlobalMatildaDir(),r=new Set([R.normalize(R.join(t,".env")),R.normalize(R.join(e,".env"))]),n=R.normalize(R.join(t,De,".env"));return r.add(n),r}var Oo=!1;function Gd(){if(Oo||(Oo=!0,B.env.MATILDA_HOME&&B.env.MATILDA_RUNTIME_DIR))return;let t=B.env.MATILDA_HOME,e=Q.getGlobalMatildaDir(),r=[R.join(e,".env")];t||r.push(R.join(R.dirname(e),".env"));for(let i of r)Bo(i);let n=B.env.MATILDA_HOME;if(n&&n!==t){let i=Q.getGlobalMatildaDir();i!==e&&Bo(R.join(i,".env"))}}function Bo(t){if(_.existsSync(t))try{let e=Ze.parse(_.readFileSync(t,"utf-8"));for(let r of Qe)e[r]&&!Object.hasOwn(B.env,r)&&(B.env[r]=e[r])}catch{}}function Ho(){let t=Q.getGlobalMatildaDir(),e=[R.join(t,".env")];B.env.MATILDA_HOME||e.push(R.join(R.dirname(t),".env"));let r={};for(let n of e)if(_.existsSync(n))try{let i=Ze.parse(_.readFileSync(n,"utf-8"));for(let u in i)Object.hasOwn(i,u)&&!Object.hasOwn(B.env,u)&&(r[u]??=i[u])}catch(i){Y.warn(`Failed to read home .env candidate ${n}: ${oe(i)}`)}return r}function $d(t){if(!B.env.MATILDA_HOME)return null;let e=Q.getGlobalMatildaDir(),r=B.env.MATILDA_HOME;delete B.env.MATILDA_HOME;let n;try{n=Q.getGlobalMatildaDir()}finally{B.env.MATILDA_HOME=r}if(R.resolve(e)===R.resolve(n)||_.existsSync(t))return null;let i=R.join(n,"settings.json");return _.existsSync(i)?`MATILDA_HOME points to "${e}" but no settings.json was found there. Existing config remains at "${n}" \u2014 OAuth tokens, settings, memory, extensions, and skills are not auto-migrated. Copy them manually if you want them to apply at the new location.`:null}function Wo(t){return R.resolve(t)===R.resolve(R.join(sr(),De,"settings.json"))}function qd(t){let{filePath:e,scope:r,settingsObject:n}=t;if(r!=="User"||!Wo(e)||!Dt(n))return null;let i=R.join(R.dirname(e),"settings.json.pre-maincloud.bak");if(!_.existsSync(i))return null;try{let u=_.readFileSync(i,"utf-8"),a=JSON.parse((0,Et.default)(u));return typeof a!="object"||a===null||Array.isArray(a)?null:(_.writeFileSync(e,u,"utf-8"),Y.warn(`Restored ${e} from ${i} before applying managed Matilda settings.`),{settingsObject:a,content:u})}catch(u){return Y.warn(`Failed to restore ${i}: ${oe(u)}`),null}}function Hd(t){let{filePath:e,scope:r,settingsObject:n}=t;return r==="User"&&Wo(e)&&Dt(n)}function zo(t,e,r=Mn()){let n=sr(),i=$r(t).isTrusted,u=Q.getGlobalMatildaDir(),a=R.normalize(R.join(n,De)),f=R.normalize(u)!==a,p=d=>i!==!1||r.has(R.normalize(d)),m=()=>{let d=[R.join(u,".env")];f&&d.push(R.join(a,".env")),d.push(R.join(n,".env"));for(let s of d)if(_.existsSync(s)&&p(s))return s;return null},h=R.resolve(e),g=!1;for(;;){if(h===n){g=!0;let s=m();if(s)return s}else{let s=R.join(h,De,".env");if(_.existsSync(s)&&p(s))return s;let o=R.join(h,".env");if(_.existsSync(o)&&p(o))return o}let d=R.dirname(h);if(d===h||!d)return g?null:m();h=d}}function Xo(t){if(t&&_.existsSync(t)){let e=_.readFileSync(t),r=Ze.parse(e);r.GOOGLE_CLOUD_PROJECT?B.env.GOOGLE_CLOUD_PROJECT=r.GOOGLE_CLOUD_PROJECT:B.env.GOOGLE_CLOUD_PROJECT="cloudshell-gca"}else B.env.GOOGLE_CLOUD_PROJECT="cloudshell-gca"}function Wd(t){let e=Mn(),r=zo(t,B.cwd(),e);if(B.env.CLOUD_SHELL==="true"&&Xo(r),r)try{let n=_.readFileSync(r,"utf-8"),i=Ze.parse(n),u=t?.advanced?.excludedEnvVars||jo,a=R.normalize(r),f=e.has(a),p=f||R.basename(R.dirname(a))===De;for(let m in i)if(Object.hasOwn(i,m)){if(!f&&Qe.includes(m)||!p&&u.includes(m))continue;Object.hasOwn(B.env,m)||(B.env[m]=i[m],rr.add(m)),Rn||Re.set(m,i[m])}}catch{}if(t.env)for(let[n,i]of Object.entries(t.env))Qe.includes(n)||(!Object.hasOwn(B.env,n)&&typeof i=="string"&&(B.env[n]=i,nr.add(n)),!Rn&&typeof i=="string"&&!Re.has(n)&&Re.set(n,i));Rn=!0}function m0(t,e){let r=Mn(),n=zo(t,e,r);B.env.CLOUD_SHELL==="true"&&Xo(n);let i=!1,u=new Map,a=new Map;if(n)try{let h=_.readFileSync(n,"utf-8"),g=Ze.parse(h),d=t?.advanced?.excludedEnvVars||jo,s=R.normalize(n),o=r.has(s),l=o||R.basename(R.dirname(s))===De;for(let c in g)Object.hasOwn(g,c)&&(Fn.has(c)||!o&&Qe.includes(c)||!l&&d.includes(c)||u.set(c,g[c]))}catch{i=!0}if(t.env)for(let[h,g]of Object.entries(t.env))Fn.has(h)||Qe.includes(h)||typeof g=="string"&&(u.has(h)||i&&Re.has(h)||a.set(h,g));let f=new Set([...u.keys(),...a.keys()]),p=[],m=[];if(!i){let h=new Set([...Re.keys(),...rr,...nr]);for(let g of h)!f.has(g)&&!Fn.has(g)&&(delete B.env[g],m.push(g))}for(let[h,g]of u)B.env[h]!==g&&p.push(h),B.env[h]=g;for(let[h,g]of a)B.env[h]!==g&&p.push(h),B.env[h]=g;if(!i){rr.clear();for(let h of u.keys())rr.add(h);Re.clear();for(let[h,g]of u)Re.set(h,g);for(let[h,g]of a)Re.set(h,g)}nr.clear();for(let h of a.keys())nr.add(h);return{updatedKeys:p,removedKeys:m}}var zd=".corrupted";function g0(t=B.cwd(),e=!0){let r=typeof e=="object"?e:{consumeCorruptionEnvVars:e};Gd();let n=Uo(),i=$d(n),u={},a={},f={},p={},m=[],h=Go(),g=Bd(),d=new Set,s=R.resolve(t),o=R.resolve(sr()),l=s;try{l=_.realpathSync(s)}catch{}let c=_.realpathSync(o),y=new Q(t).getWorkspaceSettingsPath(),S=(H,pe)=>{try{if(_.existsSync(H)){let ve=_.readFileSync(H,"utf-8"),me,He=`${H}${zd}`,ge=!1,kt=!1,Tt=null;try{me=JSON.parse((0,Et.default)(ve))}catch(ae){try{_.copyFileSync(H,He),ge=!0}catch(se){Y.warn(`Failed to copy corrupted file: ${oe(se)}`)}let ue=`${H}.orig`;if(_.existsSync(ue)){Y.warn(`Settings file ${H} has invalid JSON (${oe(ae)}). Attempting recovery from backup ${ue}.`);try{let se=_.readFileSync(ue,"utf-8"),Er=JSON.parse((0,Et.default)(se));_.writeFileSync(H,se,"utf-8"),ve=se,me=Er;let Cr=`Settings file ${H} had invalid JSON and was recovered from backup ${ue}. Some recent settings changes may have been lost.`;Y.warn(Cr),kt=!0}catch(se){Y.warn(`Failed to recover from backup ${ue}: ${oe(se)}. Falling back to empty settings.`)}}if(!me){let se=`Settings file ${H} has invalid JSON. Your settings have been reset.`;if(Y.warn(se),ge)try{_.writeFileSync(H,"{}","utf-8")}catch{}return{settings:{},migrationWarnings:[],corruptedPath:ge?He:void 0,wasRecovered:!1}}}let It=B.env[Ln];if((r.consumeCorruptionEnvVars??!0)&&It&&It===He&&pe==="User"&&(ge=!0,Tt=B.env[Pn]==="1",delete B.env[Ln],delete B.env[Pn]),typeof me!="object"||me===null||Array.isArray(me))return m.push({message:"Settings file is not a valid JSON object.",path:H}),{settings:{}};let J=me,it=qd({filePath:H,scope:pe,settingsObject:J});it&&(J=it.settingsObject,ve=it.content);let Ft=Hd({filePath:H,scope:pe,settingsObject:J});Ft&&Fo(J);let Rt=Ge in J,st=J[Ge],Lt=Rt&&typeof st!="number",Pt=typeof st=="number"&&st<je,Mt,ot=ae=>{try{An(H,J,!0)||Y.error(`${ae}: updateSettingsFilePreservingFormat returned false for ${H}`)}catch(ue){Y.error(`${ae}: ${oe(ue)}`)}};if(Po(J)){let ae=Lo(J,pe);ae.executedMigrations.length>0?(J=ae.settings,Mt=ae.warnings,ot("Error migrating settings file on disk")):(Pt||Lt)&&!ge&&(J[Ge]=je,Y.warn(`Settings version metadata in ${H} could not be migrated by any registered migration. Normalizing ${Ge} to ${je}.`),ot("Error normalizing settings version on disk"))}else(!Rt||Lt||Pt)&&!ge&&!(Dt(J)&&!Ft)&&(J[Ge]=je,ot("Error normalizing settings version on disk"));let at={settings:J,rawJson:ve,migrationWarnings:Mt??[]};return ge&&(at.corruptedPath=He,at.wasRecovered=kt||(Tt??!1)),at}}catch(ve){m.push({message:oe(ve),path:H})}return{settings:{}}},D=S(h,"System"),E=S(g,"SystemDefaults"),C=S(n,"User"),T={settings:{},rawJson:void 0};l!==c&&(T=S(y,"Workspace"));let F=structuredClone(D.settings),O=structuredClone(E.settings),j=structuredClone(C.settings),q=structuredClone(T.settings),z=Ho();u=ze(D.settings,z),a=ze(E.settings,z),f=ze(C.settings,z),p=ze(T.settings,z),f.ui?.theme==="VS"?f.ui.theme=Ur.name:f.ui?.theme==="VS2015"&&(f.ui.theme=jr.name),p.ui?.theme==="VS"?p.ui.theme=Ur.name:p.ui?.theme==="VS2015"&&(p.ui.theme=jr.name);let xe=Jr(_o,{},u,f),qe=$r(xe).isTrusted??!0,vr=qo(u,a,f,p,qe);if(r.skipLoadEnvironment||Wd(vr),m.length>0){let H=m.map(pe=>`Error in ${pe.path}: ${pe.message}`);throw new Nt(`${H.join(`
38
38
  `)}
39
39
  Please fix the configuration file(s) and try again.`)}let Dr=[...i?[i]:[],...D.migrationWarnings??[],...E.migrationWarnings??[],...C.migrationWarnings??[],...T.migrationWarnings??[]];return new ir({path:h,settings:u,originalSettings:F,rawJson:D.rawJson},{path:g,settings:a,originalSettings:O,rawJson:E.rawJson},{path:n,settings:f,originalSettings:j,rawJson:C.rawJson},{path:y,settings:p,originalSettings:q,rawJson:T.rawJson},qe,d,Dr,C.corruptedPath,C.wasRecovered??!1)}function Xd(t,e){let r={};return $(r,t,e),r}function Jd(t,e=t.originalSettings,r=[]){try{let n=R.dirname(t.path);_.existsSync(n)||_.mkdirSync(n,{recursive:!0}),An(t.path,e,!1,r)||Y.error(`saveSettings: updateSettingsFilePreservingFormat returned false for ${t.path}`)}catch(n){throw Y.error("Error saving user settings file."),Y.error(n instanceof Error?n.message:String(n)),n}}b();b();b();import Zf from"node:path";b();import Vd from"node:process";import Kd from"node:fs/promises";import{fileURLToPath as Yd}from"node:url";import et from"node:path";var Jo=t=>t instanceof URL?Yd(t):t;async function Vo(t,{cwd:e=Vd.cwd(),type:r="file",stopAt:n}={}){let i=et.resolve(Jo(e)??""),{root:u}=et.parse(i);n=et.resolve(i,Jo(n??u));let a=et.isAbsolute(t);for(;i;){let f=a?t:et.join(i,t);try{let p=await Kd.stat(f);if(r==="file"&&p.isFile()||r==="directory"&&p.isDirectory())return f}catch{}if(i===n||i===u)break;i=et.dirname(i)}}b();import Vf from"node:fs/promises";import Kf from"node:path";b();var xa=We(ba(),1);b();function xh(t,e){let r=e===0?-1:t.lastIndexOf(`
40
40
  `,e-1);return{line:r===-1?0:t.slice(0,r+1).match(/\n/g).length,column:e-r-1}}function Gn(t,e,{oneBased:r=!1}={}){if(typeof t!="string")throw new TypeError("Text parameter should be a string");if(!Number.isInteger(e))throw new TypeError("Index parameter should be an integer");if(e<0||e>t.length)throw new RangeError("Index out of bounds");let n=xh(t,e);return r?{line:n.line+1,column:n.column+1}:n}var vh=t=>`\\u{${t.codePointAt(0).toString(16)}}`,$n=class t extends Error{name="JSONError";fileName;#n;#s;#t;#f;#A;constructor(e){if(typeof e=="string")super(),this.#t=e;else{let{jsonParseError:r,fileName:n,input:i}=e;super(void 0,{cause:r}),this.#n=i,this.#s=r,this.fileName=n}Error.captureStackTrace?.(this,t)}get message(){this.#t??=`${Eh(this.#s.message)}${this.#n===""?" while parsing empty string":""}`;let{codeFrame:e}=this;return`${this.#t}${this.fileName?` in ${this.fileName}`:""}${e?`
41
41
 
42
42
  ${e}
43
- `:""}`}set message(e){this.#t=e}#w(e){if(!this.#s)return;let r=this.#n,n=Dh(r,this.#s.message);if(n)return(0,xa.codeFrameColumns)(r,{start:n},{highlightCode:e})}get codeFrame(){return this.#f??=this.#w(!0),this.#f}get rawCodeFrame(){return this.#A??=this.#w(!1),this.#A}},Dh=(t,e)=>{let r=e.match(/in JSON at position (?<index>\d+)(?: \(line (?<line>\d+) column (?<column>\d+)\))?$/);if(!r)return;let{index:n,line:i,column:u}=r.groups;return i&&u?{line:Number(i),column:Number(u)}:Gn(t,Number(n),{oneBased:!0})},Eh=t=>t.replace(/(?<=^Unexpected token )(?<quote>')?(.)\k<quote>/,(e,r,n)=>`"${n}"(${vh(n)})`);function qn(t,e,r){typeof e=="string"&&(r=e,e=void 0);try{return JSON.parse(t,e)}catch(n){throw new $n({jsonParseError:n,fileName:r,input:t})}}var Ou=We(Mu(),1);b();import{fileURLToPath as Jf}from"node:url";function Nu(t){return t instanceof URL?Jf(t):t}var Yf=t=>Kf.resolve(Nu(t)??".","package.json"),Qf=(t,e)=>{let r=typeof t=="string"?qn(t):t;return e&&(0,Ou.default)(r),r};async function Bu({cwd:t,normalize:e=!0}={}){let r=await Vf.readFile(Yf(t),"utf8");return Qf(r,e)}async function _u(t){let e=await Vo("package.json",t);if(e)return{packageJson:await Bu({...t,cwd:Zf.dirname(e)}),path:e}}import{fileURLToPath as ep}from"node:url";import tp from"node:path";var rp=ep(import.meta.url),np=tp.dirname(rp),br;async function Uu(){if(br)return br;let t=await _u({cwd:np});if(t)return br=t.packageJson,br}async function ju(){let t=await Uu();return"0.20.1"}b();function pS(t,e){let r=e??as(t),n=t.forScope(r),i=null,u=null;return{getValue(a){return ke(t.merged,a)},setValue(a,f){for(let p of a.split("."))if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Refusing to write settings key with reserved segment: ${a}`);t.setValue(r,a,f)},getModelProviders(){return t.merged.modelProviders??{}},persist(){},backup(){ys(n.path),i=structuredClone(n.settings),u=structuredClone(n.originalSettings)},restore(){Ss(n.path)||console.error(`[loadedSettingsAdapter] On-disk rollback of ${n.path} failed; in-memory state was restored but the file may be inconsistent. Re-run /auth or inspect the file directly to recover.`),i!==null&&(n.settings=i),u!==null&&(n.originalSettings=u),t.recomputeMerged()},cleanupBackup(){bs(n.path),i=null,u=null}}}b();var Gu=t=>{let e=t/1073741824;return t<1048576?`${(t/1024).toFixed(1)} KB`:t<1073741824?`${(t/1048576).toFixed(1)} MB`:`${e.toFixed(2)} GB`},yS=t=>{let r=Date.now()-t,n=Math.floor(r/1e3),i=Math.floor(n/60),u=Math.floor(i/60),a=Math.floor(u/24),f=Math.floor(a/7),p=Math.floor(a/30);return p>0?p===1?"1 month ago":`${p} months ago`:f>0?f===1?"1 week ago":`${f} weeks ago`:a>0?a===1?"1 day ago":`${a} days ago`:u>0?u===1?"1 hour ago":`${u} hours ago`:i>0?i===1?"1 minute ago":`${i} minutes ago`:"just now"},SS=t=>t<1e3?`${t}`:t<1e4?`${(t/1e3).toFixed(1)}k`:`${Math.floor(t/1e3)}k`,bS=(t,e)=>{if(t<=0)return"0s";if(t<1e3)return`${Math.round(t)}ms`;let r=t/1e3;if(r<60){let f=r.toFixed(1);return e?.hideTrailingZeros&&f.endsWith(".0")?`${f.slice(0,-2)}s`:`${f}s`}let n=Math.floor(r/3600),i=Math.floor(r%3600/60),u=Math.floor(r%60),a=[];return n>0&&a.push(`${n}h`),i>0&&a.push(`${i}m`),u>0&&a.push(`${u}s`),a.length===0?n>0?`${n}h`:i>0?`${i}m`:`${u}s`:a.join(" ")};b();var DS="craft/drainMidTurnQueue";b();import nt from"node:process";import ip from"node:os";import{execFile as sp}from"node:child_process";b();var xr="190f07b15";var $u=Ee("STATUS"),op=5e3;function qu(t){return new Promise(e=>{sp(t,["--version"],{timeout:op,encoding:"utf-8"},(r,n)=>{if(r){e("unknown");return}e(typeof n=="string"?n.trim():"unknown")})})}async function ap(){return qu("npm")}async function MS(){return qu("git")}async function up(t){if(!t.services.config?.getIdeMode())return"";try{return(await yi.getInstance())?.getDetectedIdeDisplayName()??""}catch{return""}}function Hu(t=!1){let e=nt.env.SANDBOX;return!e||e==="sandbox-exec"?e==="sandbox-exec"?`sandbox-exec (${nt.env.SEATBELT_PROFILE||"unknown"})`:"no sandbox":t?e.replace(/^matilda-(?:code-)?/,""):e}async function lp(t){let e=nt.platform,r=nt.arch,n=ip.release(),i=nt.version,u=await ap(),a=Hu(),f=t.services.config?.getModelDisplayName()||"Unknown",p=await ju(),m=t.services.config?.getAuthType()||"",h=await up(t),g=t.services.config?.getSessionId()||"unknown",d=t.services.config?.getProxy();return{cliVersion:p,osPlatform:e,osArch:r,osRelease:n,nodeVersion:i,npmVersion:u,sandboxEnv:a,modelVersion:f,selectedAuthType:m,ideClient:h,sessionId:g,proxy:d}}async function NS(t){let e=await lp(t),r=Gu(nt.memoryUsage().rss),n=Hu(!0),i=e.selectedAuthType==="openai"||e.selectedAuthType==="anthropic"?t.services.config?.getContentGeneratorConfig():void 0,u=i?.baseUrl,a=i?.apiKeyEnvKey,f=xr&&!["N/A"].includes(xr)?xr:void 0,p=t.services.settings?.merged?.fastModel||void 0,m=cp(t);return{...e,sandboxEnv:n,memoryUsage:r,baseUrl:u,apiKeyEnvKey:a,gitCommit:f,fastModel:p,lspStatus:m}}function cp(t){try{let e=t.services.config?.getLspStatusSnapshot?.();return e?(t.services.config?.getDebugMode?.()&&$u.debug("LSP status snapshot for /status:",e),dp(e)):void 0}catch(e){t.services.config?.getDebugMode?.()&&$u.debug("Unable to read LSP status snapshot for /status:",e);return}}function dp(t){if(!t.enabled)return"disabled";if(t.initializationError)return`enabled, initialization failed: ${t.initializationError}`;if(t.statusUnavailable)return"enabled, status unavailable";if(t.configuredServers===0)return"enabled, no servers configured";let e=[t.failedServers>0?`${t.failedServers} failed`:"",t.inProgressServers>0?`${t.inProgressServers} starting`:"",t.notStartedServers>0?`${t.notStartedServers} not started`:""].filter(Boolean),r=e.length>0?` (${e.join(", ")})`:"";return`enabled, ${t.readyServers}/${t.configuredServers} ready${r}`}export{Br as a,em as b,tm as c,G as d,N as e,sm as f,Oe as g,om as h,am as i,Ur as j,jr as k,Gl as l,ql as m,$r as n,as as o,wm as p,El as q,Mr as r,es as s,Nr as t,Il as u,Xp as v,Jp as w,ps as x,Xl as y,Hr as z,Xe as A,ke as B,ds as C,Mm as D,ht as E,Nm as F,Om as G,Bm as H,_m as I,Um as J,jm as K,d0 as L,h0 as M,Ln as N,Pn as O,us as P,f0 as Q,p0 as R,Gd as S,Wd as T,m0 as U,zd as V,g0 as W,Hn as X,Wn as Y,Ca as Z,wa as _,Fa as $,Pa as aa,Kn as ba,Ba as ca,Ua as da,Uu as ea,ju as fa,pS as ga,hp as ha,Tr as ia,ki as ja,bp as ka,Fr as la,Ep as ma,Cp as na,Fi as oa,Ri as pa,Li as qa,Pi as ra,Mi as sa,Ni as ta,Oi as ua,Bi as va,_i as wa,Ui as xa,ji as ya,Gi as za,$i as Aa,qi as Ba,Hi as Ca,Wi as Da,zi as Ea,Xi as Fa,Ji as Ga,Vi as Ha,Ki as Ia,Yi as Ja,Qi as Ka,Ne as La,Tp as Ma,Rr as Na,Lr as Oa,Pr as Pa,Ip as Qa,Fp as Ra,gl as Sa,Rp as Ta,Lp as Ua,Pp as Va,Mp as Wa,Np as Xa,Op as Ya,Bp as Za,yl as _a,_p as $a,Up as ab,DS as bb,Gu as cb,yS as db,SS as eb,bS as fb,ap as gb,MS as hb,NS as ib};
43
+ `:""}`}set message(e){this.#t=e}#w(e){if(!this.#s)return;let r=this.#n,n=Dh(r,this.#s.message);if(n)return(0,xa.codeFrameColumns)(r,{start:n},{highlightCode:e})}get codeFrame(){return this.#f??=this.#w(!0),this.#f}get rawCodeFrame(){return this.#A??=this.#w(!1),this.#A}},Dh=(t,e)=>{let r=e.match(/in JSON at position (?<index>\d+)(?: \(line (?<line>\d+) column (?<column>\d+)\))?$/);if(!r)return;let{index:n,line:i,column:u}=r.groups;return i&&u?{line:Number(i),column:Number(u)}:Gn(t,Number(n),{oneBased:!0})},Eh=t=>t.replace(/(?<=^Unexpected token )(?<quote>')?(.)\k<quote>/,(e,r,n)=>`"${n}"(${vh(n)})`);function qn(t,e,r){typeof e=="string"&&(r=e,e=void 0);try{return JSON.parse(t,e)}catch(n){throw new $n({jsonParseError:n,fileName:r,input:t})}}var Ou=We(Mu(),1);b();import{fileURLToPath as Jf}from"node:url";function Nu(t){return t instanceof URL?Jf(t):t}var Yf=t=>Kf.resolve(Nu(t)??".","package.json"),Qf=(t,e)=>{let r=typeof t=="string"?qn(t):t;return e&&(0,Ou.default)(r),r};async function Bu({cwd:t,normalize:e=!0}={}){let r=await Vf.readFile(Yf(t),"utf8");return Qf(r,e)}async function _u(t){let e=await Vo("package.json",t);if(e)return{packageJson:await Bu({...t,cwd:Zf.dirname(e)}),path:e}}import{fileURLToPath as ep}from"node:url";import tp from"node:path";var rp=ep(import.meta.url),np=tp.dirname(rp),br;async function Uu(){if(br)return br;let t=await _u({cwd:np});if(t)return br=t.packageJson,br}async function ju(){let t=await Uu();return"0.20.2"}b();function pS(t,e){let r=e??as(t),n=t.forScope(r),i=null,u=null;return{getValue(a){return ke(t.merged,a)},setValue(a,f){for(let p of a.split("."))if(p==="__proto__"||p==="constructor"||p==="prototype")throw new Error(`Refusing to write settings key with reserved segment: ${a}`);t.setValue(r,a,f)},getModelProviders(){return t.merged.modelProviders??{}},persist(){},backup(){ys(n.path),i=structuredClone(n.settings),u=structuredClone(n.originalSettings)},restore(){Ss(n.path)||console.error(`[loadedSettingsAdapter] On-disk rollback of ${n.path} failed; in-memory state was restored but the file may be inconsistent. Re-run /auth or inspect the file directly to recover.`),i!==null&&(n.settings=i),u!==null&&(n.originalSettings=u),t.recomputeMerged()},cleanupBackup(){bs(n.path),i=null,u=null}}}b();var Gu=t=>{let e=t/1073741824;return t<1048576?`${(t/1024).toFixed(1)} KB`:t<1073741824?`${(t/1048576).toFixed(1)} MB`:`${e.toFixed(2)} GB`},yS=t=>{let r=Date.now()-t,n=Math.floor(r/1e3),i=Math.floor(n/60),u=Math.floor(i/60),a=Math.floor(u/24),f=Math.floor(a/7),p=Math.floor(a/30);return p>0?p===1?"1 month ago":`${p} months ago`:f>0?f===1?"1 week ago":`${f} weeks ago`:a>0?a===1?"1 day ago":`${a} days ago`:u>0?u===1?"1 hour ago":`${u} hours ago`:i>0?i===1?"1 minute ago":`${i} minutes ago`:"just now"},SS=t=>t<1e3?`${t}`:t<1e4?`${(t/1e3).toFixed(1)}k`:`${Math.floor(t/1e3)}k`,bS=(t,e)=>{if(t<=0)return"0s";if(t<1e3)return`${Math.round(t)}ms`;let r=t/1e3;if(r<60){let f=r.toFixed(1);return e?.hideTrailingZeros&&f.endsWith(".0")?`${f.slice(0,-2)}s`:`${f}s`}let n=Math.floor(r/3600),i=Math.floor(r%3600/60),u=Math.floor(r%60),a=[];return n>0&&a.push(`${n}h`),i>0&&a.push(`${i}m`),u>0&&a.push(`${u}s`),a.length===0?n>0?`${n}h`:i>0?`${i}m`:`${u}s`:a.join(" ")};b();var DS="craft/drainMidTurnQueue";b();import nt from"node:process";import ip from"node:os";import{execFile as sp}from"node:child_process";b();var xr="95fee2669";var $u=Ee("STATUS"),op=5e3;function qu(t){return new Promise(e=>{sp(t,["--version"],{timeout:op,encoding:"utf-8"},(r,n)=>{if(r){e("unknown");return}e(typeof n=="string"?n.trim():"unknown")})})}async function ap(){return qu("npm")}async function MS(){return qu("git")}async function up(t){if(!t.services.config?.getIdeMode())return"";try{return(await yi.getInstance())?.getDetectedIdeDisplayName()??""}catch{return""}}function Hu(t=!1){let e=nt.env.SANDBOX;return!e||e==="sandbox-exec"?e==="sandbox-exec"?`sandbox-exec (${nt.env.SEATBELT_PROFILE||"unknown"})`:"no sandbox":t?e.replace(/^matilda-(?:code-)?/,""):e}async function lp(t){let e=nt.platform,r=nt.arch,n=ip.release(),i=nt.version,u=await ap(),a=Hu(),f=t.services.config?.getModelDisplayName()||"Unknown",p=await ju(),m=t.services.config?.getAuthType()||"",h=await up(t),g=t.services.config?.getSessionId()||"unknown",d=t.services.config?.getProxy();return{cliVersion:p,osPlatform:e,osArch:r,osRelease:n,nodeVersion:i,npmVersion:u,sandboxEnv:a,modelVersion:f,selectedAuthType:m,ideClient:h,sessionId:g,proxy:d}}async function NS(t){let e=await lp(t),r=Gu(nt.memoryUsage().rss),n=Hu(!0),i=e.selectedAuthType==="openai"||e.selectedAuthType==="anthropic"?t.services.config?.getContentGeneratorConfig():void 0,u=i?.baseUrl,a=i?.apiKeyEnvKey,f=xr&&!["N/A"].includes(xr)?xr:void 0,p=t.services.settings?.merged?.fastModel||void 0,m=cp(t);return{...e,sandboxEnv:n,memoryUsage:r,baseUrl:u,apiKeyEnvKey:a,gitCommit:f,fastModel:p,lspStatus:m}}function cp(t){try{let e=t.services.config?.getLspStatusSnapshot?.();return e?(t.services.config?.getDebugMode?.()&&$u.debug("LSP status snapshot for /status:",e),dp(e)):void 0}catch(e){t.services.config?.getDebugMode?.()&&$u.debug("Unable to read LSP status snapshot for /status:",e);return}}function dp(t){if(!t.enabled)return"disabled";if(t.initializationError)return`enabled, initialization failed: ${t.initializationError}`;if(t.statusUnavailable)return"enabled, status unavailable";if(t.configuredServers===0)return"enabled, no servers configured";let e=[t.failedServers>0?`${t.failedServers} failed`:"",t.inProgressServers>0?`${t.inProgressServers} starting`:"",t.notStartedServers>0?`${t.notStartedServers} not started`:""].filter(Boolean),r=e.length>0?` (${e.join(", ")})`:"";return`enabled, ${t.readyServers}/${t.configuredServers} ready${r}`}export{Br as a,em as b,tm as c,G as d,N as e,sm as f,Oe as g,om as h,am as i,Ur as j,jr as k,Gl as l,ql as m,$r as n,as as o,wm as p,El as q,Mr as r,es as s,Nr as t,Il as u,Xp as v,Jp as w,ps as x,Xl as y,Hr as z,Xe as A,ke as B,ds as C,Mm as D,ht as E,Nm as F,Om as G,Bm as H,_m as I,Um as J,jm as K,d0 as L,h0 as M,Ln as N,Pn as O,us as P,f0 as Q,p0 as R,Gd as S,Wd as T,m0 as U,zd as V,g0 as W,Hn as X,Wn as Y,Ca as Z,wa as _,Fa as $,Pa as aa,Kn as ba,Ba as ca,Ua as da,Uu as ea,ju as fa,pS as ga,hp as ha,Tr as ia,ki as ja,bp as ka,Fr as la,Ep as ma,Cp as na,Fi as oa,Ri as pa,Li as qa,Pi as ra,Mi as sa,Ni as ta,Oi as ua,Bi as va,_i as wa,Ui as xa,ji as ya,Gi as za,$i as Aa,qi as Ba,Hi as Ca,Wi as Da,zi as Ea,Xi as Fa,Ji as Ga,Vi as Ha,Ki as Ia,Yi as Ja,Qi as Ka,Ne as La,Tp as Ma,Rr as Na,Lr as Oa,Pr as Pa,Ip as Qa,Fp as Ra,gl as Sa,Rp as Ta,Lp as Ua,Pp as Va,Mp as Wa,Np as Xa,Op as Ya,Bp as Za,yl as _a,_p as $a,Up as ab,DS as bb,Gu as cb,yS as db,SS as eb,bS as fb,ap as gb,MS as hb,NS as ib};
44
44
  /**
45
45
  * @license
46
46
  * Copyright 2025 Matilda Team