gnosys 4.0.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.
- package/LICENSE +21 -0
- package/README.md +1387 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3753 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2267 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/archive.d.ts +95 -0
- package/dist/lib/archive.d.ts.map +1 -0
- package/dist/lib/archive.js +311 -0
- package/dist/lib/archive.js.map +1 -0
- package/dist/lib/ask.d.ts +77 -0
- package/dist/lib/ask.d.ts.map +1 -0
- package/dist/lib/ask.js +316 -0
- package/dist/lib/ask.js.map +1 -0
- package/dist/lib/audit.d.ts +47 -0
- package/dist/lib/audit.d.ts.map +1 -0
- package/dist/lib/audit.js +136 -0
- package/dist/lib/audit.js.map +1 -0
- package/dist/lib/bootstrap.d.ts +56 -0
- package/dist/lib/bootstrap.d.ts.map +1 -0
- package/dist/lib/bootstrap.js +163 -0
- package/dist/lib/bootstrap.js.map +1 -0
- package/dist/lib/config.d.ts +239 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +371 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/dashboard.d.ts +81 -0
- package/dist/lib/dashboard.d.ts.map +1 -0
- package/dist/lib/dashboard.js +314 -0
- package/dist/lib/dashboard.js.map +1 -0
- package/dist/lib/db.d.ts +182 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +620 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/dbSearch.d.ts +65 -0
- package/dist/lib/dbSearch.d.ts.map +1 -0
- package/dist/lib/dbSearch.js +239 -0
- package/dist/lib/dbSearch.js.map +1 -0
- package/dist/lib/dbWrite.d.ts +56 -0
- package/dist/lib/dbWrite.d.ts.map +1 -0
- package/dist/lib/dbWrite.js +171 -0
- package/dist/lib/dbWrite.js.map +1 -0
- package/dist/lib/dream.d.ts +170 -0
- package/dist/lib/dream.d.ts.map +1 -0
- package/dist/lib/dream.js +706 -0
- package/dist/lib/dream.js.map +1 -0
- package/dist/lib/embeddings.d.ts +84 -0
- package/dist/lib/embeddings.d.ts.map +1 -0
- package/dist/lib/embeddings.js +226 -0
- package/dist/lib/embeddings.js.map +1 -0
- package/dist/lib/export.d.ts +92 -0
- package/dist/lib/export.d.ts.map +1 -0
- package/dist/lib/export.js +362 -0
- package/dist/lib/export.js.map +1 -0
- package/dist/lib/federated.d.ts +113 -0
- package/dist/lib/federated.d.ts.map +1 -0
- package/dist/lib/federated.js +346 -0
- package/dist/lib/federated.js.map +1 -0
- package/dist/lib/graph.d.ts +50 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +118 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/history.d.ts +39 -0
- package/dist/lib/history.d.ts.map +1 -0
- package/dist/lib/history.js +112 -0
- package/dist/lib/history.js.map +1 -0
- package/dist/lib/hybridSearch.d.ts +80 -0
- package/dist/lib/hybridSearch.d.ts.map +1 -0
- package/dist/lib/hybridSearch.js +296 -0
- package/dist/lib/hybridSearch.js.map +1 -0
- package/dist/lib/import.d.ts +52 -0
- package/dist/lib/import.d.ts.map +1 -0
- package/dist/lib/import.js +365 -0
- package/dist/lib/import.js.map +1 -0
- package/dist/lib/ingest.d.ts +51 -0
- package/dist/lib/ingest.d.ts.map +1 -0
- package/dist/lib/ingest.js +144 -0
- package/dist/lib/ingest.js.map +1 -0
- package/dist/lib/lensing.d.ts +35 -0
- package/dist/lib/lensing.d.ts.map +1 -0
- package/dist/lib/lensing.js +85 -0
- package/dist/lib/lensing.js.map +1 -0
- package/dist/lib/llm.d.ts +84 -0
- package/dist/lib/llm.d.ts.map +1 -0
- package/dist/lib/llm.js +386 -0
- package/dist/lib/llm.js.map +1 -0
- package/dist/lib/lock.d.ts +28 -0
- package/dist/lib/lock.d.ts.map +1 -0
- package/dist/lib/lock.js +145 -0
- package/dist/lib/lock.js.map +1 -0
- package/dist/lib/maintenance.d.ts +124 -0
- package/dist/lib/maintenance.d.ts.map +1 -0
- package/dist/lib/maintenance.js +587 -0
- package/dist/lib/maintenance.js.map +1 -0
- package/dist/lib/migrate.d.ts +19 -0
- package/dist/lib/migrate.d.ts.map +1 -0
- package/dist/lib/migrate.js +260 -0
- package/dist/lib/migrate.js.map +1 -0
- package/dist/lib/preferences.d.ts +49 -0
- package/dist/lib/preferences.d.ts.map +1 -0
- package/dist/lib/preferences.js +149 -0
- package/dist/lib/preferences.js.map +1 -0
- package/dist/lib/projectIdentity.d.ts +66 -0
- package/dist/lib/projectIdentity.d.ts.map +1 -0
- package/dist/lib/projectIdentity.js +148 -0
- package/dist/lib/projectIdentity.js.map +1 -0
- package/dist/lib/recall.d.ts +82 -0
- package/dist/lib/recall.d.ts.map +1 -0
- package/dist/lib/recall.js +289 -0
- package/dist/lib/recall.js.map +1 -0
- package/dist/lib/resolver.d.ts +116 -0
- package/dist/lib/resolver.d.ts.map +1 -0
- package/dist/lib/resolver.js +372 -0
- package/dist/lib/resolver.js.map +1 -0
- package/dist/lib/retry.d.ts +24 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +60 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/rulesGen.d.ts +51 -0
- package/dist/lib/rulesGen.d.ts.map +1 -0
- package/dist/lib/rulesGen.js +167 -0
- package/dist/lib/rulesGen.js.map +1 -0
- package/dist/lib/search.d.ts +51 -0
- package/dist/lib/search.d.ts.map +1 -0
- package/dist/lib/search.js +190 -0
- package/dist/lib/search.js.map +1 -0
- package/dist/lib/staticSearch.d.ts +70 -0
- package/dist/lib/staticSearch.d.ts.map +1 -0
- package/dist/lib/staticSearch.js +162 -0
- package/dist/lib/staticSearch.js.map +1 -0
- package/dist/lib/store.d.ts +79 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/lib/store.js +227 -0
- package/dist/lib/store.js.map +1 -0
- package/dist/lib/structuredIngest.d.ts +37 -0
- package/dist/lib/structuredIngest.d.ts.map +1 -0
- package/dist/lib/structuredIngest.js +208 -0
- package/dist/lib/structuredIngest.js.map +1 -0
- package/dist/lib/tags.d.ts +26 -0
- package/dist/lib/tags.d.ts.map +1 -0
- package/dist/lib/tags.js +109 -0
- package/dist/lib/tags.js.map +1 -0
- package/dist/lib/timeline.d.ts +34 -0
- package/dist/lib/timeline.d.ts.map +1 -0
- package/dist/lib/timeline.js +116 -0
- package/dist/lib/timeline.js.map +1 -0
- package/dist/lib/trace.d.ts +42 -0
- package/dist/lib/trace.d.ts.map +1 -0
- package/dist/lib/trace.js +338 -0
- package/dist/lib/trace.js.map +1 -0
- package/dist/lib/webIndex.d.ts +28 -0
- package/dist/lib/webIndex.d.ts.map +1 -0
- package/dist/lib/webIndex.js +208 -0
- package/dist/lib/webIndex.js.map +1 -0
- package/dist/lib/webIngest.d.ts +51 -0
- package/dist/lib/webIngest.d.ts.map +1 -0
- package/dist/lib/webIngest.js +533 -0
- package/dist/lib/webIngest.js.map +1 -0
- package/dist/lib/wikilinks.d.ts +63 -0
- package/dist/lib/wikilinks.d.ts.map +1 -0
- package/dist/lib/wikilinks.js +146 -0
- package/dist/lib/wikilinks.js.map +1 -0
- package/dist/sandbox/client.d.ts +82 -0
- package/dist/sandbox/client.d.ts.map +1 -0
- package/dist/sandbox/client.js +128 -0
- package/dist/sandbox/client.js.map +1 -0
- package/dist/sandbox/helper-template.d.ts +14 -0
- package/dist/sandbox/helper-template.d.ts.map +1 -0
- package/dist/sandbox/helper-template.js +285 -0
- package/dist/sandbox/helper-template.js.map +1 -0
- package/dist/sandbox/index.d.ts +10 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +10 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/manager.d.ts +40 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +220 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/sandbox/server.d.ts +44 -0
- package/dist/sandbox/server.d.ts.map +1 -0
- package/dist/sandbox/server.js +661 -0
- package/dist/sandbox/server.js.map +1 -0
- package/package.json +103 -0
- package/prompts/synthesize.md +21 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gnosys Dream Mode — Sleep-time consolidation engine.
|
|
3
|
+
*
|
|
4
|
+
* Metaphor: "closing all the open books overnight."
|
|
5
|
+
*
|
|
6
|
+
* Dream Mode runs during idle periods (configurable threshold) and performs:
|
|
7
|
+
* 1. Confidence decay sweep — apply exponential decay to unreinforced memories
|
|
8
|
+
* 2. Summary generation — hierarchical summaries per category
|
|
9
|
+
* 3. Self-critique — score memories but NEVER delete; produces a review list
|
|
10
|
+
* 4. Relationship discovery — find new links between memories
|
|
11
|
+
* 5. Deduplication pass — flag similar memories for human review
|
|
12
|
+
*
|
|
13
|
+
* Safety guarantees:
|
|
14
|
+
* - Never deletes or archives autonomously
|
|
15
|
+
* - All changes are non-destructive (confidence updates, summaries, review flags)
|
|
16
|
+
* - Configurable max runtime (default 30 min)
|
|
17
|
+
* - Off by default — must be explicitly enabled
|
|
18
|
+
* - Uses cheap/local LLM (configurable, defaults to Ollama)
|
|
19
|
+
*/
|
|
20
|
+
import { GnosysDB } from "./db.js";
|
|
21
|
+
import { GnosysConfig, LLMProviderName } from "./config.js";
|
|
22
|
+
export interface DreamConfig {
|
|
23
|
+
/** Enable dream mode (default: false) */
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
/** Idle time in minutes before triggering (default: 10) */
|
|
26
|
+
idleMinutes: number;
|
|
27
|
+
/** Max runtime in minutes (default: 30) */
|
|
28
|
+
maxRuntimeMinutes: number;
|
|
29
|
+
/** LLM provider to use for dream operations (default: "ollama") */
|
|
30
|
+
provider: LLMProviderName;
|
|
31
|
+
/** LLM model override for dream operations */
|
|
32
|
+
model?: string;
|
|
33
|
+
/** Enable self-critique scoring (default: true) */
|
|
34
|
+
selfCritique: boolean;
|
|
35
|
+
/** Enable summary generation (default: true) */
|
|
36
|
+
generateSummaries: boolean;
|
|
37
|
+
/** Enable relationship discovery (default: true) */
|
|
38
|
+
discoverRelationships: boolean;
|
|
39
|
+
/** Min memory count before dream mode activates (default: 10) */
|
|
40
|
+
minMemories: number;
|
|
41
|
+
}
|
|
42
|
+
export declare const DEFAULT_DREAM_CONFIG: DreamConfig;
|
|
43
|
+
export interface DreamReport {
|
|
44
|
+
startedAt: string;
|
|
45
|
+
finishedAt: string;
|
|
46
|
+
durationMs: number;
|
|
47
|
+
decayUpdated: number;
|
|
48
|
+
summariesGenerated: number;
|
|
49
|
+
summariesUpdated: number;
|
|
50
|
+
reviewSuggestions: ReviewSuggestion[];
|
|
51
|
+
relationshipsDiscovered: number;
|
|
52
|
+
duplicatesFound: number;
|
|
53
|
+
errors: string[];
|
|
54
|
+
aborted: boolean;
|
|
55
|
+
abortReason?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface ReviewSuggestion {
|
|
58
|
+
memoryId: string;
|
|
59
|
+
title: string;
|
|
60
|
+
reason: string;
|
|
61
|
+
currentConfidence: number;
|
|
62
|
+
suggestedAction: "review" | "consider-archive" | "consider-merge" | "needs-update";
|
|
63
|
+
}
|
|
64
|
+
export declare class GnosysDreamEngine {
|
|
65
|
+
private db;
|
|
66
|
+
private config;
|
|
67
|
+
private dreamConfig;
|
|
68
|
+
private provider;
|
|
69
|
+
private abortRequested;
|
|
70
|
+
private startTime;
|
|
71
|
+
constructor(db: GnosysDB, config: GnosysConfig, dreamConfig?: Partial<DreamConfig>);
|
|
72
|
+
/**
|
|
73
|
+
* Request abort — dream cycle will stop at the next safe checkpoint.
|
|
74
|
+
*/
|
|
75
|
+
abort(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Check if we've exceeded max runtime.
|
|
78
|
+
*/
|
|
79
|
+
private isOvertime;
|
|
80
|
+
/**
|
|
81
|
+
* Check if we should stop (abort requested or overtime).
|
|
82
|
+
*/
|
|
83
|
+
private shouldStop;
|
|
84
|
+
/**
|
|
85
|
+
* Run the full dream cycle.
|
|
86
|
+
* This is the main entry point — runs all dream operations in sequence.
|
|
87
|
+
*/
|
|
88
|
+
dream(onProgress?: (phase: string, detail: string) => void): Promise<DreamReport>;
|
|
89
|
+
private finalize;
|
|
90
|
+
/**
|
|
91
|
+
* Apply exponential decay to all active memories.
|
|
92
|
+
* Formula: decayed = confidence * e^(-λ * days_since_reinforced)
|
|
93
|
+
* Only updates if decayed value differs from stored value by > 0.01.
|
|
94
|
+
*/
|
|
95
|
+
private decaySweep;
|
|
96
|
+
/**
|
|
97
|
+
* Score memories and generate review suggestions.
|
|
98
|
+
* NEVER deletes or archives — only flags for human review.
|
|
99
|
+
*/
|
|
100
|
+
private selfCritique;
|
|
101
|
+
/**
|
|
102
|
+
* Rule-based critique — fast, no LLM needed.
|
|
103
|
+
*/
|
|
104
|
+
private critiquMemory;
|
|
105
|
+
/**
|
|
106
|
+
* LLM-based critique for borderline memories.
|
|
107
|
+
*/
|
|
108
|
+
private llmCritique;
|
|
109
|
+
/**
|
|
110
|
+
* Determine suggested action based on issues.
|
|
111
|
+
*/
|
|
112
|
+
private suggestAction;
|
|
113
|
+
/**
|
|
114
|
+
* Generate or update hierarchical summaries per category.
|
|
115
|
+
* Uses LLM to synthesize category-level overviews.
|
|
116
|
+
*/
|
|
117
|
+
private generateSummaries;
|
|
118
|
+
/**
|
|
119
|
+
* Use LLM to generate a category summary.
|
|
120
|
+
*/
|
|
121
|
+
private summarizeCategory;
|
|
122
|
+
/**
|
|
123
|
+
* Use LLM to discover relationships between memories.
|
|
124
|
+
* Only creates new edges — never removes existing ones.
|
|
125
|
+
*/
|
|
126
|
+
private discoverRelationships;
|
|
127
|
+
/**
|
|
128
|
+
* Use LLM to find relationships for a batch of source memories.
|
|
129
|
+
*/
|
|
130
|
+
private findRelationships;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Manages the dream cycle schedule within a running server.
|
|
134
|
+
* Monitors idle time and triggers dream mode when conditions are met.
|
|
135
|
+
*/
|
|
136
|
+
export declare class DreamScheduler {
|
|
137
|
+
private engine;
|
|
138
|
+
private config;
|
|
139
|
+
private lastActivity;
|
|
140
|
+
private checkInterval;
|
|
141
|
+
private running;
|
|
142
|
+
private currentDream;
|
|
143
|
+
constructor(engine: GnosysDreamEngine, config?: Partial<DreamConfig>);
|
|
144
|
+
/**
|
|
145
|
+
* Record activity — resets the idle timer.
|
|
146
|
+
* Call this on every MCP tool invocation.
|
|
147
|
+
*/
|
|
148
|
+
recordActivity(): void;
|
|
149
|
+
/**
|
|
150
|
+
* Start the scheduler — checks idle time periodically.
|
|
151
|
+
*/
|
|
152
|
+
start(): void;
|
|
153
|
+
/**
|
|
154
|
+
* Stop the scheduler and abort any running dream.
|
|
155
|
+
*/
|
|
156
|
+
stop(): void;
|
|
157
|
+
/**
|
|
158
|
+
* Check if idle long enough to start dreaming.
|
|
159
|
+
*/
|
|
160
|
+
private checkIdle;
|
|
161
|
+
/**
|
|
162
|
+
* Check if currently dreaming.
|
|
163
|
+
*/
|
|
164
|
+
isDreaming(): boolean;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Format a dream report as human-readable text.
|
|
168
|
+
*/
|
|
169
|
+
export declare function formatDreamReport(report: DreamReport): string;
|
|
170
|
+
//# sourceMappingURL=dream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dream.d.ts","sourceRoot":"","sources":["../../src/lib/dream.ts"],"names":[],"mappings":"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"}
|