audrey 1.1.3 → 1.2.1

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 (285) hide show
  1. package/CHANGELOG.md +97 -0
  2. package/README.md +39 -12
  3. package/dist/mcp-server/codex-hooks-probe.d.ts +22 -0
  4. package/dist/mcp-server/codex-hooks-probe.d.ts.map +1 -0
  5. package/dist/mcp-server/codex-hooks-probe.js +160 -0
  6. package/dist/mcp-server/codex-hooks-probe.js.map +1 -0
  7. package/dist/mcp-server/config.d.ts +26 -2
  8. package/dist/mcp-server/config.d.ts.map +1 -1
  9. package/dist/mcp-server/config.js +54 -22
  10. package/dist/mcp-server/config.js.map +1 -1
  11. package/dist/mcp-server/hooks.d.ts +28 -0
  12. package/dist/mcp-server/hooks.d.ts.map +1 -1
  13. package/dist/mcp-server/hooks.js +91 -2
  14. package/dist/mcp-server/hooks.js.map +1 -1
  15. package/dist/mcp-server/index.d.ts +242 -2
  16. package/dist/mcp-server/index.d.ts.map +1 -1
  17. package/dist/mcp-server/index.js +806 -240
  18. package/dist/mcp-server/index.js.map +1 -1
  19. package/dist/mcp-server/tool-schemas.d.ts +32 -2
  20. package/dist/mcp-server/tool-schemas.d.ts.map +1 -1
  21. package/dist/mcp-server/tool-schemas.js +55 -0
  22. package/dist/mcp-server/tool-schemas.js.map +1 -1
  23. package/dist/src/audrey.d.ts +14 -2
  24. package/dist/src/audrey.d.ts.map +1 -1
  25. package/dist/src/audrey.js +152 -28
  26. package/dist/src/audrey.js.map +1 -1
  27. package/dist/src/autopilot.d.ts +22 -0
  28. package/dist/src/autopilot.d.ts.map +1 -1
  29. package/dist/src/autopilot.js +271 -50
  30. package/dist/src/autopilot.js.map +1 -1
  31. package/dist/src/capsule.d.ts +23 -0
  32. package/dist/src/capsule.d.ts.map +1 -1
  33. package/dist/src/capsule.js +56 -11
  34. package/dist/src/capsule.js.map +1 -1
  35. package/dist/src/confidence.d.ts +9 -1
  36. package/dist/src/confidence.d.ts.map +1 -1
  37. package/dist/src/confidence.js +16 -2
  38. package/dist/src/confidence.js.map +1 -1
  39. package/dist/src/consolidate.d.ts +4 -0
  40. package/dist/src/consolidate.d.ts.map +1 -1
  41. package/dist/src/consolidate.js +206 -34
  42. package/dist/src/consolidate.js.map +1 -1
  43. package/dist/src/controller.d.ts +17 -1
  44. package/dist/src/controller.d.ts.map +1 -1
  45. package/dist/src/controller.js +244 -128
  46. package/dist/src/controller.js.map +1 -1
  47. package/dist/src/db.d.ts.map +1 -1
  48. package/dist/src/db.js +233 -56
  49. package/dist/src/db.js.map +1 -1
  50. package/dist/src/encode.d.ts +2 -1
  51. package/dist/src/encode.d.ts.map +1 -1
  52. package/dist/src/encode.js +41 -4
  53. package/dist/src/encode.js.map +1 -1
  54. package/dist/src/events.d.ts +48 -1
  55. package/dist/src/events.d.ts.map +1 -1
  56. package/dist/src/events.js +160 -62
  57. package/dist/src/events.js.map +1 -1
  58. package/dist/src/export.d.ts.map +1 -1
  59. package/dist/src/export.js +4 -4
  60. package/dist/src/export.js.map +1 -1
  61. package/dist/src/grounding.d.ts +111 -0
  62. package/dist/src/grounding.d.ts.map +1 -0
  63. package/dist/src/grounding.js +259 -0
  64. package/dist/src/grounding.js.map +1 -0
  65. package/dist/src/hybrid-recall.d.ts +16 -7
  66. package/dist/src/hybrid-recall.d.ts.map +1 -1
  67. package/dist/src/hybrid-recall.js +22 -11
  68. package/dist/src/hybrid-recall.js.map +1 -1
  69. package/dist/src/import.d.ts +10 -0
  70. package/dist/src/import.d.ts.map +1 -1
  71. package/dist/src/import.js +122 -22
  72. package/dist/src/import.js.map +1 -1
  73. package/dist/src/llm.d.ts.map +1 -1
  74. package/dist/src/llm.js +16 -0
  75. package/dist/src/llm.js.map +1 -1
  76. package/dist/src/preflight.d.ts.map +1 -1
  77. package/dist/src/preflight.js +89 -47
  78. package/dist/src/preflight.js.map +1 -1
  79. package/dist/src/project.d.ts +4 -1
  80. package/dist/src/project.d.ts.map +1 -1
  81. package/dist/src/project.js +65 -5
  82. package/dist/src/project.js.map +1 -1
  83. package/dist/src/recall.d.ts.map +1 -1
  84. package/dist/src/recall.js +138 -13
  85. package/dist/src/recall.js.map +1 -1
  86. package/dist/src/redact.d.ts +1 -1
  87. package/dist/src/redact.d.ts.map +1 -1
  88. package/dist/src/redact.js +185 -5
  89. package/dist/src/redact.js.map +1 -1
  90. package/dist/src/routes.d.ts.map +1 -1
  91. package/dist/src/routes.js +91 -18
  92. package/dist/src/routes.js.map +1 -1
  93. package/dist/src/trust.d.ts +35 -0
  94. package/dist/src/trust.d.ts.map +1 -0
  95. package/dist/src/trust.js +77 -0
  96. package/dist/src/trust.js.map +1 -0
  97. package/dist/src/types.d.ts +24 -0
  98. package/dist/src/types.d.ts.map +1 -1
  99. package/package.json +3 -37
  100. package/benchmarks/adapter-kit.mjs +0 -20
  101. package/benchmarks/adapter-self-test.mjs +0 -170
  102. package/benchmarks/adapters/example-allow.mjs +0 -31
  103. package/benchmarks/adapters/mem0-platform.mjs +0 -274
  104. package/benchmarks/adapters/registry.json +0 -51
  105. package/benchmarks/adapters/zep-cloud.mjs +0 -304
  106. package/benchmarks/baselines.js +0 -174
  107. package/benchmarks/build-leaderboard.mjs +0 -183
  108. package/benchmarks/cases.js +0 -549
  109. package/benchmarks/create-conformance-card.mjs +0 -148
  110. package/benchmarks/create-submission-bundle.mjs +0 -190
  111. package/benchmarks/dry-run-external-adapters.mjs +0 -177
  112. package/benchmarks/guardbench.js +0 -1265
  113. package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
  114. package/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
  115. package/benchmarks/output/external/guardbench-external-evidence.json +0 -56
  116. package/benchmarks/output/guardbench-conformance-card.json +0 -63
  117. package/benchmarks/output/guardbench-manifest.json +0 -414
  118. package/benchmarks/output/guardbench-raw.json +0 -1279
  119. package/benchmarks/output/guardbench-summary.json +0 -2123
  120. package/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
  121. package/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
  122. package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +0 -63
  123. package/benchmarks/output/submission-bundle/guardbench-manifest.json +0 -414
  124. package/benchmarks/output/submission-bundle/guardbench-raw.json +0 -1279
  125. package/benchmarks/output/submission-bundle/guardbench-summary.json +0 -2123
  126. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-registry.schema.json +0 -69
  127. package/benchmarks/output/submission-bundle/schemas/guardbench-adapter-self-test.schema.json +0 -156
  128. package/benchmarks/output/submission-bundle/schemas/guardbench-conformance-card.schema.json +0 -184
  129. package/benchmarks/output/submission-bundle/schemas/guardbench-external-dry-run.schema.json +0 -74
  130. package/benchmarks/output/submission-bundle/schemas/guardbench-external-evidence.schema.json +0 -108
  131. package/benchmarks/output/submission-bundle/schemas/guardbench-external-run.schema.json +0 -160
  132. package/benchmarks/output/submission-bundle/schemas/guardbench-leaderboard.schema.json +0 -179
  133. package/benchmarks/output/submission-bundle/schemas/guardbench-manifest.schema.json +0 -213
  134. package/benchmarks/output/submission-bundle/schemas/guardbench-publication-verification.schema.json +0 -47
  135. package/benchmarks/output/submission-bundle/schemas/guardbench-raw.schema.json +0 -184
  136. package/benchmarks/output/submission-bundle/schemas/guardbench-submission-manifest.schema.json +0 -151
  137. package/benchmarks/output/submission-bundle/schemas/guardbench-summary.schema.json +0 -249
  138. package/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
  139. package/benchmarks/output/submission-bundle/validation-report.json +0 -31
  140. package/benchmarks/output/summary.json +0 -2354
  141. package/benchmarks/perf-snapshot.js +0 -307
  142. package/benchmarks/perf.bench.js +0 -169
  143. package/benchmarks/public-paths.mjs +0 -97
  144. package/benchmarks/reference-results.js +0 -75
  145. package/benchmarks/report.js +0 -280
  146. package/benchmarks/run-external-guardbench.mjs +0 -303
  147. package/benchmarks/run.js +0 -735
  148. package/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
  149. package/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
  150. package/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
  151. package/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
  152. package/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
  153. package/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
  154. package/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
  155. package/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
  156. package/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
  157. package/benchmarks/schemas/guardbench-raw.schema.json +0 -184
  158. package/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
  159. package/benchmarks/schemas/guardbench-summary.schema.json +0 -249
  160. package/benchmarks/snapshots/perf-0.22.2.json +0 -123
  161. package/benchmarks/snapshots/perf-0.23.0.json +0 -123
  162. package/benchmarks/validate-adapter-module.mjs +0 -107
  163. package/benchmarks/validate-adapter-registry.mjs +0 -145
  164. package/benchmarks/validate-adapter-self-test.mjs +0 -96
  165. package/benchmarks/validate-guardbench-artifacts.mjs +0 -400
  166. package/benchmarks/verify-external-evidence.mjs +0 -351
  167. package/benchmarks/verify-publication-artifacts.mjs +0 -309
  168. package/benchmarks/verify-submission-bundle.mjs +0 -172
  169. package/docs/AUDREY_PAPER_OUTLINE.md +0 -178
  170. package/docs/MEMORY_BENCHMARKING.md +0 -59
  171. package/docs/PRODUCTION_BACKLOG.md +0 -321
  172. package/docs/assets/audrey-feature-grid.jpg +0 -0
  173. package/docs/assets/audrey-logo.svg +0 -45
  174. package/docs/assets/audrey-wordmark.png +0 -0
  175. package/docs/paper/00-master.md +0 -48
  176. package/docs/paper/01-introduction.md +0 -27
  177. package/docs/paper/02-related-work.md +0 -47
  178. package/docs/paper/03-problem-definition.md +0 -108
  179. package/docs/paper/04-design.md +0 -164
  180. package/docs/paper/05-guardbench-spec.md +0 -412
  181. package/docs/paper/06-implementation.md +0 -115
  182. package/docs/paper/07-evaluation.md +0 -168
  183. package/docs/paper/08-discussion-limitations.md +0 -61
  184. package/docs/paper/09-conclusion.md +0 -11
  185. package/docs/paper/SUBMISSION_README.md +0 -162
  186. package/docs/paper/appendix-a-demo-transcript.md +0 -114
  187. package/docs/paper/arxiv-compile-report.schema.json +0 -116
  188. package/docs/paper/arxiv-source.schema.json +0 -61
  189. package/docs/paper/audrey-paper-v1.md +0 -1108
  190. package/docs/paper/browser-launch-plan.json +0 -209
  191. package/docs/paper/browser-launch-plan.schema.json +0 -100
  192. package/docs/paper/browser-launch-results.json +0 -86
  193. package/docs/paper/browser-launch-results.schema.json +0 -66
  194. package/docs/paper/claim-register.json +0 -138
  195. package/docs/paper/claim-register.schema.json +0 -81
  196. package/docs/paper/evidence-ledger.md +0 -103
  197. package/docs/paper/output/arxiv/README-arxiv.txt +0 -8
  198. package/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
  199. package/docs/paper/output/arxiv/main.tex +0 -951
  200. package/docs/paper/output/arxiv/references.bib +0 -222
  201. package/docs/paper/output/arxiv-compile-report.json +0 -24
  202. package/docs/paper/output/submission-bundle/LICENSE +0 -21
  203. package/docs/paper/output/submission-bundle/README.md +0 -440
  204. package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +0 -50
  205. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +0 -69
  206. package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +0 -56
  207. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +0 -63
  208. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-manifest.json +0 -414
  209. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +0 -1279
  210. package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +0 -2123
  211. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +0 -93
  212. package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +0 -7
  213. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +0 -131
  214. package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +0 -31
  215. package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +0 -2354
  216. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-registry.schema.json +0 -69
  217. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-adapter-self-test.schema.json +0 -156
  218. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-conformance-card.schema.json +0 -184
  219. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-dry-run.schema.json +0 -74
  220. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-evidence.schema.json +0 -108
  221. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-external-run.schema.json +0 -160
  222. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-leaderboard.schema.json +0 -179
  223. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-manifest.schema.json +0 -213
  224. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-publication-verification.schema.json +0 -47
  225. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-raw.schema.json +0 -184
  226. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-submission-manifest.schema.json +0 -151
  227. package/docs/paper/output/submission-bundle/benchmarks/schemas/guardbench-summary.schema.json +0 -249
  228. package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +0 -178
  229. package/docs/paper/output/submission-bundle/docs/paper/00-master.md +0 -48
  230. package/docs/paper/output/submission-bundle/docs/paper/01-introduction.md +0 -27
  231. package/docs/paper/output/submission-bundle/docs/paper/02-related-work.md +0 -47
  232. package/docs/paper/output/submission-bundle/docs/paper/03-problem-definition.md +0 -108
  233. package/docs/paper/output/submission-bundle/docs/paper/04-design.md +0 -164
  234. package/docs/paper/output/submission-bundle/docs/paper/05-guardbench-spec.md +0 -412
  235. package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +0 -115
  236. package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +0 -168
  237. package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +0 -61
  238. package/docs/paper/output/submission-bundle/docs/paper/09-conclusion.md +0 -11
  239. package/docs/paper/output/submission-bundle/docs/paper/SUBMISSION_README.md +0 -162
  240. package/docs/paper/output/submission-bundle/docs/paper/appendix-a-demo-transcript.md +0 -114
  241. package/docs/paper/output/submission-bundle/docs/paper/arxiv-compile-report.schema.json +0 -116
  242. package/docs/paper/output/submission-bundle/docs/paper/arxiv-source.schema.json +0 -61
  243. package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +0 -1108
  244. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.json +0 -209
  245. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-plan.schema.json +0 -100
  246. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.json +0 -86
  247. package/docs/paper/output/submission-bundle/docs/paper/browser-launch-results.schema.json +0 -66
  248. package/docs/paper/output/submission-bundle/docs/paper/claim-register.json +0 -138
  249. package/docs/paper/output/submission-bundle/docs/paper/claim-register.schema.json +0 -81
  250. package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +0 -103
  251. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/README-arxiv.txt +0 -8
  252. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +0 -41
  253. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +0 -951
  254. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/references.bib +0 -222
  255. package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +0 -24
  256. package/docs/paper/output/submission-bundle/docs/paper/paper-submission-bundle.schema.json +0 -70
  257. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.json +0 -81
  258. package/docs/paper/output/submission-bundle/docs/paper/publication-pack.schema.json +0 -60
  259. package/docs/paper/output/submission-bundle/docs/paper/references.bib +0 -222
  260. package/docs/paper/output/submission-bundle/package.json +0 -235
  261. package/docs/paper/output/submission-bundle/paper-submission-manifest.json +0 -379
  262. package/docs/paper/paper-submission-bundle.schema.json +0 -70
  263. package/docs/paper/publication-pack.json +0 -81
  264. package/docs/paper/publication-pack.schema.json +0 -60
  265. package/docs/paper/references.bib +0 -222
  266. package/scripts/audit-release-completion.mjs +0 -440
  267. package/scripts/create-arxiv-source.mjs +0 -368
  268. package/scripts/create-paper-submission-bundle.mjs +0 -214
  269. package/scripts/finalize-release.mjs +0 -601
  270. package/scripts/prepare-release-cut.mjs +0 -277
  271. package/scripts/publish-release-bundle.mjs +0 -252
  272. package/scripts/publish-release-github-api.mjs +0 -494
  273. package/scripts/run-vitest.mjs +0 -34
  274. package/scripts/smoke-cli.js +0 -92
  275. package/scripts/sync-paper-artifacts.mjs +0 -112
  276. package/scripts/verify-arxiv-compile.mjs +0 -476
  277. package/scripts/verify-arxiv-source.mjs +0 -224
  278. package/scripts/verify-browser-launch-plan.mjs +0 -254
  279. package/scripts/verify-browser-launch-results.mjs +0 -303
  280. package/scripts/verify-paper-artifacts.mjs +0 -798
  281. package/scripts/verify-paper-claims.mjs +0 -254
  282. package/scripts/verify-paper-submission-bundle.mjs +0 -218
  283. package/scripts/verify-publication-pack.mjs +0 -210
  284. package/scripts/verify-python-package.py +0 -201
  285. package/scripts/verify-release-readiness.mjs +0 -920
@@ -10,6 +10,11 @@ function toJson(value) {
10
10
  return null;
11
11
  return JSON.stringify(value);
12
12
  }
13
+ const ACTION_KEY_PATTERN = /^[a-f0-9]{64}$/;
14
+ function indexedText(explicit, metadataValue) {
15
+ const value = explicit !== undefined ? explicit : metadataValue;
16
+ return typeof value === 'string' && value.trim().length > 0 ? value : null;
17
+ }
13
18
  export function insertEvent(db, input) {
14
19
  const id = input.id ?? generateId();
15
20
  const createdAt = input.createdAt ?? new Date().toISOString();
@@ -18,15 +23,24 @@ export function insertEvent(db, input) {
18
23
  ? JSON.stringify(input.fileFingerprints)
19
24
  : null;
20
25
  const metadata = toJson(input.metadata ?? null);
26
+ const actionKeyCandidate = input.actionKey !== undefined ? input.actionKey : input.metadata?.audrey_guard_action_key;
27
+ const actionKey = typeof actionKeyCandidate === 'string' && ACTION_KEY_PATTERN.test(actionKeyCandidate)
28
+ ? actionKeyCandidate
29
+ : null;
30
+ const hookHost = indexedText(input.hookHost, input.metadata?.autopilot_host);
31
+ const hookToolUseId = indexedText(input.hookToolUseId, input.metadata?.autopilot_tool_use_id);
32
+ const receiptId = indexedText(input.receiptId, input.metadata?.receipt_id);
21
33
  db.prepare(`
22
34
  INSERT INTO memory_events (
23
35
  id, session_id, event_type, source, actor_agent, tool_name,
24
36
  input_hash, output_hash, outcome, error_summary, cwd,
25
- file_fingerprints, redaction_state, metadata, created_at
37
+ file_fingerprints, redaction_state, action_key, hook_host,
38
+ hook_tool_use_id, receipt_id, metadata, created_at
26
39
  ) VALUES (
27
40
  @id, @sessionId, @eventType, @source, @actorAgent, @toolName,
28
41
  @inputHash, @outputHash, @outcome, @errorSummary, @cwd,
29
- @fileFingerprints, @redactionState, @metadata, @createdAt
42
+ @fileFingerprints, @redactionState, @actionKey, @hookHost,
43
+ @hookToolUseId, @receiptId, @metadata, @createdAt
30
44
  )
31
45
  `).run({
32
46
  id,
@@ -42,6 +56,10 @@ export function insertEvent(db, input) {
42
56
  cwd: input.cwd ?? null,
43
57
  fileFingerprints,
44
58
  redactionState,
59
+ actionKey,
60
+ hookHost,
61
+ hookToolUseId,
62
+ receiptId,
45
63
  metadata,
46
64
  createdAt,
47
65
  });
@@ -59,10 +77,34 @@ export function insertEvent(db, input) {
59
77
  cwd: input.cwd ?? null,
60
78
  file_fingerprints: fileFingerprints,
61
79
  redaction_state: redactionState,
80
+ action_key: actionKey,
81
+ hook_host: hookHost,
82
+ hook_tool_use_id: hookToolUseId,
83
+ receipt_id: receiptId,
62
84
  metadata,
63
85
  created_at: createdAt,
64
86
  };
65
87
  }
88
+ export function exactActionHistory(db, options) {
89
+ const actorAgent = requireAgent(options.actorAgent);
90
+ return db
91
+ .prepare(`
92
+ SELECT * FROM memory_events
93
+ WHERE action_key = @actionKey
94
+ AND (
95
+ (event_type = 'PostToolUse' AND outcome = 'succeeded')
96
+ OR (event_type = 'PostToolUseFailure' AND outcome = 'failed')
97
+ )
98
+ AND (actor_agent IS NULL OR actor_agent = @actorAgent)
99
+ ${options.since ? 'AND created_at >= @since' : ''}
100
+ ORDER BY created_at ASC, id ASC
101
+ `)
102
+ .all({
103
+ actionKey: options.actionKey,
104
+ actorAgent,
105
+ ...(options.since ? { since: options.since } : {}),
106
+ });
107
+ }
66
108
  export function listEvents(db, query = {}) {
67
109
  const conditions = [];
68
110
  const params = {};
@@ -141,6 +183,22 @@ function matchingCwds(db, cwd, since, actorAgent) {
141
183
  const matches = namespaceMatcher(cwd);
142
184
  return rows.map(row => row.cwd).filter(matches);
143
185
  }
186
+ /**
187
+ * Boolean SQL expression deciding whether a row (already known to be a
188
+ * 'failed' or 'succeeded' event, per `kind`) counts as in-scope for the
189
+ * project at `options.cwd`. Failures without a recorded cwd cannot be
190
+ * proven foreign, so they stay visible (fail toward warning). Successes are
191
+ * held to the opposite standard: only a success provably from this project
192
+ * may extinguish a local streak.
193
+ */
194
+ function cwdVisibility(kind, cwdNames) {
195
+ if (cwdNames === undefined)
196
+ return '1';
197
+ if (kind === 'failure') {
198
+ return cwdNames.length > 0 ? `(cwd IS NULL OR cwd IN (${cwdNames.join(', ')}))` : 'cwd IS NULL';
199
+ }
200
+ return cwdNames.length > 0 ? `cwd IN (${cwdNames.join(', ')})` : '0';
201
+ }
144
202
  /**
145
203
  * Tools with an unresolved failure streak, most recent first. Feeds PreToolUse
146
204
  * preflight warnings: "this command failed last time — here's what fixed it."
@@ -148,6 +206,15 @@ function matchingCwds(db, cwd, since, actorAgent) {
148
206
  * failure_count counts failures since the tool's last success in scope
149
207
  * (extinction: disconfirming evidence retires the warning), not raw failures
150
208
  * in the window.
209
+ *
210
+ * Implemented as one filtered pass over memory_events plus per-tool window
211
+ * functions, rather than a correlated subquery (error summary, last success)
212
+ * and a NOT EXISTS extinction check evaluated per candidate row — the
213
+ * per-row version turns near-quadratic on a large event table.
214
+ *
215
+ * `scoped` must stay MATERIALIZED: without the hint the planner evaluates it
216
+ * once per referencing CTE as co-routines over the low-selectivity outcome
217
+ * index (~30x slower at 50k rows, measured).
151
218
  */
152
219
  export function recentFailures(db, options = {}) {
153
220
  const since = options.since ?? new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
@@ -163,72 +230,103 @@ export function recentFailures(db, options = {}) {
163
230
  return `@cwd${index}`;
164
231
  });
165
232
  }
166
- // Failures without a recorded cwd cannot be proven foreign, so they stay
167
- // visible (fail toward warning). Successes are held to the opposite
168
- // standard: only a success provably from this project may extinguish a
169
- // local streak.
170
- const scopedClauses = (alias, kind = 'failure') => {
171
- const clauses = [actorAgent ? `AND ${alias}.actor_agent = @actorAgent` : ''];
172
- if (cwdNames !== undefined) {
173
- if (kind === 'failure') {
174
- clauses.push(cwdNames.length > 0
175
- ? `AND (${alias}.cwd IS NULL OR ${alias}.cwd IN (${cwdNames.join(', ')}))`
176
- : `AND ${alias}.cwd IS NULL`);
177
- }
178
- else {
179
- clauses.push(cwdNames.length > 0 ? `AND ${alias}.cwd IN (${cwdNames.join(', ')})` : 'AND 1 = 0');
180
- }
181
- }
182
- return clauses.filter(Boolean).join('\n ');
183
- };
184
- const lastSuccessSubquery = `
185
- SELECT MAX(s.created_at) FROM memory_events s
186
- WHERE s.tool_name = e1.tool_name
187
- AND s.outcome = 'succeeded'
188
- AND s.created_at >= @since
189
- ${scopedClauses('s', 'success')}
190
- `;
233
+ const failureVisible = cwdVisibility('failure', cwdNames);
234
+ const successVisible = cwdVisibility('success', cwdNames);
235
+ // A failure is active while no success postdates it. Same-millisecond ties
236
+ // order by ULID id, which is monotonic within a process — last_success
237
+ // below breaks its own ties the same way, so a failure and the success
238
+ // that would extinguish it always agree on which one is "later".
239
+ const activeFailures = options.includeResolved
240
+ ? 'SELECT * FROM failures_with_boundary'
241
+ : `SELECT * FROM failures_with_boundary
242
+ WHERE last_succeeded_at IS NULL
243
+ OR created_at > last_succeeded_at
244
+ OR (created_at = last_succeeded_at AND id > last_succeeded_id)`;
191
245
  return db
192
246
  .prepare(`
193
- SELECT e1.tool_name,
194
- COUNT(*) AS failure_count,
195
- MAX(e1.created_at) AS last_failed_at,
196
- (
197
- SELECT error_summary FROM memory_events e2
198
- WHERE e2.tool_name = e1.tool_name
199
- AND e2.outcome = 'failed'
200
- AND e2.created_at >= @since
201
- ${scopedClauses('e2')}
202
- ORDER BY e2.created_at DESC LIMIT 1
203
- ) AS last_error_summary,
204
- (${lastSuccessSubquery}) AS last_succeeded_at
205
- FROM memory_events e1
206
- WHERE e1.outcome = 'failed'
207
- AND e1.tool_name IS NOT NULL
208
- AND e1.created_at >= @since
209
- ${scopedClauses('e1')}
210
- ${
211
- // A failure is active while no success postdates it. Same-millisecond
212
- // ties order by ULID id, which is monotonic within a process.
213
- options.includeResolved
214
- ? ''
215
- : `AND NOT EXISTS (
216
- SELECT 1 FROM memory_events later_s
217
- WHERE later_s.tool_name = e1.tool_name
218
- AND later_s.outcome = 'succeeded'
219
- AND later_s.created_at >= @since
220
- ${scopedClauses('later_s', 'success')}
221
- AND (later_s.created_at > e1.created_at
222
- OR (later_s.created_at = e1.created_at AND later_s.id > e1.id))
223
- )`}
224
- GROUP BY e1.tool_name
247
+ WITH scoped AS MATERIALIZED (
248
+ SELECT id, tool_name, outcome, created_at, error_summary
249
+ FROM memory_events
250
+ WHERE tool_name IS NOT NULL
251
+ AND outcome IN ('failed', 'succeeded')
252
+ AND created_at >= @since
253
+ ${actorAgent ? 'AND actor_agent = @actorAgent' : ''}
254
+ AND (
255
+ (outcome = 'failed' AND ${failureVisible})
256
+ OR (outcome = 'succeeded' AND ${successVisible})
257
+ )
258
+ ),
259
+ failures AS (
260
+ SELECT id, tool_name, created_at, error_summary FROM scoped WHERE outcome = 'failed'
261
+ ),
262
+ successes AS (
263
+ SELECT id, tool_name, created_at FROM scoped WHERE outcome = 'succeeded'
264
+ ),
265
+ last_success AS (
266
+ SELECT tool_name, created_at AS last_succeeded_at, id AS last_succeeded_id
267
+ FROM (
268
+ SELECT tool_name, created_at, id,
269
+ ROW_NUMBER() OVER (
270
+ PARTITION BY tool_name ORDER BY created_at DESC, id DESC
271
+ ) AS rn
272
+ FROM successes
273
+ )
274
+ WHERE rn = 1
275
+ ),
276
+ failures_with_boundary AS (
277
+ SELECT f.id, f.tool_name, f.created_at, f.error_summary,
278
+ ls.last_succeeded_at, ls.last_succeeded_id
279
+ FROM failures f
280
+ LEFT JOIN last_success ls ON ls.tool_name = f.tool_name
281
+ ),
282
+ active_failures AS (${activeFailures}),
283
+ ranked AS (
284
+ SELECT tool_name, created_at, error_summary, last_succeeded_at,
285
+ ROW_NUMBER() OVER (
286
+ PARTITION BY tool_name ORDER BY created_at DESC, id DESC
287
+ ) AS rn,
288
+ COUNT(*) OVER (PARTITION BY tool_name) AS failure_count,
289
+ MAX(created_at) OVER (PARTITION BY tool_name) AS last_failed_at
290
+ FROM active_failures
291
+ )
292
+ SELECT tool_name, failure_count, last_failed_at,
293
+ error_summary AS last_error_summary, last_succeeded_at
294
+ FROM ranked
295
+ WHERE rn = 1
225
296
  ORDER BY last_failed_at DESC
226
297
  LIMIT ${limit}
227
298
  `)
228
299
  .all(params);
229
300
  }
230
- export function deleteEventsBefore(db, cutoffIso) {
231
- const result = db.prepare('DELETE FROM memory_events WHERE created_at < ?').run(cutoffIso);
232
- return Number(result.changes);
301
+ /**
302
+ * Default memory_events retention window. Guarded tool calls write at least
303
+ * two rows apiece (PreToolUse + a PostToolUse/PostToolUseFailure receipt),
304
+ * so an install with no retention keeps growing for its whole lifetime —
305
+ * that unbounded growth is what lets recentFailures() and createDatabase()'s
306
+ * embedding sync get slow. 30 days keeps failure-streak history well beyond
307
+ * recentFailures()'s own 7-day default lookback while bounding table size
308
+ * for long-running installs.
309
+ */
310
+ export const DEFAULT_EVENT_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
311
+ const DEFAULT_DELETE_BATCH_SIZE = 1000;
312
+ const MAX_DELETE_BATCH_SIZE = 50000;
313
+ /**
314
+ * Deletes memory_events rows older than cutoffIso, batching so a large
315
+ * purge cannot hold one long-running write. Returns the total number of
316
+ * rows deleted across all batches.
317
+ */
318
+ export function deleteEventsBefore(db, cutoffIso, options = {}) {
319
+ const batchSize = Math.max(1, Math.min(options.batchSize ?? DEFAULT_DELETE_BATCH_SIZE, MAX_DELETE_BATCH_SIZE));
320
+ const deleteBatch = db.prepare(`DELETE FROM memory_events
321
+ WHERE id IN (SELECT id FROM memory_events WHERE created_at < ? LIMIT ?)`);
322
+ let totalDeleted = 0;
323
+ for (;;) {
324
+ const result = deleteBatch.run(cutoffIso, batchSize);
325
+ const deleted = Number(result.changes);
326
+ totalDeleted += deleted;
327
+ if (deleted < batchSize)
328
+ break;
329
+ }
330
+ return totalDeleted;
233
331
  }
234
332
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AA8GtC,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAqF5D"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAwHtC,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAqF5D"}
@@ -6,7 +6,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
6
6
  const pkg = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf-8'));
7
7
  export function exportMemories(db) {
8
8
  const episodes = db
9
- .prepare('SELECT id, content, source, agent, source_reliability, salience, context, affect, tags, causal_trigger, causal_consequence, created_at, embedding_model, embedding_version, supersedes, superseded_by, consolidated, "private" FROM episodes')
9
+ .prepare('SELECT id, content, source, agent, source_reliability, salience, context, affect, tags, causal_trigger, causal_consequence, created_at, embedding_model, embedding_version, supersedes, superseded_by, consolidated, "private", usage_count, last_used_at FROM episodes')
10
10
  .all().map(ep => ({
11
11
  ...ep,
12
12
  tags: safeJsonParse(ep.tags, null),
@@ -14,13 +14,13 @@ export function exportMemories(db) {
14
14
  affect: safeJsonParse(ep.affect, null),
15
15
  }));
16
16
  const semantics = db
17
- .prepare('SELECT id, content, agent, state, conditions, evidence_episode_ids, evidence_count, supporting_count, contradicting_count, source_type_diversity, consolidation_checkpoint, embedding_model, embedding_version, consolidation_model, consolidation_prompt_hash, created_at, last_reinforced_at, retrieval_count, challenge_count, interference_count, salience FROM semantics')
17
+ .prepare('SELECT id, content, agent, state, conditions, evidence_episode_ids, evidence_count, supporting_count, contradicting_count, source_type_diversity, consolidation_checkpoint, embedding_model, embedding_version, consolidation_model, consolidation_prompt_hash, created_at, last_reinforced_at, retrieval_count, challenge_count, interference_count, salience, usage_count, last_used_at FROM semantics')
18
18
  .all().map(sem => ({
19
19
  ...sem,
20
20
  evidence_episode_ids: safeJsonParse(sem.evidence_episode_ids, []),
21
21
  }));
22
22
  const procedures = db
23
- .prepare('SELECT id, content, agent, state, trigger_conditions, evidence_episode_ids, success_count, failure_count, embedding_model, embedding_version, created_at, last_reinforced_at, retrieval_count, interference_count, salience FROM procedures')
23
+ .prepare('SELECT id, content, agent, state, trigger_conditions, evidence_episode_ids, success_count, failure_count, embedding_model, embedding_version, created_at, last_reinforced_at, retrieval_count, interference_count, salience, usage_count, last_used_at FROM procedures')
24
24
  .all().map(proc => ({
25
25
  ...proc,
26
26
  evidence_episode_ids: safeJsonParse(proc.evidence_episode_ids, []),
@@ -41,7 +41,7 @@ export function exportMemories(db) {
41
41
  .prepare('SELECT id, run_id, min_cluster_size, similarity_threshold, episodes_evaluated, clusters_found, principles_extracted, created_at FROM consolidation_metrics')
42
42
  .all();
43
43
  const memoryEvents = db
44
- .prepare('SELECT id, session_id, event_type, source, actor_agent, tool_name, input_hash, output_hash, outcome, error_summary, cwd, file_fingerprints, redaction_state, metadata, created_at FROM memory_events')
44
+ .prepare('SELECT id, session_id, event_type, source, actor_agent, tool_name, input_hash, output_hash, outcome, error_summary, cwd, file_fingerprints, redaction_state, action_key, hook_host, hook_tool_use_id, receipt_id, metadata, created_at FROM memory_events')
45
45
  .all();
46
46
  const configRows = db.prepare('SELECT key, value FROM audrey_config').all();
47
47
  const config = Object.fromEntries(configRows.map(r => [r.key, r.value]));
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import Database from 'better-sqlite3';
2
+ import type { MemoryType } from './types.js';
3
+ /**
4
+ * Grounding — checking whether a memory is still true, not just still recent.
5
+ *
6
+ * Confidence already answers "is this well-sourced, recent, reinforced, and
7
+ * uncontradicted?" Nothing answered "does the thing this memory describes
8
+ * still exist?" A procedure that says to deploy with `npm run deploy:prod`
9
+ * holds its confidence forever after that script is deleted — and every
10
+ * recall of it raises confidence further, because retrieval counts as
11
+ * reinforcement. Stale memory is worse than absent memory: Guard states it
12
+ * with evidence attached, so the agent follows it into a wall.
13
+ *
14
+ * An anchor is a claim inside a memory that can be checked against the
15
+ * project it describes: a repository-relative path, or a package script
16
+ * name. Anchors are only recorded when they verify at the moment the memory
17
+ * is written. That is what makes the signal trustworthy — a claim that never
18
+ * resolved is a guess about someone's typo, while a claim that resolved once
19
+ * and no longer does is the world having changed underneath a memory that
20
+ * still asserts it. Only the second kind is worth telling anyone about.
21
+ *
22
+ * Broken anchors never delete or rewrite a memory. They lower its confidence
23
+ * and attach a plain statement of what no longer exists, leaving the memory
24
+ * legible and the judgement with the reader. Memory is evidence, not
25
+ * authority — including Audrey's own evidence about its memory.
26
+ */
27
+ export type AnchorKind = 'path' | 'npm_script';
28
+ export type AnchorState = 'intact' | 'broken';
29
+ export type GroundingState = 'grounded' | 'broken';
30
+ export interface AnchorCandidate {
31
+ kind: AnchorKind;
32
+ value: string;
33
+ }
34
+ export interface MemoryGrounding {
35
+ state: GroundingState;
36
+ brokenAnchors: Array<{
37
+ kind: AnchorKind;
38
+ value: string;
39
+ }>;
40
+ }
41
+ export interface GroundingReport {
42
+ checked: number;
43
+ intact: number;
44
+ broken: number;
45
+ repaired: number;
46
+ newlyBroken: Array<{
47
+ memoryId: string;
48
+ kind: AnchorKind;
49
+ value: string;
50
+ }>;
51
+ }
52
+ /**
53
+ * Multiplier applied to a memory carrying at least one broken anchor. Chosen
54
+ * to push a broken memory below the default recall floor without erasing it:
55
+ * it should stop leading the agent by default while staying inspectable, and
56
+ * still able to outrank noise if it is the only thing that matches.
57
+ */
58
+ export declare const BROKEN_GROUNDING_MODIFIER = 0.5;
59
+ /**
60
+ * Pulls checkable claims out of memory content. Extraction is deliberately
61
+ * narrow: a claim that cannot be checked cheaply and unambiguously is better
62
+ * left unanchored than turned into a signal nobody can trust.
63
+ */
64
+ export declare function extractAnchorCandidates(content: string): AnchorCandidate[];
65
+ /**
66
+ * Returns true when the claim holds, false when it demonstrably does not,
67
+ * and null when it cannot be judged — an unreadable project, or a store
68
+ * whose project no longer exists on this machine. Unknown is never treated
69
+ * as broken: a memory must not be discredited because the checkout moved.
70
+ */
71
+ export declare function verifyAnchor(anchor: AnchorCandidate, projectRoot: string, cache?: Map<string, Set<string>>): boolean | null;
72
+ export interface RecordAnchorsInput {
73
+ memoryId: string;
74
+ memoryType: MemoryType;
75
+ agent: string;
76
+ content: string;
77
+ projectRoot: string;
78
+ now?: Date;
79
+ }
80
+ /**
81
+ * Records the anchors in a memory's content that verify right now. Anchors
82
+ * that do not verify at write time are dropped rather than stored as broken:
83
+ * see the module comment — only a claim that was once true carries
84
+ * information when it later stops being true.
85
+ */
86
+ export declare function recordAnchors(db: Database.Database, input: RecordAnchorsInput): number;
87
+ export interface VerifyAnchorsOptions {
88
+ agent?: string;
89
+ projectRoot?: string;
90
+ limit?: number;
91
+ now?: Date;
92
+ }
93
+ /**
94
+ * Re-checks stored anchors against the current state of their project and
95
+ * moves them between intact and broken. Repair is symmetric: a path that
96
+ * comes back — a reverted delete, a restored checkout — clears the broken
97
+ * state, so a transient absence does not permanently discredit a memory.
98
+ */
99
+ export declare function verifyAnchors(db: Database.Database, options?: VerifyAnchorsOptions): GroundingReport;
100
+ /**
101
+ * Grounding for a set of memory ids, for callers that already hold recall
102
+ * results and need to annotate them. Returns entries only for memories that
103
+ * actually carry anchors, so an unanchored memory stays unlabelled rather
104
+ * than being presented as verified.
105
+ */
106
+ export declare function groundingForMemories(db: Database.Database, memoryIds: string[]): Map<string, MemoryGrounding>;
107
+ /** Confidence multiplier for a memory's grounding state. */
108
+ export declare function groundingModifier(state: GroundingState | undefined): number;
109
+ /** One-line, human-readable statement of what a memory still asserts. */
110
+ export declare function describeBrokenGrounding(grounding: MemoryGrounding): string;
111
+ //# sourceMappingURL=grounding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../../src/grounding.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,YAAY,CAAC;AAC/C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAsD7C;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAmB1E;AAsBD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAa,GAC1C,OAAO,GAAG,IAAI,CAShB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAiCtF;AAWD,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,GAAE,oBAAyB,GACjC,eAAe,CA6DjB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,SAAS,EAAE,MAAM,EAAE,GAClB,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAyB9B;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,MAAM,CAE3E;AAED,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,CAS1E"}