Replies: 2 comments
|
Also filed in the beta feedback tracker: dsh-external/issues#655 (https://github.com/dsh-external/issues/issues/655). The PATH finding there cross-references #653 (desktop not inheriting zsh/bash environment variables) as the same family. |
|
Update: plugin-side workaround confirmed working (no host changes needed). We shipped a fix in the affected plugin (dsh-paste-input v0.2.6) that works around both Desktop divergences without touching dsh:
Both verified end-to-end on Desktop 0.2.0-rc.2 (Windows): paste → upload → commit → file lands under So for other plugin authors hitting this: |
Uh oh!
There was an error while loading. Please reload this page.
Summary
On the Desktop host (dsh-v0.2.0-rc.2, Windows), a client plugin's host half resolves
ctx.sessions.get(sessionId)toundefinedfor every session id — including sessions the same host is actively running. The identical plugin, profile composition, and dsh version work correctly on the Web host. This breaks any plugin that resolves the session's workspace cwd through thesessionsservice; in our case the paste/attachment plugin can no longer upload files on Desktop.Environment
dsh-base+dsh-web-app(+ our plugins), plugins installed via pnpmlink:to local directories@deepseek-ai/dsh@0.2.0-rc.2via nvm4w npm, same profile bundles, same plugin treeRepro (host-side, no UI needed)
The plugin registers an HTTP route through
ctx.webServer.register({ kind: 'prefix', path: '/dsh-paste-input/v1', ... }). Against the Desktop host (127.0.0.1:19387, unauthenticated probes):The route handler starts with the canonical resolution:
Tested ids: (a) a session actively running on the Desktop host at that moment (its
session.v4.jsonl.zstdwas being appended under~/.dsh/sessions/<workspace>/session-<id>/), and (b) another persisted session — bothundefined. The plugin's cordisinject: ['webServer', 'loader', 'sessions']resolves (the plugin activates and serves), so a service namedsessionsexists — but its live-session registry appears empty from a plugin fiber on the Desktop host.On the Web host (port 3080, same machine, same rc.2), the exact same probe flow completes: batch -> file PUT -> commit all succeed and land in
<workspace>/.dsh/tmp/attachments/.User-visible symptom
Pasting files in a Desktop conversation: chips render but resolve "unavailable" (no file was ever written), and sending fails. On Web the same paste flow works end-to-end.
Second, possibly related divergence: reduced child PATH on Desktop
Tool subprocesses spawned on the Desktop host see a minimal
PATH— e.g.pwshis not resolvable (spawnSync pwsh ENOENT) whileSystem32tools are. The rc.2 release notes fix the missing login-shell environment for macOS/Linux graphical launches; Windows Desktop may still need the equivalent.Suspicion (unverified)
The Desktop runner (
dsh-desktop-host→runProfile) may boot the composition with a different cordis fiber/isolate layout than the CLI app-boot, so thesessionsservice a plugin resolves is not the live registry the agent runtime populates — possibly a different provider or an isolate-scoped instance.Happy to run any further probes against the running Desktop host. The plugin involved is open-source (lhh010/dsh-paste-input) if the source helps.
All reactions