dsh-mnemon-source-memory-spaces 0.5.15 → 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.
- package/lib/client.js +462 -88
- package/lib/contracts.d.ts +44 -2
- package/lib/contracts.js +8 -1
- package/lib/{definitions-DwiEZSE_.d.ts → definitions-CtjNSwBS.d.ts} +20 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +404 -58
- package/lib/provider-sdk.d.ts +2 -2
- package/lib/testing.d.ts +1 -1
- package/lib/types/client/api.d.ts +5 -1
- package/lib/types/contracts.d.ts +43 -1
- package/package.json +3 -3
- package/presentation/locales.json +28 -4
- package/presentation/page.module.css +20 -0
package/lib/provider-sdk.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CATEGORIES, Category, EDGE_TYPES, EdgeType, INTENTS, Insight, Intent, JsonValue, MemoryBody, MemoryBodyProvider, MemoryBodyStats, MemoryGraphEdge, MemoryGraphNode, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderCapabilities, MemoryProviderConfigField, MemoryProviderConfigOption, MemoryProviderConnection, MemoryProviderConnectionValue, MemoryProviderDescriptor, MemoryProviderIcon, MemoryProviderId, MemorySpace, MemorySpaceProvider, MemorySpaceStats, OpenVikingBodyConnection, OpenVikingSpaceConnection, RememberRequest, SOURCES, SearchRequest, Source } from "./contracts.js";
|
|
2
|
-
import { C as
|
|
2
|
+
import { C as ProviderSearchResult, S as ProviderScoreSemantics, _ as MemorySpaceNativeRunner, a as MemorySpaceProviderHost, b as ProviderEntityIndex, c as MemorySpaceProviderRuntimeContext, d as defineMemorySpaceProviderDefinition, f as MemoryProviderAdapter, g as MemorySpaceNativeRunOptions, h as MemorySpaceAuthority, i as MemorySpaceProviderEntry, l as MemorySpaceProviderScoreSemantics, m as MemoryProviderScoreSemantics, n as MemorySpaceProviderDefinition, o as MemorySpaceProviderManifest, p as MemoryProviderAdapterFactoryContext, r as MemorySpaceProviderDisposer, s as MemorySpaceProviderModule, t as MEMORY_SPACE_PROVIDER_API_VERSION, u as defineMemorySpaceProvider, v as NORMALIZED_RELEVANCE_SCORE, w as ProviderSpaceStatus, x as ProviderMemorySpace, y as ProviderBodyStatus } from "./definitions-CtjNSwBS.js";
|
|
3
3
|
//#region src/providers/http.d.ts
|
|
4
4
|
interface HttpProviderOptions {
|
|
5
5
|
label?: string;
|
|
@@ -60,4 +60,4 @@ declare const DEFAULT_MAX_OUTPUT_BYTES: number;
|
|
|
60
60
|
/** Spawn without a shell, with bounded output and cooperative cancellation. */
|
|
61
61
|
declare const runProcess: ProcessRunner;
|
|
62
62
|
//#endregion
|
|
63
|
-
export { CATEGORIES, type Category, DEFAULT_MAX_OUTPUT_BYTES, EDGE_TYPES, type EdgeType, HttpMemoryProvider, HttpProviderOptions, INTENTS, type Insight, type Intent, JsonRequestOptions, type JsonValue, MEMORY_SPACE_PROVIDER_API_VERSION, type MemoryBody, type MemoryBodyProvider, type MemoryBodyStats, type MemoryGraphEdge, type MemoryGraphNode, type MemoryGraphSnapshot, type MemoryListRequest, MemoryProviderAdapter, MemoryProviderAdapterFactoryContext, type MemoryProviderCapabilities, type MemoryProviderConfigField, type MemoryProviderConfigOption, type MemoryProviderConnection, type MemoryProviderConnectionValue, type MemoryProviderDescriptor, type MemoryProviderIcon, type MemoryProviderId, MemoryProviderScoreSemantics, type MemorySpace, MemorySpaceAuthority, MemorySpaceNativeRunOptions, MemorySpaceNativeRunner, type MemorySpaceProvider, type MemorySpaceProviderDefinition, type MemorySpaceProviderDisposer, type MemorySpaceProviderEntry, type MemorySpaceProviderHost, type MemorySpaceProviderManifest, type MemorySpaceProviderModule, type MemorySpaceProviderRuntimeContext, type MemorySpaceProviderScoreSemantics, type MemorySpaceStats, NORMALIZED_RELEVANCE_SCORE, type OpenVikingBodyConnection, type OpenVikingSpaceConnection, ProcessError, ProcessFailureReason, ProcessOptions, ProcessResult, ProcessRunner, ProviderBodyStatus, ProviderMemorySpace, ProviderScoreSemantics, ProviderSearchResult, ProviderSpaceStatus, type RememberRequest, SOURCES, type SearchRequest, type Source, defineMemorySpaceProvider, defineMemorySpaceProviderDefinition, firstArray, jsonArray, jsonNumber, jsonObject, jsonString, runProcess };
|
|
63
|
+
export { CATEGORIES, type Category, DEFAULT_MAX_OUTPUT_BYTES, EDGE_TYPES, type EdgeType, HttpMemoryProvider, HttpProviderOptions, INTENTS, type Insight, type Intent, JsonRequestOptions, type JsonValue, MEMORY_SPACE_PROVIDER_API_VERSION, type MemoryBody, type MemoryBodyProvider, type MemoryBodyStats, type MemoryGraphEdge, type MemoryGraphNode, type MemoryGraphSnapshot, type MemoryListRequest, MemoryProviderAdapter, MemoryProviderAdapterFactoryContext, type MemoryProviderCapabilities, type MemoryProviderConfigField, type MemoryProviderConfigOption, type MemoryProviderConnection, type MemoryProviderConnectionValue, type MemoryProviderDescriptor, type MemoryProviderIcon, type MemoryProviderId, MemoryProviderScoreSemantics, type MemorySpace, MemorySpaceAuthority, MemorySpaceNativeRunOptions, MemorySpaceNativeRunner, type MemorySpaceProvider, type MemorySpaceProviderDefinition, type MemorySpaceProviderDisposer, type MemorySpaceProviderEntry, type MemorySpaceProviderHost, type MemorySpaceProviderManifest, type MemorySpaceProviderModule, type MemorySpaceProviderRuntimeContext, type MemorySpaceProviderScoreSemantics, type MemorySpaceStats, NORMALIZED_RELEVANCE_SCORE, type OpenVikingBodyConnection, type OpenVikingSpaceConnection, ProcessError, ProcessFailureReason, ProcessOptions, ProcessResult, ProcessRunner, ProviderBodyStatus, ProviderEntityIndex, ProviderMemorySpace, ProviderScoreSemantics, ProviderSearchResult, ProviderSpaceStatus, type RememberRequest, SOURCES, type SearchRequest, type Source, defineMemorySpaceProvider, defineMemorySpaceProviderDefinition, firstArray, jsonArray, jsonNumber, jsonObject, jsonString, runProcess };
|
package/lib/testing.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { MemoryProviderConnection, MemoryProviderDescriptor, MemorySpace } from "./contracts.js";
|
|
2
|
-
import { f as MemoryProviderAdapter, h as MemorySpaceAuthority, o as MemorySpaceProviderManifest, p as MemoryProviderAdapterFactoryContext, s as MemorySpaceProviderModule } from "./definitions-
|
|
2
|
+
import { f as MemoryProviderAdapter, h as MemorySpaceAuthority, o as MemorySpaceProviderManifest, p as MemoryProviderAdapterFactoryContext, s as MemorySpaceProviderModule } from "./definitions-CtjNSwBS.js";
|
|
3
3
|
//#region src/testing.d.ts
|
|
4
4
|
interface MemorySpaceProviderTest {
|
|
5
5
|
readonly registered: boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CreateMemorySpaceRequest, EntityView, Insight, MemorySpace, MemorySpaceView, MemorySpaceMetadataMaintenanceResult, MemorySpaceCatalog, MemoryGraphSnapshot, MemoryListRequest, MemoryListView, MemoryReadSource, RememberRequest, SearchRequest, UpdateMemorySpaceRequest } from '../contracts.ts';
|
|
1
|
+
import type { CreateMemorySpaceRequest, EntityMemoriesView, EntityRelatedView, EntityView, Insight, MemorySpace, MemorySpaceView, MemorySpaceMetadataMaintenanceResult, MemorySpaceCatalog, MemoryGraphSnapshot, MemoryListRequest, MemoryListView, MemoryReadSource, RememberRequest, SearchRequest, UpdateMemorySpaceRequest } from '../contracts.ts';
|
|
2
2
|
/**
|
|
3
3
|
* Source-owned structural page API; the default bundle may supply agent-assisted callbacks.
|
|
4
4
|
* body/bodies method and wire-field spellings remain compatible with existing
|
|
@@ -10,6 +10,10 @@ export interface MemorySpacesPageClient {
|
|
|
10
10
|
graph(memoryBodyIds?: string[]): Promise<MemoryGraphSnapshot>;
|
|
11
11
|
list(request?: MemoryListRequest): Promise<MemoryListView>;
|
|
12
12
|
entities(entity?: string, limit?: number): Promise<EntityView>;
|
|
13
|
+
/** Optional for page clients written against an older Source; the Entities page then lists entities(entity) only. */
|
|
14
|
+
entityMemories?(entity: string, offset?: number, limit?: number): Promise<EntityMemoriesView>;
|
|
15
|
+
/** view: one id per page view; its next selection cancels the related read it is still waiting for. */
|
|
16
|
+
entityRelated?(entity: string, limit?: number, view?: string): Promise<EntityRelatedView>;
|
|
13
17
|
search(request: SearchRequest): Promise<SearchResponse>;
|
|
14
18
|
agentSearch(request: SearchRequest): Promise<AgentSearchResponse>;
|
|
15
19
|
related(id: string, memoryBodyId?: string): Promise<Insight[]>;
|
package/lib/types/contracts.d.ts
CHANGED
|
@@ -235,6 +235,11 @@ export declare const EDGE_TYPES: readonly ["temporal", "semantic", "causal", "en
|
|
|
235
235
|
export type Intent = 'WHY' | 'WHEN' | 'ENTITY' | 'GENERAL';
|
|
236
236
|
export declare const INTENTS: readonly ["WHY", "WHEN", "ENTITY", "GENERAL"];
|
|
237
237
|
export type RecallRelevanceTier = 'high' | 'medium' | 'low' | 'unknown';
|
|
238
|
+
/**
|
|
239
|
+
* One spelling-insensitive key per entity. The Host's entity index and the Client's graph
|
|
240
|
+
* both count an entity's memories by it, so their numbers agree.
|
|
241
|
+
*/
|
|
242
|
+
export declare function normalizeEntityKey(entity: string): string;
|
|
238
243
|
export interface Insight {
|
|
239
244
|
id: string;
|
|
240
245
|
content: string;
|
|
@@ -273,6 +278,13 @@ export interface SearchRequest {
|
|
|
273
278
|
source?: Source;
|
|
274
279
|
intent?: Intent;
|
|
275
280
|
memoryBodyIds?: string[];
|
|
281
|
+
/**
|
|
282
|
+
* A look at the memory rather than a use of it, such as the Memory System's
|
|
283
|
+
* own searches. Providers that record reads, as access counts or a query
|
|
284
|
+
* log, leave it out, and may answer from a snapshot that lags a write still
|
|
285
|
+
* in flight; a check that must see a write leaves the flag unset.
|
|
286
|
+
*/
|
|
287
|
+
inspect?: boolean;
|
|
276
288
|
}
|
|
277
289
|
export interface RememberRequest {
|
|
278
290
|
content: string;
|
|
@@ -353,7 +365,8 @@ export interface MemoryGraphSnapshot {
|
|
|
353
365
|
sources?: MemoryReadSource[];
|
|
354
366
|
}
|
|
355
367
|
export type MemoryReadMode = 'search' | 'graph' | 'projection' | 'enumerable' | 'query-only' | 'entities' | 'unsupported';
|
|
356
|
-
|
|
368
|
+
/** 'loading' is client-only: a page shows its spaces from the directory while the read runs. */
|
|
369
|
+
export type MemoryReadStatus = 'ready' | 'empty' | 'query-required' | 'unsupported' | 'unavailable' | 'loading';
|
|
357
370
|
/**
|
|
358
371
|
* One provider-backed Memory Space participating in a read surface.
|
|
359
372
|
*
|
|
@@ -371,6 +384,10 @@ export interface MemoryReadSource {
|
|
|
371
384
|
status: MemoryReadStatus;
|
|
372
385
|
itemCount: number;
|
|
373
386
|
edgeCount?: number;
|
|
387
|
+
/** Entity reads: the memories the entity index covers in this space. */
|
|
388
|
+
memoryCount?: number;
|
|
389
|
+
/** Entity reads: false when the Provider could not index every memory of this space. */
|
|
390
|
+
complete?: boolean;
|
|
374
391
|
hint?: string;
|
|
375
392
|
quality?: RecallQualityStats;
|
|
376
393
|
}
|
|
@@ -505,15 +522,40 @@ export interface MemorySpacesStatus {
|
|
|
505
522
|
dbPath?: string;
|
|
506
523
|
};
|
|
507
524
|
}
|
|
525
|
+
/**
|
|
526
|
+
* The entities of the active spaces. Each count is the number of memories that
|
|
527
|
+
* carry the entity, the same set entity-memories lists.
|
|
528
|
+
*/
|
|
508
529
|
export interface EntityView {
|
|
509
530
|
items: Array<{
|
|
510
531
|
entity: string;
|
|
511
532
|
count: number;
|
|
512
533
|
}>;
|
|
534
|
+
/** With a selected entity: the first page of entity-memories, kept for existing callers. */
|
|
513
535
|
insights: Insight[];
|
|
514
536
|
selected?: string;
|
|
515
537
|
/** Omitted only when talking to a pre-provider-aware Host. */
|
|
516
538
|
sources?: MemoryReadSource[];
|
|
539
|
+
/** Distinct entities across the active spaces; items may be capped below it. Omitted by older Hosts. */
|
|
540
|
+
total?: number;
|
|
541
|
+
/** False when a space's Provider could not index every memory. Omitted by older Hosts. */
|
|
542
|
+
complete?: boolean;
|
|
543
|
+
}
|
|
544
|
+
/** One page of the memories that carry an entity, by importance and then recency. */
|
|
545
|
+
export interface EntityMemoriesView {
|
|
546
|
+
/** The entity's most common spelling, or the requested name when no memory carries it. */
|
|
547
|
+
entity: string;
|
|
548
|
+
total: number;
|
|
549
|
+
offset: number;
|
|
550
|
+
items: Insight[];
|
|
551
|
+
complete: boolean;
|
|
552
|
+
sources: MemoryReadSource[];
|
|
553
|
+
}
|
|
554
|
+
/** Memories recall relates to an entity that do not carry it themselves. */
|
|
555
|
+
export interface EntityRelatedView {
|
|
556
|
+
entity: string;
|
|
557
|
+
items: Insight[];
|
|
558
|
+
sources: MemoryReadSource[];
|
|
517
559
|
}
|
|
518
560
|
/** @deprecated Use CreateMemorySpaceRequest. The wire shape is unchanged. */
|
|
519
561
|
export type CreateMemoryBodyRequest = CreateMemorySpaceRequest;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mnemon-source-memory-spaces",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.17",
|
|
4
4
|
"description": "Memory Spaces Source and its private Provider SDK.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -65,13 +65,13 @@
|
|
|
65
65
|
"@types/node": "^22.0.0",
|
|
66
66
|
"@types/react": "^18.3.0",
|
|
67
67
|
"@types/react-dom": "^18.3.0",
|
|
68
|
-
"dsh-mnemon": "^0.5.
|
|
68
|
+
"dsh-mnemon": "^0.5.25",
|
|
69
69
|
"dsh-mnemon-provider-byterover": "^0.5.5",
|
|
70
70
|
"dsh-mnemon-provider-hindsight": "^0.5.5",
|
|
71
71
|
"dsh-mnemon-provider-holographic": "^0.5.6",
|
|
72
72
|
"dsh-mnemon-provider-honcho": "^0.5.5",
|
|
73
73
|
"dsh-mnemon-provider-mem0": "^0.5.5",
|
|
74
|
-
"dsh-mnemon-provider-mnemon-native": "^0.5.
|
|
74
|
+
"dsh-mnemon-provider-mnemon-native": "^0.5.9",
|
|
75
75
|
"dsh-mnemon-provider-openviking": "^0.5.7",
|
|
76
76
|
"dsh-mnemon-provider-retaindb": "^0.5.5",
|
|
77
77
|
"dsh-mnemon-provider-supermemory": "^0.5.5",
|
|
@@ -291,11 +291,23 @@
|
|
|
291
291
|
"entities.filterHint": "输入时即时过滤左侧列表(按 Esc 清空)",
|
|
292
292
|
"entities.emptyRail": "写入带实体的记忆后,这里会形成入口。",
|
|
293
293
|
"entities.filterEmpty": "本地无匹配。点“查阅”向宿主发起查询。",
|
|
294
|
-
"entities.loading": "
|
|
294
|
+
"entities.loading": "正在读取实体的记忆…",
|
|
295
295
|
"entities.selectTitle": "选择或输入一个实体",
|
|
296
|
-
"entities.selectText": "
|
|
296
|
+
"entities.selectText": "选中后列出带有它的全部记忆;需要时,可再查找召回认为相关的其他记忆。",
|
|
297
297
|
"entities.emptyTitle": "没有关联记忆",
|
|
298
298
|
"entities.emptyText": "尝试更完整的名称或另一个实体别名。",
|
|
299
|
+
"entities.railLoading": "正在读取实体…",
|
|
300
|
+
"entities.memoriesHint": "带有此实体的记忆",
|
|
301
|
+
"entities.relatedTitle": "相关记忆",
|
|
302
|
+
"entities.relatedHint": "召回认为相关、但不带此实体的记忆",
|
|
303
|
+
"entities.findRelated": "查找相关记忆",
|
|
304
|
+
"entities.hideRelated": "收起",
|
|
305
|
+
"entities.noCarrying": "没有记忆带有此实体。",
|
|
306
|
+
"entities.noRelated": "没有其他相关记忆。",
|
|
307
|
+
"entities.retry": "重试",
|
|
308
|
+
"entities.sourceReady": "{count} 个实体",
|
|
309
|
+
"entities.sourcePartial": "{count} 个实体 · 部分",
|
|
310
|
+
"readSources.status.loading": "正在读取",
|
|
299
311
|
"remember.title": "存入记忆",
|
|
300
312
|
"remember.description": "任务 Agent 会判断是否值得保存,去重、提炼后写入合适的记忆空间,不占用当前对话。",
|
|
301
313
|
"remember.readOnlyTitle": "当前为只读模式",
|
|
@@ -637,11 +649,23 @@
|
|
|
637
649
|
"entities.filterHint": "Type to filter the rail locally (Esc to clear).",
|
|
638
650
|
"entities.emptyRail": "Entities appear here after memories with entity metadata are stored.",
|
|
639
651
|
"entities.filterEmpty": "No local match. Press Explore to query the host.",
|
|
640
|
-
"entities.loading": "
|
|
652
|
+
"entities.loading": "Reading the entity's memories…",
|
|
641
653
|
"entities.selectTitle": "Select or enter an entity",
|
|
642
|
-
"entities.selectText": "
|
|
654
|
+
"entities.selectText": "Selecting one lists every memory that carries it; Find related memories then adds others recall relates to it.",
|
|
643
655
|
"entities.emptyTitle": "No related memories",
|
|
644
656
|
"entities.emptyText": "Try the full name or another entity alias.",
|
|
657
|
+
"entities.railLoading": "Reading entities…",
|
|
658
|
+
"entities.memoriesHint": "Memories that carry this entity",
|
|
659
|
+
"entities.relatedTitle": "Related memories",
|
|
660
|
+
"entities.relatedHint": "Recalled as related, without this entity",
|
|
661
|
+
"entities.findRelated": "Find related memories",
|
|
662
|
+
"entities.hideRelated": "Hide",
|
|
663
|
+
"entities.noCarrying": "No memory carries this entity.",
|
|
664
|
+
"entities.noRelated": "No other related memories.",
|
|
665
|
+
"entities.retry": "Retry",
|
|
666
|
+
"entities.sourceReady": "{count} entities",
|
|
667
|
+
"entities.sourcePartial": "{count} entities · partial",
|
|
668
|
+
"readSources.status.loading": "Reading",
|
|
645
669
|
"remember.title": "Save to memory",
|
|
646
670
|
"remember.description": "A task Agent decides whether this is worth keeping, removes duplicates, distills it and writes it to the right Memory Space, outside this conversation.",
|
|
647
671
|
"remember.readOnlyTitle": "Read-only mode",
|
|
@@ -376,6 +376,26 @@ button.readSourceCard:hover { background: var(--mn-hover); }
|
|
|
376
376
|
.entityList button > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
377
377
|
.entityList strong { flex: none; color: var(--mn-faint); font-size: 12px; font-weight: 400; font-variant-numeric: tabular-nums; }
|
|
378
378
|
.entityResults > .emptyState { min-height: 360px; }
|
|
379
|
+
.entitySection { min-width: 0; }
|
|
380
|
+
.entitySection + .entitySection { margin-top: 24px; }
|
|
381
|
+
/* A section keeps its height while it loads, so the one below does not jump. */
|
|
382
|
+
.entitySectionBody { min-height: 116px; }
|
|
383
|
+
.entityQuiet { margin: 0 0 8px; padding: 12px 2px; color: var(--mn-faint); font-size: 13px; line-height: 20px; }
|
|
384
|
+
.entityRetry { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; }
|
|
385
|
+
.entityRelatedHead { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
|
|
386
|
+
.entityRelatedHead > div:first-child { flex: 1; min-width: 0; }
|
|
387
|
+
.entityRelatedHead > button { flex: none; margin-top: 2px; }
|
|
388
|
+
.insightSkeleton { position: relative; display: grid; min-height: 108px; align-content: start; gap: 12px; overflow: hidden; margin-bottom: 8px; padding: 16px; border: .5px solid var(--mn-card-line); border-radius: var(--dsw-radius-lg); }
|
|
389
|
+
.insightSkeleton > span { display: block; height: 10px; border-radius: 999px; background: var(--mn-fill); }
|
|
390
|
+
.insightSkeleton > span:nth-child(1) { width: 36%; }
|
|
391
|
+
.insightSkeleton > span:nth-child(2) { width: 94%; }
|
|
392
|
+
.insightSkeleton > span:nth-child(3) { width: 68%; }
|
|
393
|
+
.entityRailSkeleton { position: relative; display: block; height: 32px; overflow: hidden; border-radius: var(--dsw-radius-sm); background: color-mix(in srgb, var(--mn-fill) 55%, transparent); }
|
|
394
|
+
.insightSkeleton::after,
|
|
395
|
+
.entityRailSkeleton::after { position: absolute; inset: 0; content: ""; background: linear-gradient(105deg, transparent 20%, color-mix(in srgb, var(--mn-text) 5%, transparent) 45%, transparent 70%); transform: translateX(-120%); animation: entity-skeleton-sweep 1.2s ease-in-out infinite; pointer-events: none; }
|
|
396
|
+
@keyframes entity-skeleton-sweep { to { transform: translateX(120%); } }
|
|
397
|
+
@media (prefers-reduced-motion: reduce) { .insightSkeleton::after, .entityRailSkeleton::after { animation: none; } }
|
|
398
|
+
.readSourceCard[data-status="loading"] .readSourceSignal { background: var(--mn-idle); }
|
|
379
399
|
|
|
380
400
|
.supervisedComposer { border: .5px solid var(--mn-card-line); border-radius: var(--dsw-radius-lg); }
|
|
381
401
|
.supervisedComposer { overflow: hidden; }
|