Fix+feat Dream Server DESKTOP #1127
Fix+feat Dream Server DESKTOP #1127gabsprogrammer wants to merge 1 commit intoLight-Heart-Labs:mainfrom
Conversation
Lightheartdevs
left a comment
There was a problem hiding this comment.
Thanks for the submission. I don't think this is merge-ready in its current shape. The CI checks are green, but the diff changes too much global DreamServer behavior and adds a large unauthenticated local execution surface.
Blocking findings:
-
Unauthenticated Hermes API exposes mutation and execution endpoints.
extensions/services/hermes/app/server.jsroutes every/api/*request directly throughrouteApi()with no auth, origin check, CSRF token, or per-session secret.readJson()parses the body regardless of content type, so browserno-corssimple POSTs can still carry JSON text. The exposed endpoints include/api/desktop/run-actionand/api/code/save-file; the latter accepts absolute paths and writes them without containing the path toWORKSPACE_ROOT(server.js:332-336,395-406,497-535). Because the compose file passes API keys into this container and/appis writable by the service user, this needs a real local auth/origin gate plus path containment before merge. -
Global optional-service filtering can break existing installs on update.
scripts/resolve-compose-stack.shnow treats optional manifests as disabled unlessDREAM_ENABLED_SERVICESexplicitly lists them (resolve-compose-stack.sh:81-93,190-192). Existing installs created before this PR will not have that variable, so after updating/regenerating compose flags they drop previously running optional services. Repro with PyYAML available: on this branch withDREAM_ENABLED_SERVICESunset, the resolver emits only base/nvidia plus core/recommended fragments;origin/mainemits the full optional stack. This needs a migration/compat fallback before it can ride along with Hermes. -
The vendored payload is too large to review or maintain as one PR. This adds 2,119 files / 826,273 lines under
extensions/services/hermes/app/vendor, plus binaries/PDFs/fonts/images and multiple upstream app trees. The workflow also excludes that vendor tree from Ruff. That is a supply-chain and maintainability decision, not a normal feature diff. Please split the DreamServer integration from the third-party source drop, pin provenance/SHAs and licensing, and avoid committing unrelated upstream websites/docs/tests/assets where possible. -
Setup diagnostics tests fail in this environment. On Windows where
bashresolves to the broken WSL shim atC:\Windows\system32\bash.EXE, the PR path conversion still invokes that shim andtests/test_setup_sentinel.pyfails 2/29 (PASSbecomesFAIL, and expected rc3becomes1). The code should choose a usable Git Bash/WSL bash explicitly or detect the broken shim before converting paths to/mnt/<drive>/....
Validation I ran:
git diff --check origin/main...HEAD?bash -n dream-cli scripts/resolve-compose-stack.sh installers/phases/03-features.sh installers/phases/06-directories.sh installers/phases/11-services.sh install-core.sh?node --test runtime/provider-routing.test.js runtime/hermes/backend.test.js?- broader Hermes
node --test runtime/*.test.js runtime/hermes/backend.test.js runtime/platform/tool-runtime.test.js? docker compose --env-file .env.example -f docker-compose.base.yml -f docker-compose.nvidia.yml -f extensions/services/hermes/compose.yaml -f extensions/services/litellm/compose.yaml -f extensions/services/litellm/compose.local.yaml config --quiet?python -m py_compile config.py helpers.py main.py routers/extensions.py routers/setup.py?python -m pytest tests/test_config.py tests/test_setup_sentinel.py -q?, 2 failed / 27 passed
Recommendation: split and revise. The Hermes endpoint-routing fix may be valuable, but this PR should not merge as a single 876k-line feature/vendor/global-installer change.
7f24196 to
462e166
Compare
462e166 to
695d4f2
Compare
review done |
Summary
z-ai/glm4.7are replaced with the model exposed by/v1/models.host.docker.internalwhile preserving the user-visible localhost configuration.localThinkingEnabledis off, avoiding empty<think>responses.host.docker.internal:host-gatewaymapping for the Hermes compose fragment.Validation
node --test runtime/provider-routing.test.js runtime/hermes/backend.test.jsbash tests/run-bats.sh(256/256, including_docker_cmd_arrregression)python scripts/audit-extensions.py --project-dir .bash tests/test-extension-audit.shbash tests/test-extension-runtime-check.shbash tests/integration-test.shdocker compose -f docker-compose.base.yml -f docker-compose.nvidia.yml -f extensions/services/hermes/compose.yaml -f extensions/services/litellm/compose.yaml -f extensions/services/litellm/compose.local.yaml config --quiethttp://127.0.0.1:3011responded throughQwen3.5-9B-Q4_K_Mathttp://127.0.0.1:11435/v1.