@deepseek-insight/dsi 0.5.25 → 0.5.28

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 (41) hide show
  1. package/.agents/skills/dsi-skill-shelf/shelf.mjs +44 -8
  2. package/build/client/_app/immutable/assets/0.BbBUj8Gs.css +2 -0
  3. package/build/client/_app/immutable/assets/{2.DqAZaZ6x.css → 2.B2JMICOx.css} +1 -1
  4. package/build/client/_app/immutable/chunks/7Cwr8kza.js +2 -0
  5. package/build/client/_app/immutable/chunks/{DEg6k2po.js → BON9iBkg.js} +1 -1
  6. package/build/client/_app/immutable/chunks/BhGIMonO.js +1 -0
  7. package/build/client/_app/immutable/chunks/JUnzbOzp.js +1 -0
  8. package/build/client/_app/immutable/entry/{app.CkwTkkSM.js → app.6e4sUU7v.js} +2 -2
  9. package/build/client/_app/immutable/entry/start.D72WNlTR.js +1 -0
  10. package/build/client/_app/immutable/nodes/{1.8K25GLCS.js → 1.-A9vZZ8l.js} +1 -1
  11. package/build/client/_app/immutable/nodes/2.B4A-t40v.js +171 -0
  12. package/build/client/_app/version.json +1 -1
  13. package/build/handler.js +4 -4
  14. package/build/index.js +4 -4
  15. package/build/server/chunks/chunks/engine.js-BRoFbCnL.js +151 -0
  16. package/build/server/chunks/chunks/{internal.js-1R9PHQNf.js → internal.js-D8x7GLa_.js} +2 -2
  17. package/build/server/chunks/chunks/{state.js-vRL4xZQO.js → state.js-CtooVhy2.js} +2 -2
  18. package/build/server/chunks/entries/endpoints/api/skills/install/{_server.ts.js-Dvoz59-b.js → _server.ts.js-DijnCqgt.js} +2 -2
  19. package/build/server/chunks/entries/endpoints/api/skills/progress/_server.ts.js-DdqqTrFN.js +59 -0
  20. package/build/server/chunks/entries/endpoints/api/skills/reload/{_server.ts.js-fUUcvsn3.js → _server.ts.js-Cqig6BdK.js} +7 -2
  21. package/build/server/chunks/entries/endpoints/api/skills/reload/cancel/_server.ts.js-CGlFnmuI.js +31 -0
  22. package/build/server/chunks/entries/endpoints/api/skills/snapshot/{_server.ts.js-C4AvWpBK.js → _server.ts.js-p7P1CFjG.js} +2 -2
  23. package/build/server/chunks/entries/endpoints/api/skills/uninstall/{_server.ts.js-qqFlorKD.js → _server.ts.js-h5IfIfov.js} +2 -2
  24. package/build/server/chunks/entries/pages/{_error.svelte.js-CtYKjJrf.js → _error.svelte.js-CwLfOz2f.js} +3 -3
  25. package/build/server/chunks/entries/pages/{_page.svelte.js-CZV29jqi.js → _page.svelte.js-BuV_IHsD.js} +407 -72
  26. package/build/server/chunks/{handler-BcFykRDA.js → handler-ColmcfM0.js} +3 -3
  27. package/build/server/chunks/{index.js-CYc5jGBw.js → index.js-DmHoK7gj.js} +2 -2
  28. package/build/server/chunks/{manifest.js-CgPn3jEA.js → manifest.js-86jbZL3a.js} +23 -9
  29. package/build/server/chunks/nodes/{0.js-DO4F8XMq.js → 0.js-iA5BIbe7.js} +3 -3
  30. package/build/server/chunks/nodes/1.js-DnDflQU8.js +9 -0
  31. package/build/server/chunks/nodes/{2.js-DVa5udLN.js → 2.js-JnwIEt5u.js} +4 -4
  32. package/package.json +10 -2
  33. package/build/client/_app/immutable/assets/0.DoqT6ojN.css +0 -2
  34. package/build/client/_app/immutable/chunks/C1BIbywb.js +0 -1
  35. package/build/client/_app/immutable/chunks/CN_lPpCU.js +0 -1
  36. package/build/client/_app/immutable/chunks/QV2fW_C7.js +0 -2
  37. package/build/client/_app/immutable/entry/start.DxUGjIjy.js +0 -1
  38. package/build/client/_app/immutable/nodes/2.CZgpKf5S.js +0 -171
  39. package/build/server/chunks/chunks/engine.js-DzJkajy7.js +0 -90
  40. package/build/server/chunks/nodes/1.js-B3lmNFSp.js +0 -9
  41. /package/build/client/_app/immutable/nodes/{0.DlNmLZ8S.js → 0.B3l2ZewD.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-1R9PHQNf.js';
1
+ import { c as onDestroy, d as __exportAll } from '../../chunks/internal.js-D8x7GLa_.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-BvW5LrfQ.js';
4
4
  import { m as mergeEntries, c as collapseSystemPromptEntries, t as truncate } from '../../chunks/dsh-events.js-DEZgATm-.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-F-U5xz0r.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-vRL4xZQO.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-CtooVhy2.js';
11
11
  import 'yaml';
12
12
  import 'html-to-image';
13
13
  import hljs from 'highlight.js/lib/core';
@@ -2742,6 +2742,38 @@ var ctxchipuserapproval3 = ((inputs = {}, options = {}) => {
2742
2742
  return en_ctxchipuserapproval3();
2743
2743
  });
2744
2744
  //#endregion
2745
+ //#region src/lib/paraglide/messages/ctxsnapshotsupersedes2.js
2746
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2747
+ /** @typedef {{}} Ctxsnapshotsupersedes2Inputs */
2748
+ var en_ctxsnapshotsupersedes2 = () => {
2749
+ return `Supersedes earlier snapshots`;
2750
+ };
2751
+ var zh_ctxsnapshotsupersedes2 = () => {
2752
+ return `取代先前的快照`;
2753
+ };
2754
+ var id_ctxsnapshotsupersedes2 = () => {
2755
+ return `Menggantikan cuplikan sebelumnya`;
2756
+ };
2757
+ var es_ctxsnapshotsupersedes2 = () => {
2758
+ return `Sustituye a las instantáneas anteriores`;
2759
+ };
2760
+ /**
2761
+ * | output |
2762
+ * | --- |
2763
+ * | "Supersedes earlier snapshots" |
2764
+ *
2765
+ * @param {Ctxsnapshotsupersedes2Inputs} inputs
2766
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
2767
+ * @returns {LocalizedString}
2768
+ */
2769
+ var ctxsnapshotsupersedes2 = ((inputs = {}, options = {}) => {
2770
+ const locale = options.locale ?? getLocale();
2771
+ if (locale === "zh") return zh_ctxsnapshotsupersedes2();
2772
+ if (locale === "id") return id_ctxsnapshotsupersedes2();
2773
+ if (locale === "es") return es_ctxsnapshotsupersedes2();
2774
+ return en_ctxsnapshotsupersedes2();
2775
+ });
2776
+ //#endregion
2745
2777
  //#region src/lib/paraglide/messages/ctxwindowtitle2.js
2746
2778
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
2747
2779
  /** @typedef {{ used: NonNullable<unknown>, limit: NonNullable<unknown> }} Ctxwindowtitle2Inputs */
@@ -9590,6 +9622,70 @@ var skillsshelfnooverview3 = ((inputs = {}, options = {}) => {
9590
9622
  return en_skillsshelfnooverview3();
9591
9623
  });
9592
9624
  //#endregion
9625
+ //#region src/lib/paraglide/messages/skillsshelfopenauthor3.js
9626
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9627
+ /** @typedef {{}} Skillsshelfopenauthor3Inputs */
9628
+ var en_skillsshelfopenauthor3 = () => {
9629
+ return `Open the author profile in a new tab`;
9630
+ };
9631
+ var zh_skillsshelfopenauthor3 = () => {
9632
+ return `在新标签页打开作者主页`;
9633
+ };
9634
+ var id_skillsshelfopenauthor3 = () => {
9635
+ return `Buka profil penulis di tab baru`;
9636
+ };
9637
+ var es_skillsshelfopenauthor3 = () => {
9638
+ return `Abrir el perfil del autor en una pestaña nueva`;
9639
+ };
9640
+ /**
9641
+ * | output |
9642
+ * | --- |
9643
+ * | "Open the author profile in a new tab" |
9644
+ *
9645
+ * @param {Skillsshelfopenauthor3Inputs} inputs
9646
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9647
+ * @returns {LocalizedString}
9648
+ */
9649
+ var skillsshelfopenauthor3 = ((inputs = {}, options = {}) => {
9650
+ const locale = options.locale ?? getLocale();
9651
+ if (locale === "zh") return zh_skillsshelfopenauthor3();
9652
+ if (locale === "id") return id_skillsshelfopenauthor3();
9653
+ if (locale === "es") return es_skillsshelfopenauthor3();
9654
+ return en_skillsshelfopenauthor3();
9655
+ });
9656
+ //#endregion
9657
+ //#region src/lib/paraglide/messages/skillsshelfopenrepo3.js
9658
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9659
+ /** @typedef {{}} Skillsshelfopenrepo3Inputs */
9660
+ var en_skillsshelfopenrepo3 = () => {
9661
+ return `Open the source repository in a new tab`;
9662
+ };
9663
+ var zh_skillsshelfopenrepo3 = () => {
9664
+ return `在新标签页打开源代码仓库`;
9665
+ };
9666
+ var id_skillsshelfopenrepo3 = () => {
9667
+ return `Buka repositori sumber di tab baru`;
9668
+ };
9669
+ var es_skillsshelfopenrepo3 = () => {
9670
+ return `Abrir el repositorio fuente en una pestaña nueva`;
9671
+ };
9672
+ /**
9673
+ * | output |
9674
+ * | --- |
9675
+ * | "Open the source repository in a new tab" |
9676
+ *
9677
+ * @param {Skillsshelfopenrepo3Inputs} inputs
9678
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9679
+ * @returns {LocalizedString}
9680
+ */
9681
+ var skillsshelfopenrepo3 = ((inputs = {}, options = {}) => {
9682
+ const locale = options.locale ?? getLocale();
9683
+ if (locale === "zh") return zh_skillsshelfopenrepo3();
9684
+ if (locale === "id") return id_skillsshelfopenrepo3();
9685
+ if (locale === "es") return es_skillsshelfopenrepo3();
9686
+ return en_skillsshelfopenrepo3();
9687
+ });
9688
+ //#endregion
9593
9689
  //#region src/lib/paraglide/messages/skillsshelfreload2.js
9594
9690
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9595
9691
  /** @typedef {{}} Skillsshelfreload2Inputs */
@@ -9622,6 +9718,102 @@ var skillsshelfreload2 = ((inputs = {}, options = {}) => {
9622
9718
  return en_skillsshelfreload2();
9623
9719
  });
9624
9720
  //#endregion
9721
+ //#region src/lib/paraglide/messages/skillsshelfreloadcancel3.js
9722
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9723
+ /** @typedef {{}} Skillsshelfreloadcancel3Inputs */
9724
+ var en_skillsshelfreloadcancel3 = () => {
9725
+ return `Cancel reload`;
9726
+ };
9727
+ var zh_skillsshelfreloadcancel3 = () => {
9728
+ return `取消重新加载`;
9729
+ };
9730
+ var id_skillsshelfreloadcancel3 = () => {
9731
+ return `Batalkan muat ulang`;
9732
+ };
9733
+ var es_skillsshelfreloadcancel3 = () => {
9734
+ return `Cancelar recarga`;
9735
+ };
9736
+ /**
9737
+ * | output |
9738
+ * | --- |
9739
+ * | "Cancel reload" |
9740
+ *
9741
+ * @param {Skillsshelfreloadcancel3Inputs} inputs
9742
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9743
+ * @returns {LocalizedString}
9744
+ */
9745
+ var skillsshelfreloadcancel3 = ((inputs = {}, options = {}) => {
9746
+ const locale = options.locale ?? getLocale();
9747
+ if (locale === "zh") return zh_skillsshelfreloadcancel3();
9748
+ if (locale === "id") return id_skillsshelfreloadcancel3();
9749
+ if (locale === "es") return es_skillsshelfreloadcancel3();
9750
+ return en_skillsshelfreloadcancel3();
9751
+ });
9752
+ //#endregion
9753
+ //#region src/lib/paraglide/messages/skillsshelfreloaded2.js
9754
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9755
+ /** @typedef {{}} Skillsshelfreloaded2Inputs */
9756
+ var en_skillsshelfreloaded2 = () => {
9757
+ return `Skills reloaded`;
9758
+ };
9759
+ var zh_skillsshelfreloaded2 = () => {
9760
+ return `技能已重新加载`;
9761
+ };
9762
+ var id_skillsshelfreloaded2 = () => {
9763
+ return `Keahlian dimuat ulang`;
9764
+ };
9765
+ var es_skillsshelfreloaded2 = () => {
9766
+ return `Habilidades recargadas`;
9767
+ };
9768
+ /**
9769
+ * | output |
9770
+ * | --- |
9771
+ * | "Skills reloaded" |
9772
+ *
9773
+ * @param {Skillsshelfreloaded2Inputs} inputs
9774
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9775
+ * @returns {LocalizedString}
9776
+ */
9777
+ var skillsshelfreloaded2 = ((inputs = {}, options = {}) => {
9778
+ const locale = options.locale ?? getLocale();
9779
+ if (locale === "zh") return zh_skillsshelfreloaded2();
9780
+ if (locale === "id") return id_skillsshelfreloaded2();
9781
+ if (locale === "es") return es_skillsshelfreloaded2();
9782
+ return en_skillsshelfreloaded2();
9783
+ });
9784
+ //#endregion
9785
+ //#region src/lib/paraglide/messages/skillsshelfreloading2.js
9786
+ /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9787
+ /** @typedef {{}} Skillsshelfreloading2Inputs */
9788
+ var en_skillsshelfreloading2 = () => {
9789
+ return `Reloading skills…`;
9790
+ };
9791
+ var zh_skillsshelfreloading2 = () => {
9792
+ return `正在重新加载技能…`;
9793
+ };
9794
+ var id_skillsshelfreloading2 = () => {
9795
+ return `Memuat ulang keahlian…`;
9796
+ };
9797
+ var es_skillsshelfreloading2 = () => {
9798
+ return `Recargando habilidades…`;
9799
+ };
9800
+ /**
9801
+ * | output |
9802
+ * | --- |
9803
+ * | "Reloading skills…" |
9804
+ *
9805
+ * @param {Skillsshelfreloading2Inputs} inputs
9806
+ * @param {{ locale?: "en" | "zh" | "id" | "es" }} options
9807
+ * @returns {LocalizedString}
9808
+ */
9809
+ var skillsshelfreloading2 = ((inputs = {}, options = {}) => {
9810
+ const locale = options.locale ?? getLocale();
9811
+ if (locale === "zh") return zh_skillsshelfreloading2();
9812
+ if (locale === "id") return id_skillsshelfreloading2();
9813
+ if (locale === "es") return es_skillsshelfreloading2();
9814
+ return en_skillsshelfreloading2();
9815
+ });
9816
+ //#endregion
9625
9817
  //#region src/lib/paraglide/messages/skillsshelfrescan2.js
9626
9818
  /** @typedef {import('../runtime.js').LocalizedString} LocalizedString */
9627
9819
  /** @typedef {{}} Skillsshelfrescan2Inputs */
@@ -11854,6 +12046,7 @@ var _index_exports = /* @__PURE__ */ __exportAll({
11854
12046
  ctxChipSkill: () => ctxchipskill2,
11855
12047
  ctxChipSkills: () => ctxchipskills2,
11856
12048
  ctxChipUserApproval: () => ctxchipuserapproval3,
12049
+ ctxSnapshotSupersedes: () => ctxsnapshotsupersedes2,
11857
12050
  ctxWindowTitle: () => ctxwindowtitle2,
11858
12051
  ctxWindowUnknown: () => ctxwindowunknown2,
11859
12052
  currentModel: () => currentmodel1,
@@ -12071,7 +12264,12 @@ var _index_exports = /* @__PURE__ */ __exportAll({
12071
12264
  skillsShelfInstall: () => skillsshelfinstall2,
12072
12265
  skillsShelfLoading: () => skillsshelfloading2,
12073
12266
  skillsShelfNoOverview: () => skillsshelfnooverview3,
12267
+ skillsShelfOpenAuthor: () => skillsshelfopenauthor3,
12268
+ skillsShelfOpenRepo: () => skillsshelfopenrepo3,
12074
12269
  skillsShelfReload: () => skillsshelfreload2,
12270
+ skillsShelfReloadCancel: () => skillsshelfreloadcancel3,
12271
+ skillsShelfReloaded: () => skillsshelfreloaded2,
12272
+ skillsShelfReloading: () => skillsshelfreloading2,
12075
12273
  skillsShelfRescan: () => skillsshelfrescan2,
12076
12274
  skillsShelfSearch: () => skillsshelfsearch2,
12077
12275
  skillsShelfTabInstall: () => skillsshelftabinstall3,
@@ -12230,6 +12428,7 @@ var messages_exports = /* @__PURE__ */ __exportAll({
12230
12428
  ctxChipSkill: () => ctxchipskill2,
12231
12429
  ctxChipSkills: () => ctxchipskills2,
12232
12430
  ctxChipUserApproval: () => ctxchipuserapproval3,
12431
+ ctxSnapshotSupersedes: () => ctxsnapshotsupersedes2,
12233
12432
  ctxWindowTitle: () => ctxwindowtitle2,
12234
12433
  ctxWindowUnknown: () => ctxwindowunknown2,
12235
12434
  currentModel: () => currentmodel1,
@@ -12448,7 +12647,12 @@ var messages_exports = /* @__PURE__ */ __exportAll({
12448
12647
  skillsShelfInstall: () => skillsshelfinstall2,
12449
12648
  skillsShelfLoading: () => skillsshelfloading2,
12450
12649
  skillsShelfNoOverview: () => skillsshelfnooverview3,
12650
+ skillsShelfOpenAuthor: () => skillsshelfopenauthor3,
12651
+ skillsShelfOpenRepo: () => skillsshelfopenrepo3,
12451
12652
  skillsShelfReload: () => skillsshelfreload2,
12653
+ skillsShelfReloadCancel: () => skillsshelfreloadcancel3,
12654
+ skillsShelfReloaded: () => skillsshelfreloaded2,
12655
+ skillsShelfReloading: () => skillsshelfreloading2,
12452
12656
  skillsShelfRescan: () => skillsshelfrescan2,
12453
12657
  skillsShelfSearch: () => skillsshelfsearch2,
12454
12658
  skillsShelfTabInstall: () => skillsshelftabinstall3,
@@ -12903,6 +13107,16 @@ function List_checks($$renderer, $$props) {
12903
13107
  ]));
12904
13108
  }
12905
13109
  //#endregion
13110
+ //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/loader-circle.svelte
13111
+ function Loader_circle($$renderer, $$props) {
13112
+ let { $$slots, $$events, ...props } = $$props;
13113
+ Icon($$renderer, spread_props([
13114
+ { name: "loader-circle" },
13115
+ props,
13116
+ { iconNode: [["path", { "d": "M21 12a9 9 0 1 1-6.219-8.56" }]] }
13117
+ ]));
13118
+ }
13119
+ //#endregion
12906
13120
  //#region node_modules/.pnpm/@lucide+svelte@1.35.0_svelte@5.56.10/node_modules/@lucide/svelte/dist/icons/message-square-text.svelte
12907
13121
  function Message_square_text($$renderer, $$props) {
12908
13122
  let { $$slots, $$events, ...props } = $$props;
@@ -19647,6 +19861,111 @@ function ContextInjection($$renderer, $$props) {
19647
19861
  });
19648
19862
  }
19649
19863
  //#endregion
19864
+ //#region src/lib/utils/context-chip.ts
19865
+ /** The wire-carried chip name for name-bearing producers, read from the
19866
+ * entry's verbatim source (BC-11): the invoked skill's name, the first
19867
+ * recall reference's label, the injecting plugin's own string, or an
19868
+ * unknown kind string; undefined when none is readable (the chip falls
19869
+ * back to its bare category). */
19870
+ function chipNameOf(meta, metaSource) {
19871
+ const str = (v) => typeof v === "string" && v !== "" ? v : void 0;
19872
+ switch (meta) {
19873
+ case "skill-invocation": return str(metaSource?.name);
19874
+ case "recall": {
19875
+ const refs = metaSource?.references;
19876
+ if (!Array.isArray(refs)) return void 0;
19877
+ return str(refs[0]?.label);
19878
+ }
19879
+ case "plugin": return str(metaSource?.plugin);
19880
+ case "injected": return str(metaSource?.kind);
19881
+ default: return;
19882
+ }
19883
+ }
19884
+ /**
19885
+ * The runtime-context snapshot's named contributions, read off the entry's
19886
+ * verbatim wire source (ADR "The Section Split", D1). All-or-nothing, the
19887
+ * same contract DSH's chat applies: every section must carry a non-empty
19888
+ * string name and a string text, and the list must be non-empty — one
19889
+ * malformed element discards the whole list. Undefined when the source is
19890
+ * absent or unreadable, which callers render as the plain body.
19891
+ * @param metaSource - the entry's verbatim source object, if any.
19892
+ * @returns the sections in wire order, or undefined when unusable.
19893
+ */
19894
+ function snapshotSectionsOf(metaSource) {
19895
+ const sections = metaSource?.sections;
19896
+ if (!Array.isArray(sections) || sections.length === 0) return void 0;
19897
+ const parsed = [];
19898
+ for (const item of sections) {
19899
+ if (typeof item !== "object" || item === null) return void 0;
19900
+ const { name, text } = item;
19901
+ if (typeof name !== "string" || name === "" || typeof text !== "string") return void 0;
19902
+ parsed.push({
19903
+ name,
19904
+ text
19905
+ });
19906
+ }
19907
+ return parsed;
19908
+ }
19909
+ /**
19910
+ * The sender session of a subagent report/settled chip, read from the
19911
+ * entry's verbatim source (`subagent-report`/`subagent-settled` carry
19912
+ * `senderSessionId`): the open affordance targets that child panel.
19913
+ * Structural only — every other chip yields undefined (no affordance).
19914
+ */
19915
+ function subagentSenderOf(meta, metaSource) {
19916
+ if (meta !== "injected") return void 0;
19917
+ const kind = metaSource?.kind;
19918
+ if (kind !== "subagent-report" && kind !== "subagent-settled") return void 0;
19919
+ const sender = metaSource?.senderSessionId;
19920
+ return typeof sender === "string" && sender !== "" ? sender : void 0;
19921
+ }
19922
+ /** The chip's `onopen` callback — present only on subagent report/settled
19923
+ * chips whose source names a sender session. Opens the sender's panel
19924
+ * through the floor registry (graceful no-op when no floor is mounted);
19925
+ * the sender row is never focused. */
19926
+ function subagentOpenOf(meta, metaSource) {
19927
+ const sender = subagentSenderOf(meta, metaSource);
19928
+ return sender === void 0 ? void 0 : () => addPanelFromSidebar();
19929
+ }
19930
+ //#endregion
19931
+ //#region src/lib/components/message/ContextSnapshotBody.svelte
19932
+ function ContextSnapshotBody($$renderer, $$props) {
19933
+ $$renderer.component(($$renderer) => {
19934
+ /**
19935
+ * ContextSnapshotBody — the expanded body of a context chip (ADR "The
19936
+ * Section Split", D2/D4): for a runtime-context snapshot whose wire
19937
+ * `sections` parse all-or-nothing, the supersedes caption plus one
19938
+ * text-node block per section (the producer's own boundaries — DSH
19939
+ * ContextBody parity). Anything unreadable falls back to today's
19940
+ * markdown body over the joined text, so every other producer and every
19941
+ * malformed record renders byte-identically to the pre-split chip.
19942
+ *
19943
+ * XSS posture: section names and text render as TEXT nodes only
19944
+ * (BC-12 — no {@html}); markdown syntax inside a section shows raw.
19945
+ */
19946
+ let { text, metaSource } = $$props;
19947
+ const sections = derived(() => snapshotSectionsOf(metaSource));
19948
+ if (sections()) {
19949
+ $$renderer.push("<!--[0-->");
19950
+ $$renderer.push(`<p data-svelte="ContextSnapshotBody"${attr("data-csb", "s:" + (sections()?.length ?? "none") + ";src:" + JSON.stringify(metaSource ?? null))} data-testid="context-snapshot-supersedes" class="mb-1.5 flex items-center gap-1 text-[10px] font-medium uppercase tracking-wide text-accent-purple/80">${escape_html(t(ctxsnapshotsupersedes2))}</p> <div data-svelte="ContextSnapshotBody" data-testid="context-sections" class="flex flex-col gap-1.5"><!--[-->`);
19951
+ const each_array = ensure_array_like(sections());
19952
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
19953
+ let section = each_array[$$index];
19954
+ $$renderer.push(`<div class="rounded-md border border-slate-500/15 bg-slate-500/5 p-1.5" data-testid="context-section"><span class="font-mono text-[10px] font-medium text-accent-purple">${escape_html(section.name)}</span> <p class="mt-0.5 whitespace-pre-wrap break-words font-mono text-[11px] leading-relaxed text-text-secondary">${escape_html(section.text)}</p></div>`);
19955
+ }
19956
+ $$renderer.push(`<!--]--></div>`);
19957
+ } else {
19958
+ $$renderer.push("<!--[-1-->");
19959
+ MarkdownContent($$renderer, {
19960
+ content: text,
19961
+ small: true,
19962
+ hideToggle: true
19963
+ });
19964
+ }
19965
+ $$renderer.push(`<!--]-->`);
19966
+ });
19967
+ }
19968
+ //#endregion
19650
19969
  //#region src/lib/components/message/SystemPromptChip.svelte
19651
19970
  function SystemPromptChip($$renderer, $$props) {
19652
19971
  $$renderer.component(($$renderer) => {
@@ -21418,48 +21737,6 @@ function ReasoningContentViewer($$renderer, $$props) {
21418
21737
  });
21419
21738
  }
21420
21739
  //#endregion
21421
- //#region src/lib/utils/context-chip.ts
21422
- /** The wire-carried chip name for name-bearing producers, read from the
21423
- * entry's verbatim source (BC-11): the invoked skill's name, the first
21424
- * recall reference's label, the injecting plugin's own string, or an
21425
- * unknown kind string; undefined when none is readable (the chip falls
21426
- * back to its bare category). */
21427
- function chipNameOf(meta, metaSource) {
21428
- const str = (v) => typeof v === "string" && v !== "" ? v : void 0;
21429
- switch (meta) {
21430
- case "skill-invocation": return str(metaSource?.name);
21431
- case "recall": {
21432
- const refs = metaSource?.references;
21433
- if (!Array.isArray(refs)) return void 0;
21434
- return str(refs[0]?.label);
21435
- }
21436
- case "plugin": return str(metaSource?.plugin);
21437
- case "injected": return str(metaSource?.kind);
21438
- default: return;
21439
- }
21440
- }
21441
- /**
21442
- * The sender session of a subagent report/settled chip, read from the
21443
- * entry's verbatim source (`subagent-report`/`subagent-settled` carry
21444
- * `senderSessionId`): the open affordance targets that child panel.
21445
- * Structural only — every other chip yields undefined (no affordance).
21446
- */
21447
- function subagentSenderOf(meta, metaSource) {
21448
- if (meta !== "injected") return void 0;
21449
- const kind = metaSource?.kind;
21450
- if (kind !== "subagent-report" && kind !== "subagent-settled") return void 0;
21451
- const sender = metaSource?.senderSessionId;
21452
- return typeof sender === "string" && sender !== "" ? sender : void 0;
21453
- }
21454
- /** The chip's `onopen` callback — present only on subagent report/settled
21455
- * chips whose source names a sender session. Opens the sender's panel
21456
- * through the floor registry (graceful no-op when no floor is mounted);
21457
- * the sender row is never focused. */
21458
- function subagentOpenOf(meta, metaSource) {
21459
- const sender = subagentSenderOf(meta, metaSource);
21460
- return sender === void 0 ? void 0 : () => addPanelFromSidebar();
21461
- }
21462
- //#endregion
21463
21740
  //#region src/lib/utils/tool-preview.ts
21464
21741
  /**
21465
21742
  * tool-preview — peek-list args preview (OCI extractArgsPreview port,
@@ -21788,10 +22065,9 @@ function InlineToolCalls($$renderer, $$props) {
21788
22065
  ChipPopup($$renderer, {
21789
22066
  children: ($$renderer) => {
21790
22067
  $$renderer.push(`<div class="p-2" data-testid="context-injection-body">`);
21791
- MarkdownContent($$renderer, {
21792
- content: openEntry.text,
21793
- small: true,
21794
- hideToggle: true
22068
+ ContextSnapshotBody($$renderer, {
22069
+ text: openEntry.text,
22070
+ metaSource: openEntry.metaSource
21795
22071
  });
21796
22072
  $$renderer.push(`<!----></div>`);
21797
22073
  },
@@ -22342,10 +22618,9 @@ function ConversationScrollArea($$renderer, $$props) {
22342
22618
  ChipPopup($$renderer, {
22343
22619
  children: ($$renderer) => {
22344
22620
  $$renderer.push(`<div data-testid="context-injection-body" class="p-2">`);
22345
- MarkdownContent($$renderer, {
22346
- content: ctx.text,
22347
- small: true,
22348
- hideToggle: true
22621
+ ContextSnapshotBody($$renderer, {
22622
+ text: ctx.text,
22623
+ metaSource: ctx.metaSource
22349
22624
  });
22350
22625
  $$renderer.push(`<!----></div>`);
22351
22626
  },
@@ -22377,10 +22652,9 @@ function ConversationScrollArea($$renderer, $$props) {
22377
22652
  ChipPopup($$renderer, {
22378
22653
  children: ($$renderer) => {
22379
22654
  $$renderer.push(`<div data-testid="context-injection-body" class="p-2">`);
22380
- MarkdownContent($$renderer, {
22381
- content: ctx.text,
22382
- small: true,
22383
- hideToggle: true
22655
+ ContextSnapshotBody($$renderer, {
22656
+ text: ctx.text,
22657
+ metaSource: ctx.metaSource
22384
22658
  });
22385
22659
  $$renderer.push(`<!----></div>`);
22386
22660
  },
@@ -25187,10 +25461,25 @@ function SettingsSkillsTabgroup($$renderer, $$props) {
25187
25461
  });
25188
25462
  }
25189
25463
  //#endregion
25464
+ //#region src/lib/utils/skill-shelf-reload-machine.ts
25465
+ /**
25466
+ * What the button should show RIGHT NOW. The deadline, not the mount moment,
25467
+ * is the contract: a done blob past its doneAt reads idle even before the
25468
+ * expiry timer fires (timer death is harmless — ADR D1).
25469
+ */
25470
+ function visiblePhase(state, now) {
25471
+ return "idle";
25472
+ }
25473
+ //#endregion
25190
25474
  //#region src/lib/components/settings-skills/SettingsSkillsPanel.svelte
25191
25475
  function SettingsSkillsPanel($$renderer, $$props) {
25192
25476
  $$renderer.component(($$renderer) => {
25193
25477
  let busy = false;
25478
+ let progress = null;
25479
+ const reloadState = derived(() => visiblePhase());
25480
+ /** Persisted reload feedback (hard-reload survival): a restored
25481
+ * 'done' lives out its remaining 5s window; a restored 'loading'
25482
+ * re-issues the reload so the check still lands. */
25194
25483
  let { initialTab = "install", initialCollapsed = null, initialSearch = ""} = $$props;
25195
25484
  let tab = initialTab;
25196
25485
  initialCollapsed === null ? null : new Set(initialCollapsed);
@@ -25230,12 +25519,43 @@ function SettingsSkillsPanel($$renderer, $$props) {
25230
25519
  $$renderer.push(`<!----> <div class="shelf-header-actions svelte-lnunga">`);
25231
25520
  if (tab === "install") {
25232
25521
  $$renderer.push("<!--[0-->");
25233
- $$renderer.push(`<button type="button" class="shelf-reload svelte-lnunga" data-testid="shelf-reload"${attr("title", t(skillsshelfreload2))}${attr("aria-label", t(skillsshelfreload2))}${attr("disabled", busy, true)}>`);
25234
- Rotate_cw($$renderer, {
25235
- size: 13,
25236
- "aria-hidden": "true"
25237
- });
25238
- $$renderer.push(`<!----></button>`);
25522
+ $$renderer.push(`<button type="button"${attr_class("shelf-reload svelte-lnunga", void 0, {
25523
+ "reloading": reloadState() === "loading",
25524
+ "reloaded": reloadState() === "done"
25525
+ })} data-testid="shelf-reload"${attr("data-reload-state", reloadState())}${attr("title", reloadState() === "loading" ? t(skillsshelfreloading2) : reloadState() === "done" ? t(skillsshelfreloaded2) : t(skillsshelfreload2))}${attr("aria-label", reloadState() === "loading" ? t(skillsshelfreloading2) : reloadState() === "done" ? t(skillsshelfreloaded2) : t(skillsshelfreload2))}${attr("disabled", busy, true)}>`);
25526
+ if (reloadState() === "loading") {
25527
+ $$renderer.push("<!--[0-->");
25528
+ Loader_circle($$renderer, {
25529
+ size: 13,
25530
+ "aria-hidden": "true"
25531
+ });
25532
+ } else if (reloadState() === "done") {
25533
+ $$renderer.push("<!--[1-->");
25534
+ Check($$renderer, {
25535
+ size: 13,
25536
+ "aria-hidden": "true"
25537
+ });
25538
+ } else {
25539
+ $$renderer.push("<!--[-1-->");
25540
+ Rotate_cw($$renderer, {
25541
+ size: 13,
25542
+ "aria-hidden": "true"
25543
+ });
25544
+ }
25545
+ $$renderer.push(`<!--]--> `);
25546
+ if (reloadState() === "loading" && progress);
25547
+ else $$renderer.push("<!--[-1-->");
25548
+ $$renderer.push(`<!--]--></button> `);
25549
+ if (tab === "install" && reloadState() === "loading") {
25550
+ $$renderer.push("<!--[0-->");
25551
+ $$renderer.push(`<button type="button" class="shelf-reload-cancel svelte-lnunga" data-testid="shelf-reload-cancel"${attr("title", t(skillsshelfreloadcancel3))}${attr("aria-label", t(skillsshelfreloadcancel3))}>`);
25552
+ X($$renderer, {
25553
+ size: 13,
25554
+ "aria-hidden": "true"
25555
+ });
25556
+ $$renderer.push(`<!----></button>`);
25557
+ } else $$renderer.push("<!--[-1-->");
25558
+ $$renderer.push(`<!--]-->`);
25239
25559
  } else $$renderer.push("<!--[-1-->");
25240
25560
  $$renderer.push(`<!--]--> <div class="seg-group svelte-lnunga" role="group"${attr("aria-label", t(skillsshelftitle2))} data-testid="shelf-fold-toggle"><button type="button" class="seg left svelte-lnunga"${attr("aria-label", t(skillsshelfcollapseall3))}${attr("title", t(skillsshelfcollapseall3))} data-testid="shelf-collapse-all">`);
25241
25561
  Chevrons_down_up($$renderer, {
@@ -26784,14 +27104,28 @@ function sanitizePanels(raw) {
26784
27104
  target: entry.target,
26785
27105
  width
26786
27106
  };
26787
- if (entry.kind === "skill-shelf") return {
26788
- id: entry.id,
26789
- kind: "skill-shelf",
26790
- tab: entry.tab === "uninstall" ? "uninstall" : "install",
26791
- collapsed: clampExpanded(entry.collapsed),
26792
- searchQ: typeof entry.searchQ === "string" ? entry.searchQ : "",
26793
- width
26794
- };
27107
+ if (entry.kind === "skill-shelf") {
27108
+ let reload = null;
27109
+ const r = entry.reload;
27110
+ if (r && r.phase === "loading" && typeof r.startedAt === "number") reload = {
27111
+ phase: "loading",
27112
+ startedAt: r.startedAt
27113
+ };
27114
+ else if (r && r.phase === "done" && typeof r.startedAt === "number" && typeof r.doneAt === "number" && r.doneAt > Date.now()) reload = {
27115
+ phase: "done",
27116
+ startedAt: r.startedAt,
27117
+ doneAt: r.doneAt
27118
+ };
27119
+ return {
27120
+ id: entry.id,
27121
+ kind: "skill-shelf",
27122
+ tab: entry.tab === "uninstall" ? "uninstall" : "install",
27123
+ collapsed: clampExpanded(entry.collapsed),
27124
+ searchQ: typeof entry.searchQ === "string" ? entry.searchQ : "",
27125
+ reload,
27126
+ width
27127
+ };
27128
+ }
26795
27129
  if (entry.kind === "injected-doc") return {
26796
27130
  id: entry.id,
26797
27131
  kind: "injected-doc",
@@ -28016,7 +28350,8 @@ function _page($$renderer, $$props) {
28016
28350
  SettingsSkillsPanel($$renderer, {
28017
28351
  initialTab: panel.tab ?? "install",
28018
28352
  initialCollapsed: panel.collapsed ?? null,
28019
- initialSearch: panel.searchQ ?? ""});
28353
+ initialSearch: panel.searchQ ?? "",
28354
+ initialReload: panel.reload ?? null});
28020
28355
  $$renderer.push(`<!----></div>`);
28021
28356
  } else if (panel.kind === "settings-editor") {
28022
28357
  $$renderer.push("<!--[2-->");
@@ -28234,4 +28569,4 @@ function _page($$renderer, $$props) {
28234
28569
  }
28235
28570
 
28236
28571
  export { _page as default };
28237
- //# sourceMappingURL=_page.svelte.js-CZV29jqi.js.map
28572
+ //# sourceMappingURL=_page.svelte.js-BuV_IHsD.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-CYc5jGBw.js';
13
- import { m as manifest } from './manifest.js-CgPn3jEA.js';
12
+ import { S as Server } from './index.js-DmHoK7gj.js';
13
+ import { m as manifest } from './manifest.js-86jbZL3a.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-BcFykRDA.js.map
1735
+ //# sourceMappingURL=handler-ColmcfM0.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-1R9PHQNf.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-D8x7GLa_.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-CYc5jGBw.js.map
3864
+ //# sourceMappingURL=index.js-DmHoK7gj.js.map