Files
deepseek-harness/packages/util/paths/README.md
T
Turtle 92e0d0e04f refactor(paths): collapse harness home resolution into one resolver
Delete @deepseek-ai/dsh-home and make dsh-paths the sole owner of the
single-root harness home ($DSH_HOME || ~/.dsh). Migrate tool-bash,
skill-local, and agent-spine-demo off dsh-home, and fold telemetry's
divergent globalConfigDir onto the shared resolver, dropping its second
XDG/APPDATA policy and the deepseek-harness namespace so the anonymous
id lives under the harness home. Add dshHomeDisplay() for symbolic
user-facing paths, replacing workspace-context's bespoke check.
2026-07-21 13:52:00 +08:00

1.4 KiB

dsh-paths

Shared filesystem path helpers for DeepSeek Harness user data.

DSH home

resolveDshHome() resolves the single-root DeepSeek Harness home. Precedence, highest first: an explicit configured path, $DSH_HOME, then ~/.dsh. The harness keeps all user data under one root.

dshHomeDisplay() names an active root symbolically for user-facing paths: ~/.dsh for the default home, $DSH_HOME for any configured home. It never leaks an absolute machine path.

DSH_HOME_DIR_NAME owns the default user-data directory name: .dsh.

defaultDshHome() returns the default DeepSeek Harness home by joining the operating-system home directory with .dsh, using Node's platform path rules.

expandHomePath() expands ~, ~/..., and Windows-style ~\... prefixes against the operating-system home directory. It leaves non-tilde paths and ~user/... untouched.

This package is intentionally small and harness-dep-free so product packages can share user-data path conventions without depending on one another.

Known Limitations and Deferred Work

  • Expansion is deliberately narrow — only bare ~, ~/..., and ~\... use the current operating-system home; named-user forms such as ~alice/..., environment variables, and shell expressions remain unchanged.
  • Helpers do not touch the filesystem — callers still own directory creation, existence checks, permissions, and trust policy for the resulting path.