@mnemoai/core 1.1.0 → 1.1.2

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 (220) hide show
  1. package/dist/cli.d.ts +2 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +7 -0
  4. package/dist/cli.js.map +7 -0
  5. package/dist/index.d.ts +136 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/{index.ts → dist/index.js} +537 -1333
  8. package/dist/index.js.map +7 -0
  9. package/dist/src/access-tracker.d.ts +97 -0
  10. package/dist/src/access-tracker.d.ts.map +1 -0
  11. package/dist/src/access-tracker.js +184 -0
  12. package/dist/src/access-tracker.js.map +7 -0
  13. package/dist/src/adapters/chroma.d.ts +31 -0
  14. package/dist/src/adapters/chroma.d.ts.map +1 -0
  15. package/{src/adapters/chroma.ts → dist/src/adapters/chroma.js} +45 -107
  16. package/dist/src/adapters/chroma.js.map +7 -0
  17. package/dist/src/adapters/lancedb.d.ts +29 -0
  18. package/dist/src/adapters/lancedb.d.ts.map +1 -0
  19. package/{src/adapters/lancedb.ts → dist/src/adapters/lancedb.js} +41 -109
  20. package/dist/src/adapters/lancedb.js.map +7 -0
  21. package/dist/src/adapters/pgvector.d.ts +33 -0
  22. package/dist/src/adapters/pgvector.d.ts.map +1 -0
  23. package/{src/adapters/pgvector.ts → dist/src/adapters/pgvector.js} +42 -104
  24. package/dist/src/adapters/pgvector.js.map +7 -0
  25. package/dist/src/adapters/qdrant.d.ts +34 -0
  26. package/dist/src/adapters/qdrant.d.ts.map +1 -0
  27. package/dist/src/adapters/qdrant.js +132 -0
  28. package/dist/src/adapters/qdrant.js.map +7 -0
  29. package/dist/src/adaptive-retrieval.d.ts +14 -0
  30. package/dist/src/adaptive-retrieval.d.ts.map +1 -0
  31. package/dist/src/adaptive-retrieval.js +52 -0
  32. package/dist/src/adaptive-retrieval.js.map +7 -0
  33. package/dist/src/audit-log.d.ts +56 -0
  34. package/dist/src/audit-log.d.ts.map +1 -0
  35. package/dist/src/audit-log.js +139 -0
  36. package/dist/src/audit-log.js.map +7 -0
  37. package/dist/src/chunker.d.ts +45 -0
  38. package/dist/src/chunker.d.ts.map +1 -0
  39. package/dist/src/chunker.js +157 -0
  40. package/dist/src/chunker.js.map +7 -0
  41. package/dist/src/config.d.ts +70 -0
  42. package/dist/src/config.d.ts.map +1 -0
  43. package/dist/src/config.js +142 -0
  44. package/dist/src/config.js.map +7 -0
  45. package/dist/src/decay-engine.d.ts +73 -0
  46. package/dist/src/decay-engine.d.ts.map +1 -0
  47. package/dist/src/decay-engine.js +119 -0
  48. package/dist/src/decay-engine.js.map +7 -0
  49. package/dist/src/embedder.d.ts +94 -0
  50. package/dist/src/embedder.d.ts.map +1 -0
  51. package/{src/embedder.ts → dist/src/embedder.js} +119 -317
  52. package/dist/src/embedder.js.map +7 -0
  53. package/dist/src/extraction-prompts.d.ts +12 -0
  54. package/dist/src/extraction-prompts.d.ts.map +1 -0
  55. package/dist/src/extraction-prompts.js +311 -0
  56. package/dist/src/extraction-prompts.js.map +7 -0
  57. package/dist/src/license.d.ts +29 -0
  58. package/dist/src/license.d.ts.map +1 -0
  59. package/{src/license.ts → dist/src/license.js} +42 -113
  60. package/dist/src/license.js.map +7 -0
  61. package/dist/src/llm-client.d.ts +23 -0
  62. package/dist/src/llm-client.d.ts.map +1 -0
  63. package/{src/llm-client.ts → dist/src/llm-client.js} +22 -55
  64. package/dist/src/llm-client.js.map +7 -0
  65. package/dist/src/logger.d.ts +33 -0
  66. package/dist/src/logger.d.ts.map +1 -0
  67. package/dist/src/logger.js +35 -0
  68. package/dist/src/logger.js.map +7 -0
  69. package/dist/src/mcp-server.d.ts +16 -0
  70. package/dist/src/mcp-server.d.ts.map +1 -0
  71. package/{src/mcp-server.ts → dist/src/mcp-server.js} +81 -181
  72. package/dist/src/mcp-server.js.map +7 -0
  73. package/dist/src/memory-categories.d.ts +40 -0
  74. package/dist/src/memory-categories.d.ts.map +1 -0
  75. package/dist/src/memory-categories.js +33 -0
  76. package/dist/src/memory-categories.js.map +7 -0
  77. package/dist/src/memory-upgrader.d.ts +71 -0
  78. package/dist/src/memory-upgrader.d.ts.map +1 -0
  79. package/dist/src/memory-upgrader.js +238 -0
  80. package/dist/src/memory-upgrader.js.map +7 -0
  81. package/dist/src/migrate.d.ts +47 -0
  82. package/dist/src/migrate.d.ts.map +1 -0
  83. package/{src/migrate.ts → dist/src/migrate.js} +57 -165
  84. package/dist/src/migrate.js.map +7 -0
  85. package/dist/src/mnemo.d.ts +67 -0
  86. package/dist/src/mnemo.d.ts.map +1 -0
  87. package/dist/src/mnemo.js +66 -0
  88. package/dist/src/mnemo.js.map +7 -0
  89. package/dist/src/noise-filter.d.ts +23 -0
  90. package/dist/src/noise-filter.d.ts.map +1 -0
  91. package/dist/src/noise-filter.js +62 -0
  92. package/dist/src/noise-filter.js.map +7 -0
  93. package/dist/src/noise-prototypes.d.ts +40 -0
  94. package/dist/src/noise-prototypes.d.ts.map +1 -0
  95. package/dist/src/noise-prototypes.js +116 -0
  96. package/dist/src/noise-prototypes.js.map +7 -0
  97. package/dist/src/observability.d.ts +16 -0
  98. package/dist/src/observability.d.ts.map +1 -0
  99. package/dist/src/observability.js +53 -0
  100. package/dist/src/observability.js.map +7 -0
  101. package/dist/src/query-tracker.d.ts +27 -0
  102. package/dist/src/query-tracker.d.ts.map +1 -0
  103. package/dist/src/query-tracker.js +32 -0
  104. package/dist/src/query-tracker.js.map +7 -0
  105. package/dist/src/reflection-event-store.d.ts +44 -0
  106. package/dist/src/reflection-event-store.d.ts.map +1 -0
  107. package/dist/src/reflection-event-store.js +50 -0
  108. package/dist/src/reflection-event-store.js.map +7 -0
  109. package/dist/src/reflection-item-store.d.ts +58 -0
  110. package/dist/src/reflection-item-store.d.ts.map +1 -0
  111. package/dist/src/reflection-item-store.js +69 -0
  112. package/dist/src/reflection-item-store.js.map +7 -0
  113. package/dist/src/reflection-mapped-metadata.d.ts +47 -0
  114. package/dist/src/reflection-mapped-metadata.d.ts.map +1 -0
  115. package/dist/src/reflection-mapped-metadata.js +40 -0
  116. package/dist/src/reflection-mapped-metadata.js.map +7 -0
  117. package/dist/src/reflection-metadata.d.ts +11 -0
  118. package/dist/src/reflection-metadata.d.ts.map +1 -0
  119. package/dist/src/reflection-metadata.js +24 -0
  120. package/dist/src/reflection-metadata.js.map +7 -0
  121. package/dist/src/reflection-ranking.d.ts +13 -0
  122. package/dist/src/reflection-ranking.d.ts.map +1 -0
  123. package/{src/reflection-ranking.ts → dist/src/reflection-ranking.js} +12 -21
  124. package/dist/src/reflection-ranking.js.map +7 -0
  125. package/dist/src/reflection-retry.d.ts +30 -0
  126. package/dist/src/reflection-retry.d.ts.map +1 -0
  127. package/{src/reflection-retry.ts → dist/src/reflection-retry.js} +24 -64
  128. package/dist/src/reflection-retry.js.map +7 -0
  129. package/dist/src/reflection-slices.d.ts +42 -0
  130. package/dist/src/reflection-slices.d.ts.map +1 -0
  131. package/{src/reflection-slices.ts → dist/src/reflection-slices.js} +60 -136
  132. package/dist/src/reflection-slices.js.map +7 -0
  133. package/dist/src/reflection-store.d.ts +85 -0
  134. package/dist/src/reflection-store.d.ts.map +1 -0
  135. package/dist/src/reflection-store.js +407 -0
  136. package/dist/src/reflection-store.js.map +7 -0
  137. package/dist/src/resonance-state.d.ts +19 -0
  138. package/dist/src/resonance-state.d.ts.map +1 -0
  139. package/{src/resonance-state.ts → dist/src/resonance-state.js} +13 -42
  140. package/dist/src/resonance-state.js.map +7 -0
  141. package/dist/src/retriever.d.ts +228 -0
  142. package/dist/src/retriever.d.ts.map +1 -0
  143. package/dist/src/retriever.js +1006 -0
  144. package/dist/src/retriever.js.map +7 -0
  145. package/dist/src/scopes.d.ts +58 -0
  146. package/dist/src/scopes.d.ts.map +1 -0
  147. package/dist/src/scopes.js +252 -0
  148. package/dist/src/scopes.js.map +7 -0
  149. package/dist/src/self-improvement-files.d.ts +20 -0
  150. package/dist/src/self-improvement-files.d.ts.map +1 -0
  151. package/{src/self-improvement-files.ts → dist/src/self-improvement-files.js} +24 -49
  152. package/dist/src/self-improvement-files.js.map +7 -0
  153. package/dist/src/semantic-gate.d.ts +24 -0
  154. package/dist/src/semantic-gate.d.ts.map +1 -0
  155. package/dist/src/semantic-gate.js +86 -0
  156. package/dist/src/semantic-gate.js.map +7 -0
  157. package/dist/src/session-recovery.d.ts +9 -0
  158. package/dist/src/session-recovery.d.ts.map +1 -0
  159. package/{src/session-recovery.ts → dist/src/session-recovery.js} +40 -57
  160. package/dist/src/session-recovery.js.map +7 -0
  161. package/dist/src/smart-extractor.d.ts +107 -0
  162. package/dist/src/smart-extractor.d.ts.map +1 -0
  163. package/{src/smart-extractor.ts → dist/src/smart-extractor.js} +130 -383
  164. package/dist/src/smart-extractor.js.map +7 -0
  165. package/dist/src/smart-metadata.d.ts +103 -0
  166. package/dist/src/smart-metadata.d.ts.map +1 -0
  167. package/dist/src/smart-metadata.js +361 -0
  168. package/dist/src/smart-metadata.js.map +7 -0
  169. package/dist/src/storage-adapter.d.ts +102 -0
  170. package/dist/src/storage-adapter.d.ts.map +1 -0
  171. package/dist/src/storage-adapter.js +22 -0
  172. package/dist/src/storage-adapter.js.map +7 -0
  173. package/dist/src/store.d.ts +108 -0
  174. package/dist/src/store.d.ts.map +1 -0
  175. package/dist/src/store.js +939 -0
  176. package/dist/src/store.js.map +7 -0
  177. package/dist/src/tier-manager.d.ts +57 -0
  178. package/dist/src/tier-manager.d.ts.map +1 -0
  179. package/dist/src/tier-manager.js +80 -0
  180. package/dist/src/tier-manager.js.map +7 -0
  181. package/dist/src/tools.d.ts +43 -0
  182. package/dist/src/tools.d.ts.map +1 -0
  183. package/dist/src/tools.js +1075 -0
  184. package/dist/src/tools.js.map +7 -0
  185. package/dist/src/wal-recovery.d.ts +30 -0
  186. package/dist/src/wal-recovery.d.ts.map +1 -0
  187. package/{src/wal-recovery.ts → dist/src/wal-recovery.js} +26 -79
  188. package/dist/src/wal-recovery.js.map +7 -0
  189. package/package.json +21 -2
  190. package/openclaw.plugin.json +0 -815
  191. package/src/access-tracker.ts +0 -341
  192. package/src/adapters/README.md +0 -78
  193. package/src/adapters/qdrant.ts +0 -191
  194. package/src/adaptive-retrieval.ts +0 -90
  195. package/src/audit-log.ts +0 -238
  196. package/src/chunker.ts +0 -254
  197. package/src/config.ts +0 -271
  198. package/src/decay-engine.ts +0 -238
  199. package/src/extraction-prompts.ts +0 -339
  200. package/src/memory-categories.ts +0 -71
  201. package/src/memory-upgrader.ts +0 -388
  202. package/src/mnemo.ts +0 -142
  203. package/src/noise-filter.ts +0 -97
  204. package/src/noise-prototypes.ts +0 -164
  205. package/src/observability.ts +0 -81
  206. package/src/query-tracker.ts +0 -57
  207. package/src/reflection-event-store.ts +0 -98
  208. package/src/reflection-item-store.ts +0 -112
  209. package/src/reflection-mapped-metadata.ts +0 -84
  210. package/src/reflection-metadata.ts +0 -23
  211. package/src/reflection-store.ts +0 -602
  212. package/src/retriever.ts +0 -1510
  213. package/src/scopes.ts +0 -375
  214. package/src/semantic-gate.ts +0 -121
  215. package/src/smart-metadata.ts +0 -561
  216. package/src/storage-adapter.ts +0 -153
  217. package/src/store.ts +0 -1330
  218. package/src/tier-manager.ts +0 -189
  219. package/src/tools.ts +0 -1292
  220. package/test/core.test.mjs +0 -301
@@ -1,45 +1,8 @@
1
- // SPDX-License-Identifier: LicenseRef-Mnemo-Pro
2
- export interface ReflectionSlices {
3
- invariants: string[];
4
- derived: string[];
5
- }
6
-
7
- export interface ReflectionMappedMemory {
8
- text: string;
9
- category: "preference" | "fact" | "decision";
10
- heading: string;
11
- }
12
-
13
- export type ReflectionMappedKind = "user-model" | "agent-model" | "lesson" | "decision";
14
-
15
- export interface ReflectionMappedMemoryItem extends ReflectionMappedMemory {
16
- mappedKind: ReflectionMappedKind;
17
- ordinal: number;
18
- groupSize: number;
19
- }
20
-
21
- export interface ReflectionSliceItem {
22
- text: string;
23
- itemKind: "invariant" | "derived";
24
- section: "Invariants" | "Derived";
25
- ordinal: number;
26
- groupSize: number;
27
- }
28
-
29
- export interface ReflectionGovernanceEntry {
30
- priority?: string;
31
- status?: string;
32
- area?: string;
33
- summary: string;
34
- details?: string;
35
- suggestedAction?: string;
36
- }
37
-
38
- export function extractSectionMarkdown(markdown: string, heading: string): string {
1
+ function extractSectionMarkdown(markdown, heading) {
39
2
  const lines = markdown.split(/\r?\n/);
40
3
  const headingNeedle = `## ${heading}`.toLowerCase();
41
4
  let inSection = false;
42
- const collected: string[] = [];
5
+ const collected = [];
43
6
  for (const raw of lines) {
44
7
  const line = raw.trim();
45
8
  const lower = line.toLowerCase();
@@ -53,10 +16,9 @@ export function extractSectionMarkdown(markdown: string, heading: string): strin
53
16
  }
54
17
  return collected.join("\n").trim();
55
18
  }
56
-
57
- export function parseSectionBullets(markdown: string, heading: string): string[] {
19
+ function parseSectionBullets(markdown, heading) {
58
20
  const lines = extractSectionMarkdown(markdown, heading).split(/\r?\n/);
59
- const collected: string[] = [];
21
+ const collected = [];
60
22
  for (const raw of lines) {
61
23
  const line = raw.trim();
62
24
  if (line.startsWith("- ") || line.startsWith("* ")) {
@@ -66,8 +28,7 @@ export function parseSectionBullets(markdown: string, heading: string): string[]
66
28
  }
67
29
  return collected;
68
30
  }
69
-
70
- export function isPlaceholderReflectionSliceLine(line: string): boolean {
31
+ function isPlaceholderReflectionSliceLine(line) {
71
32
  const normalized = line.replace(/\*\*/g, "").trim();
72
33
  if (!normalized) return true;
73
34
  if (/^\(none( captured)?\)$/i.test(normalized)) return true;
@@ -77,189 +38,152 @@ export function isPlaceholderReflectionSliceLine(line: string): boolean {
77
38
  if (/investigate why embedded reflection generation failed/i.test(normalized)) return true;
78
39
  return false;
79
40
  }
80
-
81
- export function normalizeReflectionSliceLine(line: string): string {
82
- return line
83
- .replace(/\*\*/g, "")
84
- .replace(/^(invariants?|reflections?|derived)[::]\s*/i, "")
85
- .trim();
41
+ function normalizeReflectionSliceLine(line) {
42
+ return line.replace(/\*\*/g, "").replace(/^(invariants?|reflections?|derived)[::]\s*/i, "").trim();
86
43
  }
87
-
88
- export function sanitizeReflectionSliceLines(lines: string[]): string[] {
89
- return lines
90
- .map(normalizeReflectionSliceLine)
91
- .filter((line) => !isPlaceholderReflectionSliceLine(line));
44
+ function sanitizeReflectionSliceLines(lines) {
45
+ return lines.map(normalizeReflectionSliceLine).filter((line) => !isPlaceholderReflectionSliceLine(line));
92
46
  }
93
-
94
- function isInvariantRuleLike(line: string): boolean {
95
- return /^(always|never|when\b|if\b|before\b|after\b|prefer\b|avoid\b|require\b|only\b|do not\b|must\b|should\b)/i.test(line) ||
96
- /\b(must|should|never|always|prefer|avoid|required?)\b/i.test(line);
47
+ function isInvariantRuleLike(line) {
48
+ return /^(always|never|when\b|if\b|before\b|after\b|prefer\b|avoid\b|require\b|only\b|do not\b|must\b|should\b)/i.test(line) || /\b(must|should|never|always|prefer|avoid|required?)\b/i.test(line);
97
49
  }
98
-
99
- function isDerivedDeltaLike(line: string): boolean {
100
- return /^(this run|next run|going forward|follow-up|re-check|retest|verify|confirm|avoid repeating|adjust|change|update|retry|keep|watch)\b/i.test(line) ||
101
- /\b(this run|next run|delta|change|adjust|retry|re-check|retest|verify|confirm|avoid repeating|follow-up)\b/i.test(line);
50
+ function isDerivedDeltaLike(line) {
51
+ return /^(this run|next run|going forward|follow-up|re-check|retest|verify|confirm|avoid repeating|adjust|change|update|retry|keep|watch)\b/i.test(line) || /\b(this run|next run|delta|change|adjust|retry|re-check|retest|verify|confirm|avoid repeating|follow-up)\b/i.test(line);
102
52
  }
103
-
104
- function isOpenLoopAction(line: string): boolean {
53
+ function isOpenLoopAction(line) {
105
54
  return /^(investigate|verify|confirm|re-check|retest|update|add|remove|fix|avoid|keep|watch|document)\b/i.test(line);
106
55
  }
107
-
108
- export function extractReflectionLessons(reflectionText: string): string[] {
56
+ function extractReflectionLessons(reflectionText) {
109
57
  return sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, "Lessons & pitfalls (symptom / cause / fix / prevention)"));
110
58
  }
111
-
112
- export function extractReflectionLearningGovernanceCandidates(reflectionText: string): ReflectionGovernanceEntry[] {
59
+ function extractReflectionLearningGovernanceCandidates(reflectionText) {
113
60
  const section = extractSectionMarkdown(reflectionText, "Learning governance candidates (.learnings / promotion / skill extraction)");
114
61
  if (!section) return [];
115
-
116
- const entryBlocks = section
117
- .split(/(?=^###\s+Entry\b)/gim)
118
- .map((block) => block.trim())
119
- .filter(Boolean);
120
-
121
- const parsed = entryBlocks
122
- .map(parseReflectionGovernanceEntry)
123
- .filter((entry): entry is ReflectionGovernanceEntry => entry !== null);
124
-
62
+ const entryBlocks = section.split(/(?=^###\s+Entry\b)/gim).map((block) => block.trim()).filter(Boolean);
63
+ const parsed = entryBlocks.map(parseReflectionGovernanceEntry).filter((entry) => entry !== null);
125
64
  if (parsed.length > 0) return parsed;
126
-
127
65
  const fallbackBullets = sanitizeReflectionSliceLines(
128
66
  parseSectionBullets(reflectionText, "Learning governance candidates (.learnings / promotion / skill extraction)")
129
67
  );
130
68
  if (fallbackBullets.length === 0) return [];
131
-
132
69
  return [{
133
70
  priority: "medium",
134
71
  status: "pending",
135
72
  area: "config",
136
73
  summary: "Reflection learning governance candidates",
137
74
  details: fallbackBullets.map((line) => `- ${line}`).join("\n"),
138
- suggestedAction: "Review the governance candidates, promote durable rules to AGENTS.md / SOUL.md / TOOLS.md when stable, and extract a skill if the pattern becomes reusable.",
75
+ suggestedAction: "Review the governance candidates, promote durable rules to AGENTS.md / SOUL.md / TOOLS.md when stable, and extract a skill if the pattern becomes reusable."
139
76
  }];
140
77
  }
141
-
142
- function parseReflectionGovernanceEntry(block: string): ReflectionGovernanceEntry | null {
78
+ function parseReflectionGovernanceEntry(block) {
143
79
  const body = block.replace(/^###\s+Entry\b[^\n]*\n?/i, "").trim();
144
80
  if (!body) return null;
145
-
146
- const readField = (label: string): string | undefined => {
81
+ const readField = (label) => {
147
82
  const match = body.match(new RegExp(`^\\*\\*${label}\\*\\*:\\s*(.+)$`, "im"));
148
83
  const value = match?.[1]?.trim();
149
- return value ? value : undefined;
84
+ return value ? value : void 0;
150
85
  };
151
-
152
- const readSection = (label: string): string | undefined => {
86
+ const readSection = (label) => {
153
87
  const escaped = label.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
154
88
  const match = body.match(new RegExp(`^###\\s+${escaped}\\s*\\n([\\s\\S]*?)(?=^###\\s+|$)`, "im"));
155
89
  const value = match?.[1]?.trim();
156
- return value ? value : undefined;
90
+ return value ? value : void 0;
157
91
  };
158
-
159
92
  const summary = readSection("Summary");
160
93
  if (!summary) return null;
161
-
162
94
  return {
163
95
  priority: readField("Priority"),
164
96
  status: readField("Status"),
165
97
  area: readField("Area"),
166
98
  summary,
167
99
  details: readSection("Details"),
168
- suggestedAction: readSection("Suggested Action"),
100
+ suggestedAction: readSection("Suggested Action")
169
101
  };
170
102
  }
171
-
172
- export function extractReflectionMappedMemories(reflectionText: string): ReflectionMappedMemory[] {
103
+ function extractReflectionMappedMemories(reflectionText) {
173
104
  return extractReflectionMappedMemoryItems(reflectionText).map(({ text, category, heading }) => ({ text, category, heading }));
174
105
  }
175
-
176
- export function extractReflectionMappedMemoryItems(reflectionText: string): ReflectionMappedMemoryItem[] {
177
- const mappedSections: Array<{
178
- heading: string;
179
- category: "preference" | "fact" | "decision";
180
- mappedKind: ReflectionMappedKind;
181
- }> = [
106
+ function extractReflectionMappedMemoryItems(reflectionText) {
107
+ const mappedSections = [
182
108
  {
183
109
  heading: "User model deltas (about the human)",
184
110
  category: "preference",
185
- mappedKind: "user-model",
111
+ mappedKind: "user-model"
186
112
  },
187
113
  {
188
114
  heading: "Agent model deltas (about the assistant/system)",
189
115
  category: "preference",
190
- mappedKind: "agent-model",
116
+ mappedKind: "agent-model"
191
117
  },
192
118
  {
193
119
  heading: "Lessons & pitfalls (symptom / cause / fix / prevention)",
194
120
  category: "fact",
195
- mappedKind: "lesson",
121
+ mappedKind: "lesson"
196
122
  },
197
123
  {
198
124
  heading: "Decisions (durable)",
199
125
  category: "decision",
200
- mappedKind: "decision",
201
- },
126
+ mappedKind: "decision"
127
+ }
202
128
  ];
203
-
204
129
  return mappedSections.flatMap(({ heading, category, mappedKind }) => {
205
130
  const lines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, heading));
206
131
  const groupSize = lines.length;
207
132
  return lines.map((text, ordinal) => ({ text, category, heading, mappedKind, ordinal, groupSize }));
208
133
  });
209
134
  }
210
-
211
- export function extractReflectionSlices(reflectionText: string): ReflectionSlices {
135
+ function extractReflectionSlices(reflectionText) {
212
136
  const invariantSection = parseSectionBullets(reflectionText, "Invariants");
213
137
  const derivedSection = parseSectionBullets(reflectionText, "Derived");
214
138
  const mergedSection = parseSectionBullets(reflectionText, "Invariants & Reflections");
215
-
216
139
  const invariantsPrimary = sanitizeReflectionSliceLines(invariantSection).filter(isInvariantRuleLike);
217
140
  const derivedPrimary = sanitizeReflectionSliceLines(derivedSection).filter(isDerivedDeltaLike);
218
-
219
141
  const invariantLinesLegacy = sanitizeReflectionSliceLines(
220
142
  mergedSection.filter((line) => /invariant|stable|policy|rule/i.test(line))
221
143
  ).filter(isInvariantRuleLike);
222
144
  const reflectionLinesLegacy = sanitizeReflectionSliceLines(
223
145
  mergedSection.filter((line) => /reflect|inherit|derive|change|apply/i.test(line))
224
146
  ).filter(isDerivedDeltaLike);
225
- const openLoopLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, "Open loops / next actions"))
226
- .filter(isOpenLoopAction)
227
- .filter(isDerivedDeltaLike);
228
- const durableDecisionLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, "Decisions (durable)"))
229
- .filter(isInvariantRuleLike);
230
-
231
- const invariants = invariantsPrimary.length > 0
232
- ? invariantsPrimary
233
- : (invariantLinesLegacy.length > 0 ? invariantLinesLegacy : durableDecisionLines);
234
- const derived = derivedPrimary.length > 0
235
- ? derivedPrimary
236
- : [...reflectionLinesLegacy, ...openLoopLines];
237
-
147
+ const openLoopLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, "Open loops / next actions")).filter(isOpenLoopAction).filter(isDerivedDeltaLike);
148
+ const durableDecisionLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, "Decisions (durable)")).filter(isInvariantRuleLike);
149
+ const invariants = invariantsPrimary.length > 0 ? invariantsPrimary : invariantLinesLegacy.length > 0 ? invariantLinesLegacy : durableDecisionLines;
150
+ const derived = derivedPrimary.length > 0 ? derivedPrimary : [...reflectionLinesLegacy, ...openLoopLines];
238
151
  return {
239
152
  invariants: invariants.slice(0, 8),
240
- derived: derived.slice(0, 10),
153
+ derived: derived.slice(0, 10)
241
154
  };
242
155
  }
243
-
244
- export function extractReflectionSliceItems(reflectionText: string): ReflectionSliceItem[] {
156
+ function extractReflectionSliceItems(reflectionText) {
245
157
  const slices = extractReflectionSlices(reflectionText);
246
158
  const invariantGroupSize = slices.invariants.length;
247
159
  const derivedGroupSize = slices.derived.length;
248
-
249
160
  const invariantItems = slices.invariants.map((text, ordinal) => ({
250
161
  text,
251
- itemKind: "invariant" as const,
252
- section: "Invariants" as const,
162
+ itemKind: "invariant",
163
+ section: "Invariants",
253
164
  ordinal,
254
- groupSize: invariantGroupSize,
165
+ groupSize: invariantGroupSize
255
166
  }));
256
167
  const derivedItems = slices.derived.map((text, ordinal) => ({
257
168
  text,
258
- itemKind: "derived" as const,
259
- section: "Derived" as const,
169
+ itemKind: "derived",
170
+ section: "Derived",
260
171
  ordinal,
261
- groupSize: derivedGroupSize,
172
+ groupSize: derivedGroupSize
262
173
  }));
263
-
264
174
  return [...invariantItems, ...derivedItems];
265
175
  }
176
+ export {
177
+ extractReflectionLearningGovernanceCandidates,
178
+ extractReflectionLessons,
179
+ extractReflectionMappedMemories,
180
+ extractReflectionMappedMemoryItems,
181
+ extractReflectionSliceItems,
182
+ extractReflectionSlices,
183
+ extractSectionMarkdown,
184
+ isPlaceholderReflectionSliceLine,
185
+ normalizeReflectionSliceLine,
186
+ parseSectionBullets,
187
+ sanitizeReflectionSliceLines
188
+ };
189
+ //# sourceMappingURL=reflection-slices.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/reflection-slices.ts"],
4
+ "sourcesContent": ["// SPDX-License-Identifier: LicenseRef-Mnemo-Pro\nexport interface ReflectionSlices {\n invariants: string[];\n derived: string[];\n}\n\nexport interface ReflectionMappedMemory {\n text: string;\n category: \"preference\" | \"fact\" | \"decision\";\n heading: string;\n}\n\nexport type ReflectionMappedKind = \"user-model\" | \"agent-model\" | \"lesson\" | \"decision\";\n\nexport interface ReflectionMappedMemoryItem extends ReflectionMappedMemory {\n mappedKind: ReflectionMappedKind;\n ordinal: number;\n groupSize: number;\n}\n\nexport interface ReflectionSliceItem {\n text: string;\n itemKind: \"invariant\" | \"derived\";\n section: \"Invariants\" | \"Derived\";\n ordinal: number;\n groupSize: number;\n}\n\nexport interface ReflectionGovernanceEntry {\n priority?: string;\n status?: string;\n area?: string;\n summary: string;\n details?: string;\n suggestedAction?: string;\n}\n\nexport function extractSectionMarkdown(markdown: string, heading: string): string {\n const lines = markdown.split(/\\r?\\n/);\n const headingNeedle = `## ${heading}`.toLowerCase();\n let inSection = false;\n const collected: string[] = [];\n for (const raw of lines) {\n const line = raw.trim();\n const lower = line.toLowerCase();\n if (lower.startsWith(\"## \")) {\n if (inSection && lower !== headingNeedle) break;\n inSection = lower === headingNeedle;\n continue;\n }\n if (!inSection) continue;\n collected.push(raw);\n }\n return collected.join(\"\\n\").trim();\n}\n\nexport function parseSectionBullets(markdown: string, heading: string): string[] {\n const lines = extractSectionMarkdown(markdown, heading).split(/\\r?\\n/);\n const collected: string[] = [];\n for (const raw of lines) {\n const line = raw.trim();\n if (line.startsWith(\"- \") || line.startsWith(\"* \")) {\n const normalized = line.slice(2).trim();\n if (normalized) collected.push(normalized);\n }\n }\n return collected;\n}\n\nexport function isPlaceholderReflectionSliceLine(line: string): boolean {\n const normalized = line.replace(/\\*\\*/g, \"\").trim();\n if (!normalized) return true;\n if (/^\\(none( captured)?\\)$/i.test(normalized)) return true;\n if (/^(invariants?|reflections?|derived)[:\uFF1A]$/i.test(normalized)) return true;\n if (/apply this session'?s deltas next run/i.test(normalized)) return true;\n if (/apply this session'?s distilled changes next run/i.test(normalized)) return true;\n if (/investigate why embedded reflection generation failed/i.test(normalized)) return true;\n return false;\n}\n\nexport function normalizeReflectionSliceLine(line: string): string {\n return line\n .replace(/\\*\\*/g, \"\")\n .replace(/^(invariants?|reflections?|derived)[:\uFF1A]\\s*/i, \"\")\n .trim();\n}\n\nexport function sanitizeReflectionSliceLines(lines: string[]): string[] {\n return lines\n .map(normalizeReflectionSliceLine)\n .filter((line) => !isPlaceholderReflectionSliceLine(line));\n}\n\nfunction isInvariantRuleLike(line: string): boolean {\n return /^(always|never|when\\b|if\\b|before\\b|after\\b|prefer\\b|avoid\\b|require\\b|only\\b|do not\\b|must\\b|should\\b)/i.test(line) ||\n /\\b(must|should|never|always|prefer|avoid|required?)\\b/i.test(line);\n}\n\nfunction isDerivedDeltaLike(line: string): boolean {\n return /^(this run|next run|going forward|follow-up|re-check|retest|verify|confirm|avoid repeating|adjust|change|update|retry|keep|watch)\\b/i.test(line) ||\n /\\b(this run|next run|delta|change|adjust|retry|re-check|retest|verify|confirm|avoid repeating|follow-up)\\b/i.test(line);\n}\n\nfunction isOpenLoopAction(line: string): boolean {\n return /^(investigate|verify|confirm|re-check|retest|update|add|remove|fix|avoid|keep|watch|document)\\b/i.test(line);\n}\n\nexport function extractReflectionLessons(reflectionText: string): string[] {\n return sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, \"Lessons & pitfalls (symptom / cause / fix / prevention)\"));\n}\n\nexport function extractReflectionLearningGovernanceCandidates(reflectionText: string): ReflectionGovernanceEntry[] {\n const section = extractSectionMarkdown(reflectionText, \"Learning governance candidates (.learnings / promotion / skill extraction)\");\n if (!section) return [];\n\n const entryBlocks = section\n .split(/(?=^###\\s+Entry\\b)/gim)\n .map((block) => block.trim())\n .filter(Boolean);\n\n const parsed = entryBlocks\n .map(parseReflectionGovernanceEntry)\n .filter((entry): entry is ReflectionGovernanceEntry => entry !== null);\n\n if (parsed.length > 0) return parsed;\n\n const fallbackBullets = sanitizeReflectionSliceLines(\n parseSectionBullets(reflectionText, \"Learning governance candidates (.learnings / promotion / skill extraction)\")\n );\n if (fallbackBullets.length === 0) return [];\n\n return [{\n priority: \"medium\",\n status: \"pending\",\n area: \"config\",\n summary: \"Reflection learning governance candidates\",\n details: fallbackBullets.map((line) => `- ${line}`).join(\"\\n\"),\n suggestedAction: \"Review the governance candidates, promote durable rules to AGENTS.md / SOUL.md / TOOLS.md when stable, and extract a skill if the pattern becomes reusable.\",\n }];\n}\n\nfunction parseReflectionGovernanceEntry(block: string): ReflectionGovernanceEntry | null {\n const body = block.replace(/^###\\s+Entry\\b[^\\n]*\\n?/i, \"\").trim();\n if (!body) return null;\n\n const readField = (label: string): string | undefined => {\n const match = body.match(new RegExp(`^\\\\*\\\\*${label}\\\\*\\\\*:\\\\s*(.+)$`, \"im\"));\n const value = match?.[1]?.trim();\n return value ? value : undefined;\n };\n\n const readSection = (label: string): string | undefined => {\n const escaped = label.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const match = body.match(new RegExp(`^###\\\\s+${escaped}\\\\s*\\\\n([\\\\s\\\\S]*?)(?=^###\\\\s+|$)`, \"im\"));\n const value = match?.[1]?.trim();\n return value ? value : undefined;\n };\n\n const summary = readSection(\"Summary\");\n if (!summary) return null;\n\n return {\n priority: readField(\"Priority\"),\n status: readField(\"Status\"),\n area: readField(\"Area\"),\n summary,\n details: readSection(\"Details\"),\n suggestedAction: readSection(\"Suggested Action\"),\n };\n}\n\nexport function extractReflectionMappedMemories(reflectionText: string): ReflectionMappedMemory[] {\n return extractReflectionMappedMemoryItems(reflectionText).map(({ text, category, heading }) => ({ text, category, heading }));\n}\n\nexport function extractReflectionMappedMemoryItems(reflectionText: string): ReflectionMappedMemoryItem[] {\n const mappedSections: Array<{\n heading: string;\n category: \"preference\" | \"fact\" | \"decision\";\n mappedKind: ReflectionMappedKind;\n }> = [\n {\n heading: \"User model deltas (about the human)\",\n category: \"preference\",\n mappedKind: \"user-model\",\n },\n {\n heading: \"Agent model deltas (about the assistant/system)\",\n category: \"preference\",\n mappedKind: \"agent-model\",\n },\n {\n heading: \"Lessons & pitfalls (symptom / cause / fix / prevention)\",\n category: \"fact\",\n mappedKind: \"lesson\",\n },\n {\n heading: \"Decisions (durable)\",\n category: \"decision\",\n mappedKind: \"decision\",\n },\n ];\n\n return mappedSections.flatMap(({ heading, category, mappedKind }) => {\n const lines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, heading));\n const groupSize = lines.length;\n return lines.map((text, ordinal) => ({ text, category, heading, mappedKind, ordinal, groupSize }));\n });\n}\n\nexport function extractReflectionSlices(reflectionText: string): ReflectionSlices {\n const invariantSection = parseSectionBullets(reflectionText, \"Invariants\");\n const derivedSection = parseSectionBullets(reflectionText, \"Derived\");\n const mergedSection = parseSectionBullets(reflectionText, \"Invariants & Reflections\");\n\n const invariantsPrimary = sanitizeReflectionSliceLines(invariantSection).filter(isInvariantRuleLike);\n const derivedPrimary = sanitizeReflectionSliceLines(derivedSection).filter(isDerivedDeltaLike);\n\n const invariantLinesLegacy = sanitizeReflectionSliceLines(\n mergedSection.filter((line) => /invariant|stable|policy|rule/i.test(line))\n ).filter(isInvariantRuleLike);\n const reflectionLinesLegacy = sanitizeReflectionSliceLines(\n mergedSection.filter((line) => /reflect|inherit|derive|change|apply/i.test(line))\n ).filter(isDerivedDeltaLike);\n const openLoopLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, \"Open loops / next actions\"))\n .filter(isOpenLoopAction)\n .filter(isDerivedDeltaLike);\n const durableDecisionLines = sanitizeReflectionSliceLines(parseSectionBullets(reflectionText, \"Decisions (durable)\"))\n .filter(isInvariantRuleLike);\n\n const invariants = invariantsPrimary.length > 0\n ? invariantsPrimary\n : (invariantLinesLegacy.length > 0 ? invariantLinesLegacy : durableDecisionLines);\n const derived = derivedPrimary.length > 0\n ? derivedPrimary\n : [...reflectionLinesLegacy, ...openLoopLines];\n\n return {\n invariants: invariants.slice(0, 8),\n derived: derived.slice(0, 10),\n };\n}\n\nexport function extractReflectionSliceItems(reflectionText: string): ReflectionSliceItem[] {\n const slices = extractReflectionSlices(reflectionText);\n const invariantGroupSize = slices.invariants.length;\n const derivedGroupSize = slices.derived.length;\n\n const invariantItems = slices.invariants.map((text, ordinal) => ({\n text,\n itemKind: \"invariant\" as const,\n section: \"Invariants\" as const,\n ordinal,\n groupSize: invariantGroupSize,\n }));\n const derivedItems = slices.derived.map((text, ordinal) => ({\n text,\n itemKind: \"derived\" as const,\n section: \"Derived\" as const,\n ordinal,\n groupSize: derivedGroupSize,\n }));\n\n return [...invariantItems, ...derivedItems];\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,85 @@
1
+ import type { MemoryEntry, MemorySearchResult } from "./store.js";
2
+ import { type ReflectionSlices } from "./reflection-slices.js";
3
+ export declare const REFLECTION_DERIVE_LOGISTIC_MIDPOINT_DAYS = 3;
4
+ export declare const REFLECTION_DERIVE_LOGISTIC_K = 1.2;
5
+ export declare const REFLECTION_DERIVE_FALLBACK_BASE_WEIGHT = 0.35;
6
+ export declare const DEFAULT_REFLECTION_DERIVED_MAX_AGE_MS: number;
7
+ export declare const DEFAULT_REFLECTION_MAPPED_MAX_AGE_MS: number;
8
+ type ReflectionStoreKind = "event" | "item-invariant" | "item-derived" | "combined-legacy";
9
+ type ReflectionErrorSignalLike = {
10
+ signatureHash: string;
11
+ };
12
+ interface ReflectionStorePayload {
13
+ text: string;
14
+ metadata: Record<string, unknown>;
15
+ kind: ReflectionStoreKind;
16
+ }
17
+ interface BuildReflectionStorePayloadsParams {
18
+ reflectionText: string;
19
+ sessionKey: string;
20
+ sessionId: string;
21
+ agentId: string;
22
+ command: string;
23
+ scope: string;
24
+ toolErrorSignals: ReflectionErrorSignalLike[];
25
+ runAt: number;
26
+ usedFallback: boolean;
27
+ eventId?: string;
28
+ sourceReflectionPath?: string;
29
+ writeLegacyCombined?: boolean;
30
+ }
31
+ export declare function buildReflectionStorePayloads(params: BuildReflectionStorePayloadsParams): {
32
+ eventId: string;
33
+ slices: ReflectionSlices;
34
+ payloads: ReflectionStorePayload[];
35
+ };
36
+ interface ReflectionStoreDeps {
37
+ embedPassage: (text: string) => Promise<number[]>;
38
+ vectorSearch: (vector: number[], limit?: number, minScore?: number, scopeFilter?: string[]) => Promise<MemorySearchResult[]>;
39
+ store: (entry: Omit<MemoryEntry, "id" | "timestamp">) => Promise<MemoryEntry>;
40
+ }
41
+ interface StoreReflectionToLanceDBParams extends BuildReflectionStorePayloadsParams, ReflectionStoreDeps {
42
+ dedupeThreshold?: number;
43
+ }
44
+ export declare function storeReflectionToLanceDB(params: StoreReflectionToLanceDBParams): Promise<{
45
+ stored: boolean;
46
+ eventId: string;
47
+ slices: ReflectionSlices;
48
+ storedKinds: ReflectionStoreKind[];
49
+ }>;
50
+ export interface LoadReflectionSlicesParams {
51
+ entries: MemoryEntry[];
52
+ agentId: string;
53
+ now?: number;
54
+ deriveMaxAgeMs?: number;
55
+ invariantMaxAgeMs?: number;
56
+ }
57
+ export declare function loadAgentReflectionSlicesFromEntries(params: LoadReflectionSlicesParams): {
58
+ invariants: string[];
59
+ derived: string[];
60
+ };
61
+ export declare function computeDerivedLineQuality(nonPlaceholderLineCount: number): number;
62
+ export interface LoadReflectionMappedRowsParams {
63
+ entries: MemoryEntry[];
64
+ agentId: string;
65
+ now?: number;
66
+ maxAgeMs?: number;
67
+ maxPerKind?: number;
68
+ }
69
+ export interface ReflectionMappedSlices {
70
+ userModel: string[];
71
+ agentModel: string[];
72
+ lesson: string[];
73
+ decision: string[];
74
+ }
75
+ export declare function loadReflectionMappedRowsFromEntries(params: LoadReflectionMappedRowsParams): ReflectionMappedSlices;
76
+ export declare function getReflectionDerivedDecayDefaults(): {
77
+ midpointDays: number;
78
+ k: number;
79
+ };
80
+ export declare function getReflectionInvariantDecayDefaults(): {
81
+ midpointDays: number;
82
+ k: number;
83
+ };
84
+ export {};
85
+ //# sourceMappingURL=reflection-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection-store.d.ts","sourceRoot":"","sources":["../../src/reflection-store.ts"],"names":[],"mappings":"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"}