memento-mcp-server 1.30.2 → 1.32.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 (196) hide show
  1. package/config/ranking-weights.toml +5 -0
  2. package/dist/node_modules/@memento/core/dist/config/ranking-weights.toml +5 -0
  3. package/dist/node_modules/@memento/core/dist/domains/memory/recall/recall-tool-schema.d.ts +4 -4
  4. package/dist/node_modules/@memento/core/dist/domains/memory/remember/remember-tool-schema.d.ts +4 -4
  5. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js +1 -1
  6. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/category-quality-aggregator.js.map +1 -1
  7. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.d.ts +234 -0
  8. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.d.ts.map +1 -0
  9. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.js +210 -0
  10. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.js.map +1 -0
  11. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.d.ts +22 -1027
  12. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.d.ts.map +1 -1
  13. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.js +16 -1997
  14. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-comparison.js.map +1 -1
  15. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.d.ts +116 -0
  16. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.d.ts.map +1 -0
  17. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.js +287 -0
  18. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-degradation-alerts.js.map +1 -0
  19. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.d.ts +218 -0
  20. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.d.ts.map +1 -0
  21. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.js +317 -0
  22. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-extreme-scenarios.js.map +1 -0
  23. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.d.ts +92 -0
  24. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.d.ts.map +1 -0
  25. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.js +458 -0
  26. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-files.js.map +1 -0
  27. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.d.ts +105 -0
  28. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.d.ts.map +1 -0
  29. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.js +200 -0
  30. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-ground-truth.js.map +1 -0
  31. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.d.ts +8 -0
  32. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.d.ts.map +1 -0
  33. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.js +10 -0
  34. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-paths.js.map +1 -0
  35. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.d.ts +273 -0
  36. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.d.ts.map +1 -0
  37. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.js +388 -0
  38. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-quality-comparison.js.map +1 -0
  39. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.d.ts +79 -0
  40. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.d.ts.map +1 -0
  41. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.js +182 -0
  42. package/dist/node_modules/@memento/core/dist/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-search-results.js.map +1 -0
  43. package/dist/node_modules/@memento/core/dist/domains/relation/tools/visualize-relations-tool.d.ts +2 -2
  44. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.d.ts +2 -1
  45. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.d.ts.map +1 -1
  46. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.js +7 -3
  47. package/dist/node_modules/@memento/core/dist/domains/search/algorithms/search-engine/search-engine-ranking.js.map +1 -1
  48. package/dist/node_modules/@memento/core/dist/index.d.ts +1 -1
  49. package/dist/node_modules/@memento/core/dist/index.d.ts.map +1 -1
  50. package/dist/node_modules/@memento/core/dist/index.js.map +1 -1
  51. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts +17 -0
  52. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts.map +1 -1
  53. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js +40 -2
  54. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js.map +1 -1
  55. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.d.ts +9 -0
  56. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.d.ts.map +1 -1
  57. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.js +19 -0
  58. package/dist/node_modules/@memento/core/dist/infrastructure/scheduler/repositories/job-run-repository.js.map +1 -1
  59. package/dist/node_modules/@memento/core/dist/shared/config/environment.d.ts.map +1 -1
  60. package/dist/node_modules/@memento/core/dist/shared/config/environment.js +5 -2
  61. package/dist/node_modules/@memento/core/dist/shared/config/environment.js.map +1 -1
  62. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts +5 -0
  63. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.d.ts.map +1 -1
  64. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js +14 -2
  65. package/dist/node_modules/@memento/core/dist/shared/config/ranking-weights-loader.js.map +1 -1
  66. package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts +3 -1
  67. package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.d.ts.map +1 -1
  68. package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js +1 -1
  69. package/dist/node_modules/@memento/core/dist/shared/types/benchmark.types.js.map +1 -1
  70. package/dist/node_modules/@memento/core/package.json +1 -1
  71. package/dist/node_modules/@memento/core/scripts/copy-assets.js +8 -3
  72. package/dist/server/http-server.d.ts.map +1 -1
  73. package/dist/server/http-server.js +1 -20
  74. package/dist/server/http-server.js.map +1 -1
  75. package/dist/server/routes/admin/admin-batch.routes.d.ts.map +1 -1
  76. package/dist/server/routes/admin/admin-batch.routes.js +2 -0
  77. package/dist/server/routes/admin/admin-batch.routes.js.map +1 -1
  78. package/dist/server/routes/admin/admin-graph-response.d.ts +1 -0
  79. package/dist/server/routes/admin/admin-graph-response.d.ts.map +1 -1
  80. package/dist/server/routes/admin/admin-graph-response.js +18 -0
  81. package/dist/server/routes/admin/admin-graph-response.js.map +1 -1
  82. package/dist/server/routes/admin/admin-graph.routes.d.ts.map +1 -1
  83. package/dist/server/routes/admin/admin-graph.routes.js +10 -0
  84. package/dist/server/routes/admin/admin-graph.routes.js.map +1 -1
  85. package/dist/server/routes/admin/admin-status-service.d.ts +49 -0
  86. package/dist/server/routes/admin/admin-status-service.d.ts.map +1 -0
  87. package/dist/server/routes/admin/admin-status-service.js +168 -0
  88. package/dist/server/routes/admin/admin-status-service.js.map +1 -0
  89. package/dist/server/routes/admin/admin-status.routes.d.ts +7 -0
  90. package/dist/server/routes/admin/admin-status.routes.d.ts.map +1 -0
  91. package/dist/server/routes/admin/admin-status.routes.js +10 -0
  92. package/dist/server/routes/admin/admin-status.routes.js.map +1 -0
  93. package/dist/server/routes/admin.routes.d.ts.map +1 -1
  94. package/dist/server/routes/admin.routes.js +2 -0
  95. package/dist/server/routes/admin.routes.js.map +1 -1
  96. package/dist/server/routes/mcp/message-processor.d.ts.map +1 -1
  97. package/dist/server/routes/mcp/message-processor.js +50 -7
  98. package/dist/server/routes/mcp/message-processor.js.map +1 -1
  99. package/dist/server/static-root.d.ts +6 -0
  100. package/dist/server/static-root.d.ts.map +1 -0
  101. package/dist/server/static-root.js +37 -0
  102. package/dist/server/static-root.js.map +1 -0
  103. package/package.json +3 -1
  104. package/static/css/components.css +315 -0
  105. package/static/css/dashboard.css +2387 -0
  106. package/static/css/tokens.css +168 -0
  107. package/static/dashboard.html +836 -0
  108. package/static/graph.html +672 -0
  109. package/static/js/agent-sessions-panel-data.js +129 -0
  110. package/static/js/agent-sessions-panel-import.js +110 -0
  111. package/static/js/agent-sessions-panel-render-dom.js +45 -0
  112. package/static/js/agent-sessions-panel-render-injections.js +72 -0
  113. package/static/js/agent-sessions-panel-render-provenance.js +52 -0
  114. package/static/js/agent-sessions-panel-render-sessions.js +92 -0
  115. package/static/js/agent-sessions-panel-render-timeline-category.js +26 -0
  116. package/static/js/agent-sessions-panel-render-timeline.js +80 -0
  117. package/static/js/agent-sessions-panel-render.js +26 -0
  118. package/static/js/agent-sessions-panel-shared.js +103 -0
  119. package/static/js/agent-sessions-panel.js +91 -0
  120. package/static/js/anchor-map-data.js +130 -0
  121. package/static/js/anchor-map-layout.js +260 -0
  122. package/static/js/anchor-map-render.js +576 -0
  123. package/static/js/anchor-map-search.js +225 -0
  124. package/static/js/anchor-map-shared.js +143 -0
  125. package/static/js/anchor-map-ws.js +122 -0
  126. package/static/js/anchor-map.js +148 -0
  127. package/static/js/dashboard-auth-dom.js +43 -0
  128. package/static/js/dashboard-auth-error.js +23 -0
  129. package/static/js/dashboard-auth-render-form.js +27 -0
  130. package/static/js/dashboard-auth-render-message.js +15 -0
  131. package/static/js/dashboard-auth-render-status.js +16 -0
  132. package/static/js/dashboard-auth-render-tabs.js +20 -0
  133. package/static/js/dashboard-auth-render.js +17 -0
  134. package/static/js/dashboard-auth-requests.js +21 -0
  135. package/static/js/dashboard-auth-session-check.js +40 -0
  136. package/static/js/dashboard-auth-sign-in.js +43 -0
  137. package/static/js/dashboard-auth-state.js +47 -0
  138. package/static/js/dashboard-auth-ui.js +37 -0
  139. package/static/js/dashboard-auth.js +30 -0
  140. package/static/js/dashboard-tabs-init.js +121 -0
  141. package/static/js/dashboard-tabs-panels.js +51 -0
  142. package/static/js/dashboard-tabs.js +105 -0
  143. package/static/js/embedding-map-chart-colors.js +21 -0
  144. package/static/js/embedding-map-chart-scatter.js +92 -0
  145. package/static/js/embedding-map-chart-setup.js +89 -0
  146. package/static/js/embedding-map-fetch-status.js +234 -0
  147. package/static/js/embedding-map-fetch.js +138 -0
  148. package/static/js/embedding-map-panel.js +136 -0
  149. package/static/js/embedding-map-state.js +27 -0
  150. package/static/js/embedding-map-tooltip.js +48 -0
  151. package/static/js/embedding-map.js +54 -0
  152. package/static/js/graph-detail.js +53 -0
  153. package/static/js/graph-embed-init.js +11 -0
  154. package/static/js/graph-fetch.js +130 -0
  155. package/static/js/graph-render.js +177 -0
  156. package/static/js/graph-search.js +89 -0
  157. package/static/js/graph-shared.js +195 -0
  158. package/static/js/graph.js +81 -0
  159. package/static/js/jobs-panel-fetch.js +226 -0
  160. package/static/js/jobs-panel-render.js +220 -0
  161. package/static/js/jobs-panel-shared.js +133 -0
  162. package/static/js/jobs-panel.js +94 -0
  163. package/static/js/memento-admin-fetch.js +65 -0
  164. package/static/js/memory-evolution-demo-shell-data.js +277 -0
  165. package/static/js/memory-evolution-demo-shell-render-consolidation.js +143 -0
  166. package/static/js/memory-evolution-demo-shell-render-snapshot.js +145 -0
  167. package/static/js/memory-evolution-demo-shell-render-timeline.js +118 -0
  168. package/static/js/memory-evolution-demo-shell-render.js +25 -0
  169. package/static/js/memory-evolution-demo-shell-shared.js +313 -0
  170. package/static/js/memory-evolution-demo-shell.js +41 -0
  171. package/static/js/memory-inspector.js +31 -0
  172. package/static/js/ops-status-panel.js +227 -0
  173. package/static/js/ops-strip.js +145 -0
  174. package/static/js/review-candidates-panel-bulk.js +196 -0
  175. package/static/js/review-candidates-panel-health-fetch.js +110 -0
  176. package/static/js/review-candidates-panel-health-render.js +187 -0
  177. package/static/js/review-candidates-panel-health.js +17 -0
  178. package/static/js/review-candidates-panel-poll-badge.js +25 -0
  179. package/static/js/review-candidates-panel-poll-boot.js +48 -0
  180. package/static/js/review-candidates-panel-poll-config.js +40 -0
  181. package/static/js/review-candidates-panel-poll-cycle.js +31 -0
  182. package/static/js/review-candidates-panel-poll-fetch.js +24 -0
  183. package/static/js/review-candidates-panel-poll-notify-os.js +28 -0
  184. package/static/js/review-candidates-panel-poll-prompt.js +53 -0
  185. package/static/js/review-candidates-panel-poll-snapshot.js +41 -0
  186. package/static/js/review-candidates-panel-poll-stream.js +51 -0
  187. package/static/js/review-candidates-panel-poll-toast.js +25 -0
  188. package/static/js/review-candidates-panel-poll.js +9 -0
  189. package/static/js/review-candidates-panel-render-actions.js +94 -0
  190. package/static/js/review-candidates-panel-render-list.js +235 -0
  191. package/static/js/review-candidates-panel-render-preview.js +189 -0
  192. package/static/js/review-candidates-panel-render.js +23 -0
  193. package/static/js/review-candidates-panel-shared.js +125 -0
  194. package/static/js/review-candidates-panel.js +53 -0
  195. package/static/logo.png +0 -0
  196. package/static/memento_logo.svg +2 -0
@@ -40,3 +40,8 @@ max_relations = 5
40
40
  [vector_length_decay]
41
41
  enabled = true
42
42
  characteristic_length = 40
43
+
44
+ # #1079: BM25 rank → relevance 시그모이드의 온도. factor = 1/(1+exp(rank/T))
45
+ # T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
46
+ [fts_relevance]
47
+ temperature = 10
@@ -40,3 +40,8 @@ max_relations = 5
40
40
  [vector_length_decay]
41
41
  enabled = true
42
42
  characteristic_length = 40
43
+
44
+ # #1079: BM25 rank → relevance 시그모이드의 온도. factor = 1/(1+exp(rank/T))
45
+ # T=1 이면 실제 rank 구간(-20~-2)이 전부 포화 꼬리에 들어가 동적 범위가 0.083 으로 뭉갠다.
46
+ [fts_relevance]
47
+ temperature = 10
@@ -72,8 +72,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
72
72
  neighbors_limit: number;
73
73
  neighbors_per_item: number;
74
74
  neighbors_similarity_threshold: number;
75
- key?: string | undefined;
76
75
  type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
76
+ key?: string | undefined;
77
77
  workflow_name?: string | undefined;
78
78
  skill_name?: string | undefined;
79
79
  query?: string | undefined;
@@ -104,8 +104,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
104
104
  provider_filter?: ("tfidf" | "lightweight" | "minilm" | "openai" | "gemini")[] | undefined;
105
105
  auto_set_anchor?: boolean | undefined;
106
106
  }, {
107
- key?: string | undefined;
108
107
  type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
108
+ key?: string | undefined;
109
109
  workflow_name?: string | undefined;
110
110
  skill_name?: string | undefined;
111
111
  query?: string | undefined;
@@ -154,8 +154,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
154
154
  neighbors_limit: number;
155
155
  neighbors_per_item: number;
156
156
  neighbors_similarity_threshold: number;
157
- key?: string | undefined;
158
157
  type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
158
+ key?: string | undefined;
159
159
  workflow_name?: string | undefined;
160
160
  skill_name?: string | undefined;
161
161
  query?: string | undefined;
@@ -186,8 +186,8 @@ export declare const RecallSchema: z.ZodEffects<z.ZodObject<{
186
186
  provider_filter?: ("tfidf" | "lightweight" | "minilm" | "openai" | "gemini")[] | undefined;
187
187
  auto_set_anchor?: boolean | undefined;
188
188
  }, {
189
- key?: string | undefined;
190
189
  type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
190
+ key?: string | undefined;
191
191
  workflow_name?: string | undefined;
192
192
  skill_name?: string | undefined;
193
193
  query?: string | undefined;
@@ -33,9 +33,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
33
33
  }, "strict", z.ZodTypeAny, {
34
34
  importance: number;
35
35
  privacy_scope: "private" | "team" | "public";
36
+ type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
36
37
  key?: string | undefined;
37
38
  value?: string | undefined;
38
- type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
39
39
  workflow_name?: string | undefined;
40
40
  skill_name?: string | undefined;
41
41
  content?: string | undefined;
@@ -59,9 +59,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
59
59
  last_mentioned_at?: string | undefined;
60
60
  source_session_id?: string | undefined;
61
61
  }, {
62
+ type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
62
63
  key?: string | undefined;
63
64
  value?: string | undefined;
64
- type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
65
65
  workflow_name?: string | undefined;
66
66
  skill_name?: string | undefined;
67
67
  importance?: number | undefined;
@@ -89,9 +89,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
89
89
  }>, {
90
90
  importance: number;
91
91
  privacy_scope: "private" | "team" | "public";
92
+ type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
92
93
  key?: string | undefined;
93
94
  value?: string | undefined;
94
- type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
95
95
  workflow_name?: string | undefined;
96
96
  skill_name?: string | undefined;
97
97
  content?: string | undefined;
@@ -115,9 +115,9 @@ export declare const RememberSchema: z.ZodEffects<z.ZodObject<{
115
115
  last_mentioned_at?: string | undefined;
116
116
  source_session_id?: string | undefined;
117
117
  }, {
118
+ type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
118
119
  key?: string | undefined;
119
120
  value?: string | undefined;
120
- type?: "working" | "episodic" | "semantic" | "procedural" | "core" | "vault" | undefined;
121
121
  workflow_name?: string | undefined;
122
122
  skill_name?: string | undefined;
123
123
  importance?: number | undefined;
@@ -119,7 +119,7 @@ export class CategoryQualityAggregator {
119
119
  longDocRatioByQueryId.set(gt.queryId, top10LongDocRatio(sr.items));
120
120
  }
121
121
  const ALL_MACROS = [
122
- 'episodic_recent',
122
+ 'incident_ops',
123
123
  'procedural',
124
124
  'conceptual',
125
125
  'tag_filter'
@@ -1 +1 @@
1
- {"version":3,"file":"category-quality-aggregator.js","sourceRoot":"","sources":["../../../../../src/domains/monitoring/services/quality-assurance/category-quality-aggregator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"category-quality-aggregator.js","sourceRoot":"","sources":["../../../../../src/domains/monitoring/services/quality-assurance/category-quality-aggregator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,234 @@
1
+ /**
2
+ * 벡터 검색 품질 검증 — baseline 스냅샷 저장·로드·비교
3
+ * (#910: report-comparison.ts 에서 분리)
4
+ */
5
+ import type { OrderPreservationReport } from './types.js';
6
+ import type { QualityMetrics } from './report-quality-comparison.js';
7
+ import type { ExtremeScenarioReport } from './report-extreme-scenarios.js';
8
+ /**
9
+ * Baseline 스냅샷 인터페이스
10
+ * 벡터 검색 품질의 baseline을 저장하고 비교하기 위한 구조
11
+ */
12
+ export interface BaselineSnapshot {
13
+ /**
14
+ * 스냅샷 버전
15
+ */
16
+ version: string;
17
+ /**
18
+ * 스냅샷 생성 시간 (ISO 8601 형식)
19
+ */
20
+ timestamp: string;
21
+ /**
22
+ * 테스트 설정 정보
23
+ */
24
+ testConfiguration: {
25
+ /**
26
+ * 테스트 데이터 크기
27
+ */
28
+ dataSize: number;
29
+ /**
30
+ * 가중치 설정
31
+ */
32
+ weights: {
33
+ /**
34
+ * 벡터 유사도 가중치 (w1)
35
+ */
36
+ vectorSimilarity: number;
37
+ /**
38
+ * Consolidation 점수 가중치 (w2)
39
+ */
40
+ consolidationScore: number;
41
+ };
42
+ };
43
+ /**
44
+ * 품질 지표
45
+ */
46
+ metrics: {
47
+ /**
48
+ * 순서 보존 지표
49
+ */
50
+ orderPreservation: {
51
+ /**
52
+ * Kendall's Tau 순서 일치도
53
+ */
54
+ kendallTau: number;
55
+ /**
56
+ * 상위 10개 결과 유지율
57
+ */
58
+ top10Retention: number;
59
+ /**
60
+ * 상위 5개 결과 유지율
61
+ */
62
+ top5Retention: number;
63
+ };
64
+ /**
65
+ * 품질 지표 (Precision, Recall, NDCG)
66
+ */
67
+ quality: {
68
+ /**
69
+ * Precision@K (K 값별 Precision)
70
+ */
71
+ precision: Record<number, number>;
72
+ /**
73
+ * Recall@K (K 값별 Recall)
74
+ */
75
+ recall: Record<number, number>;
76
+ /**
77
+ * NDCG@K (K 값별 NDCG)
78
+ */
79
+ ndcg: Record<number, number>;
80
+ };
81
+ /**
82
+ * 극단적 시나리오 검증 결과
83
+ */
84
+ extremeScenarios: {
85
+ /**
86
+ * 저벡터 유사도 + 고 consolidation 점수 검증 통과 여부 (1: 통과, 0: 실패)
87
+ */
88
+ lowVectorHighConsolidation: number;
89
+ /**
90
+ * 고벡터 유사도 + 저 consolidation 점수 검증 통과 여부 (1: 통과, 0: 실패)
91
+ */
92
+ highVectorLowConsolidation: number;
93
+ };
94
+ };
95
+ }
96
+ /**
97
+ * Baseline 스냅샷 저장
98
+ * Baseline 스냅샷을 JSON 형식으로 파일에 저장합니다.
99
+ *
100
+ * @param snapshot 저장할 Baseline 스냅샷
101
+ * @param filePath 저장할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
102
+ * @throws 파일 저장 실패 시 에러 발생
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const snapshot: BaselineSnapshot = {
107
+ * version: '1.0.0',
108
+ * timestamp: new Date().toISOString(),
109
+ * testConfiguration: { dataSize: 100, weights: { vectorSimilarity: 0.6, consolidationScore: 0.4 } },
110
+ * metrics: {
111
+ * orderPreservation: { kendallTau: 0.85, top10Retention: 0.9, top5Retention: 0.95 },
112
+ * quality: { precision: {}, recall: {}, ndcg: {} },
113
+ * extremeScenarios: { lowVectorHighConsolidation: 1, highVectorLowConsolidation: 1 }
114
+ * }
115
+ * };
116
+ * saveBaselineSnapshot(snapshot);
117
+ * ```
118
+ */
119
+ export declare function saveBaselineSnapshot(snapshot: BaselineSnapshot, filePath?: string): void;
120
+ /**
121
+ * Baseline 스냅샷 로드
122
+ * 저장된 Baseline 스냅샷을 파일에서 로드합니다.
123
+ *
124
+ * @param filePath 로드할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
125
+ * @returns 로드된 Baseline 스냅샷 또는 null (파일이 없거나 로드 실패 시)
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const snapshot = loadBaselineSnapshot();
130
+ * if (snapshot) {
131
+ * console.log(`Baseline 버전: ${snapshot.version}`);
132
+ * console.log(`Baseline 생성 시간: ${snapshot.timestamp}`);
133
+ * } else {
134
+ * console.log('Baseline 스냅샷이 없습니다.');
135
+ * }
136
+ * ```
137
+ */
138
+ export declare function loadBaselineSnapshot(filePath?: string): BaselineSnapshot | null;
139
+ /**
140
+ * Baseline 비교 결과
141
+ */
142
+ export interface BaselineComparisonResult {
143
+ /**
144
+ * Baseline 스냅샷 정보
145
+ */
146
+ baseline: {
147
+ version: string;
148
+ timestamp: string;
149
+ };
150
+ /**
151
+ * 순서 보존 지표 비교 결과
152
+ */
153
+ orderPreservation: {
154
+ /**
155
+ * Kendall's Tau 변화 (현재 - baseline)
156
+ */
157
+ kendallTauChange: number;
158
+ /**
159
+ * Top10 유지율 변화 (현재 - baseline)
160
+ */
161
+ top10RetentionChange: number;
162
+ /**
163
+ * Top5 유지율 변화 (현재 - baseline)
164
+ */
165
+ top5RetentionChange: number;
166
+ };
167
+ /**
168
+ * 품질 지표 비교 결과
169
+ */
170
+ quality: {
171
+ /**
172
+ * Precision@K 변화율 (K 값별)
173
+ */
174
+ precisionChange: Record<number, number>;
175
+ /**
176
+ * Recall@K 변화율 (K 값별)
177
+ */
178
+ recallChange: Record<number, number>;
179
+ /**
180
+ * NDCG@K 변화율 (K 값별)
181
+ */
182
+ ndcgChange: Record<number, number>;
183
+ };
184
+ /**
185
+ * 극단적 시나리오 검증 비교 결과
186
+ */
187
+ extremeScenarios: {
188
+ /**
189
+ * 저벡터 유사도 + 고 consolidation 점수 검증 변화 (현재 - baseline)
190
+ */
191
+ lowVectorHighConsolidationChange: number;
192
+ /**
193
+ * 고벡터 유사도 + 저 consolidation 점수 검증 변화 (현재 - baseline)
194
+ */
195
+ highVectorLowConsolidationChange: number;
196
+ };
197
+ /**
198
+ * 전체 품질 저하 여부
199
+ */
200
+ hasDegradation: boolean;
201
+ /**
202
+ * 품질 저하 세부 사항
203
+ */
204
+ degradationDetails: string[];
205
+ }
206
+ /**
207
+ * Baseline과 현재 결과 비교
208
+ * Baseline 스냅샷과 현재 검증 결과를 비교하여 품질 저하를 감지합니다.
209
+ *
210
+ * @param baseline Baseline 스냅샷
211
+ * @param currentOrderPreservation 현재 순서 보존 검증 결과
212
+ * @param currentQuality 현재 품질 지표 (QualityMetrics)
213
+ * @param currentExtremeScenarios 현재 극단적 시나리오 검증 결과
214
+ * @param kValues 비교할 K 값 배열 (기본값: [1, 5, 10])
215
+ * @returns Baseline 비교 결과
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * const baseline = loadBaselineSnapshot();
220
+ * if (baseline) {
221
+ * const comparison = compareWithBaseline(
222
+ * baseline,
223
+ * orderPreservationReport,
224
+ * qualityMetrics,
225
+ * extremeScenarioReport
226
+ * );
227
+ * if (comparison.hasDegradation) {
228
+ * console.warn('품질 저하 감지:', comparison.degradationDetails);
229
+ * }
230
+ * }
231
+ * ```
232
+ */
233
+ export declare function compareWithBaseline(baseline: BaselineSnapshot, currentOrderPreservation: OrderPreservationReport, currentQuality: QualityMetrics, currentExtremeScenarios: ExtremeScenarioReport, kValues?: number[]): BaselineComparisonResult;
234
+ //# sourceMappingURL=report-baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-baseline.d.ts","sourceRoot":"","sources":["../../../../../../src/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * 벡터 검색 품질 검증 — baseline 스냅샷 저장·로드·비교
3
+ * (#910: report-comparison.ts 에서 분리)
4
+ */
5
+ import { writeFileSync, readFileSync, existsSync, mkdirSync } from 'fs';
6
+ import { dirname, join } from 'path';
7
+ import { reportOutputRoot } from './report-paths.js';
8
+ const __dirname = reportOutputRoot;
9
+ /**
10
+ * Baseline 스냅샷 저장
11
+ * Baseline 스냅샷을 JSON 형식으로 파일에 저장합니다.
12
+ *
13
+ * @param snapshot 저장할 Baseline 스냅샷
14
+ * @param filePath 저장할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
15
+ * @throws 파일 저장 실패 시 에러 발생
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const snapshot: BaselineSnapshot = {
20
+ * version: '1.0.0',
21
+ * timestamp: new Date().toISOString(),
22
+ * testConfiguration: { dataSize: 100, weights: { vectorSimilarity: 0.6, consolidationScore: 0.4 } },
23
+ * metrics: {
24
+ * orderPreservation: { kendallTau: 0.85, top10Retention: 0.9, top5Retention: 0.95 },
25
+ * quality: { precision: {}, recall: {}, ndcg: {} },
26
+ * extremeScenarios: { lowVectorHighConsolidation: 1, highVectorLowConsolidation: 1 }
27
+ * }
28
+ * };
29
+ * saveBaselineSnapshot(snapshot);
30
+ * ```
31
+ */
32
+ export function saveBaselineSnapshot(snapshot, filePath) {
33
+ // 기본 파일 경로 설정
34
+ const defaultPath = join(__dirname, '../../../data/vector-search-quality-baseline.json');
35
+ const targetPath = filePath || defaultPath;
36
+ // 디렉토리 생성 (없는 경우)
37
+ const dir = dirname(targetPath);
38
+ if (!existsSync(dir)) {
39
+ mkdirSync(dir, { recursive: true });
40
+ }
41
+ try {
42
+ // JSON 형식으로 직렬화하여 저장
43
+ const jsonContent = JSON.stringify(snapshot, null, 2);
44
+ writeFileSync(targetPath, jsonContent, 'utf-8');
45
+ }
46
+ catch (error) {
47
+ throw new Error(`Baseline 스냅샷 저장 실패: ${error instanceof Error ? error.message : String(error)}`);
48
+ }
49
+ }
50
+ /**
51
+ * Baseline 스냅샷 로드
52
+ * 저장된 Baseline 스냅샷을 파일에서 로드합니다.
53
+ *
54
+ * @param filePath 로드할 파일 경로 (기본값: `data/vector-search-quality-baseline.json`)
55
+ * @returns 로드된 Baseline 스냅샷 또는 null (파일이 없거나 로드 실패 시)
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const snapshot = loadBaselineSnapshot();
60
+ * if (snapshot) {
61
+ * console.log(`Baseline 버전: ${snapshot.version}`);
62
+ * console.log(`Baseline 생성 시간: ${snapshot.timestamp}`);
63
+ * } else {
64
+ * console.log('Baseline 스냅샷이 없습니다.');
65
+ * }
66
+ * ```
67
+ */
68
+ export function loadBaselineSnapshot(filePath) {
69
+ // 기본 파일 경로 설정
70
+ const defaultPath = join(__dirname, '../../../data/vector-search-quality-baseline.json');
71
+ const targetPath = filePath || defaultPath;
72
+ // 파일 존재 여부 확인
73
+ if (!existsSync(targetPath)) {
74
+ return null;
75
+ }
76
+ try {
77
+ // 파일 읽기
78
+ const content = readFileSync(targetPath, 'utf-8');
79
+ // JSON 파싱
80
+ const snapshot = JSON.parse(content);
81
+ // 기본 검증 (필수 필드 존재 여부)
82
+ if (!snapshot.version || !snapshot.timestamp || !snapshot.metrics) {
83
+ throw new Error('Baseline 스냅샷 형식이 올바르지 않습니다.');
84
+ }
85
+ return snapshot;
86
+ }
87
+ catch (error) {
88
+ // 로드 실패 시 null 반환 (에러 로깅은 호출자가 처리)
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * Baseline과 현재 결과 비교
94
+ * Baseline 스냅샷과 현재 검증 결과를 비교하여 품질 저하를 감지합니다.
95
+ *
96
+ * @param baseline Baseline 스냅샷
97
+ * @param currentOrderPreservation 현재 순서 보존 검증 결과
98
+ * @param currentQuality 현재 품질 지표 (QualityMetrics)
99
+ * @param currentExtremeScenarios 현재 극단적 시나리오 검증 결과
100
+ * @param kValues 비교할 K 값 배열 (기본값: [1, 5, 10])
101
+ * @returns Baseline 비교 결과
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const baseline = loadBaselineSnapshot();
106
+ * if (baseline) {
107
+ * const comparison = compareWithBaseline(
108
+ * baseline,
109
+ * orderPreservationReport,
110
+ * qualityMetrics,
111
+ * extremeScenarioReport
112
+ * );
113
+ * if (comparison.hasDegradation) {
114
+ * console.warn('품질 저하 감지:', comparison.degradationDetails);
115
+ * }
116
+ * }
117
+ * ```
118
+ */
119
+ export function compareWithBaseline(baseline, currentOrderPreservation, currentQuality, currentExtremeScenarios, kValues = [1, 5, 10]) {
120
+ const degradationDetails = [];
121
+ // 순서 보존 지표 비교
122
+ const baselineOrderPreservation = baseline.metrics.orderPreservation;
123
+ if (!baselineOrderPreservation) {
124
+ throw new Error('Baseline orderPreservation metrics are missing');
125
+ }
126
+ const kendallTauChange = currentOrderPreservation.metrics.kendallTau - baselineOrderPreservation.kendallTau;
127
+ const top10RetentionChange = (currentOrderPreservation.metrics.topKRetention[10] || 0) - baselineOrderPreservation.top10Retention;
128
+ const top5RetentionChange = (currentOrderPreservation.metrics.topKRetention[5] || 0) - baselineOrderPreservation.top5Retention;
129
+ // 순서 보존 지표 저하 감지
130
+ if (kendallTauChange < -0.1) {
131
+ degradationDetails.push(`Kendall's Tau 저하: ${kendallTauChange.toFixed(3)}`);
132
+ }
133
+ if (top10RetentionChange < -0.1) {
134
+ degradationDetails.push(`Top10 유지율 저하: ${top10RetentionChange.toFixed(3)}`);
135
+ }
136
+ if (top5RetentionChange < -0.1) {
137
+ degradationDetails.push(`Top5 유지율 저하: ${top5RetentionChange.toFixed(3)}`);
138
+ }
139
+ // 품질 지표 비교
140
+ const precisionChange = {};
141
+ const recallChange = {};
142
+ const ndcgChange = {};
143
+ kValues.forEach(k => {
144
+ const baselinePrecision = baseline.metrics.quality.precision[k] || 0;
145
+ const currentPrecision = currentQuality.precision[k] || 0;
146
+ const precisionDiff = baselinePrecision > 0
147
+ ? (currentPrecision - baselinePrecision) / baselinePrecision
148
+ : 0;
149
+ precisionChange[k] = precisionDiff;
150
+ const baselineRecall = baseline.metrics.quality.recall[k] || 0;
151
+ const currentRecall = currentQuality.recall[k] || 0;
152
+ const recallDiff = baselineRecall > 0
153
+ ? (currentRecall - baselineRecall) / baselineRecall
154
+ : 0;
155
+ recallChange[k] = recallDiff;
156
+ const baselineNDCG = baseline.metrics.quality.ndcg[k] || 0;
157
+ const currentNDCG = currentQuality.ndcg[k] || 0;
158
+ const ndcgDiff = baselineNDCG > 0
159
+ ? (currentNDCG - baselineNDCG) / baselineNDCG
160
+ : 0;
161
+ ndcgChange[k] = ndcgDiff;
162
+ // 품질 지표 저하 감지 (5% 이상 저하)
163
+ if (ndcgDiff < -0.05) {
164
+ degradationDetails.push(`NDCG@${k} 저하: ${(ndcgDiff * 100).toFixed(2)}%`);
165
+ }
166
+ if (precisionDiff < -0.10) {
167
+ degradationDetails.push(`Precision@${k} 저하: ${(precisionDiff * 100).toFixed(2)}%`);
168
+ }
169
+ if (recallDiff < -0.10) {
170
+ degradationDetails.push(`Recall@${k} 저하: ${(recallDiff * 100).toFixed(2)}%`);
171
+ }
172
+ });
173
+ // 극단적 시나리오 검증 비교
174
+ const lowVectorHighConsolidationChange = (currentExtremeScenarios.lowVectorHighConsolidation.passed ? 1 : 0) -
175
+ baseline.metrics.extremeScenarios.lowVectorHighConsolidation;
176
+ const highVectorLowConsolidationChange = (currentExtremeScenarios.highVectorLowConsolidation.passed ? 1 : 0) -
177
+ baseline.metrics.extremeScenarios.highVectorLowConsolidation;
178
+ // 극단적 시나리오 검증 저하 감지
179
+ if (lowVectorHighConsolidationChange < 0) {
180
+ degradationDetails.push('저벡터 유사도 + 고 consolidation 점수 검증 실패');
181
+ }
182
+ if (highVectorLowConsolidationChange < 0) {
183
+ degradationDetails.push('고벡터 유사도 + 저 consolidation 점수 검증 실패');
184
+ }
185
+ // 전체 품질 저하 여부 판단
186
+ const hasDegradation = degradationDetails.length > 0;
187
+ return {
188
+ baseline: {
189
+ version: baseline.version,
190
+ timestamp: baseline.timestamp
191
+ },
192
+ orderPreservation: {
193
+ kendallTauChange,
194
+ top10RetentionChange,
195
+ top5RetentionChange
196
+ },
197
+ quality: {
198
+ precisionChange,
199
+ recallChange,
200
+ ndcgChange
201
+ },
202
+ extremeScenarios: {
203
+ lowVectorHighConsolidationChange,
204
+ highVectorLowConsolidationChange
205
+ },
206
+ hasDegradation,
207
+ degradationDetails: hasDegradation ? degradationDetails : []
208
+ };
209
+ }
210
+ //# sourceMappingURL=report-baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-baseline.js","sourceRoot":"","sources":["../../../../../../src/domains/monitoring/services/quality-assurance/vector-search-quality-metrics/report-baseline.ts"],"names":[],"mappings":"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"}