@deepseek-insight/dsi 0.5.33 → 0.5.35
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/0.9KCWnpRq.css +2 -0
- package/build/client/_app/immutable/assets/2.B2TMGoNC.css +1 -0
- package/build/client/_app/immutable/chunks/-BV4MEqr.js +1 -0
- package/build/client/_app/immutable/chunks/{BO15_-NJ.js → B2hm1w7K.js} +1 -1
- package/build/client/_app/immutable/chunks/{B3Lta-Nn.js → B52Khb6E.js} +1 -1
- package/build/client/_app/immutable/chunks/{Da0rl5Rb.js → B9fOkvHb.js} +1 -1
- package/build/client/_app/immutable/chunks/{CIZRvqf3.js → BC5nqwvj.js} +1 -1
- package/build/client/_app/immutable/chunks/{CVJBb63S.js → BFsDYOFz.js} +1 -1
- package/build/client/_app/immutable/chunks/{BOGXkyy3.js → BGQXNvll.js} +1 -1
- package/build/client/_app/immutable/chunks/{1KjP5PPV.js → BIUi504d.js} +1 -1
- package/build/client/_app/immutable/chunks/{wRPKccfz.js → BIvFR1xA.js} +1 -1
- package/build/client/_app/immutable/chunks/{BS84xqUl.js → BKYpDGvC.js} +1 -1
- package/build/client/_app/immutable/chunks/{DzNl4lTU.js → BNx4_m7U.js} +1 -1
- package/build/client/_app/immutable/chunks/{BhMqa9V0.js → BOKyldQm.js} +1 -1
- package/build/client/_app/immutable/chunks/{BFYiBR8b.js → BRNBFqQ_.js} +1 -1
- package/build/client/_app/immutable/chunks/{B5bIZjCh.js → B_6pr4k2.js} +1 -1
- package/build/client/_app/immutable/chunks/{BoJ5ww2X.js → BfChGCnE.js} +1 -1
- package/build/client/_app/immutable/chunks/{BK9wQfnJ.js → Bi25XSWW.js} +1 -1
- package/build/client/_app/immutable/chunks/{CXDjw6BI.js → Bi5NvDds.js} +1 -1
- package/build/client/_app/immutable/chunks/{CjMviqoD.js → Bl78Sc72.js} +1 -1
- package/build/client/_app/immutable/chunks/{DGget9Lk.js → BlD_VX1s.js} +1 -1
- package/build/client/_app/immutable/chunks/{D2Punuji.js → Bn64J6A-.js} +1 -1
- package/build/client/_app/immutable/chunks/{BQFPW2iU.js → Bp4vT1Ke.js} +1 -1
- package/build/client/_app/immutable/chunks/BqX4FuMJ.js +1 -0
- package/build/client/_app/immutable/chunks/{DnA33f7e.js → C-58cZAk.js} +1 -1
- package/build/client/_app/immutable/chunks/{FDKaBHdO.js → C1rk31qs.js} +1 -1
- package/build/client/_app/immutable/chunks/{eNqKaSDb.js → C2vkjTiv.js} +1 -1
- package/build/client/_app/immutable/chunks/{C7xeaPF2.js → C48u-2qp.js} +1 -1
- package/build/client/_app/immutable/chunks/{D9XozwcM.js → C7a8i7sD.js} +1 -1
- package/build/client/_app/immutable/chunks/{tziyL5EM.js → C7iYNw8X.js} +1 -1
- package/build/client/_app/immutable/chunks/{CA7VtFsM.js → C8wGq5T2.js} +1 -1
- package/build/client/_app/immutable/chunks/{DVsJyQaB.js → CDTTZjYW.js} +1 -1
- package/build/client/_app/immutable/chunks/{CQNMOuVz.js → CEj_BGCY.js} +1 -1
- package/build/client/_app/immutable/chunks/{dg-Ik0Xp.js → CG77uzLI.js} +1 -1
- package/build/client/_app/immutable/chunks/{DfxnqpU2.js → CI1tkkzb.js} +1 -1
- package/build/client/_app/immutable/chunks/{DTVIMflS.js → CItDRTlN.js} +1 -1
- package/build/client/_app/immutable/chunks/{BKMUCRSB.js → CLvIgAhR.js} +1 -1
- package/build/client/_app/immutable/chunks/{7Qwz4TD3.js → CPbUcKPc.js} +1 -1
- package/build/client/_app/immutable/chunks/CPhcxli7.js +1 -0
- package/build/client/_app/immutable/chunks/{BtWgux0k.js → CRe9IZg0.js} +1 -1
- package/build/client/_app/immutable/chunks/CT1m72HM.js +1 -0
- package/build/client/_app/immutable/chunks/{C6qkDvEg.js → CXG3xpeH.js} +2 -2
- package/build/client/_app/immutable/chunks/{DHChdxxK.js → CaAId7nh.js} +1 -1
- package/build/client/_app/immutable/chunks/{5W1abxrJ.js → CdFbOrCf.js} +1 -1
- package/build/client/_app/immutable/chunks/{Dufckt0T.js → Cdn_bzx2.js} +1 -1
- package/build/client/_app/immutable/chunks/{D_4vyw9k.js → CmNEu9LM.js} +1 -1
- package/build/client/_app/immutable/chunks/{BNCXVe_Y.js → CnAA0dO8.js} +1 -1
- package/build/client/_app/immutable/chunks/{_OxPZn8v.js → CpX84bXa.js} +1 -1
- package/build/client/_app/immutable/chunks/{D-p2gaJO.js → CvWnUnS1.js} +1 -1
- package/build/client/_app/immutable/chunks/{qDr7l6ST.js → CvjdFV1E.js} +1 -1
- package/build/client/_app/immutable/chunks/{XM-sjL-p.js → Cx__ttXF.js} +1 -1
- package/build/client/_app/immutable/chunks/CxnI-Htc.js +8 -0
- package/build/client/_app/immutable/chunks/D0uZseUH.js +1 -0
- package/build/client/_app/immutable/chunks/{T453H1uG.js → D3bC95qg.js} +1 -1
- package/build/client/_app/immutable/chunks/{DtdNJetN.js → D4Ogpdhb.js} +1 -1
- package/build/client/_app/immutable/chunks/{DrLWFO8Z.js → D4xFb7_b.js} +1 -1
- package/build/client/_app/immutable/chunks/{CfqeI44h.js → D5ecapQY.js} +1 -1
- package/build/client/_app/immutable/chunks/{NxBjh70M.js → DJ36HFmi.js} +1 -1
- package/build/client/_app/immutable/chunks/{CfKp2keY.js → Dea0pTfN.js} +4 -4
- package/build/client/_app/immutable/chunks/DlKysbhw.js +1 -0
- package/build/client/_app/immutable/chunks/{CWRt23V2.js → Dn4fSUjR.js} +1 -1
- package/build/client/_app/immutable/chunks/{BnEcDyty.js → DqRXQwgi.js} +1 -1
- package/build/client/_app/immutable/chunks/{CT33sMmw.js → DsZdPfqt.js} +1 -1
- package/build/client/_app/immutable/chunks/{CKk3hDrH.js → DypDva7F.js} +1 -1
- package/build/client/_app/immutable/chunks/{CwpTIVX4.js → GNZHLVjs.js} +1 -1
- package/build/client/_app/immutable/chunks/{KCYBrblk.js → GhVfcgWW.js} +4 -4
- package/build/client/_app/immutable/chunks/HwuqC1sa.js +1 -0
- package/build/client/_app/immutable/chunks/{hFCLiR2C.js → J3KpJGd_.js} +1 -1
- package/build/client/_app/immutable/chunks/{pRzztTzl.js → OVDjSnH6.js} +1 -1
- package/build/client/_app/immutable/chunks/{BDws8KMN.js → RIIj2qfU.js} +1 -1
- package/build/client/_app/immutable/chunks/{CbmGLQlS.js → ZwJo3zrp.js} +1 -1
- package/build/client/_app/immutable/chunks/{CWJVj28H.js → a1Hqq5w-.js} +1 -1
- package/build/client/_app/immutable/chunks/{BP1EDRMh.js → iK_uzrhN.js} +1 -1
- package/build/client/_app/immutable/chunks/{4BUyCMHs.js → l5GiMY16.js} +1 -1
- package/build/client/_app/immutable/chunks/{5BuKkouu.js → qkxAgKjo.js} +1 -1
- package/build/client/_app/immutable/chunks/{CfPrYC2A.js → xRO38jd8.js} +1 -1
- package/build/client/_app/immutable/entry/app.CxHLxiFb.js +2 -0
- package/build/client/_app/immutable/entry/start.Bq_MhvgR.js +1 -0
- package/build/client/_app/immutable/nodes/0.Ba4j9lPa.js +1 -0
- package/build/client/_app/immutable/nodes/1.BaBbDjYU.js +1 -0
- package/build/client/_app/immutable/nodes/2.23fwI1xO.js +331 -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/{dsh-connection.js-BSzUs8-n.js → dsh-connection.js-Lnv7PlHw.js} +23 -1
- package/build/server/chunks/chunks/{dsh-events.js-DEZgATm-.js → dsh-events.js-CyvSb4O3.js} +40 -3
- package/build/server/chunks/chunks/{git-probe.js-DoWgYcXG.js → git-probe.js-dOJ4Z5Hb.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-L3lTruRr.js → internal.js-B-_-EpeQ.js} +2 -2
- package/build/server/chunks/chunks/{state.js-YbeUlJBc.js → state.js-Bq7piv9H.js} +2 -2
- package/build/server/chunks/chunks/{watcher.js-ZBFDj7d0.js → watcher.js-bCH9-ZiR.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-C12q5Acf.js → _server.ts.js-CqAXkMAm.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-CdMcLL0n.js → _server.ts.js-FBi0PplP.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-BJMlDa_R.js → _server.ts.js-BAfRDeE_.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-C5xgupWg.js → _server.ts.js-N21TnqYh.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-DG0cxf9Y.js → _server.ts.js-C5ckDTov.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-CjIzvUMY.js → _server.ts.js-CEPz4kVZ.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-DqvT86T0.js → _server.ts.js-CUB5TKnW.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BzBZnI3P.js → _server.ts.js-BfDAa0Vb.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/_server.ts.js-QiLS5yAj.js +142 -0
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-DHWvuiKn.js → _server.ts.js-C5kJrRx-.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-ARtFWpnE.js → _server.ts.js-CYZUxBob.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-rH3qhAct.js → _server.ts.js-y5sqH_UC.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-D_fm0cJY.js → _server.ts.js-BoYIpj-f.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-BqpeQTZq.js → _server.ts.js-DGGCIii3.js} +3 -3
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-CHKAkZEq.js → _server.ts.js-B8bmQCwT.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-DmjKvFqc.js → _server.ts.js-BBexDstc.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-N1651orW.js → _server.ts.js-fd9StFXw.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-w1dYBirS.js → _server.ts.js-98HaDusY.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-Bwb62OTc.js → _server.ts.js-DN9APffn.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-D2BCSITG.js → _server.ts.js-CeROEmUY.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-t_DpnCyJ.js → _server.ts.js-DKHmiqIs.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-BddU8qpx.js → _server.ts.js-S6XZDJmC.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-file-bytes/{_server.ts.js-Di_7wqCI.js → _server.ts.js-Boxbod_L.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-DPz9GQJJ.js → _server.ts.js-CA4PUERZ.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-C1jO88hY.js → _server.ts.js-BObM3Axz.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-C1akVoP3.js → _server.ts.js-CA34p4GV.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-C4RkBuGZ.js → _server.ts.js-DPoRM_7u.js} +2 -2
- package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-D1gyOGEM.js → _server.ts.js-BIOHsnn2.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-D5XlAzdL.js → _server.ts.js-Ci5XitWP.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-BKJbQR9z.js → _server.ts.js-p-potXo3.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-CehoxXA_.js → _server.ts.js-DYFs7MEO.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-DMhaSADa.js → _server.ts.js-BB2bcMwC.js} +4 -4
- package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BQRvPo9G.js → _server.ts.js-DFnO84k1.js} +4 -4
- package/build/server/chunks/entries/pages/{_error.svelte.js-CYWDZLI7.js → _error.svelte.js-4nC1WwZs.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.server.ts.js-C3_-EdaG.js → _page.server.ts.js-Cqf2xfOc.js} +3 -3
- package/build/server/chunks/entries/pages/{_page.svelte.js-D-nbMlOD.js → _page.svelte.js-Bk7bKW1n.js} +661 -97
- package/build/server/chunks/{handler-Dtl9b654.js → handler-D30w2kLV.js} +3 -3
- package/build/server/chunks/{index.js-Dm6-G-_6.js → index.js-x--iEW4O.js} +2 -2
- package/build/server/chunks/{manifest.js-CqSIh_aQ.js → manifest.js-DwCadGtJ.js} +44 -37
- package/build/server/chunks/nodes/{0.js-CWZQcgo6.js → 0.js-D1vjUdTF.js} +3 -3
- package/build/server/chunks/nodes/1.js-CITNCeN6.js +9 -0
- package/build/server/chunks/nodes/{2.js-BUXLNNKI.js → 2.js-BfGjyziD.js} +7 -7
- package/package.json +3 -2
- package/build/client/_app/immutable/assets/0.BU1D48E8.css +0 -2
- package/build/client/_app/immutable/assets/2.PKDcj4V6.css +0 -1
- package/build/client/_app/immutable/chunks/CCeZTRyg.js +0 -1
- package/build/client/_app/immutable/chunks/CM2YlsBZ.js +0 -1
- package/build/client/_app/immutable/chunks/CWCyOfZL.js +0 -1
- package/build/client/_app/immutable/chunks/DB0_Ut01.js +0 -1
- package/build/client/_app/immutable/chunks/DFZg0vdm.js +0 -8
- package/build/client/_app/immutable/chunks/DKLs56Hm.js +0 -1
- package/build/client/_app/immutable/chunks/E-1cXrsM.js +0 -1
- package/build/client/_app/immutable/chunks/N_z8g1dA.js +0 -1
- package/build/client/_app/immutable/entry/app.CivPp_F8.js +0 -2
- package/build/client/_app/immutable/entry/start.BS5ewb9B.js +0 -1
- package/build/client/_app/immutable/nodes/0.ze9O6tWo.js +0 -1
- package/build/client/_app/immutable/nodes/1.DLvBQOBf.js +0 -1
- package/build/client/_app/immutable/nodes/2.BCq5Ttag.js +0 -174
- package/build/server/chunks/nodes/1.js-BXDgJSsl.js +0 -9
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-
|
|
1
|
+
import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-B-_-EpeQ.js';
|
|
2
2
|
import { V as head, y as derived, X as bind_props, W as escape_html, Y as attr, Z as attr_style, _ as attr_class, x as setContext, $ as spread_props, a0 as attributes, a1 as clsx, a2 as ensure_array_like, a3 as element, J as getContext, a4 as stringify, a5 as html, F as run, a6 as props_id } from '../../chunks/server.js-11-pxAWV.js';
|
|
3
3
|
import { U as UI_LOCALES } from '../../chunks/config.js-B0w1-uCA.js';
|
|
4
|
-
import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-
|
|
4
|
+
import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-CyvSb4O3.js';
|
|
5
5
|
import { p as parseA2aSignature, m as mintA2aId, b as buildDeliveredText } from '../../chunks/a2a-protocol.js-C77mVg2Q.js';
|
|
6
6
|
import { b as applyKnobEvent, E as EMPTY_KNOBS, r as resolvePermission, l as localPermission, c as presetLabel, d as presetDescription, C as CUSTOM_PRESET, F as FULL_ACCESS_PRESET } from '../../chunks/permission-state.js-B7UpAHBv.js';
|
|
7
7
|
import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r.js';
|
|
8
8
|
import { a as appConfig, t as triggerMode, g as getTrigger, p as previewSegments, i as isValidTagWord, b as textPreviewOf, s as searchKey, c as shouldRecordPrompt, d as parseTagWords } from '../../chunks/app-config.svelte.js-BBPHOX4N.js';
|
|
9
9
|
import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
|
|
10
|
-
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-
|
|
10
|
+
import { p as page, a as afterNavigate, t, c as replaceState, e as currentLocale, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-Bq7piv9H.js';
|
|
11
11
|
import 'yaml';
|
|
12
12
|
import 'html-to-image';
|
|
13
13
|
import hljs from 'highlight.js/lib/core';
|
|
@@ -1302,38 +1302,6 @@ var clearsearch1 = ((inputs = {}, options = {}) => {
|
|
|
1302
1302
|
return en_clearsearch1();
|
|
1303
1303
|
});
|
|
1304
1304
|
//#endregion
|
|
1305
|
-
//#region src/lib/paraglide/messages/clearsessionnamefilter3.js
|
|
1306
|
-
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1307
|
-
/** @typedef {{}} Clearsessionnamefilter3Inputs */
|
|
1308
|
-
var en_clearsessionnamefilter3 = () => {
|
|
1309
|
-
return `Clear session name filter`;
|
|
1310
|
-
};
|
|
1311
|
-
var zh_clearsessionnamefilter3 = () => {
|
|
1312
|
-
return `清除会话名筛选`;
|
|
1313
|
-
};
|
|
1314
|
-
var id_clearsessionnamefilter3 = () => {
|
|
1315
|
-
return `Hapus filter nama sesi`;
|
|
1316
|
-
};
|
|
1317
|
-
var es_clearsessionnamefilter3 = () => {
|
|
1318
|
-
return `Limpiar filtro de nombre de sesión`;
|
|
1319
|
-
};
|
|
1320
|
-
/**
|
|
1321
|
-
* | output |
|
|
1322
|
-
* | --- |
|
|
1323
|
-
* | "Clear session name filter" |
|
|
1324
|
-
*
|
|
1325
|
-
* @param {Clearsessionnamefilter3Inputs} inputs
|
|
1326
|
-
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
1327
|
-
* @returns {LocalizedString}
|
|
1328
|
-
*/
|
|
1329
|
-
var clearsessionnamefilter3 = ((inputs = {}, options = {}) => {
|
|
1330
|
-
const locale = options.locale ?? getLocale();
|
|
1331
|
-
if (locale === "zh") return zh_clearsessionnamefilter3();
|
|
1332
|
-
if (locale === "id") return id_clearsessionnamefilter3();
|
|
1333
|
-
if (locale === "es") return es_clearsessionnamefilter3();
|
|
1334
|
-
return en_clearsessionnamefilter3();
|
|
1335
|
-
});
|
|
1336
|
-
//#endregion
|
|
1337
1305
|
//#region src/lib/paraglide/messages/clearthegoal2.js
|
|
1338
1306
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
1339
1307
|
/** @typedef {{}} Clearthegoal2Inputs */
|
|
@@ -3510,6 +3478,294 @@ var editprompt1 = ((inputs = {}, options = {}) => {
|
|
|
3510
3478
|
return en_editprompt1();
|
|
3511
3479
|
});
|
|
3512
3480
|
//#endregion
|
|
3481
|
+
//#region src/lib/paraglide/messages/editedfilesadded2.js
|
|
3482
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3483
|
+
/** @typedef {{ count: NonNullable<unknown> }} Editedfilesadded2Inputs */
|
|
3484
|
+
var en_editedfilesadded2 = (i) => {
|
|
3485
|
+
return `+${i?.count}`;
|
|
3486
|
+
};
|
|
3487
|
+
var zh_editedfilesadded2 = (i) => {
|
|
3488
|
+
return `+${i?.count}`;
|
|
3489
|
+
};
|
|
3490
|
+
var id_editedfilesadded2 = (i) => {
|
|
3491
|
+
return `+${i?.count}`;
|
|
3492
|
+
};
|
|
3493
|
+
var es_editedfilesadded2 = (i) => {
|
|
3494
|
+
return `+${i?.count}`;
|
|
3495
|
+
};
|
|
3496
|
+
/**
|
|
3497
|
+
* | output |
|
|
3498
|
+
* | --- |
|
|
3499
|
+
* | "+{count}" |
|
|
3500
|
+
*
|
|
3501
|
+
* @param {Editedfilesadded2Inputs} inputs
|
|
3502
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3503
|
+
* @returns {LocalizedString}
|
|
3504
|
+
*/
|
|
3505
|
+
var editedfilesadded2 = ((inputs, options = {}) => {
|
|
3506
|
+
const locale = options.locale ?? getLocale();
|
|
3507
|
+
if (locale === "zh") return zh_editedfilesadded2(inputs);
|
|
3508
|
+
if (locale === "id") return id_editedfilesadded2(inputs);
|
|
3509
|
+
if (locale === "es") return es_editedfilesadded2(inputs);
|
|
3510
|
+
return en_editedfilesadded2(inputs);
|
|
3511
|
+
});
|
|
3512
|
+
//#endregion
|
|
3513
|
+
//#region src/lib/paraglide/messages/editedfilesbinary2.js
|
|
3514
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3515
|
+
/** @typedef {{}} Editedfilesbinary2Inputs */
|
|
3516
|
+
var en_editedfilesbinary2 = () => {
|
|
3517
|
+
return `binary`;
|
|
3518
|
+
};
|
|
3519
|
+
var zh_editedfilesbinary2 = () => {
|
|
3520
|
+
return `二进制`;
|
|
3521
|
+
};
|
|
3522
|
+
var id_editedfilesbinary2 = () => {
|
|
3523
|
+
return `biner`;
|
|
3524
|
+
};
|
|
3525
|
+
var es_editedfilesbinary2 = () => {
|
|
3526
|
+
return `binario`;
|
|
3527
|
+
};
|
|
3528
|
+
/**
|
|
3529
|
+
* | output |
|
|
3530
|
+
* | --- |
|
|
3531
|
+
* | "binary" |
|
|
3532
|
+
*
|
|
3533
|
+
* @param {Editedfilesbinary2Inputs} inputs
|
|
3534
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3535
|
+
* @returns {LocalizedString}
|
|
3536
|
+
*/
|
|
3537
|
+
var editedfilesbinary2 = ((inputs = {}, options = {}) => {
|
|
3538
|
+
const locale = options.locale ?? getLocale();
|
|
3539
|
+
if (locale === "zh") return zh_editedfilesbinary2();
|
|
3540
|
+
if (locale === "id") return id_editedfilesbinary2();
|
|
3541
|
+
if (locale === "es") return es_editedfilesbinary2();
|
|
3542
|
+
return en_editedfilesbinary2();
|
|
3543
|
+
});
|
|
3544
|
+
//#endregion
|
|
3545
|
+
//#region src/lib/paraglide/messages/editedfilescaphint3.js
|
|
3546
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3547
|
+
/** @typedef {{ count: NonNullable<unknown> }} Editedfilescaphint3Inputs */
|
|
3548
|
+
var en_editedfilescaphint3 = (i) => {
|
|
3549
|
+
return `and ${i?.count} more`;
|
|
3550
|
+
};
|
|
3551
|
+
var zh_editedfilescaphint3 = (i) => {
|
|
3552
|
+
return `还有 ${i?.count} 个`;
|
|
3553
|
+
};
|
|
3554
|
+
var id_editedfilescaphint3 = (i) => {
|
|
3555
|
+
return `dan ${i?.count} lagi`;
|
|
3556
|
+
};
|
|
3557
|
+
var es_editedfilescaphint3 = (i) => {
|
|
3558
|
+
return `y ${i?.count} más`;
|
|
3559
|
+
};
|
|
3560
|
+
/**
|
|
3561
|
+
* | output |
|
|
3562
|
+
* | --- |
|
|
3563
|
+
* | "and {count} more" |
|
|
3564
|
+
*
|
|
3565
|
+
* @param {Editedfilescaphint3Inputs} inputs
|
|
3566
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3567
|
+
* @returns {LocalizedString}
|
|
3568
|
+
*/
|
|
3569
|
+
var editedfilescaphint3 = ((inputs, options = {}) => {
|
|
3570
|
+
const locale = options.locale ?? getLocale();
|
|
3571
|
+
if (locale === "zh") return zh_editedfilescaphint3(inputs);
|
|
3572
|
+
if (locale === "id") return id_editedfilescaphint3(inputs);
|
|
3573
|
+
if (locale === "es") return es_editedfilescaphint3(inputs);
|
|
3574
|
+
return en_editedfilescaphint3(inputs);
|
|
3575
|
+
});
|
|
3576
|
+
//#endregion
|
|
3577
|
+
//#region src/lib/paraglide/messages/editedfileschip2.js
|
|
3578
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3579
|
+
/** @typedef {{}} Editedfileschip2Inputs */
|
|
3580
|
+
var en_editedfileschip2 = () => {
|
|
3581
|
+
return `edited files`;
|
|
3582
|
+
};
|
|
3583
|
+
var zh_editedfileschip2 = () => {
|
|
3584
|
+
return `已编辑文件`;
|
|
3585
|
+
};
|
|
3586
|
+
var id_editedfileschip2 = () => {
|
|
3587
|
+
return `berkas diedit`;
|
|
3588
|
+
};
|
|
3589
|
+
var es_editedfileschip2 = () => {
|
|
3590
|
+
return `archivos editados`;
|
|
3591
|
+
};
|
|
3592
|
+
/**
|
|
3593
|
+
* | output |
|
|
3594
|
+
* | --- |
|
|
3595
|
+
* | "edited files" |
|
|
3596
|
+
*
|
|
3597
|
+
* @param {Editedfileschip2Inputs} inputs
|
|
3598
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3599
|
+
* @returns {LocalizedString}
|
|
3600
|
+
*/
|
|
3601
|
+
var editedfileschip2 = ((inputs = {}, options = {}) => {
|
|
3602
|
+
const locale = options.locale ?? getLocale();
|
|
3603
|
+
if (locale === "zh") return zh_editedfileschip2();
|
|
3604
|
+
if (locale === "id") return id_editedfileschip2();
|
|
3605
|
+
if (locale === "es") return es_editedfileschip2();
|
|
3606
|
+
return en_editedfileschip2();
|
|
3607
|
+
});
|
|
3608
|
+
//#endregion
|
|
3609
|
+
//#region src/lib/paraglide/messages/editedfilesdeleted2.js
|
|
3610
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3611
|
+
/** @typedef {{ count: NonNullable<unknown> }} Editedfilesdeleted2Inputs */
|
|
3612
|
+
var en_editedfilesdeleted2 = (i) => {
|
|
3613
|
+
return `-${i?.count}`;
|
|
3614
|
+
};
|
|
3615
|
+
var zh_editedfilesdeleted2 = (i) => {
|
|
3616
|
+
return `-${i?.count}`;
|
|
3617
|
+
};
|
|
3618
|
+
var id_editedfilesdeleted2 = (i) => {
|
|
3619
|
+
return `-${i?.count}`;
|
|
3620
|
+
};
|
|
3621
|
+
var es_editedfilesdeleted2 = (i) => {
|
|
3622
|
+
return `-${i?.count}`;
|
|
3623
|
+
};
|
|
3624
|
+
/**
|
|
3625
|
+
* | output |
|
|
3626
|
+
* | --- |
|
|
3627
|
+
* | "-{count}" |
|
|
3628
|
+
*
|
|
3629
|
+
* @param {Editedfilesdeleted2Inputs} inputs
|
|
3630
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3631
|
+
* @returns {LocalizedString}
|
|
3632
|
+
*/
|
|
3633
|
+
var editedfilesdeleted2 = ((inputs, options = {}) => {
|
|
3634
|
+
const locale = options.locale ?? getLocale();
|
|
3635
|
+
if (locale === "zh") return zh_editedfilesdeleted2(inputs);
|
|
3636
|
+
if (locale === "id") return id_editedfilesdeleted2(inputs);
|
|
3637
|
+
if (locale === "es") return es_editedfilesdeleted2(inputs);
|
|
3638
|
+
return en_editedfilesdeleted2(inputs);
|
|
3639
|
+
});
|
|
3640
|
+
//#endregion
|
|
3641
|
+
//#region src/lib/paraglide/messages/editedfilesgone2.js
|
|
3642
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3643
|
+
/** @typedef {{}} Editedfilesgone2Inputs */
|
|
3644
|
+
var en_editedfilesgone2 = () => {
|
|
3645
|
+
return `Files were edited this turn — counts are no longer available`;
|
|
3646
|
+
};
|
|
3647
|
+
var zh_editedfilesgone2 = () => {
|
|
3648
|
+
return `本轮编辑了文件 — 计数已不可用`;
|
|
3649
|
+
};
|
|
3650
|
+
var id_editedfilesgone2 = () => {
|
|
3651
|
+
return `Berkas diedit giliran ini — hitungan sudah tidak tersedia`;
|
|
3652
|
+
};
|
|
3653
|
+
var es_editedfilesgone2 = () => {
|
|
3654
|
+
return `Se editaron archivos en este turno — los conteos ya no están disponibles`;
|
|
3655
|
+
};
|
|
3656
|
+
/**
|
|
3657
|
+
* | output |
|
|
3658
|
+
* | --- |
|
|
3659
|
+
* | "Files were edited this turn — counts are no longer available" |
|
|
3660
|
+
*
|
|
3661
|
+
* @param {Editedfilesgone2Inputs} inputs
|
|
3662
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3663
|
+
* @returns {LocalizedString}
|
|
3664
|
+
*/
|
|
3665
|
+
var editedfilesgone2 = ((inputs = {}, options = {}) => {
|
|
3666
|
+
const locale = options.locale ?? getLocale();
|
|
3667
|
+
if (locale === "zh") return zh_editedfilesgone2();
|
|
3668
|
+
if (locale === "id") return id_editedfilesgone2();
|
|
3669
|
+
if (locale === "es") return es_editedfilesgone2();
|
|
3670
|
+
return en_editedfilesgone2();
|
|
3671
|
+
});
|
|
3672
|
+
//#endregion
|
|
3673
|
+
//#region src/lib/paraglide/messages/editedfilesoversized2.js
|
|
3674
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3675
|
+
/** @typedef {{}} Editedfilesoversized2Inputs */
|
|
3676
|
+
var en_editedfilesoversized2 = () => {
|
|
3677
|
+
return `too large`;
|
|
3678
|
+
};
|
|
3679
|
+
var zh_editedfilesoversized2 = () => {
|
|
3680
|
+
return `文件过大`;
|
|
3681
|
+
};
|
|
3682
|
+
var id_editedfilesoversized2 = () => {
|
|
3683
|
+
return `terlalu besar`;
|
|
3684
|
+
};
|
|
3685
|
+
var es_editedfilesoversized2 = () => {
|
|
3686
|
+
return `demasiado grande`;
|
|
3687
|
+
};
|
|
3688
|
+
/**
|
|
3689
|
+
* | output |
|
|
3690
|
+
* | --- |
|
|
3691
|
+
* | "too large" |
|
|
3692
|
+
*
|
|
3693
|
+
* @param {Editedfilesoversized2Inputs} inputs
|
|
3694
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3695
|
+
* @returns {LocalizedString}
|
|
3696
|
+
*/
|
|
3697
|
+
var editedfilesoversized2 = ((inputs = {}, options = {}) => {
|
|
3698
|
+
const locale = options.locale ?? getLocale();
|
|
3699
|
+
if (locale === "zh") return zh_editedfilesoversized2();
|
|
3700
|
+
if (locale === "id") return id_editedfilesoversized2();
|
|
3701
|
+
if (locale === "es") return es_editedfilesoversized2();
|
|
3702
|
+
return en_editedfilesoversized2();
|
|
3703
|
+
});
|
|
3704
|
+
//#endregion
|
|
3705
|
+
//#region src/lib/paraglide/messages/editedfilestitle2.js
|
|
3706
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3707
|
+
/** @typedef {{ count: NonNullable<unknown> }} Editedfilestitle2Inputs */
|
|
3708
|
+
var en_editedfilestitle2 = (i) => {
|
|
3709
|
+
return `Edited ${i?.count} files`;
|
|
3710
|
+
};
|
|
3711
|
+
var zh_editedfilestitle2 = (i) => {
|
|
3712
|
+
return `编辑了 ${i?.count} 个文件`;
|
|
3713
|
+
};
|
|
3714
|
+
var id_editedfilestitle2 = (i) => {
|
|
3715
|
+
return `Mengedit ${i?.count} berkas`;
|
|
3716
|
+
};
|
|
3717
|
+
var es_editedfilestitle2 = (i) => {
|
|
3718
|
+
return `Se editaron ${i?.count} archivos`;
|
|
3719
|
+
};
|
|
3720
|
+
/**
|
|
3721
|
+
* | output |
|
|
3722
|
+
* | --- |
|
|
3723
|
+
* | "Edited {count} files" |
|
|
3724
|
+
*
|
|
3725
|
+
* @param {Editedfilestitle2Inputs} inputs
|
|
3726
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3727
|
+
* @returns {LocalizedString}
|
|
3728
|
+
*/
|
|
3729
|
+
var editedfilestitle2 = ((inputs, options = {}) => {
|
|
3730
|
+
const locale = options.locale ?? getLocale();
|
|
3731
|
+
if (locale === "zh") return zh_editedfilestitle2(inputs);
|
|
3732
|
+
if (locale === "id") return id_editedfilestitle2(inputs);
|
|
3733
|
+
if (locale === "es") return es_editedfilestitle2(inputs);
|
|
3734
|
+
return en_editedfilestitle2(inputs);
|
|
3735
|
+
});
|
|
3736
|
+
//#endregion
|
|
3737
|
+
//#region src/lib/paraglide/messages/editedfilestitleone3.js
|
|
3738
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3739
|
+
/** @typedef {{}} Editedfilestitleone3Inputs */
|
|
3740
|
+
var en_editedfilestitleone3 = () => {
|
|
3741
|
+
return `Edited 1 file`;
|
|
3742
|
+
};
|
|
3743
|
+
var zh_editedfilestitleone3 = () => {
|
|
3744
|
+
return `编辑了 1 个文件`;
|
|
3745
|
+
};
|
|
3746
|
+
var id_editedfilestitleone3 = () => {
|
|
3747
|
+
return `Mengedit 1 berkas`;
|
|
3748
|
+
};
|
|
3749
|
+
var es_editedfilestitleone3 = () => {
|
|
3750
|
+
return `Se editó 1 archivo`;
|
|
3751
|
+
};
|
|
3752
|
+
/**
|
|
3753
|
+
* | output |
|
|
3754
|
+
* | --- |
|
|
3755
|
+
* | "Edited 1 file" |
|
|
3756
|
+
*
|
|
3757
|
+
* @param {Editedfilestitleone3Inputs} inputs
|
|
3758
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
3759
|
+
* @returns {LocalizedString}
|
|
3760
|
+
*/
|
|
3761
|
+
var editedfilestitleone3 = ((inputs = {}, options = {}) => {
|
|
3762
|
+
const locale = options.locale ?? getLocale();
|
|
3763
|
+
if (locale === "zh") return zh_editedfilestitleone3();
|
|
3764
|
+
if (locale === "id") return id_editedfilestitleone3();
|
|
3765
|
+
if (locale === "es") return es_editedfilestitleone3();
|
|
3766
|
+
return en_editedfilestitleone3();
|
|
3767
|
+
});
|
|
3768
|
+
//#endregion
|
|
3513
3769
|
//#region src/lib/paraglide/messages/enablefullaccess2.js
|
|
3514
3770
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
3515
3771
|
/** @typedef {{}} Enablefullaccess2Inputs */
|
|
@@ -11574,6 +11830,38 @@ var turnfailed1 = ((inputs = {}, options = {}) => {
|
|
|
11574
11830
|
return en_turnfailed1();
|
|
11575
11831
|
});
|
|
11576
11832
|
//#endregion
|
|
11833
|
+
//#region src/lib/paraglide/messages/turnstopped1.js
|
|
11834
|
+
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
11835
|
+
/** @typedef {{}} Turnstopped1Inputs */
|
|
11836
|
+
var en_turnstopped1 = () => {
|
|
11837
|
+
return `stopped`;
|
|
11838
|
+
};
|
|
11839
|
+
var zh_turnstopped1 = () => {
|
|
11840
|
+
return `已停止`;
|
|
11841
|
+
};
|
|
11842
|
+
var id_turnstopped1 = () => {
|
|
11843
|
+
return `dihentikan`;
|
|
11844
|
+
};
|
|
11845
|
+
var es_turnstopped1 = () => {
|
|
11846
|
+
return `detenido`;
|
|
11847
|
+
};
|
|
11848
|
+
/**
|
|
11849
|
+
* | output |
|
|
11850
|
+
* | --- |
|
|
11851
|
+
* | "stopped" |
|
|
11852
|
+
*
|
|
11853
|
+
* @param {Turnstopped1Inputs} inputs
|
|
11854
|
+
* @param {{ locale?: "en" | "zh" | "id" | "es" }} options
|
|
11855
|
+
* @returns {LocalizedString}
|
|
11856
|
+
*/
|
|
11857
|
+
var turnstopped1 = ((inputs = {}, options = {}) => {
|
|
11858
|
+
const locale = options.locale ?? getLocale();
|
|
11859
|
+
if (locale === "zh") return zh_turnstopped1();
|
|
11860
|
+
if (locale === "id") return id_turnstopped1();
|
|
11861
|
+
if (locale === "es") return es_turnstopped1();
|
|
11862
|
+
return en_turnstopped1();
|
|
11863
|
+
});
|
|
11864
|
+
//#endregion
|
|
11577
11865
|
//#region src/lib/paraglide/messages/turntokenusage2.js
|
|
11578
11866
|
/** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
|
|
11579
11867
|
/** @typedef {{}} Turntokenusage2Inputs */
|
|
@@ -12321,7 +12609,6 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
12321
12609
|
clearFilters: () => clearfilters1,
|
|
12322
12610
|
clearGoal: () => cleargoal1,
|
|
12323
12611
|
clearSearch: () => clearsearch1,
|
|
12324
|
-
clearSessionNameFilter: () => clearsessionnamefilter3,
|
|
12325
12612
|
clearTheGoal: () => clearthegoal2,
|
|
12326
12613
|
clearTitle: () => cleartitle1,
|
|
12327
12614
|
close: () => close,
|
|
@@ -12391,6 +12678,15 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
12391
12678
|
editObjective: () => editobjective1,
|
|
12392
12679
|
editObjectiveTitle: () => editobjectivetitle2,
|
|
12393
12680
|
editPrompt: () => editprompt1,
|
|
12681
|
+
editedFilesAdded: () => editedfilesadded2,
|
|
12682
|
+
editedFilesBinary: () => editedfilesbinary2,
|
|
12683
|
+
editedFilesCapHint: () => editedfilescaphint3,
|
|
12684
|
+
editedFilesChip: () => editedfileschip2,
|
|
12685
|
+
editedFilesDeleted: () => editedfilesdeleted2,
|
|
12686
|
+
editedFilesGone: () => editedfilesgone2,
|
|
12687
|
+
editedFilesOversized: () => editedfilesoversized2,
|
|
12688
|
+
editedFilesTitle: () => editedfilestitle2,
|
|
12689
|
+
editedFilesTitleOne: () => editedfilestitleone3,
|
|
12394
12690
|
enableFullAccess: () => enablefullaccess2,
|
|
12395
12691
|
enableFullAccessQ: () => enablefullaccessq3,
|
|
12396
12692
|
escHidesA: () => eschidesa2,
|
|
@@ -12645,6 +12941,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
|
|
|
12645
12941
|
toolTitleToolCall: () => tooltitletoolcall3,
|
|
12646
12942
|
toolTitleWrite: () => tooltitlewrite2,
|
|
12647
12943
|
turnFailed: () => turnfailed1,
|
|
12944
|
+
turnStopped: () => turnstopped1,
|
|
12648
12945
|
turnTokenUsage: () => turntokenusage2,
|
|
12649
12946
|
turnUsage: () => turnusage1,
|
|
12650
12947
|
uncachedInput: () => uncachedinput1,
|
|
@@ -12713,7 +13010,6 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
12713
13010
|
clearFilters: () => clearfilters1,
|
|
12714
13011
|
clearGoal: () => cleargoal1,
|
|
12715
13012
|
clearSearch: () => clearsearch1,
|
|
12716
|
-
clearSessionNameFilter: () => clearsessionnamefilter3,
|
|
12717
13013
|
clearTheGoal: () => clearthegoal2,
|
|
12718
13014
|
clearTitle: () => cleartitle1,
|
|
12719
13015
|
close: () => close,
|
|
@@ -12783,6 +13079,15 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
12783
13079
|
editObjective: () => editobjective1,
|
|
12784
13080
|
editObjectiveTitle: () => editobjectivetitle2,
|
|
12785
13081
|
editPrompt: () => editprompt1,
|
|
13082
|
+
editedFilesAdded: () => editedfilesadded2,
|
|
13083
|
+
editedFilesBinary: () => editedfilesbinary2,
|
|
13084
|
+
editedFilesCapHint: () => editedfilescaphint3,
|
|
13085
|
+
editedFilesChip: () => editedfileschip2,
|
|
13086
|
+
editedFilesDeleted: () => editedfilesdeleted2,
|
|
13087
|
+
editedFilesGone: () => editedfilesgone2,
|
|
13088
|
+
editedFilesOversized: () => editedfilesoversized2,
|
|
13089
|
+
editedFilesTitle: () => editedfilestitle2,
|
|
13090
|
+
editedFilesTitleOne: () => editedfilestitleone3,
|
|
12786
13091
|
enableFullAccess: () => enablefullaccess2,
|
|
12787
13092
|
enableFullAccessQ: () => enablefullaccessq3,
|
|
12788
13093
|
escHidesA: () => eschidesa2,
|
|
@@ -13038,6 +13343,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
|
|
|
13038
13343
|
toolTitleToolCall: () => tooltitletoolcall3,
|
|
13039
13344
|
toolTitleWrite: () => tooltitlewrite2,
|
|
13040
13345
|
turnFailed: () => turnfailed1,
|
|
13346
|
+
turnStopped: () => turnstopped1,
|
|
13041
13347
|
turnTokenUsage: () => turntokenusage2,
|
|
13042
13348
|
turnUsage: () => turnusage1,
|
|
13043
13349
|
uncachedInput: () => uncachedinput1,
|
|
@@ -14868,12 +15174,18 @@ function renderInline(text) {
|
|
|
14868
15174
|
function emphasis(text) {
|
|
14869
15175
|
return text.replace(/\*\*\*(.+?)\*\*\*/g, "<strong><em>$1</em></strong>").replace(/\*\*(.+?)\*\*/g, "<strong>$1</strong>").replace(/\*(.+?)\*/g, "<em>$1</em>").replace(/(?<![\w])_(.+?)_(?![\w])/g, "<em>$1</em>").replace(/~~(.+?)~~/g, "<del>$1</del>");
|
|
14870
15176
|
}
|
|
14871
|
-
/**
|
|
15177
|
+
/**
|
|
15178
|
+
* [label](href) — http(s) hrefs become hardened external anchors; SCHEME-FREE
|
|
15179
|
+
* relative hrefs (assistant file links like [card](src/lib/…)) become same-
|
|
15180
|
+
* origin anchors; anything carrying a scheme (javascript:, data:, mailto:,
|
|
15181
|
+
* //evil.com protocol-relative, …) stays inert text (BC-12).
|
|
15182
|
+
*/
|
|
14872
15183
|
function links(text) {
|
|
14873
15184
|
return text.replace(/\[([^\]]+)\]\(([^)\s]+)\)/g, (whole, label, href) => {
|
|
14874
15185
|
const unescaped = href.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll(""", "\"").replaceAll("'", "'");
|
|
14875
|
-
if (
|
|
14876
|
-
|
|
15186
|
+
if (/^https?:\/\//i.test(unescaped)) return `<a href="${href}" rel="noopener noreferrer" target="_blank">${label}</a>`;
|
|
15187
|
+
if (/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(unescaped) || unescaped.startsWith("//")) return whole;
|
|
15188
|
+
return `<a href="${href}">${label}</a>`;
|
|
14877
15189
|
});
|
|
14878
15190
|
}
|
|
14879
15191
|
//#endregion
|
|
@@ -16299,7 +16611,7 @@ function TokenCounter($$renderer, $$props) {
|
|
|
16299
16611
|
*/
|
|
16300
16612
|
let { text } = $$props;
|
|
16301
16613
|
const count = derived(() => estimateTokens(text));
|
|
16302
|
-
$$renderer.push(`<span data-svelte="TokenCounter" class="shrink-0 font-mono text-[11px] tabular-nums text-
|
|
16614
|
+
$$renderer.push(`<span data-svelte="TokenCounter" class="shrink-0 font-mono text-[11px] tabular-nums text-[#7c3aed]" data-testid="token-counter"${attr("title", t(tokencountertitle2))}>~${escape_html(count())} tokens</span>`);
|
|
16303
16615
|
});
|
|
16304
16616
|
}
|
|
16305
16617
|
//#endregion
|
|
@@ -16336,10 +16648,10 @@ function ContextConsumption($$renderer, $$props) {
|
|
|
16336
16648
|
$$renderer.push(`<div data-svelte="ContextConsumption" class="flex items-center gap-1"${attr("title", t(() => ctxwindowtitle2({
|
|
16337
16649
|
used,
|
|
16338
16650
|
limit
|
|
16339
|
-
})))} data-testid="context-consumption"><div class="h-1 w-15 overflow-hidden rounded-sm bg-surface-border"><div
|
|
16651
|
+
})))} data-testid="context-consumption"><div class="h-1 w-15 overflow-hidden rounded-sm bg-surface-border"><div class="h-full rounded-sm transition-[width] duration-300 bg-[#7c3aed]"${attr_style(`width: ${stringify(Math.min(percent(), 100))}%`)}></div></div> <span class="text-[11px] tabular-nums text-[#7c3aed]">${escape_html(percent())}%</span></div>`);
|
|
16340
16652
|
} else if (used !== void 0) {
|
|
16341
16653
|
$$renderer.push("<!--[1-->");
|
|
16342
|
-
$$renderer.push(`<span data-svelte="ContextConsumption" class="text-[11px] tabular-nums text-
|
|
16654
|
+
$$renderer.push(`<span data-svelte="ContextConsumption" class="text-[11px] tabular-nums text-[#7c3aed]"${attr("title", t(ctxwindowunknown2))} data-testid="context-consumption">≈${escape_html(formatK(used))} ctx</span>`);
|
|
16343
16655
|
} else $$renderer.push("<!--[-1-->");
|
|
16344
16656
|
$$renderer.push(`<!--]-->`);
|
|
16345
16657
|
});
|
|
@@ -16364,7 +16676,7 @@ function ModelSelector($$renderer, $$props) {
|
|
|
16364
16676
|
const currentLabel = derived(() => {
|
|
16365
16677
|
return "model —";
|
|
16366
16678
|
});
|
|
16367
|
-
$$renderer.push(`<div data-svelte="ModelSelector" class="relative"><button type="button" class="inline-flex items-center gap-1 rounded-md border border-
|
|
16679
|
+
$$renderer.push(`<div data-svelte="ModelSelector" class="relative"><button type="button" class="inline-flex items-center gap-1 rounded-md border border-[#7c3aed] px-2 py-1 text-xs font-medium text-[#7c3aed] hover:bg-slate-100 disabled:opacity-50"${attr("disabled", disabled, true)} aria-haspopup="listbox"${attr("aria-expanded", open)} data-testid="model-selector-button">${escape_html(currentLabel())} <span class="text-[#7c3aed]" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></button> `);
|
|
16368
16680
|
$$renderer.push("<!--[-1-->");
|
|
16369
16681
|
$$renderer.push(`<!--]--></div>`);
|
|
16370
16682
|
});
|
|
@@ -16431,7 +16743,7 @@ function AccessModeChip($$renderer, $$props) {
|
|
|
16431
16743
|
});
|
|
16432
16744
|
if (permission !== null) {
|
|
16433
16745
|
$$renderer.push("<!--[0-->");
|
|
16434
|
-
$$renderer.push(`<div data-svelte="AccessModeChip" class="relative"><button type="button" class="inline-flex items-center gap-1 rounded-md border border-
|
|
16746
|
+
$$renderer.push(`<div data-svelte="AccessModeChip" class="relative"><button type="button" class="inline-flex items-center gap-1 rounded-md border border-[#7c3aed] px-2 py-1 text-xs font-medium text-[#7c3aed] hover:bg-slate-100 disabled:opacity-50"${attr("disabled", disabled || false, true)} aria-haspopup="listbox"${attr("aria-expanded", open)}${attr("aria-label", t(() => accessmodecurrent2({ label: currentLabel() })))}${attr("title", currentDescription())} data-testid="access-mode-chip"><span class="text-[#7c3aed]" aria-hidden="true">`);
|
|
16435
16747
|
if (permission.current === "read-only") {
|
|
16436
16748
|
$$renderer.push("<!--[0-->");
|
|
16437
16749
|
$$renderer.push(`<svg width="14" height="14" viewBox="0 0 16 16" fill="none"><path d="M8.20554 0.899994L14.7901 3.36857V7.01026C14.7901 12 11.0466 14.2103 8.20554 15.3C5.36446 14.2103 1.62012 12 1.62012 7.01026V3.36857L8.20554 0.899994Z" stroke="currentColor" stroke-width="1.31831" stroke-linejoin="round"></path><path d="M12.1654 5.7552L8.9447 9.41475C8.73044 9.65816 8.53628 9.8804 8.35774 10.0423C8.1713 10.2114 7.94235 10.3717 7.64016 10.4254C7.48207 10.4535 7.32 10.4552 7.16151 10.4294C6.85843 10.3801 6.62728 10.2223 6.43836 10.0559C6.25752 9.89653 6.06037 9.67732 5.84264 9.43705L4.72925 8.20897L5.63557 7.38707L6.74897 8.61594C6.98603 8.87755 7.12974 9.03533 7.24673 9.13839C7.31033 9.19443 7.34485 9.21476 7.35823 9.22122C7.38068 9.22484 7.40352 9.22515 7.42593 9.22122C7.40522 9.22502 7.42893 9.23294 7.53583 9.136C7.65132 9.03126 7.79316 8.87139 8.02643 8.60638L11.2479 4.94763L12.1654 5.7552Z" fill="currentColor"></path></svg>`);
|
|
@@ -16442,7 +16754,7 @@ function AccessModeChip($$renderer, $$props) {
|
|
|
16442
16754
|
$$renderer.push("<!--[-1-->");
|
|
16443
16755
|
$$renderer.push(`<svg width="14" height="14" viewBox="0 0 16 16" fill="none"><path d="M8.08887 0.251709C8.20479 0.23085 8.32486 0.241168 8.43652 0.282959L15.0215 2.75171C15.2787 2.84819 15.4492 3.09414 15.4492 3.3689V7.0105C15.4492 7.10986 15.4441 7.2081 15.4414 7.30542C15.0285 7.07175 14.5905 6.87695 14.1309 6.73022V3.82495L8.20508 1.60327L2.2793 3.82495V7.0105C2.27936 9.7171 3.4745 11.5379 5.02734 12.7947C5.01025 12.9942 5 13.1962 5 13.4001C5.00001 13.7617 5.02722 14.1169 5.08008 14.4636C2.91555 13.0393 0.961014 10.752 0.960938 7.0105V3.3689C0.960938 3.09417 1.13146 2.84821 1.38867 2.75171L7.97461 0.282959L8.08887 0.251709Z" fill="currentColor"></path><path d="M11.3525 5.64688V6.85688H5V5.64688H11.3525Z" fill="currentColor"></path><path d="M9.5824 8.29376V9.50376H5V8.29376H9.5824Z" fill="currentColor"></path><path d="M14.6647 15.6852H10.0338C10.3878 15.3751 10.7567 15.0517 11.0772 14.7706C11.2531 14.6164 11.4144 14.4746 11.5511 14.3547H14.6647V15.6852Z" fill="currentColor"></path><path d="M8.14852 14.1308L7.33925 15.4976C7.22458 15.6912 7.42245 15.9194 7.63037 15.8333L9.09785 15.2254L15.0399 10.0719L14.0905 8.97733L8.14852 14.1308Z" fill="currentColor"></path></svg>`);
|
|
16444
16756
|
}
|
|
16445
|
-
$$renderer.push(`<!--]--></span> ${escape_html(currentLabel())} <span class="text-
|
|
16757
|
+
$$renderer.push(`<!--]--></span> ${escape_html(currentLabel())} <span class="text-[#7c3aed]" aria-hidden="true"><svg width="12" height="12" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path></svg></span></button> `);
|
|
16446
16758
|
$$renderer.push("<!--[-1-->");
|
|
16447
16759
|
$$renderer.push(`<!--]--></div> `);
|
|
16448
16760
|
$$renderer.push("<!--[-1-->");
|
|
@@ -18300,12 +18612,26 @@ var MENU_GESTURES = [
|
|
|
18300
18612
|
seed: "/workspace ",
|
|
18301
18613
|
description: COMMAND_HELP.workspace.summary
|
|
18302
18614
|
},
|
|
18615
|
+
{
|
|
18616
|
+
name: "terminal",
|
|
18617
|
+
display: "/dsi-terminal",
|
|
18618
|
+
seed: "/dsi-terminal ",
|
|
18619
|
+
description: COMMAND_HELP.terminal.summary
|
|
18620
|
+
},
|
|
18303
18621
|
{
|
|
18304
18622
|
name: "promptmanager",
|
|
18305
18623
|
display: "/dsi-prompts",
|
|
18306
18624
|
seed: "/dsi-prompts ",
|
|
18307
18625
|
description: COMMAND_HELP.promptmanager.summary
|
|
18308
18626
|
},
|
|
18627
|
+
{
|
|
18628
|
+
name: "skillshelf",
|
|
18629
|
+
display: "/dsi-skills",
|
|
18630
|
+
seed: "/dsi-skills ",
|
|
18631
|
+
get description() {
|
|
18632
|
+
return t(commandhelpskillshelfsummary3);
|
|
18633
|
+
}
|
|
18634
|
+
},
|
|
18309
18635
|
{
|
|
18310
18636
|
name: "dsisettings",
|
|
18311
18637
|
display: "/dsi-settings",
|
|
@@ -18318,20 +18644,6 @@ var MENU_GESTURES = [
|
|
|
18318
18644
|
seed: "/dsh-settings ",
|
|
18319
18645
|
description: COMMAND_HELP.dshsettings.summary
|
|
18320
18646
|
},
|
|
18321
|
-
{
|
|
18322
|
-
name: "terminal",
|
|
18323
|
-
display: "/dsi-terminal",
|
|
18324
|
-
seed: "/dsi-terminal ",
|
|
18325
|
-
description: COMMAND_HELP.terminal.summary
|
|
18326
|
-
},
|
|
18327
|
-
{
|
|
18328
|
-
name: "skillshelf",
|
|
18329
|
-
display: "/dsi-skills",
|
|
18330
|
-
seed: "/dsi-skills ",
|
|
18331
|
-
get description() {
|
|
18332
|
-
return t(commandhelpskillshelfsummary3);
|
|
18333
|
-
}
|
|
18334
|
-
},
|
|
18335
18647
|
{
|
|
18336
18648
|
name: "@mention",
|
|
18337
18649
|
display: "@mention",
|
|
@@ -19710,6 +20022,56 @@ function LoadOlderSentinel($$renderer, $$props) {
|
|
|
19710
20022
|
});
|
|
19711
20023
|
}
|
|
19712
20024
|
//#endregion
|
|
20025
|
+
//#region src/lib/utils/file-link.ts
|
|
20026
|
+
/**
|
|
20027
|
+
* file-link — pure predicates for transcript file links (File Link Intent
|
|
20028
|
+
* spec, 2026-09-25; ADR The File Link Intent D2/D4). No DOM, no I/O: the
|
|
20029
|
+
* sanitizer (markdown.ts) stays pure and the transcript handler stays
|
|
20030
|
+
* testable — this module is the shared layer both import.
|
|
20031
|
+
*
|
|
20032
|
+
* The CONFINEMENT authority is the host (workspace-tree/workspace-file
|
|
20033
|
+
* routes refuse outside-workspace reads); these predicates are a client
|
|
20034
|
+
* fast-fail, not a security boundary.
|
|
20035
|
+
*/
|
|
20036
|
+
/** True when the segment escapes the workspace — never a real file. */
|
|
20037
|
+
function hasDotDotSegment(path) {
|
|
20038
|
+
return path.split("/").some((segment) => segment === "..");
|
|
20039
|
+
}
|
|
20040
|
+
/**
|
|
20041
|
+
* Normalize a file-link href to a workspace-relative path: strip a
|
|
20042
|
+
* leading './', collapse duplicate slashes, strip a single leading slash.
|
|
20043
|
+
* Returns null when the path escapes the workspace ('..' anywhere) or
|
|
20044
|
+
* normalizes to empty.
|
|
20045
|
+
*/
|
|
20046
|
+
function normalizeFileLinkPath(href) {
|
|
20047
|
+
let value = href.trim().replace(/^\.\//, "").replace(/\/{2,}/g, "/");
|
|
20048
|
+
if (value.startsWith("/")) value = value.slice(1);
|
|
20049
|
+
if (value === "" || hasDotDotSegment(value)) return null;
|
|
20050
|
+
return value;
|
|
20051
|
+
}
|
|
20052
|
+
/**
|
|
20053
|
+
* The existence gate (ADR D3): probe the dirname via the confined tree
|
|
20054
|
+
* route and require the basename in the listing. Any refusal (404
|
|
20055
|
+
* missing/outside, 415, 502, transport) resolves false — the click
|
|
20056
|
+
* drops. Uses the injected fetch so tests mount the double.
|
|
20057
|
+
*/
|
|
20058
|
+
async function workspaceFileExists(sessionId, path, fetchImpl = fetch) {
|
|
20059
|
+
const clean = path.split("#")[0];
|
|
20060
|
+
if (clean === "") return false;
|
|
20061
|
+
const slash = clean.lastIndexOf("/");
|
|
20062
|
+
const dir = slash === -1 ? "" : clean.slice(0, slash);
|
|
20063
|
+
const base = slash === -1 ? clean : clean.slice(slash + 1);
|
|
20064
|
+
try {
|
|
20065
|
+
const res = await fetchImpl(`/api/dsh/workspace-tree?sessionId=${encodeURIComponent(sessionId)}&path=${encodeURIComponent(dir)}`);
|
|
20066
|
+
if (!res.ok) return false;
|
|
20067
|
+
const body = await res.json();
|
|
20068
|
+
if (body?.ok !== true || !Array.isArray(body.listing?.entries)) return false;
|
|
20069
|
+
return body.listing.entries.some((entry) => entry.name === base);
|
|
20070
|
+
} catch {
|
|
20071
|
+
return false;
|
|
20072
|
+
}
|
|
20073
|
+
}
|
|
20074
|
+
//#endregion
|
|
19713
20075
|
//#region src/lib/components/common/buttons/CopyButton.svelte
|
|
19714
20076
|
function CopyButton($$renderer, $$props) {
|
|
19715
20077
|
$$renderer.component(($$renderer) => {
|
|
@@ -19741,7 +20103,7 @@ function RawPreviewToggle($$renderer, $$props) {
|
|
|
19741
20103
|
//#region src/lib/components/common/viewers/MarkdownContent.svelte
|
|
19742
20104
|
function MarkdownContent($$renderer, $$props) {
|
|
19743
20105
|
$$renderer.component(($$renderer) => {
|
|
19744
|
-
let { content, small = false, hideToggle = false, searchTerm = "" } = $$props;
|
|
20106
|
+
let { content, small = false, hideToggle = false, searchTerm = "", onFileLink = void 0 } = $$props;
|
|
19745
20107
|
let showRaw = false;
|
|
19746
20108
|
let containerEl = null;
|
|
19747
20109
|
/** Sanitized HTML — BC-12: allow-listed tags only (never raw input). */
|
|
@@ -20455,7 +20817,16 @@ function AssistantTurn($$renderer, $$props) {
|
|
|
20455
20817
|
* members through the existing components (reasoning section, markdown
|
|
20456
20818
|
* body, tool chips); this component owns the grouping visual contract.
|
|
20457
20819
|
*/
|
|
20458
|
-
let { time, start = void 0, usage = void 0, text, children, fork = null } = $$props;
|
|
20820
|
+
let { time, start = void 0, usage = void 0, text, children, fork = null, lifecycle = void 0 } = $$props;
|
|
20821
|
+
/** Operator-stopped turn (ADR D2): chip + duration-prefix suppression. */
|
|
20822
|
+
const stoppedByUser = derived(() => lifecycle?.reasonKind === "aborted" && lifecycle?.abortKind === "user");
|
|
20823
|
+
/** Completed turns read elapsed from the WIRE pair (ADR D3); the
|
|
20824
|
+
* entry-time reconstruction stays only as fallback. */
|
|
20825
|
+
const ranPrefix = derived(() => {
|
|
20826
|
+
if (stoppedByUser()) return void 0;
|
|
20827
|
+
if (lifecycle?.reasonKind === "completed" && lifecycle.endMs !== void 0 && lifecycle.endMs >= lifecycle.startMs) return `Ran for ${formatRunDuration(lifecycle.endMs - lifecycle.startMs)}`;
|
|
20828
|
+
return start !== void 0 && time !== void 0 ? `Ran for ${formatRunDuration(time - start)}` : void 0;
|
|
20829
|
+
});
|
|
20459
20830
|
/** Raw ⇄ rendered flip state — owned here, wired to ToolsMessage. */
|
|
20460
20831
|
let showRaw = false;
|
|
20461
20832
|
/** Bubble element ref — capture target for the canvas copy button. */
|
|
@@ -20508,11 +20879,16 @@ function AssistantTurn($$renderer, $$props) {
|
|
|
20508
20879
|
RelativeTime($$renderer, {
|
|
20509
20880
|
time,
|
|
20510
20881
|
role: "assistant",
|
|
20511
|
-
prefix:
|
|
20882
|
+
prefix: ranPrefix(),
|
|
20512
20883
|
class: "absolute bottom-0.5 right-3 text-[10px] leading-none text-text-muted/60 group-hover/bubble:text-[#7c3aed]"
|
|
20513
20884
|
});
|
|
20514
20885
|
} else $$renderer.push("<!--[-1-->");
|
|
20515
20886
|
$$renderer.push(`<!--]--> `);
|
|
20887
|
+
if (stoppedByUser()) {
|
|
20888
|
+
$$renderer.push("<!--[0-->");
|
|
20889
|
+
$$renderer.push(`<span class="absolute bottom-0.5 left-1/2 -translate-x-1/2 rounded-full border border-amber-500/30 bg-amber-500/10 px-1.5 py-0.5 text-[10px] leading-none text-amber-600" data-testid="turn-stopped-chip"${attr("title", t(turnstopped1))}>${escape_html(t(turnstopped1))}</span>`);
|
|
20890
|
+
} else $$renderer.push("<!--[-1-->");
|
|
20891
|
+
$$renderer.push(`<!--]--> `);
|
|
20516
20892
|
if (usage !== void 0) {
|
|
20517
20893
|
$$renderer.push("<!--[0-->");
|
|
20518
20894
|
TurnUsagePanel($$renderer, {
|
|
@@ -22089,6 +22465,32 @@ function TodoCard($$renderer, $$props) {
|
|
|
22089
22465
|
});
|
|
22090
22466
|
}
|
|
22091
22467
|
//#endregion
|
|
22468
|
+
//#region src/lib/services/conversation/session-context.svelte.ts
|
|
22469
|
+
var SESSION_KEY = Symbol("dsi-conversation-session");
|
|
22470
|
+
function setConversationSession(sessionId) {
|
|
22471
|
+
setContext(SESSION_KEY, sessionId);
|
|
22472
|
+
}
|
|
22473
|
+
/** The owning sessionId, or null when no provider is present (standalone
|
|
22474
|
+
* mode, tests, non-panel contexts). */
|
|
22475
|
+
function getConversationSession() {
|
|
22476
|
+
return getContext(SESSION_KEY) ?? null;
|
|
22477
|
+
}
|
|
22478
|
+
//#endregion
|
|
22479
|
+
//#region src/lib/components/message/cards/FilesEditedCard.svelte
|
|
22480
|
+
function FilesEditedCard($$renderer, $$props) {
|
|
22481
|
+
$$renderer.component(($$renderer) => {
|
|
22482
|
+
/** Wire: the file's real path — drives language pickup. */
|
|
22483
|
+
let open = false;
|
|
22484
|
+
getConversationSession();
|
|
22485
|
+
$$renderer.push(`<div data-svelte="FilesEditedCard" class="self-start text-xs" data-testid="files-edited-section"${attr("data-open", open)}><button type="button"${attr("aria-expanded", open)} data-testid="files-edited-toggle"${attr_class(`chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer bg-surface-alt text-text-secondary border border-surface-border hover:bg-surface-hover hover:text-text-primary`)}>`);
|
|
22486
|
+
$$renderer.push("<!--[-1-->");
|
|
22487
|
+
Chevron_right($$renderer, { size: 10 });
|
|
22488
|
+
$$renderer.push(`<!--]--> <span class="text-[10px]">${escape_html(t(() => editedfileschip2()))}</span></button> `);
|
|
22489
|
+
$$renderer.push("<!--[-1-->");
|
|
22490
|
+
$$renderer.push(`<!--]--></div>`);
|
|
22491
|
+
});
|
|
22492
|
+
}
|
|
22493
|
+
//#endregion
|
|
22092
22494
|
//#region src/lib/components/common/viewers/ReasoningContentViewer.svelte
|
|
22093
22495
|
function ReasoningContentViewer($$renderer, $$props) {
|
|
22094
22496
|
$$renderer.component(($$renderer) => {
|
|
@@ -22276,6 +22678,13 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22276
22678
|
function chipToolTitle(name) {
|
|
22277
22679
|
return t(TOOL_TITLE_MESSAGES[classifyTool(name)]);
|
|
22278
22680
|
}
|
|
22681
|
+
/** Peek-list membership (2026-09-25 bug fix): every chip EXCEPT the
|
|
22682
|
+
* self-rendering kinds — a files-edited entry IS its own card
|
|
22683
|
+
* (FilesEditedCard), so counting it as a chip made the peek button
|
|
22684
|
+
* claim a tool call the row did not show. */
|
|
22685
|
+
function isPeekMember(entry) {
|
|
22686
|
+
return entry.kind !== "assistant-message" && entry.kind !== "files-edited";
|
|
22687
|
+
}
|
|
22279
22688
|
/** Peek-list row label (ToolPeekButton port): match the chip skins. */
|
|
22280
22689
|
function peekLabel(entry) {
|
|
22281
22690
|
if (entry.kind === "tool-call") return chipToolTitle(entry.toolName);
|
|
@@ -22305,9 +22714,9 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22305
22714
|
let $$inner_renderer;
|
|
22306
22715
|
function $$render_inner($$renderer) {
|
|
22307
22716
|
$$renderer.push(`<div data-svelte="InlineToolCalls" class="flex flex-wrap items-center">`);
|
|
22308
|
-
if (entries.some(
|
|
22717
|
+
if (entries.some(isPeekMember)) {
|
|
22309
22718
|
$$renderer.push("<!--[0-->");
|
|
22310
|
-
const chipCount = entries.filter(
|
|
22719
|
+
const chipCount = entries.filter(isPeekMember).length;
|
|
22311
22720
|
ToolPeekButton($$renderer, {
|
|
22312
22721
|
count: chipCount,
|
|
22313
22722
|
active: peekOpen});
|
|
@@ -22359,8 +22768,14 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22359
22768
|
open: openChipId === entry.id,
|
|
22360
22769
|
ontoggle: () => ontoggleChip(entry.id)
|
|
22361
22770
|
});
|
|
22362
|
-
} else if (entry.kind === "
|
|
22771
|
+
} else if (entry.kind === "files-edited") {
|
|
22363
22772
|
$$renderer.push("<!--[5-->");
|
|
22773
|
+
FilesEditedCard($$renderer, {
|
|
22774
|
+
turn: entry.turn,
|
|
22775
|
+
seq: entry.seq
|
|
22776
|
+
});
|
|
22777
|
+
} else if (entry.kind === "unknown-event") {
|
|
22778
|
+
$$renderer.push("<!--[6-->");
|
|
22364
22779
|
ToolCallChip($$renderer, {
|
|
22365
22780
|
kind: "unknown",
|
|
22366
22781
|
toolName: entry.eventType,
|
|
@@ -22368,7 +22783,7 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22368
22783
|
ontoggle: () => ontoggleChip(entry.id)
|
|
22369
22784
|
});
|
|
22370
22785
|
} else if (entry.kind === "user-message") {
|
|
22371
|
-
$$renderer.push("<!--[
|
|
22786
|
+
$$renderer.push("<!--[7-->");
|
|
22372
22787
|
ContextInjection($$renderer, {
|
|
22373
22788
|
producer: entry.meta,
|
|
22374
22789
|
text: entry.text,
|
|
@@ -22378,7 +22793,7 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22378
22793
|
onopen: subagentOpenOf(entry.meta, entry.metaSource)
|
|
22379
22794
|
});
|
|
22380
22795
|
} else if (entry.kind === "turn-error") {
|
|
22381
|
-
$$renderer.push("<!--[
|
|
22796
|
+
$$renderer.push("<!--[8-->");
|
|
22382
22797
|
TurnErrorChip($$renderer, {
|
|
22383
22798
|
message: entry.message,
|
|
22384
22799
|
code: entry.code,
|
|
@@ -22395,7 +22810,7 @@ function InlineToolCalls($$renderer, $$props) {
|
|
|
22395
22810
|
const each_array_1 = ensure_array_like(entries);
|
|
22396
22811
|
for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
|
|
22397
22812
|
let entry = each_array_1[$$index_1];
|
|
22398
|
-
if (entry
|
|
22813
|
+
if (isPeekMember(entry)) {
|
|
22399
22814
|
$$renderer.push("<!--[0-->");
|
|
22400
22815
|
const preview = peekPreview(entry);
|
|
22401
22816
|
$$renderer.push(`<li class="px-3 py-1 text-xs flex items-center gap-2"><span${attr_class(`w-1.5 h-1.5 rounded-full shrink-0 ${stringify(peekDotClass(entry))}`)}></span> <span class="font-mono font-medium text-text-primary shrink-0">${escape_html(peekLabel(entry))}</span> `);
|
|
@@ -22734,6 +23149,7 @@ function groupTurns(entries) {
|
|
|
22734
23149
|
});
|
|
22735
23150
|
continue;
|
|
22736
23151
|
}
|
|
23152
|
+
if (entry.kind === "turn-lifecycle") continue;
|
|
22737
23153
|
const side = entry;
|
|
22738
23154
|
const last = groups[groups.length - 1];
|
|
22739
23155
|
if (last?.kind === "assistant-turn") last.entries.push(side);
|
|
@@ -22893,6 +23309,58 @@ function turnProcess(entries, opts) {
|
|
|
22893
23309
|
};
|
|
22894
23310
|
}
|
|
22895
23311
|
//#endregion
|
|
23312
|
+
//#region src/lib/services/conversation/turn-projection.ts
|
|
23313
|
+
function isLifecycleEntry(entry) {
|
|
23314
|
+
return entry.kind === "turn-lifecycle";
|
|
23315
|
+
}
|
|
23316
|
+
/**
|
|
23317
|
+
* Fold all turn-lifecycle markers into per-turn records keyed by the
|
|
23318
|
+
* harness's turn number. Pure; last-write-wins per phase (ledger replays
|
|
23319
|
+
* may re-serve a bracket).
|
|
23320
|
+
*/
|
|
23321
|
+
function projectTurnLifecycle(entries) {
|
|
23322
|
+
const map = /* @__PURE__ */ new Map();
|
|
23323
|
+
for (const entry of entries) {
|
|
23324
|
+
if (!isLifecycleEntry(entry)) continue;
|
|
23325
|
+
const prev = map.get(entry.turn);
|
|
23326
|
+
if (entry.phase === "start") {
|
|
23327
|
+
const keepEnd = prev?.endSeq !== void 0 && prev.endSeq > entry.seq;
|
|
23328
|
+
map.set(entry.turn, {
|
|
23329
|
+
startSeq: entry.seq,
|
|
23330
|
+
startMs: entry.time,
|
|
23331
|
+
...keepEnd ? {
|
|
23332
|
+
endSeq: prev?.endSeq,
|
|
23333
|
+
endMs: prev?.endMs,
|
|
23334
|
+
reasonKind: prev?.reasonKind,
|
|
23335
|
+
abortKind: prev?.abortKind
|
|
23336
|
+
} : {}
|
|
23337
|
+
});
|
|
23338
|
+
} else {
|
|
23339
|
+
const base = prev ?? {
|
|
23340
|
+
startSeq: Number.MAX_SAFE_INTEGER,
|
|
23341
|
+
startMs: entry.time
|
|
23342
|
+
};
|
|
23343
|
+
map.set(entry.turn, {
|
|
23344
|
+
...base,
|
|
23345
|
+
endSeq: entry.seq,
|
|
23346
|
+
endMs: entry.time,
|
|
23347
|
+
reasonKind: entry.reasonKind,
|
|
23348
|
+
...entry.abortKind !== void 0 ? { abortKind: entry.abortKind } : {}
|
|
23349
|
+
});
|
|
23350
|
+
}
|
|
23351
|
+
}
|
|
23352
|
+
return map;
|
|
23353
|
+
}
|
|
23354
|
+
/**
|
|
23355
|
+
* Join a turn group to its lifecycle record: the record must BRACKET the
|
|
23356
|
+
* group — start seq strictly before the group's first entry seq, end seq
|
|
23357
|
+
* strictly after the group's last entry seq. Unpaired (in-flight or
|
|
23358
|
+
* start-less) records never join, so an open turn renders nothing.
|
|
23359
|
+
*/
|
|
23360
|
+
function lifecycleForGroup(map, firstSeq, lastSeq) {
|
|
23361
|
+
for (const record of map.values()) if (record.startSeq < firstSeq && record.endSeq !== void 0 && record.endSeq > lastSeq) return record;
|
|
23362
|
+
}
|
|
23363
|
+
//#endregion
|
|
22896
23364
|
//#region src/lib/components/conversation/ConversationScrollArea.svelte
|
|
22897
23365
|
function ConversationScrollArea($$renderer, $$props) {
|
|
22898
23366
|
$$renderer.component(($$renderer) => {
|
|
@@ -22914,7 +23382,7 @@ function ConversationScrollArea($$renderer, $$props) {
|
|
|
22914
23382
|
* The viewport element is $bindable: the page keeps it for the
|
|
22915
23383
|
* floating anchor stack (jumper + back-to-top act on this scroller).
|
|
22916
23384
|
*/
|
|
22917
|
-
let { viewport = void 0, stick = true, entries, groups, hasMore, loadingOlder, olderError, onloadolder, openChipId, ontogglechip, autoThinkId = null, autoPlanId = null, peekOpenRunKey, ontogglepeek, pendingCards, settledCards, onanswer, sessionId, title = null, agentPreset = null, subagent = false, depth = 0 } = $$props;
|
|
23385
|
+
let { viewport = void 0, stick = true, entries, groups, hasMore, loadingOlder, olderError, onloadolder, openChipId, ontogglechip, autoThinkId = null, autoPlanId = null, peekOpenRunKey, ontogglepeek, pendingCards, settledCards, onanswer, onFileLink = void 0, sessionId, title = null, agentPreset = null, subagent = false, depth = 0 } = $$props;
|
|
22918
23386
|
/** Depth-graded sub-agent tints: beige at depth 1, one step darker
|
|
22919
23387
|
* per nesting level, darkest from depth 3 on (the cap). */
|
|
22920
23388
|
const SUBAGENT_TINTS = [
|
|
@@ -23052,6 +23520,7 @@ function ConversationScrollArea($$renderer, $$props) {
|
|
|
23052
23520
|
start: turnStartTime(group.entries),
|
|
23053
23521
|
usage: turnUsage(group.entries),
|
|
23054
23522
|
text: turnText(group.entries),
|
|
23523
|
+
lifecycle: lifecycleForGroup(projectTurnLifecycle(entries), group.entries[0].seq, group.entries[group.entries.length - 1].seq),
|
|
23055
23524
|
fork: subagent ? null : {
|
|
23056
23525
|
sessionId,
|
|
23057
23526
|
atSeq: turnAnchorSeq(group.entries),
|
|
@@ -23094,7 +23563,8 @@ function ConversationScrollArea($$renderer, $$props) {
|
|
|
23094
23563
|
$$renderer.push("<!--[0-->");
|
|
23095
23564
|
MarkdownContent($$renderer, {
|
|
23096
23565
|
content: run.entry.text,
|
|
23097
|
-
hideToggle: true
|
|
23566
|
+
hideToggle: true,
|
|
23567
|
+
onFileLink
|
|
23098
23568
|
});
|
|
23099
23569
|
} else {
|
|
23100
23570
|
$$renderer.push("<!--[-1-->");
|
|
@@ -23122,7 +23592,8 @@ function ConversationScrollArea($$renderer, $$props) {
|
|
|
23122
23592
|
$$renderer.push("<!--[0-->");
|
|
23123
23593
|
MarkdownContent($$renderer, {
|
|
23124
23594
|
content: run.entry.text,
|
|
23125
|
-
hideToggle: true
|
|
23595
|
+
hideToggle: true,
|
|
23596
|
+
onFileLink
|
|
23126
23597
|
});
|
|
23127
23598
|
} else {
|
|
23128
23599
|
$$renderer.push("<!--[-1-->");
|
|
@@ -23151,7 +23622,8 @@ function ConversationScrollArea($$renderer, $$props) {
|
|
|
23151
23622
|
$$renderer.push("<!--[0-->");
|
|
23152
23623
|
MarkdownContent($$renderer, {
|
|
23153
23624
|
content: run.entry.text,
|
|
23154
|
-
hideToggle: true
|
|
23625
|
+
hideToggle: true,
|
|
23626
|
+
onFileLink
|
|
23155
23627
|
});
|
|
23156
23628
|
} else {
|
|
23157
23629
|
$$renderer.push("<!--[-1-->");
|
|
@@ -25322,8 +25794,9 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
25322
25794
|
* existing command banner. Catalog reads fire on first menu open,
|
|
25323
25795
|
* never at mount (cold sessions stay cold).
|
|
25324
25796
|
*/
|
|
25325
|
-
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, a2aRows = [], a2aTitles = {}, onNeedCold = void 0, onClose = void 0, focusComposer = false, oncomposerfocus = void 0, focused = false, onOpenExplorer = void 0 } = $$props;
|
|
25797
|
+
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, a2aRows = [], a2aTitles = {}, onNeedCold = void 0, onClose = void 0, focusComposer = false, oncomposerfocus = void 0, focused = false, onOpenExplorer = void 0, onFileLink = void 0 } = $$props;
|
|
25326
25798
|
setPanelMode(true);
|
|
25799
|
+
setConversationSession(sessionId);
|
|
25327
25800
|
const store = createConversationStore(sessionId);
|
|
25328
25801
|
const orchestrator = createPollingOrchestrator(store);
|
|
25329
25802
|
if (entries !== void 0) store.replaceAll(entries);
|
|
@@ -25727,6 +26200,7 @@ function ConversationPanel($$renderer, $$props) {
|
|
|
25727
26200
|
pendingCards: pendingCards(),
|
|
25728
26201
|
settledCards: settledCards(),
|
|
25729
26202
|
onanswer: (rpcId, payload) => void onanswer(rpcId, payload),
|
|
26203
|
+
onFileLink,
|
|
25730
26204
|
sessionId: store.sessionId,
|
|
25731
26205
|
title,
|
|
25732
26206
|
agentPreset: agent,
|
|
@@ -25859,8 +26333,13 @@ var initialTerminalPanelState = {
|
|
|
25859
26333
|
//#region src/lib/components/terminal/TerminalPanel.svelte
|
|
25860
26334
|
function TerminalPanel($$renderer, $$props) {
|
|
25861
26335
|
$$renderer.component(($$renderer) => {
|
|
26336
|
+
let { onShellExit, assigned = null, onAssigned } = $$props;
|
|
25862
26337
|
let panelState = { ...initialTerminalPanelState };
|
|
25863
26338
|
Promise.resolve();
|
|
26339
|
+
/** Focus the live xterm surface (the desk's ⌥+N tab shortcut,
|
|
26340
|
+
* 2026-09-25): the real terminal when attached, the fallback
|
|
26341
|
+
* input's textarea otherwise. */
|
|
26342
|
+
function focusTerminal() {}
|
|
25864
26343
|
function settleText(reason) {
|
|
25865
26344
|
if (reason === "stdin_read") return t(terminalsettlestdinread3);
|
|
25866
26345
|
if (reason === "inferred_idle") return t(terminalsettleinferredidle3);
|
|
@@ -25868,7 +26347,7 @@ function TerminalPanel($$renderer, $$props) {
|
|
|
25868
26347
|
if (reason === "session_exit") return t(terminalsettlesessionexit3);
|
|
25869
26348
|
return "";
|
|
25870
26349
|
}
|
|
25871
|
-
$$renderer.push(`<div data-svelte="TerminalPanel" class="terminal-panel flex h-full min-h-80 flex-col rounded-lg bg-slate-900 p-1" data-testid="terminal-panel"><div class="mb-1 flex items-center gap-2 px-1 text-[10px] text-slate-400"
|
|
26350
|
+
$$renderer.push(`<div data-svelte="TerminalPanel" class="terminal-panel flex h-full min-h-80 flex-col rounded-lg bg-slate-900 p-1" data-testid="terminal-panel"><div class="mb-1 flex items-center gap-2 px-1 text-[10px] text-slate-400">`);
|
|
25872
26351
|
if (panelState.lastSettle) {
|
|
25873
26352
|
$$renderer.push("<!--[0-->");
|
|
25874
26353
|
$$renderer.push(`<span data-testid="terminal-settle-badge" class="rounded bg-slate-700 px-1.5 py-0.5">${escape_html(settleText(panelState.lastSettle))}</span>`);
|
|
@@ -25886,15 +26365,23 @@ function TerminalPanel($$renderer, $$props) {
|
|
|
25886
26365
|
$$renderer.push(`<div class="px-2 pb-1 text-[10px] text-slate-500" data-testid="terminal-closed">${escape_html(t(terminalclosed1))}${escape_html(panelState.quiescent === false ? " (lingering)" : "")}</div>`);
|
|
25887
26366
|
} else $$renderer.push("<!--[-1-->");
|
|
25888
26367
|
$$renderer.push(`<!--]--></div>`);
|
|
26368
|
+
bind_props($$props, { focusTerminal });
|
|
25889
26369
|
});
|
|
25890
26370
|
}
|
|
25891
26371
|
//#endregion
|
|
25892
26372
|
//#region src/lib/components/terminal/TerminalTabHeader.svelte
|
|
25893
26373
|
function TerminalTabHeader($$renderer, $$props) {
|
|
25894
|
-
let { children } = $$props;
|
|
26374
|
+
let { children, actions } = $$props;
|
|
25895
26375
|
$$renderer.push(`<div data-svelte="TerminalTabHeader" role="tablist" class="flex items-center gap-1 border-b border-slate-800 px-1 py-0.5" data-testid="terminal-tab-header">`);
|
|
25896
26376
|
children($$renderer);
|
|
25897
|
-
$$renderer.push(
|
|
26377
|
+
$$renderer.push(`<!----> `);
|
|
26378
|
+
if (actions) {
|
|
26379
|
+
$$renderer.push("<!--[0-->");
|
|
26380
|
+
$$renderer.push(`<div class="ml-auto flex items-center" data-testid="terminal-tab-header-actions">`);
|
|
26381
|
+
actions($$renderer);
|
|
26382
|
+
$$renderer.push(`<!----></div>`);
|
|
26383
|
+
} else $$renderer.push("<!--[-1-->");
|
|
26384
|
+
$$renderer.push(`<!--]--></div>`);
|
|
25898
26385
|
}
|
|
25899
26386
|
//#endregion
|
|
25900
26387
|
//#region src/lib/components/terminal/TerminalTabButton.svelte
|
|
@@ -25939,6 +26426,7 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
25939
26426
|
/** Null = self-open (the panel runs its own ladder and reports back
|
|
25940
26427
|
* via onAssigned); set = the desk holds this session's lease. */
|
|
25941
26428
|
let { onShellExit, restored = null, onMirror } = $$props;
|
|
26429
|
+
const captureEl = derived(() => null);
|
|
25942
26430
|
let nextKey = 1;
|
|
25943
26431
|
const mkKey = () => nextKey++;
|
|
25944
26432
|
const defaultTab = () => ({
|
|
@@ -25996,25 +26484,74 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
25996
26484
|
} else tabs[selectedTab].rows.push(row);
|
|
25997
26485
|
})();
|
|
25998
26486
|
}
|
|
26487
|
+
/** Tab close (D5): ladder-close every row's session, remove the tab,
|
|
26488
|
+
* move selection to the right neighbor (or left if last); the last
|
|
26489
|
+
* tab's close removes the desk slot via onShellExit (the floor's
|
|
26490
|
+
* removePanel path — the same mutation as the column close). */
|
|
26491
|
+
function closeTab(tabIndex) {
|
|
26492
|
+
const tab = tabs[tabIndex];
|
|
26493
|
+
for (const row of tab.rows) if (row.assigned) fetch("/api/terminal/" + row.assigned.sessionId + "/send", {
|
|
26494
|
+
method: "POST",
|
|
26495
|
+
headers: { "content-type": "application/json" },
|
|
26496
|
+
body: JSON.stringify({
|
|
26497
|
+
token: row.assigned.token,
|
|
26498
|
+
action: "close"
|
|
26499
|
+
}),
|
|
26500
|
+
keepalive: true
|
|
26501
|
+
}).catch(() => void 0);
|
|
26502
|
+
tabs.splice(tabIndex, 1);
|
|
26503
|
+
if (tabs.length === 0) {
|
|
26504
|
+
onShellExit?.();
|
|
26505
|
+
return;
|
|
26506
|
+
}
|
|
26507
|
+
selectedTab = Math.min(tabIndex, tabs.length - 1);
|
|
26508
|
+
}
|
|
26509
|
+
/** Shell exit in a row (D5): the session is already dead — shrink the
|
|
26510
|
+
* tab; an empty tab closes (selection rules as closeTab); the desk's
|
|
26511
|
+
* last shell dying removes the slot (if only one terminal overall, it
|
|
26512
|
+
* means closing the PanelColumn). */
|
|
26513
|
+
function removeRow(tabIndex, row) {
|
|
26514
|
+
const tab = tabs[tabIndex];
|
|
26515
|
+
const i = tab.rows.indexOf(row);
|
|
26516
|
+
if (i >= 0) tab.rows.splice(i, 1);
|
|
26517
|
+
if (tab.rows.length === 0) closeTab(tabIndex);
|
|
26518
|
+
}
|
|
26519
|
+
function recordAssigned(row, sessionId, token) {
|
|
26520
|
+
row.assigned = {
|
|
26521
|
+
sessionId,
|
|
26522
|
+
token
|
|
26523
|
+
};
|
|
26524
|
+
}
|
|
25999
26525
|
$$renderer.push(`<div data-svelte="TerminalDesk" class="flex h-full min-h-0 flex-col rounded-lg bg-slate-900" data-testid="terminal-desk">`);
|
|
26000
26526
|
if (restoring) {
|
|
26001
26527
|
$$renderer.push("<!--[0-->");
|
|
26002
26528
|
$$renderer.push(`<div class="p-3 text-xs text-slate-500" data-testid="terminal-desk-restoring">...</div>`);
|
|
26003
26529
|
} else {
|
|
26004
26530
|
$$renderer.push("<!--[-1-->");
|
|
26005
|
-
|
|
26006
|
-
|
|
26007
|
-
$$renderer
|
|
26008
|
-
|
|
26009
|
-
|
|
26010
|
-
|
|
26011
|
-
|
|
26012
|
-
|
|
26013
|
-
|
|
26014
|
-
|
|
26015
|
-
|
|
26016
|
-
$$renderer
|
|
26017
|
-
|
|
26531
|
+
{
|
|
26532
|
+
function actions($$renderer) {
|
|
26533
|
+
CanvasCopyButton($$renderer, {
|
|
26534
|
+
container: captureEl(),
|
|
26535
|
+
mode: "visible",
|
|
26536
|
+
title: t(copypanelasimage3),
|
|
26537
|
+
size: 12
|
|
26538
|
+
});
|
|
26539
|
+
}
|
|
26540
|
+
TerminalTabHeader($$renderer, {
|
|
26541
|
+
actions,
|
|
26542
|
+
children: ($$renderer) => {
|
|
26543
|
+
$$renderer.push(`<!--[-->`);
|
|
26544
|
+
const each_array = ensure_array_like(tabs);
|
|
26545
|
+
for (let i = 0, $$length = each_array.length; i < $$length; i++) {
|
|
26546
|
+
each_array[i];
|
|
26547
|
+
TerminalTabButton($$renderer, {
|
|
26548
|
+
index: i,
|
|
26549
|
+
label: "T" + (i + 1),
|
|
26550
|
+
selected: i === selectedTab});
|
|
26551
|
+
}
|
|
26552
|
+
$$renderer.push(`<!--]-->`);
|
|
26553
|
+
}});
|
|
26554
|
+
}
|
|
26018
26555
|
$$renderer.push(`<!----> <!--[-->`);
|
|
26019
26556
|
const each_array_1 = ensure_array_like(tabs);
|
|
26020
26557
|
for (let i = 0, $$length = each_array_1.length; i < $$length; i++) {
|
|
@@ -26032,7 +26569,10 @@ function TerminalDesk($$renderer, $$props) {
|
|
|
26032
26569
|
let row = each_array_2[$$index_1];
|
|
26033
26570
|
$$renderer.push(`<div class="min-h-0" style="flex: 1 1 0; min-height: 10rem;">`);
|
|
26034
26571
|
TerminalPanel($$renderer, {
|
|
26035
|
-
assigned: row.assigned
|
|
26572
|
+
assigned: row.assigned,
|
|
26573
|
+
onAssigned: (sessionId, token) => recordAssigned(row, sessionId, token),
|
|
26574
|
+
onShellExit: () => removeRow(i, row)
|
|
26575
|
+
});
|
|
26036
26576
|
$$renderer.push(`<!----></div>`);
|
|
26037
26577
|
}
|
|
26038
26578
|
$$renderer.push(`<!--]-->`);
|
|
@@ -26877,7 +27417,7 @@ function WorkspaceExplorerTree($$renderer, $$props) {
|
|
|
26877
27417
|
*/
|
|
26878
27418
|
/** One listing row (workspaceFiles/list WorkspaceDirectoryEntry). */
|
|
26879
27419
|
/** Viewing state for one fetched level (owner-held, never persisted). */
|
|
26880
|
-
let { root, levels, expanded, repoMaps, changedPaths, changedDirs} = $$props;
|
|
27420
|
+
let { root, levels, expanded, repoMaps, changedPaths, changedDirs, activeFile = null } = $$props;
|
|
26881
27421
|
/** The row's child rel path (the listing's names are basenames). */
|
|
26882
27422
|
function childRel(rel, name) {
|
|
26883
27423
|
return rel === "" ? name : rel + "/" + name;
|
|
@@ -26897,7 +27437,8 @@ function WorkspaceExplorerTree($$renderer, $$props) {
|
|
|
26897
27437
|
const isRepoChild = dir && repoMaps[rel]?.repos?.[entry.name] === true;
|
|
26898
27438
|
const isChanged = !dir && changedPaths.has(childRel(rel, entry.name));
|
|
26899
27439
|
const isHotDir = dir && changedDirs.has(childRel(rel, entry.name));
|
|
26900
|
-
|
|
27440
|
+
const isActive = activeFile !== null && activeFile === child;
|
|
27441
|
+
$$renderer.push(`<li role="treeitem"${attr("aria-selected", isActive)}${attr("aria-expanded", dir ? isOpen : void 0)}${attr_class("row-line svelte-hbtlo6", void 0, { "active": isActive })}>`);
|
|
26901
27442
|
if (dir) {
|
|
26902
27443
|
$$renderer.push("<!--[0-->");
|
|
26903
27444
|
$$renderer.push(`<button${attr_class("row dir svelte-hbtlo6", void 0, {
|
|
@@ -26971,7 +27512,7 @@ function WorkspaceExplorerTree($$renderer, $$props) {
|
|
|
26971
27512
|
} else $$renderer.push("<!--[-1-->");
|
|
26972
27513
|
$$renderer.push(`<!--]--></li>`);
|
|
26973
27514
|
}
|
|
26974
|
-
$$renderer.push(`<ul data-svelte="WorkspaceExplorerTree" class="tree svelte-hbtlo6" role="tree"${attr("aria-label", workspacePanelCopy.explorer.title + ": " + root)}><!--[-->`);
|
|
27515
|
+
$$renderer.push(`<ul data-svelte="WorkspaceExplorerTree" class="tree svelte-hbtlo6" role="tree"${attr("aria-label", workspacePanelCopy.explorer.title + ": " + root)}${attr("data-active-file", activeFile ?? "")}><!--[-->`);
|
|
26975
27516
|
const each_array_1 = ensure_array_like(sorted(levels[""]?.kind === "ready" ? levels[""].entries : []));
|
|
26976
27517
|
for (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {
|
|
26977
27518
|
let entry = each_array_1[$$index];
|
|
@@ -27096,7 +27637,7 @@ function WorkspaceExplorer($$renderer, $$props) {
|
|
|
27096
27637
|
* never scroll itself; the scroll lives on .tree-scroll so the toolbar
|
|
27097
27638
|
* stays pinned (the toolbar-scrolls-away bug).
|
|
27098
27639
|
*/
|
|
27099
|
-
let { root, activeTab, levels, expanded, repoMaps, changedPaths, changedDirs, changesRepos, changesStatuses, collapsedRepos} = $$props;
|
|
27640
|
+
let { root, activeTab, levels, expanded, repoMaps, changedPaths, changedDirs, activeFile = null, changesRepos, changesStatuses, collapsedRepos} = $$props;
|
|
27100
27641
|
$$renderer.push(`<div data-svelte="WorkspaceExplorer" class="explorer svelte-1l3v1je">`);
|
|
27101
27642
|
WorkspaceExplorerToolbar($$renderer, {
|
|
27102
27643
|
activeTab});
|
|
@@ -27119,7 +27660,9 @@ function WorkspaceExplorer($$renderer, $$props) {
|
|
|
27119
27660
|
expanded,
|
|
27120
27661
|
repoMaps,
|
|
27121
27662
|
changedPaths,
|
|
27122
|
-
changedDirs
|
|
27663
|
+
changedDirs,
|
|
27664
|
+
activeFile
|
|
27665
|
+
});
|
|
27123
27666
|
$$renderer.push(`<!----></div>`);
|
|
27124
27667
|
}
|
|
27125
27668
|
$$renderer.push(`<!--]--></div>`);
|
|
@@ -27917,6 +28460,7 @@ function WorkspaceExplorerPanel($$renderer, $$props) {
|
|
|
27917
28460
|
const splitPct = derived(() => clampTreePct(treePct));
|
|
27918
28461
|
$$renderer.push(`<div data-svelte="WorkspaceExplorerPanel" data-testid="workspace-explorer" class="split svelte-v4uero"${attr_style(`--tree-basis: ${stringify(splitPct())}%; --file-basis: ${stringify(100 - splitPct())}%`)}>`);
|
|
27919
28462
|
WorkspaceExplorer($$renderer, {
|
|
28463
|
+
activeFile,
|
|
27920
28464
|
root,
|
|
27921
28465
|
activeTab: activeTab(),
|
|
27922
28466
|
levels,
|
|
@@ -28666,6 +29210,24 @@ function _page($$renderer, $$props) {
|
|
|
28666
29210
|
const host = sessionWorkspaceExplorer(sessionId);
|
|
28667
29211
|
if (host) publishFileIntent(host.id, path);
|
|
28668
29212
|
}
|
|
29213
|
+
/** File Link Intent (ADR 2026-09-25 D3): a transcript file link publishes
|
|
29214
|
+
* ONLY after the tree route proves the file exists inside the session's
|
|
29215
|
+
* workspace — the gate lives in the shared util; anything else drops the
|
|
29216
|
+
* click. No navigation ever happens. */
|
|
29217
|
+
async function openFileLinkFromMarkdown(sessionId, rawHref) {
|
|
29218
|
+
const path = normalizeFileLinkPath(rawHref);
|
|
29219
|
+
console.log("[FLINK] click", sessionId, rawHref, "->", path);
|
|
29220
|
+
if (path === null) return;
|
|
29221
|
+
const exists = await workspaceFileExists(sessionId, path);
|
|
29222
|
+
console.log("[FLINK] exists:", exists);
|
|
29223
|
+
if (!exists) return;
|
|
29224
|
+
if (!sessionWorkspaceExplorer(sessionId)) {
|
|
29225
|
+
const root = panelWorkspaceFor(sessionId);
|
|
29226
|
+
if (!root) return;
|
|
29227
|
+
openWorkspaceExplorer(sessionId, root);
|
|
29228
|
+
}
|
|
29229
|
+
openWorkspaceFile(sessionId, path);
|
|
29230
|
+
}
|
|
28669
29231
|
const seedData = page.data;
|
|
28670
29232
|
const seedCold = seedData && typeof seedData.sessionId === "string" && Array.isArray(seedData.entries) ? {
|
|
28671
29233
|
title: seedData.title ?? null,
|
|
@@ -29097,6 +29659,7 @@ function _page($$renderer, $$props) {
|
|
|
29097
29659
|
ConversationPanel($$renderer, {
|
|
29098
29660
|
panelId: floorPanelId,
|
|
29099
29661
|
sessionId: p.sessionId,
|
|
29662
|
+
onFileLink: (href) => void openFileLinkFromMarkdown(p.sessionId, href),
|
|
29100
29663
|
title: panelTitleFor(p.sessionId),
|
|
29101
29664
|
workspace: panelWorkspaceFor(p.sessionId),
|
|
29102
29665
|
workspaces: spineWorkspaces(),
|
|
@@ -29129,6 +29692,7 @@ function _page($$renderer, $$props) {
|
|
|
29129
29692
|
ConversationPanel($$renderer, {
|
|
29130
29693
|
panelId: floorPanelId,
|
|
29131
29694
|
sessionId: p.sessionId,
|
|
29695
|
+
onFileLink: (href) => void openFileLinkFromMarkdown(p.sessionId, href),
|
|
29132
29696
|
title: panelTitleFor(p.sessionId),
|
|
29133
29697
|
workspace: panelWorkspaceFor(p.sessionId),
|
|
29134
29698
|
workspaces: spineWorkspaces(),
|
|
@@ -29245,4 +29809,4 @@ function _page($$renderer, $$props) {
|
|
|
29245
29809
|
}
|
|
29246
29810
|
|
|
29247
29811
|
export { _page as default };
|
|
29248
|
-
//# sourceMappingURL=_page.svelte.js-
|
|
29812
|
+
//# sourceMappingURL=_page.svelte.js-Bk7bKW1n.js.map
|