@deepseek-insight/dsi 0.6.8 → 0.6.10

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 (45) hide show
  1. package/.agents/skills/dsi-plugin-rack/rack.d.mts +35 -0
  2. package/.agents/skills/dsi-plugin-rack/rack.mjs +168 -26
  3. package/build/client/_app/immutable/assets/0.CRU0GiZX.css +2 -0
  4. package/build/client/_app/immutable/assets/{2.BGqV97Jd.css → 2.BuaCdYrs.css} +1 -1
  5. package/build/client/_app/immutable/chunks/B7sQH3rV.js +1 -0
  6. package/build/client/_app/immutable/chunks/{CZajmeaf.js → Dg3LIDOQ.js} +1 -1
  7. package/build/client/_app/immutable/chunks/{ipGk-mTd.js → XOquLDe4.js} +2 -2
  8. package/build/client/_app/immutable/chunks/ivdzpE2c.js +1 -0
  9. package/build/client/_app/immutable/entry/{app.DEAFrkJ-.js → app.BTSQLfJD.js} +2 -2
  10. package/build/client/_app/immutable/entry/start.DMTgnn1w.js +1 -0
  11. package/build/client/_app/immutable/nodes/{1.BM2g39Jr.js → 1.Bj5dhQm8.js} +1 -1
  12. package/build/client/_app/immutable/nodes/2.D2grr0LI.js +337 -0
  13. package/build/client/_app/version.json +1 -1
  14. package/build/handler.js +4 -4
  15. package/build/index.js +4 -4
  16. package/build/server/chunks/chunks/{engine.js-CrdWRSwf.js → engine.js-1gYqtdBP.js} +17 -2
  17. package/build/server/chunks/chunks/{internal.js-DrVZK6tf.js → internal.js-CiymEM9G.js} +2 -2
  18. package/build/server/chunks/chunks/{state.js-C_zC7v8L.js → state.js-Dve2UFKe.js} +2 -2
  19. package/build/server/chunks/entries/endpoints/api/plugins/apply/{_server.ts.js-CpO--Jwf.js → _server.ts.js-BNEUWbaf.js} +2 -2
  20. package/build/server/chunks/entries/endpoints/api/plugins/reload/{_server.ts.js-BACFXWMj.js → _server.ts.js-Ct28d7_t.js} +2 -2
  21. package/build/server/chunks/entries/endpoints/api/plugins/snapshot/{_server.ts.js-BJg0hLlC.js → _server.ts.js-DswGIO4S.js} +2 -2
  22. package/build/server/chunks/entries/pages/{_error.svelte.js-BLQNkziv.js → _error.svelte.js-DUc94aLg.js} +3 -3
  23. package/build/server/chunks/entries/pages/{_page.svelte.js-U6RBvo4b.js → _page.svelte.js-CGKKJjvq.js} +182 -9
  24. package/build/server/chunks/{handler-B_uG0xBL.js → handler-DndMFIB-.js} +3 -3
  25. package/build/server/chunks/{index.js-CFMhxqkR.js → index.js-XCtYQ9iw.js} +2 -2
  26. package/build/server/chunks/{manifest.js-rflC1wxY.js → manifest.js-B6QH7eda.js} +8 -8
  27. package/build/server/chunks/nodes/{0.js-PpYt5eF3.js → 0.js-B0560RI0.js} +3 -3
  28. package/build/server/chunks/nodes/1.js-DgkiAL8m.js +9 -0
  29. package/build/server/chunks/nodes/{2.js-Bkg7QRk0.js → 2.js-DiZQ86Is.js} +4 -4
  30. package/package.json +1 -1
  31. package/skills/dsi-add-plugin/SKILL.md +53 -0
  32. package/skills/dsi-add-plugin/references/allowbuilds-template.md +55 -0
  33. package/skills/dsi-add-plugin/references/checklist.md +98 -0
  34. package/skills/dsi-add-plugin/references/verification.md +67 -0
  35. package/skills/dsi-rca/SKILL.md +103 -0
  36. package/skills/dsi-rca/references/mermaid-rules.md +46 -0
  37. package/skills/dsi-rca/references/rca-template.md +88 -0
  38. package/template/.dsi/resources/plugins-reff.md +5 -1
  39. package/build/client/_app/immutable/assets/0.Cz4GQ8ND.css +0 -2
  40. package/build/client/_app/immutable/chunks/CFUMLnMa.js +0 -1
  41. package/build/client/_app/immutable/chunks/CZ6XrzVa.js +0 -1
  42. package/build/client/_app/immutable/entry/start.B_n-sOmN.js +0 -1
  43. package/build/client/_app/immutable/nodes/2.BmfcXZrQ.js +0 -332
  44. package/build/server/chunks/nodes/1.js-BQCqfRee.js +0 -9
  45. /package/build/client/_app/immutable/nodes/{0.CKr_pvH3.js → 0.k1Ikzbp6.js} +0 -0
@@ -1 +1 @@
1
- {"version":"1791201535377"}
1
+ {"version":"1791336046986"}
package/build/handler.js CHANGED
@@ -2,9 +2,9 @@ import './shims.js';
2
2
  import 'node:fs';
3
3
  import 'node:path';
4
4
  import 'node:process';
5
- export { h as handler } from './server/chunks/handler-B_uG0xBL.js';
6
- import './server/chunks/index.js-CFMhxqkR.js';
7
- import './server/chunks/manifest.js-rflC1wxY.js';
5
+ export { h as handler } from './server/chunks/handler-DndMFIB-.js';
6
+ import './server/chunks/index.js-XCtYQ9iw.js';
7
+ import './server/chunks/manifest.js-B6QH7eda.js';
8
8
  import './env.js';
9
9
  import 'node:buffer';
10
10
  import 'node:crypto';
@@ -16,7 +16,7 @@ import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
16
16
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
17
17
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
18
18
  import 'node:url';
19
- import './server/chunks/chunks/internal.js-DrVZK6tf.js';
19
+ import './server/chunks/chunks/internal.js-CiymEM9G.js';
20
20
  import './server/chunks/chunks/server.js-11-pxAWV.js';
21
21
  import './server/chunks/chunks/internal2.js-BcS47nI-.js';
22
22
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
package/build/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import http from 'node:http';
2
2
  import fs__default from 'node:fs';
3
3
  import process from 'node:process';
4
- import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-B_uG0xBL.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DndMFIB-.js';
5
5
  import { env, timeout_env } from './env.js';
6
6
  import { rm } from 'node:fs/promises';
7
7
  import './shims.js';
@@ -14,12 +14,12 @@ import 'node:stream';
14
14
  import './server/chunks/chunks/shared.js-HQ0rfhm4.js';
15
15
  import './server/chunks/chunks/uneval.js-BJ9Qq2SF.js';
16
16
  import './server/chunks/chunks/utils.js-CAdNO8Tu.js';
17
- import './server/chunks/index.js-CFMhxqkR.js';
18
- import './server/chunks/chunks/internal.js-DrVZK6tf.js';
17
+ import './server/chunks/index.js-XCtYQ9iw.js';
18
+ import './server/chunks/chunks/internal.js-CiymEM9G.js';
19
19
  import './server/chunks/chunks/server.js-11-pxAWV.js';
20
20
  import './server/chunks/chunks/internal2.js-BcS47nI-.js';
21
21
  import './server/chunks/chunks/exports.js-DH_tjtdv.js';
22
- import './server/chunks/manifest.js-rflC1wxY.js';
22
+ import './server/chunks/manifest.js-B6QH7eda.js';
23
23
  import 'node:url';
24
24
 
25
25
  const path = env('SOCKET_PATH', false);
@@ -24,6 +24,19 @@ var RackEngineFailedError = class extends Error {
24
24
  //#endregion
25
25
  //#region src/lib/server/plugins/engine.ts
26
26
  var execFileP = promisify(execFile);
27
+ /** The Plugin Garden (ADR 2026-10-07): owned plugins enumerate from the
28
+ * checkout's plugins/ directory. Dev runs from the repo root; override
29
+ * with RACK_GARDEN_PATH / RACK_GARDEN_REPO when the checkout lives elsewhere. */
30
+ function gardenArgs() {
31
+ const gardenPath = process.env.RACK_GARDEN_PATH ?? join(process.cwd(), "plugins");
32
+ const gardenRepo = process.env.RACK_GARDEN_REPO ?? "https://github.com/mitmplay/deepseek-insight";
33
+ return existsSync(gardenPath) ? [
34
+ "--garden",
35
+ gardenPath,
36
+ "--garden-repo",
37
+ gardenRepo
38
+ ] : [];
39
+ }
27
40
  /** Refresh is a local parse (no network harvest like the shelf) — one
28
41
  * ceiling serves every verb. */
29
42
  var ENGINE_TIMEOUT_MS = 12e4;
@@ -58,7 +71,7 @@ async function run(args, timeoutMs) {
58
71
  } catch {
59
72
  throw new RackEngineFailedError("rack engine emitted non-JSON output", null);
60
73
  }
61
- if (payload.v !== 1) throw new RackEngineFailedError("rack engine wire version mismatch: v=" + payload.v, payload);
74
+ if (payload.v !== 2) throw new RackEngineFailedError("rack engine wire version mismatch: v=" + payload.v + " (expected 2)", payload);
62
75
  return payload;
63
76
  }
64
77
  function getRackEngine() {
@@ -71,6 +84,7 @@ function getRackEngine() {
71
84
  const p = await run([
72
85
  "refresh",
73
86
  ...reload ? ["--reload"] : [],
87
+ ...gardenArgs(),
74
88
  ...extraArgs
75
89
  ]);
76
90
  if (!p.snapshot) throw new RackEngineFailedError("rack refresh returned no snapshot", p);
@@ -85,6 +99,7 @@ function getRackEngine() {
85
99
  "apply",
86
100
  action,
87
101
  ...targets,
102
+ ...gardenArgs(),
88
103
  ...extraArgs
89
104
  ]);
90
105
  if (!p.results) throw new RackEngineFailedError("rack apply returned no results", p);
@@ -94,4 +109,4 @@ function getRackEngine() {
94
109
  }
95
110
 
96
111
  export { RackEngineMissingError as R, RackEngineFailedError as a, getRackEngine as g };
97
- //# sourceMappingURL=engine.js-CrdWRSwf.js.map
112
+ //# sourceMappingURL=engine.js-1gYqtdBP.js.map
@@ -722,7 +722,7 @@ var options = {
722
722
  app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"%paraglide.locale%\">\n <head>\n <meta charset=\"utf-8\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.svg\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"tap\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
723
723
  error: error_template_default
724
724
  },
725
- version_hash: "nn29yw"
725
+ version_hash: "iuka2g"
726
726
  };
727
727
  async function get_hooks() {
728
728
  let handle;
@@ -745,4 +745,4 @@ async function get_hooks() {
745
745
  }
746
746
 
747
747
  export { __commonJSMin as _, set_public_env as a, set_read_implementation as b, onDestroy as c, __exportAll as d, get_hooks as g, index_server_exports as i, options as o, public_env as p, read_implementation as r, set_private_env as s };
748
- //# sourceMappingURL=internal.js-DrVZK6tf.js.map
748
+ //# sourceMappingURL=internal.js-CiymEM9G.js.map
@@ -1,4 +1,4 @@
1
- import { i as index_server_exports } from './internal.js-DrVZK6tf.js';
1
+ import { i as index_server_exports } from './internal.js-CiymEM9G.js';
2
2
  import './shared.js-HQ0rfhm4.js';
3
3
  import './exports.js-DH_tjtdv.js';
4
4
  import { U as snapshot, J as getContext, G as noop } from './server.js-11-pxAWV.js';
@@ -303,4 +303,4 @@ var page = {
303
303
  };
304
304
 
305
305
  export { afterNavigate as a, backtoworkspace2 as b, replaceState as c, dshunreachable1 as d, currentLocale as e, page as p, reapednote1 as r, sessionnotfound2 as s, t, unexpectederror1 as u };
306
- //# sourceMappingURL=state.js-C_zC7v8L.js.map
306
+ //# sourceMappingURL=state.js-Dve2UFKe.js.map
@@ -1,4 +1,4 @@
1
- import { g as getRackEngine, R as RackEngineMissingError, a as RackEngineFailedError } from '../../../../../chunks/engine.js-CrdWRSwf.js';
1
+ import { g as getRackEngine, R as RackEngineMissingError, a as RackEngineFailedError } from '../../../../../chunks/engine.js-1gYqtdBP.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import { existsSync, mkdirSync, appendFileSync, openSync, closeSync } from 'node:fs';
4
4
  import { join, dirname } from 'node:path';
@@ -122,4 +122,4 @@ var POST = async ({ request }) => {
122
122
  };
123
123
 
124
124
  export { POST };
125
- //# sourceMappingURL=_server.ts.js-CpO--Jwf.js.map
125
+ //# sourceMappingURL=_server.ts.js-BNEUWbaf.js.map
@@ -1,4 +1,4 @@
1
- import { g as getRackEngine } from '../../../../../chunks/engine.js-CrdWRSwf.js';
1
+ import { g as getRackEngine } from '../../../../../chunks/engine.js-1gYqtdBP.js';
2
2
  import { f as fetchRackStars } from '../../../../../chunks/stars.js-C41Y0FsW.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import 'node:fs';
@@ -35,4 +35,4 @@ var POST = async () => {
35
35
  };
36
36
 
37
37
  export { POST };
38
- //# sourceMappingURL=_server.ts.js-BACFXWMj.js.map
38
+ //# sourceMappingURL=_server.ts.js-Ct28d7_t.js.map
@@ -1,4 +1,4 @@
1
- import { g as getRackEngine } from '../../../../../chunks/engine.js-CrdWRSwf.js';
1
+ import { g as getRackEngine } from '../../../../../chunks/engine.js-1gYqtdBP.js';
2
2
  import { f as fetchRackStars } from '../../../../../chunks/stars.js-C41Y0FsW.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import 'node:fs';
@@ -37,4 +37,4 @@ var GET = async () => {
37
37
  };
38
38
 
39
39
  export { GET };
40
- //# sourceMappingURL=_server.ts.js-BJg0hLlC.js.map
40
+ //# sourceMappingURL=_server.ts.js-DswGIO4S.js.map
@@ -1,7 +1,7 @@
1
1
  import { V as head, W as escape_html, y as derived } from '../../chunks/server.js-11-pxAWV.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-C_zC7v8L.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-Dve2UFKe.js';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
- import '../../chunks/internal.js-DrVZK6tf.js';
4
+ import '../../chunks/internal.js-CiymEM9G.js';
5
5
  import '../../chunks/shared.js-HQ0rfhm4.js';
6
6
  import '../../chunks/exports.js-DH_tjtdv.js';
7
7
  import '../../chunks/config.js-B0w1-uCA.js';
@@ -40,4 +40,4 @@ function _error($$renderer, $$props) {
40
40
  }
41
41
 
42
42
  export { _error as default };
43
- //# sourceMappingURL=_error.svelte.js-BLQNkziv.js.map
43
+ //# sourceMappingURL=_error.svelte.js-DUc94aLg.js.map
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-DrVZK6tf.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-CiymEM9G.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
4
  import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-D9tSYE7f.js';
@@ -7,7 +7,7 @@ import { b as applyKnobEvent, E as EMPTY_KNOBS, r as resolvePermission, l as loc
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-BW7TwbBy.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-C_zC7v8L.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-Dve2UFKe.js';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -7798,6 +7798,38 @@ var pluginrackby2 = ((inputs = {}, options = {}) => {
7798
7798
  return en_pluginrackby2();
7799
7799
  });
7800
7800
  //#endregion
7801
+ //#region src/lib/paraglide/messages/pluginrackcollapseall3.js
7802
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7803
+ /** @typedef {{}} Pluginrackcollapseall3Inputs */
7804
+ var en_pluginrackcollapseall3 = () => {
7805
+ return `Collapse all`;
7806
+ };
7807
+ var zh_pluginrackcollapseall3 = () => {
7808
+ return `全部折叠`;
7809
+ };
7810
+ var id_pluginrackcollapseall3 = () => {
7811
+ return `Lipat semua`;
7812
+ };
7813
+ var es_pluginrackcollapseall3 = () => {
7814
+ return `Plegar todo`;
7815
+ };
7816
+ /**
7817
+ * | output |
7818
+ * | --- |
7819
+ * | "Collapse all" |
7820
+ *
7821
+ * @param {Pluginrackcollapseall3Inputs} inputs
7822
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
7823
+ * @returns {LocalizedString}
7824
+ */
7825
+ var pluginrackcollapseall3 = ((inputs = {}, options = {}) => {
7826
+ const locale = options.locale ?? getLocale();
7827
+ if (locale === "zh") return zh_pluginrackcollapseall3();
7828
+ if (locale === "id") return id_pluginrackcollapseall3();
7829
+ if (locale === "es") return es_pluginrackcollapseall3();
7830
+ return en_pluginrackcollapseall3();
7831
+ });
7832
+ //#endregion
7801
7833
  //#region src/lib/paraglide/messages/pluginrackempty2.js
7802
7834
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7803
7835
  /** @typedef {{}} Pluginrackempty2Inputs */
@@ -7830,6 +7862,102 @@ var pluginrackempty2 = ((inputs = {}, options = {}) => {
7830
7862
  return en_pluginrackempty2();
7831
7863
  });
7832
7864
  //#endregion
7865
+ //#region src/lib/paraglide/messages/pluginrackexpandall3.js
7866
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7867
+ /** @typedef {{}} Pluginrackexpandall3Inputs */
7868
+ var en_pluginrackexpandall3 = () => {
7869
+ return `Expand all`;
7870
+ };
7871
+ var zh_pluginrackexpandall3 = () => {
7872
+ return `全部展开`;
7873
+ };
7874
+ var id_pluginrackexpandall3 = () => {
7875
+ return `Buka semua`;
7876
+ };
7877
+ var es_pluginrackexpandall3 = () => {
7878
+ return `Expandir todo`;
7879
+ };
7880
+ /**
7881
+ * | output |
7882
+ * | --- |
7883
+ * | "Expand all" |
7884
+ *
7885
+ * @param {Pluginrackexpandall3Inputs} inputs
7886
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
7887
+ * @returns {LocalizedString}
7888
+ */
7889
+ var pluginrackexpandall3 = ((inputs = {}, options = {}) => {
7890
+ const locale = options.locale ?? getLocale();
7891
+ if (locale === "zh") return zh_pluginrackexpandall3();
7892
+ if (locale === "id") return id_pluginrackexpandall3();
7893
+ if (locale === "es") return es_pluginrackexpandall3();
7894
+ return en_pluginrackexpandall3();
7895
+ });
7896
+ //#endregion
7897
+ //#region src/lib/paraglide/messages/pluginrackgroupexternal3.js
7898
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7899
+ /** @typedef {{}} Pluginrackgroupexternal3Inputs */
7900
+ var en_pluginrackgroupexternal3 = () => {
7901
+ return `External rack`;
7902
+ };
7903
+ var zh_pluginrackgroupexternal3 = () => {
7904
+ return `外部插件架`;
7905
+ };
7906
+ var id_pluginrackgroupexternal3 = () => {
7907
+ return `Rak eksternal`;
7908
+ };
7909
+ var es_pluginrackgroupexternal3 = () => {
7910
+ return `Rack externo`;
7911
+ };
7912
+ /**
7913
+ * | output |
7914
+ * | --- |
7915
+ * | "External rack" |
7916
+ *
7917
+ * @param {Pluginrackgroupexternal3Inputs} inputs
7918
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
7919
+ * @returns {LocalizedString}
7920
+ */
7921
+ var pluginrackgroupexternal3 = ((inputs = {}, options = {}) => {
7922
+ const locale = options.locale ?? getLocale();
7923
+ if (locale === "zh") return zh_pluginrackgroupexternal3();
7924
+ if (locale === "id") return id_pluginrackgroupexternal3();
7925
+ if (locale === "es") return es_pluginrackgroupexternal3();
7926
+ return en_pluginrackgroupexternal3();
7927
+ });
7928
+ //#endregion
7929
+ //#region src/lib/paraglide/messages/pluginrackgroupowned3.js
7930
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7931
+ /** @typedef {{}} Pluginrackgroupowned3Inputs */
7932
+ var en_pluginrackgroupowned3 = () => {
7933
+ return `Owned plugins`;
7934
+ };
7935
+ var zh_pluginrackgroupowned3 = () => {
7936
+ return `自有插件`;
7937
+ };
7938
+ var id_pluginrackgroupowned3 = () => {
7939
+ return `Plugin milik sendiri`;
7940
+ };
7941
+ var es_pluginrackgroupowned3 = () => {
7942
+ return `Plugins propios`;
7943
+ };
7944
+ /**
7945
+ * | output |
7946
+ * | --- |
7947
+ * | "Owned plugins" |
7948
+ *
7949
+ * @param {Pluginrackgroupowned3Inputs} inputs
7950
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
7951
+ * @returns {LocalizedString}
7952
+ */
7953
+ var pluginrackgroupowned3 = ((inputs = {}, options = {}) => {
7954
+ const locale = options.locale ?? getLocale();
7955
+ if (locale === "zh") return zh_pluginrackgroupowned3();
7956
+ if (locale === "id") return id_pluginrackgroupowned3();
7957
+ if (locale === "es") return es_pluginrackgroupowned3();
7958
+ return en_pluginrackgroupowned3();
7959
+ });
7960
+ //#endregion
7833
7961
  //#region src/lib/paraglide/messages/pluginrackinstall2.js
7834
7962
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
7835
7963
  /** @typedef {{}} Pluginrackinstall2Inputs */
@@ -13581,7 +13709,11 @@ var _index_exports = /* @__PURE__ */ __exportAll({
13581
13709
  planMode: () => planmode1,
13582
13710
  pluginRackApplying: () => pluginrackapplying2,
13583
13711
  pluginRackBy: () => pluginrackby2,
13712
+ pluginRackCollapseAll: () => pluginrackcollapseall3,
13584
13713
  pluginRackEmpty: () => pluginrackempty2,
13714
+ pluginRackExpandAll: () => pluginrackexpandall3,
13715
+ pluginRackGroupExternal: () => pluginrackgroupexternal3,
13716
+ pluginRackGroupOwned: () => pluginrackgroupowned3,
13585
13717
  pluginRackInstall: () => pluginrackinstall2,
13586
13718
  pluginRackInstallEmpty: () => pluginrackinstallempty3,
13587
13719
  pluginRackInstalled: () => pluginrackinstalled2,
@@ -14007,7 +14139,11 @@ var messages_exports = /* @__PURE__ */ __exportAll({
14007
14139
  planMode: () => planmode1,
14008
14140
  pluginRackApplying: () => pluginrackapplying2,
14009
14141
  pluginRackBy: () => pluginrackby2,
14142
+ pluginRackCollapseAll: () => pluginrackcollapseall3,
14010
14143
  pluginRackEmpty: () => pluginrackempty2,
14144
+ pluginRackExpandAll: () => pluginrackexpandall3,
14145
+ pluginRackGroupExternal: () => pluginrackgroupexternal3,
14146
+ pluginRackGroupOwned: () => pluginrackgroupowned3,
14011
14147
  pluginRackInstall: () => pluginrackinstall2,
14012
14148
  pluginRackInstallEmpty: () => pluginrackinstallempty3,
14013
14149
  pluginRackInstalled: () => pluginrackinstalled2,
@@ -20999,6 +21135,23 @@ function normalizeFileLinkPath(href) {
20999
21135
  return value;
21000
21136
  }
21001
21137
  /**
21138
+ * The deep fallback’s root lister: the workspace root’s top-level
21139
+ * DIRECTORY names, via the same confined tree route the existence gate
21140
+ * uses. Any refusal degrades to an empty list — the fallback then
21141
+ * silently does nothing and the honest drop stands.
21142
+ */
21143
+ async function workspaceRootDirs(sessionId, fetchImpl = fetch) {
21144
+ try {
21145
+ const res = await fetchImpl(`/api/dsh/workspace-tree?sessionId=${encodeURIComponent(sessionId)}&path=`);
21146
+ if (!res.ok) return [];
21147
+ const body = await res.json();
21148
+ if (body?.ok !== true || !Array.isArray(body.listing?.entries)) return [];
21149
+ return body.listing.entries.filter((e) => e.type === "dir").map((e) => e.name);
21150
+ } catch {
21151
+ return [];
21152
+ }
21153
+ }
21154
+ /**
21002
21155
  * Resolve a file-link path AGAINST the workspace root (Fullpath Bow ADR
21003
21156
  * 2026-09-26 D1): the assistant speaks in its own cwd's paths, which sit
21004
21157
  * one level ABOVE the workspace root, so real links carry the root path or
@@ -21052,13 +21205,21 @@ async function workspaceFileExists(sessionId, path, fetchImpl = fetch) {
21052
21205
  * Returns the workspace-relative path to publish, or null when both
21053
21206
  * candidates refuse (the click drops).
21054
21207
  */
21055
- async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists) {
21208
+ async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists, listRoot) {
21056
21209
  const resolved = resolveFileLinkPath(path, root);
21057
21210
  const candidates = [resolved];
21058
21211
  const slash = resolved.indexOf("/");
21059
21212
  if (slash !== -1 && resolved !== path) candidates.push(resolved.slice(slash + 1));
21060
21213
  if (!candidates.includes(path)) candidates.push(path);
21061
21214
  for (const candidate of candidates) if (await exists(sessionId, candidate)) return candidate;
21215
+ if (listRoot && resolved !== "" && !hasDotDotSegment(resolved)) try {
21216
+ const dirs = await listRoot(sessionId);
21217
+ for (const dir of dirs) {
21218
+ if (dir === "" || dir === "." || dir === "..") continue;
21219
+ const candidate = dir + "/" + resolved;
21220
+ if (await exists(sessionId, candidate)) return candidate;
21221
+ }
21222
+ } catch {}
21062
21223
  return null;
21063
21224
  }
21064
21225
  //#endregion
@@ -25220,7 +25381,7 @@ function FloatingAnchorContainerPopup($$renderer, $$props) {
25220
25381
  function focus() {}
25221
25382
  if (open) {
25222
25383
  $$renderer.push("<!--[0-->");
25223
- $$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-max min-w-72 max-w-[80vw] -translate-y-1/2 overflow-y-auto rounded-lg border border-surface-border bg-surface-elevated py-1 shadow-xl outline-none focus:outline-none"${attr("data-testid", popupTestId)}>`);
25384
+ $$renderer.push(`<div data-svelte="FloatingAnchorContainerPopup" tabindex="-1" class="pointer-events-auto absolute right-full top-1/2 z-50 mr-2 max-h-[60vh] w-96 max-w-[80vw] -translate-y-1/2 overflow-y-auto rounded-lg border border-surface-border bg-surface-elevated py-1 shadow-xl outline-none focus:outline-none"${attr("data-testid", popupTestId)}>`);
25224
25385
  if (title !== void 0) {
25225
25386
  $$renderer.push("<!--[0-->");
25226
25387
  $$renderer.push(`<div class="border-b border-surface-border px-2.5 py-1.5 text-[10px] font-medium uppercase tracking-wider text-text-muted"${attr("data-testid", titleTestId)}>${escape_html(title)}</div>`);
@@ -28300,14 +28461,26 @@ function PluginManagerHeaderActions($$renderer, $$props) {
28300
28461
  /**
28301
28462
  * PluginManagerHeaderActions - the rack header's action cluster,
28302
28463
  * the shelf HeaderActions' grammar (SettingsSkillsHeaderActions,
28303
- * The Shelf Chrome ADR): the reload verb. Presentational: every
28304
- * verb and all state are owned by PluginManagerPanel.
28464
+ * The Shelf Chrome ADR): the reload verb + the lineage-fold pill
28465
+ * (collapse-all / expand-all, sits AFTER the reload verb).
28466
+ * Presentational: every verb and all state are owned by
28467
+ * PluginManagerPanel.
28305
28468
  */
28306
28469
  let { loading, floorBounce} = $$props;
28307
28470
  $$renderer.push(`<div data-svelte="PluginManagerHeaderActions" class="rack-header-actions svelte-1g0idp7">`);
28308
28471
  PluginManagerReloadButton($$renderer, {
28309
28472
  disabled: loading || floorBounce});
28310
- $$renderer.push(`<!----></div>`);
28473
+ $$renderer.push(`<!----> <div class="seg-group svelte-1g0idp7" role="group" aria-label="Plugin Rack" data-testid="rack-fold-toggle"><button type="button" class="seg left svelte-1g0idp7" data-testid="rack-collapse-all">`);
28474
+ Chevrons_down_up($$renderer, {
28475
+ size: 12,
28476
+ "aria-hidden": "true"
28477
+ });
28478
+ $$renderer.push(`<!----></button> <button type="button" class="seg right svelte-1g0idp7" data-testid="rack-expand-all">`);
28479
+ Chevrons_up_down($$renderer, {
28480
+ size: 12,
28481
+ "aria-hidden": "true"
28482
+ });
28483
+ $$renderer.push(`<!----></button></div></div>`);
28311
28484
  }
28312
28485
  //#endregion
28313
28486
  //#region src/lib/components/settings-plugins/PluginManagerHeader.svelte
@@ -30477,7 +30650,7 @@ function _page($$renderer, $$props) {
30477
30650
  async function openFileLinkFromMarkdown(sessionId, rawHref) {
30478
30651
  const { path, lines } = parseFileLinkHref(rawHref);
30479
30652
  if (path === "") return;
30480
- const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId));
30653
+ const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId), void 0, workspaceRootDirs);
30481
30654
  if (target === null) return;
30482
30655
  if (!sessionWorkspaceExplorer(sessionId)) {
30483
30656
  const root = panelWorkspaceFor(sessionId);
@@ -31079,4 +31252,4 @@ function _page($$renderer, $$props) {
31079
31252
  }
31080
31253
 
31081
31254
  export { _page as default };
31082
- //# sourceMappingURL=_page.svelte.js-U6RBvo4b.js.map
31255
+ //# sourceMappingURL=_page.svelte.js-CGKKJjvq.js.map
@@ -9,8 +9,8 @@ import * as qs from 'node:querystring';
9
9
  import { Readable } from 'node:stream';
10
10
  import { S as SvelteKitError } from './chunks/shared.js-HQ0rfhm4.js';
11
11
  import './chunks/utils.js-CAdNO8Tu.js';
12
- import { S as Server } from './index.js-CFMhxqkR.js';
13
- import { m as manifest } from './manifest.js-rflC1wxY.js';
12
+ import { S as Server } from './index.js-XCtYQ9iw.js';
13
+ import { m as manifest } from './manifest.js-B6QH7eda.js';
14
14
  import { env, dir, env_prefix } from '../../env.js';
15
15
  import { format } from 'node:url';
16
16
 
@@ -1732,4 +1732,4 @@ const handler = sequence(
1732
1732
  );
1733
1733
 
1734
1734
  export { format_listening_address as f, handler as h, polka as p };
1735
- //# sourceMappingURL=handler-B_uG0xBL.js.map
1735
+ //# sourceMappingURL=handler-DndMFIB-.js.map
@@ -1,4 +1,4 @@
1
- import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-DrVZK6tf.js';
1
+ import { _ as __commonJSMin, o as options, s as set_private_env, a as set_public_env, g as get_hooks, p as public_env, r as read_implementation, b as set_read_implementation } from './chunks/internal.js-CiymEM9G.js';
2
2
  import { n as noop, T as TRAILING_SLASH_PARAM, I as INVALIDATED_PARAM, R as Redirect, b as get_relative_path, S as SvelteKitError, g as get_status, t as text_encoder, o as once, H as HttpError, d as normalize_error, e as create_remote_key, f as parse_remote_arg, s as stringify, h as stringify$1, A as ActionFailure, i as split_remote_key, j as base64_encode } from './chunks/shared.js-HQ0rfhm4.js';
3
3
  import { b as base, o as override, a as assets, r as reset, c as app_dir } from './chunks/internal2.js-BcS47nI-.js';
4
4
  import { f as format_server_error, j as json, i as is_form_content_type, t as text, h as has_prerendered_path, a as handle_fatal_error, r as redirect_response, g as get_set_cookies, n as negotiate, w as with_request_store, p as parseString, m as merge_tracing, b as method_not_allowed, s as static_error_page, c as handle_error_and_jsonify, d as get_global_name, e as create_replacer, k as serialize_uses, l as clarify_devalue_error, E as ENDPOINT_METHODS, P as PAGE_METHODS, o as get_node_type, q as isRedirect, u as escape_html, v as error, x as deserialize_binary_form } from './chunks/utils.js-CAdNO8Tu.js';
@@ -3861,4 +3861,4 @@ var Server = class {
3861
3861
  };
3862
3862
 
3863
3863
  export { Server as S };
3864
- //# sourceMappingURL=index.js-CFMhxqkR.js.map
3864
+ //# sourceMappingURL=index.js-XCtYQ9iw.js.map
@@ -10,11 +10,11 @@ return {
10
10
  assets: new Set(["favicon.svg"]),
11
11
  mimeTypes: {".svg":"image/svg+xml"},
12
12
  _: {
13
- client: {start:"_app/immutable/entry/start.B_n-sOmN.js",app:"_app/immutable/entry/app.DEAFrkJ-.js",imports:["_app/immutable/entry/start.B_n-sOmN.js","_app/immutable/chunks/ipGk-mTd.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.DEAFrkJ-.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
13
+ client: {start:"_app/immutable/entry/start.DMTgnn1w.js",app:"_app/immutable/entry/app.BTSQLfJD.js",imports:["_app/immutable/entry/start.DMTgnn1w.js","_app/immutable/chunks/XOquLDe4.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.BTSQLfJD.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
14
  nodes: [
15
- __memo(() => import('./nodes/0.js-PpYt5eF3.js')),
16
- __memo(() => import('./nodes/1.js-BQCqfRee.js')),
17
- __memo(() => import('./nodes/2.js-Bkg7QRk0.js'))
15
+ __memo(() => import('./nodes/0.js-B0560RI0.js')),
16
+ __memo(() => import('./nodes/1.js-DgkiAL8m.js')),
17
+ __memo(() => import('./nodes/2.js-DiZQ86Is.js'))
18
18
  ],
19
19
  remotes: {
20
20
 
@@ -242,21 +242,21 @@ return {
242
242
  pattern: /^\/api\/plugins\/apply\/?$/,
243
243
  params: [],
244
244
  page: null,
245
- endpoint: __memo(() => import('./entries/endpoints/api/plugins/apply/_server.ts.js-CpO--Jwf.js'))
245
+ endpoint: __memo(() => import('./entries/endpoints/api/plugins/apply/_server.ts.js-BNEUWbaf.js'))
246
246
  },
247
247
  {
248
248
  id: "/api/plugins/reload",
249
249
  pattern: /^\/api\/plugins\/reload\/?$/,
250
250
  params: [],
251
251
  page: null,
252
- endpoint: __memo(() => import('./entries/endpoints/api/plugins/reload/_server.ts.js-BACFXWMj.js'))
252
+ endpoint: __memo(() => import('./entries/endpoints/api/plugins/reload/_server.ts.js-Ct28d7_t.js'))
253
253
  },
254
254
  {
255
255
  id: "/api/plugins/snapshot",
256
256
  pattern: /^\/api\/plugins\/snapshot\/?$/,
257
257
  params: [],
258
258
  page: null,
259
- endpoint: __memo(() => import('./entries/endpoints/api/plugins/snapshot/_server.ts.js-BJg0hLlC.js'))
259
+ endpoint: __memo(() => import('./entries/endpoints/api/plugins/snapshot/_server.ts.js-DswGIO4S.js'))
260
260
  },
261
261
  {
262
262
  id: "/api/prompts",
@@ -445,4 +445,4 @@ return {
445
445
  })();
446
446
 
447
447
  export { manifest as m };
448
- //# sourceMappingURL=manifest.js-rflC1wxY.js.map
448
+ //# sourceMappingURL=manifest.js-B6QH7eda.js.map
@@ -4,9 +4,9 @@ const index = 0;
4
4
  let component_cache;
5
5
  const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js-EFiihTdF.js')).default;
6
6
  const universal_id = "src/routes/+layout.ts";
7
- const imports = ["_app/immutable/nodes/0.CKr_pvH3.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/DlfWhx6l.js"];
8
- const stylesheets = ["_app/immutable/assets/0.Cz4GQ8ND.css"];
7
+ const imports = ["_app/immutable/nodes/0.k1Ikzbp6.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/DlfWhx6l.js"];
8
+ const stylesheets = ["_app/immutable/assets/0.CRU0GiZX.css"];
9
9
  const fonts = [];
10
10
 
11
11
  export { component, fonts, imports, index, stylesheets, universal_id };
12
- //# sourceMappingURL=0.js-PpYt5eF3.js.map
12
+ //# sourceMappingURL=0.js-B0560RI0.js.map
@@ -0,0 +1,9 @@
1
+ const index = 1;
2
+ let component_cache;
3
+ const component = async () => component_cache ??= (await import('../entries/pages/_error.svelte.js-DUc94aLg.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.Bj5dhQm8.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/Dg3LIDOQ.js","_app/immutable/chunks/XOquLDe4.js","_app/immutable/chunks/DlfWhx6l.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1.js-DgkiAL8m.js.map
@@ -17,11 +17,11 @@ import '../chunks/uneval.js-BJ9Qq2SF.js';
17
17
 
18
18
  const index = 2;
19
19
  let component_cache;
20
- const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-U6RBvo4b.js')).default;
20
+ const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-CGKKJjvq.js')).default;
21
21
  const server_id = "src/routes/+page.server.ts";
22
- const imports = ["_app/immutable/nodes/2.BmfcXZrQ.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/ipGk-mTd.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/CZajmeaf.js"];
23
- const stylesheets = ["_app/immutable/assets/2.BGqV97Jd.css"];
22
+ const imports = ["_app/immutable/nodes/2.D2grr0LI.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/XOquLDe4.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/Dg3LIDOQ.js"];
23
+ const stylesheets = ["_app/immutable/assets/2.BuaCdYrs.css"];
24
24
  const fonts = [];
25
25
 
26
26
  export { component, fonts, imports, index, server_id, stylesheets };
27
- //# sourceMappingURL=2.js-Bkg7QRk0.js.map
27
+ //# sourceMappingURL=2.js-DiZQ86Is.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepseek-insight/dsi",
3
- "version": "0.6.8",
3
+ "version": "0.6.10",
4
4
  "description": "See your multiple agents run on the floor (agent, sub-agent, etc), each conversation on the floor are updated instantly.",
5
5
  "keywords": [
6
6
  "Deepseek",