Files
deepseek-harness/packages/client/ui-reference/README.md
T
creatixchu 6bb79911ba refactor(reference): serve discovery through typert Remote faces
Replace the legacy reference.* API Proxy domain with @Remote methods on the
owning services, following the typert gateway design master adopted on
2026-08-02 (message-feedback and plugin-inventory precedents):

- FileReferenceService and SessionReferenceResolver extend TypertRemoteService;
  fileReferences/list and sessionReferenceResolver/candidates are unary Remote
  methods cancelled through the reserved trailing signal, and the candidates
  face attaches each candidate's canonical mention under the configured limit
- move the wire types to type-only ./types subpaths (FileReferenceCandidate,
  SessionReferenceMentionCandidate) and export ./typert plus ./remote artifacts
- mount both contributions in the api-remotes client assembly; ui-reference
  consumes ctx.remote instead of connection.api.references and registers zh/en
  locale dictionaries for its sections and labels
- delete the reference.* routes, schemas, map rows, client stubs, and fixtures;
  the connection fixture serves the Remote endpoints instead
- release deliverPrompt admission listeners when the agent is disposed with the
  prepared prompt still pending, and cover the reference-* RpcError codes in
  the schema spec
- add the missing tsconfig paths for the /grammar and /types subpaths (clean-
  tree vitest could not resolve @deepseek-ai/dsh-file-reference/grammar)
- regenerate the cordis catalog, capability seams, and event matrix; update the
  owning bilingual READMEs, Agent Notes, and the reference-composer golden
2026-08-17 18:35:30 +08:00

2.4 KiB

@deepseek-ai/dsh-client-ui-reference

English | 中文

Unified Web @file and @session source. The browser starts the fileReferences/list and sessionReferenceResolver/candidates Remote calls together for an unquoted token, deterministically orders files before sessions with locale-registered folder/file/session labels, renders the rows under non-selectable file and session section headings, and degrades either failed candidate domain independently. An open @"… token searches files only.

File picks insert the natural text defined by the shared @path grammar. A file closes completion and adds a trailing space; a directory keeps the menu active at its trailing slash so the user can descend another level. Paths containing whitespace use @"path with spaces", and a quote the user opened explicitly remains quoted.

Session picks insert an atomic composer chip whose hidden ref and clipboard representation are the canonical @[label](dsh-session:…) mention returned by the Host. The visible chip uses @label; serialization never reconstructs identity from that label. Ordinary send delegates the canonical mention to session.prompt, where Host-side session-reference preparation owns validation, snapshotting, and model context.

The /client export is the plugin body (apply/inject) only; candidate encoding stays internal to the registration effect.

Model Experience

Indirectly, through @deepseek-ai/dsh-file-reference-local for path guidance and @deepseek-ai/dsh-session-reference for prepared session snapshots.

KV Cache effect

Candidate browsing has no model effect. A selected file or session changes only the new user-message suffix and any Host-prepared session-reference prefix attached to that message; earlier target history remains unchanged.

Known Limitations and Deferred Work

  • Candidate failure is intentionally quiet — one unavailable or failed Remote discovery call yields no rows for that domain, while prompt submission still reports session-reference preparation failures through the ordinary send path.
  • No browser-side file scan — Web completion requires a mounted Host ctx.fileReferences provider; the browser cannot fall back to its own filesystem.
  • Session search remains metadata-only — discovery filters session id, cwd, and the latest log-backed title through ctx.sessionReferenceResolver; message bodies and full transcripts are not searched.