Reorganize packages into a modular hierarchy

Move the 18 flat packages/<name> packages into role-grouped dirs:
core/, llm/, bash/, session-persistence/, ui/, support/. Group dirs are
pure containers; each package keeps its @deepseek-ai/dsh-* name.

Collapse the per-package tsconfig paths maps (base + typecheck) into one
@deepseek-ai/dsh-* wildcard with a candidate per group, and derive the
publint list from the hierarchy. Update all depth-coupled globs/configs
(workspace, tsdown, vitest, eslint, knip, tsconfig includes/refs,
per-package tsconfigs, generators, doc-script scopes, type-equiv manifest)
and the cross-package/script relative imports in tests.

Fix doc-typecheck's workspacePaths() to parse tsconfig JSONC via the
TypeScript API instead of a regex comment-strip, which corrupted the
new wildcard `/*/` path candidates.

WIP: doc cross-links and package/RFC docs still to update.
This commit is contained in:
Tianyi Cui
2026-06-20 22:55:20 +08:00
parent 906705e353
commit d02e9f1bd6
191 changed files with 822 additions and 624 deletions
+5 -4
View File
@@ -1,7 +1,7 @@
import { defineConfig } from 'tsdown'
/**
* JS bundling for all workspace packages (vendor/* + packages/*).
* JS bundling for all workspace packages (vendor and the packages hierarchy).
* Declarations are NOT produced here — `tsc -b tsconfig.build.json` owns
* .d.ts output (composite project references); hence `dts: false` and
* `clean: false` (lib/ already holds tsc's declarations).
@@ -10,9 +10,10 @@ import { defineConfig } from 'tsdown'
* (schemastery: dual ESM+CJS; logger-console: extra browser entry).
*/
export default defineConfig({
// Explicit globs: `workspace: true` would also discover examples/* (any
// package.json), but only vendor/* and packages/* are pnpm workspaces.
workspace: ['vendor/*', 'packages/*'],
// Explicit globs: `workspace: true` would also discover examples (any
// package.json), but only vendor and the packages hierarchy are pnpm
// workspaces.
workspace: ['vendor/*', 'packages/*/*'],
entry: ['src/index.ts'],
outDir: 'lib',
format: ['esm'],