@deepseek-insight/dsi 0.6.21 → 0.7.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/bin/dsi.mjs +16 -8
- package/bin/lib/dev-mode.mjs +6 -2
- package/build/client/_app/immutable/assets/0.CrT3Lf0L.css +2 -0
- package/build/client/_app/immutable/chunks/{DygY_IXG.js → CFofWD1C.js} +1 -1
- package/build/client/_app/immutable/chunks/CW7JStOk.js +1 -0
- package/build/client/_app/immutable/chunks/{BtiOY3LQ.js → CzXb6qus.js} +2 -2
- package/build/client/_app/immutable/chunks/DwWy6K0V.js +1 -0
- package/build/client/_app/immutable/entry/{app.a14BvSUo.js → app.DID8VW1I.js} +2 -2
- package/build/client/_app/immutable/entry/start.CkxDcwJy.js +1 -0
- package/build/client/_app/immutable/nodes/{1.BKoLqRXA.js → 1.2U7ECroT.js} +1 -1
- package/build/client/_app/immutable/nodes/2.D1lz0hMu.js +337 -0
- package/build/client/_app/version.json +1 -1
- package/build/handler.js +4 -4
- package/build/index.js +4 -4
- package/build/server/chunks/chunks/{db.js-DRhjT6xK.js → db.js-BmnKaIBo.js} +2 -2
- package/build/server/chunks/chunks/{db2.js-DUta2B-n.js → db2.js-CpSDQEUB.js} +2 -2
- package/build/server/chunks/chunks/{dsh-connection.js-DL5qjlq2.js → dsh-connection.js-CE6s1mIM.js} +2 -2
- package/build/server/chunks/chunks/{git-probe.js-6ARRicD2.js → git-probe.js-DBbLffkp.js} +2 -2
- package/build/server/chunks/chunks/{insight-config.js-CA-iT3lB.js → insight-config.js-DZBwKFH9.js} +31 -2
- package/build/server/chunks/chunks/{internal2.js-Bcxjr5x2.js → internal2.js-DgxNmZhS.js} +2 -2
- package/build/server/chunks/chunks/registry.js-D0ldrcNB.js +577 -0
- package/build/server/chunks/chunks/{registry.js-G1hzOje_.js → registry2.js-D3Pr1Rv9.js} +2 -2
- package/build/server/chunks/chunks/{state.js-ez_uUx9I.js → state.js-DPoVCoAg.js} +2 -2
- package/build/server/chunks/chunks/{watcher.js-Dogr6xsl.js → watcher.js-Ck2BsXQf.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-CpeC2QLb.js → _server.ts.js-B7qOvtA5.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-BkLuKDZr.js → _server.ts.js-DBLFNFXT.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-BOyrp9zt.js → _server.ts.js-COyQSOOR.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/close/_server.ts.js-CJjvHo1Z.js +32 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/input/_server.ts.js-_XEUfVid.js +78 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/_server.ts.js-e7j-kKSK.js +50 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/_server.ts.js-BYiU0Wvv.js +62 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/page/_server.ts.js-RL1-uaVR.js +33 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/_server.ts.js-Cxc2r0BD.js +74 -0
- package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/_server.ts.js-DQ1jgFuc.js +42 -0
- package/build/server/chunks/entries/endpoints/api/browser/_server.ts.js-DfbmPmUH.js +37 -0
- package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-BG78X__J.js → _server.ts.js-CfcgdS1G.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-Cae4x1c7.js → _server.ts.js-BOgNWE9k.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-hGmoSsDv.js → _server.ts.js-DExfzwju.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-BLb8o1cY.js → _server.ts.js-vuxSBOKD.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-BFeDKrPz.js → _server.ts.js-DYh0lUVR.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-DmSTTfI5.js → _server.ts.js-CzmMoP9-.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-Cus9XrC9.js → _server.ts.js-CXnfYfR4.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-DcrNU0_y.js → _server.ts.js-CF2s7GwI.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-CpuEcp6p.js → _server.ts.js-DKw9ktIO.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-CU9o8Tho.js → _server.ts.js-pT2AO2S0.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-LWw-YpVI.js → _server.ts.js-D4H2h6fc.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-BMMZlvr7.js → _server.ts.js-iwuADbdv.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DZ6qFrfm.js → _server.ts.js-C36DpiRX.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-CYt4aYoc.js → _server.ts.js-WApWfRu-.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-CPZuvN-_.js → _server.ts.js-B8DQEsx6.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-_SIiC8sn.js → _server.ts.js-B0ACEjPX.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-Dcfp7gSm.js → _server.ts.js-CmYfLvHD.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-CmxqUwLT.js → _server.ts.js-DrZveeFq.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-DCNKXRwy.js → _server.ts.js-C-nVpTN7.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-AURyR2ll.js → _server.ts.js-C-cuYV40.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-BVF36vTO.js → _server.ts.js-BoiybbwX.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-LX3JZbRr.js → _server.ts.js-DDqjDxoc.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-BJ0d199o.js → _server.ts.js-DG0MHUkj.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-BDy9jQXv.js → _server.ts.js-Cz4XSEfb.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DoTpSXIc.js → _server.ts.js-DV4wF7XG.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-BnfIobo7.js → _server.ts.js-X0mwkV_4.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-KRyjIODB.js → _server.ts.js-D_AEj6qx.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-bRLZ5TWI.js → _server.ts.js-Cj3S-2MC.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-ChzWZoFk.js → _server.ts.js-DuuhbcTE.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-DdH5QmPS.js → _server.ts.js-C72akYlH.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DwGQj520.js → _server.ts.js-CEO2aw-C.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/output/{_server.ts.js-m6Cug5hN.js → _server.ts.js-BNBxebgG.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/reattach/{_server.ts.js-wSsMKLiw.js → _server.ts.js-DDRJBGIr.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/send/{_server.ts.js-CTc5xP72.js → _server.ts.js-CA0vc_Cm.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/terminal/_id_/stream/{_server.ts.js-C8PLMU0Y.js → _server.ts.js-D6L8Gd_f.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-CwXC6Stk.js → _server.ts.js-BhR4Cblt.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-CWWi0aa8.js → _server.ts.js-BFdpm_he.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-Dc0g7HPl.js → _server.ts.js-D5eW-2fL.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-CvPoP9yH.js → _server.ts.js-iax8K9x8.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-f5Gk_lb6.js → _server.ts.js-CdfiRwgl.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-BMkKlCgS.js → _server.ts.js-CBU0ug30.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-DUL-2q1R.js → _server.ts.js-CLozZQT3.js} +4 -4
- package/build/server/chunks/entries/pages/{_error.svelte.js-DDQEX5e3.js → _error.svelte.js-B9CGiiZy.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.server.ts.js-DFRnK-I2.js → _page.server.ts.js-yB-zbLkm.js} +2 -2
- package/build/server/chunks/entries/pages/{_page.svelte.js-DrMNc6ih.js → _page.svelte.js-D3F2fiR4.js} +722 -48
- package/build/server/chunks/{handler-Cqw6zPgE.js → handler-CF16q5dY.js} +3 -3
- package/build/server/chunks/{index.js-CZ6hvqti.js → index.js-DsT3Sxoa.js} +2 -2
- package/build/server/chunks/{manifest.js-SFcYF8ua.js → manifest.js-CW2r9Rb1.js} +106 -50
- package/build/server/chunks/nodes/{0.js-BqYWZcQy.js → 0.js-gr8Z-ETs.js} +3 -3
- package/build/server/chunks/nodes/1.js-BrruRgxj.js +9 -0
- package/build/server/chunks/nodes/{2.js-CnybOb74.js → 2.js-Cif5vNvc.js} +6 -6
- package/package.json +4 -1
- package/template/.dsi/prompts.sqlite-shm +0 -0
- package/template/.dsi/prompts.sqlite-wal +0 -0
- package/build/client/_app/immutable/assets/0.BQzh2ktU.css +0 -2
- package/build/client/_app/immutable/chunks/6lkFuaQJ.js +0 -1
- package/build/client/_app/immutable/chunks/Ct20Yiq1.js +0 -1
- package/build/client/_app/immutable/entry/start.DwHZM5ia.js +0 -1
- package/build/client/_app/immutable/nodes/2.CSRBDmmw.js +0 -337
- package/build/server/chunks/nodes/1.js-CoGgQITW.js +0 -9
- /package/build/client/_app/immutable/nodes/{0.BE97Xr19.js → 0.oyzYR3-4.js} +0 -0
|
@@ -8,7 +8,7 @@ import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r
|
|
|
8
8
|
import { s as sanitizeWorkspaceProfile, d as dsiKey, t as themePrefs } from '../../chunks/theme-prefs.svelte.js-8CaWz46g.js';
|
|
9
9
|
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-D7wkLUkK.js';
|
|
10
10
|
import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
|
|
11
|
-
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-
|
|
11
|
+
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-DPoVCoAg.js';
|
|
12
12
|
import 'yaml';
|
|
13
13
|
import 'html-to-image';
|
|
14
14
|
import hljs from 'highlight.js/lib/core';
|
|
@@ -20,7 +20,7 @@ import xml from 'highlight.js/lib/languages/xml';
|
|
|
20
20
|
import css from 'highlight.js/lib/languages/css';
|
|
21
21
|
import '../../chunks/uneval.js-BJ9Qq2SF.js';
|
|
22
22
|
import '../../chunks/shared.js-HQ0rfhm4.js';
|
|
23
|
-
import '../../chunks/internal2.js-
|
|
23
|
+
import '../../chunks/internal2.js-DgxNmZhS.js';
|
|
24
24
|
import '../../chunks/exports.js-DH_tjtdv.js';
|
|
25
25
|
import '../../chunks/utils.js-CAdNO8Tu.js';
|
|
26
26
|
|
|
@@ -888,6 +888,326 @@ var broadcastsyncedto2 = ((inputs, options = {}) => {
|
|
|
888
888
|
return en_broadcastsyncedto2(inputs);
|
|
889
889
|
});
|
|
890
890
|
//#endregion
|
|
891
|
+
//#region src/lib/paraglide/messages/browserback1.js
|
|
892
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
893
|
+
/** @typedef {{}} Browserback1Inputs */
|
|
894
|
+
var en_browserback1 = () => {
|
|
895
|
+
return `Back`;
|
|
896
|
+
};
|
|
897
|
+
var zh_browserback1 = () => {
|
|
898
|
+
return `后退`;
|
|
899
|
+
};
|
|
900
|
+
var id_browserback1 = () => {
|
|
901
|
+
return `Kembali`;
|
|
902
|
+
};
|
|
903
|
+
var es_browserback1 = () => {
|
|
904
|
+
return `Atrás`;
|
|
905
|
+
};
|
|
906
|
+
/**
|
|
907
|
+
* | output |
|
|
908
|
+
* | --- |
|
|
909
|
+
* | "Back" |
|
|
910
|
+
*
|
|
911
|
+
* @param {Browserback1Inputs} inputs
|
|
912
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
913
|
+
* @returns {LocalizedString}
|
|
914
|
+
*/
|
|
915
|
+
var browserback1 = ((inputs = {}, options = {}) => {
|
|
916
|
+
const locale = options.locale ?? getLocale();
|
|
917
|
+
if (locale === "zh") return zh_browserback1();
|
|
918
|
+
if (locale === "id") return id_browserback1();
|
|
919
|
+
if (locale === "es") return es_browserback1();
|
|
920
|
+
return en_browserback1();
|
|
921
|
+
});
|
|
922
|
+
//#endregion
|
|
923
|
+
//#region src/lib/paraglide/messages/browserchiplabel2.js
|
|
924
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
925
|
+
/** @typedef {{}} Browserchiplabel2Inputs */
|
|
926
|
+
var en_browserchiplabel2 = () => {
|
|
927
|
+
return `⌖ Browser`;
|
|
928
|
+
};
|
|
929
|
+
var zh_browserchiplabel2 = () => {
|
|
930
|
+
return `⌖ 浏览器`;
|
|
931
|
+
};
|
|
932
|
+
var id_browserchiplabel2 = () => {
|
|
933
|
+
return `⌖ Peramban`;
|
|
934
|
+
};
|
|
935
|
+
var es_browserchiplabel2 = () => {
|
|
936
|
+
return `⌖ Navegador`;
|
|
937
|
+
};
|
|
938
|
+
/**
|
|
939
|
+
* | output |
|
|
940
|
+
* | --- |
|
|
941
|
+
* | "⌖ Browser" |
|
|
942
|
+
*
|
|
943
|
+
* @param {Browserchiplabel2Inputs} inputs
|
|
944
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
945
|
+
* @returns {LocalizedString}
|
|
946
|
+
*/
|
|
947
|
+
var browserchiplabel2 = ((inputs = {}, options = {}) => {
|
|
948
|
+
const locale = options.locale ?? getLocale();
|
|
949
|
+
if (locale === "zh") return zh_browserchiplabel2();
|
|
950
|
+
if (locale === "id") return id_browserchiplabel2();
|
|
951
|
+
if (locale === "es") return es_browserchiplabel2();
|
|
952
|
+
return en_browserchiplabel2();
|
|
953
|
+
});
|
|
954
|
+
//#endregion
|
|
955
|
+
//#region src/lib/paraglide/messages/browserforward1.js
|
|
956
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
957
|
+
/** @typedef {{}} Browserforward1Inputs */
|
|
958
|
+
var en_browserforward1 = () => {
|
|
959
|
+
return `Forward`;
|
|
960
|
+
};
|
|
961
|
+
var zh_browserforward1 = () => {
|
|
962
|
+
return `前进`;
|
|
963
|
+
};
|
|
964
|
+
var id_browserforward1 = () => {
|
|
965
|
+
return `Maju`;
|
|
966
|
+
};
|
|
967
|
+
var es_browserforward1 = () => {
|
|
968
|
+
return `Adelante`;
|
|
969
|
+
};
|
|
970
|
+
/**
|
|
971
|
+
* | output |
|
|
972
|
+
* | --- |
|
|
973
|
+
* | "Forward" |
|
|
974
|
+
*
|
|
975
|
+
* @param {Browserforward1Inputs} inputs
|
|
976
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
977
|
+
* @returns {LocalizedString}
|
|
978
|
+
*/
|
|
979
|
+
var browserforward1 = ((inputs = {}, options = {}) => {
|
|
980
|
+
const locale = options.locale ?? getLocale();
|
|
981
|
+
if (locale === "zh") return zh_browserforward1();
|
|
982
|
+
if (locale === "id") return id_browserforward1();
|
|
983
|
+
if (locale === "es") return es_browserforward1();
|
|
984
|
+
return en_browserforward1();
|
|
985
|
+
});
|
|
986
|
+
//#endregion
|
|
987
|
+
//#region src/lib/paraglide/messages/browserlaunching1.js
|
|
988
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
989
|
+
/** @typedef {{}} Browserlaunching1Inputs */
|
|
990
|
+
var en_browserlaunching1 = () => {
|
|
991
|
+
return `launching browser…`;
|
|
992
|
+
};
|
|
993
|
+
var zh_browserlaunching1 = () => {
|
|
994
|
+
return `正在启动浏览器…`;
|
|
995
|
+
};
|
|
996
|
+
var id_browserlaunching1 = () => {
|
|
997
|
+
return `meluncurkan peramban…`;
|
|
998
|
+
};
|
|
999
|
+
var es_browserlaunching1 = () => {
|
|
1000
|
+
return `iniciando navegador…`;
|
|
1001
|
+
};
|
|
1002
|
+
/**
|
|
1003
|
+
* | output |
|
|
1004
|
+
* | --- |
|
|
1005
|
+
* | "launching browser…" |
|
|
1006
|
+
*
|
|
1007
|
+
* @param {Browserlaunching1Inputs} inputs
|
|
1008
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1009
|
+
* @returns {LocalizedString}
|
|
1010
|
+
*/
|
|
1011
|
+
var browserlaunching1 = ((inputs = {}, options = {}) => {
|
|
1012
|
+
const locale = options.locale ?? getLocale();
|
|
1013
|
+
if (locale === "zh") return zh_browserlaunching1();
|
|
1014
|
+
if (locale === "id") return id_browserlaunching1();
|
|
1015
|
+
if (locale === "es") return es_browserlaunching1();
|
|
1016
|
+
return en_browserlaunching1();
|
|
1017
|
+
});
|
|
1018
|
+
//#endregion
|
|
1019
|
+
//#region src/lib/paraglide/messages/browseropentitle2.js
|
|
1020
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1021
|
+
/** @typedef {{}} Browseropentitle2Inputs */
|
|
1022
|
+
var en_browseropentitle2 = () => {
|
|
1023
|
+
return `Open the glass browser`;
|
|
1024
|
+
};
|
|
1025
|
+
var zh_browseropentitle2 = () => {
|
|
1026
|
+
return `打开玻璃浏览器`;
|
|
1027
|
+
};
|
|
1028
|
+
var id_browseropentitle2 = () => {
|
|
1029
|
+
return `Buka peramban kaca`;
|
|
1030
|
+
};
|
|
1031
|
+
var es_browseropentitle2 = () => {
|
|
1032
|
+
return `Abrir el navegador de cristal`;
|
|
1033
|
+
};
|
|
1034
|
+
/**
|
|
1035
|
+
* | output |
|
|
1036
|
+
* | --- |
|
|
1037
|
+
* | "Open the glass browser" |
|
|
1038
|
+
*
|
|
1039
|
+
* @param {Browseropentitle2Inputs} inputs
|
|
1040
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1041
|
+
* @returns {LocalizedString}
|
|
1042
|
+
*/
|
|
1043
|
+
var browseropentitle2 = ((inputs = {}, options = {}) => {
|
|
1044
|
+
const locale = options.locale ?? getLocale();
|
|
1045
|
+
if (locale === "zh") return zh_browseropentitle2();
|
|
1046
|
+
if (locale === "id") return id_browseropentitle2();
|
|
1047
|
+
if (locale === "es") return es_browseropentitle2();
|
|
1048
|
+
return en_browseropentitle2();
|
|
1049
|
+
});
|
|
1050
|
+
//#endregion
|
|
1051
|
+
//#region src/lib/paraglide/messages/browserpaneltitle2.js
|
|
1052
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1053
|
+
/** @typedef {{}} Browserpaneltitle2Inputs */
|
|
1054
|
+
var en_browserpaneltitle2 = () => {
|
|
1055
|
+
return `Browser`;
|
|
1056
|
+
};
|
|
1057
|
+
var zh_browserpaneltitle2 = () => {
|
|
1058
|
+
return `浏览器`;
|
|
1059
|
+
};
|
|
1060
|
+
var id_browserpaneltitle2 = () => {
|
|
1061
|
+
return `Peramban`;
|
|
1062
|
+
};
|
|
1063
|
+
var es_browserpaneltitle2 = () => {
|
|
1064
|
+
return `Navegador`;
|
|
1065
|
+
};
|
|
1066
|
+
/**
|
|
1067
|
+
* | output |
|
|
1068
|
+
* | --- |
|
|
1069
|
+
* | "Browser" |
|
|
1070
|
+
*
|
|
1071
|
+
* @param {Browserpaneltitle2Inputs} inputs
|
|
1072
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1073
|
+
* @returns {LocalizedString}
|
|
1074
|
+
*/
|
|
1075
|
+
var browserpaneltitle2 = ((inputs = {}, options = {}) => {
|
|
1076
|
+
const locale = options.locale ?? getLocale();
|
|
1077
|
+
if (locale === "zh") return zh_browserpaneltitle2();
|
|
1078
|
+
if (locale === "id") return id_browserpaneltitle2();
|
|
1079
|
+
if (locale === "es") return es_browserpaneltitle2();
|
|
1080
|
+
return en_browserpaneltitle2();
|
|
1081
|
+
});
|
|
1082
|
+
//#endregion
|
|
1083
|
+
//#region src/lib/paraglide/messages/browserreload1.js
|
|
1084
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1085
|
+
/** @typedef {{}} Browserreload1Inputs */
|
|
1086
|
+
var en_browserreload1 = () => {
|
|
1087
|
+
return `Reload`;
|
|
1088
|
+
};
|
|
1089
|
+
var zh_browserreload1 = () => {
|
|
1090
|
+
return `重新加载`;
|
|
1091
|
+
};
|
|
1092
|
+
var id_browserreload1 = () => {
|
|
1093
|
+
return `Muat ulang`;
|
|
1094
|
+
};
|
|
1095
|
+
var es_browserreload1 = () => {
|
|
1096
|
+
return `Recargar`;
|
|
1097
|
+
};
|
|
1098
|
+
/**
|
|
1099
|
+
* | output |
|
|
1100
|
+
* | --- |
|
|
1101
|
+
* | "Reload" |
|
|
1102
|
+
*
|
|
1103
|
+
* @param {Browserreload1Inputs} inputs
|
|
1104
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1105
|
+
* @returns {LocalizedString}
|
|
1106
|
+
*/
|
|
1107
|
+
var browserreload1 = ((inputs = {}, options = {}) => {
|
|
1108
|
+
const locale = options.locale ?? getLocale();
|
|
1109
|
+
if (locale === "zh") return zh_browserreload1();
|
|
1110
|
+
if (locale === "id") return id_browserreload1();
|
|
1111
|
+
if (locale === "es") return es_browserreload1();
|
|
1112
|
+
return en_browserreload1();
|
|
1113
|
+
});
|
|
1114
|
+
//#endregion
|
|
1115
|
+
//#region src/lib/paraglide/messages/browsersessionfailed2.js
|
|
1116
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1117
|
+
/** @typedef {{ reason: NonNullable<unknown> }} Browsersessionfailed2Inputs */
|
|
1118
|
+
var en_browsersessionfailed2 = (i) => {
|
|
1119
|
+
return `browser session failed ${i?.reason} — close and reopen the panel`;
|
|
1120
|
+
};
|
|
1121
|
+
var zh_browsersessionfailed2 = (i) => {
|
|
1122
|
+
return `浏览器会话失败${i?.reason} — 请关闭并重新打开面板`;
|
|
1123
|
+
};
|
|
1124
|
+
var id_browsersessionfailed2 = (i) => {
|
|
1125
|
+
return `sesi peramban gagal ${i?.reason} — tutup dan buka kembali panel`;
|
|
1126
|
+
};
|
|
1127
|
+
var es_browsersessionfailed2 = (i) => {
|
|
1128
|
+
return `la sesión del navegador falló ${i?.reason} — cierra y reabre el panel`;
|
|
1129
|
+
};
|
|
1130
|
+
/**
|
|
1131
|
+
* | output |
|
|
1132
|
+
* | --- |
|
|
1133
|
+
* | "browser session failed {reason} — close and reopen the panel" |
|
|
1134
|
+
*
|
|
1135
|
+
* @param {Browsersessionfailed2Inputs} inputs
|
|
1136
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1137
|
+
* @returns {LocalizedString}
|
|
1138
|
+
*/
|
|
1139
|
+
var browsersessionfailed2 = ((inputs, options = {}) => {
|
|
1140
|
+
const locale = options.locale ?? getLocale();
|
|
1141
|
+
if (locale === "zh") return zh_browsersessionfailed2(inputs);
|
|
1142
|
+
if (locale === "id") return id_browsersessionfailed2(inputs);
|
|
1143
|
+
if (locale === "es") return es_browsersessionfailed2(inputs);
|
|
1144
|
+
return en_browsersessionfailed2(inputs);
|
|
1145
|
+
});
|
|
1146
|
+
//#endregion
|
|
1147
|
+
//#region src/lib/paraglide/messages/browserurlplaceholder2.js
|
|
1148
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1149
|
+
/** @typedef {{}} Browserurlplaceholder2Inputs */
|
|
1150
|
+
var en_browserurlplaceholder2 = () => {
|
|
1151
|
+
return `Search or type a URL`;
|
|
1152
|
+
};
|
|
1153
|
+
var zh_browserurlplaceholder2 = () => {
|
|
1154
|
+
return `搜索或输入网址`;
|
|
1155
|
+
};
|
|
1156
|
+
var id_browserurlplaceholder2 = () => {
|
|
1157
|
+
return `Cari atau ketik URL`;
|
|
1158
|
+
};
|
|
1159
|
+
var es_browserurlplaceholder2 = () => {
|
|
1160
|
+
return `Buscar o escribir una URL`;
|
|
1161
|
+
};
|
|
1162
|
+
/**
|
|
1163
|
+
* | output |
|
|
1164
|
+
* | --- |
|
|
1165
|
+
* | "Search or type a URL" |
|
|
1166
|
+
*
|
|
1167
|
+
* @param {Browserurlplaceholder2Inputs} inputs
|
|
1168
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1169
|
+
* @returns {LocalizedString}
|
|
1170
|
+
*/
|
|
1171
|
+
var browserurlplaceholder2 = ((inputs = {}, options = {}) => {
|
|
1172
|
+
const locale = options.locale ?? getLocale();
|
|
1173
|
+
if (locale === "zh") return zh_browserurlplaceholder2();
|
|
1174
|
+
if (locale === "id") return id_browserurlplaceholder2();
|
|
1175
|
+
if (locale === "es") return es_browserurlplaceholder2();
|
|
1176
|
+
return en_browserurlplaceholder2();
|
|
1177
|
+
});
|
|
1178
|
+
//#endregion
|
|
1179
|
+
//#region src/lib/paraglide/messages/browserwaitingframes2.js
|
|
1180
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1181
|
+
/** @typedef {{}} Browserwaitingframes2Inputs */
|
|
1182
|
+
var en_browserwaitingframes2 = () => {
|
|
1183
|
+
return `waiting for frames…`;
|
|
1184
|
+
};
|
|
1185
|
+
var zh_browserwaitingframes2 = () => {
|
|
1186
|
+
return `等待画面帧…`;
|
|
1187
|
+
};
|
|
1188
|
+
var id_browserwaitingframes2 = () => {
|
|
1189
|
+
return `menunggu frame…`;
|
|
1190
|
+
};
|
|
1191
|
+
var es_browserwaitingframes2 = () => {
|
|
1192
|
+
return `esperando fotogramas…`;
|
|
1193
|
+
};
|
|
1194
|
+
/**
|
|
1195
|
+
* | output |
|
|
1196
|
+
* | --- |
|
|
1197
|
+
* | "waiting for frames…" |
|
|
1198
|
+
*
|
|
1199
|
+
* @param {Browserwaitingframes2Inputs} inputs
|
|
1200
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1201
|
+
* @returns {LocalizedString}
|
|
1202
|
+
*/
|
|
1203
|
+
var browserwaitingframes2 = ((inputs = {}, options = {}) => {
|
|
1204
|
+
const locale = options.locale ?? getLocale();
|
|
1205
|
+
if (locale === "zh") return zh_browserwaitingframes2();
|
|
1206
|
+
if (locale === "id") return id_browserwaitingframes2();
|
|
1207
|
+
if (locale === "es") return es_browserwaitingframes2();
|
|
1208
|
+
return en_browserwaitingframes2();
|
|
1209
|
+
});
|
|
1210
|
+
//#endregion
|
|
891
1211
|
//#region src/lib/paraglide/messages/cachehit1.js
|
|
892
1212
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
893
1213
|
/** @typedef {{}} Cachehit1Inputs */
|
|
@@ -14486,6 +14806,16 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
14486
14806
|
backToWorkspace: () => backtoworkspace2,
|
|
14487
14807
|
broadcast: () => broadcast,
|
|
14488
14808
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
14809
|
+
browserBack: () => browserback1,
|
|
14810
|
+
browserChipLabel: () => browserchiplabel2,
|
|
14811
|
+
browserForward: () => browserforward1,
|
|
14812
|
+
browserLaunching: () => browserlaunching1,
|
|
14813
|
+
browserOpenTitle: () => browseropentitle2,
|
|
14814
|
+
browserPanelTitle: () => browserpaneltitle2,
|
|
14815
|
+
browserReload: () => browserreload1,
|
|
14816
|
+
browserSessionFailed: () => browsersessionfailed2,
|
|
14817
|
+
browserUrlPlaceholder: () => browserurlplaceholder2,
|
|
14818
|
+
browserWaitingFrames: () => browserwaitingframes2,
|
|
14489
14819
|
cacheHit: () => cachehit1,
|
|
14490
14820
|
cachedInput: () => cachedinput1,
|
|
14491
14821
|
cancel: () => cancel,
|
|
@@ -14946,6 +15276,16 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
14946
15276
|
backToWorkspace: () => backtoworkspace2,
|
|
14947
15277
|
broadcast: () => broadcast,
|
|
14948
15278
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
15279
|
+
browserBack: () => browserback1,
|
|
15280
|
+
browserChipLabel: () => browserchiplabel2,
|
|
15281
|
+
browserForward: () => browserforward1,
|
|
15282
|
+
browserLaunching: () => browserlaunching1,
|
|
15283
|
+
browserOpenTitle: () => browseropentitle2,
|
|
15284
|
+
browserPanelTitle: () => browserpaneltitle2,
|
|
15285
|
+
browserReload: () => browserreload1,
|
|
15286
|
+
browserSessionFailed: () => browsersessionfailed2,
|
|
15287
|
+
browserUrlPlaceholder: () => browserurlplaceholder2,
|
|
15288
|
+
browserWaitingFrames: () => browserwaitingframes2,
|
|
14949
15289
|
cacheHit: () => cachehit1,
|
|
14950
15290
|
cachedInput: () => cachedinput1,
|
|
14951
15291
|
cancel: () => cancel,
|
|
@@ -18443,7 +18783,7 @@ function ThemeToggle($$renderer, $$props) {
|
|
|
18443
18783
|
}
|
|
18444
18784
|
//#endregion
|
|
18445
18785
|
//#region package.json
|
|
18446
|
-
var version = "0.
|
|
18786
|
+
var version = "0.7.0";
|
|
18447
18787
|
var dsh = { "webVersion": "0.2.1-rc.2" };
|
|
18448
18788
|
//#endregion
|
|
18449
18789
|
//#region src/lib/version.ts
|
|
@@ -21508,6 +21848,7 @@ function workspaceFileTitle(path) {
|
|
|
21508
21848
|
*/
|
|
21509
21849
|
function panelHeaderLabel(panel) {
|
|
21510
21850
|
if (panel.kind === "terminal") return "Terminal";
|
|
21851
|
+
if (panel.kind === "browser") return "Browser";
|
|
21511
21852
|
if (panel.kind === "prompt-manager") return MANAGER_ROW_TITLE;
|
|
21512
21853
|
if (panel.kind === "skill-shelf") return "Skill Shelf";
|
|
21513
21854
|
if (panel.kind === "plugin-rack") return "Plugin Rack";
|
|
@@ -21536,9 +21877,9 @@ function panelRowsFor(input) {
|
|
|
21536
21877
|
const { panels, spineRows, coldCache, deadSessions, edgeCache, lineageFacts, moveFacts } = input;
|
|
21537
21878
|
const openSessionIds = openSessionIdsOf(panels);
|
|
21538
21879
|
return panels.map((p, index) => {
|
|
21539
|
-
if (p.kind === "terminal" || p.kind === "prompt-manager" || p.kind === "settings-editor" || p.kind === "skill-shelf" || p.kind === "plugin-rack") return {
|
|
21880
|
+
if (p.kind === "terminal" || p.kind === "browser" || p.kind === "prompt-manager" || p.kind === "settings-editor" || p.kind === "skill-shelf" || p.kind === "plugin-rack") return {
|
|
21540
21881
|
panel: p,
|
|
21541
|
-
title: p.kind === "terminal" ? "Terminal" : p.kind === "prompt-manager" ? MANAGER_ROW_TITLE : p.kind === "skill-shelf" ? "Skill Shelf" : p.kind === "plugin-rack" ? "Plugin Rack" : SETTINGS_ROW_TITLE[p.target],
|
|
21882
|
+
title: p.kind === "terminal" ? "Terminal" : p.kind === "browser" ? "Browser" : p.kind === "prompt-manager" ? MANAGER_ROW_TITLE : p.kind === "skill-shelf" ? "Skill Shelf" : p.kind === "plugin-rack" ? "Plugin Rack" : p.kind === "settings-editor" ? SETTINGS_ROW_TITLE[p.target] : "",
|
|
21542
21883
|
workspace: null,
|
|
21543
21884
|
dead: false,
|
|
21544
21885
|
running: false,
|
|
@@ -23640,38 +23981,45 @@ function ToolsAndStatusHeader($$renderer, $$props) {
|
|
|
23640
23981
|
//#endregion
|
|
23641
23982
|
//#region src/lib/components/conversation/ConversationHeader.svelte
|
|
23642
23983
|
function ConversationHeader($$renderer, $$props) {
|
|
23643
|
-
|
|
23644
|
-
|
|
23645
|
-
|
|
23646
|
-
|
|
23647
|
-
|
|
23648
|
-
|
|
23649
|
-
|
|
23650
|
-
|
|
23651
|
-
|
|
23652
|
-
|
|
23653
|
-
|
|
23654
|
-
|
|
23655
|
-
|
|
23656
|
-
|
|
23657
|
-
|
|
23658
|
-
|
|
23659
|
-
|
|
23660
|
-
|
|
23661
|
-
|
|
23662
|
-
|
|
23663
|
-
|
|
23664
|
-
|
|
23665
|
-
|
|
23666
|
-
|
|
23667
|
-
|
|
23668
|
-
|
|
23669
|
-
|
|
23670
|
-
|
|
23671
|
-
|
|
23672
|
-
|
|
23984
|
+
$$renderer.component(($$renderer) => {
|
|
23985
|
+
/**
|
|
23986
|
+
* ConversationHeader — the conversation page's top bar (extracted
|
|
23987
|
+
* from the page, 2026-08-24): the identity cluster (SessionIdAndName:
|
|
23988
|
+
* copy-id prefix, workspace chip, title display, inline rename) on
|
|
23989
|
+
* the left; the agent chip, the running/idle status, the session
|
|
23990
|
+
* fork (2026-09-01), and the conversation capture on the right
|
|
23991
|
+
* (ToolsAndStatusHeader, extracted 2026-08-24). Purely presentational
|
|
23992
|
+
* — title state and the streaming flag arrive as props; writes report
|
|
23993
|
+
* upward.
|
|
23994
|
+
*/
|
|
23995
|
+
let { sessionId, title, workspace = null, workspaces = [], access = null, agent, agentId = null, isStreaming, transcript = null, subagent = false, plan = null, parentSessionId = null, focused = false, onOpenExplorer = void 0, onOpenBrowser = void 0 } = $$props;
|
|
23996
|
+
$$renderer.push(`<header data-svelte="ConversationHeader"${attr_class(`flex items-center gap-3 border-b border-surface-border px-2 py-1 ${focused ? "bg-header-wash" : "bg-surface-elevated"}`)} data-testid="conversation-header"${attr("data-focused", focused ? "true" : "false")}>`);
|
|
23997
|
+
SessionIdAndName($$renderer, {
|
|
23998
|
+
sessionId,
|
|
23999
|
+
title,
|
|
24000
|
+
workspace,
|
|
24001
|
+
workspaces,
|
|
24002
|
+
access,
|
|
24003
|
+
subagent,
|
|
24004
|
+
onOpenExplorer
|
|
24005
|
+
});
|
|
24006
|
+
$$renderer.push(`<!----> `);
|
|
24007
|
+
if (onOpenBrowser) {
|
|
24008
|
+
$$renderer.push("<!--[0-->");
|
|
24009
|
+
$$renderer.push(`<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())}>${escape_html(browserchiplabel2())}</button>`);
|
|
24010
|
+
} else $$renderer.push("<!--[-1-->");
|
|
24011
|
+
$$renderer.push(`<!--]--> `);
|
|
24012
|
+
ToolsAndStatusHeader($$renderer, {
|
|
24013
|
+
agent,
|
|
24014
|
+
agentId,
|
|
24015
|
+
isStreaming,
|
|
24016
|
+
transcript,
|
|
24017
|
+
plan,
|
|
24018
|
+
parentSessionId,
|
|
24019
|
+
subagent
|
|
24020
|
+
});
|
|
24021
|
+
$$renderer.push(`<!----></header>`);
|
|
23673
24022
|
});
|
|
23674
|
-
$$renderer.push(`<!----></header>`);
|
|
23675
24023
|
}
|
|
23676
24024
|
//#endregion
|
|
23677
24025
|
//#region src/lib/components/message/LoadOlderSentinel.svelte
|
|
@@ -30810,7 +31158,7 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
30810
31158
|
* existing command banner. Catalog reads fire on first menu open,
|
|
30811
31159
|
* never at mount (cold sessions stay cold).
|
|
30812
31160
|
*/
|
|
30813
|
-
let { panelId = null, sessionId, title: initialTitleProp = null, workspace = null, workspaces = [], agent, agentDisplay = null, subagent = false, depth = 0, parentSessionId = null, entries, lastSeq, running, hasMore = void 0, pendingAnswers = [], settledAnswers = [], permission = null, imageLimits = void 0, knobEvents = void 0, deliverables = void 0, a2aRows = [], a2aTitles = {}, onNeedCold = void 0, onClose = void 0, focusComposer = false, oncomposerfocus = void 0, focused = false, onOpenExplorer = void 0, onFileLink = void 0, onFileOpen = void 0 } = $$props;
|
|
31161
|
+
let { panelId = null, sessionId, title: initialTitleProp = null, workspace = null, workspaces = [], agent, agentDisplay = null, subagent = false, depth = 0, parentSessionId = null, entries, lastSeq, running, hasMore = void 0, pendingAnswers = [], settledAnswers = [], permission = null, imageLimits = void 0, knobEvents = void 0, deliverables = void 0, a2aRows = [], a2aTitles = {}, onNeedCold = void 0, onClose = void 0, focusComposer = false, oncomposerfocus = void 0, focused = false, onOpenExplorer = void 0, onOpenBrowser = void 0, onFileLink = void 0, onFileOpen = void 0 } = $$props;
|
|
30814
31162
|
setPanelMode(true);
|
|
30815
31163
|
setConversationSession(sessionId);
|
|
30816
31164
|
const store = createConversationStore(sessionId);
|
|
@@ -31039,7 +31387,8 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
31039
31387
|
plan: store.planMode,
|
|
31040
31388
|
parentSessionId,
|
|
31041
31389
|
focused,
|
|
31042
|
-
onOpenExplorer
|
|
31390
|
+
onOpenExplorer,
|
|
31391
|
+
onOpenBrowser
|
|
31043
31392
|
});
|
|
31044
31393
|
$$renderer.push(`<!----> `);
|
|
31045
31394
|
ConversationError($$renderer, { error: topError() });
|
|
@@ -31458,6 +31807,262 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
31458
31807
|
});
|
|
31459
31808
|
}
|
|
31460
31809
|
//#endregion
|
|
31810
|
+
//#region src/lib/components/browser/BrowserHeader.svelte
|
|
31811
|
+
function BrowserHeader($$renderer, $$props) {
|
|
31812
|
+
$$renderer.component(($$renderer) => {
|
|
31813
|
+
let { status, reBound = false, sessionId = null, closing = false, busy = false, canBack = false, canForward = false, onclose, onnavigate, onreload, onhistory } = $$props;
|
|
31814
|
+
/** Ephemeral intent, never state (D2): the panel clears it on the
|
|
31815
|
+
* route ANSWER via clearInput() — success or refusal both answer. */
|
|
31816
|
+
let urlText = "";
|
|
31817
|
+
/** The panel's handle: clears the box when the navigate route answers. */
|
|
31818
|
+
function clearInput() {
|
|
31819
|
+
urlText = "";
|
|
31820
|
+
}
|
|
31821
|
+
$$renderer.push(`<div data-svelte="BrowserHeader" class="flex items-center gap-2 border-b border-surface-border px-2 py-1 text-xs"><span class="flex min-w-0 flex-1 items-center gap-2"><button class="rounded px-1 hover:bg-surface-active disabled:opacity-40" data-testid="browser-back"${attr("aria-label", browserback1())}${attr("disabled", busy || !canBack, true)}>←</button> <button class="rounded px-1 hover:bg-surface-active disabled:opacity-40" data-testid="browser-forward"${attr("aria-label", browserforward1())}${attr("disabled", busy || !canForward, true)}>→</button> <button class="rounded px-1 hover:bg-surface-active disabled:opacity-40" data-testid="browser-reload"${attr("aria-label", browserreload1())}${attr("disabled", status !== "live" || busy, true)}>⟳</button> <input class="min-w-0 flex-1 rounded border border-surface-border bg-surface px-2 py-0.5" type="text" data-testid="browser-url-input"${attr("placeholder", browserurlplaceholder2())}${attr("disabled", status !== "live" || busy, true)}${attr("value", urlText)}/></span> <span class="flex items-center gap-2" data-testid="browser-status"${attr("data-status", status)}${attr("data-rebound", reBound)}><span${attr_class(`inline-block h-2 w-2 rounded-full ${status === "live" ? "bg-emerald-500" : status === "failed" || status === "closed" ? "bg-red-500" : "bg-amber-400"}`)}></span> `);
|
|
31822
|
+
if (sessionId) {
|
|
31823
|
+
$$renderer.push("<!--[0-->");
|
|
31824
|
+
$$renderer.push(`<span class="rounded-t-md border border-b-0 border-surface-border bg-surface-elevated px-2 py-0.5 font-mono text-[10px] opacity-80" data-testid="browser-session-tab">${escape_html(sessionId.slice(0, 8))}</span>`);
|
|
31825
|
+
} else $$renderer.push("<!--[-1-->");
|
|
31826
|
+
$$renderer.push(`<!--]--> <button class="rounded px-1 hover:bg-surface-active" data-testid="panel-close"${attr("disabled", closing, true)}>✕</button></span></div>`);
|
|
31827
|
+
bind_props($$props, { clearInput });
|
|
31828
|
+
});
|
|
31829
|
+
}
|
|
31830
|
+
//#endregion
|
|
31831
|
+
//#region src/lib/components/browser/BrowserContent.svelte
|
|
31832
|
+
function BrowserContent($$renderer, $$props) {
|
|
31833
|
+
$$renderer.component(($$renderer) => {
|
|
31834
|
+
let { status, failReason = null, wrap = null, canvas = null, ondown, onup, onmove, onwheel, onkey } = $$props;
|
|
31835
|
+
if (status === "failed") {
|
|
31836
|
+
$$renderer.push("<!--[0-->");
|
|
31837
|
+
$$renderer.push(`<div data-svelte="BrowserContent" class="p-3 text-xs text-red-500" data-testid="browser-failed">${escape_html(browsersessionfailed2({ reason: failReason ?? "" }))}</div>`);
|
|
31838
|
+
} else {
|
|
31839
|
+
$$renderer.push("<!--[-1-->");
|
|
31840
|
+
$$renderer.push(`<div data-svelte="BrowserContent" class="relative min-h-0 flex-1 overflow-hidden" data-testid="browser-glass"><canvas class="h-full w-full object-contain" tabindex="0"></canvas> `);
|
|
31841
|
+
if (status !== "live") {
|
|
31842
|
+
$$renderer.push("<!--[0-->");
|
|
31843
|
+
$$renderer.push(`<div class="absolute inset-0 grid place-items-center text-xs opacity-60" data-testid="browser-placeholder">${escape_html(status === "opening" ? browserlaunching1() : browserwaitingframes2())}</div>`);
|
|
31844
|
+
} else $$renderer.push("<!--[-1-->");
|
|
31845
|
+
$$renderer.push(`<!--]--></div>`);
|
|
31846
|
+
}
|
|
31847
|
+
$$renderer.push(`<!--]-->`);
|
|
31848
|
+
bind_props($$props, {
|
|
31849
|
+
wrap,
|
|
31850
|
+
canvas
|
|
31851
|
+
});
|
|
31852
|
+
});
|
|
31853
|
+
}
|
|
31854
|
+
//#endregion
|
|
31855
|
+
//#region src/lib/components/browser/mirror-input.ts
|
|
31856
|
+
/** The on-screen rect of the PAGE image inside its wrapper. The frame is
|
|
31857
|
+
* drawn aspect-true (canvas object-contain): when the frame is wider or
|
|
31858
|
+
* taller than the panel the image LETTERBOXES — clicks must map against
|
|
31859
|
+
* this contained rect, not the wrapper (bug 2026-10-19: width-only
|
|
31860
|
+
* scaling zoomed the cursor whenever the frame aspect ≠ panel aspect). */
|
|
31861
|
+
function containedRect(boundsLeft, boundsTop, boundsWidth, boundsHeight, viewportWidth, viewportHeight) {
|
|
31862
|
+
return null;
|
|
31863
|
+
}
|
|
31864
|
+
/** Map a click on the GLASS to viewport CSS pixels. Coordinates outside the
|
|
31865
|
+
* contained image return null — the panel must not dispatch clicks that
|
|
31866
|
+
* land on letterbox bars (they would miss the page). */
|
|
31867
|
+
function scalePoint(clientX, clientY, boundsLeft, boundsTop, boundsWidth, boundsHeight, viewportWidth, viewportHeight) {
|
|
31868
|
+
const rect = containedRect();
|
|
31869
|
+
if (rect === null) return null;
|
|
31870
|
+
if (clientX < rect.left || clientX > rect.left + rect.width) return null;
|
|
31871
|
+
if (clientY < rect.top || clientY > rect.top + rect.height) return null;
|
|
31872
|
+
return {
|
|
31873
|
+
x: Math.round((clientX - rect.left) / rect.scale),
|
|
31874
|
+
y: Math.round((clientY - rect.top) / rect.scale)
|
|
31875
|
+
};
|
|
31876
|
+
}
|
|
31877
|
+
/** At most ONE mouseMoved dispatch per animation frame — the flood guard.
|
|
31878
|
+
* The LAST move in a frame wins (the pointer's true position). */
|
|
31879
|
+
function createMoveCoalescer(raf, fire) {
|
|
31880
|
+
let pending = null;
|
|
31881
|
+
let scheduled = false;
|
|
31882
|
+
return { push(x, y) {
|
|
31883
|
+
pending = {
|
|
31884
|
+
x,
|
|
31885
|
+
y
|
|
31886
|
+
};
|
|
31887
|
+
if (scheduled) return;
|
|
31888
|
+
scheduled = true;
|
|
31889
|
+
raf(() => {
|
|
31890
|
+
scheduled = false;
|
|
31891
|
+
const m = pending;
|
|
31892
|
+
pending = null;
|
|
31893
|
+
if (m) fire(m.x, m.y);
|
|
31894
|
+
});
|
|
31895
|
+
} };
|
|
31896
|
+
}
|
|
31897
|
+
//#endregion
|
|
31898
|
+
//#region src/lib/services/panels/browser-session-resolver.ts
|
|
31899
|
+
/**
|
|
31900
|
+
* browser-session-resolver — the ONE re-bind-or-open seam (The Sticky Glass
|
|
31901
|
+
* spec Wave 2 task 2.1; ADR-0030 D1/D4). The chip, the floor placement, and
|
|
31902
|
+
* the panel's remount all ask here; none of them POSTs /api/browser open
|
|
31903
|
+
* directly. Policy: the persisted localStorage id wins if the registry still
|
|
31904
|
+
* lists it live (RE-BIND — reload survival); a dead id falls through to a
|
|
31905
|
+
* fresh open, never an error surface. The resolved id is persisted so the
|
|
31906
|
+
* NEXT reload re-binds too.
|
|
31907
|
+
*/
|
|
31908
|
+
var LS_KEY = "dsi.browser.sessionId";
|
|
31909
|
+
/** localStorage guarded — SSR and privacy modes have no window.localStorage. */
|
|
31910
|
+
function defaultStorage() {
|
|
31911
|
+
try {
|
|
31912
|
+
return typeof localStorage !== "undefined" ? localStorage : null;
|
|
31913
|
+
} catch {
|
|
31914
|
+
return null;
|
|
31915
|
+
}
|
|
31916
|
+
}
|
|
31917
|
+
function readPersistedId(storage = defaultStorage()) {
|
|
31918
|
+
try {
|
|
31919
|
+
return storage?.getItem(LS_KEY) ?? null;
|
|
31920
|
+
} catch {
|
|
31921
|
+
return null;
|
|
31922
|
+
}
|
|
31923
|
+
}
|
|
31924
|
+
var IDX_KEY = "dsi.browser.panelIndex";
|
|
31925
|
+
function readPersistedIndex(storage = defaultStorage()) {
|
|
31926
|
+
try {
|
|
31927
|
+
const raw = storage?.getItem(IDX_KEY);
|
|
31928
|
+
const n = raw === null || raw === void 0 ? NaN : Number(raw);
|
|
31929
|
+
return Number.isInteger(n) && n >= 0 ? n : null;
|
|
31930
|
+
} catch {
|
|
31931
|
+
return null;
|
|
31932
|
+
}
|
|
31933
|
+
}
|
|
31934
|
+
//#endregion
|
|
31935
|
+
//#region src/lib/components/browser/BrowserPanel.svelte
|
|
31936
|
+
function BrowserPanel($$renderer, $$props) {
|
|
31937
|
+
$$renderer.component(($$renderer) => {
|
|
31938
|
+
let sessionId = null;
|
|
31939
|
+
/** True when mount re-bound to a surviving session (ADR-0030 D1) —
|
|
31940
|
+
* surfaced in the status strip for the operator. */
|
|
31941
|
+
let reBound = false;
|
|
31942
|
+
let status = "opening";
|
|
31943
|
+
let failReason = null;
|
|
31944
|
+
let canvas = null;
|
|
31945
|
+
let wrap = null;
|
|
31946
|
+
let closing = false;
|
|
31947
|
+
/** Proxy verbs (ADR-0031 D1/D2): the panel ACTS on the header's
|
|
31948
|
+
* intent — one in-flight guard for the whole proxy row, history
|
|
31949
|
+
* bounds from the last navigate answer (the documented give-up). */
|
|
31950
|
+
let proxyBusy = false;
|
|
31951
|
+
let canBack = false;
|
|
31952
|
+
let canForward = false;
|
|
31953
|
+
const moves = createMoveCoalescer((cb) => requestAnimationFrame(cb), (x, y) => void post());
|
|
31954
|
+
async function post(input) {}
|
|
31955
|
+
function toViewportCx(e) {
|
|
31956
|
+
if (!wrap) return null;
|
|
31957
|
+
const r = wrap.getBoundingClientRect();
|
|
31958
|
+
return scalePoint(e.clientX, e.clientY, r.left, r.top, r.width, r.height);
|
|
31959
|
+
}
|
|
31960
|
+
function onPointerDown(e) {
|
|
31961
|
+
if (e.button !== 0) return;
|
|
31962
|
+
const p = toViewportCx(e);
|
|
31963
|
+
if (p) post({
|
|
31964
|
+
x: p.x,
|
|
31965
|
+
y: p.y});
|
|
31966
|
+
}
|
|
31967
|
+
function onPointerUp(e) {
|
|
31968
|
+
if (e.button !== 0) return;
|
|
31969
|
+
const p = toViewportCx(e);
|
|
31970
|
+
if (p) post({
|
|
31971
|
+
x: p.x,
|
|
31972
|
+
y: p.y});
|
|
31973
|
+
}
|
|
31974
|
+
function onPointerMove(e) {
|
|
31975
|
+
const p = toViewportCx(e);
|
|
31976
|
+
if (p) moves.push(p.x, p.y);
|
|
31977
|
+
}
|
|
31978
|
+
function onWheel(e) {
|
|
31979
|
+
const p = toViewportCx(e);
|
|
31980
|
+
if (!p) return;
|
|
31981
|
+
e.preventDefault();
|
|
31982
|
+
post({
|
|
31983
|
+
x: p.x,
|
|
31984
|
+
y: p.y,
|
|
31985
|
+
deltaX: e.deltaX,
|
|
31986
|
+
deltaY: e.deltaY
|
|
31987
|
+
});
|
|
31988
|
+
}
|
|
31989
|
+
function onKey(e) {
|
|
31990
|
+
post({
|
|
31991
|
+
type: e.type === "keydown" ? "keyDown" : "keyUp",
|
|
31992
|
+
key: e.key,
|
|
31993
|
+
code: e.code,
|
|
31994
|
+
windowsVirtualKeyCode: e.keyCode,
|
|
31995
|
+
text: e.type === "keydown" && e.key.length === 1 ? e.key : void 0
|
|
31996
|
+
});
|
|
31997
|
+
}
|
|
31998
|
+
/** One POST for every proxy verb; the ANSWER (success or refusal)
|
|
31999
|
+
* clears the input and refreshes the history bounds. A dead session
|
|
32000
|
+
* surfaces as the closed status, never a crash (404/409). */
|
|
32001
|
+
async function proxy(body) {}
|
|
32002
|
+
function submitUrl(text) {
|
|
32003
|
+
proxy();
|
|
32004
|
+
}
|
|
32005
|
+
function goHistory(dir) {
|
|
32006
|
+
proxy();
|
|
32007
|
+
}
|
|
32008
|
+
/** D8 owner-release: close the SERVER session first (kills the browser),
|
|
32009
|
+
* then report upward so the floor removes the panel. Exactly once —
|
|
32010
|
+
* the closing flag guards double-invocations (the single-close-post
|
|
32011
|
+
* unit contract). */
|
|
32012
|
+
async function closePanel() {}
|
|
32013
|
+
onDestroy(() => {});
|
|
32014
|
+
let $$settled = true;
|
|
32015
|
+
let $$inner_renderer;
|
|
32016
|
+
function $$render_inner($$renderer) {
|
|
32017
|
+
$$renderer.push(`<div data-svelte="BrowserPanel" class="flex h-full flex-col bg-surface-elevated" data-testid="panel-browser">`);
|
|
32018
|
+
BrowserHeader($$renderer, {
|
|
32019
|
+
status,
|
|
32020
|
+
reBound,
|
|
32021
|
+
sessionId,
|
|
32022
|
+
closing,
|
|
32023
|
+
busy: proxyBusy,
|
|
32024
|
+
canBack,
|
|
32025
|
+
canForward,
|
|
32026
|
+
onclose: () => void closePanel(),
|
|
32027
|
+
onnavigate: submitUrl,
|
|
32028
|
+
onreload: () => void proxy(),
|
|
32029
|
+
onhistory: goHistory
|
|
32030
|
+
});
|
|
32031
|
+
$$renderer.push(`<!----> `);
|
|
32032
|
+
BrowserContent($$renderer, {
|
|
32033
|
+
status,
|
|
32034
|
+
failReason,
|
|
32035
|
+
ondown: onPointerDown,
|
|
32036
|
+
onup: onPointerUp,
|
|
32037
|
+
onmove: onPointerMove,
|
|
32038
|
+
onwheel: onWheel,
|
|
32039
|
+
onkey: onKey,
|
|
32040
|
+
get wrap() {
|
|
32041
|
+
return wrap;
|
|
32042
|
+
},
|
|
32043
|
+
set wrap($$value) {
|
|
32044
|
+
wrap = $$value;
|
|
32045
|
+
$$settled = false;
|
|
32046
|
+
},
|
|
32047
|
+
get canvas() {
|
|
32048
|
+
return canvas;
|
|
32049
|
+
},
|
|
32050
|
+
set canvas($$value) {
|
|
32051
|
+
canvas = $$value;
|
|
32052
|
+
$$settled = false;
|
|
32053
|
+
}
|
|
32054
|
+
});
|
|
32055
|
+
$$renderer.push(`<!----></div>`);
|
|
32056
|
+
}
|
|
32057
|
+
do {
|
|
32058
|
+
$$settled = true;
|
|
32059
|
+
$$inner_renderer = $$renderer.copy();
|
|
32060
|
+
$$render_inner($$inner_renderer);
|
|
32061
|
+
} while (!$$settled);
|
|
32062
|
+
$$renderer.subsume($$inner_renderer);
|
|
32063
|
+
});
|
|
32064
|
+
}
|
|
32065
|
+
//#endregion
|
|
31461
32066
|
//#region src/lib/components/settings-skills/SettingsSkillsToolbar.svelte
|
|
31462
32067
|
function SettingsSkillsToolbar($$renderer, $$props) {
|
|
31463
32068
|
$$renderer.component(($$renderer) => {
|
|
@@ -33678,6 +34283,22 @@ function openWorkspaceExplorer(sessionId, workspace) {
|
|
|
33678
34283
|
}
|
|
33679
34284
|
insertPanel(makeWorkspaceExplorerPanel(sessionId, workspace), workspaceExplorerSlot(st.panels, selectedIndex_(), d$4().getMoveFacts()));
|
|
33680
34285
|
}
|
|
34286
|
+
/** Chip click action (The Glass Browser spec W2, ADR-0029 D4): ONE live
|
|
34287
|
+
* browser panel across the floor — the terminal singleton rule (Terminal
|
|
34288
|
+
* Desk ADR D2). A click on an open browser FOCUSES it; a miss inserts at
|
|
34289
|
+
* the focused slot. */
|
|
34290
|
+
function openBrowserPanel(index, keepSelection = false) {
|
|
34291
|
+
const open = st.panels.find((p) => p.kind === "browser");
|
|
34292
|
+
if (open) {
|
|
34293
|
+
st.selectedPanelId = open.id;
|
|
34294
|
+
return;
|
|
34295
|
+
}
|
|
34296
|
+
const prevSelected = st.selectedPanelId;
|
|
34297
|
+
insertPanel(makeBrowserPanel(), index === void 0 ? insertionSlot() : Math.max(0, Math.min(index, st.panels.length)));
|
|
34298
|
+
if (keepSelection && prevSelected !== null && prevSelected !== void 0) {
|
|
34299
|
+
if (st.panels.some((p) => p.id === prevSelected)) st.selectedPanelId = prevSelected;
|
|
34300
|
+
}
|
|
34301
|
+
}
|
|
33681
34302
|
/** The open explorer for a session's workspace (The Shared Tree D1):
|
|
33682
34303
|
* matched by ROOT across sessions — the panel's provenance sessionId
|
|
33683
34304
|
* is not the key. */
|
|
@@ -33940,6 +34561,13 @@ function makePanel(sessionId, agentPreset) {
|
|
|
33940
34561
|
width: clampPanelWidth(d$1().getPanelWidth())
|
|
33941
34562
|
};
|
|
33942
34563
|
}
|
|
34564
|
+
function makeBrowserPanel() {
|
|
34565
|
+
return {
|
|
34566
|
+
id: nextPanelId(),
|
|
34567
|
+
kind: "browser",
|
|
34568
|
+
width: clampPanelWidth(d$1().getPanelWidth())
|
|
34569
|
+
};
|
|
34570
|
+
}
|
|
33943
34571
|
function makeWorkspaceExplorerPanel(sessionId, root) {
|
|
33944
34572
|
return {
|
|
33945
34573
|
id: nextPanelId(),
|
|
@@ -33956,6 +34584,9 @@ function insertPanel(entry, index) {
|
|
|
33956
34584
|
st.panels = next;
|
|
33957
34585
|
st.selectedPanelId = entry.id;
|
|
33958
34586
|
}
|
|
34587
|
+
function insertionSlot() {
|
|
34588
|
+
return focusedInsertionSlot(st.panels, selectedIndex_(), d$1().getMoveFacts().parentOf);
|
|
34589
|
+
}
|
|
33959
34590
|
//#endregion
|
|
33960
34591
|
//#region src/lib/services/panels/floor-registry.svelte.ts
|
|
33961
34592
|
var deps = null;
|
|
@@ -33977,8 +34608,18 @@ var st = {
|
|
|
33977
34608
|
loupePanelId: null,
|
|
33978
34609
|
focusComposerId: null,
|
|
33979
34610
|
panelIdSeq: 0,
|
|
34611
|
+
terminalDeskMirrors: {},
|
|
33980
34612
|
pendingFileIntents: {},
|
|
33981
|
-
fileIntentSeq: 0
|
|
34613
|
+
fileIntentSeq: 0,
|
|
34614
|
+
drag: null,
|
|
34615
|
+
widthBadgeFading: false
|
|
34616
|
+
};
|
|
34617
|
+
/** Non-reactive gesture refs (drag start index, fade timer, badge ids) —
|
|
34618
|
+
* written by floor-registry/drag.svelte.ts; the ids set is a live
|
|
34619
|
+
* SvelteSet so badge visibility stays reactive. */
|
|
34620
|
+
var dragRefs = {
|
|
34621
|
+
ids: new SvelteSet()
|
|
34622
|
+
};
|
|
33982
34623
|
var floor = {
|
|
33983
34624
|
get panels() {
|
|
33984
34625
|
return st.panels;
|
|
@@ -33986,12 +34627,27 @@ var floor = {
|
|
|
33986
34627
|
get selectedPanelId() {
|
|
33987
34628
|
return st.selectedPanelId;
|
|
33988
34629
|
},
|
|
34630
|
+
get loupePanelId() {
|
|
34631
|
+
return st.loupePanelId;
|
|
34632
|
+
},
|
|
33989
34633
|
get focusComposerId() {
|
|
33990
34634
|
return st.focusComposerId;
|
|
33991
34635
|
},
|
|
34636
|
+
get terminalDeskMirrors() {
|
|
34637
|
+
return st.terminalDeskMirrors;
|
|
34638
|
+
},
|
|
33992
34639
|
get pendingFileIntents() {
|
|
33993
34640
|
return st.pendingFileIntents;
|
|
33994
34641
|
},
|
|
34642
|
+
get drag() {
|
|
34643
|
+
return st.drag;
|
|
34644
|
+
},
|
|
34645
|
+
get widthBadgeFading() {
|
|
34646
|
+
return st.widthBadgeFading;
|
|
34647
|
+
},
|
|
34648
|
+
get widthBadgeIds() {
|
|
34649
|
+
return dragRefs.ids;
|
|
34650
|
+
},
|
|
33995
34651
|
get selected() {
|
|
33996
34652
|
return st.panels.find((p) => p.id === st.selectedPanelId) ?? null;
|
|
33997
34653
|
},
|
|
@@ -34180,6 +34836,16 @@ function _page($$renderer, $$props) {
|
|
|
34180
34836
|
initFloor(seededInitially ? [makePanel(seedSessionId(), seedCold?.agentPreset ?? null)] : initialPrefs.panels, seededInitially ? null : initialPrefs.selectedPanelId);
|
|
34181
34837
|
if (seededInitially) selectPanel(floor.panels[0]?.id ?? null);
|
|
34182
34838
|
if (seededInitially && seedCold !== void 0) pageFeeds.primeSeed(seedSessionId(), seedCold);
|
|
34839
|
+
(async () => {
|
|
34840
|
+
try {
|
|
34841
|
+
const persisted = readPersistedId();
|
|
34842
|
+
if (!persisted) return;
|
|
34843
|
+
if (floor.panels.some((panel) => panel.kind === "browser")) return;
|
|
34844
|
+
const res = await fetch("/api/browser");
|
|
34845
|
+
if (!res.ok) return;
|
|
34846
|
+
if ((await res.json()).sessions?.some((s) => s.id === persisted)) openBrowserPanel(readPersistedIndex() ?? void 0, true);
|
|
34847
|
+
} catch {}
|
|
34848
|
+
})();
|
|
34183
34849
|
const panels = derived(() => floor.panels);
|
|
34184
34850
|
const selectedPanelId = derived(() => floor.selectedPanelId);
|
|
34185
34851
|
const selected = derived(() => floor.selected);
|
|
@@ -34232,8 +34898,14 @@ function _page($$renderer, $$props) {
|
|
|
34232
34898
|
onShellExit: () => removePanel(panel.id)
|
|
34233
34899
|
});
|
|
34234
34900
|
$$renderer.push(`<!----></div>`);
|
|
34235
|
-
} else if (panel.kind === "
|
|
34901
|
+
} else if (panel.kind === "browser") {
|
|
34236
34902
|
$$renderer.push("<!--[1-->");
|
|
34903
|
+
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-browser-slot">`);
|
|
34904
|
+
BrowserPanel($$renderer, {
|
|
34905
|
+
browserSessionId: "browserSessionId" in panel ? panel.browserSessionId : void 0});
|
|
34906
|
+
$$renderer.push(`<!----></div>`);
|
|
34907
|
+
} else if (panel.kind === "prompt-manager") {
|
|
34908
|
+
$$renderer.push("<!--[2-->");
|
|
34237
34909
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-manager">`);
|
|
34238
34910
|
PromptManagerPanel($$renderer, {
|
|
34239
34911
|
onclose: hostClose ?? (() => removePanel(panel.id)),
|
|
@@ -34242,14 +34914,14 @@ function _page($$renderer, $$props) {
|
|
|
34242
34914
|
});
|
|
34243
34915
|
$$renderer.push(`<!----></div>`);
|
|
34244
34916
|
} else if (panel.kind === "plugin-rack") {
|
|
34245
|
-
$$renderer.push("<!--[
|
|
34917
|
+
$$renderer.push("<!--[3-->");
|
|
34246
34918
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-plugins">`);
|
|
34247
34919
|
PluginManagerPanel($$renderer, {
|
|
34248
34920
|
refreshToken: panel.refresh ?? 0,
|
|
34249
34921
|
initialTab: panel.tab ?? "install"});
|
|
34250
34922
|
$$renderer.push(`<!----></div>`);
|
|
34251
34923
|
} else if (panel.kind === "skill-shelf") {
|
|
34252
|
-
$$renderer.push("<!--[
|
|
34924
|
+
$$renderer.push("<!--[4-->");
|
|
34253
34925
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-skills">`);
|
|
34254
34926
|
SettingsSkillsPanel($$renderer, {
|
|
34255
34927
|
refreshToken: panel.refresh ?? 0,
|
|
@@ -34259,13 +34931,13 @@ function _page($$renderer, $$props) {
|
|
|
34259
34931
|
initialReload: panel.reload ?? null});
|
|
34260
34932
|
$$renderer.push(`<!----></div>`);
|
|
34261
34933
|
} else if (panel.kind === "settings-editor") {
|
|
34262
|
-
$$renderer.push("<!--[
|
|
34934
|
+
$$renderer.push("<!--[5-->");
|
|
34263
34935
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-settings">`);
|
|
34264
34936
|
SettingsEditorPanel($$renderer, {
|
|
34265
34937
|
target: panel.target});
|
|
34266
34938
|
$$renderer.push(`<!----></div>`);
|
|
34267
34939
|
} else if (panel.kind === "injected-doc") {
|
|
34268
|
-
$$renderer.push("<!--[
|
|
34940
|
+
$$renderer.push("<!--[6-->");
|
|
34269
34941
|
$$renderer.push(`<div class="panel-manager-body svelte-1uha8ag">`);
|
|
34270
34942
|
InjectedDocPanel($$renderer, {
|
|
34271
34943
|
sourceSessionId: panel.sourceSessionId,
|
|
@@ -34273,7 +34945,7 @@ function _page($$renderer, $$props) {
|
|
|
34273
34945
|
entries: pageFeeds.coldCache[panel.sourceSessionId]?.entries ?? []});
|
|
34274
34946
|
$$renderer.push(`<!----></div>`);
|
|
34275
34947
|
} else if (panel.kind === "workspace-explorer") {
|
|
34276
|
-
$$renderer.push("<!--[
|
|
34948
|
+
$$renderer.push("<!--[7-->");
|
|
34277
34949
|
WorkspaceExplorerPanel($$renderer, {
|
|
34278
34950
|
sessionId: panel.sessionId,
|
|
34279
34951
|
root: panel.root,
|
|
@@ -34304,7 +34976,7 @@ function _page($$renderer, $$props) {
|
|
|
34304
34976
|
onActivateTab: (path) => activateExplorerTab(panel.id, path)
|
|
34305
34977
|
});
|
|
34306
34978
|
} else if (panel.kind === "workspace-file") {
|
|
34307
|
-
$$renderer.push("<!--[
|
|
34979
|
+
$$renderer.push("<!--[8-->");
|
|
34308
34980
|
WorkspaceFilePanel($$renderer, {
|
|
34309
34981
|
sessionId: panel.sessionId,
|
|
34310
34982
|
path: panel.path,
|
|
@@ -34314,7 +34986,7 @@ function _page($$renderer, $$props) {
|
|
|
34314
34986
|
onclose: () => removePanel(panel.id)
|
|
34315
34987
|
});
|
|
34316
34988
|
} else if (panel.kind === "conversation") {
|
|
34317
|
-
$$renderer.push("<!--[
|
|
34989
|
+
$$renderer.push("<!--[9-->");
|
|
34318
34990
|
const p = panel;
|
|
34319
34991
|
$$renderer.push(`<!---->`);
|
|
34320
34992
|
if (pageFeeds.deadSessions[p.sessionId]) {
|
|
@@ -34349,6 +35021,7 @@ function _page($$renderer, $$props) {
|
|
|
34349
35021
|
a2aRows: a2aRowsFor(p.sessionId),
|
|
34350
35022
|
a2aTitles: spineTitles(),
|
|
34351
35023
|
onOpenExplorer: openWorkspaceExplorer,
|
|
35024
|
+
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(),
|
|
34352
35025
|
focusComposer: p.id === focusComposerId(),
|
|
34353
35026
|
oncomposerfocus: () => clearFocusComposer(),
|
|
34354
35027
|
focused: p.id === selectedPanelId()
|
|
@@ -34377,6 +35050,7 @@ function _page($$renderer, $$props) {
|
|
|
34377
35050
|
a2aTitles: spineTitles(),
|
|
34378
35051
|
onNeedCold: (sid) => void ensureCold(sid),
|
|
34379
35052
|
onOpenExplorer: openWorkspaceExplorer,
|
|
35053
|
+
onOpenBrowser: lineageFacts().subagentIds.has(p.sessionId) ? void 0 : () => openBrowserPanel(),
|
|
34380
35054
|
focusComposer: p.id === focusComposerId(),
|
|
34381
35055
|
oncomposerfocus: () => clearFocusComposer(),
|
|
34382
35056
|
focused: p.id === selectedPanelId()
|
|
@@ -34482,4 +35156,4 @@ function _page($$renderer, $$props) {
|
|
|
34482
35156
|
}
|
|
34483
35157
|
|
|
34484
35158
|
export { _page as default };
|
|
34485
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
35159
|
+
//# sourceMappingURL=_page.svelte.js-D3F2fiR4.js.map
|