@deepseek-insight/dsi 0.6.18 → 0.6.20

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 (29) hide show
  1. package/bin/dsi.mjs +30 -7
  2. package/build/client/_app/immutable/assets/{2.C7lNCQCV.css → 2.BqRWIIgD.css} +1 -1
  3. package/build/client/_app/immutable/chunks/BNsgelmQ.js +1 -0
  4. package/build/client/_app/immutable/chunks/{Bqotzgnw.js → BbvYWcEs.js} +1 -1
  5. package/build/client/_app/immutable/chunks/C9uc32GW.js +1 -0
  6. package/build/client/_app/immutable/chunks/{CtUqZStl.js → tw7vR7yM.js} +2 -2
  7. package/build/client/_app/immutable/entry/{app.CGvLdbvX.js → app.BAD3jsui.js} +2 -2
  8. package/build/client/_app/immutable/entry/start.CFzOCQr3.js +1 -0
  9. package/build/client/_app/immutable/nodes/{1.CiNEHoEh.js → 1.COHJn6QL.js} +1 -1
  10. package/build/client/_app/immutable/nodes/{2.5NpWuIn7.js → 2.CpHpu496.js} +64 -64
  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/{internal2.js-C4ukUWRE.js → internal2.js-BDzd2OUR.js} +2 -2
  15. package/build/server/chunks/chunks/{state.js-OSxIx7MQ.js → state.js-Cb31UwpL.js} +2 -2
  16. package/build/server/chunks/entries/pages/{_error.svelte.js-2wYgv54Z.js → _error.svelte.js-BqHQUTpg.js} +3 -3
  17. package/build/server/chunks/entries/pages/{_page.svelte.js-BvcQOPvs.js → _page.svelte.js-CWiGV7R5.js} +328 -149
  18. package/build/server/chunks/{handler-D0h_ogA5.js → handler-CPdXYlKK.js} +3 -3
  19. package/build/server/chunks/{index.js-C43GYBhl.js → index.js-CNYTOWSB.js} +2 -2
  20. package/build/server/chunks/{manifest.js-DN0QODc_.js → manifest.js-CQRa1JdF.js} +4 -4
  21. package/build/server/chunks/nodes/1.js-BQXeCZbQ.js +9 -0
  22. package/build/server/chunks/nodes/{2.js-_OZDbZ-E.js → 2.js-CL8x9-EN.js} +4 -4
  23. package/package.json +2 -2
  24. package/template/.dsi/prompts.sqlite-shm +0 -0
  25. package/template/.dsi/prompts.sqlite-wal +0 -0
  26. package/build/client/_app/immutable/chunks/D-YP16Kb.js +0 -1
  27. package/build/client/_app/immutable/chunks/D21lpWN6.js +0 -1
  28. package/build/client/_app/immutable/entry/start.-NibTCMf.js +0 -1
  29. package/build/server/chunks/nodes/1.js-Da_l90xT.js +0 -9
@@ -8,7 +8,7 @@ import { D as DEFAULT_IMAGE_LIMITS } from '../../chunks/image-limits.js-CUdJ0f7r
8
8
  import { s as sanitizeWorkspaceProfile, d as dsiKey, t as themePrefs } from '../../chunks/theme-prefs.svelte.js-8CaWz46g.js';
9
9
  import { a as appConfig, p as previewSegments, b as parseTagWords, i as isValidTagWord, s as shouldRecordPrompt, g as getTrigger, t as triggerMode, c as searchKey, d as textPreviewOf } from '../../chunks/app-config.svelte.js-D7wkLUkK.js';
10
10
  import { c as getLocale } from '../../chunks/runtime.js-CCJi3XaY.js';
11
- import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-OSxIx7MQ.js';
11
+ import { p as page, a as afterNavigate, t, c as currentLocale, e as replaceState, u as unexpectederror1, s as sessionnotfound2, r as reapednote1, d as dshunreachable1, b as backtoworkspace2 } from '../../chunks/state.js-Cb31UwpL.js';
12
12
  import 'yaml';
13
13
  import 'html-to-image';
14
14
  import hljs from 'highlight.js/lib/core';
@@ -20,7 +20,7 @@ import xml from 'highlight.js/lib/languages/xml';
20
20
  import css from 'highlight.js/lib/languages/css';
21
21
  import '../../chunks/uneval.js-BJ9Qq2SF.js';
22
22
  import '../../chunks/shared.js-HQ0rfhm4.js';
23
- import '../../chunks/internal2.js-C4ukUWRE.js';
23
+ import '../../chunks/internal2.js-BDzd2OUR.js';
24
24
  import '../../chunks/exports.js-DH_tjtdv.js';
25
25
  import '../../chunks/utils.js-CAdNO8Tu.js';
26
26
 
@@ -17140,7 +17140,7 @@ function SlashMenu($$renderer, $$props) {
17140
17140
  * the submit ladder's own priority order) — filtered as the operator
17141
17141
  * types the `/` draft.
17142
17142
  *
17143
- * Presentational (the MacroRunSheet rule): rows + filter query +
17143
+ * Presentational (the MacroBar rule): rows + filter query +
17144
17144
  * lifecycle state in; kind-aware pick events out. No fetch, no store
17145
17145
  * import — the HOST (Composer) owns the draft, the trigger, the
17146
17146
  * catalog state, and the keyboard lifecycle. This component renders;
@@ -18337,8 +18337,8 @@ function ThemeToggle($$renderer, $$props) {
18337
18337
  }
18338
18338
  //#endregion
18339
18339
  //#region package.json
18340
- var version = "0.6.18";
18341
- var dsh = { "webVersion": "0.2.1-alpha.4" };
18340
+ var version = "0.6.20";
18341
+ var dsh = { "webVersion": "0.2.1-rc.2" };
18342
18342
  //#endregion
18343
18343
  //#region src/lib/version.ts
18344
18344
  /**
@@ -21673,6 +21673,23 @@ function parseCommand(text) {
21673
21673
  default: return null;
21674
21674
  }
21675
21675
  }
21676
+ /**
21677
+ * The INTERNAL constructor for the loadinjected command (2026-09-17, The
21678
+ * Retired Typed Command ADR D3): the shelf button's only way to compose
21679
+ * the command — never a string handed back to parseCommand. The shape is
21680
+ * byte-identical to the pre-retirement typed grammar's product (filename
21681
+ * present, args empty, addPanel for --add), so the executor resolves it
21682
+ * exactly as the Loadinjected ADR (2026-09-07, D4) built — resolution,
21683
+ * honest notes, dedupe, placement all keep their single home.
21684
+ */
21685
+ function loadinjectedCommand(displayPath, opts = {}) {
21686
+ return {
21687
+ type: "loadinjected",
21688
+ args: "",
21689
+ filename: displayPath,
21690
+ ...opts.add === true ? { addPanel: true } : {}
21691
+ };
21692
+ }
21676
21693
  //#endregion
21677
21694
  //#region src/lib/services/chat/command-help.ts
21678
21695
  /**
@@ -22757,7 +22774,7 @@ function Composer($$renderer, $$props) {
22757
22774
  * the panel never reaches into the component). */
22758
22775
  /** Slash Menu (ADR "The Slash Menu", 2026-08-30): the session's
22759
22776
  * cached host catalog + lifecycle, bridged from the panel — the
22760
- * component never fetches (props-only, the MacroRunSheet rule);
22777
+ * component never fetches (props-only, the MacroBar rule);
22761
22778
  * null/absent renders the menu's loading row until the bridge
22762
22779
  * lands the first read. */
22763
22780
  /** Fired while the menu is open-shaped and its query moved (the
@@ -27941,7 +27958,7 @@ function FloatingAnchorContainerPopup($$renderer, $$props) {
27941
27958
  });
27942
27959
  }
27943
27960
  //#endregion
27944
- //#region src/lib/components/common/layout/UserMessageJumper.svelte
27961
+ //#region src/lib/components/anchor/user-messages/UserMessageJumper.svelte
27945
27962
  function UserMessageJumper($$renderer, $$props) {
27946
27963
  $$renderer.component(($$renderer) => {
27947
27964
  /**
@@ -27996,7 +28013,7 @@ function UserMessageJumper($$renderer, $$props) {
27996
28013
  });
27997
28014
  }
27998
28015
  //#endregion
27999
- //#region src/lib/components/common/buttons/UserMessagesButton.svelte
28016
+ //#region src/lib/components/anchor/user-messages/UserMessagesButton.svelte
28000
28017
  function UserMessagesButton($$renderer, $$props) {
28001
28018
  $$renderer.component(($$renderer) => {
28002
28019
  /**
@@ -28028,7 +28045,7 @@ function UserMessagesButton($$renderer, $$props) {
28028
28045
  function $$render_inner($$renderer) {
28029
28046
  if (container !== void 0 && groups.some((g) => g.kind === "prompt")) {
28030
28047
  $$renderer.push("<!--[0-->");
28031
- $$renderer.push(`<div data-svelte="UserMessagesButton" class="relative"><button type="button"${attr_class("floating-anchor-btn tone-cyan svelte-1ebzurb", void 0, { "active": open })}${attr("title", t(usermessagestitle2))} data-testid="user-messages-button">`);
28048
+ $$renderer.push(`<div data-svelte="UserMessagesButton" class="relative"><button type="button"${attr_class("floating-anchor-btn tone-cyan svelte-onysyu", void 0, { "active": open })}${attr("title", t(usermessagestitle2))} data-testid="user-messages-button">`);
28032
28049
  Message_square_text($$renderer, { size: 14 });
28033
28050
  $$renderer.push(`<!----></button> `);
28034
28051
  UserMessageJumper($$renderer, {
@@ -28064,7 +28081,7 @@ function BackToTheEdgeButton($$renderer, $$props) {
28064
28081
  });
28065
28082
  }
28066
28083
  //#endregion
28067
- //#region src/lib/components/common/layout/PlanPopup.svelte
28084
+ //#region src/lib/components/anchor/plan/PlanPopup.svelte
28068
28085
  function PlanPopup($$renderer, $$props) {
28069
28086
  $$renderer.component(($$renderer) => {
28070
28087
  /**
@@ -28113,7 +28130,7 @@ function PlanPopup($$renderer, $$props) {
28113
28130
  });
28114
28131
  }
28115
28132
  //#endregion
28116
- //#region src/lib/components/common/buttons/PlanButton.svelte
28133
+ //#region src/lib/components/anchor/plan/PlanButton.svelte
28117
28134
  function PlanButton($$renderer, $$props) {
28118
28135
  $$renderer.component(($$renderer) => {
28119
28136
  /**
@@ -28147,7 +28164,7 @@ function PlanButton($$renderer, $$props) {
28147
28164
  function $$render_inner($$renderer) {
28148
28165
  if (items().length > 0) {
28149
28166
  $$renderer.push("<!--[0-->");
28150
- $$renderer.push(`<div data-svelte="PlanButton" class="relative"><button type="button"${attr_class("floating-anchor-btn tone-purple svelte-dnm04b", void 0, { "active": open })}${attr("title", t(currentplan1) + done() + "/" + items().length + t(donepart1))} data-testid="plan-button">`);
28167
+ $$renderer.push(`<div data-svelte="PlanButton" class="relative"><button type="button"${attr_class("floating-anchor-btn tone-purple svelte-d0p77f", void 0, { "active": open })}${attr("title", t(currentplan1) + done() + "/" + items().length + t(donepart1))} data-testid="plan-button">`);
28151
28168
  List_checks($$renderer, { size: 14 });
28152
28169
  $$renderer.push(`<!----></button> `);
28153
28170
  PlanPopup($$renderer, {
@@ -28174,7 +28191,49 @@ function PlanButton($$renderer, $$props) {
28174
28191
  });
28175
28192
  }
28176
28193
  //#endregion
28177
- //#region src/lib/components/common/buttons/JobsButton.svelte
28194
+ //#region src/lib/components/anchor/job/JobsPopup.svelte
28195
+ function JobsPopup($$renderer, $$props) {
28196
+ $$renderer.component(($$renderer) => {
28197
+ /**
28198
+ * JobsPopup — the popup half of the JobsButton anchor leaf (Job Badge
28199
+ * Wave 3): the shared JobRosterList readout hosted in
28200
+ * FloatingAnchorContainerPopup (The Popup Shell ADR D1) since the
28201
+ * 2026-10-17 placement fix: the hand-rolled absolute popup broke in
28202
+ * embedded panel mode, while the shell's right-full/vertically-centered
28203
+ * placement is the pinned surface the other anchor leaves use.
28204
+ */
28205
+ let { open = void 0, triggerEl, jobs, sessionId } = $$props;
28206
+ let $$settled = true;
28207
+ let $$inner_renderer;
28208
+ function $$render_inner($$renderer) {
28209
+ FloatingAnchorContainerPopup($$renderer, {
28210
+ triggerEl,
28211
+ popupTestId: "jobs-button-popup",
28212
+ get open() {
28213
+ return open;
28214
+ },
28215
+ set open($$value) {
28216
+ open = $$value;
28217
+ $$settled = false;
28218
+ },
28219
+ children: ($$renderer) => {
28220
+ JobRosterList($$renderer, {
28221
+ jobs});
28222
+ },
28223
+ $$slots: { default: true }
28224
+ });
28225
+ }
28226
+ do {
28227
+ $$settled = true;
28228
+ $$inner_renderer = $$renderer.copy();
28229
+ $$render_inner($$inner_renderer);
28230
+ } while (!$$settled);
28231
+ $$renderer.subsume($$inner_renderer);
28232
+ bind_props($$props, { open });
28233
+ });
28234
+ }
28235
+ //#endregion
28236
+ //#region src/lib/components/anchor/job/JobsButton.svelte
28178
28237
  function JobsButton($$renderer, $$props) {
28179
28238
  $$renderer.component(($$renderer) => {
28180
28239
  /**
@@ -28204,22 +28263,18 @@ function JobsButton($$renderer, $$props) {
28204
28263
  function $$render_inner($$renderer) {
28205
28264
  if (liveCount() > 0) {
28206
28265
  $$renderer.push("<!--[0-->");
28207
- $$renderer.push(`<div data-svelte="JobsButton" class="relative" data-testid="jobs-button"><button type="button"${attr_class("floating-anchor-btn tone-amber svelte-1l76ff0", void 0, { "active": open })}${attr("title", t(() => liveCount() === 1 ? jobslivetitle_one2({ n: liveCount() }) : jobslivetitle_other2({ n: liveCount() })))} data-testid="jobs-button-trigger"><span class="dot svelte-1l76ff0"></span>${escape_html(liveCount())}</button> `);
28208
- FloatingAnchorContainerPopup($$renderer, {
28266
+ $$renderer.push(`<div data-svelte="JobsButton" class="relative" data-testid="jobs-button"><button type="button"${attr_class("floating-anchor-btn tone-amber svelte-bs4s7e", void 0, { "active": open })}${attr("title", t(() => liveCount() === 1 ? jobslivetitle_one2({ n: liveCount() }) : jobslivetitle_other2({ n: liveCount() })))} data-testid="jobs-button-trigger"><span class="dot svelte-bs4s7e"></span>${escape_html(liveCount())}</button> `);
28267
+ JobsPopup($$renderer, {
28209
28268
  triggerEl,
28210
- popupTestId: "jobs-button-popup",
28269
+ jobs: jobs(),
28270
+ sessionId,
28211
28271
  get open() {
28212
28272
  return open;
28213
28273
  },
28214
28274
  set open($$value) {
28215
28275
  open = $$value;
28216
28276
  $$settled = false;
28217
- },
28218
- children: ($$renderer) => {
28219
- JobRosterList($$renderer, {
28220
- jobs: jobs()});
28221
- },
28222
- $$slots: { default: true }
28277
+ }
28223
28278
  });
28224
28279
  $$renderer.push(`<!----></div>`);
28225
28280
  } else $$renderer.push("<!--[-1-->");
@@ -28234,6 +28289,71 @@ function JobsButton($$renderer, $$props) {
28234
28289
  });
28235
28290
  }
28236
28291
  //#endregion
28292
+ //#region src/lib/components/anchor/inject/InjectedShelfPopup.svelte
28293
+ function InjectedShelfPopup($$renderer, $$props) {
28294
+ $$renderer.component(($$renderer) => {
28295
+ /**
28296
+ * InjectedShelfPopup — the Injected leaf's row list (extracted from
28297
+ * InjectedShelfButton, 2026-10-18, on the PlanPopup pattern): the
28298
+ * shelf members in the operator's order, each with its prefix copy
28299
+ * affordance and pick target, under the "Injected files: (n)" header.
28300
+ *
28301
+ * Hosting lives in FloatingAnchorContainerPopup (The Popup Shell ADR
28302
+ * D1/D2): placement, pointer re-entry, and the close contract
28303
+ * (Escape or a trusted outside click; the trigger exempt) are the
28304
+ * container's — this leaf renders ONLY the rows (copy affordance,
28305
+ * pick, first-load divider). The pick is the host's: the button owns
28306
+ * the SAME parser→executor path the composer command takes (The
28307
+ * Loadinjected ADR D6), so this popup never touches the executor.
28308
+ */
28309
+ let { members, entries, workspace = null, triggerEl, open = false, onpick } = $$props;
28310
+ let $$settled = true;
28311
+ let $$inner_renderer;
28312
+ function $$render_inner($$renderer) {
28313
+ FloatingAnchorContainerPopup($$renderer, {
28314
+ triggerEl,
28315
+ title: t(() => injectedfiles1({ n: members.length })),
28316
+ titleTestId: "injected-shelf-popup-header",
28317
+ popupTestId: "injected-shelf-popup",
28318
+ get open() {
28319
+ return open;
28320
+ },
28321
+ set open($$value) {
28322
+ open = $$value;
28323
+ $$settled = false;
28324
+ },
28325
+ children: ($$renderer) => {
28326
+ $$renderer.push(`<!--[-->`);
28327
+ const each_array = ensure_array_like(members);
28328
+ for (let i = 0, $$length = each_array.length; i < $$length; i++) {
28329
+ let m = each_array[i];
28330
+ if (i > 0 && members[i - 1].firstLoad === true && m.firstLoad === false) {
28331
+ $$renderer.push("<!--[0-->");
28332
+ $$renderer.push(`<hr class="shelf-divider svelte-vu3jcu" data-testid="shelf-first-load-divider"/>`);
28333
+ } else $$renderer.push("<!--[-1-->");
28334
+ $$renderer.push(`<!--]--> <div class="shelf-item svelte-vu3jcu" data-testid="injected-shelf-item"${attr("data-display-path", m.displayPath)}>`);
28335
+ CopyButton($$renderer, {
28336
+ value: m.origin === "system-prompt" ? injectedRecordFor(entries, m.displayPath)?.text ?? m.displayPath : injectedFullPath(workspace, m.displayPath),
28337
+ title: m.origin === "system-prompt" ? "Copy prompt text — a shelf name, not a file" : "Copy full path",
28338
+ class: "shelf-copy"
28339
+ });
28340
+ $$renderer.push(`<!----> <button type="button" role="menuitem" class="shelf-pick svelte-vu3jcu" data-testid="injected-shelf-pick"${attr("title", m.displayPath)}><span class="shelf-pick-path svelte-vu3jcu">${escape_html(m.displayPath)}</span></button></div>`);
28341
+ }
28342
+ $$renderer.push(`<!--]-->`);
28343
+ },
28344
+ $$slots: { default: true }
28345
+ });
28346
+ }
28347
+ do {
28348
+ $$settled = true;
28349
+ $$inner_renderer = $$renderer.copy();
28350
+ $$render_inner($$inner_renderer);
28351
+ } while (!$$settled);
28352
+ $$renderer.subsume($$inner_renderer);
28353
+ bind_props($$props, { open });
28354
+ });
28355
+ }
28356
+ //#endregion
28237
28357
  //#region src/lib/services/chat/executor/workspace.ts
28238
28358
  /**
28239
28359
  * Execute one /permission… line through the typed route (commands/
@@ -29084,7 +29204,7 @@ async function executeHostCommand(line, ctx, onNote) {
29084
29204
  }
29085
29205
  }
29086
29206
  //#endregion
29087
- //#region src/lib/components/conversation/InjectedShelfButton.svelte
29207
+ //#region src/lib/components/anchor/inject/InjectedShelfButton.svelte
29088
29208
  function InjectedShelfButton($$renderer, $$props) {
29089
29209
  $$renderer.component(($$renderer) => {
29090
29210
  /**
@@ -29096,62 +29216,57 @@ function InjectedShelfButton($$renderer, $$props) {
29096
29216
  * one implementation. It NEVER calls the floor registry directly (D6's
29097
29217
  * rejected alternative: a second write path to the floor).
29098
29218
  *
29099
- * Hosting lives in FloatingAnchorContainerPopup since 2026-09-08 (The
29100
- * Popup Shell ADR D1/D2): placement, pointer re-entry, and the close
29101
- * contract (Escape or a trusted outside click; the trigger exempt) are
29102
- * the container's — this leaf renders ONLY the rows (copy affordance,
29103
- * pick, first-load divider). The popup is titled (user decision
29219
+ * The rows live in InjectedShelfPopup since 2026-10-18 (extracted on
29220
+ * the PlanPopup pattern); hosting stays in FloatingAnchorContainerPopup
29221
+ * (The Popup Shell ADR D1/D2): placement, pointer re-entry, and the
29222
+ * close contract (Escape or a trusted outside click; the trigger
29223
+ * exempt) are the container's. The popup is titled (user decision
29104
29224
  * 2026-09-08, amending the ADR's D3 default): "Injected files: (n)".
29105
29225
  *
29106
29226
  * Renders NOTHING when the shelf is empty — the gate moved in with the
29107
29227
  * button (the UserMessagesButton shape: self-contained with its popup).
29108
29228
  */
29109
- let { entries, workspace = null} = $$props;
29229
+ let { entries, sessionId, workspace = null, panelId = null, onnote } = $$props;
29110
29230
  /** Popup open state — the active tone mirrors it on the button. */
29111
29231
  let open = false;
29112
29232
  /** The popup's trigger exclusion element (the wrapper div). */
29113
29233
  let triggerEl = void 0;
29114
29234
  const members = derived(() => injectedShelfFor(entries));
29235
+ /** The D6 pick (amended 2026-09-17, The Retired Typed Command ADR
29236
+ * D3): the SAME executor path, composed through the parser's
29237
+ * constructor — the typed string is retired grammar the button must
29238
+ * never re-assemble. */
29239
+ function pick(displayPath) {
29240
+ open = false;
29241
+ executeCommand(loadinjectedCommand(displayPath, { add: true }), {
29242
+ sessionId,
29243
+ workspace: null,
29244
+ agent: null,
29245
+ panelId,
29246
+ entries
29247
+ }, onnote);
29248
+ }
29115
29249
  let $$settled = true;
29116
29250
  let $$inner_renderer;
29117
29251
  function $$render_inner($$renderer) {
29118
29252
  if (members().length > 0) {
29119
29253
  $$renderer.push("<!--[0-->");
29120
- $$renderer.push(`<div data-svelte="InjectedShelfButton" class="relative svelte-1la1glg"><button type="button"${attr_class("floating-anchor-btn tone-maroon svelte-1la1glg", void 0, { "active": open })}${attr("title", t(injectedtitle1))} data-testid="injected-shelf-button">`);
29254
+ $$renderer.push(`<div data-svelte="InjectedShelfButton" class="relative svelte-1nrpld0"><button type="button"${attr_class("floating-anchor-btn tone-maroon svelte-1nrpld0", void 0, { "active": open })}${attr("title", t(injectedtitle1))} data-testid="injected-shelf-button">`);
29121
29255
  File_text($$renderer, { size: 14 });
29122
29256
  $$renderer.push(`<!----></button> `);
29123
- FloatingAnchorContainerPopup($$renderer, {
29257
+ InjectedShelfPopup($$renderer, {
29258
+ members: members(),
29259
+ entries,
29260
+ workspace,
29124
29261
  triggerEl,
29125
- title: t(() => injectedfiles1({ n: members().length })),
29126
- titleTestId: "injected-shelf-popup-header",
29127
- popupTestId: "injected-shelf-popup",
29262
+ onpick: pick,
29128
29263
  get open() {
29129
29264
  return open;
29130
29265
  },
29131
29266
  set open($$value) {
29132
29267
  open = $$value;
29133
29268
  $$settled = false;
29134
- },
29135
- children: ($$renderer) => {
29136
- $$renderer.push(`<!--[-->`);
29137
- const each_array = ensure_array_like(members());
29138
- for (let i = 0, $$length = each_array.length; i < $$length; i++) {
29139
- let m = each_array[i];
29140
- if (i > 0 && members()[i - 1].firstLoad === true && m.firstLoad === false) {
29141
- $$renderer.push("<!--[0-->");
29142
- $$renderer.push(`<hr class="shelf-divider svelte-1la1glg" data-testid="shelf-first-load-divider"/>`);
29143
- } else $$renderer.push("<!--[-1-->");
29144
- $$renderer.push(`<!--]--> <div class="shelf-item svelte-1la1glg" data-testid="injected-shelf-item"${attr("data-display-path", m.displayPath)}>`);
29145
- CopyButton($$renderer, {
29146
- value: m.origin === "system-prompt" ? injectedRecordFor(entries, m.displayPath)?.text ?? m.displayPath : injectedFullPath(workspace, m.displayPath),
29147
- title: m.origin === "system-prompt" ? "Copy prompt text — a shelf name, not a file" : "Copy full path",
29148
- class: "shelf-copy"
29149
- });
29150
- $$renderer.push(`<!----> <button type="button" role="menuitem" class="shelf-pick svelte-1la1glg" data-testid="injected-shelf-pick"${attr("title", m.displayPath)}><span class="shelf-pick-path svelte-1la1glg">${escape_html(m.displayPath)}</span></button></div>`);
29151
- }
29152
- $$renderer.push(`<!--]-->`);
29153
- },
29154
- $$slots: { default: true }
29269
+ }
29155
29270
  });
29156
29271
  $$renderer.push(`<!----></div>`);
29157
29272
  } else $$renderer.push("<!--[-1-->");
@@ -29177,7 +29292,7 @@ function ConversationFloatingAnchor($$renderer, $$props) {
29177
29292
  * far-edge jump. Purely presentational — the viewport and turn groups
29178
29293
  * arrive as props.
29179
29294
  */
29180
- let { groups, container, todos = null, jobsessionid = "", shelfentries = void 0, shelfworkspace = null} = $$props;
29295
+ let { groups, container, todos = null, jobsessionid = "", shelfentries = void 0, shelfsessionid = "", shelfworkspace = null, shelfpanelid = null, onshelfnote } = $$props;
29181
29296
  if (container !== void 0) {
29182
29297
  $$renderer.push("<!--[0-->");
29183
29298
  FloatingAnchor($$renderer, {
@@ -29190,7 +29305,11 @@ function ConversationFloatingAnchor($$renderer, $$props) {
29190
29305
  $$renderer.push("<!--[0-->");
29191
29306
  InjectedShelfButton($$renderer, {
29192
29307
  entries: shelfentries,
29193
- workspace: shelfworkspace});
29308
+ sessionId: shelfsessionid,
29309
+ workspace: shelfworkspace,
29310
+ panelId: shelfpanelid,
29311
+ onnote: onshelfnote
29312
+ });
29194
29313
  } else $$renderer.push("<!--[-1-->");
29195
29314
  $$renderer.push(`<!--]--> `);
29196
29315
  UserMessagesButton($$renderer, {
@@ -30085,48 +30204,30 @@ var Paging = class {
30085
30204
  }
30086
30205
  };
30087
30206
  //#endregion
30088
- //#region src/lib/components/conversation/MacroRunSheet.svelte
30089
- function MacroRunSheet($$renderer, $$props) {
30207
+ //#region src/lib/components/anchor/macro/MacroChip.svelte
30208
+ function MacroChip($$renderer, $$props) {
30090
30209
  $$renderer.component(($$renderer) => {
30091
30210
  /**
30092
- * MacroRunSheet — the Prompt Macro's status surface (ADR D7 + D9,
30093
- * 2026-08-29): a collapsed CHIP above the composer that expands into
30094
- * the run SHEET — one row per executed line, each with one of six
30095
- * state marks (✓ ▶ ⏳ ⊙ ⊘ ✕).
30096
- *
30097
- * Presentational by contract (PRD Module Map): run state, per-line
30098
- * records, and the panel's own poll truth (running, pendingAnswers)
30099
- * arrive as props; every control leaves as a callback. The component
30100
- * never fetches, never polls, never imports the runner — the panel
30101
- * owns the wiring (D7: "the chip reads the panel's existing poll
30102
- * state; the runner itself never polls").
30103
- *
30104
- * Three truth layers (D9), honestly kept apart:
30105
- * - runner-exact: ⊙ pending(held) · ⏳ queued · ⊘ skipped · ✕ failed
30106
- * (and ✓ for command lines — they complete host-side, no turn)
30107
- * - host-derived (≤ one events poll): ✓ done / ▶ running — the panel
30108
- * computes `lineMarks` from its OWN store (groupTurns pairing);
30109
- * this component only renders what it is handed
30110
- * - the transcript is the ground truth — this sheet is a map
30211
+ * MacroChip — the Prompt Macro's COLLAPSED CHIP (ADR D7, 2026-08-29):
30212
+ * the always-visible layer above the composer. Click toggles the
30213
+ * sheet; Stop is forward-only (unfed lines drop; queued are the
30214
+ * host's — the suffix names the boundary).
30111
30215
  *
30112
- * ▶/✓ derivation inputs (props, never fetched): `landedTurns` = how
30113
- * many of the run's turns have landed at this render (the panel pairs
30114
- * fed lines to assistant-turn groups), `running` = the panel's own
30115
- * store.isStreaming — gates ▶ (the first fed line without a landed
30116
- * turn while a turn is in flight).
30216
+ * Extracted from MacroBar (2026-10-19) — the bar owns the expand
30217
+ * state and renders MacroSheet; this component owns the chip label
30218
+ * derivation (phase labels + honest suffixes) and the Stop / Close
30219
+ * buttons.
30117
30220
  *
30118
- * Mention rows (D9): a turn in ANOTHER session cannot derive ✓ from
30119
- * this panel's poll — the row renders its executor note (`sent to
30120
- * <target>`) and progress delegates to the a2a chip stack.
30221
+ * Presentational by contract: run state and the panel's own poll
30222
+ * truth (running, pendingAnswers) arrive as props; every control
30223
+ * leaves as a callback. Never fetches, never polls.
30121
30224
  */
30122
- let { run, running = false, pendingAnswers = 0, onabort, onclose } = $$props;
30123
- /** Sheet expanded state — the chip toggles it (click again to collapse). */
30124
- let expanded = false;
30125
- /** The run is over (either ending) — [Run again] appears (D10). */
30225
+ let { run, running = false, pendingAnswers = 0, expanded = false, onabort, onclose } = $$props;
30226
+ /** The run is over (either ending) — Close (✕) appears (D10). */
30126
30227
  const ended = derived(() => run.phase === "fed" || run.phase === "stopped" || run.phase === "failed");
30127
30228
  /** A live run could still feed (held or mid-feed) — Stop means
30128
- * "stop sending more"; once everything is queued there is nothing
30129
- * left to hold (abort-after-queued honesty, D10). */
30229
+ * "stop sending more"; once everything is queued there is nothing
30230
+ * left to hold (abort-after-queued honesty, D10). */
30130
30231
  const unfedRemain = derived(() => run.fed < run.total);
30131
30232
  const canAbort = derived(() => (run.phase === "held" || run.phase === "feeding") && unfedRemain());
30132
30233
  /** Collapsed-chip suffixes (D5/D7): the honest queued/asking labels. */
@@ -30137,16 +30238,16 @@ function MacroRunSheet($$renderer, $$props) {
30137
30238
  return "";
30138
30239
  });
30139
30240
  /** The line the chip names while feeding/held — the next unfed
30140
- * section's display (feeding k/n · <display>), else the last
30141
- * record's display. */
30241
+ * section's display (feeding k/n · <display>), else the last
30242
+ * record's display. */
30142
30243
  const currentLine = derived(() => {
30143
30244
  const next = run.lines.find((l) => l.state === "pending" && !l.isQuery);
30144
30245
  if (next) return next.display;
30145
30246
  return run.lines.length > 0 ? run.lines[run.lines.length - 1].display : "";
30146
30247
  });
30147
30248
  /** Chip label per phase (D7): feeding k/n · all-queued k queued ·
30148
- * stopped · failed — plus the suffixes above. Sections counted (a
30149
- * block is one — D15). */
30249
+ * stopped · failed — plus the suffixes above. Sections counted (a
30250
+ * block is one — D15). */
30150
30251
  const chipLabel = derived(() => {
30151
30252
  if (run.phase === "feeding") return `macro ▸ ${run.fed + 1}/${run.total} · ${currentLine()}`;
30152
30253
  if (run.phase === "held") return `macro ⏸ held · ${run.fed}/${run.total}${queuedSuffix()}`;
@@ -30154,19 +30255,52 @@ function MacroRunSheet($$renderer, $$props) {
30154
30255
  if (run.phase === "stopped") return `macro ⏹ stopped · ${run.note ?? ""}`;
30155
30256
  return `macro ✕ failed · ${run.note ?? ""}`;
30156
30257
  });
30258
+ $$renderer.push(`<div data-svelte="MacroChip" class="macro-chip svelte-1hixpzx"${attr("data-phase", run.phase)} data-testid="macro-chip"><button type="button" class="macro-chip-label svelte-1hixpzx"${attr("aria-expanded", expanded)}${attr("title", run.note ?? "Macro run")}><span class="macro-chip-text svelte-1hixpzx">${escape_html(chipLabel())}</span> <span class="macro-chip-caret svelte-1hixpzx">${escape_html(expanded ? "▾" : "▸")}</span></button> `);
30259
+ if (canAbort() && onabort) {
30260
+ $$renderer.push("<!--[0-->");
30261
+ $$renderer.push(`<button type="button" class="macro-stop svelte-1hixpzx" data-testid="macro-stop"${attr("title", t(dropunsubmittedtitle2))}>${escape_html(t(stop))}</button>`);
30262
+ } else $$renderer.push("<!--[-1-->");
30263
+ $$renderer.push(`<!--]--> `);
30264
+ if (ended() && onclose) {
30265
+ $$renderer.push("<!--[0-->");
30266
+ $$renderer.push(`<button type="button" class="macro-close svelte-1hixpzx" data-testid="macro-close"${attr("aria-label", t(dismissrunsheet2))}${attr("title", t(dismiss))}>✕</button>`);
30267
+ } else $$renderer.push("<!--[-1-->");
30268
+ $$renderer.push(`<!--]--></div>`);
30269
+ });
30270
+ }
30271
+ //#endregion
30272
+ //#region src/lib/components/anchor/macro/MacroBar.svelte
30273
+ function MacroBar($$renderer, $$props) {
30274
+ $$renderer.component(($$renderer) => {
30275
+ /**
30276
+ * MacroBar — the Prompt Macro's status surface (ADR D7 + D9,
30277
+ * 2026-08-29): the always-visible layer above the composer, split
30278
+ * into two children — MacroChip (the collapsed chip + Stop/Close)
30279
+ * and MacroSheet (the expanded per-line rows + held/ended controls).
30280
+ * The bar owns the expand state and forwards everything else.
30281
+ *
30282
+ * Presentational by contract (PRD Module Map): run state and the
30283
+ * panel's own poll truth (running, pendingAnswers) arrive as props;
30284
+ * every control leaves as a callback. The component never fetches,
30285
+ * never polls, never imports the runner — the panel owns the wiring
30286
+ * (D7: "the chip reads the panel's existing poll state; the runner
30287
+ * itself never polls").
30288
+ */
30289
+ let { run, running = false, pendingAnswers = 0, onabort, onclose } = $$props;
30290
+ /** Sheet expanded state — the chip toggles it (click again to collapse). */
30291
+ let expanded = false;
30157
30292
  if (run.phase !== "idle") {
30158
30293
  $$renderer.push("<!--[0-->");
30159
- $$renderer.push(`<div data-svelte="MacroRunSheet" class="macro-run svelte-1ojr83s" data-testid="macro-run"><div class="macro-chip svelte-1ojr83s"${attr("data-phase", run.phase)} data-testid="macro-chip"><button type="button" class="macro-chip-label svelte-1ojr83s"${attr("aria-expanded", expanded)}${attr("title", run.note ?? "Macro run")}><span class="macro-chip-text svelte-1ojr83s">${escape_html(chipLabel())}</span> <span class="macro-chip-caret svelte-1ojr83s">${escape_html("▸")}</span></button> `);
30160
- if (canAbort() && onabort) {
30161
- $$renderer.push("<!--[0-->");
30162
- $$renderer.push(`<button type="button" class="macro-stop svelte-1ojr83s" data-testid="macro-stop"${attr("title", t(dropunsubmittedtitle2))}>${escape_html(t(stop))}</button>`);
30163
- } else $$renderer.push("<!--[-1-->");
30164
- $$renderer.push(`<!--]--> `);
30165
- if (ended() && onclose) {
30166
- $$renderer.push("<!--[0-->");
30167
- $$renderer.push(`<button type="button" class="macro-close svelte-1ojr83s" data-testid="macro-close"${attr("aria-label", t(dismissrunsheet2))}${attr("title", t(dismiss))}>✕</button>`);
30168
- } else $$renderer.push("<!--[-1-->");
30169
- $$renderer.push(`<!--]--></div> `);
30294
+ $$renderer.push(`<div data-svelte="MacroBar" class="macro-run svelte-2yo6ia" data-testid="macro-run">`);
30295
+ MacroChip($$renderer, {
30296
+ run,
30297
+ running,
30298
+ pendingAnswers,
30299
+ expanded,
30300
+ onabort,
30301
+ onclose
30302
+ });
30303
+ $$renderer.push(`<!----> `);
30170
30304
  $$renderer.push("<!--[-1-->");
30171
30305
  $$renderer.push(`<!--]--></div>`);
30172
30306
  } else $$renderer.push("<!--[-1-->");
@@ -30174,7 +30308,72 @@ function MacroRunSheet($$renderer, $$props) {
30174
30308
  });
30175
30309
  }
30176
30310
  //#endregion
30177
- //#region src/lib/components/conversation/GoalBar.svelte
30311
+ //#region src/lib/components/anchor/goal/GoalChip.svelte
30312
+ function GoalChip($$renderer, $$props) {
30313
+ $$renderer.component(($$renderer) => {
30314
+ /**
30315
+ * GoalChip — the always-visible collapsed layer of the goal bar (ADR
30316
+ * "The Goal Bar", 2026-09-08, D2): phase glyph, phase label plus
30317
+ * truncated objective, caret that toggles the sheet, and the phase
30318
+ * action buttons (Pause/Resume, Edit, Clear). Extracted from GoalBar as
30319
+ * a presentational child; the expanded state stays GoalBar-owned and
30320
+ * arrives as a prop with a toggle callback.
30321
+ */
30322
+ let { goal, blockedTitle, expanded = false, onpause, onresume, onedit, onclear } = $$props;
30323
+ /** The chip's phase glyph (mirrors DSH's GoalBar language). */
30324
+ const glyph = derived(() => {
30325
+ if (goal.phase === "paused") return "⏸";
30326
+ if (goal.phase === "blocked") return "⚠";
30327
+ return "▶";
30328
+ });
30329
+ /** The objective the chip names, truncated for the one-line title. */
30330
+ const shortObjective = derived(() => goal.objective.length > 80 ? goal.objective.slice(0, 79) + "…" : goal.objective);
30331
+ /** Which phase action the chip offers: Pause on active, Resume on
30332
+ * paused, none on blocked (the host demands a reason fix first). */
30333
+ const phaseAction = derived(() => goal.phase === "active" ? "pause" : goal.phase === "paused" ? "resume" : void 0);
30334
+ $$renderer.push(`<div data-svelte="GoalChip" class="goal-chip svelte-bjt90x"${attr("data-phase", goal.phase)} data-testid="goal-chip"${attr("title", blockedTitle)}><button type="button" class="goal-chip-label svelte-bjt90x"${attr("aria-expanded", expanded)}${attr("title", blockedTitle ?? goal.objective)}><span class="goal-chip-glyph svelte-bjt90x" aria-hidden="true">${escape_html(glyph())}</span> <span class="goal-chip-text svelte-bjt90x">goal ${escape_html(goal.phase)} · ${escape_html(shortObjective())}</span> <span class="goal-chip-caret svelte-bjt90x">${escape_html(expanded ? "▾" : "▸")}</span></button> `);
30335
+ if (phaseAction() === "pause" && onpause) {
30336
+ $$renderer.push("<!--[0-->");
30337
+ $$renderer.push(`<button type="button" class="goal-action svelte-bjt90x" data-testid="goal-pause"${attr("title", t(pausegoal1))}>${escape_html(t(pause))}</button>`);
30338
+ } else $$renderer.push("<!--[-1-->");
30339
+ $$renderer.push(`<!--]--> `);
30340
+ if (phaseAction() === "resume" && onresume) {
30341
+ $$renderer.push("<!--[0-->");
30342
+ $$renderer.push(`<button type="button" class="goal-action svelte-bjt90x" data-testid="goal-resume"${attr("title", t(resumegoal1))}>${escape_html(t(resume))}</button>`);
30343
+ } else $$renderer.push("<!--[-1-->");
30344
+ $$renderer.push(`<!--]--> `);
30345
+ if (onedit) {
30346
+ $$renderer.push("<!--[0-->");
30347
+ $$renderer.push(`<button type="button" class="goal-action svelte-bjt90x" data-testid="goal-edit"${attr("title", t(editobjectivetitle2))}>${escape_html(t(edit))}</button>`);
30348
+ } else $$renderer.push("<!--[-1-->");
30349
+ $$renderer.push(`<!--]--> `);
30350
+ if (onclear) {
30351
+ $$renderer.push("<!--[0-->");
30352
+ $$renderer.push(`<button type="button" class="goal-action goal-clear svelte-bjt90x" data-testid="goal-clear"${attr("aria-label", t(clearthegoal2))}${attr("title", t(clearbtn1))}>✕</button>`);
30353
+ } else $$renderer.push("<!--[-1-->");
30354
+ $$renderer.push(`<!--]--></div>`);
30355
+ });
30356
+ }
30357
+ //#endregion
30358
+ //#region src/lib/components/anchor/goal/GoalEditor.svelte
30359
+ function GoalEditor($$renderer, $$props) {
30360
+ $$renderer.component(($$renderer) => {
30361
+ /**
30362
+ * GoalEditor — the goal editor form (Goal Editor ADR D2/D4): pre-filled
30363
+ * fields, Enter submits, Escape cancels; buttons mirror the keys.
30364
+ * Extracted from GoalBar as a presentational child; the editor state is
30365
+ * panel-owned (GoalBar passes it through) — this component renders
30366
+ * fields and emits callbacks only.
30367
+ */
30368
+ let { editor} = $$props;
30369
+ $$renderer.push(`<div data-svelte="GoalEditor" class="goal-edit-form svelte-yo08sk" data-testid="goal-edit-form"><label class="goal-edit-label svelte-yo08sk"><span>objective</span> <textarea data-testid="goal-edit-objective" rows="2" class="svelte-yo08sk">`);
30370
+ const $$body = escape_html(editor.objective);
30371
+ if ($$body) $$renderer.push(`${$$body}`);
30372
+ $$renderer.push(`</textarea></label> <label class="goal-edit-label svelte-yo08sk"><span>${escape_html(t(maxrounds1))}</span> <input type="number" min="1" step="1" data-testid="goal-edit-rounds"${attr("value", editor.maxGoalRounds)} class="svelte-yo08sk"/></label> <div class="goal-controls svelte-yo08sk"><button type="button" data-testid="goal-edit-submit" class="svelte-yo08sk">${escape_html(t(save))}</button> <button type="button" data-testid="goal-edit-cancel" class="svelte-yo08sk">${escape_html(t(cancel))}</button></div></div>`);
30373
+ });
30374
+ }
30375
+ //#endregion
30376
+ //#region src/lib/components/anchor/goal/GoalBar.svelte
30178
30377
  function GoalBar($$renderer, $$props) {
30179
30378
  $$renderer.component(($$renderer) => {
30180
30379
  /**
@@ -30183,7 +30382,7 @@ function GoalBar($$renderer, $$props) {
30183
30382
  * plus truncated objective — that expands into the goal SHEET (rounds
30184
30383
  * counter, blocked reason when present).
30185
30384
  *
30186
- * Presentational by contract (the MacroRunSheet template): the goal
30385
+ * Presentational by contract (the MacroBar template): the goal
30187
30386
  * value arrives as a prop; every action leaves as a zero-arg callback
30188
30387
  * the panel maps to `/goal <verb>` lines. The component never fetches,
30189
30388
  * never polls, imports no services and no projection module — the
@@ -30201,47 +30400,23 @@ function GoalBar($$renderer, $$props) {
30201
30400
  let expanded = false;
30202
30401
  /** The blocked phase carries its reason; the chip title shows it. */
30203
30402
  const blockedTitle = derived(() => goal?.phase === "blocked" && goal.blockedReason ? "blocked: " + goal.blockedReason.code + " — " + goal.blockedReason.message : void 0);
30204
- /** The chip's phase glyph (mirrors DSH's GoalBar language). */
30205
- const glyph = derived(() => {
30206
- if (!goal) return "";
30207
- if (goal.phase === "paused") return "⏸";
30208
- if (goal.phase === "blocked") return "⚠";
30209
- return "▶";
30210
- });
30211
- /** The objective the chip names, truncated for the one-line title. */
30212
- const shortObjective = derived(() => goal && goal.objective.length > 80 ? goal.objective.slice(0, 79) + "…" : goal?.objective ?? "");
30213
- /** Which phase action the chip offers: Pause on active, Resume on
30214
- * paused, none on blocked (the host demands a reason fix first). */
30215
- const phaseAction = derived(() => goal?.phase === "active" ? "pause" : goal?.phase === "paused" ? "resume" : void 0);
30216
30403
  if (goal && goal.phase !== "complete") {
30217
30404
  $$renderer.push("<!--[0-->");
30218
- $$renderer.push(`<div data-svelte="GoalBar" class="goal-bar svelte-132xors" data-testid="goal-bar"><div class="goal-chip svelte-132xors"${attr("data-phase", goal.phase)} data-testid="goal-chip"${attr("title", blockedTitle())}><button type="button" class="goal-chip-label svelte-132xors"${attr("aria-expanded", expanded)}${attr("title", blockedTitle() ?? goal.objective)}><span class="goal-chip-glyph svelte-132xors" aria-hidden="true">${escape_html(glyph())}</span> <span class="goal-chip-text svelte-132xors">goal ${escape_html(goal.phase)} · ${escape_html(shortObjective())}</span> <span class="goal-chip-caret svelte-132xors">${escape_html("▸")}</span></button> `);
30219
- if (phaseAction() === "pause" && onpause) {
30220
- $$renderer.push("<!--[0-->");
30221
- $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-pause"${attr("title", t(pausegoal1))}>${escape_html(t(pause))}</button>`);
30222
- } else $$renderer.push("<!--[-1-->");
30223
- $$renderer.push(`<!--]--> `);
30224
- if (phaseAction() === "resume" && onresume) {
30225
- $$renderer.push("<!--[0-->");
30226
- $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-resume"${attr("title", t(resumegoal1))}>${escape_html(t(resume))}</button>`);
30227
- } else $$renderer.push("<!--[-1-->");
30228
- $$renderer.push(`<!--]--> `);
30229
- if (onedit) {
30230
- $$renderer.push("<!--[0-->");
30231
- $$renderer.push(`<button type="button" class="goal-action svelte-132xors" data-testid="goal-edit"${attr("title", t(editobjectivetitle2))}>${escape_html(t(edit))}</button>`);
30232
- } else $$renderer.push("<!--[-1-->");
30233
- $$renderer.push(`<!--]--> `);
30234
- if (onclear) {
30235
- $$renderer.push("<!--[0-->");
30236
- $$renderer.push(`<button type="button" class="goal-action goal-clear svelte-132xors" data-testid="goal-clear"${attr("aria-label", t(clearthegoal2))}${attr("title", t(clearbtn1))}>✕</button>`);
30237
- } else $$renderer.push("<!--[-1-->");
30238
- $$renderer.push(`<!--]--></div> `);
30405
+ $$renderer.push(`<div data-svelte="GoalBar" class="goal-bar svelte-reiy" data-testid="goal-bar">`);
30406
+ GoalChip($$renderer, {
30407
+ goal,
30408
+ blockedTitle: blockedTitle(),
30409
+ expanded,
30410
+ onpause,
30411
+ onresume,
30412
+ onedit,
30413
+ onclear
30414
+ });
30415
+ $$renderer.push(`<!----> `);
30239
30416
  if (editor) {
30240
30417
  $$renderer.push("<!--[0-->");
30241
- $$renderer.push(`<div class="goal-edit-form svelte-132xors" data-testid="goal-edit-form"><label class="goal-edit-label svelte-132xors"><span>objective</span> <textarea data-testid="goal-edit-objective" rows="2" class="svelte-132xors">`);
30242
- const $$body = escape_html(editor.objective);
30243
- if ($$body) $$renderer.push(`${$$body}`);
30244
- $$renderer.push(`</textarea></label> <label class="goal-edit-label svelte-132xors"><span>${escape_html(t(maxrounds1))}</span> <input type="number" min="1" step="1" data-testid="goal-edit-rounds"${attr("value", editor.maxGoalRounds)} class="svelte-132xors"/></label> <div class="goal-controls svelte-132xors"><button type="button" data-testid="goal-edit-submit" class="svelte-132xors">${escape_html(t(save))}</button> <button type="button" data-testid="goal-edit-cancel" class="svelte-132xors">${escape_html(t(cancel))}</button></div></div>`);
30418
+ GoalEditor($$renderer, {
30419
+ editor});
30245
30420
  } else $$renderer.push("<!--[-1-->");
30246
30421
  $$renderer.push(`<!--]--> `);
30247
30422
  $$renderer.push("<!--[-1-->");
@@ -30644,7 +30819,11 @@ function ConversationPanel($$renderer, $$props) {
30644
30819
  todos: store.todos ?? null,
30645
30820
  jobsessionid: sessionId,
30646
30821
  shelfentries: store.entries,
30647
- shelfworkspace: workspace});
30822
+ shelfsessionid: sessionId,
30823
+ shelfworkspace: workspace,
30824
+ shelfpanelid: panelId,
30825
+ onshelfnote: (ok, note) => ladder.noteCommand(ok ? "ok" : "error", note)
30826
+ });
30648
30827
  $$renderer.push(`<!----> `);
30649
30828
  A2aChipStack($$renderer, {
30650
30829
  rows: a2aRows,
@@ -30672,7 +30851,7 @@ function ConversationPanel($$renderer, $$props) {
30672
30851
  $$renderer.push("<!--[0-->");
30673
30852
  if (macroOurs()) {
30674
30853
  $$renderer.push("<!--[0-->");
30675
- MacroRunSheet($$renderer, {
30854
+ MacroBar($$renderer, {
30676
30855
  run: macroRun(),
30677
30856
  landedTurns: macroLanded(),
30678
30857
  running: store.isStreaming,
@@ -34028,4 +34207,4 @@ function _page($$renderer, $$props) {
34028
34207
  }
34029
34208
 
34030
34209
  export { _page as default };
34031
- //# sourceMappingURL=_page.svelte.js-BvcQOPvs.js.map
34210
+ //# sourceMappingURL=_page.svelte.js-CWiGV7R5.js.map