@dsh-workbench/core 1.1.7 → 1.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/bin/dsh-workbench +11 -45
- package/client.js +379 -305
- package/dist/client/client.body.js +379 -305
- package/dist/client/index.js +252 -178
- package/dist/host/index.js +4684 -4129
- package/dist/types/app/layouts/approval-detail.d.ts +5 -5
- package/dist/types/app/layouts/env-gate/gate-text.d.ts +5 -4
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +25 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +1 -2
- package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +1 -1
- package/dist/types/app/layouts/sidebar/workspace-groups.d.ts +4 -1
- package/dist/types/kernel/contract/index.d.ts +1 -0
- package/dist/types/modules/panels/model/approval-questions.d.ts +6 -0
- package/dist/types/modules/panels/model/diy-browser-act.d.ts +2 -2
- package/dist/types/modules/panels/model/diy-browser.d.ts +4 -2
- package/dist/types/modules/panels/model/diy-page.d.ts +2 -1
- package/dist/types/modules/panels/model/diy-record.d.ts +2 -1
- package/dist/types/modules/panels/model/diy-tools.d.ts +1 -0
- package/dist/types/modules/panels/model/market-dependency.d.ts +1 -1
- package/dist/types/modules/panels/model/market-env.d.ts +2 -0
- package/dist/types/modules/panels/model/market.d.ts +1 -1
- package/dist/types/modules/panels/model/plugin-ledger.d.ts +3 -0
- package/dist/types/modules/panels/model/plugin-name.d.ts +7 -3
- package/dist/types/modules/sessions/index.d.ts +1 -1
- package/dist/types/modules/sessions/model/attention.d.ts +1 -0
- package/dist/types/shared/api/host/diy-recon-fs.d.ts +1 -1
- package/dist/types/shared/api/host/diy-recon.d.ts +12 -5
- package/dist/types/shared/api/host/flow/task.d.ts +10 -0
- package/dist/types/shared/api/host/flow/tool.d.ts +12 -0
- package/dist/types/shared/api/host/host-routes.d.ts +2 -2
- package/dist/types/shared/api/host/plugin-term.d.ts +2 -0
- package/dist/types/shared/api/host/runtime-surface.d.ts +3 -0
- package/dist/types/shared/hooks/locale-text.d.ts +3 -0
- package/dist/types/shared/hooks/runtime-queries.d.ts +6 -0
- package/dist/types/shared/hooks/runtime-terms.d.ts +2 -0
- package/dist/types/shared/hooks/use-runtime-capabilities.d.ts +6 -0
- package/package.json +6 -3
- package/scripts/seed-workshop.sh +1 -1
- package/skills/workbench-module-diy/DESIGN.md +3 -1
- package/skills/workbench-module-diy/FAMILY.md +1 -0
- package/skills/workbench-module-diy/FLOW.md +117 -0
- package/skills/workbench-module-diy/PANEL.md +9 -7
- package/skills/workbench-module-diy/SKILL.md +8 -1
- package/skills/workbench-module-diy/STEPS.md +12 -1
- package/skills/workbench-module-diy/TOOLS.md +16 -4
- package/skills/workbench-module-diy/WIRING.md +6 -4
- package/skills/workbench-module-diy/WRITES.md +2 -2
- package/bin/opencli-isolated +0 -62
- package/bin/opencli-isolated.mjs +0 -44
- package/bin/opencli-node-mode.cjs +0 -1
- package/dist/types/app/layouts/rightbar/AskAgentButton.d.ts +0 -6
- package/dist/types/app/layouts/rightbar/board-columns.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/dsh-borrow.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/dsh-column-source.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/dsh-surface.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/presentation.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/rightbar-width.test.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/store.test.d.ts +0 -1
- package/dist/types/kernel/contract/contracts.test.d.ts +0 -1
- package/dist/types/kernel/contract/index.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-browser-act.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-browser-tools-shot.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-browser-tools.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-browser.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-components.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-context.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-debug-routes.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-debug-tools.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-logs.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-observers.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-page.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-bar.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-beat.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-capture.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-close.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-failure.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-hook.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-open.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-routes.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-shot.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record-text.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-record.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-schema.test.d.ts +0 -1
- package/dist/types/modules/panels/model/diy-spec.test.d.ts +0 -1
- package/dist/types/modules/panels/model/handoff.test.d.ts +0 -1
- package/dist/types/modules/panels/model/long-task-tools.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-install-error.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-installed.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-registry.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-remove.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-restart.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-sources-tool.test.d.ts +0 -1
- package/dist/types/modules/panels/model/market-swap-stuck.test.d.ts +0 -1
- package/dist/types/modules/panels/model/plugin-name.test.d.ts +0 -1
- package/dist/types/modules/panels/model/routes.test.d.ts +0 -1
- package/dist/types/modules/sessions/model/attention-long-task.test.d.ts +0 -1
- package/dist/types/modules/sessions/model/attention.test.d.ts +0 -1
- package/dist/types/modules/sessions/model/scroll-edges.test.d.ts +0 -1
- package/dist/types/modules/sessions/model/session-node.test.d.ts +0 -1
- package/dist/types/shared/api/config-sync.test.d.ts +0 -1
- package/dist/types/shared/api/diy.test.d.ts +0 -1
- package/dist/types/shared/api/dsh-plugins.test.d.ts +0 -1
- package/dist/types/shared/api/host/bundle-inspect-kind.test.d.ts +0 -1
- package/dist/types/shared/api/host/bundle-routes-self.test.d.ts +0 -1
- package/dist/types/shared/api/host/bundle-routes.test.d.ts +0 -1
- package/dist/types/shared/api/host/diy-facts.test.d.ts +0 -1
- package/dist/types/shared/api/host/diy-recon-fs.test.d.ts +0 -1
- package/dist/types/shared/api/host/diy-recon.test.d.ts +0 -1
- package/dist/types/shared/api/host/diy.test.d.ts +0 -1
- package/dist/types/shared/api/host/http.test.d.ts +0 -1
- package/dist/types/shared/api/host/png-crop.test.d.ts +0 -1
- package/dist/types/shared/api/host/runtime-seed.test.d.ts +0 -1
- package/dist/types/shared/api/host/self-update-marker.test.d.ts +0 -1
- package/dist/types/shared/api/host/shell.test.d.ts +0 -1
- package/dist/types/shared/api/unit-manifests.test.d.ts +0 -1
- package/dist/types/shared/components/blocker-action.test.d.ts +0 -1
- package/dist/types/shared/hooks/panel-state-report.test.d.ts +0 -1
package/bin/dsh-workbench
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
#
|
|
14
14
|
# 与 `dsh web` 并存:不同的 profile、不同的 node_modules、不同的端口、独立的进程。
|
|
15
15
|
# 会话 / 项目 / 附件跟 `dsh web` 和 Desktop 共用一份(都在 $DSH_HOME 下),
|
|
16
|
-
#
|
|
16
|
+
# 只有设置与插件分家;运行时自己的那棵树、工坊、模块市场仍按 profile 各一份。
|
|
17
17
|
#
|
|
18
18
|
# ── 这份脚本有两种身份,它自己分得清 ──────────────────────────────────────
|
|
19
19
|
# · **仓库副本**(这个包落在一个 git 工作树里):开发用。bundle 以 link 方式装本目录,
|
|
@@ -114,14 +114,14 @@ fi
|
|
|
114
114
|
export WORKBENCH_PROFILE="$PROFILE"
|
|
115
115
|
export WB_CLONE="${WB_CLONE:-0}"
|
|
116
116
|
PROFILE_DIR="$DSH_HOME/profiles/$PROFILE"
|
|
117
|
-
# 每个 profile
|
|
117
|
+
# 每个 profile 一份自己的**运行时**根(隔离运行时、工坊、模块市场);
|
|
118
118
|
# 会话 / 项目 / 附件不在这里 —— 它们跟 `dsh web` / Desktop 共用 $DSH_HOME。
|
|
119
119
|
WORKBENCH_HOME="${DSH_WORKBENCH_HOME:-$DSH_HOME/$PROFILE}"
|
|
120
120
|
export DSH_WORKBENCH_HOME="$WORKBENCH_HOME"
|
|
121
121
|
|
|
122
122
|
# 本包的真实位置。**不能**直接 `dirname "$0"/..`:npx 是经 `node_modules/.bin/dsh-workbench`
|
|
123
123
|
# 这条软链调进来的,那样算出来会停在 `node_modules`(实测),于是下面
|
|
124
|
-
# `$REPO_DIR/bin
|
|
124
|
+
# `$REPO_DIR/bin`、`$REPO_DIR/profile/*` 全指着不存在的地方
|
|
125
125
|
# —— 症状是隔离运行时那条软链变成死链、启动体检一直说"没装好"。
|
|
126
126
|
# 所以先把软链解析到底,再取它的上一级。
|
|
127
127
|
SELF="${BASH_SOURCE[0]}"
|
|
@@ -218,7 +218,7 @@ pkg_version() {
|
|
|
218
218
|
run_setup() {
|
|
219
219
|
# ⚠️ 用 `bash` 呼,不靠文件的 x 位:pnpm publish(release.mjs 走 `pnpm -r publish`)
|
|
220
220
|
# 只给 `package.json#bin` 点名的那一个文件 755,其余在 tarball 里一律 644
|
|
221
|
-
# (实测 pnpm pack 的产物:bin/dsh-workbench 是 755
|
|
221
|
+
# (实测 pnpm pack 的产物:bin/dsh-workbench 是 755,随包出去的其它脚本与
|
|
222
222
|
# scripts/seed-profile.sh 都是 644;npm pack 会保留 x 位,所以这是 pnpm 独有的坑)。
|
|
223
223
|
# 症状是「本机怎么跑都行、别人机器上 Permission denied」——因为 git 里有 x 位,
|
|
224
224
|
# 只有装出来的副本会丢。
|
|
@@ -271,13 +271,11 @@ run_setup() {
|
|
|
271
271
|
|
|
272
272
|
(全局装过就用 dsh-workbench;npx 就用 npx @dsh-workbench/core;本仓开发用 ./packages/core/bin/dsh-workbench。)
|
|
273
273
|
|
|
274
|
-
|
|
275
|
-
|
|
274
|
+
首次打开会走启动体检:它按当前运行时自己把隔离环境装好,缺什么、怎么装都在那一屏上,
|
|
275
|
+
必要时还会给一条能直接照抄到终端的命令。
|
|
276
276
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
装完确认已启用、浏览器保持开着;启动后如果「浏览器连接」还没连上,回「准备工作台」那一屏点「重试」。
|
|
280
|
-
面板读的是你浏览器里的登录状态;不装也能进工作台,只是要靠登录状态的面板取不到数据。
|
|
277
|
+
浏览器那边同理 —— 要不要扩展、装哪个、装完怎么确认,都由运行时自己的说明给出;
|
|
278
|
+
面板读的是你浏览器里的登录状态,没连上也能进工作台,只是靠登录状态取数的面板会空着。
|
|
281
279
|
EOF
|
|
282
280
|
}
|
|
283
281
|
|
|
@@ -409,7 +407,7 @@ PATCH_ARGS=()
|
|
|
409
407
|
|
|
410
408
|
# ── 声明工作台运行时的**可写根**(执行缝的沙箱只放行 process.cwd())──────────
|
|
411
409
|
#
|
|
412
|
-
#
|
|
410
|
+
# 工作台自己要跑命令:启动体检自动装运行时、模块市场装/升插件、查源上新版。
|
|
413
411
|
# 这些命令走 dsh 的执行缝,而那条缝带**文件沙箱**;插件发起的调用**没有会话**,
|
|
414
412
|
# 回落到部署策略,出厂值是 `workspaceRoot: process.cwd()` —— 安装目标
|
|
415
413
|
# `$DSH_HOME/workbench/...` 不在启动目录下,被拒写(EPERM),"自动装"死在第一步,
|
|
@@ -426,18 +424,6 @@ else
|
|
|
426
424
|
echo "dsh-workbench: 提醒 —— 找不到 ${SANDBOX_PATCH},这次不声明可写根(自动装会失败)。" >&2
|
|
427
425
|
fi
|
|
428
426
|
|
|
429
|
-
# 把 opencli 指到**隔离运行时**:所有 opencli 调用(探测、取数、装/卸插件)都走它,
|
|
430
|
-
# 于是装/卸插件不碰用户本机的 ~/.opencli。
|
|
431
|
-
#
|
|
432
|
-
# 为什么隔离要用 HOME(而不是 OPENCLI_CONFIG_DIR):opencli 的**插件目录只认 HOME**
|
|
433
|
-
# —— 见 bin/opencli-isolated 开头的说明。
|
|
434
|
-
#
|
|
435
|
-
# 建一个**稳定路径**的软链:别处(包括给用户"复制这条命令"的文案)都能用
|
|
436
|
-
# $WORKBENCH_HOME/opencli/bin/opencli 引用它,不必知道本目录在哪 ——
|
|
437
|
-
# 而且从那里跑出来同样是隔离的。指向 profile 里那份,别指 npx 缓存(会回收)。
|
|
438
|
-
OPENCLI_ROOT="$WORKBENCH_HOME/opencli"
|
|
439
|
-
mkdir -p "$OPENCLI_ROOT/bin" "$OPENCLI_ROOT/home"
|
|
440
|
-
|
|
441
427
|
# DIY 工坊的目录必须**每次启动都在**:`cordis.patch.yml` 的 hmr 行把它列成一个监听根
|
|
442
428
|
# (工坊里的模块是被 link 进 profile 的仓外目录,Node 解析到的是工坊里的真路径,
|
|
443
429
|
# 所以不把它列进去,模块重建 dist/host.js 就不热换 —— 而且**不报错**)。
|
|
@@ -466,28 +452,8 @@ fi
|
|
|
466
452
|
# (上面那次 `entry` 已经跑过它)。为什么收成一处:启动器与宿主自举都跑那个脚本,从前两处
|
|
467
453
|
# 各写一遍(这里一段 bash + 宿主 TS 的 `linkSkills`),目标虽一致,却是**同一件事两个实现** ——
|
|
468
454
|
# 哪天只有一边改了源或判据就会互相改指,而软链指到哪 skill 发现都**不报错**。
|
|
469
|
-
#
|
|
470
|
-
#
|
|
471
|
-
# (症状:启动体检永远说"隔离运行时没装好",而它其实是没权限跑)。
|
|
472
|
-
# 所以这里写一个**我们自己拥有**的转发脚本,x 位由 chmod 当场给。
|
|
473
|
-
# ⚠️ 先 rm -f:旧版本留下的软链还在时,`>` 会顺着软链把真脚本覆盖掉。
|
|
474
|
-
# ⚠️ DSH_HOME 必须**钉在命令里**:执行缝不继承它,而 bin/opencli-isolated 用
|
|
475
|
-
# `${DSH_HOME:-$HOME/.dsh}` 推根 —— 不钉的话,DSH_HOME 不是默认值的机器上,
|
|
476
|
-
# 隔离运行时会被认成用户真家目录那一份(实测:同一条路上的 seed-workshop.sh
|
|
477
|
-
# 就是这样把入口写进了 ~/.dsh,见 ADR-0037 的"执行缝不继承 DSH_HOME")。
|
|
478
|
-
rm -f "$OPENCLI_ROOT/bin/opencli"
|
|
479
|
-
printf '#!/bin/sh\nexec env DSH_HOME=%q bash %q "$@"\n' "$DSH_HOME" "$DSH_WORKBENCH_ROOT/bin/opencli-isolated" \
|
|
480
|
-
>"$OPENCLI_ROOT/bin/opencli"
|
|
481
|
-
chmod +x "$OPENCLI_ROOT/bin/opencli"
|
|
482
|
-
export DSH_WORKBENCH_OPENCLI="$OPENCLI_ROOT/bin/opencli"
|
|
483
|
-
|
|
484
|
-
# 软提醒:隔离运行时没装的话,启动体检会**自己装**(沙箱已放行工作台运行时,
|
|
485
|
-
# 见上面那层 SANDBOX_PATCH);这条只是提前说一声,免得盯着全屏 loading 猜。
|
|
486
|
-
if [ ! -x "$OPENCLI_ROOT/toolchain/node_modules/.bin/opencli" ]; then
|
|
487
|
-
echo "dsh-workbench: opencli 的隔离运行时还没装好 —— 启动体检会自己装," >&2
|
|
488
|
-
echo " 装不上时它会给一条能直接照抄到终端的命令。" >&2
|
|
489
|
-
fi
|
|
490
|
-
|
|
455
|
+
# 运行时的**稳定入口**不在这里建:它属于适配器(隔离包装随适配器出货),
|
|
456
|
+
# 由宿主自举在每次启动时写到自己的隔离根里 —— 写口只有那一处。
|
|
491
457
|
# ⚠️ 顺序有讲究:`--patch` 是 **dsh 本体**的选项,必须排在 `--port`(应用参数)**之前** ——
|
|
492
458
|
# 参数一旦进了应用的透传区(第一个应用自己的选项开始),后面的都直接交给应用,
|
|
493
459
|
# `--patch` 会被应用当成未知选项(实测:`--port` 在前时报 `unknown option '--patch'`)。
|