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 +19 -0
- package/lib/client.js +6 -2
- package/lib/index.js +832 -258
- package/lib/invariant.js +2 -1
- package/lib/types/client/LoopEngineBadge.d.ts +1 -1
- package/lib/types/client/LoopEngineComposerSelect.d.ts +1 -1
- package/lib/types/client/LoopEngineSection.d.ts +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/locales.d.ts +2 -0
- package/lib/types/client/store.d.ts +2 -1
- package/lib/types/engine-claude/agent.d.ts +2 -0
- package/lib/types/engine-claude/loop.d.ts +24 -2
- package/lib/types/engine-claude/mapping.d.ts +3 -3
- package/lib/types/engine-codex/agent.d.ts +2 -0
- package/lib/types/engine-codex/appserver/mapping.d.ts +4 -4
- package/lib/types/engine-codex/loop.d.ts +24 -2
- package/lib/types/engine-kimi/agent.d.ts +2 -0
- package/lib/types/engine-kimi/commands.d.ts +7 -0
- package/lib/types/engine-kimi/loop.d.ts +24 -2
- package/lib/types/engine-pi/agent.d.ts +2 -0
- package/lib/types/engine-pi/loop.d.ts +24 -2
- package/lib/types/index.d.ts +16 -0
- package/lib/types/patch-manager.d.ts +9 -0
- package/lib/types/preset.d.ts +73 -0
- package/lib/types/provider-route.d.ts +35 -0
- package/lib/types/settings.d.ts +5 -5
- package/package.json +23 -23
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
|
|
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,
|
|
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
|
|