anno-extension 0.1.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 +7 -0
- package/README.md +30 -0
- package/THIRD_PARTY_NOTICES.md +8 -0
- package/dist/browser-fs.d.ts +14 -0
- package/dist/browser-fs.d.ts.map +1 -0
- package/dist/browser-fs.js +69 -0
- package/dist/browser-fs.js.map +1 -0
- package/dist/config.d.ts +81 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +82 -0
- package/dist/config.js.map +1 -0
- package/dist/consolidate-v2.d.ts +15 -0
- package/dist/consolidate-v2.d.ts.map +1 -0
- package/dist/consolidate-v2.js +125 -0
- package/dist/consolidate-v2.js.map +1 -0
- package/dist/consolidation.d.ts +12 -0
- package/dist/consolidation.d.ts.map +1 -0
- package/dist/consolidation.js +199 -0
- package/dist/consolidation.js.map +1 -0
- package/dist/dedup.d.ts +18 -0
- package/dist/dedup.d.ts.map +1 -0
- package/dist/dedup.js +85 -0
- package/dist/dedup.js.map +1 -0
- package/dist/diagnostics.d.ts +24 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +53 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/embedding-index.d.ts +27 -0
- package/dist/embedding-index.d.ts.map +1 -0
- package/dist/embedding-index.js +111 -0
- package/dist/embedding-index.js.map +1 -0
- package/dist/engine-archive.d.ts +37 -0
- package/dist/engine-archive.d.ts.map +1 -0
- package/dist/engine-archive.js +155 -0
- package/dist/engine-archive.js.map +1 -0
- package/dist/engine-episode-sync.d.ts +19 -0
- package/dist/engine-episode-sync.d.ts.map +1 -0
- package/dist/engine-episode-sync.js +186 -0
- package/dist/engine-episode-sync.js.map +1 -0
- package/dist/engine-injection-text.d.ts +46 -0
- package/dist/engine-injection-text.d.ts.map +1 -0
- package/dist/engine-injection-text.js +271 -0
- package/dist/engine-injection-text.js.map +1 -0
- package/dist/engine-insights.d.ts +22 -0
- package/dist/engine-insights.d.ts.map +1 -0
- package/dist/engine-insights.js +127 -0
- package/dist/engine-insights.js.map +1 -0
- package/dist/engine-links.d.ts +43 -0
- package/dist/engine-links.d.ts.map +1 -0
- package/dist/engine-links.js +223 -0
- package/dist/engine-links.js.map +1 -0
- package/dist/engine-recall-select.d.ts +84 -0
- package/dist/engine-recall-select.d.ts.map +1 -0
- package/dist/engine-recall-select.js +127 -0
- package/dist/engine-recall-select.js.map +1 -0
- package/dist/engine-reinforce.d.ts +18 -0
- package/dist/engine-reinforce.d.ts.map +1 -0
- package/dist/engine-reinforce.js +116 -0
- package/dist/engine-reinforce.js.map +1 -0
- package/dist/engine-scoring-v2.d.ts +35 -0
- package/dist/engine-scoring-v2.d.ts.map +1 -0
- package/dist/engine-scoring-v2.js +178 -0
- package/dist/engine-scoring-v2.js.map +1 -0
- package/dist/engine-v2-mapping.d.ts +17 -0
- package/dist/engine-v2-mapping.d.ts.map +1 -0
- package/dist/engine-v2-mapping.js +190 -0
- package/dist/engine-v2-mapping.js.map +1 -0
- package/dist/engine.d.ts +339 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +1964 -0
- package/dist/engine.js.map +1 -0
- package/dist/eviction.d.ts +14 -0
- package/dist/eviction.d.ts.map +1 -0
- package/dist/eviction.js +26 -0
- package/dist/eviction.js.map +1 -0
- package/dist/extraction.d.ts +11 -0
- package/dist/extraction.d.ts.map +1 -0
- package/dist/extraction.js +261 -0
- package/dist/extraction.js.map +1 -0
- package/dist/full-insights-html.d.ts +9 -0
- package/dist/full-insights-html.d.ts.map +1 -0
- package/dist/full-insights-html.js +422 -0
- package/dist/full-insights-html.js.map +1 -0
- package/dist/full-insights-sections.d.ts +48 -0
- package/dist/full-insights-sections.d.ts.map +1 -0
- package/dist/full-insights-sections.js +231 -0
- package/dist/full-insights-sections.js.map +1 -0
- package/dist/full-insights.d.ts +22 -0
- package/dist/full-insights.d.ts.map +1 -0
- package/dist/full-insights.js +370 -0
- package/dist/full-insights.js.map +1 -0
- package/dist/hash-embedding.d.ts +9 -0
- package/dist/hash-embedding.d.ts.map +1 -0
- package/dist/hash-embedding.js +44 -0
- package/dist/hash-embedding.js.map +1 -0
- package/dist/human-insights.d.ts +28 -0
- package/dist/human-insights.d.ts.map +1 -0
- package/dist/human-insights.js +260 -0
- package/dist/human-insights.js.map +1 -0
- package/dist/i18n.d.ts +64 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +367 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/insights-html.d.ts +9 -0
- package/dist/insights-html.d.ts.map +1 -0
- package/dist/insights-html.js +432 -0
- package/dist/insights-html.js.map +1 -0
- package/dist/linking.d.ts +22 -0
- package/dist/linking.d.ts.map +1 -0
- package/dist/linking.js +192 -0
- package/dist/linking.js.map +1 -0
- package/dist/llm-json.d.ts +10 -0
- package/dist/llm-json.d.ts.map +1 -0
- package/dist/llm-json.js +193 -0
- package/dist/llm-json.js.map +1 -0
- package/dist/privacy.d.ts +17 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +53 -0
- package/dist/privacy.js.map +1 -0
- package/dist/procedural-v2.d.ts +9 -0
- package/dist/procedural-v2.d.ts.map +1 -0
- package/dist/procedural-v2.js +123 -0
- package/dist/procedural-v2.js.map +1 -0
- package/dist/reconsolidate-v2.d.ts +19 -0
- package/dist/reconsolidate-v2.d.ts.map +1 -0
- package/dist/reconsolidate-v2.js +115 -0
- package/dist/reconsolidate-v2.js.map +1 -0
- package/dist/scoring.d.ts +32 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +108 -0
- package/dist/scoring.js.map +1 -0
- package/dist/store-v2.d.ts +35 -0
- package/dist/store-v2.d.ts.map +1 -0
- package/dist/store-v2.js +98 -0
- package/dist/store-v2.js.map +1 -0
- package/dist/store.d.ts +22 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +116 -0
- package/dist/store.js.map +1 -0
- package/dist/turn-context.d.ts +37 -0
- package/dist/turn-context.d.ts.map +1 -0
- package/dist/turn-context.js +31 -0
- package/dist/turn-context.js.map +1 -0
- package/dist/types-v2.d.ts +190 -0
- package/dist/types-v2.d.ts.map +1 -0
- package/dist/types-v2.js +8 -0
- package/dist/types-v2.js.map +1 -0
- package/dist/types.d.ts +330 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/update.d.ts +31 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +250 -0
- package/dist/update.js.map +1 -0
- package/package.json +34 -0
- package/src/browser-fs.ts +67 -0
- package/src/config.ts +138 -0
- package/src/consolidate-v2.ts +158 -0
- package/src/consolidation.ts +229 -0
- package/src/dedup.ts +91 -0
- package/src/diagnostics.ts +81 -0
- package/src/embedding-index.ts +138 -0
- package/src/engine-archive.ts +167 -0
- package/src/engine-episode-sync.ts +237 -0
- package/src/engine-injection-text.ts +334 -0
- package/src/engine-insights.ts +182 -0
- package/src/engine-links.ts +311 -0
- package/src/engine-recall-select.ts +298 -0
- package/src/engine-reinforce.ts +154 -0
- package/src/engine-scoring-v2.ts +188 -0
- package/src/engine-v2-mapping.ts +204 -0
- package/src/engine.ts +2499 -0
- package/src/eviction.ts +38 -0
- package/src/extraction.ts +300 -0
- package/src/full-insights-html.ts +474 -0
- package/src/full-insights-sections.ts +305 -0
- package/src/full-insights.ts +423 -0
- package/src/hash-embedding.ts +48 -0
- package/src/human-insights.ts +345 -0
- package/src/i18n.ts +455 -0
- package/src/index.ts +117 -0
- package/src/insights-html.ts +478 -0
- package/src/linking.ts +228 -0
- package/src/llm-json.ts +194 -0
- package/src/privacy.ts +54 -0
- package/src/procedural-v2.ts +142 -0
- package/src/reconsolidate-v2.ts +145 -0
- package/src/scoring.ts +156 -0
- package/src/store-v2.ts +138 -0
- package/src/store.ts +137 -0
- package/src/turn-context.ts +56 -0
- package/src/types-v2.ts +244 -0
- package/src/types.ts +372 -0
- package/src/update.ts +271 -0
package/src/types-v2.ts
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: EpisodeMemory, EpisodeFacet, ProceduralMemory, ProceduralStep, SemanticCluster, StateMemory, MemoryLink, MemoryScopeV2
|
|
3
|
+
* [FROM]: Depends on ./types.js (MemoryScope)
|
|
4
|
+
* [TO]: Consumed by packages/mem-core/src/index.ts
|
|
5
|
+
* [HERE]: packages/mem-core/src/types-v2.ts - foundation layer for NanoMem v2 layered-memory data model (episodic/semantic/procedural/state)
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { MemoryScope } from "./types.js";
|
|
9
|
+
|
|
10
|
+
export interface MemoryScopeV2 extends MemoryScope {
|
|
11
|
+
project?: string;
|
|
12
|
+
workspaceId?: string;
|
|
13
|
+
branch?: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type MemoryKind = "episode" | "facet" | "semantic" | "procedural" | "state";
|
|
17
|
+
|
|
18
|
+
export type SemanticKind =
|
|
19
|
+
| "fact"
|
|
20
|
+
| "lesson"
|
|
21
|
+
| "preference"
|
|
22
|
+
| "decision"
|
|
23
|
+
| "entity"
|
|
24
|
+
| "pattern"
|
|
25
|
+
| "struggle"
|
|
26
|
+
| "event";
|
|
27
|
+
|
|
28
|
+
export type FacetKind =
|
|
29
|
+
| "goal"
|
|
30
|
+
| "decision"
|
|
31
|
+
| "constraint"
|
|
32
|
+
| "error"
|
|
33
|
+
| "fix"
|
|
34
|
+
| "insight"
|
|
35
|
+
| "outcome"
|
|
36
|
+
| "pattern"
|
|
37
|
+
| "preference"
|
|
38
|
+
| "entity"
|
|
39
|
+
| "context";
|
|
40
|
+
|
|
41
|
+
export type ProcedureStatus = "active" | "draft" | "deprecated" | "superseded";
|
|
42
|
+
|
|
43
|
+
export type MemoryStabilityV2 = "stable" | "situational" | "volatile";
|
|
44
|
+
|
|
45
|
+
export type MemoryRetentionV2 = "core" | "key-event" | "ambient";
|
|
46
|
+
|
|
47
|
+
export type AbstractionLevel = "instance" | "generalization" | "principle";
|
|
48
|
+
|
|
49
|
+
export type EvidenceSourceType = "conversation" | "file" | "tool-output" | "session-summary";
|
|
50
|
+
|
|
51
|
+
export type StateType = "mood" | "pressure" | "focus" | "preference-shift" | "working-style";
|
|
52
|
+
|
|
53
|
+
export type StateHorizon = "momentary" | "short-term" | "medium-term";
|
|
54
|
+
|
|
55
|
+
export type MemoryLinkType =
|
|
56
|
+
| "has-facet"
|
|
57
|
+
| "mentions-entity"
|
|
58
|
+
| "supports"
|
|
59
|
+
| "derived-from"
|
|
60
|
+
| "generalizes"
|
|
61
|
+
| "specializes"
|
|
62
|
+
| "causes"
|
|
63
|
+
| "caused-by"
|
|
64
|
+
| "similar-to"
|
|
65
|
+
| "conflicts-with"
|
|
66
|
+
| "supersedes"
|
|
67
|
+
| "retrieved-with";
|
|
68
|
+
|
|
69
|
+
export interface EmbeddingRef {
|
|
70
|
+
model: string;
|
|
71
|
+
dim: number;
|
|
72
|
+
updatedAt: string;
|
|
73
|
+
checksum: string;
|
|
74
|
+
vectorId: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export type EmbeddingFn = (texts: string[]) => Promise<number[][]>;
|
|
78
|
+
|
|
79
|
+
export interface EmbeddingIndexRecord {
|
|
80
|
+
id: string;
|
|
81
|
+
memoryId: string;
|
|
82
|
+
memoryKind: "episode" | "facet" | "semantic" | "procedural";
|
|
83
|
+
model: string;
|
|
84
|
+
dim: number;
|
|
85
|
+
checksum: string;
|
|
86
|
+
text: string;
|
|
87
|
+
vector: number[];
|
|
88
|
+
updatedAt: string;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface EvidenceRef {
|
|
92
|
+
id: string;
|
|
93
|
+
sourceType: EvidenceSourceType;
|
|
94
|
+
sourceId?: string;
|
|
95
|
+
excerpt?: string;
|
|
96
|
+
startOffset?: number;
|
|
97
|
+
endOffset?: number;
|
|
98
|
+
filePath?: string;
|
|
99
|
+
createdAt: string;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface BaseMemoryV2 {
|
|
103
|
+
id: string;
|
|
104
|
+
kind: MemoryKind;
|
|
105
|
+
scope?: MemoryScopeV2;
|
|
106
|
+
createdAt: string;
|
|
107
|
+
updatedAt: string;
|
|
108
|
+
lastAccessedAt?: string;
|
|
109
|
+
accessCount: number;
|
|
110
|
+
importance: number;
|
|
111
|
+
salience: number;
|
|
112
|
+
confidence: number;
|
|
113
|
+
retention: MemoryRetentionV2;
|
|
114
|
+
stability: MemoryStabilityV2;
|
|
115
|
+
archivedAt?: string;
|
|
116
|
+
archiveReason?: string;
|
|
117
|
+
revivedAt?: string;
|
|
118
|
+
validFrom?: string;
|
|
119
|
+
validTo?: string;
|
|
120
|
+
ttlDays?: number;
|
|
121
|
+
tags: string[];
|
|
122
|
+
embedding?: EmbeddingRef;
|
|
123
|
+
sourceEpisodeIds?: string[];
|
|
124
|
+
evidence?: EvidenceRef[];
|
|
125
|
+
/** SAL structural anchor — module/file path where this memory is located in the project terrain. Written by SAL extension at agent_end; undefined when SAL is disabled. */
|
|
126
|
+
structuralAnchor?: { modulePath?: string; filePath?: string };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export interface EpisodeMemory extends BaseMemoryV2 {
|
|
130
|
+
kind: "episode";
|
|
131
|
+
sessionId: string;
|
|
132
|
+
title?: string;
|
|
133
|
+
summary: string;
|
|
134
|
+
startedAt?: string;
|
|
135
|
+
endedAt?: string;
|
|
136
|
+
timeZone?: string;
|
|
137
|
+
userGoal?: string;
|
|
138
|
+
outcome?: string;
|
|
139
|
+
affect?: {
|
|
140
|
+
valence?: number;
|
|
141
|
+
intensity?: number;
|
|
142
|
+
label?: string;
|
|
143
|
+
};
|
|
144
|
+
filesModified: string[];
|
|
145
|
+
toolsUsed: Record<string, number>;
|
|
146
|
+
entities: string[];
|
|
147
|
+
facetIds: string[];
|
|
148
|
+
derivedSemanticIds: string[];
|
|
149
|
+
derivedProcedureIds: string[];
|
|
150
|
+
consolidatedAt?: string;
|
|
151
|
+
reconsolidatedAt?: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export interface EpisodeFacet extends BaseMemoryV2 {
|
|
155
|
+
kind: "facet";
|
|
156
|
+
episodeId: string;
|
|
157
|
+
facetType: FacetKind;
|
|
158
|
+
searchText: string;
|
|
159
|
+
anchorText?: string;
|
|
160
|
+
summary?: string;
|
|
161
|
+
detail?: string;
|
|
162
|
+
entityRefs?: string[];
|
|
163
|
+
aliases?: string[];
|
|
164
|
+
causalRole?: "cause" | "effect" | "constraint" | "resolution" | "signal";
|
|
165
|
+
outcomeScore?: number;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface SemanticMemory extends BaseMemoryV2 {
|
|
169
|
+
/** Browser migration: stable links to legacy records for edits and deletion. */
|
|
170
|
+
legacyIds?: string[];
|
|
171
|
+
kind: "semantic";
|
|
172
|
+
semanticType: SemanticKind;
|
|
173
|
+
name: string;
|
|
174
|
+
summary: string;
|
|
175
|
+
detail?: string;
|
|
176
|
+
supersedesIds?: string[];
|
|
177
|
+
supersededById?: string;
|
|
178
|
+
abstractionLevel?: AbstractionLevel;
|
|
179
|
+
conflictWithIds?: string[];
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export interface ProceduralStep {
|
|
183
|
+
id: string;
|
|
184
|
+
text: string;
|
|
185
|
+
kind?: "step" | "warning" | "precondition" | "heuristic" | "validation";
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface ProceduralMemory extends BaseMemoryV2 {
|
|
189
|
+
kind: "procedural";
|
|
190
|
+
name: string;
|
|
191
|
+
summary: string;
|
|
192
|
+
searchText: string;
|
|
193
|
+
applicability?: string;
|
|
194
|
+
boundaries?: string;
|
|
195
|
+
contextText?: string;
|
|
196
|
+
steps: ProceduralStep[];
|
|
197
|
+
status: ProcedureStatus;
|
|
198
|
+
version: number;
|
|
199
|
+
sourceFacetIds?: string[];
|
|
200
|
+
sourceSemanticIds?: string[];
|
|
201
|
+
supersedesIds?: string[];
|
|
202
|
+
supersededById?: string;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export interface StateMemory extends BaseMemoryV2 {
|
|
206
|
+
kind: "state";
|
|
207
|
+
stateType: StateType;
|
|
208
|
+
summary: string;
|
|
209
|
+
detail?: string;
|
|
210
|
+
horizon: StateHorizon;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export interface MemoryLink {
|
|
214
|
+
id: string;
|
|
215
|
+
fromId: string;
|
|
216
|
+
toId: string;
|
|
217
|
+
type: MemoryLinkType;
|
|
218
|
+
weight: number;
|
|
219
|
+
explicit: boolean;
|
|
220
|
+
createdAt: string;
|
|
221
|
+
updatedAt: string;
|
|
222
|
+
evidence?: EvidenceRef[];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface V2Meta {
|
|
226
|
+
version: number;
|
|
227
|
+
lastMigrationAt?: string;
|
|
228
|
+
lastEmbeddingSyncAt?: string;
|
|
229
|
+
lastReconsolidationAt?: string;
|
|
230
|
+
lastMaintenanceAt?: string;
|
|
231
|
+
lastMaintenanceVersion?: number;
|
|
232
|
+
lastBackupAt?: string;
|
|
233
|
+
lastBackupVersion?: number;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface NanoMemV2Snapshot {
|
|
237
|
+
episodes: EpisodeMemory[];
|
|
238
|
+
facets: EpisodeFacet[];
|
|
239
|
+
semantic: SemanticMemory[];
|
|
240
|
+
procedural: ProceduralMemory[];
|
|
241
|
+
state: StateMemory[];
|
|
242
|
+
links: MemoryLink[];
|
|
243
|
+
meta: V2Meta;
|
|
244
|
+
}
|
package/src/types.ts
ADDED
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: LlmFn, MemoryScope, MemoryRetention, MemoryStability, FacetData, MemoryEntry, MemoryRelation, Episode, WorkEntry, EventData, StateData
|
|
3
|
+
* [FROM]: No external dependencies
|
|
4
|
+
* [TO]: Consumed by packages/mem-core/src/index.ts
|
|
5
|
+
* [HERE]: packages/mem-core/src/types.ts - foundation layer type definitions for all memory data structures
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/** Pluggable LLM function: system prompt + user message → raw text response */
|
|
10
|
+
export type LlmFn = (systemPrompt: string, userMessage: string) => Promise<string>;
|
|
11
|
+
|
|
12
|
+
export interface MemoryScope {
|
|
13
|
+
userId?: string;
|
|
14
|
+
agentId?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type MemoryRetention = "core" | "key-event" | "ambient";
|
|
18
|
+
export type MemoryStability = "stable" | "situational";
|
|
19
|
+
|
|
20
|
+
/** Structured data for Facets (Pattern/Struggle) memory types */
|
|
21
|
+
export type FacetData =
|
|
22
|
+
| { kind: "pattern"; trigger: string; behavior: string }
|
|
23
|
+
| { kind: "struggle"; problem: string; attempts: string[]; solution: string };
|
|
24
|
+
|
|
25
|
+
export interface EventData {
|
|
26
|
+
kind: string;
|
|
27
|
+
outcome?: string;
|
|
28
|
+
emotionalWeight?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface StateData {
|
|
32
|
+
mood: string;
|
|
33
|
+
intensity?: number;
|
|
34
|
+
horizon?: "momentary" | "short-term";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export interface MemoryRelation {
|
|
38
|
+
id: string;
|
|
39
|
+
kind: "same-project" | "tag-overlap" | "cause-of" | "caused-by" | "preference-shapes" | "repeated-pattern";
|
|
40
|
+
weight: number;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface MemoryEntry {
|
|
44
|
+
id: string;
|
|
45
|
+
type: "fact" | "lesson" | "preference" | "decision" | "entity" | "pattern" | "struggle" | "event";
|
|
46
|
+
/** @deprecated Use name/summary/detail instead. Kept for backward compatibility reads. */
|
|
47
|
+
content?: string;
|
|
48
|
+
/** Short title (≤30 chars) for quick identification */
|
|
49
|
+
name?: string;
|
|
50
|
+
/** One-liner cue (≤150 chars) for Memory Cue injection */
|
|
51
|
+
summary?: string;
|
|
52
|
+
/** Full content body — only injected in Active tier or via recall_memory tool */
|
|
53
|
+
detail?: string;
|
|
54
|
+
tags: string[];
|
|
55
|
+
project: string;
|
|
56
|
+
importance: number;
|
|
57
|
+
/** Adaptive memory strength (days). Grows with each successful recall — Ebbinghaus spaced repetition. */
|
|
58
|
+
strength?: number;
|
|
59
|
+
/** Ingestion time: when the system recorded this entry */
|
|
60
|
+
created: string;
|
|
61
|
+
/** Event time: when the fact actually occurred (bi-temporal, defaults to created) */
|
|
62
|
+
eventTime?: string;
|
|
63
|
+
lastAccessed?: string;
|
|
64
|
+
accessCount: number;
|
|
65
|
+
/** A-MEM style links to related memory entries */
|
|
66
|
+
relatedIds?: string[];
|
|
67
|
+
/** TTL in days — auto-evicted after expiry. undefined = permanent */
|
|
68
|
+
ttl?: number;
|
|
69
|
+
scope?: MemoryScope;
|
|
70
|
+
retention?: MemoryRetention;
|
|
71
|
+
salience?: number;
|
|
72
|
+
stability?: MemoryStability;
|
|
73
|
+
archivedAt?: string;
|
|
74
|
+
archiveReason?: string;
|
|
75
|
+
revivedAt?: string;
|
|
76
|
+
stateData?: StateData;
|
|
77
|
+
relations?: MemoryRelation[];
|
|
78
|
+
/** Structured data for pattern/struggle types (Facets) */
|
|
79
|
+
facetData?: FacetData;
|
|
80
|
+
eventData?: EventData;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface Episode {
|
|
84
|
+
sessionId: string;
|
|
85
|
+
project: string;
|
|
86
|
+
date: string;
|
|
87
|
+
startedAt?: string;
|
|
88
|
+
endedAt?: string;
|
|
89
|
+
timeZone?: string;
|
|
90
|
+
summary: string;
|
|
91
|
+
userGoal?: string;
|
|
92
|
+
filesModified: string[];
|
|
93
|
+
toolsUsed: Record<string, number>;
|
|
94
|
+
keyObservations: string[];
|
|
95
|
+
errors: string[];
|
|
96
|
+
tags: string[];
|
|
97
|
+
importance: number;
|
|
98
|
+
consolidated: boolean;
|
|
99
|
+
scope?: MemoryScope;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export interface WorkEntry {
|
|
103
|
+
id: string;
|
|
104
|
+
goal: string;
|
|
105
|
+
summary: string;
|
|
106
|
+
/** Full work detail — only injected in Active tier or via recall_memory tool */
|
|
107
|
+
detail?: string;
|
|
108
|
+
project: string;
|
|
109
|
+
tags: string[];
|
|
110
|
+
importance: number;
|
|
111
|
+
strength?: number;
|
|
112
|
+
created: string;
|
|
113
|
+
eventTime?: string;
|
|
114
|
+
lastAccessed?: string;
|
|
115
|
+
accessCount: number;
|
|
116
|
+
relatedIds?: string[];
|
|
117
|
+
ttl?: number;
|
|
118
|
+
archivedAt?: string;
|
|
119
|
+
archiveReason?: string;
|
|
120
|
+
revivedAt?: string;
|
|
121
|
+
scope?: MemoryScope;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface Meta {
|
|
125
|
+
totalSessions: number;
|
|
126
|
+
lastConsolidation?: string;
|
|
127
|
+
version: number;
|
|
128
|
+
lastMaintenanceAt?: string;
|
|
129
|
+
lastMaintenanceVersion?: number;
|
|
130
|
+
lastBackupAt?: string;
|
|
131
|
+
lastBackupVersion?: number;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** Mem0-style update operations */
|
|
135
|
+
export type UpdateAction = "add" | "update" | "delete" | "noop";
|
|
136
|
+
|
|
137
|
+
export interface ExtractedItem {
|
|
138
|
+
type: "preference" | "fact" | "lesson" | "decision" | "retract" | "pattern" | "struggle" | "event";
|
|
139
|
+
/** @deprecated Use name/summary/detail instead. */
|
|
140
|
+
content?: string;
|
|
141
|
+
/** Short title (≤30 chars) */
|
|
142
|
+
name?: string;
|
|
143
|
+
/** One-liner summary (≤150 chars) */
|
|
144
|
+
summary?: string;
|
|
145
|
+
/** Full content body */
|
|
146
|
+
detail?: string;
|
|
147
|
+
/** Structured data for pattern/struggle types (populated by LLM extraction) */
|
|
148
|
+
facetData?: FacetData;
|
|
149
|
+
eventData?: EventData;
|
|
150
|
+
retention?: MemoryRetention;
|
|
151
|
+
salience?: number;
|
|
152
|
+
stability?: MemoryStability;
|
|
153
|
+
stateData?: StateData;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface ExtractedWork {
|
|
157
|
+
goal: string;
|
|
158
|
+
summary: string;
|
|
159
|
+
/** Full detail of work accomplished */
|
|
160
|
+
detail?: string;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// ─── Insights Types ──────────────────────────────────────
|
|
164
|
+
|
|
165
|
+
export interface PatternInsight {
|
|
166
|
+
entry: MemoryEntry;
|
|
167
|
+
weight: number;
|
|
168
|
+
trigger: string;
|
|
169
|
+
behavior: string;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export interface StruggleInsight {
|
|
173
|
+
entry: MemoryEntry;
|
|
174
|
+
weight: number;
|
|
175
|
+
problem: string;
|
|
176
|
+
attempts: string[];
|
|
177
|
+
solution: string;
|
|
178
|
+
resolved: boolean;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface InsightsReport {
|
|
182
|
+
patterns: PatternInsight[];
|
|
183
|
+
struggles: StruggleInsight[];
|
|
184
|
+
topLessons: MemoryEntry[];
|
|
185
|
+
topKnowledge: MemoryEntry[];
|
|
186
|
+
preferences: MemoryEntry[];
|
|
187
|
+
stats: {
|
|
188
|
+
knowledge: number;
|
|
189
|
+
lessons: number;
|
|
190
|
+
preferences: number;
|
|
191
|
+
facets: number;
|
|
192
|
+
episodes: number;
|
|
193
|
+
work: number;
|
|
194
|
+
totalSessions: number;
|
|
195
|
+
};
|
|
196
|
+
recommendations: string[];
|
|
197
|
+
generatedAt: string;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export interface AlignmentSnapshot {
|
|
201
|
+
identityCore: MemoryEntry[];
|
|
202
|
+
keyEvents: MemoryEntry[];
|
|
203
|
+
behaviorDrivers: MemoryEntry[];
|
|
204
|
+
currentState: MemoryEntry[];
|
|
205
|
+
relationshipEdges: Array<{
|
|
206
|
+
fromId: string;
|
|
207
|
+
toId: string;
|
|
208
|
+
kind: MemoryRelation["kind"];
|
|
209
|
+
weight: number;
|
|
210
|
+
}>;
|
|
211
|
+
conflicts: Array<{
|
|
212
|
+
aId: string;
|
|
213
|
+
bId: string;
|
|
214
|
+
reason: string;
|
|
215
|
+
severity: number;
|
|
216
|
+
recommendation: "merge" | "demote" | "forget" | "mark-situational";
|
|
217
|
+
rationale: string;
|
|
218
|
+
}>;
|
|
219
|
+
generatedAt: string;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// ─── Full Insights Report (rich narrative + charts) ──────────────────────
|
|
223
|
+
|
|
224
|
+
export interface FullInsightsAtAGlance {
|
|
225
|
+
working: string;
|
|
226
|
+
hindering: string;
|
|
227
|
+
quickWins: string;
|
|
228
|
+
ambitious: string;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
export interface FullInsightsProjectArea {
|
|
232
|
+
name: string;
|
|
233
|
+
sessionCount: number;
|
|
234
|
+
description: string;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export interface FullInsightsChartRow {
|
|
238
|
+
label: string;
|
|
239
|
+
value: number;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export interface FullInsightsChart {
|
|
243
|
+
id: string;
|
|
244
|
+
title: string;
|
|
245
|
+
rows: FullInsightsChartRow[];
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export interface FullInsightsWin {
|
|
249
|
+
title: string;
|
|
250
|
+
description: string;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface FullInsightsFriction {
|
|
254
|
+
title: string;
|
|
255
|
+
description: string;
|
|
256
|
+
examples?: string[];
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export interface FullInsightsFeatureToTry {
|
|
260
|
+
title: string;
|
|
261
|
+
oneLiner: string;
|
|
262
|
+
whyForYou: string;
|
|
263
|
+
exampleCode?: string;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
export interface FullInsightsUsagePattern {
|
|
267
|
+
title: string;
|
|
268
|
+
summary: string;
|
|
269
|
+
detail: string;
|
|
270
|
+
pastePrompt?: string;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface FullInsightsReport {
|
|
274
|
+
stats: {
|
|
275
|
+
knowledge: number;
|
|
276
|
+
lessons: number;
|
|
277
|
+
preferences: number;
|
|
278
|
+
facets: number;
|
|
279
|
+
episodes: number;
|
|
280
|
+
work: number;
|
|
281
|
+
totalSessions: number;
|
|
282
|
+
aggregateToolCount?: number;
|
|
283
|
+
aggregateFileCount?: number;
|
|
284
|
+
};
|
|
285
|
+
atAGlance: FullInsightsAtAGlance;
|
|
286
|
+
projectAreas: FullInsightsProjectArea[];
|
|
287
|
+
charts: FullInsightsChart[];
|
|
288
|
+
wins: FullInsightsWin[];
|
|
289
|
+
frictions: FullInsightsFriction[];
|
|
290
|
+
patterns: PatternInsight[];
|
|
291
|
+
recommendations: string[];
|
|
292
|
+
featuresToTry: FullInsightsFeatureToTry[];
|
|
293
|
+
usagePatterns: FullInsightsUsagePattern[];
|
|
294
|
+
generatedAt: string;
|
|
295
|
+
locale: string;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// ─── Developer Persona (Human-Readable) ──────────────────────────────
|
|
299
|
+
|
|
300
|
+
export interface DeveloperPersona {
|
|
301
|
+
/** Plain language description of what this person does */
|
|
302
|
+
whatTheyDo: string;
|
|
303
|
+
/** Experience level description */
|
|
304
|
+
experienceLevel: string;
|
|
305
|
+
/** Areas of strength */
|
|
306
|
+
superpowers: string[];
|
|
307
|
+
/** Frequent blockers */
|
|
308
|
+
painPoints: string[];
|
|
309
|
+
/** Work style description */
|
|
310
|
+
workStyle: string;
|
|
311
|
+
/** One-sentence summary */
|
|
312
|
+
summary: string;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// ─── Human-Readable Insights ──────────────────────────────
|
|
316
|
+
|
|
317
|
+
export interface HumanInsight {
|
|
318
|
+
/** Insight title - grabs attention */
|
|
319
|
+
title: string;
|
|
320
|
+
/** Insight content - like chatting with a friend */
|
|
321
|
+
content: string;
|
|
322
|
+
/** Emoji icon */
|
|
323
|
+
icon: string;
|
|
324
|
+
/** Utility level */
|
|
325
|
+
utility: "high" | "medium" | "low";
|
|
326
|
+
/** Category tags */
|
|
327
|
+
tags: string[];
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// ─── Root Cause Analysis Insights ──────────────────────────────
|
|
331
|
+
|
|
332
|
+
export interface RootCauseInsight {
|
|
333
|
+
/** Surface symptom */
|
|
334
|
+
symptom: string;
|
|
335
|
+
/** Root cause (in plain language) */
|
|
336
|
+
rootCause: string;
|
|
337
|
+
/** Evidence */
|
|
338
|
+
evidence: string[];
|
|
339
|
+
/** Suggestion */
|
|
340
|
+
suggestion: string;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// ─── Comparative Insights ──────────────────────────────
|
|
344
|
+
|
|
345
|
+
export interface ComparativeInsight {
|
|
346
|
+
/** Comparison dimension */
|
|
347
|
+
dimension: string;
|
|
348
|
+
/** User's actual situation */
|
|
349
|
+
youAre: string;
|
|
350
|
+
/** How typical users are */
|
|
351
|
+
typical: string;
|
|
352
|
+
/** Conclusion */
|
|
353
|
+
verdict: string;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// ─── Enhanced Full Insights Report ──────────────────────────────────────
|
|
357
|
+
|
|
358
|
+
export interface EnhancedInsightsReport extends FullInsightsReport {
|
|
359
|
+
/** Developer persona */
|
|
360
|
+
persona?: DeveloperPersona;
|
|
361
|
+
/** Human-readable insights */
|
|
362
|
+
humanInsights: HumanInsight[];
|
|
363
|
+
/** Root cause analysis */
|
|
364
|
+
rootCauses: RootCauseInsight[];
|
|
365
|
+
/** Comparative insights */
|
|
366
|
+
comparisons: ComparativeInsight[];
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// ─── Progressive Recall Types ────────────────────────────
|
|
370
|
+
|
|
371
|
+
/** Injection tier for progressive recall */
|
|
372
|
+
export type InjectionLevel = "active" | "cue" | "dormant";
|