dsh-trellis 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -6
- package/lib/client.js +37 -14
- package/lib/client.js.map +1 -1
- package/lib/config.js +25 -5
- package/lib/index.js +13 -3
- package/lib/settings-compat.js +10 -1
- package/lib/wait-tool.js +31 -6
- package/package.json +40 -36
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ DeepSeek Harness (dsh) host 插件:把 [Trellis](https://github.com/mindfold-a
|
|
|
6
6
|
2. **隔离的原生会话上下文身份** — 从当前 agent 的 DSH 原生 session header 生成受管的 `DSH_TRELLIS_CONTEXT_ID`,让 `task.py start/create/current` 解析到会话级 active-task 指针,并在子代理身份不同于 shell 自身 session 时优先使用被转发的身份;插件命令启动的子进程也显式使用同一个 DSH 身份。
|
|
7
7
|
3. **原生子代理同步** — 安装插件后,Trellis 角色可用 DSH continuable 后台子代理;主会话先继续独立工作,耗尽后可调用事件驱动的 `trellis_wait`。它监听 DSH 的 `subagent/end`,利用 lifecycle 自带的 run/provider/output-block 元数据返回 `completed / failed / aborted / unknown` 的 fail-closed 结论。`error`、`max-tokens`、`refusal` 和未来未知失败原因都不会被误报成通过。rc.8 在父会话 idle 时也会用原生 settlement notice 唤醒,因此已经结束当前轮时无需额外调用 wait。
|
|
8
8
|
4. **`/trellis` 命令** — `/trellis-status`(活跃任务 + git 状态)、`/trellis-finish`(只读检查 + 安全收尾清单,不提前清 active-task 指针)。命令输出不进模型历史;真正的会话收尾走技能面 `/trellis-finish-work`,由技能先归档再写 journal。rc.8 下两条零输入命令使用 `recordInput: false`,并显式拒绝参数和图片附件,避免静默忽略输入。
|
|
9
|
-
5. **Web 配置菜单** — DSH `0.1.
|
|
9
|
+
5. **Web 配置菜单** — DSH `0.1.7-rc.1` 的“插件 → dsh-trellis”详情页直接显示全部六个配置项;保留 `0.1.6-alpha.2` 详情页与旧版 RC 卡片。新版支持带修订号的原子保存、恢复 profile 继承值和冲突时保留草稿。配置里的 `enabled=false` 会停用工作流功能但保留表单;插件管理器的整包或组件开关则会连同表单一起卸载。
|
|
10
10
|
|
|
11
11
|
非 Trellis 项目不注入面包屑;命令只有被用户显式调用时才会检查并返回“未初始化 Trellis”。
|
|
12
12
|
|
|
@@ -46,10 +46,24 @@ dsh plugin --profile headless add file:C:/path/to/dsh-trellis
|
|
|
46
46
|
|
|
47
47
|
`file:` 插件会作为 profile 内的 pnpm 快照安装;拉取源码更新后,尤其是版本新增文件时,需要先 remove 再 add 刷新该 profile。
|
|
48
48
|
|
|
49
|
-
配套要求:项目的 Trellis 平台需包含 dsh(`trellis init --dsh`,见 Trellis-DeepSeekHarness 适配分支),且 `.trellis/scripts` 需包含读取原生 `DSH_SESSION_ID` 的适配(已含在同一分支)。Host peer
|
|
49
|
+
配套要求:项目的 Trellis 平台需包含 dsh(`trellis init --dsh`,见 Trellis-DeepSeekHarness 适配分支),且 `.trellis/scripts` 需包含读取原生 `DSH_SESSION_ID` 的适配(已含在同一分支)。Host peer 范围包含 `^0.1.7-rc.1`,已覆盖 RC.2,无需扩大范围;开发基线仍固定为 `0.1.7-rc.1`,隔离回归 `0.1.7-rc.2`、`0.1.5-rc.2` 和 `0.1.6-alpha.2`,不代表逐个重新验证所有历史版本。新版 DSH 的 peer 准入使用 `includePrerelease: true`,与 npm 默认匹配不同;通过准入不等于实际兼容,不应使用 `allow-version` 绕过缺失的 API。Web 配置只在具备对应 client surface 的 profile 中加载。
|
|
50
50
|
|
|
51
51
|
运行时需要 profile 提供 `sessionProjections` 服务;该依赖由插件的 `inject` 声明。自定义或精简 profile 若未组装此服务,需先加载 `@deepseek-ai/dsh-session-projection`,否则插件会等待依赖,不会退回直接扫描历史。
|
|
52
52
|
|
|
53
|
+
### 0.1.9:DSH 0.1.7-rc.2 兼容验证
|
|
54
|
+
|
|
55
|
+
- 新增 RC.2 隔离回归及 Windows/Linux CI 覆盖,修复兼容测试把非 RC.1 宿主错误归为旧版 Cordis 依赖的逻辑。
|
|
56
|
+
- 使用真实 AgentLoop、Loader 和 Session 验证动态工具增删、Settings 重挂、面包屑去重、恢复/分叉及压缩后的重新注入;补充等待目录失败与卸载清理回归。
|
|
57
|
+
- 本版不改变插件运行时代码、peer 范围、安装命令或 Trellis 生成模板;保留 RC.1 开发基线及两条旧宿主回归。验证范围与限制见[详细记录](https://github.com/SajoLuo/dsh-trellis/blob/v0.1.9/docs/validation-dsh-0.1.7-rc.2.md)。
|
|
58
|
+
|
|
59
|
+
### 0.1.8:DSH 0.1.7-rc.1 适配
|
|
60
|
+
|
|
61
|
+
- 按[新版 Settings 契约](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.7-rc.1/packages/settings/settings/README.md)声明六个 `.volatile()` 配置字段,读取 live Config,并由 Loader 的 `loader/volatile-update` 通知更新工作流注册。Settings 仅持有当前插件 fiber 的自定义页面策略;迟到、替换或卸载该服务不会重置配置。旧宿主保留原 helper/provider 路径。
|
|
62
|
+
- Web 改用 `configForms.get(entryId)`,保留旧 `settingsScope` 兼容分支。新版一次提交全部字段与编辑开始时的 revision,冲突或断连保留草稿;冲突后先放弃更改、读入新值,再重新编辑。旧宿主继续使用逐字段写入。
|
|
63
|
+
- 适配父会话 `subagentCatalog`:目录只证明直接归属和 continuable 模式,当前驻留状态另读 Session store,并校验创建时间和父会话,防止复用 id 串会话。查询期间捕获的 `subagent/end` 优先于 inactive 快照;冷子代理仍返回 unknown,不猜成功。旧目录格式继续支持。
|
|
64
|
+
- 保留单文件 `dsh.bundle.patch`、`manifestVersion: 1` 和 profile 安装命令;无需增加安装脚本。不改变 Trellis 生成模板及已有任务绑定。
|
|
65
|
+
- 本轮按本地工作区验证;不宣称支持新版 DSH 的 SSH 远程工作区文件访问。
|
|
66
|
+
|
|
53
67
|
### 0.1.7:DSH 0.1.6-alpha.2 适配
|
|
54
68
|
|
|
55
69
|
- 跟随[官方插件页 slot 契约](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.6-alpha.2/packages/client/ui-plugin-manager/README.md),第三方包配置注册到 `plugins.bundle.config`,以 `dsh-trellis` 包名为 key;详情页直接渲染表单,不重复包装标题和折叠卡片。保留旧 `settings.plugin.item` keyed/list 两种形态,按实际存在的 slot 延迟注册并随 owner 卸载。
|
|
@@ -72,7 +86,9 @@ dsh plugin --profile headless add file:C:/path/to/dsh-trellis
|
|
|
72
86
|
|
|
73
87
|
## 配置
|
|
74
88
|
|
|
75
|
-
支持 Settings
|
|
89
|
+
支持 Settings 的 DSH Web profile,在新版打开“插件 → dsh-trellis”,旧版 RC 打开“设置 → 插件 → 插件配置 → Trellis 工作流”。`0.1.7-rc.1` 保存到当前 profile 的 `cordis.patch.yml`,全局 patch 和命令行覆盖仍优先,无法生效的表单写入会被拒绝;旧宿主仍保存到 `settings.yaml`。
|
|
90
|
+
|
|
91
|
+
升级前备份 `settings.yaml` 和各 profile 配置。新版宿主会把旧文件改名为 `settings.yaml.imported`,并向**首次启动的 profile** 按 entry id 一次性导入;拒绝的 section 只保留在备份文件,不会自动重试。插件不会自行重命名、删除或跨 profile 复制配置;应先安装兼容插件,再启动迁移,并核对其他 profile 的需要。
|
|
76
92
|
|
|
77
93
|
Headless、rc.6 或需要声明部署默认值时,仍可在 profile 的 `cordis.patch.yml` 里覆盖(整行替换);Web 卡片的“恢复配置文件值”会清除用户层字段并重新继承这里的值:
|
|
78
94
|
|
|
@@ -108,12 +124,15 @@ pnpm install
|
|
|
108
124
|
pnpm run build:client
|
|
109
125
|
pnpm test # node --test test/*.test.js
|
|
110
126
|
pnpm run test:compat 0.1.5-rc.2 # 临时副本中安装旧宿主并运行同一套测试
|
|
111
|
-
|
|
127
|
+
pnpm run test:compat 0.1.7-rc.2 # RC.2 动态工具与面包屑集成回归
|
|
128
|
+
# 不传版本参数时,隔离回归 0.1.5-rc.2、0.1.6-alpha.2、0.1.7-rc.1、0.1.7-rc.2
|
|
112
129
|
```
|
|
113
130
|
|
|
114
|
-
GitHub Actions 配置在 Windows / Linux 的 Node 24 环境执行锁定的
|
|
131
|
+
GitHub Actions 配置在 Windows / Linux 的 Node 24 环境执行锁定的 `0.1.7-rc.1` 安装、客户端构建、测试、RC.2 和两个旧宿主回归及打包检查。测试覆盖真实 Session/projection 的恢复、分叉、压缩和 checkpoint,临时项目的精确绑定与任务错误恢复,以及新版真实 Loader 的 volatile 更新、子代理目录/查询/驻留状态;新版专属测试在旧宿主明确跳过。另有编译客户端 React 渲染、slot 生命周期、原子保存与拒绝写入测试。
|
|
132
|
+
|
|
133
|
+
RC.2 集成用例运行真实 AgentLoop、Loader、ToolRuntime 和 Session,以本地脚本化模型响应验证三种 `toolUpdate` 能力:不支持、`addition-only`、`in-history`。覆盖插件启停的工具增删消息、Settings 重挂不重复注入、混合历史的恢复/分叉投影,以及 surface 替换后重建工具基线并重新注入面包屑。等待工具另覆盖目录损坏/不存在及卸载期间查询失败的错误保留与监听器清理。该验证不调用外部模型,也不替代 Web 浏览器或真实子代理派发验收;详情见 [2026-09-28 验证记录](https://github.com/SajoLuo/dsh-trellis/blob/main/docs/validation-dsh-0.1.7-rc.2.md)。
|
|
115
134
|
|
|
116
|
-
`test:compat` 不改当前 checkout
|
|
135
|
+
`test:compat` 不改当前 checkout 的依赖,临时副本保留在系统临时目录并打印路径供检查。宿主工具链采用显式支持列表:RC.1/RC.2 使用 Cordis 4.0.4、Schemastery 3.18.4、Loader 1.0.5、Include 1.0.9;两条旧线保留各自旧依赖组合,不按“非最新版本”猜测。发布前还应使用隔离 `DSH_HOME` 启动真实 Web profile,验证配置保存/读回、整包及组件开关、重新挂载和卸载;不复用个人凭据或会话。插件 0.1.8 的 Windows / DSH RC.1 验收已覆盖这些浏览器路径;本轮 RC.2 未重跑浏览器验收。
|
|
117
136
|
|
|
118
137
|
Host half 是直接由 `main` 加载的 ESM JavaScript;Web half 通过 tsdown 生成 DSH lazy-CJS factory 到 `lib/client.js`。`pnpm pack` 会在 prepack 阶段自动重建客户端 bundle。
|
|
119
138
|
|
package/lib/client.js
CHANGED
|
@@ -61,7 +61,7 @@ window.__ModuleLoader__.load({
|
|
|
61
61
|
value: {
|
|
62
62
|
enabled: draft.enabled.value,
|
|
63
63
|
maxBytes,
|
|
64
|
-
projectRootMarkers: parseMarkers(String(draft.projectRootMarkers.value)),
|
|
64
|
+
projectRootMarkers: parseMarkers(Array.isArray(draft.projectRootMarkers.value) ? draft.projectRootMarkers.value.join("\n") : String(draft.projectRootMarkers.value)),
|
|
65
65
|
skipKeyword: String(draft.skipKeyword.value),
|
|
66
66
|
pythonCmd: String(draft.pythonCmd.value),
|
|
67
67
|
commandsEnabled: draft.commandsEnabled.value
|
|
@@ -104,6 +104,20 @@ window.__ModuleLoader__.load({
|
|
|
104
104
|
const user = record(snapshot.user);
|
|
105
105
|
return writes.every((write) => write.kind === "unset" ? !Object.hasOwn(user, write.field) : Object.hasOwn(user, write.field) && sameValue(user[write.field], write.value));
|
|
106
106
|
}
|
|
107
|
+
/** New hosts commit a staged form atomically against its edit-start revision. */
|
|
108
|
+
async function savePlan(scope, writes, revision) {
|
|
109
|
+
if (typeof scope.mutate === "function") {
|
|
110
|
+
if (await scope.mutate(writes.map(({ kind, field, value }) => kind === "unset" ? {
|
|
111
|
+
op: "unset",
|
|
112
|
+
path: [field]
|
|
113
|
+
} : {
|
|
114
|
+
op: "set",
|
|
115
|
+
path: [field],
|
|
116
|
+
value
|
|
117
|
+
}), revision) === false) return false;
|
|
118
|
+
} else for (const write of writes) if ((write.kind === "unset" ? await scope.unset(write.field) : await scope.set(write.field, write.value)) === false) return false;
|
|
119
|
+
return planLanded(scope.getSnapshot(), writes);
|
|
120
|
+
}
|
|
107
121
|
//#endregion
|
|
108
122
|
//#region src/client/TrellisSettingsCard.jsx
|
|
109
123
|
function Reset({ visible, disabled, label, onClick }) {
|
|
@@ -207,6 +221,7 @@ window.__ModuleLoader__.load({
|
|
|
207
221
|
const snapshot = (0, react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
|
|
208
222
|
const [open, setOpen] = (0, react.useState)(false);
|
|
209
223
|
const [draft, setDraft] = (0, react.useState)(() => makeDraft(snapshot));
|
|
224
|
+
const [revision, setRevision] = (0, react.useState)(snapshot.revision);
|
|
210
225
|
const [saving, setSaving] = (0, react.useState)(false);
|
|
211
226
|
const [failed, setFailed] = (0, react.useState)(false);
|
|
212
227
|
const page = presentation === "page";
|
|
@@ -214,7 +229,10 @@ window.__ModuleLoader__.load({
|
|
|
214
229
|
const plan = (0, react.useMemo)(() => planDraft(snapshot, draft), [snapshot, draft]);
|
|
215
230
|
const dirty = plan.writes.length > 0;
|
|
216
231
|
(0, react.useEffect)(() => {
|
|
217
|
-
if (!dirty && snapshot.status === "ready")
|
|
232
|
+
if (!dirty && snapshot.status === "ready") {
|
|
233
|
+
setDraft(makeDraft(snapshot));
|
|
234
|
+
setRevision(snapshot.revision);
|
|
235
|
+
}
|
|
218
236
|
}, [dirty, snapshot]);
|
|
219
237
|
if (snapshot.status !== "ready") return null;
|
|
220
238
|
const disabled = !snapshot.writable || saving;
|
|
@@ -232,6 +250,7 @@ window.__ModuleLoader__.load({
|
|
|
232
250
|
};
|
|
233
251
|
const discard = () => {
|
|
234
252
|
setDraft(makeDraft(snapshot));
|
|
253
|
+
setRevision(snapshot.revision);
|
|
235
254
|
setFailed(false);
|
|
236
255
|
};
|
|
237
256
|
const save = async () => {
|
|
@@ -239,10 +258,11 @@ window.__ModuleLoader__.load({
|
|
|
239
258
|
setSaving(true);
|
|
240
259
|
setFailed(false);
|
|
241
260
|
try {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
261
|
+
const landed = await savePlan(scope, plan.writes, revision);
|
|
262
|
+
if (landed) {
|
|
263
|
+
setDraft(makeDraft(scope.getSnapshot()));
|
|
264
|
+
setRevision(scope.getSnapshot().revision);
|
|
265
|
+
}
|
|
246
266
|
setFailed(!landed);
|
|
247
267
|
} catch {
|
|
248
268
|
setFailed(true);
|
|
@@ -393,7 +413,7 @@ window.__ModuleLoader__.load({
|
|
|
393
413
|
collapse: "收起",
|
|
394
414
|
unsaved: "未保存",
|
|
395
415
|
readOnly: "当前设置文档为只读。",
|
|
396
|
-
saveFailed: "
|
|
416
|
+
saveFailed: "保存未生效,草稿已保留。若配置已被其他窗口修改,请先丢弃草稿、读取新值后重新编辑。",
|
|
397
417
|
discard: "放弃更改",
|
|
398
418
|
save: "保存",
|
|
399
419
|
saving: "保存中…",
|
|
@@ -420,7 +440,7 @@ window.__ModuleLoader__.load({
|
|
|
420
440
|
collapse: "Collapse",
|
|
421
441
|
unsaved: "Unsaved",
|
|
422
442
|
readOnly: "The current settings document is read-only.",
|
|
423
|
-
saveFailed: "
|
|
443
|
+
saveFailed: "Save failed; your draft is preserved. If another editor changed the configuration, discard the draft to load current values, then edit again.",
|
|
424
444
|
discard: "Discard",
|
|
425
445
|
save: "Save",
|
|
426
446
|
saving: "Saving…",
|
|
@@ -450,13 +470,8 @@ window.__ModuleLoader__.load({
|
|
|
450
470
|
//#region src/client/index.jsx
|
|
451
471
|
const SETTINGS_NAMESPACE = "dsh-trellis";
|
|
452
472
|
const LOCALE_NAMESPACE = "settings.dsh-trellis";
|
|
453
|
-
const inject = [
|
|
454
|
-
"slots",
|
|
455
|
-
"locale",
|
|
456
|
-
"settingsScope"
|
|
457
|
-
];
|
|
473
|
+
const inject = ["slots", "locale"];
|
|
458
474
|
function apply(ctx) {
|
|
459
|
-
const scope = ctx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE });
|
|
460
475
|
ctx.effect(() => ctx.locale.register(LOCALE_NAMESPACE, {
|
|
461
476
|
zh,
|
|
462
477
|
en
|
|
@@ -470,6 +485,14 @@ window.__ModuleLoader__.load({
|
|
|
470
485
|
document.head.appendChild(tag);
|
|
471
486
|
return () => tag.remove();
|
|
472
487
|
}, "dsh-trellis.client.styles");
|
|
488
|
+
ctx.inject(["configForms"], (formsCtx) => {
|
|
489
|
+
registerForms(formsCtx, formsCtx.configForms.get(SETTINGS_NAMESPACE));
|
|
490
|
+
});
|
|
491
|
+
ctx.inject(["settingsScope"], (legacyCtx) => {
|
|
492
|
+
registerForms(legacyCtx, legacyCtx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE }));
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
function registerForms(ctx, scope) {
|
|
473
496
|
ctx.slots.inject("settings.plugin.item", () => ctx.slots.register({
|
|
474
497
|
name: "settings.plugin.item",
|
|
475
498
|
...settingsCardIdentity(ctx.slots.spec("settings.plugin.item"), SETTINGS_NAMESPACE),
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","names":["useCallback","useSyncExternalStore","useState","useMemo"],"sources":["../src/client/form.js","../src/client/TrellisSettingsCard.jsx","../src/client/compat.js","../src/client/locales.js","../src/client/styles.js","../src/client/index.jsx"],"mappings":";;;;;;;;;EAAA,MAAa,WAAW,OAAO,OAAO;GACpC,SAAS;GACT,UAAU;GACV,oBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC;GAC1C,aAAa;GACb,WAAW;GACX,iBAAiB;EACnB,CAAC;EAED,MAAa,cAAc,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC;EAE9D,SAAS,OAAO,OAAO;GACrB,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACtE,QACA,CAAC;EACP;EAEA,SAAgB,UAAU,MAAM,OAAO;GACrC,OAAO,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,KAAK;EACtD;EAEA,SAAgB,cAAc,UAAU,OAAO;GAC7C,MAAM,OAAO,OAAO,SAAS,IAAI;GACjC,OAAO,OAAO,OAAO,MAAM,KAAK,IAAI,KAAK,SAAS,SAAS;EAC7D;EAEA,SAAgB,UAAU,UAAU;GAClC,MAAM,QAAQ,OAAO,SAAS,KAAK;GACnC,OAAO,OAAO,YACZ,YAAY,KAAK,UAAU,CACzB,OACA;IAAE,MAAM;IAAS,OAAO,MAAM,UAAU,SAAS;GAAO,CAC1D,CAAC,CACH;EACF;EAEA,SAAgB,UAAU,OAAO,OAAO,OAAO;GAC7C,OAAO;IAAE,GAAG;KAAQ,QAAQ;KAAE,MAAM;KAAO;IAAM;GAAE;EACrD;EAEA,SAAgB,WAAW,UAAU,OAAO,OAAO;GACjD,OAAO;IACL,GAAG;KACF,QAAQ;KAAE,MAAM;KAAS,OAAO,cAAc,UAAU,KAAK;IAAE;GAClE;EACF;EAEA,SAAgB,aAAa,MAAM;GACjC,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;EACtF;EAEA,SAAgB,WAAW,OAAO;GAChC,MAAM,WAAW,OAAO,OAAO,MAAM,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC;GAC3D,OAAO;IACL,SACE,CAAC,OAAO,UAAU,QAAQ,KAC1B,WAAW,KACX,OAAO,MAAM,QAAQ,UAAU,aAC/B,OAAO,MAAM,gBAAgB,UAAU;IACzC,OAAO;KACL,SAAS,MAAM,QAAQ;KACvB;KACA,oBAAoB,aAAa,OAAO,MAAM,mBAAmB,KAAK,CAAC;KACvE,aAAa,OAAO,MAAM,YAAY,KAAK;KAC3C,WAAW,OAAO,MAAM,UAAU,KAAK;KACvC,iBAAiB,MAAM,gBAAgB;IACzC;GACF;EACF;EAEA,SAAgB,UAAU,UAAU,OAAO;GACzC,MAAM,OAAO,OAAO,SAAS,IAAI;GACjC,MAAM,UAAU,OAAO,SAAS,KAAK;GACrC,MAAM,SAAS,WAAW,KAAK;GAC/B,MAAM,SAAS,CAAC;GAChB,KAAK,MAAM,SAAS,aAAa;IAC/B,MAAM,SAAS,MAAM;IACrB,IAAI,OAAO,SAAS,SAAS;IAC7B,IAAI,OAAO,SAAS,SAAS;KAC3B,IAAI,OAAO,OAAO,MAAM,KAAK,GAAG,OAAO,KAAK;MAAE;MAAO,MAAM;KAAQ,CAAC;KACpE;IACF;IACA,MAAM,QAAQ,OAAO,MAAM;IAC3B,IAAI,CAAC,UAAU,QAAQ,QAAQ,KAAK,GAClC,OAAO,KAAK;KAAE;KAAO,MAAM;KAAO;IAAM,CAAC;GAE7C;GACA,OAAO;IAAE,SAAS,OAAO;IAAS;GAAO;EAC3C;EAEA,SAAgB,aAAa,UAAU,OAAO,OAAO;GACnD,IAAI,MAAM,MAAM,CAAC,SAAS,OAAO,OAAO;GACxC,IAAI,MAAM,MAAM,CAAC,SAAS,SAAS,OAAO;GAC1C,OAAO,OAAO,OAAO,OAAO,SAAS,IAAI,GAAG,KAAK;EACnD;EAEA,SAAgB,WAAW,UAAU,QAAQ;GAC3C,MAAM,OAAO,OAAO,SAAS,IAAI;GACjC,OAAO,OAAO,OAAO,UACnB,MAAM,SAAS,UACX,CAAC,OAAO,OAAO,MAAM,MAAM,KAAK,IAChC,OAAO,OAAO,MAAM,MAAM,KAAK,KAAK,UAAU,KAAK,MAAM,QAAQ,MAAM,KAAK,CAClF;EACF;;;ECtFA,SAAS,MAAM,EAAE,SAAS,UAAU,OAAO,WAAW;GACpD,OAAO,UACL,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;IAAM,WAAU;IAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;KAAM,WAAU;KAAqB,UAAA,MAAM;IAAiB,CAAA,GAC5D,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;KAAQ,WAAU;KAAoB,MAAK;KAAmB;KAAmB;KAC9E,UAAA,MAAM;IACD,CAAA,CACJ;GACJ,CAAA,IAAA;EACN;EAEA,SAAS,UAAU,EAAE,IAAI,OAAO,MAAM,OAAO,UAAU,YAAY,OAAO,UAAU,OAAO,UAAU,SAAS,YAAY,KAAK;GAC7H,MAAM,UAAU,YAAY,aAAa;GACzC,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;OAAO,WAAU;OAAoB,SAAS;OAAK,UAAA;MAAa,CAAA,GAChE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;OAAO,SAAS;OAAsB;OAAU,OAAO;QAAE,YAAY,EAAE,YAAY;QAAG,OAAO,EAAE,OAAO;OAAE;OAAG,SAAS;MAAU,CAAA,CAC3H;;KACL,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;MACM;MACJ,WAAW,YAAY,yBAAyB;MAChD,GAAI,YAAY,CAAC,IAAI,EAAE,MAAM,OAAO;MAC7B;MACG;MACV,gBAAc,WAAW,KAAA;MACzB,WAAW,UAAU,SAAS,MAAM,OAAO,KAAK;KACjD,CAAA;KACD,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;MAAG,WAAU;MAAmB,gBAAc;MAAU,UAAA,UAAU,EAAE,iBAAiB,IAAI;KAAQ,CAAA;IAC9F;;EAET;EAEA,SAAS,aAAa,EAAE,IAAI,OAAO,MAAM,OAAO,UAAU,UAAU,SAAS,YAAY,KAAK;GAC5F,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;IAAK,WAAU;IACb,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,SAAD;MAAO,WAAU;MAAyB,SAAS;MAAnD,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,SAAD;OAAW;OAAI,MAAK;OAAW,SAAS;OAAiB;OAAU,WAAW,UAAU,SAAS,MAAM,OAAO,OAAO;MAAI,CAAA,GACzH,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAU;QAAqB,UAAA;OAAY,CAAA,GACjD,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAU;QAAoB,UAAA;OAAW,CAAA,CAC3C;MACD,CAAA,CAAA;KACP,CAAA,GAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;MAAO,SAAS;MAAsB;MAAU,OAAO;OAAE,YAAY,EAAE,YAAY;OAAG,OAAO,EAAE,OAAO;MAAE;MAAG,SAAS;KAAU,CAAA,CAC3H;;GACF,CAAA;EAET;EAEA,SAAgB,oBAAoB,EAAE,MAAM,GAAG,SAAS;GACtD,OAAO,SAAS,YACZ,MAAM,EAAE,aAAa,IACrB,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAD;IAAqB,GAAI;IAAO,cAAa;GAAQ,CAAA;EAC3D;EAEA,SAAgB,oBAAoB,EAAE,OAAO,GAAG,eAAe,UAAU;GACvE,MAAM,aAAA,GAAYA,MAAAA,YAAAA,EAAa,aAAa,MAAM,UAAU,QAAQ,GAAG,CAAC,KAAK,CAAC;GAC9E,MAAM,eAAA,GAAcA,MAAAA,YAAAA,OAAkB,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC;GAClE,MAAM,YAAA,GAAWC,MAAAA,qBAAAA,CAAqB,WAAW,aAAa,WAAW;GACzE,MAAM,CAAC,MAAM,YAAA,GAAWC,MAAAA,SAAAA,CAAS,KAAK;GACtC,MAAM,CAAC,OAAO,aAAA,GAAYA,MAAAA,SAAAA,OAAe,UAAU,QAAQ,CAAC;GAC5D,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAAS,KAAK;GAC1C,MAAM,CAAC,QAAQ,cAAA,GAAaA,MAAAA,SAAAA,CAAS,KAAK;GAC1C,MAAM,OAAO,iBAAiB;GAC9B,MAAM,YAAY,OAAO,YAAY;GAErC,MAAM,QAAA,GAAOC,MAAAA,QAAAA,OAAc,UAAU,UAAU,KAAK,GAAG,CAAC,UAAU,KAAK,CAAC;GACxE,MAAM,QAAQ,KAAK,OAAO,SAAS;GACnC,CAAA,GAAA,MAAA,UAAA,OAAgB;IACd,IAAI,CAAC,SAAS,SAAS,WAAW,SAAS,SAAS,UAAU,QAAQ,CAAC;GACzE,GAAG,CAAC,OAAO,QAAQ,CAAC;GAEpB,IAAI,SAAS,WAAW,SAAS,OAAO;GACxC,MAAM,WAAW,CAAC,SAAS,YAAY;GACvC,MAAM,SAAS,WAAW,KAAK;GAC/B,MAAM,SAAS,UAAU;IACvB,YAAY,aAAa,UAAU,OAAO,IAAI;IAC9C,eAAe;KACb,UAAU,YAAY,WAAW,UAAU,SAAS,IAAI,CAAC;KACzD,UAAU,KAAK;IACjB;GACF;GACA,MAAM,QAAQ,MAAM,UAAU;IAC5B,UAAU,YAAY,UAAU,SAAS,MAAM,KAAK,CAAC;IACrD,UAAU,KAAK;GACjB;GACA,MAAM,gBAAgB;IACpB,SAAS,UAAU,QAAQ,CAAC;IAC5B,UAAU,KAAK;GACjB;GACA,MAAM,OAAO,YAAY;IACvB,IAAI,UAAU,KAAK,WAAW,KAAK,OAAO,WAAW,GAAG;IACxD,UAAU,IAAI;IACd,UAAU,KAAK;IACf,IAAI;KACF,KAAK,MAAM,SAAS,KAAK,QACvB,IAAI,MAAM,SAAS,SAAS,MAAM,MAAM,MAAM,MAAM,KAAK;UACpD,MAAM,MAAM,IAAI,MAAM,OAAO,MAAM,KAAK;KAE/C,MAAM,SAAS,WAAW,MAAM,YAAY,GAAG,KAAK,MAAM;KAC1D,IAAI,QAAQ,SAAS,UAAU,MAAM,YAAY,CAAC,CAAC;KACnD,UAAU,CAAC,MAAM;IACnB,QAAQ;KAGN,UAAU,IAAI;IAChB,UAAU;KACR,UAAU,KAAK;IACjB;GACF;GAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,WAAD;IAAW,WAAW,OAAO,qBAAqB;IAAoB,aAAW,QAAQ;IAAzF,UAAA,CACG,CAAC,OAAO,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;KACP,MAAK;KACL,WAAU;KACV,iBAAe;KACf,cAAY,GAAG,EAAE,OAAO,aAAa,QAAQ,EAAE,IAAI,EAAE,OAAO;KAC5D,eAAe,SAAS,UAAU,CAAC,KAAK;KALjC,UAAA;MAOP,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;OAAM,WAAU;OAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAU;QAAoB,UAAA,EAAE,OAAO;OAAQ,CAAA,GACrD,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;QAAM,WAAU;QAA2B,UAAA,EAAE,aAAa;OAAQ,CAAA,CAC9D;;MACL,QAAQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAqB,UAAA,EAAE,SAAS;MAAQ,CAAA,IAAI;MACrE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;OAAM,WAAU;OAAsB,eAAY;OAAO,UAAA;MAAO,CAAA;KAC1D;IAAI,CAAA,IAAA,MACX,QAAQ,OACP,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACG,CAAC,SAAS,WAAW,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;OAAG,WAAU;OAAuB,MAAK;OAAU,UAAA,EAAE,UAAU;MAAK,CAAA,IAAI;MAC9F,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;OAAc,IAAG;OAAsB,OAAO,EAAE,SAAS;OAAG,MAAM,EAAE,aAAa;OAAG,OAAO,QAAQ,MAAM,QAAQ,KAAK;OAAa;OAAU,WAAW,UAAU,KAAK,WAAW,KAAK;OAAM;OAAG,GAAI,MAAM,SAAS;MAAI,CAAA;MACvN,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD;OAAc,IAAG;OAAuB,OAAO,EAAE,iBAAiB;OAAG,MAAM,EAAE,qBAAqB;OAAG,OAAO,QAAQ,MAAM,gBAAgB,KAAK;OAAa;OAAU,WAAW,UAAU,KAAK,mBAAmB,KAAK;OAAM;OAAG,GAAI,MAAM,iBAAiB;MAAI,CAAA;MAChQ,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;OAAW,IAAG;OAAwB,OAAO,EAAE,UAAU;OAAG,MAAM,EAAE,cAAc;OAAG,OAAO,OAAO,MAAM,SAAS,KAAK;OAAa;OAAU,SAAS,OAAO,YAAY,CAAC,OAAO,UAAU,OAAO,MAAM,QAAQ,KAAK,OAAO,MAAM,WAAW;OAAI,WAAW,UAAU,KAAK,YAAY,KAAK;OAAM;OAAG,GAAI,MAAM,UAAU;MAAI,CAAA;MAC9T,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;OAAW,IAAG;OAAsB,OAAO,EAAE,oBAAoB;OAAG,MAAM,EAAE,wBAAwB;OAAG,OAAO,MAAM,QAAQ,MAAM,mBAAmB,KAAK,IAAI,MAAM,mBAAmB,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,mBAAmB,KAAK;OAAa;OAAU,WAAA;OAAU,WAAW,UAAU,KAAK,sBAAsB,KAAK;OAAM;OAAG,GAAI,MAAM,oBAAoB;MAAI,CAAA;MAChX,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;OAAW,IAAG;OAA2B,OAAO,EAAE,aAAa;OAAG,MAAM,EAAE,iBAAiB;OAAG,OAAO,OAAO,MAAM,YAAY,KAAK;OAAa;OAAU,WAAW,UAAU,KAAK,eAAe,KAAK;OAAM;OAAG,GAAI,MAAM,aAAa;MAAI,CAAA;MAC5O,iBAAA,GAAA,kBAAA,IAAA,CAAC,WAAD;OAAW,IAAG;OAAqB,OAAO,EAAE,WAAW;OAAG,MAAM,EAAE,eAAe;OAAG,OAAO,OAAO,MAAM,UAAU,KAAK;OAAa;OAAU,WAAW,UAAU,KAAK,aAAa,KAAK;OAAM;OAAG,GAAI,MAAM,WAAW;MAAI,CAAA;MAC5N,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;OAAK,WAAU;OAAf,UAAA;QACG,SAAS,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;SAAG,WAAU;SAAoB,MAAK;SAAU,UAAA,EAAE,YAAY;QAAK,CAAA,IAAI;QACjF,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;SAAQ,WAAU;SAAqB,MAAK;SAAS,UAAU,CAAC,SAAS;SAAQ,SAAS;SAAU,UAAA,EAAE,SAAS;QAAU,CAAA;QACzH,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;SAAQ,WAAU;SAAqB,gBAAa;SAAO,MAAK;SAAS,UAAU,CAAC,SAAS,YAAY,KAAK,WAAW,KAAK,OAAO,WAAW,KAAK;SAAQ,eAAe,KAAK,KAAK;SAAI,UAAA,EAAE,SAAS,WAAW,MAAM;QAAU,CAAA;OAC7N;;KACF;IACH,CAAA,IAAA,IACK;;EAEf;;;ECnKA,SAAgB,qBAAqB,UAAU,WAAW;GACxD,OAAO,UAAU,SAAS,UACtB,EAAE,KAAK,UAAU,IACjB,EAAE,IAAI,UAAU;EACtB;;;ECJA,MAAa,KAAK;GAChB,OAAO;GACP,aAAa;GACb,QAAQ;GACR,UAAU;GACV,SAAS;GACT,UAAU;GACV,YAAY;GACZ,SAAS;GACT,MAAM;GACN,QAAQ;GACR,YAAY;GACZ,OAAO;GACP,SAAS;GACT,aAAa;GACb,iBAAiB;GACjB,qBAAqB;GACrB,UAAU;GACV,cAAc;GACd,iBAAiB;GACjB,oBAAoB;GACpB,wBAAwB;GACxB,aAAa;GACb,iBAAiB;GACjB,WAAW;GACX,eAAe;EACjB;EAEA,MAAa,KAAK;GAChB,OAAO;GACP,aAAa;GACb,QAAQ;GACR,UAAU;GACV,SAAS;GACT,UAAU;GACV,YAAY;GACZ,SAAS;GACT,MAAM;GACN,QAAQ;GACR,YAAY;GACZ,OAAO;GACP,SAAS;GACT,aAAa;GACb,iBAAiB;GACjB,qBAAqB;GACrB,UAAU;GACV,cAAc;GACd,iBAAiB;GACjB,oBAAoB;GACpB,wBAAwB;GACxB,aAAa;GACb,iBAAiB;GACjB,WAAW;GACX,eAAe;EACjB;;;ECtDA,MAAa,SAAS,OAAO,GAAG;;;;;;ECKhC,MAAa,qBAAqB;EAClC,MAAa,mBAAmB;EAChC,MAAa,SAAS;GAAC;GAAS;GAAU;EAAe;EAEzD,SAAgB,MAAM,KAAK;GACzB,MAAM,QAAQ,IAAI,cAAc,KAAK,EAAE,WAAW,mBAAmB,CAAC;GACtE,IAAI,aACI,IAAI,OAAO,SAAS,kBAAkB;IAAE;IAAI;GAAG,CAAC,GACtD,2BACF;GACA,IAAI,aAAa;IAEf,IAAI,SAAS,cAAc,+CAAQ,MAAM,MAAM,aAAa,CAAC;IAC7D,MAAM,MAAM,SAAS,cAAc,OAAO;IAC1C,IAAI,QAAQ,SAAS;IACrB,IAAI,QAAQ,YAAY;IACxB,IAAI,cAAc;IAClB,SAAS,KAAK,YAAY,GAAG;IAC7B,aAAa,IAAI,OAAO;GAC1B,GAAG,2BAA2B;GAE9B,IAAI,MAAM,OAAO,8BACf,IAAI,MAAM,SACR;IACE,MAAM;IACN,GAAG,qBACD,IAAI,MAAM,KAAK,sBAAsB,GACrC,kBACF;IACA,QAAQ;IACR,eAAe,EAAE,MAAM;GACzB,GACA,mBACF,CACF;GAKA,IAAI,MAAM,OAAO,+BACf,IAAI,MAAM,SACR;IACE,MAAM;IACN,KAAK;IACL,QAAQ;IACR,eAAe,EAAE,MAAM;GACzB,GACA,mBACF,CACF;EACF"}
|
|
1
|
+
{"version":3,"file":"client.js","names":["useCallback","useSyncExternalStore","useState","useMemo"],"sources":["../src/client/form.js","../src/client/TrellisSettingsCard.jsx","../src/client/compat.js","../src/client/locales.js","../src/client/styles.js","../src/client/index.jsx"],"mappings":"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"}
|
package/lib/config.js
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module dsh-trellis/config
|
|
5
5
|
*/
|
|
6
|
-
import z from "@deepseek-ai/schemastery";
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import z from "@deepseek-ai/schemastery";
|
|
7
|
+
import * as settingsModule from "@deepseek-ai/dsh-settings";
|
|
8
|
+
|
|
9
|
+
const fields = {
|
|
9
10
|
/** Runtime master switch; the settings namespace remains available for re-enabling. */
|
|
10
11
|
enabled: z
|
|
11
12
|
.boolean()
|
|
@@ -50,7 +51,22 @@ export const Config = z.object({
|
|
|
50
51
|
.description(
|
|
51
52
|
"Register /trellis-status and the read-only /trellis-finish helper.",
|
|
52
53
|
),
|
|
53
|
-
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// Legacy Settings validates plain values; profile-backed Settings exposes only
|
|
57
|
+
// volatile fields. Select the schema from the host capability, not a version.
|
|
58
|
+
export const Config = z.object(Object.fromEntries(
|
|
59
|
+
Object.entries(fields).map(([key, field]) => [key,
|
|
60
|
+
typeof settingsModule.SettingsForms === "function" ? field.volatile() : field,
|
|
61
|
+
]),
|
|
62
|
+
));
|
|
63
|
+
|
|
64
|
+
export function hasLiveConfig(config) {
|
|
65
|
+
return Object.values(config).some((value) =>
|
|
66
|
+
value !== null && typeof value === "object" &&
|
|
67
|
+
Symbol.for("cosmokit.volatile.write") in value,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
54
70
|
|
|
55
71
|
/**
|
|
56
72
|
* Normalized runtime configuration.
|
|
@@ -64,7 +80,11 @@ export const Config = z.object({
|
|
|
64
80
|
* commandsEnabled: boolean,
|
|
65
81
|
* }}
|
|
66
82
|
*/
|
|
67
|
-
export function resolveConfig(config) {
|
|
83
|
+
export function resolveConfig(config) {
|
|
84
|
+
config = Object.fromEntries(Object.entries(config).map(([key, value]) => [key,
|
|
85
|
+
value !== null && typeof value === "object" &&
|
|
86
|
+
Symbol.for("cosmokit.volatile.write") in value ? value.get() : value,
|
|
87
|
+
]));
|
|
68
88
|
return {
|
|
69
89
|
enabled: config.enabled !== false,
|
|
70
90
|
maxBytes: config.maxBytes ?? 4096,
|
package/lib/index.js
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { isDeepStrictEqual } from "node:util";
|
|
23
23
|
import * as settingsModule from "@deepseek-ai/dsh-settings";
|
|
24
|
-
import { Config, resolveConfig } from "./config.js";
|
|
24
|
+
import { Config, hasLiveConfig, resolveConfig } from "./config.js";
|
|
25
25
|
import {
|
|
26
26
|
createBreadcrumbComposer,
|
|
27
27
|
isBreadcrumbMessage,
|
|
@@ -56,11 +56,13 @@ export function apply(ctx, config = {}) {
|
|
|
56
56
|
let stopped = false;
|
|
57
57
|
let disposeRuntime = () => {};
|
|
58
58
|
let currentConfig = () => config;
|
|
59
|
+
let mountedConfig;
|
|
59
60
|
|
|
60
61
|
const mountRuntime = (nextConfig) => {
|
|
61
62
|
if (stopped) return;
|
|
62
63
|
disposeRuntime();
|
|
63
|
-
const resolved = resolveConfig(nextConfig);
|
|
64
|
+
const resolved = resolveConfig(nextConfig);
|
|
65
|
+
mountedConfig = resolved;
|
|
64
66
|
if (!resolved.enabled) {
|
|
65
67
|
disposeRuntime = () => {};
|
|
66
68
|
return;
|
|
@@ -90,7 +92,15 @@ export function apply(ctx, config = {}) {
|
|
|
90
92
|
stopped = true;
|
|
91
93
|
disposeRuntime();
|
|
92
94
|
};
|
|
93
|
-
}, "dsh-trellis.runtime");
|
|
95
|
+
}, "dsh-trellis.runtime");
|
|
96
|
+
|
|
97
|
+
if (hasLiveConfig(config)) {
|
|
98
|
+
// Loader emits this to the owning fiber after committing every reference.
|
|
99
|
+
// Unrelated profile edits must not cancel active waits or breadcrumbs.
|
|
100
|
+
ctx.on("loader/volatile-update", () => {
|
|
101
|
+
if (!isDeepStrictEqual(resolveConfig(config), mountedConfig)) mountRuntime(config);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
94
104
|
|
|
95
105
|
// Optional by design: profiles without a settings service retain the
|
|
96
106
|
// loader-config behavior. The canonical bridge also distinguishes a settings
|
package/lib/settings-compat.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Bridge legacy settings sections and profile-backed Config forms.
|
|
3
3
|
*
|
|
4
4
|
* DSH through 0.1.1 exposes `installSettingsSection` as a package helper.
|
|
5
5
|
* The 0.1.2 alpha line moved the same lifecycle onto
|
|
6
6
|
* `SettingsProvider.installSection` and removed the helper export. A namespace
|
|
7
7
|
* import keeps this module loadable on both lines while the provider remains
|
|
8
8
|
* optional for profiles that do not mount settings.
|
|
9
|
+
* DSH 0.1.7 instead projects volatile Config fields; Settings owns presentation
|
|
10
|
+
* policy only, and the Loader owns live values and change notification.
|
|
9
11
|
*
|
|
10
12
|
* @param {import("@deepseek-ai/cordis").Context} ctx
|
|
11
13
|
* @param {{ installSettingsSection?: Function }} settingsModule
|
|
@@ -34,6 +36,13 @@ export function installSettingsSectionCompat(
|
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
ctx.inject(["settings"], (settingsCtx) => {
|
|
39
|
+
if (typeof settingsCtx.settings?.configure === "function") {
|
|
40
|
+
// Values belong to the owner's volatile Config, not the optional UI.
|
|
41
|
+
settingsCtx.effect(() =>
|
|
42
|
+
settingsCtx.settings.configure({ auto: false }, ctx.fiber),
|
|
43
|
+
);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
37
46
|
if (typeof settingsCtx.settings?.installSection !== "function") {
|
|
38
47
|
throw new TypeError(
|
|
39
48
|
"The mounted DSH settings service does not expose installSection().",
|
package/lib/wait-tool.js
CHANGED
|
@@ -15,7 +15,8 @@ function createSettlementWaiter(parentCtx, subagentId, signal) {
|
|
|
15
15
|
let disposeListener = () => {};
|
|
16
16
|
let settled = false;
|
|
17
17
|
let resolvePromise;
|
|
18
|
-
let rejectPromise;
|
|
18
|
+
let rejectPromise;
|
|
19
|
+
let terminal;
|
|
19
20
|
|
|
20
21
|
const cleanup = () => {
|
|
21
22
|
disposeListener?.();
|
|
@@ -40,13 +41,15 @@ function createSettlementWaiter(parentCtx, subagentId, signal) {
|
|
|
40
41
|
if (settled || info.id !== subagentId) return;
|
|
41
42
|
settled = true;
|
|
42
43
|
cleanup();
|
|
43
|
-
resolvePromise(info);
|
|
44
|
+
resolvePromise(info);
|
|
45
|
+
terminal = info;
|
|
44
46
|
}) ?? (() => {});
|
|
45
47
|
signal?.addEventListener("abort", onAbort, { once: true });
|
|
46
48
|
if (signal?.aborted) onAbort();
|
|
47
49
|
|
|
48
50
|
return {
|
|
49
|
-
promise,
|
|
51
|
+
promise,
|
|
52
|
+
result: () => terminal,
|
|
50
53
|
cancel() {
|
|
51
54
|
if (settled) return;
|
|
52
55
|
settled = true;
|
|
@@ -93,7 +96,27 @@ function inactiveResult(subagentId) {
|
|
|
93
96
|
};
|
|
94
97
|
}
|
|
95
98
|
|
|
96
|
-
/**
|
|
99
|
+
/** Catalogs prove ownership, not residency or successful completion. */
|
|
100
|
+
function childActivity(ctx, parent, child) {
|
|
101
|
+
if (child.kind === "child") {
|
|
102
|
+
if (["running", "inactive"].includes(child.activity)) return child.activity;
|
|
103
|
+
throw new Error("DSH returned an unsupported child activity.");
|
|
104
|
+
}
|
|
105
|
+
const sessions = ctx.get?.("sessions");
|
|
106
|
+
if (typeof sessions?.get !== "function") {
|
|
107
|
+
throw new Error("trellis_wait requires the session store to check catalog child residency.");
|
|
108
|
+
}
|
|
109
|
+
const live = sessions.get(child.id);
|
|
110
|
+
if (live === undefined) return "inactive";
|
|
111
|
+
const header = live.header;
|
|
112
|
+
if (header.parentSession !== parent.id || header.origin !== "subagent" ||
|
|
113
|
+
header.createdAt !== child.createdAt) {
|
|
114
|
+
throw new Error("trellis_wait child lifecycle no longer matches its parent catalog.");
|
|
115
|
+
}
|
|
116
|
+
return "running";
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** Register the Trellis-only, event-driven subagent wait tool. */
|
|
97
120
|
export function registerWaitTool(ctx) {
|
|
98
121
|
const lifetime = new AbortController();
|
|
99
122
|
const unregister = ctx.tools.register(
|
|
@@ -175,7 +198,7 @@ export function registerWaitTool(ctx) {
|
|
|
175
198
|
signal.throwIfAborted();
|
|
176
199
|
const child = entries.find(
|
|
177
200
|
(entry) =>
|
|
178
|
-
entry.kind === "child" &&
|
|
201
|
+
(entry.kind === "child" || entry.kind === undefined) &&
|
|
179
202
|
entry.mode === "continuable" &&
|
|
180
203
|
entry.id === args.subagent_id,
|
|
181
204
|
);
|
|
@@ -184,7 +207,9 @@ export function registerWaitTool(ctx) {
|
|
|
184
207
|
`trellis_wait can only wait for a direct continuable subagent of this session: ${args.subagent_id}`,
|
|
185
208
|
);
|
|
186
209
|
}
|
|
187
|
-
|
|
210
|
+
// Preserve a proven event captured during the asynchronous lookup.
|
|
211
|
+
if (waiter.result()) return settledResult(args.subagent_id, waiter.result());
|
|
212
|
+
if (childActivity(ctx, parent, child) === "inactive") {
|
|
188
213
|
waiter.cancel();
|
|
189
214
|
return inactiveResult(args.subagent_id);
|
|
190
215
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-trellis",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Trellis workflow integration for DeepSeek Harness: per-turn workflow-state breadcrumbs, utility commands, and native session identity.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -56,13 +56,13 @@
|
|
|
56
56
|
},
|
|
57
57
|
"peerDependencies": {
|
|
58
58
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
59
|
-
"@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
60
|
-
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
61
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
62
|
-
"@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
63
|
-
"@deepseek-ai/dsh-shell-env": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
64
|
-
"@deepseek-ai/dsh-subagent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
65
|
-
"@deepseek-ai/dsh-tools": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2",
|
|
59
|
+
"@deepseek-ai/dsh-commands": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
60
|
+
"@deepseek-ai/dsh-llm": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
61
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
62
|
+
"@deepseek-ai/dsh-settings": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
63
|
+
"@deepseek-ai/dsh-shell-env": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
64
|
+
"@deepseek-ai/dsh-subagent": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
65
|
+
"@deepseek-ai/dsh-tools": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1",
|
|
66
66
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
67
67
|
},
|
|
68
68
|
"peerDependenciesMeta": {
|
|
@@ -98,39 +98,43 @@
|
|
|
98
98
|
"zod": "^4.4.3"
|
|
99
99
|
},
|
|
100
100
|
"devDependencies": {
|
|
101
|
-
"@deepseek-ai/cordis": "
|
|
102
|
-
"@deepseek-ai/
|
|
103
|
-
"@deepseek-ai/
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
105
|
-
"@deepseek-ai/dsh-
|
|
106
|
-
"@deepseek-ai/dsh-
|
|
107
|
-
"@deepseek-ai/dsh-
|
|
108
|
-
"@deepseek-ai/dsh-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-
|
|
117
|
-
"@deepseek-ai/dsh-
|
|
118
|
-
"@deepseek-ai/dsh-
|
|
119
|
-
"@deepseek-ai/dsh-
|
|
120
|
-
"@deepseek-ai/dsh-
|
|
121
|
-
"@deepseek-ai/dsh-
|
|
122
|
-
"@deepseek-ai/dsh-
|
|
123
|
-
"@deepseek-ai/dsh-
|
|
124
|
-
"@deepseek-ai/dsh-
|
|
125
|
-
"@deepseek-ai/dsh-
|
|
126
|
-
"@deepseek-ai/
|
|
101
|
+
"@deepseek-ai/cordis-plugin-include": "1.0.9",
|
|
102
|
+
"@deepseek-ai/cordis-plugin-loader": "1.0.5",
|
|
103
|
+
"@deepseek-ai/cordis": "4.0.4",
|
|
104
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.1",
|
|
105
|
+
"@deepseek-ai/dsh-agent-loop": "0.1.7-rc.1",
|
|
106
|
+
"@deepseek-ai/dsh-attachment": "0.1.7-rc.1",
|
|
107
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.1",
|
|
108
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.1",
|
|
109
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.1",
|
|
110
|
+
"@deepseek-ai/dsh-commands": "0.1.7-rc.1",
|
|
111
|
+
"@deepseek-ai/dsh-home-paths": "0.1.7-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-http-proxy": "0.1.7-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-invariants": "0.1.7-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-sandbox": "0.1.7-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-scope": "0.1.7-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.7-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-session-query": "0.1.7-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-shell": "0.1.7-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-shell-env": "0.1.7-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-subagent": "0.1.7-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-subprocess": "0.1.7-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-user-approval": "0.1.7-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-util-time": "0.1.7-rc.1",
|
|
130
|
+
"@deepseek-ai/schemastery": "3.18.4",
|
|
127
131
|
"react": "19.2.8",
|
|
128
132
|
"react-dom": "19.2.8",
|
|
129
133
|
"tsdown": "^0.22.2",
|
|
130
|
-
"@deepseek-ai/dsh-ptc-runtime": "0.1.
|
|
134
|
+
"@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.1"
|
|
131
135
|
},
|
|
132
136
|
"engines": {
|
|
133
137
|
"node": ">=24",
|
|
134
|
-
"dsh": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2"
|
|
138
|
+
"dsh": "^0.1.0-rc.6 || ^0.1.1-rc.1 || ^0.1.2-alpha.1 || ^0.1.3-alpha.1 || ^0.1.5-alpha.1 || ^0.1.6-alpha.2 || ^0.1.7-rc.1"
|
|
135
139
|
}
|
|
136
140
|
}
|