@deepseek-insight/dsi 0.10.0 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/glass-dsi/scripts/_connect.mjs +68 -9
- package/.agents/skills/glass-dsi/scripts/glass.mjs +6 -5
- package/.agents/skills/glass-url/scripts/_connect.mjs +59 -10
- package/.agents/skills/glass-url/scripts/glass-url.mjs +5 -4
- package/README.md +44 -15
- package/bin/dsi.mjs +44 -7
- package/bin/lib/dev-mode.mjs +8 -5
- package/bin/lib/glass-browser-bootstrap.mjs +132 -0
- package/bin/lib/mcp-banner.mjs +26 -0
- package/bin/lib/zai-patch.mjs +3 -1
- package/build/client/_app/immutable/assets/0.B2rul4Mk.css +2 -0
- package/build/client/_app/immutable/assets/2.glyfXGzi.css +1 -0
- package/build/client/_app/immutable/chunks/{Bu2owQS4.js → BodLd2is.js} +1 -1
- package/build/client/_app/immutable/chunks/Cy4hfhN-.js +1 -0
- package/build/client/_app/immutable/chunks/D17XAauH.js +2 -0
- package/build/client/_app/immutable/chunks/FY34R_78.js +1 -0
- package/build/client/_app/immutable/entry/{app.DjLAWmJH.js → app.ClaEF2lH.js} +2 -2
- package/build/client/_app/immutable/entry/start.CU6iOT39.js +1 -0
- package/build/client/_app/immutable/nodes/{1.w6Hz6-dJ.js → 1.CSTMQTZ7.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.CFmqEODJ.js → 2.CdbJFHUF.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-DRFhzPda.js → internal2.js-XxZ8wzRE.js} +3 -3
- package/build/server/chunks/chunks/{registry.js-CWnRQ4vx.js → registry.js-ClhrzR6O.js} +145 -56
- 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-kZHonU4N.js → state.js-D5zsYmjz.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-sXqf-okw.js → _server.ts.js-B-Ns5pyR.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-Byj9ApJh.js → _server.ts.js-CzXe-sTr.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/closetab/{_server.ts.js-DOIsrzvg.js → _server.ts.js-Ct465_rt.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/element/{_server.ts.js-Cq3gmRfE.js → _server.ts.js-6mdytkvM.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/history/{_server.ts.js-BGSLIV0t.js → _server.ts.js-BwUPVQGx.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-8slca75-.js → _server.ts.js-8Nq3JxSo.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-CpbdTYds.js → _server.ts.js-B9eKtj1-.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-Bls9LtLY.js → _server.ts.js-CHJs9Qbl.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/opentab/{_server.ts.js-DqNi_iW_.js → _server.ts.js-B32Ow0Y2.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-DuXWwo7i.js → _server.ts.js-Cpv4BolN.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-DXfqBDEw.js → _server.ts.js-DJqJImSI.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/tabs/{_server.ts.js-Bgnl8lYs.js → _server.ts.js-Bm6IAZF6.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-FHmQVbrv.js → _server.ts.js-B1VVzfCk.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/_id_/zoom/{_server.ts.js-BV4cBtSA.js → _server.ts.js-CoUpqHeq.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-4vgkwh7v.js → _server.ts.js-D9hK0CG8.js} +8 -5
- 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-BKhpJygh.js → _error.svelte.js-TrOSxb0e.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-BlbGdGej.js → _page.svelte.js-BUuXoaje.js} +706 -158
- package/build/server/chunks/{handler-BtG6aVza.js → handler-BOqY82LA.js} +3 -3
- package/build/server/chunks/{index.js-rGfUdWOY.js → index.js-M1GginY2.js} +3 -44
- package/build/server/chunks/{manifest.js-DwQ7BEt1.js → manifest.js-BEmwisii.js} +81 -67
- package/build/server/chunks/nodes/{0.js-Cum-Y-us.js → 0.js-Do4ZKaKe.js} +3 -3
- package/build/server/chunks/nodes/1.js-CRbdbfof.js +9 -0
- package/build/server/chunks/nodes/{2.js-ButkUErW.js → 2.js-BFX_zPfJ.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.uhYTRapi.css +0 -2
- package/build/client/_app/immutable/assets/2.D0QOh44D.css +0 -1
- package/build/client/_app/immutable/chunks/0Uk2rkmL.js +0 -1
- package/build/client/_app/immutable/chunks/BaH6C3xD.js +0 -2
- package/build/client/_app/immutable/chunks/DXba8Dom.js +0 -1
- package/build/client/_app/immutable/entry/start.D-t6KuoK.js +0 -1
- package/build/server/chunks/nodes/1.js-D0EwPqp_.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.DeDuCaDD.js → 0.CYP0vr1_.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-D5zsYmjz.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-XxZ8wzRE.js';
|
|
25
25
|
import '../../chunks/utils.js-CAdNO8Tu.js';
|
|
26
26
|
|
|
27
27
|
//#region src/lib/paraglide/messages/abort.js
|
|
@@ -924,21 +924,21 @@ var browserback1 = ((inputs = {}, options = {}) => {
|
|
|
924
924
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
925
925
|
/** @typedef {{}} Browserchiplabel2Inputs */
|
|
926
926
|
var en_browserchiplabel2 = () => {
|
|
927
|
-
return
|
|
927
|
+
return `Browser`;
|
|
928
928
|
};
|
|
929
929
|
var zh_browserchiplabel2 = () => {
|
|
930
|
-
return
|
|
930
|
+
return `浏览器`;
|
|
931
931
|
};
|
|
932
932
|
var id_browserchiplabel2 = () => {
|
|
933
|
-
return
|
|
933
|
+
return `Peramban`;
|
|
934
934
|
};
|
|
935
935
|
var es_browserchiplabel2 = () => {
|
|
936
|
-
return
|
|
936
|
+
return `Navegador`;
|
|
937
937
|
};
|
|
938
938
|
/**
|
|
939
939
|
* | output |
|
|
940
940
|
* | --- |
|
|
941
|
-
* | "
|
|
941
|
+
* | "Browser" |
|
|
942
942
|
*
|
|
943
943
|
* @param {Browserchiplabel2Inputs} inputs
|
|
944
944
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
@@ -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 */
|
|
@@ -984,6 +1048,70 @@ var browserclosedelete2 = ((inputs = {}, options = {}) => {
|
|
|
984
1048
|
return en_browserclosedelete2();
|
|
985
1049
|
});
|
|
986
1050
|
//#endregion
|
|
1051
|
+
//#region src/lib/paraglide/messages/browsercopied1.js
|
|
1052
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1053
|
+
/** @typedef {{}} Browsercopied1Inputs */
|
|
1054
|
+
var en_browsercopied1 = () => {
|
|
1055
|
+
return `Copied`;
|
|
1056
|
+
};
|
|
1057
|
+
var zh_browsercopied1 = () => {
|
|
1058
|
+
return `已复制`;
|
|
1059
|
+
};
|
|
1060
|
+
var id_browsercopied1 = () => {
|
|
1061
|
+
return `Tersalin`;
|
|
1062
|
+
};
|
|
1063
|
+
var es_browsercopied1 = () => {
|
|
1064
|
+
return `Copiado`;
|
|
1065
|
+
};
|
|
1066
|
+
/**
|
|
1067
|
+
* | output |
|
|
1068
|
+
* | --- |
|
|
1069
|
+
* | "Copied" |
|
|
1070
|
+
*
|
|
1071
|
+
* @param {Browsercopied1Inputs} inputs
|
|
1072
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1073
|
+
* @returns {LocalizedString}
|
|
1074
|
+
*/
|
|
1075
|
+
var browsercopied1 = ((inputs = {}, options = {}) => {
|
|
1076
|
+
const locale = options.locale ?? getLocale();
|
|
1077
|
+
if (locale === "zh") return zh_browsercopied1();
|
|
1078
|
+
if (locale === "id") return id_browsercopied1();
|
|
1079
|
+
if (locale === "es") return es_browsercopied1();
|
|
1080
|
+
return en_browsercopied1();
|
|
1081
|
+
});
|
|
1082
|
+
//#endregion
|
|
1083
|
+
//#region src/lib/paraglide/messages/browsercopyurl2.js
|
|
1084
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1085
|
+
/** @typedef {{}} Browsercopyurl2Inputs */
|
|
1086
|
+
var en_browsercopyurl2 = () => {
|
|
1087
|
+
return `Copy focused tab URL`;
|
|
1088
|
+
};
|
|
1089
|
+
var zh_browsercopyurl2 = () => {
|
|
1090
|
+
return `复制当前标签页 URL`;
|
|
1091
|
+
};
|
|
1092
|
+
var id_browsercopyurl2 = () => {
|
|
1093
|
+
return `Salin URL tab yang difokus`;
|
|
1094
|
+
};
|
|
1095
|
+
var es_browsercopyurl2 = () => {
|
|
1096
|
+
return `Copiar la URL de la pestaña enfocada`;
|
|
1097
|
+
};
|
|
1098
|
+
/**
|
|
1099
|
+
* | output |
|
|
1100
|
+
* | --- |
|
|
1101
|
+
* | "Copy focused tab URL" |
|
|
1102
|
+
*
|
|
1103
|
+
* @param {Browsercopyurl2Inputs} inputs
|
|
1104
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1105
|
+
* @returns {LocalizedString}
|
|
1106
|
+
*/
|
|
1107
|
+
var browsercopyurl2 = ((inputs = {}, options = {}) => {
|
|
1108
|
+
const locale = options.locale ?? getLocale();
|
|
1109
|
+
if (locale === "zh") return zh_browsercopyurl2();
|
|
1110
|
+
if (locale === "id") return id_browsercopyurl2();
|
|
1111
|
+
if (locale === "es") return es_browsercopyurl2();
|
|
1112
|
+
return en_browsercopyurl2();
|
|
1113
|
+
});
|
|
1114
|
+
//#endregion
|
|
987
1115
|
//#region src/lib/paraglide/messages/browserctxcopyimage3.js
|
|
988
1116
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
989
1117
|
/** @typedef {{}} Browserctxcopyimage3Inputs */
|
|
@@ -1176,6 +1304,38 @@ var browserforward1 = ((inputs = {}, options = {}) => {
|
|
|
1176
1304
|
return en_browserforward1();
|
|
1177
1305
|
});
|
|
1178
1306
|
//#endregion
|
|
1307
|
+
//#region src/lib/paraglide/messages/browserheadedhint2.js
|
|
1308
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1309
|
+
/** @typedef {{}} Browserheadedhint2Inputs */
|
|
1310
|
+
var en_browserheadedhint2 = () => {
|
|
1311
|
+
return `Shift opens a HEADED glass - a visible window on a disposable profile`;
|
|
1312
|
+
};
|
|
1313
|
+
var zh_browserheadedhint2 = () => {
|
|
1314
|
+
return `Shift opens a HEADED glass - a visible window on a disposable profile`;
|
|
1315
|
+
};
|
|
1316
|
+
var id_browserheadedhint2 = () => {
|
|
1317
|
+
return `Shift opens a HEADED glass - a visible window on a disposable profile`;
|
|
1318
|
+
};
|
|
1319
|
+
var es_browserheadedhint2 = () => {
|
|
1320
|
+
return `Shift opens a HEADED glass - a visible window on a disposable profile`;
|
|
1321
|
+
};
|
|
1322
|
+
/**
|
|
1323
|
+
* | output |
|
|
1324
|
+
* | --- |
|
|
1325
|
+
* | "Shift opens a HEADED glass - a visible window on a disposable profile" |
|
|
1326
|
+
*
|
|
1327
|
+
* @param {Browserheadedhint2Inputs} inputs
|
|
1328
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1329
|
+
* @returns {LocalizedString}
|
|
1330
|
+
*/
|
|
1331
|
+
var browserheadedhint2 = ((inputs = {}, options = {}) => {
|
|
1332
|
+
const locale = options.locale ?? getLocale();
|
|
1333
|
+
if (locale === "zh") return zh_browserheadedhint2();
|
|
1334
|
+
if (locale === "id") return id_browserheadedhint2();
|
|
1335
|
+
if (locale === "es") return es_browserheadedhint2();
|
|
1336
|
+
return en_browserheadedhint2();
|
|
1337
|
+
});
|
|
1338
|
+
//#endregion
|
|
1179
1339
|
//#region src/lib/paraglide/messages/browserlaunching1.js
|
|
1180
1340
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1181
1341
|
/** @typedef {{}} Browserlaunching1Inputs */
|
|
@@ -1754,66 +1914,162 @@ var choosefolder1 = ((inputs = {}, options = {}) => {
|
|
|
1754
1914
|
//#endregion
|
|
1755
1915
|
//#region src/lib/paraglide/messages/chordarmedlabel2.js
|
|
1756
1916
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1757
|
-
/** @typedef {{}} Chordarmedlabel2Inputs */
|
|
1758
|
-
var en_chordarmedlabel2 = () => {
|
|
1759
|
-
return `Alt
|
|
1917
|
+
/** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedlabel2Inputs */
|
|
1918
|
+
var en_chordarmedlabel2 = (i) => {
|
|
1919
|
+
return `Alt+${i?.prefix} chord armed — next key`;
|
|
1760
1920
|
};
|
|
1761
|
-
var zh_chordarmedlabel2 = () => {
|
|
1762
|
-
return `Alt
|
|
1921
|
+
var zh_chordarmedlabel2 = (i) => {
|
|
1922
|
+
return `Alt+${i?.prefix} 组合键已就绪 — 下一个按键`;
|
|
1763
1923
|
};
|
|
1764
|
-
var id_chordarmedlabel2 = () => {
|
|
1765
|
-
return `Kord Alt
|
|
1924
|
+
var id_chordarmedlabel2 = (i) => {
|
|
1925
|
+
return `Kord Alt+${i?.prefix} armed — tombol berikutnya`;
|
|
1766
1926
|
};
|
|
1767
|
-
var es_chordarmedlabel2 = () => {
|
|
1768
|
-
return `Acordo Alt
|
|
1927
|
+
var es_chordarmedlabel2 = (i) => {
|
|
1928
|
+
return `Acordo Alt+${i?.prefix} armado — siguiente tecla`;
|
|
1769
1929
|
};
|
|
1770
1930
|
/**
|
|
1771
1931
|
* | output |
|
|
1772
1932
|
* | --- |
|
|
1773
|
-
* | "Alt+
|
|
1933
|
+
* | "Alt+{prefix} chord armed — next key" |
|
|
1774
1934
|
*
|
|
1775
1935
|
* @param {Chordarmedlabel2Inputs} inputs
|
|
1776
1936
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1777
1937
|
* @returns {LocalizedString}
|
|
1778
1938
|
*/
|
|
1779
|
-
var chordarmedlabel2 = ((inputs
|
|
1939
|
+
var chordarmedlabel2 = ((inputs, options = {}) => {
|
|
1780
1940
|
const locale = options.locale ?? getLocale();
|
|
1781
|
-
if (locale === "zh") return zh_chordarmedlabel2();
|
|
1782
|
-
if (locale === "id") return id_chordarmedlabel2();
|
|
1783
|
-
if (locale === "es") return es_chordarmedlabel2();
|
|
1784
|
-
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);
|
|
1785
1945
|
});
|
|
1786
1946
|
//#endregion
|
|
1787
1947
|
//#region src/lib/paraglide/messages/chordarmedtitle2.js
|
|
1788
1948
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1789
|
-
/** @typedef {{}} Chordarmedtitle2Inputs */
|
|
1790
|
-
var en_chordarmedtitle2 = () => {
|
|
1791
|
-
return `Alt
|
|
1949
|
+
/** @typedef {{ prefix: NonNullable<unknown> }} Chordarmedtitle2Inputs */
|
|
1950
|
+
var en_chordarmedtitle2 = (i) => {
|
|
1951
|
+
return `Alt+${i?.prefix} armed`;
|
|
1792
1952
|
};
|
|
1793
|
-
var zh_chordarmedtitle2 = () => {
|
|
1794
|
-
return `Alt
|
|
1953
|
+
var zh_chordarmedtitle2 = (i) => {
|
|
1954
|
+
return `Alt+${i?.prefix} 已就绪`;
|
|
1795
1955
|
};
|
|
1796
|
-
var id_chordarmedtitle2 = () => {
|
|
1797
|
-
return `Alt
|
|
1956
|
+
var id_chordarmedtitle2 = (i) => {
|
|
1957
|
+
return `Alt+${i?.prefix} diarmed`;
|
|
1798
1958
|
};
|
|
1799
|
-
var es_chordarmedtitle2 = () => {
|
|
1800
|
-
return `Alt
|
|
1959
|
+
var es_chordarmedtitle2 = (i) => {
|
|
1960
|
+
return `Alt+${i?.prefix} armado`;
|
|
1801
1961
|
};
|
|
1802
1962
|
/**
|
|
1803
1963
|
* | output |
|
|
1804
1964
|
* | --- |
|
|
1805
|
-
* | "Alt+
|
|
1965
|
+
* | "Alt+{prefix} armed" |
|
|
1806
1966
|
*
|
|
1807
1967
|
* @param {Chordarmedtitle2Inputs} inputs
|
|
1808
1968
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1809
1969
|
* @returns {LocalizedString}
|
|
1810
1970
|
*/
|
|
1811
|
-
var chordarmedtitle2 = ((inputs
|
|
1971
|
+
var chordarmedtitle2 = ((inputs, options = {}) => {
|
|
1812
1972
|
const locale = options.locale ?? getLocale();
|
|
1813
|
-
if (locale === "zh") return zh_chordarmedtitle2();
|
|
1814
|
-
if (locale === "id") return id_chordarmedtitle2();
|
|
1815
|
-
if (locale === "es") return es_chordarmedtitle2();
|
|
1816
|
-
return en_chordarmedtitle2();
|
|
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 = {}) => {
|
|
2036
|
+
const locale = options.locale ?? getLocale();
|
|
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();
|
|
1817
2073
|
});
|
|
1818
2074
|
//#endregion
|
|
1819
2075
|
//#region src/lib/paraglide/messages/clearbtn1.js
|
|
@@ -7612,21 +7868,21 @@ var movepanelup2 = ((inputs = {}, options = {}) => {
|
|
|
7612
7868
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
7613
7869
|
/** @typedef {{}} Needagent1Inputs */
|
|
7614
7870
|
var en_needagent1 = () => {
|
|
7615
|
-
return `You cannot chat unless you select an Agent
|
|
7871
|
+
return `You cannot chat unless you select an Agent`;
|
|
7616
7872
|
};
|
|
7617
7873
|
var zh_needagent1 = () => {
|
|
7618
|
-
return
|
|
7874
|
+
return `必须先选择代理才能聊天`;
|
|
7619
7875
|
};
|
|
7620
7876
|
var id_needagent1 = () => {
|
|
7621
|
-
return `Anda tidak bisa chat kecuali memilih Agent
|
|
7877
|
+
return `Anda tidak bisa chat kecuali memilih Agent`;
|
|
7622
7878
|
};
|
|
7623
7879
|
var es_needagent1 = () => {
|
|
7624
|
-
return `No puedes chatear sin seleccionar un Agente
|
|
7880
|
+
return `No puedes chatear sin seleccionar un Agente`;
|
|
7625
7881
|
};
|
|
7626
7882
|
/**
|
|
7627
7883
|
* | output |
|
|
7628
7884
|
* | --- |
|
|
7629
|
-
* | "You cannot chat unless you select an Agent
|
|
7885
|
+
* | "You cannot chat unless you select an Agent" |
|
|
7630
7886
|
*
|
|
7631
7887
|
* @param {Needagent1Inputs} inputs
|
|
7632
7888
|
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
@@ -9592,6 +9848,38 @@ var plusadd1 = ((inputs = {}, options = {}) => {
|
|
|
9592
9848
|
return en_plusadd1();
|
|
9593
9849
|
});
|
|
9594
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
|
|
9595
9883
|
//#region src/lib/paraglide/messages/presetcustom1.js
|
|
9596
9884
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
9597
9885
|
/** @typedef {{}} Presetcustom1Inputs */
|
|
@@ -13208,6 +13496,38 @@ var terminaldisabled1 = ((inputs = {}, options = {}) => {
|
|
|
13208
13496
|
return en_terminaldisabled1();
|
|
13209
13497
|
});
|
|
13210
13498
|
//#endregion
|
|
13499
|
+
//#region src/lib/paraglide/messages/terminalfontslider2.js
|
|
13500
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
13501
|
+
/** @typedef {{}} Terminalfontslider2Inputs */
|
|
13502
|
+
var en_terminalfontslider2 = () => {
|
|
13503
|
+
return `terminal font size`;
|
|
13504
|
+
};
|
|
13505
|
+
var zh_terminalfontslider2 = () => {
|
|
13506
|
+
return `终端字号`;
|
|
13507
|
+
};
|
|
13508
|
+
var id_terminalfontslider2 = () => {
|
|
13509
|
+
return `ukuran font terminal`;
|
|
13510
|
+
};
|
|
13511
|
+
var es_terminalfontslider2 = () => {
|
|
13512
|
+
return `tamaño de fuente de la terminal`;
|
|
13513
|
+
};
|
|
13514
|
+
/**
|
|
13515
|
+
* | output |
|
|
13516
|
+
* | --- |
|
|
13517
|
+
* | "terminal font size" |
|
|
13518
|
+
*
|
|
13519
|
+
* @param {Terminalfontslider2Inputs} inputs
|
|
13520
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
13521
|
+
* @returns {LocalizedString}
|
|
13522
|
+
*/
|
|
13523
|
+
var terminalfontslider2 = ((inputs = {}, options = {}) => {
|
|
13524
|
+
const locale = options.locale ?? getLocale();
|
|
13525
|
+
if (locale === "zh") return zh_terminalfontslider2();
|
|
13526
|
+
if (locale === "id") return id_terminalfontslider2();
|
|
13527
|
+
if (locale === "es") return es_terminalfontslider2();
|
|
13528
|
+
return en_terminalfontslider2();
|
|
13529
|
+
});
|
|
13530
|
+
//#endregion
|
|
13211
13531
|
//#region src/lib/paraglide/messages/terminalopening1.js
|
|
13212
13532
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
13213
13533
|
/** @typedef {{}} Terminalopening1Inputs */
|
|
@@ -15864,13 +16184,18 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
15864
16184
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
15865
16185
|
browserBack: () => browserback1,
|
|
15866
16186
|
browserChipLabel: () => browserchiplabel2,
|
|
16187
|
+
browserCloneFallback: () => browserclonefallback2,
|
|
16188
|
+
browserCloneHint: () => browserclonehint2,
|
|
15867
16189
|
browserCloseDelete: () => browserclosedelete2,
|
|
16190
|
+
browserCopied: () => browsercopied1,
|
|
16191
|
+
browserCopyUrl: () => browsercopyurl2,
|
|
15868
16192
|
browserCtxCopyImage: () => browserctxcopyimage3,
|
|
15869
16193
|
browserCtxCopyLink: () => browserctxcopylink3,
|
|
15870
16194
|
browserCtxOpenImage: () => browserctxopenimage3,
|
|
15871
16195
|
browserCtxOpenLink: () => browserctxopenlink3,
|
|
15872
16196
|
browserCtxSendRightClick: () => browserctxsendrightclick4,
|
|
15873
16197
|
browserForward: () => browserforward1,
|
|
16198
|
+
browserHeadedHint: () => browserheadedhint2,
|
|
15874
16199
|
browserLaunching: () => browserlaunching1,
|
|
15875
16200
|
browserNewTab: () => browsernewtab2,
|
|
15876
16201
|
browserOpenTitle: () => browseropentitle2,
|
|
@@ -15891,6 +16216,9 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
15891
16216
|
chooseFolder: () => choosefolder1,
|
|
15892
16217
|
chordArmedLabel: () => chordarmedlabel2,
|
|
15893
16218
|
chordArmedTitle: () => chordarmedtitle2,
|
|
16219
|
+
chordTerminalClear: () => chordterminalclear2,
|
|
16220
|
+
chordTerminalNewTab: () => chordterminalnewtab3,
|
|
16221
|
+
chordTerminalSplitDown: () => chordterminalsplitdown3,
|
|
15894
16222
|
clearBtn: () => clearbtn1,
|
|
15895
16223
|
clearDateFilter: () => cleardatefilter2,
|
|
15896
16224
|
clearFilter: () => clearfilter1,
|
|
@@ -16135,6 +16463,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
16135
16463
|
pluginRackUninstall: () => pluginrackuninstall2,
|
|
16136
16464
|
pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
|
|
16137
16465
|
plusAdd: () => plusadd1,
|
|
16466
|
+
plusWorkspace: () => plusworkspace1,
|
|
16138
16467
|
presetCustom: () => presetcustom1,
|
|
16139
16468
|
presetFullAccess: () => presetfullaccess2,
|
|
16140
16469
|
presetFullAccessDesc: () => presetfullaccessdesc3,
|
|
@@ -16250,6 +16579,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
16250
16579
|
tags: () => tags,
|
|
16251
16580
|
terminalClosed: () => terminalclosed1,
|
|
16252
16581
|
terminalDisabled: () => terminaldisabled1,
|
|
16582
|
+
terminalFontSlider: () => terminalfontslider2,
|
|
16253
16583
|
terminalOpening: () => terminalopening1,
|
|
16254
16584
|
terminalPanelTitle: () => terminalpaneltitle2,
|
|
16255
16585
|
terminalSessionCap: () => terminalsessioncap2,
|
|
@@ -16367,13 +16697,18 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16367
16697
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
16368
16698
|
browserBack: () => browserback1,
|
|
16369
16699
|
browserChipLabel: () => browserchiplabel2,
|
|
16700
|
+
browserCloneFallback: () => browserclonefallback2,
|
|
16701
|
+
browserCloneHint: () => browserclonehint2,
|
|
16370
16702
|
browserCloseDelete: () => browserclosedelete2,
|
|
16703
|
+
browserCopied: () => browsercopied1,
|
|
16704
|
+
browserCopyUrl: () => browsercopyurl2,
|
|
16371
16705
|
browserCtxCopyImage: () => browserctxcopyimage3,
|
|
16372
16706
|
browserCtxCopyLink: () => browserctxcopylink3,
|
|
16373
16707
|
browserCtxOpenImage: () => browserctxopenimage3,
|
|
16374
16708
|
browserCtxOpenLink: () => browserctxopenlink3,
|
|
16375
16709
|
browserCtxSendRightClick: () => browserctxsendrightclick4,
|
|
16376
16710
|
browserForward: () => browserforward1,
|
|
16711
|
+
browserHeadedHint: () => browserheadedhint2,
|
|
16377
16712
|
browserLaunching: () => browserlaunching1,
|
|
16378
16713
|
browserNewTab: () => browsernewtab2,
|
|
16379
16714
|
browserOpenTitle: () => browseropentitle2,
|
|
@@ -16394,6 +16729,9 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16394
16729
|
chooseFolder: () => choosefolder1,
|
|
16395
16730
|
chordArmedLabel: () => chordarmedlabel2,
|
|
16396
16731
|
chordArmedTitle: () => chordarmedtitle2,
|
|
16732
|
+
chordTerminalClear: () => chordterminalclear2,
|
|
16733
|
+
chordTerminalNewTab: () => chordterminalnewtab3,
|
|
16734
|
+
chordTerminalSplitDown: () => chordterminalsplitdown3,
|
|
16397
16735
|
clearBtn: () => clearbtn1,
|
|
16398
16736
|
clearDateFilter: () => cleardatefilter2,
|
|
16399
16737
|
clearFilter: () => clearfilter1,
|
|
@@ -16639,6 +16977,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16639
16977
|
pluginRackUninstall: () => pluginrackuninstall2,
|
|
16640
16978
|
pluginRackUninstallEmpty: () => pluginrackuninstallempty3,
|
|
16641
16979
|
plusAdd: () => plusadd1,
|
|
16980
|
+
plusWorkspace: () => plusworkspace1,
|
|
16642
16981
|
presetCustom: () => presetcustom1,
|
|
16643
16982
|
presetFullAccess: () => presetfullaccess2,
|
|
16644
16983
|
presetFullAccessDesc: () => presetfullaccessdesc3,
|
|
@@ -16754,6 +17093,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
16754
17093
|
tags: () => tags,
|
|
16755
17094
|
terminalClosed: () => terminalclosed1,
|
|
16756
17095
|
terminalDisabled: () => terminaldisabled1,
|
|
17096
|
+
terminalFontSlider: () => terminalfontslider2,
|
|
16757
17097
|
terminalOpening: () => terminalopening1,
|
|
16758
17098
|
terminalPanelTitle: () => terminalpaneltitle2,
|
|
16759
17099
|
terminalSessionCap: () => terminalsessioncap2,
|
|
@@ -17311,6 +17651,24 @@ function Git_branch($$renderer, $$props) {
|
|
|
17311
17651
|
]));
|
|
17312
17652
|
}
|
|
17313
17653
|
//#endregion
|
|
17654
|
+
//#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/globe.svelte
|
|
17655
|
+
function Globe($$renderer, $$props) {
|
|
17656
|
+
let { $$slots, $$events, ...props } = $$props;
|
|
17657
|
+
Icon($$renderer, spread_props([
|
|
17658
|
+
{ name: "globe" },
|
|
17659
|
+
props,
|
|
17660
|
+
{ iconNode: [
|
|
17661
|
+
["circle", {
|
|
17662
|
+
"cx": "12",
|
|
17663
|
+
"cy": "12",
|
|
17664
|
+
"r": "10"
|
|
17665
|
+
}],
|
|
17666
|
+
["path", { "d": "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }],
|
|
17667
|
+
["path", { "d": "M2 12h20" }]
|
|
17668
|
+
] }
|
|
17669
|
+
]));
|
|
17670
|
+
}
|
|
17671
|
+
//#endregion
|
|
17314
17672
|
//#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/hourglass.svelte
|
|
17315
17673
|
function Hourglass($$renderer, $$props) {
|
|
17316
17674
|
let { $$slots, $$events, ...props } = $$props;
|
|
@@ -18422,6 +18780,54 @@ function WorkspaceChip($$renderer, $$props) {
|
|
|
18422
18780
|
$$renderer.push(`<!--]--></span>`);
|
|
18423
18781
|
}
|
|
18424
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
|
|
18425
18831
|
//#region src/lib/services/jobs/roster-store.svelte.ts
|
|
18426
18832
|
function isLiveJob(job) {
|
|
18427
18833
|
return job.status === "running" || job.status === "stopping";
|
|
@@ -18668,6 +19074,39 @@ function JobRosterList($$renderer, $$props) {
|
|
|
18668
19074
|
});
|
|
18669
19075
|
}
|
|
18670
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
|
|
18671
19110
|
//#region src/lib/components/composer/NewChatButton.svelte
|
|
18672
19111
|
function NewChatButton($$renderer, $$props) {
|
|
18673
19112
|
$$renderer.component(($$renderer) => {
|
|
@@ -18702,34 +19141,47 @@ function NewChatButton($$renderer, $$props) {
|
|
|
18702
19141
|
/** Verb mode (2026-08-31): false = Add (default, never persisted),
|
|
18703
19142
|
* true = Replace. Session-local by design — every load starts Add. */
|
|
18704
19143
|
let replaceMode = false;
|
|
18705
|
-
$$
|
|
18706
|
-
|
|
18707
|
-
|
|
18708
|
-
$$renderer.push(`<
|
|
18709
|
-
|
|
18710
|
-
|
|
18711
|
-
|
|
18712
|
-
|
|
18713
|
-
|
|
18714
|
-
|
|
18715
|
-
|
|
18716
|
-
|
|
18717
|
-
|
|
18718
|
-
|
|
18719
|
-
|
|
18720
|
-
$$renderer.push(
|
|
18721
|
-
|
|
18722
|
-
|
|
18723
|
-
|
|
18724
|
-
|
|
18725
|
-
|
|
18726
|
-
|
|
18727
|
-
|
|
18728
|
-
|
|
18729
|
-
|
|
18730
|
-
|
|
18731
|
-
|
|
18732
|
-
|
|
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);
|
|
18733
19185
|
bind_props($$props, { alert });
|
|
18734
19186
|
});
|
|
18735
19187
|
}
|
|
@@ -18768,7 +19220,7 @@ function ThemeToggle($$renderer, $$props) {
|
|
|
18768
19220
|
}
|
|
18769
19221
|
//#endregion
|
|
18770
19222
|
//#region package.json
|
|
18771
|
-
var version = "0.10.
|
|
19223
|
+
var version = "0.10.2";
|
|
18772
19224
|
var dsh = { "webVersion": "0.2.2-rc.1" };
|
|
18773
19225
|
//#endregion
|
|
18774
19226
|
//#region src/lib/version.ts
|
|
@@ -19781,53 +20233,39 @@ function SidebarPromptSync($$renderer, $$props) {
|
|
|
19781
20233
|
//#endregion
|
|
19782
20234
|
//#region src/lib/components/sessions/SidebarFooter.svelte
|
|
19783
20235
|
function SidebarFooter($$renderer, $$props) {
|
|
19784
|
-
|
|
19785
|
-
|
|
19786
|
-
|
|
19787
|
-
|
|
19788
|
-
|
|
19789
|
-
|
|
19790
|
-
|
|
19791
|
-
|
|
19792
|
-
|
|
19793
|
-
|
|
19794
|
-
|
|
19795
|
-
|
|
19796
|
-
|
|
19797
|
-
|
|
19798
|
-
|
|
19799
|
-
|
|
19800
|
-
|
|
19801
|
-
|
|
19802
|
-
|
|
19803
|
-
|
|
19804
|
-
|
|
19805
|
-
|
|
19806
|
-
|
|
19807
|
-
|
|
19808
|
-
|
|
19809
|
-
|
|
19810
|
-
|
|
19811
|
-
|
|
19812
|
-
|
|
19813
|
-
|
|
19814
|
-
|
|
19815
|
-
|
|
19816
|
-
|
|
19817
|
-
X($$renderer, {
|
|
19818
|
-
size: 11,
|
|
19819
|
-
"aria-hidden": "true"
|
|
19820
|
-
});
|
|
19821
|
-
$$renderer.push(`<!----></button></p>`);
|
|
19822
|
-
} else $$renderer.push("<!--[-1-->");
|
|
19823
|
-
$$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> `);
|
|
19824
|
-
NewChatButton($$renderer, {
|
|
19825
|
-
compact: true,
|
|
19826
|
-
agent: preset,
|
|
19827
|
-
workspace,
|
|
19828
|
-
oncreated,
|
|
19829
|
-
onreplace,
|
|
19830
|
-
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,
|
|
19831
20269
|
get alert() {
|
|
19832
20270
|
return createAlert;
|
|
19833
20271
|
},
|
|
@@ -19836,19 +20274,35 @@ function SidebarFooter($$renderer, $$props) {
|
|
|
19836
20274
|
$$settled = false;
|
|
19837
20275
|
}
|
|
19838
20276
|
});
|
|
19839
|
-
|
|
19840
|
-
|
|
19841
|
-
|
|
19842
|
-
|
|
19843
|
-
|
|
19844
|
-
|
|
19845
|
-
|
|
19846
|
-
|
|
19847
|
-
|
|
19848
|
-
|
|
19849
|
-
|
|
19850
|
-
|
|
19851
|
-
|
|
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);
|
|
19852
20306
|
}
|
|
19853
20307
|
//#endregion
|
|
19854
20308
|
//#region src/lib/components/sessions/SessionsList.svelte
|
|
@@ -20136,6 +20590,13 @@ function panelPrefsKey(profile) {
|
|
|
20136
20590
|
return dsiKey(PANEL_PREFS_KEY, profile);
|
|
20137
20591
|
}
|
|
20138
20592
|
var PANEL_WORKSPACE_FILE_MAX_WIDTH = 1436;
|
|
20593
|
+
/** The single terminal-font bound site — load-side sanitizing and the
|
|
20594
|
+
* TermFontSlider both route through here; junk (non-finite) falls back
|
|
20595
|
+
* to TERM_FONT_DEFAULT. Mirrors clampTreePct's discipline. */
|
|
20596
|
+
function clampTermFontSize(px) {
|
|
20597
|
+
if (typeof px !== "number" || !Number.isFinite(px)) return 12;
|
|
20598
|
+
return Math.max(8, Math.min(20, Math.round(px)));
|
|
20599
|
+
}
|
|
20139
20600
|
/** The single treePct bound site — sanitize a stored or dragged value
|
|
20140
20601
|
* into [TREE_PCT_MIN, TREE_PCT_MAX]; junk (non-finite) falls back to
|
|
20141
20602
|
* TREE_PCT_DEFAULT. Mirrors clampPanelZoom's discipline. */
|
|
@@ -20245,7 +20706,8 @@ function defaultPanelPrefs() {
|
|
|
20245
20706
|
panelWidth: defaultPanelWidth(),
|
|
20246
20707
|
zoom: 1,
|
|
20247
20708
|
treePct: 30,
|
|
20248
|
-
explorerHidden: false
|
|
20709
|
+
explorerHidden: false,
|
|
20710
|
+
termFontSize: 12
|
|
20249
20711
|
};
|
|
20250
20712
|
}
|
|
20251
20713
|
/**
|
|
@@ -20417,13 +20879,15 @@ function loadPanelPrefs(profile) {
|
|
|
20417
20879
|
const zoom = typeof parsed.zoom === "number" && Number.isFinite(parsed.zoom) ? clampPanelZoom(parsed.zoom) : 1;
|
|
20418
20880
|
const treePct = typeof parsed.treePct === "number" && Number.isFinite(parsed.treePct) ? clampTreePct(parsed.treePct) : 30;
|
|
20419
20881
|
const explorerHidden = parsed.explorerHidden === true;
|
|
20882
|
+
const termFontSize = typeof parsed.termFontSize === "number" && Number.isFinite(parsed.termFontSize) ? clampTermFontSize(parsed.termFontSize) : 12;
|
|
20420
20883
|
return {
|
|
20421
20884
|
panels,
|
|
20422
20885
|
selectedPanelId: typeof parsed.selectedPanelId === "string" && panels.some((panel) => panel.id === parsed.selectedPanelId) ? parsed.selectedPanelId : panels[0]?.id ?? null,
|
|
20423
20886
|
panelWidth,
|
|
20424
20887
|
zoom,
|
|
20425
20888
|
treePct,
|
|
20426
|
-
explorerHidden
|
|
20889
|
+
explorerHidden,
|
|
20890
|
+
termFontSize
|
|
20427
20891
|
};
|
|
20428
20892
|
} catch {
|
|
20429
20893
|
return defaultPanelPrefs();
|
|
@@ -20735,6 +21199,9 @@ var PagePrefs = class {
|
|
|
20735
21199
|
/** Explorer hide/show (2026-10-31 toggle RCA): $state is REQUIRED —
|
|
20736
21200
|
* a plain field swallowed the toggle click silently (no re-render). */
|
|
20737
21201
|
explorerHidden = false;
|
|
21202
|
+
/** Terminal base font in px (ADR-0041 Am.4): the TermFontSlider's
|
|
21203
|
+
* truth. Zoom multiplies on top — this is the preference NUMBER. */
|
|
21204
|
+
termFontSize = 12;
|
|
20738
21205
|
/** Sidebar rail state (OCI ControlRail port). */
|
|
20739
21206
|
sidebarCollapsed = false;
|
|
20740
21207
|
sidebarWidth = 0;
|
|
@@ -20761,6 +21228,7 @@ var PagePrefs = class {
|
|
|
20761
21228
|
this.zoom = clampPanelZoom(floor.zoom);
|
|
20762
21229
|
this.treePct = clampTreePct(floor.treePct);
|
|
20763
21230
|
this.explorerHidden = floor.explorerHidden === true;
|
|
21231
|
+
this.termFontSize = clampTermFontSize(floor.termFontSize);
|
|
20764
21232
|
const sidebar = loadSidebarPrefs(profile);
|
|
20765
21233
|
this.sidebarCollapsed = sidebar.collapsed;
|
|
20766
21234
|
this.sidebarWidth = sidebar.width;
|
|
@@ -25697,20 +26165,18 @@ function ToolsAndStatusHeader($$renderer, $$props) {
|
|
|
25697
26165
|
$$renderer.push(`<!--]--> `);
|
|
25698
26166
|
if (agent) {
|
|
25699
26167
|
$$renderer.push("<!--[0-->");
|
|
25700
|
-
$$renderer
|
|
25701
|
-
|
|
25702
|
-
|
|
25703
|
-
|
|
25704
|
-
"aria-hidden": "true"
|
|
26168
|
+
AgentChip($$renderer, {
|
|
26169
|
+
label: agent,
|
|
26170
|
+
testid: "agent-chip",
|
|
26171
|
+
title: agentId ? `agent preset — ${agentId}` : void 0
|
|
25705
26172
|
});
|
|
25706
|
-
$$renderer.push(`<!----> ${escape_html(agent)}</span>`);
|
|
25707
26173
|
} else $$renderer.push("<!--[-1-->");
|
|
25708
26174
|
$$renderer.push(`<!--]--> `);
|
|
25709
26175
|
PlanModeChip($$renderer, { plan });
|
|
25710
26176
|
$$renderer.push(`<!----> <span class="inline-flex items-center gap-1 text-xs text-text-secondary" role="status"${attr("aria-label", isStreaming ? "running" : "idle")} data-testid="running-status"><span${attr_class("inline-block h-2 w-2 rounded-full", void 0, {
|
|
25711
26177
|
"bg-status-pass": isStreaming,
|
|
25712
26178
|
"bg-surface-border": !isStreaming
|
|
25713
|
-
})}></span>
|
|
26179
|
+
})}></span> <span class="narrow-hide">${escape_html(isStreaming ? "running" : "idle")}</span></span> `);
|
|
25714
26180
|
ForkButton($$renderer, {
|
|
25715
26181
|
subagent
|
|
25716
26182
|
});
|
|
@@ -25731,7 +26197,13 @@ function ToolsAndStatusHeader($$renderer, $$props) {
|
|
|
25731
26197
|
//#region src/lib/components/conversation/header/BrowserButton.svelte
|
|
25732
26198
|
function BrowserButton($$renderer, $$props) {
|
|
25733
26199
|
$$renderer.component(($$renderer) => {
|
|
25734
|
-
$$renderer.push(`<button data-svelte="BrowserButton" type="button" class="rounded border border-surface-border px-1.5 py-0.5 text-xs hover:bg-surface-active" data-testid="open-browser"${attr("title", browseropentitle2()
|
|
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())}>`);
|
|
26201
|
+
Globe($$renderer, {
|
|
26202
|
+
size: 12,
|
|
26203
|
+
class: "shrink-0",
|
|
26204
|
+
"aria-hidden": "true"
|
|
26205
|
+
});
|
|
26206
|
+
$$renderer.push(`<!----> <span class="narrow-hide">${escape_html(browserchiplabel2())}</span></button>`);
|
|
25735
26207
|
});
|
|
25736
26208
|
}
|
|
25737
26209
|
//#endregion
|
|
@@ -33066,7 +33538,7 @@ function openWorkspaceExplorer(sessionId, workspace) {
|
|
|
33066
33538
|
* browser panel across the floor — the terminal singleton rule (Terminal
|
|
33067
33539
|
* Desk ADR D2). A click on an open browser FOCUSES it; a miss inserts at
|
|
33068
33540
|
* the focused slot. */
|
|
33069
|
-
function openBrowserPanel(index, keepSelection = false, width, openedBy, sessionId) {
|
|
33541
|
+
function openBrowserPanel(index, keepSelection = false, width, openedBy, sessionId, headedOpen) {
|
|
33070
33542
|
const open = st.panels.find((p) => p.kind === "browser" && p.openedBy === openedBy);
|
|
33071
33543
|
if (open) {
|
|
33072
33544
|
st.selectedPanelId = open.id;
|
|
@@ -33074,7 +33546,7 @@ function openBrowserPanel(index, keepSelection = false, width, openedBy, session
|
|
|
33074
33546
|
}
|
|
33075
33547
|
const prevSelected = st.selectedPanelId;
|
|
33076
33548
|
const slot = index !== void 0 ? Math.max(0, Math.min(index, st.panels.length)) : openedBy !== void 0 ? glassFirstSlot(st.panels, openedBy) : insertionSlot();
|
|
33077
|
-
insertPanel(makeBrowserPanel(width, openedBy, sessionId), slot);
|
|
33549
|
+
insertPanel(makeBrowserPanel(width, openedBy, sessionId, headedOpen), slot);
|
|
33078
33550
|
if (keepSelection && prevSelected !== null && prevSelected !== void 0) {
|
|
33079
33551
|
if (st.panels.some((p) => p.id === prevSelected)) st.selectedPanelId = prevSelected;
|
|
33080
33552
|
}
|
|
@@ -33354,13 +33826,14 @@ function makePanel(sessionId, agentPreset) {
|
|
|
33354
33826
|
* chip clicks and legacy slots — the honest-slider preset.
|
|
33355
33827
|
* openedBy: the opener session's provenance, recorded ONCE at spawn and
|
|
33356
33828
|
* never rewritten (ADR-0036 D1/D2); undefined = no conversation context. */
|
|
33357
|
-
function makeBrowserPanel(width, openedBy, sessionId) {
|
|
33829
|
+
function makeBrowserPanel(width, openedBy, sessionId, headedOpen) {
|
|
33358
33830
|
return {
|
|
33359
33831
|
id: nextPanelId(),
|
|
33360
33832
|
kind: "browser",
|
|
33361
33833
|
width: clampPanelWidth(width ?? browserPanelWidth(), "browser"),
|
|
33362
33834
|
...openedBy !== void 0 ? { openedBy } : {},
|
|
33363
|
-
...sessionId !== void 0 ? { browserSessionId: sessionId } : {}
|
|
33835
|
+
...sessionId !== void 0 ? { browserSessionId: sessionId } : {},
|
|
33836
|
+
...headedOpen ? { headedOpen: true } : {}
|
|
33364
33837
|
};
|
|
33365
33838
|
}
|
|
33366
33839
|
function makeWorkspaceExplorerPanel(sessionId, root) {
|
|
@@ -34592,7 +35065,9 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
34592
35065
|
*/
|
|
34593
35066
|
var CHORD_WINDOW_MS = 2e3;
|
|
34594
35067
|
var IDLE_CHORD = {
|
|
34595
|
-
armed: false
|
|
35068
|
+
armed: false,
|
|
35069
|
+
prefix: "s"
|
|
35070
|
+
};
|
|
34596
35071
|
/** Verb → label (the palette renders these; D16). */
|
|
34597
35072
|
var CHORD_VERB_LABELS = {
|
|
34598
35073
|
a: "Close agent extras (terminals + sub-agents + explorers)",
|
|
@@ -34681,7 +35156,7 @@ function ChordPalette($$renderer, $$props) {
|
|
|
34681
35156
|
*/
|
|
34682
35157
|
/** The 10s idle window before the palette closes itself (D18). */
|
|
34683
35158
|
const IDLE_CLOSE_MS = 1e4;
|
|
34684
|
-
let { open, rows} = $$props;
|
|
35159
|
+
let { open, rows, prefix} = $$props;
|
|
34685
35160
|
let now = Date.now();
|
|
34686
35161
|
const elapsed = derived(() => open ? Math.max(0, Math.min(now - (Date.now()), IDLE_CLOSE_MS)) : 0);
|
|
34687
35162
|
const pct = derived(() => Math.round(elapsed() / IDLE_CLOSE_MS * 100));
|
|
@@ -34689,7 +35164,7 @@ function ChordPalette($$renderer, $$props) {
|
|
|
34689
35164
|
const barColor = derived(() => inActionWindow() ? "bg-green-300" : "bg-yellow-200");
|
|
34690
35165
|
if (open) {
|
|
34691
35166
|
$$renderer.push("<!--[0-->");
|
|
34692
|
-
$$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"><!--[-->`);
|
|
34693
35168
|
const each_array = ensure_array_like(rows);
|
|
34694
35169
|
for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
|
|
34695
35170
|
let row = each_array[$$index];
|
|
@@ -34701,6 +35176,26 @@ function ChordPalette($$renderer, $$props) {
|
|
|
34701
35176
|
});
|
|
34702
35177
|
}
|
|
34703
35178
|
//#endregion
|
|
35179
|
+
//#region src/lib/components/terminal/TermFontSlider.svelte
|
|
35180
|
+
function TermFontSlider($$renderer, $$props) {
|
|
35181
|
+
$$renderer.component(($$renderer) => {
|
|
35182
|
+
/**
|
|
35183
|
+
* TermFontSlider — the terminal base font control (ADR-0041 Am.4):
|
|
35184
|
+
* a right-aligned range input plus the px readout, mounted in the
|
|
35185
|
+
* TerminalPanel header row (the settle-badge's parent). Presentational
|
|
35186
|
+
* (house pattern, ZoomSlider 2026-11-02): the CALLER owns what a font
|
|
35187
|
+
* change means — the desk forwards px upward and the route persists
|
|
35188
|
+
* pagePrefs.termFontSize; the panel re-fires the pocket's refit.
|
|
35189
|
+
*
|
|
35190
|
+
* Contract: the prop is the base font in PX (TERM_FONT_MIN–MAX); the
|
|
35191
|
+
* slider renders and reports PX. The readout is exact at floor zoom 1
|
|
35192
|
+
* (zoom multiplies on top).
|
|
35193
|
+
*/
|
|
35194
|
+
let { font, label, testid, class: className = "" } = $$props;
|
|
35195
|
+
$$renderer.push(`<div data-svelte="TermFontSlider"${attr_class(`flex shrink-0 items-center gap-1 ${stringify(className)}`)}><input type="range" min="8" max="20" step="1"${attr("value", font)}${attr("data-testid", testid)}${attr("aria-label", label)}${attr("title", label)} class="h-1 w-16 accent-[var(--color-accent-purple)]"/> <span class="text-right font-bold tabular-nums text-[var(--color-accent-purple)]"${attr("data-testid", `${stringify(testid)}-readout`)}>${escape_html(font)}px</span></div>`);
|
|
35196
|
+
});
|
|
35197
|
+
}
|
|
35198
|
+
//#endregion
|
|
34704
35199
|
//#region src/lib/components/terminal/frame-state.ts
|
|
34705
35200
|
var initialTerminalPanelState = {
|
|
34706
35201
|
lastSettle: null,
|
|
@@ -34712,9 +35207,11 @@ var initialTerminalPanelState = {
|
|
|
34712
35207
|
//#region src/lib/components/terminal/TerminalPanel.svelte
|
|
34713
35208
|
function TerminalPanel($$renderer, $$props) {
|
|
34714
35209
|
$$renderer.component(($$renderer) => {
|
|
34715
|
-
let { onShellExit, assigned = null, onAssigned, zoom = 1 } = $$props;
|
|
35210
|
+
let { onShellExit, assigned = null, onAssigned, zoom = 1, termFontSize = 12, onFontChange } = $$props;
|
|
34716
35211
|
/** Coerced zoom — the pocket's single source (null-safe default 1). */
|
|
34717
35212
|
const pocketZoom = derived(() => zoom ?? 1);
|
|
35213
|
+
/** Coerced base font — the glyph-size preference (null-safe). */
|
|
35214
|
+
const baseFont = derived(() => termFontSize ?? 12);
|
|
34718
35215
|
let panelState = { ...initialTerminalPanelState };
|
|
34719
35216
|
Promise.resolve();
|
|
34720
35217
|
/** Focus the live xterm surface (the desk's ⌥+N tab shortcut,
|
|
@@ -34735,7 +35232,13 @@ function TerminalPanel($$renderer, $$props) {
|
|
|
34735
35232
|
} else $$renderer.push("<!--[-1-->");
|
|
34736
35233
|
$$renderer.push(`<!--]--> `);
|
|
34737
35234
|
$$renderer.push("<!--[-1-->");
|
|
34738
|
-
$$renderer.push(`<!--]--> <div class="grow"></div
|
|
35235
|
+
$$renderer.push(`<!--]--> <div class="grow"></div> `);
|
|
35236
|
+
TermFontSlider($$renderer, {
|
|
35237
|
+
font: baseFont(),
|
|
35238
|
+
label: t(terminalfontslider2),
|
|
35239
|
+
testid: "terminal-font-slider"
|
|
35240
|
+
});
|
|
35241
|
+
$$renderer.push(`<!----></div> `);
|
|
34739
35242
|
$$renderer.push("<!--[-1-->");
|
|
34740
35243
|
$$renderer.push(`<div class="relative min-h-72 grow overflow-hidden" data-testid="terminal-host" role="presentation"><div class="absolute inset-0 origin-top-left"${attr_style(pocketZoom() === 1 ? void 0 : `right: auto; bottom: auto; width: ${pocketZoom() * 100}%; height: ${pocketZoom() * 100}%; transform: scale(${1 / pocketZoom()});`)}><div class="absolute inset-0"></div></div></div> `);
|
|
34741
35244
|
$$renderer.push("<!--[-1-->");
|
|
@@ -35030,9 +35533,11 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35030
35533
|
* bare command behaves byte-identically to the pre-desk panel. */
|
|
35031
35534
|
/** Null = self-open (the panel runs its own ladder and reports back
|
|
35032
35535
|
* via onAssigned); set = the desk holds this session's lease. */
|
|
35033
|
-
let { onShellExit, restored = null, onMirror, zoom = 1 } = $$props;
|
|
35536
|
+
let { onShellExit, restored = null, onMirror, zoom = 1, termFontSize = 12, onFontChange } = $$props;
|
|
35034
35537
|
/** Coerced zoom — one pocket source for every row (null-safe default 1). */
|
|
35035
35538
|
const deskZoom = derived(() => zoom ?? 1);
|
|
35539
|
+
/** Coerced base font — one glyph-size source for every row. */
|
|
35540
|
+
const deskFont = derived(() => termFontSize ?? 12);
|
|
35036
35541
|
let nextKey = 1;
|
|
35037
35542
|
const mkKey = () => nextKey++;
|
|
35038
35543
|
const defaultTab = () => ({
|
|
@@ -35089,6 +35594,39 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35089
35594
|
if (select) selectedTab = jobCount() - 1;
|
|
35090
35595
|
}
|
|
35091
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
|
+
}
|
|
35092
35630
|
/** The truthful badge grammar (2026-11-04 amendment, ADR D5e/D5f):
|
|
35093
35631
|
* the shell-tab badge pairs the strip position with the session id —
|
|
35094
35632
|
* single row assigned → 'T1:7' (registry id t-7 → 7); split →
|
|
@@ -35137,6 +35675,10 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35137
35675
|
* tab and selects it; --split-down stacks a row on the SELECTED tab.
|
|
35138
35676
|
* Both open a fresh session (never re-attach). */
|
|
35139
35677
|
function applyAction(action) {
|
|
35678
|
+
if (action === "clear-tab") {
|
|
35679
|
+
clearTabChord();
|
|
35680
|
+
return;
|
|
35681
|
+
}
|
|
35140
35682
|
(async () => {
|
|
35141
35683
|
const row = await mintSession();
|
|
35142
35684
|
if (!row) return;
|
|
@@ -35282,6 +35824,8 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
35282
35824
|
TerminalPanel($$renderer, {
|
|
35283
35825
|
assigned: row.assigned,
|
|
35284
35826
|
zoom: deskZoom(),
|
|
35827
|
+
termFontSize: deskFont(),
|
|
35828
|
+
onFontChange: (px) => onFontChange?.(px),
|
|
35285
35829
|
onAssigned: (sessionId, token) => recordAssigned(row, sessionId, token),
|
|
35286
35830
|
onShellExit: () => removeRow(i, row)
|
|
35287
35831
|
});
|
|
@@ -35601,8 +36145,8 @@ function BrowserHeader($$renderer, $$props) {
|
|
|
35601
36145
|
UrlCopy($$renderer, {
|
|
35602
36146
|
class: "flex h-6 w-6 shrink-0 items-center justify-center rounded border border-surface-border bg-surface text-surface-muted hover:bg-surface-active disabled:opacity-40",
|
|
35603
36147
|
copied,
|
|
35604
|
-
copiedLabel:
|
|
35605
|
-
label:
|
|
36148
|
+
copiedLabel: browsercopied1(),
|
|
36149
|
+
label: browsercopyurl2(),
|
|
35606
36150
|
testid: "browser-copy-url",
|
|
35607
36151
|
disabled: !copyUrl});
|
|
35608
36152
|
$$renderer.push(`<!----> `);
|
|
@@ -38588,6 +39132,8 @@ function _page($$renderer, $$props) {
|
|
|
38588
39132
|
TerminalDesk($$renderer, {
|
|
38589
39133
|
restored: panel.desk ?? null,
|
|
38590
39134
|
zoom: floorPanelId ? pagePrefs.zoom : 1,
|
|
39135
|
+
termFontSize: pagePrefs.termFontSize,
|
|
39136
|
+
onFontChange: (px) => pagePrefs.termFontSize = clampTermFontSize(px),
|
|
38591
39137
|
onMirror: (m) => {
|
|
38592
39138
|
terminalDeskMirrors[panel.id] = m;
|
|
38593
39139
|
},
|
|
@@ -38603,6 +39149,7 @@ function _page($$renderer, $$props) {
|
|
|
38603
39149
|
removePanel(panel.id);
|
|
38604
39150
|
},
|
|
38605
39151
|
openedBy: panel.openedBy,
|
|
39152
|
+
headedOpen: "headedOpen" in panel ? panel.headedOpen === true : false,
|
|
38606
39153
|
parentTitle: panel.openedBy ? panelTitleFor(panel.openedBy) ?? panel.openedBy : null,
|
|
38607
39154
|
depth: panel.openedBy ? lineageFacts().depthById.get(panel.openedBy) ?? 0 : 0});
|
|
38608
39155
|
} else if (panel.kind === "injected-doc") {
|
|
@@ -38726,7 +39273,7 @@ function _page($$renderer, $$props) {
|
|
|
38726
39273
|
a2aRows: a2aRowsFor(p.sessionId),
|
|
38727
39274
|
a2aTitles: spineTitles(),
|
|
38728
39275
|
onOpenExplorer: openWorkspaceExplorer,
|
|
38729
|
-
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(void 0, false, void 0, p.sessionId),
|
|
39276
|
+
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : (shift) => openBrowserPanel(void 0, false, void 0, p.sessionId, void 0, shift),
|
|
38730
39277
|
focusComposer: p.id === focusComposerId(),
|
|
38731
39278
|
oncomposerfocus: () => clearFocusComposer(),
|
|
38732
39279
|
focused: p.id === selectedPanelId()
|
|
@@ -38755,7 +39302,7 @@ function _page($$renderer, $$props) {
|
|
|
38755
39302
|
a2aTitles: spineTitles(),
|
|
38756
39303
|
onNeedCold: (sid) => void ensureCold(sid),
|
|
38757
39304
|
onOpenExplorer: openWorkspaceExplorer,
|
|
38758
|
-
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(void 0, false, void 0, p.sessionId),
|
|
39305
|
+
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : (shift) => openBrowserPanel(void 0, false, void 0, p.sessionId, void 0, shift),
|
|
38759
39306
|
focusComposer: p.id === focusComposerId(),
|
|
38760
39307
|
oncomposerfocus: () => clearFocusComposer(),
|
|
38761
39308
|
focused: p.id === selectedPanelId()
|
|
@@ -38776,7 +39323,8 @@ function _page($$renderer, $$props) {
|
|
|
38776
39323
|
});
|
|
38777
39324
|
ChordPalette($$renderer, {
|
|
38778
39325
|
open: chord.armed,
|
|
38779
|
-
rows: chordPaletteRows()
|
|
39326
|
+
rows: chordPaletteRows(),
|
|
39327
|
+
prefix: chord.prefix});
|
|
38780
39328
|
$$renderer.push(`<!----> <div data-svelte="ConversationPage" class="flex h-dvh conversation-page svelte-1uha8ag">`);
|
|
38781
39329
|
if (!sidebarInZoom()) {
|
|
38782
39330
|
$$renderer.push("<!--[0-->");
|
|
@@ -38846,4 +39394,4 @@ function _page($$renderer, $$props) {
|
|
|
38846
39394
|
}
|
|
38847
39395
|
|
|
38848
39396
|
export { _page as default };
|
|
38849
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
39397
|
+
//# sourceMappingURL=_page.svelte.js-BUuXoaje.js.map
|