dsh-mnemon-source-memory-spaces 0.5.0-rc.1

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.
@@ -0,0 +1,496 @@
1
+ /** Contracts owned by the Memory Spaces Source, not the Mnemon Core. */
2
+ export type { MemoryJsonValue as JsonValue } from 'dsh-mnemon/contracts';
3
+ export type MemoryProviderId = string;
4
+ export type MemoryProviderConnectionValue = string | number | boolean;
5
+ export type MemoryProviderConnection = Record<string, MemoryProviderConnectionValue>;
6
+ export interface MemoryProviderIcon {
7
+ /** Bundled brand token, self-contained image data, or a short text glyph. */
8
+ kind: 'brand' | 'data-url' | 'glyph';
9
+ value: string;
10
+ }
11
+ export interface MemoryProviderConfigOption {
12
+ value: string;
13
+ label: string;
14
+ /** Optional Host-provided translation key; clients fall back to label. */
15
+ i18nKey?: string;
16
+ }
17
+ export interface MemoryProviderConfigField {
18
+ key: string;
19
+ label: string;
20
+ /** Optional Host-provided translation key; clients fall back to label. */
21
+ i18nKey?: string;
22
+ /** Service fields are configured once in Settings; memory fields belong to each Memory Space. */
23
+ scope: 'service' | 'memory';
24
+ /** A reusable local data location presented with the same default/custom scope UI as Mnemon Native. */
25
+ role?: 'global-location';
26
+ input: 'text' | 'url' | 'secret' | 'number' | 'boolean' | 'select' | 'path';
27
+ required: boolean;
28
+ defaultValue?: MemoryProviderConnectionValue;
29
+ placeholder?: string;
30
+ help?: string;
31
+ min?: number;
32
+ max?: number;
33
+ maxLength?: number;
34
+ pattern?: string;
35
+ normalize?: 'trim-trailing-slash';
36
+ validationMessage?: string;
37
+ /** Seed an empty service default from this field on the first discovered Memory Space. */
38
+ discoveryDefaultFrom?: string;
39
+ options?: MemoryProviderConfigOption[];
40
+ }
41
+ export type MemoryPlacementCapability = 'graph' | 'entities' | 'related' | 'exact-write' | 'link' | 'forget';
42
+ export type MemoryPlacementPreference = 'balanced' | 'local-first' | 'shared-first';
43
+ export interface MemoryPlacementRules {
44
+ allowedProviderIds?: MemoryProviderId[];
45
+ dataBoundary?: 'allow-remote' | 'local-only';
46
+ requiredCapabilities?: MemoryPlacementCapability[];
47
+ preference?: MemoryPlacementPreference;
48
+ }
49
+ /** Persistent policy for provider selection during Agent-supervised memory distillation. */
50
+ export interface MemoryPersistenceStrategy {
51
+ mode?: 'manual' | 'automatic';
52
+ /** Fixed provider in manual mode. */
53
+ providerId?: MemoryProviderId;
54
+ /** User-authored guidance used only after hard rules have filtered automatic candidates. */
55
+ prompt?: string;
56
+ rules?: MemoryPlacementRules;
57
+ /** Memory-level connection values for providers that may be selected by the policy. */
58
+ providerConnections?: Partial<Record<MemoryProviderId, MemoryProviderConnection>>;
59
+ }
60
+ export interface ResolvedMemoryPersistenceStrategy {
61
+ mode: 'manual' | 'automatic';
62
+ providerId: MemoryProviderId;
63
+ prompt: string;
64
+ rules: {
65
+ allowedProviderIds: MemoryProviderId[];
66
+ dataBoundary: 'allow-remote' | 'local-only';
67
+ requiredCapabilities: MemoryPlacementCapability[];
68
+ preference: MemoryPlacementPreference;
69
+ };
70
+ providerConnections: Partial<Record<MemoryProviderId, MemoryProviderConnection>>;
71
+ }
72
+ export interface AutomaticMemoryPlacementRequest {
73
+ mode: 'automatic';
74
+ /** User-authored routing guidance. Hard rules above always take precedence. */
75
+ prompt?: string;
76
+ rules?: MemoryPlacementRules;
77
+ }
78
+ export interface MemoryPlacementDecision {
79
+ mode: 'automatic';
80
+ providerId: MemoryProviderId;
81
+ decidedBy: 'rules' | 'llm';
82
+ reason: string;
83
+ confidence: 'high' | 'medium' | 'low';
84
+ candidateProviderIds: MemoryProviderId[];
85
+ appliedRules: string[];
86
+ decidedAt: string;
87
+ runId?: string;
88
+ subagentProvider?: string;
89
+ }
90
+ export interface MemoryProviderCapabilities {
91
+ search: boolean;
92
+ browse: boolean;
93
+ graph: boolean;
94
+ entities: boolean;
95
+ related: boolean;
96
+ remember: boolean;
97
+ link: boolean;
98
+ forget: boolean;
99
+ writeMode: 'exact' | 'async-extracting';
100
+ deletionMode: 'soft' | 'hard' | 'unsupported';
101
+ }
102
+ export interface MemoryProviderDescriptor {
103
+ /** Provider implementation type; omitted when it is identical to id. */
104
+ typeId?: string;
105
+ id: MemoryProviderId;
106
+ label: string;
107
+ icon?: MemoryProviderIcon;
108
+ kind: 'local' | 'remote';
109
+ /** How the provider data scope reacts when DSH switches workspaces. */
110
+ workspaceBinding: 'automatic' | 'optional-override' | 'provider-global';
111
+ summary: string;
112
+ /** Optional Host-provided translation key; clients fall back to summary. */
113
+ summaryI18nKey?: string;
114
+ origin: 'native' | 'third-party';
115
+ capabilities: MemoryProviderCapabilities;
116
+ fields: MemoryProviderConfigField[];
117
+ /** Runtime projection: whether this scope has a usable saved service configuration. */
118
+ serviceConfigured?: boolean;
119
+ }
120
+ export interface MemoryProviderServiceView {
121
+ providerId: MemoryProviderId;
122
+ enabled: boolean;
123
+ configured: boolean;
124
+ settings: MemoryProviderConnection;
125
+ configuredSecrets: string[];
126
+ /** Present only on the settings RPC so its password inputs can use native reveal/hide behavior. */
127
+ secretValues?: MemoryProviderConnection;
128
+ }
129
+ export interface MemoryProviderServiceCatalog {
130
+ providers: MemoryProviderDescriptor[];
131
+ items: MemoryProviderServiceView[];
132
+ generatedAt: string;
133
+ }
134
+ export interface UpdateMemoryProviderServiceRequest {
135
+ providerId: MemoryProviderId;
136
+ settings: MemoryProviderConnection;
137
+ enabled?: boolean;
138
+ clearSecrets?: string[];
139
+ }
140
+ export interface MemoryProviderRuntimeStatus {
141
+ providerId: MemoryProviderId;
142
+ label: string;
143
+ icon?: MemoryProviderIcon;
144
+ enabled: boolean;
145
+ configured: boolean;
146
+ status: 'disabled' | 'idle' | 'healthy' | 'unhealthy';
147
+ memoryBodyCount: number;
148
+ activeMemoryBodyCount: number;
149
+ error?: string;
150
+ }
151
+ export interface MemoryBodyProvider {
152
+ id: MemoryProviderId;
153
+ /** Implementation type; differs from id when one module has several child instances. */
154
+ typeId?: string;
155
+ label: string;
156
+ icon?: MemoryProviderIcon;
157
+ origin?: 'native' | 'third-party';
158
+ kind: 'local' | 'remote';
159
+ location: string;
160
+ targetUri?: string;
161
+ account?: string;
162
+ user?: string;
163
+ actorPeerId?: string;
164
+ apiKeyConfigured: boolean;
165
+ settings: MemoryProviderConnection;
166
+ configuredSecrets: string[];
167
+ capabilities: MemoryProviderCapabilities;
168
+ }
169
+ export interface OpenVikingBodyConnection {
170
+ endpoint: string;
171
+ targetUri: string;
172
+ apiKey?: string;
173
+ account?: string;
174
+ user?: string;
175
+ actorPeerId?: string;
176
+ }
177
+ export interface MemoryBody {
178
+ id: string;
179
+ name: string;
180
+ description: string;
181
+ active: boolean;
182
+ dbPath: string;
183
+ provider: MemoryBodyProvider;
184
+ placement?: MemoryPlacementDecision;
185
+ createdAt: string;
186
+ updatedAt: string;
187
+ }
188
+ export interface CreateMemoryBodyRequest {
189
+ name: string;
190
+ description: string;
191
+ active?: boolean;
192
+ providerId?: MemoryProviderId;
193
+ connection?: MemoryProviderConnection;
194
+ /** Candidate-specific settings used only while resolving automatic placement. */
195
+ providerConnections?: Partial<Record<MemoryProviderId, MemoryProviderConnection>>;
196
+ openViking?: OpenVikingBodyConnection;
197
+ placement?: AutomaticMemoryPlacementRequest;
198
+ }
199
+ export interface UpdateMemoryBodyRequest {
200
+ name?: string;
201
+ description?: string;
202
+ active?: boolean;
203
+ connection?: MemoryProviderConnection;
204
+ clearSecrets?: string[];
205
+ openViking?: Partial<OpenVikingBodyConnection> & {
206
+ clearApiKey?: boolean;
207
+ };
208
+ }
209
+ export interface MemoryBodyMetadataUpdate {
210
+ memoryBodyId: string;
211
+ title: string;
212
+ description: string;
213
+ }
214
+ export interface MemoryBodyMetadataMaintenanceResult {
215
+ delegated: true;
216
+ runId: string;
217
+ provider: string;
218
+ summary: string;
219
+ updates: MemoryBodyMetadataUpdate[];
220
+ }
221
+ export type Category = 'preference' | 'decision' | 'fact' | 'insight' | 'context' | 'general';
222
+ export declare const CATEGORIES: readonly ["preference", "decision", "fact", "insight", "context", "general"];
223
+ export type Source = 'user' | 'agent' | 'external';
224
+ export declare const SOURCES: readonly ["user", "agent", "external"];
225
+ export type EdgeType = 'temporal' | 'semantic' | 'causal' | 'entity';
226
+ export declare const EDGE_TYPES: readonly ["temporal", "semantic", "causal", "entity"];
227
+ export type Intent = 'WHY' | 'WHEN' | 'ENTITY' | 'GENERAL';
228
+ export declare const INTENTS: readonly ["WHY", "WHEN", "ENTITY", "GENERAL"];
229
+ export type RecallRelevanceTier = 'high' | 'medium' | 'low' | 'unknown';
230
+ export interface Insight {
231
+ id: string;
232
+ content: string;
233
+ category?: string;
234
+ importance?: number;
235
+ tags?: string[];
236
+ entities?: string[];
237
+ source?: string;
238
+ score?: number;
239
+ /** Policy-normalized query relevance; absent for unknown Provider score scales. */
240
+ normalizedScore?: number;
241
+ /** Query relevance assigned by the active deterministic recall quality policy. */
242
+ relevanceTier?: RecallRelevanceTier;
243
+ /** Comparable rank score only when results were fused across providers. */
244
+ federatedScore?: number;
245
+ confidence?: string;
246
+ intent?: string;
247
+ matchedVia?: string;
248
+ createdAt?: string;
249
+ depth?: number;
250
+ edgeType?: string;
251
+ memoryBodyId?: string;
252
+ memoryBodyName?: string;
253
+ memoryProviderId?: MemoryProviderId;
254
+ /** Provider label captured with the result so Client UI never needs an id catalog. */
255
+ memoryProviderLabel?: string;
256
+ /** Owning Provider capabilities at read time; safe to expose to clients. */
257
+ memoryCapabilities?: MemoryProviderCapabilities;
258
+ externalUri?: string;
259
+ }
260
+ export interface SearchRequest {
261
+ query: string;
262
+ mode?: 'smart' | 'keyword' | 'basic';
263
+ limit?: number;
264
+ category?: Category;
265
+ source?: Source;
266
+ intent?: Intent;
267
+ memoryBodyIds?: string[];
268
+ }
269
+ export interface RememberRequest {
270
+ content: string;
271
+ category?: Category;
272
+ importance?: number;
273
+ tags?: string[];
274
+ entities?: string[];
275
+ source?: Source;
276
+ memoryBodyId?: string;
277
+ }
278
+ export interface MemoryBodyStats {
279
+ totalInsights: number;
280
+ deletedInsights: number;
281
+ edgeCount: number;
282
+ oplogCount: number;
283
+ dbSizeBytes: number;
284
+ byCategory: Record<string, number>;
285
+ topEntities: Array<{
286
+ entity: string;
287
+ count: number;
288
+ }>;
289
+ }
290
+ export interface MemoryBodyView extends MemoryBody {
291
+ /** True when Mnemon's persisted active-file selection points to this Store. */
292
+ mnemonDefault: boolean;
293
+ /** False when an external provider is disabled while its Memory Space registration remains preserved. */
294
+ providerEnabled?: boolean;
295
+ healthy: boolean;
296
+ /** A fast directory response is visible while provider health resolves independently. */
297
+ statusLoading?: boolean;
298
+ error?: string;
299
+ stats?: MemoryBodyStats;
300
+ }
301
+ export interface MemoryBodyCatalog {
302
+ items: MemoryBodyView[];
303
+ providers: MemoryProviderDescriptor[];
304
+ /** Sanitized policy exposed to memory workers; provider connection values are never included. */
305
+ persistenceStrategy?: Omit<ResolvedMemoryPersistenceStrategy, 'providerConnections'>;
306
+ total: number;
307
+ activeCount: number;
308
+ directory: string;
309
+ generatedAt: string;
310
+ }
311
+ export interface MemoryGraphNode extends Insight {
312
+ color: string;
313
+ graphId?: string;
314
+ kind?: 'memory' | 'entity' | 'space';
315
+ memoryBodyIds?: string[];
316
+ memoryBodyNames?: string[];
317
+ occurrenceCount?: number;
318
+ }
319
+ export interface MemoryGraphEdge {
320
+ sourceId: string;
321
+ targetId: string;
322
+ label: string;
323
+ color: string;
324
+ type?: EdgeType | 'scope';
325
+ }
326
+ export interface MemoryGraphSnapshot {
327
+ nodes: MemoryGraphNode[];
328
+ edges: MemoryGraphEdge[];
329
+ generatedAt: string;
330
+ memoryBodies?: Array<Pick<MemoryBody, 'id' | 'name' | 'active'>>;
331
+ /** Per-space observation state for capability-aware overview rendering. */
332
+ sources?: MemoryReadSource[];
333
+ }
334
+ export type MemoryReadMode = 'search' | 'graph' | 'projection' | 'enumerable' | 'query-only' | 'entities' | 'unsupported';
335
+ export type MemoryReadStatus = 'ready' | 'empty' | 'query-required' | 'unsupported' | 'unavailable';
336
+ /**
337
+ * One provider-backed Memory Space participating in a read surface.
338
+ *
339
+ * The mode describes what the provider can truthfully expose; status describes
340
+ * the result of this particular read. Keeping those dimensions separate lets
341
+ * the UI distinguish an empty graph from a flat projection, a query-only
342
+ * engine, and an unavailable connection.
343
+ */
344
+ export interface MemoryReadSource {
345
+ memoryBodyId: string;
346
+ memoryBodyName: string;
347
+ providerId: MemoryProviderId;
348
+ providerLabel: string;
349
+ mode: MemoryReadMode;
350
+ status: MemoryReadStatus;
351
+ itemCount: number;
352
+ edgeCount?: number;
353
+ hint?: string;
354
+ quality?: RecallQualityStats;
355
+ }
356
+ export interface RecallQualityStats {
357
+ policyId: string;
358
+ fallbackFrom?: string;
359
+ fetched: number;
360
+ retained: number;
361
+ selected: number;
362
+ droppedLowScore: number;
363
+ droppedNonPositiveScore: number;
364
+ droppedInvalidScore: number;
365
+ unscored: number;
366
+ unscaled: number;
367
+ }
368
+ export interface MemoryListRequest {
369
+ query?: string;
370
+ category?: Category;
371
+ limit?: number;
372
+ memoryBodyIds?: string[];
373
+ }
374
+ export interface MemoryListView {
375
+ items: MemoryGraphNode[];
376
+ total: number;
377
+ generatedAt: string;
378
+ /** Omitted only when talking to a pre-provider-aware Host. */
379
+ sources?: MemoryReadSource[];
380
+ }
381
+ export interface MemoryBodyMetadataSample {
382
+ memoryBodyId: string;
383
+ name: string;
384
+ description: string;
385
+ providerId: MemoryBody['provider']['id'];
386
+ providerLabel: string;
387
+ method: 'native-basic' | 'browse' | 'search';
388
+ evidence: Array<Pick<Insight, 'content' | 'category' | 'entities'>>;
389
+ }
390
+ export interface MemoryPlacementCandidate {
391
+ id: MemoryProviderId;
392
+ label: string;
393
+ kind: 'local' | 'remote';
394
+ configured: boolean;
395
+ summary: string;
396
+ capabilities: MemoryProviderCapabilities;
397
+ }
398
+ export interface PreparedMemoryPlacement {
399
+ prompt: string;
400
+ candidates: MemoryPlacementCandidate[];
401
+ appliedRules: string[];
402
+ selectorBrief: string;
403
+ }
404
+ export interface LlmMemoryPlacementSelection {
405
+ providerId: string;
406
+ reason: string;
407
+ confidence: string;
408
+ }
409
+ export declare const DEFAULT_EMBEDDING_ENDPOINT = "http://localhost:11434";
410
+ export declare const DEFAULT_EMBEDDING_MODEL = "nomic-embed-text";
411
+ export declare const EMBEDDING_PROTOCOL_AUTO = "auto";
412
+ export declare const EMBEDDING_PROTOCOL_OLLAMA = "ollama";
413
+ export declare const EMBEDDING_PROTOCOL_OPENAI = "openai";
414
+ /** Default protocol defers to Mnemon's /v1 auto-detection. */
415
+ export declare const DEFAULT_EMBEDDING_PROTOCOL = "auto";
416
+ /** Wire protocols accepted by the embedding protocol override; single source for schema, resolver, and UI validation. */
417
+ export declare const MNEMON_EMBEDDING_PROTOCOLS: readonly ["auto", "ollama", "openai"];
418
+ export interface RecallQualityConfig {
419
+ /** Registered deterministic policy id. */
420
+ policy?: string;
421
+ lowScoreThreshold?: number;
422
+ highScoreThreshold?: number;
423
+ /** Provider candidate expansion before quality filtering, from 1 through 5. */
424
+ candidateMultiplier?: number;
425
+ /** Maximum medium-relevance rows admitted by the strict policy. */
426
+ maxMediumResults?: number;
427
+ /** Maximum unknown-scale or unscored rows admitted by the strict policy. */
428
+ maxUnknownResults?: number;
429
+ }
430
+ export interface ResolvedRecallQualityConfig {
431
+ policy: string;
432
+ lowScoreThreshold: number;
433
+ highScoreThreshold: number;
434
+ candidateMultiplier: number;
435
+ maxMediumResults: number;
436
+ maxUnknownResults: number;
437
+ }
438
+ export type MnemonEmbeddingProtocol = (typeof MNEMON_EMBEDDING_PROTOCOLS)[number];
439
+ export interface MnemonEmbeddingConfig {
440
+ /** When false or omitted, Mnemon keeps its inherited environment and built-in defaults. */
441
+ enabled?: boolean;
442
+ endpoint?: string;
443
+ model?: string;
444
+ /** Optional Bearer token forwarded as MNEMON_EMBED_API_KEY for OpenAI-compatible endpoints. */
445
+ apiKey?: string;
446
+ /** Explicit wire-protocol override; 'auto' keeps Mnemon's /v1 auto-detection. */
447
+ protocol?: MnemonEmbeddingProtocol;
448
+ }
449
+ export interface ResolvedMnemonEmbeddingConfig {
450
+ enabled: boolean;
451
+ endpoint: string;
452
+ model: string;
453
+ apiKey: string;
454
+ protocol: MnemonEmbeddingProtocol;
455
+ }
456
+ export interface MnemonEmbeddingStatus {
457
+ available: boolean;
458
+ model: string;
459
+ /** Protocol Mnemon resolved for the embedding endpoint; omitted when the CLI does not report one. */
460
+ protocol?: string;
461
+ totalInsights: number;
462
+ embedded: number;
463
+ coverage: string;
464
+ }
465
+ /** Domain status only; workbench/lifecycle status belongs to the default adapter. */
466
+ export interface MemorySpacesStatus {
467
+ healthy: boolean;
468
+ error?: string;
469
+ version?: string;
470
+ cliPath: string;
471
+ commandFound: boolean;
472
+ dataDir: string;
473
+ store: string;
474
+ mnemonDefaultStore: string;
475
+ dshActiveStores: string[];
476
+ writeEnabled: boolean;
477
+ timeoutMs: number;
478
+ defaultRecallLimit: number;
479
+ recallQuality: ResolvedRecallQualityConfig;
480
+ memoryBodyDirectory: string;
481
+ memoryBodies: MemoryBodyView[];
482
+ providerServices?: MemoryProviderRuntimeStatus[];
483
+ stats?: MemoryBodyStats & {
484
+ dbPath?: string;
485
+ };
486
+ }
487
+ export interface EntityView {
488
+ items: Array<{
489
+ entity: string;
490
+ count: number;
491
+ }>;
492
+ insights: Insight[];
493
+ selected?: string;
494
+ /** Omitted only when talking to a pre-provider-aware Host. */
495
+ sources?: MemoryReadSource[];
496
+ }
package/package.json ADDED
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "dsh-mnemon-source-memory-spaces",
3
+ "version": "0.5.0-rc.1",
4
+ "description": "Memory Spaces Source and its private Provider SDK.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=20"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./lib/index.d.ts",
13
+ "default": "./lib/index.js"
14
+ },
15
+ "./provider-sdk": {
16
+ "types": "./lib/provider-sdk.d.ts",
17
+ "default": "./lib/provider-sdk.js"
18
+ },
19
+ "./package.json": "./package.json",
20
+ "./testing": {
21
+ "types": "./lib/testing.d.ts",
22
+ "default": "./lib/testing.js"
23
+ },
24
+ "./client": {
25
+ "types": "./lib/types/client.d.ts",
26
+ "default": "./lib/client.js"
27
+ },
28
+ "./contracts": {
29
+ "types": "./lib/contracts.d.ts",
30
+ "default": "./lib/contracts.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "lib",
35
+ "README.md"
36
+ ],
37
+ "scripts": {
38
+ "typecheck": "tsc --noEmit",
39
+ "build": "tsdown && tsc -p tsconfig.client-types.json",
40
+ "test": "vitest run",
41
+ "verify": "pnpm typecheck && pnpm test && pnpm build"
42
+ },
43
+ "dependencies": {
44
+ "schemastery": "^3.18.0"
45
+ },
46
+ "peerDependencies": {
47
+ "@deepseek-ai/cordis": "^4.0.1",
48
+ "dsh-mnemon": "0.5.0-rc.1",
49
+ "react": "^18.2.0"
50
+ },
51
+ "devDependencies": {
52
+ "@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1",
53
+ "@testing-library/react": "^16.3.0",
54
+ "@types/node": "^22.0.0",
55
+ "@types/react": "^18.3.0",
56
+ "@types/react-dom": "^18.3.0",
57
+ "dsh-mnemon": "0.5.0-rc.1",
58
+ "dsh-mnemon-provider-byterover": "0.5.0-rc.1",
59
+ "dsh-mnemon-provider-hindsight": "0.5.0-rc.1",
60
+ "dsh-mnemon-provider-holographic": "0.5.0-rc.1",
61
+ "dsh-mnemon-provider-honcho": "0.5.0-rc.1",
62
+ "dsh-mnemon-provider-mem0": "0.5.0-rc.1",
63
+ "dsh-mnemon-provider-mnemon-native": "0.5.0-rc.1",
64
+ "dsh-mnemon-provider-openviking": "0.5.0-rc.1",
65
+ "dsh-mnemon-provider-retaindb": "0.5.0-rc.1",
66
+ "dsh-mnemon-provider-supermemory": "0.5.0-rc.1",
67
+ "jsdom": "^26.0.0",
68
+ "react": "^18.2.0",
69
+ "react-dom": "^18.2.0",
70
+ "tsdown": "^0.22.0",
71
+ "typescript": "^5.9.0",
72
+ "vitest": "^3.2.0"
73
+ },
74
+ "peerDependenciesMeta": {
75
+ "react": {
76
+ "optional": true
77
+ }
78
+ },
79
+ "dsh": {
80
+ "client": {
81
+ "inject": [
82
+ "slots"
83
+ ],
84
+ "platform": "web",
85
+ "external": [
86
+ "dsh-mnemon/client"
87
+ ]
88
+ }
89
+ },
90
+ "publishConfig": {
91
+ "access": "public",
92
+ "tag": "rc"
93
+ },
94
+ "repository": {
95
+ "type": "git",
96
+ "url": "git+https://github.com/omdsh-dev/dsh-mnemon.git",
97
+ "directory": "plugins/dsh-mnemon-source-memory-spaces"
98
+ },
99
+ "homepage": "https://github.com/omdsh-dev/dsh-mnemon/tree/main/plugins/dsh-mnemon-source-memory-spaces#readme",
100
+ "bugs": {
101
+ "url": "https://github.com/omdsh-dev/dsh-mnemon/issues"
102
+ }
103
+ }