@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.
Files changed (118) hide show
  1. package/bin/dsh-workbench +11 -45
  2. package/client.js +379 -305
  3. package/dist/client/client.body.js +379 -305
  4. package/dist/client/index.js +252 -178
  5. package/dist/host/index.js +4684 -4129
  6. package/dist/types/app/layouts/approval-detail.d.ts +5 -5
  7. package/dist/types/app/layouts/env-gate/gate-text.d.ts +5 -4
  8. package/dist/types/app/layouts/rightbar/MarketView.d.ts +25 -3
  9. package/dist/types/app/layouts/rightbar/market-rows.d.ts +0 -1
  10. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +1 -2
  11. package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +1 -1
  12. package/dist/types/app/layouts/sidebar/workspace-groups.d.ts +4 -1
  13. package/dist/types/kernel/contract/index.d.ts +1 -0
  14. package/dist/types/modules/panels/model/approval-questions.d.ts +6 -0
  15. package/dist/types/modules/panels/model/diy-browser-act.d.ts +2 -2
  16. package/dist/types/modules/panels/model/diy-browser.d.ts +4 -2
  17. package/dist/types/modules/panels/model/diy-page.d.ts +2 -1
  18. package/dist/types/modules/panels/model/diy-record.d.ts +2 -1
  19. package/dist/types/modules/panels/model/diy-tools.d.ts +1 -0
  20. package/dist/types/modules/panels/model/market-dependency.d.ts +1 -1
  21. package/dist/types/modules/panels/model/market-env.d.ts +2 -0
  22. package/dist/types/modules/panels/model/market.d.ts +1 -1
  23. package/dist/types/modules/panels/model/plugin-ledger.d.ts +3 -0
  24. package/dist/types/modules/panels/model/plugin-name.d.ts +7 -3
  25. package/dist/types/modules/sessions/index.d.ts +1 -1
  26. package/dist/types/modules/sessions/model/attention.d.ts +1 -0
  27. package/dist/types/shared/api/host/diy-recon-fs.d.ts +1 -1
  28. package/dist/types/shared/api/host/diy-recon.d.ts +12 -5
  29. package/dist/types/shared/api/host/flow/task.d.ts +10 -0
  30. package/dist/types/shared/api/host/flow/tool.d.ts +12 -0
  31. package/dist/types/shared/api/host/host-routes.d.ts +2 -2
  32. package/dist/types/shared/api/host/plugin-term.d.ts +2 -0
  33. package/dist/types/shared/api/host/runtime-surface.d.ts +3 -0
  34. package/dist/types/shared/hooks/locale-text.d.ts +3 -0
  35. package/dist/types/shared/hooks/runtime-queries.d.ts +6 -0
  36. package/dist/types/shared/hooks/runtime-terms.d.ts +2 -0
  37. package/dist/types/shared/hooks/use-runtime-capabilities.d.ts +6 -0
  38. package/package.json +6 -3
  39. package/scripts/seed-workshop.sh +1 -1
  40. package/skills/workbench-module-diy/DESIGN.md +3 -1
  41. package/skills/workbench-module-diy/FAMILY.md +1 -0
  42. package/skills/workbench-module-diy/FLOW.md +117 -0
  43. package/skills/workbench-module-diy/PANEL.md +9 -7
  44. package/skills/workbench-module-diy/SKILL.md +8 -1
  45. package/skills/workbench-module-diy/STEPS.md +12 -1
  46. package/skills/workbench-module-diy/TOOLS.md +16 -4
  47. package/skills/workbench-module-diy/WIRING.md +6 -4
  48. package/skills/workbench-module-diy/WRITES.md +2 -2
  49. package/bin/opencli-isolated +0 -62
  50. package/bin/opencli-isolated.mjs +0 -44
  51. package/bin/opencli-node-mode.cjs +0 -1
  52. package/dist/types/app/layouts/rightbar/AskAgentButton.d.ts +0 -6
  53. package/dist/types/app/layouts/rightbar/board-columns.test.d.ts +0 -1
  54. package/dist/types/app/layouts/rightbar/dsh-borrow.test.d.ts +0 -1
  55. package/dist/types/app/layouts/rightbar/dsh-column-source.test.d.ts +0 -1
  56. package/dist/types/app/layouts/rightbar/dsh-surface.test.d.ts +0 -1
  57. package/dist/types/app/layouts/rightbar/presentation.test.d.ts +0 -1
  58. package/dist/types/app/layouts/rightbar/rightbar-width.test.d.ts +0 -1
  59. package/dist/types/app/layouts/rightbar/store.test.d.ts +0 -1
  60. package/dist/types/kernel/contract/contracts.test.d.ts +0 -1
  61. package/dist/types/kernel/contract/index.test.d.ts +0 -1
  62. package/dist/types/modules/panels/model/diy-browser-act.test.d.ts +0 -1
  63. package/dist/types/modules/panels/model/diy-browser-tools-shot.test.d.ts +0 -1
  64. package/dist/types/modules/panels/model/diy-browser-tools.test.d.ts +0 -1
  65. package/dist/types/modules/panels/model/diy-browser.test.d.ts +0 -1
  66. package/dist/types/modules/panels/model/diy-components.test.d.ts +0 -1
  67. package/dist/types/modules/panels/model/diy-context.test.d.ts +0 -1
  68. package/dist/types/modules/panels/model/diy-debug-routes.test.d.ts +0 -1
  69. package/dist/types/modules/panels/model/diy-debug-tools.test.d.ts +0 -1
  70. package/dist/types/modules/panels/model/diy-logs.test.d.ts +0 -1
  71. package/dist/types/modules/panels/model/diy-observers.test.d.ts +0 -1
  72. package/dist/types/modules/panels/model/diy-page.test.d.ts +0 -1
  73. package/dist/types/modules/panels/model/diy-record-bar.test.d.ts +0 -1
  74. package/dist/types/modules/panels/model/diy-record-beat.test.d.ts +0 -1
  75. package/dist/types/modules/panels/model/diy-record-capture.test.d.ts +0 -1
  76. package/dist/types/modules/panels/model/diy-record-close.test.d.ts +0 -1
  77. package/dist/types/modules/panels/model/diy-record-failure.test.d.ts +0 -1
  78. package/dist/types/modules/panels/model/diy-record-hook.test.d.ts +0 -1
  79. package/dist/types/modules/panels/model/diy-record-open.test.d.ts +0 -1
  80. package/dist/types/modules/panels/model/diy-record-routes.test.d.ts +0 -1
  81. package/dist/types/modules/panels/model/diy-record-shot.test.d.ts +0 -1
  82. package/dist/types/modules/panels/model/diy-record-text.test.d.ts +0 -1
  83. package/dist/types/modules/panels/model/diy-record.test.d.ts +0 -1
  84. package/dist/types/modules/panels/model/diy-schema.test.d.ts +0 -1
  85. package/dist/types/modules/panels/model/diy-spec.test.d.ts +0 -1
  86. package/dist/types/modules/panels/model/handoff.test.d.ts +0 -1
  87. package/dist/types/modules/panels/model/long-task-tools.test.d.ts +0 -1
  88. package/dist/types/modules/panels/model/market-install-error.test.d.ts +0 -1
  89. package/dist/types/modules/panels/model/market-installed.test.d.ts +0 -1
  90. package/dist/types/modules/panels/model/market-registry.test.d.ts +0 -1
  91. package/dist/types/modules/panels/model/market-remove.test.d.ts +0 -1
  92. package/dist/types/modules/panels/model/market-restart.test.d.ts +0 -1
  93. package/dist/types/modules/panels/model/market-sources-tool.test.d.ts +0 -1
  94. package/dist/types/modules/panels/model/market-swap-stuck.test.d.ts +0 -1
  95. package/dist/types/modules/panels/model/plugin-name.test.d.ts +0 -1
  96. package/dist/types/modules/panels/model/routes.test.d.ts +0 -1
  97. package/dist/types/modules/sessions/model/attention-long-task.test.d.ts +0 -1
  98. package/dist/types/modules/sessions/model/attention.test.d.ts +0 -1
  99. package/dist/types/modules/sessions/model/scroll-edges.test.d.ts +0 -1
  100. package/dist/types/modules/sessions/model/session-node.test.d.ts +0 -1
  101. package/dist/types/shared/api/config-sync.test.d.ts +0 -1
  102. package/dist/types/shared/api/diy.test.d.ts +0 -1
  103. package/dist/types/shared/api/dsh-plugins.test.d.ts +0 -1
  104. package/dist/types/shared/api/host/bundle-inspect-kind.test.d.ts +0 -1
  105. package/dist/types/shared/api/host/bundle-routes-self.test.d.ts +0 -1
  106. package/dist/types/shared/api/host/bundle-routes.test.d.ts +0 -1
  107. package/dist/types/shared/api/host/diy-facts.test.d.ts +0 -1
  108. package/dist/types/shared/api/host/diy-recon-fs.test.d.ts +0 -1
  109. package/dist/types/shared/api/host/diy-recon.test.d.ts +0 -1
  110. package/dist/types/shared/api/host/diy.test.d.ts +0 -1
  111. package/dist/types/shared/api/host/http.test.d.ts +0 -1
  112. package/dist/types/shared/api/host/png-crop.test.d.ts +0 -1
  113. package/dist/types/shared/api/host/runtime-seed.test.d.ts +0 -1
  114. package/dist/types/shared/api/host/self-update-marker.test.d.ts +0 -1
  115. package/dist/types/shared/api/host/shell.test.d.ts +0 -1
  116. package/dist/types/shared/api/unit-manifests.test.d.ts +0 -1
  117. package/dist/types/shared/components/blocker-action.test.d.ts +0 -1
  118. 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
- # 只有设置与插件分家;运行时的 opencli、工坊、模块市场仍按 profile 各一份。
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 一份自己的**运行时**根(opencli 隔离运行时、工坊、模块市场);
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/opencli-isolated` 与 `$REPO_DIR/profile/*` 全指着不存在的地方
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,bin/opencli-isolated 与
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
- 首次打开会走启动体检,它会自己把 opencli 的隔离运行时装好。还有一步要你动手:
275
- 在浏览器里装一次 OpenCLI 扩展(Chrome / Edge / Brave / Chromium / Vivaldi 都行):
274
+ 首次打开会走启动体检:它按当前运行时自己把隔离环境装好,缺什么、怎么装都在那一屏上,
275
+ 必要时还会给一条能直接照抄到终端的命令。
276
276
 
277
- https://chromewebstore.google.com/detail/opencli/ildkmabpimmkaediidaifkhjpohdnifk
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
- # 工作台自己要跑命令:启动体检自动装 opencli、模块市场装/升插件、查源上新版。
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
- # 稳定路径不直接软链到随包脚本:同上面那条 —— pnpm publish 之后
470
- # `bin/opencli-isolated` 是 644,软链过去一执行就是 Permission denied
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'`)。