[{"data":1,"prerenderedAt":475},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fv2\u002Ftui\u002Fstructure\u002Fmain":3},{"id":4,"title":5,"body":6,"description":16,"extension":468,"meta":469,"navigation":119,"path":471,"seo":472,"stem":473,"__hash__":474},"docs\u002Fdocs\u002Fv2\u002Ftui\u002Fstructure\u002Fmain.md","main.ts",{"type":7,"value":8,"toc":462},"minimark",[9,13,17,293,309,314,322,325,329,355,362,366,436,439,443,449,458],[10,11,5],"h1",{"id":12},"maints",[14,15,16],"p",{},"Your config. It runs at module scope on every launch, and on every reload.",[18,19,24],"pre",{"className":20,"code":21,"language":22,"meta":23,"style":23},"language-ts shiki shiki-themes dark-plus","commands.register(\"deploy\", {\n    async run() {\n        await commands.run(\"agent restart\")\n    },\n    description: \"Restart and redeploy\",\n})\n\nkeys.register(\"ctrl+o\", () => commands.run(\"session open\"))\n\npalette.create(\"branches\", {\n    key: \"&\",\n    async list() {\n        return (await gitBranches()).map(name => ({\n            id: name,\n            label: name,\n            action: () => checkout(name),\n        }))\n    },\n})\n","ts","",[25,26,27,54,67,90,96,108,114,121,156,161,179,190,200,232,243,253,277,283,288],"code",{"__ignoreMap":23},[28,29,32,36,40,44,47,51],"span",{"class":30,"line":31},"line",1,[28,33,35],{"class":34},"s3F5K","commands",[28,37,39],{"class":38},"sTNBD",".",[28,41,43],{"class":42},"sCudf","register",[28,45,46],{"class":38},"(",[28,48,50],{"class":49},"sKc5r","\"deploy\"",[28,52,53],{"class":38},", {\n",[28,55,57,61,64],{"class":30,"line":56},2,[28,58,60],{"class":59},"scz_3","    async",[28,62,63],{"class":42}," run",[28,65,66],{"class":38},"() {\n",[28,68,70,74,77,79,82,84,87],{"class":30,"line":69},3,[28,71,73],{"class":72},"sYbnZ","        await",[28,75,76],{"class":34}," commands",[28,78,39],{"class":38},[28,80,81],{"class":42},"run",[28,83,46],{"class":38},[28,85,86],{"class":49},"\"agent restart\"",[28,88,89],{"class":38},")\n",[28,91,93],{"class":30,"line":92},4,[28,94,95],{"class":38},"    },\n",[28,97,99,102,105],{"class":30,"line":98},5,[28,100,101],{"class":34},"    description:",[28,103,104],{"class":49}," \"Restart and redeploy\"",[28,106,107],{"class":38},",\n",[28,109,111],{"class":30,"line":110},6,[28,112,113],{"class":38},"})\n",[28,115,117],{"class":30,"line":116},7,[28,118,120],{"emptyLinePlaceholder":119},true,"\n",[28,122,124,127,129,131,133,136,139,142,144,146,148,150,153],{"class":30,"line":123},8,[28,125,126],{"class":34},"keys",[28,128,39],{"class":38},[28,130,43],{"class":42},[28,132,46],{"class":38},[28,134,135],{"class":49},"\"ctrl+o\"",[28,137,138],{"class":38},", () ",[28,140,141],{"class":59},"=>",[28,143,76],{"class":34},[28,145,39],{"class":38},[28,147,81],{"class":42},[28,149,46],{"class":38},[28,151,152],{"class":49},"\"session open\"",[28,154,155],{"class":38},"))\n",[28,157,159],{"class":30,"line":158},9,[28,160,120],{"emptyLinePlaceholder":119},[28,162,164,167,169,172,174,177],{"class":30,"line":163},10,[28,165,166],{"class":34},"palette",[28,168,39],{"class":38},[28,170,171],{"class":42},"create",[28,173,46],{"class":38},[28,175,176],{"class":49},"\"branches\"",[28,178,53],{"class":38},[28,180,182,185,188],{"class":30,"line":181},11,[28,183,184],{"class":34},"    key:",[28,186,187],{"class":49}," \"&\"",[28,189,107],{"class":38},[28,191,193,195,198],{"class":30,"line":192},12,[28,194,60],{"class":59},[28,196,197],{"class":42}," list",[28,199,66],{"class":38},[28,201,203,206,209,212,215,218,221,223,226,229],{"class":30,"line":202},13,[28,204,205],{"class":72},"        return",[28,207,208],{"class":38}," (",[28,210,211],{"class":72},"await",[28,213,214],{"class":42}," gitBranches",[28,216,217],{"class":38},"()).",[28,219,220],{"class":42},"map",[28,222,46],{"class":38},[28,224,225],{"class":34},"name",[28,227,228],{"class":59}," =>",[28,230,231],{"class":38}," ({\n",[28,233,235,238,241],{"class":30,"line":234},14,[28,236,237],{"class":34},"            id:",[28,239,240],{"class":34}," name",[28,242,107],{"class":38},[28,244,246,249,251],{"class":30,"line":245},15,[28,247,248],{"class":34},"            label:",[28,250,240],{"class":34},[28,252,107],{"class":38},[28,254,256,259,262,265,267,270,272,274],{"class":30,"line":255},16,[28,257,258],{"class":42},"            action",[28,260,261],{"class":34},":",[28,263,264],{"class":38}," () ",[28,266,141],{"class":59},[28,268,269],{"class":42}," checkout",[28,271,46],{"class":38},[28,273,225],{"class":34},[28,275,276],{"class":38},"),\n",[28,278,280],{"class":30,"line":279},17,[28,281,282],{"class":38},"        }))\n",[28,284,286],{"class":30,"line":285},18,[28,287,95],{"class":38},[28,289,291],{"class":30,"line":290},19,[28,292,113],{"class":38},[14,294,295,296,299,300,304,305,308],{},"There is no ",[25,297,298],{},"setup()"," and no default export. ",[301,302,303],"strong",{},"Importing the file is loading it"," —\n",[25,306,307],{},"commands.register(...)"," runs as the module body evaluates.",[310,311,313],"h2",{"id":312},"loads-first-so-it-wins","Loads first, so it wins",[18,315,320],{"className":316,"code":318,"language":319},[317],"language-text","main.ts  →  plugins\u002F*.ts  →  each extension, in profile.config.ts order\n","text",[25,321,318],{"__ignoreMap":23},[14,323,324],{},"Your own config beats every extension. A collision throws, naming both sides — nothing is\never silently shadowed.",[310,326,328],{"id":327},"split-it-up","Split it up",[18,330,332],{"className":20,"code":331,"language":22,"meta":23,"style":23},"\u002F\u002F main.ts\nimport \".\u002Fkeybindings\"\nimport \".\u002Fcommands\u002Fgit\"\n",[25,333,334,340,348],{"__ignoreMap":23},[28,335,336],{"class":30,"line":31},[28,337,339],{"class":338},"sOLPB","\u002F\u002F main.ts\n",[28,341,342,345],{"class":30,"line":56},[28,343,344],{"class":72},"import",[28,346,347],{"class":49}," \".\u002Fkeybindings\"\n",[28,349,350,352],{"class":30,"line":69},[28,351,344],{"class":72},[28,353,354],{"class":49}," \".\u002Fcommands\u002Fgit\"\n",[14,356,357,358,361],{},"An ordinary import. Anything reachable from here runs, which is how a large config stays\nnavigable. (Do not import from ",[25,359,360],{},"plugins\u002F"," — those already auto-load.)",[310,363,365],{"id":364},"a-throw-does-not-cost-you-the-terminal","A throw does not cost you the terminal",[18,367,369],{"className":20,"code":368,"language":22,"meta":23,"style":23},"commands.register(\"a\", run)\nthrow new Error(\"boom\")      \u002F\u002F \"a\" stays registered\ncommands.register(\"b\", run)  \u002F\u002F never runs\n",[25,370,371,391,413],{"__ignoreMap":23},[28,372,373,375,377,379,381,384,387,389],{"class":30,"line":31},[28,374,35],{"class":34},[28,376,39],{"class":38},[28,378,43],{"class":42},[28,380,46],{"class":38},[28,382,383],{"class":49},"\"a\"",[28,385,386],{"class":38},", ",[28,388,81],{"class":34},[28,390,89],{"class":38},[28,392,393,396,399,402,404,407,410],{"class":30,"line":56},[28,394,395],{"class":72},"throw",[28,397,398],{"class":59}," new",[28,400,401],{"class":42}," Error",[28,403,46],{"class":38},[28,405,406],{"class":49},"\"boom\"",[28,408,409],{"class":38},")      ",[28,411,412],{"class":338},"\u002F\u002F \"a\" stays registered\n",[28,414,415,417,419,421,423,426,428,430,433],{"class":30,"line":69},[28,416,35],{"class":34},[28,418,39],{"class":38},[28,420,43],{"class":42},[28,422,46],{"class":38},[28,424,425],{"class":49},"\"b\"",[28,427,386],{"class":38},[28,429,81],{"class":34},[28,431,432],{"class":38},")  ",[28,434,435],{"class":338},"\u002F\u002F never runs\n",[14,437,438],{},"Registrations made before the throw are kept, and the failure lands in the config error\nlist on the chat page. You still get a working terminal — the one you need in order to fix\nit.",[310,440,442],{"id":441},"reloading","Reloading",[14,444,445,448],{},[25,446,447],{},":reload"," re-runs everything, tearing down the previous generation first. Saving the file\ndoes the same. Nothing accumulates across reloads.",[14,450,451,452,457],{},"See ",[453,454,456],"a",{"href":455},"\u002Fdocs\u002Fv2\u002Ftui\u002Fapi\u002Ftui","API"," for the eight globals.",[459,460,461],"style",{},"html pre.shiki code .s3F5K, html code.shiki .s3F5K{--shiki-default:#9CDCFE}html pre.shiki code .sTNBD, html code.shiki .sTNBD{--shiki-default:#D4D4D4}html pre.shiki code .sCudf, html code.shiki .sCudf{--shiki-default:#DCDCAA}html pre.shiki code .sKc5r, html code.shiki .sKc5r{--shiki-default:#CE9178}html pre.shiki code .scz_3, html code.shiki .scz_3{--shiki-default:#569CD6}html pre.shiki code .sYbnZ, html code.shiki .sYbnZ{--shiki-default:#C586C0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sOLPB, html code.shiki .sOLPB{--shiki-default:#6A9955}",{"title":23,"searchDepth":56,"depth":56,"links":463},[464,465,466,467],{"id":312,"depth":56,"text":313},{"id":327,"depth":56,"text":328},{"id":364,"depth":56,"text":365},{"id":441,"depth":56,"text":442},"md",{"icon":470},"vscode-icons:file-type-typescript","\u002Fdocs\u002Fv2\u002Ftui\u002Fstructure\u002Fmain",{"title":5,"description":16},"docs\u002Fv2\u002Ftui\u002Fstructure\u002Fmain","eECGjCrF7OHGz0uLIhq0bwhWb771DxShzkz7VRSl3TA",1786791207911]