@4da/mcp-server 3.2.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +234 -62
  3. package/dist/auth.d.ts +36 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +82 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/db.d.ts +100 -2
  8. package/dist/db.d.ts.map +1 -1
  9. package/dist/db.js +707 -1
  10. package/dist/db.js.map +1 -1
  11. package/dist/doctor.d.ts +15 -0
  12. package/dist/doctor.d.ts.map +1 -0
  13. package/dist/doctor.js +124 -0
  14. package/dist/doctor.js.map +1 -0
  15. package/dist/http-transport.d.ts +25 -0
  16. package/dist/http-transport.d.ts.map +1 -0
  17. package/dist/http-transport.js +143 -0
  18. package/dist/http-transport.js.map +1 -0
  19. package/dist/index.d.ts +15 -18
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +195 -250
  22. package/dist/index.js.map +1 -1
  23. package/dist/live/cache.d.ts +16 -0
  24. package/dist/live/cache.d.ts.map +1 -0
  25. package/dist/live/cache.js +61 -0
  26. package/dist/live/cache.js.map +1 -0
  27. package/dist/live/hn-fetcher.d.ts +19 -0
  28. package/dist/live/hn-fetcher.d.ts.map +1 -0
  29. package/dist/live/hn-fetcher.js +123 -0
  30. package/dist/live/hn-fetcher.js.map +1 -0
  31. package/dist/live/index.d.ts +55 -0
  32. package/dist/live/index.d.ts.map +1 -0
  33. package/dist/live/index.js +131 -0
  34. package/dist/live/index.js.map +1 -0
  35. package/dist/live/osv-scanner.d.ts +19 -0
  36. package/dist/live/osv-scanner.d.ts.map +1 -0
  37. package/dist/live/osv-scanner.js +197 -0
  38. package/dist/live/osv-scanner.js.map +1 -0
  39. package/dist/live/rate-limiter.d.ts +19 -0
  40. package/dist/live/rate-limiter.d.ts.map +1 -0
  41. package/dist/live/rate-limiter.js +52 -0
  42. package/dist/live/rate-limiter.js.map +1 -0
  43. package/dist/live/types.d.ts +89 -0
  44. package/dist/live/types.d.ts.map +1 -0
  45. package/dist/live/types.js +3 -0
  46. package/dist/live/types.js.map +1 -0
  47. package/dist/live/version-resolver.d.ts +11 -0
  48. package/dist/live/version-resolver.d.ts.map +1 -0
  49. package/dist/live/version-resolver.js +321 -0
  50. package/dist/live/version-resolver.js.map +1 -0
  51. package/dist/live-singleton.d.ts +9 -0
  52. package/dist/live-singleton.d.ts.map +1 -0
  53. package/dist/live-singleton.js +14 -0
  54. package/dist/live-singleton.js.map +1 -0
  55. package/dist/llm.d.ts +20 -2
  56. package/dist/llm.d.ts.map +1 -1
  57. package/dist/llm.js +80 -22
  58. package/dist/llm.js.map +1 -1
  59. package/dist/output-manager.d.ts.map +1 -1
  60. package/dist/output-manager.js +1 -0
  61. package/dist/output-manager.js.map +1 -1
  62. package/dist/project-scanner.d.ts +27 -0
  63. package/dist/project-scanner.d.ts.map +1 -0
  64. package/dist/project-scanner.js +366 -0
  65. package/dist/project-scanner.js.map +1 -0
  66. package/dist/schema-registry.d.ts +31 -13
  67. package/dist/schema-registry.d.ts.map +1 -1
  68. package/dist/schema-registry.js +208 -32
  69. package/dist/schema-registry.js.map +1 -1
  70. package/dist/schemas/agent-feedback-stats.json +14 -0
  71. package/dist/schemas/agent-memory.json +49 -0
  72. package/dist/schemas/agent-session-brief.json +25 -0
  73. package/dist/schemas/attention-report.json +13 -0
  74. package/dist/schemas/autophagy-status.json +13 -0
  75. package/dist/schemas/compound-advantage.json +14 -0
  76. package/dist/schemas/decision-enforcement.json +22 -0
  77. package/dist/schemas/decision-memory.json +54 -0
  78. package/dist/schemas/decision-windows.json +22 -0
  79. package/dist/schemas/delegation-score.json +18 -0
  80. package/dist/schemas/developer-dna.json +219 -0
  81. package/dist/schemas/export-context.json +17 -0
  82. package/dist/schemas/knowledge-gaps.json +14 -0
  83. package/dist/schemas/preemption-feed.json +18 -0
  84. package/dist/schemas/project-health.json +13 -0
  85. package/dist/schemas/record-agent-feedback.json +28 -0
  86. package/dist/schemas/reverse-mentions.json +13 -0
  87. package/dist/schemas/semantic-shifts.json +17 -0
  88. package/dist/schemas/signal-chains.json +19 -0
  89. package/dist/schemas/tech-radar.json +23 -0
  90. package/dist/schemas/trust-summary.json +13 -0
  91. package/dist/schemas/vulnerability-scan.json +26 -0
  92. package/dist/schemas/what-should-i-know.json +19 -0
  93. package/dist/setup.d.ts +18 -0
  94. package/dist/setup.d.ts.map +1 -0
  95. package/dist/setup.js +171 -0
  96. package/dist/setup.js.map +1 -0
  97. package/dist/tool-dispatch.d.ts +33 -0
  98. package/dist/tool-dispatch.d.ts.map +1 -0
  99. package/dist/tool-dispatch.js +87 -0
  100. package/dist/tool-dispatch.js.map +1 -0
  101. package/dist/tools/agent-feedback-stats.d.ts +30 -0
  102. package/dist/tools/agent-feedback-stats.d.ts.map +1 -0
  103. package/dist/tools/agent-feedback-stats.js +41 -0
  104. package/dist/tools/agent-feedback-stats.js.map +1 -0
  105. package/dist/tools/agent-memory.d.ts +94 -0
  106. package/dist/tools/agent-memory.d.ts.map +1 -0
  107. package/dist/tools/agent-memory.js +262 -0
  108. package/dist/tools/agent-memory.js.map +1 -0
  109. package/dist/tools/agent-session-brief.d.ts +44 -0
  110. package/dist/tools/agent-session-brief.d.ts.map +1 -0
  111. package/dist/tools/agent-session-brief.js +179 -0
  112. package/dist/tools/agent-session-brief.js.map +1 -0
  113. package/dist/tools/attention-report.d.ts +6 -5
  114. package/dist/tools/attention-report.d.ts.map +1 -1
  115. package/dist/tools/attention-report.js +1 -0
  116. package/dist/tools/attention-report.js.map +1 -1
  117. package/dist/tools/autophagy-status.d.ts +25 -0
  118. package/dist/tools/autophagy-status.d.ts.map +1 -0
  119. package/dist/tools/autophagy-status.js +56 -0
  120. package/dist/tools/autophagy-status.js.map +1 -0
  121. package/dist/tools/compound-advantage.d.ts +30 -0
  122. package/dist/tools/compound-advantage.d.ts.map +1 -0
  123. package/dist/tools/compound-advantage.js +133 -0
  124. package/dist/tools/compound-advantage.js.map +1 -0
  125. package/dist/tools/config-validator.d.ts.map +1 -1
  126. package/dist/tools/config-validator.js +31 -0
  127. package/dist/tools/config-validator.js.map +1 -1
  128. package/dist/tools/context-analysis.d.ts.map +1 -1
  129. package/dist/tools/context-analysis.js +1 -0
  130. package/dist/tools/context-analysis.js.map +1 -1
  131. package/dist/tools/daily-briefing.d.ts.map +1 -1
  132. package/dist/tools/daily-briefing.js +17 -1
  133. package/dist/tools/daily-briefing.js.map +1 -1
  134. package/dist/tools/decision-enforcement.d.ts +59 -0
  135. package/dist/tools/decision-enforcement.d.ts.map +1 -0
  136. package/dist/tools/decision-enforcement.js +185 -0
  137. package/dist/tools/decision-enforcement.js.map +1 -0
  138. package/dist/tools/decision-memory.d.ts +132 -0
  139. package/dist/tools/decision-memory.d.ts.map +1 -0
  140. package/dist/tools/decision-memory.js +345 -0
  141. package/dist/tools/decision-memory.js.map +1 -0
  142. package/dist/tools/decision-windows.d.ts +37 -0
  143. package/dist/tools/decision-windows.d.ts.map +1 -0
  144. package/dist/tools/decision-windows.js +67 -0
  145. package/dist/tools/decision-windows.js.map +1 -0
  146. package/dist/tools/delegation-score.d.ts +34 -0
  147. package/dist/tools/delegation-score.d.ts.map +1 -0
  148. package/dist/tools/delegation-score.js +251 -0
  149. package/dist/tools/delegation-score.js.map +1 -0
  150. package/dist/tools/developer-dna.d.ts +79 -0
  151. package/dist/tools/developer-dna.d.ts.map +1 -0
  152. package/dist/tools/developer-dna.js +378 -0
  153. package/dist/tools/developer-dna.js.map +1 -0
  154. package/dist/tools/explain-relevance.d.ts.map +1 -1
  155. package/dist/tools/explain-relevance.js +1 -0
  156. package/dist/tools/explain-relevance.js.map +1 -1
  157. package/dist/tools/export-context.d.ts +23 -6
  158. package/dist/tools/export-context.d.ts.map +1 -1
  159. package/dist/tools/export-context.js +58 -14
  160. package/dist/tools/export-context.js.map +1 -1
  161. package/dist/tools/get-actionable-signals.d.ts.map +1 -1
  162. package/dist/tools/get-actionable-signals.js +60 -9
  163. package/dist/tools/get-actionable-signals.js.map +1 -1
  164. package/dist/tools/get-context.d.ts.map +1 -1
  165. package/dist/tools/get-context.js +1 -0
  166. package/dist/tools/get-context.js.map +1 -1
  167. package/dist/tools/get-relevant-content.d.ts.map +1 -1
  168. package/dist/tools/get-relevant-content.js +3 -0
  169. package/dist/tools/get-relevant-content.js.map +1 -1
  170. package/dist/tools/index.d.ts +26 -16
  171. package/dist/tools/index.d.ts.map +1 -1
  172. package/dist/tools/index.js +35 -16
  173. package/dist/tools/index.js.map +1 -1
  174. package/dist/tools/knowledge-gaps.d.ts +11 -1
  175. package/dist/tools/knowledge-gaps.d.ts.map +1 -1
  176. package/dist/tools/knowledge-gaps.js +9 -3
  177. package/dist/tools/knowledge-gaps.js.map +1 -1
  178. package/dist/tools/llm-status.d.ts.map +1 -1
  179. package/dist/tools/llm-status.js +1 -0
  180. package/dist/tools/llm-status.js.map +1 -1
  181. package/dist/tools/muse-context.d.ts +195 -0
  182. package/dist/tools/muse-context.d.ts.map +1 -0
  183. package/dist/tools/muse-context.js +284 -0
  184. package/dist/tools/muse-context.js.map +1 -0
  185. package/dist/tools/preemption-feed.d.ts +55 -0
  186. package/dist/tools/preemption-feed.d.ts.map +1 -0
  187. package/dist/tools/preemption-feed.js +124 -0
  188. package/dist/tools/preemption-feed.js.map +1 -0
  189. package/dist/tools/project-health.d.ts +12 -6
  190. package/dist/tools/project-health.d.ts.map +1 -1
  191. package/dist/tools/project-health.js +49 -10
  192. package/dist/tools/project-health.js.map +1 -1
  193. package/dist/tools/record-agent-feedback.d.ts +46 -0
  194. package/dist/tools/record-agent-feedback.d.ts.map +1 -0
  195. package/dist/tools/record-agent-feedback.js +71 -0
  196. package/dist/tools/record-agent-feedback.js.map +1 -0
  197. package/dist/tools/record-feedback.d.ts.map +1 -1
  198. package/dist/tools/record-feedback.js +1 -0
  199. package/dist/tools/record-feedback.js.map +1 -1
  200. package/dist/tools/reverse-mentions.d.ts +8 -8
  201. package/dist/tools/reverse-mentions.d.ts.map +1 -1
  202. package/dist/tools/reverse-mentions.js +1 -0
  203. package/dist/tools/reverse-mentions.js.map +1 -1
  204. package/dist/tools/score-autopsy.d.ts.map +1 -1
  205. package/dist/tools/score-autopsy.js +1 -0
  206. package/dist/tools/score-autopsy.js.map +1 -1
  207. package/dist/tools/semantic-shifts.d.ts +17 -1
  208. package/dist/tools/semantic-shifts.d.ts.map +1 -1
  209. package/dist/tools/semantic-shifts.js +1 -0
  210. package/dist/tools/semantic-shifts.js.map +1 -1
  211. package/dist/tools/signal-chains.d.ts +14 -7
  212. package/dist/tools/signal-chains.d.ts.map +1 -1
  213. package/dist/tools/signal-chains.js +5 -2
  214. package/dist/tools/signal-chains.js.map +1 -1
  215. package/dist/tools/source-health.d.ts.map +1 -1
  216. package/dist/tools/source-health.js +1 -0
  217. package/dist/tools/source-health.js.map +1 -1
  218. package/dist/tools/tech-radar.d.ts +38 -0
  219. package/dist/tools/tech-radar.d.ts.map +1 -0
  220. package/dist/tools/tech-radar.js +249 -0
  221. package/dist/tools/tech-radar.js.map +1 -0
  222. package/dist/tools/topic-connections.d.ts.map +1 -1
  223. package/dist/tools/topic-connections.js +1 -0
  224. package/dist/tools/topic-connections.js.map +1 -1
  225. package/dist/tools/trend-analysis.d.ts.map +1 -1
  226. package/dist/tools/trend-analysis.js +1 -0
  227. package/dist/tools/trend-analysis.js.map +1 -1
  228. package/dist/tools/trust-summary.d.ts +38 -0
  229. package/dist/tools/trust-summary.d.ts.map +1 -0
  230. package/dist/tools/trust-summary.js +89 -0
  231. package/dist/tools/trust-summary.js.map +1 -0
  232. package/dist/tools/vulnerability-scan.d.ts +89 -0
  233. package/dist/tools/vulnerability-scan.d.ts.map +1 -0
  234. package/dist/tools/vulnerability-scan.js +127 -0
  235. package/dist/tools/vulnerability-scan.js.map +1 -0
  236. package/dist/tools/what-should-i-know.d.ts +79 -0
  237. package/dist/tools/what-should-i-know.d.ts.map +1 -0
  238. package/dist/tools/what-should-i-know.js +376 -0
  239. package/dist/tools/what-should-i-know.js.map +1 -0
  240. package/dist/types.d.ts +221 -0
  241. package/dist/types.d.ts.map +1 -1
  242. package/dist/types.js +1 -0
  243. package/dist/types.js.map +1 -1
  244. package/package.json +53 -24
@@ -0,0 +1,378 @@
1
+ // SPDX-License-Identifier: FSL-1.1-Apache-2.0
2
+ /**
3
+ * developer_dna tool
4
+ *
5
+ * Export a comprehensive Developer DNA profile built from project scans,
6
+ * engagement data, and learned preferences.
7
+ */
8
+ // =============================================================================
9
+ // Tool Definition
10
+ // =============================================================================
11
+ export const developerDnaTool = {
12
+ name: "developer_dna",
13
+ description: `Export your Developer DNA — a comprehensive profile of your tech identity built from project scans, engagement data, and learned preferences. Includes primary stack, adjacent tech, top dependencies, engaged topics, blind spots, source engagement rates, and aggregate stats.`,
14
+ inputSchema: {
15
+ type: "object",
16
+ properties: {
17
+ include_blind_spots: {
18
+ type: "boolean",
19
+ description: "Include blind spot analysis (dependencies with stale engagement). Default: true",
20
+ default: true,
21
+ },
22
+ max_dependencies: {
23
+ type: "number",
24
+ description: "Maximum dependencies to include. Default: 30",
25
+ default: 30,
26
+ },
27
+ max_topics: {
28
+ type: "number",
29
+ description: "Maximum engaged topics to include. Default: 20",
30
+ default: 20,
31
+ },
32
+ },
33
+ },
34
+ };
35
+ // =============================================================================
36
+ // Execution
37
+ // =============================================================================
38
+ export function executeDeveloperDna(db, params) {
39
+ const rawDb = db.getRawDb();
40
+ const includeBlindSpots = params.include_blind_spots ?? true;
41
+ const maxDependencies = params.max_dependencies ?? 30;
42
+ const maxTopics = params.max_topics ?? 20;
43
+ // -------------------------------------------------------------------------
44
+ // 1. Primary Stack — from tech_stack table (user-declared)
45
+ // -------------------------------------------------------------------------
46
+ let primaryStack = [];
47
+ try {
48
+ const techRows = rawDb
49
+ .prepare("SELECT technology FROM tech_stack ORDER BY technology")
50
+ .all();
51
+ primaryStack = techRows.map((r) => r.technology);
52
+ }
53
+ catch {
54
+ // table may not exist yet
55
+ }
56
+ // -------------------------------------------------------------------------
57
+ // 2. Adjacent Tech — detected_tech NOT in primary stack
58
+ // -------------------------------------------------------------------------
59
+ let adjacentTech = [];
60
+ try {
61
+ const detectedRows = rawDb
62
+ .prepare(`SELECT DISTINCT name, category, confidence
63
+ FROM detected_tech
64
+ WHERE confidence > 0.3
65
+ ORDER BY confidence DESC
66
+ LIMIT 50`)
67
+ .all();
68
+ const primarySet = new Set(primaryStack.map((t) => t.toLowerCase()));
69
+ adjacentTech = detectedRows
70
+ .filter((r) => !primarySet.has(r.name.toLowerCase()))
71
+ .map((r) => r.name);
72
+ }
73
+ catch {
74
+ // detected_tech table may not exist
75
+ }
76
+ // -------------------------------------------------------------------------
77
+ // 3. Top Dependencies — from project_dependencies table
78
+ // -------------------------------------------------------------------------
79
+ let topDependencies = [];
80
+ try {
81
+ const depRows = rawDb
82
+ .prepare(`SELECT package_name, project_path
83
+ FROM project_dependencies
84
+ ORDER BY package_name
85
+ LIMIT ?`)
86
+ .all(maxDependencies);
87
+ topDependencies = depRows.map((r) => ({
88
+ name: r.package_name,
89
+ project_path: r.project_path,
90
+ }));
91
+ }
92
+ catch {
93
+ // table may not exist
94
+ }
95
+ // -------------------------------------------------------------------------
96
+ // 4. Interests — from explicit_interests table
97
+ // -------------------------------------------------------------------------
98
+ let interests = [];
99
+ try {
100
+ const interestRows = rawDb
101
+ .prepare("SELECT topic, weight FROM explicit_interests ORDER BY weight DESC LIMIT 30")
102
+ .all();
103
+ interests = interestRows.map((r) => r.topic);
104
+ }
105
+ catch {
106
+ // table may not exist
107
+ }
108
+ // -------------------------------------------------------------------------
109
+ // 5. Top Engaged Topics — from topic_affinities
110
+ // -------------------------------------------------------------------------
111
+ let topEngagedTopics = [];
112
+ try {
113
+ const affinityRows = rawDb
114
+ .prepare(`SELECT topic, positive_signals, negative_signals, total_exposures
115
+ FROM topic_affinities
116
+ WHERE positive_signals > 0
117
+ ORDER BY positive_signals DESC
118
+ LIMIT ?`)
119
+ .all(maxTopics);
120
+ const totalPositive = affinityRows.reduce((sum, r) => sum + r.positive_signals, 0);
121
+ topEngagedTopics = affinityRows.map((r) => ({
122
+ topic: r.topic,
123
+ interactions: r.positive_signals,
124
+ percent_of_total: totalPositive > 0
125
+ ? Math.round((r.positive_signals / totalPositive) * 10000) / 100
126
+ : 0,
127
+ }));
128
+ }
129
+ catch {
130
+ // table may not exist
131
+ }
132
+ // -------------------------------------------------------------------------
133
+ // 6. Blind Spots — dependencies with no recent engagement
134
+ // -------------------------------------------------------------------------
135
+ let blindSpots = [];
136
+ if (includeBlindSpots && topDependencies.length > 0) {
137
+ try {
138
+ // Get all interactions for cross-referencing
139
+ const recentInteractions = rawDb
140
+ .prepare(`SELECT i.item_id, i.action_type, i.item_source, i.timestamp
141
+ FROM interactions i
142
+ WHERE i.action_type IN ('click', 'save')
143
+ ORDER BY i.timestamp DESC`)
144
+ .all();
145
+ // Build set of recently engaged dependency names
146
+ const now = Date.now();
147
+ for (const dep of topDependencies) {
148
+ const depLower = dep.name.toLowerCase();
149
+ // Check if any interaction item's source mentions this dependency
150
+ // Use a simpler heuristic: check if the dependency name appears in
151
+ // topic_affinities with positive signals
152
+ let lastEngagement = null;
153
+ try {
154
+ const affinityRow = rawDb
155
+ .prepare(`SELECT topic, positive_signals
156
+ FROM topic_affinities
157
+ WHERE LOWER(topic) = ?
158
+ AND positive_signals > 0`)
159
+ .get(depLower);
160
+ if (affinityRow) {
161
+ continue; // Has engagement, not a blind spot
162
+ }
163
+ }
164
+ catch {
165
+ // Ignore
166
+ }
167
+ // Check for any source_items mentioning this dep that have interactions
168
+ try {
169
+ const mentionedInteraction = rawDb
170
+ .prepare(`SELECT i.timestamp
171
+ FROM interactions i
172
+ JOIN source_items si ON i.item_id = si.id AND i.item_source = si.source_type
173
+ WHERE (LOWER(si.title) LIKE ? OR LOWER(si.content) LIKE ?)
174
+ AND i.action_type IN ('click', 'save')
175
+ ORDER BY i.timestamp DESC
176
+ LIMIT 1`)
177
+ .get(`%${depLower}%`, `%${depLower}%`);
178
+ if (mentionedInteraction) {
179
+ const interactionTime = new Date(mentionedInteraction.timestamp).getTime();
180
+ const daysSince = Math.floor((now - interactionTime) / (1000 * 60 * 60 * 24));
181
+ if (daysSince > 14) {
182
+ blindSpots.push({
183
+ dependency: dep.name,
184
+ severity: daysSince > 60 ? "high" : "medium",
185
+ days_stale: daysSince,
186
+ });
187
+ }
188
+ }
189
+ else {
190
+ // Never interacted with content about this dependency
191
+ blindSpots.push({
192
+ dependency: dep.name,
193
+ severity: "low",
194
+ days_stale: -1, // indicates "never engaged"
195
+ });
196
+ }
197
+ }
198
+ catch {
199
+ // Ignore query failures for individual deps
200
+ }
201
+ }
202
+ // Sort by severity
203
+ const severityOrder = {
204
+ critical: 4,
205
+ high: 3,
206
+ medium: 2,
207
+ low: 1,
208
+ };
209
+ blindSpots.sort((a, b) => (severityOrder[b.severity] || 0) - (severityOrder[a.severity] || 0));
210
+ }
211
+ catch {
212
+ // interactions table may not exist
213
+ }
214
+ }
215
+ // -------------------------------------------------------------------------
216
+ // 7. Source Engagement — items seen vs saved per source_type
217
+ // -------------------------------------------------------------------------
218
+ let sourceEngagement = [];
219
+ try {
220
+ const sourceCounts = rawDb
221
+ .prepare(`SELECT source_type, COUNT(*) as item_count
222
+ FROM source_items
223
+ GROUP BY source_type
224
+ ORDER BY item_count DESC`)
225
+ .all();
226
+ const savedCounts = rawDb
227
+ .prepare(`SELECT si.source_type, COUNT(*) as saved_count
228
+ FROM interactions i
229
+ JOIN source_items si ON i.item_id = si.id AND i.item_source = si.source_type
230
+ WHERE i.action_type = 'save'
231
+ GROUP BY si.source_type`)
232
+ .all();
233
+ const savedMap = new Map(savedCounts.map((r) => [r.source_type, r.saved_count]));
234
+ sourceEngagement = sourceCounts.map((r) => {
235
+ const saved = savedMap.get(r.source_type) || 0;
236
+ return {
237
+ source_type: r.source_type,
238
+ items_seen: r.item_count,
239
+ items_saved: saved,
240
+ engagement_rate: r.item_count > 0
241
+ ? Math.round((saved / r.item_count) * 10000) / 10000
242
+ : 0,
243
+ };
244
+ });
245
+ }
246
+ catch {
247
+ // tables may not exist
248
+ }
249
+ // -------------------------------------------------------------------------
250
+ // 8. Stats — aggregate numbers
251
+ // -------------------------------------------------------------------------
252
+ let totalItemsProcessed = 0;
253
+ let totalRelevant = 0;
254
+ let projectCount = 0;
255
+ let dependencyCount = 0;
256
+ let daysActive = 0;
257
+ try {
258
+ const totalRow = rawDb
259
+ .prepare("SELECT COUNT(*) as cnt FROM source_items")
260
+ .get();
261
+ totalItemsProcessed = totalRow.cnt;
262
+ }
263
+ catch {
264
+ // table may not exist
265
+ }
266
+ try {
267
+ // Items with at least one positive interaction = "relevant"
268
+ const relevantRow = rawDb
269
+ .prepare(`SELECT COUNT(DISTINCT item_id) as cnt
270
+ FROM interactions
271
+ WHERE action_type IN ('click', 'save')`)
272
+ .get();
273
+ totalRelevant = relevantRow.cnt;
274
+ }
275
+ catch {
276
+ // table may not exist
277
+ }
278
+ try {
279
+ const projectRow = rawDb
280
+ .prepare("SELECT COUNT(DISTINCT project_path) as project_count FROM project_dependencies")
281
+ .get();
282
+ projectCount = projectRow.project_count;
283
+ }
284
+ catch {
285
+ // table may not exist
286
+ }
287
+ try {
288
+ const depRow = rawDb
289
+ .prepare("SELECT COUNT(DISTINCT package_name) as dep_count FROM project_dependencies")
290
+ .get();
291
+ dependencyCount = depRow.dep_count;
292
+ }
293
+ catch {
294
+ // table may not exist
295
+ }
296
+ try {
297
+ const minRow = rawDb
298
+ .prepare("SELECT MIN(created_at) as min_date FROM source_items")
299
+ .get();
300
+ if (minRow.min_date) {
301
+ const earliest = new Date(minRow.min_date.replace(" ", "T") + "Z");
302
+ daysActive = Math.max(1, Math.floor((Date.now() - earliest.getTime()) / (1000 * 60 * 60 * 24)));
303
+ }
304
+ }
305
+ catch {
306
+ // table may not exist
307
+ }
308
+ const rejectionRate = totalItemsProcessed > 0
309
+ ? Math.round(((totalItemsProcessed - totalRelevant) / totalItemsProcessed) * 10000) / 10000
310
+ : 0;
311
+ const stats = {
312
+ total_items_processed: totalItemsProcessed,
313
+ total_relevant: totalRelevant,
314
+ rejection_rate: rejectionRate,
315
+ project_count: projectCount,
316
+ dependency_count: dependencyCount,
317
+ days_active: daysActive,
318
+ };
319
+ // -------------------------------------------------------------------------
320
+ // 9. Identity Summary — human-readable paragraph
321
+ // -------------------------------------------------------------------------
322
+ const identitySummary = buildIdentitySummary(primaryStack, adjacentTech, interests, topEngagedTopics, stats, sourceEngagement);
323
+ return {
324
+ generated_at: new Date().toISOString(),
325
+ primary_stack: primaryStack,
326
+ adjacent_tech: adjacentTech,
327
+ top_dependencies: topDependencies,
328
+ interests,
329
+ top_engaged_topics: topEngagedTopics,
330
+ blind_spots: blindSpots,
331
+ source_engagement: sourceEngagement,
332
+ stats,
333
+ identity_summary: identitySummary,
334
+ };
335
+ }
336
+ // =============================================================================
337
+ // Helpers
338
+ // =============================================================================
339
+ function buildIdentitySummary(primaryStack, adjacentTech, interests, engagedTopics, stats, sourceEngagement) {
340
+ const parts = [];
341
+ // Stack description
342
+ if (primaryStack.length > 0) {
343
+ const stackStr = primaryStack.slice(0, 5).join(", ");
344
+ parts.push(`Primary stack: ${stackStr}${primaryStack.length > 5 ? ` (+${primaryStack.length - 5} more)` : ""}`);
345
+ }
346
+ else {
347
+ parts.push("No declared tech stack yet");
348
+ }
349
+ // Adjacent discoveries
350
+ if (adjacentTech.length > 0) {
351
+ const adjStr = adjacentTech.slice(0, 3).join(", ");
352
+ parts.push(`also working with ${adjStr}${adjacentTech.length > 3 ? ` and ${adjacentTech.length - 3} other detected technologies` : ""}`);
353
+ }
354
+ // Interests
355
+ if (interests.length > 0) {
356
+ const intStr = interests.slice(0, 3).join(", ");
357
+ parts.push(`Key interests: ${intStr}`);
358
+ }
359
+ // Engagement focus
360
+ if (engagedTopics.length > 0) {
361
+ const topTopics = engagedTopics
362
+ .slice(0, 3)
363
+ .map((t) => t.topic)
364
+ .join(", ");
365
+ parts.push(`most engaged with ${topTopics}`);
366
+ }
367
+ // Sources
368
+ if (sourceEngagement.length > 0) {
369
+ const topSource = sourceEngagement[0];
370
+ parts.push(`${topSource.source_type} is the primary content source (${topSource.items_seen} items)`);
371
+ }
372
+ // Stats
373
+ if (stats.days_active > 0) {
374
+ parts.push(`${stats.total_items_processed} items processed over ${stats.days_active} days across ${stats.project_count} project${stats.project_count !== 1 ? "s" : ""}`);
375
+ }
376
+ return parts.join(". ") + ".";
377
+ }
378
+ //# sourceMappingURL=developer-dna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"developer-dna.js","sourceRoot":"","sources":["../../src/tools/developer-dna.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"explain-relevance.d.ts","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAyBhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,sBAAsB,GAC7B,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAc1C"}
1
+ {"version":3,"file":"explain-relevance.d.ts","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAyBhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,sBAAsB,GAC7B,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAc1C"}
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: FSL-1.1-Apache-2.0
1
2
  /**
2
3
  * explain_relevance tool
3
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"explain-relevance.js","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE;;;;;;;yDAO0C;IACvD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACtD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;gBAClE,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;aACxC;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;KACrC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAkB,EAClB,MAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,QAAQ,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,WAAW,YAAY;SACxE,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"explain-relevance.js","sourceRoot":"","sources":["../../src/tools/explain-relevance.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;;;;GAIG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE;;;;;;;yDAO0C;IACvD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACtD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;gBAClE,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;aACxC;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;KACrC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAkB,EAClB,MAA8B;IAE9B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAE5E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,KAAK,EAAE,QAAQ,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,WAAW,YAAY;SACxE,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  * Generate a context packet for handoff to another session or AI agent.
5
5
  */
6
6
  import type { FourDADatabase } from "../db.js";
7
+ import type { SourceItemMinimalRow, SavedItemRow } from "../types.js";
7
8
  export interface ExportContextParams {
8
9
  include_signals?: boolean;
9
10
  include_saved?: boolean;
@@ -27,17 +28,33 @@ export declare const exportContextPacketTool: {
27
28
  };
28
29
  };
29
30
  };
31
+ export interface OpenSignal {
32
+ id: number;
33
+ title: string;
34
+ signal_type: string;
35
+ priority: string;
36
+ source_type: string;
37
+ }
30
38
  export declare function executeExportContextPacket(db: FourDADatabase, params: ExportContextParams): {
31
39
  generated_at: string;
32
40
  version: string;
33
41
  active_context: {
34
- detected_tech: any[];
35
- active_topics: any[];
36
- interests: any[];
37
- exclusions: any[];
42
+ detected_tech: string[];
43
+ active_topics: string[];
44
+ interests: string[];
45
+ exclusions: string[];
38
46
  };
39
- open_signals: any[];
40
- saved_items: any[];
47
+ open_signals: (SourceItemMinimalRow | OpenSignal)[];
48
+ saved_items: SavedItemRow[];
49
+ trust_metrics: {
50
+ precision_30d: number | null;
51
+ action_rate_30d: number | null;
52
+ total_surfaced_30d: number;
53
+ false_positives_30d: number;
54
+ } | null;
55
+ preemption_summary: {
56
+ active_critical_alerts: number;
57
+ } | null;
41
58
  summary: string;
42
59
  };
43
60
  //# sourceMappingURL=export-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-context.d.ts","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB;;;;;;;;;;;;EAqF5B"}
1
+ {"version":3,"file":"export-context.d.ts","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAiD,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErH,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;CAkBnC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,0BAA0B,CACxC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,mBAAmB;;;;;;;;;;;;uBA0EV,MAAM,GAAG,IAAI;yBACX,MAAM,GAAG,IAAI;4BACV,MAAM;6BACL,MAAM;;;gCAoCH,MAAM;;;EAgCjC"}
@@ -1,3 +1,4 @@
1
+ // SPDX-License-Identifier: FSL-1.1-Apache-2.0
1
2
  /**
2
3
  * export_context_packet tool
3
4
  *
@@ -29,23 +30,23 @@ export function executeExportContextPacket(db, params) {
29
30
  // Get interests
30
31
  const interests = rawDb
31
32
  .prepare("SELECT topic FROM interests ORDER BY weight DESC LIMIT 20")
32
- .all()
33
- .map((r) => r.topic);
33
+ .all();
34
+ const interestTopics = interests.map((r) => r.topic);
34
35
  // Get exclusions
35
- const exclusions = rawDb
36
+ const exclusionRows = rawDb
36
37
  .prepare("SELECT topic FROM exclusions")
37
- .all()
38
- .map((r) => r.topic);
38
+ .all();
39
+ const exclusions = exclusionRows.map((r) => r.topic);
39
40
  // Get detected tech from ACE
40
- const detectedTech = rawDb
41
+ const detectedTechRows = rawDb
41
42
  .prepare("SELECT DISTINCT name FROM detected_tech ORDER BY confidence DESC LIMIT 15")
42
- .all()
43
- .map((r) => r.name);
43
+ .all();
44
+ const detectedTech = detectedTechRows.map((r) => r.name);
44
45
  // Get active topics
45
- const activeTopics = rawDb
46
+ const activeTopicRows = rawDb
46
47
  .prepare("SELECT DISTINCT topic FROM active_topics ORDER BY last_seen DESC LIMIT 10")
47
- .all()
48
- .map((r) => r.topic);
48
+ .all();
49
+ const activeTopics = activeTopicRows.map((r) => r.topic);
49
50
  // Get open signals from temporal events (signals are computed at runtime, not stored in source_items)
50
51
  let openSignals = [];
51
52
  if (includeSignals) {
@@ -87,18 +88,61 @@ export function executeExportContextPacket(db, params) {
87
88
  ORDER BY i.timestamp DESC LIMIT 20`)
88
89
  .all();
89
90
  }
91
+ // Trust metrics
92
+ let trustMetrics = null;
93
+ try {
94
+ const trustCounts = rawDb
95
+ .prepare(`SELECT event_type, COUNT(*) as cnt
96
+ FROM trust_events
97
+ WHERE created_at >= datetime('now', '-30 days')
98
+ GROUP BY event_type`)
99
+ .all();
100
+ const getCount = (t) => trustCounts.find((c) => c.event_type === t)?.cnt ?? 0;
101
+ const surfaced = getCount("surfaced");
102
+ const acted = getCount("acted_on");
103
+ const fp = getCount("false_positive");
104
+ const validated = getCount("validated");
105
+ const tp = acted + validated;
106
+ trustMetrics = {
107
+ precision_30d: tp + fp > 0 ? Math.round((tp / (tp + fp)) * 100) / 100 : null,
108
+ action_rate_30d: surfaced > 0
109
+ ? Math.round((acted / surfaced) * 100) / 100
110
+ : null,
111
+ total_surfaced_30d: surfaced,
112
+ false_positives_30d: fp,
113
+ };
114
+ }
115
+ catch {
116
+ /* trust tables may not exist yet */
117
+ }
118
+ // Recent preemption alerts count
119
+ let preemptionSummary = null;
120
+ try {
121
+ const alertCount = rawDb
122
+ .prepare(`SELECT COUNT(*) as cnt FROM dependency_alerts
123
+ WHERE created_at >= datetime('now', '-7 days') AND severity IN ('critical', 'high')`)
124
+ .get();
125
+ preemptionSummary = {
126
+ active_critical_alerts: alertCount?.cnt ?? 0,
127
+ };
128
+ }
129
+ catch {
130
+ /* table may not exist */
131
+ }
90
132
  return {
91
133
  generated_at: new Date().toISOString(),
92
- version: "1.0.0",
134
+ version: "1.1.0",
93
135
  active_context: {
94
136
  detected_tech: detectedTech,
95
137
  active_topics: activeTopics,
96
- interests,
138
+ interests: interestTopics,
97
139
  exclusions,
98
140
  },
99
141
  open_signals: openSignals,
100
142
  saved_items: savedItems,
101
- summary: `${interests.length} interests, ${detectedTech.length} detected tech, ${openSignals.length} open signals, ${savedItems.length} saved items`,
143
+ trust_metrics: trustMetrics,
144
+ preemption_summary: preemptionSummary,
145
+ summary: `${interestTopics.length} interests, ${detectedTech.length} detected tech, ${openSignals.length} open signals, ${savedItems.length} saved items`,
102
146
  };
103
147
  }
104
148
  //# sourceMappingURL=export-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"export-context.js","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-context.js","sourceRoot":"","sources":["../../src/tools/export-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-actionable-signals.d.ts","sourceRoot":"","sources":["../../src/tools/get-actionable-signals.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM/C,KAAK,UAAU,GACX,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,YAAY,GACZ,UAAU,GACV,mBAAmB,CAAC;AAExB,KAAK,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAQ7D,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA6MD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCpC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,0BAA0B,GACjC;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA6DjF"}
1
+ {"version":3,"file":"get-actionable-signals.d.ts","sourceRoot":"","sources":["../../src/tools/get-actionable-signals.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAO/C,KAAK,UAAU,GACX,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,YAAY,GACZ,UAAU,GACV,mBAAmB,CAAC;AAExB,KAAK,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAQ7D,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AA8ND,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCpC,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,0BAA0B,GACjC;IAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA8FjF"}