audrey 0.17.0 → 0.20.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 (191) hide show
  1. package/README.md +129 -374
  2. package/dist/mcp-server/config.d.ts +20 -0
  3. package/dist/mcp-server/config.d.ts.map +1 -0
  4. package/dist/mcp-server/config.js +125 -0
  5. package/dist/mcp-server/config.js.map +1 -0
  6. package/dist/mcp-server/index.d.ts +100 -0
  7. package/dist/mcp-server/index.d.ts.map +1 -0
  8. package/dist/mcp-server/index.js +1113 -0
  9. package/dist/mcp-server/index.js.map +1 -0
  10. package/dist/src/adaptive.d.ts +7 -0
  11. package/dist/src/adaptive.d.ts.map +1 -0
  12. package/dist/src/adaptive.js +49 -0
  13. package/dist/src/adaptive.js.map +1 -0
  14. package/dist/src/affect.d.ts +19 -0
  15. package/dist/src/affect.d.ts.map +1 -0
  16. package/dist/src/affect.js +72 -0
  17. package/dist/src/affect.js.map +1 -0
  18. package/dist/src/audrey.d.ts +140 -0
  19. package/dist/src/audrey.d.ts.map +1 -0
  20. package/dist/src/audrey.js +564 -0
  21. package/dist/src/audrey.js.map +1 -0
  22. package/dist/src/capsule.d.ts +68 -0
  23. package/dist/src/capsule.d.ts.map +1 -0
  24. package/dist/src/capsule.js +311 -0
  25. package/dist/src/capsule.js.map +1 -0
  26. package/dist/src/causal.d.ts +28 -0
  27. package/dist/src/causal.d.ts.map +1 -0
  28. package/dist/src/causal.js +65 -0
  29. package/dist/src/causal.js.map +1 -0
  30. package/dist/src/confidence.d.ts +12 -0
  31. package/dist/src/confidence.d.ts.map +1 -0
  32. package/dist/src/confidence.js +63 -0
  33. package/dist/src/confidence.js.map +1 -0
  34. package/dist/src/consolidate.d.ts +8 -0
  35. package/dist/src/consolidate.d.ts.map +1 -0
  36. package/dist/src/consolidate.js +218 -0
  37. package/dist/src/consolidate.js.map +1 -0
  38. package/dist/src/context.d.ts +3 -0
  39. package/dist/src/context.d.ts.map +1 -0
  40. package/dist/src/context.js +19 -0
  41. package/dist/src/context.js.map +1 -0
  42. package/dist/src/db.d.ts +12 -0
  43. package/dist/src/db.d.ts.map +1 -0
  44. package/dist/src/db.js +380 -0
  45. package/dist/src/db.js.map +1 -0
  46. package/dist/src/decay.d.ts +7 -0
  47. package/dist/src/decay.d.ts.map +1 -0
  48. package/dist/src/decay.js +68 -0
  49. package/dist/src/decay.js.map +1 -0
  50. package/dist/src/embedding.d.ts +57 -0
  51. package/dist/src/embedding.d.ts.map +1 -0
  52. package/dist/src/embedding.js +254 -0
  53. package/dist/src/embedding.js.map +1 -0
  54. package/dist/src/encode.d.ts +15 -0
  55. package/dist/src/encode.d.ts.map +1 -0
  56. package/dist/src/encode.js +36 -0
  57. package/dist/src/encode.js.map +1 -0
  58. package/dist/src/events.d.ts +69 -0
  59. package/dist/src/events.d.ts.map +1 -0
  60. package/dist/src/events.js +149 -0
  61. package/dist/src/events.js.map +1 -0
  62. package/dist/src/export.d.ts +3 -0
  63. package/dist/src/export.d.ts.map +1 -0
  64. package/dist/src/export.js +46 -0
  65. package/dist/src/export.js.map +1 -0
  66. package/dist/src/forget.d.ts +11 -0
  67. package/dist/src/forget.d.ts.map +1 -0
  68. package/dist/src/forget.js +105 -0
  69. package/dist/src/forget.js.map +1 -0
  70. package/dist/src/fts.d.ts +34 -0
  71. package/dist/src/fts.d.ts.map +1 -0
  72. package/dist/src/fts.js +117 -0
  73. package/dist/src/fts.js.map +1 -0
  74. package/dist/src/hybrid-recall.d.ts +37 -0
  75. package/dist/src/hybrid-recall.d.ts.map +1 -0
  76. package/dist/src/hybrid-recall.js +213 -0
  77. package/dist/src/hybrid-recall.js.map +1 -0
  78. package/dist/src/import.d.ts +4 -0
  79. package/dist/src/import.d.ts.map +1 -0
  80. package/dist/src/import.js +127 -0
  81. package/dist/src/import.js.map +1 -0
  82. package/dist/src/index.d.ts +22 -0
  83. package/dist/src/index.d.ts.map +1 -0
  84. package/{src → dist/src}/index.js +5 -13
  85. package/dist/src/index.js.map +1 -0
  86. package/dist/src/interference.d.ts +13 -0
  87. package/dist/src/interference.d.ts.map +1 -0
  88. package/dist/src/interference.js +45 -0
  89. package/dist/src/interference.js.map +1 -0
  90. package/dist/src/introspect.d.ts +4 -0
  91. package/dist/src/introspect.d.ts.map +1 -0
  92. package/dist/src/introspect.js +40 -0
  93. package/dist/src/introspect.js.map +1 -0
  94. package/dist/src/llm.d.ts +38 -0
  95. package/dist/src/llm.d.ts.map +1 -0
  96. package/dist/src/llm.js +167 -0
  97. package/dist/src/llm.js.map +1 -0
  98. package/dist/src/migrate.d.ts +6 -0
  99. package/dist/src/migrate.d.ts.map +1 -0
  100. package/dist/src/migrate.js +51 -0
  101. package/dist/src/migrate.js.map +1 -0
  102. package/dist/src/promote.d.ts +40 -0
  103. package/dist/src/promote.d.ts.map +1 -0
  104. package/dist/src/promote.js +200 -0
  105. package/dist/src/promote.js.map +1 -0
  106. package/dist/src/prompts.d.ts +16 -0
  107. package/dist/src/prompts.d.ts.map +1 -0
  108. package/{src → dist/src}/prompts.js +172 -203
  109. package/dist/src/prompts.js.map +1 -0
  110. package/dist/src/recall.d.ts +9 -0
  111. package/dist/src/recall.d.ts.map +1 -0
  112. package/dist/src/recall.js +432 -0
  113. package/dist/src/recall.js.map +1 -0
  114. package/dist/src/redact.d.ts +27 -0
  115. package/dist/src/redact.d.ts.map +1 -0
  116. package/dist/src/redact.js +228 -0
  117. package/dist/src/redact.js.map +1 -0
  118. package/dist/src/rollback.d.ts +8 -0
  119. package/dist/src/rollback.d.ts.map +1 -0
  120. package/dist/src/rollback.js +33 -0
  121. package/dist/src/rollback.js.map +1 -0
  122. package/dist/src/routes.d.ts +7 -0
  123. package/dist/src/routes.d.ts.map +1 -0
  124. package/dist/src/routes.js +226 -0
  125. package/dist/src/routes.js.map +1 -0
  126. package/dist/src/rules-compiler.d.ts +20 -0
  127. package/dist/src/rules-compiler.d.ts.map +1 -0
  128. package/dist/src/rules-compiler.js +143 -0
  129. package/dist/src/rules-compiler.js.map +1 -0
  130. package/dist/src/server.d.ts +12 -0
  131. package/dist/src/server.d.ts.map +1 -0
  132. package/dist/src/server.js +22 -0
  133. package/dist/src/server.js.map +1 -0
  134. package/dist/src/tool-trace.d.ts +37 -0
  135. package/dist/src/tool-trace.d.ts.map +1 -0
  136. package/dist/src/tool-trace.js +142 -0
  137. package/dist/src/tool-trace.js.map +1 -0
  138. package/dist/src/types.d.ts +446 -0
  139. package/dist/src/types.d.ts.map +1 -0
  140. package/dist/src/types.js +6 -0
  141. package/dist/src/types.js.map +1 -0
  142. package/dist/src/ulid.d.ts +3 -0
  143. package/dist/src/ulid.d.ts.map +1 -0
  144. package/dist/src/ulid.js +11 -0
  145. package/dist/src/ulid.js.map +1 -0
  146. package/dist/src/utils.d.ts +10 -0
  147. package/dist/src/utils.d.ts.map +1 -0
  148. package/dist/src/utils.js +41 -0
  149. package/dist/src/utils.js.map +1 -0
  150. package/dist/src/validate.d.ts +22 -0
  151. package/dist/src/validate.d.ts.map +1 -0
  152. package/dist/src/validate.js +109 -0
  153. package/dist/src/validate.js.map +1 -0
  154. package/docs/production-readiness.md +28 -0
  155. package/examples/fintech-ops-demo.js +1 -1
  156. package/examples/healthcare-ops-demo.js +1 -1
  157. package/examples/stripe-demo.js +1 -1
  158. package/package.json +34 -13
  159. package/benchmarks/baselines.js +0 -169
  160. package/benchmarks/cases.js +0 -421
  161. package/benchmarks/reference-results.js +0 -70
  162. package/benchmarks/report.js +0 -255
  163. package/benchmarks/run.js +0 -514
  164. package/mcp-server/config.js +0 -133
  165. package/mcp-server/index.js +0 -1265
  166. package/mcp-server/serve.js +0 -482
  167. package/src/adaptive.js +0 -53
  168. package/src/affect.js +0 -64
  169. package/src/audrey.js +0 -642
  170. package/src/causal.js +0 -95
  171. package/src/confidence.js +0 -120
  172. package/src/consolidate.js +0 -281
  173. package/src/context.js +0 -15
  174. package/src/db.js +0 -391
  175. package/src/decay.js +0 -84
  176. package/src/embedding.js +0 -260
  177. package/src/encode.js +0 -69
  178. package/src/export.js +0 -67
  179. package/src/forget.js +0 -111
  180. package/src/fts.js +0 -134
  181. package/src/import.js +0 -273
  182. package/src/interference.js +0 -51
  183. package/src/introspect.js +0 -48
  184. package/src/llm.js +0 -249
  185. package/src/migrate.js +0 -58
  186. package/src/recall.js +0 -573
  187. package/src/rollback.js +0 -42
  188. package/src/ulid.js +0 -18
  189. package/src/utils.js +0 -63
  190. package/src/validate.js +0 -172
  191. package/types/index.d.ts +0 -434
@@ -1,255 +0,0 @@
1
- import { mkdirSync, writeFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
-
4
- const PALETTE = {
5
- audrey: '#0f766e',
6
- vector: '#0369a1',
7
- keyword: '#6d28d9',
8
- recent: '#b45309',
9
- external: '#1d4ed8',
10
- accent: '#111827',
11
- muted: '#6b7280',
12
- surface: '#f8fafc',
13
- border: '#cbd5e1',
14
- };
15
-
16
- function escapeHtml(text) {
17
- return String(text)
18
- .replaceAll('&', '&')
19
- .replaceAll('<', '&lt;')
20
- .replaceAll('>', '&gt;')
21
- .replaceAll('"', '&quot;');
22
- }
23
-
24
- function chartBarColor(label) {
25
- if (label === 'Audrey') return PALETTE.audrey;
26
- if (label.includes('Vector')) return PALETTE.vector;
27
- if (label.includes('Keyword')) return PALETTE.keyword;
28
- if (label.includes('Recent')) return PALETTE.recent;
29
- return PALETTE.external;
30
- }
31
-
32
- function renderBarChart({ title, rows, valueSuffix = '%', maxValue = 100 }) {
33
- const width = 960;
34
- const height = 420;
35
- const margin = { top: 56, right: 32, bottom: 88, left: 64 };
36
- const plotWidth = width - margin.left - margin.right;
37
- const plotHeight = height - margin.top - margin.bottom;
38
- const barWidth = Math.max(32, Math.floor(plotWidth / Math.max(rows.length, 1)) - 18);
39
- const gap = rows.length > 1 ? (plotWidth - barWidth * rows.length) / (rows.length - 1) : 0;
40
-
41
- const bars = rows.map((row, index) => {
42
- const value = Math.max(0, Math.min(maxValue, row.value));
43
- const barHeight = (value / maxValue) * plotHeight;
44
- const x = margin.left + index * (barWidth + gap);
45
- const y = margin.top + plotHeight - barHeight;
46
- return `
47
- <rect x="${x}" y="${y}" width="${barWidth}" height="${barHeight}" rx="8" fill="${chartBarColor(row.label)}" />
48
- <text x="${x + barWidth / 2}" y="${y - 10}" text-anchor="middle" font-size="15" fill="${PALETTE.accent}">${value.toFixed(1)}${valueSuffix}</text>
49
- <text x="${x + barWidth / 2}" y="${height - 42}" text-anchor="middle" font-size="14" fill="${PALETTE.muted}">${escapeHtml(row.label)}</text>
50
- `;
51
- }).join('\n');
52
-
53
- const grid = [0, 25, 50, 75, 100].map(tick => {
54
- const y = margin.top + plotHeight - (tick / maxValue) * plotHeight;
55
- return `
56
- <line x1="${margin.left}" y1="${y}" x2="${width - margin.right}" y2="${y}" stroke="${PALETTE.border}" stroke-dasharray="4 4" />
57
- <text x="${margin.left - 10}" y="${y + 5}" text-anchor="end" font-size="13" fill="${PALETTE.muted}">${tick}${valueSuffix}</text>
58
- `;
59
- }).join('\n');
60
-
61
- return `<?xml version="1.0" encoding="UTF-8"?>
62
- <svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-label="${escapeHtml(title)}">
63
- <rect width="100%" height="100%" fill="white" />
64
- <text x="${margin.left}" y="34" font-size="24" font-weight="700" fill="${PALETTE.accent}">${escapeHtml(title)}</text>
65
- ${grid}
66
- ${bars}
67
- </svg>`;
68
- }
69
-
70
- function renderTrendList(trends) {
71
- return trends.map(trend => `
72
- <li>
73
- <strong>${escapeHtml(trend.title)}</strong><br />
74
- ${escapeHtml(trend.summary)}<br />
75
- <a href="${trend.source}">${escapeHtml(trend.source)}</a>
76
- </li>
77
- `).join('\n');
78
- }
79
-
80
- function renderCaseRows(localCases) {
81
- return localCases.map(caseResult => `
82
- <tr>
83
- <td>${escapeHtml(caseResult.title)}</td>
84
- <td>${escapeHtml(caseResult.suite)}</td>
85
- <td>${escapeHtml(caseResult.family)}</td>
86
- ${caseResult.results.map(result => {
87
- const bg = result.passed ? '#ecfdf5' : result.score >= 0.5 ? '#fff7ed' : '#fef2f2';
88
- const fg = result.passed ? '#065f46' : result.score >= 0.5 ? '#9a3412' : '#991b1b';
89
- return `<td style="background:${bg};color:${fg}">${result.score.toFixed(2)}<br /><span style="font-size:12px">${escapeHtml(result.summary)}</span></td>`;
90
- }).join('')}
91
- </tr>
92
- `).join('\n');
93
- }
94
-
95
- function renderSuiteSections(suiteCharts) {
96
- if (suiteCharts.length === 0) return '';
97
- return suiteCharts.map(chart => `
98
- <section class="callout">
99
- <h2>${escapeHtml(chart.title)}</h2>
100
- <p>${escapeHtml(chart.description)}</p>
101
- <img src="./${escapeHtml(chart.fileName)}" alt="${escapeHtml(chart.title)} chart" />
102
- </section>
103
- `).join('\n');
104
- }
105
-
106
- export function writeBenchmarkArtifacts({
107
- outputDir,
108
- summary,
109
- localOverall,
110
- localSuites,
111
- externalOverall,
112
- trends,
113
- readmeAssetsDir,
114
- }) {
115
- mkdirSync(outputDir, { recursive: true });
116
-
117
- const localChart = renderBarChart({
118
- title: 'Audrey vs Local Memory Baselines',
119
- rows: localOverall.map(row => ({ label: row.system, value: row.scorePercent })),
120
- });
121
- const externalChart = renderBarChart({
122
- title: 'Published LLM Memory Standards (LoCoMo)',
123
- rows: externalOverall.map(row => ({ label: row.system, value: row.score })),
124
- });
125
-
126
- writeFileSync(join(outputDir, 'local-overall.svg'), localChart, 'utf8');
127
- writeFileSync(join(outputDir, 'published-locomo.svg'), externalChart, 'utf8');
128
- writeFileSync(join(outputDir, 'summary.json'), JSON.stringify(summary, null, 2), 'utf8');
129
-
130
- const suiteCharts = localSuites.map(suite => {
131
- const fileName = `${suite.id}-overall.svg`;
132
- const chart = renderBarChart({
133
- title: `${suite.title} Benchmark`,
134
- rows: suite.overall.map(row => ({ label: row.system, value: row.scorePercent })),
135
- });
136
- writeFileSync(join(outputDir, fileName), chart, 'utf8');
137
- return {
138
- id: suite.id,
139
- title: `${suite.title} Benchmark`,
140
- description: suite.description,
141
- fileName,
142
- path: join(outputDir, fileName),
143
- };
144
- });
145
-
146
- let readmeAssets = null;
147
- if (readmeAssetsDir) {
148
- mkdirSync(readmeAssetsDir, { recursive: true });
149
- const localReadmeChart = join(readmeAssetsDir, 'local-benchmark.svg');
150
- const externalReadmeChart = join(readmeAssetsDir, 'published-memory-standards.svg');
151
- writeFileSync(localReadmeChart, localChart, 'utf8');
152
- writeFileSync(externalReadmeChart, externalChart, 'utf8');
153
-
154
- const operationsSuite = suiteCharts.find(chart => chart.id === 'operations');
155
- let operationsReadmeChart = null;
156
- if (operationsSuite) {
157
- operationsReadmeChart = join(readmeAssetsDir, 'operations-benchmark.svg');
158
- writeFileSync(
159
- operationsReadmeChart,
160
- renderBarChart({
161
- title: 'Audrey Memory Operations Benchmark',
162
- rows: (localSuites.find(suite => suite.id === 'operations')?.overall || [])
163
- .map(row => ({ label: row.system, value: row.scorePercent })),
164
- }),
165
- 'utf8',
166
- );
167
- }
168
-
169
- readmeAssets = {
170
- localChart: localReadmeChart,
171
- operationsChart: operationsReadmeChart,
172
- externalChart: externalReadmeChart,
173
- };
174
- }
175
-
176
- const html = `<!doctype html>
177
- <html lang="en">
178
- <head>
179
- <meta charset="utf-8" />
180
- <title>Audrey Memory Benchmark</title>
181
- <style>
182
- body { font-family: "Segoe UI", Arial, sans-serif; margin: 32px; color: ${PALETTE.accent}; background: ${PALETTE.surface}; }
183
- main { max-width: 1120px; margin: 0 auto; }
184
- h1, h2 { margin-bottom: 12px; }
185
- p, li { line-height: 1.5; }
186
- .callout { background: white; border: 1px solid ${PALETTE.border}; border-radius: 16px; padding: 20px; margin-bottom: 24px; }
187
- .grid { display: grid; gap: 24px; grid-template-columns: 1fr; }
188
- img { width: 100%; border: 1px solid ${PALETTE.border}; border-radius: 16px; background: white; }
189
- table { width: 100%; border-collapse: collapse; background: white; border-radius: 16px; overflow: hidden; }
190
- th, td { border: 1px solid ${PALETTE.border}; padding: 12px; vertical-align: top; text-align: left; }
191
- th { background: #e2e8f0; }
192
- code { background: #e2e8f0; padding: 2px 6px; border-radius: 6px; }
193
- </style>
194
- </head>
195
- <body>
196
- <main>
197
- <h1>Audrey Memory Benchmark</h1>
198
- <div class="callout">
199
- <p><strong>Method:</strong> Audrey is scored on a LongMemEval-inspired retrieval benchmark plus an operation-level lifecycle benchmark. The report still separates local Audrey-versus-baseline results from published external LoCoMo numbers so the comparison stays honest.</p>
200
- <p><strong>Run:</strong> <code>${escapeHtml(summary.command)}</code></p>
201
- <p><strong>Generated:</strong> ${escapeHtml(summary.generatedAt)}</p>
202
- </div>
203
-
204
- <div class="grid">
205
- <section class="callout">
206
- <h2>Combined Local Benchmark</h2>
207
- <img src="./local-overall.svg" alt="Combined local benchmark bar chart" />
208
- </section>
209
-
210
- ${renderSuiteSections(suiteCharts)}
211
-
212
- <section class="callout">
213
- <h2>Published Leaderboard</h2>
214
- <img src="./published-locomo.svg" alt="Published LoCoMo leaderboard bar chart" />
215
- </section>
216
- </div>
217
-
218
- <section class="callout">
219
- <h2>Case Matrix</h2>
220
- <table>
221
- <thead>
222
- <tr>
223
- <th>Case</th>
224
- <th>Suite</th>
225
- <th>Family</th>
226
- ${summary.local.overall.map(row => `<th>${escapeHtml(row.system)}</th>`).join('')}
227
- </tr>
228
- </thead>
229
- <tbody>
230
- ${renderCaseRows(summary.local.cases)}
231
- </tbody>
232
- </table>
233
- </section>
234
-
235
- <section class="callout">
236
- <h2>March 23, 2026 Memory Trends</h2>
237
- <ul>
238
- ${renderTrendList(trends)}
239
- </ul>
240
- </section>
241
- </main>
242
- </body>
243
- </html>`;
244
-
245
- writeFileSync(join(outputDir, 'report.html'), html, 'utf8');
246
-
247
- return {
248
- json: join(outputDir, 'summary.json'),
249
- html: join(outputDir, 'report.html'),
250
- localChart: join(outputDir, 'local-overall.svg'),
251
- suiteCharts,
252
- externalChart: join(outputDir, 'published-locomo.svg'),
253
- readmeAssets,
254
- };
255
- }