dsh-mnemon 0.5.16 → 0.5.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,6 +11,10 @@ export interface MemoryTopologyDefinition {
11
11
  }>;
12
12
  }
13
13
  export interface MemoryCompositionStatus {
14
+ /** Whether a composition serves new turns. A rejected change can leave the previous one serving. */
15
+ serving: boolean;
16
+ /** The main Strategy composing the serving composition, which a fallback can make differ from the selected one. */
17
+ strategyTypeId?: string;
14
18
  evaluation: import('../core/contracts/index.ts').MemoryCompositionEvaluationReport;
15
19
  sources: MemorySourceManagementInstance[];
16
20
  configuration: ResolvedMemoryTopologyConfig;
@@ -104,7 +108,7 @@ export type RpcResult<T = JsonValue> = {
104
108
  error: RpcError;
105
109
  };
106
110
  /** Public DSH browser RPC face plus the transport boundary needed to gate local-only writes. */
107
- export type ClientConnectionHandle = Pick<DshClientConnectionHandle, 'rpc'> & Partial<Pick<DshClientConnectionHandle, 'isLoopback'>>;
111
+ export type ClientConnectionHandle = Pick<DshClientConnectionHandle, 'rpc' | 'isLoopback'>;
108
112
  export interface ClientSettingsSnapshot<T> {
109
113
  status: 'loading' | 'ready' | 'unavailable';
110
114
  value?: T;
@@ -117,11 +121,7 @@ export interface ClientSettingsSnapshot<T> {
117
121
  export interface ClientSettingsScope<T> {
118
122
  getSnapshot(): ClientSettingsSnapshot<T>;
119
123
  subscribe(listener: () => void): () => void;
120
- set(field: string, value: unknown): Promise<void>;
121
- unset(field: string): Promise<void>;
122
- setPath(path: string[], value: unknown): Promise<void>;
123
- unsetPath(path: string[]): Promise<void>;
124
- mutate?(ops: SettingsOperation[]): Promise<void>;
124
+ mutate(ops: SettingsOperation[]): Promise<void>;
125
125
  }
126
126
  export type SettingsOperation = {
127
127
  op: 'set';
@@ -220,7 +220,7 @@ export interface Config {
220
220
  displayMode?: MnemonDisplayMode | 'buildin';
221
221
  tabEnabled?: boolean;
222
222
  writeEnabled?: boolean;
223
- /** DSH rc.2 management-channel authority; ignored by DSH 0.1.2-alpha.1. */
223
+ /** Remote management grant for paired pages; loopback pages keep full access. */
224
224
  remoteAccess?: 'read-only' | 'trusted-host';
225
225
  lifecycleEnabled?: boolean;
226
226
  recallMode?: 'guided' | 'off';
@@ -297,7 +297,7 @@ export interface ResolvedConfig {
297
297
  displayMode: MnemonDisplayMode;
298
298
  tabEnabled: boolean;
299
299
  writeEnabled: boolean;
300
- /** DSH rc.2 management-channel authority; ignored by DSH 0.1.2-alpha.1. */
300
+ /** Remote management grant for paired pages; loopback pages keep full access. */
301
301
  remoteAccess: 'read-only' | 'trusted-host';
302
302
  lifecycleEnabled: boolean;
303
303
  recallMode: 'guided' | 'off';
@@ -523,6 +523,8 @@ export interface StatusView {
523
523
  };
524
524
  }
525
525
  export type MnemonPackComponent = 'runtime' | 'documents' | 'memory-spaces';
526
+ /** The Sources that keep their data in Mnemon's data directory, in the order a backup lists them. */
527
+ export declare const MNEMON_PACK_COMPONENTS: readonly ["runtime", "documents", "memory-spaces"];
526
528
  export type MnemonPackScope = 'full' | MnemonPackComponent;
527
529
  export type MnemonPackImportMode = 'merge' | 'replace';
528
530
  export interface MnemonPackComponentSummary {
@@ -543,6 +545,12 @@ export interface MnemonPackManifest {
543
545
  components: MnemonPackComponent[];
544
546
  summary: MnemonPackComponentSummary[];
545
547
  }
548
+ /** Where memory lives now, and where the global scope keeps it when no directory is chosen. */
549
+ export interface MnemonPackTarget {
550
+ root: string;
551
+ scope: StorageScopeKind;
552
+ defaultRoot: string;
553
+ }
546
554
  export interface MnemonPackExport {
547
555
  fileName: string;
548
556
  mimeType: 'application/zip';
@@ -8,9 +8,14 @@ export interface MemoryPluginPreference {
8
8
  enabled: boolean;
9
9
  config: Record<string, MemoryJsonValue>;
10
10
  }
11
+ /** Saved form: enablement lives in the DSH profile patch once the plugin manager can write it. */
12
+ export interface MemoryPluginSavedPreference {
13
+ enabled?: boolean;
14
+ config: Record<string, MemoryJsonValue>;
15
+ }
11
16
  export interface MemoryViewPreferences {
12
17
  strategyTypeId?: string;
13
- entries: Record<string, MemoryPluginPreference>;
18
+ entries: Record<string, MemoryPluginSavedPreference>;
14
19
  }
15
20
  export interface MemoryPluginEntryView {
16
21
  entryId: string;
@@ -4,6 +4,7 @@ export { defineMemoryPlugin, defineMemorySource, defineMemoryStrategy, defineMem
4
4
  export { record as memoryInputRecord, text as memoryInputText, integer as memoryInputInteger, stringArray as memoryInputStringArray, truncate as truncateMemoryText, receipt as createMemoryMutationReceipt, migrationLineage as memoryInputMigrationLineage } from './input.ts';
5
5
  export { memoryConfigurationDigest } from './input.ts';
6
6
  export { defineMemoryStrategyConfiguration } from './strategy-configuration.ts';
7
+ export { defineMemoryViewExtension, memoryViewExtensionValues, validateMemoryViewExtension } from './view-extensions.ts';
7
8
  export type { MemoryStrategyConfiguration, MemoryStrategyConfigurationField, MemoryLocalizedText } from './strategy-configuration.ts';
8
9
  export { withMemoryStorageLock } from './storage-lock.ts';
9
- export type { ComposableMemoryView, MemoryActionOffer, MemoryCompositionEvaluationReport, MemoryEvidence, MemoryMutationReceipt, MemoryPluginDescriptor, MemoryPluginLocalizedText, MemoryPluginProvidedCapability, MemoryPluginRole, MemoryMutationCompletion, MemoryReadGrant, MemorySourceDefinition, MemorySourceFacts, MemoryAvailableSource, MemorySourceManifest, MemorySourcePresentation, MemorySourcePresentationItem, MemorySourceRuntime, MemorySourceViewContext, MemoryStrategyDefinition, MemoryStrategyExtensionDefinition, MemoryStrategyExtensionManifest, MemoryStrategyContribution, MemoryStrategyTurn, MemoryStrategyReadRequest, MemoryStrategyRead, MemoryStrategyManifest, MemoryViewRequest, MemoryViewSourcePresentation, MemoryViewSpec, MemoryViewGuidance, } from "../core/contracts/index.ts";
10
+ export type { ComposableMemoryView, MemoryActionOffer, MemoryCompositionEvaluationReport, MemoryEvidence, MemoryMutationReceipt, MemoryPluginDescriptor, MemoryPluginLocalizedText, MemoryPluginProvidedCapability, MemoryPluginRole, MemoryMutationCompletion, MemoryReadGrant, MemorySourceDefinition, MemorySourceFacts, MemoryAvailableSource, MemorySourceManifest, MemorySourcePresentation, MemorySourcePresentationItem, MemorySourceRuntime, MemorySourceViewContext, MemoryStrategyDefinition, MemoryStrategyExtensionDefinition, MemoryStrategyExtensionManifest, MemoryStrategyContribution, MemoryStrategyTurn, MemoryStrategyReadRequest, MemoryStrategyRead, MemoryStrategyManifest, MemoryViewRequest, MemoryViewSourcePresentation, MemoryViewSpec, MemoryViewGuidance, MemoryViewExtensionSlot, MemoryViewExtensionValues, } from "../core/contracts/index.ts";
@@ -20,6 +20,7 @@ export interface MemoryTestSource {
20
20
  export interface MemoryTestOptions {
21
21
  strategyInstanceKey?: string;
22
22
  strategyTypeId?: string;
23
+ strategyFallback?: 'sole-strategy';
23
24
  sourceConfiguration?: (source: MemoryTestSource) => Readonly<Record<string, MemoryJsonValue>>;
24
25
  sourceCapabilities?: (source: MemoryTestSource) => readonly MemoryCapability[];
25
26
  now?: () => Date;
@@ -0,0 +1,12 @@
1
+ import { type MemoryAvailableSource, type MemoryJsonValue, type MemoryStrategyContribution, type MemoryStrategyExtensionDefinition, type MemoryViewExtensionSlot, type MemoryViewExtensionValues, type MemoryViewRequest } from '../core/contracts/index.ts';
2
+ /** Validate one standard View extension value; a Strategy validates again before interpreting it. */
3
+ export declare function validateMemoryViewExtension<K extends MemoryViewExtensionSlot>(slot: K, value: MemoryJsonValue): MemoryViewExtensionValues[K];
4
+ /** Standard values contributed to one composition; each slot has at most one owner. */
5
+ export declare function memoryViewExtensionValues(contributions: readonly MemoryStrategyContribution[]): Partial<MemoryViewExtensionValues>;
6
+ /** An extension for whichever selected Strategy declares its standard slot. */
7
+ export declare function defineMemoryViewExtension<K extends MemoryViewExtensionSlot>(definition: {
8
+ typeId: string;
9
+ packageName: string;
10
+ slot: K;
11
+ contribute(request: MemoryViewRequest, sources: readonly MemoryAvailableSource[]): MemoryViewExtensionValues[K];
12
+ }): MemoryStrategyExtensionDefinition;
package/locale/zh.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "meta": {
3
- "title": "三级记忆 (dsh-mnemon)",
4
- "description": "三级记忆系统:召回 / 写入 / 记忆页签(策略配置在 profile patch 层)"
3
+ "title": "可组合记忆 (dsh-mnemon)",
4
+ "description": "面向 DeepSeek Harness 的可组合视图记忆。记忆来源与策略可插拔,开箱即用提供分层记忆。"
5
5
  }
6
6
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsh-mnemon",
3
- "version": "0.5.16",
4
- "description": "Composable three-tier memory control plane for DeepSeek Harness: persistent runtime context, searchable project documents, pluggable long-term memory, guarded strategies, WebUI, and headless tools.",
3
+ "version": "0.5.17",
4
+ "description": "Composable, view-based memory for DeepSeek Harness. Pluggable sources and strategies, with layered memory out of the box.",
5
5
  "keywords": [
6
6
  "deepseek-harness",
7
7
  "deepseek-harness-plugin",
@@ -122,7 +122,6 @@
122
122
  },
123
123
  "scripts": {
124
124
  "build": "tsdown && tsc -p tsconfig.types.json && node scripts/link-bundle-declarations.mjs",
125
- "bundle": "tsdown",
126
125
  "prepublishOnly": "pnpm run verify",
127
126
  "lint:package": "publint --strict && attw --pack . --profile esm-only --quiet",
128
127
  "typecheck": "tsc -p tsconfig.json --noEmit",
@@ -139,76 +138,76 @@
139
138
  "release:intent": "node scripts/check-release-intent.mjs",
140
139
  "release:status": "changeset status",
141
140
  "release:version": "changeset version && node scripts/sync-release-metadata.mjs && pnpm install --lockfile-only",
142
- "dsh:link-source": "node scripts/link-dsh-source.mjs",
143
- "dsh:restore-registry": "node scripts/link-dsh-source.mjs --restore",
144
141
  "release:check": "node scripts/release.mjs --check"
145
142
  },
146
143
  "dependencies": {
147
- "@deepseek-ai/cosmokit": "^1.8.4",
148
- "dsh-mnemon-provider-byterover": "0.5.4",
149
- "dsh-mnemon-provider-hindsight": "0.5.4",
150
- "dsh-mnemon-provider-holographic": "0.5.4",
151
- "dsh-mnemon-provider-honcho": "0.5.4",
152
- "dsh-mnemon-provider-mem0": "0.5.4",
153
- "dsh-mnemon-provider-mnemon-native": "0.5.5",
154
- "dsh-mnemon-provider-openviking": "0.5.6",
155
- "dsh-mnemon-provider-retaindb": "0.5.4",
156
- "dsh-mnemon-provider-supermemory": "0.5.4",
157
- "dsh-mnemon-source-documents": "0.5.6",
158
- "dsh-mnemon-source-memory-spaces": "0.5.10",
159
- "dsh-mnemon-source-runtime": "0.5.9",
160
- "dsh-mnemon-strategy-auto-capture": "0.5.4",
161
- "dsh-mnemon-strategy-default-three-tier": "0.5.6",
162
- "dsh-mnemon-strategy-light-context": "0.5.4",
163
- "dsh-mnemon-strategy-scoped": "0.5.4",
144
+ "@deepseek-ai/cosmokit": "^1.8.5",
145
+ "@deepseek-ai/schemastery": "^3.18.4",
146
+ "dsh-mnemon-provider-byterover": "0.5.5",
147
+ "dsh-mnemon-provider-hindsight": "0.5.5",
148
+ "dsh-mnemon-provider-holographic": "0.5.5",
149
+ "dsh-mnemon-provider-honcho": "0.5.5",
150
+ "dsh-mnemon-provider-mem0": "0.5.5",
151
+ "dsh-mnemon-provider-mnemon-native": "0.5.6",
152
+ "dsh-mnemon-provider-openviking": "0.5.7",
153
+ "dsh-mnemon-provider-retaindb": "0.5.5",
154
+ "dsh-mnemon-provider-supermemory": "0.5.5",
155
+ "dsh-mnemon-source-documents": "0.5.7",
156
+ "dsh-mnemon-source-memory-spaces": "0.5.11",
157
+ "dsh-mnemon-source-runtime": "0.5.10",
158
+ "dsh-mnemon-strategy-auto-capture": "0.5.5",
159
+ "dsh-mnemon-strategy-default-three-tier": "0.5.7",
160
+ "dsh-mnemon-strategy-general": "0.5.1",
161
+ "dsh-mnemon-strategy-light-context": "0.5.5",
162
+ "dsh-mnemon-strategy-scoped": "0.5.5",
164
163
  "fflate": "^0.8.3",
165
- "schemastery": "^3.18.0",
166
- "schemastery-live": "npm:@deepseek-ai/schemastery@^3.18.3",
167
164
  "yaml": "^2.9.0",
168
165
  "zod": "^4.4.3"
169
166
  },
170
167
  "peerDependencies": {
171
- "@deepseek-ai/cordis": "^4.0.1",
172
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-alpha.1",
173
- "@deepseek-ai/dsh-typert-protocol": "^0.1.5-rc.1 || ^0.1.6-alpha.2 || ^0.1.7-alpha.1",
168
+ "@deepseek-ai/cordis": "^4.0.4",
169
+ "@deepseek-ai/dsh-client-ui-primitives": "^0.1.7-rc.2",
170
+ "@deepseek-ai/dsh-typert-protocol": "^0.1.7-rc.2",
174
171
  "react": "^18.2.0",
175
172
  "react-dom": "^18.2.0"
176
173
  },
177
174
  "devDependencies": {
178
175
  "@arethetypeswrong/cli": "^0.18.5",
179
176
  "@changesets/cli": "^2.31.1",
180
- "@deepseek-ai/cordis": "^4.0.2",
181
- "@deepseek-ai/dsh": "0.1.5-rc.1",
182
- "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
183
- "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.1",
184
- "@deepseek-ai/dsh-api-gateway": "0.1.5-rc.1",
185
- "@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
186
- "@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
187
- "@deepseek-ai/dsh-client-store": "0.1.5-rc.1",
188
- "@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.1",
189
- "@deepseek-ai/dsh-client-ui-layout": "0.1.5-rc.1",
190
- "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.1",
191
- "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
192
- "@deepseek-ai/dsh-client-ui-session": "0.1.5-rc.1",
193
- "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
194
- "@deepseek-ai/dsh-client-ui-sidebar": "0.1.5-rc.1",
195
- "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
196
- "@deepseek-ai/dsh-client-ui-tool": "0.1.5-rc.1",
197
- "@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
198
- "@deepseek-ai/dsh-llm": "0.1.5-rc.1",
199
- "@deepseek-ai/dsh-session": "0.1.5-rc.1",
200
- "@deepseek-ai/dsh-session-format-v0-to-v1": "0.1.5-rc.1",
201
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.5-rc.1",
202
- "@deepseek-ai/dsh-session-projection": "0.1.5-rc.1",
203
- "@deepseek-ai/dsh-session-projection-legacy": "npm:@deepseek-ai/dsh-session-projection@0.1.0-rc.8",
204
- "@deepseek-ai/dsh-session-query": "0.1.5-rc.1",
205
- "@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
206
- "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.5-rc.1",
207
- "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
208
- "@deepseek-ai/dsh-tools": "0.1.5-rc.1",
209
- "@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.1",
210
- "@deepseek-ai/dsh-typert-registry": "0.1.5-rc.1",
211
- "@deepseek-ai/schemastery": "3.18.2",
177
+ "@deepseek-ai/cordis": "^4.0.4",
178
+ "@deepseek-ai/dsh": "0.1.7-rc.2",
179
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
180
+ "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2",
181
+ "@deepseek-ai/dsh-api-gateway": "0.1.7-rc.2",
182
+ "@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
183
+ "@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
184
+ "@deepseek-ai/dsh-client-store": "0.1.7-rc.2",
185
+ "@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2",
186
+ "@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
187
+ "@deepseek-ai/dsh-client-ui-layout": "0.1.7-rc.2",
188
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.1.7-rc.2",
189
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2",
190
+ "@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
191
+ "@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2",
192
+ "@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
193
+ "@deepseek-ai/dsh-client-ui-sidebar": "0.1.7-rc.2",
194
+ "@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
195
+ "@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2",
196
+ "@deepseek-ai/dsh-invariants": "0.1.7-rc.2",
197
+ "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
198
+ "@deepseek-ai/dsh-session": "0.1.7-rc.2",
199
+ "@deepseek-ai/dsh-session-format-v0-to-v1": "0.1.7-rc.2",
200
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2",
201
+ "@deepseek-ai/dsh-session-projection": "0.1.7-rc.2",
202
+ "@deepseek-ai/dsh-session-query": "0.1.7-rc.2",
203
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
204
+ "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2",
205
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
206
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
207
+ "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2",
208
+ "@deepseek-ai/dsh-typert-registry": "0.1.7-rc.2",
209
+ "@deepseek-ai/dsh-util-code-language": "0.1.7-rc.2",
210
+ "@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2",
212
211
  "@shikijs/langs": "^4.3.1",
213
212
  "@testing-library/react": "^16.3.0",
214
213
  "@types/node": "^22.0.0",
@@ -216,7 +215,8 @@
216
215
  "@types/react-dom": "^18.3.0",
217
216
  "anser": "^2.3.5",
218
217
  "clsx": "^2.1.1",
219
- "cosmokit-legacy": "npm:@deepseek-ai/cosmokit@1.8.3",
218
+ "diff": "^9.0.0",
219
+ "immer": "^10.1.1",
220
220
  "jsdom": "^26.1.0",
221
221
  "katex": "^0.16.47",
222
222
  "lightningcss": "^1.29.0",
@@ -236,9 +236,11 @@
236
236
  "react-dom": "^18.2.0",
237
237
  "semver": "^7.8.5",
238
238
  "shiki": "^4.3.1",
239
+ "simple-icons": "16.31.0",
239
240
  "tsdown": "^0.22.0",
240
241
  "typescript": "^5.9.0",
241
- "vitest": "^3.2.0"
242
+ "vitest": "^3.2.0",
243
+ "zustand": "~4.4.7"
242
244
  },
243
245
  "bin": {
244
246
  "dsh-mnemon-repair-session": "bin/repair-legacy-session.mjs"
@@ -1,35 +0,0 @@
1
- //#region src/core/contracts/plugin.ts
2
- /** Declarative identity and graph relations shared by every Mnemon plugin. */
3
- const MEMORY_PLUGIN_API_VERSION = "dsh-mnemon/plugin/v1";
4
- //#endregion
5
- //#region src/core/contracts/view.ts
6
- const COMPOSABLE_MEMORY_API_VERSION = "dsh-mnemon/v1";
7
- const DEFAULT_MEMORY_VIEW_BUDGET = Object.freeze({
8
- maxProjectionCharacters: 65536,
9
- maxRoutes: 16,
10
- maxActions: 16,
11
- maxEvidenceResults: 16,
12
- maxEvidenceCharacters: 16384
13
- });
14
- //#endregion
15
- //#region src/core/contracts/index.ts
16
- const MEMORY_CAPABILITIES = [
17
- "status",
18
- "project",
19
- "recall",
20
- "search",
21
- "read",
22
- "browse",
23
- "write",
24
- "archive",
25
- "graph",
26
- "related",
27
- "link",
28
- "forget",
29
- "maintain",
30
- "export",
31
- "import"
32
- ];
33
- const MEMORY_SOURCE_MODES = ["eager", "routed"];
34
- //#endregion
35
- export { MEMORY_PLUGIN_API_VERSION as a, DEFAULT_MEMORY_VIEW_BUDGET as i, MEMORY_SOURCE_MODES as n, COMPOSABLE_MEMORY_API_VERSION as r, MEMORY_CAPABILITIES as t };