@dsh-workbench/core 0.1.14 → 0.1.16
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/bin/dsh-workbench +21 -1
- package/client.js +163 -89
- package/cordis.patch.yml +40 -0
- package/dist/client/client.body.js +163 -89
- package/dist/client/index.js +163 -89
- package/dist/host/index.js +1474 -93
- package/dist/types/app/__tests__/workbench-styles.test.d.ts +1 -0
- package/dist/types/app/client.d.ts +39 -15
- package/dist/types/app/layouts/rightbar/board-columns.d.ts +8 -0
- package/dist/types/app/layouts/rightbar/board-columns.test.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +2 -0
- package/dist/types/app/layouts/workbench-styles.d.ts +2 -0
- package/dist/types/modules/panels/__tests__/diy-harness.d.ts +51 -0
- package/dist/types/modules/panels/__tests__/diy-tools-status.test.d.ts +1 -0
- package/dist/types/modules/panels/__tests__/diy-tools.test.d.ts +1 -0
- package/dist/types/modules/panels/model/diy-tools.d.ts +4 -0
- package/dist/types/modules/panels/unit.d.ts +1 -0
- package/dist/types/shared/api/bundle-install.d.ts +1 -0
- package/dist/types/shared/api/host/diy-facts.d.ts +9 -0
- package/dist/types/shared/api/host/diy-facts.test.d.ts +1 -0
- package/dist/types/shared/api/host/diy-recon-fs.d.ts +3 -0
- package/dist/types/shared/api/host/diy-recon-fs.test.d.ts +1 -0
- package/dist/types/shared/api/host/diy-recon.d.ts +39 -0
- package/dist/types/shared/api/host/diy-recon.test.d.ts +1 -0
- package/dist/types/shared/api/host/diy-workshop.d.ts +12 -0
- package/dist/types/shared/api/host/diy-workshop.test.d.ts +1 -0
- package/dist/types/shared/api/host/installed-module.d.ts +2 -0
- package/dist/types/shared/api/host/opencli-command.d.ts +10 -0
- package/dist/types/shared/api/host/opencli-command.test.d.ts +1 -0
- package/dist/types/shared/api/host/runtime-seed.d.ts +40 -0
- package/dist/types/shared/api/host/runtime-seed.test.d.ts +1 -0
- package/docs/HANDOFF.md +82 -44
- package/docs/OPERATIONS.md +22 -1
- package/package.json +5 -5
- package/scripts/seed-profile.sh +4 -113
- package/scripts/seed-workshop.sh +216 -0
- package/skills/workbench-module-diy/BUILD.md +36 -66
- package/skills/workbench-module-diy/DATASOURCE.md +80 -12
- package/skills/workbench-module-diy/DESIGN.md +27 -2
- package/skills/workbench-module-diy/LINKAGE.md +49 -19
- package/skills/workbench-module-diy/PANEL.md +78 -4
- package/skills/workbench-module-diy/REVIEW.md +6 -5
- package/skills/workbench-module-diy/SKILL.md +32 -12
- package/skills/workbench-module-diy/STEPS.md +4 -0
- package/skills/workbench-module-diy/TOOLING.md +47 -0
- package/skills/workbench-module-diy/TOOLS.md +147 -5
- package/skills/workbench-module-diy/WIRING.md +88 -0
package/cordis.patch.yml
CHANGED
|
@@ -43,6 +43,46 @@
|
|
|
43
43
|
root:
|
|
44
44
|
- !!js process.env.DSH_WORKBENCH_ROOT ?? '.'
|
|
45
45
|
- !!js dshHomePath('workbench/diy')
|
|
46
|
+
# ★ followSymlinks: false(2026-10-11 实测:这就是"改了没反应、而且不报错"的根因)
|
|
47
|
+
#
|
|
48
|
+
# 两个根底下的 `node_modules/@dsh-workbench/*` 是一串**互相指向**的软链
|
|
49
|
+
# (工坊 → core → 本仓 packages/workbench → 它自己的 node_modules/@dsh-workbench/shared → …)。
|
|
50
|
+
# 默认跟随软链时 chokidar 会一路走进去,而默认的 `ignored: ['**/node_modules', …]` 在
|
|
51
|
+
# **根之外的路径**上根本不生效:chokidar 传给 ignored 的是 `relative(baseDir, path)`,
|
|
52
|
+
# 根在 baseDir 之外时它长这样 —— `../../../../.dsh/workbench/diy/node_modules/…`,
|
|
53
|
+
# 而 picomatch 的 `**` **不匹配 `..` 这种点段**,于是没有任何剪枝。结果是 fd 用光:
|
|
54
|
+
# Error: EMFILE: too many open files, watch '…/@dsh-workbench/core/node_modules/…/vitest/…'
|
|
55
|
+
# 监听器当场报错退出(错误只落到宿主日志里),**之后一个 change 事件都收不到**。
|
|
56
|
+
#
|
|
57
|
+
# 关掉跟随软链之后(实测用同一份 chokidar + picomatch 复现):监听器活着,
|
|
58
|
+
# 工坊里 `packages/<模块>/dist/host.js` 的原地改动照常报出来,而且
|
|
59
|
+
# canonicalPath(事件) == require.resolve('@dsh-workbench/module-<unit>') == 加载器记的入口 ✓,
|
|
60
|
+
# 于是 dsh-hmr 那条"入口文件精确匹配"的分支能对上、模块真的会热换。
|
|
61
|
+
#
|
|
62
|
+
# schemastery 的 Config 不吞未知键(已实测),所以这个选项会原样传进 chokidar。
|
|
63
|
+
followSymlinks: false
|
|
64
|
+
|
|
65
|
+
# ── 工作台运行时的**可写根**:让外壳在**任意 profile** 里自足 ──────────────
|
|
66
|
+
#
|
|
67
|
+
# 这一行与 `--patch profile/sandbox.patch.yml` 是同一件事(启动器每次启动都叠那一层)。
|
|
68
|
+
# 为什么这里还要再来一份:外壳现在可以被**直接装进别人的 profile**(dsh web 的
|
|
69
|
+
# Plugins 页 → Add plugin → `@dsh-workbench/core`)。那条路上没有启动器,
|
|
70
|
+
# 而少了这一行,插件发起的命令(启动体检装隔离 opencli、市场装 opencli 插件、
|
|
71
|
+
# opencli 自己的 trace / browser-profile 写入)全都撞文件沙箱 —— 可写根是
|
|
72
|
+
# dsh-base 出厂那句 `process.cwd()`,`$DSH_HOME/workbench` 不在它下面。
|
|
73
|
+
#
|
|
74
|
+
# 为什么放**组合层**而不是让宿主自己改策略:`sandboxPolicy` 的 workspaceRoot 是
|
|
75
|
+
# 启动时读的部署策略,插件没有正当入口改它(改服务字段是绕过策略,不是声明策略)。
|
|
76
|
+
# bundle 层正好在 profile 用户层**下面** —— 所以"装了就生效"与"用户自己写一行就
|
|
77
|
+
# 覆盖它"同时成立,这正是这一层该有的位置。
|
|
78
|
+
#
|
|
79
|
+
# 代价写在明处(ADR-0037):这个 profile 里**无会话的**插件命令,可写根从
|
|
80
|
+
# `process.cwd()` 变成 `$DSH_HOME/workbench`。有会话的命令不受影响(会话用自己的
|
|
81
|
+
# cwd),工作台自己的命令本来也只该写这一棵树。
|
|
82
|
+
- id: sandbox-policy
|
|
83
|
+
config:
|
|
84
|
+
mode: !!js process.env.DSH_PERMISSION_MODE ?? 'workspace-write'
|
|
85
|
+
workspaceRoot: !!js dshHomePath('workbench')
|
|
46
86
|
|
|
47
87
|
- insert:
|
|
48
88
|
- id: workbench
|