Repository navigation
Conversation
fix(metadata): emphasize composable view-based memory
…issue docs(compatibility): explain cordis group display issue
fix(client): use a brain icon for memory navigation
Support only the newest DSH release. Pin every DSH development package to 0.1.7-rc.2 and require it in the published peer ranges. - Build every Config schema with DSH's @deepseek-ai/schemastery fork and drop the upstream schemastery package, the schemastery-live alias and the Cosmokit 1.8.3 fallback that only older hosts needed. - Install the runtime imports that the 0.1.7 UI primitives and client store leave undeclared, so tests that inline the primitives keep resolving. - Remove the minimumReleaseAgeExclude cohort; 0.1.7-rc.2 is past pnpm 11's one-day quarantine. - Speak DSH's Messages protocol in the Headless and WebUI model stubs, verify the 0.1.7 legacy settings import, use a shell-free test preset, and upgrade from v0.5.16, the newest release that runs on this host. - Adapt tests to the 0.1.7 session format, PTC runtime and primitives that measure with ResizeObserver, and derive the DSH family guard from package.json instead of hard-coding one release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Stop passing an authority option to rpc.handle. DSH's Connection service takes two arguments and ignores a third; the API Gateway Remote service keeps the remoteAccess management grant. - Read Session history through snapshotEvents() and eventAt() directly and delete the shim for the 0.1.1 events array. - Always create task Agents with agents.create instead of borrowing a live conversation Agent on hosts without the factory. - Remove the DSH 0.1.0 schema/view projection fields together with the 0.1.0-rc.8 test alias and its cross-generation checkpoint tests. - Narrow LiveMnemonRuntime to the Agent lookup it uses, and correct the subagent diagnostic comments: in-process children publish none. Tests use one shared Session log fake built on the public readers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DSH 0.1.7 replaces settings.register() with Config-backed profile forms, so the branch that reused the older settings service is unreachable. - Mount ProfileMnemonSettings unconditionally and drop createHostSettings, subscribeSettings and the prepared-graph cache that only the synchronous legacy commit needed. Validation still composes a candidate graph and disposes it; commits rebuild from the live profile references. - Add onUpdated to the settings facade contract and require it in MemoryPluginManagement instead of listening for the older settings/updated event. - Type ctx.settings as DSH's own forms, read only by the facade. Tests drive the profile path the way DSH does: candidates go through the owner's internal/config waterfall and commits publish volatile updates. The invalid-root check now asserts the actual filesystem rejection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DSH 0.1.7 moved the conversation turn-tail and assistant-action slots into @deepseek-ai/dsh-client-ui-chat. Depend on it directly for their types instead of reaching them through another package's declarations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DSH 0.1.7 recreates the Agent for startup, resume, clear and compaction and reports why on agent/created; agent/session-start no longer exists. Record that source when installing the lifecycle and drop the dead session-start listeners on roots and children. Every 0.1.7 Session publishes its model-visible surface, so the reminder check and review checkpoint read it directly instead of keeping a session-scoped fallback for hosts without one. The shared session-log fixture now models an append-only surface, and the lifecycle fixture commits admitted steps the way DSH does. Routing guidance registers through inject(['systemPrompt']) so it follows the prompt service's lifecycle instead of a one-time lookup. The V4 codec contract test resolves the codec through the installed DSH host and now always runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Agent Teams review matrix and the plugin manager activation check only ran when an extra installation was supplied, and the Teams matrix still carried the DSH 0.1.5 branch and the removed worker-thread runtime. Both now default to the pinned development host (their variables still select another installation), expect the pinned DSH version, and drop the pre-0.1.7 paths. The activation fixture calls the profile patch reader and reconciler that 0.1.7 always provides. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collapse the compatibility matrix to the pinned DSH 0.1.7-rc.2 host and point older hosts at v0.5.16, the last release verified with them. Install commands, the Agent Teams guidance and the troubleshooting table follow the same baseline, and the review budget text now says that clearing or compacting a context starts a new budget because DSH replaces the Agent. Section anchors stay unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/serve-web-regression.mjs refuses to start unless the installed DSH is 0.1.1-rc.2 and installs a third-party web UI, so it cannot run against the 0.1.7-rc.2 baseline. Remove it together with the test-only panel-event-loss plugin that only it installed. Current WebUI work uses pnpm e2e:serve. The historical PR evidence that mentions the harness does so in code spans only and stays unchanged. Drop the development guide's note about refreshing on the old 0.1.1-rc.2 rollback target and keep its console advice. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/fixtures/reproduce-published-team.mjs asserts DSH 0.1.5-rc.2 and Agent Teams 0.1.5-alpha.2. tests/agent-team-review-host.spec.ts now runs the guarded Team review matrix against an isolated published profile and supersedes it. The idle-review PR evidence mentions the script only inside code blocks and stays unchanged. Point the development guide's idle-review note at the Agent Teams matrix instead of the old rc.2 / alpha.2 packages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/link-dsh-source.mjs still defaults to DSH 0.1.2-alpha.5 and links only part of the DSH development dependencies. A pnpm override with link: covers a source investigation without a bespoke restore record. Remove the script and its dsh:link-source / dsh:restore-registry package scripts. Drop the source overlay section from both development guides. Its idle-review fixture note belongs to the real WebUI fixtures and now ends that section. The vitest dedupe comment no longer mentions source-linked DSH workspaces; dedupe itself stays. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
"bundle": "tsdown" duplicates the first step of "build" and no documentation, CI job, test or script invokes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No Vitest config enables globals and every test imports its helpers from vitest, so the ambient vitest/globals declarations only hid a missing import. tsc -p tsconfig.json --noEmit stays clean without them, and the emitted declarations are unchanged because tsconfig.types.json already limits types to node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nothing in the client graph imports an unscoped cordis package; Cordis is consumed as @deepseek-ai/cordis. Removing the dead pattern leaves all 41 files under lib/ byte-identical (SHA-256 per file before and after). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
auto-capture, light-context and scoped declared @deepseek-ai/cordis in devDependencies with the same ^4.0.1 range as their peerDependency. The other thirteen official plugins rely on the peer alone, which pnpm and npm install automatically. Drop the duplicate declarations. The lockfile only moves each importer's unchanged cordis 4.0.4 entry from devDependencies to the auto-installed peer block. Each plugin's own typecheck, test and build still pass after relinking its node_modules from the frozen lockfile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Starter publishes bin/repair-legacy-session.mjs through "files" and "bin", but the root input pattern omitted bin/, so editing the published repair CLI required neither a changeset nor a version bump. Add bin/ to the pattern and assert that a bin change selects dsh-mnemon. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The development baseline is now DSH 0.1.7-rc.2 and pnpm-workspace.yaml no longer carries a minimumReleaseAgeExclude list, so remove the paragraph about the reviewed rc.1 release-age exclusions and its composition test. Name 0.1.7-rc.2 as the pinned development profile that Root, the Source Client tests and the external consumer share. The UI primitives note still applies to 0.1.7-rc.2, whose manifest lists the Markdown and highlighting packages as development dependencies, so only its version changes. English and Chinese stay aligned. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Agent Teams matrix and the plugin manager activation check run on the pinned host with the ordinary suite; their variables only select another installation. Drop the removed DSH 0.1.5 Teams flag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The CPU budget measures the control-plane cost; the wall fence exists only to catch accidental I/O waits. Healthy runs crossed the old five-second wall limit while other suites loaded the machine, so widen it and keep the CPU budget unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DSH reads dsh.client.inject as package-name ordering edges for client modules. "slots" names a Cordis service, not a package, so the entry never matched a graph row. Each Source client already declares its service dependencies through `export const inject = ['slots', 'locale']` in src/client/ui.tsx. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DSH 0.1.7 ships cordis-plugin-loader 1.0.5, which always provides locate,
import and unwrapExports, so the Source no longer treats import and
unwrapExports as optional or keeps a hand-written default-export unwrap.
A missing Loader still fails with the same error.
The `typeof ctx.get` guards only served a test that passed `{}` as a
Context; that test now uses a real Context. The fiber-entry fallback after
loader.locate was unreachable because locate already walks fiber.entry.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
loader.locate already walks fiber.entry up the fiber chain, so reading fiber.entry.options.id after it could never produce another id. Behavior with a Loader is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apply the changesets from #325, #326 and #328: the Starter moves to 0.5.22 and its 17 pinned components stay as they are. Add the bilingual release notes, the GitHub Release body and the versioned acceptance on DSH 0.2.0-rc.2 and 0.1.7-rc.2, and point the installation, operations and compatibility pages at this release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chore(release): prepare v0.5.22
perf(memory): optimize compaction, query and multi-space recall
chore(release): prepare v0.5.23
The Entities page summed each space's top 20 entities from the Provider status, so most entities were missing and many counts were short, and a selected entity ran Agent recall, whose quality policy keeps at most four medium results: an entity carried by 22 memories listed 5. The rail and the selection now come from one entity index per space, built from the memories the Provider lists (or its own entityIndex), so a count is the number of memories the list shows. Recall still adds related memories, as a separate list without the ones that carry the entity. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A selection reuses the Provider health its space index was checked with for ten seconds, so the memories that carry the entity come from the index without queueing behind the store lock; the rail still checks every space again. Related recall runs per page view and a newer selection in the same view cancels the read the view left, so it no longer waits for recall the user moved on from. The reviewed presentation baseline takes the new entity page classes and copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ndex The UI guide explains that an entity count is the number of memories that carry it and what Related memories adds. The extension guide states how a Provider feeds the Entities page: entities on every listed memory, or the optional entityIndex for a list that stops short, and statistics that change with every write. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The browser bundle may import only Client code, contracts and presentation assets, so the entity key that the Host index and the Client graph share now lives in the Source contracts instead of its own module. The Workbench test fake answers the Entities page's two reads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Synthetic Native spaces in the real WebUI on DSH 0.2.0-rc.2 and 0.1.7-rc.2, main and this branch: rail counts, the memories a selection lists, related memories and click-to-first-card times, with timings on 4 x 500 memories and counts from the export behind the report. The Starter, which bundles the Memory Spaces presentation, measures 1,523,952 bytes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI's packed-plugin job runs each plugin's tests in four parallel standalone installs, where the Entities page tests ran 13 times slower than in the workspace (40.5 s against 3.1 s) and the paging test passed its 5 s limit. The paging test now reads on after a short first page with two reveals instead of eight, the page tests allow 30 s and 5 s waits, and the related-memories test that has taken 5-5.5 s there allows 15 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Related memories cost a recall per space, about 0.5 s each, and every selection ran one. They now stay collapsed under the carrying memories until Find related memories is pressed. Once opened they stay open for the next entities in the browser session until hidden, and hiding and opening them again shows what was found without another recall. When no memory carries a name entered, they open by themselves, since they are all the page can offer. A forgotten memory now leaves both lists at once, and the lists shown stay in place until the refresh that follows replaces them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Entities page record now shows related memories collapsed under the carrying list, found on demand in 0.7-0.8 s on both hosts, and opened by themselves for the next entity once asked for. The first card still shows in 91-99 ms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix(memory-spaces): count and list entities from every memory
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
chore(release): prepare v0.5.24
Bring the DeepSeek Harness plugin workspace from omdsh-dev/dsh-mnemon into this repository, so the memory system and its DSH surface are developed, tested and released from one place. The imported history is main of omdsh-dev/dsh-mnemon at 2296898d (v0.5.24), rewritten so that every path sits under dsh/. Its 1,228 commits keep their authors, dates and messages one to one. Binary media under docs/ (765 files at the tip: galleries, PR evidence and old screenshots) stay in omdsh-dev/dsh-mnemon, which keeps serving them. No tags were imported, so Go module versions are unaffected. The import adds 7.4 MiB of history. Validation: comparing the trees file by file found every non-media file of the source tip under dsh/ with the same blob id, and nothing else.
dsh/ is a TypeScript workspace. A nested go.mod gives it its own module boundary, so the zip that `go install github.com/mnemon-dev/mnemon@latest` downloads still holds only the CLI. A root test keeps that boundary in place: it fails if dsh/go.mod goes missing, names another module, or if Go code appears inside dsh/.
Published manifests now name mnemon-dev/mnemon and their directory inside it (dsh/...). The release checks read the workspace from that directory: - changed paths come from `git diff --relative`, so only the workspace's own files count, in the same form as before; - earlier manifests are read with `git show <rev>:./<path>`, relative to the workspace; - release intent compares against origin/master. The change that brings in the whole workspace (no Starter at the base revision) needs no changeset: it relocates the packages and publishes nothing.
Links into the workspace now resolve in this repository: blob, tree and raw links to omdsh-dev/dsh-mnemon's main branch become dsh/ paths on master, and the "file an issue", triage, security and clone instructions name mnemon-dev/mnemon. Media that stayed in omdsh-dev/dsh-mnemon (README images, galleries, PR evidence) is linked at 2296898d, the commit this workspace was imported from, so those links keep resolving. Links to numbered issues, pull requests, Actions runs and tagged files are history and stay as they were. The README's star badge counts this repository. The documentation check maps dsh/ links on master to local files and rejects new links into the old repository's main branch.
GitHub reads workflows only from the root, so the workspace's CI moves to .github/workflows/dsh-ci.yml with the same jobs: Windows workspace paths, source verification and packed plugins. Every command runs from dsh/, and the workflow runs only when dsh/ or the workflow itself changes. The workspace's publish, pull request and issue workflows stay inactive in dsh/.github, next to the tests that read them, until its release lane and repository rules move to the root. dsh/.github/README.md says so.
The DeepSeek Harness section now says where the plugin is developed and installs a local checkout from dsh/. The development and license sections name the workspace and its MIT license, in English and Chinese. AGENTS.md gives agents the workspace's boundary and where its rules live.
The architecture suite scans the whole repository, and dsh/ tripped two of its rules on purpose-made content: - the single-module check now skips dsh/, whose go.mod declares no Go code and only keeps the workspace out of the module zip (the root layout test guards that boundary); - the hygiene check keeps forbidding credentials and local Host state under dsh/, but leaves the workspace's reviewed PR evidence (logs, traces, JSON records), gallery manifests and tooling configuration to its own contribution rules. Rules for the rest of the repository are unchanged. A new unit test pins what the hygiene check still rejects inside dsh/. Validation: make test passes (21 packages).
12 of 28 tasks
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.
What
Brings the DeepSeek Harness plugin workspace, omdsh-dev/dsh-mnemon, into this repository under
dsh/, with its history. This is the first, mechanical step of putting Mnemon and its DSH surface in one place: no plugin or CLI behavior changes.chore: import dsh-mnemon into dsh/mainat 2296898d (v0.5.24), rewritten so every path sits underdsh/chore: keep the dsh workspace out of the Go moduledsh/go.modkeeps the TypeScript workspace out of the module zip; a root test guards itchore(dsh): release the workspace from its place in mnemondsh/...; release checks read paths from the workspacedocs(dsh): point the workspace's links at mnemon-dev/mnemondsh/onmaster; media left in the old repository is linked at the import commitci: verify the dsh workspace from the repository root.github/workflows/dsh-ci.ymlruns the workspace's former CI fromdsh/docs: describe the dsh workspace in the README and agent guidetest: scope repository rules for the dsh workspacedsh/and leaves its reviewed evidence to its own rulesHow the history was imported
mainof omdsh-dev/dsh-mnemon, 1,228 commits. Authors, dates and messages match the source one to one.dsh/.docs/(galleries, PR evidence, old screenshots; 765 files at the tip) were left out of the history. They stay in omdsh-dev/dsh-mnemon, and the imported docs link to them at 2296898d, so they keep rendering.v0.5.xtags would otherwise become versions of this Go module:go install github.com/mnemon-dev/mnemon@latestwould resolve tov0.5.24.dsh/with the same blob id as in the source, and nothing else was added.Why
Mnemon's current direction is the memory agent from the paper (arXiv 2609.36059), built on dsh-mnemon's composable memory and run on DSH. Developing the CLI and the DSH plugin in one repository gives the project one front door, one place for issues and releases, and lets changes across both land together.
Paired draft in the old repository: omdsh-dev/dsh-mnemon#350 turns it into a pointer to this home. It should merge only after this PR and the first release from here.
Validation
make testgolang.org/x/mod/zip,mastervs this branch)dsh/master, this branch)typecheck,verify:build, SDK entry builds,verify:package, public entriesvitest runverify:docsverify:pluginsverify:headlessdsh/hereThe dsh checks ran with Node 24.19 and pnpm 11.25, the CI commands run from
dsh/.Before this can merge
This draft moves the code and the CI. These steps are left for review and for repository settings:
dsh-mnemon@0.5.25), never barev*, which is reserved for the CLI and the Go module.dsh/.github/workflows/publish.ymlmoves to the root withworking-directory: dsh.npm-releaseenvironment with a required reviewer and theNPM_TOKENsecret.dsh/.githubuntil they are merged with this repository's own.git format-patchplusgit am --directory=dshapplies them underdsh/.dsh/.dsh/README.mdstill point at omdsh-dev/dsh-mnemon; the owner decides when to move them.Checklist
make test)make test-integration, when affected): not affected, no Go behavior changesdocs/zh/README.md, AGENTS.md)🤖 Generated with Claude Code