dsh-mnemon 0.5.37 → 0.5.39

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.
@@ -1265,6 +1265,8 @@ var MemoryRuntime = class {
1265
1265
  disposalFailures = [];
1266
1266
  batchDepth = 0;
1267
1267
  batchSnapshot;
1268
+ committedListeners = /* @__PURE__ */ new Set();
1269
+ contributionsPending = false;
1268
1270
  reconciliations = /* @__PURE__ */ new Map();
1269
1271
  /** Host assembly transaction: existing leases stay served until all Fibers settle. */
1270
1272
  async batch(operation) {
@@ -1278,12 +1280,22 @@ var MemoryRuntime = class {
1278
1280
  const pending = [...this.reconciliations];
1279
1281
  this.reconciliations.clear();
1280
1282
  for (const [host, snapshot] of pending) host.reconcile(snapshot);
1283
+ if (this.contributionsPending) {
1284
+ this.contributionsPending = false;
1285
+ this.notifyCommitted();
1286
+ }
1281
1287
  }
1282
1288
  }
1283
1289
  }
1284
1290
  installContributions(value) {
1285
1291
  if (this.closed) throw new Error("Memory Runtime is disposed");
1286
- return this.contributions.install(value);
1292
+ const release = this.contributions.install(value);
1293
+ this.notifyCommitted();
1294
+ return () => {
1295
+ const revision = this.contributions.snapshot().revision;
1296
+ release();
1297
+ if (this.contributions.snapshot().revision !== revision) this.notifyCommitted();
1298
+ };
1287
1299
  }
1288
1300
  contributionSnapshot() {
1289
1301
  return this.contributions.snapshot();
@@ -1291,6 +1303,25 @@ var MemoryRuntime = class {
1291
1303
  onContributionsChanged(listener) {
1292
1304
  return this.contributions.subscribe(listener);
1293
1305
  }
1306
+ /** Global Host consumers see the baseline until the assembly transaction settles. */
1307
+ committedContributionSnapshot() {
1308
+ return this.batchSnapshot ?? this.contributions.snapshot();
1309
+ }
1310
+ onCommittedContributionsChanged(listener) {
1311
+ this.committedListeners.add(listener);
1312
+ return () => {
1313
+ this.committedListeners.delete(listener);
1314
+ };
1315
+ }
1316
+ notifyCommitted() {
1317
+ if (this.closed) return;
1318
+ if (this.batchDepth) {
1319
+ this.contributionsPending = true;
1320
+ return;
1321
+ }
1322
+ const snapshot = this.contributions.snapshot();
1323
+ for (const listener of [...this.committedListeners]) listener(snapshot);
1324
+ }
1294
1325
  /** Attach one Host runtime graph to the current definition set. */
1295
1326
  attachGeneration(options = {}) {
1296
1327
  if (this.closed) throw new Error("Memory Runtime is disposed");
@@ -1331,6 +1362,7 @@ var MemoryRuntime = class {
1331
1362
  dispose() {
1332
1363
  if (this.disposal !== void 0) return this.disposal;
1333
1364
  this.closed = true;
1365
+ this.committedListeners.clear();
1334
1366
  this.disposal = Promise.allSettled([...this.generationAttachments].map((attachment) => attachment.dispose())).then(() => {
1335
1367
  if (this.disposalFailures.length > 0) throw new AggregateError(this.disposalFailures, "Memory Runtime cleanup failed");
1336
1368
  });
@@ -5,7 +5,7 @@ var name = "dsh-mnemon";
5
5
  var dependencies = {
6
6
  "@deepseek-ai/cosmokit": "^1.8.5",
7
7
  "@deepseek-ai/schemastery": "^3.18.4",
8
- "dsh-mnemon-provider-byterover": "0.5.5",
8
+ "dsh-mnemon-provider-byterover": "0.5.6",
9
9
  "dsh-mnemon-provider-hindsight": "0.5.7",
10
10
  "dsh-mnemon-provider-holographic": "0.5.7",
11
11
  "dsh-mnemon-provider-honcho": "0.5.5",
@@ -14,10 +14,10 @@ var dependencies = {
14
14
  "dsh-mnemon-provider-openviking": "0.5.10",
15
15
  "dsh-mnemon-provider-retaindb": "0.5.6",
16
16
  "dsh-mnemon-provider-supermemory": "0.5.5",
17
- "dsh-mnemon-source-documents": "0.5.11",
18
- "dsh-mnemon-source-memory-spaces": "0.5.24",
19
- "dsh-mnemon-source-runtime": "0.5.16",
20
- "dsh-mnemon-source-skills": "0.5.4",
17
+ "dsh-mnemon-source-documents": "0.5.12",
18
+ "dsh-mnemon-source-memory-spaces": "0.5.25",
19
+ "dsh-mnemon-source-runtime": "0.5.17",
20
+ "dsh-mnemon-source-skills": "0.5.6",
21
21
  "dsh-mnemon-strategy-auto-capture": "0.5.5",
22
22
  "dsh-mnemon-strategy-default-three-tier": "0.5.11",
23
23
  "dsh-mnemon-strategy-general": "0.5.1",
package/lib/starter.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as prepareStarterResolution } from "./starter-resolution-DYeYvfwr.js";
1
+ import { t as prepareStarterResolution } from "./starter-resolution-C3yJawlA.js";
2
2
  //#region src/starter.ts
3
3
  const name = "dsh-mnemon-starter";
4
4
  const provide = ["mnemonStarterReady"];
package/lib/testing.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as provideMemoryRuntime } from "./runtime-zuuBe8x1.js";
1
+ import { t as provideMemoryRuntime } from "./runtime-0u6dOiF9.js";
2
2
  import { DEFAULT_MEMORY_VIEW_BUDGET } from "./contracts.js";
3
3
  import { c as jsonClone } from "./definitions-DU7MLBhu.js";
4
4
  import { Context } from "@deepseek-ai/cordis";
@@ -12,6 +12,9 @@ export declare const zh: {
12
12
  'common.showMore': string;
13
13
  'header.backToConversation': string;
14
14
  'header.configure': string;
15
+ 'header.noticeSummary': string;
16
+ 'header.noticeRemoteReadOnly': string;
17
+ 'header.noticeIdleReview': string;
15
18
  'header.compositionHint': string;
16
19
  'header.checking': string;
17
20
  'header.connected': string;
@@ -130,6 +133,13 @@ export declare const zh: {
130
133
  'status.reviewFailedDetail': string;
131
134
  'status.reviewPartial': string;
132
135
  'status.reviewTeamPaused': string;
136
+ 'status.reviewToolAccessPaused': string;
137
+ 'status.reviewWatermarkUsage': string;
138
+ 'status.reviewWatermarkNext': string;
139
+ 'status.reviewWatermarkPaused': string;
140
+ 'status.reviewWatermarkRecovery': string;
141
+ 'config.reviewPersistWatermark': string;
142
+ 'config.reviewPersistWatermarkHint': string;
133
143
  'status.reviewRun': string;
134
144
  'status.reviewContextWindow': string;
135
145
  'config.reviewTitle': string;
@@ -769,6 +779,11 @@ export declare const zh: {
769
779
  'skills.allowCreateHint': string;
770
780
  'skills.allowUpdate': string;
771
781
  'skills.allowUpdateHint': string;
782
+ 'skills.targetScope': string;
783
+ 'skills.targetScopeHint': string;
784
+ 'skills.targetScope.user': string;
785
+ 'skills.targetScope.project': string;
786
+ 'skills.targetScope.storage': string;
772
787
  'skills.evolutionHint': string;
773
788
  'skills.autoBacktest': string;
774
789
  'skills.autoBacktestHint': string;
@@ -10,6 +10,8 @@ export declare function MemorySourcePageFrame(props: {
10
10
  export declare function createMemorySourcePageClient(management: MnemonSourceManagementClient): {
11
11
  canAssist: (operation: string) => boolean;
12
12
  assist: <T>(operation: string, input: MemoryJsonValue, confirmed: boolean) => Promise<T>;
13
- read: <T>(operation: string, input?: MemoryJsonValue) => Promise<T>;
13
+ read: <T>(operation: string, input?: MemoryJsonValue, options?: {
14
+ coalesce?: boolean;
15
+ }) => Promise<T>;
14
16
  mutate: <T>(operation: string, input: MemoryJsonValue, confirmed: true) => Promise<T>;
15
17
  };
@@ -11,7 +11,10 @@ export interface MnemonSourceManagementClient {
11
11
  confirmed: boolean;
12
12
  }): Promise<MemorySourceManagementResult>;
13
13
  };
14
- read(operation: string, input?: MemoryJsonValue): Promise<MemorySourceManagementResult>;
14
+ /** Automatic inspections may share an identical pending read; explicit actions remain fresh by default. */
15
+ read(operation: string, input?: MemoryJsonValue, options?: {
16
+ coalesce?: boolean;
17
+ }): Promise<MemorySourceManagementResult>;
15
18
  mutate(operation: string, input: MemoryJsonValue, options: {
16
19
  expectedRevision?: string;
17
20
  confirmed: true;
@@ -36,6 +39,8 @@ export interface MemorySourcePageProps {
36
39
  management?: MnemonSourceManagementClient;
37
40
  /** Presentation hint only; the Host still authenticates every mutation. */
38
41
  writable?: boolean;
42
+ /** False while a retained panel is hidden; pause polling and focus refreshes. Defaults to true. */
43
+ active?: boolean;
39
44
  sessionId?: string;
40
45
  workspaceId?: string;
41
46
  locale: string;
@@ -39,7 +39,7 @@ export declare const MNEMON_SYNC_CHANNEL = "/dsh-mnemon-sync";
39
39
  export declare const MNEMON_SYNC_TOKEN_ENV = "MNEMON_SYNC_GIT_TOKEN";
40
40
  /**
41
41
  * What a storage root publishes before anyone configures it: the branch, the
42
- * directory inside it, and the commit identity used when no author is set. They
42
+ * directory inside it, and the fallback when no author or Git identity is set. They
43
43
  * are declared with the wire constants because the settings form shows the same
44
44
  * defaults the Host would apply to an empty field.
45
45
  */
@@ -233,6 +233,7 @@ export type MnemonDisplayMode = 'sidebar' | 'builtin';
233
233
  export declare const DEFAULT_IDLE_REVIEW: {
234
234
  enabled: true;
235
235
  runtimeMemory: true;
236
+ persistWatermark: false;
236
237
  provider: "spawn";
237
238
  fallback: "spawn";
238
239
  agentTeams: "pause";
@@ -245,6 +246,8 @@ export interface ResolvedIdleReviewConfig {
245
246
  enabled: boolean;
246
247
  /** Whether review may change USER.md and MEMORY.md; it can create Documents either way. */
247
248
  runtimeMemory: boolean;
249
+ /** Preserve attempt quota and cooling time for the same persisted parent session. */
250
+ persistWatermark: boolean;
248
251
  provider: 'spawn' | 'fork';
249
252
  /** Applies only before a child starts; a failed run is never replayed. */
250
253
  fallback: 'spawn' | 'skip';
@@ -374,6 +377,8 @@ export interface ResolvedSkillsConfig {
374
377
  allowCreate: boolean;
375
378
  /** Allow reviews to suggest changes to existing skills. */
376
379
  allowUpdate: boolean;
380
+ /** Destination for new skill proposals; user preserves the pre-setting behavior. */
381
+ targetScope: 'storage' | 'user' | 'project';
377
382
  /** Backtest a draft against the current version as soon as it is written. */
378
383
  autoBacktest: boolean;
379
384
  /** The one-line skills bar under a finished turn. */
@@ -620,7 +625,13 @@ export interface LifecycleAgentSnapshot {
620
625
  lastReviewScore?: number;
621
626
  lastReviewDocumentIds?: string[];
622
627
  idleReviewAttempts?: number;
623
- idleReviewBlocked?: 'agent-team';
628
+ idleReviewBlocked?: 'agent-team' | 'tool-access';
629
+ idleReviewWatermark?: {
630
+ state: 'ready' | 'error';
631
+ restoredAttempts: number;
632
+ maxPerSession: number;
633
+ error?: string;
634
+ };
624
635
  nextReviewAt?: string;
625
636
  lastReviewFailure?: IdleReviewFailure;
626
637
  lastAt?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-mnemon",
3
- "version": "0.5.37",
3
+ "version": "0.5.39",
4
4
  "description": "Composable, view-based context for DeepSeek Harness. Pluggable sources and strategies, with layered memory and self-evolving skills out of the box.",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -155,7 +155,7 @@
155
155
  "dependencies": {
156
156
  "@deepseek-ai/cosmokit": "^1.8.5",
157
157
  "@deepseek-ai/schemastery": "^3.18.4",
158
- "dsh-mnemon-provider-byterover": "0.5.5",
158
+ "dsh-mnemon-provider-byterover": "0.5.6",
159
159
  "dsh-mnemon-provider-hindsight": "0.5.7",
160
160
  "dsh-mnemon-provider-holographic": "0.5.7",
161
161
  "dsh-mnemon-provider-honcho": "0.5.5",
@@ -164,10 +164,10 @@
164
164
  "dsh-mnemon-provider-openviking": "0.5.10",
165
165
  "dsh-mnemon-provider-retaindb": "0.5.6",
166
166
  "dsh-mnemon-provider-supermemory": "0.5.5",
167
- "dsh-mnemon-source-documents": "0.5.11",
168
- "dsh-mnemon-source-memory-spaces": "0.5.24",
169
- "dsh-mnemon-source-runtime": "0.5.16",
170
- "dsh-mnemon-source-skills": "0.5.4",
167
+ "dsh-mnemon-source-documents": "0.5.12",
168
+ "dsh-mnemon-source-memory-spaces": "0.5.25",
169
+ "dsh-mnemon-source-runtime": "0.5.17",
170
+ "dsh-mnemon-source-skills": "0.5.6",
171
171
  "dsh-mnemon-strategy-auto-capture": "0.5.5",
172
172
  "dsh-mnemon-strategy-default-three-tier": "0.5.11",
173
173
  "dsh-mnemon-strategy-general": "0.5.1",
@@ -188,39 +188,39 @@
188
188
  "@arethetypeswrong/cli": "^0.18.5",
189
189
  "@changesets/cli": "^2.31.1",
190
190
  "@deepseek-ai/cordis": "^4.0.5",
191
- "@deepseek-ai/dsh": "0.2.1-rc.2",
192
- "@deepseek-ai/dsh-agent": "0.2.1-rc.2",
193
- "@deepseek-ai/dsh-agent-loop": "0.2.1-rc.2",
194
- "@deepseek-ai/dsh-api-gateway": "0.2.1-rc.2",
195
- "@deepseek-ai/dsh-app-boot": "0.2.1-rc.2",
196
- "@deepseek-ai/dsh-client-connection": "0.2.1-rc.2",
197
- "@deepseek-ai/dsh-client-locale": "0.2.1-rc.2",
198
- "@deepseek-ai/dsh-client-store": "0.2.1-rc.2",
199
- "@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.2",
200
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.2",
201
- "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.2",
202
- "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.2",
203
- "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.2",
204
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.2",
205
- "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.2",
206
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.2",
207
- "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.2",
208
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.2",
209
- "@deepseek-ai/dsh-client-ui-tool": "0.2.1-rc.2",
210
- "@deepseek-ai/dsh-llm": "0.2.1-rc.2",
211
- "@deepseek-ai/dsh-session": "0.2.1-rc.2",
212
- "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-rc.2",
213
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.2",
214
- "@deepseek-ai/dsh-session-projection": "0.2.1-rc.2",
215
- "@deepseek-ai/dsh-session-query": "0.2.1-rc.2",
216
- "@deepseek-ai/dsh-subagent": "0.2.1-rc.2",
217
- "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-rc.2",
218
- "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.2",
219
- "@deepseek-ai/dsh-tools": "0.2.1-rc.2",
220
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.2",
221
- "@deepseek-ai/dsh-typert-registry": "0.2.1-rc.2",
222
- "@deepseek-ai/dsh-util-code-language": "0.2.1-rc.2",
223
- "@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.2",
191
+ "@deepseek-ai/dsh": "0.2.1-rc.5",
192
+ "@deepseek-ai/dsh-agent": "0.2.1-rc.5",
193
+ "@deepseek-ai/dsh-agent-loop": "0.2.1-rc.5",
194
+ "@deepseek-ai/dsh-api-gateway": "0.2.1-rc.5",
195
+ "@deepseek-ai/dsh-app-boot": "0.2.1-rc.5",
196
+ "@deepseek-ai/dsh-client-connection": "0.2.1-rc.5",
197
+ "@deepseek-ai/dsh-client-locale": "0.2.1-rc.5",
198
+ "@deepseek-ai/dsh-client-store": "0.2.1-rc.5",
199
+ "@deepseek-ai/dsh-client-ui-chat": "0.2.1-rc.5",
200
+ "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-rc.5",
201
+ "@deepseek-ai/dsh-client-ui-layout": "0.2.1-rc.5",
202
+ "@deepseek-ai/dsh-client-ui-plugin-manager": "0.2.1-rc.5",
203
+ "@deepseek-ai/dsh-client-ui-primitives": "0.2.1-rc.5",
204
+ "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-rc.5",
205
+ "@deepseek-ai/dsh-client-ui-session": "0.2.1-rc.5",
206
+ "@deepseek-ai/dsh-client-ui-settings": "0.2.1-rc.5",
207
+ "@deepseek-ai/dsh-client-ui-sidebar": "0.2.1-rc.5",
208
+ "@deepseek-ai/dsh-client-ui-slots": "0.2.1-rc.5",
209
+ "@deepseek-ai/dsh-client-ui-tool": "0.2.1-rc.5",
210
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.5",
211
+ "@deepseek-ai/dsh-session": "0.2.1-rc.5",
212
+ "@deepseek-ai/dsh-session-format-v0-to-v1": "0.2.1-rc.5",
213
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-rc.5",
214
+ "@deepseek-ai/dsh-session-projection": "0.2.1-rc.5",
215
+ "@deepseek-ai/dsh-session-query": "0.2.1-rc.5",
216
+ "@deepseek-ai/dsh-subagent": "0.2.1-rc.5",
217
+ "@deepseek-ai/dsh-subagent-spawn-in-process": "0.2.1-rc.5",
218
+ "@deepseek-ai/dsh-system-prompt": "0.2.1-rc.5",
219
+ "@deepseek-ai/dsh-tools": "0.2.1-rc.5",
220
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-rc.5",
221
+ "@deepseek-ai/dsh-typert-registry": "0.2.1-rc.5",
222
+ "@deepseek-ai/dsh-util-code-language": "0.2.1-rc.5",
223
+ "@deepseek-ai/dsh-util-workspace-path": "0.2.1-rc.5",
224
224
  "@shikijs/langs": "^4.3.1",
225
225
  "@testing-library/react": "^16.3.0",
226
226
  "@types/node": "^22.0.0",