ReMe/integrations/dsh/tests
LiangshouX 7584495744 fix(dsh): probe from the Host and bound every process lifetime
Local now means the DSH Host everywhere. The tab no longer fetches the
service URL from the browser: the hero reads the same Host probe the
service card uses, and a remote endpoint is probed through a new
remeEnv/health method, so a browser on another machine cannot disagree
with the Host. The wire namespace, method parameter convention and
service keys are unchanged.

Process lifetimes are explicit and documented in the manager. Python
probes and reme-ai checks stay bounded one-shot commands. pip installs
live in the manager's registry, keep the interpreter locked between a
cancel request and the actual exit, and are stopped by dispose() when
the plugin unloads. The ReMe service stays detached on purpose: it must
outlive DSH, so it is not handed to DSH's subprocess provider, which
kills its children on Host exit; it is stopped only through the
ownership-checked adapter in service.ts.

That adapter now verifies identity before reporting or stopping a
service: the recorded endpoint must match, the pid must be alive, and
its image must still be Python or reme, which protects against pid
reuse. A launch is recorded only after the OS acknowledged the spawn,
and a spawn failure returns an error instead of an unhandled event.
Starts are serialized and re-check the phase inside the lock, so two
requests cannot spawn two services. Health answers are validated, so a
generic HTTP server answering 200 with '{}' is no longer reported as a
running ReMe service, and authToken now rides the Authorization header
of both the client requests and the Host probe.

.env merging rewrites every occurrence of a key (parsing keeps the last
one), keeps the file's line ending, and validates the merged file rather
than just the submitted values.
2026-10-28 17:10:30 +08:00
..
bundle.test.mjs chore(dsh): target DSH 0.2.2-alpha.2 2026-10-28 17:10:23 +08:00
client-settings.test.mjs fix(dsh): recover memory backlogs and protect endpoint credentials (#653) 2026-10-21 18:58:29 +08:00
client.test.mjs fix(dsh): preserve outbox order and redact whitespace in credentials (#657) 2026-10-22 11:21:37 +08:00
config.test.mjs fix(dsh): recover memory backlogs and protect endpoint credentials (#653) 2026-10-21 18:58:29 +08:00
dsh-index.test.mjs feat(dsh): add Environment tab with local Python detection 2026-10-27 16:57:36 +08:00
dsh-tools.test.mjs fix(dsh): preserve outbox order and redact whitespace in credentials (#657) 2026-10-22 11:21:37 +08:00
env-detect.test.mjs refactor(dsh): collect environment management under src/environment 2026-10-28 17:10:27 +08:00
env-gateway.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
env-manager.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
env-reme.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
env-service.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
env-tab.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
env-workspace.test.mjs fix(dsh): probe from the Host and bound every process lifetime 2026-10-28 17:10:30 +08:00
frontmatter.test.mjs refactor(integrations): split TypeScript host plugins (#536) 2026-09-11 13:06:02 +08:00
messages.test.mjs fix(dsh): support DeepSeek Harness 0.1.7-rc.2 (#571) 2026-09-30 14:53:42 +08:00
outbox.test.mjs fix(dsh): preserve outbox order and redact whitespace in credentials (#657) 2026-10-22 11:21:37 +08:00
runtime.test.mjs fix(dsh): preserve outbox order and redact whitespace in credentials (#657) 2026-10-22 11:21:37 +08:00
scheduler.test.mjs refactor(integrations): split TypeScript host plugins (#536) 2026-09-11 13:06:02 +08:00