fix: complete invariant omission cleanup
This commit is contained in:
parent
a7f5b6e638
commit
01a8882601
18 changed files with 47 additions and 74 deletions
|
|
@ -2,5 +2,5 @@
|
|||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write .agents/notes/implemented/architecture/2026-07-19-package-invariant-runtime-contracts.md
|
||||
2026-07-19-package-invariant-runtime-contracts.md: 6b072b6f7149abc42b87859cd593b46eb04bd0e8
|
||||
2026-07-19-package-invariant-runtime-contracts.zh.md: e1c661174a545ca2d7abf6406b7ac2293cc7c6d5
|
||||
2026-07-19-package-invariant-runtime-contracts.md: a1b635cc40844f1846c04e203dbb842d1c7328ed
|
||||
2026-07-19-package-invariant-runtime-contracts.zh.md: d315c440f1c100911386f57d6f82d5f16be631ca
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ When no plausible relationship exists, the package omits the companion and publi
|
|||
|
||||
The central `dsh-invariants` service owns only configuration, registration uniqueness, child-fiber lifecycle, rollback, disposal, and package-attributed failure. It exposes no generic plugin-shape, service-shape, or startup-assertion helpers and imports no product package.
|
||||
|
||||
### Implemented checks
|
||||
### Representative implemented checks
|
||||
|
||||
Published companions are enumerated mechanically by `verify-package-invariants`; the current audit count is recorded in the [omit-unneeded-companions decision](../simplification/2026-08-28-omit-unneeded-invariant-companions.md).
|
||||
Published companions are enumerated mechanically by `verify-package-invariants`; the current audit count is recorded in the [omit-unneeded-companions decision](../simplification/2026-08-28-omit-unneeded-invariant-companions.md). The table below samples representative runtime relationships rather than listing every companion.
|
||||
|
||||
| Owner | Runtime relationship |
|
||||
|---|---|
|
||||
|
|
|
|||
|
|
@ -25,9 +25,9 @@ Status: implemented
|
|||
|
||||
中央 `dsh-invariants` 服务只负责配置、注册唯一性、子 fiber 生命周期、回滚、dispose(资源释放)和归属到包的失败。它不暴露通用插件形状、服务形状或启动断言 helper,也不导入产品包。
|
||||
|
||||
### 已实施的检查
|
||||
### 已实施检查示例
|
||||
|
||||
已发布 companion 由 `verify-package-invariants` 机械枚举;当前审计数量记录在[省略不必要 companion 的决策](../simplification/2026-08-28-omit-unneeded-invariant-companions.zh.md)中。
|
||||
已发布 companion 由 `verify-package-invariants` 机械枚举;当前审计数量记录在[省略不必要 companion 的决策](../simplification/2026-08-28-omit-unneeded-invariant-companions.zh.md)中。下表仅展示有代表性的运行时关系,不会逐项列出所有 companion。
|
||||
|
||||
| 所有者 | 运行时关系 |
|
||||
|---|---|
|
||||
|
|
|
|||
|
|
@ -2,5 +2,5 @@
|
|||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||
# after editing either side, bring the other along and re-record with:
|
||||
# pnpm run verify-translation-pairing --write docs/cookbook/adding-a-package.md
|
||||
adding-a-package.md: f38c0d3f3bdfe126ca1de4801548c546fc5994cc
|
||||
adding-a-package.zh.md: 11f6faa75e757b769ef84a039cef05afd1324a95
|
||||
adding-a-package.md: 771bc2b63dba0234252a6925c0aaa4b4f3a16142
|
||||
adding-a-package.zh.md: 8be5e47a206983bef3f86d4210f59159f87a9fae
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ packages/<group>/<pkg>/
|
|||
|
||||
Choose an existing group when one matches the package's role (`core`, `llm`, `shell`, `compaction`, `subagent`, `todo`, `session`, `client`/`host`, `util`, or `test-support`). A new group is allowed, but it is a pure container: no `package.json`, no source files, and packages still sit exactly one level below it.
|
||||
|
||||
package.json invariants (enforced by `pnpm run constraints` / `scripts/check-workspace-constraints.ts`): `private: true`, a `version` matching the root `package.json`, `type: module`, `main: "lib/index.js"`, `types: "lib/types/index.d.ts"`, `exports["."].types: "./lib/types/index.d.ts"`, `exports["."].default: "./lib/index.js"`, `@deepseek-ai/cordis` in BOTH peerDependencies and devDependencies (same range). Mirror every dsh peer dependency in devDependencies. `@deepseek-ai/schemastery` goes in `dependencies` (it is a runtime validator), matching agent-loop. The `files` list contains exactly `lib/index.js`, `lib/invariant.js`, `lib/types/**/*.d.ts`, and package-specific runtime artifacts recognized by the gate; a package whose runtime export points into the emitted tree also includes `lib/types/**/*.js`. Do not publish `src`, declaration maps, JS maps, or stale root declaration files. CLI app packages with a package `bin` include `lib/bin.js` immediately after `lib/index.js` in `files`.
|
||||
package.json invariants (enforced by `pnpm run constraints` / `scripts/check-workspace-constraints.ts`): `private: true`, a `version` matching the root `package.json`, `type: module`, `main: "lib/index.js"`, `types: "lib/types/index.d.ts"`, `exports["."].types: "./lib/types/index.d.ts"`, `exports["."].default: "./lib/index.js"`, `@deepseek-ai/cordis` in BOTH peerDependencies and devDependencies (same range). Mirror every dsh peer dependency in devDependencies. `@deepseek-ai/schemastery` goes in `dependencies` (it is a runtime validator), matching agent-loop. The `files` list contains exactly `lib/index.js`, `lib/types/**/*.d.ts`, and package-specific runtime artifacts recognized by the gate; a package that publishes `./invariant` also includes `lib/invariant.js`. A package whose runtime export points into the emitted tree also includes `lib/types/**/*.js`. Do not publish `src`, declaration maps, JS maps, or stale root declaration files. CLI app packages with a package `bin` include `lib/bin.js` immediately after `lib/index.js` in `files`.
|
||||
|
||||
In-package relative imports use explicit `.ts` specifiers in source (for example, `export * from './types.ts'`). The compiler rewrites those to `.js` in emitted JS and leaves explicit `.ts` specifiers in declarations, which standard NodeNext/Node16 TypeScript consumers resolve to the sibling `.d.ts` files.
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ packages/<group>/<pkg>/
|
|||
|
||||
当已有分组与包的角色匹配时,选择该分组(`core`、`llm`、`shell`、`compaction`、`subagent`、`todo`、`session`、`client`/`host`、`util` 或 `test-support`)。允许新建分组,但分组只是纯容器:没有 `package.json`,没有源文件,包仍然恰好位于其下一层。
|
||||
|
||||
package.json 不变式(由 `pnpm run constraints` / `scripts/check-workspace-constraints.ts` 强制执行):`private: true`,`version` 与根 `package.json` 一致,`type: module`,`main: "lib/index.js"`,`types: "lib/types/index.d.ts"`,`exports["."].types: "./lib/types/index.d.ts"`,`exports["."].default: "./lib/index.js"`,`@deepseek-ai/cordis` 同时出现在 peerDependencies 和 devDependencies 中(相同范围)。每个 dsh 对等依赖(peer dependency)都要在 devDependencies 中镜像。`@deepseek-ai/schemastery` 放在 `dependencies` 中(它是运行时校验器),与 agent-loop 保持一致。`files` 列表精确包含 `lib/index.js`、`lib/invariant.js`、`lib/types/**/*.d.ts` 以及门禁认可的包专用运行时产物;如果包的运行时 export 指向输出树,还要包含 `lib/types/**/*.js`。不要发布 `src`、声明映射、JS map 或陈旧的根声明文件。带有 `bin` 的 CLI 应用包在 `files` 中将 `lib/bin.js` 紧跟在 `lib/index.js` 之后。
|
||||
package.json 不变式(由 `pnpm run constraints` / `scripts/check-workspace-constraints.ts` 强制执行):`private: true`,`version` 与根 `package.json` 一致,`type: module`,`main: "lib/index.js"`,`types: "lib/types/index.d.ts"`,`exports["."].types: "./lib/types/index.d.ts"`,`exports["."].default: "./lib/index.js"`,`@deepseek-ai/cordis` 同时出现在 peerDependencies 和 devDependencies 中(相同范围)。每个 dsh 对等依赖(peer dependency)都要在 devDependencies 中镜像。`@deepseek-ai/schemastery` 放在 `dependencies` 中(它是运行时校验器),与 agent-loop 保持一致。`files` 列表精确包含 `lib/index.js`、`lib/types/**/*.d.ts` 以及门禁认可的包专用运行时产物;发布 `./invariant` 的包还要包含 `lib/invariant.js`。如果包的运行时 export 指向输出树,还要包含 `lib/types/**/*.js`。不要发布 `src`、声明映射、JS map 或陈旧的根声明文件。带有 `bin` 的 CLI 应用包在 `files` 中将 `lib/bin.js` 紧跟在 `lib/index.js` 之后。
|
||||
|
||||
包内的相对导入在源码中使用显式 `.ts` 后缀(例如 `export * from './types.ts'`)。编译器在输出的 JS 中将其重写为 `.js`,在声明文件中保留显式 `.ts` 后缀;标准的 NodeNext/Node16 TypeScript 消费方会将其解析到同目录的 `.d.ts` 文件。
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ These package-specific rules supplement the repo-wide [conventions](../AGENTS.md
|
|||
|
||||
[Naming rules](../docs/cookbook/adding-a-package.md#name-the-role-that-exists):
|
||||
|
||||
- **Package tsconfig:** extends `tsconfig.base.json` (Client: `tsconfig.base.client.json`), sets `rootDir: src` and `outDir: lib/types`, references workspace dependencies plus `runtime-diagnostics/invariants`, and registers in one aggregate. Packages with distinct Host and Client compiler faces use `tsconfig.host.json` and `tsconfig.client.json` leaves plus a solution-only root; ordinary two-entry Client plugins do not split ([layout](../docs/development.md#typescript-project-layout)).
|
||||
- **Package tsconfig:** extends `tsconfig.base.json` (Client: `tsconfig.base.client.json`), sets `rootDir: src` and `outDir: lib/types`, references workspace dependencies, references `runtime-diagnostics/invariants` only when the package publishes `./invariant`, and registers in one aggregate. Packages with distinct Host and Client compiler faces use `tsconfig.host.json` and `tsconfig.client.json` leaves plus a solution-only root; ordinary two-entry Client plugins do not split ([layout](../docs/development.md#typescript-project-layout)).
|
||||
- `src/types.ts` contains only types — no runtime code.
|
||||
- Tests live at package level under `tests/`, not `src/__tests__/`.
|
||||
- Update package README and JSDoc contracts in the same commit as behavior, and verify them against code with [dsh-prose-standard](../.agents/skills/dsh-prose-standard/SKILL.md). Group READMEs declare subsystem ownership through a canonical English page link or justified [exemption](../scripts/verify-subsystem-pages.ts).
|
||||
|
|
|
|||
|
|
@ -55,6 +55,7 @@
|
|||
"@deepseek-ai/dsh-commands": "workspace:^",
|
||||
"@deepseek-ai/dsh-compaction": "workspace:^",
|
||||
"@deepseek-ai/dsh-compaction-tool-result-pruner": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm-retry": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
"@deepseek-ai/cordis-plugin-include": "workspace:^",
|
||||
"@deepseek-ai/cordis-plugin-loader": "workspace:^",
|
||||
"@deepseek-ai/dsh-compaction": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
"@deepseek-ai/dsh-session-projection": "workspace:^",
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
"@deepseek-ai/dsh-agent": "workspace:^",
|
||||
"@deepseek-ai/dsh-agent-loop": "workspace:^",
|
||||
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
"@deepseek-ai/dsh-subagent": "workspace:^",
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@
|
|||
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
|
||||
"@deepseek-ai/dsh-agent-presets": "workspace:^",
|
||||
"@deepseek-ai/dsh-fs-sandbox": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-sandbox-policy": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
|
||||
"@deepseek-ai/dsh-bash-local": "workspace:^",
|
||||
"@deepseek-ai/dsh-subprocess-local": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm-deepseek": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
"@deepseek-ai/dsh-agent": "workspace:^",
|
||||
"@deepseek-ai/dsh-agent-loop": "workspace:^",
|
||||
"@deepseek-ai/dsh-agent-loop-testkit": "workspace:^",
|
||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||
"@deepseek-ai/dsh-llm": "workspace:^",
|
||||
"@deepseek-ai/dsh-session": "workspace:^",
|
||||
"@deepseek-ai/dsh-session-projection": "workspace:^",
|
||||
|
|
|
|||
18
pnpm-lock.yaml
generated
18
pnpm-lock.yaml
generated
|
|
@ -3894,6 +3894,9 @@ importers:
|
|||
'@deepseek-ai/dsh-compaction-tool-result-pruner':
|
||||
specifier: workspace:^
|
||||
version: link:../compaction-tool-result-pruner
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
@ -3934,6 +3937,9 @@ importers:
|
|||
'@deepseek-ai/dsh-compaction':
|
||||
specifier: workspace:^
|
||||
version: link:../compaction
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
@ -8388,6 +8394,9 @@ importers:
|
|||
'@deepseek-ai/dsh-agent-loop-testkit':
|
||||
specifier: workspace:^
|
||||
version: link:../../test-support/agent-loop-testkit
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
@ -8437,6 +8446,9 @@ importers:
|
|||
'@deepseek-ai/dsh-fs-sandbox':
|
||||
specifier: workspace:^
|
||||
version: link:../../fs/fs-sandbox
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
@ -8489,6 +8501,9 @@ importers:
|
|||
'@deepseek-ai/dsh-bash-local':
|
||||
specifier: workspace:^
|
||||
version: link:../../shell/bash-local
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
@ -9586,6 +9601,9 @@ importers:
|
|||
'@deepseek-ai/dsh-agent-loop-testkit':
|
||||
specifier: workspace:^
|
||||
version: link:../../test-support/agent-loop-testkit
|
||||
'@deepseek-ai/dsh-invariants':
|
||||
specifier: workspace:^
|
||||
version: link:../../runtime-diagnostics/invariants
|
||||
'@deepseek-ai/dsh-llm':
|
||||
specifier: workspace:^
|
||||
version: link:../../llm/llm
|
||||
|
|
|
|||
|
|
@ -113,14 +113,14 @@ describe('package invariant gate', () => {
|
|||
expect(packageInvariantOwners(root)).toEqual([])
|
||||
})
|
||||
|
||||
it('requires an omitted companion to have a package-specific README reason', () => {
|
||||
it('requires an omitted companion to have a README reason sentence', () => {
|
||||
const violations = collectPackageInvariantViolations(fixture({
|
||||
companion: false,
|
||||
omissionReason: false,
|
||||
}))
|
||||
expect(violations).toContainEqual({
|
||||
path: 'packages/core/probe/README.md',
|
||||
message: 'omitted companion requires a package-specific "No ... companion is published" reason',
|
||||
message: 'omitted companion requires a README "No ... companion is published" reason sentence',
|
||||
})
|
||||
})
|
||||
|
||||
|
|
@ -187,11 +187,13 @@ describe('package invariant gate', () => {
|
|||
companion: false,
|
||||
invariantExport: true,
|
||||
invariantFile: true,
|
||||
invariantReference: true,
|
||||
buildEntry: true,
|
||||
}))
|
||||
expect(violations.map(violation => violation.message)).toEqual(expect.arrayContaining([
|
||||
expect.stringContaining('exports["./invariant"] must be omitted'),
|
||||
expect.stringContaining('files must omit lib/invariant.js'),
|
||||
expect.stringContaining('TypeScript project references must omit ../../runtime-diagnostics/invariants'),
|
||||
expect.stringContaining('build override must omit lib/types/invariant.js'),
|
||||
]))
|
||||
})
|
||||
|
|
|
|||
|
|
@ -164,6 +164,12 @@ function checkBuild(
|
|||
tsconfigPath,
|
||||
'TypeScript project references must include ../../runtime-diagnostics/invariants',
|
||||
)
|
||||
} else if (!hasCompanion && projectReferencesInvariants(root, owner.dir, tsconfigPath)) {
|
||||
addViolation(
|
||||
violations,
|
||||
tsconfigPath,
|
||||
'TypeScript project references must omit ../../runtime-diagnostics/invariants when src/invariant.ts is absent',
|
||||
)
|
||||
}
|
||||
|
||||
const configPath = `${owner.dir}/tsdown.config.ts`
|
||||
|
|
@ -192,7 +198,7 @@ function checkOmissionReason(
|
|||
addViolation(
|
||||
violations,
|
||||
readmePath,
|
||||
'omitted companion requires a package-specific "No ... companion is published" reason',
|
||||
'omitted companion requires a README "No ... companion is published" reason sentence',
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,13 +9,6 @@
|
|||
import { expect } from 'vitest'
|
||||
import { FiberState, Inject, RegistryService, ValidationError } from '@deepseek-ai/cordis'
|
||||
import type { Context, Plugin } from '@deepseek-ai/cordis'
|
||||
import { AttachmentStore } from '@deepseek-ai/dsh-attachment'
|
||||
import type {
|
||||
ImageAttachmentLimits,
|
||||
ImageAttachmentRef,
|
||||
SaveImageAttachment,
|
||||
StoredImageAttachment,
|
||||
} from '@deepseek-ai/dsh-attachment'
|
||||
import InvariantRegistry from '@deepseek-ai/dsh-invariants'
|
||||
|
||||
declare global {
|
||||
|
|
@ -61,7 +54,6 @@ type PluginFiber = ReturnType<RegistryService['plugin']>
|
|||
type PluginCallback = Plugin.Function | Plugin.Constructor
|
||||
|
||||
const hosts = new WeakMap<Context, InvariantHost>()
|
||||
// oxlint-disable-next-line typescript/unbound-method -- every call below supplies its RegistryService receiver explicitly.
|
||||
const originalPlugin = RegistryService.prototype.plugin
|
||||
|
||||
RegistryService.prototype.plugin = function(plugin: Plugin, config?: unknown, getOuterStack?: () => string[]) {
|
||||
|
|
@ -109,30 +101,6 @@ export function usesManualInvariantTree(testPath: string): boolean {
|
|||
}
|
||||
|
||||
const ALL_COMPANION_TESTS = ['/scripts/test-invariants.spec.ts'] as const
|
||||
const ATTACHMENT_COMPANION = '../packages/attachment/attachment-local/src/invariant.ts'
|
||||
|
||||
class TestAttachmentStore extends AttachmentStore {
|
||||
readonly imageLimits: ImageAttachmentLimits = {
|
||||
maxImageBytes: 1,
|
||||
maxImagesPerMessage: 1,
|
||||
maxMessageImageBytes: 1,
|
||||
maxImagePixels: 1,
|
||||
maxImageDimension: 1,
|
||||
mediaTypes: ['image/png'],
|
||||
}
|
||||
|
||||
validateImage(_input: SaveImageAttachment): Promise<void> {
|
||||
return Promise.reject(new Error('test invariant attachment store does not validate images'))
|
||||
}
|
||||
|
||||
saveImage(_input: SaveImageAttachment): Promise<ImageAttachmentRef> {
|
||||
return Promise.reject(new Error('test invariant attachment store does not save images'))
|
||||
}
|
||||
|
||||
readImage(_ref: ImageAttachmentRef): Promise<StoredImageAttachment> {
|
||||
return Promise.reject(new Error('test invariant attachment store does not read images'))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Select the package companions that an ordinary test root must register.
|
||||
|
|
@ -176,9 +144,6 @@ function startInvariantHost(root: Context): InvariantHost {
|
|||
const testPath = expect.getState().testPath ?? ''
|
||||
const companionPaths = testInvariantCompanionPaths(testPath)
|
||||
const ready = requireActive(serviceFiber, 'invariant service').then(async () => {
|
||||
const attachmentFiber = companionPaths.includes(ATTACHMENT_COMPANION)
|
||||
? mount(TestAttachmentStore)
|
||||
: undefined
|
||||
const companions = await Promise.all(companionPaths.map(async (path) => {
|
||||
const load = testInvariantCompanions[path]
|
||||
if (load === undefined) {
|
||||
|
|
@ -194,12 +159,7 @@ function startInvariantHost(root: Context): InvariantHost {
|
|||
fiber: mount(companion),
|
||||
path,
|
||||
}))
|
||||
await Promise.all([
|
||||
...(attachmentFiber === undefined
|
||||
? []
|
||||
: [requireActive(attachmentFiber, 'test attachment store')]),
|
||||
...companionFibers.map(({ fiber, path }) => requireActive(fiber, path)),
|
||||
])
|
||||
await Promise.all(companionFibers.map(({ fiber, path }) => requireActive(fiber, path)))
|
||||
root.provide(TEST_INVARIANT_READY_SERVICE, true)
|
||||
})
|
||||
const host = { byCallback, barrierOwners, ready }
|
||||
|
|
|
|||
|
|
@ -40,24 +40,19 @@
|
|||
"@deepseek-ai/node-addon-landlock-run": ["./native/landlock-run/packages/entry/src/index.ts"],
|
||||
"@deepseek-ai/dsh-invariants": ["./packages/runtime-diagnostics/invariants/src/index.ts"],
|
||||
"@deepseek-ai/dsh-tool-call-timeout-policy": ["./packages/guard/timeout-policy/src"],
|
||||
"@deepseek-ai/dsh-tool-call-timeout-policy/invariant": ["./packages/guard/timeout-policy/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-typert-registry": ["./packages/typert/registry/src/index.ts"],
|
||||
"@deepseek-ai/dsh-typert-registry/client": ["./packages/typert/registry/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-api-gateway": ["./packages/api/gateway/src/index.ts"],
|
||||
"@deepseek-ai/dsh-api-gateway/client": ["./packages/api/gateway/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-api-gateway/invariant": ["./packages/api/gateway/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-api-gateway/types": ["./packages/api/gateway/src/types.ts"],
|
||||
"@deepseek-ai/dsh-api-session-controller": ["./packages/api/session-controller/src/index.ts"],
|
||||
"@deepseek-ai/dsh-api-session-controller/client": ["./packages/api/session-controller/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-api-session-controller/invariant": ["./packages/api/session-controller/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-api-session-controller/types": ["./packages/api/session-controller/src/types.ts"],
|
||||
"@deepseek-ai/dsh-api-session-controller/remote-events": ["./packages/api/session-controller/src/remote-events.ts"],
|
||||
"@deepseek-ai/dsh-api-settings-controller": ["./packages/api/settings-controller/src/index.ts"],
|
||||
"@deepseek-ai/dsh-api-settings-controller/invariant": ["./packages/api/settings-controller/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-api-settings-controller/types": ["./packages/api/settings-controller/src/types.ts"],
|
||||
"@deepseek-ai/dsh-api-workspace-controller": ["./packages/api/workspace-controller/src/index.ts"],
|
||||
"@deepseek-ai/dsh-api-workspace-controller/client": ["./packages/api/workspace-controller/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-api-workspace-controller/invariant": ["./packages/api/workspace-controller/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-api-workspace-controller/types": ["./packages/api/workspace-controller/src/types.ts"],
|
||||
"@deepseek-ai/dsh-typert-protocol": ["./packages/typert/protocol/src/index.ts"],
|
||||
"@deepseek-ai/dsh-typert-protocol/types": ["./packages/typert/protocol/src/types.ts"],
|
||||
|
|
@ -105,7 +100,6 @@
|
|||
"@deepseek-ai/dsh-authorization/types": ["./packages/credentials/authorization/src/types.ts"],
|
||||
"@deepseek-ai/dsh-settings/types": ["./packages/settings/settings/src/types.ts"],
|
||||
"@deepseek-ai/dsh-api-remotes/types": ["./packages/api/remotes/src/types.ts"],
|
||||
"@deepseek-ai/dsh-api-remotes/invariant": ["./packages/api/remotes/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-compaction/checkpoint": ["./packages/compaction/compaction/src/checkpoint.ts"],
|
||||
"@deepseek-ai/dsh-compaction/types": ["./packages/compaction/compaction/src/types.ts"],
|
||||
"@deepseek-ai/dsh-file-reference/grammar": ["./packages/context/file-reference/src/grammar.ts"],
|
||||
|
|
@ -123,11 +117,6 @@
|
|||
"@deepseek-ai/dsh-scope/invariant": ["./packages/core/scope/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-agent-loop/invariant": ["./packages/core/agent-loop/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-experimental-agent-team/invariant": ["./packages/experimental/agent-team/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-experimental-tool-agent-team/invariant": ["./packages/experimental/tool-agent-team/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-experimental-webworker-runtime/invariant": ["./packages/experimental/webworker-runtime/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-experimental-webworker-packer/invariant": ["./packages/experimental/webworker-packer/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-experimental-inspector/invariant": ["./packages/experimental/inspector/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-util-crypto/invariant": ["./packages/util/crypto/src/invariant.ts"],
|
||||
// host/client package names prefix the group dir (dsh-client-<dir>), so
|
||||
// the generated aliases below — which map a package only when its name is
|
||||
// exactly dsh-<dir> — skip them; strip the group prefix with a dedicated
|
||||
|
|
@ -159,13 +148,11 @@
|
|||
"@deepseek-ai/dsh-client-ui-attachment": ["./packages/client/ui-attachment/src"],
|
||||
"@deepseek-ai/dsh-client-ui-primitives": ["./packages/client/ui-primitives/src"],
|
||||
"@deepseek-ai/dsh-client-store": ["./packages/client/store/src/index.ts"],
|
||||
"@deepseek-ai/dsh-client-store/invariant": ["./packages/client/store/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-renderer": ["./packages/client/ui-renderer/src"],
|
||||
"@deepseek-ai/dsh-client-ui-renderer/client": ["./packages/client/ui-renderer/src/client"],
|
||||
"@deepseek-ai/dsh-client-ui-renderer/invariant": ["./packages/client/ui-renderer/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-session": ["./packages/client/ui-session/src"],
|
||||
"@deepseek-ai/dsh-client-ui-session/client": ["./packages/client/ui-session/src/client"],
|
||||
"@deepseek-ai/dsh-client-ui-session/invariant": ["./packages/client/ui-session/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-connection": ["./packages/client/connection/src"],
|
||||
"@deepseek-ai/dsh-api-remotes": ["./packages/api/remotes/src"],
|
||||
"@deepseek-ai/dsh-api-remotes/client": ["./packages/api/remotes/src/client/index.ts"],
|
||||
|
|
@ -173,12 +160,9 @@
|
|||
"@deepseek-ai/dsh-client-modules": ["./packages/client/modules/src"],
|
||||
"@deepseek-ai/dsh-cordis-client-runner": ["./packages/extensions/cordis-client-runner/src"],
|
||||
"@deepseek-ai/dsh-cordis-client-runner/client": ["./packages/extensions/cordis-client-runner/src/client"],
|
||||
"@deepseek-ai/dsh-cordis-client-runner/invariant": ["./packages/extensions/cordis-client-runner/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-cordis": ["./packages/extensions/ui-cordis/src"],
|
||||
"@deepseek-ai/dsh-client-ui-cordis/client": ["./packages/extensions/ui-cordis/src/client"],
|
||||
"@deepseek-ai/dsh-client-ui-cordis/invariant": ["./packages/extensions/ui-cordis/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-test-runtime": ["./packages/test-support/client-runtime/src"],
|
||||
"@deepseek-ai/dsh-client-test-runtime/invariant": ["./packages/test-support/client-runtime/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-layout": ["./packages/client/ui-layout/src"],
|
||||
"@deepseek-ai/dsh-client-ui-sidebar": ["./packages/client/ui-sidebar/src"],
|
||||
"@deepseek-ai/dsh-client-ui-brand-official": ["./packages/client/ui-brand-official/src"],
|
||||
|
|
@ -206,7 +190,6 @@
|
|||
"@deepseek-ai/dsh-client-ui-jobs": ["./packages/client/ui-jobs/src"],
|
||||
"@deepseek-ai/dsh-client-ui-schedule": ["./packages/client/ui-schedule/src"],
|
||||
"@deepseek-ai/dsh-client-ui-schedule/client": ["./packages/client/ui-schedule/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-schedule/invariant": ["./packages/client/ui-schedule/src/invariant.ts"],
|
||||
"@deepseek-ai/dsh-client-ui-plan": ["./packages/client/ui-plan/src"],
|
||||
"@deepseek-ai/dsh-client-ui-user-questions": ["./packages/client/ui-user-questions/src"],
|
||||
"@deepseek-ai/dsh-client-ui-trajectory": ["./packages/client/ui-trajectory/src"],
|
||||
|
|
@ -237,11 +220,9 @@
|
|||
"@deepseek-ai/dsh-experimental-inspector/client": ["./packages/experimental/inspector/src/client/index.ts"],
|
||||
"@deepseek-ai/dsh-util-crypto": ["./packages/util/crypto/src"],
|
||||
"@deepseek-ai/dsh-util-values": ["./packages/util/values/src"],
|
||||
"@deepseek-ai/dsh-util-values/invariant": ["./packages/util/values/src/invariant.ts"],
|
||||
// util/ folders are role-named without the util- prefix their npm names carry,
|
||||
// so these aliases stay hand-written like dsh-util-crypto above.
|
||||
"@deepseek-ai/dsh-util-time": ["./packages/util/time/src"],
|
||||
"@deepseek-ai/dsh-util-time/invariant": ["./packages/util/time/src/invariant.ts"],
|
||||
// BEGIN generated package aliases — pnpm run gen-tsconfig-paths
|
||||
"@deepseek-ai/dsh-acp": ["./packages/acp/acp/src"],
|
||||
"@deepseek-ai/dsh-acp-app": ["./packages/bundle/acp-app/src"],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue