tarsk 0.5.72 → 0.5.73
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5505 -2902
- package/dist/public/assets/{account-view-C_WBVXA3.js → account-view-DKQdyGPK.js} +1 -1
- package/dist/public/assets/{alert-dialog-FQ5_FqBX.js → alert-dialog-Cb1PEgra.js} +1 -1
- package/dist/public/assets/api-BMo_Lz8f.js +2 -0
- package/dist/public/assets/{async-error-boundary-DCDTsNTO.js → async-error-boundary-J8P6NVvc.js} +1 -1
- package/dist/public/assets/{async-loading-fallback-C173aA9v.js → async-loading-fallback-B_JNgWJR.js} +1 -1
- package/dist/public/assets/browser-tab-D_GXZ93G.js +12 -0
- package/dist/public/assets/{button-sfGyFWfz.js → button-DeNw35VZ.js} +1 -1
- package/dist/public/assets/{card-D5k0GHxM.js → card-B4eI0NI-.js} +1 -1
- package/dist/public/assets/{chat-dock-context-DIyMsJHM.js → chat-dock-context-BXoAs38w.js} +1 -1
- package/dist/public/assets/{commit-dialog-Bmh1QdHK.js → commit-dialog-DDLaQVzY.js} +1 -1
- package/dist/public/assets/{commit-error-dialog-Dpu8C-0w.js → commit-error-dialog-Cp0Aic7I.js} +1 -1
- package/dist/public/assets/{commit-method-fields-CYzy7rmY.js → commit-method-fields-CD3PTIox.js} +1 -1
- package/dist/public/assets/{context-menu-Bo0OMC7-.js → context-menu-Dx5Jy21w.js} +1 -1
- package/dist/public/assets/{conversation-history-view-COFXqD0e.js → conversation-history-view-JymxZFJ2.js} +1 -1
- package/dist/public/assets/{create-project-dialog-DQ4AbwQP.js → create-project-dialog-qbwqSqGU.js} +2 -2
- package/dist/public/assets/{create-project-workspace-BiRMezO9.js → create-project-workspace-BcIx6FNf.js} +1 -1
- package/dist/public/assets/{create-repo-dialog-CYiCHWgi.js → create-repo-dialog-DcvSMy3g.js} +1 -1
- package/dist/public/assets/{delete-confirm-dialog-B99gEJN8.js → delete-confirm-dialog-C9NASyh6.js} +1 -1
- package/dist/public/assets/{dialog-CP2cYR59.js → dialog-Do98zzAW.js} +1 -1
- package/dist/public/assets/{diff-view-Cnuntc3l.js → diff-view-ePD0sdsW.js} +2 -2
- package/dist/public/assets/dist-BWuYHVi8.js +2 -0
- package/dist/public/assets/{dist-DrpdKPSI.js → dist-CjhvxqFU.js} +1 -1
- package/dist/public/assets/{explorer-tab-view-BoCoREoE.js → explorer-tab-view-D6hsKrXY.js} +2 -2
- package/dist/public/assets/{explorer-tree-DvD1-WW3.js → explorer-tree-BG8ShRwn.js} +1 -1
- package/dist/public/assets/{explorer-view-B4WJUy7s.js → explorer-view-BZcNnLd9.js} +2 -2
- package/dist/public/assets/{git-history-dialog-DHdzijZS.js → git-history-dialog-DWhJ1-ba.js} +1 -1
- package/dist/public/assets/index-DhOeeft5.css +1 -0
- package/dist/public/assets/index-DjaVbFDB.js +3386 -0
- package/dist/public/assets/{markdown-renderer-Dx9-Ljv0.js → markdown-renderer-qLede1zH.js} +4 -4
- package/dist/public/assets/{mcp-server-card-DPNG9Up7.js → mcp-server-card-zm-ss-7h.js} +1 -1
- package/dist/public/assets/{merged-pr-dialog-CEvS2z8D.js → merged-pr-dialog-Due9WdB4.js} +1 -1
- package/dist/public/assets/{model-list-controls-ChoemIJa.js → model-list-controls-D86_87E4.js} +1 -1
- package/dist/public/assets/{onboarding-dialog-DCull5p_.js → onboarding-dialog-DlqbPvG0.js} +1 -1
- package/dist/public/assets/{project-env-vars-view-DTGwl4wr.js → project-env-vars-view-N1Io1Pau.js} +1 -1
- package/dist/public/assets/{project-model-aliases-view-CEDz_6NW.js → project-model-aliases-view-B4FEze4g.js} +1 -1
- package/dist/public/assets/{project-settings-view-DniUno1i.js → project-settings-view-BalZ6Fe1.js} +1 -1
- package/dist/public/assets/{project-tools-view-DknCaJu_.js → project-tools-view-OnCN0jKz.js} +1 -1
- package/dist/public/assets/{providers-list-view-D_n1Ai6S.js → providers-list-view-DXvcxXDM.js} +1 -1
- package/dist/public/assets/pull-request-dialog-BeeTNIN_.js +1 -0
- package/dist/public/assets/{pull-with-changes-dialog-rKmqSi73.js → pull-with-changes-dialog-B9y2_lt_.js} +1 -1
- package/dist/public/assets/{push-before-pr-dialog-BeEx6Po_.js → push-before-pr-dialog-D3pMFe9A.js} +1 -1
- package/dist/public/assets/{settings-general-view-CVHlxpTM.js → settings-general-view-CAYlYs3J.js} +1 -1
- package/dist/public/assets/{settings-instructions-view-Bpx_dUaJ.js → settings-instructions-view-GjQivhLy.js} +1 -1
- package/dist/public/assets/{settings-list-PMi8ZniW.js → settings-list-DU82HNPX.js} +1 -1
- package/dist/public/assets/{settings-logs-view-64Aq1hEw.js → settings-logs-view-DnQ_4O9b.js} +4 -4
- package/dist/public/assets/{settings-mcp-servers-view-B84c4h47.js → settings-mcp-servers-view-C6OZHR3K.js} +1 -1
- package/dist/public/assets/{settings-models-view-DdRC4YXo.js → settings-models-view-CTjnBd74.js} +1 -1
- package/dist/public/assets/{settings-rules-view-CGLh95Ta.js → settings-rules-view-DiTC-cBE.js} +1 -1
- package/dist/public/assets/settings-skills-view-DHoSorOw.js +3 -0
- package/dist/public/assets/{settings-slack-view-OFNrG_DW.js → settings-slack-view-CiuJZ-9i.js} +1 -1
- package/dist/public/assets/{settings-slash-commands-view-DOo0BimH.js → settings-slash-commands-view-CnXff39A.js} +1 -1
- package/dist/public/assets/{settings-statistics-view-DpaSoVqG.js → settings-statistics-view-D8SvAGE_.js} +1 -1
- package/dist/public/assets/{settings-storage-view-DlyXWB__.js → settings-storage-view-CUsa7Lwv.js} +1 -1
- package/dist/public/assets/{settings-subagents-view-D7o69YzB.js → settings-subagents-view-B4HugfzU.js} +1 -1
- package/dist/public/assets/{settings-system-prompt-view-BFGfrXfe.js → settings-system-prompt-view-DNQKxcFg.js} +1 -1
- package/dist/public/assets/{settings-view-Dw1Zh2Qn.js → settings-view-DoZmXguf.js} +2 -2
- package/dist/public/assets/store-BaMSfYoJ.js +9 -0
- package/dist/public/assets/{table-B2TDbGGl.js → table-B3fLagUj.js} +1 -1
- package/dist/public/assets/tasks-view-BaMd8ZM0.js +2 -0
- package/dist/public/assets/{terminal-panel-DBZpuMz9.js → terminal-panel-BjD6z-3y.js} +2 -2
- package/dist/public/assets/{toggle-group-BiUqOiP6.js → toggle-group-5tREtjoW.js} +1 -1
- package/dist/public/assets/{use-active-dock-panel-instance-CcCdDHzX.js → use-active-dock-panel-instance-BSch6-Fx.js} +1 -1
- package/dist/public/assets/{use-installed-ai-files-BNrsyACe.js → use-installed-ai-files-E4BAFIPG.js} +1 -1
- package/dist/public/assets/{use-open-chat-dock-panel-D1D5bnsL.js → use-open-chat-dock-panel-Cr1bQYOH.js} +1 -1
- package/dist/public/assets/{web-C5UYr_H-.js → web-BKpP7kYB.js} +1 -1
- package/dist/public/assets/{web-DaSLtaQ7.js → web-CtDn8Ggo.js} +1 -1
- package/dist/public/assets/{web-Rx_XWVAQ.js → web-DaiDQ9WA.js} +1 -1
- package/dist/public/assets/{web-iwWEZ1P2.js → web-W5CC9Cq4.js} +1 -1
- package/dist/public/index.html +14 -14
- package/package.json +2 -1
- package/dist/public/assets/api-ODizoHnY.js +0 -2
- package/dist/public/assets/browser-tab-Cl9d7ESj.js +0 -12
- package/dist/public/assets/dist-ZlK7I-y-.js +0 -2
- package/dist/public/assets/index-Bmkj1Qwa.js +0 -3380
- package/dist/public/assets/index-DPMRI86E.css +0 -1
- package/dist/public/assets/pull-request-dialog-BkQBaJkw.js +0 -1
- package/dist/public/assets/settings-skills-view-DeVnXDl-.js +0 -3
- package/dist/public/assets/store-Be_7VK0D.js +0 -8
- package/dist/public/assets/tasks-view-FR7c1qFr.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{on as e}from"./index-
|
|
1
|
+
import{on as e}from"./index-DjaVbFDB.js";var t=class extends e{constructor(){super(),this.handleVisibilityChange=()=>{let e={isActive:document.hidden!==!0};this.notifyListeners(`appStateChange`,e),document.hidden?this.notifyListeners(`pause`,null):this.notifyListeners(`resume`,null)},document.addEventListener(`visibilitychange`,this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented(`Not implemented on web.`)}async getInfo(){throw this.unimplemented(`Not implemented on web.`)}async getLaunchUrl(){return{url:``}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented(`Not implemented on web.`)}async toggleBackButtonHandler(){throw this.unimplemented(`Not implemented on web.`)}async getAppLanguage(){return{value:navigator.language.split(`-`)[0].toLowerCase()}}};export{t as AppWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{on as e}from"./index-
|
|
1
|
+
import{on as e}from"./index-DjaVbFDB.js";var t=class extends e{constructor(){super(...arguments),this.wakeLock=null,this._isSupported=typeof navigator<`u`&&`wakeLock`in navigator,this.handleVisibilityChange=()=>{document.visibilityState===`visible`&&this.keepAwake()}}async keepAwake(){this._isSupported||this.throwUnsupportedError(),this.wakeLock&&await this.allowSleep(),this.wakeLock=await navigator.wakeLock.request(`screen`),document.addEventListener(`visibilitychange`,this.handleVisibilityChange),document.addEventListener(`fullscreenchange`,this.handleVisibilityChange)}async allowSleep(){var e;this._isSupported||this.throwUnsupportedError(),(e=this.wakeLock)==null||e.release(),this.wakeLock=null,document.removeEventListener(`visibilitychange`,this.handleVisibilityChange),document.removeEventListener(`fullscreenchange`,this.handleVisibilityChange)}async isSupported(){return{isSupported:this._isSupported}}async isKeptAwake(){return this._isSupported||this.throwUnsupportedError(),{isKeptAwake:!!this.wakeLock}}throwUnsupportedError(){throw this.unavailable(`Screen Wake Lock API not available in this browser.`)}};export{t as KeepAwakeWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Q as e,Z as t,on as n}from"./index-
|
|
1
|
+
import{Q as e,Z as t,on as n}from"./index-DjaVbFDB.js";var r=class extends n{constructor(){super(...arguments),this.selectionStarted=!1}async impact(e){let t=this.patternForImpact(e?.style);this.vibrateWithPattern(t)}async notification(e){let t=this.patternForNotification(e?.type);this.vibrateWithPattern(t)}async vibrate(e){let t=e?.duration||300;this.vibrateWithPattern([t])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(e=t.Heavy){return e===t.Medium?[43]:e===t.Light?[20]:[61]}patternForNotification(t=e.Success){return t===e.Warning?[30,40,30,50,60]:t===e.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(e){if(navigator.vibrate)navigator.vibrate(e);else throw this.unavailable(`Browser does not support the vibrate API`)}};export{r as HapticsWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as e,h as t,m as n,on as r}from"./index-
|
|
1
|
+
import{g as e,h as t,m as n,on as r}from"./index-DjaVbFDB.js";var i=class extends r{async stopAndHideScanner(){console.log(window.OSBarcodeWebScanner),window.OSBarcodeWebScanner&&(await window.OSBarcodeWebScanner.stop(),window.OSBarcodeWebScanner=null),document.getElementById(`cap-os-barcode-scanner-container-dialog`).style.display=`none`}buildScannerElement(){if(document.getElementById(`cap-os-barcode-scanner-container`)){document.getElementById(`cap-os-barcode-scanner-container`).className=`scanner-container-display`;return}let e=document.body.appendChild(document.createElement(`div`));e.id=`cap-os-barcode-scanner-container`;let t=document.createElement(`div`);t.id=`cap-os-barcode-scanner-container-dialog`,t.className=`scanner-dialog`;let n=document.createElement(`div`);n.className=`scanner-dialog-inner`;let r=document.createElement(`span`);r.id=`cap-os-barcode-scanner-close-button`,r.className=`close-button`,r.innerHTML=`×`,n.appendChild(r);let i=document.createElement(`p`);i.innerHTML=` `,n.appendChild(i);let a=document.createElement(`div`);a.className=`scanner-container-full-width`,a.id=`cap-os-barcode-scanner-container-scanner`,n.appendChild(a),t.appendChild(n),e.appendChild(t)}async scanBarcode(r){return this.buildScannerElement(),document.getElementById(`cap-os-barcode-scanner-container-dialog`).style.display=`block`,new Promise((i,a)=>{let o={facingMode:r.cameraDirection===1?`environment`:`user`,hasScannerButton:!1,scanButton:r.scanButton===void 0?!1:r.scanButton,showScanLine:!1,scanInstructions:r.scanInstructions?r.scanInstructions:``,orientation:r.scanOrientation?r.scanOrientation:n.PORTRAIT,showCameraSelection:r.web?.showCameraSelection?r.web.showCameraSelection:!1,typeHint:r.hint===17?void 0:r.hint,scannerFPS:r.web?.scannerFPS?r.web.scannerFPS:50},s=!1,c=document.getElementById(`cap-os-barcode-scanner-close-button`);c&&(c.onclick=async()=>{s||(s=!0,await this.stopAndHideScanner(),a(Error(`Couldn’t scan because the process was cancelled.`)))});let l=document.getElementById(`cap-os-barcode-scanner-container-scanner`);if(!l)throw Error(`Scanner Element is required for web`);window.OSBarcodeWebScanner=new e(l.id,{formatsToSupport:o.typeHint===void 0?void 0:[o.typeHint],verbose:void 0});let u={fps:o.scannerFPS,qrbox:l.getBoundingClientRect().width*(9/16)-10,aspectRatio:16/9,videoConstraints:{focusMode:`continuous`,height:{min:576,ideal:1920},deviceId:void 0,facingMode:o.facingMode}};window.OSBarcodeWebScanner.start({facingMode:o.facingMode},u,(e,n)=>{this.stopAndHideScanner(),i({ScanResult:e,format:n.result.format?.format??t.ALL})},e=>{[`NotFoundException`,`No barcode or QR code detected`,`No MultiFormat Readers were able to detect the code`].find(t=>e.indexOf(t)!==-1)||(this.stopAndHideScanner(),console.error(`[Scanner Web Error] ${e}`),a(e))})})}};export{i as CapacitorBarcodeScannerWeb};
|
package/dist/public/index.html
CHANGED
|
@@ -22,47 +22,47 @@
|
|
|
22
22
|
<meta name="apple-mobile-web-app-title" content="Tarsk" />
|
|
23
23
|
|
|
24
24
|
<title>Tarsk</title>
|
|
25
|
-
<script type="module" crossorigin src="/assets/index-
|
|
25
|
+
<script type="module" crossorigin src="/assets/index-DjaVbFDB.js"></script>
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/react-vendor-Ee0-5T4I.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/utils-CT-Dw22R.js">
|
|
29
|
-
<link rel="modulepreload" crossorigin href="/assets/dist-
|
|
30
|
-
<link rel="modulepreload" crossorigin href="/assets/button-
|
|
29
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-BWuYHVi8.js">
|
|
30
|
+
<link rel="modulepreload" crossorigin href="/assets/button-DeNw35VZ.js">
|
|
31
31
|
<link rel="modulepreload" crossorigin href="/assets/browser-overlay-block-CiDtkfup.js">
|
|
32
32
|
<link rel="modulepreload" crossorigin href="/assets/use-browser-overlay-block-DyprQSIG.js">
|
|
33
33
|
<link rel="modulepreload" crossorigin href="/assets/dist-DIjomljy.js">
|
|
34
34
|
<link rel="modulepreload" crossorigin href="/assets/Combination-lwI_j-mU.js">
|
|
35
35
|
<link rel="modulepreload" crossorigin href="/assets/dist-BZvmHCxP.js">
|
|
36
|
-
<link rel="modulepreload" crossorigin href="/assets/dialog-
|
|
36
|
+
<link rel="modulepreload" crossorigin href="/assets/dialog-Do98zzAW.js">
|
|
37
37
|
<link rel="modulepreload" crossorigin href="/assets/dist-mdooLpmq.js">
|
|
38
38
|
<link rel="modulepreload" crossorigin href="/assets/dist-DiMgghKn.js">
|
|
39
39
|
<link rel="modulepreload" crossorigin href="/assets/tooltip-B6ziVyTv.js">
|
|
40
40
|
<link rel="modulepreload" crossorigin href="/assets/use-toast-xpb5jNtN.js">
|
|
41
41
|
<link rel="modulepreload" crossorigin href="/assets/explorer-tab-context-BxUVwWQQ.js">
|
|
42
|
-
<link rel="modulepreload" crossorigin href="/assets/api-
|
|
43
|
-
<link rel="modulepreload" crossorigin href="/assets/store-
|
|
44
|
-
<link rel="modulepreload" crossorigin href="/assets/chat-dock-context-
|
|
42
|
+
<link rel="modulepreload" crossorigin href="/assets/api-BMo_Lz8f.js">
|
|
43
|
+
<link rel="modulepreload" crossorigin href="/assets/store-BaMSfYoJ.js">
|
|
44
|
+
<link rel="modulepreload" crossorigin href="/assets/chat-dock-context-BXoAs38w.js">
|
|
45
45
|
<link rel="modulepreload" crossorigin href="/assets/main-tab-context-Byl1LybL.js">
|
|
46
46
|
<link rel="modulepreload" crossorigin href="/assets/chunk-QFMPRPBF-COsSkB7x.js">
|
|
47
|
-
<link rel="modulepreload" crossorigin href="/assets/use-open-chat-dock-panel-
|
|
47
|
+
<link rel="modulepreload" crossorigin href="/assets/use-open-chat-dock-panel-Cr1bQYOH.js">
|
|
48
48
|
<link rel="modulepreload" crossorigin href="/assets/query-keys-5QPW6Dv-.js">
|
|
49
|
-
<link rel="modulepreload" crossorigin href="/assets/markdown-renderer-
|
|
50
|
-
<link rel="modulepreload" crossorigin href="/assets/alert-dialog-
|
|
51
|
-
<link rel="modulepreload" crossorigin href="/assets/async-loading-fallback-
|
|
49
|
+
<link rel="modulepreload" crossorigin href="/assets/markdown-renderer-qLede1zH.js">
|
|
50
|
+
<link rel="modulepreload" crossorigin href="/assets/alert-dialog-Cb1PEgra.js">
|
|
51
|
+
<link rel="modulepreload" crossorigin href="/assets/async-loading-fallback-B_JNgWJR.js">
|
|
52
52
|
<link rel="modulepreload" crossorigin href="/assets/dist-OixawqbU.js">
|
|
53
53
|
<link rel="modulepreload" crossorigin href="/assets/scroll-area-nbNFO91g.js">
|
|
54
54
|
<link rel="modulepreload" crossorigin href="/assets/suspense-resource-DnYnmTbs.js">
|
|
55
55
|
<link rel="modulepreload" crossorigin href="/assets/use-suspense-resource-Dkz6ddFN.js">
|
|
56
56
|
<link rel="modulepreload" crossorigin href="/assets/ndjson-stream-DeGpE5o5.js">
|
|
57
|
-
<link rel="modulepreload" crossorigin href="/assets/create-project-workspace-
|
|
57
|
+
<link rel="modulepreload" crossorigin href="/assets/create-project-workspace-BcIx6FNf.js">
|
|
58
58
|
<link rel="modulepreload" crossorigin href="/assets/scenic-chrome-CbN3vum7.js">
|
|
59
59
|
<link rel="modulepreload" crossorigin href="/assets/dist-CWq9XRXF.js">
|
|
60
60
|
<link rel="modulepreload" crossorigin href="/assets/dist-CWnEmdyL.js">
|
|
61
61
|
<link rel="modulepreload" crossorigin href="/assets/dist-DjKXDRW7.js">
|
|
62
|
-
<link rel="modulepreload" crossorigin href="/assets/dist-
|
|
62
|
+
<link rel="modulepreload" crossorigin href="/assets/dist-CjhvxqFU.js">
|
|
63
63
|
<link rel="modulepreload" crossorigin href="/assets/dist-CSssbxDI.js">
|
|
64
64
|
<link rel="modulepreload" crossorigin href="/assets/useInfiniteQuery-DUeUxDcu.js">
|
|
65
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
65
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DhOeeft5.css">
|
|
66
66
|
</head>
|
|
67
67
|
<body class="font-sans antialiased">
|
|
68
68
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tarsk",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.73",
|
|
4
4
|
"description": "CLI for Tarsk - Project Threads Manager",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"lint": "bunx tsc --noEmit",
|
|
35
35
|
"test": "env -u TARSK_DEBUG vp test run",
|
|
36
36
|
"benchmark:observations": "bun scripts/benchmark-observations.ts",
|
|
37
|
+
"benchmark:supersession": "bun scripts/benchmark-supersession.ts",
|
|
37
38
|
"dump:conversation": "bun scripts/dump-conversation.ts",
|
|
38
39
|
"get-recommended-models": "bun scripts/get-recommended-models.ts",
|
|
39
40
|
"web": "MODE=development bun run build:server && bun dist/index.js",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{E as t,jt as n,lt as r,p as i,st as a,x as o}from"./dist-ZlK7I-y-.js";var s=function(e){return e.PACKAGE_MANAGER=`tarsk.create-project.packageManager`,e.COMMIT_METHOD=`tarsk.create-project.commitMethod`,e.TEMPLATE_ID=`tarsk.create-project.templateId`,e.AUTO_GENERATE_COMMIT_MESSAGE=`autoGenerateCommitMessage`,e.AUTO_GENERATE_PR_INFO=`autoGeneratePRInfo`,e.CREATE_BRANCH_AFTER_PR=`createBranchAfterPR`,e.PRIVATE_REPOSITORY_DEFAULT=`privateRepositoryDefault`,e.NEW_CHAT_ON_NEW_BRANCH=`newChatOnNewBranch`,e.SELECTED_MODEL_PREFIX=`selected-model-`,e.SCROLL_POSITION_PREFIX=`scroll-position-`,e.FONT_SCALE=`tarsk.general.fontScale`,e.FROSTED_PANEL_OPACITY=`tarsk.general.frostedPanelOpacity`,e.IMAGE_BACKGROUND=`tarsk.general.imageBackground`,e.WALLPAPER_MODE=`tarsk.general.wallpaperMode`,e.WALLPAPER_COLOR=`tarsk.general.wallpaperColor`,e.BRAND_COLOR=`tarsk.general.brandColor`,e.OPEN_WITH_PROGRAM=`tarsk.general.openWithProgram`,e.SERVER_URL=`tarsk.server.url`,e.SERVER_BIND_MODE=`tarsk.general.serverBindMode`,e.HISTORY_COLUMNS=`tarsk.settings.historyColumns`,e}({}),c=function(e){return e.MESSAGE_HISTORY=`chat_message_history`,e.BASH_COMMAND_DURATIONS=`tarsk.bash-command-durations`,e.SKILL_CATALOG_PREFIX=`tarsk.skills.catalog.`,e.SKILL_SOURCE_SELECTION=`tarsk.skills.selectedSource`,e}({});function l(e){return typeof localStorage>`u`?null:localStorage.getItem(e)}function u(e,t){typeof localStorage>`u`||localStorage.setItem(e,t)}function d(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function f(e,t){typeof sessionStorage>`u`||sessionStorage.setItem(e,t)}function p(e=`npm`){return l(`tarsk.create-project.packageManager`)??e}function ee(e){u(`tarsk.create-project.packageManager`,e)}function m(e=`pull-request`){return l(`tarsk.create-project.commitMethod`)??e}function h(e){u(`tarsk.create-project.commitMethod`,e)}function g(e=``){return l(`tarsk.create-project.templateId`)??e}function _(e){u(`tarsk.create-project.templateId`,e)}function te(e=!1){let t=l(`autoGenerateCommitMessage`);return t===null?e:t===`true`}function ne(e){u(`autoGenerateCommitMessage`,e.toString())}function re(e=!1){let t=l(`autoGeneratePRInfo`);return t===null?e:t===`true`}function ie(e){u(`autoGeneratePRInfo`,e.toString())}function ae(e=!1){let t=l(`createBranchAfterPR`);return t===null?e:t===`true`}function oe(e){u(`createBranchAfterPR`,e.toString())}function se(e=!1){let t=l(`privateRepositoryDefault`);return t===null?e:t===`true`}function ce(e){u(`privateRepositoryDefault`,e.toString())}function le(e=!1){let t=l(`newChatOnNewBranch`);return t===null?e:t===`true`}function ue(e){u(`newChatOnNewBranch`,e.toString())}function de(e){let t=l(`scroll-position-`+e),n=t===null?null:Number(t);return n!==null&&Number.isFinite(n)?n:null}function fe(e,t){u(`scroll-position-`+e,String(t))}function pe(){let e=d(`chat_message_history`);return e?JSON.parse(e):[]}function me(e){let t=pe();e.trim()&&t[t.length-1]!==e&&(t.push(e),f(`chat_message_history`,JSON.stringify(t)))}function he(e){return typeof sessionStorage>`u`?null:sessionStorage.getItem(e)}function ge(e,t){typeof sessionStorage>`u`||sessionStorage.setItem(e,t)}function _e(e=`default`){return he(`tarsk.skills.selectedSource`)??e}function ve(e){ge(`tarsk.skills.selectedSource`,e)}function v(e){return`tarsk.skills.catalog.${e}`}function ye(e){let t=he(v(e));if(!t)return null;try{return JSON.parse(t)}catch{return null}}function be(e,t){ge(v(e),JSON.stringify(t))}function xe(e){typeof sessionStorage>`u`||sessionStorage.removeItem(v(e))}var y=`tarsk.skills.customSources`;function Se(){if(typeof localStorage>`u`)return[];let e=localStorage.getItem(y);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.id==`string`&&typeof e.title==`string`&&typeof e.url==`string`):[]}catch{return[]}}function Ce(){typeof localStorage>`u`||localStorage.removeItem(y)}function we(e=100){let t=l(`tarsk.general.fontScale`);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=50&&e<=300)return e}return e}function Te(e){u(`tarsk.general.fontScale`,String(e))}function Ee(e=80){let t=l(`tarsk.general.frostedPanelOpacity`);if(t!==null){let e=Number(t);if(Number.isFinite(e)&&e>=60&&e<=100)return e}return e}function De(e){u(`tarsk.general.frostedPanelOpacity`,String(e))}var Oe=new Set([`image`,`background`,`color`]),b=/^#[0-9a-fA-F]{6}$/,x=`#1f2937`,S=`#82c309`;function ke(e){return e!==null&&Oe.has(e)}function Ae(e=`background`){let t=l(`tarsk.general.wallpaperMode`);if(ke(t))return t;if(t===`brand`)return`background`;let n=l(`tarsk.general.imageBackground`);return n===`false`?`background`:n===`true`?`image`:e}function je(e){u(`tarsk.general.wallpaperMode`,e)}function Me(e=x){let t=l(`tarsk.general.wallpaperColor`);return t!==null&&b.test(t)?t:e}function Ne(e){b.test(e)&&u(`tarsk.general.wallpaperColor`,e.toLowerCase())}function Pe(e=S){let t=l(`tarsk.general.brandColor`);return t!==null&&b.test(t)?t:e}function Fe(e){b.test(e)&&u(`tarsk.general.brandColor`,e.toLowerCase())}function Ie(e=`VS Code`){return l(`tarsk.general.openWithProgram`)??e}function Le(e){u(`tarsk.general.openWithProgram`,e)}function Re(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.fetchedAt==`number`&&(t.serverBindMode===`local`||t.serverBindMode===`network`)&&Array.isArray(t.networkAddresses)&&t.networkAddresses.every(e=>typeof e==`string`)}function ze(){let e=l(`tarsk.general.serverBindMode`);if(!e)return null;try{let t=JSON.parse(e);return Re(t)?t:null}catch{return null}}function Be(e){u(`tarsk.general.serverBindMode`,JSON.stringify({...e,fetchedAt:e.fetchedAt??Date.now()}))}function C(){return typeof window>`u`?null:window.Capacitor?.getPlatform?.()??null}function Ve(){return E()&&C()===`ios`}function w(){return l(s.SERVER_URL)}function He(e){u(s.SERVER_URL,e)}function Ue(e){try{return new URL(e).hostname}catch{return``}}function T(e){let t=e.trim();if(!t)return``;let n=t.replace(/^https?:\/\//,``).split(`/`)[0]?.split(`:`)[0]??``;return n?`http://${n}:641`:``}function E(){if(typeof window>`u`)return!1;if(window.Capacitor?.isNativePlatform?.())return!0;let e=window.location.protocol;return e===`capacitor:`||e===`ionic:`||e===`file:`}function We(){let e=w();if(e){let t=Ue(e);if(t)return t}return E()?``:document.location.hostname}async function Ge(e){try{return(await fetch(`${e.replace(/\/$/,``)}/health`,{method:`GET`})).ok}catch{return!1}}function Ke(e){let t=T(e);if(t){if(E()){He(t),window.location.reload();return}window.location.assign(t)}}function D(){return typeof window<`u`&&`__electrobunWebviewId`in window}function qe(){return typeof document<`u`&&document.location.port===`8100`}function O(){if(typeof document>`u`)return null;let{protocol:e,hostname:t,port:n,host:r,origin:i}=document.location;return e!==`http:`&&e!==`https:`?null:i||`${e}//${r??(n?`${t}:${n}`:t)}`}function k(){if(typeof document>`u`)return`http://localhost:641`;let{hostname:e,port:t}=document.location;return t===`8100`?`http://${e}:462`:O()||`http://${e}:641`}function A(){if(D()){let e=O();if(e)return e}if(!E())return k();let e=w();return e?e.replace(/\/$/,``):k()}function j(e){let t=e.startsWith(`/`)?e:`/${e}`;return`${A()}${t}`}function M(e){if(!e)return`Unknown error`;if(typeof e.error==`string`)return e.error.trim()||`Unknown error`;if(e.error&&typeof e.error==`object`){let t=e.error.message;if(typeof t==`string`&&t.trim())return t.trim();let n=e.error.details;return typeof n==`string`&&n.trim()?n.trim():`Unknown error`}return`Unknown error`}async function N(e){try{return M(await e.json())}catch{}return e.statusText||`Unknown error`}function P(e,t,n){let r=Error(e);return n?.error&&typeof n.error==`object`&&(r.details=n.error.details,r.code=n.error.code),r}async function F(e){let t;try{t=await e.json()}catch{}throw P(M(t)||e.statusText||`Unknown error`,e,t)}async function I(e,t){let n=await fetch(j(e),{...t,method:`GET`});if(!n.ok){let e=await N(n);throw Error(e)}return n.blob()}async function L(e,t){let n=await fetch(j(e),{...t,method:`GET`});if(!n.ok){let e=await N(n);throw Error(e)}return n.json()}async function R(e,t,n){let r=await fetch(j(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e=await N(r);throw Error(e)}return r.json()}async function Je(e,t,n){let r=await fetch(j(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e=await N(r);throw Error(e)}return r.blob()}async function Ye(e,t,n){let r=await fetch(j(e),{...n,method:`POST`,headers:{"Content-Type":`application/octet-stream`,...n?.headers},body:t});if(!r.ok){let e=await N(r);throw Error(e)}return r.json()}async function z(e,t,n){let r=await fetch(j(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e=await N(r);throw Error(e)}return r.json()}async function Xe(e,t,n){let r=await fetch(j(e),{...n,method:`PATCH`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e=await N(r);throw Error(e)}return r.json()}async function Ze(e,t,n){let r=await fetch(j(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e=await N(r);throw Error(e)}return r.body}async function B(e,t){let n=await fetch(j(e),{...t,method:`DELETE`});if(!n.ok){let e=await N(n);throw Error(e)}if(n.status!==204)return n.json()}async function Qe(e,t){let n=await fetch(j(e),{...t,method:`DELETE`});if(!n.ok){let e=await N(n);throw Error(e)}return n.body}async function V(e,t,n){let r=await fetch(j(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0,signal:n?.signal});return r.ok||await F(r),r.body}async function $e(e,t){let n=await fetch(j(e),{...t,method:`GET`});return n.ok||await F(n),n.body}async function H(e,t,n){let r=await fetch(j(e),{...n,method:`POST`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw P(M(e)||r.statusText||`Unknown error`,r,e)}return r.json()}async function et(e,t,n){let r=await fetch(j(e),{...n,method:`PUT`,headers:{"Content-Type":`application/json`,...n?.headers},body:t?JSON.stringify(t):void 0});if(!r.ok){let e;try{e=await r.json()}catch{}throw P(M(e)||r.statusText||`Unknown error`,r,e)}return r.json()}function U(...e){return e.map(e=>encodeURIComponent(String(e))).join(`/`)}var W=o(`gitops.ttl-cache`),G=new class{cache=new Map;inFlightRequests=new Map;generations=new Map;async get(e,t,n){let r=e.startsWith(`unified-git-status-`),i=r?performance.now():0,a=this.inFlightRequests.get(e);if(a)return r&&W.debug(`in-flight-reuse`,{key:e}),a;let o=this.cache.get(e);if(o&&Date.now()<o.expires){if(r){let t=Math.round(performance.now()-i);W.debug(`cache hit`,{key:e,duration:t})}return o.data}r&&W.debug(`cache miss, fetching`,{key:e});let s=this.generations.get(e)??0,c=t().then(t=>{if((this.generations.get(e)??0)===s){if(this.cache.set(e,{data:t,expires:Date.now()+n}),r){let t=Math.round(performance.now()-i);W.debug(`stored in cache`,{key:e,duration:t})}}else r&&W.debug(`skipped stale cache write`,{key:e});return t}).finally(()=>{this.inFlightRequests.get(e)===c&&this.inFlightRequests.delete(e)});return this.inFlightRequests.set(e,c),c}getSync(e){let t=this.cache.get(e);if(t&&Date.now()<t.expires)return t.data}bumpGeneration(e){this.generations.set(e,(this.generations.get(e)??0)+1)}invalidate(e){this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}invalidatePattern(e){let t=[];for(let n of this.cache.keys())e.test(n)&&t.push(n);for(let n of this.inFlightRequests.keys())e.test(n)&&!t.includes(n)&&t.push(n);for(let e of t)this.cache.delete(e),this.inFlightRequests.delete(e),this.bumpGeneration(e)}clear(){for(let e of new Set([...this.cache.keys(),...this.inFlightRequests.keys(),...this.generations.keys()]))this.bumpGeneration(e);this.cache.clear(),this.inFlightRequests.clear()}};function tt(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.rel=`noopener`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function nt(e,t=`image/png`){let n=atob(e),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);return new Blob([r],{type:t})}function rt(e){let t=e.indexOf(`,`),n=e.slice(0,t);return nt(e.slice(t+1),n.match(/^data:([^;]+)/)?.[1]??`image/png`)}async function it(e){if(e.imageData)return nt(e.imageData);if(e.imageUrl){if(e.imageUrl.startsWith(`data:`))return rt(e.imageUrl);let t=r(e.imageUrl,A()),n=await fetch(t);if(!n.ok)throw Error(`Failed to fetch image: ${n.status}`);return n.blob()}throw Error(`imageUrl or imageData is required`)}function at(e){return!e.imageUrl||a(e.imageUrl)?e:{...e,imageUrl:r(e.imageUrl,A())}}async function ot(e){let t=e.filename??`generated-image-${Date.now()}.png`;try{return tt(await it(e),t),{path:t}}catch{if(!e.imageUrl||e.imageUrl.startsWith(`data:`))throw Error(`imageUrl or imageData is required`);let n=document.createElement(`a`);return n.href=e.imageUrl,n.download=t,n.target=`_blank`,n.rel=`noopener noreferrer`,document.body.appendChild(n),n.click(),document.body.removeChild(n),{path:t}}}async function st(e){let t=await it(e);if(!navigator.clipboard?.write)throw Error(`Clipboard API not available`);let n=t.type||`image/png`,r=t.type?t:new Blob([t],{type:n});await navigator.clipboard.write([new ClipboardItem({[n]:r})])}async function ct(e){return D()?R(`api/image/save`,at(e)):ot(e)}async function lt(e){if(D()){await R(`api/image/clipboard`,at(e));return}await st(e)}function ut(e){let t=e.trim().toLowerCase();return t===`load failed`||t.includes(`failed to fetch`)||t.includes(`network error`)||t.includes(`network connection was lost`)||t.includes(`networkrequestfailed`)||t.includes(`networkrequest failed`)||t.includes(`socket is not connected`)}function dt(e){if(e instanceof Error&&`code`in e&&typeof e.code==`string`)return e.code}function ft(e){if(dt(e)===`THREAD_BUSY`)return!0;if(!(e instanceof Error))return!1;let t=e.message.toLowerCase();return t.includes(`already processing a message`)||t.includes(`already being processed`)||t.includes(`multiple chat windows are processing`)}function pt(e,t){return ft(e)?t?.trim()?!0:e instanceof Error?!e.message.toLowerCase().includes(`multiple chat windows`):!1:!1}var mt=50;function ht(e,t,n,r,a){let o=e.getReader(),s=!1;function c(){s=!0,o.cancel().catch(()=>{})}let l=new TextDecoder,u=``,d=0;function f(e){let t=e.content?.trim();if(t)return i(t);let n=e.error?.message?.trim();if(n)return i(n);let r=e.message?.trim();return r?i(r):`Unknown error`}function p(e){if(!e)return!1;let t=e.trim();return t.length>200?!1:[/^Cannot read properties/i,/^Error:/i,/^TypeError:/i,/^ReferenceError:/i,/^SyntaxError:/i,/^failed to/i,/^error:/i,/^forbidden/i,/^unauthorized/i].some(e=>e.test(t))}async function ee(){d+=1,!(d<mt)&&(d=0,await new Promise(e=>{setTimeout(e,0)}))}async function m(e){return e.type===`ping`?`continue`:e.type===`error`?(r(f(e)),n(),`stop`):e.type===`message`?(a?.({role:e.role??`assistant`,content:e.content??``,isThinking:e.isThinking}),`continue`):e.type===`complete`?(n(),`stop`):e.type===`result`&&p(e.content)?(r(i(e.content??`Unknown error`)),n(),`stop`):(t(e),await ee(),`continue`)}async function h(){if(!u.trim())return`continue`;try{return await m(JSON.parse(u))}catch{return u.trim()&&t({type:`result`,content:u}),`continue`}}async function g(e){let t=e.trim();if(!t)return`continue`;try{return await m(JSON.parse(t))}catch{return`continue`}}async function _(){try{for(;!s;){let{done:e,value:t}=await o.read();if(e||s){if(!s&&e){if(await h()===`stop`)return;n()}break}u+=l.decode(t,{stream:!0});let r=u.split(`
|
|
2
|
-
`);u=r.pop()??``;for(let e of r)if(s||await g(e)===`stop`)return}}catch(e){s||(r(e instanceof Error?e.message:`Stream error`),n())}}return _(),c}var gt=o(`gitops.api`);async function _t(e,t=!1,n=!1){let r=new URLSearchParams;t&&r.set(`fresh`,`true`),n&&r.set(`asyncRefresh`,`true`);let i=r.toString(),a=i?`api/git/unified-status/${U(e)}?${i}`:`api/git/unified-status/${U(e)}`,o=performance.now();gt.debug(`getUnifiedGitStatus start`,{threadId:e,fresh:t});try{return await L(a)}finally{let n=Math.round(performance.now()-o);gt.debug(`getUnifiedGitStatus end`,{threadId:e,fresh:t,duration:n})}}async function vt(e,t,n){return(await R(`api/git/generate-commit-message/${U(e)}`,{model:t,provider:n})).message}async function yt(e,t){await R(`api/git/commit/${U(e)}`,{message:t})}async function bt(e){await R(`api/git/push/${U(e)}`)}async function xt(e){await R(`api/git/pull/${U(e)}`)}async function St(e){return R(`api/git/sync-branch/${U(e)}`,{})}async function Ct(e,t,n){return R(`api/git/generate-pr-info/${U(e)}`,{model:t,provider:n})}async function wt(e,t,n,r){return R(`api/git/create-pr/${U(e)}`,{title:t,description:n,baseBranch:r})}async function Tt(e){await R(`api/git/fetch/${U(e)}`)}async function Et(e,t,n){return R(`api/git/create-branch/${U(e)}`,{baseBranch:t,branchName:n})}async function Dt(e,t){return R(`api/git/revert-file/${U(e)}`,{filePath:t})}async function Ot(e,t=50){return(await L(`api/git/log/${U(e)}?limit=${t}`)).commits}async function kt(e){return L(`api/git/pr-status/${U(e)}`)}async function At(e,t,n,r){return R(`api/git/create-repo/${U(e)}`,{repoName:t,description:n,isPrivate:r})}async function jt(e,t){return R(`api/git/checkpoint/${U(e)}`,{messageId:t})}async function Mt(e,t){return R(`api/git/checkpoint-restore/${U(e)}`,{checkpointRef:t})}async function Nt(e){return L(`api/git/diff/${U(e)}`)}async function Pt(e,t,n){return I(`api/git/media/${U(e)}?path=${encodeURIComponent(t)}&version=${n}`)}async function Ft(){return(await L(`api/skills/popular`)).skills??[]}async function It(){return(await L(`api/skills/sources`)).sources??[]}async function Lt(e){return(await L(`api/skills/catalog?${new URLSearchParams({sourceId:e}).toString()}`)).skills??[]}async function Rt(e,t){return R(`api/skills/sources/verify`,{title:e,url:t})}async function zt(e,t,n){return z(`api/skills/sources/${U(e)}`,{title:t,url:n})}async function Bt(e){await B(`api/skills/sources/${U(e)}`)}async function Vt(e){return(await R(`api/skills/sources/import`,{sources:e})).sources??[]}async function Ht(e,t){return L(`api/skills/catalog/files?${new URLSearchParams({sourceId:e,skillId:t}).toString()}`)}async function Ut(e,t,n){return L(`api/skills/catalog/file?${new URLSearchParams({sourceId:e,skillId:t,relativePath:n}).toString()}`)}async function Wt(){return(await L(`api/agents/popular`)).agents??[]}async function Gt(){return(await L(`api/rules/popular`)).rules??[]}async function Kt(){return(await L(`api/slash-commands/popular`)).commands??[]}async function qt(e,t,n,r,i){return R(`api/threads/${U(e)}/ai-files/github-folder`,{gitHubRepo:t,gitHubFolder:n,destPath:r,gitHubRef:i})}async function Jt(e,t,n,r){return R(`api/threads/${U(e)}/ai-files/catalog-skill`,{sourceId:t,skillId:n,destPath:r})}var Yt=e({EmptyBalanceError:()=>K,LOW_BALANCE_THRESHOLD:()=>50,acknowledgeBrowserJsStarted:()=>_i,applyAppUpdate:()=>ui,authorizeMCPOAuth:()=>Ti,checkBalance:()=>Zt,checkForAppUpdate:()=>li,checkGitInstalled:()=>Xr,checkVpInstalled:()=>$t,clearChatHistory:()=>ar,clearConversationHistory:()=>ii,clearLogFeed:()=>gn,clearProjectTaskModifications:()=>Mn,clearSlackTokens:()=>xn,compactChat:()=>or,completeOnboarding:()=>Zr,copyImageToClipboard:()=>Tr,createFolderProject:()=>In,createProject:()=>Nn,createProjectFromZip:()=>Rn,createScaffoldedProject:()=>tn,createSlackBinding:()=>Sn,createSlashCommand:()=>ni,createThread:()=>Kn,createThreadAgent:()=>Pi,createThreadSkill:()=>Ni,createUserTask:()=>Vr,deleteAccount:()=>dn,deleteCommand:()=>Nr,deleteMCPServer:()=>Si,deleteProject:()=>Gn,deleteProjectAIFile:()=>ki,deleteSlackBinding:()=>Cn,deleteSlashCommand:()=>ri,deleteThread:()=>qn,deleteThreadAIFile:()=>$,deleteUserTask:()=>Hr,disableImageModel:()=>Cr,disableModel:()=>_r,discoverMCPServers:()=>Ci,enableImageModel:()=>Sr,enableModel:()=>gr,exportProjectPlugin:()=>Dr,fetchAllAvailableModels:()=>hr,fetchAvailableImageModels:()=>br,fetchAvailableModels:()=>mr,fetchPendingAskUserQuestions:()=>di,fixComments:()=>Zn,freeDevServerPort:()=>Kr,generateImage:()=>wr,generateThreadTitle:()=>Yn,generateWorkspaceHandoff:()=>sr,getAccountInfo:()=>q,getAccountSettings:()=>mn,getAllEnabledImageModels:()=>xr,getAllEnabledModels:()=>yr,getAvailablePrograms:()=>En,getChatHistory:()=>$n,getCliProcesses:()=>Dn,getContextBreakdown:()=>si,getConversationFolderPath:()=>tr,getConversationUsage:()=>oi,getGitUser:()=>X,getGitUserName:()=>An,getLatencyStatistics:()=>pn,getMCPConfig:()=>bi,getMCPOAuthStatus:()=>Ei,getObservationPage:()=>er,getOnboardingStatus:()=>Yr,getPackageScripts:()=>Pr,getPopularMCPServers:()=>wi,getProcessingState:()=>Y,getProcessingThreads:()=>kn,getProject:()=>zn,getProjectAIFiles:()=>Oi,getProjectEnvVars:()=>Bn,getProjectScripts:()=>Ir,getProjectSystemPrompt:()=>Jr,getProjectWindowState:()=>Vn,getProjects:()=>jn,getProviderCredits:()=>on,getProviderLogoCdnUrl:()=>an,getProviderLogoUrl:()=>rn,getProviders:()=>nn,getRecentConversations:()=>ai,getRecommendedModels:()=>$r,getScaffoldTemplates:()=>Qt,getSessionToolLearnings:()=>nr,getSlackManifest:()=>yn,getSlackSettings:()=>hn,getSlashCommands:()=>ei,getSlashCommandsAndSkills:()=>ti,getSpendSummary:()=>J,getThread:()=>zr,getThreadAIFile:()=>ji,getThreadAIFiles:()=>Ai,getThreadFiles:()=>Fr,getToolDefinitionsBreakdown:()=>ci,getUserTasks:()=>Br,installProjectPluginImport:()=>kr,installVp:()=>en,invalidateProjectsCache:()=>Z,isDevServerRunning:()=>qr,killCliProcess:()=>On,openExternalUrl:()=>un,openFolderProject:()=>Pn,openPathProject:()=>Fn,openProjectWith:()=>lr,openThreadWith:()=>ur,postClientLog:()=>vn,previewProjectPluginImport:()=>Or,processVoiceTranscript:()=>Tn,quitAccount:()=>fn,refreshModels:()=>jr,replaceUniqueProjectText:()=>Un,reportBrowserActionResult:()=>yi,reportBrowserWebviewReady:()=>vi,resetOnboarding:()=>Qr,revokeMCPOAuth:()=>Di,routeChatPrompt:()=>Xn,runProjectScript:()=>Lr,saveCommand:()=>Mr,saveImageToDownloads:()=>Er,saveMCPServer:()=>xi,saveModelSettings:()=>vr,saveProjectWindowState:()=>Hn,saveProviderEnvironment:()=>cn,saveProviderKey:()=>sn,saveThreadAIFile:()=>Mi,selectThread:()=>Qn,sendChatMessage:()=>rr,setSlackTokens:()=>bn,startDevServer:()=>Wr,stopChatGeneration:()=>cr,stopDevServer:()=>Gr,stopProjectScript:()=>Rr,streamLogFeed:()=>_n,submitAskUserAnswer:()=>fi,submitBrowserJsResult:()=>gi,submitSeatbeltEscalationResponse:()=>mi,submitShellPermissionResponse:()=>pi,submitWebFetchPermissionResponse:()=>hi,subscribeToChatStream:()=>ir,suggestRunCommand:()=>Ur,syncProjectEnvVars:()=>Wn,ttlCache:()=>G,updateAccountSettings:()=>wn,updateProject:()=>Q,updateProjectName:()=>pr,updateProjectOpenWith:()=>dr,updateProjectSetupScript:()=>fr,updateThread:()=>Jn,uploadProjectPlugin:()=>Ar}),Xt=o(`gitops.api`),K=class extends Error{constructor(){super(`No prompts remaining`),this.name=`EmptyBalanceError`}};async function Zt(){let{plan:e,promptsRemaining:t}=await q();return e===`unlimited-pro`?{isEmpty:!1,isLow:!1}:{isEmpty:t<=0,isLow:t>0&&t<=50}}async function Qt(){return L(`api/scaffold/templates`)}async function $t(){return(await L(`api/scaffold/check-vp`)).installed}async function en(){return R(`api/scaffold/install-vp`,{})}async function tn(e,t,n,r){return V(`api/scaffold`,{projectName:e,templateId:t,packageManager:n},{signal:r})}async function nn(){return G.get(`providers`,async()=>L(`api/providers`),6e4)}function rn(e){return`${A()}/api/providers/${U(e)}/logo`}function an(e){return`https://models.tarsk.io/svg/${U(e)}.svg`}async function on(e){return G.get(`provider-credits-${e}`,async()=>L(`api/providers/${U(e)}/credits`),3e4)}async function sn(e,t){await R(`api/providers/keys`,{providerName:e,apiKey:t}),G.invalidate(`providers`)}async function cn(e){await R(`api/providers/env`,{values:e}),G.invalidate(`providers`)}function ln(e){return typeof window>`u`?!1:window.open(e,`_blank`,`noopener,noreferrer`)!==null}async function un(e){if(typeof window<`u`&&!D()){ln(e);return}try{await R(`api/providers/open-external`,{url:e})}catch(t){if(ln(e))return;throw t instanceof Error?t:Error(`Failed to open URL`)}}async function q(){return L(`api/account/info`)}async function dn(){return R(`api/account/delete`,{})}async function fn(){return R(`api/account/quit`,{})}async function J(){return L(`api/account/spend`)}async function pn(){return L(`api/account/statistics`)}async function mn(){return L(`api/account/settings`)}async function hn(){return L(`api/slack/settings`)}async function gn(){await B(`api/logs`)}async function _n(e){return $e(`api/logs/stream`,e)}async function vn(e){try{await R(`api/logs`,e)}catch(e){Xt.debug(`Failed to post client log entry`,e)}}async function yn(){return L(`api/slack/manifest`)}async function bn(e){return z(`api/slack/tokens`,e)}async function xn(){await B(`api/slack/tokens`)}async function Sn(e){return R(`api/slack/bindings`,e)}async function Cn(e,t){await B(`api/slack/bindings/${U(e)}/${U(t)}`)}async function wn(e){return z(`api/account/settings`,e)}async function Tn(e,t){return(await R(`api/voice-model/process-transcript`,{text:e,threadId:t?.threadId,provider:t?.provider,model:t?.model})).text}async function En(){return G.get(`available-programs`,async()=>(await L(`api/programs`)).programs??[],3e5)}async function Dn(){return(await L(`api/processes`)).processes}async function On(e){await R(`api/processes/${U(e)}/kill`)}async function Y(){return G.get(`processing-threads`,async()=>{let e=await L(`api/threads/processing`);return{processingThreadIds:e.processingThreadIds??[],processingRuns:e.processingRuns??[]}},0)}async function kn(){return(await Y()).processingThreadIds}async function X(){return G.get(`git-user`,async()=>{try{let e=await L(`api/git/user`);return{name:e.name??``,email:e.email??``}}catch{return{name:``,email:``}}},6e5)}async function An(){return(await X()).name}async function jn(){return G.get(`projects`,async()=>{let e=await L(`api/projects`),r=Array.isArray(e)?e:e.projects??[],i=Array.isArray(e)?null:e.cloneRootPath??null;return{projects:(r||[]).map(e=>{let t=e;return{projectId:t.projectId??t.id,name:t.name,gitUrl:t.gitUrl,projectPath:t.projectPath??t.path,threads:t.threads??[],commands:t.commands??[],setupScript:t.setupScript,validationScript:t.validationScript,runCommand:t.runCommand,planPrompt:t.planPrompt,testPrompt:t.testPrompt,reviewPrompt:t.reviewPrompt,customSystemPrompt:t.customSystemPrompt,useCustomSystemPrompt:!!t.useCustomSystemPrompt,allowAllCommands:t.allowAllCommands!==!1,allowedCommandPatterns:t.allowedCommandPatterns??[],modelAliases:t.modelAliases??void 0,defaultChatMode:n(t.defaultChatMode)?t.defaultChatMode:void 0,disabledTools:t.disabledTools??void 0,smartJsEnabled:t.smartJsEnabled===!0,useBuiltInBrowser:t.useBuiltInBrowser!==!1,projectIcon:t.projectIcon,tasksModifiedCount:Number(t.tasksModifiedCount)||0}}).map(e=>{let n=(e.threads||[]).map(e=>{let n=e,r=n.threadId??n.id;return{threadId:r,title:n.title??r,path:n.path??``,currentBranch:n.currentBranch??``,isSelected:!!n.isSelected,model:n.model??void 0,modelProvider:n.modelProvider??void 0,gitStatusDot:t(n.gitStatusDot)}});return{...e,threads:n}}),cloneRootPath:i}},3e4)}async function Mn(e){await R(`api/projects/${U(e)}/tasks/clear-modifications`)}async function Nn(e,t,n){return V(`api/projects`,{gitUrl:e,commitMethod:t},{signal:n})}async function Pn(e){return V(`api/projects/open-folder`,{},{signal:e})}async function Fn(e,t){return V(`api/projects/open-path`,{path:e},{signal:t})}async function In(e,t){return V(`api/projects/new-folder`,{projectName:e},{signal:t})}function Ln(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>{let e=typeof r.result==`string`?r.result:``,n=e.indexOf(`,`);t(n>=0?e.slice(n+1):e)},r.onerror=()=>n(r.error),r.readAsDataURL(e)})}async function Rn(e,t,n,r){return V(`api/projects/from-zip`,{data:await Ln(e),name:t,overrideProjectId:n},{signal:r})}async function zn(e){return G.get(`project-${e}`,async()=>{let t=await L(`api/projects/${U(e)}`);return{...t,projectPath:t.projectPath??t.path}},3e4)}async function Bn(e){return L(`api/projects/${U(e)}/env-vars`)}async function Vn(e){return(await L(`api/projects/${U(e)}/window-state`)).state}async function Hn(e,t){await et(`api/projects/${U(e)}/window-state`,{state:t})}async function Un(e,t,n){return R(`api/projects/${U(e)}/replace-unique-text`,{oldText:t,newText:n})}async function Wn(e,t){await z(`api/projects/${U(e)}/env-vars`,{vars:t})}async function Gn(e){await B(`api/projects/${U(e)}`),G.invalidate(`projects`)}function Z(e){G.invalidate(`projects`),e&&G.invalidate(`project-${e}`)}async function Kn(e,t){return V(`api/threads`,{projectId:e,title:t})}async function qn(e,t){let n=await Qe(`api/threads/${U(t)}?stream=true`);return G.invalidate(`projects`),n}async function Jn(e,t){await Xe(`api/threads/${U(e)}`,t),G.invalidate(`thread-${e}`),(`model`in t||`modelProvider`in t||`chatTitles`in t||`diffComments`in t)&&G.invalidate(`projects`)}async function Yn(e,t,n){return(await R(`api/threads/${U(e)}/generate-title`,{prompt:t,provider:n?.provider,model:n?.model})).title}async function Xn(e,t){return(await R(`api/chat/${U(e)}/auto-route`,{prompt:t})).decision}async function Zn(e,t){return R(`api/threads/${U(e)}/fix-comments`,{comments:t})}async function Qn(e,t){await R(`api/threads/${U(t)}/select`)}async function $n(e,t){let n=t?`?conversationId=${encodeURIComponent(t)}`:``;return{threadId:e,messages:await L(`api/threads/${U(e)}/messages${n}`)}}async function er(e,t,n=1,r=2e3){let i=new URLSearchParams({offset:String(n),limit:String(r)});return L(`api/threads/${U(e)}/observations/${U(t)}?${i}`)}async function tr(e){return(await L(`api/threads/${U(e)}/conversation-folder-path`)).path}async function nr(e){return(await L(`api/threads/${U(e)}/session-learnings`)).learnings}async function rr(e,t,n,r=[],i,a,o,s,c,l,u){let{isEmpty:d}=await Zt();if(d)throw new K;return V(`api/chat`,{threadId:e,content:t,model:n,provider:a,planMode:o,ralphMode:s,orchestrateMode:u,checkpointRef:c,conversationId:l,attachments:r.map(e=>({name:e.fileName,content:e.content.split(`,`)[1]||e.content,size:0,mimeType:e.mimeType||`application/octet-stream`}))},{signal:i})}async function ir(e,t,n){let r=new URLSearchParams({replay:`compact`}),i=n?.trim();return i&&r.set(`conversationId`,i),$e(`api/chat/subscribe/${U(e)}?${r.toString()}`,{signal:t})}async function ar(e){let t=await B(`api/chat/${U(e)}`);return G.invalidate(`thread-${e}`),t?.conversationId||``}async function or(e,t){return H(`api/chat/${U(e)}/compact`,t)}async function sr(e,t){let n=await R(`api/chat/${U(e)}/workspace-handoff`,t);return typeof n.brief==`string`?n.brief:``}async function cr(e,t){try{let n=new URLSearchParams,r=t?.conversationId?.trim();r&&n.set(`conversationId`,r),t?.all&&n.set(`all`,`1`);let i=n.size>0?`?${n.toString()}`:``;await R(`api/chat/stop/${U(e)}${i}`)}catch{}}async function Q(e,t){return t.runNow&&t.setupScript?Ze(`api/projects/${U(e)}`,t):(await et(`api/projects/${U(e)}`,t),Z(e),null)}async function lr(e,t){await H(`api/projects/${U(e)}/open`,{program:t})}async function ur(e,t){await H(`api/threads/${U(e)}/open`,{program:t})}async function dr(e,t){await Q(e,{program:t})}async function fr(e,t,n){return Q(e,{setupScript:t,runNow:n})}async function pr(e,t){await Q(e,{name:t})}async function mr(e,t){let n=new URLSearchParams({provider:e});t!==void 0&&n.set(`supportedTools`,t?`true`:`false`),n.set(`useCase`,`coding`);let r=`available-models-${n.toString()}`;return G.get(r,async()=>{let e=await L(`api/models?${n.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function hr(e){let t=new URLSearchParams({useCase:e}),n=`available-models-all-${e}`;return G.get(n,async()=>(await L(`api/models/all?${t.toString()}`)).providers??{},12e4)}async function gr(e,t){await R(`api/models/${U(e,t)}/enable`),G.invalidate(`enabled-models`),G.invalidatePattern(/^available-models-/),G.invalidatePattern(/^available-image-models-/)}async function _r(e,t){await R(`api/models/${U(e,t)}/disable`),G.invalidate(`enabled-models`),G.invalidatePattern(/^available-models-/),G.invalidatePattern(/^available-image-models-/)}async function vr(e,t,n){await R(`api/models/${U(e,t)}/settings`,n),G.invalidatePattern(/^available-models-/),G.invalidate(`enabled-models`)}async function yr(){return G.get(`enabled-models`,async()=>(await L(`api/models/enabled?useCase=coding`)).enabledModels??{},12e4)}async function br(e){let t=new URLSearchParams({provider:e,useCase:`image`}),n=`available-image-models-${e}`;return G.get(n,async()=>{let e=await L(`api/models?${t.toString()}`);return{models:e.models??[],enabledModelIds:e.enabledModelIds??[]}},12e4)}async function xr(){return G.get(`enabled-image-models`,async()=>(await L(`api/models/enabled?useCase=image`)).enabledModels??{},12e4)}async function Sr(e,t){await R(`api/models/${U(e,t)}/enable?useCase=image`),G.invalidate(`enabled-image-models`),G.invalidatePattern(/^available-models-/),G.invalidatePattern(/^available-image-models-/)}async function Cr(e,t){await R(`api/models/${U(e,t)}/disable?useCase=image`),G.invalidate(`enabled-image-models`),G.invalidatePattern(/^available-models-/),G.invalidatePattern(/^available-image-models-/)}async function wr(e,t,n,r){return R(`api/image/generate`,{prompt:e,model:t,provider:n,threadId:r})}async function Tr(e){await lt(e)}async function Er(e){return ct(e)}async function Dr(e,t){return Je(`api/projects/${U(e)}/plugin-export`,t)}async function Or(e,t){return R(`api/projects/${U(e)}/plugin-import/preview`,{url:t})}async function kr(e,t){return R(`api/projects/${U(e)}/plugin-import`,t)}async function Ar(e,t){return R(`api/projects/${U(e)}/plugin-upload`,t)}async function jr(e){let t=await R(`api/models/${U(e)}/refresh`);return G.invalidatePattern(/^available-models-/),G.invalidatePattern(/^available-image-models-/),G.invalidate(`enabled-models`),G.invalidate(`enabled-image-models`),t.modelCount??0}async function Mr(e,t){await R(`api/projects/${U(e)}/commands`,t)}async function Nr(e,t){await B(`api/projects/${U(e)}/commands/${U(t)}`)}async function Pr(e){return L(`api/projects/${U(e)}/package-scripts`)}async function Fr(e){return L(`api/threads/${U(e)}/files`)}async function Ir(e){return(await L(`api/threads/${U(e)}/project-scripts`)).scripts}async function Lr(e,t,n,r){let{relativeFolder:i,...a}=r??{},o={scriptName:t,command:n};return i&&(o.relativeFolder=i),V(`api/threads/${U(e)}/project-scripts/run`,o,a)}async function Rr(e,t){return R(`api/threads/${U(e)}/project-scripts/stop`,{scriptName:t})}async function zr(e){return G.get(`thread-${e}`,async()=>L(`api/threads/${e}`),45e3)}async function Br(e){return(await L(`api/projects/${U(e)}/user-tasks`)).tasks??[]}async function Vr(e,t){return R(`api/projects/${U(e)}/user-tasks`,{content:t})}async function Hr(e,t){await B(`api/projects/${U(e)}/user-tasks/${U(t)}`)}async function Ur(e){return R(`api/projects/${U(e)}/run-suggest`,{})}async function Wr(e,t,n){return Xt.info(`Start dev server requested`,{projectId:e,threadId:t}),G.invalidate(`dev-server-running-${e}`),V(`api/projects/${U(e)}/run`,{threadId:t},{signal:n})}async function Gr(e){return G.invalidate(`dev-server-running-${e}`),R(`api/projects/${U(e)}/stop`,{})}async function Kr(e,t){return R(`api/projects/${U(e)}/free-port`,{port:t})}async function qr(e){return G.get(`dev-server-running-${e}`,async()=>L(`api/projects/${U(e)}/running`),3e3)}async function Jr(e){return L(`api/projects/${U(e)}/system-prompt`)}async function Yr(){return L(`api/onboarding/status`)}async function Xr(){return L(`api/onboarding/git-check`)}async function Zr(){return R(`api/onboarding/complete`,{})}async function Qr(){return R(`api/onboarding/reset`,{})}async function $r(){return L(`api/onboarding/recommended-models`)}async function ei(e){return(await L(`api/slash-commands?threadId=${U(e)}`)).commands??[]}async function ti(e){let t=await L(`api/slash-commands?threadId=${U(e)}`);return{commands:t.commands??[],skills:t.skills??[],bundledSkills:t.bundledSkills??[]}}async function ni(e,t,n,r,i){return R(`api/slash-commands`,{name:e,content:t,metadata:n,scope:r,threadId:i})}async function ri(e){let t=await fetch(`http://localhost:641/api/slash-commands`,{method:`DELETE`,headers:{"Content-Type":`application/json`},body:JSON.stringify({filePath:e})});if(!t.ok)throw Error(`Failed to delete slash command: ${t.statusText}`);return t.json()}async function ii(e){let t=new URLSearchParams;e?.threadId?t.set(`threadId`,e.threadId):e?.projectId&&t.set(`projectId`,e.projectId);let n=t.toString();await B(`api/conversations${n?`?${n}`:``}`)}async function ai(e=20,t=0){return L(`api/conversations/recent?limit=${Math.min(Math.max(e,1),100)}&offset=${Math.max(t,0)}`)}async function oi(e,t){return L(`api/conversations/${U(e)}/${U(t)}/usage`)}async function si(e,t,n){let r=`context-breakdown-${e}-${t}`;return n?.forceRefresh&&G.invalidate(r),G.get(r,async()=>L(`api/conversations/${U(e)}/${U(t)}/context`),45e3)}async function ci(e,t){return L(`api/conversations/${U(e)}/${U(t)}/context/tool-definitions`)}async function li(){try{return await L(`api/update/check`)}catch{return{updateAvailable:!1,supported:!1}}}async function ui(){return R(`api/update/apply`)}async function di(){return(await L(`api/ask-user/pending`)).questions??[]}async function fi(e,t){await R(`api/ask-user/respond`,typeof t==`string`?{toolCallId:e,answer:t}:{toolCallId:e,answers:t})}async function pi(e,t,n){await R(`api/shell-permission/respond`,{toolCallId:e,decision:t,pattern:n?.pattern,projectId:n?.projectId})}async function mi(e,t){await R(`api/shell-permission/respond`,{toolCallId:e,escalationScope:t===`skip`?void 0:t,escalationDecision:t===`skip`?`skip`:void 0})}async function hi(e,t){await R(`api/web-fetch-permission/respond`,{toolCallId:e,decision:t})}async function gi(e,t,n){await R(`api/browser-js/respond`,{toolCallId:e,result:t,threadId:n})}async function _i(e,t){await R(`api/browser-js/respond`,{toolCallId:e,started:!0,threadId:t})}async function vi(e,t){await R(`api/browser/ready`,{toolCallId:e,webviewId:t})}async function yi(e,t){await R(`api/browser/action-result`,{toolCallId:e,result:t})}async function bi(e){return L(`api/mcp/config?projectPath=${encodeURIComponent(e)}`)}async function xi(e,t,n){return z(`api/mcp/config`,{projectPath:e,serverName:t,serverConfig:n})}async function Si(e,t){return B(`api/mcp/config/${U(t)}?projectPath=${encodeURIComponent(e)}`)}async function Ci(e,t){return R(`api/mcp/discover`,{projectPath:e,serverName:t})}async function wi(){return(await L(`api/mcp/popular`)).servers??[]}async function Ti(e,t){return R(`api/mcp/oauth/authorize`,{projectPath:e,serverName:t})}async function Ei(e,t){return L(`api/mcp/oauth/status?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Di(e,t){return B(`api/mcp/oauth?projectPath=${encodeURIComponent(e)}&serverName=${encodeURIComponent(t)}`)}async function Oi(e){return(await L(`api/projects/${U(e)}/ai-files`)).nodes??[]}async function ki(e,t){return B(`api/projects/${U(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function Ai(e){return(await L(`api/threads/${U(e)}/ai-files`)).nodes??[]}async function ji(e,t){return L(`api/threads/${U(e)}/ai-file?path=${encodeURIComponent(t)}`)}async function Mi(e,t,n){return z(`api/threads/${U(e)}/ai-file`,{path:t,content:n})}async function Ni(e,t,n){return R(`api/threads/${U(e)}/ai-files/skill`,{name:t,description:n})}async function Pi(e,t,n,r){return R(`api/threads/${U(e)}/ai-files/agent`,{name:t,description:n,tools:r})}async function $(e,t){return B(`api/threads/${U(e)}/ai-file?path=${encodeURIComponent(t)}`)}export{mn as $,Vt as $n,Pe as $r,lr as $t,Gn as A,ce as Ai,gi as An,I as Ar,ai as At,Sr as B,dr as Bn,C as Br,ji as Bt,Kn as C,oe as Ci,bn as Cn,ht as Cr,Jr as Ct,dn as D,ue as Di,Rr as Dn,U as Dr,an as Dt,Vr as E,u as Ei,Gr as En,B as Er,on as Et,$ as F,be as Fi,Ur as Fn,qe as Fr,hn as Ft,mr as G,Ut as Gn,x as Gr,kr as Gt,Dr as H,Jn as Hn,E as Hr,Fr as Ht,Hr as I,_ as Ii,Wn as In,D as Ir,ei as It,Kr as J,Gt as Jn,me as Jr,qr as Jt,di as K,Ht as Kn,s as Kr,en as Kt,Cr as L,Ne as Li,wn as Ln,T as Lr,ti as Lt,Cn as M,ve as Mi,pi as Mn,R as Mr,Qt as Mt,ri as N,Be as Ni,hi as Nn,Ye as Nr,nr as Nt,Nr as O,ee as Oi,_n as On,L as Or,rn as Ot,qn as P,f as Pi,ir as Pn,z as Pr,yn as Pt,q as Q,It as Qn,re as Qr,Fn as Qt,_r as R,je as Ri,Q as Rn,Ke as Rr,J as Rt,ni as S,h as Si,rr as Sn,ut as Sr,Ir as St,Ni as T,De as Ti,cr as Tn,G as Tr,jn as Tt,hr as U,Ar as Un,Ge as Ur,ci as Ut,gr as V,fr as Vn,Ve as Vr,Ai as Vt,br as W,Bt as Wn,S as Wr,Br as Wt,Yn as X,Kt as Xn,xe as Xr,un as Xt,wr as Y,Ft as Yn,Ce as Yr,On as Yt,sr as Z,Lt as Zn,te as Zr,Pn as Zt,In as _,Me as _i,Hn as _n,xt as _r,Y as _t,Ti as a,l as ai,jr as an,At as ar,si as at,tn as b,ie as bi,Mi as bn,St as br,Oi as bt,$t as c,p as ci,vi as cn,Nt as cr,X as ct,gn as d,de as di,Xn as dn,kt as dr,bi as dt,m as ei,ur as en,Jt as er,xr as et,Mn as f,_e as fi,Lr as fn,_t as fr,Ei as ft,Tr as g,g as gi,vr as gn,Tt as gr,wi as gt,Zr as h,ye as hi,xi as hn,wt as hr,Pr as ht,ui as i,Se as ii,fn as in,jt as ir,Dn as it,ki as j,fe as ji,mi as jn,Xe as jr,$r as jt,Si as k,Le as ki,fi as kn,A as kr,nn as kt,ar as l,Ie as li,Qr as ln,Ot as lr,An as lt,or as m,d as mi,Er as mn,Et as mr,Yr as mt,_i as n,we as ni,Or as nn,zt as nr,En as nt,li as o,pe as oi,Un as on,vt as or,tr as ot,xn as p,ze as pi,Mr as pn,yt as pr,er as pt,Zn as q,Wt as qn,c as qr,Z as qt,Yt as r,Ee as ri,Tn as rn,Rt as rr,$n as rt,Xr as s,le as si,yi as sn,Ct as sr,oi as st,K as t,ae as ti,vn as tn,qt as tr,yr as tt,ii as u,se as ui,Di as un,Pt as ur,pn as ut,Nn as v,Ae as vi,cn as vn,bt as vr,kn as vt,Pi as w,Te as wi,Wr as wn,pt as wr,Vn as wt,Sn as x,Fe as xi,Qn as xn,Mt as xr,Bn as xt,Rn as y,ne as yi,sn as yn,Dt as yr,zn as yt,Ci as z,pr as zn,We as zr,zr as zt};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,o as n,t as r}from"./react-vendor-Ee0-5T4I.js";import{at as i,x as a}from"./dist-ZlK7I-y-.js";import{J as o,n as s,r as c}from"./store-Be_7VK0D.js";import{L as l,Ln as u,Rn as d,T as f,X as p,dn as m,gt as h,j as g,mt as _}from"./dist-DIjomljy.js";import{t as v}from"./utils-CT-Dw22R.js";import{t as y}from"./button-sfGyFWfz.js";import{Ir as b,Xt as x,on as S}from"./api-ODizoHnY.js";import{i as C,n as w,r as T,t as E}from"./tooltip-B6ziVyTv.js";import{i as D,r as O}from"./browser-overlay-block-CiDtkfup.js";import{t as k}from"./use-toast-xpb5jNtN.js";import{B as A,Bt as j,C as M,Ft as N,G as P,S as F,T as I,X as L,_ as R,an as z,b as B,f as V,p as H,v as U,w as W,x as ee,y as G,zt as K}from"./index-Bmkj1Qwa.js";import{t as te}from"./use-active-dock-panel-instance-CcCdDHzX.js";var q=e(n(),1),J=t();async function ne(e){let{projectId:t,oldText:n,newText:r,selection:i,replaceUnique:a=S}=e;if(n===r)return{kind:`unchanged`};try{let e=await a(t,n,r);if(e.applied&&e.path)return{kind:`replaced`,path:e.path}}catch{}return{kind:`prompt`,prompt:B(i,n,r)}}var Y=r();function re(e){let t=(0,J.c)(43),{onCommit:n,onCancelPreview:r}=e,i=s(),a=c(ie),l=c(Z),u=c(X),d;t[0]===a?d=t[1]:(d=e=>a?e.projectModelSelections[a]:void 0,t[0]=a,t[1]=d);let f=c(d),{selectedBrowserElement:p,setSelectedBrowserElement:m,setIsEditModeEnabled:h,setBrowserAgentProcessingThreadId:g}=A(),{handleSend:_}=j(),{paneId:v,conversationId:b}=K(),[x,S]=(0,q.useState)(!1),C;if(t[2]!==u||t[3]!==l){let e;t[5]===l?e=t[6]:(e=e=>e.projectId===l,t[5]=l,t[6]=e),C=u.find(e),t[2]=u,t[3]=l,t[4]=C}else C=t[4];let w=C,T;t[7]===p?T=t[8]:(T=F(p),t[7]=p,t[8]=T);let E=T,D;t[9]!==h||t[10]!==m?(D=()=>{S(!1),h(!1),m(null)},t[9]=h,t[10]=m,t[11]=D):D=t[11];let O=D,N;t[12]!==b||t[13]!==i||t[14]!==O||t[15]!==_||t[16]!==v||t[17]!==w?.lastSelectedModel||t[18]!==w?.lastSelectedModelProvider||t[19]!==l||t[20]!==a||t[21]!==g||t[22]!==f?.id||t[23]!==f?.provider?(N=async e=>{if(!l){k({title:`No project selected`,description:`Open a project to apply text edits.`,variant:`destructive`}),O();return}S(!0);let t=await ne({projectId:l,oldText:e.originalText,newText:e.currentText,selection:e.selection});if(t.kind===`unchanged`){k({title:`No text changes detected`}),O();return}if(t.kind===`replaced`){k({title:`Text updated`,description:`Replaced in ${t.path}`}),O();return}let n=f?.id??w?.lastSelectedModel,r=f?.provider??w?.lastSelectedModelProvider;if(!a||!n){k({title:`Could not apply text change`,description:`Select a chat thread and model to send this change as a prompt.`,variant:`destructive`}),S(!1);return}_(v,b,t.prompt,n,[],r),i({type:o.SetChatInputDraft,threadId:v===`primary`?a:`${a}:${v}`,draft:``}),g(a),O()},t[12]=b,t[13]=i,t[14]=O,t[15]=_,t[16]=v,t[17]=w?.lastSelectedModel,t[18]=w?.lastSelectedModelProvider,t[19]=l,t[20]=a,t[21]=g,t[22]=f?.id,t[23]=f?.provider,t[24]=N):N=t[24],w?.lastSelectedModel,w?.lastSelectedModelProvider,f?.id,f?.provider;let P=N,I,L;t[25]===E?(I=t[26],L=t[27]):(I=()=>{E||S(!1)},L=[E],t[25]=E,t[26]=I,t[27]=L),(0,q.useEffect)(I,L);let z,B;t[28]===P?(z=t[29],B=t[30]):(z=()=>{let e=function(e){let t=e.detail;ee(t)&&P(t)},t=function(e){let t=M(e.data);t&&P(t)};return window.addEventListener(R,e),window.addEventListener(`message`,t),function(){window.removeEventListener(R,e),window.removeEventListener(`message`,t)}},B=[P],t[28]=P,t[29]=z,t[30]=B),(0,q.useEffect)(z,B);let V;t[31]!==O||t[32]!==r?(V=function(){r(),O()},t[31]=O,t[32]=r,t[33]=V):V=t[33];let H=V;if(!E)return null;let U;t[34]!==x||t[35]!==n?(U=(0,Y.jsx)(y,{type:`button`,size:`sm`,onClick:n,disabled:x,children:`Apply Changes`}),t[34]=x,t[35]=n,t[36]=U):U=t[36];let W;t[37]!==H||t[38]!==x?(W=(0,Y.jsx)(y,{type:`button`,size:`sm`,variant:`outline`,onClick:H,disabled:x,children:`Cancel`}),t[37]=H,t[38]=x,t[39]=W):W=t[39];let G;return t[40]!==U||t[41]!==W?(G=(0,Y.jsxs)(`div`,{className:`flex shrink-0 items-center justify-center gap-2 border-b border-border px-3 py-2`,children:[U,W]}),t[40]=U,t[41]=W,t[42]=G):G=t[42],G}function X(e){return e.projects}function Z(e){return e.selectedProjectId}function ie(e){return e.selectedThreadId}function ae(e){if(!e)return null;if(typeof e==`string`)try{let t=JSON.parse(e);return t&&typeof t==`object`?t:null}catch{return null}return typeof e==`object`?e:null}function oe(e){let t=ae(e);if(!t||t.type!==`tarsk-browser-page-title`)return null;let n=t.payload;if(!n||typeof n!=`object`)return null;let r=n.title;return typeof r==`string`?r:null}function se(e){return oe(e)}function ce(e){return!e?.trim()}function Q(e,t){return ce(t)?e:t.trim()}var le=a(`app.browser-tab.ui`);function ue(e){let t=e.trim();return t?(!t.startsWith(`http://`)&&!t.startsWith(`https://`)&&(t=`http://${t}`),t):``}function de(e){return e?e.querySelector(`electrobun-webview`):null}function fe(e){e.webviewId!=null&&(e.toggleHidden(!0),e.togglePassthrough(!0))}function pe(e){e.webviewId!=null&&(e.toggleHidden(!1),e.togglePassthrough(!1),e.syncDimensions(!0))}function me(e,t){if(t){pe(e);return}fe(e)}var he=new Set([`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`,`PageUp`,`PageDown`,`Home`,`End`]);function ge(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;if(t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||e.isContentEditable)return!0;let n=e.getAttribute(`role`);return n===`combobox`||n===`listbox`||n===`menu`||n===`menubar`||n===`menuitem`||n===`option`||n===`radiogroup`||n===`tablist`||n===`tab`||n===`grid`||n===`slider`||n===`spinbutton`}function _e(e){return e!=null&&e.getClientRects().length>0}function ve(e,t,n){let r=!1,i=0;function a(){if(!r){if(e.webviewId==null){i=requestAnimationFrame(a);return}t&&e.getAttribute(`src`)!==t&&e.loadURL(t),me(e,n())}}return i=requestAnimationFrame(a),function(){r=!0,cancelAnimationFrame(i)}}function ye(e,t=!1,n=`select`){return`(function () {
|
|
2
|
-
const api = window.__tarskBrowserPreview;
|
|
3
|
-
if (!api || typeof api.setSelectMode !== "function") {
|
|
4
|
-
log.error("[browser-preview] selection API is not available");
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
api.setSelectMode(${e?`true`:`false`}, ${t?`true`:`false`}, ${JSON.stringify(n)});
|
|
8
|
-
})();`}function be(e){let t=e===`commit`?`commitTextEdit`:`cancelTextEdit`;return`(function () {
|
|
9
|
-
const api = window.__tarskBrowserPreview;
|
|
10
|
-
if (!api || typeof api.${t} !== "function") return;
|
|
11
|
-
api.${t}();
|
|
12
|
-
})();`}function xe(e,t,n=!1,r=`select`){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);try{e.executeJavascript(ye(t,n,r))}catch(i){throw le.error(`[browser-preview] Failed to toggle native preview selection mode`,{enabled:t,preserveSelection:n,interaction:r,src:e.src,webview_id:e.webviewId,error:i instanceof Error?i.message:String(i),stack:i instanceof Error?i.stack:void 0}),i}}function Se(e,t){if(typeof e.executeJavascript!=`function`)throw Error(`Browser preview webview JS execution is not available`);e.executeJavascript(t)}function Ce(e,t,n=!1,r=`select`){let i=e.contentWindow;if(!i)throw Error(`Browser preview frame is not ready`);let a=i.__tarskBrowserPreview;if(!a?.setSelectMode)throw Error(`Browser preview selection API is not available in iframe preview`);a.setSelectMode(t,n,r)}function we(e,t){let n=e.contentWindow?.__tarskBrowserPreview;if(!n||typeof n[t===`commit`?`commitTextEdit`:`cancelTextEdit`]!=`function`){le.warn(`[browser-preview] Preview text-edit API unavailable; action ignored`,{action:t,src:e.src});return}if(t===`commit`){n.commitTextEdit?.();return}n.cancelTextEdit?.()}function $(e){let t=(0,J.c)(16),{onClick:n,label:r,children:i,isActive:a,disabled:o,activeStyle:s}=e,c=a===void 0?!1:a,l=o===void 0?!1:o,u=s===void 0?`elevated`:s,d=l&&`cursor-not-allowed text-muted-foreground/50`,f=!l&&!c&&`text-muted-foreground hover:bg-background/50 hover:text-foreground`,p=!l&&c&&u===`depressed`&&`bg-muted text-primary shadow-[inset_0_2px_4px_rgba(0,0,0,0.14)] ring-1 ring-inset ring-border/80 dark:shadow-[inset_0_2px_4px_rgba(0,0,0,0.35)]`,m=!l&&c&&u===`elevated`&&`bg-background text-foreground shadow-sm`,h;t[0]!==d||t[1]!==f||t[2]!==p||t[3]!==m?(h=v(`rounded p-1.5 transition-all`,d,f,p,m),t[0]=d,t[1]=f,t[2]=p,t[3]=m,t[4]=h):h=t[4];let g;t[5]!==i||t[6]!==l||t[7]!==c||t[8]!==n||t[9]!==h?(g=(0,Y.jsx)(C,{asChild:!0,children:(0,Y.jsx)(`button`,{type:`button`,onClick:n,disabled:l,"aria-pressed":c,className:h,children:i})}),t[5]=i,t[6]=l,t[7]=c,t[8]=n,t[9]=h,t[10]=g):g=t[10];let _;t[11]===r?_=t[12]:(_=(0,Y.jsx)(w,{children:r}),t[11]=r,t[12]=_);let y;return t[13]!==_||t[14]!==g?(y=(0,Y.jsxs)(E,{children:[g,_]}),t[13]=_,t[14]=g,t[15]=y):y=t[15],y}function Te(e){return typeof e==`string`?e:typeof e==`object`&&e&&`url`in e?String(e.url):``}function Ee(e,t,n){let[r,i]=(0,q.useState)(!0),a=(0,q.useSyncExternalStore)(H,V),o=(0,q.useSyncExternalStore)(D,O),s=t&&(r&&!o||a),c=(0,q.useRef)(s);c.current=s;let l=(0,q.useCallback)(function(){return c.current},[]),u=(0,q.useCallback)(function(){i(_e(e.current))},[]);return(0,q.useLayoutEffect)(u),(0,q.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(u);return n.observe(t),function(){n.disconnect()}},[u,n]),{shouldShowWebview:s,readWebviewVisibility:l}}function De(e){let t=(0,J.c)(8),{useNativeWebview:n,shouldRenderNativeWebview:r,currentUrl:i,resolveWebview:a}=e,[o,s]=(0,q.useState)(r),c;t[0]!==a||t[1]!==r||t[2]!==n?(c=()=>{if(!n)return;if(r){s(!0);return}let e=a();e&&fe(e);let t=requestAnimationFrame(()=>{s(!1)});return function(){cancelAnimationFrame(t)}},t[0]=a,t[1]=r,t[2]=n,t[3]=c):c=t[3];let l;return t[4]!==i||t[5]!==r||t[6]!==n?(l=[r,n,i],t[4]=i,t[5]=r,t[6]=n,t[7]=l):l=t[7],(0,q.useLayoutEffect)(c,l),o}function Oe({devServerUrl:e,devServerStopped:t,isBrowserActive:n,currentUrl:r,browserResetTrigger:i,webviewRef:a,iframeRef:o,setCurrentUrl:s,setPendingUrl:c,setInputUrl:l,setSelectionModeError:u,setIsSelectModeEnabled:d,setIsEditModeEnabled:f,setSelectedBrowserElement:p,setIsSelectionPromptOpen:m,setBrowserAgentProcessingThreadId:h,setBrowserPageTitle:g}){let _=(0,q.useRef)(r),v=(0,q.useRef)(null);_.current=r,(0,q.useEffect)(()=>{s(``),c(``),l(``),u(null),g(null),d(!1),f(!1),p(null),m(!1),h(null);let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``)},[i,h,g,d,f,m,p]),(0,q.useEffect)(()=>{if(t&&!e){s(``),c(``),l(``),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null));let e=a.current;e&&(e.src=``),o.current&&(o.current.src=``);return}if(!e)return;let r=ue(e);l(r),(!_.current||_.current===v.current)&&(s(r),c(r),v.current=r),u(null),n&&(d(!1),f(!1),p(null),m(!1),h(null))},[e,t,n,h,d,f,m,p])}function ke(e,t,n,r){let i=(0,J.c)(9),a;i[0]!==n||i[1]!==e||i[2]!==r||i[3]!==t?(a=()=>{if(!e||!t)return;let i=function(e){he.has(e.key)&&(ge(e.target)||r.current?.contains(e.target)||(e.preventDefault(),n()))};return document.addEventListener(`keydown`,i,!0),function(){document.removeEventListener(`keydown`,i,!0)}},i[0]=n,i[1]=e,i[2]=r,i[3]=t,i[4]=a):a=i[4];let o;i[5]!==n||i[6]!==e||i[7]!==t?(o=[e,t,n],i[5]=n,i[6]=e,i[7]=t,i[8]=o):o=i[8],(0,q.useEffect)(a,o)}function Ae(e){let t=(0,J.c)(15),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,resolveWebview:a,setCurrentUrl:o,setPendingUrl:s,setInputUrl:c,setSelectionModeError:l,setBrowserPageTitle:u}=e,d;t[0]!==i||t[1]!==r||t[2]!==a||t[3]!==u||t[4]!==o||t[5]!==c||t[6]!==s||t[7]!==l||t[8]!==n?(d=()=>{let e=a();if(!n||!e||!r)return;let t=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),s(``),c(t))},d=function(e){let t=typeof e.detail==`string`?e.detail:i;t&&(o(t),c(t))},f=function(e){let t=Te(e.detail);t&&x(t)},p=function(e){let t=se(e.detail);if(t!=null){u(e=>Q(e,t));return}let n=I(e.detail);if(n){G(n);return}let r=W(e.detail);r&&(l(null),U(r))};return e.on(`did-navigate`,t),e.on(`did-navigate-in-page`,d),e.on(`new-window-open`,f),e.on(`host-message`,p),function(){e.off(`did-navigate`,t),e.off(`did-navigate-in-page`,d),e.off(`new-window-open`,f),e.off(`host-message`,p)}},t[0]=i,t[1]=r,t[2]=a,t[3]=u,t[4]=o,t[5]=c,t[6]=s,t[7]=l,t[8]=n,t[9]=d):d=t[9];let f;t[10]!==i||t[11]!==r||t[12]!==u||t[13]!==n?(f=[i,n,r,u],t[10]=i,t[11]=r,t[12]=u,t[13]=n,t[14]=f):f=t[14],(0,q.useEffect)(d,f)}function je(e){let t=(0,J.c)(23),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,deviceMode:a,shouldShowWebview:o,pendingUrl:s,readWebviewVisibility:c,resolveWebview:l}=e,u;t[0]!==r||t[1]!==l||t[2]!==o||t[3]!==n?(u=()=>{if(!n||!r)return;let e=l();!e||e.webviewId==null||me(e,o)},t[0]=r,t[1]=l,t[2]=o,t[3]=n,t[4]=u):u=t[4];let d;t[5]!==i||t[6]!==a||t[7]!==r||t[8]!==o||t[9]!==n?(d=[r,n,i,a,o],t[5]=i,t[6]=a,t[7]=r,t[8]=o,t[9]=n,t[10]=d):d=t[10],(0,q.useLayoutEffect)(u,d);let f;t[11]!==r||t[12]!==s||t[13]!==c||t[14]!==l||t[15]!==n?(f=()=>{let e=l();if(!(!n||!e||!s||!r))return ve(e,s,c)},t[11]=r,t[12]=s,t[13]=c,t[14]=l,t[15]=n,t[16]=f):f=t[16];let p;t[17]!==i||t[18]!==r||t[19]!==s||t[20]!==c||t[21]!==n?(p=[s,n,i,r,c],t[17]=i,t[18]=r,t[19]=s,t[20]=c,t[21]=n,t[22]=p):p=t[22],(0,q.useEffect)(f,p)}function Me({isBrowserActive:e,currentUrl:t,isSelectModeEnabled:n,isEditModeEnabled:r,isSelectionPromptOpen:i,nativeWebviewMounted:a,useNativeWebview:o,resolveWebview:s,iframeRef:c,setIsSelectModeEnabled:l,setIsEditModeEnabled:u,setSelectionModeError:d}){(0,q.useEffect)(()=>{if(!e)return;if(!t){n&&l(!1),r&&u(!1);return}let f=!1,p=n||r,m=r?`edit`:`select`,h=!p&&i;function g(){try{if(o){let e=s();if(!e||e.webviewId==null||!a)return;xe(e,p,h,m);return}let e=c.current;if(!e)return;Ce(e,p,h,m)}catch(e){if(f||!p)return;let t=e instanceof Error?e.message:`Could not enable element selection.`;le.error(`Failed to toggle browser selection mode:`,e),d(t),l(!1),u(!1),k({title:`Selection mode unavailable`,description:t,variant:`destructive`})}}return g(),function(){f=!0}},[t,e,r,n,i,a,u,l,o])}function Ne(e,t){let n=(0,J.c)(8),r,i;n[0]!==e||n[1]!==t?(r=()=>{if(!e)return;let n=function(e){let n=oe(e.data);n!=null&&t(e=>Q(e,n))};return window.addEventListener(`message`,n),function(){window.removeEventListener(`message`,n)}},i=[e,t],n[0]=e,n[1]=t,n[2]=r,n[3]=i):(r=n[2],i=n[3]),(0,q.useEffect)(r,i);let a,o;n[4]!==e||n[5]!==t?(a=()=>{if(e)return function(){t(null)}},o=[e,t],n[4]=e,n[5]=t,n[6]=a,n[7]=o):(a=n[6],o=n[7]),(0,q.useEffect)(a,o)}function Pe({instanceId:e}){let t=te(e,`browser`),{devServerUrl:n,devServerStopped:r}=L(),{browserResetTrigger:i,setBrowserPageTitle:a,browserDeviceMode:o,setBrowserDeviceMode:s,isSelectModeEnabled:l,setIsSelectModeEnabled:u,isEditModeEnabled:d,setIsEditModeEnabled:f,selectedBrowserElement:p,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,isSelectionPromptOpen:g,setBrowserAgentProcessingThreadId:_}=A(),v=c(e=>e.selectedProjectId),y=c(e=>e.projects).find(e=>e.projectId===v),[S,C]=(0,q.useState)(``),[w,E]=(0,q.useState)(``),[D,O]=(0,q.useState)(``),[k,j]=(0,q.useState)(o),[M,N]=(0,q.useState)(null),P=(0,q.useRef)(null),I=(0,q.useRef)(D),R=(0,q.useRef)(null),B=(0,q.useRef)(null),V=b(),H=z(),U=V&&!!w;I.current=D;function W(){return P.current??de(B.current)}let{shouldShowWebview:ee,readWebviewVisibility:G}=Ee(B,t,w),K=De({useNativeWebview:V,shouldRenderNativeWebview:U,currentUrl:w,resolveWebview:W});Oe({devServerUrl:n,devServerStopped:r,isBrowserActive:t,currentUrl:w,browserResetTrigger:i,webviewRef:P,iframeRef:R,setCurrentUrl:E,setPendingUrl:O,setInputUrl:C,setSelectionModeError:N,setIsSelectModeEnabled:u,setIsEditModeEnabled:f,setSelectedBrowserElement:m,setIsSelectionPromptOpen:h,setBrowserAgentProcessingThreadId:_,setBrowserPageTitle:a}),ke(t,V,(0,q.useCallback)(function(){V?W()?.focus():R.current?.contentWindow?.focus()},[V]),B),Ae({useNativeWebview:V,nativeWebviewMounted:K,currentUrl:w,resolveWebview:W,setCurrentUrl:E,setPendingUrl:O,setInputUrl:C,setSelectionModeError:N,setBrowserPageTitle:a}),Ne(t,a),je({useNativeWebview:V,nativeWebviewMounted:K,currentUrl:w,deviceMode:k,shouldShowWebview:ee,pendingUrl:D,readWebviewVisibility:G,resolveWebview:W}),Me({isBrowserActive:t,currentUrl:w,isSelectModeEnabled:l,isEditModeEnabled:d,isSelectionPromptOpen:g,nativeWebviewMounted:K,useNativeWebview:V,resolveWebview:W,iframeRef:R,setIsSelectModeEnabled:u,setIsEditModeEnabled:f,setSelectionModeError:N}),(0,q.useEffect)(()=>{j(o)},[o]);let J=(0,q.useCallback)(e=>{P.current=e,e&&ve(e,I.current,G)},[G]);function ne(e){j(e),s(e)}function X(){N(null),u(!1),f(!1),m(null),h(!1)}function Z(e){try{if(V){let t=W();if(!t)return;Se(t,be(e));return}let t=R.current;if(!t)return;we(t,e)}catch(e){le.error(`Failed to run preview text edit action:`,e)}}function ie(e){let t=ue(e);t&&(C(t),E(t),O(t),X())}function ae(e){e.key===`Enter`&&ie(S)}function oe(){if(X(),V){let e=W();e&&e.reload();return}let e=R.current;if(!e)return;let t=e.src;e.src=``,requestAnimationFrame(()=>{e.src=t})}function se(){if(X(),V){let e=W();e&&e.executeJavascript(`history.back()`);return}Q(-1)}function ce(){if(X(),V){let e=W();e&&e.executeJavascript(`history.forward()`);return}Q(1)}function Q(e){let t=R.current;if(!(!t||!t.contentWindow))try{e<0?t.contentWindow.history.back():t.contentWindow.history.forward()}catch{}}function fe(){N(null),f(!1),F(p)&&(Z(`cancel`),m(null)),u(e=>!e)}function pe(){if(N(null),u(!1),h(!1),F(p)){Z(`cancel`),m(null),f(!1);return}f(e=>!e)}let me=Fe[k],he=(0,Y.jsx)(Ie,{useNativeWebview:V,nativeWebviewMounted:K,currentUrl:w,previewRpcPreload:H,handleWebviewRef:J,iframeRef:R});return t?(0,Y.jsx)(T,{children:(0,Y.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col overflow-hidden`,children:[(0,Y.jsx)(Le,{currentUrl:w,inputUrl:S,onInputUrlChange:C,onKeyDown:ae,onBack:se,onForward:ce,onRefresh:oe,onToggleSelectMode:fe,onToggleEditMode:pe,onOpenExternal:()=>void x(w),onDeviceModeChange:ne,selectionModeError:M,isSelectModeEnabled:l,isEditModeEnabled:d||F(p),deviceMode:k}),w?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(re,{onCommit:()=>Z(`commit`),onCancelPreview:()=>Z(`cancel`)}),(0,Y.jsx)(Re,{selectionModeError:M,isSelectModeEnabled:l||d,deviceMode:k,currentDeviceConfig:me,previewContainerRef:B,children:he})]}):(0,Y.jsx)(ze,{devServerStopped:r,selectedProjectId:v,runCommand:y?.runCommand})]})}):(0,Y.jsx)(Be,{previewContainerRef:B,children:he})}var Fe={desktop:{width:`100%`,height:`100%`},tablet:{width:`768px`,height:`1024px`},mobile:{width:`375px`,height:`667px`}};function Ie(e){let t=(0,J.c)(7),{useNativeWebview:n,nativeWebviewMounted:r,currentUrl:i,previewRpcPreload:a,handleWebviewRef:o,iframeRef:s}=e;if(n){if(!r)return null;let e;return t[0]!==i||t[1]!==o||t[2]!==a?(e=(0,q.createElement)(`electrobun-webview`,{ref:o,src:i,preload:a,renderer:`native`,className:`block h-full w-full bg-background`}),t[0]=i,t[1]=o,t[2]=a,t[3]=e):e=t[3],e}let c;return t[4]!==i||t[5]!==s?(c=(0,Y.jsx)(`iframe`,{ref:s,src:i,className:`h-full w-full border-none`,title:`Browser`,sandbox:`allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads`}),t[4]=i,t[5]=s,t[6]=c):c=t[6],c}function Le(e){let t=(0,J.c)(42),{currentUrl:n,inputUrl:r,onInputUrlChange:i,onKeyDown:a,onBack:o,onForward:s,onRefresh:c,onToggleSelectMode:y,onToggleEditMode:b,onOpenExternal:x,onDeviceModeChange:S,selectionModeError:C,isSelectModeEnabled:w,isEditModeEnabled:T,deviceMode:E}=e,D;t[0]!==n||t[1]!==o?(D=n&&(0,Y.jsx)($,{onClick:o,label:`Back`,children:(0,Y.jsx)(d,{size:15})}),t[0]=n,t[1]=o,t[2]=D):D=t[2];let O;t[3]!==n||t[4]!==s?(O=n&&(0,Y.jsx)($,{onClick:s,label:`Forward`,children:(0,Y.jsx)(u,{size:15})}),t[3]=n,t[4]=s,t[5]=O):O=t[5];let k;t[6]===i?k=t[7]:(k=e=>i(e.target.value),t[6]=i,t[7]=k);let A;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(A=v(`flex-1 rounded-full bg-muted font-mono`),t[8]=A):A=t[8];let j;t[9]!==r||t[10]!==a||t[11]!==k?(j=(0,Y.jsx)(N,{type:`text`,value:r,onChange:k,onKeyDown:a,placeholder:`Enter URL...`,className:A,spellCheck:!1}),t[9]=r,t[10]=a,t[11]=k,t[12]=j):j=t[12];let M;t[13]!==n||t[14]!==c?(M=n&&(0,Y.jsx)($,{onClick:c,label:`Refresh page`,children:(0,Y.jsx)(p,{size:15})}),t[13]=n,t[14]=c,t[15]=M):M=t[15];let P;t[16]!==n||t[17]!==w||t[18]!==y||t[19]!==C?(P=n&&(0,Y.jsx)($,{onClick:y,label:C?`Select element unavailable: ${C}`:w?`Exit element selection`:`Select element from preview`,isActive:w,activeStyle:`depressed`,children:(0,Y.jsx)(_,{size:15})}),t[16]=n,t[17]=w,t[18]=y,t[19]=C,t[20]=P):P=t[20];let F;t[21]!==n||t[22]!==T||t[23]!==b||t[24]!==C?(F=n&&(0,Y.jsx)($,{onClick:b,label:C?`Edit text unavailable: ${C}`:T?`Exit text editing`:`Edit text from preview`,isActive:T,activeStyle:`depressed`,children:(0,Y.jsx)(f,{size:15})}),t[21]=n,t[22]=T,t[23]=b,t[24]=C,t[25]=F):F=t[25];let I;t[26]!==n||t[27]!==E||t[28]!==S?(I=n&&(0,Y.jsxs)(`div`,{className:`flex items-center rounded-md bg-muted p-0.5`,children:[(0,Y.jsx)($,{onClick:()=>S(`desktop`),label:`Desktop view`,isActive:E===`desktop`,children:(0,Y.jsx)(h,{size:15})}),(0,Y.jsx)($,{onClick:()=>S(`tablet`),label:`Tablet view`,isActive:E===`tablet`,children:(0,Y.jsx)(g,{size:15})}),(0,Y.jsx)($,{onClick:()=>S(`mobile`),label:`Mobile view`,isActive:E===`mobile`,children:(0,Y.jsx)(l,{size:15})})]}),t[26]=n,t[27]=E,t[28]=S,t[29]=I):I=t[29];let L;t[30]!==n||t[31]!==x?(L=n&&(0,Y.jsx)($,{onClick:x,label:`Open in external browser`,children:(0,Y.jsx)(m,{size:15})}),t[30]=n,t[31]=x,t[32]=L):L=t[32];let R;return t[33]!==D||t[34]!==L||t[35]!==O||t[36]!==j||t[37]!==M||t[38]!==P||t[39]!==F||t[40]!==I?(R=(0,Y.jsx)(`div`,{className:`relative shrink-0 border-b border-border`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[D,O,j,M,P,F,I,L]})}),t[33]=D,t[34]=L,t[35]=O,t[36]=j,t[37]=M,t[38]=P,t[39]=F,t[40]=I,t[41]=R):R=t[41],R}function Re(e){let t=(0,J.c)(18),{selectionModeError:n,isSelectModeEnabled:r,deviceMode:i,currentDeviceConfig:a,previewContainerRef:o,children:s}=e,c;t[0]===n?c=t[1]:(c=n&&(0,Y.jsxs)(`div`,{className:`border-b border-destructive/20 bg-destructive/5 px-3 py-2 text-sm text-destructive`,children:[`Element selection is unavailable: `,n]}),t[0]=n,t[1]=c);let l=r&&`cursor-crosshair`,u;t[2]===l?u=t[3]:(u=v(`flex min-h-0 flex-1 items-center justify-center bg-background`,l),t[2]=l,t[3]=u);let d=`overflow-hidden border border-border bg-background shadow-sm ${i===`desktop`?`h-full w-full rounded-none border-0 shadow-none`:`rounded-lg`}`,f;t[4]!==a.height||t[5]!==a.width?(f={width:a.width,height:a.height,maxWidth:`100%`,maxHeight:`100%`},t[4]=a.height,t[5]=a.width,t[6]=f):f=t[6];let p;t[7]!==s||t[8]!==d||t[9]!==f?(p=(0,Y.jsx)(`div`,{className:d,style:f,children:s}),t[7]=s,t[8]=d,t[9]=f,t[10]=p):p=t[10];let m;t[11]!==o||t[12]!==u||t[13]!==p?(m=(0,Y.jsx)(`div`,{ref:o,className:u,children:p}),t[11]=o,t[12]=u,t[13]=p,t[14]=m):m=t[14];let h;return t[15]!==c||t[16]!==m?(h=(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col bg-background`,children:[c,m]}),t[15]=c,t[16]=m,t[17]=h):h=t[17],h}function ze(e){let t=(0,J.c)(4),{devServerStopped:n,selectedProjectId:r,runCommand:a}=e,o;return t[0]!==n||t[1]!==a||t[2]!==r?(o=(0,Y.jsx)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-6 text-muted-foreground`,children:n?(0,Y.jsx)(`p`,{className:i.body,children:`Dev server stopped`}):r&&a?(0,Y.jsx)(P,{projectId:r,runCommand:a,large:!0}):(0,Y.jsx)(`p`,{className:i.body,children:`Enter a URL to browse`})}),t[0]=n,t[1]=a,t[2]=r,t[3]=o):o=t[3],o}function Be(e){let t=(0,J.c)(3),{previewContainerRef:n,children:r}=e,i;return t[0]!==r||t[1]!==n?(i=(0,Y.jsx)(`div`,{className:`hidden`,"aria-hidden":`true`,children:(0,Y.jsx)(`div`,{ref:n,children:r})}),t[0]=r,t[1]=n,t[2]=i):i=t[2],i}export{Pe as BrowserTab};
|