@deepseek-insight/dsi 0.10.1 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/glass-dsi/scripts/_connect.mjs +21 -2
- package/.agents/skills/glass-url/scripts/_connect.mjs +4 -2
- package/README.md +34 -26
- package/bin/dsi.mjs +23 -12
- package/bin/lib/glass-browser-bootstrap.mjs +19 -2
- package/bin/lib/plugin-chain.mjs +6 -5
- package/bin/lib/zai-patch.mjs +3 -1
- package/build/client/_app/immutable/assets/0.Bjw4vcZl.css +2 -0
- package/build/client/_app/immutable/assets/2.glyfXGzi.css +1 -0
- package/build/client/_app/immutable/chunks/Dj8AK3pr.js +1 -0
- package/build/client/_app/immutable/chunks/UPlr67N1.js +2 -0
- package/build/client/_app/immutable/chunks/WySTHi46.js +1 -0
- package/build/client/_app/immutable/chunks/{UcxQDPMg.js → e-3PBXxJ.js} +1 -1
- package/build/client/_app/immutable/entry/{app.GxH1nznH.js → app.ezxtVZch.js} +2 -2
- package/build/client/_app/immutable/entry/start.DdPLwPDt.js +1 -0
- package/build/client/_app/immutable/nodes/{1.BVvBJtMj.js → 1.CGppLUrN.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.D0JzdegJ.js → 2.9BE7-E5x.js} +197 -199
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +5 -5
- package/build/index.js +5 -5
- package/build/server/chunks/chunks/{db.js-f2PmBjyD.js → db.js-BGSxIVb3.js} +2 -2
- package/build/server/chunks/chunks/{db2.js-DkwY64WO.js → db2.js-vQNFcVO7.js} +2 -2
- package/build/server/chunks/chunks/{dsh-connection.js-BW07Aicl.js → dsh-connection.js-Dcdxqp52.js} +27 -7
- package/build/server/chunks/chunks/{exports.js-DH_tjtdv.js → exports.js-D5zA1U7A.js} +42 -4
- package/build/server/chunks/chunks/{git-probe.js-CQqTV7XX.js → git-probe.js-BIieYqLU.js} +2 -2
- package/build/server/chunks/chunks/{insight-config.js-C5-Rhh5A.js → insight-config.js-ylYA2CXm.js} +2 -2
- package/build/server/chunks/chunks/{internal2.js-BRzR_ZGp.js → internal2.js-Cu5N8_4R.js} +3 -3
- package/build/server/chunks/chunks/{registry.js-6St5Biiy.js → registry.js-Bwc2MNSZ.js} +53 -50
- package/build/server/chunks/chunks/{registry2.js-CFzpvj9c.js → registry2.js-BZfrwsOy.js} +20 -1
- package/build/server/chunks/chunks/{settings-document.js-DxKURfc_.js → settings-document.js-BIxaivJ1.js} +23 -8
- package/build/server/chunks/chunks/{state.js-Ct6h8rMl.js → state.js-CRPhnJJH.js} +3 -3
- package/build/server/chunks/chunks/{watcher.js-DvlNn8X0.js → watcher.js-Bcm29AuA.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-DItDXV23.js → _server.ts.js-BbIEpZB5.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-Hor8QZb1.js → _server.ts.js-Daho1I-l.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-CEvvsa8B.js → _server.ts.js-C5X77Uef.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/browser/_id_/activate/{_server.ts.js-DYvCel9L.js → _server.ts.js-BxfB-QXT.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-CDNbpOqu.js → _server.ts.js-DT6rU-EU.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/closetab/{_server.ts.js-C8UZMTcb.js → _server.ts.js-Cwu4C98Y.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/element/{_server.ts.js-CERwttQS.js → _server.ts.js-B55tx3-S.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/history/{_server.ts.js-DtVkS-mH.js → _server.ts.js-D2ft7u0s.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-C85umKKr.js → _server.ts.js-BO1uO6i3.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-CrTtygPQ.js → _server.ts.js-zOccgfJZ.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-DgJ6DXVr.js → _server.ts.js-DgyR0sLf.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/opentab/{_server.ts.js-Bj9bKEEv.js → _server.ts.js-CPCIL2MG.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js--1WTGEfT.js → _server.ts.js-Cjvr5nEt.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-D8hQe810.js → _server.ts.js-Bb3DkB-H.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/tabs/{_server.ts.js-CSYYFlm2.js → _server.ts.js-DVcq1pYf.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-KJjT8zXH.js → _server.ts.js-D1xgkwTO.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/zoom/{_server.ts.js-DQtzgPeG.js → _server.ts.js-DFo94fTq.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-DSkCBGRA.js → _server.ts.js-0Gye8oLN.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-C_9kwANR.js → _server.ts.js-DqPIv-gn.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-h1OTHcL4.js → _server.ts.js-DzFVVhO_.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-B6nih9Sd.js → _server.ts.js-DvuZUgbK.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/{_server.ts.js-Cf17SVmD.js → _server.ts.js-D6brRlYZ.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-DjNwMbdS.js → _server.ts.js-8nNlcikK.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-Cz5aaEhC.js → _server.ts.js-C8AZBt63.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-BFBy5O9Y.js → _server.ts.js-BFfr6uJh.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CgEdCo3T.js → _server.ts.js-DSSgbD87.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-Bo_aEnHh.js → _server.ts.js-DYtrYC2P.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-Bd2G_GaH.js → _server.ts.js-HxI5M4jg.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-DL64FyRw.js → _server.ts.js-Ch0dMm33.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-MhOGB66D.js → _server.ts.js-BG5C--Ok.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-MjPgXgGO.js → _server.ts.js-B64YyaFI.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-BUjDae5H.js → _server.ts.js-0RtL-9Zr.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-dTKd7Hsv.js → _server.ts.js-C4k-RTIw.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-B82rvKoI.js → _server.ts.js-CU38DxMt.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-Cqijsi-c.js → _server.ts.js-BXphf5ux.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CL_vVv2p.js → _server.ts.js-DQ5FG9Pc.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-WS4W9Ly4.js → _server.ts.js-In3bXhUO.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-B72KGRGh.js → _server.ts.js-Bd0KF8Qm.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-DK5xb2b5.js → _server.ts.js-4Y-KAw2r.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-lhT87EQu.js → _server.ts.js-zXYA1AJD.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-CMhfhbkN.js → _server.ts.js-vh7lFV0n.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/subagents/{_server.ts.js-BLvcFsg6.js → _server.ts.js-DH7OEWm0.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-D_rw2Uq6.js → _server.ts.js-CDwgBp7D.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-DfXpMMpw.js → _server.ts.js-CtFxC_yV.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-2mJCJVxk.js → _server.ts.js-DRNzGdAj.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-BCx0Lzjf.js → _server.ts.js-DIjNfN0d.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DECaSjwp.js → _server.ts.js-CtV7JhrK.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-i_ciJzlb.js → _server.ts.js-Cg9zHbUP.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-BO1pScn7.js → _server.ts.js-DOHmlKvl.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-Buhpf7WE.js → _server.ts.js-COVyy224.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DngUQzcT.js → _server.ts.js-HjpfRAaT.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/delete/_server.ts.js-D9UU6xR6.js +42 -0
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/output/{_server.ts.js-DLETP4yQ.js → _server.ts.js-BqJRMRsb.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/reattach/{_server.ts.js-uWl6oxPS.js → _server.ts.js-D6bMXeOk.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/send/{_server.ts.js-DYNmXaAd.js → _server.ts.js-BRgsqPFM.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/stream/{_server.ts.js-C5m3Ktho.js → _server.ts.js-EWo4sSmg.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-DoTNvcOa.js → _server.ts.js-v1ixRdpN.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/terminal/stream/_server.ts.js-BQOQyT7o.js +185 -0
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-BzYOJSkI.js → _server.ts.js-CjU6bLOf.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-xcNesei9.js → _server.ts.js-CYU0btiH.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-DsJWYdxt.js → _server.ts.js-Du9YcwLw.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CNCku9BR.js → _server.ts.js-BdV_KDjb.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-nLsNjOxj.js → _server.ts.js-C-C84Yzu.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-urQk2-ds.js → _server.ts.js-D9uFvZya.js} +5 -5
- package/build/server/chunks/entries/{hooks.server.js-CU2RE5vs.js → hooks.server.js-YJQlamhk.js} +2 -2
- package/build/server/chunks/entries/pages/{_error.svelte.js-BXD7Pthk.js → _error.svelte.js-CJ9RHd_3.js} +4 -4
- package/build/server/chunks/entries/pages/{_page.server.ts.js-BK3Y6eff.js → _page.server.ts.js-BFDPRDEm.js} +2 -2
- package/build/server/chunks/entries/pages/{_page.svelte.js-DaZfwP76.js → _page.svelte.js-DlLAziUY.js} +477 -139
- package/build/server/chunks/{handler-C5_-AjlT.js → handler-BRlzTcii.js} +3 -3
- package/build/server/chunks/{index.js-BECscw6k.js → index.js-D2umW-Cg.js} +3 -44
- package/build/server/chunks/{manifest.js-aksIjogg.js → manifest.js-CaT4HRXz.js} +81 -67
- package/build/server/chunks/nodes/{0.js-xX4GZsu5.js → 0.js-B8ciwPSu.js} +3 -3
- package/build/server/chunks/nodes/1.js-cXTCbvze.js +9 -0
- package/build/server/chunks/nodes/{2.js-CBdFoBFK.js → 2.js-CF_m1q-z.js} +8 -8
- package/package.json +1 -1
- package/skills/dsi-drive-terminal/SKILL.md +23 -1
- package/skills/dsi-spec/SKILL.md +8 -0
- package/skills/dsi-task/SKILL.md +34 -0
- package/skills/dsi-token-spent/SKILL.md +122 -0
- package/template/.dsi/prompts.sqlite +0 -0
- package/template/.dsi/prompts.sqlite-shm +0 -0
- package/template/.dsi/prompts.sqlite-wal +0 -0
- package/build/client/_app/immutable/assets/0.CxUWwepa.css +0 -2
- package/build/client/_app/immutable/assets/2.CSFboNRO.css +0 -1
- package/build/client/_app/immutable/chunks/C4M9oU_3.js +0 -1
- package/build/client/_app/immutable/chunks/CNT-CapI.js +0 -1
- package/build/client/_app/immutable/chunks/DttyJZuo.js +0 -2
- package/build/client/_app/immutable/entry/start.P-LmBYpD.js +0 -1
- package/build/server/chunks/nodes/1.js-BaNGyV1A.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.CfpMgVS-.js → 0.DopnsZUT.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as __exportAll, o as onDestroy } from '../../chunks/index-server.js-CPkVoRxB.js';
|
|
2
|
-
import '../../chunks/exports.js-
|
|
2
|
+
import '../../chunks/exports.js-D5zA1U7A.js';
|
|
3
3
|
import { M as derived, V as head, T as writable, X as attr, W as escape_html, Y as ensure_array_like, Z as attr_class, _ as attr_style, $ as stringify, a0 as bind_props, a as setContext, a1 as store_get, a2 as spread_props, a3 as attributes, a4 as clsx, a5 as element, g as getContext, a6 as unsubscribe_stores, a7 as html, r as run, a8 as props_id } from '../../chunks/server.js-Dijo7DtV.js';
|
|
4
4
|
import { U as UI_LOCALES } from '../../chunks/config.js-r_jw_bQQ.js';
|
|
5
5
|
import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/merge.js-yMwW440S.js';
|
|
@@ -9,7 +9,7 @@ import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r
|
|
|
9
9
|
import { s as sanitizeWorkspaceProfile, d as dsiKey, t as themePrefs } from '../../chunks/theme-prefs.svelte.js-8CaWz46g.js';
|
|
10
10
|
import { a as appConfig, p as previewSegments, b as parseTagWords, i as isValidTagWord, s as shouldRecordPrompt, g as getTrigger, t as triggerMode, c as searchKey, d as textPreviewOf } from '../../chunks/app-config.svelte.js-BXjvTmJu.js';
|
|
11
11
|
import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
|
|
12
|
-
import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
12
|
+
import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-CRPhnJJH.js';
|
|
13
13
|
import 'yaml';
|
|
14
14
|
import 'html-to-image';
|
|
15
15
|
import hljs from 'highlight.js/lib/core';
|
|
@@ -21,7 +21,7 @@ import xml from 'highlight.js/lib/languages/xml';
|
|
|
21
21
|
import css from 'highlight.js/lib/languages/css';
|
|
22
22
|
import '../../chunks/uneval.js-BJ9Qq2SF.js';
|
|
23
23
|
import '../../chunks/shared.js-HQ0rfhm4.js';
|
|
24
|
-
import '../../chunks/internal2.js-
|
|
24
|
+
import '../../chunks/internal2.js-Cu5N8_4R.js';
|
|
25
25
|
import '../../chunks/utils.js-CAdNO8Tu.js';
|
|
26
26
|
|
|
27
27
|
//#region src/lib/paraglide/messages/abort.js
|
|
@@ -952,6 +952,70 @@ var browserchiplabel2 = ((inputs = {}, options = {}) => {
|
|
|
952
952
|
return en_browserchiplabel2();
|
|
953
953
|
});
|
|
954
954
|
//#endregion
|
|
955
|
+
//#region src/lib/paraglide/messages/browserclonefallback2.js
|
|
956
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
957
|
+
/** @typedef {{}} Browserclonefallback2Inputs */
|
|
958
|
+
var en_browserclonefallback2 = () => {
|
|
959
|
+
return `Couldn't clone your profile — opening a clean glass instead`;
|
|
960
|
+
};
|
|
961
|
+
var zh_browserclonefallback2 = () => {
|
|
962
|
+
return `无法克隆你的配置 — 改用干净的 glass 打开`;
|
|
963
|
+
};
|
|
964
|
+
var id_browserclonefallback2 = () => {
|
|
965
|
+
return `Gagal mengkloning profil — membuka glass bersih sebagai gantinya`;
|
|
966
|
+
};
|
|
967
|
+
var es_browserclonefallback2 = () => {
|
|
968
|
+
return `No se pudo clonar tu perfil — se abre un glass limpio en su lugar`;
|
|
969
|
+
};
|
|
970
|
+
/**
|
|
971
|
+
* | output |
|
|
972
|
+
* | --- |
|
|
973
|
+
* | "Couldn't clone your profile — opening a clean glass instead" |
|
|
974
|
+
*
|
|
975
|
+
* @param {Browserclonefallback2Inputs} inputs
|
|
976
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
977
|
+
* @returns {LocalizedString}
|
|
978
|
+
*/
|
|
979
|
+
var browserclonefallback2 = ((inputs = {}, options = {}) => {
|
|
980
|
+
const locale = options.locale ?? getLocale();
|
|
981
|
+
if (locale === "zh") return zh_browserclonefallback2();
|
|
982
|
+
if (locale === "id") return id_browserclonefallback2();
|
|
983
|
+
if (locale === "es") return es_browserclonefallback2();
|
|
984
|
+
return en_browserclonefallback2();
|
|
985
|
+
});
|
|
986
|
+
//#endregion
|
|
987
|
+
//#region src/lib/paraglide/messages/browserclonehint2.js
|
|
988
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
989
|
+
/** @typedef {{}} Browserclonehint2Inputs */
|
|
990
|
+
var en_browserclonehint2 = () => {
|
|
991
|
+
return `Cloning your last-used Chrome profile…`;
|
|
992
|
+
};
|
|
993
|
+
var zh_browserclonehint2 = () => {
|
|
994
|
+
return `正在克隆你最近使用的 Chrome 配置…`;
|
|
995
|
+
};
|
|
996
|
+
var id_browserclonehint2 = () => {
|
|
997
|
+
return `Mengkloning profil Chrome yang terakhir dipakai…`;
|
|
998
|
+
};
|
|
999
|
+
var es_browserclonehint2 = () => {
|
|
1000
|
+
return `Clonando tu perfil de Chrome más reciente…`;
|
|
1001
|
+
};
|
|
1002
|
+
/**
|
|
1003
|
+
* | output |
|
|
1004
|
+
* | --- |
|
|
1005
|
+
* | "Cloning your last-used Chrome profile…" |
|
|
1006
|
+
*
|
|
1007
|
+
* @param {Browserclonehint2Inputs} inputs
|
|
1008
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1009
|
+
* @returns {LocalizedString}
|
|
1010
|
+
*/
|
|
1011
|
+
var browserclonehint2 = ((inputs = {}, options = {}) => {
|
|
1012
|
+
const locale = options.locale ?? getLocale();
|
|
1013
|
+
if (locale === "zh") return zh_browserclonehint2();
|
|
1014
|
+
if (locale === "id") return id_browserclonehint2();
|
|
1015
|
+
if (locale === "es") return es_browserclonehint2();
|
|
1016
|
+
return en_browserclonehint2();
|
|
1017
|
+
});
|
|
1018
|
+
//#endregion
|
|
955
1019
|
//#region src/lib/paraglide/messages/browserclosedelete2.js
|
|
956
1020
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
957
1021
|
/** @typedef {{}} Browserclosedelete2Inputs */
|
|
@@ -1850,66 +1914,162 @@ var choosefolder1 = ((inputs = {}, options = {}) => {
|
|
|
1850
1914
|
//#endregion
|
|
1851
1915
|
//#region src/lib/paraglide/messages/chordarmedlabel2.js
|
|
1852
1916
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1853
|
-
/** @typedef {{}} Chordarmedlabel2Inputs */
|
|
1854
|
-
var en_chordarmedlabel2 = () => {
|
|
1855
|
-
return `Alt
|
|
1917
|
+
/** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedlabel2Inputs */
|
|
1918
|
+
var en_chordarmedlabel2 = (i) => {
|
|
1919
|
+
return `Alt+${i?.prefix} chord armed — next key`;
|
|
1856
1920
|
};
|
|
1857
|
-
var zh_chordarmedlabel2 = () => {
|
|
1858
|
-
return `Alt
|
|
1921
|
+
var zh_chordarmedlabel2 = (i) => {
|
|
1922
|
+
return `Alt+${i?.prefix} 组合键已就绪 — 下一个按键`;
|
|
1859
1923
|
};
|
|
1860
|
-
var id_chordarmedlabel2 = () => {
|
|
1861
|
-
return `Kord Alt
|
|
1924
|
+
var id_chordarmedlabel2 = (i) => {
|
|
1925
|
+
return `Kord Alt+${i?.prefix} armed — tombol berikutnya`;
|
|
1862
1926
|
};
|
|
1863
|
-
var es_chordarmedlabel2 = () => {
|
|
1864
|
-
return `Acordo Alt
|
|
1927
|
+
var es_chordarmedlabel2 = (i) => {
|
|
1928
|
+
return `Acordo Alt+${i?.prefix} armado — siguiente tecla`;
|
|
1865
1929
|
};
|
|
1866
1930
|
/**
|
|
1867
1931
|
* | output |
|
|
1868
1932
|
* | --- |
|
|
1869
|
-
* | "Alt+
|
|
1933
|
+
* | "Alt+{prefix} chord armed — next key" |
|
|
1870
1934
|
*
|
|
1871
1935
|
* @param {Chordarmedlabel2Inputs} inputs
|
|
1872
1936
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1873
1937
|
* @returns {LocalizedString}
|
|
1874
1938
|
*/
|
|
1875
|
-
var chordarmedlabel2 = ((inputs
|
|
1939
|
+
var chordarmedlabel2 = ((inputs, options = {}) => {
|
|
1876
1940
|
const locale = options.locale ?? getLocale();
|
|
1877
|
-
if (locale === "zh") return zh_chordarmedlabel2();
|
|
1878
|
-
if (locale === "id") return id_chordarmedlabel2();
|
|
1879
|
-
if (locale === "es") return es_chordarmedlabel2();
|
|
1880
|
-
return en_chordarmedlabel2();
|
|
1941
|
+
if (locale === "zh") return zh_chordarmedlabel2(inputs);
|
|
1942
|
+
if (locale === "id") return id_chordarmedlabel2(inputs);
|
|
1943
|
+
if (locale === "es") return es_chordarmedlabel2(inputs);
|
|
1944
|
+
return en_chordarmedlabel2(inputs);
|
|
1881
1945
|
});
|
|
1882
1946
|
//#endregion
|
|
1883
1947
|
//#region src/lib/paraglide/messages/chordarmedtitle2.js
|
|
1884
1948
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1885
|
-
/** @typedef {{}} Chordarmedtitle2Inputs */
|
|
1886
|
-
var en_chordarmedtitle2 = () => {
|
|
1887
|
-
return `Alt
|
|
1949
|
+
/** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedtitle2Inputs */
|
|
1950
|
+
var en_chordarmedtitle2 = (i) => {
|
|
1951
|
+
return `Alt+${i?.prefix} armed`;
|
|
1888
1952
|
};
|
|
1889
|
-
var zh_chordarmedtitle2 = () => {
|
|
1890
|
-
return `Alt
|
|
1953
|
+
var zh_chordarmedtitle2 = (i) => {
|
|
1954
|
+
return `Alt+${i?.prefix} 已就绪`;
|
|
1891
1955
|
};
|
|
1892
|
-
var id_chordarmedtitle2 = () => {
|
|
1893
|
-
return `Alt
|
|
1956
|
+
var id_chordarmedtitle2 = (i) => {
|
|
1957
|
+
return `Alt+${i?.prefix} diarmed`;
|
|
1894
1958
|
};
|
|
1895
|
-
var es_chordarmedtitle2 = () => {
|
|
1896
|
-
return `Alt
|
|
1959
|
+
var es_chordarmedtitle2 = (i) => {
|
|
1960
|
+
return `Alt+${i?.prefix} armado`;
|
|
1897
1961
|
};
|
|
1898
1962
|
/**
|
|
1899
1963
|
* | output |
|
|
1900
1964
|
* | --- |
|
|
1901
|
-
* | "Alt+
|
|
1965
|
+
* | "Alt+{prefix} armed" |
|
|
1902
1966
|
*
|
|
1903
1967
|
* @param {Chordarmedtitle2Inputs} inputs
|
|
1904
1968
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1905
1969
|
* @returns {LocalizedString}
|
|
1906
1970
|
*/
|
|
1907
|
-
var chordarmedtitle2 = ((inputs
|
|
1971
|
+
var chordarmedtitle2 = ((inputs, options = {}) => {
|
|
1972
|
+
const locale = options.locale ?? getLocale();
|
|
1973
|
+
if (locale === "zh") return zh_chordarmedtitle2(inputs);
|
|
1974
|
+
if (locale === "id") return id_chordarmedtitle2(inputs);
|
|
1975
|
+
if (locale === "es") return es_chordarmedtitle2(inputs);
|
|
1976
|
+
return en_chordarmedtitle2(inputs);
|
|
1977
|
+
});
|
|
1978
|
+
//#endregion
|
|
1979
|
+
//#region src/lib/paraglide/messages/chordterminalclear2.js
|
|
1980
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1981
|
+
/** @typedef {{}} Chordterminalclear2Inputs */
|
|
1982
|
+
var en_chordterminalclear2 = () => {
|
|
1983
|
+
return `Clear current terminal tab (kill + prune)`;
|
|
1984
|
+
};
|
|
1985
|
+
var zh_chordterminalclear2 = () => {
|
|
1986
|
+
return `清除当前终端标签页(终止并修剪)`;
|
|
1987
|
+
};
|
|
1988
|
+
var id_chordterminalclear2 = () => {
|
|
1989
|
+
return `Bersihkan tab terminal saat ini (matikan + pangkas)`;
|
|
1990
|
+
};
|
|
1991
|
+
var es_chordterminalclear2 = () => {
|
|
1992
|
+
return `Limpiar la pestaña de terminal actual (matar y podar)`;
|
|
1993
|
+
};
|
|
1994
|
+
/**
|
|
1995
|
+
* | output |
|
|
1996
|
+
* | --- |
|
|
1997
|
+
* | "Clear current terminal tab (kill + prune)" |
|
|
1998
|
+
*
|
|
1999
|
+
* @param {Chordterminalclear2Inputs} inputs
|
|
2000
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
2001
|
+
* @returns {LocalizedString}
|
|
2002
|
+
*/
|
|
2003
|
+
var chordterminalclear2 = ((inputs = {}, options = {}) => {
|
|
2004
|
+
const locale = options.locale ?? getLocale();
|
|
2005
|
+
if (locale === "zh") return zh_chordterminalclear2();
|
|
2006
|
+
if (locale === "id") return id_chordterminalclear2();
|
|
2007
|
+
if (locale === "es") return es_chordterminalclear2();
|
|
2008
|
+
return en_chordterminalclear2();
|
|
2009
|
+
});
|
|
2010
|
+
//#endregion
|
|
2011
|
+
//#region src/lib/paraglide/messages/chordterminalnewtab3.js
|
|
2012
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
2013
|
+
/** @typedef {{}} Chordterminalnewtab3Inputs */
|
|
2014
|
+
var en_chordterminalnewtab3 = () => {
|
|
2015
|
+
return `New terminal tab`;
|
|
2016
|
+
};
|
|
2017
|
+
var zh_chordterminalnewtab3 = () => {
|
|
2018
|
+
return `新建终端标签页`;
|
|
2019
|
+
};
|
|
2020
|
+
var id_chordterminalnewtab3 = () => {
|
|
2021
|
+
return `Tab terminal baru`;
|
|
2022
|
+
};
|
|
2023
|
+
var es_chordterminalnewtab3 = () => {
|
|
2024
|
+
return `Nueva pestaña de terminal`;
|
|
2025
|
+
};
|
|
2026
|
+
/**
|
|
2027
|
+
* | output |
|
|
2028
|
+
* | --- |
|
|
2029
|
+
* | "New terminal tab" |
|
|
2030
|
+
*
|
|
2031
|
+
* @param {Chordterminalnewtab3Inputs} inputs
|
|
2032
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
2033
|
+
* @returns {LocalizedString}
|
|
2034
|
+
*/
|
|
2035
|
+
var chordterminalnewtab3 = ((inputs = {}, options = {}) => {
|
|
1908
2036
|
const locale = options.locale ?? getLocale();
|
|
1909
|
-
if (locale === "zh") return
|
|
1910
|
-
if (locale === "id") return
|
|
1911
|
-
if (locale === "es") return
|
|
1912
|
-
return
|
|
2037
|
+
if (locale === "zh") return zh_chordterminalnewtab3();
|
|
2038
|
+
if (locale === "id") return id_chordterminalnewtab3();
|
|
2039
|
+
if (locale === "es") return es_chordterminalnewtab3();
|
|
2040
|
+
return en_chordterminalnewtab3();
|
|
2041
|
+
});
|
|
2042
|
+
//#endregion
|
|
2043
|
+
//#region src/lib/paraglide/messages/chordterminalsplitdown3.js
|
|
2044
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
2045
|
+
/** @typedef {{}} Chordterminalsplitdown3Inputs */
|
|
2046
|
+
var en_chordterminalsplitdown3 = () => {
|
|
2047
|
+
return `Split down current terminal tab`;
|
|
2048
|
+
};
|
|
2049
|
+
var zh_chordterminalsplitdown3 = () => {
|
|
2050
|
+
return `向下拆分当前终端标签页`;
|
|
2051
|
+
};
|
|
2052
|
+
var id_chordterminalsplitdown3 = () => {
|
|
2053
|
+
return `Pisahkan ke bawah tab terminal saat ini`;
|
|
2054
|
+
};
|
|
2055
|
+
var es_chordterminalsplitdown3 = () => {
|
|
2056
|
+
return `Dividir hacia abajo la pestaña de terminal actual`;
|
|
2057
|
+
};
|
|
2058
|
+
/**
|
|
2059
|
+
* | output |
|
|
2060
|
+
* | --- |
|
|
2061
|
+
* | "Split down current terminal tab" |
|
|
2062
|
+
*
|
|
2063
|
+
* @param {Chordterminalsplitdown3Inputs} inputs
|
|
2064
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
2065
|
+
* @returns {LocalizedString}
|
|
2066
|
+
*/
|
|
2067
|
+
var chordterminalsplitdown3 = ((inputs = {}, options = {}) => {
|
|
2068
|
+
const locale = options.locale ?? getLocale();
|
|
2069
|
+
if (locale === "zh") return zh_chordterminalsplitdown3();
|
|
2070
|
+
if (locale === "id") return id_chordterminalsplitdown3();
|
|
2071
|
+
if (locale === "es") return es_chordterminalsplitdown3();
|
|
2072
|
+
return en_chordterminalsplitdown3();
|
|
1913
2073
|
});
|
|
1914
2074
|
//#endregion
|
|
1915
2075
|
//#region src/lib/paraglide/messages/clearbtn1.js
|
|
@@ -7708,21 +7868,21 @@ var movepanelup2 = ((inputs = {}, options = {}) => {
|
|
|
7708
7868
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
7709
7869
|
/** @typedef {{}} Needagent1Inputs */
|
|
7710
7870
|
var en_needagent1 = () => {
|
|
7711
|
-
return `You cannot chat unless you select an Agent
|
|
7871
|
+
return `You cannot chat unless you select an Agent`;
|
|
7712
7872
|
};
|
|
7713
7873
|
var zh_needagent1 = () => {
|
|
7714
|
-
return
|
|
7874
|
+
return `必须先选择代理才能聊天`;
|
|
7715
7875
|
};
|
|
7716
7876
|
var id_needagent1 = () => {
|
|
7717
|
-
return `Anda tidak bisa chat kecuali memilih Agent
|
|
7877
|
+
return `Anda tidak bisa chat kecuali memilih Agent`;
|
|
7718
7878
|
};
|
|
7719
7879
|
var es_needagent1 = () => {
|
|
7720
|
-
return `No puedes chatear sin seleccionar un Agente
|
|
7880
|
+
return `No puedes chatear sin seleccionar un Agente`;
|
|
7721
7881
|
};
|
|
7722
7882
|
/**
|
|
7723
7883
|
* | output |
|
|
7724
7884
|
* | --- |
|
|
7725
|
-
* | "You cannot chat unless you select an Agent
|
|
7885
|
+
* | "You cannot chat unless you select an Agent" |
|
|
7726
7886
|
*
|
|
7727
7887
|
* @param {Needagent1Inputs} inputs
|
|
7728
7888
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
@@ -9688,6 +9848,38 @@ var plusadd1 = ((inputs = {}, options = {}) => {
|
|
|
9688
9848
|
return en_plusadd1();
|
|
9689
9849
|
});
|
|
9690
9850
|
//#endregion
|
|
9851
|
+
//#region src/lib/paraglide/messages/plusworkspace1.js
|
|
9852
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
9853
|
+
/** @typedef {{}} Plusworkspace1Inputs */
|
|
9854
|
+
var en_plusworkspace1 = () => {
|
|
9855
|
+
return `(+ Workspace)`;
|
|
9856
|
+
};
|
|
9857
|
+
var zh_plusworkspace1 = () => {
|
|
9858
|
+
return `(+ 工作区)`;
|
|
9859
|
+
};
|
|
9860
|
+
var id_plusworkspace1 = () => {
|
|
9861
|
+
return `(+ Workspace)`;
|
|
9862
|
+
};
|
|
9863
|
+
var es_plusworkspace1 = () => {
|
|
9864
|
+
return `(+ Workspace)`;
|
|
9865
|
+
};
|
|
9866
|
+
/**
|
|
9867
|
+
* | output |
|
|
9868
|
+
* | --- |
|
|
9869
|
+
* | "(+ Workspace)" |
|
|
9870
|
+
*
|
|
9871
|
+
* @param {Plusworkspace1Inputs} inputs
|
|
9872
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
9873
|
+
* @returns {LocalizedString}
|
|
9874
|
+
*/
|
|
9875
|
+
var plusworkspace1 = ((inputs = {}, options = {}) => {
|
|
9876
|
+
const locale = options.locale ?? getLocale();
|
|
9877
|
+
if (locale === "zh") return zh_plusworkspace1();
|
|
9878
|
+
if (locale === "id") return id_plusworkspace1();
|
|
9879
|
+
if (locale === "es") return es_plusworkspace1();
|
|
9880
|
+
return en_plusworkspace1();
|
|
9881
|
+
});
|
|
9882
|
+
//#endregion
|
|
9691
9883
|
//#region src/lib/paraglide/messages/presetcustom1.js
|
|
9692
9884
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
9693
9885
|
/** @typedef {{}} Presetcustom1Inputs */
|
|
@@ -15992,6 +16184,8 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
15992
16184
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
15993
16185
|
browserBack: () => browserback1,
|
|
15994
16186
|
browserChipLabel: () => browserchiplabel2,
|
|
16187
|
+
browserCloneFallback: () => browserclonefallback2,
|
|
16188
|
+
browserCloneHint: () => browserclonehint2,
|
|
15995
16189
|
browserCloseDelete: () => browserclosedelete2,
|
|
15996
16190
|
browserCopied: () => browsercopied1,
|
|
15997
16191
|
browserCopyUrl: () => browsercopyurl2,
|
|
@@ -16022,6 +16216,9 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
16022
16216
|
chooseFolder: () => choosefolder1,
|
|
16023
16217
|
chordArmedLabel: () => chordarmedlabel2,
|
|
16024
16218
|
chordArmedTitle: () => chordarmedtitle2,
|
|
16219
|
+
chordTerminalClear: () => chordterminalclear2,
|
|
16220
|
+
chordTerminalNewTab: () => chordterminalnewtab3,
|
|
16221
|
+
chordTerminalSplitDown: () => chordterminalsplitdown3,
|
|
16025
16222
|
clearBtn: () => clearbtn1,
|
|
16026
16223
|
clearDateFilter: () => cleardatefilter2,
|
|
16027
16224
|
clearFilter: () => clearfilter1,
|
|
@@ -16266,6 +16463,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
16266
16463
|
pluginRackUninstall: () => pluginrackuninstall2,
|
|
16267
16464
|
pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
|
|
16268
16465
|
plusAdd: () => plusadd1,
|
|
16466
|
+
plusWorkspace: () => plusworkspace1,
|
|
16269
16467
|
presetCustom: () => presetcustom1,
|
|
16270
16468
|
presetFullAccess: () => presetfullaccess2,
|
|
16271
16469
|
presetFullAccessDesc: () => presetfullaccessdesc3,
|
|
@@ -16499,6 +16697,8 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16499
16697
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
16500
16698
|
browserBack: () => browserback1,
|
|
16501
16699
|
browserChipLabel: () => browserchiplabel2,
|
|
16700
|
+
browserCloneFallback: () => browserclonefallback2,
|
|
16701
|
+
browserCloneHint: () => browserclonehint2,
|
|
16502
16702
|
browserCloseDelete: () => browserclosedelete2,
|
|
16503
16703
|
browserCopied: () => browsercopied1,
|
|
16504
16704
|
browserCopyUrl: () => browsercopyurl2,
|
|
@@ -16529,6 +16729,9 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16529
16729
|
chooseFolder: () => choosefolder1,
|
|
16530
16730
|
chordArmedLabel: () => chordarmedlabel2,
|
|
16531
16731
|
chordArmedTitle: () => chordarmedtitle2,
|
|
16732
|
+
chordTerminalClear: () => chordterminalclear2,
|
|
16733
|
+
chordTerminalNewTab: () => chordterminalnewtab3,
|
|
16734
|
+
chordTerminalSplitDown: () => chordterminalsplitdown3,
|
|
16532
16735
|
clearBtn: () => clearbtn1,
|
|
16533
16736
|
clearDateFilter: () => cleardatefilter2,
|
|
16534
16737
|
clearFilter: () => clearfilter1,
|
|
@@ -16774,6 +16977,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16774
16977
|
pluginRackUninstall: () => pluginrackuninstall2,
|
|
16775
16978
|
pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
|
|
16776
16979
|
plusAdd: () => plusadd1,
|
|
16980
|
+
plusWorkspace: () => plusworkspace1,
|
|
16777
16981
|
presetCustom: () => presetcustom1,
|
|
16778
16982
|
presetFullAccess: () => presetfullaccess2,
|
|
16779
16983
|
presetFullAccessDesc: () => presetfullaccessdesc3,
|
|
@@ -18576,6 +18780,54 @@ function WorkspaceChip($$renderer, $$props) {
|
|
|
18576
18780
|
$$renderer.push(`<!--]--></span>`);
|
|
18577
18781
|
}
|
|
18578
18782
|
//#endregion
|
|
18783
|
+
//#region src/lib/components/common/buttons/AgentChip.svelte
|
|
18784
|
+
function AgentChip($$renderer, $$props) {
|
|
18785
|
+
$$renderer.component(($$renderer) => {
|
|
18786
|
+
/**
|
|
18787
|
+
* AgentChip — ONE owner of the agent-pill identity (ADR, 2026-11-06):
|
|
18788
|
+
* the Bot/purple pill that means "this is agent X" on every surface.
|
|
18789
|
+
* Shape, the AA-tuned color-mixes (rest 5.25:1, selected white
|
|
18790
|
+
* 5.34:1), icon-never-shrinks and label-ellipsis-only live HERE,
|
|
18791
|
+
* exactly once — previously re-declared in SessionFilterHeader,
|
|
18792
|
+
* ToolsAndStatusHeader and Agents.svelte.
|
|
18793
|
+
*
|
|
18794
|
+
* Span mode (default) is display-only — the filter summary chip and
|
|
18795
|
+
* the conversation header chip; it must stay a span when nested in
|
|
18796
|
+
* a button (no button-in-button). interactive renders a real
|
|
18797
|
+
* <button> with aria-pressed — the Agents filter pill; hover/on
|
|
18798
|
+
* states carry the 2026-08-23 :not(.on) guards so rest and selected
|
|
18799
|
+
* rule sets stay disjoint.
|
|
18800
|
+
*
|
|
18801
|
+
* Call sites keep their own testids, titles and layout; only the
|
|
18802
|
+
* identity is owned here.
|
|
18803
|
+
*/
|
|
18804
|
+
let { label, count = null, interactive = false, selected = false, title, testid, size = "chip", maxWidth } = $$props;
|
|
18805
|
+
if (interactive) {
|
|
18806
|
+
$$renderer.push("<!--[0-->");
|
|
18807
|
+
$$renderer.push(`<button data-svelte="AgentChip" type="button"${attr_class(`agent-chip ${stringify(size)}`, "svelte-whh0kl", { "on": selected })}${attr("aria-pressed", selected)}${attr("title", title)}${attr("data-testid", testid)}${attr_style("", { "max-width": maxWidth })}>`);
|
|
18808
|
+
Bot($$renderer, {
|
|
18809
|
+
size: 12,
|
|
18810
|
+
"aria-hidden": "true"
|
|
18811
|
+
});
|
|
18812
|
+
$$renderer.push(`<!----> <span class="label svelte-whh0kl">${escape_html(label)}</span>`);
|
|
18813
|
+
if (count !== null) {
|
|
18814
|
+
$$renderer.push("<!--[0-->");
|
|
18815
|
+
$$renderer.push(`<span class="count svelte-whh0kl">${escape_html(count)}</span>`);
|
|
18816
|
+
} else $$renderer.push("<!--[-1-->");
|
|
18817
|
+
$$renderer.push(`<!--]--></button>`);
|
|
18818
|
+
} else {
|
|
18819
|
+
$$renderer.push("<!--[-1-->");
|
|
18820
|
+
$$renderer.push(`<span data-svelte="AgentChip"${attr_class(`agent-chip ${stringify(size)}`, "svelte-whh0kl")}${attr("title", title)}${attr("data-testid", testid)}${attr_style("", { "max-width": maxWidth })}>`);
|
|
18821
|
+
Bot($$renderer, {
|
|
18822
|
+
size: size === "compact" ? 10 : 12,
|
|
18823
|
+
"aria-hidden": "true"
|
|
18824
|
+
});
|
|
18825
|
+
$$renderer.push(`<!----> <span class="label svelte-whh0kl">${escape_html(label)}</span></span>`);
|
|
18826
|
+
}
|
|
18827
|
+
$$renderer.push(`<!--]-->`);
|
|
18828
|
+
});
|
|
18829
|
+
}
|
|
18830
|
+
//#endregion
|
|
18579
18831
|
//#region src/lib/services/jobs/roster-store.svelte.ts
|
|
18580
18832
|
function isLiveJob(job) {
|
|
18581
18833
|
return job.status === "running" || job.status === "stopping";
|
|
@@ -18822,6 +19074,39 @@ function JobRosterList($$renderer, $$props) {
|
|
|
18822
19074
|
});
|
|
18823
19075
|
}
|
|
18824
19076
|
//#endregion
|
|
19077
|
+
//#region src/lib/components/composer/SelectionAlert.svelte
|
|
19078
|
+
function SelectionAlert($$renderer, $$props) {
|
|
19079
|
+
$$renderer.component(($$renderer) => {
|
|
19080
|
+
/**
|
|
19081
|
+
* SelectionAlert — the shared missing-selection alert (2026-11-08
|
|
19082
|
+
* refactor): one component serves both hosts of the NewChatButton
|
|
19083
|
+
* alert (inline in NewChatButton, hosted in SidebarFooter). The
|
|
19084
|
+
* message renders as TWO sibling spans — the i18n sentence
|
|
19085
|
+
* (m.needAgent) and the parenthetical (m.plusWorkspace) — with the
|
|
19086
|
+
* parenthetical non-breaking (whitespace-nowrap), so narrow widths
|
|
19087
|
+
* wrap BETWEEN the spans and never cut inside "(+ Workspace)".
|
|
19088
|
+
*
|
|
19089
|
+
* Carries its own × dismiss (the PanelHeader close grammar): closing
|
|
19090
|
+
* only hides the message — the next unarmed click re-raises it.
|
|
19091
|
+
* Call sites keep their testids via `testid`; `inset` drops the
|
|
19092
|
+
* bottom margin for hosts that space the alert row themselves
|
|
19093
|
+
* (the footer's .footer-create gap).
|
|
19094
|
+
*/
|
|
19095
|
+
let { alert = false, testid = "new-chat-selection-alert", inset = false } = $$props;
|
|
19096
|
+
if (alert) {
|
|
19097
|
+
$$renderer.push("<!--[0-->");
|
|
19098
|
+
$$renderer.push(`<p data-svelte="SelectionAlert"${attr("data-testid", testid)}${attr_class("flex w-full items-start justify-between gap-2 text-xs text-status-pending", void 0, { "mb-1": !inset })} role="alert"><span class="min-w-0 flex-1"><span>${escape_html(t(needagent1))}</span> <span class="whitespace-nowrap">${escape_html(t(plusworkspace1))}</span></span> <button type="button" class="shrink-0 rounded p-0.5 leading-none text-status-pending hover:bg-status-pending/20 hover:text-status-pending"${attr("data-testid", `${testid}-close`)}${attr("aria-label", t(dismissalert1))}${attr("title", t(dismiss))}>`);
|
|
19099
|
+
X($$renderer, {
|
|
19100
|
+
size: 11,
|
|
19101
|
+
"aria-hidden": "true"
|
|
19102
|
+
});
|
|
19103
|
+
$$renderer.push(`<!----></button></p>`);
|
|
19104
|
+
} else $$renderer.push("<!--[-1-->");
|
|
19105
|
+
$$renderer.push(`<!--]-->`);
|
|
19106
|
+
bind_props($$props, { alert });
|
|
19107
|
+
});
|
|
19108
|
+
}
|
|
19109
|
+
//#endregion
|
|
18825
19110
|
//#region src/lib/components/composer/NewChatButton.svelte
|
|
18826
19111
|
function NewChatButton($$renderer, $$props) {
|
|
18827
19112
|
$$renderer.component(($$renderer) => {
|
|
@@ -18856,34 +19141,47 @@ function NewChatButton($$renderer, $$props) {
|
|
|
18856
19141
|
/** Verb mode (2026-08-31): false = Add (default, never persisted),
|
|
18857
19142
|
* true = Replace. Session-local by design — every load starts Add. */
|
|
18858
19143
|
let replaceMode = false;
|
|
18859
|
-
$$
|
|
18860
|
-
|
|
18861
|
-
|
|
18862
|
-
$$renderer.push(`<
|
|
18863
|
-
|
|
18864
|
-
|
|
18865
|
-
|
|
18866
|
-
|
|
18867
|
-
|
|
18868
|
-
|
|
18869
|
-
|
|
18870
|
-
|
|
18871
|
-
|
|
18872
|
-
|
|
18873
|
-
|
|
18874
|
-
$$renderer.push(
|
|
18875
|
-
|
|
18876
|
-
|
|
18877
|
-
|
|
18878
|
-
|
|
18879
|
-
|
|
18880
|
-
|
|
18881
|
-
|
|
18882
|
-
|
|
18883
|
-
|
|
18884
|
-
|
|
18885
|
-
|
|
18886
|
-
|
|
19144
|
+
let $$settled = true;
|
|
19145
|
+
let $$inner_renderer;
|
|
19146
|
+
function $$render_inner($$renderer) {
|
|
19147
|
+
$$renderer.push(`<div data-svelte="NewChatButton" class="flex w-full flex-col items-start">`);
|
|
19148
|
+
if (alertInline) {
|
|
19149
|
+
$$renderer.push("<!--[0-->");
|
|
19150
|
+
SelectionAlert($$renderer, {
|
|
19151
|
+
get alert() {
|
|
19152
|
+
return alert;
|
|
19153
|
+
},
|
|
19154
|
+
set alert($$value) {
|
|
19155
|
+
alert = $$value;
|
|
19156
|
+
$$settled = false;
|
|
19157
|
+
}
|
|
19158
|
+
});
|
|
19159
|
+
} else $$renderer.push("<!--[-1-->");
|
|
19160
|
+
$$renderer.push(`<!--]--> `);
|
|
19161
|
+
$$renderer.push("<!--[-1-->");
|
|
19162
|
+
$$renderer.push(`<!--]--> <div${attr_class(clsx(compact ? "flex w-full items-stretch gap-2" : "inline-flex items-stretch gap-2"))}><button type="button" data-testid="new-chat-button"${attr_class(clsx(compact ? "new-chat min-w-0 flex-1 px-3 py-1.5 text-xs font-medium" : "new-chat px-3 py-1.5 text-sm font-medium"), "svelte-kdd6rb")}${attr("disabled", creating, true)}>${escape_html(t(newchat1))}</button> `);
|
|
19163
|
+
if (onreplace !== null) {
|
|
19164
|
+
$$renderer.push("<!--[0-->");
|
|
19165
|
+
$$renderer.push(`<div class="seg-group svelte-kdd6rb" role="group"${attr("aria-label", t(chatbuttonmode2))} data-testid="chat-mode-toggle"><button type="button"${attr_class("seg left svelte-kdd6rb", void 0, { "on": true })}${attr("disabled", creating, true)}${attr("aria-pressed", true)}${attr("title", t(addnextchataspanel4))} data-testid="chat-mode-add">`);
|
|
19166
|
+
Plus($$renderer, {
|
|
19167
|
+
size: 12,
|
|
19168
|
+
"aria-hidden": "true"
|
|
19169
|
+
});
|
|
19170
|
+
$$renderer.push(`<!----></button> <button type="button"${attr_class("seg right svelte-kdd6rb", void 0, { "on": replaceMode })}${attr("disabled", creating, true)}${attr("aria-pressed", replaceMode)}${attr("title", t(replacefocusedpanel2))} data-testid="chat-mode-replace">`);
|
|
19171
|
+
Replace($$renderer, {
|
|
19172
|
+
size: 12,
|
|
19173
|
+
"aria-hidden": "true"
|
|
19174
|
+
});
|
|
19175
|
+
$$renderer.push(`<!----></button></div>`);
|
|
19176
|
+
} else $$renderer.push("<!--[-1-->");
|
|
19177
|
+
$$renderer.push(`<!--]--></div></div>`);
|
|
19178
|
+
}
|
|
19179
|
+
do {
|
|
19180
|
+
$$settled = true;
|
|
19181
|
+
$$inner_renderer = $$renderer.copy();
|
|
19182
|
+
$$render_inner($$inner_renderer);
|
|
19183
|
+
} while (!$$settled);
|
|
19184
|
+
$$renderer.subsume($$inner_renderer);
|
|
18887
19185
|
bind_props($$props, { alert });
|
|
18888
19186
|
});
|
|
18889
19187
|
}
|
|
@@ -18922,7 +19220,7 @@ function ThemeToggle($$renderer, $$props) {
|
|
|
18922
19220
|
}
|
|
18923
19221
|
//#endregion
|
|
18924
19222
|
//#region package.json
|
|
18925
|
-
var version = "0.
|
|
19223
|
+
var version = "0.11.0";
|
|
18926
19224
|
var dsh = { "webVersion": "0.2.2-rc.1" };
|
|
18927
19225
|
//#endregion
|
|
18928
19226
|
//#region src/lib/version.ts
|
|
@@ -19935,53 +20233,39 @@ function SidebarPromptSync($$renderer, $$props) {
|
|
|
19935
20233
|
//#endregion
|
|
19936
20234
|
//#region src/lib/components/sessions/SidebarFooter.svelte
|
|
19937
20235
|
function SidebarFooter($$renderer, $$props) {
|
|
19938
|
-
|
|
19939
|
-
|
|
19940
|
-
|
|
19941
|
-
|
|
19942
|
-
|
|
19943
|
-
|
|
19944
|
-
|
|
19945
|
-
|
|
19946
|
-
|
|
19947
|
-
|
|
19948
|
-
|
|
19949
|
-
|
|
19950
|
-
|
|
19951
|
-
|
|
19952
|
-
|
|
19953
|
-
|
|
19954
|
-
|
|
19955
|
-
|
|
19956
|
-
|
|
19957
|
-
|
|
19958
|
-
|
|
19959
|
-
|
|
19960
|
-
|
|
19961
|
-
|
|
19962
|
-
|
|
19963
|
-
|
|
19964
|
-
|
|
19965
|
-
|
|
19966
|
-
|
|
19967
|
-
|
|
19968
|
-
|
|
19969
|
-
|
|
19970
|
-
|
|
19971
|
-
X($$renderer, {
|
|
19972
|
-
size: 11,
|
|
19973
|
-
"aria-hidden": "true"
|
|
19974
|
-
});
|
|
19975
|
-
$$renderer.push(`<!----></button></p>`);
|
|
19976
|
-
} else $$renderer.push("<!--[-1-->");
|
|
19977
|
-
$$renderer.push(`<!--]--> <div class="footer-create-strip svelte-x4ykdr"><span class="footer-version svelte-x4ykdr" data-testid="sidebar-footer-version"><span>v${escape_html(APP_VERSION)}</span> <span>v${escape_html(DSH_VERSION)}</span></span> `);
|
|
19978
|
-
NewChatButton($$renderer, {
|
|
19979
|
-
compact: true,
|
|
19980
|
-
agent: preset,
|
|
19981
|
-
workspace,
|
|
19982
|
-
oncreated,
|
|
19983
|
-
onreplace,
|
|
19984
|
-
alertInline: false,
|
|
20236
|
+
/**
|
|
20237
|
+
* SidebarFooter — the sidebar's bottom strip under the session spine
|
|
20238
|
+
* (extracted from SessionsList, 2026-09-04): the broadcast box
|
|
20239
|
+
* (SidebarPromptSync, ADR "The Prompt Sync" — owns its own visibility,
|
|
20240
|
+
* renders nothing unchecked) above the "+ New chat" button, armed with
|
|
20241
|
+
* the filter pills' selection so a create rides the armed dimensions.
|
|
20242
|
+
* The create row opens with the version chip (v{APP_VERSION},
|
|
20243
|
+
* 2026-09-07) — the running edition reads where new chats start —
|
|
20244
|
+
* (The circled-A About trigger moved to AppSidebarHeader's prefix,
|
|
20245
|
+
* 2026-09 — its dialog still portals to document.body, BC-7.)
|
|
20246
|
+
* Purely presentational: create logic, the creating lock, the
|
|
20247
|
+
* Add/Replace verb toggle, and the alerts stay in NewChatButton; this
|
|
20248
|
+
* shell carries the resolved selection and reports writes upward
|
|
20249
|
+
* (oncreated / onreplace). Styles are self-contained — the parent's
|
|
20250
|
+
* scoped rules cannot reach this component's DOM, so the border-top
|
|
20251
|
+
* frame travels with it.
|
|
20252
|
+
*/
|
|
20253
|
+
/** The NewChatButton's missing-selection alert, HOSTED here: rendered
|
|
20254
|
+
* as footer-create's FIRST child so it spans the full row (version +
|
|
20255
|
+
* button + language menu wrap beneath) instead of squeezing into the
|
|
20256
|
+
* button's slot between the version chip and the language menu. */
|
|
20257
|
+
let createAlert = false;
|
|
20258
|
+
let { preset, workspace, oncreated, onreplace } = $$props;
|
|
20259
|
+
let $$settled = true;
|
|
20260
|
+
let $$inner_renderer;
|
|
20261
|
+
function $$render_inner($$renderer) {
|
|
20262
|
+
$$renderer.push(`<div data-svelte="SidebarFooter" class="footer svelte-x4ykdr">`);
|
|
20263
|
+
SidebarPromptSync($$renderer);
|
|
20264
|
+
$$renderer.push(`<!----> <div class="footer-create svelte-x4ykdr">`);
|
|
20265
|
+
if (createAlert) {
|
|
20266
|
+
$$renderer.push("<!--[0-->");
|
|
20267
|
+
SelectionAlert($$renderer, {
|
|
20268
|
+
inset: true,
|
|
19985
20269
|
get alert() {
|
|
19986
20270
|
return createAlert;
|
|
19987
20271
|
},
|
|
@@ -19990,19 +20274,35 @@ function SidebarFooter($$renderer, $$props) {
|
|
|
19990
20274
|
$$settled = false;
|
|
19991
20275
|
}
|
|
19992
20276
|
});
|
|
19993
|
-
|
|
19994
|
-
|
|
19995
|
-
|
|
19996
|
-
|
|
19997
|
-
|
|
19998
|
-
|
|
19999
|
-
|
|
20000
|
-
|
|
20001
|
-
|
|
20002
|
-
|
|
20003
|
-
|
|
20004
|
-
|
|
20005
|
-
|
|
20277
|
+
} else $$renderer.push("<!--[-1-->");
|
|
20278
|
+
$$renderer.push(`<!--]--> <div class="footer-create-strip svelte-x4ykdr"><span class="footer-version svelte-x4ykdr" data-testid="sidebar-footer-version"><span>v${escape_html(APP_VERSION)}</span> <span>v${escape_html(DSH_VERSION)}</span></span> `);
|
|
20279
|
+
NewChatButton($$renderer, {
|
|
20280
|
+
compact: true,
|
|
20281
|
+
agent: preset,
|
|
20282
|
+
workspace,
|
|
20283
|
+
oncreated,
|
|
20284
|
+
onreplace,
|
|
20285
|
+
alertInline: false,
|
|
20286
|
+
get alert() {
|
|
20287
|
+
return createAlert;
|
|
20288
|
+
},
|
|
20289
|
+
set alert($$value) {
|
|
20290
|
+
createAlert = $$value;
|
|
20291
|
+
$$settled = false;
|
|
20292
|
+
}
|
|
20293
|
+
});
|
|
20294
|
+
$$renderer.push(`<!----> `);
|
|
20295
|
+
ThemeToggle($$renderer);
|
|
20296
|
+
$$renderer.push(`<!----> `);
|
|
20297
|
+
LanguageMenu($$renderer);
|
|
20298
|
+
$$renderer.push(`<!----></div></div></div>`);
|
|
20299
|
+
}
|
|
20300
|
+
do {
|
|
20301
|
+
$$settled = true;
|
|
20302
|
+
$$inner_renderer = $$renderer.copy();
|
|
20303
|
+
$$render_inner($$inner_renderer);
|
|
20304
|
+
} while (!$$settled);
|
|
20305
|
+
$$renderer.subsume($$inner_renderer);
|
|
20006
20306
|
}
|
|
20007
20307
|
//#endregion
|
|
20008
20308
|
//#region src/lib/components/sessions/SessionsList.svelte
|
|
@@ -25865,13 +26165,11 @@ function ToolsAndStatusHeader($$renderer, $$props) {
|
|
|
25865
26165
|
$$renderer.push(`<!--]--> `);
|
|
25866
26166
|
if (agent) {
|
|
25867
26167
|
$$renderer.push("<!--[0-->");
|
|
25868
|
-
$$renderer
|
|
25869
|
-
|
|
25870
|
-
|
|
25871
|
-
|
|
25872
|
-
"aria-hidden": "true"
|
|
26168
|
+
AgentChip($$renderer, {
|
|
26169
|
+
label: agent,
|
|
26170
|
+
testid: "agent-chip",
|
|
26171
|
+
title: agentId ? `agent preset — ${agentId}` : void 0
|
|
25873
26172
|
});
|
|
25874
|
-
$$renderer.push(`<!----> ${escape_html(agent)}</span>`);
|
|
25875
26173
|
} else $$renderer.push("<!--[-1-->");
|
|
25876
26174
|
$$renderer.push(`<!--]--> `);
|
|
25877
26175
|
PlanModeChip($$renderer, { plan });
|
|
@@ -25899,7 +26197,7 @@ function ToolsAndStatusHeader($$renderer, $$props) {
|
|
|
25899
26197
|
//#region src/lib/components/conversation/header/BrowserButton.svelte
|
|
25900
26198
|
function BrowserButton($$renderer, $$props) {
|
|
25901
26199
|
$$renderer.component(($$renderer) => {
|
|
25902
|
-
$$renderer.push(`<button data-svelte="BrowserButton" type="button" class="inline-flex items-center gap-1 rounded border border-surface-border px-1.5 py-0.5 text-xs hover:bg-surface-active" data-testid="open-browser"${attr("title", browseropentitle2() + " · " + browserheadedhint2())}>`);
|
|
26200
|
+
$$renderer.push(`<button data-svelte="BrowserButton" type="button" class="inline-flex items-center gap-1 rounded border border-surface-border px-1.5 py-0.5 text-xs hover:bg-surface-active svelte-sxu2u" data-testid="open-browser"${attr("title", browseropentitle2() + " · " + browserheadedhint2())}>`);
|
|
25903
26201
|
Globe($$renderer, {
|
|
25904
26202
|
size: 12,
|
|
25905
26203
|
class: "shrink-0",
|
|
@@ -34767,7 +35065,9 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
34767
35065
|
*/
|
|
34768
35066
|
var CHORD_WINDOW_MS = 2e3;
|
|
34769
35067
|
var IDLE_CHORD = {
|
|
34770
|
-
armed: false
|
|
35068
|
+
armed: false,
|
|
35069
|
+
prefix: "s"
|
|
35070
|
+
};
|
|
34771
35071
|
/** Verb → label (the palette renders these; D16). */
|
|
34772
35072
|
var CHORD_VERB_LABELS = {
|
|
34773
35073
|
a: "Close agent extras (terminals + sub-agents + explorers)",
|
|
@@ -34856,7 +35156,7 @@ function ChordPalette($$renderer, $$props) {
|
|
|
34856
35156
|
*/
|
|
34857
35157
|
/** The 10s idle window before the palette closes itself (D18). */
|
|
34858
35158
|
const IDLE_CLOSE_MS = 1e4;
|
|
34859
|
-
let { open, rows} = $$props;
|
|
35159
|
+
let { open, rows, prefix} = $$props;
|
|
34860
35160
|
let now = Date.now();
|
|
34861
35161
|
const elapsed = derived(() => open ? Math.max(0, Math.min(now - (Date.now()), IDLE_CLOSE_MS)) : 0);
|
|
34862
35162
|
const pct = derived(() => Math.round(elapsed() / IDLE_CLOSE_MS * 100));
|
|
@@ -34864,7 +35164,7 @@ function ChordPalette($$renderer, $$props) {
|
|
|
34864
35164
|
const barColor = derived(() => inActionWindow() ? "bg-green-300" : "bg-yellow-200");
|
|
34865
35165
|
if (open) {
|
|
34866
35166
|
$$renderer.push("<!--[0-->");
|
|
34867
|
-
$$renderer.push(`<div data-svelte="ChordPalette" class="fixed top-1/2 left-1/2 z-50 w-72 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-black/10 bg-white/95 px-3 py-2 shadow-lg backdrop-blur dark:border-white/15 dark:bg-neutral-900/95" data-testid="chord-palette"${attr("data-chord-elapsed", elapsed())} aria-live="polite"${attr("aria-label", t(() => chordarmedlabel2()))}><div class="mb-1 text-[10px] font-semibold tracking-wide text-neutral-400 uppercase">${escape_html(t(() => chordarmedtitle2()))}</div> <ul class="m-0 list-none space-y-0.5 p-0"><!--[-->`);
|
|
35167
|
+
$$renderer.push(`<div data-svelte="ChordPalette" class="fixed top-1/2 left-1/2 z-50 w-72 -translate-x-1/2 -translate-y-1/2 rounded-lg border border-black/10 bg-white/95 px-3 py-2 shadow-lg backdrop-blur dark:border-white/15 dark:bg-neutral-900/95" data-testid="chord-palette"${attr("data-chord-elapsed", elapsed())} aria-live="polite"${attr("aria-label", t(() => chordarmedlabel2({ prefix })))}><div class="mb-1 text-[10px] font-semibold tracking-wide text-neutral-400 uppercase">${escape_html(t(() => chordarmedtitle2({ prefix })))}</div> <ul class="m-0 list-none space-y-0.5 p-0"><!--[-->`);
|
|
34868
35168
|
const each_array = ensure_array_like(rows);
|
|
34869
35169
|
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
34870
35170
|
let row = each_array[$$index];
|
|
@@ -35294,6 +35594,39 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35294
35594
|
if (select) selectedTab = jobCount() - 1;
|
|
35295
35595
|
}
|
|
35296
35596
|
registerJobTabOpener((owner, jobId, label) => openJobTab(owner, jobId, label));
|
|
35597
|
+
/** Destroy ONE session through the prune verb, healing once on a stale
|
|
35598
|
+
* token (reattach → retry the SAME DELETE). Pruned records never come
|
|
35599
|
+
* back to list() — the corpse pile is the thing this chord removes. */
|
|
35600
|
+
async function destroyRowSession(assigned) {
|
|
35601
|
+
const destroy = (token) => fetch("/api/terminal/" + assigned.sessionId + "/delete", {
|
|
35602
|
+
method: "DELETE",
|
|
35603
|
+
headers: { "content-type": "application/json" },
|
|
35604
|
+
body: JSON.stringify({ token })
|
|
35605
|
+
});
|
|
35606
|
+
let res = await destroy(assigned.token).catch(() => void 0);
|
|
35607
|
+
if (res && res.status === 403) {
|
|
35608
|
+
const re = await fetch("/api/terminal/" + assigned.sessionId + "/reattach", { method: "POST" }).catch(() => void 0);
|
|
35609
|
+
const body = re && re.ok ? await re.json().catch(() => null) : null;
|
|
35610
|
+
if (body?.token) res = await destroy(body.token).catch(() => void 0);
|
|
35611
|
+
}
|
|
35612
|
+
}
|
|
35613
|
+
/** The chord's action (D6): destroy every session of the SELECTED tab
|
|
35614
|
+
* (split included, live or exited — the server kills, no shell
|
|
35615
|
+
* cooperation required), then remove the tab WITHOUT re-killing (the
|
|
35616
|
+
* entries are already pruned; closeTab's send-close would only 404).
|
|
35617
|
+
* Last tab ⇒ onShellExit removes the desk slot (the panel close). */
|
|
35618
|
+
async function clearTabChord() {
|
|
35619
|
+
const tabIndex = selectedTab;
|
|
35620
|
+
const tab = tabs[tabIndex];
|
|
35621
|
+
if (!tab) return;
|
|
35622
|
+
for (const row of tab.rows) if (row.assigned) await destroyRowSession(row.assigned);
|
|
35623
|
+
tabs.splice(tabIndex, 1);
|
|
35624
|
+
if (tabs.length === 0) {
|
|
35625
|
+
onShellExit?.();
|
|
35626
|
+
return;
|
|
35627
|
+
}
|
|
35628
|
+
selectedTab = Math.min(tabIndex, tabs.length - 1);
|
|
35629
|
+
}
|
|
35297
35630
|
/** The truthful badge grammar (2026-11-04 amendment, ADR D5e/D5f):
|
|
35298
35631
|
* the shell-tab badge pairs the strip position with the session id —
|
|
35299
35632
|
* single row assigned → 'T1:7' (registry id t-7 → 7); split →
|
|
@@ -35342,6 +35675,10 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35342
35675
|
* tab and selects it; --split-down stacks a row on the SELECTED tab.
|
|
35343
35676
|
* Both open a fresh session (never re-attach). */
|
|
35344
35677
|
function applyAction(action) {
|
|
35678
|
+
if (action === "clear-tab") {
|
|
35679
|
+
clearTabChord();
|
|
35680
|
+
return;
|
|
35681
|
+
}
|
|
35345
35682
|
(async () => {
|
|
35346
35683
|
const row = await mintSession();
|
|
35347
35684
|
if (!row) return;
|
|
@@ -38986,7 +39323,8 @@ function _page($$renderer, $$props) {
|
|
|
38986
39323
|
});
|
|
38987
39324
|
ChordPalette($$renderer, {
|
|
38988
39325
|
open: chord.armed,
|
|
38989
|
-
rows: chordPaletteRows()
|
|
39326
|
+
rows: chordPaletteRows(),
|
|
39327
|
+
prefix: chord.prefix});
|
|
38990
39328
|
$$renderer.push(`<!----> <div data-svelte="ConversationPage" class="flex h-dvh conversation-page svelte-1uha8ag">`);
|
|
38991
39329
|
if (!sidebarInZoom()) {
|
|
38992
39330
|
$$renderer.push("<!--[0-->");
|
|
@@ -39056,4 +39394,4 @@ function _page($$renderer, $$props) {
|
|
|
39056
39394
|
}
|
|
39057
39395
|
|
|
39058
39396
|
export { _page as default };
|
|
39059
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
39397
|
+
//# sourceMappingURL=_page.svelte.js-DlLAziUY.js.map
|