@dsh-workbench/core 0.3.9 → 0.3.11
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 -7
- package/bin/dsh-workbench +2 -2
- package/client.js +1687 -1022
- package/cordis.patch.yml +60 -35
- package/dist/client/client.body.js +1687 -1022
- package/dist/client/index.js +1372 -707
- package/dist/host/index.js +2897 -2335
- package/dist/types/app/client.d.ts +2 -1
- package/dist/types/app/layouts/env-gate/boot-gate.d.ts +1 -1
- package/dist/types/app/layouts/market/use-module-versions.d.ts +13 -2
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +6 -3
- package/dist/types/app/layouts/rightbar/market-act.d.ts +6 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +1 -1
- package/dist/types/app/layouts/rightbar/market-settle-hold.d.ts +2 -0
- package/dist/types/app/layouts/rightbar/market-settle.d.ts +20 -0
- package/dist/types/app/layouts/rightbar/market-shared-rows.d.ts +0 -1
- package/dist/types/app/layouts/rightbar/market-update-verdict.d.ts +41 -0
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -1
- package/dist/types/app/layouts/rightbar/store.d.ts +14 -0
- package/dist/types/app/layouts/sidebar/LongTaskDot.d.ts +12 -0
- package/dist/types/app/layouts/sidebar/LongTaskHover.d.ts +12 -0
- package/dist/types/app/layouts/sidebar/edition-boot.d.ts +24 -0
- package/dist/types/app/layouts/sidebar/edition.d.ts +22 -0
- package/dist/types/app/layouts/workbench-settings/ConfigSyncItem.d.ts +5 -0
- package/dist/types/app/layouts/workbench-settings/SettingsItem.d.ts +17 -0
- package/dist/types/app/layouts/workbench-settings/SidebarEditionItem.d.ts +11 -0
- package/dist/types/app/layouts/workbench-settings/WorkbenchSettingsSection.d.ts +11 -0
- package/dist/types/modules/panels/model/approval.d.ts +12 -4
- package/dist/types/modules/panels/model/diy-browser-tools.d.ts +1 -1
- package/dist/types/modules/panels/model/diy-context.d.ts +31 -14
- package/dist/types/modules/panels/model/diy-page.d.ts +3 -2
- package/dist/types/modules/panels/model/diy-record.d.ts +3 -3
- package/dist/types/modules/panels/model/diy-report.d.ts +6 -7
- package/dist/types/modules/panels/model/market-dependency-update.d.ts +21 -0
- package/dist/types/modules/panels/model/market-dispatch.d.ts +1 -0
- package/dist/types/modules/panels/model/market-types.d.ts +1 -0
- package/dist/types/modules/panels/model/market-update-bundle.d.ts +25 -0
- package/dist/types/modules/panels/model/market-verify.d.ts +31 -0
- package/dist/types/modules/panels/unit.d.ts +3 -4
- package/dist/types/shared/api/bundle-install.d.ts +13 -0
- package/dist/types/shared/api/host/approval-gate.d.ts +39 -0
- package/dist/types/shared/api/host/bundle-routes.d.ts +2 -1
- package/dist/types/shared/api/host/diy-artifacts.d.ts +14 -0
- package/dist/types/shared/api/host/diy-modules.d.ts +41 -0
- package/dist/types/shared/api/host/host-routes.d.ts +13 -0
- package/dist/types/shared/api/host/permission-mode.d.ts +9 -0
- package/dist/types/shared/api/host/runtime-seed.d.ts +2 -0
- package/dist/types/shared/api/host/self-update.d.ts +9 -2
- package/dist/types/shared/api/host/sidebar-edition.d.ts +46 -0
- package/dist/types/shared/api/host/workspace-root.d.ts +13 -0
- package/dist/types/shared/api/sidebar-edition.d.ts +14 -0
- package/dist/types/shared/api/unit-board.d.ts +20 -0
- package/dist/types/shared/api/write-outcome.d.ts +15 -0
- package/dist/types/shared/components/IconModules.d.ts +8 -0
- package/dist/types/shared/components/blocker-action.d.ts +16 -0
- package/dist/types/shared/hooks/sidebar-edition.d.ts +7 -0
- package/dist/types/shared/hooks/use-capabilities.d.ts +5 -0
- package/dist/types/shared/hooks/use-capability-gate.d.ts +1 -2
- package/dist/types/shared/hooks/use-host-write.d.ts +1 -1
- package/dist/types/shared/hooks/use-unit-board.d.ts +1 -1
- package/docs/HANDOFF.md +3 -3
- package/docs/OPERATIONS.md +16 -5
- package/package.json +3 -3
- package/preset/diy.patch.yml +2 -2
- package/profile/isolation.patch.yml +11 -0
- package/skills/workbench-module-diy/BUILD.md +62 -131
- package/skills/workbench-module-diy/COPY.md +89 -0
- package/skills/workbench-module-diy/DATASOURCE.md +84 -112
- package/skills/workbench-module-diy/DESIGN.md +75 -109
- package/skills/workbench-module-diy/FAMILY.md +70 -54
- package/skills/workbench-module-diy/KIT.md +77 -133
- package/skills/workbench-module-diy/LINKAGE.md +66 -105
- package/skills/workbench-module-diy/PANEL.md +79 -171
- package/skills/workbench-module-diy/REVIEW.md +67 -81
- package/skills/workbench-module-diy/SKILL.md +57 -96
- package/skills/workbench-module-diy/STEPS.md +66 -69
- package/skills/workbench-module-diy/TOOLING.md +34 -51
- package/skills/workbench-module-diy/TOOLS.md +110 -103
- package/skills/workbench-module-diy/WIRING.md +51 -83
- package/skills/workbench-module-diy/WRITES.md +89 -142
- package/dist/types/app/layouts/config-sync/ConfigSyncSection.d.ts +0 -5
- package/dist/types/shared/api/host/diy-workshop.d.ts +0 -23
- package/dist/types/shared/api/host/workshop-root.d.ts +0 -16
- /package/dist/types/shared/{api/host/diy-workshop.test.d.ts → components/blocker-action.test.d.ts} +0 -0
|
@@ -1,148 +1,95 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 写通道:找到写命令、取得原文、确认、回读
|
|
2
2
|
|
|
3
|
-
[
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
[datasource](DATASOURCE.md) 只管读。本文件管写:提交 / 发布 / 建单 / 改配置。
|
|
4
|
+
|
|
5
|
+
判域同 [DESIGN.md](DESIGN.md) §0:复用现有登录、一次调用能改完 → DIY;要新凭据 / 多步长流程 / 新服务或依赖 → 工程域。
|
|
6
6
|
|
|
7
7
|
## 四步
|
|
8
8
|
|
|
9
|
-
1.
|
|
10
|
-
`读` · `写(可预览)` ·
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
## 两条硬纪律
|
|
81
|
-
|
|
82
|
-
- **写命令只有少数带预览档**:隔离运行时那份 manifest 实测 **357 条写命令里只有 12 条**有
|
|
83
|
-
`yes` / `dryRun` / `confirm`(那 12 条:antigravity `delete`/`revert` · codex `archive` ·
|
|
84
|
-
gemini `deep-research` · grok `delete` · kimi `history-rename`/`sign-out` · pinterest 三条 delete ·
|
|
85
|
-
slock `task-delete` · twitter `list-delete`)。**`opencli cmdb publish` / `cmdb build` 都没有预览开关**
|
|
86
|
-
—— 调一次就是**真发布 / 真构建**。有预览档的先用预览档;没有的**不许 agent 试写**。
|
|
87
|
-
- **要新凭据 / 多步长流程 / 新依赖 ⇒ 工程域**(同 [DESIGN.md](DESIGN.md) §0)。
|
|
88
|
-
|
|
89
|
-
## 三条写纪律(与 opencli 自己那份 `deep-recon` 对齐)
|
|
90
|
-
|
|
91
|
-
1. **授权观察一次 ≠ 授权重放。** 他点一次是"给你看这一次";**不许因为你已经看过就再放一次**。
|
|
92
|
-
要再放一次,就得再跟他确认一次(同一场里"再录一段"算同一件事,见下)。
|
|
93
|
-
2. **写后"不确定"要当一档说清,并且**不许自动重试**。命令报错不等于没写成功(可能已经写了);
|
|
94
|
-
这种时候停下、**先回读**把状态读回来再决定,别重放。`design.json` 的 `failure` 那一格要写到这一档。
|
|
95
|
-
3. **写要有配对的撤销 / 反操作**(`follow` ↔ `unfollow`、`publish` ↔ `delete`…)。opencli 自己有一条
|
|
96
|
-
机器判据 `write-without-delete-pair` 盯这个;你交出去的那张卡至少要在**写通道探明记录**里写清
|
|
97
|
-
"这一步错了怎么退"(哪条命令 / 平台上哪里点)—— 那就是 `writes[].undo` 那一格,**必填**:
|
|
98
|
-
真没有配对就写"没有配对,一次就是真的"(**空着 = 没想过**,`design check` 会点名 `write.undo`)。
|
|
99
|
-
|
|
100
|
-
## 出参的最终确认靠**回读**
|
|
101
|
-
|
|
102
|
-
写完拿**同族的读**(或卡片那条投影)把那一格读回来,**别看"命令没报错"就当成功** ——
|
|
103
|
-
平台可能收下了却没生效,也可能失败在"**可能已经写了**"那一档。写进模块时,
|
|
104
|
-
`design.json` 的 `writes[].readback` 就是这一格(哪条读 / 出参哪个字段)。
|
|
105
|
-
|
|
106
|
-
## 边界(如实)
|
|
107
|
-
|
|
108
|
-
- **`browser network --detail` 在工坊会话里拿不到 body**:它依赖一份盘上缓存,默认路径落在会话可写根之外
|
|
109
|
-
(`EPERM …/opencli/home/.opencli/cache/browser-network`,工具只发一个 `cache_warning`)⇒ 跨调用的 `--detail` 取不到。
|
|
110
|
-
**录制族不依赖它**:它自己那份 `shots/rec-<unit>.jsonl` 就是原文(`_record_detail` 按 key 现取)。
|
|
111
|
-
手工取 body 的另一条路是 `workbench_diy_eval` 里的 `fetch` —— 用它自己的登录在页面里读,返回 JSON;
|
|
112
|
-
或把 `OPENCLI_CACHE_DIR` 指到可写处,再让 `--detail <key>` 生效。
|
|
113
|
-
- **两套 opencli 真相**:PATH 上那份、你机器上 `~/.opencli` 那份、工作台**隔离运行时**那份
|
|
114
|
-
可能不是同一代。工坊一律以**隔离运行时**(`$DSH_HOME/workbench/opencli/`)为准;
|
|
115
|
-
核验用工具,别去看错文件。
|
|
116
|
-
- **取值枚举只在 help 文本里**(manifest 没有 `choices`),别指望 recon 的 `args` 带它。
|
|
117
|
-
|
|
118
|
-
## 落进 `design.json`
|
|
119
|
-
|
|
120
|
-
写通道填 `writes[]`(一个动作可以打几条写:先建后发布;只有一条写也可以写成 `write: {}`)。
|
|
121
|
-
字段**七个必填**、一个可空;下表右边是 `design render` 渲染出来的**行名(逐字)**:
|
|
122
|
-
|
|
123
|
-
| 字段 | 渲染出来的行 |
|
|
9
|
+
1. **找现成写命令** —— `workbench_diy_recon`(`keyword=…`)标注每条命令的读写:
|
|
10
|
+
`读` · `写(可预览)` · `写(无预览档,一次就是真的)`,并给入参签名(`--id --yes=false`)。
|
|
11
|
+
命中即复用(自造会绕过登录、XSRF、错误码处理)。
|
|
12
|
+
只命中写命令时,末句提示:先 `--help` 看入参;带 `--dryRun` / `--yes` 的先走预览;**无预览档不许试写**。
|
|
13
|
+
边界:recon 只覆盖 opencli 自带目录;`cmdb` / `coding` 等插件只回命令名,参数走第 2 步。
|
|
14
|
+
|
|
15
|
+
2. **查入参 / 出参**(按可信度):
|
|
16
|
+
|
|
17
|
+
- `workbench_diy_spec`(`command='<site> <name>'`,`cmdb publish` / `cmdb/publish` 均可):
|
|
18
|
+
返回 `opencli <site> <name> --help -f json` 原文;JSON 时另给 `spec`(`access`、`positionals`、
|
|
19
|
+
`command_options[{name, required, help, default}]`、出参列)。不碰屏、不需约定。
|
|
20
|
+
- recon 的 `args`(必填 / 默认值)与 `preview` 标记,仅覆盖自带目录;插件以 `_spec` 为准。
|
|
21
|
+
- adapter 源码:隔离 HOME 的 `.opencli/plugins/<site>` 指向插件包;接口 URL / 方法 / cookie / XSRF 在源码里。
|
|
22
|
+
- `opencli <site> <name> --help`(`-f yaml` 可读性更好):取枚举值(manifest 无 `choices`,枚举只在 help 里)。
|
|
23
|
+
|
|
24
|
+
3. **无现成命令 → 让用户录一次**(你准备,用户执行):
|
|
25
|
+
|
|
26
|
+
- `workbench_diy_record_prepare({ unit, url, doing })`:开窗置前(**需审批一次**:站点、录哪一下、落点、
|
|
27
|
+
录完不切回),装浮条。用户:① 开始录制 ② 做一次动作 ③ 结束录制。不要让用户点第二次。
|
|
28
|
+
`url` 必须与模块读源同域(`design.json` 声明过读源时跨域当场拒)。
|
|
29
|
+
- 表填好、提交前,请用户按浮条「截图」:不额外审批;产出整页图 + 页面快照(控件 `name` / `id`、
|
|
30
|
+
标签、必填痕迹、填值、是否空、是否改过)。提交时会自动再抓一份。
|
|
31
|
+
- `workbench_diy_record_read`:取清单 `rows`(`index` / `key` / `method` / `url` / `status` / `ct` /
|
|
32
|
+
`size` / `source` / `hasRequest` / `hasResponse` / `likelyWrite` / `marked`),不删行、不回体;
|
|
33
|
+
`expect` 只标 ⭐ 并置顶。按 `key`(或 `index`)调 `workbench_diy_record_detail`:
|
|
34
|
+
返回请求体与响应体原文 + 请求头(可能含凭据,不写入 `design.json`)。同 key 跨轮重名,带 `at` 定位。
|
|
35
|
+
未结束时 read 会说"还在录";可带 `waitMs`(上限 15 分钟)。**一场 = 一个周期**;上一场未收工再
|
|
36
|
+
prepare 会当场拒(不弹审批)。
|
|
37
|
+
- `workbench_diy_record_stop`:停捕获、收标签、清状态,原文另存 `shots/rec-<unit>.jsonl.last`。
|
|
38
|
+
**先 read / detail,再 stop**。左栏键只发消息;录完无键。
|
|
39
|
+
- 抓不到:原生 `<form>` 提交 / WebSocket / service worker / 其他标签。页面钩子只认 `fetch` 与 XHR,
|
|
40
|
+
上限 50 条、单条请求体 16 KB。兜底:`opencli browser <会话> bind`(当前聚焦窗活动标签)或
|
|
41
|
+
`open … --window foreground`,先 `network --follow` 再让用户操作;取 body 用 `network --raw`
|
|
42
|
+
(同一调用内);仍无则请用户从 DevTools 复制 curl。
|
|
43
|
+
- 参数与返回细则见 [FAMILY.md](FAMILY.md) §4。
|
|
44
|
+
- 仅测试环境 / 可撤销目标可让 agent 自己点。
|
|
45
|
+
|
|
46
|
+
取证结果落成模块的写能力:`writes: true` + `needsApproval` + `approvalDetail`([TOOLS.md](TOOLS.md) §6)。
|
|
47
|
+
|
|
48
|
+
4. **文档 / 问用户** —— 接口文档、curl 样例都可用于确认需求;问法照 [STEPS.md](STEPS.md),不问技术细节。
|
|
49
|
+
|
|
50
|
+
## 硬纪律
|
|
51
|
+
|
|
52
|
+
- **预览**:先确认是否有 `yes` / `dryRun` / `confirm` 档;有则先走预览。`opencli cmdb publish` / `cmdb build`
|
|
53
|
+
无预览开关,调用即真发布 / 真构建。**无预览档不许试写。**
|
|
54
|
+
- 要新凭据 / 多步长流程 / 新依赖 → 工程域。
|
|
55
|
+
|
|
56
|
+
## 写纪律
|
|
57
|
+
|
|
58
|
+
1. 授权观察一次 ≠ 授权重放。已看过也要再次确认(一场录制即一个周期)。
|
|
59
|
+
2. 写后不确定单独报,不自动重试。命令报错可能已写入:停下,先回读,再决定。
|
|
60
|
+
`design.json` 的 `failure` 覆盖这一档。
|
|
61
|
+
3. 写要有配对的撤销 / 反操作(`follow` ↔ `unfollow`、`publish` ↔ `delete`…)。`writes[].undo` 必填;
|
|
62
|
+
没有就写"没有配对,一次就是真的"(空 = 未考虑,`design check` 点名)。
|
|
63
|
+
|
|
64
|
+
## 回读
|
|
65
|
+
|
|
66
|
+
写后用同族读或卡片投影读回该格。不以"命令没报错"判成功。`writes[].readback` 记录哪条读 / 哪个字段。
|
|
67
|
+
|
|
68
|
+
## 边界
|
|
69
|
+
|
|
70
|
+
- `browser network --detail` 在本会话取不到 body(缓存落在可写根之外)。录制族不依赖它;
|
|
71
|
+
手工取 body 用 `workbench_diy_eval` 的 `fetch`,或把 `OPENCLI_CACHE_DIR` 指到可写处。
|
|
72
|
+
- opencli 可能有三份(PATH、`~/.opencli`、隔离运行时);以隔离运行时 `$DSH_HOME/workbench/opencli/` 为准。
|
|
73
|
+
- 枚举值只在 help 文本里。
|
|
74
|
+
|
|
75
|
+
## design.json:writes[]
|
|
76
|
+
|
|
77
|
+
字段七个必填、一个可空:
|
|
78
|
+
|
|
79
|
+
| 字段 | 行名 |
|
|
124
80
|
|---|---|
|
|
125
81
|
| `command` | 哪条写(命令 / URL + 方法) |
|
|
126
|
-
| `params` | 参数(必填 /
|
|
127
|
-
| `credentials` |
|
|
128
|
-
| `preview` |
|
|
129
|
-
| `readback` |
|
|
130
|
-
| `undo` |
|
|
131
|
-
| `failure` |
|
|
132
|
-
| `probeCommand`(可空) |
|
|
133
|
-
|
|
134
|
-
`design render`
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
`params` **带证据**是 2026-10-21 加的(照 `undo` 那一格同一套做法):录完一次之后,
|
|
142
|
-
`workbench_diy_record_read` 会给到这一场落下的**图**(他按「截图」那几张)与 `workbench_diy_record_detail` 里的**捕获原文** ——
|
|
143
|
-
照它们写:哪一格必填,就看**图上有没有那个红 `*`**,或者看**契约**(`opencli <命令> --help -f json` 里的 `required`)。
|
|
144
|
-
那一格**没有 DOM 快照这条路**(2026-10-21 撤了:页面的弹层/抽屉在真机上是哈希类名,通用规则圈不住他正在填的那一层)。
|
|
145
|
-
判据只咬**来源有没有写出来**:`params` 里出现"必填"时,同一格必须带来源关键词之一
|
|
146
|
-
(`已证` / `声明` / `人证` / `契约` / `未定`),否则 `design check` 点名 `write.params.source`。
|
|
147
|
-
**旧模块**补一个括号就过 —— `(前端已证)` / `(服务端已证)` / `(人证)` / `(契约)` / `(未定)`;别的不用动。
|
|
148
|
-
写成 `非必填` / `不必填` 的不需要来源(那一格是"可选")。这一条**不校验来源是不是真的** —— 它逼你想过,不逼你造假。
|
|
82
|
+
| `params` | 参数(必填 / 枚举 / 上限);写"必填"需带来源 |
|
|
83
|
+
| `credentials` | 凭据来源 |
|
|
84
|
+
| `preview` | 有无预览档(无则"没有,一次就是真的") |
|
|
85
|
+
| `readback` | 回读方式(哪条读 / 哪个字段) |
|
|
86
|
+
| `undo` | 撤销 / 删除;无则"没有配对,一次就是真的" |
|
|
87
|
+
| `failure` | 失败形态(含"可能已经写了") |
|
|
88
|
+
| `probeCommand`(可空) | 探明 / 预览调用原文 |
|
|
89
|
+
|
|
90
|
+
`design render` 写入 README 的 `### 写通道探明记录`(位于「数据源探明记录」与「验收」之间)。
|
|
91
|
+
`design check` 点名空格;无写通道的模块不写。
|
|
92
|
+
|
|
93
|
+
`params` 来源:依据 `workbench_diy_record_read` 的截图(必填红星)或契约(`--help -f json` 的 `required`)。
|
|
94
|
+
出现"必填"时须带来源关键词之一:`已证` / `声明` / `人证` / `契约` / `未定`,否则报 `write.params.source`。
|
|
95
|
+
`非必填` / `不必填` 不要求来源。判据只查是否写下来源。
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface WorkshopModule {
|
|
2
|
-
readonly unit: string;
|
|
3
|
-
readonly name: string;
|
|
4
|
-
readonly description: string;
|
|
5
|
-
readonly dir: string;
|
|
6
|
-
readonly installed: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare function insideWorkshop(root: string, target: string): boolean;
|
|
9
|
-
export declare function workshopModules(packagesDir: string, installed?: readonly string[]): readonly WorkshopModule[];
|
|
10
|
-
export declare function readDesignOfModule(dir: string): unknown;
|
|
11
|
-
export interface WorkshopSync {
|
|
12
|
-
readonly state: 'ok' | 'syncing' | 'failed';
|
|
13
|
-
readonly version: string;
|
|
14
|
-
readonly at: string;
|
|
15
|
-
readonly reason?: string;
|
|
16
|
-
}
|
|
17
|
-
export declare function workshopSyncOf(workshopRoot: string): WorkshopSync | undefined;
|
|
18
|
-
export interface WorkshopToolchain {
|
|
19
|
-
readonly core: string;
|
|
20
|
-
readonly moduleTools: string;
|
|
21
|
-
readonly shared: string;
|
|
22
|
-
}
|
|
23
|
-
export declare function workshopToolchainOf(workshopRoot: string): WorkshopToolchain | undefined;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { DshHostContext } from '@dsh-workbench/shared';
|
|
2
|
-
export interface WorkshopRoot {
|
|
3
|
-
readonly root: string;
|
|
4
|
-
readonly packagesDir: string;
|
|
5
|
-
readonly title: string;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* 工坊**自己的家**(`$DSH_HOME/workbench/diy`)—— 宿主启动时就是按它把工坊登记成工作区的。
|
|
9
|
-
* DIY 会话的工坊根取这一份,**不随会话 cwd 漂**:cwd 一离开工坊(用户把自己的项目设成工作区),
|
|
10
|
-
* 从 cwd 往上找会撞上任意一个"带 `packages/` 的仓库",于是模块列表、`shots/` 落点、装机名单全跟着变样。
|
|
11
|
-
* 这一档拿不到(没有 `dshHomePath` 服务)时才退回 cwd 那套。
|
|
12
|
-
* @param ctx - 宿主上下文(要从里面取 `dshHomePath`)。
|
|
13
|
-
* @returns 工坊的家;取不到给 `null`。
|
|
14
|
-
*/
|
|
15
|
-
export declare function workshopHomeOf(ctx: DshHostContext): WorkshopRoot | null;
|
|
16
|
-
export declare function workshopRootOf(ctx: DshHostContext, workspace: string | null): Promise<WorkshopRoot | null>;
|
/package/dist/types/shared/{api/host/diy-workshop.test.d.ts → components/blocker-action.test.d.ts}
RENAMED
|
File without changes
|