dsh-loop-engine 1.0.0-rc7 → 1.0.0-rc8

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.
package/README.md CHANGED
@@ -19,6 +19,13 @@ Restart `dsh web`, then open **Settings → Loop engine**.
19
19
  > Everything else you wrote in that file is preserved; only the plugin's own
20
20
  > span changes.
21
21
 
22
+ > **pnpm users:** pnpm 10+ blocks dependency build scripts by default, so the
23
+ > install may report `@google/genai`, `node-pty`, and `protobufjs` as blocked.
24
+ > This is expected — click **"Allow build scripts and retry"** (or run
25
+ > `pnpm approve-builds`, or list them under `pnpm.onlyBuiltDependencies` in
26
+ > your project root) and retry. Only the installing project can grant this;
27
+ > the plugin cannot pre-approve its own dependencies.
28
+
22
29
  ### Requirements
23
30
 
24
31
  - For the Claude Code engine: the Claude Code CLI installed and logged in on
@@ -40,6 +47,18 @@ Restart `dsh web`, then open **Settings → Loop engine**.
40
47
  3. To remove the plugin: `dsh plugin --profile web remove dsh-loop-engine`, then
41
48
  restart `dsh web`.
42
49
 
50
+ ### What a hosted engine takes over
51
+
52
+ While a hosted engine is selected, it owns the session's command and skill
53
+ surface: the plugin disables dsh's own `/goal` and points new sessions at a
54
+ managed `loop-engine` agent preset — a copy of `standard` minus the dsh-native
55
+ `/compact`, `/plan`, goal-tool, and skill rows that an external engine cannot
56
+ honor — so the slash menu shows the engine's bridged commands and its own
57
+ skill catalog. Engine-agnostic dsh commands (`/export`, `/feedback`,
58
+ `/permission`) keep working and stay. Switching back to `in-process` restores
59
+ the previous preset default; already-running sessions always keep the preset
60
+ they were created with.
61
+
43
62
  ### Engine notes
44
63
 
45
64
  - The Claude Code driver runs one SDK query per step; its slash commands are
package/lib/client.js CHANGED
@@ -209,6 +209,7 @@ function LoopEngineSection(props) {
209
209
  open: pending !== null,
210
210
  onClose: cancelSwitch,
211
211
  title: t("confirmTitle"),
212
+ closeLabel: t("closeLabel"),
212
213
  footer: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
213
214
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "outline", onClick: cancelSwitch, children: t("cancelAction") }),
214
215
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.Button, { variant: "primary", onClick: confirmSwitch, children: t("confirmAction") })
@@ -417,6 +418,7 @@ function LoopEngineComposerSelect(props) {
417
418
  open: pending !== null,
418
419
  onClose: cancelSwitch,
419
420
  title: t("confirmTitle"),
421
+ closeLabel: t("closeLabel"),
420
422
  footer: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
421
423
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.Button, { variant: "outline", onClick: cancelSwitch, children: t("cancelAction") }),
422
424
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_dsh_client_ui_primitives2.Button, { variant: "primary", onClick: confirmSwitch, children: t("confirmAction") })
@@ -428,7 +430,7 @@ function LoopEngineComposerSelect(props) {
428
430
  }
429
431
 
430
432
  // src/client/store.ts
431
- var import_client = require("@deepseek-ai/dsh-client-runtime/client");
433
+ var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
432
434
  function decodeLoopEngine(section) {
433
435
  if (typeof section !== "object" || section === null || Array.isArray(section)) return void 0;
434
436
  const { engine, showInComposer } = section;
@@ -446,7 +448,7 @@ var LoopEngineStore = class {
446
448
  }
447
449
  scope;
448
450
  /** uSES-safe state source shared by the registered settings section. */
449
- store = (0, import_client.createSnapshotStore)({
451
+ store = (0, import_dsh_client_store.createSnapshotStore)({
450
452
  status: "loading",
451
453
  engine: "in-process",
452
454
  showInComposer: true,
@@ -580,6 +582,7 @@ var zh = {
580
582
  confirmBody: "\u5207\u6362\u4F1A\u4E2D\u65AD\u5F53\u524D\u4F7F\u7528\u65E7\u5F15\u64CE\u8FD0\u884C\u4E2D\u7684\u4F1A\u8BDD\uFF0C\u786E\u8BA4\u540E\u9875\u9762\u5C06\u81EA\u52A8\u5237\u65B0\uFF0C\u65B0\u5BF9\u8BDD\u4F7F\u7528\u65B0\u5F15\u64CE\u3002\u786E\u8BA4\u5207\u6362\u5417\uFF1F",
581
583
  confirmAction: "\u5207\u6362",
582
584
  cancelAction: "\u53D6\u6D88",
585
+ closeLabel: "\u5173\u95ED",
583
586
  claudeModelNotice: "\u5F53\u524D\u4F7F\u7528 Claude Code \u5F15\u64CE\uFF1A\u5B9E\u9645\u6A21\u578B\u7531 Claude Code \u539F\u751F\u51B3\u5B9A\uFF0C\u9875\u9762\u4E0A\u7684\u6A21\u578B\u9009\u62E9\u4E0D\u751F\u6548\u3002"
584
587
  };
585
588
  var en = {
@@ -598,6 +601,7 @@ var en = {
598
601
  confirmBody: "Switching interrupts sessions currently running on the previous engine; the page reloads after the switch and new turns use the new engine. Switch now?",
599
602
  confirmAction: "Switch",
600
603
  cancelAction: "Cancel",
604
+ closeLabel: "Close",
601
605
  claudeModelNotice: "Claude Code engine active: the actual model is decided natively by Claude Code; the model selector in this session has no effect."
602
606
  };
603
607