tabby-ai-panel 0.1.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.
- package/LICENSE +21 -0
- package/README.md +96 -0
- package/dist/index.js +11477 -0
- package/dist/index.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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ACAA,kD;;;;;;;;;;;ACAA,kD;;;;;;;;;;;ACAA,kD;;;;;;;;;;;ACAA,kD;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UCtBA;UACA;UACA;UACA;UACA;UACA,iCAAiC,WAAW;UAC5C;UACA,E;;;UCPA,iEAAiE;UACjE;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,WAAW;UACX;UACA;UACA;UACA;UACA,E;;;UCdA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,sCAAsC,2CAA2C,IAAI;UACrF;UACA;UACA,GAAG;UACH;UACA;UACA,0CAA0C,wCAAwC;UAClF;UACA;UACA;UACA,E;;;UCjBA,yF;;;UCAA;UACA;UACA,sDAAsD,iBAAiB;UACvE,gDAAgD,aAAa;UAC7D,E;;;UCJA,mC;;;;;;;;;;;;;;;;;;;;ACAa;;AAEb;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,E;;;;;ACnFa;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;A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","sources":["webpack-tabby-ai-panel:///webpack/universalModuleDefinition","webpack:///./src/ui/composer/composer.component.scss?3e2d","webpack:///./src/ui/panel/panel.component.scss?036b","webpack:///./src/ui/sessions/session-list.component.scss?32d8","webpack:///./src/ui/settings/settings.component.scss?827c","webpack:///./src/ui/terminal-strip/terminal-strip.component.scss?ebf8","webpack:///./src/ui/transcript/tool-call.component.scss?32b9","webpack:///./src/ui/transcript/transcript.component.scss?a228","webpack-tabby-ai-panel:///./node_modules/css-loader/dist/runtime/api.js","webpack-tabby-ai-panel:///./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack-tabby-ai-panel:///./src/ui/composer/composer.component.scss","webpack-tabby-ai-panel:///./src/ui/panel/panel.component.scss","webpack-tabby-ai-panel:///./src/ui/sessions/session-list.component.scss","webpack-tabby-ai-panel:///./src/ui/settings/settings.component.scss","webpack-tabby-ai-panel:///./src/ui/terminal-strip/terminal-strip.component.scss","webpack-tabby-ai-panel:///./src/ui/transcript/tool-call.component.scss","webpack-tabby-ai-panel:///./src/ui/transcript/transcript.component.scss","webpack-tabby-ai-panel:///./src/ui/styles.scss","webpack-tabby-ai-panel:///external umd \"@angular/common\"","webpack-tabby-ai-panel:///external umd \"@angular/core\"","webpack-tabby-ai-panel:///external umd \"@angular/forms\"","webpack-tabby-ai-panel:///external umd \"@angular/platform-browser\"","webpack-tabby-ai-panel:///external umd \"@ng-bootstrap/ng-bootstrap\"","webpack-tabby-ai-panel:///external umd \"fs\"","webpack-tabby-ai-panel:///external umd \"http\"","webpack-tabby-ai-panel:///external umd \"https\"","webpack-tabby-ai-panel:///external umd \"os\"","webpack-tabby-ai-panel:///external umd \"path\"","webpack-tabby-ai-panel:///external umd \"rxjs\"","webpack-tabby-ai-panel:///external umd \"tabby-core\"","webpack-tabby-ai-panel:///external umd \"tabby-settings\"","webpack-tabby-ai-panel:///external umd \"tabby-terminal\"","webpack-tabby-ai-panel:///external umd \"url\"","webpack-tabby-ai-panel:///webpack/bootstrap","webpack-tabby-ai-panel:///webpack/runtime/compat get default export","webpack-tabby-ai-panel:///webpack/runtime/concatenation wrap","webpack-tabby-ai-panel:///webpack/runtime/define property getters","webpack-tabby-ai-panel:///webpack/runtime/hasOwnProperty shorthand","webpack-tabby-ai-panel:///webpack/runtime/make namespace object","webpack-tabby-ai-panel:///webpack/runtime/nonce","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack-tabby-ai-panel:///./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack-tabby-ai-panel:///./node_modules/tslib/tslib.es6.mjs","webpack:///./src/ui/styles.scss?dee1","webpack-tabby-ai-panel:///./src/types/config.ts","webpack-tabby-ai-panel:///./src/config.ts","webpack-tabby-ai-panel:///./src/hotkeys.ts","webpack-tabby-ai-panel:///./src/core/util/sse.ts","webpack-tabby-ai-panel:///./src/core/llm/openai-compatible.ts","webpack-tabby-ai-panel:///./src/core/util/ids.ts","webpack-tabby-ai-panel:///./src/core/util/prompt-detect.ts","webpack-tabby-ai-panel:///./src/core/terminal-registry.service.ts","webpack-tabby-ai-panel:///./src/core/util/text.ts","webpack-tabby-ai-panel:///./src/core/terminal-runner.ts","webpack-tabby-ai-panel:///./src/core/session-utils.ts","webpack-tabby-ai-panel:///./src/core/session-store.service.ts","webpack-tabby-ai-panel:///./src/core/util/risk.ts","webpack-tabby-ai-panel:///./src/core/tools/index.ts","webpack-tabby-ai-panel:///./src/core/prompt-builder.ts","webpack-tabby-ai-panel:///./src/core/agent.service.ts","webpack-tabby-ai-panel:///./src/ui/panel-host.service.ts","webpack-tabby-ai-panel:///./src/commands.ts","webpack-tabby-ai-panel:///./src/ui/settings/settings.component.ts","webpack-tabby-ai-panel:///./src/settings-tab.ts","webpack-tabby-ai-panel:///./src/decorator.ts","webpack-tabby-ai-panel:///./src/ui/composer/composer.component.ts","webpack-tabby-ai-panel:///./src/core/util/keystroke.ts","webpack-tabby-ai-panel:///./src/ui/panel/panel.component.ts","webpack-tabby-ai-panel:///./src/ui/transcript/transcript.component.ts","webpack-tabby-ai-panel:///./src/ui/transcript/tool-call.component.ts","webpack-tabby-ai-panel:///./src/ui/terminal-strip/terminal-strip.component.ts","webpack-tabby-ai-panel:///./src/ui/sessions/session-list.component.ts","webpack-tabby-ai-panel:///./node_modules/marked/lib/marked.esm.js","webpack-tabby-ai-panel:///../src/utils.ts","webpack-tabby-ai-panel:///../src/tags.ts","webpack-tabby-ai-panel:///../src/attrs.ts","webpack-tabby-ai-panel:///../src/regexp.ts","webpack-tabby-ai-panel:///../src/purify.ts","webpack-tabby-ai-panel:///./src/ui/pipes/markdown.pipe.ts","webpack-tabby-ai-panel:///./src/ui/pipes/relative-time.pipe.ts","webpack-tabby-ai-panel:///./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"fs\"), require(\"http\"), require(\"https\"), require(\"os\"), require(\"path\"), require(\"rxjs\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\"), require(\"url\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@angular/common\", \"@angular/core\", \"@angular/forms\", \"@angular/platform-browser\", \"@ng-bootstrap/ng-bootstrap\", \"fs\", \"http\", \"https\", \"os\", \"path\", \"rxjs\", \"tabby-core\", \"tabby-settings\", \"tabby-terminal\", \"url\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"@angular/common\"), require(\"@angular/core\"), require(\"@angular/forms\"), require(\"@angular/platform-browser\"), require(\"@ng-bootstrap/ng-bootstrap\"), require(\"fs\"), require(\"http\"), require(\"https\"), require(\"os\"), require(\"path\"), require(\"rxjs\"), require(\"tabby-core\"), require(\"tabby-settings\"), require(\"tabby-terminal\"), require(\"url\")) : factory(root[\"@angular/common\"], root[\"@angular/core\"], root[\"@angular/forms\"], root[\"@angular/platform-browser\"], root[\"@ng-bootstrap/ng-bootstrap\"], root[\"fs\"], root[\"http\"], root[\"https\"], root[\"os\"], root[\"path\"], root[\"rxjs\"], root[\"tabby-core\"], root[\"tabby-settings\"], root[\"tabby-terminal\"], root[\"url\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(global, (__WEBPACK_EXTERNAL_MODULE__358__, __WEBPACK_EXTERNAL_MODULE__860__, __WEBPACK_EXTERNAL_MODULE__182__, __WEBPACK_EXTERNAL_MODULE__165__, __WEBPACK_EXTERNAL_MODULE__765__, __WEBPACK_EXTERNAL_MODULE__947__, __WEBPACK_EXTERNAL_MODULE__236__, __WEBPACK_EXTERNAL_MODULE__333__, __WEBPACK_EXTERNAL_MODULE__234__, __WEBPACK_EXTERNAL_MODULE__911__, __WEBPACK_EXTERNAL_MODULE__961__, __WEBPACK_EXTERNAL_MODULE__650__, __WEBPACK_EXTERNAL_MODULE__700__, __WEBPACK_EXTERNAL_MODULE__349__, __WEBPACK_EXTERNAL_MODULE__917__) => {\nreturn ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./composer.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./panel.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./session-list.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./settings.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./terminal-strip.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./tool-call.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\n var result = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[5].use[2]!./transcript.component.scss?ngResource\");\n\n if (result && result.__esModule) {\n result = result.default;\n }\n\n if (typeof result === \"string\") {\n module.exports = result;\n } else {\n module.exports = result.toString();\n }\n ","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;flex:none}.composer{position:relative;border-top:1px solid var(--ai-border);padding:8px 10px 6px;display:flex;flex-direction:column;gap:6px}.mentions{position:absolute;bottom:calc(100% + 2px);left:10px;right:10px;background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:var(--ai-radius-sm);box-shadow:0 -4px 18px rgba(0,0,0,.3);padding:4px;z-index:10}.mentions button{display:flex;gap:8px;align-items:baseline;width:100%;background:none;border:none;color:inherit;font:inherit;font-size:.92em;padding:5px 8px;border-radius:4px;cursor:pointer;text-align:left}.mentions button.selected,.mentions button:hover{background:var(--ai-surface-2)}.mentions button .m-key{font-family:var(--ai-mono);opacity:.6;width:26px;flex:none}.mentions button .m-label{font-weight:600}.mentions button .m-conn{opacity:.6;margin-left:auto;font-size:.92em}.input-row{display:flex;align-items:flex-end;gap:6px;border:1px solid var(--ai-border);border-radius:var(--ai-radius);background:var(--ai-surface);padding:5px 5px 5px 10px;transition:border-color .15s}.input-row:focus-within{border-color:var(--ai-accent)}.input-row.busy{border-style:dashed}.input-row textarea{flex:1 1 auto;min-width:0;resize:none;border:none;background:rgba(0,0,0,0);color:inherit;font:inherit;font-size:1em;line-height:1.45;outline:none;padding:2px 0;max-height:180px;overflow-y:hidden}.input-row textarea.scrollable{overflow-y:auto}.input-row textarea::placeholder{opacity:.5}.input-row .send-btn{flex:none;width:1.75em;height:1.75em;border-radius:50%;border:none;background:var(--ai-accent);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:.85em;margin-bottom:1px}.input-row .send-btn:disabled{opacity:.35;cursor:default}.input-row .send-btn.stop{background:var(--ai-danger)}.input-row .send-btn:not(:disabled):hover{filter:brightness(1.1)}.footer{display:flex;align-items:center;gap:8px;font-size:.85em;opacity:.85;min-width:0}.footer .approval{display:inline-flex;align-items:center;gap:6px;margin:0}.footer .approval i{opacity:.6}.footer .approval .ai-select{font-size:1em;padding:2px 20px 2px 6px}.footer .spacer{flex:1 1 auto}.footer .meta{opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.footer .model{max-width:40%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/composer/composer.component.scss\"],\"names\":[],\"mappings\":\"AAAA,MAAA,aAAA,CAAA,SAAA,CAEA,UACE,iBAAA,CACA,qCAAA,CACA,oBAAA,CACA,YAAA,CACA,qBAAA,CACA,OAAA,CAGF,UACE,iBAAA,CACA,uBAAA,CACA,SAAA,CACA,UAAA,CACA,uBAAA,CACA,iCAAA,CACA,iCAAA,CACA,qCAAA,CACA,WAAA,CACA,UAAA,CAEA,iBACE,YAAA,CACA,OAAA,CACA,oBAAA,CACA,UAAA,CACA,eAAA,CACA,WAAA,CACA,aAAA,CACA,YAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CACA,cAAA,CACA,eAAA,CACA,iDAAA,8BAAA,CACA,wBAAA,0BAAA,CAAA,UAAA,CAAA,UAAA,CAAA,SAAA,CACA,0BAAA,eAAA,CACA,yBAAA,UAAA,CAAA,gBAAA,CAAA,eAAA,CAIJ,WACE,YAAA,CACA,oBAAA,CACA,OAAA,CACA,iCAAA,CACA,8BAAA,CACA,4BAAA,CACA,wBAAA,CACA,4BAAA,CAEA,wBAAA,6BAAA,CACA,gBAAA,mBAAA,CAEA,oBACE,aAAA,CACA,WAAA,CACA,WAAA,CACA,WAAA,CACA,wBAAA,CACA,aAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CACA,YAAA,CACA,aAAA,CACA,gBAAA,CACA,iBAAA,CACA,+BAAA,eAAA,CACA,iCAAA,UAAA,CAIF,qBACE,SAAA,CACA,YAAA,CACA,aAAA,CACA,iBAAA,CACA,WAAA,CACA,2BAAA,CACA,UAAA,CACA,cAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CACA,8BAAA,WAAA,CAAA,cAAA,CACA,0BAAA,2BAAA,CACA,0CAAA,sBAAA,CAIJ,QACE,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,WAAA,CACA,WAAA,CAEA,kBACE,mBAAA,CACA,kBAAA,CACA,OAAA,CACA,QAAA,CACA,oBAAA,UAAA,CACA,6BAAA,aAAA,CAAA,wBAAA,CAEF,gBAAA,aAAA,CACA,cAAA,UAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,sBAAA,CACA,eAAA,aAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex:1 1 auto;min-width:0;min-height:0;font-size:inherit;line-height:1.45}.ai-panel{position:relative;display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0;user-select:text}.resize-handle{position:absolute;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5;transition:background .15s}.side-right .resize-handle{left:-3px}.side-left .resize-handle{right:-3px}.resize-handle:hover{background:var(--ai-accent);opacity:.5}.panel-header{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--ai-border);min-height:40px;flex:none}.title-area{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;padding:0 4px;cursor:text}.title-area .title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title-area .phase{font-size:.85em;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.title-area .phase i{margin-right:3px}.title-input{flex:1 1 auto;min-width:0;background:var(--ai-surface);border:1px solid var(--ai-accent);border-radius:4px;color:inherit;padding:3px 6px;font:inherit;font-weight:600;outline:none}.header-actions{display:flex;gap:2px;flex:none}.panel-body{position:relative;flex:1 1 auto;min-height:0;display:flex}.error-bar{flex:none;display:flex;align-items:center;gap:8px;padding:6px 10px;background:color-mix(in srgb, var(--ai-danger) 18%, transparent);border-top:1px solid color-mix(in srgb, var(--ai-danger) 40%, transparent);font-size:.92em}.error-bar .error-text{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;max-height:4.4em;overflow:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/panel/panel.component.scss\"],\"names\":[],\"mappings\":\"AAAA,MACE,YAAA,CACA,aAAA,CACA,WAAA,CACA,YAAA,CACA,iBAAA,CACA,gBAAA,CAGF,UACE,iBAAA,CACA,YAAA,CACA,qBAAA,CACA,aAAA,CACA,WAAA,CACA,YAAA,CACA,gBAAA,CAGF,eACE,iBAAA,CACA,KAAA,CACA,QAAA,CACA,SAAA,CACA,iBAAA,CACA,SAAA,CACA,0BAAA,CAEA,2BAAA,SAAA,CACA,0BAAA,UAAA,CAEA,qBAAA,2BAAA,CAAA,UAAA,CAGF,cACE,YAAA,CACA,kBAAA,CACA,OAAA,CACA,eAAA,CACA,wCAAA,CACA,eAAA,CACA,SAAA,CAGF,YACE,aAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,aAAA,CACA,WAAA,CAEA,mBACE,eAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAGF,mBACE,eAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CAEA,qBAAA,gBAAA,CAIJ,aACE,aAAA,CACA,WAAA,CACA,4BAAA,CACA,iCAAA,CACA,iBAAA,CACA,aAAA,CACA,eAAA,CACA,YAAA,CACA,eAAA,CACA,YAAA,CAGF,gBACE,YAAA,CACA,OAAA,CACA,SAAA,CAGF,YACE,iBAAA,CACA,aAAA,CACA,YAAA,CACA,YAAA,CAGF,WACE,SAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CACA,gBAAA,CACA,gEAAA,CACA,0EAAA,CACA,eAAA,CAEA,uBACE,aAAA,CACA,WAAA,CACA,sBAAA,CACA,gBAAA,CACA,aAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{position:absolute;inset:0;z-index:15;display:flex}.drawer{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;background:var(--ai-bg);animation:ai-fade-in .15s ease-out}.drawer-header{display:flex;gap:6px;align-items:center;padding:8px;border-bottom:1px solid var(--ai-border)}.drawer-header .search{flex:1 1 auto;min-width:0}.list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:6px;display:flex;flex-direction:column;gap:2px}.empty{padding:20px 12px;text-align:center;opacity:.6;font-size:.92em}.item{display:flex;gap:6px;padding:7px 8px;border-radius:var(--ai-radius-sm);cursor:pointer;border:1px solid rgba(0,0,0,0)}.item:hover{background:var(--ai-surface)}.item.current{background:var(--ai-surface);border-color:color-mix(in srgb, var(--ai-accent) 50%, transparent)}.item:hover .item-actions{opacity:1}.item .item-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.item .item-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .rename{width:100%}.item .item-preview{font-size:.88em;opacity:.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .item-meta{font-size:.85em;opacity:.55;display:flex;gap:4px;flex-wrap:wrap}.item .item-meta .labels{overflow:hidden;text-overflow:ellipsis}.item .item-actions{display:flex;flex:none;opacity:0;transition:opacity .12s;align-self:center}.item .item-actions .icon-btn{width:24px;height:24px;font-size:.85em}.drawer-footer{border-top:1px solid var(--ai-border);padding:6px 10px}.drawer-footer .link{background:none;border:none;color:inherit;opacity:.65;font:inherit;font-size:.88em;cursor:pointer;padding:0}.drawer-footer .link:hover{opacity:1}.drawer-footer .link i{margin-right:4px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/sessions/session-list.component.scss\"],\"names\":[],\"mappings\":\"AAAA,MACE,iBAAA,CACA,OAAA,CACA,UAAA,CACA,YAAA,CAGF,QACE,aAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,uBAAA,CACA,kCAAA,CAGF,eACE,YAAA,CACA,OAAA,CACA,kBAAA,CACA,WAAA,CACA,wCAAA,CACA,uBAAA,aAAA,CAAA,WAAA,CAGF,MACE,aAAA,CACA,YAAA,CACA,eAAA,CACA,WAAA,CACA,YAAA,CACA,qBAAA,CACA,OAAA,CAGF,OAAA,iBAAA,CAAA,iBAAA,CAAA,UAAA,CAAA,eAAA,CAEA,MACE,YAAA,CACA,OAAA,CACA,eAAA,CACA,iCAAA,CACA,cAAA,CACA,8BAAA,CAEA,YAAA,4BAAA,CACA,cAAA,4BAAA,CAAA,kEAAA,CACA,0BAAA,SAAA,CAEA,iBAAA,aAAA,CAAA,WAAA,CAAA,YAAA,CAAA,qBAAA,CAAA,OAAA,CACA,kBAAA,eAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,sBAAA,CACA,cAAA,UAAA,CACA,oBAAA,eAAA,CAAA,WAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,sBAAA,CACA,iBAAA,eAAA,CAAA,WAAA,CAAA,YAAA,CAAA,OAAA,CAAA,cAAA,CAAA,yBAAA,eAAA,CAAA,sBAAA,CACA,oBAAA,YAAA,CAAA,SAAA,CAAA,SAAA,CAAA,uBAAA,CAAA,iBAAA,CAAA,8BAAA,UAAA,CAAA,WAAA,CAAA,eAAA,CAGF,eACE,qCAAA,CACA,gBAAA,CACA,qBAAA,eAAA,CAAA,WAAA,CAAA,aAAA,CAAA,WAAA,CAAA,YAAA,CAAA,eAAA,CAAA,cAAA,CAAA,SAAA,CAAA,2BAAA,SAAA,CAAA,uBAAA,gBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ai-settings{max-width:820px}.ai-settings .form-line .btn{white-space:nowrap;flex:none}.ai-settings .form-line .description code{overflow-wrap:anywhere}.ai-settings h4{margin-top:24px;margin-bottom:8px;font-size:1.08em;opacity:.8;text-transform:uppercase;letter-spacing:.04em}.ai-settings code{font-size:.92em}.ai-settings .form-line.vertical{flex-direction:column;align-items:stretch}.ai-settings .form-line.vertical .header{margin-bottom:6px}.ai-settings .form-line.vertical textarea{width:100%;font-family:var(--bs-font-monospace, monospace);font-size:.92em}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/settings/settings.component.scss\"],\"names\":[],\"mappings\":\"AAAA,aACE,eAAA,CAEA,6BAAA,kBAAA,CAAA,SAAA,CACA,0CAAA,sBAAA,CAEA,gBAAA,eAAA,CAAA,iBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,wBAAA,CAAA,oBAAA,CACA,kBAAA,eAAA,CAEA,iCACE,qBAAA,CACA,mBAAA,CACA,yCAAA,iBAAA,CACA,0CAAA,UAAA,CAAA,+CAAA,CAAA,eAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;flex:none}.strip{display:flex;flex-wrap:wrap;gap:4px;padding:6px 8px;border-bottom:1px solid var(--ai-border);max-height:88px;overflow-y:auto}.chip-wrap{position:relative}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 7px;border-radius:12px;border:1px solid var(--ai-border);background:var(--ai-surface);color:inherit;font:inherit;font-size:.88em;cursor:pointer;max-width:220px;opacity:.7}.chip:hover{background:var(--ai-surface-2);opacity:1}.chip.used{opacity:1;border-color:color-mix(in srgb, var(--ai-accent) 45%, var(--ai-border))}.chip.active{box-shadow:0 0 0 1px var(--ai-accent)}.chip.disconnected{border-style:dashed}.chip.reconnecting{opacity:.9;cursor:progress}.chip .key{font-family:var(--ai-mono);font-size:.87em;opacity:.6}.chip .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.chip i.fa-plug{font-size:.8em;opacity:.6}.chip .spinner{font-size:.8em;color:var(--ai-accent)}.menu{position:absolute;top:calc(100% + 4px);left:0;z-index:30;min-width:230px;background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:var(--ai-radius-sm);box-shadow:0 6px 20px rgba(0,0,0,.35);padding:4px}.menu .menu-title{font-size:.85em;opacity:.6;padding:4px 8px}.menu .menu-section{font-size:.85em;opacity:.6;padding:6px 8px 2px}.menu .menu-empty{font-size:.88em;opacity:.6;padding:4px 8px}.menu button{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;color:inherit;font:inherit;font-size:.92em;padding:6px 8px;border-radius:4px;cursor:pointer;text-align:left}.menu button:hover{background:var(--ai-surface-2)}.menu button i{width:12px;opacity:.7}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/terminal-strip/terminal-strip.component.scss\"],\"names\":[],\"mappings\":\"AAAA,MAAA,aAAA,CAAA,SAAA,CAEA,OACE,YAAA,CACA,cAAA,CACA,OAAA,CACA,eAAA,CACA,wCAAA,CACA,eAAA,CACA,eAAA,CAGF,WAAA,iBAAA,CAEA,MACE,mBAAA,CACA,kBAAA,CACA,OAAA,CACA,uBAAA,CACA,kBAAA,CACA,iCAAA,CACA,4BAAA,CACA,aAAA,CACA,YAAA,CACA,eAAA,CACA,cAAA,CACA,eAAA,CACA,UAAA,CAEA,YAAA,8BAAA,CAAA,SAAA,CACA,WAAA,SAAA,CAAA,uEAAA,CACA,aAAA,qCAAA,CACA,mBAAA,mBAAA,CAEA,mBAAA,UAAA,CAAA,eAAA,CAEA,WAAA,0BAAA,CAAA,eAAA,CAAA,UAAA,CACA,aAAA,eAAA,CAAA,sBAAA,CAAA,kBAAA,CAAA,eAAA,CACA,gBAAA,cAAA,CAAA,UAAA,CACA,eAAA,cAAA,CAAA,sBAAA,CAGF,MACE,iBAAA,CACA,oBAAA,CACA,MAAA,CACA,UAAA,CACA,eAAA,CACA,uBAAA,CACA,iCAAA,CACA,iCAAA,CACA,qCAAA,CACA,WAAA,CAEA,kBAAA,eAAA,CAAA,UAAA,CAAA,eAAA,CACA,oBAAA,eAAA,CAAA,UAAA,CAAA,mBAAA,CACA,kBAAA,eAAA,CAAA,UAAA,CAAA,eAAA,CACA,aACE,YAAA,CACA,kBAAA,CACA,OAAA,CACA,UAAA,CACA,eAAA,CACA,WAAA,CACA,aAAA,CACA,YAAA,CACA,eAAA,CACA,eAAA,CACA,iBAAA,CACA,cAAA,CACA,eAAA,CACA,mBAAA,8BAAA,CACA,eAAA,UAAA,CAAA,UAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}.tool-call{border:1px solid var(--ai-border);border-left-width:3px;border-radius:var(--ai-radius);background:var(--ai-surface);padding:7px 10px;display:flex;flex-direction:column;gap:6px;min-width:0}.tool-call.status-pending_approval{border-left-color:var(--ai-warning);background:color-mix(in srgb, var(--ai-warning) 8%, var(--ai-surface))}.tool-call.status-awaiting_user{border-left-color:var(--ai-info)}.tool-call.status-running{border-left-color:var(--ai-accent)}.tool-call.status-ok{border-left-color:var(--ai-success)}.tool-call.status-attention{border-left-color:var(--ai-warning)}.tool-call.status-declined,.tool-call.status-cancelled{border-left-color:rgba(127,127,127,.5);opacity:.8}.tool-call.status-error{border-left-color:var(--ai-danger)}.tc-header{display:flex;align-items:center;gap:7px;min-width:0}.tc-header .tc-icon{opacity:.7;width:14px;text-align:center;flex:none}.tc-header .tc-title{font-weight:600;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tc-header .tc-terminal-link{background:none;border:none;color:inherit;opacity:.5;cursor:pointer;padding:0 2px;font-size:.85em}.tc-header .tc-terminal-link:hover{opacity:1;color:var(--ai-accent)}.tc-header .tc-status{font-size:.85em;white-space:nowrap;opacity:.8;display:inline-flex;align-items:center;gap:5px}.tc-header .tc-status.pending_approval{color:var(--ai-warning);opacity:1;font-weight:600}.tc-header .tc-status.awaiting_user{color:var(--ai-info);opacity:1}.tc-header .tc-status.running{color:var(--ai-accent);opacity:1}.tc-header .tc-status.ok{color:var(--ai-success)}.tc-header .tc-status.attention{color:var(--ai-warning);opacity:1}.tc-header .tc-status.error{color:var(--ai-danger);opacity:1}.tc-command{margin:0;padding:6px 9px;background:rgba(0,0,0,.22);border-radius:var(--ai-radius-sm);font-family:var(--ai-mono);font-size:.92em;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text}.tc-explanation{font-size:.92em;opacity:.8}.tc-warning{font-size:.92em;color:var(--ai-danger);display:flex;gap:6px;align-items:flex-start;font-weight:600}.tc-warning i{margin-top:2px}.tc-actions{display:flex;gap:6px;align-items:center;margin-top:2px;flex-wrap:wrap}.approve-group{position:relative;display:inline-flex}.approve-group .ai-btn.primary:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.approve-group .caret{border-top-left-radius:0;border-bottom-left-radius:0;padding:5px 7px;border-left:1px solid rgba(255,255,255,.25)}.approve-group .approve-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:10;background:var(--ai-bg);border:1px solid var(--ai-border);border-radius:var(--ai-radius-sm);box-shadow:0 6px 20px rgba(0,0,0,.35);min-width:260px;padding:4px}.approve-group .approve-menu button{display:block;width:100%;text-align:left;background:none;border:none;color:inherit;font:inherit;font-size:.92em;padding:6px 8px;border-radius:4px;cursor:pointer}.approve-group .approve-menu button:hover{background:var(--ai-surface-2)}.tc-question{display:flex;flex-direction:column;gap:8px}.tc-question .question-text{font-size:1em}.tc-question .choices{display:flex;flex-wrap:wrap;gap:6px}.tc-question .answer-row{display:flex;gap:6px}.tc-question .answer-row .ai-input{flex:1 1 auto;min-width:0}.tc-question .answered{font-size:.92em;opacity:.8}.tc-question .answered i{margin-right:4px;opacity:.6}.tc-output-toggle{align-self:flex-start;background:none;border:none;color:inherit;opacity:.65;font:inherit;font-size:.88em;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.tc-output-toggle:hover{opacity:1}.tc-output-toggle i.fas{width:10px;font-size:.77em}.tc-output-toggle .truncated{opacity:.7}.tc-output{margin:0;padding:6px 9px;background:rgba(0,0,0,.22);border-radius:var(--ai-radius-sm);font-family:var(--ai-mono);font-size:.88em;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;max-height:320px;overflow:auto;user-select:text}.tc-output.live{max-height:200px;border-left:2px solid var(--ai-accent)}.tc-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tc-footer .hint{font-size:.88em;opacity:.7}.tc-error{font-size:.92em;color:var(--ai-danger);overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/transcript/tool-call.component.scss\"],\"names\":[],\"mappings\":\"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\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;flex:1 1 auto;min-width:0;min-height:0}.transcript{flex:1 1 auto;min-width:0;overflow-y:auto;padding:12px 12px 16px;display:flex;flex-direction:column;gap:12px}.empty{margin:auto 0;padding:16px 8px;text-align:center;animation:ai-fade-in .25s ease-out}.empty .empty-icon{font-size:2em;opacity:.5;margin-bottom:8px}.empty .empty-title{font-weight:600;font-size:1.08em;margin-bottom:6px}.empty .empty-hint{opacity:.7;font-size:.92em;margin:0 auto 12px;max-width:34em}.empty .empty-hint code{font-family:var(--ai-mono)}.empty .empty-warning{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--ai-radius);background:color-mix(in srgb, var(--ai-warning) 15%, transparent);font-size:.92em}.empty .examples{display:flex;flex-direction:column;gap:6px;align-items:stretch;text-align:left}.empty .example{border:1px solid var(--ai-border);background:var(--ai-surface);color:inherit;border-radius:var(--ai-radius);padding:7px 10px;font:inherit;font-size:.92em;cursor:pointer;text-align:left}.empty .example:hover{background:var(--ai-surface-2);border-color:var(--ai-accent)}.msg{animation:ai-fade-in .2s ease-out;min-width:0}.msg.user{display:flex;justify-content:flex-end}.msg.user .bubble{max-width:92%;background:color-mix(in srgb, var(--ai-accent) 22%, transparent);border:1px solid color-mix(in srgb, var(--ai-accent) 35%, transparent);border-radius:12px 12px 3px 12px;padding:7px 11px;white-space:pre-wrap;overflow-wrap:anywhere}.msg.note{font-size:.88em;opacity:.7;padding:2px 4px;display:flex;gap:6px;align-items:flex-start}.msg.note i{margin-top:3px}.msg.assistant{display:flex;flex-direction:column;gap:8px}.reasoning .reasoning-toggle{background:none;border:none;color:inherit;opacity:.65;font:inherit;font-size:.88em;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.reasoning .reasoning-toggle:hover{opacity:1}.reasoning .reasoning-toggle i.fas{width:10px;font-size:.77em}.reasoning .reasoning-body{margin:6px 0 0;padding:8px 10px;border-left:2px solid var(--ai-border);font-family:inherit;font-size:.92em;opacity:.7;white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto}.typing{display:inline-flex;gap:4px;padding:4px 2px}.typing span{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4;animation:ai-pulse 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}.marker{font-size:.88em;opacity:.8;display:flex;gap:6px;align-items:center}.marker.error{color:var(--ai-danger);opacity:1;overflow-wrap:anywhere}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/transcript/transcript.component.scss\"],\"names\":[],\"mappings\":\"AAAA,MACE,YAAA,CACA,aAAA,CACA,WAAA,CACA,YAAA,CAGF,YACE,aAAA,CACA,WAAA,CACA,eAAA,CACA,sBAAA,CACA,YAAA,CACA,qBAAA,CACA,QAAA,CAGF,OACE,aAAA,CACA,gBAAA,CACA,iBAAA,CACA,kCAAA,CAEA,mBACE,aAAA,CACA,UAAA,CACA,iBAAA,CAEF,oBAAA,eAAA,CAAA,gBAAA,CAAA,iBAAA,CACA,mBAAA,UAAA,CAAA,eAAA,CAAA,kBAAA,CAAA,cAAA,CAAA,wBAAA,0BAAA,CACA,sBACE,mBAAA,CACA,kBAAA,CACA,OAAA,CACA,gBAAA,CACA,8BAAA,CACA,iEAAA,CACA,eAAA,CAEF,iBACE,YAAA,CACA,qBAAA,CACA,OAAA,CACA,mBAAA,CACA,eAAA,CAEF,gBACE,iCAAA,CACA,4BAAA,CACA,aAAA,CACA,8BAAA,CACA,gBAAA,CACA,YAAA,CACA,eAAA,CACA,cAAA,CACA,eAAA,CACA,sBAAA,8BAAA,CAAA,6BAAA,CAIJ,KACE,iCAAA,CACA,WAAA,CAGF,UACE,YAAA,CACA,wBAAA,CAEA,kBACE,aAAA,CACA,gEAAA,CACA,sEAAA,CACA,gCAAA,CACA,gBAAA,CACA,oBAAA,CACA,sBAAA,CAIJ,UACE,eAAA,CACA,UAAA,CACA,eAAA,CACA,YAAA,CACA,OAAA,CACA,sBAAA,CACA,YAAA,cAAA,CAGF,eACE,YAAA,CACA,qBAAA,CACA,OAAA,CAIA,6BACE,eAAA,CACA,WAAA,CACA,aAAA,CACA,WAAA,CACA,YAAA,CACA,eAAA,CACA,SAAA,CACA,cAAA,CACA,mBAAA,CACA,kBAAA,CACA,OAAA,CACA,mCAAA,SAAA,CACA,mCAAA,UAAA,CAAA,eAAA,CAEF,2BACE,cAAA,CACA,gBAAA,CACA,sCAAA,CACA,mBAAA,CACA,eAAA,CACA,UAAA,CACA,oBAAA,CACA,sBAAA,CACA,gBAAA,CACA,aAAA,CAIJ,QACE,mBAAA,CACA,OAAA,CACA,eAAA,CACA,aACE,SAAA,CAAA,UAAA,CAAA,iBAAA,CACA,uBAAA,CAAA,UAAA,CACA,gCAAA,CACA,0BAAA,mBAAA,CACA,0BAAA,mBAAA,CAIJ,QACE,eAAA,CACA,UAAA,CACA,YAAA,CACA,OAAA,CACA,kBAAA,CACA,cAAA,sBAAA,CAAA,SAAA,CAAA,sBAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.ai-panel-wrapper{--ai-bg: var(--theme-bg, var(--bs-body-bg, #1b1e23));--ai-fg: var(--theme-fg, var(--bs-body-color, #dfe3e8));--ai-surface: rgba(127, 127, 127, 0.10);--ai-surface-2: rgba(127, 127, 127, 0.18);--ai-surface-3: rgba(127, 127, 127, 0.26);--ai-border: rgba(127, 127, 127, 0.28);--ai-accent: var(--theme-primary, var(--bs-primary, #4d9be6));--ai-danger: var(--theme-danger, var(--bs-danger, #e5484d));--ai-warning: var(--theme-warning, var(--bs-warning, #f5a524));--ai-success: var(--theme-success, var(--bs-success, #3ecf8e));--ai-info: var(--theme-info, var(--bs-info, #58a6ff));--ai-radius: 8px;--ai-radius-sm: 5px;--ai-mono: var(--bs-font-monospace, \"JetBrains Mono\", \"Fira Code\", Menlo, Consolas, monospace);font-family:var(--bs-body-font-family, system-ui, -apple-system, \"Segoe UI\", sans-serif);color:var(--ai-fg)}.ai-panel-wrapper *{box-sizing:border-box}.ai-panel-wrapper .icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.15em;height:2.15em;border:none;border-radius:var(--ai-radius-sm);background:rgba(0,0,0,0);color:inherit;opacity:.75;cursor:pointer;font-size:1em;padding:0;flex:none}.ai-panel-wrapper .icon-btn:hover{background:var(--ai-surface-2);opacity:1}.ai-panel-wrapper .icon-btn.active{background:var(--ai-surface-2);opacity:1;color:var(--ai-accent)}.ai-panel-wrapper .icon-btn:disabled{opacity:.35;cursor:default;background:rgba(0,0,0,0)}.ai-panel-wrapper .ai-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:var(--ai-radius-sm);border:1px solid var(--ai-border);background:var(--ai-surface);color:inherit;font:inherit;font-size:.92em;cursor:pointer;white-space:nowrap}.ai-panel-wrapper .ai-btn:hover{background:var(--ai-surface-2)}.ai-panel-wrapper .ai-btn:disabled{opacity:.45;cursor:default}.ai-panel-wrapper .ai-btn.primary{background:var(--ai-accent);border-color:var(--ai-accent);color:#fff}.ai-panel-wrapper .ai-btn.primary:hover{filter:brightness(1.1)}.ai-panel-wrapper .ai-btn.danger{color:var(--ai-danger);border-color:color-mix(in srgb, var(--ai-danger) 50%, transparent)}.ai-panel-wrapper .ai-btn.danger:hover{background:color-mix(in srgb, var(--ai-danger) 15%, transparent)}.ai-panel-wrapper .ai-btn.small{padding:3px 8px;font-size:.85em}.ai-panel-wrapper .ai-btn kbd{font-family:inherit;font-size:.85em;opacity:.7;background:rgba(0,0,0,.2);padding:0 4px;border-radius:3px}.ai-panel-wrapper .ai-input,.ai-panel-wrapper .ai-select{background:var(--ai-surface);border:1px solid var(--ai-border);border-radius:var(--ai-radius-sm);color:inherit;font:inherit;font-size:.92em;padding:5px 8px;outline:none}.ai-panel-wrapper .ai-input:focus,.ai-panel-wrapper .ai-select:focus{border-color:var(--ai-accent)}.ai-panel-wrapper .ai-select{appearance:none;padding-right:20px;background-image:linear-gradient(45deg, transparent 50%, currentColor 50%),linear-gradient(135deg, currentColor 50%, transparent 50%);background-position:calc(100% - 11px) 55%,calc(100% - 7px) 55%;background-size:4px 4px,4px 4px;background-repeat:no-repeat}.ai-panel-wrapper .ai-select option{background:var(--ai-bg);color:var(--ai-fg)}.ai-panel-wrapper .badge-risk{display:inline-flex;align-items:center;padding:1px 7px;border-radius:10px;font-size:.77em;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.ai-panel-wrapper .badge-risk.low{background:color-mix(in srgb, var(--ai-success) 22%, transparent);color:var(--ai-success)}.ai-panel-wrapper .badge-risk.medium{background:color-mix(in srgb, var(--ai-warning) 22%, transparent);color:var(--ai-warning)}.ai-panel-wrapper .badge-risk.high{background:color-mix(in srgb, var(--ai-danger) 22%, transparent);color:var(--ai-danger)}.ai-panel-wrapper .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.ai-panel-wrapper .dot.idle{background:rgba(127,127,127,.7)}.ai-panel-wrapper .dot.active{background:var(--ai-info)}.ai-panel-wrapper .dot.running{background:var(--ai-accent);animation:ai-pulse 1s infinite}.ai-panel-wrapper .dot.awaiting_input{background:var(--ai-warning)}.ai-panel-wrapper .dot.alt_screen{background:var(--ai-info)}.ai-panel-wrapper .dot.disconnected,.ai-panel-wrapper .dot.closed{background:rgba(0,0,0,0);box-shadow:inset 0 0 0 1.5px rgba(127,127,127,.7)}.ai-panel-wrapper .dot.not_started{background:rgba(0,0,0,0);box-shadow:inset 0 0 0 1.5px rgba(127,127,127,.5);opacity:.7}.ai-panel-wrapper ::-webkit-scrollbar{width:8px;height:8px}.ai-panel-wrapper ::-webkit-scrollbar-thumb{background:var(--ai-surface-3);border-radius:4px}.ai-panel-wrapper ::-webkit-scrollbar-track{background:rgba(0,0,0,0)}.ai-panel-wrapper .markdown{overflow-wrap:anywhere}.ai-panel-wrapper .markdown>:first-child{margin-top:0}.ai-panel-wrapper .markdown>:last-child{margin-bottom:0}.ai-panel-wrapper .markdown p{margin:0 0 .6em}.ai-panel-wrapper .markdown ul,.ai-panel-wrapper .markdown ol{margin:0 0 .6em;padding-left:1.4em}.ai-panel-wrapper .markdown li{margin:.15em 0}.ai-panel-wrapper .markdown h1,.ai-panel-wrapper .markdown h2,.ai-panel-wrapper .markdown h3,.ai-panel-wrapper .markdown h4{margin:.8em 0 .4em;font-size:1.05em;font-weight:700}.ai-panel-wrapper .markdown h1{font-size:1.2em}.ai-panel-wrapper .markdown h2{font-size:1.12em}.ai-panel-wrapper .markdown a{color:var(--ai-accent)}.ai-panel-wrapper .markdown blockquote{margin:.4em 0;padding:.2em .8em;border-left:3px solid var(--ai-border);opacity:.85}.ai-panel-wrapper .markdown table{border-collapse:collapse;margin:.4em 0;font-size:.92em}.ai-panel-wrapper .markdown th,.ai-panel-wrapper .markdown td{border:1px solid var(--ai-border);padding:3px 8px}.ai-panel-wrapper .markdown hr{border:none;border-top:1px solid var(--ai-border);margin:.8em 0}.ai-panel-wrapper .markdown code{font-family:var(--ai-mono);font-size:.92em;background:var(--ai-surface-2);padding:1px 5px;border-radius:4px}.ai-panel-wrapper .markdown .code-block{position:relative;margin:.5em 0;border:1px solid var(--ai-border);border-radius:var(--ai-radius-sm);background:rgba(0,0,0,.18);overflow:hidden}.ai-panel-wrapper .markdown .code-block pre{margin:0;padding:8px 10px;overflow-x:auto;font-family:var(--ai-mono);font-size:.92em;line-height:1.45}.ai-panel-wrapper .markdown .code-block code{background:none;padding:0;font-size:inherit}.ai-panel-wrapper .markdown .code-block .code-actions{position:absolute;top:3px;right:4px;display:flex;gap:3px;align-items:center;opacity:0;transition:opacity .15s}.ai-panel-wrapper .markdown .code-block:hover .code-actions{opacity:1}.ai-panel-wrapper .markdown .code-block .code-lang{font-size:.77em;opacity:.6;margin-right:4px;text-transform:lowercase}.ai-panel-wrapper .markdown .code-block .code-action{border:1px solid var(--ai-border);background:var(--ai-bg);color:inherit;border-radius:4px;font-size:.77em;padding:1px 6px;cursor:pointer}.ai-panel-wrapper .markdown .code-block .code-action:hover{background:var(--ai-surface-2)}@keyframes ai-pulse{0%,100%{opacity:1}50%{opacity:.35}}@keyframes ai-fade-in{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/ui/styles.scss\"],\"names\":[],\"mappings\":\"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\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__358__;","module.exports = __WEBPACK_EXTERNAL_MODULE__860__;","module.exports = __WEBPACK_EXTERNAL_MODULE__182__;","module.exports = __WEBPACK_EXTERNAL_MODULE__165__;","module.exports = __WEBPACK_EXTERNAL_MODULE__765__;","module.exports = __WEBPACK_EXTERNAL_MODULE__947__;","module.exports = __WEBPACK_EXTERNAL_MODULE__236__;","module.exports = __WEBPACK_EXTERNAL_MODULE__333__;","module.exports = __WEBPACK_EXTERNAL_MODULE__234__;","module.exports = __WEBPACK_EXTERNAL_MODULE__911__;","module.exports = __WEBPACK_EXTERNAL_MODULE__961__;","module.exports = __WEBPACK_EXTERNAL_MODULE__650__;","module.exports = __WEBPACK_EXTERNAL_MODULE__700__;","module.exports = __WEBPACK_EXTERNAL_MODULE__349__;","module.exports = __WEBPACK_EXTERNAL_MODULE__917__;","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tconst module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// wrap a concatenated module body as a lazy, memoized accessor; mod is\n// set before the body runs so re-entrant calls (require cycles) observe\n// the partial exports like Node.js\n__webpack_require__.cw = (body) => {\n\tvar mod;\n\treturn () => {\n\t\tif (body) {\n\t\t\tvar fn = body;\n\t\t\tbody = 0;\n\t\t\tmod = { exports: {} };\n\t\t\tfn.call(mod.exports, mod, mod.exports);\n\t\t}\n\t\treturn mod.exports;\n\t};\n};","// define getter/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tvar descriptor = binding === 0 ? { enumerable: true, value: definition[i++] } : { enumerable: true, get: binding };\n\t\t\tif(!__webpack_require__.o(exports, key)) Object.defineProperty(exports, key, descriptor);\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop));","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","\"use strict\";\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].use[2]!./styles.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[6].use[2]!./styles.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { ApprovalMode } from './session'\n\nexport type PanelSide = 'left' | 'right'\n\nexport interface AiPanelConfig {\n endpoint: string\n apiKey: string\n model: string\n /** JSON-encoded extra body parameters (temperature, reasoning options…). */\n extraParamsText: string\n additionalSystemPrompt: string\n approvalMode: ApprovalMode\n panelSide: PanelSide\n panelWidth: number\n /** Base text size of the panel in px; everything else scales with it. */\n fontSize: number\n panelVisible: boolean\n /** Switch to the tab the agent is acting on. */\n focusTerminalOnRun: boolean\n /** Characters of a tool result that are sent to the model (head+tail). */\n maxToolResultChars: number\n /** Approximate context budget in characters; older tool output is elided first. */\n maxContextChars: number\n /** Default command time budget in seconds when the model does not specify one. */\n defaultCommandTimeout: number\n showReasoning: boolean\n autoTitle: boolean\n}\n\nexport const CONFIG_KEY = 'aiPanel'\n\nexport const DEFAULT_CONFIG: AiPanelConfig = {\n endpoint: '',\n apiKey: '',\n model: '',\n extraParamsText: '',\n additionalSystemPrompt: '',\n approvalMode: 'ask',\n panelSide: 'right',\n panelWidth: 420,\n fontSize: 13,\n panelVisible: false,\n focusTerminalOnRun: false,\n maxToolResultChars: 12000,\n maxContextChars: 160000,\n defaultCommandTimeout: 60,\n showReasoning: true,\n autoTitle: true,\n}\n\nexport const HOTKEY_IDS = {\n toggle: 'ai-panel-toggle',\n approve: 'ai-panel-approve',\n deny: 'ai-panel-deny',\n stop: 'ai-panel-stop',\n focusInput: 'ai-panel-focus-input',\n newSession: 'ai-panel-new-session',\n} as const\n","import { ConfigProvider, Platform } from 'tabby-core'\nimport { CONFIG_KEY, DEFAULT_CONFIG, HOTKEY_IDS } from './types/config'\n\n/** @hidden */\nexport class AiPanelConfigProvider extends ConfigProvider {\n defaults = {\n [CONFIG_KEY]: { ...DEFAULT_CONFIG },\n hotkeys: {\n [HOTKEY_IDS.toggle]: ['Ctrl-Alt-A'],\n [HOTKEY_IDS.approve]: ['Ctrl-Alt-Y'],\n [HOTKEY_IDS.deny]: ['Ctrl-Alt-X'],\n [HOTKEY_IDS.stop]: ['Ctrl-Alt-S'],\n [HOTKEY_IDS.focusInput]: ['Ctrl-Alt-I'],\n [HOTKEY_IDS.newSession]: ['Ctrl-Alt-N'],\n },\n }\n\n platformDefaults = {\n [Platform.macOS]: {\n hotkeys: {\n [HOTKEY_IDS.toggle]: ['⌘-Shift-A'],\n [HOTKEY_IDS.approve]: ['⌘-Shift-Y'],\n [HOTKEY_IDS.deny]: ['⌘-Shift-X'],\n [HOTKEY_IDS.stop]: ['⌘-Shift-S'],\n [HOTKEY_IDS.focusInput]: ['⌘-Shift-I'],\n [HOTKEY_IDS.newSession]: ['⌘-Shift-N'],\n },\n },\n }\n}\n","import { Injectable } from '@angular/core'\nimport { HotkeyDescription, HotkeyProvider } from 'tabby-core'\nimport { HOTKEY_IDS } from './types/config'\n\n/** @hidden */\n@Injectable()\nexport class AiPanelHotkeyProvider extends HotkeyProvider {\n async provide (): Promise<HotkeyDescription[]> {\n return [\n { id: HOTKEY_IDS.toggle, name: 'AI panel: toggle' },\n { id: HOTKEY_IDS.approve, name: 'AI panel: approve pending action' },\n { id: HOTKEY_IDS.deny, name: 'AI panel: deny pending action' },\n { id: HOTKEY_IDS.stop, name: 'AI panel: stop the agent' },\n { id: HOTKEY_IDS.focusInput, name: 'AI panel: focus the prompt' },\n { id: HOTKEY_IDS.newSession, name: 'AI panel: new session' },\n ]\n }\n}\n","import * as http from 'http'\nimport * as https from 'https'\nimport { URL } from 'url'\n\nexport interface StreamRequestOptions {\n method?: string\n headers?: Record<string, string>\n body?: string\n signal?: AbortSignal\n timeoutMs?: number\n}\n\nexport interface StreamResponse {\n status: number\n headers: Record<string, string | string[] | undefined>\n /** Decoded text chunks. */\n chunks: AsyncIterable<string>\n}\n\nexport class HttpError extends Error {\n constructor (public status: number, public body: string, url: string) {\n super(`HTTP ${status} from ${url}${body ? `: ${body.slice(0, 600)}` : ''}`)\n this.name = 'HttpError'\n }\n}\n\n/**\n * Perform an HTTP request through Node's http/https (available in Tabby's\n * renderer) and expose the response body as an async iterable of text.\n * Using Node instead of `fetch` sidesteps CORS on self-hosted endpoints.\n */\nexport function streamRequest (url: string, options: StreamRequestOptions = {}): Promise<StreamResponse> {\n return new Promise((resolve, reject) => {\n let target: URL\n try {\n target = new URL(url)\n } catch {\n reject(new Error(`Invalid URL: ${url}`))\n return\n }\n const lib = target.protocol === 'https:' ? https : http\n const body = options.body ?? ''\n const headers: Record<string, string> = {\n ...(options.headers ?? {}),\n }\n if (body) {\n headers['Content-Length'] = String(Buffer.byteLength(body))\n }\n const req = lib.request(target, {\n method: options.method ?? 'GET',\n headers,\n }, res => {\n const status = res.statusCode ?? 0\n if (status >= 300 && status < 400 && res.headers.location && !(options as any).__redirected) {\n res.resume()\n const next = new URL(res.headers.location, target).toString()\n streamRequest(next, { ...options, __redirected: true } as any).then(resolve, reject)\n return\n }\n res.setEncoding('utf8')\n const chunks = iterateStream(res, options.signal)\n resolve({ status, headers: res.headers, chunks })\n })\n req.on('error', err => reject(err))\n if (options.timeoutMs) {\n req.setTimeout(options.timeoutMs, () => {\n req.destroy(new Error(`Request timed out after ${options.timeoutMs} ms`))\n })\n }\n if (options.signal) {\n if (options.signal.aborted) {\n req.destroy(abortError())\n reject(abortError())\n return\n }\n options.signal.addEventListener('abort', () => req.destroy(abortError()), { once: true })\n }\n if (body) {\n req.write(body)\n }\n req.end()\n })\n}\n\nasync function* iterateStream (res: http.IncomingMessage, signal?: AbortSignal): AsyncGenerator<string> {\n const queue: string[] = []\n let done = false\n let error: Error | null = null\n let wake: (() => void) | null = null\n const notify = () => { if (wake) { const w = wake; wake = null; w() } }\n\n res.on('data', (chunk: string) => { queue.push(chunk); notify() })\n res.on('end', () => { done = true; notify() })\n res.on('error', err => { error = err; done = true; notify() })\n res.on('close', () => { done = true; notify() })\n\n while (true) {\n if (queue.length) {\n yield queue.shift()!\n continue\n }\n if (error) {\n throw error\n }\n if (done) {\n return\n }\n if (signal?.aborted) {\n throw abortError()\n }\n await new Promise<void>(r => { wake = r })\n }\n}\n\nexport async function readAll (chunks: AsyncIterable<string>): Promise<string> {\n let out = ''\n for await (const c of chunks) {\n out += c\n }\n return out\n}\n\nexport interface SSEEvent {\n event?: string\n data: string\n}\n\n/** Parse a text/event-stream body into events. Tolerates `\\r\\n` and comment lines. */\nexport async function* parseSSE (chunks: AsyncIterable<string>): AsyncGenerator<SSEEvent> {\n let buffer = ''\n for await (const chunk of chunks) {\n buffer += chunk\n let idx: number\n // events are separated by a blank line\n while ((idx = buffer.search(/\\r?\\n\\r?\\n/)) !== -1) {\n const sepLen = buffer[idx] === '\\r' ? 4 : 2\n const raw = buffer.slice(0, idx)\n buffer = buffer.slice(idx + sepLen)\n const evt = parseEventBlock(raw)\n if (evt) {\n yield evt\n }\n }\n }\n const tail = parseEventBlock(buffer)\n if (tail) {\n yield tail\n }\n}\n\nfunction parseEventBlock (raw: string): SSEEvent | null {\n const dataLines: string[] = []\n let event: string | undefined\n for (const line of raw.split(/\\r?\\n/)) {\n if (!line || line.startsWith(':')) {\n continue\n }\n const colon = line.indexOf(':')\n const field = colon === -1 ? line : line.slice(0, colon)\n let value = colon === -1 ? '' : line.slice(colon + 1)\n if (value.startsWith(' ')) {\n value = value.slice(1)\n }\n if (field === 'data') {\n dataLines.push(value)\n } else if (field === 'event') {\n event = value\n }\n }\n if (!dataLines.length) {\n return null\n }\n return { event, data: dataLines.join('\\n') }\n}\n\nexport function abortError (): Error {\n const e = new Error('The operation was aborted')\n e.name = 'AbortError'\n return e\n}\n\nexport function isAbortError (e: unknown): boolean {\n return !!e && typeof e === 'object' && (e as any).name === 'AbortError'\n}\n","import { ChatMessage, ChatProvider, ChatStreamEvent, ProviderConfig, ToolSpec } from './types'\nimport { HttpError, parseSSE, readAll, streamRequest } from '../util/sse'\n\n/** `https://host/v1/chat/completions` | `https://host/v1` | `https://host` → `https://host` */\nexport function normalizeBaseUrl (endpoint: string): string {\n let base = (endpoint ?? '').trim()\n base = base.replace(/\\/chat\\/completions\\/?$/i, '')\n base = base.replace(/\\/v1\\/?$/i, '')\n return base.replace(/\\/+$/, '')\n}\n\nexport function chatCompletionsUrl (endpoint: string): string {\n return `${normalizeBaseUrl(endpoint)}/v1/chat/completions`\n}\n\nexport function modelsUrl (endpoint: string): string {\n return `${normalizeBaseUrl(endpoint)}/v1/models`\n}\n\nexport function toOpenAIMessages (messages: ChatMessage[]): any[] {\n return messages.map(m => {\n switch (m.role) {\n case 'system':\n return { role: 'system', content: m.content }\n case 'user':\n return { role: 'user', content: m.content }\n case 'assistant': {\n const out: any = { role: 'assistant', content: m.content ?? '' }\n if (m.toolCalls?.length) {\n out.tool_calls = m.toolCalls.map(tc => ({\n id: tc.id,\n type: 'function',\n function: { name: tc.name, arguments: tc.arguments || '{}' },\n }))\n if (!m.content) {\n out.content = null\n }\n }\n return out\n }\n case 'tool':\n return { role: 'tool', tool_call_id: m.toolCallId, name: m.name, content: m.content }\n }\n })\n}\n\nexport function toOpenAITools (tools: ToolSpec[]): any[] {\n return tools.map(t => ({\n type: 'function',\n function: { name: t.name, description: t.description, parameters: t.parameters },\n }))\n}\n\n/**\n * Translate one streamed `chat.completion.chunk` into provider events.\n * Exported for unit tests.\n */\nexport function chunkToEvents (parsed: any): ChatStreamEvent[] {\n const events: ChatStreamEvent[] = []\n if (parsed?.usage && (parsed.usage.prompt_tokens != null || parsed.usage.completion_tokens != null)) {\n events.push({ type: 'usage', prompt: parsed.usage.prompt_tokens ?? 0, completion: parsed.usage.completion_tokens ?? 0 })\n }\n const choice = parsed?.choices?.[0]\n if (!choice) {\n return events\n }\n const delta = choice.delta ?? choice.message ?? {}\n const reasoning = delta.reasoning_content ?? delta.reasoning\n if (typeof reasoning === 'string' && reasoning) {\n events.push({ type: 'reasoning', delta: reasoning })\n }\n if (typeof delta.content === 'string' && delta.content) {\n events.push({ type: 'text', delta: delta.content })\n }\n if (Array.isArray(delta.tool_calls)) {\n delta.tool_calls.forEach((tc: any, i: number) => {\n events.push({\n type: 'tool_call',\n index: typeof tc.index === 'number' ? tc.index : i,\n id: tc.id || undefined,\n name: tc.function?.name || undefined,\n argumentsDelta: tc.function?.arguments || undefined,\n })\n })\n }\n if (choice.finish_reason) {\n events.push({ type: 'done', finishReason: choice.finish_reason })\n }\n return events\n}\n\nexport class OpenAICompatibleProvider implements ChatProvider {\n constructor (private config: ProviderConfig) {}\n\n private headers (): Record<string, string> {\n const h: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n }\n const key = this.config.apiKey?.trim()\n if (key) {\n h.Authorization = `Bearer ${key}`\n }\n return h\n }\n\n async* stream (messages: ChatMessage[], tools: ToolSpec[], signal?: AbortSignal): AsyncGenerator<ChatStreamEvent> {\n const url = chatCompletionsUrl(this.config.endpoint)\n const body: any = {\n model: this.config.model || 'default',\n messages: toOpenAIMessages(messages),\n stream: true,\n ...(this.config.extraParams ?? {}),\n }\n if (tools.length) {\n body.tools = toOpenAITools(tools)\n body.tool_choice = body.tool_choice ?? 'auto'\n }\n const res = await streamRequest(url, {\n method: 'POST',\n headers: this.headers(),\n body: JSON.stringify(body),\n signal,\n })\n if (res.status < 200 || res.status >= 300) {\n const text = await readAll(res.chunks)\n throw new HttpError(res.status, extractErrorMessage(text), url)\n }\n const contentType = String(res.headers['content-type'] ?? '')\n if (!contentType.includes('text/event-stream')) {\n // Some servers ignore `stream: true` and answer with a plain JSON completion.\n const text = await readAll(res.chunks)\n let parsed: any\n try {\n parsed = JSON.parse(text)\n } catch {\n throw new Error(`Unexpected non-JSON response from ${url}: ${text.slice(0, 300)}`)\n }\n for (const e of chunkToEvents(parsed)) {\n yield e\n }\n return\n }\n let sawDone = false\n for await (const evt of parseSSE(res.chunks)) {\n if (evt.data === '[DONE]') {\n break\n }\n let parsed: any\n try {\n parsed = JSON.parse(evt.data)\n } catch {\n continue\n }\n if (parsed?.error) {\n throw new Error(typeof parsed.error === 'string' ? parsed.error : (parsed.error.message ?? JSON.stringify(parsed.error)))\n }\n for (const e of chunkToEvents(parsed)) {\n if (e.type === 'done') {\n sawDone = true\n }\n yield e\n }\n }\n if (!sawDone) {\n yield { type: 'done', finishReason: null }\n }\n }\n\n async ping (): Promise<{ ok: true, models?: string[] }> {\n const url = modelsUrl(this.config.endpoint)\n try {\n const res = await streamRequest(url, { method: 'GET', headers: this.headers(), timeoutMs: 10000 })\n const text = await readAll(res.chunks)\n if (res.status >= 200 && res.status < 300) {\n try {\n const parsed = JSON.parse(text)\n const models = (parsed?.data ?? parsed?.models ?? []).map((m: any) => m.id ?? m.name).filter(Boolean)\n return { ok: true, models }\n } catch {\n return { ok: true }\n }\n }\n // /v1/models is optional; fall back to a 1-token completion\n if (res.status !== 404 && res.status !== 405) {\n throw new HttpError(res.status, extractErrorMessage(text), url)\n }\n } catch (e) {\n if (e instanceof HttpError) {\n throw e\n }\n throw new Error(`Cannot reach ${url}: ${(e as Error).message}`)\n }\n const completions = chatCompletionsUrl(this.config.endpoint)\n const res = await streamRequest(completions, {\n method: 'POST',\n headers: this.headers(),\n body: JSON.stringify({ model: this.config.model || 'default', messages: [{ role: 'user', content: 'ping' }], max_tokens: 1, stream: false }),\n timeoutMs: 20000,\n })\n const text = await readAll(res.chunks)\n if (res.status < 200 || res.status >= 300) {\n throw new HttpError(res.status, extractErrorMessage(text), completions)\n }\n return { ok: true }\n }\n}\n\nfunction extractErrorMessage (text: string): string {\n try {\n const parsed = JSON.parse(text)\n const msg = parsed?.error?.message ?? parsed?.message ?? parsed?.error ?? parsed?.detail\n if (msg) {\n return typeof msg === 'string' ? msg : JSON.stringify(msg)\n }\n } catch {\n // not JSON\n }\n return text\n}\n","let counter = 0\n\n/** Short unique id: `<prefix>_<time36><counter36>` (no crypto dependency needed). */\nexport function newId (prefix: string): string {\n counter = (counter + 1) % 1296\n const rand = Math.floor(Math.random() * 1296).toString(36).padStart(2, '0')\n return `${prefix}_${Date.now().toString(36)}${counter.toString(36).padStart(2, '0')}${rand}`\n}\n\nexport function nowIso (): string {\n return new Date().toISOString()\n}\n","/**\n * Heuristics for figuring out what a terminal is doing from its screen text.\n *\n * Two signals are combined:\n * - a \"learned\" prompt: the line under the cursor right before a command is\n * sent is the shell prompt; its trailing symbol is what we look for again\n * - generic prompt patterns as a fallback for the first command / odd shells\n */\n\nexport const GENERIC_PROMPT_PATTERNS: RegExp[] = [\n /[$#%>]\\s*$/, // bash/zsh/sh/fish/cmd/python REPL\n /❯\\s*$/, // starship / pure\n /➜\\s*$/, // oh-my-zsh robbyrussell\n /»\\s*$/,\n /PS [^>]*>\\s*$/i, // PowerShell\n /^\\(.*\\)\\s*[$#%>❯]\\s*$/, // venv/conda prefixed prompts\n]\n\n/** Lines that mean \"a program is waiting for the user to type something\". */\nexport const INPUT_PROMPT_PATTERNS: RegExp[] = [\n /password[^:\\n]*:\\s*$/i,\n /passphrase[^:\\n]*:\\s*$/i,\n /\\[sudo\\]/i,\n /\\(y(es)?\\/n(o)?\\)\\s*[:?]?\\s*$/i,\n /\\[y(es)?\\/n(o)?\\]\\s*[:?]?\\s*$/i,\n /\\[y\\/n\\/[a-z]+\\]/i,\n /(yes|no)\\)\\s*[?:]?\\s*$/i,\n /do you want to continue\\??/i,\n /press (enter|return|any key)/i,\n /are you sure[^\\n]*\\?\\s*$/i,\n /continue connecting \\(yes\\/no(\\/\\[fingerprint\\])?\\)\\?\\s*$/i,\n /:\\s*$/, // generic \"Something:\" waiting for a value\n /\\?\\s*$/, // generic question\n /^--More--/i,\n /\\(END\\)\\s*$/,\n]\n\n/** The final non-space character of the prompt line, if it looks like a prompt terminator. */\nexport function learnPromptTerminator (promptLine: string): string | null {\n const trimmed = (promptLine ?? '').trimEnd()\n if (!trimmed) {\n return null\n }\n const last = trimmed[trimmed.length - 1]\n // letters/digits are never a prompt terminator (a plain \"user@host\" would be a mis-learn)\n if (/[\\p{L}\\p{N}]/u.test(last)) {\n return null\n }\n return last\n}\n\nexport function isGenericPrompt (line: string): boolean {\n const t = line.trimEnd()\n return t.length > 0 && GENERIC_PROMPT_PATTERNS.some(p => p.test(t))\n}\n\n/**\n * Does the last line look like the shell prompt is back?\n * `terminator` is the learned trailing symbol (may be null).\n */\nexport function looksLikePrompt (lastLine: string, terminator: string | null): boolean {\n const t = lastLine.trimEnd()\n if (!t) {\n return false\n }\n if (terminator && t.endsWith(terminator)) {\n return true\n }\n return isGenericPrompt(t)\n}\n\nexport function looksLikeInputPrompt (lastLine: string): boolean {\n const t = lastLine.trim()\n if (!t) {\n return false\n }\n return INPUT_PROMPT_PATTERNS.some(p => p.test(t))\n}\n\n/**\n * Strip the command echo (prompt + command, possibly wrapped) from the top of\n * a capture and the fresh prompt from the bottom.\n */\nexport function stripEchoAndPrompt (lines: string[], command: string, terminator: string | null): string[] {\n let out = [...lines]\n const cmdHead = command.trim().split('\\n')[0].slice(0, 24)\n // drop leading echo line(s)\n let dropped = 0\n while (out.length && dropped < 3) {\n const l = out[0]\n if (cmdHead && l.includes(cmdHead)) {\n out.shift()\n dropped++\n break\n }\n if (l.trim() === '' || (dropped === 0 && looksLikePrompt(l, terminator) && !l.includes(cmdHead))) {\n out.shift()\n dropped++\n continue\n }\n break\n }\n // drop trailing prompt\n while (out.length && out[out.length - 1].trim() === '') {\n out.pop()\n }\n if (out.length && looksLikePrompt(out[out.length - 1], terminator) && !looksLikeInputPrompt(out[out.length - 1])) {\n out = out.slice(0, -1)\n }\n return out\n}\n","import { Injectable, NgZone } from '@angular/core'\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs'\nimport { AppService, BaseTabComponent, SplitTabComponent } from 'tabby-core'\nimport { BaseTerminalTabComponent } from 'tabby-terminal'\nimport { TerminalDescriptor, TerminalKind } from '../types/session'\nimport { newId } from './util/ids'\nimport { looksLikeInputPrompt } from './util/prompt-detect'\n\n/** An xterm.js marker: a line reference that follows the buffer as it scrolls/trims. */\nexport interface XtermMarker {\n line: number\n isDisposed: boolean\n dispose (): void\n}\n\n/** The subset of the xterm.js API we read from. */\ninterface XtermLike {\n rows: number\n cols: number\n registerMarker? (cursorYOffset?: number): XtermMarker | undefined\n buffer: {\n active: {\n type: 'normal' | 'alternate'\n baseY: number\n cursorY: number\n cursorX: number\n viewportY: number\n length: number\n getLine (y: number): { translateToString (trimRight?: boolean): string, isWrapped: boolean } | undefined\n }\n }\n}\n\nexport type TerminalStatus = 'idle' | 'active' | 'running' | 'awaiting_input' | 'alt_screen' | 'not_started' | 'closed'\n\nexport interface TerminalEntry {\n id: string\n tab: BaseTerminalTabComponent<any>\n descriptor: TerminalDescriptor\n label: string\n /** Timestamp of the last output chunk from the session. */\n lastOutputAt: number\n /** Incremented on every output chunk – cheap change detection. */\n outputSeq: number\n /** Id of the tool call currently driving this terminal, if any. */\n busyWith: string | null\n /** Where the last capture ended (for \"what's new since\"). */\n readMarker: BufferPosition\n closed: boolean\n}\n\n/**\n * A position in the buffer. `row` is the absolute row at the time it was\n * taken; `marker` (when xterm provides one) keeps following that line as the\n * scrollback fills up and old rows are trimmed – absolute rows alone drift.\n */\nexport interface BufferPosition {\n row: number\n marker?: XtermMarker | null\n}\n\nexport interface ResolvedPosition {\n /** Current absolute row of the anchored line (0 if it scrolled away). */\n row: number\n /** The anchored line is gone from the buffer. */\n trimmed: boolean\n /** The buffer was replaced/cleared since the position was taken. */\n reset: boolean\n}\n\nexport interface BufferCapture {\n /** Logical lines (wrapped rows joined). */\n lines: string[]\n /** Absolute row index just past the captured region. */\n endRow: number\n isAlternate: boolean\n}\n\n/**\n * Knows about every terminal tab in the app, in tab order, with a stable\n * runtime id and a descriptor good enough to re-identify the tab later.\n */\n@Injectable({ providedIn: 'root' })\nexport class TerminalRegistryService {\n private entries = new Map<string, TerminalEntry>()\n private byTab = new WeakMap<BaseTerminalTabComponent<any>, TerminalEntry>()\n private subs = new Map<string, Subscription[]>()\n private changed = new BehaviorSubject<TerminalEntry[]>([])\n\n /** Emits the ordered terminal list whenever tabs, titles or status change. */\n get changed$ (): Observable<TerminalEntry[]> {\n return this.changed.asObservable()\n }\n\n constructor (\n private app: AppService,\n private zone: NgZone,\n ) {\n this.app.tabsChanged$.subscribe(() => this.emit())\n this.app.activeTabChange$.subscribe(() => this.emit())\n // Tabs that already exist when the plugin loads (e.g. restored on startup)\n this.app.ready$.subscribe(() => this.scan())\n this.app.tabOpened$.subscribe(() => setTimeout(() => this.scan(), 50))\n }\n\n /** Pick up any terminal tabs that the decorator did not report (defensive). */\n scan (): void {\n for (const tab of this.iterateTerminalTabs()) {\n this.register(tab)\n }\n this.emit()\n }\n\n register (tab: BaseTerminalTabComponent<any>): TerminalEntry {\n const existing = this.byTab.get(tab)\n if (existing) {\n // a destroyed tab is never registered again (it can linger in the tab tree briefly)\n return existing\n }\n const entry: TerminalEntry = {\n id: newId('term'),\n tab,\n descriptor: describeTab(tab),\n label: '',\n lastOutputAt: 0,\n outputSeq: 0,\n busyWith: null,\n readMarker: { row: 0 },\n closed: false,\n }\n this.entries.set(entry.id, entry)\n this.byTab.set(tab, entry)\n const subs: Subscription[] = []\n try {\n subs.push(tab.output$.subscribe(() => {\n entry.lastOutputAt = Date.now()\n entry.outputSeq++\n }))\n } catch {\n // frontend not ready yet – output$ getter can throw; retry when ready\n subs.push(tab.frontendReady$.subscribe(() => {\n subs.push(tab.output$.subscribe(() => {\n entry.lastOutputAt = Date.now()\n entry.outputSeq++\n }))\n }))\n }\n subs.push(tab.titleChange$.subscribe(() => {\n entry.descriptor = describeTab(tab)\n this.emit()\n }))\n subs.push(tab.destroyed$.subscribe(() => this.unregister(tab)))\n this.subs.set(entry.id, subs)\n this.emit()\n return entry\n }\n\n unregister (tab: BaseTerminalTabComponent<any>): void {\n const entry = this.byTab.get(tab)\n if (!entry || entry.closed) {\n return\n }\n this.close(entry)\n this.emit()\n }\n\n private close (entry: TerminalEntry): void {\n entry.closed = true\n entry.busyWith = null\n this.entries.delete(entry.id)\n // keep the byTab mapping so a lingering destroyed tab is not re-registered\n for (const s of this.subs.get(entry.id) ?? []) {\n s.unsubscribe()\n }\n this.subs.delete(entry.id)\n }\n\n /**\n * All open terminals in visual tab order. Entries whose tab has vanished\n * from the tab tree are closed here, so this is also the garbage collector.\n */\n list (): TerminalEntry[] {\n const ordered: TerminalEntry[] = []\n const seen = new Set<string>()\n for (const tab of this.iterateTerminalTabs()) {\n const entry = this.byTab.get(tab) ?? this.register(tab)\n if (entry.closed) {\n continue\n }\n // renames set customTitle without a titleChange$, so refresh here\n entry.descriptor = describeTab(tab)\n seen.add(entry.id)\n ordered.push(entry)\n }\n let removed = false\n for (const entry of [...this.entries.values()]) {\n if (!seen.has(entry.id)) {\n this.close(entry)\n removed = true\n }\n }\n this.assignLabels(ordered)\n if (removed) {\n this.emitSoon()\n }\n return ordered\n }\n\n byId (id: string): TerminalEntry | null {\n const entry = this.entries.get(id)\n return entry && !entry.closed ? entry : null\n }\n\n forTab (tab: BaseTabComponent): TerminalEntry | null {\n const entry = this.byTab.get(tab as any)\n return entry && !entry.closed ? entry : null\n }\n\n /** The terminal that currently has (or last had) focus. */\n getActive (): TerminalEntry | null {\n const active = this.app.activeTab\n if (!active) {\n return null\n }\n if (active instanceof SplitTabComponent) {\n const focused = active.getFocusedTab()\n if (focused && isTerminalTab(focused)) {\n return this.forTab(focused)\n }\n for (const child of active.getAllTabs()) {\n if (isTerminalTab(child)) {\n return this.forTab(child)\n }\n }\n return null\n }\n if (isTerminalTab(active)) {\n return this.forTab(active)\n }\n return null\n }\n\n status (entry: TerminalEntry): TerminalStatus {\n if (entry.closed) return 'closed'\n if (!this.isReady(entry)) return 'not_started'\n if (entry.busyWith) return 'running'\n if (this.isAlternateScreen(entry)) return 'alt_screen'\n if (Date.now() - entry.lastOutputAt < 1500) return 'active'\n const last = this.lastLine(entry)\n if (last && looksLikeInputPrompt(last)) return 'awaiting_input'\n return 'idle'\n }\n\n /**\n * Tabs restored on startup stay dormant (no session, no xterm) until they\n * are shown once. Typing into such a tab is silently dropped.\n */\n isReady (entry: TerminalEntry): boolean {\n const tab: any = entry.tab\n return !entry.closed && !!tab.session?.open && !!tab.frontendIsReady && !!this.xterm(entry)\n }\n\n /**\n * Wake a dormant tab by showing it, wait for its shell to come up, and\n * optionally switch back to the tab the user was on.\n */\n async ensureReady (entry: TerminalEntry, options: { restoreActiveTab?: boolean, timeoutMs?: number } = {}): Promise<boolean> {\n if (entry.closed) return false\n if (this.isReady(entry)) return true\n const previous = this.app.activeTab\n const top = entry.tab.topmostParent ?? entry.tab\n this.reveal(entry)\n const timeout = options.timeoutMs ?? 8000\n const t0 = Date.now()\n while (!this.isReady(entry) && Date.now() - t0 < timeout) {\n await new Promise(r => setTimeout(r, 100))\n }\n const ready = this.isReady(entry)\n if (ready) {\n // give the shell a moment to print its first prompt\n const t1 = Date.now()\n while (Date.now() - t1 < 4000) {\n await new Promise(r => setTimeout(r, 150))\n if (entry.lastOutputAt && Date.now() - entry.lastOutputAt > 600 && this.lastLine(entry).trim()) break\n }\n }\n if (options.restoreActiveTab && previous && previous !== top && this.app.tabs.includes(previous)) {\n const focusedBefore = document.activeElement as HTMLElement | null\n this.zone.run(() => this.app.selectTab(previous))\n if (focusedBefore && focusedBefore.closest('ai-panel')) {\n setTimeout(() => focusedBefore.focus(), 40)\n }\n }\n return ready\n }\n\n /** Make the tab visible without stealing keyboard focus from the panel. */\n reveal (entry: TerminalEntry): void {\n const focusedBefore = document.activeElement as HTMLElement | null\n const top = entry.tab.topmostParent ?? entry.tab\n this.zone.run(() => {\n if (this.app.activeTab !== top) {\n this.app.selectTab(top)\n }\n const parent = entry.tab.parent\n if (parent instanceof SplitTabComponent && parent.getFocusedTab() !== entry.tab) {\n parent.focus(entry.tab)\n }\n })\n if (focusedBefore && focusedBefore.closest('ai-panel')) {\n setTimeout(() => focusedBefore.focus(), 40)\n }\n }\n\n /** Switch to the tab and give it keyboard focus. */\n focus (entry: TerminalEntry): void {\n const top = entry.tab.topmostParent ?? entry.tab\n this.zone.run(() => {\n this.app.selectTab(top)\n const parent = entry.tab.parent\n if (parent instanceof SplitTabComponent) {\n parent.focus(entry.tab)\n }\n entry.tab.frontend?.focus()\n })\n }\n\n sendInput (entry: TerminalEntry, data: string): void {\n if (entry.closed) {\n throw new Error(`Terminal \"${entry.label}\" is closed.`)\n }\n this.zone.run(() => entry.tab.sendInput(data))\n }\n\n // ---- buffer access -------------------------------------------------\n\n xterm (entry: TerminalEntry): XtermLike | null {\n const fe: any = entry.tab.frontend\n return fe?.xterm ?? null\n }\n\n isAlternateScreen (entry: TerminalEntry): boolean {\n const x = this.xterm(entry)\n return x?.buffer.active.type === 'alternate'\n }\n\n /** Absolute row of the cursor (scrollback + viewport). */\n cursorRow (entry: TerminalEntry): number {\n const x = this.xterm(entry)\n if (!x) return 0\n return x.buffer.active.baseY + x.buffer.active.cursorY\n }\n\n /** The text of the line under the cursor (typically the prompt). */\n cursorLine (entry: TerminalEntry): string {\n const x = this.xterm(entry)\n if (!x) return ''\n const row = x.buffer.active.baseY + x.buffer.active.cursorY\n return this.logicalLineAt(x, row)\n }\n\n lastLine (entry: TerminalEntry): string {\n const cap = this.captureLast(entry, 3)\n for (let i = cap.lines.length - 1; i >= 0; i--) {\n if (cap.lines[i].trim()) return cap.lines[i]\n }\n return ''\n }\n\n /** Anchor the current cursor line so later captures survive scrollback trimming. */\n mark (entry: TerminalEntry): BufferPosition {\n const x = this.xterm(entry)\n if (!x) {\n return { row: 0 }\n }\n const row = x.buffer.active.baseY + x.buffer.active.cursorY\n let marker: XtermMarker | null = null\n try {\n marker = x.registerMarker?.(0) ?? null\n } catch {\n marker = null\n }\n return { row, marker }\n }\n\n resolve (entry: TerminalEntry, pos: BufferPosition): ResolvedPosition {\n const x = this.xterm(entry)\n if (!x) {\n return { row: 0, trimmed: true, reset: false }\n }\n const buf = x.buffer.active\n const marker = pos.marker\n if (marker && !marker.isDisposed && marker.line >= 0) {\n return { row: marker.line, trimmed: false, reset: false }\n }\n if (marker) {\n // the anchored line is gone: either trimmed by a full scrollback or the buffer was replaced\n const reset = buf.length < pos.row\n return { row: 0, trimmed: true, reset }\n }\n // no marker support: fall back to the absolute row\n const cursorRow = buf.baseY + buf.cursorY\n const reset = cursorRow < pos.row - 1 && buf.length < pos.row\n return { row: Math.max(0, Math.min(pos.row, cursorRow + 1)), trimmed: false, reset }\n }\n\n /** Rows from `from` (inclusive) to the cursor row (inclusive), joined into logical lines. */\n captureSince (entry: TerminalEntry, from: BufferPosition | number, maxLines = 2000): BufferCapture {\n const x = this.xterm(entry)\n if (!x) {\n return { lines: [], endRow: 0, isAlternate: false }\n }\n const buf = x.buffer.active\n const endRow = buf.baseY + buf.cursorY\n const fromRow = typeof from === 'number' ? from : this.resolve(entry, from).row\n const start = Math.max(0, Math.min(fromRow, endRow + 1))\n const lines = this.logicalLines(x, start, endRow, maxLines)\n return { lines, endRow: endRow + 1, isAlternate: buf.type === 'alternate' }\n }\n\n /** The last `n` logical lines of the buffer. */\n captureLast (entry: TerminalEntry, n: number): BufferCapture {\n const x = this.xterm(entry)\n if (!x) {\n return { lines: [], endRow: 0, isAlternate: false }\n }\n const buf = x.buffer.active\n const endRow = buf.baseY + buf.cursorY\n // rows are cheap to read; over-fetch to account for wrapped rows then trim\n const start = Math.max(0, endRow - n * 2 - 2)\n let lines = this.logicalLines(x, start, endRow, n * 3)\n if (lines.length > n) {\n lines = lines.slice(lines.length - n)\n }\n return { lines, endRow: endRow + 1, isAlternate: buf.type === 'alternate' }\n }\n\n /** What's currently visible on screen (useful for alternate-screen apps). */\n captureScreen (entry: TerminalEntry): BufferCapture {\n const x = this.xterm(entry)\n if (!x) {\n return { lines: [], endRow: 0, isAlternate: false }\n }\n const buf = x.buffer.active\n const start = buf.viewportY\n const end = Math.min(buf.length - 1, start + x.rows - 1)\n return { lines: this.logicalLines(x, start, end, x.rows * 2), endRow: end + 1, isAlternate: buf.type === 'alternate' }\n }\n\n private logicalLines (x: XtermLike, start: number, end: number, maxLines: number): string[] {\n const buf = x.buffer.active\n const out: string[] = []\n // walk back to the start of a wrapped logical line so we don't cut it\n let s = start\n while (s > 0 && buf.getLine(s)?.isWrapped) {\n s--\n }\n for (let i = s; i <= end; i++) {\n const line = buf.getLine(i)\n if (!line) continue\n const text = line.translateToString(true)\n if (line.isWrapped && out.length) {\n out[out.length - 1] += text\n } else {\n out.push(text)\n }\n if (out.length > maxLines) {\n out.shift()\n }\n }\n return out\n }\n\n private logicalLineAt (x: XtermLike, row: number): string {\n const buf = x.buffer.active\n let s = row\n while (s > 0 && buf.getLine(s)?.isWrapped) {\n s--\n }\n let text = ''\n for (let i = s; i <= row; i++) {\n text += buf.getLine(i)?.translateToString(true) ?? ''\n }\n return text\n }\n\n // ---- internals -----------------------------------------------------\n\n private* iterateTerminalTabs (): Generator<BaseTerminalTabComponent<any>> {\n for (const tab of this.app.tabs ?? []) {\n if (tab instanceof SplitTabComponent) {\n for (const child of tab.getAllTabs()) {\n if (isTerminalTab(child)) {\n yield child\n }\n }\n } else if (isTerminalTab(tab)) {\n yield tab\n }\n }\n }\n\n private assignLabels (ordered: TerminalEntry[]): void {\n const seen = new Map<string, number>()\n for (const e of ordered) {\n const base = baseLabel(e.tab, e.descriptor)\n const n = (seen.get(base) ?? 0) + 1\n seen.set(base, n)\n e.label = n === 1 ? base : `${base} #${n}`\n }\n }\n\n private emitTimer: any = null\n\n private emit (): void {\n this.changed.next(this.list())\n }\n\n private emitSoon (): void {\n if (this.emitTimer) return\n this.emitTimer = setTimeout(() => {\n this.emitTimer = null\n this.emit()\n }, 0)\n }\n}\n\nexport function isTerminalTab (tab: any): tab is BaseTerminalTabComponent<any> {\n if (!tab) return false\n if (tab instanceof BaseTerminalTabComponent) return true\n // duck typing in case the plugin was bundled with its own copy of tabby-terminal\n return typeof tab.sendInput === 'function' && 'frontend' in tab && 'profile' in tab\n}\n\nconst KNOWN_KINDS: TerminalKind[] = ['ssh', 'local', 'serial', 'telnet']\n\nexport function describeTab (tab: BaseTerminalTabComponent<any>): TerminalDescriptor {\n const profile: any = tab.profile ?? {}\n const options: any = profile.options ?? {}\n const type = String(profile.type ?? 'other')\n const kind: TerminalKind = (KNOWN_KINDS as string[]).includes(type) ? type as TerminalKind : 'other'\n const d: TerminalDescriptor = {\n kind,\n profileId: profile.id || undefined,\n profileName: profile.name || undefined,\n title: tab.customTitle || tab.title || undefined,\n customTitle: tab.customTitle || undefined,\n }\n if (kind === 'ssh' || kind === 'telnet') {\n d.host = options.host || undefined\n d.port = options.port || undefined\n d.user = options.user || undefined\n }\n if (kind === 'serial') {\n d.host = options.port || undefined\n }\n return d\n}\n\nfunction baseLabel (tab: BaseTerminalTabComponent<any>, d: TerminalDescriptor): string {\n if (tab.customTitle) {\n return tab.customTitle\n }\n if (d.kind !== 'local' && d.profileName) {\n return d.profileName\n }\n return tab.title || d.profileName || 'Terminal'\n}\n\n/** \"ssh ubuntu@10.0.0.11:22\" / \"local\" – used in the model-facing listing. */\nexport function describeConnection (d: TerminalDescriptor): string {\n switch (d.kind) {\n case 'ssh':\n case 'telnet': {\n const userPart = d.user ? `${d.user}@` : ''\n const portPart = d.port && d.port !== 22 ? `:${d.port}` : ''\n return `${d.kind} ${userPart}${d.host ?? '?'}${portPart}`\n }\n case 'serial':\n return `serial ${d.host ?? ''}`.trim()\n case 'local':\n return 'local shell'\n default:\n return d.kind\n }\n}\n\n/**\n * How well does an open terminal match a descriptor stored in a session?\n * 0 = no match; higher is better.\n */\nexport function matchScore (stored: TerminalDescriptor, open: TerminalDescriptor): number {\n let score = 0\n if (stored.kind !== open.kind) {\n return 0\n }\n if (stored.profileId && stored.profileId === open.profileId) score += 6\n if (stored.host && stored.host === open.host) {\n score += 3\n if (stored.user && stored.user === open.user) score += 1\n if ((stored.port ?? 22) === (open.port ?? 22)) score += 1\n }\n if (stored.profileName && stored.profileName === open.profileName) score += 2\n if (stored.customTitle && stored.customTitle === open.customTitle) score += 2\n if (stored.title && stored.title === open.title) score += 1\n return score\n}\n","/**\n * Cut a long tool result for the model while keeping the head and the tail,\n * which is where the useful information (command echo / final status) lives.\n */\nexport function truncateForModel (text: string, maxChars: number): { text: string, truncated: boolean } {\n if (!text || text.length <= maxChars) {\n return { text, truncated: false }\n }\n const headChars = Math.floor(maxChars * 0.45)\n const tailChars = Math.floor(maxChars * 0.45)\n const head = text.slice(0, headChars)\n const tail = text.slice(text.length - tailChars)\n const omitted = text.length - headChars - tailChars\n return {\n text: `${head}\\n\\n[… ${omitted.toLocaleString()} characters omitted — ask for a narrower command (grep/tail) if you need the middle …]\\n\\n${tail}`,\n truncated: true,\n }\n}\n\n/** Collapse runs of blank lines and strip trailing whitespace on every line. */\nexport function tidyOutput (text: string): string {\n if (!text) {\n return ''\n }\n const lines = text.replace(/\\r\\n?/g, '\\n').split('\\n').map(l => l.replace(/[ \\t]+$/g, ''))\n const out: string[] = []\n let blanks = 0\n for (const line of lines) {\n if (line.trim() === '') {\n blanks++\n if (blanks > 2) {\n continue\n }\n } else {\n blanks = 0\n }\n out.push(line)\n }\n while (out.length && out[out.length - 1].trim() === '') {\n out.pop()\n }\n while (out.length && out[0].trim() === '') {\n out.shift()\n }\n return out.join('\\n')\n}\n\nexport function lastNonEmptyLine (text: string): string {\n const lines = text.split('\\n')\n for (let i = lines.length - 1; i >= 0; i--) {\n if (lines[i].trim()) {\n return lines[i]\n }\n }\n return ''\n}\n\nexport function countLines (text: string): number {\n return text ? text.split('\\n').length : 0\n}\n\nexport function relativeTime (iso: string, now = Date.now()): string {\n const t = new Date(iso).getTime()\n if (Number.isNaN(t)) {\n return ''\n }\n const diff = Math.max(0, now - t)\n const s = Math.floor(diff / 1000)\n if (s < 45) return 'just now'\n const m = Math.floor(s / 60)\n if (m < 60) return `${m} min ago`\n const h = Math.floor(m / 60)\n if (h < 24) return `${h} h ago`\n const d = Math.floor(h / 24)\n if (d < 7) return `${d} d ago`\n return new Date(iso).toLocaleDateString()\n}\n\n/** A one-line title derived from the first user message. */\nexport function deriveTitle (text: string, max = 60): string {\n const firstLine = (text || '').split('\\n').map(l => l.trim()).find(l => l.length > 0) ?? ''\n const cleaned = firstLine.replace(/\\s+/g, ' ')\n if (cleaned.length <= max) {\n return cleaned || 'New session'\n }\n return cleaned.slice(0, max - 1).trimEnd() + '…'\n}\n\nexport function formatDuration (ms: number): string {\n if (ms < 1000) return `${Math.round(ms)} ms`\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)} s`\n const m = Math.floor(ms / 60_000)\n const s = Math.round((ms % 60_000) / 1000)\n return `${m}m ${s}s`\n}\n","import { RunExitState } from '../types/session'\nimport { BufferCapture, BufferPosition, ResolvedPosition, TerminalEntry } from './terminal-registry.service'\nimport { learnPromptTerminator, looksLikeInputPrompt, looksLikePrompt, stripEchoAndPrompt } from './util/prompt-detect'\nimport { lastNonEmptyLine, tidyOutput } from './util/text'\nimport { abortError } from './util/sse'\n\n/** What the runner needs from the registry (kept narrow so tests can fake it). */\nexport interface RunnerHost {\n mark (entry: TerminalEntry): BufferPosition\n resolve (entry: TerminalEntry, pos: BufferPosition): ResolvedPosition\n captureSince (entry: TerminalEntry, from: BufferPosition, maxLines?: number): BufferCapture\n captureLast (entry: TerminalEntry, n: number): BufferCapture\n captureScreen (entry: TerminalEntry): BufferCapture\n cursorRow (entry: TerminalEntry): number\n cursorLine (entry: TerminalEntry): string\n sendInput (entry: TerminalEntry, data: string): void\n}\n\nexport interface ObserveOptions {\n timeoutMs: number\n signal?: AbortSignal\n /** Called whenever captured output changes. */\n onProgress?: (output: string) => void\n /** Stop as soon as the output matches. */\n untilRegex?: RegExp | null\n /** Quiet time before a prompt-looking last line counts as \"done\". */\n quietMs?: number\n /** Quiet time (no output) before giving up with `idle`. */\n idleMs?: number\n pollMs?: number\n}\n\nexport interface RunResult {\n state: RunExitState | 'matched'\n output: string\n durationMs: number\n lastLine: string\n /** Where the capture ended – pass to waitForOutput to get only newer output. */\n end: BufferPosition\n}\n\ninterface ObserveContext extends ObserveOptions {\n start: BufferPosition\n seqAtStart: number\n command: string | null\n terminator: string | null\n}\n\nexport class TerminalRunner {\n constructor (private host: RunnerHost) {}\n\n /** Type a command, press Enter and wait for it to finish (or need attention). */\n async run (entry: TerminalEntry, command: string, options: ObserveOptions): Promise<RunResult> {\n const start = this.host.mark(entry)\n const promptLine = this.host.cursorLine(entry)\n const terminator = learnPromptTerminator(promptLine)\n const seqAtStart = entry.outputSeq\n this.host.sendInput(entry, command.replace(/\\r?\\n/g, '\\r') + '\\r')\n return this.observe(entry, { ...options, start, seqAtStart, command, terminator })\n }\n\n /** Send raw keystrokes (already translated) and report what happened next. */\n async sendKeys (entry: TerminalEntry, data: string, options: ObserveOptions): Promise<RunResult> {\n const start = this.host.mark(entry)\n const terminator = learnPromptTerminator(this.host.cursorLine(entry))\n const seqAtStart = entry.outputSeq\n this.host.sendInput(entry, data)\n // keystrokes are usually answers to prompts: settle quickly\n return this.observe(entry, { quietMs: 600, idleMs: 2500, ...options, start, seqAtStart, command: null, terminator })\n }\n\n /** Wait for new output after `from` without sending anything. */\n async waitForOutput (entry: TerminalEntry, from: BufferPosition, options: ObserveOptions): Promise<RunResult> {\n const terminator = learnPromptTerminator(this.host.cursorLine(entry))\n return this.observe(entry, { ...options, start: from, seqAtStart: entry.outputSeq, command: null, terminator })\n }\n\n private async observe (entry: TerminalEntry, ctx: ObserveContext): Promise<RunResult> {\n const t0 = Date.now()\n const pollMs = ctx.pollMs ?? 150\n const quietMs = ctx.quietMs ?? 350\n const idleMs = ctx.idleMs ?? Math.min(ctx.timeoutMs, 15_000)\n let lastText = ''\n let lastSeq = entry.outputSeq\n let lastChangeAt = t0\n\n const finish = (state: RunResult['state'], cap: BufferCapture, lines: string[]): RunResult => {\n const output = tidyOutput(lines.join('\\n'))\n return {\n state,\n output,\n durationMs: Date.now() - t0,\n lastLine: lastNonEmptyLine(cap.lines.join('\\n')),\n end: this.host.mark(entry),\n }\n }\n\n while (true) {\n try {\n await sleep(pollMs, ctx.signal)\n } catch (e) {\n const cap = this.host.captureSince(entry, ctx.start)\n return finish('cancelled', cap, this.visibleLines(cap, ctx, false))\n }\n const now = Date.now()\n const position = this.host.resolve(entry, ctx.start)\n if (position.reset) {\n // the session was reset or reconnected under us: show what is there now\n const screen = this.host.captureLast(entry, 40)\n return finish('reset', screen, screen.lines)\n }\n const cap = this.host.captureSince(entry, ctx.start)\n const cursorRow = this.host.cursorRow(entry)\n const moved = cursorRow > position.row || position.trimmed || entry.outputSeq > ctx.seqAtStart\n const rawLast = lastNonEmptyLine(cap.lines.join('\\n'))\n\n const provisional = this.visibleLines(cap, ctx, false)\n const text = provisional.join('\\n')\n if (text !== lastText || entry.outputSeq !== lastSeq) {\n lastText = text\n lastSeq = entry.outputSeq\n lastChangeAt = now\n ctx.onProgress?.(tidyOutput(text))\n }\n const quiet = now - lastChangeAt\n\n if (cap.isAlternate) {\n if (quiet >= 1000) {\n const screen = this.host.captureScreen(entry)\n return finish('alt_screen', screen, screen.lines)\n }\n continue\n }\n\n if (ctx.untilRegex && ctx.untilRegex.test(text)) {\n return finish('matched', cap, provisional)\n }\n\n if (moved && quiet >= quietMs && looksLikePrompt(rawLast, ctx.terminator) && !looksLikeInputPrompt(rawLast)) {\n return finish('prompt', cap, this.visibleLines(cap, ctx, true))\n }\n\n if (moved && quiet >= Math.max(quietMs, 1200) && looksLikeInputPrompt(rawLast)) {\n return finish('awaiting_input', cap, provisional)\n }\n\n if (now - t0 >= ctx.timeoutMs) {\n return finish('timeout', cap, provisional)\n }\n\n if (moved && quiet >= idleMs) {\n return finish('idle', cap, provisional)\n }\n }\n }\n\n private visibleLines (cap: BufferCapture, ctx: ObserveContext, stripTrailingPrompt: boolean): string[] {\n if (ctx.command) {\n const stripped = stripEchoAndPrompt(cap.lines, ctx.command, ctx.terminator)\n if (stripTrailingPrompt) {\n return stripped\n }\n // keep a trailing prompt-looking line while still running (it may be data)\n const withoutEcho = dropEcho(cap.lines, ctx.command)\n return withoutEcho\n }\n if (stripTrailingPrompt) {\n const lines = [...cap.lines]\n while (lines.length && lines[lines.length - 1].trim() === '') lines.pop()\n if (lines.length && looksLikePrompt(lines[lines.length - 1], ctx.terminator)) lines.pop()\n return lines\n }\n return cap.lines\n }\n}\n\nfunction dropEcho (lines: string[], command: string): string[] {\n const cmdHead = command.trim().split('\\n')[0].slice(0, 24)\n const out = [...lines]\n let dropped = 0\n while (out.length && dropped < 3) {\n const l = out[0]\n if (cmdHead && l.includes(cmdHead)) {\n out.shift()\n break\n }\n if (l.trim() === '') {\n out.shift()\n dropped++\n continue\n }\n break\n }\n return out\n}\n\nexport function sleep (ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(abortError())\n return\n }\n const t = setTimeout(() => {\n signal?.removeEventListener('abort', onAbort)\n resolve()\n }, ms)\n const onAbort = () => {\n clearTimeout(t)\n reject(abortError())\n }\n signal?.addEventListener('abort', onAbort, { once: true })\n })\n}\n\n/** Translate friendly key names into terminal bytes. */\nexport function translateKeys (spec: string): string {\n const map: Record<string, string> = {\n 'enter': '\\r', 'return': '\\r', 'cr': '\\r',\n 'tab': '\\t',\n 'esc': '\\x1b', 'escape': '\\x1b',\n 'space': ' ',\n 'backspace': '\\x7f',\n 'up': '\\x1b[A', 'down': '\\x1b[B', 'right': '\\x1b[C', 'left': '\\x1b[D',\n 'home': '\\x1b[H', 'end': '\\x1b[F',\n 'pageup': '\\x1b[5~', 'pagedown': '\\x1b[6~',\n 'delete': '\\x1b[3~',\n 'f1': '\\x1bOP', 'f2': '\\x1bOQ', 'f3': '\\x1bOR', 'f4': '\\x1bOS',\n }\n const key = spec.trim().toLowerCase()\n if (map[key] !== undefined) {\n return map[key]\n }\n const ctrl = /^(ctrl|c|control|\\^)[-+]?([a-z\\[\\]\\\\^_@])$/.exec(key)\n if (ctrl) {\n const ch = ctrl[2].toUpperCase()\n return String.fromCharCode(ch.charCodeAt(0) & 0x1f)\n }\n const alt = /^(alt|meta|m)[-+]([a-z0-9])$/.exec(key)\n if (alt) {\n return `\\x1b${alt[2]}`\n }\n throw new Error(`Unknown key \"${spec}\". Use names like enter, tab, esc, ctrl-c, ctrl-d, up, down.`)\n}\n","import { AssistantMessage, Session, SessionMessage, SessionSummary, SESSION_SCHEMA_VERSION } from '../types/session'\nimport { newId, nowIso } from './util/ids'\nimport { deriveTitle } from './util/text'\n\nexport function createSession (): Session {\n const now = nowIso()\n return {\n version: SESSION_SCHEMA_VERSION,\n id: newId('s'),\n title: 'New session',\n createdAt: now,\n updatedAt: now,\n terminals: [],\n messages: [],\n stats: { turns: 0, toolCalls: 0, promptTokens: 0, completionTokens: 0 },\n }\n}\n\nexport function summarizeSession (session: Session): SessionSummary {\n const firstUser = session.messages.find(m => m.role === 'user')\n const lastAssistant = [...session.messages].reverse().find(m => m.role === 'assistant') as AssistantMessage | undefined\n const preview = (lastAssistant?.content || firstUser?.content || '').replace(/\\s+/g, ' ').trim().slice(0, 140)\n return {\n id: session.id,\n title: session.title,\n createdAt: session.createdAt,\n updatedAt: session.updatedAt,\n messageCount: session.messages.filter(m => m.role !== 'note').length,\n terminalLabels: session.terminals.filter(t => t.used).map(t => t.label),\n preview,\n }\n}\n\nexport function autoTitle (session: Session): string {\n const firstUser = session.messages.find(m => m.role === 'user')\n return firstUser ? deriveTitle(firstUser.content) : 'New session'\n}\n\nexport function isEmptySession (session: Session): boolean {\n return !session.messages.some(m => m.role !== 'note')\n}\n\nexport function lastMessage (session: Session): SessionMessage | undefined {\n return session.messages[session.messages.length - 1]\n}\n","import { Injectable } from '@angular/core'\nimport { BehaviorSubject, Observable } from 'rxjs'\nimport { PlatformService } from 'tabby-core'\nimport * as fs from 'fs'\nimport * as os from 'os'\nimport * as path from 'path'\nimport { Session, SessionSummary, SESSION_SCHEMA_VERSION } from '../types/session'\nimport { summarizeSession } from './session-utils'\n\ninterface IndexFile {\n version: number\n sessions: SessionSummary[]\n}\n\n/**\n * Persists sessions as JSON files next to Tabby's own config:\n * <config dir>/ai-panel/sessions/<id>.json (+ index.json)\n * Files are human readable so users can back up, grep or delete them.\n */\n@Injectable({ providedIn: 'root' })\nexport class SessionStoreService {\n readonly rootDir: string\n readonly sessionsDir: string\n private index: IndexFile = { version: 1, sessions: [] }\n private summaries = new BehaviorSubject<SessionSummary[]>([])\n private pendingWrites = new Map<string, Session>()\n private writeTimer: any = null\n private indexDirty = false\n\n get summaries$ (): Observable<SessionSummary[]> {\n return this.summaries.asObservable()\n }\n\n constructor (platform: PlatformService) {\n this.rootDir = resolveDataDir(platform)\n this.sessionsDir = path.join(this.rootDir, 'sessions')\n try {\n fs.mkdirSync(this.sessionsDir, { recursive: true })\n } catch (e) {\n console.error('[ai-panel] cannot create data dir', this.sessionsDir, e)\n }\n this.loadIndex()\n window.addEventListener('beforeunload', () => this.flush())\n }\n\n list (): SessionSummary[] {\n return [...this.index.sessions].sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))\n }\n\n load (id: string): Session | null {\n const pending = this.pendingWrites.get(id)\n if (pending) {\n return pending\n }\n const file = this.fileFor(id)\n try {\n if (!fs.existsSync(file)) {\n return null\n }\n const parsed = JSON.parse(fs.readFileSync(file, 'utf8'))\n return migrate(parsed)\n } catch (e) {\n console.error('[ai-panel] failed to read session', file, e)\n return null\n }\n }\n\n /** Queue a write; coalesces rapid saves of the same session. */\n save (session: Session): void {\n this.pendingWrites.set(session.id, session)\n this.upsertSummary(summarizeSession(session))\n this.scheduleFlush()\n }\n\n delete (id: string): void {\n this.pendingWrites.delete(id)\n try {\n fs.rmSync(this.fileFor(id), { force: true })\n } catch (e) {\n console.error('[ai-panel] failed to delete session', id, e)\n }\n this.index.sessions = this.index.sessions.filter(s => s.id !== id)\n this.indexDirty = true\n this.summaries.next(this.list())\n this.scheduleFlush()\n }\n\n /** Write everything that is pending right now. */\n flush (): void {\n if (this.writeTimer) {\n clearTimeout(this.writeTimer)\n this.writeTimer = null\n }\n for (const [id, session] of this.pendingWrites) {\n writeJsonAtomic(this.fileFor(id), session)\n }\n this.pendingWrites.clear()\n if (this.indexDirty) {\n writeJsonAtomic(path.join(this.rootDir, 'index.json'), this.index)\n this.indexDirty = false\n }\n }\n\n /** Re-scan the sessions directory (used when the index is missing/corrupt). */\n rebuildIndex (): void {\n const sessions: SessionSummary[] = []\n let files: string[] = []\n try {\n files = fs.readdirSync(this.sessionsDir).filter(f => f.endsWith('.json'))\n } catch {\n files = []\n }\n for (const f of files) {\n try {\n const parsed = migrate(JSON.parse(fs.readFileSync(path.join(this.sessionsDir, f), 'utf8')))\n sessions.push(summarizeSession(parsed))\n } catch (e) {\n console.warn('[ai-panel] skipping unreadable session file', f, e)\n }\n }\n this.index = { version: 1, sessions }\n this.indexDirty = true\n this.summaries.next(this.list())\n this.scheduleFlush()\n }\n\n private fileFor (id: string): string {\n return path.join(this.sessionsDir, `${sanitizeId(id)}.json`)\n }\n\n private loadIndex (): void {\n const file = path.join(this.rootDir, 'index.json')\n try {\n if (fs.existsSync(file)) {\n const parsed = JSON.parse(fs.readFileSync(file, 'utf8'))\n if (parsed && Array.isArray(parsed.sessions)) {\n this.index = { version: 1, sessions: parsed.sessions }\n this.summaries.next(this.list())\n return\n }\n }\n } catch (e) {\n console.warn('[ai-panel] index unreadable, rebuilding', e)\n }\n this.rebuildIndex()\n }\n\n private upsertSummary (summary: SessionSummary): void {\n const i = this.index.sessions.findIndex(s => s.id === summary.id)\n if (i >= 0) {\n this.index.sessions[i] = summary\n } else {\n this.index.sessions.push(summary)\n }\n this.indexDirty = true\n this.summaries.next(this.list())\n }\n\n private scheduleFlush (): void {\n if (this.writeTimer) {\n return\n }\n this.writeTimer = setTimeout(() => {\n this.writeTimer = null\n this.flush()\n }, 400)\n }\n}\n\nfunction resolveDataDir (platform: PlatformService): string {\n let configPath: string | null = null\n try {\n configPath = platform.getConfigPath()\n } catch {\n configPath = null\n }\n if (configPath) {\n return path.join(path.dirname(configPath), 'ai-panel')\n }\n return path.join(os.homedir(), '.tabby-ai-panel')\n}\n\nfunction sanitizeId (id: string): string {\n return id.replace(/[^a-zA-Z0-9_-]/g, '_')\n}\n\nfunction writeJsonAtomic (file: string, data: unknown): void {\n const tmp = `${file}.${process.pid}.tmp`\n try {\n fs.writeFileSync(tmp, JSON.stringify(data, null, 2), 'utf8')\n fs.renameSync(tmp, file)\n } catch (e) {\n console.error('[ai-panel] failed to write', file, e)\n try { fs.rmSync(tmp, { force: true }) } catch { /* ignore */ }\n }\n}\n\nfunction migrate (raw: any): Session {\n if (!raw || typeof raw !== 'object') {\n throw new Error('not a session object')\n }\n // Only one schema version so far; keep the hook for future migrations.\n const session = raw as Session\n if (session.version !== SESSION_SCHEMA_VERSION) {\n session.version = SESSION_SCHEMA_VERSION\n }\n session.terminals ??= []\n session.messages ??= []\n session.stats ??= { turns: 0, toolCalls: 0, promptTokens: 0, completionTokens: 0 }\n return session\n}\n","import { RiskLevel } from '../../types/session'\n\n/**\n * Commands that are always flagged as high risk, regardless of what the\n * model claims. This is a safety net, not a security boundary.\n */\nconst CATASTROPHIC_PATTERNS: RegExp[] = [\n /\\brm\\s+(-[a-zA-Z]*r[a-zA-Z]*f|-[a-zA-Z]*f[a-zA-Z]*r)\\s+(\\/|\\*|~|\\$HOME|\\.)(\\s|$)/,\n /\\brm\\s+-[a-zA-Z]*r[a-zA-Z]*\\s+\\/(\\s|$)/,\n /\\bmkfs(\\.[a-z0-9]+)?\\b/,\n /\\bdd\\s+.*\\bof=\\/dev\\/(sd|nvme|hd|mmcblk|disk)/,\n />\\s*\\/dev\\/(sd|nvme|hd|mmcblk)/,\n /:\\(\\)\\s*\\{\\s*:\\s*\\|\\s*:\\s*&\\s*\\}\\s*;\\s*:/,\n /\\bchmod\\s+(-R\\s+)?[0-7]*777\\s+\\//,\n /\\bchown\\s+-R\\s+\\S+\\s+\\/(\\s|$)/,\n /\\bshred\\b/,\n /\\bwipefs\\b/,\n /\\b(shutdown|reboot|halt|poweroff)\\b/,\n /\\bsystemctl\\s+(stop|disable|mask)\\s+(ssh|sshd|networking|NetworkManager|systemd-networkd)\\b/,\n /\\b(iptables|ip6tables|nft)\\b.*(?:\\s)(-F|--flush|flush)(\\s|$)/,\n /\\bufw\\s+(reset|disable)\\b/,\n /\\b(ip\\s+link\\s+set\\s+\\S+\\s+down|ifdown)\\b/,\n /\\buserdel\\b|\\bdeluser\\b/,\n /\\bkill\\s+-9\\s+-1\\b/,\n /\\bcrontab\\s+-r\\b/,\n /\\bgit\\s+push\\s+.*--force\\b/,\n /\\bdrop\\s+(database|table)\\b/i,\n]\n\nconst MEDIUM_PATTERNS: RegExp[] = [\n /\\bsudo\\b/,\n /\\brm\\s+-[a-zA-Z]*r/,\n /\\b(apt|apt-get|yum|dnf|pacman|zypper|apk|brew)\\s+(install|remove|purge|upgrade|dist-upgrade|autoremove)\\b/,\n /\\bsystemctl\\s+(restart|stop|start|enable|disable)\\b/,\n /\\b(ip|ifconfig|route|iptables|nft|ufw|firewall-cmd|wg|wg-quick)\\b/,\n /\\b(kill|pkill|killall)\\b/,\n /\\bchmod\\b|\\bchown\\b/,\n /\\bmv\\b/,\n /\\b(curl|wget)\\b.*\\|\\s*(sudo\\s+)?(ba)?sh\\b/,\n />\\s*\\/etc\\//,\n /\\btee\\s+(-a\\s+)?\\/etc\\//,\n /\\bgit\\s+(push|reset\\s+--hard|checkout\\s+--|clean\\s+-f)\\b/,\n /\\bdocker\\s+(rm|rmi|system\\s+prune|volume\\s+rm)\\b/,\n]\n\nexport interface RiskAssessment {\n level: RiskLevel\n /** Matched a catastrophic pattern; must always be confirmed by the user. */\n hardBlock: boolean\n reason?: string\n}\n\nconst ORDER: RiskLevel[] = ['low', 'medium', 'high']\n\nexport function maxRisk (a: RiskLevel, b: RiskLevel): RiskLevel {\n return ORDER.indexOf(a) >= ORDER.indexOf(b) ? a : b\n}\n\nexport function normalizeRisk (value: unknown): RiskLevel {\n const v = String(value ?? '').toLowerCase().trim()\n if (v === 'high' || v === 'critical' || v === 'destructive') return 'high'\n if (v === 'medium' || v === 'moderate' || v === 'med') return 'medium'\n return 'low'\n}\n\n/** Combine the model's self-assessment with local pattern matching. */\nexport function assessCommand (command: string, claimed: unknown): RiskAssessment {\n const cmd = command ?? ''\n for (const p of CATASTROPHIC_PATTERNS) {\n if (p.test(cmd)) {\n return { level: 'high', hardBlock: true, reason: `matches destructive pattern ${p.source}` }\n }\n }\n let level = normalizeRisk(claimed)\n if (MEDIUM_PATTERNS.some(p => p.test(cmd))) {\n level = maxRisk(level, 'medium')\n }\n return { level, hardBlock: false }\n}\n\nexport function isAutoApproved (level: RiskLevel, mode: string, hardBlock: boolean): boolean {\n if (hardBlock) return false\n switch (mode) {\n case 'auto_all': return true\n case 'auto_medium': return level !== 'high'\n case 'auto_low': return level === 'low'\n default: return false\n }\n}\n","import { AgentTool, ApprovalRequirement, ResolvedTerminal, ToolContext } from './types'\nimport { assessCommand, maxRisk, normalizeRisk } from '../util/risk'\nimport { translateKeys } from '../terminal-runner'\nimport { RunResult } from '../terminal-runner'\nimport { countLines, formatDuration } from '../util/text'\n\nconst TERMINAL_PARAM = {\n type: 'string',\n description: 'Target terminal: its key from list_terminals (e.g. \"t1\") or its exact label (e.g. \"Linux-2\").',\n}\n\nfunction str (v: unknown): string {\n return typeof v === 'string' ? v : v == null ? '' : String(v)\n}\n\nfunction num (v: unknown, fallback: number): number {\n const n = typeof v === 'number' ? v : parseFloat(String(v))\n return Number.isFinite(n) && n > 0 ? n : fallback\n}\n\nasync function wake (ctx: ToolContext, t: ResolvedTerminal): Promise<void> {\n if (!(await ctx.ensureReady(t.entry))) {\n throw new Error(`Terminal ${t.key} \"${t.label}\" could not be started (its shell did not come up). Ask the user to open that tab, or use another terminal.`)\n }\n}\n\n/** Header line + guidance that tells the model what the terminal is doing now. */\nexport function describeRunResult (label: string, key: string, r: RunResult, cmdTimeoutS?: number): string {\n const dur = formatDuration(r.durationMs)\n const lines = countLines(r.output)\n let header: string\n let hint = ''\n switch (r.state) {\n case 'prompt':\n header = `finished – prompt returned after ${dur}`\n break\n case 'matched':\n header = `output matched the pattern after ${dur}`\n break\n case 'awaiting_input':\n header = `WAITING FOR INPUT after ${dur} – last line: ${JSON.stringify(r.lastLine.trim())}`\n hint = 'The program is waiting. Answer with send_keys (e.g. keys [\"y\",\"enter\"]), or use ask_user if the user must decide (passwords must be typed by the user: ask them to type it into the terminal, then wait_for_output).'\n break\n case 'alt_screen':\n header = 'a full-screen program is active (vim/less/htop/…) – showing the screen'\n hint = 'Interact with send_keys (e.g. \"q\", \":q\", \"ctrl-c\"), or wait_for_output.'\n break\n case 'idle':\n header = `no new output for a while and no prompt after ${dur} – the command may still be running or waiting silently`\n hint = 'Use wait_for_output to keep waiting, read_terminal to look again, or send_keys \"ctrl-c\" to abort.'\n break\n case 'timeout':\n header = `still running after ${cmdTimeoutS ?? Math.round(r.durationMs / 1000)}s – no prompt yet`\n hint = 'Use wait_for_output with a longer timeout to keep waiting, or send_keys \"ctrl-c\" to abort.'\n break\n case 'reset':\n header = 'the terminal was reset or reconnected while waiting – the command may not have run'\n hint = 'Check the current state with read_terminal, then run the command again if needed.'\n break\n case 'cancelled':\n header = 'cancelled by the user'\n break\n default:\n header = r.state\n }\n const parts = [`[${key} \"${label}\" · ${header}${lines ? ` · ${lines} lines` : ''}]`]\n if (hint) parts.push(hint)\n parts.push(r.output || '(no output)')\n return parts.join('\\n')\n}\n\nexport const listTerminalsTool: AgentTool = {\n spec: {\n name: 'list_terminals',\n description: 'List every open terminal tab with its key, label, connection (ssh user@host / local), status and last line. Call this when unsure which terminal to use. Status not_started means a restored tab that has not been opened yet – the action tools start it automatically.',\n parameters: { type: 'object', properties: {}, additionalProperties: false },\n },\n approval: () => null,\n async execute (_args, ctx) {\n const list = ctx.listTerminals()\n if (!list.length) {\n return 'No terminal tabs are open. Use open_terminal to open one from a saved profile, or ask the user to open one.'\n }\n return list.map(t => {\n const bits = [`${t.key} \"${t.label}\" ${t.connection} status: ${t.status}`]\n if (t.isActive) bits.push('[active tab]')\n if (t.cwd) bits.push(`cwd: ${t.cwd}`)\n if (t.lastLine) bits.push(`last line: ${JSON.stringify(t.lastLine.trim().slice(0, 120))}`)\n return bits.join(' ')\n }).join('\\n')\n },\n}\n\nexport const readTerminalTool: AgentTool = {\n spec: {\n name: 'read_terminal',\n description: 'Read the most recent lines of a terminal\\'s screen/scrollback without typing anything. Use it to see the current state before acting, or to look at output that scrolled by.',\n parameters: {\n type: 'object',\n properties: {\n terminal: TERMINAL_PARAM,\n lines: { type: 'integer', description: 'How many lines from the bottom (default 60, max 400).' },\n },\n required: ['terminal'],\n additionalProperties: false,\n },\n },\n terminalArg: 'terminal',\n approval: () => null,\n async execute (args, ctx) {\n const t = ctx.resolveTerminal(args.terminal)\n await wake(ctx, t)\n const n = Math.max(1, Math.min(400, Math.floor(num(args.lines, 60))))\n const capture = ctx.captureLast(t.entry, n)\n t.entry.readMarker = ctx.mark(t.entry)\n ctx.markUsed(t.key)\n const body = capture.lines.join('\\n').trimEnd()\n const screenNote = capture.isAlternate ? ' · full-screen program active' : ''\n return `[${t.key} \"${t.label}\" · last ${capture.lines.length} lines${screenNote}]\\n${body || '(empty)'}`\n },\n}\n\nexport const runCommandTool: AgentTool = {\n spec: {\n name: 'run_command',\n description: 'Type a shell command into a terminal, press Enter, and wait for it to finish. Returns the output and whether the prompt came back, the program is waiting for input, or it is still running. One command per call; chain with && when steps belong together.',\n parameters: {\n type: 'object',\n properties: {\n terminal: TERMINAL_PARAM,\n command: { type: 'string', description: 'Exact command line to run.' },\n risk_level: { type: 'string', enum: ['low', 'medium', 'high'], description: 'low: read-only/inspection. medium: changes files, packages, services or network config. high: destructive or hard to undo.' },\n explanation: { type: 'string', description: 'One sentence for the user: what this does and why.' },\n timeout_seconds: { type: 'integer', description: 'How long to wait before reporting back if the command has not finished (default 60).' },\n },\n required: ['terminal', 'command', 'risk_level', 'explanation'],\n additionalProperties: false,\n },\n },\n terminalArg: 'terminal',\n approval (args): ApprovalRequirement {\n const a = assessCommand(str(args.command), args.risk_level)\n return { level: a.level, hardBlock: a.hardBlock, reason: a.reason }\n },\n async execute (args, ctx) {\n const command = str(args.command)\n if (!command.trim()) {\n throw new Error('command must not be empty')\n }\n const t = ctx.resolveTerminal(args.terminal)\n if (t.entry.busyWith && t.entry.busyWith !== ctx.toolCallId) {\n throw new Error(`Terminal ${t.key} \"${t.label}\" is busy with another command. Wait for it or pick another terminal.`)\n }\n await wake(ctx, t)\n if (ctx.isAlternateScreen(t.entry)) {\n throw new Error(`Terminal ${t.key} \"${t.label}\" has a full-screen program open. Exit it first (send_keys) or use read_terminal to see it.`)\n }\n const timeoutS = Math.max(2, Math.min(3600, num(args.timeout_seconds, ctx.defaultTimeoutSeconds)))\n ctx.reveal(t.entry)\n ctx.markUsed(t.key)\n t.entry.busyWith = ctx.toolCallId\n try {\n const result = await ctx.runner.run(t.entry, command, {\n timeoutMs: timeoutS * 1000,\n signal: ctx.signal,\n onProgress: text => ctx.progress(text),\n })\n t.entry.readMarker = result.end\n ctx.setExitState(result.state)\n return describeRunResult(t.label, t.key, result, timeoutS)\n } finally {\n t.entry.busyWith = null\n }\n },\n}\n\nexport const sendKeysTool: AgentTool = {\n spec: {\n name: 'send_keys',\n description: 'Send keystrokes to a terminal without a trailing Enter (unless you include \"enter\"). Use it to answer prompts (y/n), drive full-screen programs, or interrupt with ctrl-c. Never use it to type passwords – ask the user to type those.',\n parameters: {\n type: 'object',\n properties: {\n terminal: TERMINAL_PARAM,\n keys: {\n type: 'array',\n items: { type: 'string' },\n description: 'Sequence of keys. Plain text is typed literally; special names: enter, tab, esc, space, backspace, up, down, left, right, ctrl-c, ctrl-d, ctrl-z, ctrl-l. Example: [\"y\", \"enter\"].',\n },\n explanation: { type: 'string', description: 'Why these keys are being sent.' },\n risk_level: { type: 'string', enum: ['low', 'medium', 'high'], description: 'Risk of what these keys will cause (confirming a destructive prompt is high).' },\n timeout_seconds: { type: 'integer', description: 'How long to wait for the terminal to settle afterwards (default 15).' },\n },\n required: ['terminal', 'keys', 'explanation'],\n additionalProperties: false,\n },\n },\n terminalArg: 'terminal',\n approval (args): ApprovalRequirement {\n const keys: string[] = Array.isArray(args.keys) ? args.keys.map(str) : []\n const benign = keys.every(k => /^(ctrl-c|ctrl-l|esc|escape|enter|q|space|up|down|left|right|pageup|pagedown|home|end)$/i.test(k.trim()))\n const claimed = normalizeRisk(args.risk_level ?? (benign ? 'low' : 'medium'))\n return { level: benign ? claimed : maxRisk(claimed, 'medium'), hardBlock: false }\n },\n async execute (args, ctx) {\n const keys: string[] = Array.isArray(args.keys) ? args.keys.map(str) : [str(args.keys)]\n if (!keys.length) {\n throw new Error('keys must not be empty')\n }\n const data = keys.map(k => {\n try {\n return translateKeys(k)\n } catch {\n return k // literal text\n }\n }).join('')\n const t = ctx.resolveTerminal(args.terminal)\n await wake(ctx, t)\n const timeoutS = Math.max(1, Math.min(600, num(args.timeout_seconds, 15)))\n ctx.reveal(t.entry)\n ctx.markUsed(t.key)\n const prevBusy = t.entry.busyWith\n t.entry.busyWith = ctx.toolCallId\n try {\n const result = await ctx.runner.sendKeys(t.entry, data, {\n timeoutMs: timeoutS * 1000,\n signal: ctx.signal,\n onProgress: text => ctx.progress(text),\n })\n t.entry.readMarker = result.end\n ctx.setExitState(result.state)\n return describeRunResult(t.label, t.key, result, timeoutS)\n } finally {\n t.entry.busyWith = prevBusy && prevBusy !== ctx.toolCallId ? prevBusy : null\n }\n },\n}\n\nexport const waitForOutputTool: AgentTool = {\n spec: {\n name: 'wait_for_output',\n description: 'Keep waiting on a terminal where a command is still running (after a timeout/idle result), or wait for the user to finish typing something. Returns the output produced since the last read.',\n parameters: {\n type: 'object',\n properties: {\n terminal: TERMINAL_PARAM,\n timeout_seconds: { type: 'integer', description: 'Maximum time to wait (default 60).' },\n until_regex: { type: 'string', description: 'Optional regular expression; return as soon as the new output matches it.' },\n },\n required: ['terminal'],\n additionalProperties: false,\n },\n },\n terminalArg: 'terminal',\n approval: () => null,\n async execute (args, ctx) {\n const t = ctx.resolveTerminal(args.terminal)\n await wake(ctx, t)\n const timeoutS = Math.max(1, Math.min(3600, num(args.timeout_seconds, 60)))\n let regex: RegExp | null = null\n if (args.until_regex) {\n try {\n regex = new RegExp(str(args.until_regex), 'm')\n } catch (e) {\n throw new Error(`until_regex is not a valid regular expression: ${(e as Error).message}`)\n }\n }\n ctx.markUsed(t.key)\n const wasBusy = t.entry.busyWith\n t.entry.busyWith = ctx.toolCallId\n try {\n const result = await ctx.runner.waitForOutput(t.entry, t.entry.readMarker, {\n timeoutMs: timeoutS * 1000,\n signal: ctx.signal,\n untilRegex: regex,\n onProgress: text => ctx.progress(text),\n idleMs: Math.min(timeoutS * 1000, 20_000),\n })\n t.entry.readMarker = result.end\n ctx.setExitState(result.state)\n return describeRunResult(t.label, t.key, result, timeoutS)\n } finally {\n t.entry.busyWith = wasBusy && wasBusy !== ctx.toolCallId ? wasBusy : null\n }\n },\n}\n\nexport const askUserTool: AgentTool = {\n spec: {\n name: 'ask_user',\n description: 'Ask the user a question in the panel and wait for the answer. Use it for missing information, decisions with real consequences, or before touching anything the user did not clearly ask for.',\n parameters: {\n type: 'object',\n properties: {\n question: { type: 'string', description: 'The question, phrased so it can be answered briefly.' },\n choices: { type: 'array', items: { type: 'string' }, description: 'Optional fixed options shown as buttons.' },\n },\n required: ['question'],\n additionalProperties: false,\n },\n },\n approval: () => null,\n async execute (args, ctx) {\n const question = str(args.question).trim()\n if (!question) {\n throw new Error('question must not be empty')\n }\n const choices = Array.isArray(args.choices) ? args.choices.map(str).filter(Boolean) : undefined\n const answer = await ctx.askUser(question, choices?.length ? choices : undefined)\n return `User answered: ${answer}`\n },\n}\n\nexport const openTerminalTool: AgentTool = {\n spec: {\n name: 'open_terminal',\n description: 'Open a new terminal tab from one of the user\\'s saved Tabby profiles (SSH hosts, local shells). Returns the new terminal\\'s key. Use list_terminals first – only open a new tab when no suitable one exists.',\n parameters: {\n type: 'object',\n properties: {\n profile: { type: 'string', description: 'Profile name as it appears in Tabby (case-insensitive), or an ssh host name that appears in a profile.' },\n },\n required: ['profile'],\n additionalProperties: false,\n },\n },\n approval: () => ({ level: 'medium', hardBlock: false }),\n async execute (args, ctx) {\n const ref = str(args.profile).trim()\n if (!ref) {\n const profiles = ctx.listProfiles()\n return `profile is required. Available profiles:\\n${profiles.map(p => `- ${p.name} (${p.kind}${p.detail ? `, ${p.detail}` : ''})`).join('\\n')}`\n }\n const t = await ctx.openTerminal(ref)\n ctx.markUsed(t.key)\n return `Opened ${t.key} \"${t.label}\". Give it a moment, then read_terminal to confirm it is ready (SSH hosts may ask for a password – the user must type it).`\n },\n}\n\nexport const focusTerminalTool: AgentTool = {\n spec: {\n name: 'focus_terminal',\n description: 'Switch the user\\'s view to a terminal tab (for example to let them type a password or watch something).',\n parameters: {\n type: 'object',\n properties: { terminal: TERMINAL_PARAM },\n required: ['terminal'],\n additionalProperties: false,\n },\n },\n terminalArg: 'terminal',\n approval: () => null,\n async execute (args, ctx) {\n const t = ctx.resolveTerminal(args.terminal)\n ctx.focus(t.entry)\n return `Focused ${t.key} \"${t.label}\".`\n },\n}\n\nexport const ALL_TOOLS: AgentTool[] = [\n listTerminalsTool,\n readTerminalTool,\n runCommandTool,\n sendKeysTool,\n waitForOutputTool,\n askUserTool,\n openTerminalTool,\n focusTerminalTool,\n]\n\nexport function findTool (name: string): AgentTool | undefined {\n return ALL_TOOLS.find(t => t.spec.name === name)\n}\n","import { Session } from '../types/session'\nimport { ChatMessage } from './llm/types'\nimport { truncateForModel } from './util/text'\n\nexport interface PromptOptions {\n systemPrompt: string\n additionalSystemPrompt?: string\n maxToolResultChars: number\n maxContextChars: number\n}\n\n/**\n * Turn the stored session transcript into provider-agnostic chat messages.\n * Tool calls that never finished get a synthetic result so the transcript\n * stays well-formed (every tool call must be answered).\n */\nexport function buildMessages (session: Session, options: PromptOptions): ChatMessage[] {\n const system = [options.systemPrompt.trim(), (options.additionalSystemPrompt ?? '').trim()].filter(Boolean).join('\\n\\n')\n const out: ChatMessage[] = [{ role: 'system', content: system }]\n const pushUser = (content: string) => {\n const last = out[out.length - 1]\n if (last && last.role === 'user') {\n last.content += `\\n\\n${content}`\n } else {\n out.push({ role: 'user', content })\n }\n }\n for (const m of session.messages) {\n if (m.role === 'user') {\n pushUser(m.context ? `${m.context}\\n\\n${m.content}` : m.content)\n } else if (m.role === 'note') {\n if (m.forModel) pushUser(`[note] ${m.content}`)\n } else if (m.role === 'assistant') {\n if (!m.content && !m.toolCalls.length) continue\n const toolCalls = m.toolCalls.map(tc => ({ id: tc.id, name: tc.name, arguments: JSON.stringify(tc.args ?? {}) }))\n out.push({ role: 'assistant', content: m.content || null, toolCalls: toolCalls.length ? toolCalls : undefined })\n for (const tc of m.toolCalls) {\n let content: string\n if (tc.status === 'cancelled') {\n content = 'Cancelled by the user before it completed.'\n } else if (tc.status === 'pending_approval' || tc.status === 'running' || tc.status === 'awaiting_user') {\n content = 'Interrupted before completion.'\n } else {\n content = tc.result ?? tc.error ?? '(no result)'\n }\n const cut = truncateForModel(content, options.maxToolResultChars)\n tc.truncatedForModel = cut.truncated\n out.push({ role: 'tool', toolCallId: tc.id, name: tc.name, content: cut.text })\n }\n }\n }\n return fitContextBudget(out, options.maxContextChars)\n}\n\nexport function messagesSize (list: ChatMessage[]): number {\n return list.reduce((n, m) => n + (typeof m.content === 'string' ? m.content.length : 0) + 40, 0)\n}\n\n/**\n * Keep the prompt under a character budget: elide old tool output first,\n * then drop the oldest exchanges (never the system prompt or the last user turn).\n */\nexport function fitContextBudget (messages: ChatMessage[], maxChars: number): ChatMessage[] {\n if (messagesSize(messages) <= maxChars) {\n return messages\n }\n const out: ChatMessage[] = messages.map(m => ({ ...m }))\n const lastUserIdx = (() => {\n for (let i = out.length - 1; i >= 0; i--) if (out[i].role === 'user') return i\n return out.length\n })()\n // 1. elide old tool results, oldest first\n for (let i = 1; i < lastUserIdx && messagesSize(out) > maxChars; i++) {\n const m = out[i]\n if (m.role === 'tool' && m.content.length > 200) {\n out[i] = { ...m, content: `[earlier output elided to save context – ${m.content.length} chars]` }\n }\n }\n // 2. drop the oldest exchanges, keeping tool results together with their call\n let dropped = false\n while (messagesSize(out) > maxChars) {\n const idx = 1\n // never drop the last user message\n const lastUser = (() => {\n for (let i = out.length - 1; i >= 0; i--) if (out[i].role === 'user') return i\n return -1\n })()\n if (idx >= lastUser) break\n const m = out[idx]\n out.splice(idx, 1)\n if (m.role === 'assistant' && m.toolCalls?.length) {\n while (out[idx] && out[idx].role === 'tool') out.splice(idx, 1)\n }\n dropped = true\n }\n if (dropped) {\n const notice = '[earlier conversation truncated to fit the context window]'\n const first = out[1]\n if (first && first.role === 'user') {\n out[1] = { ...first, content: `${notice}\\n\\n${first.content}` }\n } else {\n out.splice(1, 0, { role: 'user', content: notice })\n }\n }\n return out\n}\n","import { Injectable, NgZone } from '@angular/core'\nimport { BehaviorSubject, Observable } from 'rxjs'\nimport { AppService, ConfigService, NotificationsService, ProfilesService, PartialProfile, Profile } from 'tabby-core'\nimport { BaseTerminalTabComponent } from 'tabby-terminal'\nimport {\n ApprovalMode, AssistantMessage, NoteMessage, RunExitState, Session, ToolCallRecord, UserMessage,\n} from '../types/session'\nimport { AiPanelConfig, CONFIG_KEY, DEFAULT_CONFIG } from '../types/config'\nimport { ChatMessage, ChatProvider, ToolSpec } from './llm/types'\nimport { OpenAICompatibleProvider } from './llm/openai-compatible'\nimport { describeConnection, matchScore, TerminalEntry, TerminalRegistryService, isTerminalTab } from './terminal-registry.service'\nimport { TerminalRunner } from './terminal-runner'\nimport { SessionStoreService } from './session-store.service'\nimport { autoTitle, createSession, isEmptySession } from './session-utils'\nimport { ALL_TOOLS, findTool } from './tools'\nimport { ResolvedTerminal, TerminalListing, ToolContext } from './tools/types'\nimport { isAutoApproved } from './util/risk'\nimport { newId, nowIso } from './util/ids'\nimport { buildMessages } from './prompt-builder'\nimport { isAbortError } from './util/sse'\nimport systemPromptTemplate from '../prompts/system.md'\n\nexport type AgentPhase = 'idle' | 'thinking' | 'tool' | 'awaiting_approval' | 'awaiting_user'\n\nexport interface SessionTerminalView {\n key: string\n label: string\n connection: string\n used: boolean\n entry: TerminalEntry | null\n status: string\n isActive: boolean\n canReconnect: boolean\n}\n\nexport interface AgentState {\n session: Session\n phase: AgentPhase\n error: string | null\n /** Incremented on every change so views can cheaply detect updates. */\n rev: number\n}\n\nconst MAX_TOOL_ROUNDS = 80\n\n/**\n * Drives the conversation: builds the prompt, streams the model, executes\n * tools with approval gating, and keeps the session persisted.\n */\n@Injectable({ providedIn: 'root' })\nexport class AgentService {\n session: Session\n phase: AgentPhase = 'idle'\n error: string | null = null\n\n private state = new BehaviorSubject<AgentState>({ session: createSession(), phase: 'idle', error: null, rev: 0 })\n private rev = 0\n private emitTimer: any = null\n /** session terminal key → registry entry id */\n private bindings = new Map<string, string>()\n private abortController: AbortController | null = null\n private turnPromise: Promise<void> | null = null\n private pendingApprovals = new Map<string, (approved: boolean) => void>()\n private pendingQuestion: { toolCallId: string, resolve: (answer: string) => void } | null = null\n private runner: TerminalRunner\n private profilesCache: PartialProfile<Profile>[] = []\n\n get state$ (): Observable<AgentState> {\n return this.state.asObservable()\n }\n\n get busy (): boolean {\n return this.phase !== 'idle'\n }\n\n constructor (\n private config: ConfigService,\n private registry: TerminalRegistryService,\n private store: SessionStoreService,\n private profiles: ProfilesService,\n private notifications: NotificationsService,\n private app: AppService,\n private zone: NgZone,\n ) {\n this.runner = new TerminalRunner(registry)\n this.session = this.state.value.session\n this.registry.changed$.subscribe(() => this.emitSoon())\n // profiles live in the config store, which is loaded asynchronously\n this.config.ready$.subscribe({ complete: () => { void this.refreshProfiles() } })\n }\n\n // ---------------------------------------------------------------- config\n\n get settings (): AiPanelConfig {\n return { ...DEFAULT_CONFIG, ...(this.config.store?.[CONFIG_KEY] ?? {}) }\n }\n\n get configured (): boolean {\n return !!this.settings.endpoint.trim()\n }\n\n get approvalMode (): ApprovalMode {\n return this.session.approvalMode ?? this.settings.approvalMode\n }\n\n setApprovalMode (mode: ApprovalMode): void {\n this.session.approvalMode = mode\n this.touch()\n }\n\n makeProvider (): ChatProvider {\n const s = this.settings\n let extra: Record<string, any> = {}\n if (s.extraParamsText.trim()) {\n try {\n extra = JSON.parse(s.extraParamsText)\n } catch {\n this.notifications.error('AI panel: extra request parameters are not valid JSON')\n }\n }\n return new OpenAICompatibleProvider({ endpoint: s.endpoint, apiKey: s.apiKey, model: s.model, extraParams: extra })\n }\n\n // -------------------------------------------------------------- sessions\n\n async newSession (): Promise<Session> {\n await this.stopAndWait()\n if (isEmptySession(this.session) && !this.session.titleIsCustom) {\n // nothing worth keeping – just reset bindings\n this.bindings.clear()\n this.session = createSession()\n this.emit()\n return this.session\n }\n this.store.save(this.session)\n this.bindings.clear()\n this.session = createSession()\n this.error = null\n this.emit()\n return this.session\n }\n\n async openSession (id: string): Promise<boolean> {\n if (id === this.session.id) {\n return true\n }\n const loaded = this.store.load(id)\n if (!loaded) {\n this.notifications.error('AI panel: session not found')\n return false\n }\n await this.stopAndWait()\n if (!isEmptySession(this.session)) {\n this.store.save(this.session)\n }\n this.session = loaded\n this.error = null\n this.bindings.clear()\n const summary = this.rebindTerminals()\n if (summary) {\n this.addNote(summary, true)\n }\n this.emit()\n return true\n }\n\n renameSession (title: string): void {\n const t = title.trim()\n if (!t) return\n this.session.title = t\n this.session.titleIsCustom = true\n this.touch()\n }\n\n async deleteSession (id: string): Promise<void> {\n if (id === this.session.id) {\n await this.newSession()\n }\n this.store.delete(id)\n }\n\n // ------------------------------------------------------------- terminals\n\n /** Key the model uses for this terminal; allocates one on first sight. */\n keyFor (entry: TerminalEntry): string {\n for (const [key, id] of this.bindings) {\n if (id === entry.id) {\n // keep the stored label/descriptor in sync with renames and dynamic titles\n const t = this.session.terminals.find(x => x.key === key)\n if (t && (t.label !== entry.label || t.descriptor.title !== entry.descriptor.title || t.descriptor.customTitle !== entry.descriptor.customTitle)) {\n t.label = entry.label\n t.descriptor = { ...entry.descriptor }\n }\n return key\n }\n }\n // a stored, currently unbound terminal that matches → reuse its key\n let best: { key: string, score: number } | null = null\n for (const t of this.session.terminals) {\n if (this.bindings.has(t.key)) continue\n const score = matchScore(t.descriptor, entry.descriptor)\n if (score >= 3 && (!best || score > best.score)) {\n best = { key: t.key, score }\n }\n }\n if (best) {\n this.bindings.set(best.key, entry.id)\n const t = this.session.terminals.find(x => x.key === best!.key)!\n t.label = entry.label\n t.descriptor = entry.descriptor\n return best.key\n }\n let n = this.session.terminals.length + 1\n while (this.session.terminals.some(t => t.key === `t${n}`)) n++\n const key = `t${n}`\n const now = nowIso()\n this.session.terminals.push({\n key,\n label: entry.label,\n descriptor: entry.descriptor,\n used: false,\n firstSeenAt: now,\n lastUsedAt: now,\n })\n this.bindings.set(key, entry.id)\n return key\n }\n\n entryFor (key: string): TerminalEntry | null {\n const id = this.bindings.get(key)\n if (!id) return null\n const entry = this.registry.byId(id)\n return entry && !entry.closed ? entry : null\n }\n\n /** Terminals relevant to this session (used ones first) plus open, unused ones. */\n terminalViews (): SessionTerminalView[] {\n const open = this.registry.list()\n const active = this.registry.getActive()\n for (const e of open) {\n this.keyFor(e)\n }\n const views: SessionTerminalView[] = this.session.terminals.map(t => {\n const entry = this.entryFor(t.key)\n return {\n key: t.key,\n label: entry?.label ?? t.label,\n connection: describeConnection(entry?.descriptor ?? t.descriptor),\n used: t.used,\n entry,\n status: entry ? this.registry.status(entry) : 'disconnected',\n isActive: !!entry && entry === active,\n canReconnect: !entry && !!(t.descriptor.profileId || t.descriptor.profileName),\n }\n })\n // hide never-used terminals that are no longer open\n return views.filter(v => v.used || v.entry)\n }\n\n /** Manually attach a stored key to an open terminal (from the chip menu). */\n bindTerminal (key: string, entry: TerminalEntry): void {\n for (const [k, id] of [...this.bindings]) {\n if (id === entry.id && k !== key) this.bindings.delete(k)\n }\n this.bindings.set(key, entry.id)\n const t = this.session.terminals.find(x => x.key === key)\n if (t) {\n t.label = entry.label\n t.descriptor = entry.descriptor\n }\n this.addNote(`${key} is now attached to \"${entry.label}\" (${describeConnection(entry.descriptor)}).`, true)\n this.touch()\n }\n\n /** Re-open the profile a disconnected terminal came from and attach it. */\n async reconnectTerminal (key: string): Promise<boolean> {\n const t = this.session.terminals.find(x => x.key === key)\n if (!t) return false\n await this.refreshProfiles()\n const profile = this.profilesCache.find(p => p.id === t.descriptor.profileId)\n ?? this.profilesCache.find(p => p.name === t.descriptor.profileName)\n if (!profile) {\n this.notifications.error(`AI panel: profile for ${t.label} no longer exists`)\n return false\n }\n const entry = await this.openProfile(profile)\n if (!entry) return false\n if (t.descriptor.customTitle) {\n // keep the name the user gave the original tab (same steps as Tabby's rename)\n this.zone.run(() => {\n entry.tab.setTitle(t.descriptor.customTitle!)\n entry.tab.customTitle = t.descriptor.customTitle!\n this.app.emitTabsChanged()\n })\n this.registry.list()\n }\n this.bindTerminal(key, entry)\n return true\n }\n\n private rebindTerminals (): string | null {\n const open = this.registry.list()\n const taken = new Set<string>()\n const reconnected: string[] = []\n const missing: string[] = []\n const candidates = [...this.session.terminals].sort((a, b) => Number(b.used) - Number(a.used))\n for (const t of candidates) {\n let best: { entry: TerminalEntry, score: number } | null = null\n for (const e of open) {\n if (taken.has(e.id)) continue\n const score = matchScore(t.descriptor, e.descriptor)\n if (score >= 3 && (!best || score > best.score)) best = { entry: e, score }\n }\n if (best) {\n taken.add(best.entry.id)\n this.bindings.set(t.key, best.entry.id)\n t.label = best.entry.label\n if (t.used) reconnected.push(`${t.key} → \"${best.entry.label}\"`)\n } else if (t.used) {\n missing.push(`${t.key} \"${t.label}\" (${describeConnection(t.descriptor)})`)\n }\n }\n if (!reconnected.length && !missing.length) {\n return null\n }\n const parts = ['Session resumed.']\n if (reconnected.length) parts.push(`Re-attached: ${reconnected.join(', ')}.`)\n if (missing.length) parts.push(`Not open right now: ${missing.join(', ')} – reconnect them from the terminal bar or open_terminal before using them.`)\n return parts.join(' ')\n }\n\n private async openProfile (profile: PartialProfile<Profile>): Promise<TerminalEntry | null> {\n let tab: any = null\n try {\n tab = await this.zone.run(() => this.profiles.openNewTabForProfile(profile))\n } catch (e) {\n this.notifications.error(`AI panel: could not open ${profile.name}: ${(e as Error).message}`)\n return null\n }\n if (!tab) return null\n const terminalTab = isTerminalTab(tab) ? tab : (tab.getAllTabs?.() ?? []).find(isTerminalTab)\n if (!terminalTab) return null\n for (let i = 0; i < 40; i++) {\n const entry = this.registry.forTab(terminalTab as BaseTerminalTabComponent<any>) ?? this.registry.register(terminalTab)\n if (entry) {\n this.registry.list() // assign labels\n return entry\n }\n await new Promise(r => setTimeout(r, 50))\n }\n return null\n }\n\n private async refreshProfiles (): Promise<void> {\n try {\n this.profilesCache = (await this.profiles.getProfiles()).filter(p => !p.isTemplate)\n } catch {\n this.profilesCache = []\n }\n }\n\n private terminalSnapshot (): string {\n const open = this.registry.list()\n if (!open.length) {\n return '<terminals>\\n(no terminal tabs open)\\n</terminals>'\n }\n const active = this.registry.getActive()\n const lines = open.map(e => {\n const key = this.keyFor(e)\n const bits = [`${key} \"${e.label}\" — ${describeConnection(e.descriptor)} — ${this.registry.status(e)}`]\n if (e === active) bits.push('— active tab')\n return bits.join(' ')\n })\n return `<terminals>\\n${lines.join('\\n')}\\n</terminals>`\n }\n\n // ---------------------------------------------------------- conversation\n\n async send (text: string): Promise<void> {\n const content = text.trim()\n if (!content || this.busy) {\n return\n }\n if (!this.configured) {\n this.error = 'Set the LLM endpoint in Settings → AI Panel first.'\n this.emit()\n return\n }\n const msg: UserMessage = {\n id: newId('m'),\n role: 'user',\n content,\n context: this.terminalSnapshot(),\n createdAt: nowIso(),\n }\n this.session.messages.push(msg)\n this.session.stats.turns++\n if (this.settings.autoTitle && !this.session.titleIsCustom && this.session.title === 'New session') {\n this.session.title = autoTitle(this.session)\n }\n this.error = null\n this.touch()\n void this.refreshProfiles()\n this.turnPromise = this.runTurn()\n try {\n await this.turnPromise\n } finally {\n this.turnPromise = null\n }\n }\n\n stop (): void {\n if (!this.busy) return\n for (const [id, resolve] of this.pendingApprovals) {\n resolve(false)\n this.pendingApprovals.delete(id)\n }\n this.abortController?.abort()\n }\n\n /** Abort the current turn and wait until it has fully unwound. */\n async stopAndWait (): Promise<void> {\n if (!this.busy) return\n this.stop()\n try {\n await this.turnPromise\n } catch {\n // the turn handles its own errors\n }\n }\n\n approve (toolCallId: string, options: { autoApproveLow?: boolean } = {}): void {\n const resolve = this.pendingApprovals.get(toolCallId)\n if (!resolve) return\n if (options.autoApproveLow && this.approvalMode === 'ask') {\n this.session.approvalMode = 'auto_low'\n }\n this.pendingApprovals.delete(toolCallId)\n resolve(true)\n }\n\n deny (toolCallId: string): void {\n const resolve = this.pendingApprovals.get(toolCallId)\n if (!resolve) return\n this.pendingApprovals.delete(toolCallId)\n resolve(false)\n }\n\n approveFirstPending (): void {\n const first = this.pendingApprovals.keys().next()\n if (!first.done) this.approve(first.value)\n }\n\n denyFirstPending (): void {\n const first = this.pendingApprovals.keys().next()\n if (!first.done) this.deny(first.value)\n }\n\n answer (toolCallId: string, text: string): void {\n if (!this.pendingQuestion || this.pendingQuestion.toolCallId !== toolCallId) return\n const q = this.pendingQuestion\n this.pendingQuestion = null\n q.resolve(text)\n }\n\n clearError (): void {\n this.error = null\n this.emit()\n }\n\n /** Insert a plain assistant-visible note (e.g. after resuming). */\n addNote (content: string, forModel = false): void {\n const note: NoteMessage = { id: newId('n'), role: 'note', content, createdAt: nowIso(), forModel }\n this.session.messages.push(note)\n this.touch()\n }\n\n // --------------------------------------------------------------- the loop\n\n private async runTurn (): Promise<void> {\n this.abortController = new AbortController()\n const signal = this.abortController.signal\n const provider = this.makeProvider()\n const toolSpecs: ToolSpec[] = ALL_TOOLS.map(t => t.spec)\n let assistant: AssistantMessage | null = null\n this.setPhase('thinking')\n try {\n let round = 0\n for (; round < MAX_TOOL_ROUNDS; round++) {\n assistant = {\n id: newId('m'),\n role: 'assistant',\n content: '',\n reasoning: '',\n toolCalls: [],\n createdAt: nowIso(),\n model: this.settings.model || undefined,\n }\n this.session.messages.push(assistant)\n this.setPhase('thinking')\n const calls = await this.streamAssistant(provider, assistant, toolSpecs, signal)\n if (!assistant.reasoning) delete assistant.reasoning\n this.touch()\n if (!calls.length) {\n break\n }\n this.setPhase('tool')\n for (const record of calls) {\n signal.throwIfAborted()\n await this.executeToolCall(record, signal)\n this.touch()\n }\n }\n if (round >= MAX_TOOL_ROUNDS) {\n this.addNote(`Paused after ${MAX_TOOL_ROUNDS} tool rounds in one turn. Send a message to let the agent continue.`)\n }\n } catch (e) {\n if (isAbortError(e) || signal.aborted) {\n if (assistant) {\n assistant.interrupted = true\n for (const tc of assistant.toolCalls) {\n if (tc.status === 'pending_approval' || tc.status === 'running' || tc.status === 'awaiting_user') {\n tc.status = 'cancelled'\n tc.finishedAt = nowIso()\n }\n }\n }\n } else {\n const message = (e as Error).message ?? String(e)\n this.error = message\n if (assistant) {\n assistant.error = message\n }\n console.error('[ai-panel] turn failed', e)\n }\n } finally {\n // drop an assistant message that never produced anything\n if (assistant && !assistant.content && !assistant.toolCalls.length && !assistant.error && !assistant.interrupted) {\n const i = this.session.messages.indexOf(assistant)\n if (i >= 0) this.session.messages.splice(i, 1)\n }\n this.abortController = null\n this.pendingQuestion = null\n this.setPhase('idle')\n this.touch()\n }\n }\n\n private async streamAssistant (provider: ChatProvider, assistant: AssistantMessage, tools: ToolSpec[], signal: AbortSignal): Promise<ToolCallRecord[]> {\n const messages = this.buildMessages()\n const acc = new Map<number, { id: string, name: string, args: string }>()\n for await (const evt of provider.stream(messages, tools, signal)) {\n switch (evt.type) {\n case 'text':\n assistant.content += evt.delta\n this.emitSoon()\n break\n case 'reasoning':\n assistant.reasoning = (assistant.reasoning ?? '') + evt.delta\n this.emitSoon()\n break\n case 'tool_call': {\n let slot = acc.get(evt.index)\n if (!slot) {\n slot = { id: evt.id ?? '', name: evt.name ?? '', args: '' }\n acc.set(evt.index, slot)\n }\n if (evt.id) slot.id = evt.id\n if (evt.name) slot.name = slot.name ? slot.name : evt.name\n if (evt.argumentsDelta) slot.args += evt.argumentsDelta\n break\n }\n case 'usage':\n assistant.usage = { prompt: evt.prompt, completion: evt.completion }\n this.session.stats.promptTokens += evt.prompt\n this.session.stats.completionTokens += evt.completion\n break\n case 'done':\n break\n }\n }\n assistant.content = assistant.content.trim()\n const records: ToolCallRecord[] = [...acc.entries()].sort((a, b) => a[0] - b[0]).map(([, slot]) => {\n let args: Record<string, any> = {}\n let parseError: string | undefined\n try {\n args = slot.args.trim() ? JSON.parse(slot.args) : {}\n } catch (e) {\n parseError = `Could not parse tool arguments as JSON: ${(e as Error).message}. Raw: ${slot.args.slice(0, 400)}`\n }\n const record: ToolCallRecord = {\n id: slot.id || newId('call'),\n name: slot.name || 'unknown',\n args,\n status: 'pending_approval',\n }\n if (parseError) {\n record.status = 'error'\n record.error = parseError\n }\n return record\n })\n assistant.toolCalls = records\n this.session.stats.toolCalls += records.length\n return records\n }\n\n private async executeToolCall (record: ToolCallRecord, signal: AbortSignal): Promise<void> {\n if (record.status === 'error') {\n record.result = record.error\n return\n }\n const tool = findTool(record.name)\n if (!tool) {\n record.status = 'error'\n record.error = `Unknown tool \"${record.name}\". Available: ${ALL_TOOLS.map(t => t.spec.name).join(', ')}.`\n record.result = record.error\n return\n }\n // display metadata\n if (tool.terminalArg && record.args[tool.terminalArg] != null) {\n try {\n const t = this.resolveTerminal(record.args[tool.terminalArg])\n record.terminalKey = t.key\n record.terminalLabel = t.label\n } catch {\n record.terminalLabel = String(record.args[tool.terminalArg])\n }\n }\n const requirement = tool.approval(record.args)\n if (requirement) {\n record.riskLevel = requirement.level\n const auto = isAutoApproved(requirement.level, this.approvalMode, requirement.hardBlock)\n if (!auto) {\n record.status = 'pending_approval'\n if (requirement.hardBlock) {\n record.progress = `Flagged as destructive (${requirement.reason}) – always requires confirmation.`\n }\n this.setPhase('awaiting_approval')\n this.touch()\n const approved = await new Promise<boolean>(resolve => {\n this.pendingApprovals.set(record.id, resolve)\n signal.addEventListener('abort', () => resolve(false), { once: true })\n })\n if (signal.aborted) {\n record.status = 'cancelled'\n record.finishedAt = nowIso()\n return\n }\n if (!approved) {\n record.status = 'declined'\n record.finishedAt = nowIso()\n record.result = 'The user declined this action. Do not retry it as-is; explain what you would need or ask how they want to proceed.'\n this.setPhase('tool')\n return\n }\n this.setPhase('tool')\n }\n }\n record.status = record.name === 'ask_user' ? 'awaiting_user' : 'running'\n record.startedAt = nowIso()\n record.progress = undefined\n this.touch()\n const ctx = this.makeToolContext(record, signal)\n try {\n const result = await tool.execute(record.args, ctx)\n record.result = result\n record.status = signal.aborted || record.exitState === 'cancelled' ? 'cancelled' : 'done'\n } catch (e) {\n if (isAbortError(e) || signal.aborted) {\n record.status = 'cancelled'\n record.finishedAt = nowIso()\n throw e\n }\n record.status = 'error'\n record.error = (e as Error).message ?? String(e)\n record.result = `Error: ${record.error}`\n } finally {\n record.finishedAt = nowIso()\n record.progress = undefined\n if (this.phase !== 'idle') this.setPhase('tool')\n }\n }\n\n private makeToolContext (record: ToolCallRecord, signal: AbortSignal): ToolContext {\n const s = this.settings\n return {\n signal,\n toolCallId: record.id,\n runner: this.runner,\n defaultTimeoutSeconds: s.defaultCommandTimeout,\n resolveTerminal: ref => this.resolveTerminal(ref),\n listTerminals: () => this.listTerminals(),\n captureLast: (entry, n) => this.registry.captureLast(entry, n),\n mark: entry => this.registry.mark(entry),\n isAlternateScreen: entry => this.registry.isAlternateScreen(entry),\n markUsed: key => {\n const t = this.session.terminals.find(x => x.key === key)\n if (t) {\n t.used = true\n t.lastUsedAt = nowIso()\n }\n },\n reveal: entry => {\n if (s.focusTerminalOnRun) this.registry.reveal(entry)\n },\n ensureReady: entry => this.registry.ensureReady(entry, { restoreActiveTab: !s.focusTerminalOnRun }),\n focus: entry => this.registry.focus(entry),\n progress: text => {\n record.progress = text\n this.emitSoon()\n },\n setExitState: state => {\n record.exitState = state as RunExitState\n },\n askUser: (question, choices) => {\n record.question = question\n record.choices = choices\n record.status = 'awaiting_user'\n this.setPhase('awaiting_user')\n this.touch()\n return new Promise<string>((resolve, reject) => {\n this.pendingQuestion = {\n toolCallId: record.id,\n resolve: answer => {\n record.answer = answer\n this.setPhase('tool')\n resolve(answer)\n },\n }\n signal.addEventListener('abort', () => reject(Object.assign(new Error('aborted'), { name: 'AbortError' })), { once: true })\n })\n },\n openTerminal: async ref => {\n await this.refreshProfiles()\n const needle = ref.toLowerCase()\n const profile = this.profilesCache.find(p => p.name.toLowerCase() === needle)\n ?? this.profilesCache.find(p => String((p.options as any)?.host ?? '').toLowerCase() === needle)\n ?? this.profilesCache.find(p => p.name.toLowerCase().includes(needle))\n if (!profile) {\n throw new Error(`No profile matches \"${ref}\". Available: ${this.profilesCache.map(p => p.name).join(', ') || '(none)'}`)\n }\n const entry = await this.openProfile(profile)\n if (!entry) {\n throw new Error(`Failed to open a tab for profile \"${profile.name}\".`)\n }\n const key = this.keyFor(entry)\n return { entry, key, label: entry.label }\n },\n listProfiles: () => this.profilesCache.map(p => ({\n name: p.name,\n kind: p.type,\n detail: (p.options as any)?.host ? `${(p.options as any).user ? (p.options as any).user + '@' : ''}${(p.options as any).host}` : '',\n })),\n }\n }\n\n private resolveTerminal (ref: unknown): ResolvedTerminal {\n const raw = String(ref ?? '').trim().replace(/^@/, '')\n if (!raw) {\n throw new Error('terminal is required – use a key like \"t1\" from list_terminals.')\n }\n const open = this.registry.list()\n for (const e of open) this.keyFor(e)\n const lower = raw.toLowerCase()\n let entry: TerminalEntry | null = null\n if (lower === 'active') {\n entry = this.registry.getActive()\n if (!entry) throw new Error('No terminal tab is active.')\n } else if (/^t\\d+$/i.test(raw)) {\n entry = this.entryFor(lower)\n if (!entry) {\n const stored = this.session.terminals.find(t => t.key === lower)\n if (stored) {\n throw new Error(`Terminal ${lower} \"${stored.label}\" is not open right now. Ask the user to reconnect it, or use open_terminal / list_terminals.`)\n }\n throw new Error(`Unknown terminal \"${raw}\". Call list_terminals for valid keys.`)\n }\n } else {\n entry = open.find(e => e.label.toLowerCase() === lower)\n ?? open.find(e => e.label.toLowerCase().startsWith(lower))\n ?? open.find(e => (e.descriptor.host ?? '').toLowerCase() === lower)\n ?? null\n if (!entry) {\n throw new Error(`No open terminal is labelled \"${raw}\". Open terminals: ${open.map(e => `${this.keyFor(e)} \"${e.label}\"`).join(', ') || '(none)'}.`)\n }\n }\n return { entry, key: this.keyFor(entry), label: entry.label }\n }\n\n private listTerminals (): TerminalListing[] {\n const active = this.registry.getActive()\n return this.registry.list().map(e => ({\n key: this.keyFor(e),\n label: e.label,\n connection: describeConnection(e.descriptor),\n status: this.registry.status(e),\n isActive: e === active,\n lastLine: this.registry.lastLine(e),\n }))\n }\n\n // ------------------------------------------------------- prompt building\n\n buildMessages (): ChatMessage[] {\n const s = this.settings\n return buildMessages(this.session, {\n systemPrompt: systemPromptTemplate,\n additionalSystemPrompt: s.additionalSystemPrompt,\n maxToolResultChars: s.maxToolResultChars,\n maxContextChars: s.maxContextChars,\n })\n }\n\n // ------------------------------------------------------------- plumbing\n\n private setPhase (phase: AgentPhase): void {\n if (this.phase !== phase) {\n this.phase = phase\n this.emit()\n }\n }\n\n /** Persist + notify. */\n private touch (): void {\n this.session.updatedAt = nowIso()\n this.store.save(this.session)\n this.emit()\n }\n\n private emit (): void {\n if (this.emitTimer) {\n clearTimeout(this.emitTimer)\n this.emitTimer = null\n }\n this.rev++\n this.zone.run(() => this.state.next({ session: this.session, phase: this.phase, error: this.error, rev: this.rev }))\n }\n\n /** Coalesce bursts (streaming tokens) into ~25 updates per second. */\n private emitSoon (): void {\n if (this.emitTimer) return\n this.emitTimer = setTimeout(() => {\n this.emitTimer = null\n this.emit()\n }, 40)\n }\n}\n","import { ApplicationRef, ComponentRef, EnvironmentInjector, Injectable, Injector, NgZone, Type, createComponent } from '@angular/core'\nimport { AppService, ConfigService, HotkeysService } from 'tabby-core'\n// type-only: the component injects this service, a value import would be circular\nimport type { AiPanelComponent } from './panel/panel.component'\nimport { AgentService } from '../core/agent.service'\nimport { CONFIG_KEY, DEFAULT_CONFIG, HOTKEY_IDS, PanelSide } from '../types/config'\n\nconst MIN_WIDTH = 300\nconst STYLE_ID = 'ai-panel-layout-style'\n\n/**\n * Mounts the panel as a docked sidebar.\n *\n * Preferred mount point is Tabby's inner `.content` (the area that holds the\n * tab bodies) so the tab bar keeps its full width and only terminals shrink.\n * If that element cannot be found, falls back to a fixed overlay on <body>.\n */\n@Injectable({ providedIn: 'root' })\nexport class PanelHostService {\n visible = false\n private panelType: Type<AiPanelComponent> | null = null\n private ref: ComponentRef<AiPanelComponent> | null = null\n private wrapper: HTMLElement | null = null\n private mountedTo: 'content' | 'body' | null = null\n private width = DEFAULT_CONFIG.panelWidth\n private side: PanelSide = 'right'\n private fontSize = DEFAULT_CONFIG.fontSize\n\n constructor (\n private appRef: ApplicationRef,\n private envInjector: EnvironmentInjector,\n private injector: Injector,\n private config: ConfigService,\n private app: AppService,\n private hotkeys: HotkeysService,\n private agent: AgentService,\n private zone: NgZone,\n ) {\n // config.store is not populated until the config has been loaded\n this.config.ready$.subscribe({ complete: () => {\n this.readConfig()\n this.config.changed$.subscribe(() => {\n const prevSide = this.side\n const prevFont = this.fontSize\n this.readConfig()\n if (this.visible && (prevSide !== this.side || prevFont !== this.fontSize)) {\n this.applyLayout()\n }\n })\n this.app.ready$.subscribe(() => {\n if (this.config.store[CONFIG_KEY]?.panelVisible) {\n // give Tabby a moment to render its layout\n setTimeout(() => this.show(), 300)\n }\n })\n } })\n this.hotkeys.hotkey$.subscribe(id => this.zone.run(() => this.runHotkey(id)))\n }\n\n /** Called once by the module so this service never has to import the component. */\n registerPanelComponent (type: Type<AiPanelComponent>): void {\n this.panelType = type\n }\n\n toggle (): void {\n if (this.visible) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show (): void {\n if (!this.visible) {\n this.mount()\n this.visible = true\n this.persist({ panelVisible: true })\n }\n setTimeout(() => this.ref?.instance.focusComposer(), 50)\n }\n\n hide (): void {\n if (!this.visible) return\n this.unmount()\n this.visible = false\n this.persist({ panelVisible: false })\n }\n\n /** Live width while dragging (not persisted). */\n setWidth (px: number): void {\n const max = Math.max(MIN_WIDTH, Math.floor(window.innerWidth * 0.8))\n this.width = Math.max(MIN_WIDTH, Math.min(max, Math.round(px)))\n this.applyLayout()\n }\n\n commitWidth (): void {\n this.persist({ panelWidth: this.width })\n }\n\n get currentWidth (): number {\n return this.width\n }\n\n get currentSide (): PanelSide {\n return this.side\n }\n\n /** Dispatch one of the panel's hotkeys by id (from Tabby, or from the panel's own key handler). */\n runHotkey (id: string): void {\n switch (id) {\n case HOTKEY_IDS.toggle:\n this.toggle()\n break\n case HOTKEY_IDS.approve:\n this.agent.approveFirstPending()\n break\n case HOTKEY_IDS.deny:\n this.agent.denyFirstPending()\n break\n case HOTKEY_IDS.stop:\n this.agent.stop()\n break\n case HOTKEY_IDS.focusInput:\n this.show()\n break\n case HOTKEY_IDS.newSession:\n this.show()\n void this.agent.newSession()\n break\n }\n }\n\n private readConfig (): void {\n const c = this.config.store?.[CONFIG_KEY] ?? {}\n this.width = Math.max(MIN_WIDTH, c.panelWidth ?? DEFAULT_CONFIG.panelWidth)\n this.side = c.panelSide === 'left' ? 'left' : 'right'\n const font = Number(c.fontSize)\n this.fontSize = Number.isFinite(font) && font >= 9 && font <= 24 ? font : DEFAULT_CONFIG.fontSize\n }\n\n private persist (patch: Record<string, any>): void {\n if (!this.config.store) return\n this.config.store[CONFIG_KEY] ??= {}\n Object.assign(this.config.store[CONFIG_KEY], patch)\n this.config.save()\n }\n\n private mount (): void {\n if (this.wrapper || !this.panelType) return\n const contentArea = findTabContentArea()\n const wrapper = document.createElement('div')\n wrapper.className = 'ai-panel-wrapper'\n this.wrapper = wrapper\n\n this.ref = createComponent(this.panelType, {\n environmentInjector: this.envInjector,\n elementInjector: this.injector,\n })\n this.appRef.attachView(this.ref.hostView)\n const el = this.ref.location.nativeElement as HTMLElement\n wrapper.appendChild(el)\n\n if (contentArea) {\n this.mountedTo = 'content'\n contentArea.appendChild(wrapper)\n } else {\n this.mountedTo = 'body'\n document.body.appendChild(wrapper)\n }\n this.applyLayout()\n this.ref.changeDetectorRef.detectChanges()\n }\n\n private unmount (): void {\n if (this.ref) {\n this.appRef.detachView(this.ref.hostView)\n this.ref.destroy()\n this.ref = null\n }\n this.wrapper?.remove()\n this.wrapper = null\n this.mountedTo = null\n document.body.classList.remove('ai-panel-open', 'ai-panel-left', 'ai-panel-right')\n document.getElementById(STYLE_ID)?.remove()\n this.nudgeResize()\n }\n\n private applyLayout (): void {\n if (!this.wrapper) return\n const body = document.body\n body.style.setProperty('--ai-panel-width', `${this.width}px`)\n this.wrapper.style.fontSize = `${this.fontSize}px`\n body.classList.add('ai-panel-open')\n body.classList.toggle('ai-panel-left', this.side === 'left')\n body.classList.toggle('ai-panel-right', this.side === 'right')\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null\n if (!style) {\n style = document.createElement('style')\n style.id = STYLE_ID\n document.head.appendChild(style)\n }\n const fixed = this.mountedTo === 'body'\n style.textContent = `\n .ai-panel-wrapper {\n position: ${fixed ? 'fixed' : 'absolute'};\n top: 0; bottom: 0;\n width: var(--ai-panel-width);\n z-index: ${fixed ? 1000 : 20};\n display: flex;\n background: var(--theme-bg, var(--bs-body-bg, #1e1e1e));\n color: var(--theme-fg, var(--bs-body-color, #ddd));\n }\n body.ai-panel-right .ai-panel-wrapper { right: 0; border-left: 1px solid var(--theme-bg-more-2, rgba(255,255,255,0.08)); }\n body.ai-panel-left .ai-panel-wrapper { left: 0; border-right: 1px solid var(--theme-bg-more-2, rgba(255,255,255,0.08)); }\n ${fixed ? '' : `\n body.ai-panel-open app-root .content-tab {\n width: calc(100% - var(--ai-panel-width)) !important;\n }\n body.ai-panel-open.ai-panel-left app-root .content-tab.content-tab-active {\n left: var(--ai-panel-width) !important;\n }`}\n `\n this.nudgeResize()\n }\n\n private nudgeResize (): void {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 30)\n }\n}\n\n/**\n * The element that holds Tabby's tab bodies (`.content-tab`). Located by\n * structure rather than a fixed path so minor template changes keep working.\n */\nfunction findTabContentArea (): HTMLElement | null {\n const tabBody = document.querySelector('app-root .content-tab') as HTMLElement | null\n if (tabBody?.parentElement) {\n return tabBody.parentElement\n }\n for (const selector of ['app-root .content.main > .content', 'app-root > .content > .content', 'app-root .content > .content']) {\n const el = document.querySelector(selector) as HTMLElement | null\n if (el) return el\n }\n return null\n}\n","import { Injectable } from '@angular/core'\nimport { Command, CommandContext, CommandLocation, CommandProvider } from 'tabby-core'\nimport { PanelHostService } from './ui/panel-host.service'\n\n// Font Awesome Free 6 \"robot\" (solid) - https://fontawesome.com, CC BY 4.0.\n// Tabby's toolbar CSS fills button SVGs, so the icon must be a filled shape.\nexport const PANEL_ICON = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 512\"><path fill=\"currentColor\" d=\"M320 0c17.7 0 32 14.3 32 32l0 64 120 0c39.8 0 72 32.2 72 72l0 272c0 39.8-32.2 72-72 72l-304 0c-39.8 0-72-32.2-72-72l0-272c0-39.8 32.2-72 72-72l120 0 0-64c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224l16 0 0 192-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0 0-192 16 0z\"/></svg>`\n\n/** Toolbar button (top-right of the tab bar) that toggles the panel. */\n@Injectable()\nexport class AiPanelCommandProvider extends CommandProvider {\n constructor (private host: PanelHostService) {\n super()\n }\n\n async provide (_context: CommandContext): Promise<Command[]> {\n return [\n {\n id: 'ai-panel:toggle',\n label: 'AI Agent',\n icon: PANEL_ICON,\n locations: [CommandLocation.RightToolbar],\n weight: 5,\n run: async () => this.host.toggle(),\n },\n ]\n }\n}\n","import { Component, OnInit } from '@angular/core'\nimport { ConfigService, PlatformService } from 'tabby-core'\nimport { OpenAICompatibleProvider } from '../../core/llm/openai-compatible'\nimport { SessionStoreService } from '../../core/session-store.service'\nimport { AiPanelConfig, CONFIG_KEY, DEFAULT_CONFIG } from '../../types/config'\n\n@Component({\n selector: 'ai-panel-settings',\n templateUrl: './settings.component.html',\n styleUrls: ['./settings.component.scss'],\n})\nexport class AiPanelSettingsComponent implements OnInit {\n testing = false\n testResult: { ok: boolean, message: string } | null = null\n models: string[] = []\n extraParamsError: string | null = null\n\n constructor (\n public config: ConfigService,\n private platform: PlatformService,\n public store: SessionStoreService,\n ) {}\n\n ngOnInit (): void {\n this.config.store[CONFIG_KEY] ??= {}\n for (const [k, v] of Object.entries(DEFAULT_CONFIG)) {\n this.config.store[CONFIG_KEY][k] ??= v\n }\n this.validateExtraParams()\n }\n\n get c (): AiPanelConfig {\n return this.config.store[CONFIG_KEY]\n }\n\n save (): void {\n this.config.save()\n }\n\n validateExtraParams (): void {\n const text = (this.c.extraParamsText ?? '').trim()\n if (!text) {\n this.extraParamsError = null\n return\n }\n try {\n const parsed = JSON.parse(text)\n this.extraParamsError = parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? null : 'Must be a JSON object'\n } catch (e) {\n this.extraParamsError = (e as Error).message\n }\n }\n\n async test (): Promise<void> {\n this.testing = true\n this.testResult = null\n try {\n const provider = new OpenAICompatibleProvider({ endpoint: this.c.endpoint, apiKey: this.c.apiKey, model: this.c.model })\n const result = await provider.ping()\n this.models = result.models ?? []\n const modelNote = this.models.length ? ` ${this.models.length} model${this.models.length === 1 ? '' : 's'} available.` : ''\n this.testResult = { ok: true, message: `Connected.${modelNote}` }\n if (!this.c.model && this.models.length === 1) {\n this.c.model = this.models[0]\n this.save()\n }\n } catch (e) {\n this.testResult = { ok: false, message: (e as Error).message }\n } finally {\n this.testing = false\n }\n }\n\n openDataFolder (): void {\n this.platform.openPath(this.store.rootDir)\n }\n\n resetDefaults (): void {\n if (!confirm('Reset all AI panel settings to defaults? Your sessions are kept.')) return\n Object.assign(this.config.store[CONFIG_KEY], DEFAULT_CONFIG)\n this.save()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { SettingsTabProvider } from 'tabby-settings'\nimport { AiPanelSettingsComponent } from './ui/settings/settings.component'\n\n/** @hidden */\n@Injectable()\nexport class AiPanelSettingsTabProvider extends SettingsTabProvider {\n id = 'ai-panel'\n icon = 'robot'\n title = 'AI Panel'\n\n getComponentType (): any {\n return AiPanelSettingsComponent\n }\n}\n","import { Injectable } from '@angular/core'\nimport { BaseTerminalTabComponent, TerminalDecorator } from 'tabby-terminal'\nimport { TerminalRegistryService } from './core/terminal-registry.service'\n\n/** Registers every terminal tab with the registry as it starts. */\n@Injectable()\nexport class AiPanelTerminalDecorator extends TerminalDecorator {\n constructor (private registry: TerminalRegistryService) {\n super()\n }\n\n attach (terminal: BaseTerminalTabComponent<any>): void {\n super.attach(terminal)\n this.registry.register(terminal)\n }\n\n detach (terminal: BaseTerminalTabComponent<any>): void {\n this.registry.unregister(terminal)\n super.detach(terminal)\n }\n}\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { ConfigService } from 'tabby-core'\nimport { AgentService, AgentState } from '../../core/agent.service'\nimport { TerminalRegistryService } from '../../core/terminal-registry.service'\nimport { ApprovalMode } from '../../types/session'\nimport { CONFIG_KEY, HOTKEY_IDS } from '../../types/config'\n\ninterface MentionOption {\n key: string\n label: string\n connection: string\n}\n\n@Component({\n selector: 'ai-composer',\n templateUrl: './composer.component.html',\n styleUrls: ['./composer.component.scss'],\n})\nexport class ComposerComponent implements OnInit, OnDestroy {\n @ViewChild('textarea') textarea?: ElementRef<HTMLTextAreaElement>\n draft = ''\n state!: AgentState\n mentionOptions: MentionOption[] = []\n mentionIndex = 0\n private mentionStart = -1\n private sub = new Subscription()\n\n readonly approvalModes: { value: ApprovalMode, label: string, hint: string }[] = [\n { value: 'ask', label: 'Ask for every action', hint: 'Every command needs your approval' },\n { value: 'auto_low', label: 'Auto-approve low-risk', hint: 'Read-only commands run without asking' },\n { value: 'auto_medium', label: 'Auto-approve low + medium', hint: 'Only destructive actions ask' },\n { value: 'auto_all', label: 'Auto-approve everything', hint: 'Only catastrophic patterns ask – use with care' },\n ]\n\n constructor (\n public agent: AgentService,\n private registry: TerminalRegistryService,\n private config: ConfigService,\n ) {}\n\n ngOnInit (): void {\n this.sub.add(this.agent.state$.subscribe(s => { this.state = s }))\n }\n\n ngOnDestroy (): void {\n this.sub.unsubscribe()\n }\n\n get busy (): boolean {\n return this.state?.phase !== 'idle'\n }\n\n get canSend (): boolean {\n return !this.busy && this.draft.trim().length > 0 && this.agent.configured\n }\n\n get model (): string {\n return this.config.store[CONFIG_KEY]?.model || 'default model'\n }\n\n get approvalMode (): ApprovalMode {\n return this.agent.approvalMode\n }\n\n get approvalHint (): string {\n return this.approvalModes.find(m => m.value === this.approvalMode)?.hint ?? ''\n }\n\n get tokenSummary (): string {\n const s = this.state?.session.stats\n if (!s || (!s.promptTokens && !s.completionTokens)) return ''\n return `${fmt(s.promptTokens)} in · ${fmt(s.completionTokens)} out`\n }\n\n get stopHotkey (): string {\n const keys: string[] | undefined = this.config.store.hotkeys?.[HOTKEY_IDS.stop]\n return keys?.length ? keys[0].replace(/-/g, '+') : ''\n }\n\n setApprovalMode (value: string): void {\n this.agent.setApprovalMode(value as ApprovalMode)\n }\n\n focus (): void {\n this.textarea?.nativeElement.focus()\n }\n\n send (): void {\n if (!this.canSend) return\n const text = this.draft\n this.draft = ''\n this.closeMentions()\n this.resize()\n void this.agent.send(text)\n }\n\n stop (): void {\n this.agent.stop()\n }\n\n onKeydown (event: KeyboardEvent): void {\n if (this.mentionOptions.length) {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n this.mentionIndex = (this.mentionIndex + 1) % this.mentionOptions.length\n return\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n this.mentionIndex = (this.mentionIndex - 1 + this.mentionOptions.length) % this.mentionOptions.length\n return\n }\n if (event.key === 'Enter' || event.key === 'Tab') {\n event.preventDefault()\n this.pickMention(this.mentionOptions[this.mentionIndex])\n return\n }\n if (event.key === 'Escape') {\n event.preventDefault()\n this.closeMentions()\n return\n }\n }\n if (event.key === 'Enter' && !event.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey && !event.isComposing) {\n event.preventDefault()\n if (this.busy) return\n this.send()\n }\n }\n\n onInput (): void {\n this.resize()\n this.updateMentions()\n }\n\n pickMention (option: MentionOption): void {\n const ta = this.textarea?.nativeElement\n if (!ta || this.mentionStart < 0) return\n const before = this.draft.slice(0, this.mentionStart)\n const after = this.draft.slice(ta.selectionStart)\n const insert = `@${option.label} `\n this.draft = before + insert + after\n this.closeMentions()\n setTimeout(() => {\n const pos = before.length + insert.length\n ta.focus()\n ta.setSelectionRange(pos, pos)\n this.resize()\n })\n }\n\n closeMentions (): void {\n this.mentionOptions = []\n this.mentionStart = -1\n this.mentionIndex = 0\n }\n\n private updateMentions (): void {\n const ta = this.textarea?.nativeElement\n if (!ta) return\n const caret = ta.selectionStart\n const before = this.draft.slice(0, caret)\n const match = /(^|\\s)@([^\\s@]*)$/.exec(before)\n if (!match) {\n this.closeMentions()\n return\n }\n const query = match[2].toLowerCase()\n this.mentionStart = caret - match[2].length - 1\n const open = this.registry.list()\n this.mentionOptions = open\n .map(e => ({ key: this.agent.keyFor(e), label: e.label, connection: describe(e.descriptor) }))\n .filter(o => !query || o.label.toLowerCase().includes(query) || o.key === query)\n .slice(0, 8)\n this.mentionIndex = 0\n }\n\n private resize (): void {\n const ta = this.textarea?.nativeElement\n if (!ta) return\n ta.style.height = 'auto'\n const needed = this.draft ? ta.scrollHeight : 0\n ta.style.height = needed ? `${Math.min(needed, 180)}px` : ''\n ta.classList.toggle('scrollable', needed > 180)\n }\n}\n\nfunction describe (d: { kind: string, host?: string, user?: string }): string {\n if (d.kind === 'ssh') return `${d.user ? d.user + '@' : ''}${d.host ?? ''}`\n return d.kind\n}\n\nfunction fmt (n: number): string {\n return n >= 1000 ? `${(n / 1000).toFixed(1)}k` : String(n)\n}\n","/**\n * Match a Tabby hotkey string (e.g. \"Ctrl-Alt-A\", \"⌘-Shift-Y\") against a\n * keyboard event. Used while Tabby's own hotkey service is suspended because\n * the user is typing in the panel.\n */\n\nexport interface KeyEventLike {\n key: string\n code: string\n ctrlKey: boolean\n altKey: boolean\n shiftKey: boolean\n metaKey: boolean\n}\n\nconst META_TOKENS = ['⌘', 'cmd', 'meta', 'win', 'super']\nconst ALT_TOKENS = ['alt', '⌥', 'option']\n\nexport function matchKeystroke (keystroke: string, event: KeyEventLike): boolean {\n const parts = keystroke.split('-').map(p => p.trim()).filter(Boolean)\n if (!parts.length) {\n return false\n }\n const key = parts.pop()!.toLowerCase()\n const mods = parts.map(p => p.toLowerCase())\n const wantCtrl = mods.includes('ctrl') || mods.includes('control')\n const wantAlt = mods.some(m => ALT_TOKENS.includes(m))\n const wantShift = mods.includes('shift')\n const wantMeta = mods.some(m => META_TOKENS.includes(m))\n if (event.ctrlKey !== wantCtrl || event.altKey !== wantAlt || event.shiftKey !== wantShift || event.metaKey !== wantMeta) {\n return false\n }\n const eventKey = (event.key ?? '').toLowerCase()\n const codeKey = (event.code ?? '').replace(/^(Key|Digit|Arrow)/, '').toLowerCase()\n return key === eventKey || key === codeKey || (key === 'space' && eventKey === ' ')\n}\n\n/**\n * Find which of `ids` is bound to the event. `bindings` is Tabby's\n * `config.store.hotkeys` (id → list of keystrokes, or keystroke sequences).\n */\nexport function findHotkey (bindings: Record<string, unknown> | undefined, ids: string[], event: KeyEventLike): string | null {\n if (!bindings) {\n return null\n }\n for (const id of ids) {\n const list = bindings[id]\n if (!Array.isArray(list)) continue\n for (const binding of list) {\n // multi-keystroke sequences are not supported here; only single chords\n const keystroke = Array.isArray(binding) ? (binding.length === 1 ? binding[0] : null) : binding\n if (typeof keystroke === 'string' && matchKeystroke(keystroke, event)) {\n return id\n }\n }\n }\n return null\n}\n","import { Component, ElementRef, HostListener, OnDestroy, OnInit, ViewChild } from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { AppService, ConfigService, HotkeysService, PlatformService } from 'tabby-core'\nimport { SettingsTabComponent } from 'tabby-settings'\nimport { AgentService, AgentState } from '../../core/agent.service'\nimport { PanelHostService } from '../panel-host.service'\nimport { SessionStoreService } from '../../core/session-store.service'\nimport { ComposerComponent } from '../composer/composer.component'\nimport { CONFIG_KEY, DEFAULT_CONFIG, HOTKEY_IDS } from '../../types/config'\nimport { Session } from '../../types/session'\nimport { findHotkey } from '../../core/util/keystroke'\n\nconst PANEL_HOTKEY_IDS = Object.values(HOTKEY_IDS)\n\n@Component({\n selector: 'ai-panel',\n templateUrl: './panel.component.html',\n styleUrls: ['./panel.component.scss'],\n})\nexport class AiPanelComponent implements OnInit, OnDestroy {\n state!: AgentState\n session!: Session\n showSessions = false\n editingTitle = false\n titleDraft = ''\n @ViewChild(ComposerComponent) composer?: ComposerComponent\n @ViewChild('titleInput') titleInput?: ElementRef<HTMLInputElement>\n\n private sub = new Subscription()\n private dragging = false\n private hotkeysSuspended = false\n\n constructor (\n public agent: AgentService,\n public host: PanelHostService,\n public store: SessionStoreService,\n private app: AppService,\n private config: ConfigService,\n private platform: PlatformService,\n private hotkeys: HotkeysService,\n private element: ElementRef<HTMLElement>,\n ) {}\n\n ngOnInit (): void {\n this.sub.add(this.agent.state$.subscribe(s => {\n this.state = s\n this.session = s.session\n }))\n }\n\n ngOnDestroy (): void {\n this.sub.unsubscribe()\n this.resumeTabbyHotkeys()\n }\n\n // ---- keyboard\n //\n // Tabby routes hotkeys to the terminal tab that is logically focused, and\n // that stays true while the user types in this panel: Ctrl+V/Ctrl+Shift+V\n // would paste into the shell as well, Ctrl+C would send SIGINT to it.\n // So while DOM focus is inside the panel, Tabby's hotkeys are suspended\n // and the panel's own hotkeys are matched here instead.\n\n @HostListener('focusin')\n onFocusIn (): void {\n this.suspendTabbyHotkeys()\n }\n\n @HostListener('focusout', ['$event'])\n onFocusOut (event: FocusEvent): void {\n const next = event.relatedTarget as Node | null\n if (next && this.element.nativeElement.contains(next)) {\n return\n }\n this.resumeTabbyHotkeys()\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown (event: KeyboardEvent): void {\n const id = findHotkey(this.config.store.hotkeys, PANEL_HOTKEY_IDS, event)\n if (id) {\n event.preventDefault()\n event.stopPropagation()\n this.host.runHotkey(id)\n }\n }\n\n private suspendTabbyHotkeys (): void {\n if (this.hotkeysSuspended) return\n this.hotkeysSuspended = true\n this.hotkeys.disable()\n }\n\n private resumeTabbyHotkeys (): void {\n if (!this.hotkeysSuspended) return\n this.hotkeysSuspended = false\n this.hotkeys.enable()\n }\n\n get side (): 'left' | 'right' {\n return this.host.currentSide\n }\n\n get configured (): boolean {\n return this.agent.configured\n }\n\n get showReasoning (): boolean {\n return this.config.store[CONFIG_KEY]?.showReasoning ?? DEFAULT_CONFIG.showReasoning\n }\n\n get sessionCount (): number {\n return this.store.list().length\n }\n\n get phaseLabel (): string {\n switch (this.state?.phase) {\n case 'thinking': return 'Thinking…'\n case 'tool': return 'Working…'\n case 'awaiting_approval': return 'Waiting for your approval'\n case 'awaiting_user': return 'Waiting for your answer'\n default: return ''\n }\n }\n\n hotkeyLabel (id: keyof typeof HOTKEY_IDS): string {\n const keys: string[] | undefined = this.config.store.hotkeys?.[HOTKEY_IDS[id]]\n return keys?.length ? keys[0].replace(/-/g, '+') : ''\n }\n\n focusComposer (): void {\n this.composer?.focus()\n }\n\n // ---- header actions\n\n async newSession (): Promise<void> {\n if (this.agent.busy && !confirm('The agent is still working. Stop it and start a new session?')) {\n return\n }\n await this.agent.newSession()\n this.showSessions = false\n this.focusComposer()\n }\n\n toggleSessions (): void {\n this.showSessions = !this.showSessions\n }\n\n async openSession (id: string): Promise<void> {\n if (this.agent.busy && !confirm('The agent is still working. Stop it and switch sessions?')) {\n return\n }\n if (await this.agent.openSession(id)) {\n this.showSessions = false\n this.focusComposer()\n }\n }\n\n openSettings (): void {\n this.app.openNewTabRaw({ type: SettingsTabComponent, inputs: { activeTab: 'ai-panel' } })\n }\n\n openDataFolder (): void {\n this.platform.openPath(this.store.rootDir)\n }\n\n close (): void {\n this.host.hide()\n }\n\n startEditTitle (): void {\n this.titleDraft = this.session.title\n this.editingTitle = true\n setTimeout(() => {\n this.titleInput?.nativeElement.focus()\n this.titleInput?.nativeElement.select()\n })\n }\n\n commitTitle (): void {\n if (this.editingTitle && this.titleDraft.trim() && this.titleDraft.trim() !== this.session.title) {\n this.agent.renameSession(this.titleDraft)\n }\n this.editingTitle = false\n }\n\n cancelEditTitle (): void {\n this.editingTitle = false\n }\n\n // ---- resize handle\n\n startResize (event: MouseEvent): void {\n event.preventDefault()\n this.dragging = true\n document.body.style.cursor = 'col-resize'\n document.body.style.userSelect = 'none'\n }\n\n @HostListener('document:mousemove', ['$event'])\n onMouseMove (event: MouseEvent): void {\n if (!this.dragging) return\n const width = this.side === 'right' ? window.innerWidth - event.clientX : event.clientX\n this.host.setWidth(width)\n }\n\n @HostListener('document:mouseup')\n onMouseUp (): void {\n if (!this.dragging) return\n this.dragging = false\n document.body.style.cursor = ''\n document.body.style.userSelect = ''\n this.host.commitWidth()\n }\n}\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { PlatformService, NotificationsService } from 'tabby-core'\nimport { AgentService, AgentPhase } from '../../core/agent.service'\nimport { TerminalRegistryService } from '../../core/terminal-registry.service'\nimport { AssistantMessage, SessionMessage } from '../../types/session'\n\n@Component({\n selector: 'ai-transcript',\n templateUrl: './transcript.component.html',\n styleUrls: ['./transcript.component.scss'],\n})\nexport class TranscriptComponent implements OnInit, AfterViewInit, OnDestroy {\n @Input() messages: SessionMessage[] = []\n @Input() phase: AgentPhase = 'idle'\n @Input() showReasoning = true\n @Input() configured = false\n @Output() openSettings = new EventEmitter<void>()\n @ViewChild('scroller') scroller?: ElementRef<HTMLElement>\n\n expandedReasoning = new Set<string>()\n private nearBottom = true\n private sub = new Subscription()\n private pendingScroll = false\n\n readonly examples = [\n 'What is running on port 8080 in @Linux-1?',\n 'Set up a WireGuard tunnel between @Linux-1 and @Linux-2',\n 'Copy ~/app/config.yaml from Linux-1 to the same path on Linux-2',\n 'Why did the last command fail?',\n ]\n\n constructor (\n private agent: AgentService,\n private registry: TerminalRegistryService,\n private platform: PlatformService,\n private notifications: NotificationsService,\n ) {}\n\n ngOnInit (): void {\n this.sub.add(this.agent.state$.subscribe(() => this.scheduleScroll()))\n }\n\n ngAfterViewInit (): void {\n this.scrollToBottom(true)\n }\n\n ngOnDestroy (): void {\n this.sub.unsubscribe()\n }\n\n trackMessage (_i: number, m: SessionMessage): string {\n return m.id\n }\n\n isStreaming (m: SessionMessage): boolean {\n return m.role === 'assistant' && this.phase === 'thinking' && m === this.messages[this.messages.length - 1]\n }\n\n isLastAssistant (m: SessionMessage): boolean {\n return m === [...this.messages].reverse().find(x => x.role === 'assistant')\n }\n\n reasoningExpanded (m: AssistantMessage): boolean {\n if (this.expandedReasoning.has(m.id)) return true\n // while the model is still thinking (no answer text yet) show what it is doing\n return this.isStreaming(m) && !m.content && !m.toolCalls.length\n }\n\n toggleReasoning (m: AssistantMessage): void {\n if (this.expandedReasoning.has(m.id)) {\n this.expandedReasoning.delete(m.id)\n } else {\n this.expandedReasoning.add(m.id)\n }\n }\n\n useExample (text: string): void {\n this.agent.send(text)\n }\n\n onScroll (): void {\n const el = this.scroller?.nativeElement\n if (!el) return\n this.nearBottom = el.scrollHeight - el.scrollTop - el.clientHeight < 60\n }\n\n /** Copy / insert buttons inside rendered markdown code blocks. */\n onClick (event: MouseEvent): void {\n const target = event.target as HTMLElement | null\n const button = target?.closest('[data-action]') as HTMLElement | null\n if (!button) return\n const block = button.closest('.code-block')\n const code = block?.querySelector('pre code')?.textContent ?? ''\n event.preventDefault()\n event.stopPropagation()\n if (button.dataset.action === 'copy') {\n this.platform.setClipboard({ text: code })\n this.flash(button, 'Copied')\n } else if (button.dataset.action === 'insert') {\n const active = this.registry.getActive()\n if (!active) {\n this.notifications.error('No active terminal to insert into')\n return\n }\n this.registry.sendInput(active, code.replace(/\\n$/, ''))\n this.registry.focus(active)\n this.flash(button, 'Inserted')\n }\n }\n\n private flash (button: HTMLElement, text: string): void {\n const original = button.textContent\n button.textContent = text\n setTimeout(() => { button.textContent = original }, 1200)\n }\n\n private scheduleScroll (): void {\n if (this.pendingScroll) return\n this.pendingScroll = true\n requestAnimationFrame(() => {\n this.pendingScroll = false\n this.scrollToBottom(false)\n })\n }\n\n private scrollToBottom (force: boolean): void {\n const el = this.scroller?.nativeElement\n if (!el) return\n if (force || this.nearBottom) {\n el.scrollTop = el.scrollHeight\n }\n }\n}\n","import { Component, Input, OnChanges, SimpleChanges, ElementRef, ViewChild, AfterViewChecked } from '@angular/core'\nimport { ConfigService } from 'tabby-core'\nimport { AgentService } from '../../core/agent.service'\nimport { TerminalRegistryService } from '../../core/terminal-registry.service'\nimport { ToolCallRecord } from '../../types/session'\nimport { HOTKEY_IDS } from '../../types/config'\nimport { countLines } from '../../core/util/text'\n\n@Component({\n selector: 'ai-tool-call',\n templateUrl: './tool-call.component.html',\n styleUrls: ['./tool-call.component.scss'],\n})\nexport class ToolCallComponent implements OnChanges, AfterViewChecked {\n @Input() call!: ToolCallRecord\n @ViewChild('outputBox') outputBox?: ElementRef<HTMLElement>\n\n expanded: boolean | null = null // null = automatic\n answerDraft = ''\n showApproveMenu = false\n private lastProgressLength = 0\n\n constructor (\n private agent: AgentService,\n private registry: TerminalRegistryService,\n private config: ConfigService,\n ) {}\n\n ngOnChanges (_changes: SimpleChanges): void {\n this.lastProgressLength = 0\n }\n\n ngAfterViewChecked (): void {\n // keep the live output tail in view while a command is running\n const box = this.outputBox?.nativeElement\n if (box && this.isRunning) {\n const len = this.call.progress?.length ?? 0\n if (len !== this.lastProgressLength) {\n this.lastProgressLength = len\n box.scrollTop = box.scrollHeight\n }\n }\n }\n\n // ---- derived display data\n\n get icon (): string {\n switch (this.call.name) {\n case 'run_command': return 'fa-terminal'\n case 'send_keys': return 'fa-keyboard'\n case 'read_terminal': return 'fa-eye'\n case 'wait_for_output': return 'fa-hourglass-half'\n case 'list_terminals': return 'fa-list'\n case 'ask_user': return 'fa-question-circle'\n case 'open_terminal': return 'fa-plus-square'\n case 'focus_terminal': return 'fa-crosshairs'\n default: return 'fa-cog'\n }\n }\n\n get title (): string {\n const t = this.call.terminalLabel\n switch (this.call.name) {\n case 'run_command': return t ? `Run in ${t}` : 'Run command'\n case 'send_keys': return t ? `Send keys to ${t}` : 'Send keys'\n case 'read_terminal': return t ? `Read ${t}` : 'Read terminal'\n case 'wait_for_output': return t ? `Wait on ${t}` : 'Wait for output'\n case 'list_terminals': return 'List terminals'\n case 'ask_user': return 'Question for you'\n case 'open_terminal': return `Open \"${this.call.args?.profile ?? ''}\"`\n case 'focus_terminal': return t ? `Focus ${t}` : 'Focus terminal'\n default: return this.call.name\n }\n }\n\n /** The command / keys line shown in monospace. */\n get commandText (): string | null {\n switch (this.call.name) {\n case 'run_command': return String(this.call.args?.command ?? '')\n case 'send_keys': {\n const keys = this.call.args?.keys\n return Array.isArray(keys) ? keys.map(k => /^[a-z]+(-[a-z])?$/i.test(k) && k.length > 1 ? `⟨${k}⟩` : k).join(' ') : String(keys ?? '')\n }\n case 'wait_for_output':\n return this.call.args?.until_regex ? `until /${this.call.args.until_regex}/` : null\n default: return null\n }\n }\n\n get explanation (): string | null {\n const e = this.call.args?.explanation\n return typeof e === 'string' && e.trim() ? e : null\n }\n\n get statusLabel (): string {\n switch (this.call.status) {\n case 'pending_approval': return 'Needs approval'\n case 'awaiting_user': return 'Waiting for you'\n case 'running': return this.runningLabel\n case 'done': return this.doneLabel\n case 'declined': return 'Declined'\n case 'error': return 'Error'\n case 'cancelled': return 'Cancelled'\n default: return this.call.status\n }\n }\n\n private get runningLabel (): string {\n if (this.call.name === 'wait_for_output') return 'Waiting…'\n if (this.call.name === 'run_command' || this.call.name === 'send_keys') return 'Running…'\n return 'Working…'\n }\n\n private get doneLabel (): string {\n switch (this.call.exitState) {\n case 'prompt': return 'Done'\n case 'matched': return 'Matched'\n case 'awaiting_input': return 'Needs input'\n case 'alt_screen': return 'Full-screen app'\n case 'idle': return 'No new output'\n case 'timeout': return 'Still running'\n case 'reset': return 'Terminal reset'\n case 'cancelled': return 'Cancelled'\n default: return 'Done'\n }\n }\n\n get statusClass (): string {\n if (this.call.status === 'done') {\n if (['awaiting_input', 'timeout', 'idle', 'reset'].includes(this.call.exitState ?? '')) return 'attention'\n return 'ok'\n }\n return this.call.status\n }\n\n get isRunning (): boolean {\n return this.call.status === 'running'\n }\n\n get isPending (): boolean {\n return this.call.status === 'pending_approval'\n }\n\n get hardBlocked (): boolean {\n return !!this.call.progress && this.call.status === 'pending_approval'\n }\n\n /** Result body without the bracketed status header line. */\n get outputText (): string {\n if (this.call.status === 'declined' || this.call.status === 'cancelled') return ''\n const src = this.isRunning ? (this.call.progress ?? '') : (this.call.result ?? '')\n if (!src) return ''\n const lines = src.split('\\n')\n if (lines[0].startsWith('[') && lines[0].endsWith(']')) {\n lines.shift()\n // drop the hint line that follows a non-prompt state\n if (lines.length && /^(The program is waiting|Interact with|Use wait_for_output|Check the current state)/.test(lines[0])) {\n lines.shift()\n }\n }\n return lines.join('\\n').replace(/^\\(no output\\)$/, '')\n }\n\n get outputLines (): number {\n return countLines(this.outputText)\n }\n\n get hasOutput (): boolean {\n return this.outputText.trim().length > 0\n }\n\n get showOutput (): boolean {\n if (!this.hasOutput) return false\n if (this.expanded !== null) return this.expanded\n if (this.isRunning) return true\n if (this.call.status === 'error') return true\n if (this.call.name === 'ask_user') return false\n return this.outputLines <= 8 && this.outputText.length < 800\n }\n\n toggleOutput (): void {\n this.expanded = !this.showOutput\n }\n\n get terminalOpen (): boolean {\n return !!this.call.terminalKey && !!this.agent.entryFor(this.call.terminalKey)\n }\n\n /** The command may still be running in the terminal – offer an interrupt. */\n get canInterrupt (): boolean {\n if (!this.terminalOpen) return false\n if (!['run_command', 'send_keys', 'wait_for_output'].includes(this.call.name)) return false\n if (this.call.status === 'cancelled') return true\n return this.call.status === 'done' && ['timeout', 'idle', 'awaiting_input'].includes(this.call.exitState ?? '')\n }\n\n focusTerminal (): void {\n const entry = this.call.terminalKey ? this.agent.entryFor(this.call.terminalKey) : null\n if (entry) this.registry.focus(entry)\n }\n\n interrupt (): void {\n const entry = this.call.terminalKey ? this.agent.entryFor(this.call.terminalKey) : null\n if (entry) {\n this.registry.sendInput(entry, '\\x03')\n this.registry.reveal(entry)\n }\n }\n\n hotkey (id: 'approve' | 'deny'): string {\n const keys: string[] | undefined = this.config.store.hotkeys?.[HOTKEY_IDS[id]]\n return keys?.length ? keys[0].replace(/-/g, '+') : ''\n }\n\n // ---- actions\n\n approve (): void {\n this.showApproveMenu = false\n this.agent.approve(this.call.id)\n }\n\n approveAndAutoLow (): void {\n this.showApproveMenu = false\n this.agent.approve(this.call.id, { autoApproveLow: true })\n }\n\n deny (): void {\n this.showApproveMenu = false\n this.agent.deny(this.call.id)\n }\n\n answer (text?: string): void {\n const value = (text ?? this.answerDraft).trim()\n if (!value) return\n this.agent.answer(this.call.id, value)\n this.answerDraft = ''\n }\n}\n","import { Component, HostListener, OnDestroy, OnInit } from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { AgentService, SessionTerminalView } from '../../core/agent.service'\nimport { TerminalEntry, TerminalRegistryService } from '../../core/terminal-registry.service'\n\n@Component({\n selector: 'ai-terminal-strip',\n templateUrl: './terminal-strip.component.html',\n styleUrls: ['./terminal-strip.component.scss'],\n})\nexport class TerminalStripComponent implements OnInit, OnDestroy {\n views: SessionTerminalView[] = []\n menuFor: string | null = null\n candidates: TerminalEntry[] = []\n reconnecting = new Set<string>()\n private sub = new Subscription()\n\n constructor (\n private agent: AgentService,\n private registry: TerminalRegistryService,\n ) {}\n\n ngOnInit (): void {\n this.sub.add(this.agent.state$.subscribe(() => this.refresh()))\n this.sub.add(this.registry.changed$.subscribe(() => this.refresh()))\n // status dots depend on time (recent output) – tick gently\n const timer = setInterval(() => this.refresh(), 1500)\n this.sub.add({ unsubscribe: () => clearInterval(timer) } as Subscription)\n }\n\n ngOnDestroy (): void {\n this.sub.unsubscribe()\n }\n\n trackView (_i: number, v: SessionTerminalView): string {\n return v.key\n }\n\n statusTitle (v: SessionTerminalView): string {\n if (this.reconnecting.has(v.key)) {\n return `${v.key} · reconnecting…`\n }\n if (!v.entry) {\n return `${v.key} · ${v.connection} · closed · ${v.canReconnect ? 'click to reopen it' : 'right-click to attach an open terminal'}`\n }\n const s = v.status.replace('_', ' ')\n return `${v.key} · ${v.connection} · ${s}${v.used ? '' : ' · not used in this session yet'}`\n }\n\n async click (v: SessionTerminalView, event: MouseEvent): Promise<void> {\n event.stopPropagation()\n this.menuFor = null\n if (v.entry) {\n this.registry.focus(v.entry)\n return\n }\n if (v.canReconnect && !this.reconnecting.has(v.key)) {\n // a closed tab: reopen its profile straight away; the menu stays on right-click\n this.reconnecting.add(v.key)\n let ok = false\n try {\n ok = await this.agent.reconnectTerminal(v.key)\n } finally {\n this.reconnecting.delete(v.key)\n this.refresh()\n }\n if (!ok) {\n this.toggleMenu(v.key)\n }\n return\n }\n this.toggleMenu(v.key)\n }\n\n openMenu (v: SessionTerminalView, event: MouseEvent): void {\n event.preventDefault()\n event.stopPropagation()\n this.toggleMenu(v.key)\n }\n\n private toggleMenu (key: string): void {\n if (this.menuFor === key) {\n this.menuFor = null\n return\n }\n // open terminals that could be attached to this key\n this.candidates = this.registry.list()\n this.menuFor = key\n }\n\n attach (key: string, entry: TerminalEntry): void {\n this.agent.bindTerminal(key, entry)\n this.menuFor = null\n }\n\n async reconnect (v: SessionTerminalView): Promise<void> {\n this.menuFor = null\n await this.agent.reconnectTerminal(v.key)\n }\n\n @HostListener('document:click')\n closeMenu (): void {\n this.menuFor = null\n }\n\n private refresh (): void {\n this.views = this.agent.terminalViews()\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core'\nimport { Subscription } from 'rxjs'\nimport { SessionStoreService } from '../../core/session-store.service'\nimport { AgentService } from '../../core/agent.service'\nimport { SessionSummary } from '../../types/session'\n\n@Component({\n selector: 'ai-session-list',\n templateUrl: './session-list.component.html',\n styleUrls: ['./session-list.component.scss'],\n})\nexport class SessionListComponent implements OnInit, OnDestroy {\n @Input() currentId = ''\n @Output() open = new EventEmitter<string>()\n @Output() create = new EventEmitter<void>()\n @Output() close = new EventEmitter<void>()\n @Output() openFolder = new EventEmitter<void>()\n\n query = ''\n sessions: SessionSummary[] = []\n renamingId: string | null = null\n renameDraft = ''\n private sub = new Subscription()\n\n constructor (\n private store: SessionStoreService,\n private agent: AgentService,\n ) {}\n\n ngOnInit (): void {\n this.sub.add(this.store.summaries$.subscribe(list => { this.sessions = list }))\n this.sessions = this.store.list()\n }\n\n ngOnDestroy (): void {\n this.sub.unsubscribe()\n }\n\n get filtered (): SessionSummary[] {\n const q = this.query.trim().toLowerCase()\n if (!q) return this.sessions\n return this.sessions.filter(s =>\n s.title.toLowerCase().includes(q) ||\n s.preview.toLowerCase().includes(q) ||\n s.terminalLabels.some(l => l.toLowerCase().includes(q)))\n }\n\n trackSession (_i: number, s: SessionSummary): string {\n return s.id\n }\n\n startRename (s: SessionSummary, event: Event): void {\n event.stopPropagation()\n this.renamingId = s.id\n this.renameDraft = s.title\n }\n\n commitRename (s: SessionSummary): void {\n if (this.renamingId !== s.id) return\n const title = this.renameDraft.trim()\n this.renamingId = null\n if (!title || title === s.title) return\n if (s.id === this.currentId) {\n this.agent.renameSession(title)\n } else {\n const session = this.store.load(s.id)\n if (session) {\n session.title = title\n session.titleIsCustom = true\n this.store.save(session)\n }\n }\n }\n\n remove (s: SessionSummary, event: Event): void {\n event.stopPropagation()\n if (!confirm(`Delete session \"${s.title}\"? This cannot be undone.`)) return\n void this.agent.deleteSession(s.id)\n }\n}\n","/**\n * marked v12.0.2 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape$1(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape$1(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n // precede setext continuation with 4 spaces so it isn't a setext\n let text = cap[0].replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n $1');\n text = rtrim(text.replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape$1(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape$1(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape$1(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape$1(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape$1(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape$1(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n/**\n * exports\n */\nconst block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nconst inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape$1(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape$1(lang)\n + '\">'\n + (escaped ? code : escape$1(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape$1(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n",null,null,null,null,null,"import { Pipe, PipeTransform } from '@angular/core'\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser'\nimport { marked } from 'marked'\nimport DOMPurify from 'dompurify'\n\nconst renderer = new marked.Renderer()\nconst escapeHtml = (s: string) => s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\"/g, '"')\n\n// Code blocks get a small action bar (copy / insert into terminal). The\n// transcript component handles the clicks via event delegation.\nrenderer.code = (code: string, infostring: string | undefined): string => {\n const lang = (infostring ?? '').trim().split(/\\s+/)[0]\n const langAttr = lang ? ` data-lang=\"${escapeHtml(lang)}\"` : ''\n return `<div class=\"code-block\"${langAttr}>` +\n `<div class=\"code-actions\">` +\n (lang ? `<span class=\"code-lang\">${escapeHtml(lang)}</span>` : '') +\n `<button type=\"button\" class=\"code-action\" data-action=\"copy\" title=\"Copy\">Copy</button>` +\n `<button type=\"button\" class=\"code-action\" data-action=\"insert\" title=\"Type into the active terminal (without Enter)\">Insert</button>` +\n `</div><pre><code>${escapeHtml(code)}</code></pre></div>`\n}\nrenderer.link = (href: string, title: string | null | undefined, text: string): string => {\n const t = title ? ` title=\"${escapeHtml(title)}\"` : ''\n return `<a href=\"${escapeHtml(href)}\"${t} target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`\n}\n\nmarked.use({ renderer, gfm: true, breaks: true })\n\n// Tabby's renderer has Node integration – model output must never become live markup.\nconst purifyConfig = {\n USE_PROFILES: { html: true },\n FORBID_TAGS: ['style', 'script', 'iframe', 'object', 'embed', 'form', 'input', 'svg', 'math', 'img', 'video', 'audio'],\n FORBID_ATTR: ['style', 'onerror', 'onload'],\n ALLOWED_URI_REGEXP: /^(?:https?|mailto):/i,\n ADD_ATTR: ['target', 'data-action', 'data-lang'],\n}\n\nexport function renderMarkdown (markdown: string): string {\n const html = marked.parse(markdown ?? '', { async: false }) as string\n return DOMPurify.sanitize(html, purifyConfig) as string\n}\n\n@Pipe({ name: 'aiMarkdown', pure: true })\nexport class MarkdownPipe implements PipeTransform {\n constructor (private sanitizer: DomSanitizer) {}\n\n transform (value: string | null | undefined): SafeHtml {\n if (!value) {\n return ''\n }\n try {\n return this.sanitizer.bypassSecurityTrustHtml(renderMarkdown(value))\n } catch (e) {\n console.warn('[ai-panel] markdown render failed', e)\n return this.sanitizer.bypassSecurityTrustHtml(`<pre>${escapeHtml(value)}</pre>`)\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core'\nimport { relativeTime } from '../../core/util/text'\n\n/** Impure so \"just now\" keeps ticking as the list stays open. */\n@Pipe({ name: 'aiRelativeTime', pure: false })\nexport class RelativeTimePipe implements PipeTransform {\n transform (iso: string | null | undefined): string {\n return iso ? relativeTime(iso) : ''\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { FormsModule } from '@angular/forms'\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap'\nimport TabbyCoreModule, { CommandProvider, ConfigProvider, HotkeyProvider } from 'tabby-core'\nimport TabbyTerminalModule, { TerminalDecorator } from 'tabby-terminal'\nimport { SettingsTabProvider } from 'tabby-settings'\n\nimport './ui/styles.scss'\n\nimport { AiPanelConfigProvider } from './config'\nimport { AiPanelHotkeyProvider } from './hotkeys'\nimport { AiPanelCommandProvider } from './commands'\nimport { AiPanelSettingsTabProvider } from './settings-tab'\nimport { AiPanelTerminalDecorator } from './decorator'\nimport { PanelHostService } from './ui/panel-host.service'\nimport { AgentService } from './core/agent.service'\nimport { TerminalRegistryService } from './core/terminal-registry.service'\n\nimport { AiPanelComponent } from './ui/panel/panel.component'\nimport { TranscriptComponent } from './ui/transcript/transcript.component'\nimport { ToolCallComponent } from './ui/transcript/tool-call.component'\nimport { ComposerComponent } from './ui/composer/composer.component'\nimport { TerminalStripComponent } from './ui/terminal-strip/terminal-strip.component'\nimport { SessionListComponent } from './ui/sessions/session-list.component'\nimport { AiPanelSettingsComponent } from './ui/settings/settings.component'\nimport { MarkdownPipe } from './ui/pipes/markdown.pipe'\nimport { RelativeTimePipe } from './ui/pipes/relative-time.pipe'\n\n/** @hidden */\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n NgbModule,\n TabbyCoreModule,\n TabbyTerminalModule,\n ],\n providers: [\n { provide: ConfigProvider, useClass: AiPanelConfigProvider, multi: true },\n { provide: HotkeyProvider, useClass: AiPanelHotkeyProvider, multi: true },\n { provide: CommandProvider, useClass: AiPanelCommandProvider, multi: true },\n { provide: SettingsTabProvider, useClass: AiPanelSettingsTabProvider, multi: true },\n { provide: TerminalDecorator, useClass: AiPanelTerminalDecorator, multi: true },\n ],\n declarations: [\n AiPanelComponent,\n TranscriptComponent,\n ToolCallComponent,\n ComposerComponent,\n TerminalStripComponent,\n SessionListComponent,\n AiPanelSettingsComponent,\n MarkdownPipe,\n RelativeTimePipe,\n ],\n})\nexport default class AiPanelModule {\n // Instantiating the host service here makes it subscribe to hotkeys and\n // restore the panel on startup even before the toolbar button is used.\n constructor (host: PanelHostService, agent: AgentService, registry: TerminalRegistryService) {\n host.registerPanelComponent(AiPanelComponent)\n // handy for debugging from the devtools console\n ;(window as any).tabbyAiPanel = { host, agent, registry }\n }\n}\n"],"names":["module","exports","cssWithMappingToString","list","toString","map","item","content","needLayer","concat","length","join","i","modules","media","dedupe","supports","layer","undefined","alreadyImportedModules","k","id","_k","push","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","sourceMapping","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__assign","assign","t","s","n","arguments","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","kind","descriptor","name","_","done","context","access","addInitializer","result","get","set","init","unshift","__runInitializers","thisArg","value","useValue","__propKey","x","__setFunctionName","prefix","description","configurable","__metadata","metadataKey","metadataValue","metadata","__awaiter","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","rejected","then","__generator","body","label","sent","trys","ops","y","g","Iterator","verb","Symbol","iterator","v","op","pop","__createBinding","o","m","k2","__esModule","writable","enumerable","__exportStar","__values","__read","ar","error","__spread","__spreadArrays","il","a","j","jl","__spreadArray","to","from","pack","l","slice","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","awaitReturn","resume","settle","fulfill","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","ownKeys","getOwnPropertyNames","__importStar","mod","__importDefault","default","__classPrivateFieldGet","receiver","state","has","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","dispose","inner","asyncDispose","stack","_SuppressedError","SuppressedError","suppressed","message","Error","__disposeResources","fail","hasError","__rewriteRelativeImportExtension","path","preserveJsx","test","replace","tsx","ext","cm","toLowerCase","_getDefaults","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","RegExp","source","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape$1","html","encode","unescapeTest","charAt","fromCharCode","parseInt","substring","caret","edit","regex","opt","obj","val","valSource","getRegex","cleanUrl","href","encodeURI","noopTest","exec","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","split","trim","splice","rtrim","invert","suffLen","currChar","findClosingBracket","level","outputLink","cap","link","lexer","title","text","inLink","token","type","tokens","inlineTokens","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","rules","space","src","block","newline","code","codeBlockStyle","fences","lang","inline","anyPunctuation","heading","trimmed","depth","hr","blockquote","top","blockTokens","bull","isordered","ordered","start","loose","items","itemRegex","itemContents","endsWithBlankLine","endEarly","line","repeat","nextLine","indent","trimStart","search","blankLine","nextBulletRegex","Math","min","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","task","checked","trimEnd","spacers","filter","hasMultipleLineBreaks","some","pre","def","tag","table","headers","aligns","rows","header","align","cell","lheading","paragraph","escape","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","reflink","links","nolink","linkString","emStrong","maskedSrc","prevChar","emStrongLDelim","nextChar","punctuation","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","emStrongRDelimAst","emStrongRDelimUnd","lastIndex","lastCharLength","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","url","prevCapZero","_backpedal","inlineText","blockCode","bullet","_paragraph","blockText","_blockLabel","_tag","_comment","blockNormal","gfmTable","blockGfm","blockPedantic","inlineCode","_punctuation","blockSkip","_inlineComment","_inlineLabel","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","normal","_Lexer","inlineQueue","lex","lexInline","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startBlock","startIndex","Infinity","tempSrc","tempStart","forEach","getStartIndex","errMsg","charCodeAt","console","keepPrevChar","keys","includes","lastIndexOf","startInline","_Renderer","infostring","quote","startatt","listitem","checkbox","tablerow","tablecell","flags","strong","em","cleanHref","out","image","_TextRenderer","_Parser","textRenderer","parse","parser","parseInline","renderers","genericToken","ret","headingToken","codeToken","tableToken","blockquoteToken","listToken","itemBody","htmlToken","paragraphToken","textToken","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","passThroughHooks","Set","preprocess","markdown","postprocess","processAllTokens","Marked","defaults","setOptions","parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","args","use","callback","values","childTokens","flat","opts","prevRenderer","extLevel","prop","rendererProp","rendererFunc","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","arg","packWalktokens","#parseMarkdown","origOpt","warn","throwError","onError","all","catch","#onError","msg","markedInstance","marked","getDefaults","entries","isFrozen","getPrototypeOf","freeze","seal","_ref","construct","func","_len","_key","Func","_len2","_key2","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arrayPush","arraySplice","arrayIsArray","isArray","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","objectHasOwnProperty","objectToString","regExpTest","typeErrorCreate","unconstruct","_len3","_key3","_len4","_key4","addToSet","array","transformCaseFunc","element","lcElement","cleanArray","isPropertyExist","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","fallbackValue","isRegex","_unused","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","NODE_TYPE","attribute","cdataSection","entityReference","entityNode","processingInstruction","comment","document","documentType","documentFragment","notation","LITERAL_TEXT_ELEMENT_NAMES","LITERAL_TEXT_ELEMENTS","LITERAL_TEXT_CLOSE","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","_resolveSetOption","cfg","fallback","base","transform","_resolveObjectOption","makeFallback","createDOMPurify","DOMPurify","root","version","removed","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","removeAttributeNode","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","getOwnerDocument","_readNodeType","_readNodeName","nodeName","template","createElement","ownerDocument","trustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicy","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","_createTrustedScriptURL","_getDefaultTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","createHTMLDocument","MUSTACHE_EXPR$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","ALLOWED_URI_REGEXP","customElementHandling","TAGS","ATTRS","ADD_TAGS","ADD_ATTR","ADD_FORBID_CONTENTS","tbody","TRUSTED_TYPES_POLICY","previousTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkSvgNamespace","tagName","parent","parentTagName","namespaceURI","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","_forceRemove","removeChild","_stripAttributeNode","removeAttribute","_neutralizeRoot","_neutralizeSubtree","childNodes","snapshot","child","attributes","_removeAttribute","attr","getAttributeNode","setAttribute","_stripDisallowedAttributes","_isPatchLinkageAttribute","lcName","lcTag","_neutralizePatchLinkage","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","insertBefore","createTextNode","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_stripTemplateExpressions","_scrubTemplateExpressions","_node$querySelectorAl","normalize","walker","currentNode","nextNode","templates","querySelectorAll","tmpl","_isDocumentFragment","_isClobbered","realTagName","textContent","hasChildNodes","_isNode","_executeHooks","hook","_isUnsafeNode","firstElementChild","_matchesNameCheck","check","_sanitizeDisallowedNode","_isBasicCustomElement","parentNode","childCount","hoisted","_forkSharedAllowlist","hookList","defaultSet","setConfigSet","_handleHookDetachedNode","_sanitizeElements","allowedTags","nt","_isValidAttribute","nameIsPermitted","ATTR_WHITESPACE$1","IS_SCRIPT_OR_DATA$1","RESERVED_CUSTOM_ELEMENT_NAMES","CUSTOM_ELEMENT$1","_applyTrustedTypesToAttribute","getAttributeType","_setAttributeValue","setAttributeNS","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","recreatedNamedProp","cleanWrite","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","innerSr","_sanitizeAttachedShadowRoots","shadow","isElement","rootName","sr","sanitize","importedNode","returnNode","inPlace","nn","appendChild","firstChild","walkRoot","nodeIterator","entry","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","purify"],"sourceRoot":""}
|