@deepseek-ai/dsh-experimental-webworker-packer 0.1.6-alpha.1
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/LICENSE +21 -0
- package/README.i18n.yaml +6 -0
- package/README.md +72 -0
- package/README.zh.md +72 -0
- package/bin.js +20 -0
- package/lib/bin.js +76 -0
- package/lib/index.js +2 -0
- package/lib/repository-EG8FQ0lQ.js +759 -0
- package/lib/types/bin.d.ts +3 -0
- package/lib/types/bin.js +77 -0
- package/lib/types/index.d.ts +8 -0
- package/lib/types/pack.d.ts +105 -0
- package/lib/types/repository.d.ts +61 -0
- package/lib/types/rules.d.ts +43 -0
- package/lib/types/transform-image.d.ts +12 -0
- package/package.json +50 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 DeepSeek
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.i18n.yaml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
|
2
|
+
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
|
+
# after editing either side, bring the other along and re-record with:
|
|
4
|
+
# pnpm run verify-translation-pairing --write packages/experimental/webworker-packer/README.md
|
|
5
|
+
README.md: 90723b7718393ed32005bd6146764044a8ec80b1
|
|
6
|
+
README.zh.md: 9d7df43bf2b49d7b4a0438fcdb96fdbe44cc326a
|
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Browser-worker VFS image packaging for maintainers building or debugging the experimental preview deployment."
|
|
3
|
+
kind: "package-library"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `@deepseek-ai/dsh-experimental-webworker-packer`
|
|
7
|
+
|
|
8
|
+
English | [中文](README.zh.md)
|
|
9
|
+
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
The VFS image packer: turns one composed profile into the gzip-compressed base tar the browser worker mounts as its filesystem, and opaque data trees into ordered overlay tars ([experimental group](../README.md)). Nothing is compiled from source — the base image carries the repository's real build products, so a preview deployment debugs exactly what the served deployment ships. Read this page when packaging a preview image or diagnosing its contents.
|
|
13
|
+
|
|
14
|
+
## Table of Contents
|
|
15
|
+
|
|
16
|
+
- [Use this package](#use-this-package)
|
|
17
|
+
- [Model Experience](#model-experience)
|
|
18
|
+
- [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
|
|
19
|
+
- [Dev Note](#dev-note)
|
|
20
|
+
|
|
21
|
+
-----
|
|
22
|
+
|
|
23
|
+
<a id="use-this-package"></a>
|
|
24
|
+
## Use this package
|
|
25
|
+
|
|
26
|
+
The public npm package exposes `packVfsImage` and `packVfsOverlay` through its library entry. Callers supply the composition, package directories, and resolution root; no profile layer is installed. The runtime's library entry supplies the module-proxy and replacement tables used during packing.
|
|
27
|
+
|
|
28
|
+
The packer owns the internal `dsh.configTrees` declaration, its validation, and source directory resolution in [`src/repository.ts`](src/repository.ts). This field is not part of the public plugin manifest API.
|
|
29
|
+
|
|
30
|
+
The pack is a three-layer standard stack:
|
|
31
|
+
|
|
32
|
+
1. **Roster** — the composed profile's plugin rows (standard YAML parse under Include's dialect, `!!js` intact), plus the rows of every config tree the CLI declares in its `package.json` `dsh.configTrees` (agent presets), materialized as a Node-style dependency closure. External peer edges never bind the worker; workspace peers stay on the chain.
|
|
33
|
+
2. **Publish view** — each workspace or vendored package contributes its built npm slice (`files` through picomatch) without source or workspace `dist/`. External packages retain published JavaScript under both `src/` and `dist/` because their `main` or `exports` may point there; only generic test, map, declaration, and archive exclusions apply.
|
|
34
|
+
3. **Reachability sweep** — the runtime loader's own resolution walks from every workspace export face plus the worker assembly's seeds (`IMAGE_ENTRY_SEEDS`), lowering each reached module to the wrapper contract at pack time. The transform reports statically named imports, re-exports, and dynamic imports; calls through `require`; and module-scope direct calls of the form `createRequire(import.meta.url)('pkg')` through a named import from `node:module` or `module`, including an import alias. Page assets (`lib/client.js` behind `./client` exports) ship verbatim; an unresolvable request from our own code fails the pack, third-party ones are tolerated to fail loud at require time.
|
|
35
|
+
|
|
36
|
+
`repository.ts` owns the repo-shaped inputs (workspace scan of `vendor/`, `packages/`, `native/system/packages/`, and `apps/`; profile composition through the real CLI dump path); `pack.ts` owns none of them, so the same library packs a different tree by being called differently. The native scan makes the Landlock entry package an ordinary published-view dependency while its executable remains a Worker platform implementation. The CLI is `dsh-pack-vfs-image --out <file> [--profile web]`; `apps/web`'s `build:preview` runs it after the preview shell build.
|
|
37
|
+
|
|
38
|
+
The repository adapter also declares the preview-only fixture trees under `webworker-runtime/tests/fixtures/`. The CLI packs each named fixture into a separate deterministic overlay archive plus a browser-readable manifest. Overlay files bypass npm publish-view and module-reachability exclusions, so dot directories and example source files remain intact; their mounts are limited to `home/` and `workspace/`. `pack.ts` treats them as opaque bytes, and Session and Workspace interpretation stays in the runtime packages that own those formats.
|
|
39
|
+
|
|
40
|
+
-----
|
|
41
|
+
|
|
42
|
+
<a id="model-experience"></a>
|
|
43
|
+
## Model Experience
|
|
44
|
+
|
|
45
|
+
None, as this package runs at build time and writes an image file; nothing it produces reaches a model request on its own.
|
|
46
|
+
|
|
47
|
+
#### KV Cache effect
|
|
48
|
+
|
|
49
|
+
None; this package neither assembles nor sends a provider request.
|
|
50
|
+
|
|
51
|
+
## Known Limitations and Deferred Work
|
|
52
|
+
|
|
53
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
54
|
+
|
|
55
|
+
- **The rule tables are judgement calls** (`rules.ts`: exclude globs, page-asset patterns, entry seeds) pinned by `tests/`; a new asset class the worker must reach needs a table row, not a scanner change.
|
|
56
|
+
- **Reachability infers only exact request forms** — computed `import` and `require` arguments, stored `createRequire` results, CommonJS-obtained `createRequire`, and bases other than `import.meta.url` resolve only at runtime and fail loud if the target was otherwise pruned; a target reachable only through those forms needs an explicit image entry seed.
|
|
57
|
+
- **Vendored package sources (`src/*.ts`) are excluded** — nothing resolves them at runtime; a future in-worker source-inspection feature would need a dedicated include rule.
|
|
58
|
+
- **The packer assumes built `lib/` artifacts are current**: it never compiles, so a stale workspace build packs stale bytes. Run the repository build first.
|
|
59
|
+
- **The CLI requires its original repository location**: `dsh-pack-vfs-image` finds the checkout relative to its own installed file and reads the source CLI, configuration trees, and preview fixtures there. An npm installation supports the parameterized library API; the CLI and repository helpers require a complete, built DeepSeek Harness checkout.
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
<a id="dev-note"></a>
|
|
63
|
+
### Dev Note
|
|
64
|
+
|
|
65
|
+
<details>
|
|
66
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
67
|
+
|
|
68
|
+
None.
|
|
69
|
+
|
|
70
|
+
</details>
|
|
71
|
+
|
|
72
|
+
**Runtime invariant:** No companion is published. This package is a build-time pass with no production event stream or mutable data; the pack's own gates (unresolvable own requests, the all-or-nothing wrapper contract) fail the pack instead.
|
package/README.zh.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "面向构建或排查实验性预览部署的维护者,说明浏览器 worker 虚拟文件系统(VFS)镜像打包。"
|
|
3
|
+
kind: "package-library"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `@deepseek-ai/dsh-experimental-webworker-packer`
|
|
7
|
+
|
|
8
|
+
[English](README.md) | 中文
|
|
9
|
+
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
VFS 镜像打包器:把一份合成 profile 变成浏览器 worker 挂载为文件系统的 gzip 压缩基础 tar,并把不透明数据目录变成按序应用的 overlay tar([实验组](../README.zh.md))。不做任何源码编译——基础镜像携带仓库真实构建产物,预览部署调试的正是 served 部署交付的字节。打包预览镜像或排查镜像内容时,请阅读本页。
|
|
13
|
+
|
|
14
|
+
## 目录
|
|
15
|
+
|
|
16
|
+
- [使用本包](#use-this-package)
|
|
17
|
+
- [模型体验](#model-experience)
|
|
18
|
+
- [已知限制与延期工作](#known-limitations-and-deferred-work)
|
|
19
|
+
- [开发备注](#dev-note)
|
|
20
|
+
|
|
21
|
+
-----
|
|
22
|
+
|
|
23
|
+
<a id="use-this-package"></a>
|
|
24
|
+
## 使用本包
|
|
25
|
+
|
|
26
|
+
公开 npm 包通过库入口导出 `packVfsImage` 和 `packVfsOverlay`。调用方提供合成配置、包目录和解析根目录;本包不安装 profile 层。运行时的库入口提供打包所用的模块代理表与替换表。
|
|
27
|
+
|
|
28
|
+
打包器在 [`src/repository.ts`](src/repository.ts) 中拥有内部 `dsh.configTrees` 声明、校验和源目录解析。该字段不属于公共插件 manifest API。
|
|
29
|
+
|
|
30
|
+
打包是三层标准栈:
|
|
31
|
+
|
|
32
|
+
1. **Roster**——合成 profile 的插件行(标准 YAML 解析、Include 方言、`!!js` 原样保留),加上 CLI(命令行界面)在 `package.json` `dsh.configTrees` 里声明的每棵配置树(agent(智能体) presets)的行,按 Node 式依赖闭包物化。外部 peer 边绝不会绑定到 worker,workspace peer 保留在链上。
|
|
33
|
+
2. **发布视图**——每个 workspace 或 vendored 包贡献其构建后的 npm 切片(`files` 走 picomatch),不带源码和 workspace `dist/`。外部包的 `main` 或 `exports` 可能指向 `src/` 或 `dist/`,因此两处发布 JavaScript 都会保留,只应用通用的测试、map、声明与归档排除规则。
|
|
34
|
+
3. **可达性 sweep**——用运行时加载器自己的解析,从全部 workspace 导出面加 worker 装配种子(`IMAGE_ENTRY_SEEDS`)出发,打包时把每个可达模块转换为符合包装层约定的形式。该转换会报告名称可静态确定的 import、re-export 与动态 import、经 `require` 发起的调用,以及通过 `node:module` 或 `module` 具名导入(含导入别名)在模块作用域直接发起的 `createRequire(import.meta.url)('pkg')` 调用。页面资产(`./client` 导出背后的 `lib/client.js`)原样直发;自家代码的不可解析请求会让打包失败,第三方不可解析请求则允许延后到 require 时明确失败。
|
|
35
|
+
|
|
36
|
+
`repository.ts` 拥有仓库形态输入(`vendor/`、`packages/`、`native/system/packages/` 与 `apps/` 的 workspace 扫描;经真 CLI dump 路径合成 profile);`pack.ts` 一概不拥有,同一库换参即可打另一棵树。Native 扫描使 Landlock 入口包成为普通发布视图依赖,其可执行文件仍由 Worker 平台实现。CLI 为 `dsh-pack-vfs-image --out <file> [--profile web]`;`apps/web` 的 `build:preview` 在预览壳构建后运行它。
|
|
37
|
+
|
|
38
|
+
仓库适配器还声明 `webworker-runtime/tests/fixtures/` 下仅用于 preview 的 fixture(测试前置数据) tree。CLI 会把每套具名 fixture 打成一份独立的确定性 overlay 归档,并写出浏览器可读的 manifest(元数据清单)。Overlay 文件绕过 npm 发布视图和模块可达性排除规则,因此点目录与示例源码会完整保留;其挂载位置仅限 `home/` 与 `workspace/`。`pack.ts` 把它们视为不透明字节;会话与 Workspace 的解释仍归拥有这些格式的运行时包。
|
|
39
|
+
|
|
40
|
+
-----
|
|
41
|
+
|
|
42
|
+
<a id="model-experience"></a>
|
|
43
|
+
## 模型体验
|
|
44
|
+
|
|
45
|
+
无:本包在构建期运行并写出镜像文件,其产物本身不进入任何模型请求。
|
|
46
|
+
|
|
47
|
+
#### KV Cache 影响
|
|
48
|
+
|
|
49
|
+
无:本包既不组装也不发送提供方请求。
|
|
50
|
+
|
|
51
|
+
## 已知限制与延期工作
|
|
52
|
+
|
|
53
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
54
|
+
|
|
55
|
+
- **规则表依赖人工判断**(`rules.ts`:exclude glob、页面资产模式、入口种子),由 `tests/` 钉住;worker 需要触达的新资产类别应加表行,而不是改扫描器。
|
|
56
|
+
- **可达性只推断精确请求形式**——计算得到的 `import` 与 `require` 参数、保存下来的 `createRequire` 结果、经 CommonJS 获取的 `createRequire`,以及基准不是 `import.meta.url` 的调用只在运行时解析;若目标已被裁掉就会显式失败。只能通过这些形式触达的目标需要显式镜像入口种子。
|
|
57
|
+
- **vendored 包源码(`src/*.ts`)被排除**——运行时无人解析它们;未来若有 worker 内源码巡检功能需要专门的 include 规则。
|
|
58
|
+
- **打包器假定构建产物 `lib/` 是新鲜的**:它从不编译,工作区构建陈旧就会打包陈旧字节。先跑仓库构建。
|
|
59
|
+
- **CLI 必须位于原有仓库位置**:`dsh-pack-vfs-image` 相对于自身安装文件定位检出目录,并从中读取源码 CLI、配置树和预览 fixture。npm 安装支持参数化的库 API;CLI 和仓库辅助函数需要完整且已构建的 DeepSeek Harness 检出目录。
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
<a id="dev-note"></a>
|
|
63
|
+
### 开发备注
|
|
64
|
+
|
|
65
|
+
<details>
|
|
66
|
+
<summary>维护者工作上下文——点击展开</summary>
|
|
67
|
+
|
|
68
|
+
无。
|
|
69
|
+
|
|
70
|
+
</details>
|
|
71
|
+
|
|
72
|
+
**运行时不变式:** 不发布伴生入口。这是没有生产事件流或可变数据的构建时 pass;无法解析的自有代码请求与全有或全无的包装层约定会直接让 pack 失败。
|
package/bin.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Stable link target for the `dsh-pack-vfs-image` bin, forwarding to the build
|
|
4
|
+
* product.
|
|
5
|
+
*
|
|
6
|
+
* pnpm creates a workspace package's bin link only when the link target exists
|
|
7
|
+
* at install time. `lib/bin.js` is a build product and is absent on a clean
|
|
8
|
+
* checkout, so this committed file is the link target; it forwards to the build
|
|
9
|
+
* product when the command runs.
|
|
10
|
+
* @module @deepseek-ai/dsh-experimental-webworker-packer/bin
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync } from 'node:fs'
|
|
13
|
+
import { fileURLToPath } from 'node:url'
|
|
14
|
+
|
|
15
|
+
const entry = new URL('./lib/bin.js', import.meta.url)
|
|
16
|
+
if (!existsSync(fileURLToPath(entry))) {
|
|
17
|
+
process.stderr.write('dsh-pack-vfs-image: lib/bin.js is missing — run `pnpm run build` before packing an image\n')
|
|
18
|
+
process.exit(1)
|
|
19
|
+
}
|
|
20
|
+
await import(entry.href)
|
package/lib/bin.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { a as previewFixtures, i as indexWorkspacePackages, l as packVfsImage, n as configTrees, r as describePack, t as composeProfile, u as packVfsOverlay } from "./repository-EG8FQ0lQ.js";
|
|
3
|
+
import { PREVIEW_FIXTURE_MANIFEST_FILE, PREVIEW_FIXTURE_MANIFEST_VERSION } from "@deepseek-ai/dsh-experimental-webworker-runtime";
|
|
4
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
5
|
+
import { dirname, isAbsolute, join, resolve } from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
//#region lib/types/bin.js
|
|
8
|
+
/**
|
|
9
|
+
* Pack a Preview deployment from this repository: compose and lower the base
|
|
10
|
+
* image, then write each named fixture overlay and their manifest.
|
|
11
|
+
*
|
|
12
|
+
* Usage: dsh-pack-vfs-image --out <file> [--profile web] [--root /dsh]
|
|
13
|
+
* node --import tsx/esm src/bin.ts --out ../../apps/web/dist/preview/vfs-image.tar.gz
|
|
14
|
+
* @module @deepseek-ai/dsh-experimental-webworker-packer/src/bin
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Read one `--flag value` pair.
|
|
18
|
+
* @param name - Flag name without dashes.
|
|
19
|
+
* @param fallback - Value when the flag is absent.
|
|
20
|
+
* @returns The value.
|
|
21
|
+
* @throws When the flag is present with no value, because silently packing the
|
|
22
|
+
* default profile is worse than stopping.
|
|
23
|
+
*/
|
|
24
|
+
function flag(name, fallback) {
|
|
25
|
+
const index = process.argv.indexOf(`--${name}`);
|
|
26
|
+
if (index === -1) {
|
|
27
|
+
if (fallback !== void 0) return fallback;
|
|
28
|
+
throw new Error(`dsh-pack-vfs-image: --${name} is required`);
|
|
29
|
+
}
|
|
30
|
+
const value = process.argv[index + 1];
|
|
31
|
+
if (value === void 0 || value.startsWith("--")) throw new Error(`dsh-pack-vfs-image: --${name} needs a value`);
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
const repoRoot = fileURLToPath(new URL("../../../../", import.meta.url));
|
|
35
|
+
const profile = flag("profile", "web");
|
|
36
|
+
const out = flag("out");
|
|
37
|
+
const outputFile = isAbsolute(out) ? out : resolve(process.cwd(), out);
|
|
38
|
+
const result = packVfsImage({
|
|
39
|
+
config: composeProfile(repoRoot, profile),
|
|
40
|
+
profile,
|
|
41
|
+
root: flag("root", "/dsh"),
|
|
42
|
+
workspaces: indexWorkspacePackages(repoRoot),
|
|
43
|
+
resolveFrom: repoRoot,
|
|
44
|
+
configTrees: configTrees(repoRoot)
|
|
45
|
+
});
|
|
46
|
+
if (result.missing.length > 0) throw new Error(`vfs image: ${String(result.missing.length)} dependencies did not resolve; the image would be incomplete`);
|
|
47
|
+
mkdirSync(dirname(outputFile), { recursive: true });
|
|
48
|
+
writeFileSync(outputFile, result.image);
|
|
49
|
+
const fixtureDefinitions = previewFixtures(repoRoot);
|
|
50
|
+
mkdirSync(join(dirname(outputFile), "fixtures"), { recursive: true });
|
|
51
|
+
const fixtureLines = [];
|
|
52
|
+
const fixtures = fixtureDefinitions.map((fixture) => {
|
|
53
|
+
const packed = packVfsOverlay(fixture.trees);
|
|
54
|
+
const file = `fixtures/${fixture.id}.tar.gz`;
|
|
55
|
+
writeFileSync(join(dirname(outputFile), file), packed.image);
|
|
56
|
+
fixtureLines.push(` fixture overlay ${fixture.id} (${String(packed.image.byteLength)} B compressed)`);
|
|
57
|
+
return {
|
|
58
|
+
id: fixture.id,
|
|
59
|
+
label: fixture.label,
|
|
60
|
+
description: fixture.description,
|
|
61
|
+
overlays: [file]
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
const manifest = {
|
|
65
|
+
version: PREVIEW_FIXTURE_MANIFEST_VERSION,
|
|
66
|
+
defaultFixture: fixtures[0]?.id ?? null,
|
|
67
|
+
fixtures
|
|
68
|
+
};
|
|
69
|
+
writeFileSync(join(dirname(outputFile), PREVIEW_FIXTURE_MANIFEST_FILE), `${JSON.stringify(manifest, null, 2)}\n`);
|
|
70
|
+
process.stdout.write([
|
|
71
|
+
...describePack(result, repoRoot, outputFile),
|
|
72
|
+
...fixtureLines,
|
|
73
|
+
""
|
|
74
|
+
].join("\n"));
|
|
75
|
+
//#endregion
|
|
76
|
+
export {};
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as previewFixtures, c as MANIFEST_PATH, d as WRAPPER_CONTRACT, i as indexWorkspacePackages, l as packVfsImage, n as configTrees, o as CONFIG_PATH, r as describePack, s as DEFAULT_ROOT, t as composeProfile, u as packVfsOverlay } from "./repository-EG8FQ0lQ.js";
|
|
2
|
+
export { CONFIG_PATH, DEFAULT_ROOT, MANIFEST_PATH, WRAPPER_CONTRACT, composeProfile, configTrees, describePack, indexWorkspacePackages, packVfsImage, packVfsOverlay, previewFixtures };
|