@deepseek-insight/dsi 0.8.1 → 0.8.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/build/client/_app/immutable/assets/2.BPprd30B.css +1 -0
- package/build/client/_app/immutable/chunks/BHodvdRc.js +1 -0
- package/build/client/_app/immutable/chunks/{CJ1fzlPC.js → CAoCg_fG.js} +1 -1
- package/build/client/_app/immutable/chunks/D-jXFTzB.js +1 -0
- package/build/client/_app/immutable/chunks/{C0tWPpc3.js → TTdBFs3C.js} +2 -2
- package/build/client/_app/immutable/entry/{app.DP0oSUf-.js → app.DIq2Q3OX.js} +2 -2
- package/build/client/_app/immutable/entry/start.E6P3Z7tx.js +1 -0
- package/build/client/_app/immutable/nodes/{1.UuScj-IS.js → 1.DKIIO5Pq.js} +1 -1
- package/build/client/_app/immutable/nodes/{2.CJRPZhbe.js → 2.CpOJSq6u.js} +223 -223
- 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-B8BUpxGM.js → db.js-DQm6CZ_r.js} +2 -2
- package/build/server/chunks/chunks/{db2.js-CNe3I_g2.js → db2.js-DUhFxA3a.js} +2 -2
- package/build/server/chunks/chunks/{dsh-connection.js-xltcocWy.js → dsh-connection.js-BgeraFA2.js} +2 -2
- package/build/server/chunks/chunks/{git-probe.js-CUsTmhmV.js → git-probe.js-Cn_ugqcH.js} +2 -2
- package/build/server/chunks/chunks/{insight-config.js-CaHHJpFK.js → insight-config.js-Dp_2gB5J.js} +5 -3
- package/build/server/chunks/chunks/{internal2.js-Pv5iygVN.js → internal2.js-DFG0wDsP.js} +2 -2
- package/build/server/chunks/chunks/{registry.js-BTiJ1Kaj.js → registry.js-BC-TNdmn.js} +47 -8
- package/build/server/chunks/chunks/{state.js-BCaKzPy6.js → state.js-Dki_Bq11.js} +2 -2
- package/build/server/chunks/chunks/{watcher.js-DcT3cS4v.js → watcher.js-f54CFvdI.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-19pFOjH8.js → _server.ts.js-BjzdVwdY.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-BcUn6axe.js → _server.ts.js-DN0zl7cz.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-oMpzLZoy.js → _server.ts.js-C3byr74D.js} +5 -5
- package/build/server/chunks/entries/endpoints/api/browser/_id_/close/{_server.ts.js-DC3qPMQS.js → _server.ts.js-BKChU9D7.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/input/{_server.ts.js-CHNcK7BH.js → _server.ts.js-CUFYX5kg.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/mcp/{_server.ts.js-CYkOJL2O.js → _server.ts.js-fg2eb_ZY.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/navigate/{_server.ts.js-DHTDi8KR.js → _server.ts.js-Dt1n31IP.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/page/{_server.ts.js-Y5khEC2l.js → _server.ts.js-DIF8juwJ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/stream/{_server.ts.js-BmjgfZD2.js → _server.ts.js-BFdXJdhd.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/_id_/viewport/{_server.ts.js-IxS-goi1.js → _server.ts.js-BIF_7OHe.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/browser/{_server.ts.js-6STmJ7FD.js → _server.ts.js-B7yjEF1N.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-BVyx8gPc.js → _server.ts.js-C8XDnDwe.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-CNJbv6CC.js → _server.ts.js-BFmWshpv.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/{_server.ts.js-CDWmXDJX.js → _server.ts.js-DATWy5mQ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/jobs/follow/{_server.ts.js-BDXQcQSL.js → _server.ts.js-CugOD1Zd.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-CgedtzOg.js → _server.ts.js-DCupM4da.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-ut2pK15B.js → _server.ts.js-Bh1btvr9.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-Ct2W7g4c.js → _server.ts.js-Cb8SBWVw.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-Rke3V_qh.js → _server.ts.js-WI9yH2iG.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BYHm5WBA.js → _server.ts.js-bN9adUqz.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-B_bEUKkt.js → _server.ts.js-Bxlm966G.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-D78fGUQk.js → _server.ts.js-CM-raN_Q.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-CgB_c7zG.js → _server.ts.js-lBsxHSo6.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-dVaW22_K.js → _server.ts.js-DvNkrTaY.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-Dl8SBXdH.js → _server.ts.js-DXbCrefw.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-BKDiwMIE.js → _server.ts.js-BrEgFdCF.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-D3FY2Wxt.js → _server.ts.js-C_AEaLLJ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-BWuIEdjl.js → _server.ts.js-Dj-pF5ik.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-CeiQFOGP.js → _server.ts.js-BX9FWJ6g.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-lMofZOns.js → _server.ts.js-CQ2Bmtu4.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-CNalVHrK.js → _server.ts.js-Ha7xjnKW.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-I2s8qvcV.js → _server.ts.js-BOg6llHk.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-DTKELD7v.js → _server.ts.js-DBqGALzZ.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-BXSD__Gg.js → _server.ts.js-CvA8WDDb.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-C9IZl2Qh.js → _server.ts.js-BfjNH40j.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-BRXu3UtL.js → _server.ts.js-De_qumyr.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-DmnpiaD2.js → _server.ts.js-tFpJJHCb.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-C5qCdsdm.js → _server.ts.js-DVx5GGA_.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-BVUn49yf.js → _server.ts.js-DuKT-aZp.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-DuCOsoF0.js → _server.ts.js-DsWFidFY.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-2mcRY7IP.js → _server.ts.js-C6j0adQs.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-DZjaHZxU.js → _server.ts.js-BChAg4hm.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DTVmsohJ.js → _server.ts.js-BPSHqbZN.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/terminal/{_server.ts.js-DZXTArj7.js → _server.ts.js-D5CbUe5k.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-LSc5EKH7.js → _server.ts.js-BRhlbYEe.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-DNjiScBe.js → _server.ts.js-B9YI66ZL.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-CHMbLoSn.js → _server.ts.js-DSvXRZQL.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-BgM4JEAm.js → _server.ts.js-8A0skdlM.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-BH0cLS8o.js → _server.ts.js-Bc6J3t3m.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BzlV3cVT.js → _server.ts.js-CfL8Por5.js} +4 -4
- package/build/server/chunks/entries/pages/{_error.svelte.js-BRyCyR0c.js → _error.svelte.js-EnDLC3Jj.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.server.ts.js-DttLUwdf.js → _page.server.ts.js-ar1DbW1v.js} +2 -2
- package/build/server/chunks/entries/pages/{_page.svelte.js-CKY8hz9T.js → _page.svelte.js-CQUo8VGL.js} +125 -61
- package/build/server/chunks/{handler-D1oqmwyy.js → handler-BBp0LoYK.js} +3 -3
- package/build/server/chunks/{index.js-BZ8zP9wS.js → index.js-S4257Wcs.js} +2 -2
- package/build/server/chunks/{manifest.js-CA6PuZTD.js → manifest.js-DajiWH1H.js} +54 -54
- package/build/server/chunks/nodes/1.js-OAvYMTzU.js +9 -0
- package/build/server/chunks/nodes/{2.js-P1boc94A.js → 2.js-BORDEffk.js} +7 -7
- package/package.json +1 -1
- package/skills/dsi-kb-scenario/SKILL.md +67 -0
- package/template/.dsi/prompts.sqlite-shm +0 -0
- package/template/.dsi/prompts.sqlite-wal +0 -0
- package/template/.dsi/settings.yaml +8 -1
- package/build/client/_app/immutable/assets/2.BhBfHqja.css +0 -1
- package/build/client/_app/immutable/chunks/gZFoJ-NI.js +0 -1
- package/build/client/_app/immutable/chunks/xkjLeSzJ.js +0 -1
- package/build/client/_app/immutable/entry/start.mBp3LB6J.js +0 -1
- package/build/server/chunks/nodes/1.js-Q6zZupRG.js +0 -9
|
@@ -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-BM4WbMFB.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-Dki_Bq11.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-DFG0wDsP.js';
|
|
25
25
|
import '../../chunks/utils.js-CAdNO8Tu.js';
|
|
26
26
|
|
|
27
27
|
//#region src/lib/paraglide/messages/abort.js
|
|
@@ -952,6 +952,38 @@ var browserchiplabel2 = ((inputs = {}, options = {}) => {
|
|
|
952
952
|
return en_browserchiplabel2();
|
|
953
953
|
});
|
|
954
954
|
//#endregion
|
|
955
|
+
//#region src/lib/paraglide/messages/browserclosedelete2.js
|
|
956
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
957
|
+
/** @typedef {{}} Browserclosedelete2Inputs */
|
|
958
|
+
var en_browserclosedelete2 = () => {
|
|
959
|
+
return `Delete the glass browser — kills the session and removes the panel`;
|
|
960
|
+
};
|
|
961
|
+
var zh_browserclosedelete2 = () => {
|
|
962
|
+
return `删除玻璃浏览器 — 终止会话并移除面板`;
|
|
963
|
+
};
|
|
964
|
+
var id_browserclosedelete2 = () => {
|
|
965
|
+
return `Hapus browser kaca — matikan sesi dan hapus panel`;
|
|
966
|
+
};
|
|
967
|
+
var es_browserclosedelete2 = () => {
|
|
968
|
+
return `Eliminar el navegador de vidrio — mata la sesión y quita el panel`;
|
|
969
|
+
};
|
|
970
|
+
/**
|
|
971
|
+
* | output |
|
|
972
|
+
* | --- |
|
|
973
|
+
* | "Delete the glass browser — kills the session and removes the panel" |
|
|
974
|
+
*
|
|
975
|
+
* @param {Browserclosedelete2Inputs} inputs
|
|
976
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
977
|
+
* @returns {LocalizedString}
|
|
978
|
+
*/
|
|
979
|
+
var browserclosedelete2 = ((inputs = {}, options = {}) => {
|
|
980
|
+
const locale = options.locale ?? getLocale();
|
|
981
|
+
if (locale === "zh") return zh_browserclosedelete2();
|
|
982
|
+
if (locale === "id") return id_browserclosedelete2();
|
|
983
|
+
if (locale === "es") return es_browserclosedelete2();
|
|
984
|
+
return en_browserclosedelete2();
|
|
985
|
+
});
|
|
986
|
+
//#endregion
|
|
955
987
|
//#region src/lib/paraglide/messages/browserforward1.js
|
|
956
988
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
957
989
|
/** @typedef {{}} Browserforward1Inputs */
|
|
@@ -14840,6 +14872,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
14840
14872
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
14841
14873
|
browserBack: () => browserback1,
|
|
14842
14874
|
browserChipLabel: () => browserchiplabel2,
|
|
14875
|
+
browserCloseDelete: () => browserclosedelete2,
|
|
14843
14876
|
browserForward: () => browserforward1,
|
|
14844
14877
|
browserLaunching: () => browserlaunching1,
|
|
14845
14878
|
browserOpenTitle: () => browseropentitle2,
|
|
@@ -15311,6 +15344,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
15311
15344
|
broadcastSyncedTo: () => broadcastsyncedto2,
|
|
15312
15345
|
browserBack: () => browserback1,
|
|
15313
15346
|
browserChipLabel: () => browserchiplabel2,
|
|
15347
|
+
browserCloseDelete: () => browserclosedelete2,
|
|
15314
15348
|
browserForward: () => browserforward1,
|
|
15315
15349
|
browserLaunching: () => browserlaunching1,
|
|
15316
15350
|
browserOpenTitle: () => browseropentitle2,
|
|
@@ -17585,7 +17619,7 @@ function ThemeToggle($$renderer, $$props) {
|
|
|
17585
17619
|
}
|
|
17586
17620
|
//#endregion
|
|
17587
17621
|
//#region package.json
|
|
17588
|
-
var version = "0.8.
|
|
17622
|
+
var version = "0.8.2";
|
|
17589
17623
|
var dsh = { "webVersion": "0.2.1-rc.2" };
|
|
17590
17624
|
//#endregion
|
|
17591
17625
|
//#region src/lib/version.ts
|
|
@@ -23324,6 +23358,32 @@ function panelRowsFor(input) {
|
|
|
23324
23358
|
function rowFactsByPanelId(rows) {
|
|
23325
23359
|
return new Map(rows.map((r) => [r.panel.id, r]));
|
|
23326
23360
|
}
|
|
23361
|
+
/**
|
|
23362
|
+
* The folded-glass ghost rows (ADR-0037 D4, extracted 2026-10-24 — the
|
|
23363
|
+
* Glass Close Ladder task 2.2): the ONE derivation the route renders.
|
|
23364
|
+
* Pure over the slot mirror — a removeBrowserSlot prune drops the ghost
|
|
23365
|
+
* (roster) and the spine nest in the same stroke (Ladder ADR D4).
|
|
23366
|
+
*/
|
|
23367
|
+
function foldedGlassRowsFor(slots, depthOf, titleFor) {
|
|
23368
|
+
return slots.filter((s) => s.folded && s.sessionId && s.openedBy).map((s) => ({
|
|
23369
|
+
panel: {
|
|
23370
|
+
id: "glass-" + s.sessionId,
|
|
23371
|
+
kind: "conversation",
|
|
23372
|
+
sessionId: s.sessionId,
|
|
23373
|
+
agentPreset: null,
|
|
23374
|
+
width: 0
|
|
23375
|
+
},
|
|
23376
|
+
title: "Browser — " + (titleFor(s.openedBy) ?? s.openedBy),
|
|
23377
|
+
workspace: null,
|
|
23378
|
+
dead: false,
|
|
23379
|
+
running: true,
|
|
23380
|
+
depth: depthOf(s.openedBy) + 1,
|
|
23381
|
+
runningDescendants: 0,
|
|
23382
|
+
kind: "ghost",
|
|
23383
|
+
parentSessionId: s.openedBy,
|
|
23384
|
+
siblingIndex: -1
|
|
23385
|
+
}));
|
|
23386
|
+
}
|
|
23327
23387
|
//#endregion
|
|
23328
23388
|
//#region src/lib/components/prompt-manager/PromptsManagerDialogHeader.svelte
|
|
23329
23389
|
function PromptsManagerDialogHeader($$renderer, $$props) {
|
|
@@ -32836,6 +32896,19 @@ function persistBrowserSlots(slots, storage = defaultStorage()) {
|
|
|
32836
32896
|
* plain .ts module stays rune-free). Rows and the route derive the
|
|
32837
32897
|
* folded set from it; persistBrowserSlots is the only writer. */
|
|
32838
32898
|
var browserSlotStore = writable([]);
|
|
32899
|
+
/**
|
|
32900
|
+
* Drop the slot entry whose glass session died (The Glass Close Ladder
|
|
32901
|
+
* ADR 2026-10-24 D4): the live prune — a dead glass's entry is REMOVED,
|
|
32902
|
+
* never folded, so the roster ghost and the spine nest drop with it in
|
|
32903
|
+
* the same mirror stroke, no reload. Unknown id = quiet no-op (false).
|
|
32904
|
+
*/
|
|
32905
|
+
function removeBrowserSlot(sessionId, storage = defaultStorage()) {
|
|
32906
|
+
const slots = readBrowserSlots(storage);
|
|
32907
|
+
const next = slots.filter((s) => s.sessionId !== sessionId);
|
|
32908
|
+
if (next.length === slots.length) return false;
|
|
32909
|
+
persistBrowserSlots(next, storage);
|
|
32910
|
+
return true;
|
|
32911
|
+
}
|
|
32839
32912
|
/** Seed the mirror from storage (boot). */
|
|
32840
32913
|
function primeBrowserSlotStore(storage = defaultStorage()) {
|
|
32841
32914
|
browserSlotStore.set(readBrowserSlots(storage));
|
|
@@ -32845,7 +32918,7 @@ function primeBrowserSlotStore(storage = defaultStorage()) {
|
|
|
32845
32918
|
function BrowserClosed($$renderer, $$props) {
|
|
32846
32919
|
$$renderer.component(($$renderer) => {
|
|
32847
32920
|
let { closing = false} = $$props;
|
|
32848
|
-
$$renderer.push(`<button data-svelte="BrowserClosed" class="rounded
|
|
32921
|
+
$$renderer.push(`<button data-svelte="BrowserClosed" class="rounded hover:bg-surface-active svelte-18cg1lj" data-testid="browse-close"${attr("aria-label", browserclosedelete2())}${attr("title", browserclosedelete2())}${attr("disabled", closing, true)}><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="red" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 6h18"></path><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"></path><path d="M10 11v6"></path><path d="M14 11v6"></path></svg></button>`);
|
|
32849
32922
|
});
|
|
32850
32923
|
}
|
|
32851
32924
|
//#endregion
|
|
@@ -34911,6 +34984,18 @@ function workspaceExplorerSlot(panels, selectedIndex, facts) {
|
|
|
34911
34984
|
return focusedInsertionSlot(panels, selectedIndex, facts.parentOf);
|
|
34912
34985
|
}
|
|
34913
34986
|
/**
|
|
34987
|
+
* The glass FIRST slot under its opener (operator ruling 2026-10-24):
|
|
34988
|
+
* a summoned/spawned glass lands DIRECTLY below its opener - past the
|
|
34989
|
+
* opener document tail, BEFORE every adopted child - matching the
|
|
34990
|
+
* spine tree wire order -1 (the ghost always reads as the first
|
|
34991
|
+
* child). Supersedes the region-end placement for the glass only.
|
|
34992
|
+
*/
|
|
34993
|
+
function glassFirstSlot(panels, openedBy) {
|
|
34994
|
+
const openerIdx = panels.findIndex((p) => p.kind === "conversation" && p.sessionId === openedBy);
|
|
34995
|
+
if (openerIdx === -1) return panels.length;
|
|
34996
|
+
return docTailEnd(panels, openerIdx, openedBy) + 1;
|
|
34997
|
+
}
|
|
34998
|
+
/**
|
|
34914
34999
|
* Insert-before-focused slot (operator spec, 2026-08-31): a fresh panel
|
|
34915
35000
|
* lands at the FOCUSED panel's index — immediately before it — and takes
|
|
34916
35001
|
* focus (the route selects it). 0 when nothing is focused (empty floor,
|
|
@@ -34938,7 +35023,7 @@ function focusedInsertionSlot(panels, selectedIndex, parentOf) {
|
|
|
34938
35023
|
const focus = Math.max(0, selectedIndex);
|
|
34939
35024
|
const focused = panels[focus];
|
|
34940
35025
|
if (focused === void 0) return 0;
|
|
34941
|
-
if (focused.kind === "workspace-explorer" || focused.kind === "workspace-file") {
|
|
35026
|
+
if (focused.kind === "workspace-explorer" || focused.kind === "workspace-file" || focused.kind === "browser") {
|
|
34942
35027
|
const block = blockBounds(panels, focus, { parentOf });
|
|
34943
35028
|
return block === null ? focus : block[0];
|
|
34944
35029
|
}
|
|
@@ -34953,34 +35038,6 @@ function focusedInsertionSlot(panels, selectedIndex, parentOf) {
|
|
|
34953
35038
|
const headIndex = panels.findIndex((p) => p.kind === "conversation" && p.sessionId === head);
|
|
34954
35039
|
return headIndex >= 0 ? Math.min(headIndex, focus) : focus;
|
|
34955
35040
|
}
|
|
34956
|
-
/**
|
|
34957
|
-
* Lineage-order slot below an OPEN spawner (operator spec, 2026-08-28):
|
|
34958
|
-
* after the spawner AND after every already-adopted sibling that PRECEDES
|
|
34959
|
-
* the child in wire order — plus those siblings' own panels (an adopted
|
|
34960
|
-
* subtree travels whole). Ghost clicks and sub-agent replacements keep the
|
|
34961
|
-
* family region in the ghost list's order regardless of arrival sequence:
|
|
34962
|
-
* adopting sub2 then sub3 lands |A|sub2|sub3|, a late sub1 slots back to
|
|
34963
|
-
* |A|sub1|sub2|sub3|.
|
|
34964
|
-
*/
|
|
34965
|
-
function lineagePinnedSlot(panels, childrenByParent, parentSessionId, childSessionId) {
|
|
34966
|
-
let base = panels.findIndex((p) => p.kind === "conversation" && p.sessionId === parentSessionId) + 1;
|
|
34967
|
-
base = docTailEnd(panels, base - 1, parentSessionId) + 1;
|
|
34968
|
-
const siblings = childrenByParent.get(parentSessionId) ?? [];
|
|
34969
|
-
const mine = siblings.findIndex((s) => s.sessionId === childSessionId);
|
|
34970
|
-
const closure = new Set(siblings.slice(0, mine < 0 ? siblings.length : mine).map((s) => s.sessionId));
|
|
34971
|
-
const stack = [...closure];
|
|
34972
|
-
while (stack.length > 0) for (const k of childrenByParent.get(stack.pop()) ?? []) if (!closure.has(k.sessionId)) {
|
|
34973
|
-
closure.add(k.sessionId);
|
|
34974
|
-
stack.push(k.sessionId);
|
|
34975
|
-
}
|
|
34976
|
-
let index = base;
|
|
34977
|
-
while (index < panels.length) {
|
|
34978
|
-
const at = panels[index];
|
|
34979
|
-
if (at.kind !== "conversation" || !closure.has(at.sessionId)) break;
|
|
34980
|
-
index++;
|
|
34981
|
-
}
|
|
34982
|
-
return index;
|
|
34983
|
-
}
|
|
34984
35041
|
//#endregion
|
|
34985
35042
|
//#region src/lib/services/panels/floor-registry/chrome.ts
|
|
34986
35043
|
/**
|
|
@@ -35021,7 +35078,7 @@ function openBrowserPanel(index, keepSelection = false, width, openedBy, session
|
|
|
35021
35078
|
return;
|
|
35022
35079
|
}
|
|
35023
35080
|
const prevSelected = st.selectedPanelId;
|
|
35024
|
-
const slot = index !== void 0 ? Math.max(0, Math.min(index, st.panels.length)) : openedBy !== void 0
|
|
35081
|
+
const slot = index !== void 0 ? Math.max(0, Math.min(index, st.panels.length)) : openedBy !== void 0 ? glassFirstSlot(st.panels, openedBy) : insertionSlot();
|
|
35025
35082
|
insertPanel(makeBrowserPanel(width, openedBy, sessionId), slot);
|
|
35026
35083
|
if (keepSelection && prevSelected !== null && prevSelected !== void 0) {
|
|
35027
35084
|
if (st.panels.some((p) => p.id === prevSelected)) st.selectedPanelId = prevSelected;
|
|
@@ -35325,9 +35382,6 @@ function insertPanel(entry, index) {
|
|
|
35325
35382
|
function insertionSlot() {
|
|
35326
35383
|
return focusedInsertionSlot(st.panels, selectedIndex_(), d$1().getMoveFacts().parentOf);
|
|
35327
35384
|
}
|
|
35328
|
-
function pinnedSlotIndex(parentSessionId, childSessionId) {
|
|
35329
|
-
return lineagePinnedSlot(st.panels, d$1().getLineageFacts().childrenByParent, parentSessionId, childSessionId);
|
|
35330
|
-
}
|
|
35331
35385
|
//#endregion
|
|
35332
35386
|
//#region src/lib/services/panels/floor-registry.svelte.ts
|
|
35333
35387
|
var deps = null;
|
|
@@ -35430,6 +35484,27 @@ function selectedIndex_() {
|
|
|
35430
35484
|
return st.panels.findIndex((p) => p.id === st.selectedPanelId);
|
|
35431
35485
|
}
|
|
35432
35486
|
//#endregion
|
|
35487
|
+
//#region src/lib/services/panels/glass-release.ts
|
|
35488
|
+
/**
|
|
35489
|
+
* glass-release — the Glass Close Ladder executor (ADR 2026-10-24 D1/D3):
|
|
35490
|
+
* the ONE wire-kill caller. The registry stays the only teardown authority;
|
|
35491
|
+
* this module merely knocks on its door — fire-and-forget POST close per
|
|
35492
|
+
* doomed glass id, an ok answer pruning the slot entry LIVE (D4). A network
|
|
35493
|
+
* failure swallows (the reaper stays the net); a refusal never prunes.
|
|
35494
|
+
* Pure seam shape: fetch and the prune are injectable for tests.
|
|
35495
|
+
*/
|
|
35496
|
+
async function releaseGlasses(sessionIds, deps = {}) {
|
|
35497
|
+
if (sessionIds.length === 0) return;
|
|
35498
|
+
const doFetch = deps.fetchImpl ?? fetch;
|
|
35499
|
+
const apiBase = deps.apiBase ?? "";
|
|
35500
|
+
await Promise.all(sessionIds.map(async (id) => {
|
|
35501
|
+
try {
|
|
35502
|
+
if (!(await doFetch(apiBase + "/api/browser/" + id + "/close", { method: "POST" })).ok) return;
|
|
35503
|
+
(deps.prune ?? ((sid) => removeBrowserSlot(sid)))(id);
|
|
35504
|
+
} catch {}
|
|
35505
|
+
}));
|
|
35506
|
+
}
|
|
35507
|
+
//#endregion
|
|
35433
35508
|
//#region src/lib/services/panels/floor-reads.svelte.ts
|
|
35434
35509
|
var floorReads = {
|
|
35435
35510
|
get spineRows() {
|
|
@@ -35573,7 +35648,8 @@ function _page($$renderer, $$props) {
|
|
|
35573
35648
|
setPanelWidthPreset: (w) => pagePrefs.panelWidth = w,
|
|
35574
35649
|
setTreePct: (pct) => pagePrefs.treePct = pct,
|
|
35575
35650
|
getSettingsHomes: () => appConfig().settingsHomes,
|
|
35576
|
-
applyTerminalDeskAction: (a) => void 0
|
|
35651
|
+
applyTerminalDeskAction: (a) => void 0,
|
|
35652
|
+
releaseGlasses: (ids) => void releaseGlasses(ids)
|
|
35577
35653
|
});
|
|
35578
35654
|
initFloor(seededInitially ? [makePanel(seedSessionId(), seedCold?.agentPreset ?? null)] : initialPrefs.panels, seededInitially ? null : initialPrefs.selectedPanelId);
|
|
35579
35655
|
if (seededInitially) selectPanel(floor.panels[0]?.id ?? null);
|
|
@@ -35596,9 +35672,11 @@ function _page($$renderer, $$props) {
|
|
|
35596
35672
|
} catch {}
|
|
35597
35673
|
}
|
|
35598
35674
|
/** Bring ONE folded glass back (the summon; the replace verb is the
|
|
35599
|
-
* same re-bind — the glass owns its slot identity, D4).
|
|
35600
|
-
|
|
35601
|
-
|
|
35675
|
+
* same re-bind — the glass owns its slot identity, D4). keepSelection:
|
|
35676
|
+
* boot restore keeps the operator's focus (true, the default); the
|
|
35677
|
+
* ghost-click summon focuses the GLASS (false, Ladder focus contract). */
|
|
35678
|
+
function summonGlass(glass, opts = {}) {
|
|
35679
|
+
openBrowserPanel(glass.index, opts.keepSelection ?? true, glass.width, glass.openedBy, glass.sessionId);
|
|
35602
35680
|
}
|
|
35603
35681
|
primeBrowserSlotStore();
|
|
35604
35682
|
restoreBrowserGlasses();
|
|
@@ -35614,24 +35692,7 @@ function _page($$renderer, $$props) {
|
|
|
35614
35692
|
const spineWorkspaces = derived(() => floorReads.spineWorkspaces);
|
|
35615
35693
|
const lineageFacts = derived(() => floorReads.lineageFacts);
|
|
35616
35694
|
const conversationPanels = derived(() => floorReads.conversationPanels);
|
|
35617
|
-
const allFoldedGlassRows = derived(() => store_get($$store_subs ??= {}, "$browserSlotStore", browserSlotStore)
|
|
35618
|
-
panel: {
|
|
35619
|
-
id: "glass-" + s.sessionId,
|
|
35620
|
-
kind: "conversation",
|
|
35621
|
-
sessionId: s.sessionId,
|
|
35622
|
-
agentPreset: null,
|
|
35623
|
-
width: 0
|
|
35624
|
-
},
|
|
35625
|
-
title: "Browser — " + (panelTitleFor(s.openedBy) ?? s.openedBy),
|
|
35626
|
-
workspace: null,
|
|
35627
|
-
dead: false,
|
|
35628
|
-
running: true,
|
|
35629
|
-
depth: (lineageFacts().depthById.get(s.openedBy) ?? 0) + 1,
|
|
35630
|
-
runningDescendants: 0,
|
|
35631
|
-
kind: "ghost",
|
|
35632
|
-
parentSessionId: s.openedBy,
|
|
35633
|
-
siblingIndex: -1
|
|
35634
|
-
})));
|
|
35695
|
+
const allFoldedGlassRows = derived(() => foldedGlassRowsFor(store_get($$store_subs ??= {}, "$browserSlotStore", browserSlotStore), (id) => lineageFacts().depthById.get(id) ?? 0, (id) => panelTitleFor(id)));
|
|
35635
35696
|
const spineGlassRows = derived(() => allFoldedGlassRows().filter((g) => !conversationPanels().some((p) => p.sessionId === g.parentSessionId)).map((g) => ({
|
|
35636
35697
|
sessionId: g.panel.sessionId,
|
|
35637
35698
|
openedBy: g.parentSessionId,
|
|
@@ -35704,7 +35765,10 @@ function _page($$renderer, $$props) {
|
|
|
35704
35765
|
$$renderer.push("<!--[1-->");
|
|
35705
35766
|
BrowserManager($$renderer, {
|
|
35706
35767
|
browserSessionId: "browserSessionId" in panel ? panel.browserSessionId : void 0,
|
|
35707
|
-
onclose: () =>
|
|
35768
|
+
onclose: () => {
|
|
35769
|
+
if ("browserSessionId" in panel && panel.browserSessionId) releaseGlasses([panel.browserSessionId]);
|
|
35770
|
+
removePanel(panel.id);
|
|
35771
|
+
},
|
|
35708
35772
|
openedBy: panel.openedBy,
|
|
35709
35773
|
parentTitle: panel.openedBy ? panelTitleFor(panel.openedBy) ?? panel.openedBy : null,
|
|
35710
35774
|
depth: panel.openedBy ? lineageFacts().depthById.get(panel.openedBy) ?? 0 : 0});
|
|
@@ -35942,4 +36006,4 @@ function _page($$renderer, $$props) {
|
|
|
35942
36006
|
}
|
|
35943
36007
|
|
|
35944
36008
|
export { _page as default };
|
|
35945
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
36009
|
+
//# sourceMappingURL=_page.svelte.js-CQUo8VGL.js.map
|
|
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
|
|
|
9
9
|
import { Readable } from 'node:stream';
|
|
10
10
|
import { S as SvelteKitError } from './chunks/shared.js-HQ0rfhm4.js';
|
|
11
11
|
import './chunks/utils.js-CAdNO8Tu.js';
|
|
12
|
-
import { S as Server } from './index.js-
|
|
13
|
-
import { m as manifest } from './manifest.js-
|
|
12
|
+
import { S as Server } from './index.js-S4257Wcs.js';
|
|
13
|
+
import { m as manifest } from './manifest.js-DajiWH1H.js';
|
|
14
14
|
import { env, dir, env_prefix } from '../../env.js';
|
|
15
15
|
import { format } from 'node:url';
|
|
16
16
|
|
|
@@ -1732,4 +1732,4 @@ const handler = sequence(
|
|
|
1732
1732
|
);
|
|
1733
1733
|
|
|
1734
1734
|
export { format_listening_address as f, handler as h, polka as p };
|
|
1735
|
-
//# sourceMappingURL=handler-
|
|
1735
|
+
//# sourceMappingURL=handler-BBp0LoYK.js.map
|
|
@@ -3,7 +3,7 @@ import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redi
|
|
|
3
3
|
import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal.js-BcS47nI-.js';
|
|
4
4
|
import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-CAdNO8Tu.js';
|
|
5
5
|
import { u as uneval } from './chunks/uneval.js-BJ9Qq2SF.js';
|
|
6
|
-
import { o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal2.js-
|
|
6
|
+
import { o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal2.js-DFG0wDsP.js';
|
|
7
7
|
import { d as decode_pathname, f as find_route, n as normalize_path, a as disable_search, v as validate_layout_server_exports, b as validate_layout_exports, c as validate_page_server_exports, e as validate_page_exports, r as resolve, h as hash, m as make_trackable } from './chunks/exports.js-DH_tjtdv.js';
|
|
8
8
|
import { S as readable, T as writable } from './chunks/server.js-B1bDXhHu.js';
|
|
9
9
|
|
|
@@ -3862,4 +3862,4 @@ var Server = class {
|
|
|
3862
3862
|
};
|
|
3863
3863
|
|
|
3864
3864
|
export { Server as S };
|
|
3865
|
-
//# sourceMappingURL=index.js-
|
|
3865
|
+
//# sourceMappingURL=index.js-S4257Wcs.js.map
|