dsh-mnemon 0.1.6 → 0.2.0

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.
Files changed (34) hide show
  1. package/README.md +125 -104
  2. package/README.zh-CN.md +130 -109
  3. package/THIRD_PARTY_NOTICES.md +7 -0
  4. package/lib/client.js +3889 -830
  5. package/lib/index.js +4224 -288
  6. package/lib/types/client/GlobalLocationSetting.d.ts +19 -0
  7. package/lib/types/client/MnemonPackSection.d.ts +4 -1
  8. package/lib/types/client/MnemonSettingsCard.d.ts +4 -1
  9. package/lib/types/client/ProviderIcon.d.ts +8 -0
  10. package/lib/types/client/ProviderSettingsSection.d.ts +16 -0
  11. package/lib/types/client/api.d.ts +12 -11
  12. package/lib/types/client/locales.d.ts +548 -0
  13. package/lib/types/client/settings.d.ts +3 -1
  14. package/lib/types/contracts.d.ts +36 -2
  15. package/lib/types/lifecycle.d.ts +30 -3
  16. package/lib/types/memory-bodies.d.ts +25 -4
  17. package/lib/types/process.d.ts +4 -1
  18. package/lib/types/provider-placement.d.ts +26 -0
  19. package/lib/types/providers/byterover.d.ts +31 -0
  20. package/lib/types/providers/catalog.d.ts +23 -0
  21. package/lib/types/providers/hindsight.d.ts +19 -0
  22. package/lib/types/providers/holographic.d.ts +22 -0
  23. package/lib/types/providers/honcho.d.ts +18 -0
  24. package/lib/types/providers/http.d.ts +32 -0
  25. package/lib/types/providers/mem0.d.ts +17 -0
  26. package/lib/types/providers/openviking.d.ts +31 -0
  27. package/lib/types/providers/provider.d.ts +38 -0
  28. package/lib/types/providers/retaindb.d.ts +16 -0
  29. package/lib/types/providers/supermemory.d.ts +16 -0
  30. package/lib/types/rpc.d.ts +1 -1
  31. package/lib/types/service.d.ts +54 -6
  32. package/lib/types/shared/contracts.d.ts +261 -1
  33. package/lib/types/subagent.d.ts +10 -2
  34. package/package.json +16 -4
@@ -2,10 +2,11 @@ import { type ClientConnectionHandle, type ClientSettingsScope, type ClientSetti
2
2
  export declare class MnemonSettingsScope<T extends object> implements ClientSettingsScope<T> {
3
3
  private readonly connection;
4
4
  private readonly namespace;
5
+ private readonly requestTimeoutMs;
5
6
  private snapshot;
6
7
  private readonly listeners;
7
8
  private tail;
8
- constructor(connection: ClientConnectionHandle, namespace?: string);
9
+ constructor(connection: ClientConnectionHandle, namespace?: string, requestTimeoutMs?: number);
9
10
  getSnapshot: () => ClientSettingsSnapshot<T>;
10
11
  subscribe: (listener: () => void) => (() => void);
11
12
  set(field: string, value: unknown): Promise<void>;
@@ -17,5 +18,6 @@ export declare class MnemonSettingsScope<T extends object> implements ClientSett
17
18
  mutate(ops: SettingsOperation[]): Promise<void>;
18
19
  private load;
19
20
  private write;
21
+ private call;
20
22
  private publish;
21
23
  }
@@ -117,6 +117,7 @@ export interface HostAgent {
117
117
  origin?: 'subagent';
118
118
  delegationDepth?: number;
119
119
  cwd?: string;
120
+ agentPreset?: string;
120
121
  };
121
122
  events: readonly HostSessionEvent[];
122
123
  };
@@ -125,9 +126,29 @@ export interface HostAgent {
125
126
  steer(message: HostUserMessage): void;
126
127
  inject(message: HostUserMessage): void;
127
128
  }
129
+ export interface HostAgentHandle {
130
+ agent: HostAgent;
131
+ dispose(): Promise<void>;
132
+ }
133
+ export interface CreateHostAgentOptions {
134
+ sessionId: string;
135
+ meta?: {
136
+ cwd?: string;
137
+ agentPreset?: string;
138
+ };
139
+ agentOptions?: {
140
+ provider?: string;
141
+ model?: string;
142
+ maxTokens?: number;
143
+ };
144
+ signal?: AbortSignal;
145
+ setup?: (agentCtx: HostAgentContext) => unknown | Promise<unknown>;
146
+ }
128
147
  export interface HostAgentsService {
129
148
  get(id: string): HostAgent | undefined;
130
149
  roots(): HostAgent[];
150
+ /** DSH rc.6+ factory for an owned, clean top-level Agent. */
151
+ create?(options: CreateHostAgentOptions): Promise<HostAgentHandle>;
131
152
  }
132
153
  export interface HostWorkspace {
133
154
  readonly id: string;
@@ -187,16 +208,29 @@ export interface HostSubagentsService {
187
208
  persona?: string;
188
209
  }): Promise<HostSubagentRun>;
189
210
  }
211
+ export interface HostLlmService {
212
+ listProviders(): Array<{
213
+ id: string;
214
+ name: string;
215
+ }>;
216
+ listModels(provider: string): Promise<Array<{
217
+ id: string;
218
+ name: string;
219
+ description?: string;
220
+ }>>;
221
+ }
190
222
  export interface HostContextShape {
191
223
  tools: {
192
224
  register(definition: ToolDefinition): unknown;
193
225
  };
194
226
  commands: CommandService;
195
227
  settings: HostSettingsService;
196
- connection: HostConnectionHandle;
228
+ /** Web-only transport; absent from non-Web profiles such as Headless. */
229
+ connection?: HostConnectionHandle;
197
230
  agents: HostAgentsService;
198
231
  subagents: HostSubagentsService;
199
- workspaceRegistry: HostWorkspaceRegistry;
232
+ /** Web workbench catalog; Agent execution routes by session cwd without it. */
233
+ workspaceRegistry?: HostWorkspaceRegistry;
200
234
  get(name: string): unknown;
201
235
  inject(services: string[], callback: (ctx: HostContextShape) => void): unknown;
202
236
  on(name: string, listener: (...args: never[]) => unknown): () => unknown;
@@ -6,7 +6,8 @@ import type { DocumentMutation } from './documents.ts';
6
6
  import { MnemonSubagentCoordinator, type DelegatedWriteResult } from './subagent.ts';
7
7
  import { type TurnMemoryActivitySnapshot } from './activity.ts';
8
8
  import type { RuntimeMemoryController } from './runtime-memory.ts';
9
- import type { AssistantMessageText, LifecycleSnapshot } from './shared/contracts.ts';
9
+ import type { AssistantMessageText, LifecycleSnapshot, TaskAgentModelCatalog } from './shared/contracts.ts';
10
+ import type { PreparedMemoryPlacement } from './provider-placement.ts';
10
11
  interface AgentRuntimeSource {
11
12
  forAgent(agent: HostAgent): {
12
13
  runtimeMemory: RuntimeMemoryController;
@@ -26,11 +27,16 @@ export declare class MnemonLifecycle {
26
27
  private readonly runtimeSource?;
27
28
  private readonly owners;
28
29
  private readonly counters;
30
+ /** Creation ids reserved before DSH publishes clean task-root Agents. */
31
+ private readonly taskAgentIds;
29
32
  /** Bounded process-local replay fence for finalized-message write actions. */
30
33
  private readonly supervisedWritebacks;
31
34
  constructor(ctx: HostContextShape, coordinator: MnemonSubagentCoordinator, config: ResolvedConfig, runtimeSource?: AgentRuntimeSource | undefined);
32
35
  start(): () => void;
33
- snapshot(sessionId?: string): LifecycleSnapshot;
36
+ snapshot(sessionId?: string, workspaceRoot?: string): LifecycleSnapshot;
37
+ /** Provider/model directory used by Settings without requiring a live session. */
38
+ taskAgentModels(includeCatalog?: boolean): Promise<TaskAgentModelCatalog>;
39
+ private availableAgent;
34
40
  workspaceRoot(sessionId?: string): string | undefined;
35
41
  /** Settled memory-tool activity for all turns, resolved per session. */
36
42
  turnActivities(sessionId: string): TurnMemoryActivitySnapshot;
@@ -39,15 +45,36 @@ export declare class MnemonLifecycle {
39
45
  recall(sessionId: string, request: SearchRequest, signal?: AbortSignal): Promise<import("./subagent.ts").DelegatedRecallResult>;
40
46
  related(sessionId: string, id: string, memoryBodyId?: string, signal?: AbortSignal): Promise<import("./subagent.ts").DelegatedRecallResult>;
41
47
  answer(sessionId: string, query: string, evidence: Insight[], signal?: AbortSignal): Promise<import("./subagent.ts").DelegatedAnswerResult>;
48
+ /** Synthesize a Web Agent Query without borrowing a conversation Agent or its history. */
49
+ answerTask(sessionId: string, query: string, evidence: Insight[], workspaceRoot?: string, signal?: AbortSignal): Promise<import("./subagent.ts").DelegatedAnswerResult>;
42
50
  remember(sessionId: string, request: RememberRequest, signal?: AbortSignal): Promise<DelegatedWriteResult>;
43
51
  runtime(sessionId: string, request: RuntimeMemoryMutation, signal?: AbortSignal): Promise<import("./subagent.ts").CoordinatedRuntimeMemoryResult>;
44
52
  documents(sessionId: string): import("./documents.ts").DocumentSnapshot;
45
53
  document(sessionId: string, id: string): import("./documents.ts").DocumentView;
46
54
  searchDocuments(sessionId: string, query: string, includeArchived?: boolean, limit?: number): Promise<import("./documents.ts").DocumentSearchResult>;
47
55
  mutateDocument(sessionId: string, request: DocumentMutation, signal?: AbortSignal): Promise<import("./subagent.ts").CoordinatedDocumentResult>;
48
- archiveDocument(sessionId: string, id: string, signal?: AbortSignal): Promise<import("./subagent.ts").CoordinatedDocumentResult>;
56
+ archiveDocument(sessionId: string, id: string, workspaceRoot?: string, signal?: AbortSignal): Promise<import("./subagent.ts").CoordinatedDocumentResult>;
49
57
  mutate(sessionId: string, operation: string, request: unknown, signal?: AbortSignal): Promise<DelegatedWriteResult>;
58
+ placeProvider(sessionId: string, body: {
59
+ name: string;
60
+ description: string;
61
+ }, prepared: PreparedMemoryPlacement, signal?: AbortSignal): Promise<import("./shared/contracts.ts").MemoryPlacementDecision>;
62
+ maintainMetadata(sessionId: string, memoryBodyIds: readonly string[], workspaceRoot?: string, signal?: AbortSignal): Promise<import("./shared/contracts.ts").MemoryBodyMetadataMaintenanceResult>;
50
63
  supervise(sessionId: string, content: string, idempotencyKey?: string, signal?: AbortSignal): Promise<SupervisedWritebackResult>;
64
+ /** Run a Web workbench distillation under a fresh top-level task Agent. */
65
+ superviseTask(sessionId: string, content: string, idempotencyKey?: string, workspaceRoot?: string, signal?: AbortSignal): Promise<SupervisedWritebackResult>;
66
+ private superviseResolved;
51
67
  private liveAgent;
68
+ /**
69
+ * Run session-independent maintenance under a fresh top-level Agent. Its cwd
70
+ * is the explicit Web workbench scope, so LiveMnemonRuntime resolves the same
71
+ * workspace graph without borrowing conversation history or ownership.
72
+ */
73
+ private runTaskAgent;
74
+ /** Resolve the same model route and preset composition as an ordinary fresh DSH Agent. */
75
+ private taskAgentCreation;
76
+ /** Resolve a complete task route for both status admission and actual creation. */
77
+ private taskAgentModelRoute;
78
+ private taskAgentModelOptions;
52
79
  private install;
53
80
  }
@@ -1,12 +1,15 @@
1
1
  import type { MnemonRunner } from './runner.ts';
2
- import type { CreateMemoryBodyRequest, MemoryBody, UpdateMemoryBodyRequest } from './shared/contracts.ts';
2
+ import type { MemoryPlacementCandidate } from './provider-placement.ts';
3
+ import type { CreateMemoryBodyRequest, MemoryBody, MemoryPlacementDecision, MemoryProviderServiceCatalog, MemoryProviderServiceView, MemoryProviderConnection, MemoryProviderId, MemoryBodyMetadataUpdate, OpenVikingBodyConnection, UpdateMemoryBodyRequest } from './shared/contracts.ts';
4
+ import type { ProviderMemorySpace } from './providers/provider.ts';
3
5
  export type { CreateMemoryBodyRequest, MemoryBody, UpdateMemoryBodyRequest } from './shared/contracts.ts';
4
6
  export declare function validateMemoryBodyId(value: string): string;
5
7
  /**
6
8
  * Persistent metadata layered over Mnemon's native named stores.
7
9
  *
8
- * The registry lives beside the store directories, while each body keeps using
9
- * Mnemon's stable `<dataDir>/data/<id>/mnemon.db` layout.
10
+ * Native metadata lives beside Store directories so existing Mnemon Packs stay
11
+ * compatible. External connection metadata lives under state and is never
12
+ * included in Memory Space Packs.
10
13
  */
11
14
  export declare class MemoryBodyRegistry {
12
15
  readonly runner: MnemonRunner;
@@ -14,13 +17,30 @@ export declare class MemoryBodyRegistry {
14
17
  private readonly now;
15
18
  readonly directory: string;
16
19
  readonly registryPath: string;
20
+ readonly providerRegistryPath: string;
17
21
  private bodies;
22
+ private services;
23
+ private serviceEnabled;
18
24
  constructor(runner: MnemonRunner, persistent?: boolean, now?: () => Date);
19
25
  list(): MemoryBody[];
20
26
  active(): MemoryBody[];
21
27
  get(id: string): MemoryBody;
22
- create(request: CreateMemoryBodyRequest, signal?: AbortSignal): Promise<MemoryBody>;
28
+ openVikingConnection(id: string): OpenVikingBodyConnection;
29
+ providerConnection(id: string, expectedProviderId?: MemoryProviderId): MemoryProviderConnection;
30
+ providerServiceConfigured(providerId: MemoryProviderId): boolean;
31
+ providerServiceEnabled(providerId: MemoryProviderId): boolean;
32
+ providerServices(options?: {
33
+ includeSecrets?: boolean;
34
+ }): MemoryProviderServiceCatalog;
35
+ updateProviderService(providerId: MemoryProviderId, settings: MemoryProviderConnection, clearSecrets?: readonly string[], enabled?: boolean): MemoryProviderServiceView;
36
+ resolveProviderService(providerId: MemoryProviderId, settings: MemoryProviderConnection, clearSecrets?: readonly string[]): MemoryProviderConnection;
37
+ /** Atomically replace one provider's local projections after authoritative discovery. */
38
+ syncProviderService(providerId: MemoryProviderId, service: MemoryProviderConnection, discovered: readonly ProviderMemorySpace[]): MemoryProviderServiceView;
39
+ placementCandidates(request: Pick<CreateMemoryBodyRequest, 'connection' | 'providerConnections' | 'openViking'>): MemoryPlacementCandidate[];
40
+ create(request: CreateMemoryBodyRequest, signal?: AbortSignal, placement?: MemoryPlacementDecision): Promise<MemoryBody>;
23
41
  update(id: string, request: UpdateMemoryBodyRequest): MemoryBody;
42
+ /** Validate every model-authored update before committing the batch. */
43
+ updateMetadata(updates: readonly MemoryBodyMetadataUpdate[]): MemoryBody[];
24
44
  remove(id: string, signal?: AbortSignal): Promise<MemoryBody>;
25
45
  setActive(id: string, active: boolean): MemoryBody;
26
46
  /** Refresh metadata after an atomic Pack import replaced the data component. */
@@ -30,4 +50,5 @@ export declare class MemoryBodyRegistry {
30
50
  private nativeStoreIds;
31
51
  private view;
32
52
  private save;
53
+ private writeRegistry;
33
54
  }
@@ -4,9 +4,12 @@ export interface ProcessResult {
4
4
  exitCode: number | null;
5
5
  }
6
6
  export interface ProcessOptions {
7
- signal?: AbortSignal;
7
+ signal?: AbortSignal | undefined;
8
8
  timeoutMs: number;
9
9
  maxOutputBytes?: number;
10
+ cwd?: string | undefined;
11
+ env?: NodeJS.ProcessEnv | undefined;
12
+ label?: string | undefined;
10
13
  }
11
14
  export type ProcessRunner = (command: string, args: readonly string[], options: ProcessOptions) => Promise<ProcessResult>;
12
15
  /** Spawn without a shell, with bounded output and cooperative cancellation. */
@@ -0,0 +1,26 @@
1
+ import type { AutomaticMemoryPlacementRequest, MemoryPlacementDecision, MemoryProviderCapabilities, MemoryProviderId } from './shared/contracts.ts';
2
+ export interface MemoryPlacementCandidate {
3
+ id: MemoryProviderId;
4
+ label: string;
5
+ kind: 'local' | 'remote';
6
+ configured: boolean;
7
+ summary: string;
8
+ capabilities: MemoryProviderCapabilities;
9
+ }
10
+ export interface PreparedMemoryPlacement {
11
+ prompt: string;
12
+ candidates: MemoryPlacementCandidate[];
13
+ appliedRules: string[];
14
+ selectorBrief: string;
15
+ }
16
+ export interface LlmMemoryPlacementSelection {
17
+ providerId: string;
18
+ reason: string;
19
+ confidence: string;
20
+ }
21
+ export declare function prepareMemoryPlacement(request: AutomaticMemoryPlacementRequest, candidates: readonly MemoryPlacementCandidate[]): PreparedMemoryPlacement;
22
+ export declare function rulesOnlyPlacement(prepared: PreparedMemoryPlacement, now?: () => Date): MemoryPlacementDecision | undefined;
23
+ export declare function finalizeLlmPlacement(prepared: PreparedMemoryPlacement, selection: LlmMemoryPlacementSelection, delegation: {
24
+ runId: string;
25
+ provider: string;
26
+ }, now?: () => Date): MemoryPlacementDecision;
@@ -0,0 +1,31 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import { type ProcessRunner } from '../process.ts';
4
+ import type { Insight, MemoryBody, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderConnection, RememberRequest, SearchRequest } from '../shared/contracts.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ interface ByteRoverProviderOptions {
7
+ process?: ProcessRunner;
8
+ queryTimeoutMs?: number;
9
+ curateTimeoutMs?: number;
10
+ }
11
+ export declare class ByteRoverProvider implements MemoryProviderAdapter {
12
+ private readonly memoryBodies;
13
+ readonly id: "byterover";
14
+ private readonly process;
15
+ private readonly queryTimeoutMs;
16
+ private readonly curateTimeoutMs;
17
+ private readonly statusCache;
18
+ private readonly statusInFlight;
19
+ constructor(memoryBodies: MemoryBodyRegistry, options?: ByteRoverProviderOptions);
20
+ discover(connection: MemoryProviderConnection): Promise<ProviderMemorySpace[]>;
21
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
22
+ invalidateStatus(memoryBodyId?: string): void;
23
+ private checkStatus;
24
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
25
+ graph(body: MemoryBody): Promise<MemoryGraphSnapshot>;
26
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
27
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
28
+ private connection;
29
+ private run;
30
+ }
31
+ export {};
@@ -0,0 +1,23 @@
1
+ import type { MemoryProviderConfigField, MemoryProviderConnection, MemoryProviderDescriptor, MemoryProviderId } from '../shared/contracts.ts';
2
+ export declare const MEMORY_PROVIDER_IDS: readonly ["mnemon-native", "openviking", "honcho", "mem0", "hindsight", "holographic", "retaindb", "byterover", "supermemory"];
3
+ export declare const MEMORY_PROVIDER_ID_SET: Set<MemoryProviderId>;
4
+ export declare const MEMORY_PROVIDER_CATALOG: readonly MemoryProviderDescriptor[];
5
+ export declare function memoryProviderDescriptor(id: MemoryProviderId): MemoryProviderDescriptor;
6
+ export declare function isMemoryProviderId(value: unknown): value is MemoryProviderId;
7
+ export declare function providerServiceFields(providerId: MemoryProviderId): MemoryProviderConfigField[];
8
+ export declare function providerMemoryFields(providerId: MemoryProviderId): MemoryProviderConfigField[];
9
+ export declare function splitProviderConnection(providerId: MemoryProviderId, connection: MemoryProviderConnection | undefined): {
10
+ service: MemoryProviderConnection;
11
+ memory: MemoryProviderConnection;
12
+ };
13
+ export declare function normalizeProviderServiceConnection(providerId: MemoryProviderId, input: MemoryProviderConnection | undefined, previous?: MemoryProviderConnection, clearSecrets?: readonly string[]): MemoryProviderConnection;
14
+ export declare function normalizeProviderMemoryConnection(providerId: MemoryProviderId, input: MemoryProviderConnection | undefined, previous?: MemoryProviderConnection): MemoryProviderConnection;
15
+ export declare function normalizeProviderConnection(providerId: MemoryProviderId, input: MemoryProviderConnection | undefined, previous?: MemoryProviderConnection, clearSecrets?: readonly string[]): MemoryProviderConnection;
16
+ export declare function publicScopedProviderConnection(providerId: MemoryProviderId, scope: MemoryProviderConfigField['scope'], connection: MemoryProviderConnection): {
17
+ settings: MemoryProviderConnection;
18
+ configuredSecrets: string[];
19
+ };
20
+ export declare function publicProviderConnection(providerId: MemoryProviderId, connection: MemoryProviderConnection): {
21
+ settings: MemoryProviderConnection;
22
+ configuredSecrets: string[];
23
+ };
@@ -0,0 +1,19 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { EdgeType, Insight, MemoryBody, MemoryGraphSnapshot, MemoryListRequest, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import { HttpMemoryProvider, type HttpProviderOptions } from './http.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ export declare class HindsightProvider extends HttpMemoryProvider implements MemoryProviderAdapter {
7
+ readonly id: "hindsight";
8
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
9
+ discover(connection: Record<string, string | number | boolean>, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
13
+ graph(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot>;
14
+ related(body: MemoryBody, id: string, depth: number, _edge?: EdgeType, signal?: AbortSignal): Promise<Insight[]>;
15
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
16
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
17
+ private bankPath;
18
+ private headers;
19
+ }
@@ -0,0 +1,22 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderConnection, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
5
+ export declare class HolographicProvider implements MemoryProviderAdapter {
6
+ private readonly memoryBodies;
7
+ readonly id: "holographic";
8
+ constructor(memoryBodies: MemoryBodyRegistry);
9
+ discover(connection: MemoryProviderConnection): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest): Promise<Insight[]>;
13
+ graph(body: MemoryBody): Promise<MemoryGraphSnapshot>;
14
+ related(body: MemoryBody, id: string, _depth: number): Promise<Insight[]>;
15
+ remember(body: MemoryBody, request: RememberRequest): Promise<JsonValue>;
16
+ forget(body: MemoryBody, id: string): Promise<JsonValue>;
17
+ private connection;
18
+ private path;
19
+ private load;
20
+ private save;
21
+ private stats;
22
+ }
@@ -0,0 +1,18 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryListRequest, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import { HttpMemoryProvider, type HttpProviderOptions } from './http.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ export declare class HonchoProvider extends HttpMemoryProvider implements MemoryProviderAdapter {
7
+ readonly id: "honcho";
8
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
9
+ discover(connection: Record<string, string | number | boolean>, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
13
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
14
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
15
+ private basePath;
16
+ private scope;
17
+ private headers;
18
+ }
@@ -0,0 +1,32 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderConnection, MemoryProviderId } from '../shared/contracts.ts';
4
+ export interface HttpProviderOptions {
5
+ fetch?: typeof fetch;
6
+ requestTimeoutMs?: number;
7
+ }
8
+ export interface JsonRequestOptions {
9
+ method?: string;
10
+ headers?: HeadersInit;
11
+ json?: JsonValue;
12
+ signal?: AbortSignal | undefined;
13
+ timeoutMs?: number;
14
+ }
15
+ export declare function jsonObject(value: unknown): Record<string, unknown> | undefined;
16
+ export declare function jsonString(value: unknown): string | undefined;
17
+ export declare function jsonNumber(value: unknown): number | undefined;
18
+ export declare function jsonArray(value: unknown): unknown[];
19
+ export declare function firstArray(value: unknown, ...keys: string[]): unknown[];
20
+ /** Shared timeout, cancellation, error, and projection behavior for HTTP providers. */
21
+ export declare abstract class HttpMemoryProvider {
22
+ protected readonly memoryBodies: MemoryBodyRegistry;
23
+ abstract readonly id: MemoryProviderId;
24
+ protected readonly requestFetch: typeof fetch;
25
+ protected readonly requestTimeoutMs: number;
26
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
27
+ abstract list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
28
+ graph(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot>;
29
+ protected connection(body: MemoryBody): MemoryProviderConnection;
30
+ protected request(body: MemoryBody, path: string, options?: JsonRequestOptions): Promise<unknown>;
31
+ protected requestConnection(connection: MemoryProviderConnection, path: string, options?: JsonRequestOptions): Promise<unknown>;
32
+ }
@@ -0,0 +1,17 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryListRequest, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import { HttpMemoryProvider, type HttpProviderOptions } from './http.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ export declare class Mem0Provider extends HttpMemoryProvider implements MemoryProviderAdapter {
7
+ readonly id: "mem0";
8
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
9
+ discover(connection: Record<string, string | number | boolean>, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
13
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
14
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
15
+ private filters;
16
+ private headers;
17
+ }
@@ -0,0 +1,31 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderConnection, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
5
+ interface OpenVikingProviderOptions {
6
+ fetch?: typeof fetch;
7
+ requestTimeoutMs?: number;
8
+ settlementTimeoutMs?: number;
9
+ pollIntervalMs?: number;
10
+ }
11
+ export declare class OpenVikingProvider implements MemoryProviderAdapter {
12
+ private readonly memoryBodies;
13
+ readonly id: "openviking";
14
+ private readonly requestFetch;
15
+ private readonly requestTimeoutMs;
16
+ private readonly settlementTimeoutMs;
17
+ private readonly pollIntervalMs;
18
+ constructor(memoryBodies: MemoryBodyRegistry, options?: OpenVikingProviderOptions);
19
+ discover(connection: MemoryProviderConnection, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
20
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
21
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
22
+ graph(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot>;
23
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
24
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
25
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
26
+ private connection;
27
+ private settleTask;
28
+ private request;
29
+ private requestConnection;
30
+ }
31
+ export {};
@@ -0,0 +1,38 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { EdgeType, Insight, MemoryBody, MemoryBodyStats, MemoryGraphSnapshot, MemoryListRequest, MemoryProviderConnection, RememberRequest, SearchRequest } from '../shared/contracts.ts';
3
+ export interface ProviderBodyStatus {
4
+ healthy: boolean;
5
+ error?: string;
6
+ stats?: MemoryBodyStats;
7
+ }
8
+ export interface ProviderSearchResult {
9
+ results: Insight[];
10
+ hint?: string;
11
+ }
12
+ /** One provider-owned namespace projected into DSH as a Memory Space. */
13
+ export interface ProviderMemorySpace {
14
+ /** Stable identifier owned by the provider, never a DSH-generated title. */
15
+ externalId: string;
16
+ name: string;
17
+ description: string;
18
+ connection: MemoryProviderConnection;
19
+ }
20
+ /**
21
+ * Third-layer memory data plane. DSH owns routing and lifecycle; adapters own
22
+ * only one body's persistence and retrieval semantics.
23
+ */
24
+ export interface MemoryProviderAdapter {
25
+ readonly id: MemoryBody['provider']['id'];
26
+ /** Enumerate the complete set of namespaces visible to this service connection. */
27
+ discover?(connection: MemoryProviderConnection, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
28
+ /** Drop a short-lived health result before an explicit user reconnect. */
29
+ invalidateStatus?(memoryBodyId?: string): void;
30
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
31
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
32
+ graph(body: MemoryBody, signal?: AbortSignal): Promise<MemoryGraphSnapshot>;
33
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
34
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
35
+ related?(body: MemoryBody, id: string, depth: number, edge?: EdgeType, signal?: AbortSignal): Promise<Insight[]>;
36
+ link?(body: MemoryBody, sourceId: string, targetId: string, type: EdgeType, weight: number, reason?: string, signal?: AbortSignal): Promise<JsonValue>;
37
+ forget?(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
38
+ }
@@ -0,0 +1,16 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryListRequest, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import { HttpMemoryProvider, type HttpProviderOptions } from './http.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ export declare class RetainDbProvider extends HttpMemoryProvider implements MemoryProviderAdapter {
7
+ readonly id: "retaindb";
8
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
9
+ discover(connection: Record<string, string | number | boolean>, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
13
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
14
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
15
+ private headers;
16
+ }
@@ -0,0 +1,16 @@
1
+ import type { JsonValue } from '../contracts.ts';
2
+ import type { MemoryBodyRegistry } from '../memory-bodies.ts';
3
+ import type { Insight, MemoryBody, MemoryListRequest, RememberRequest, SearchRequest } from '../shared/contracts.ts';
4
+ import { HttpMemoryProvider, type HttpProviderOptions } from './http.ts';
5
+ import type { MemoryProviderAdapter, ProviderBodyStatus, ProviderMemorySpace, ProviderSearchResult } from './provider.ts';
6
+ export declare class SupermemoryProvider extends HttpMemoryProvider implements MemoryProviderAdapter {
7
+ readonly id: "supermemory";
8
+ constructor(memoryBodies: MemoryBodyRegistry, options?: HttpProviderOptions);
9
+ discover(connection: Record<string, string | number | boolean>, signal?: AbortSignal): Promise<ProviderMemorySpace[]>;
10
+ status(body: MemoryBody, signal?: AbortSignal): Promise<ProviderBodyStatus>;
11
+ search(body: MemoryBody, request: SearchRequest, signal?: AbortSignal): Promise<ProviderSearchResult>;
12
+ list(body: MemoryBody, request: MemoryListRequest, signal?: AbortSignal): Promise<Insight[]>;
13
+ remember(body: MemoryBody, request: RememberRequest, signal?: AbortSignal): Promise<JsonValue>;
14
+ forget(body: MemoryBody, id: string, signal?: AbortSignal): Promise<JsonValue>;
15
+ private headers;
16
+ }
@@ -11,6 +11,6 @@ type RuntimeInput = MnemonService | LiveMnemonRuntime;
11
11
  export declare function createReadHandler(input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector, versions?: VersionUpdateManager): HostRpcHandler;
12
12
  export declare function createWriteHandler(input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, versions?: VersionUpdateManager): HostRpcHandler;
13
13
  /** Backup payloads contain private memory and therefore remain loopback-only. */
14
- export declare function createPackHandler(manager: MnemonPackManager, writeEnabled?: boolean | (() => boolean)): HostRpcHandler;
14
+ export declare function createPackHandler(input: MnemonPackManager | LiveMnemonRuntime, writeEnabled?: boolean | (() => boolean)): HostRpcHandler;
15
15
  /** Read operations are available to trusted Web hosts; local mutations stay loopback-only. */
16
16
  export declare function registerRpc(connection: HostConnectionHandle, input: RuntimeInput, lifecycle?: MnemonLifecycle, runtimeMemory?: RuntimeMemoryController, storage?: StorageScopeInspector, packs?: MnemonPackManager, versions?: VersionUpdateManager): void;