@deepseek-insight/dsi 0.6.9 → 0.6.11

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 (46) hide show
  1. package/.agents/skills/dsi-ov-setup/SKILL.md +134 -0
  2. package/.agents/skills/dsi-plugin-rack/rack.d.mts +35 -0
  3. package/.agents/skills/dsi-plugin-rack/rack.mjs +168 -26
  4. package/build/client/_app/immutable/assets/{2.BGqV97Jd.css → 2.BuaCdYrs.css} +1 -1
  5. package/build/client/_app/immutable/chunks/{UkmEG9Ws.js → BNTNz9oR.js} +1 -1
  6. package/build/client/_app/immutable/chunks/CiFavIif.js +1 -0
  7. package/build/client/_app/immutable/chunks/DN37js12.js +1 -0
  8. package/build/client/_app/immutable/chunks/KLsbJ_6V.js +2 -0
  9. package/build/client/_app/immutable/entry/{app.e7xoYywe.js → app.BNlAGT8a.js} +2 -2
  10. package/build/client/_app/immutable/entry/start.BQEoVg3q.js +1 -0
  11. package/build/client/_app/immutable/nodes/{1.E4wiL8sP.js → 1.CeFdv8vr.js} +1 -1
  12. package/build/client/_app/immutable/nodes/{2.BBV-AGuB.js → 2.Boib-Q5k.js} +195 -195
  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-BnJXHc1S.js → internal.js-XBbRSE8G.js} +2 -2
  18. package/build/server/chunks/chunks/{state.js-CAjHzrRZ.js → state.js-DgcRLBLq.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-BXeIuPj-.js → _error.svelte.js-CRYTX4NJ.js} +3 -3
  23. package/build/server/chunks/entries/pages/{_page.svelte.js-CW-EdJ00.js → _page.svelte.js-jCShpNgz.js} +164 -14
  24. package/build/server/chunks/{handler-DimUSmTW.js → handler-CDSfkiHz.js} +3 -3
  25. package/build/server/chunks/{index.js-BQUp4Xgn.js → index.js-BOeQQ7jF.js} +2 -2
  26. package/build/server/chunks/{manifest.js-BWy6zgHL.js → manifest.js-CvDWy0oM.js} +7 -7
  27. package/build/server/chunks/nodes/1.js-1rT6o2jA.js +9 -0
  28. package/build/server/chunks/nodes/{2.js-CzgP_zp4.js → 2.js-CGXIkDa5.js} +4 -4
  29. package/package.json +1 -1
  30. package/skills/dsi-add-plugin/SKILL.md +53 -0
  31. package/skills/dsi-add-plugin/references/allowbuilds-template.md +55 -0
  32. package/skills/dsi-add-plugin/references/checklist.md +98 -0
  33. package/skills/dsi-add-plugin/references/verification.md +67 -0
  34. package/template/.dsi/prompts.sqlite +0 -0
  35. package/template/.dsi/resources/plugins-reff.md +4 -2
  36. package/build/client/_app/immutable/chunks/C1F3aCiz.js +0 -2
  37. package/build/client/_app/immutable/chunks/CmnxnK6v.js +0 -1
  38. package/build/client/_app/immutable/chunks/jugX_o5s.js +0 -1
  39. package/build/client/_app/immutable/entry/start.CnkkMjJa.js +0 -1
  40. package/build/server/chunks/nodes/1.js-DJ3dsgdq.js +0 -9
  41. package/template/dsh-app-dev-preset/README.md +0 -69
  42. package/template/dsh-app-dev-preset/cordis.patch.yml +0 -219
  43. package/template/dsh-app-dev-preset/package.json +0 -7
  44. package/template/dsh-research-preset/README.md +0 -57
  45. package/template/dsh-research-preset/cordis.patch.yml +0 -118
  46. package/template/dsh-research-preset/package.json +0 -7
@@ -1 +1 @@
1
- {"version":"1791287547811"}
1
+ {"version":"1791347962511"}
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-DimUSmTW.js';
6
- import './server/chunks/index.js-BQUp4Xgn.js';
7
- import './server/chunks/manifest.js-BWy6zgHL.js';
5
+ export { h as handler } from './server/chunks/handler-CDSfkiHz.js';
6
+ import './server/chunks/index.js-BOeQQ7jF.js';
7
+ import './server/chunks/manifest.js-CvDWy0oM.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-BnJXHc1S.js';
19
+ import './server/chunks/chunks/internal.js-XBbRSE8G.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-DimUSmTW.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-CDSfkiHz.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-BQUp4Xgn.js';
18
- import './server/chunks/chunks/internal.js-BnJXHc1S.js';
17
+ import './server/chunks/index.js-BOeQQ7jF.js';
18
+ import './server/chunks/chunks/internal.js-XBbRSE8G.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-BWy6zgHL.js';
22
+ import './server/chunks/manifest.js-CvDWy0oM.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: "13mzflk"
725
+ version_hash: "lip9ub"
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-BnJXHc1S.js.map
748
+ //# sourceMappingURL=internal.js-XBbRSE8G.js.map
@@ -1,4 +1,4 @@
1
- import { i as index_server_exports } from './internal.js-BnJXHc1S.js';
1
+ import { i as index_server_exports } from './internal.js-XBbRSE8G.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-CAjHzrRZ.js.map
306
+ //# sourceMappingURL=state.js-DgcRLBLq.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-CAjHzrRZ.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-DgcRLBLq.js';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
- import '../../chunks/internal.js-BnJXHc1S.js';
4
+ import '../../chunks/internal.js-XBbRSE8G.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-BXeIuPj-.js.map
43
+ //# sourceMappingURL=_error.svelte.js-CRYTX4NJ.js.map
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-BnJXHc1S.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-XBbRSE8G.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-CAjHzrRZ.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-DgcRLBLq.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,
@@ -28322,17 +28458,31 @@ function PluginManagerReloadButton($$renderer, $$props) {
28322
28458
  //#endregion
28323
28459
  //#region src/lib/components/settings-plugins/PluginManagerHeaderActions.svelte
28324
28460
  function PluginManagerHeaderActions($$renderer, $$props) {
28325
- /**
28326
- * PluginManagerHeaderActions - the rack header's action cluster,
28327
- * the shelf HeaderActions' grammar (SettingsSkillsHeaderActions,
28328
- * The Shelf Chrome ADR): the reload verb. Presentational: every
28329
- * verb and all state are owned by PluginManagerPanel.
28330
- */
28331
- let { loading, floorBounce} = $$props;
28332
- $$renderer.push(`<div data-svelte="PluginManagerHeaderActions" class="rack-header-actions svelte-1g0idp7">`);
28333
- PluginManagerReloadButton($$renderer, {
28334
- disabled: loading || floorBounce});
28335
- $$renderer.push(`<!----></div>`);
28461
+ $$renderer.component(($$renderer) => {
28462
+ /**
28463
+ * PluginManagerHeaderActions - the rack header's action cluster,
28464
+ * the shelf HeaderActions' grammar (SettingsSkillsHeaderActions,
28465
+ * The Shelf Chrome ADR): the reload verb + the lineage-fold pill
28466
+ * (collapse-all / expand-all, sits AFTER the reload verb).
28467
+ * Presentational: every verb and all state are owned by
28468
+ * PluginManagerPanel.
28469
+ */
28470
+ let { loading, floorBounce} = $$props;
28471
+ $$renderer.push(`<div data-svelte="PluginManagerHeaderActions" class="rack-header-actions svelte-1g0idp7">`);
28472
+ PluginManagerReloadButton($$renderer, {
28473
+ disabled: loading || floorBounce});
28474
+ $$renderer.push(`<!----> <div class="seg-group svelte-1g0idp7" role="group"${attr("aria-label", t(pluginracktitle2))} data-testid="rack-fold-toggle"><button type="button" class="seg left svelte-1g0idp7" data-testid="rack-collapse-all">`);
28475
+ Chevrons_down_up($$renderer, {
28476
+ size: 12,
28477
+ "aria-hidden": "true"
28478
+ });
28479
+ $$renderer.push(`<!----></button> <button type="button" class="seg right svelte-1g0idp7" data-testid="rack-expand-all">`);
28480
+ Chevrons_up_down($$renderer, {
28481
+ size: 12,
28482
+ "aria-hidden": "true"
28483
+ });
28484
+ $$renderer.push(`<!----></button></div></div>`);
28485
+ });
28336
28486
  }
28337
28487
  //#endregion
28338
28488
  //#region src/lib/components/settings-plugins/PluginManagerHeader.svelte
@@ -31104,4 +31254,4 @@ function _page($$renderer, $$props) {
31104
31254
  }
31105
31255
 
31106
31256
  export { _page as default };
31107
- //# sourceMappingURL=_page.svelte.js-CW-EdJ00.js.map
31257
+ //# sourceMappingURL=_page.svelte.js-jCShpNgz.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-BQUp4Xgn.js';
13
- import { m as manifest } from './manifest.js-BWy6zgHL.js';
12
+ import { S as Server } from './index.js-BOeQQ7jF.js';
13
+ import { m as manifest } from './manifest.js-CvDWy0oM.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-DimUSmTW.js.map
1735
+ //# sourceMappingURL=handler-CDSfkiHz.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-BnJXHc1S.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-XBbRSE8G.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-BQUp4Xgn.js.map
3864
+ //# sourceMappingURL=index.js-BOeQQ7jF.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.CnkkMjJa.js",app:"_app/immutable/entry/app.e7xoYywe.js",imports:["_app/immutable/entry/start.CnkkMjJa.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.e7xoYywe.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.BQEoVg3q.js",app:"_app/immutable/entry/app.BNlAGT8a.js",imports:["_app/immutable/entry/start.BQEoVg3q.js","_app/immutable/chunks/KLsbJ_6V.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.BNlAGT8a.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
15
  __memo(() => import('./nodes/0.js-B0560RI0.js')),
16
- __memo(() => import('./nodes/1.js-DJ3dsgdq.js')),
17
- __memo(() => import('./nodes/2.js-CzgP_zp4.js'))
16
+ __memo(() => import('./nodes/1.js-1rT6o2jA.js')),
17
+ __memo(() => import('./nodes/2.js-CGXIkDa5.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-BWy6zgHL.js.map
448
+ //# sourceMappingURL=manifest.js-CvDWy0oM.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-CRYTX4NJ.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.CeFdv8vr.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BNTNz9oR.js","_app/immutable/chunks/KLsbJ_6V.js","_app/immutable/chunks/DlfWhx6l.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1.js-1rT6o2jA.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-CW-EdJ00.js')).default;
20
+ const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-jCShpNgz.js')).default;
21
21
  const server_id = "src/routes/+page.server.ts";
22
- const imports = ["_app/immutable/nodes/2.BBV-AGuB.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/UkmEG9Ws.js"];
23
- const stylesheets = ["_app/immutable/assets/2.BGqV97Jd.css"];
22
+ const imports = ["_app/immutable/nodes/2.Boib-Q5k.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/KLsbJ_6V.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/BNTNz9oR.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-CzgP_zp4.js.map
27
+ //# sourceMappingURL=2.js-CGXIkDa5.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepseek-insight/dsi",
3
- "version": "0.6.9",
3
+ "version": "0.6.11",
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",
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: dsi-add-plugin
3
+ description: Use when the user runs /dsi-add-plugin or asks to install/add a dsh plugin or an agent-preset into the web profile — covers the five install gates (allowBuilds, prepare, D4 manifest match, bundles mount, RPC verify), local-link vs git-hosted vs npm sources, and the post-install checklist that catches the bundles clobber.
4
+ ---
5
+
6
+ # DSI Add Plugin — the five-gate install playbook
7
+
8
+ Installing a plugin or agent-preset into a dsh profile crosses **five gates**.
9
+ Every install failure this surface has ever produced was one gate failing
10
+ closed while every earlier gate already passed (RCA 2026-10-06, "The Install
11
+ That Fixed Its Way Forward"). Walk the gates IN ORDER; never retry an install
12
+ after a fix without checking the NEXT gate proactively — each fix historically
13
+ bought exactly one gate.
14
+
15
+ Read [references/checklist.md](references/checklist.md) first — it is the
16
+ step-by-step procedure with the exact commands. The other references are
17
+ lookup tables you open when a specific gate bites:
18
+
19
+ - [references/checklist.md](references/checklist.md) — the ordered procedure
20
+ (source classification → gates 1-5 → verify).
21
+ - [references/allowbuilds-template.md](references/allowbuilds-template.md) —
22
+ allowBuilds snippet shapes: exact sha key, wildcard bet, and the placeholder
23
+ trap to grep for.
24
+ - [references/verification.md](references/verification.md) — verification
25
+ commands: offline composition dump, live `agentPresets/list` RPC (with the
26
+ cookie mint), rack snapshot refresh.
27
+
28
+ ## The gates, one line each
29
+
30
+ 1. **Source** — classify what you are installing: npm package, git-hosted
31
+ repo, or local directory (link dep). The source decides which later gates
32
+ apply.
33
+ 2. **allowBuilds (profile)** — the profile's `pnpm-workspace.yaml` must
34
+ allow every git-hosted package's build scripts. Keys for git packages are
35
+ sha-pinned: a new release means a new key.
36
+ 3. **allowBuilds (package)** — a git-hosted package's own prepare runs its
37
+ own `pnpm install` under ITS OWN allowlist. Grep BOTH yaml files for
38
+ placeholder text before trusting any boolean.
39
+ 4. **D4 manifest match** — after `dsh plugin add` succeeds, the profile
40
+ manifest must record a dependency whose repo tail matches the reff URL.
41
+ Reff lines point at REPOSITORY ROOTS, never `/tree/` browse pages.
42
+ 5. **bundles mount** — dependencies install, `dsh.profile.bundles` mounts.
43
+ Every `dsh plugin add` REWRITES the bundles array to just the new plugin:
44
+ after any install, re-append every bundle that should still be mounted.
45
+
46
+ ## Hard rules (earned 2026-10-06)
47
+
48
+ - NEVER hand-edit the manifest's `dependencies` for a dsh-managed plugin —
49
+ shell out to `dsh plugin add` (rack D3). Hand-edits are allowed only for
50
+ local link deps and the bundles array.
51
+ - NEVER trust the installer's success message as the finish line; the mount
52
+ and the RPC are the truth (D4).
53
+ - NEVER force-push; a rejected push stops the skill.
@@ -0,0 +1,55 @@
1
+ # allowBuilds — snippet shapes and the placeholder trap
2
+
3
+ Where: `~/.dsh/profiles/web/pnpm-workspace.yaml` (host profile) and the
4
+ SOURCE REPO's own `pnpm-workspace.yaml` (for git-hosted packages — their
5
+ prepare runs under their own allowlist).
6
+
7
+ ## Shapes that work (pnpm 11.7)
8
+
9
+ ```yaml
10
+ allowBuilds:
11
+ # plain package name (local deps, transitive builds)
12
+ esbuild: true
13
+ node-pty: true
14
+ # git-hosted package, exact tarball sha — what the error prints verbatim
15
+ "@deepseek-insight/dsi@https://codeload.github.com/mitmplay/deepseek-insight/tar.gz/de43c9658dd2bc4221b116fc1420be167facb353": true
16
+ # wildcard bet — cover future shas of the same repo
17
+ "@deepseek-insight/dsi@https://codeload.github.com/mitmplay/**": true
18
+ ```
19
+
20
+ Keys with `: ` or spaces in them MUST be quoted.
21
+
22
+ ## The placeholder trap (armed twice, 2026-10-06)
23
+
24
+ Both of these shipped in real yaml files and LOOK set while blocking:
25
+
26
+ ```yaml
27
+ esbuild: set this to true or false # a string, not a boolean — pnpm treats it as not-allowed
28
+ node-pty: set this to true or false
29
+ ```
30
+
31
+ Pre-flight grep — run against BOTH homes before any install:
32
+
33
+ ```bash
34
+ grep -rn 'set this to true' \
35
+ ~/.dsh/profiles/web/pnpm-workspace.yaml \
36
+ <source-repo>/pnpm-workspace.yaml && echo 'PLACEHOLDER FOUND — fix before installing'
37
+ ```
38
+
39
+ ## The sha treadmill (git-hosted packages)
40
+
41
+ For a git tarball, pnpm's identity for the package embeds the commit sha, so
42
+ the exact key expires with the next release of that repo:
43
+
44
+ 1. Fix anything in the source repo → commit → push → mirror.
45
+ 2. The mirror's new HEAD is the new sha — ADD a new exact key for it (keep
46
+ the old ones; they are inert).
47
+ 3. Keep the wildcard entry too; if pnpm honors it, future releases need
48
+ nothing (unproven as of 2026-10-06 — the exact key remains the fallback).
49
+
50
+ ## pnpmapprove-builds note
51
+
52
+ `pnpm approve-builds` exists as the interactive alternative, but the
53
+ skill's path is hand-editing the yaml: the profile's file lives outside any
54
+ git repo and the edit is one line. Commit source-repo allowlist fixes
55
+ normally (they are real repo changes — d67419a is the exemplar).