Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #408.
The DeepSeek Harness integration writes the
@memmy/memmy-memoryplugin'spackage.jsonwithout aversionfield. DSH's plugin package inventory (@deepseek-ai/dsh-plugin-package-inventory-deepseek) re-reads that manifest before every DeepSeek request and rejects a bare-name plugin row unless bothnameandversionare non-empty, so every DeepSeek request fails during preparation withREQUEST_EXTENSION/plugin-package-inventory-deepseek: ... must declare non-empty name and version. The turn dies before any HTTP call reaches the model.Root cause
createDeepseekHarnessPluginPackageManifest()— the generator behind<DSH_HOME>/profiles/node_modules/@memmy/memmy-memory/package.json— returned a manifest withnamebut noversion.private: trueonly prevents npm publishing; it does not makeversionoptional for consumers that resolve the package by name.Changes
Memory/src/agent-source/integration/templates/memmy-deepseek-harness-plugin.ts: the generated manifest now includesversion: MEMORY_SERVICE_VERSION(currently2.1.2), imported fromsrc/version.ts— the same convention the Memory-side OpenClaw and Hermes targets already use for their generated plugin manifests.App/backend/src/adapters/outbound/skill-writer/templates/memmy-deepseek-harness-plugin.ts: the parallel backend copy now includesversion: MEMMY_VERSION(currently1.1.4), imported fromsrc/project-version.ts— the same convention the backend OpenClaw and Hermes targets already use.App/backend/src/adapters/outbound/skill-writer/deepseek-harness/tests/target.test.ts: the assertion that the generated manifest has noversionis replaced with an assertion that it equalsMEMMY_VERSION.Both generators keep their manifest in sync with their workspace's own release version automatically, so the emitted
versionstays valid and non-empty on every future release without extra bookkeeping.Verification
npx vitest run src/adapters/outbound/skill-writer/deepseek-harness/tests/target.test.ts— 9/9 passed (includes the updated manifest assertion and the stale-manifest detection test).npx vitest run src/adapters/outbound/skill-writer/tests/l3-world-model-adapter-matrix.test.ts— 2/2 passed.npm run typecheck -w @memmy/backend— passed.npm run typecheck -w @memmy/memory— passed."version": "2.1.2"(Memory) and"version": "1.1.4"(backend) in the writtenpackage.json, alongside the existing fields.Note: dependencies were installed with
--ignore-scriptsbecause thebetter-sqlite3prebuild download timed out and node-gyp found no usable Python on the verification machine. The affected code paths and all tests above do not load native modules, so this does not affect the verification results.