@deepseek-insight/dsi 0.6.5 → 0.6.9

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 (60) hide show
  1. package/.agents/skills/dsi-skill-shelf/shelf.mjs +151 -23
  2. package/build/client/_app/immutable/assets/0.CRU0GiZX.css +2 -0
  3. package/build/client/_app/immutable/chunks/C1F3aCiz.js +2 -0
  4. package/build/client/_app/immutable/chunks/CmnxnK6v.js +1 -0
  5. package/build/client/_app/immutable/chunks/{BsHqd_cH.js → UkmEG9Ws.js} +1 -1
  6. package/build/client/_app/immutable/chunks/jugX_o5s.js +1 -0
  7. package/build/client/_app/immutable/entry/{app.BXy5ddPi.js → app.e7xoYywe.js} +2 -2
  8. package/build/client/_app/immutable/entry/start.CnkkMjJa.js +1 -0
  9. package/build/client/_app/immutable/nodes/{1.i0ZfDYTy.js → 1.E4wiL8sP.js} +1 -1
  10. package/build/client/_app/immutable/nodes/{2.BSH_1C9p.js → 2.BBV-AGuB.js} +101 -96
  11. package/build/client/_app/version.json +1 -1
  12. package/build/handler.js +4 -4
  13. package/build/index.js +4 -4
  14. package/build/server/chunks/chunks/{engine2.js-BRoFbCnL.js → engine2.js-BXbaI0o-.js} +6 -3
  15. package/build/server/chunks/chunks/{internal.js-4KmCgr7P.js → internal.js-BnJXHc1S.js} +2 -2
  16. package/build/server/chunks/chunks/{state.js-Clfg_Bi6.js → state.js-CAjHzrRZ.js} +2 -2
  17. package/build/server/chunks/entries/endpoints/api/skills/install/{_server.ts.js-DyzPF_Z5.js → _server.ts.js-JWyeMT3E.js} +2 -2
  18. package/build/server/chunks/entries/endpoints/api/skills/reload/{_server.ts.js-lJhCBpB2.js → _server.ts.js-CI_3uFaD.js} +2 -2
  19. package/build/server/chunks/entries/endpoints/api/skills/reload/cancel/{_server.ts.js-DT52g6_a.js → _server.ts.js-L_hU8UA2.js} +2 -2
  20. package/build/server/chunks/entries/endpoints/api/skills/snapshot/{_server.ts.js-Ct_PmlXs.js → _server.ts.js-C2Xvy2rv.js} +2 -2
  21. package/build/server/chunks/entries/endpoints/api/skills/uninstall/{_server.ts.js-D_NXkZEr.js → _server.ts.js-DQjGVZ0O.js} +2 -2
  22. package/build/server/chunks/entries/pages/{_error.svelte.js-VUpHsiKM.js → _error.svelte.js-BXeIuPj-.js} +3 -3
  23. package/build/server/chunks/entries/pages/{_page.svelte.js-Dwroj-cb.js → _page.svelte.js-CW-EdJ00.js} +41 -10
  24. package/build/server/chunks/{handler-BNCD1i7S.js → handler-DimUSmTW.js} +3 -3
  25. package/build/server/chunks/{index.js-Cla9NLvA.js → index.js-BQUp4Xgn.js} +2 -2
  26. package/build/server/chunks/{manifest.js-CmjuOLMb.js → manifest.js-BWy6zgHL.js} +10 -10
  27. package/build/server/chunks/nodes/{0.js-PpYt5eF3.js → 0.js-B0560RI0.js} +3 -3
  28. package/build/server/chunks/nodes/1.js-DJ3dsgdq.js +9 -0
  29. package/build/server/chunks/nodes/{2.js-BljKgZ5E.js → 2.js-CzgP_zp4.js} +3 -3
  30. package/package.json +2 -1
  31. package/{.agents/skills → skills}/dsh-jump-prepare-fix/SKILL.md +5 -0
  32. package/skills/dsi-rca/SKILL.md +103 -0
  33. package/skills/dsi-rca/references/mermaid-rules.md +46 -0
  34. package/skills/dsi-rca/references/rca-template.md +88 -0
  35. package/template/.dsi/prompts.sqlite +0 -0
  36. package/template/.dsi/resources/plugins-reff.md +3 -1
  37. package/template/.dsi/resources/skills-reff.md +1 -2
  38. package/template/dsh-app-dev-preset/README.md +69 -0
  39. package/template/dsh-app-dev-preset/cordis.patch.yml +219 -0
  40. package/template/dsh-app-dev-preset/package.json +7 -0
  41. package/template/dsh-research-preset/README.md +57 -0
  42. package/template/dsh-research-preset/cordis.patch.yml +118 -0
  43. package/template/dsh-research-preset/package.json +7 -0
  44. package/build/client/_app/immutable/assets/0.Cz4GQ8ND.css +0 -2
  45. package/build/client/_app/immutable/chunks/C_dVU9t5.js +0 -1
  46. package/build/client/_app/immutable/chunks/Cgyrc8XY.js +0 -2
  47. package/build/client/_app/immutable/chunks/DvyUTC20.js +0 -1
  48. package/build/client/_app/immutable/entry/start.DwMkMSKE.js +0 -1
  49. package/build/server/chunks/nodes/1.js-CsqcOUEA.js +0 -9
  50. /package/build/client/_app/immutable/nodes/{0.CKr_pvH3.js → 0.k1Ikzbp6.js} +0 -0
  51. /package/{.agents/skills → skills}/dsi-adr/SKILL.md +0 -0
  52. /package/{.agents/skills → skills}/dsi-bump-up/SKILL.md +0 -0
  53. /package/{.agents/skills → skills}/dsi-i18n-migrate/SKILL.md +0 -0
  54. /package/{.agents/skills → skills}/dsi-release/SKILL.md +0 -0
  55. /package/{.agents/skills → skills}/dsi-spcheck/SKILL.md +0 -0
  56. /package/{.agents/skills → skills}/dsi-spec/SKILL.md +0 -0
  57. /package/{.agents/skills → skills}/dsi-spec/references/mermaid-pattern.md +0 -0
  58. /package/{.agents/skills → skills}/dsi-spec/references/tasks-json-template.md +0 -0
  59. /package/{.agents/skills → skills}/dsi-sync/SKILL.md +0 -0
  60. /package/{.agents/skills → skills}/dsi-task/SKILL.md +0 -0
@@ -1 +1 @@
1
- {"version":"1791170025125"}
1
+ {"version":"1791287547811"}
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-BNCD1i7S.js';
6
- import './server/chunks/index.js-Cla9NLvA.js';
7
- import './server/chunks/manifest.js-CmjuOLMb.js';
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';
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-4KmCgr7P.js';
19
+ import './server/chunks/chunks/internal.js-BnJXHc1S.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-BNCD1i7S.js';
4
+ import { p as polka, h as handler, f as format_listening_address } from './server/chunks/handler-DimUSmTW.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-Cla9NLvA.js';
18
- import './server/chunks/chunks/internal.js-4KmCgr7P.js';
17
+ import './server/chunks/index.js-BQUp4Xgn.js';
18
+ import './server/chunks/chunks/internal.js-BnJXHc1S.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-CmjuOLMb.js';
22
+ import './server/chunks/manifest.js-BWy6zgHL.js';
23
23
  import 'node:url';
24
24
 
25
25
  const path = env('SOCKET_PATH', false);
@@ -30,9 +30,12 @@ var EngineCancelledError = class extends Error {
30
30
  this.name = "EngineCancelledError";
31
31
  }
32
32
  };
33
- /** Uninstallable = on disk AND signed (ADR D5 control matrix). */
33
+ /** Uninstallable = on disk (operator override 2026-10-05: the foreign
34
+ * badge informs, it no longer gates — D5's signed-only uninstall is
35
+ * superseded by operator decision; signed folders still prove their id
36
+ * in the engine before deletion). */
34
37
  function uninstallableIds(snapshot) {
35
- return snapshot.sources.flatMap((s) => s.skills.filter((k) => k.installed && k.signed).map((k) => k.id));
38
+ return snapshot.sources.flatMap((s) => s.skills.filter((k) => k.installed).map((k) => k.id));
36
39
  }
37
40
  //#endregion
38
41
  //#region src/lib/server/skills/engine.ts
@@ -148,4 +151,4 @@ function getEngine() {
148
151
  }
149
152
 
150
153
  export { EngineMissingError as E, EngineFailedError as a, EngineCancelledError as b, cancelRefresh as c, getEngine as g, uninstallableIds as u };
151
- //# sourceMappingURL=engine2.js-BRoFbCnL.js.map
154
+ //# sourceMappingURL=engine2.js-BXbaI0o-.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: "vrjaqk"
725
+ version_hash: "13mzflk"
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-4KmCgr7P.js.map
748
+ //# sourceMappingURL=internal.js-BnJXHc1S.js.map
@@ -1,4 +1,4 @@
1
- import { i as index_server_exports } from './internal.js-4KmCgr7P.js';
1
+ import { i as index_server_exports } from './internal.js-BnJXHc1S.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-Clfg_Bi6.js.map
306
+ //# sourceMappingURL=state.js-CAjHzrRZ.js.map
@@ -1,4 +1,4 @@
1
- import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BRoFbCnL.js';
1
+ import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import 'node:fs';
4
4
  import 'node:path';
@@ -44,4 +44,4 @@ var POST = async ({ request }) => {
44
44
  };
45
45
 
46
46
  export { POST };
47
- //# sourceMappingURL=_server.ts.js-DyzPF_Z5.js.map
47
+ //# sourceMappingURL=_server.ts.js-JWyeMT3E.js.map
@@ -1,5 +1,5 @@
1
1
  import { f as fetchStarsByKey } from '../../../../../chunks/github-stars.js-BZGcEdID.js';
2
- import { g as getEngine, u as uninstallableIds, b as EngineCancelledError } from '../../../../../chunks/engine2.js-BRoFbCnL.js';
2
+ import { g as getEngine, u as uninstallableIds, b as EngineCancelledError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import 'node:fs';
5
5
  import 'node:path';
@@ -41,4 +41,4 @@ var POST = async () => {
41
41
  };
42
42
 
43
43
  export { POST };
44
- //# sourceMappingURL=_server.ts.js-lJhCBpB2.js.map
44
+ //# sourceMappingURL=_server.ts.js-CI_3uFaD.js.map
@@ -1,4 +1,4 @@
1
- import { c as cancelRefresh } from '../../../../../../chunks/engine2.js-BRoFbCnL.js';
1
+ import { c as cancelRefresh } from '../../../../../../chunks/engine2.js-BXbaI0o-.js';
2
2
  import { j as json } from '../../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import { rmSync } from 'node:fs';
4
4
  import { join } from 'node:path';
@@ -28,4 +28,4 @@ var POST = async () => {
28
28
  };
29
29
 
30
30
  export { POST };
31
- //# sourceMappingURL=_server.ts.js-DT52g6_a.js.map
31
+ //# sourceMappingURL=_server.ts.js-L_hU8UA2.js.map
@@ -1,5 +1,5 @@
1
1
  import { f as fetchStarsByKey } from '../../../../../chunks/github-stars.js-BZGcEdID.js';
2
- import { g as getEngine, u as uninstallableIds } from '../../../../../chunks/engine2.js-BRoFbCnL.js';
2
+ import { g as getEngine, u as uninstallableIds } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
3
3
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
4
4
  import 'node:fs';
5
5
  import 'node:path';
@@ -40,4 +40,4 @@ var GET = async () => {
40
40
  };
41
41
 
42
42
  export { GET };
43
- //# sourceMappingURL=_server.ts.js-Ct_PmlXs.js.map
43
+ //# sourceMappingURL=_server.ts.js-C2Xvy2rv.js.map
@@ -1,4 +1,4 @@
1
- import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BRoFbCnL.js';
1
+ import { g as getEngine, E as EngineMissingError, a as EngineFailedError } from '../../../../../chunks/engine2.js-BXbaI0o-.js';
2
2
  import { j as json } from '../../../../../chunks/utils.js-CAdNO8Tu.js';
3
3
  import 'node:fs';
4
4
  import 'node:path';
@@ -44,4 +44,4 @@ var POST = async ({ request }) => {
44
44
  };
45
45
 
46
46
  export { POST };
47
- //# sourceMappingURL=_server.ts.js-D_NXkZEr.js.map
47
+ //# sourceMappingURL=_server.ts.js-DQjGVZ0O.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-Clfg_Bi6.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';
3
3
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
4
- import '../../chunks/internal.js-4KmCgr7P.js';
4
+ import '../../chunks/internal.js-BnJXHc1S.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-VUpHsiKM.js.map
43
+ //# sourceMappingURL=_error.svelte.js-BXeIuPj-.js.map
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-4KmCgr7P.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-BnJXHc1S.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-Clfg_Bi6.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';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -20999,6 +20999,23 @@ function normalizeFileLinkPath(href) {
20999
20999
  return value;
21000
21000
  }
21001
21001
  /**
21002
+ * The deep fallback’s root lister: the workspace root’s top-level
21003
+ * DIRECTORY names, via the same confined tree route the existence gate
21004
+ * uses. Any refusal degrades to an empty list — the fallback then
21005
+ * silently does nothing and the honest drop stands.
21006
+ */
21007
+ async function workspaceRootDirs(sessionId, fetchImpl = fetch) {
21008
+ try {
21009
+ const res = await fetchImpl(`/api/dsh/workspace-tree?sessionId=${encodeURIComponent(sessionId)}&path=`);
21010
+ if (!res.ok) return [];
21011
+ const body = await res.json();
21012
+ if (body?.ok !== true || !Array.isArray(body.listing?.entries)) return [];
21013
+ return body.listing.entries.filter((e) => e.type === "dir").map((e) => e.name);
21014
+ } catch {
21015
+ return [];
21016
+ }
21017
+ }
21018
+ /**
21002
21019
  * Resolve a file-link path AGAINST the workspace root (Fullpath Bow ADR
21003
21020
  * 2026-09-26 D1): the assistant speaks in its own cwd's paths, which sit
21004
21021
  * one level ABOVE the workspace root, so real links carry the root path or
@@ -21052,13 +21069,21 @@ async function workspaceFileExists(sessionId, path, fetchImpl = fetch) {
21052
21069
  * Returns the workspace-relative path to publish, or null when both
21053
21070
  * candidates refuse (the click drops).
21054
21071
  */
21055
- async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists) {
21072
+ async function resolveFileLinkTarget(sessionId, path, root, exists = workspaceFileExists, listRoot) {
21056
21073
  const resolved = resolveFileLinkPath(path, root);
21057
21074
  const candidates = [resolved];
21058
21075
  const slash = resolved.indexOf("/");
21059
21076
  if (slash !== -1 && resolved !== path) candidates.push(resolved.slice(slash + 1));
21060
21077
  if (!candidates.includes(path)) candidates.push(path);
21061
21078
  for (const candidate of candidates) if (await exists(sessionId, candidate)) return candidate;
21079
+ if (listRoot && resolved !== "" && !hasDotDotSegment(resolved)) try {
21080
+ const dirs = await listRoot(sessionId);
21081
+ for (const dir of dirs) {
21082
+ if (dir === "" || dir === "." || dir === "..") continue;
21083
+ const candidate = dir + "/" + resolved;
21084
+ if (await exists(sessionId, candidate)) return candidate;
21085
+ }
21086
+ } catch {}
21062
21087
  return null;
21063
21088
  }
21064
21089
  //#endregion
@@ -25220,7 +25245,7 @@ function FloatingAnchorContainerPopup($$renderer, $$props) {
25220
25245
  function focus() {}
25221
25246
  if (open) {
25222
25247
  $$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)}>`);
25248
+ $$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
25249
  if (title !== void 0) {
25225
25250
  $$renderer.push("<!--[0-->");
25226
25251
  $$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>`);
@@ -25761,8 +25786,7 @@ async function runPluginRack(args, reload, ctx, onNote) {
25761
25786
  };
25762
25787
  }
25763
25788
  if (!addPanel({
25764
- afterSessionId: ctx.sessionId
25765
- })) {
25789
+ afterSessionId: ctx.sessionId})) {
25766
25790
  const note = "/dsi-plugins: the floor is not mounted";
25767
25791
  onNote?.(false, note);
25768
25792
  return {
@@ -25808,8 +25832,7 @@ async function runSkillShelf(args, reload, ctx, onNote) {
25808
25832
  };
25809
25833
  }
25810
25834
  if (!addPanel({
25811
- afterSessionId: ctx.sessionId
25812
- })) {
25835
+ afterSessionId: ctx.sessionId})) {
25813
25836
  const note = "/dsi-skills: the floor is not mounted";
25814
25837
  onNote?.(false, note);
25815
25838
  return {
@@ -28220,6 +28243,9 @@ function SettingsSkillsPanel($$renderer, $$props) {
28220
28243
  $$renderer.component(($$renderer) => {
28221
28244
  let busy = false;
28222
28245
  const reloadState = derived(() => visiblePhase());
28246
+ /** Session-only refresh token (BUG 2026-10-05): the floor bumps the
28247
+ * panel entry's refresh counter when /dsi-skills --reload dedupes
28248
+ * onto THIS open shelf — a change re-fetches the rebuilt snapshot. */
28223
28249
  /** Persisted reload feedback (hard-reload survival): a restored
28224
28250
  * 'done' lives out its remaining 5s window; a restored 'loading'
28225
28251
  * re-issues the reload so the check still lands. */
@@ -28365,6 +28391,9 @@ function PluginManagerPanel($$renderer, $$props) {
28365
28391
  * with the DSH restart chain: the floor goes down and re-attaches on
28366
28392
  * the same URL (D5) — the banner says so BEFORE the fetch storms.
28367
28393
  */
28394
+ /** Session-only refresh token (BUG 2026-10-05, same contract as the
28395
+ * shelf's): the floor bumps it on /dsi-plugins --reload dedupe so
28396
+ * the open rack re-fetches the rebuilt snapshot. */
28368
28397
  /** Persisted chrome (the explorer-tab pattern): the active pill tab.
28369
28398
  * Junk sanitizes to 'install'. */
28370
28399
  /** Reports the active tab up to the panel entry (hard-reload survival). */
@@ -30473,7 +30502,7 @@ function _page($$renderer, $$props) {
30473
30502
  async function openFileLinkFromMarkdown(sessionId, rawHref) {
30474
30503
  const { path, lines } = parseFileLinkHref(rawHref);
30475
30504
  if (path === "") return;
30476
- const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId));
30505
+ const target = await resolveFileLinkTarget(sessionId, path, panelWorkspaceFor(sessionId), void 0, workspaceRootDirs);
30477
30506
  if (target === null) return;
30478
30507
  if (!sessionWorkspaceExplorer(sessionId)) {
30479
30508
  const root = panelWorkspaceFor(sessionId);
@@ -30842,12 +30871,14 @@ function _page($$renderer, $$props) {
30842
30871
  $$renderer.push("<!--[2-->");
30843
30872
  $$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-plugins">`);
30844
30873
  PluginManagerPanel($$renderer, {
30874
+ refreshToken: panel.refresh ?? 0,
30845
30875
  initialTab: panel.tab ?? "install"});
30846
30876
  $$renderer.push(`<!----></div>`);
30847
30877
  } else if (panel.kind === "skill-shelf") {
30848
30878
  $$renderer.push("<!--[3-->");
30849
30879
  $$renderer.push(`<div class="panel-manager-body svelte-1uha8ag" data-testid="panel-skills">`);
30850
30880
  SettingsSkillsPanel($$renderer, {
30881
+ refreshToken: panel.refresh ?? 0,
30851
30882
  initialTab: panel.tab ?? "install",
30852
30883
  initialCollapsed: panel.collapsed ?? null,
30853
30884
  initialSearch: panel.searchQ ?? "",
@@ -31073,4 +31104,4 @@ function _page($$renderer, $$props) {
31073
31104
  }
31074
31105
 
31075
31106
  export { _page as default };
31076
- //# sourceMappingURL=_page.svelte.js-Dwroj-cb.js.map
31107
+ //# sourceMappingURL=_page.svelte.js-CW-EdJ00.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-Cla9NLvA.js';
13
- import { m as manifest } from './manifest.js-CmjuOLMb.js';
12
+ import { S as Server } from './index.js-BQUp4Xgn.js';
13
+ import { m as manifest } from './manifest.js-BWy6zgHL.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-BNCD1i7S.js.map
1735
+ //# sourceMappingURL=handler-DimUSmTW.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-4KmCgr7P.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-BnJXHc1S.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-Cla9NLvA.js.map
3864
+ //# sourceMappingURL=index.js-BQUp4Xgn.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.DwMkMSKE.js",app:"_app/immutable/entry/app.BXy5ddPi.js",imports:["_app/immutable/entry/start.DwMkMSKE.js","_app/immutable/chunks/Cgyrc8XY.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/entry/app.BXy5ddPi.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.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},
14
14
  nodes: [
15
- __memo(() => import('./nodes/0.js-PpYt5eF3.js')),
16
- __memo(() => import('./nodes/1.js-CsqcOUEA.js')),
17
- __memo(() => import('./nodes/2.js-BljKgZ5E.js'))
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'))
18
18
  ],
19
19
  remotes: {
20
20
 
@@ -312,7 +312,7 @@ return {
312
312
  pattern: /^\/api\/skills\/install\/?$/,
313
313
  params: [],
314
314
  page: null,
315
- endpoint: __memo(() => import('./entries/endpoints/api/skills/install/_server.ts.js-DyzPF_Z5.js'))
315
+ endpoint: __memo(() => import('./entries/endpoints/api/skills/install/_server.ts.js-JWyeMT3E.js'))
316
316
  },
317
317
  {
318
318
  id: "/api/skills/progress",
@@ -326,28 +326,28 @@ return {
326
326
  pattern: /^\/api\/skills\/reload\/?$/,
327
327
  params: [],
328
328
  page: null,
329
- endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/_server.ts.js-lJhCBpB2.js'))
329
+ endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/_server.ts.js-CI_3uFaD.js'))
330
330
  },
331
331
  {
332
332
  id: "/api/skills/reload/cancel",
333
333
  pattern: /^\/api\/skills\/reload\/cancel\/?$/,
334
334
  params: [],
335
335
  page: null,
336
- endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/cancel/_server.ts.js-DT52g6_a.js'))
336
+ endpoint: __memo(() => import('./entries/endpoints/api/skills/reload/cancel/_server.ts.js-L_hU8UA2.js'))
337
337
  },
338
338
  {
339
339
  id: "/api/skills/snapshot",
340
340
  pattern: /^\/api\/skills\/snapshot\/?$/,
341
341
  params: [],
342
342
  page: null,
343
- endpoint: __memo(() => import('./entries/endpoints/api/skills/snapshot/_server.ts.js-Ct_PmlXs.js'))
343
+ endpoint: __memo(() => import('./entries/endpoints/api/skills/snapshot/_server.ts.js-C2Xvy2rv.js'))
344
344
  },
345
345
  {
346
346
  id: "/api/skills/uninstall",
347
347
  pattern: /^\/api\/skills\/uninstall\/?$/,
348
348
  params: [],
349
349
  page: null,
350
- endpoint: __memo(() => import('./entries/endpoints/api/skills/uninstall/_server.ts.js-D_NXkZEr.js'))
350
+ endpoint: __memo(() => import('./entries/endpoints/api/skills/uninstall/_server.ts.js-DQjGVZ0O.js'))
351
351
  },
352
352
  {
353
353
  id: "/api/skills/voice",
@@ -445,4 +445,4 @@ return {
445
445
  })();
446
446
 
447
447
  export { manifest as m };
448
- //# sourceMappingURL=manifest.js-CmjuOLMb.js.map
448
+ //# sourceMappingURL=manifest.js-BWy6zgHL.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-BXeIuPj-.js')).default;
4
+ const imports = ["_app/immutable/nodes/1.E4wiL8sP.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/UkmEG9Ws.js","_app/immutable/chunks/C1F3aCiz.js","_app/immutable/chunks/DlfWhx6l.js"];
5
+ const stylesheets = [];
6
+ const fonts = [];
7
+
8
+ export { component, fonts, imports, index, stylesheets };
9
+ //# sourceMappingURL=1.js-DJ3dsgdq.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-Dwroj-cb.js')).default;
20
+ const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js-CW-EdJ00.js')).default;
21
21
  const server_id = "src/routes/+page.server.ts";
22
- const imports = ["_app/immutable/nodes/2.BSH_1C9p.js","_app/immutable/chunks/C-58cZAk.js","_app/immutable/chunks/Cgyrc8XY.js","_app/immutable/chunks/HclGiUj8.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DlfWhx6l.js","_app/immutable/chunks/BLxS3bAX.js","_app/immutable/chunks/BsHqd_cH.js"];
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
23
  const stylesheets = ["_app/immutable/assets/2.BGqV97Jd.css"];
24
24
  const fonts = [];
25
25
 
26
26
  export { component, fonts, imports, index, server_id, stylesheets };
27
- //# sourceMappingURL=2.js-BljKgZ5E.js.map
27
+ //# sourceMappingURL=2.js-CzgP_zp4.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepseek-insight/dsi",
3
- "version": "0.6.5",
3
+ "version": "0.6.9",
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",
@@ -45,6 +45,7 @@
45
45
  },
46
46
  "files": [
47
47
  ".agents",
48
+ "skills",
48
49
  "bin",
49
50
  "build",
50
51
  "template",
@@ -1,3 +1,8 @@
1
+ ---
2
+ name: dsh-jump-prepare-fix
3
+ description: Use when a DSH edition jump dies with "Cannot read properties of undefined (reading 'prepare')" on every tool call — one verified cause class (the scheduler-Symbol split between module copies) and one validated fix.
4
+ ---
5
+
1
6
  # DSH Jump Unstick — the `prepare` Scheduler-Symbol Split
2
7
 
3
8
  Every DSH edition jump that dies with `Cannot read properties of undefined
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: dsi-rca
3
+ description: Use when writing, reviewing, or marking done any RCA in deepseek-insight's dev/kb/rca/ — before drafting the first line and as the final self-audit before claiming the RCA is finished. Enforces the narrative standard the operator set after rejecting a copy-paste RCA — layman glossary, story-driven failure chains, and a mermaid flowchart AND sequence diagram are hard requirements, not style preferences.
4
+ ---
5
+
6
+ # DeepSeek Insight RCA Standard
7
+
8
+ An RCA that reads like release notes is a failed RCA. This skill exists
9
+ because an agent under context rot pastes the commit message into a template
10
+ and calls it a root-cause analysis — no story, no layman path in, no
11
+ diagrams. The operator rejected exactly that (2026-10-06: *"paragraph seems
12
+ like just copy paste, lack of proper narrative, not layman friendly, and
13
+ worst do not have mermaid flow & sequence diagram"*). Everything below is
14
+ that rejection turned into law.
15
+
16
+ The exemplar that defines the bar:
17
+ `dev/kb/rca/2026-10-06 - RCA — The Renderer That Told the Truth Badly
18
+ (Dull Diagrams, Single-Line Tables, Captures From the Top).md` — three bugs,
19
+ one shared root, four mermaid diagrams, and a glossary a newcomer reads
20
+ before any code.
21
+
22
+ **References (load before drafting):**
23
+
24
+ - `references/rca-template.md` — the copy-verbatim skeleton, section-by-
25
+ section depth guide, and the single-defect variant note. **The template
26
+ lives there, not here; never write an RCA from memory of this page.**
27
+ - `references/mermaid-rules.md` — diagram choice table (flowchart vs
28
+ sequence), the seven syntax gates that have each broken a real diagram,
29
+ and the accessibility/tone rules for label text.
30
+
31
+ ## 1. RCA or ADR or plain KB?
32
+
33
+ - An **ADR** (dev/architectural-decission/, see the `dsi-adr` skill) records
34
+ a *decision and its cost* — what was chosen, what was rejected.
35
+ - A **KB note** documents *how a surface works* today.
36
+ - An **RCA** (dev/kb/rca/) reconstructs *how a defect came to exist and what
37
+ its existence teaches*. If your draft names no decision to revisit and no
38
+ defect to explain, it is not an RCA — rehome it. An RCA that ends without
39
+ a carry-forward lesson is a post-mortem of the code; the lesson is the
40
+ post-mortem of the *process*.
41
+
42
+ ## 2. The hard requirements (any "no" = unfinished)
43
+
44
+ 1. **Narrative, never paste.** Every section explains *why* in plain
45
+ sentences before naming a file or line. Commit messages, diff hunks, and
46
+ test output may be *cited*, never pasted as prose. If a paragraph could
47
+ stand inside a commit message, rewrite it.
48
+ 2. **Quote the operator.** Open with the defect in the operator's (or the
49
+ test's, or the user's) own words. The gap between those words and the
50
+ code is the story the RCA tells.
51
+ 3. **Layman glossary before the body.** A *Words used below* table defines
52
+ every term the body will use in one plain sentence each. A newcomer reads
53
+ the note top-to-bottom without opening the codebase.
54
+ 4. **A mermaid flowchart per failure chain.** Each bug/defect gets its own
55
+ `flowchart TD` tracing decision → inherited consequence → visible
56
+ symptom → complaint. The chain shows how a *reasonable* choice at time T
57
+ became a defect at time T+1 — that is the root in root-cause.
58
+ 5. **A mermaid sequenceDiagram wherever responsibility moves between
59
+ actors** (operator ↔ component ↔ runtime, caller ↔ clone). A flowchart
60
+ shows *how the state went bad*; the sequence shows *who handed it over*.
61
+ Choice table and syntax gates: `references/mermaid-rules.md`.
62
+ 6. **A shared-root paragraph** when the RCA covers multiple defects: one
63
+ paragraph naming the single underlying cause (stale defaults, an
64
+ inheritance chain, a missing contract) that the individual fixes merely
65
+ trimmed. Multi-bug RCAs without a shared root are a changelog.
66
+ 7. **"What does NOT change"** — the blast radius must be bounded in writing,
67
+ so the reader knows what the fix deliberately left alone.
68
+ 8. **"What to carry forward"** — dated, portable lessons (not "be careful";
69
+ rules like *"a clone is a photograph of a fresh document"*), each earned
70
+ by a specific trap in this RCA.
71
+ 9. **Fact discipline (same as the ADR skill):** every fact traces to
72
+ something inspected THIS session — file + line, a simulation's output, a
73
+ test run, a commit sha. Cite the shas.
74
+
75
+ ## 3. The self-audit (before claiming done)
76
+
77
+ Answer each aloud, in the transcript, yes or no:
78
+
79
+ 1. Is every section narrative — could any paragraph be pasted into a commit
80
+ message? (Must be no.)
81
+ 2. Are the operator's own words quoted at the top?
82
+ 3. Would a newcomer who reads only the glossary + opening follow the story
83
+ without the codebase?
84
+ 4. Does EVERY failure chain have a mermaid flowchart, and does every
85
+ multi-actor hand-off have a sequence diagram — all parsing clean per
86
+ `references/mermaid-rules.md`?
87
+ 5. Does a multi-defect RCA name the shared root in one paragraph?
88
+ 6. Is "What does NOT change" present and specific?
89
+ 7. Is every carry-forward lesson a rule earned by a named trap?
90
+ 8. Does every fact carry a source inspected this session (file+line, sha,
91
+ simulation output)?
92
+ 9. Does the note follow the `references/rca-template.md` skeleton — all
93
+ headings present, all guidance deleted?
94
+
95
+ Any "no" is an unfinished RCA. Fix it or shrink its claim — never declare
96
+ done with a standing "no".
97
+
98
+ ## 4. Reviewing an RCA
99
+
100
+ Run the same audit from outside. The three rejection reasons that matter
101
+ most: a section that reads like a commit message; a missing or unparsable
102
+ diagram; a carry-forward list of vibes. Style is negotiable; those three
103
+ are not.