Skip to content

fix: prevent DeepSeek Harness plugin boot failures - #750

Open
GUANGDIJI wants to merge 5 commits into
MemTensor:v1.2.6from
GUANGDIJI:codex/dsh-client-safe-update
Open

GUANGDIJI wants to merge 5 commits into
MemTensor:v1.2.6from
GUANGDIJI:codex/dsh-client-safe-update

Conversation

@GUANGDIJI

@GUANGDIJI GUANGDIJI commented Oct 26, 2026 •

Copy link
Copy Markdown

Summary

  • Treat the DeepSeek Harness optimistic-message UI as optional instead of a mandatory web-boot dependency.
  • Use the supported conversation event registry when available.
  • If the UI service is missing or registration fails, skip only the optimistic UI and allow DSH plus core memory features to continue.
  • Keep the App and Memory plugin templates aligned with focused regression tests.

Root cause

Different DSH builds do not always expose the same conversation UI service. Memmy declared that optional service as mandatory and threw when it was unavailable, so DSH marked the Memmy client entry as failed and aborted web startup.

User impact

Supported DSH versions keep the early user-message display. Other versions lose only that optional early display; normal messages, memory recall/write, and DSH startup continue working.

Scope

This PR only fixes the startup boundary. It does not change plugin installation, process detection, hot-update blocking, or file rewrite policy.

Validation

  • App backend DSH target tests: 13 passed
  • Memory DSH compatibility tests: 7 passed
  • @memmy/backend typecheck and lint passed
  • @memmy/memory typecheck passed
  • Automated smoke tests passed
  • Synced with the latest v1.2.6 base without conflicts

@Memtensor-AI

Memtensor-AI commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

🤖 Open Code Review

Target: PR #750
Task: aa6323d22ff43d88
Base: v1.2.6
Head: codex/dsh-client-safe-update

🔍 OpenCodeReview found 4 issue(s) in this PR.

⚠️ 2 warning(s) occurred during review.


1. App/backend/src/adapters/outbound/skill-writer/templates/memmy-deepseek-harness-plugin.ts (L590-L591)

With inject = [] and the inject: ["@deepseek-ai/dsh-client-ui-conversation"] manifest entry removed, nothing guarantees the conversation-event service exists when apply(ctx) runs. In that case this early return silently disables the optimistic-user bubble for the whole session — no retry once the service is later registered, and no diagnostic (the catch below at least warns). Consider deferring registration (e.g. retry/ctx.get readiness) or emitting a debug/warn log on the null-registry path so the disabled state is observable.


2. App/backend/src/adapters/outbound/skill-writer/templates/memmy-deepseek-harness-plugin.ts (L592-L593)

The object literal passed to registry.register was not re-indented after being wrapped in the try block, so kind, target, match, start, etc. sit at the same level as registry.register({. Re-indent the block body by two spaces for readability in the generated client.js.

💡 Suggested Change

Before:

        registry.register({
        kind: "memmy-optimistic-user",

After:

        registry.register({
          kind: "memmy-optimistic-user",

3. Memory/src/agent-source/integration/templates/memmy-deepseek-harness-plugin.ts (L590-L591)

With inject = [] and the inject: ["@deepseek-ai/dsh-client-ui-conversation"] manifest entry removed, nothing guarantees the conversation-event service exists when apply(ctx) runs. In that case this early return silently disables the optimistic-user bubble for the whole session — no retry once the service is later registered, and no diagnostic (the catch below at least warns). Consider deferring registration (e.g. retry/ctx.get readiness) or emitting a debug/warn log on the null-registry path so the disabled state is observable.


4. Memory/src/agent-source/integration/templates/memmy-deepseek-harness-plugin.ts (L592-L593)

The object literal passed to registry.register was not re-indented after being wrapped in the try block, so kind, target, match, start, etc. sit at the same level as registry.register({. Re-indent the block body by two spaces for readability in the generated client.js.

💡 Suggested Change

Before:

        registry.register({
        kind: "memmy-optimistic-user",

After:

        registry.register({
          kind: "memmy-optimistic-user",

Generated by cloud-assistant via Open Code Review.

@Memtensor-AI

Copy link
Copy Markdown
Collaborator

✅ Automated Test Results: PASSED

All tests passed (6/6 executed). common/smoke: 6/6. Duration: 2s

Branch: codex/dsh-client-safe-update

@Memtensor-AI

Copy link
Copy Markdown
Collaborator

✅ Automated Test Results: PASSED

All tests passed (6/6 executed). common/smoke: 6/6. Duration: 2s

Branch: codex/dsh-client-safe-update

@Memtensor-AI

Copy link
Copy Markdown
Collaborator

✅ Automated Test Results: PASSED

All tests passed (6/6 executed). common/smoke: 6/6. Duration: 2s

Branch: codex/dsh-client-safe-update

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants