@deepseek-insight/dsi 0.6.15 → 0.6.17

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.
Files changed (86) hide show
  1. package/.agents/skills/dsi-ports/SKILL.md +61 -0
  2. package/.agents/skills/dsi-restart/SKILL.md +85 -0
  3. package/bin/dsi.mjs +216 -51
  4. package/bin/lib/dev-mode.mjs +147 -0
  5. package/bin/lib/plugin-chain.mjs +144 -0
  6. package/build/client/_app/immutable/assets/{0.BNydQv_U.css → 0.KhAZv9mf.css} +1 -1
  7. package/build/client/_app/immutable/assets/2.yPxdQ-n0.css +1 -0
  8. package/build/client/_app/immutable/chunks/BwzVWUYp.js +1 -0
  9. package/build/client/_app/immutable/chunks/{Dz22rCMX.js → CBpybevN.js} +2 -2
  10. package/build/client/_app/immutable/chunks/{Cq1i4fPn.js → CuWK-Is9.js} +1 -1
  11. package/build/client/_app/immutable/chunks/gD0YbXxV.js +1 -0
  12. package/build/client/_app/immutable/entry/{app.BzO5CDQp.js → app.rnAj22Bt.js} +2 -2
  13. package/build/client/_app/immutable/entry/start.BZMX9WpT.js +1 -0
  14. package/build/client/_app/immutable/nodes/{1.DUMUcf6V.js → 1.CEJdtANo.js} +1 -1
  15. package/build/client/_app/immutable/nodes/{2.DibXuWjr.js → 2.D-He2bY-.js} +219 -219
  16. package/build/client/_app/version.json +1 -1
  17. package/build/handler.js +4 -4
  18. package/build/index.js +4 -4
  19. package/build/server/chunks/chunks/{dsh-connection.js-DRtqPR_j.js → dsh-connection.js-DvncrWM4.js} +5 -2
  20. package/build/server/chunks/chunks/{git-probe.js-Daf6r7Z9.js → git-probe.js-S9w9gGXE.js} +2 -2
  21. package/build/server/chunks/chunks/{internal2.js-CFvE_2qT.js → internal2.js-Uh9eeZMM.js} +2 -2
  22. package/build/server/chunks/chunks/restart-chain.js-KZO2ISmM.js +112 -0
  23. package/build/server/chunks/chunks/{state.js-BFJMxIOB.js → state.js-5SpXEMQf.js} +2 -2
  24. package/build/server/chunks/chunks/{watcher.js-CoR53lwR.js → watcher.js-BfZOp5td.js} +2 -2
  25. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-BKlF4XGH.js → _server.ts.js-D9vpMh8K.js} +3 -3
  26. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-BpEhlidV.js → _server.ts.js-HPJEmfbv.js} +3 -3
  27. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-Dmh7f-hU.js → _server.ts.js-BaAmRXrU.js} +2 -2
  28. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-BEci0ZAx.js → _server.ts.js-D-Ftq5ei.js} +2 -2
  29. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-OXFzXBSp.js → _server.ts.js-C0_j53OW.js} +2 -2
  30. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-x44GKy4R.js → _server.ts.js-CxMvUVdS.js} +2 -2
  31. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-Da5ZqeJ7.js → _server.ts.js-CfjRtKMp.js} +2 -2
  32. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BACv9hW-.js → _server.ts.js-D7uC5b_j.js} +2 -2
  33. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/changes/{_server.ts.js-BtiUS3iD.js → _server.ts.js-TeoUfrIl.js} +2 -2
  34. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-BOOyd1LI.js → _server.ts.js-uqUb-EdM.js} +2 -2
  35. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-D0GwQbdF.js → _server.ts.js-C_DF0fAc.js} +2 -2
  36. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-Bd0JYMlf.js → _server.ts.js-BfkqDQXU.js} +2 -2
  37. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DqAV7OOv.js → _server.ts.js-vCfxCACS.js} +2 -2
  38. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-Cz4P-68E.js → _server.ts.js-DJlpW4hl.js} +2 -2
  39. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-C4fXXBIM.js → _server.ts.js-Cqn5ZMGh.js} +2 -2
  40. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-BiqNZiiN.js → _server.ts.js-ChB_0ZdM.js} +2 -2
  41. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-Bdx9V4oY.js → _server.ts.js-BVHypcWF.js} +2 -2
  42. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-CuBqoV3c.js → _server.ts.js-BwDVfVrR.js} +2 -2
  43. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-CXPFI_Pn.js → _server.ts.js-DRmd83Ea.js} +2 -2
  44. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-CRcaw4Yo.js → _server.ts.js-hc61Nb64.js} +2 -2
  45. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-dYrtVHDP.js → _server.ts.js-xkp4IT7y.js} +2 -2
  46. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-BtlfuMjf.js → _server.ts.js-BvPKBiTg.js} +2 -2
  47. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-D12kAP9B.js → _server.ts.js-BSsF01K6.js} +2 -2
  48. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-C9JHp1WU.js → _server.ts.js-DNLxFs1R.js} +2 -2
  49. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-bLF4Fbgn.js → _server.ts.js-5jaRPaKn.js} +2 -2
  50. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-BSw_zD-0.js → _server.ts.js-A-hvBqyy.js} +2 -2
  51. package/build/server/chunks/entries/endpoints/api/floor/mode/_server.ts.js-CzBvebv2.js +25 -0
  52. package/build/server/chunks/entries/endpoints/api/floor/restart/_server.ts.js-DKsahdJH.js +30 -0
  53. package/build/server/chunks/entries/endpoints/api/plugins/apply/{_server.ts.js-BNEUWbaf.js → _server.ts.js-NZ9IorXC.js} +5 -56
  54. package/build/server/chunks/entries/endpoints/api/plugins/host-bounce/_server.ts.js-ELTA8Cv_.js +49 -0
  55. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-CqyKA9g2.js → _server.ts.js-C0x68iMD.js} +3 -3
  56. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-yu695YoE.js → _server.ts.js-DzdGKZdV.js} +3 -3
  57. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-BhDAvM6y.js → _server.ts.js-BC1jb3zy.js} +3 -3
  58. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-BRUgPrJ2.js → _server.ts.js-BE9XJyhN.js} +3 -3
  59. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-C7VJ2G4_.js → _server.ts.js-CWlGtOu8.js} +3 -3
  60. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BH5BRA_d.js → _server.ts.js-CgcggNrH.js} +3 -3
  61. package/build/server/chunks/entries/pages/{_error.svelte.js-Cz-l6MbQ.js → _error.svelte.js-5nTeAv_j.js} +3 -3
  62. package/build/server/chunks/entries/pages/{_page.server.ts.js-CityLNBO.js → _page.server.ts.js-CbzURHkB.js} +2 -2
  63. package/build/server/chunks/entries/pages/{_page.svelte.js-J7dfR5ON.js → _page.svelte.js-DhwtRb8h.js} +135 -21
  64. package/build/server/chunks/{handler-Ctb3OEZ3.js → handler-Bx0HQRi_.js} +3 -3
  65. package/build/server/chunks/{index.js-DZ5R_e-K.js → index.js-DlqGbs2e.js} +2 -2
  66. package/build/server/chunks/{manifest.js-D3cyG_zP.js → manifest.js-C5Epl_0n.js} +59 -38
  67. package/build/server/chunks/nodes/{0.js-CedNgbP9.js → 0.js-zSkx80Fq.js} +3 -3
  68. package/build/server/chunks/nodes/1.js-BBFJCoA_.js +9 -0
  69. package/build/server/chunks/nodes/{2.js-B5xHvNNG.js → 2.js-rGsgHmCd.js} +6 -6
  70. package/package.json +1 -1
  71. package/template/.dsi/prompts.sqlite +0 -0
  72. package/template/.dsi/prompts.sqlite-shm +0 -0
  73. package/template/.dsi/prompts.sqlite-wal +0 -0
  74. package/template/.dsi/resources/plugins-reff.md +7 -6
  75. package/.agents/skills/dsi-thin/SKILL.md +0 -140
  76. package/.agents/skills/dsi-thin/references/ADR-0019-snapshot.md +0 -363
  77. package/.agents/skills/dsi-thin/references/authority-adr.md +0 -28
  78. package/.agents/skills/dsi-thin/references/input-contract.md +0 -42
  79. package/.agents/skills/dsi-thin/references/proven-gates.md +0 -61
  80. package/.agents/skills/dsi-thin/references/two-lane-contract.md +0 -53
  81. package/build/client/_app/immutable/assets/2.tyWDc_pW.css +0 -1
  82. package/build/client/_app/immutable/chunks/DlCR4rv7.js +0 -1
  83. package/build/client/_app/immutable/chunks/syBMXJiJ.js +0 -1
  84. package/build/client/_app/immutable/entry/start.DPtsd8of.js +0 -1
  85. package/build/server/chunks/nodes/1.js-BJtXg-yj.js +0 -9
  86. /package/build/client/_app/immutable/nodes/{0.DJ0pyst0.js → 0.Jl8y_yU6.js} +0 -0
@@ -0,0 +1,25 @@
1
+ import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
2
+ import '../../../../../chunks/shared.js-HQ0rfhm4.js';
3
+ import '../../../../../chunks/uneval.js-BJ9Qq2SF.js';
4
+
5
+ //#region src/routes/api/floor/mode/+server.ts
6
+ /**
7
+ * GET /api/floor/mode — which floor is this? (dev gate for the RestartButton)
8
+ *
9
+ * The launcher stamps DSI_DEV=1 (+ DSI_DEV_MODE) into the server env at
10
+ * launch (bin/lib/dev-mode.mjs); the Restart Verb (ADR 2026-10-12) only
11
+ * makes sense on such a floor, so the button asks this route once on
12
+ * mount and stays hidden on build floors. Read-only, no auth surface:
13
+ * it reveals nothing but the floor's own mode.
14
+ */
15
+ var GET = async () => {
16
+ const dev = process.env.DSI_DEV === "1";
17
+ const mode = dev ? process.env.DSI_DEV_MODE ?? "dev" : "build";
18
+ return json({
19
+ dev,
20
+ mode
21
+ });
22
+ };
23
+
24
+ export { GET };
25
+ //# sourceMappingURL=_server.ts.js-CzBvebv2.js.map
@@ -0,0 +1,30 @@
1
+ import { s as spawnRestartChain } from '../../../../../chunks/restart-chain.js-KZO2ISmM.js';
2
+ import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
+ import 'node:fs';
4
+ import 'node:path';
5
+ import 'node:child_process';
6
+ import '../../../../../chunks/shared.js-HQ0rfhm4.js';
7
+ import '../../../../../chunks/uneval.js-BJ9Qq2SF.js';
8
+
9
+ //#region src/routes/api/floor/restart/+server.ts
10
+ /**
11
+ * POST /api/floor/restart — the Restart Verb (ADR 2026-10-12, D1).
12
+ *
13
+ * Delegates to the SAME detached chain plugin-apply uses: answer
14
+ * { ok, restarting } FIRST, then the chain kills and re-serves the floor
15
+ * in the same mode (W3.5 mode fidelity). No body, no engine work — this
16
+ * route exists so the verb does not piggyback on plugin apply.
17
+ */
18
+ var POST = async () => {
19
+ if (!spawnRestartChain()) return json({
20
+ ok: false,
21
+ error: "restart chain could not spawn (missing bin)"
22
+ }, { status: 500 });
23
+ return json({
24
+ ok: true,
25
+ restarting: true
26
+ });
27
+ };
28
+
29
+ export { POST };
30
+ //# sourceMappingURL=_server.ts.js-DKsahdJH.js.map
@@ -1,65 +1,14 @@
1
+ import { s as spawnRestartChain } from '../../../../../chunks/restart-chain.js-KZO2ISmM.js';
1
2
  import { g as getRackEngine, R as RackEngineMissingError, a as RackEngineFailedError } from '../../../../../chunks/engine.js-1gYqtdBP.js';
2
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
- import { existsSync, mkdirSync, appendFileSync, openSync, closeSync } from 'node:fs';
4
- import { join, dirname } from 'node:path';
5
- import { spawn } from 'node:child_process';
4
+ import 'node:fs';
5
+ import 'node:path';
6
+ import 'node:child_process';
6
7
  import 'node:os';
7
8
  import 'node:util';
8
9
  import '../../../../../chunks/shared.js-HQ0rfhm4.js';
9
10
  import '../../../../../chunks/uneval.js-BJ9Qq2SF.js';
10
11
 
11
- //#region src/lib/server/plugins/restart-chain.ts
12
- /**
13
- * plugin-rack — the detached restart-chain spawn (ADR D5). The apply route
14
- * calls this AFTER the engine's dsh work is done: the chain is the
15
- * RESTART-ONLY half (killOrphans + dsi dsh --sync: token re-sync + re-serve),
16
- * spawned detached + unref so the HTTP response comes home before the floor
17
- * goes down. The install+restart one-shot CLI path lives in bin/dsi.mjs
18
- * (Wave 4); the route only ever needs the bounce.
19
- */
20
- function dsiBinPath() {
21
- return process.env.DSI_BIN || join(process.cwd(), "bin", "dsi.mjs");
22
- }
23
- /** Where the detached chain's stdout/stderr land (RCA 2026-09-27): a
24
- * bounce that dies at preflight used to vanish with stdio 'ignore'. The
25
- * log is cwd-relative like dsiBinPath (the DSI checkout's tmp/, which
26
- * .gitignore's *.log already covers); DSI_BOUNCE_LOG overrides. */
27
- function bounceLogPath() {
28
- return process.env.DSI_BOUNCE_LOG || join(process.cwd(), "tmp", "bounce.log");
29
- }
30
- var defaultSpawner = (node, bin, args) => {
31
- const log = bounceLogPath();
32
- mkdirSync(dirname(log), { recursive: true });
33
- appendFileSync(log, "[" + (/* @__PURE__ */ new Date()).toISOString() + "] bounce spawn: dsi " + bin.split("/").slice(-2).join("/") + " " + args.join(" ") + "\n");
34
- const out = openSync(log, "a");
35
- try {
36
- spawn(node, [bin, ...args], {
37
- detached: true,
38
- stdio: [
39
- "ignore",
40
- out,
41
- out
42
- ]
43
- }).unref();
44
- } finally {
45
- closeSync(out);
46
- }
47
- };
48
- var spawner = defaultSpawner;
49
- /** @returns false when the bin is missing (route answers honestly; the
50
- * operator restarts by hand — never a half-truth 200). When the serving
51
- * floor is a DEV floor (DSI_DEV=1, set by startDsiDevServer), the chain
52
- * re-serves --dev too (RCA 2026-09-27: a dev pair bounced into build mode
53
- * left the browser staring at 5175's corpse). */
54
- function spawnRestartChain() {
55
- const bin = dsiBinPath();
56
- if (!existsSync(bin)) return false;
57
- const args = ["dsh", "--plugin-restart"];
58
- if (process.env.DSI_DEV === "1") args.push("--dev");
59
- spawner(process.execPath, bin, args);
60
- return true;
61
- }
62
- //#endregion
63
12
  //#region src/routes/api/plugins/apply/+server.ts
64
13
  /**
65
14
  * api-plugins — POST /api/plugins/apply
@@ -122,4 +71,4 @@ var POST = async ({ request }) => {
122
71
  };
123
72
 
124
73
  export { POST };
125
- //# sourceMappingURL=_server.ts.js-BNEUWbaf.js.map
74
+ //# sourceMappingURL=_server.ts.js-NZ9IorXC.js.map
@@ -0,0 +1,49 @@
1
+ import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
2
+ import '../../../../../chunks/shared.js-HQ0rfhm4.js';
3
+ import '../../../../../chunks/uneval.js-BJ9Qq2SF.js';
4
+
5
+ //#region src/routes/api/plugins/host-bounce/+server.ts
6
+ /**
7
+ * POST /api/plugins/host-bounce — the Host-Level Bounce verb (ADR-0025, D1).
8
+ *
9
+ * The plugin-restart chain, after resolveBounceMode resolves in-process,
10
+ * POSTs here INSTEAD of sweeping orphans: this route calls the embedded
11
+ * host's bounce verb — stop the DSH host, wait for the port, re-boot
12
+ * in-place — and the vite process NEVER dies. The route AWAITS the bounce
13
+ * and answers with the typed result so the chain can decide the fallback
14
+ * (D3): 200 ok = sweep skipped; 409 (no handle / bounce failed) = the
15
+ * chain falls back to today's whole-floor sweep.
16
+ *
17
+ * Localhost-only: the verb is a process-control surface for the floor's
18
+ * own chain, not for the network (guarded via getClientAddress).
19
+ */
20
+ function bounceVerb() {
21
+ const g = globalThis.__dshHost;
22
+ const p = process.__DSH_HOST__;
23
+ const bounce = g?.bounce ?? p?.bounce;
24
+ return typeof bounce === "function" ? bounce : null;
25
+ }
26
+ var POST = async ({ getClientAddress }) => {
27
+ const addr = getClientAddress();
28
+ if (!(addr === "127.0.0.1" || addr === "::1" || addr === "::ffff:127.0.0.1")) return json({
29
+ ok: false,
30
+ error: "host-bounce is localhost-only"
31
+ }, { status: 403 });
32
+ const bounce = bounceVerb();
33
+ if (bounce === null) return json({
34
+ ok: false,
35
+ error: "no bounce verb (host not embedded or runCli mode) — fall back to the sweep"
36
+ }, { status: 409 });
37
+ const result = await bounce();
38
+ if (!result.ok) return json({
39
+ ok: false,
40
+ error: result.reason ?? "bounce failed"
41
+ }, { status: 409 });
42
+ return json({
43
+ ok: true,
44
+ bounced: true
45
+ });
46
+ };
47
+
48
+ export { POST };
49
+ //# sourceMappingURL=_server.ts.js-ELTA8Cv_.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { g as gitGateEnabled, i as isInsideRoot } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { g as gitGateEnabled, i as isInsideRoot } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import { promises } from 'node:fs';
5
5
  import * as nodePath from 'node:path';
@@ -108,4 +108,4 @@ var POST = async ({ request }) => {
108
108
  };
109
109
 
110
110
  export { POST };
111
- //# sourceMappingURL=_server.ts.js-CqyKA9g2.js.map
111
+ //# sourceMappingURL=_server.ts.js-C0x68iMD.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { g as gitGateEnabled, i as isInsideRoot, a as gitStatus, p as parsePorcelainStatus } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { g as gitGateEnabled, i as isInsideRoot, a as gitStatus, p as parsePorcelainStatus } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import { watch } from 'node:fs';
5
5
  import { join } from 'node:path';
@@ -312,4 +312,4 @@ var GET = async ({ url, request }) => {
312
312
  };
313
313
 
314
314
  export { GET };
315
- //# sourceMappingURL=_server.ts.js-yu695YoE.js.map
315
+ //# sourceMappingURL=_server.ts.js-DzdGKZdV.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { r as resolveEnclosingRepo, i as isInsideRoot, b as gitFileHead, G as GitUnavailableError } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { r as resolveEnclosingRepo, i as isInsideRoot, b as gitFileHead, G as GitUnavailableError } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import '../../../../../chunks/config.js-B0w1-uCA.js';
5
5
  import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
@@ -77,4 +77,4 @@ var GET = async ({ url }) => {
77
77
  };
78
78
 
79
79
  export { GET };
80
- //# sourceMappingURL=_server.ts.js-BhDAvM6y.js.map
80
+ //# sourceMappingURL=_server.ts.js-BC1jb3zy.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { d as detectRepos } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { d as detectRepos } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import '../../../../../chunks/config.js-B0w1-uCA.js';
5
5
  import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
@@ -65,4 +65,4 @@ var GET = async ({ url }) => {
65
65
  };
66
66
 
67
67
  export { GET };
68
- //# sourceMappingURL=_server.ts.js-BRUgPrJ2.js.map
68
+ //# sourceMappingURL=_server.ts.js-BE9XJyhN.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { i as isInsideRoot, a as gitStatus, G as GitUnavailableError } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { i as isInsideRoot, a as gitStatus, G as GitUnavailableError } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import '../../../../../chunks/config.js-B0w1-uCA.js';
5
5
  import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
@@ -70,4 +70,4 @@ var GET = async ({ url }) => {
70
70
  };
71
71
 
72
72
  export { GET };
73
- //# sourceMappingURL=_server.ts.js-C7VJ2G4_.js.map
73
+ //# sourceMappingURL=_server.ts.js-CWlGtOu8.js.map
@@ -1,5 +1,5 @@
1
- import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DRtqPR_j.js';
2
- import { g as gitGateEnabled } from '../../../../../chunks/git-probe.js-Daf6r7Z9.js';
1
+ import { s as statusFor, m as mapRpcFailure } from '../../../../../chunks/dsh-connection.js-DvncrWM4.js';
2
+ import { g as gitGateEnabled } from '../../../../../chunks/git-probe.js-S9w9gGXE.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import '../../../../../chunks/config.js-B0w1-uCA.js';
5
5
  import '../../../../../chunks/insight-config.js-CA-iT3lB.js';
@@ -52,4 +52,4 @@ var GET = async ({ url }) => {
52
52
  };
53
53
 
54
54
  export { GET };
55
- //# sourceMappingURL=_server.ts.js-BH5BRA_d.js.map
55
+ //# sourceMappingURL=_server.ts.js-CgcggNrH.js.map
@@ -1,9 +1,9 @@
1
1
  import { V as head, W as escape_html, M as derived } from '../../chunks/server.js-DqHGsQU2.js';
2
- import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-BFJMxIOB.js';
2
+ import { t, p as page, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, u as unexpectederror1, b as backtoworkspace2 } from '../../chunks/state.js-5SpXEMQf.js';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
4
  import '../../chunks/index-server.js-CV2lq-ha.js';
5
5
  import '../../chunks/shared.js-HQ0rfhm4.js';
6
- import '../../chunks/internal2.js-CFvE_2qT.js';
6
+ import '../../chunks/internal2.js-Uh9eeZMM.js';
7
7
  import '../../chunks/exports.js-DH_tjtdv.js';
8
8
  import '../../chunks/config.js-B0w1-uCA.js';
9
9
  import '../../chunks/runtime.js-CCJi3XaY.js';
@@ -41,4 +41,4 @@ function _error($$renderer, $$props) {
41
41
  }
42
42
 
43
43
  export { _error as default };
44
- //# sourceMappingURL=_error.svelte.js-Cz-l6MbQ.js.map
44
+ //# sourceMappingURL=_error.svelte.js-5nTeAv_j.js.map
@@ -1,4 +1,4 @@
1
- import { g as getDshConnection, D as DshRpcError, i as isSubagentRejection } from '../../chunks/dsh-connection.js-DRtqPR_j.js';
1
+ import { g as getDshConnection, D as DshRpcError, i as isSubagentRejection } from '../../chunks/dsh-connection.js-DvncrWM4.js';
2
2
  import { h as historyToEvents, e as eventsToEntries } from '../../chunks/dsh-events.js-B_E1BU9F.js';
3
3
  import { p as permissionFromProjection, f as filterKnobEvents } from '../../chunks/permission-state.js-B7UpAHBv.js';
4
4
  import { i as imageLimitsFromProjection } from '../../chunks/image-limits.js-CUdJ0f7r.js';
@@ -83,4 +83,4 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
83
83
  });
84
84
 
85
85
  export { _page_server_ts as _ };
86
- //# sourceMappingURL=_page.server.ts.js-CityLNBO.js.map
86
+ //# sourceMappingURL=_page.server.ts.js-CbzURHkB.js.map
@@ -8,7 +8,7 @@ import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r
8
8
  import { s as sanitizeWorkspaceProfile, d as dsiKey, t as themePrefs } from '../../chunks/theme-prefs.svelte.js-8CaWz46g.js';
9
9
  import { a as appConfig, p as previewSegments, b as parseTagWords, i as isValidTagWord, s as shouldRecordPrompt, g as getTrigger, t as triggerMode, c as searchKey, d as textPreviewOf } from '../../chunks/app-config.svelte.js-D7wkLUkK.js';
10
10
  import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
11
- import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-BFJMxIOB.js';
11
+ import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-5SpXEMQf.js';
12
12
  import 'yaml';
13
13
  import 'html-to-image';
14
14
  import hljs from 'highlight.js/lib/core';
@@ -20,7 +20,7 @@ import xml from 'highlight.js/lib/languages/xml';
20
20
  import css from 'highlight.js/lib/languages/css';
21
21
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
22
22
  import '../../chunks/shared.js-HQ0rfhm4.js';
23
- import '../../chunks/internal2.js-CFvE_2qT.js';
23
+ import '../../chunks/internal2.js-Uh9eeZMM.js';
24
24
  import '../../chunks/exports.js-DH_tjtdv.js';
25
25
  import '../../chunks/utils.js-CAdNO8Tu.js';
26
26
 
@@ -4792,6 +4792,38 @@ var floorcontrols1 = ((inputs = {}, options = {}) => {
4792
4792
  return en_floorcontrols1();
4793
4793
  });
4794
4794
  //#endregion
4795
+ //#region src/lib/paraglide/messages/floorrestart1.js
4796
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
4797
+ /** @typedef {{}} Floorrestart1Inputs */
4798
+ var en_floorrestart1 = () => {
4799
+ return `Restart floor`;
4800
+ };
4801
+ var zh_floorrestart1 = () => {
4802
+ return `重启楼层`;
4803
+ };
4804
+ var id_floorrestart1 = () => {
4805
+ return `Mulai ulang lantai`;
4806
+ };
4807
+ var es_floorrestart1 = () => {
4808
+ return `Reiniciar el suelo`;
4809
+ };
4810
+ /**
4811
+ * | output |
4812
+ * | --- |
4813
+ * | "Restart floor" |
4814
+ *
4815
+ * @param {Floorrestart1Inputs} inputs
4816
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
4817
+ * @returns {LocalizedString}
4818
+ */
4819
+ var floorrestart1 = ((inputs = {}, options = {}) => {
4820
+ const locale = options.locale ?? getLocale();
4821
+ if (locale === "zh") return zh_floorrestart1();
4822
+ if (locale === "id") return id_floorrestart1();
4823
+ if (locale === "es") return es_floorrestart1();
4824
+ return en_floorrestart1();
4825
+ });
4826
+ //#endregion
4795
4827
  //#region src/lib/paraglide/messages/floorzoom1.js
4796
4828
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
4797
4829
  /** @typedef {{}} Floorzoom1Inputs */
@@ -14353,6 +14385,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
14353
14385
  fixMarkedAnswers: () => fixmarkedanswers2,
14354
14386
  floorCapture: () => floorcapture1,
14355
14387
  floorControls: () => floorcontrols1,
14388
+ floorRestart: () => floorrestart1,
14356
14389
  floorZoom: () => floorzoom1,
14357
14390
  focused: () => focused,
14358
14391
  forkFromTurn: () => forkfromturn2,
@@ -14805,6 +14838,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
14805
14838
  fixMarkedAnswers: () => fixmarkedanswers2,
14806
14839
  floorCapture: () => floorcapture1,
14807
14840
  floorControls: () => floorcontrols1,
14841
+ floorRestart: () => floorrestart1,
14808
14842
  floorZoom: () => floorzoom1,
14809
14843
  focused: () => focused,
14810
14844
  forkFromTurn: () => forkfromturn2,
@@ -15233,6 +15267,16 @@ function Arrow_up($$renderer, $$props) {
15233
15267
  ]));
15234
15268
  }
15235
15269
  //#endregion
15270
+ //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/book-open.svelte
15271
+ function Book_open($$renderer, $$props) {
15272
+ let { $$slots, $$events, ...props } = $$props;
15273
+ Icon($$renderer, spread_props([
15274
+ { name: "book-open" },
15275
+ props,
15276
+ { iconNode: [["path", { "d": "M12 5v16" }], ["path", { "d": "M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z" }]] }
15277
+ ]));
15278
+ }
15279
+ //#endregion
15236
15280
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/bookmark-plus.svelte
15237
15281
  function Bookmark_plus($$renderer, $$props) {
15238
15282
  let { $$slots, $$events, ...props } = $$props;
@@ -17891,7 +17935,7 @@ function ThemeToggle($$renderer, $$props) {
17891
17935
  }
17892
17936
  //#endregion
17893
17937
  //#region package.json
17894
- var version = "0.6.15";
17938
+ var version = "0.6.17";
17895
17939
  var dsh = { "webVersion": "0.2.1-alpha.2" };
17896
17940
  //#endregion
17897
17941
  //#region src/lib/version.ts
@@ -18200,6 +18244,23 @@ function AboutButton($$renderer, $$props) {
18200
18244
  });
18201
18245
  }
18202
18246
  //#endregion
18247
+ //#region src/lib/components/common/layout/RestartButton.svelte
18248
+ function RestartButton($$renderer, $$props) {
18249
+ $$renderer.component(($$renderer) => {
18250
+ /**
18251
+ * RestartButton — the Restart Verb trigger (ADR 2026-10-12): POSTs the
18252
+ * floor restart route, then polls through the blackout (the server may
18253
+ * die before answering) and reloads the page when the floor answers
18254
+ * again. Self-contained like AboutButton: trigger, state, and the
18255
+ * poll/reload travel together; `class` passthrough lets a host layer
18256
+ * its own ink (AppSidebar's rail-collapsed-label).
18257
+ */
18258
+ let { class: passthroughClass = "" } = $$props;
18259
+ $$renderer.push("<!--[-1-->");
18260
+ $$renderer.push(`<!--]-->`);
18261
+ });
18262
+ }
18263
+ //#endregion
18203
18264
  //#region src/lib/components/common/layout/AppSidebarHeader.svelte
18204
18265
  function AppSidebarHeader($$renderer, $$props) {
18205
18266
  /**
@@ -18216,6 +18277,8 @@ function AppSidebarHeader($$renderer, $$props) {
18216
18277
  */
18217
18278
  let { captureContainer = null, onToggleCollapse } = $$props;
18218
18279
  $$renderer.push(`<header data-svelte="AppSidebarHeader" class="rail-header svelte-184i93r">`);
18280
+ RestartButton($$renderer, { class: "rail-collapsed-label" });
18281
+ $$renderer.push(`<!----> `);
18219
18282
  AboutButton($$renderer, {});
18220
18283
  $$renderer.push(`<!----> `);
18221
18284
  AppSidebarHeaderTitle($$renderer);
@@ -18335,6 +18398,8 @@ function AppSidebar($$renderer, $$props) {
18335
18398
  if (collapsed) {
18336
18399
  $$renderer.push("<!--[0-->");
18337
18400
  $$renderer.push(`<div data-svelte="AppSidebar" class="rail-collapsed svelte-113gpvg" data-testid="app-sidebar-collapsed">`);
18401
+ RestartButton($$renderer, { class: "rail-collapsed-label" });
18402
+ $$renderer.push(`<!----> `);
18338
18403
  AboutButton($$renderer, { class: "rail-collapsed-label" });
18339
18404
  $$renderer.push(`<!----> <button type="button" class="stub-expand svelte-113gpvg"${attr("aria-expanded", false)}${attr("aria-label", t(expandsidebar1))}${attr("title", t(expandsidebar1))}>`);
18340
18405
  Panel_left_close($$renderer, {
@@ -24137,8 +24202,8 @@ function PromptBubble($$renderer, $$props) {
24137
24202
  });
24138
24203
  }
24139
24204
  //#endregion
24140
- //#region src/lib/components/message/ContextInjection.svelte
24141
- function ContextInjection($$renderer, $$props) {
24205
+ //#region src/lib/components/message/chips/ContextInjectionChip.svelte
24206
+ function ContextInjectionChip($$renderer, $$props) {
24142
24207
  $$renderer.component(($$renderer) => {
24143
24208
  /**
24144
24209
  * ContextInjection — one harness-injected context message (workspace
@@ -24185,7 +24250,7 @@ function ContextInjection($$renderer, $$props) {
24185
24250
  if (producer === "plugin" || producer === "injected") return name;
24186
24251
  return label;
24187
24252
  });
24188
- $$renderer.push(`<div data-svelte="ContextInjection" class="text-xs" data-testid="context-injection-chip"${attr("data-producer", producer)}${attr("data-open", open)}><span class="inline-flex items-center"><button type="button"${attr("aria-expanded", open)} data-testid="context-injection-toggle"${attr("aria-label", title())}${attr_class(`chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium max-w-full mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer ${open ? "bg-accent-purple/20 text-accent-purple border border-accent-purple/30" : "bg-surface0/10 text-text-secondary border border-text-muted/20 hover:bg-surface0/20 hover:text-text-primary"}`, "svelte-c1qaf4")}>`);
24253
+ $$renderer.push(`<div data-svelte="ContextInjectionChip" class="text-xs" data-testid="context-injection-chip"${attr("data-producer", producer)}${attr("data-open", open)}><span class="inline-flex items-center"><button type="button"${attr("aria-expanded", open)} data-testid="context-injection-toggle"${attr("aria-label", title())}${attr_class(`chip-button inline-flex items-center gap-1 px-1.5 py-0.5 rounded-md text-xs font-mono font-medium max-w-full mx-0.5 my-0.5 align-middle shrink-0 transition-colors select-none cursor-pointer ${open ? "bg-accent-purple/20 text-accent-purple border border-accent-purple/30" : "bg-surface0/10 text-text-secondary border border-text-muted/20 hover:bg-surface0/20 hover:text-text-primary"}`, "svelte-hhkfw6")}>`);
24189
24254
  if (open) {
24190
24255
  $$renderer.push("<!--[0-->");
24191
24256
  Chevron_down($$renderer, { size: 10 });
@@ -24516,10 +24581,16 @@ function AssistantTurn($$renderer, $$props) {
24516
24581
  //#region src/lib/components/message/ToolPeekButton.svelte
24517
24582
  function ToolPeekButton($$renderer, $$props) {
24518
24583
  $$renderer.component(($$renderer) => {
24519
- let { count, active = false} = $$props;
24584
+ let { count, active = false, icon = "wrench"} = $$props;
24520
24585
  $$renderer.push(`<button data-svelte="ToolPeekButton" type="button"${attr("title", t(peektoolcalls2))} data-testid="tool-peek-button"${attr("data-active", active)}${attr("aria-expanded", active)}${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 ${active ? "bg-accent-purple/20 text-accent-purple border border-accent-purple/30" : "bg-surface-alt text-text-secondary border border-surface-border hover:bg-surface-hover hover:text-text-primary"}`, "svelte-1h02qiz")}>`);
24521
- Wrench($$renderer, { size: 10 });
24522
- $$renderer.push(`<!----> <span class="text-[10px]">${escape_html(count)}</span></button>`);
24586
+ if (icon === "context") {
24587
+ $$renderer.push("<!--[0-->");
24588
+ Book_open($$renderer, { size: 10 });
24589
+ } else {
24590
+ $$renderer.push("<!--[-1-->");
24591
+ Wrench($$renderer, { size: 10 });
24592
+ }
24593
+ $$renderer.push(`<!--]--> <span class="text-[10px]">${escape_html(count)}</span></button>`);
24523
24594
  });
24524
24595
  }
24525
24596
  //#endregion
@@ -26248,7 +26319,7 @@ function InlineToolCalls($$renderer, $$props) {
26248
26319
  return;
26249
26320
  }
26250
26321
  }
26251
- let { entries, runKey, openChipId, peekOpen, allEntries, ontoggleChip, ontogglePeek, autoThinkId = null, autoPlanId = null, onFileOpen = void 0 } = $$props;
26322
+ let { entries, runKey, openChipId, peekOpen, allEntries, ontoggleChip, ontogglePeek, autoThinkId = null, autoPlanId = null, onFileOpen = void 0, peekIcon = "wrench" } = $$props;
26252
26323
  /** Effective open of ONE chip: the manual pick, or its auto slot. */
26253
26324
  function chipOpen(entry) {
26254
26325
  if (entry.kind === "assistant-message") return openChipId === `r:${entry.id}` || autoThinkId === entry.id;
@@ -26320,7 +26391,8 @@ function InlineToolCalls($$renderer, $$props) {
26320
26391
  const chipCount = entries.filter(isPeekMember).length;
26321
26392
  ToolPeekButton($$renderer, {
26322
26393
  count: chipCount,
26323
- active: peekOpen});
26394
+ active: peekOpen,
26395
+ icon: peekIcon});
26324
26396
  } else $$renderer.push("<!--[-1-->");
26325
26397
  $$renderer.push(`<!--]--> <!--[-->`);
26326
26398
  const each_array = ensure_array_like(entries);
@@ -26384,7 +26456,7 @@ function InlineToolCalls($$renderer, $$props) {
26384
26456
  });
26385
26457
  } else if (entry.kind === "user-message") {
26386
26458
  $$renderer.push("<!--[7-->");
26387
- ContextInjection($$renderer, {
26459
+ ContextInjectionChip($$renderer, {
26388
26460
  producer: entry.meta,
26389
26461
  text: entry.text,
26390
26462
  name: chipNameOf(entry.meta, entry.metaSource),
@@ -26888,13 +26960,18 @@ function turnProcess(entries, opts) {
26888
26960
  const lastText = runs.findLastIndex((r) => r.kind === "text");
26889
26961
  const hasAnswer = lastText !== -1;
26890
26962
  const escapedReasoning = [];
26963
+ const escapedInjections = [];
26891
26964
  const folded = [];
26892
26965
  for (const run of hasAnswer ? runs.slice(0, lastText) : []) {
26893
26966
  if (run.kind !== "chips") {
26894
26967
  folded.push(run);
26895
26968
  continue;
26896
26969
  }
26897
- for (const e of run.entries) if (e.kind === "assistant-message" && e.reasoning !== void 0 && e.reasoning !== "") escapedReasoning.push(e);
26970
+ for (const e of run.entries) {
26971
+ if (e.kind === "assistant-message" && e.reasoning !== void 0 && e.reasoning !== "") escapedReasoning.push(e);
26972
+ if (e.kind === "unknown-event") escapedInjections.push(e);
26973
+ if (e.kind === "user-message" && e.meta !== void 0) escapedInjections.push(e);
26974
+ }
26898
26975
  folded.push(run);
26899
26976
  }
26900
26977
  const folds = hasAnswer && (opts?.progressiveFold === true || opts?.inFlight !== true);
@@ -26904,6 +26981,7 @@ function turnProcess(entries, opts) {
26904
26981
  subagentCount,
26905
26982
  folded,
26906
26983
  escapedReasoning,
26984
+ escapedInjections,
26907
26985
  trailingTextRuns: hasAnswer ? runs.slice(lastText) : [],
26908
26986
  hasAnswer,
26909
26987
  folds,
@@ -27053,7 +27131,7 @@ function ConversationScrollArea($$renderer, $$props) {
27053
27131
  const each_array_1 = ensure_array_like(group.context);
27054
27132
  for (let $$index = 0, $$length = each_array_1.length; $$index < $$length; $$index++) {
27055
27133
  let ctx = each_array_1[$$index];
27056
- ContextInjection($$renderer, {
27134
+ ContextInjectionChip($$renderer, {
27057
27135
  producer: ctx.meta,
27058
27136
  text: ctx.text,
27059
27137
  name: chipNameOf(ctx.meta, ctx.metaSource),
@@ -27087,7 +27165,7 @@ function ConversationScrollArea($$renderer, $$props) {
27087
27165
  const each_array_2 = ensure_array_like(group.entries);
27088
27166
  for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
27089
27167
  let ctx = each_array_2[$$index_1];
27090
- ContextInjection($$renderer, {
27168
+ ContextInjectionChip($$renderer, {
27091
27169
  producer: ctx.meta,
27092
27170
  text: ctx.text,
27093
27171
  name: chipNameOf(ctx.meta, ctx.metaSource),
@@ -27140,6 +27218,24 @@ function ConversationScrollArea($$renderer, $$props) {
27140
27218
  subagentCount: fold.subagentCount,
27141
27219
  open: openTurns.has(group.key)});
27142
27220
  $$renderer.push(`<!----> `);
27221
+ if (fold.escapedInjections.length > 0 && !openTurns.has(group.key)) {
27222
+ $$renderer.push("<!--[0-->");
27223
+ const escInjKey = "esc-inj:" + group.key;
27224
+ InlineToolCalls($$renderer, {
27225
+ entries: fold.escapedInjections,
27226
+ runKey: escInjKey,
27227
+ openChipId,
27228
+ peekOpen: peekOpenRunKey === escInjKey,
27229
+ allEntries: entries,
27230
+ ontoggleChip: ontogglechip,
27231
+ ontogglePeek: () => ontogglepeek(escInjKey),
27232
+ autoThinkId,
27233
+ autoPlanId,
27234
+ onFileOpen,
27235
+ peekIcon: "context"
27236
+ });
27237
+ } else $$renderer.push("<!--[-1-->");
27238
+ $$renderer.push(`<!--]--> `);
27143
27239
  if (fold.escapedReasoning.length > 0 && !openTurns.has(group.key)) {
27144
27240
  $$renderer.push("<!--[0-->");
27145
27241
  const escKey = "esc:" + group.key;
@@ -27159,10 +27255,28 @@ function ConversationScrollArea($$renderer, $$props) {
27159
27255
  $$renderer.push(`<!--]--> `);
27160
27256
  if (openTurns.has(group.key)) {
27161
27257
  $$renderer.push("<!--[0-->");
27162
- $$renderer.push(`<!--[-->`);
27258
+ if (fold.escapedInjections.length > 0) {
27259
+ $$renderer.push("<!--[0-->");
27260
+ const escInjOpenKey = "esc-inj-open:" + group.key;
27261
+ InlineToolCalls($$renderer, {
27262
+ entries: fold.escapedInjections,
27263
+ runKey: escInjOpenKey,
27264
+ openChipId,
27265
+ peekOpen: peekOpenRunKey === escInjOpenKey,
27266
+ allEntries: entries,
27267
+ ontoggleChip: ontogglechip,
27268
+ ontogglePeek: () => ontogglepeek(escInjOpenKey),
27269
+ autoThinkId,
27270
+ autoPlanId,
27271
+ onFileOpen,
27272
+ peekIcon: "context"
27273
+ });
27274
+ } else $$renderer.push("<!--[-1-->");
27275
+ $$renderer.push(`<!--]--> <!--[-->`);
27163
27276
  const each_array_3 = ensure_array_like(fold.folded);
27164
27277
  for (let $$index_2 = 0, $$length = each_array_3.length; $$index_2 < $$length; $$index_2++) {
27165
27278
  let run = each_array_3[$$index_2];
27279
+ const workEntries = run.kind === "chips" ? run.entries.filter((e) => !(e.kind === "user-message" && e.meta !== void 0) && e.kind !== "unknown-event") : run.entries;
27166
27280
  if (run.kind === "text") {
27167
27281
  $$renderer.push("<!--[0-->");
27168
27282
  MarkdownContent($$renderer, {
@@ -27170,10 +27284,10 @@ function ConversationScrollArea($$renderer, $$props) {
27170
27284
  hideToggle: true,
27171
27285
  onFileLink
27172
27286
  });
27173
- } else {
27174
- $$renderer.push("<!--[-1-->");
27287
+ } else if (workEntries.length > 0) {
27288
+ $$renderer.push("<!--[1-->");
27175
27289
  InlineToolCalls($$renderer, {
27176
- entries: run.entries,
27290
+ entries: workEntries,
27177
27291
  runKey: run.key,
27178
27292
  openChipId,
27179
27293
  peekOpen: peekOpenRunKey === run.key,
@@ -27184,7 +27298,7 @@ function ConversationScrollArea($$renderer, $$props) {
27184
27298
  autoPlanId,
27185
27299
  onFileOpen
27186
27300
  });
27187
- }
27301
+ } else $$renderer.push("<!--[-1-->");
27188
27302
  $$renderer.push(`<!--]-->`);
27189
27303
  }
27190
27304
  $$renderer.push(`<!--]-->`);
@@ -33449,4 +33563,4 @@ function _page($$renderer, $$props) {
33449
33563
  }
33450
33564
 
33451
33565
  export { _page as default };
33452
- //# sourceMappingURL=_page.svelte.js-J7dfR5ON.js.map
33566
+ //# sourceMappingURL=_page.svelte.js-DhwtRb8h.js.map