@mneme-ai/mcp 1.17.6 → 1.18.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 (92) hide show
  1. package/README.md +64 -9
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +76 -8
  4. package/dist/index.js.map +1 -1
  5. package/dist/mcp_primitives/completion.d.ts +19 -0
  6. package/dist/mcp_primitives/completion.d.ts.map +1 -0
  7. package/dist/mcp_primitives/completion.js +55 -0
  8. package/dist/mcp_primitives/completion.js.map +1 -0
  9. package/dist/mcp_primitives/prompts.d.ts +36 -0
  10. package/dist/mcp_primitives/prompts.d.ts.map +1 -0
  11. package/dist/mcp_primitives/prompts.js +140 -0
  12. package/dist/mcp_primitives/prompts.js.map +1 -0
  13. package/dist/mcp_primitives/resources.d.ts +30 -0
  14. package/dist/mcp_primitives/resources.d.ts.map +1 -0
  15. package/dist/mcp_primitives/resources.js +112 -0
  16. package/dist/mcp_primitives/resources.js.map +1 -0
  17. package/dist/tools/_aletheia.d.ts +82 -0
  18. package/dist/tools/_aletheia.d.ts.map +1 -0
  19. package/dist/tools/_aletheia.js +800 -0
  20. package/dist/tools/_aletheia.js.map +1 -0
  21. package/dist/tools/_confess.d.ts +67 -0
  22. package/dist/tools/_confess.d.ts.map +1 -0
  23. package/dist/tools/_confess.js +260 -0
  24. package/dist/tools/_confess.js.map +1 -0
  25. package/dist/tools/_confess.test.d.ts +6 -0
  26. package/dist/tools/_confess.test.d.ts.map +1 -0
  27. package/dist/tools/_confess.test.js +96 -0
  28. package/dist/tools/_confess.test.js.map +1 -0
  29. package/dist/tools/_contract.test.d.ts +19 -0
  30. package/dist/tools/_contract.test.d.ts.map +1 -0
  31. package/dist/tools/_contract.test.js +117 -0
  32. package/dist/tools/_contract.test.js.map +1 -0
  33. package/dist/tools/_court.d.ts +57 -0
  34. package/dist/tools/_court.d.ts.map +1 -0
  35. package/dist/tools/_court.js +261 -0
  36. package/dist/tools/_court.js.map +1 -0
  37. package/dist/tools/_court.test.d.ts +8 -0
  38. package/dist/tools/_court.test.d.ts.map +1 -0
  39. package/dist/tools/_court.test.js +111 -0
  40. package/dist/tools/_court.test.js.map +1 -0
  41. package/dist/tools/_genome_marketplace.d.ts +83 -0
  42. package/dist/tools/_genome_marketplace.d.ts.map +1 -0
  43. package/dist/tools/_genome_marketplace.js +410 -0
  44. package/dist/tools/_genome_marketplace.js.map +1 -0
  45. package/dist/tools/_genome_marketplace.test.d.ts +5 -0
  46. package/dist/tools/_genome_marketplace.test.d.ts.map +1 -0
  47. package/dist/tools/_genome_marketplace.test.js +157 -0
  48. package/dist/tools/_genome_marketplace.test.js.map +1 -0
  49. package/dist/tools/_mesh.d.ts +51 -0
  50. package/dist/tools/_mesh.d.ts.map +1 -0
  51. package/dist/tools/_mesh.js +182 -0
  52. package/dist/tools/_mesh.js.map +1 -0
  53. package/dist/tools/_registry.d.ts.map +1 -1
  54. package/dist/tools/_registry.js +17 -0
  55. package/dist/tools/_registry.js.map +1 -1
  56. package/dist/tools/_replay.d.ts +52 -0
  57. package/dist/tools/_replay.d.ts.map +1 -0
  58. package/dist/tools/_replay.js +253 -0
  59. package/dist/tools/_replay.js.map +1 -0
  60. package/dist/tools/_replay.test.d.ts +5 -0
  61. package/dist/tools/_replay.test.d.ts.map +1 -0
  62. package/dist/tools/_replay.test.js +90 -0
  63. package/dist/tools/_replay.test.js.map +1 -0
  64. package/dist/tools/_timetravel.d.ts +46 -0
  65. package/dist/tools/_timetravel.d.ts.map +1 -0
  66. package/dist/tools/_timetravel.js +243 -0
  67. package/dist/tools/_timetravel.js.map +1 -0
  68. package/dist/tools/_timetravel.test.d.ts +7 -0
  69. package/dist/tools/_timetravel.test.d.ts.map +1 -0
  70. package/dist/tools/_timetravel.test.js +31 -0
  71. package/dist/tools/_timetravel.test.js.map +1 -0
  72. package/dist/tools/_tool_meta.d.ts +30 -0
  73. package/dist/tools/_tool_meta.d.ts.map +1 -0
  74. package/dist/tools/_tool_meta.js +530 -0
  75. package/dist/tools/_tool_meta.js.map +1 -0
  76. package/dist/tools/_types.d.ts +46 -5
  77. package/dist/tools/_types.d.ts.map +1 -1
  78. package/dist/tools/_types.js.map +1 -1
  79. package/dist/tools/_verify_claims_tool.d.ts.map +1 -1
  80. package/dist/tools/_verify_claims_tool.js +23 -0
  81. package/dist/tools/_verify_claims_tool.js.map +1 -1
  82. package/dist/tools/audit.d.ts.map +1 -1
  83. package/dist/tools/audit.js +37 -0
  84. package/dist/tools/audit.js.map +1 -1
  85. package/dist/tools/memory.d.ts.map +1 -1
  86. package/dist/tools/memory.js +23 -0
  87. package/dist/tools/memory.js.map +1 -1
  88. package/dist/tools/quant.d.ts +10 -2
  89. package/dist/tools/quant.d.ts.map +1 -1
  90. package/dist/tools/quant.js +311 -18
  91. package/dist/tools/quant.js.map +1 -1
  92. package/package.json +3 -3
@@ -1,26 +1,319 @@
1
1
  /**
2
- * Quant — Wall-Street-inspired analysis applied to engineering data.
3
- * Drawdown, alpha, Greeks, black-swan, moneyball, insider-trading detector.
2
+ * Quant — engineering analysis BORROWED from Wall Street, not Wall-Street
3
+ * jargon hidden behind cute names. Every quant tool ships a `jargon`
4
+ * dictionary that translates the finance term inline so a cold-start AI
5
+ * agent (or a human who never traded a stock) can understand the result
6
+ * without leaving the response.
7
+ *
8
+ * The 10 quant tools were the lowest-scoring on the v1.17 lint pass —
9
+ * v1.18 promotes them to FULL contract: WHEN, OUTPUT, EXAMPLES,
10
+ * PITFALLS, COMPOSE_WITH, JARGON. They now score ≥80/100 in
11
+ * `mneme.tool.lint`.
4
12
  */
5
13
  import { passthroughHandler } from "./_runtime.js";
6
- const quant = (name, description, triggers, cli, argMap = () => [], inputSchema = { type: "object", properties: {} }, followUp = [], wisdom = () => "Result returned — summarize key fields for the user.") => ({
7
- name,
14
+ const quant = (c) => ({
15
+ name: c.name,
8
16
  category: "quant",
9
- description,
10
- triggers,
11
- inputSchema,
12
- handler: passthroughHandler(cli, argMap, { wisdom, followUp, confidence: "medium" }),
17
+ description: c.description,
18
+ whenToUse: c.whenToUse,
19
+ triggers: c.triggers,
20
+ inputSchema: c.inputSchema ?? { type: "object", properties: {} },
21
+ outputSchema: c.outputSchema ?? {
22
+ type: "object",
23
+ properties: {
24
+ result: { type: "object", description: "CLI passthrough — see the named CLI command for the exact shape." },
25
+ },
26
+ },
27
+ examples: c.examples,
28
+ pitfalls: c.pitfalls,
29
+ composeWith: c.composeWith,
30
+ jargon: c.jargon,
31
+ handler: passthroughHandler(c.cli, c.argMap ?? (() => []), {
32
+ wisdom: c.wisdom ?? (() => "Result returned — summarize key fields for the user."),
33
+ followUp: c.followUp ?? [],
34
+ confidence: "medium",
35
+ }),
13
36
  });
14
37
  export const quantTools = [
15
- quant("mneme.quant.drawdown", "Worst losing streaks — periods of pure firefighting. Use WHEN user asks: 'when were our worst weeks?', 'firefighting periods', 'drawdown'.", ["worst weeks of firefighting", "drawdown"], "drawdown"),
16
- quant("mneme.quant.alpha", "Per-author 'alpha' — Kelly-criterion allocation across tech-debt items. Use WHEN user asks: 'who delivers alpha?', 'allocation of effort'.", ["who delivers alpha", "Kelly allocation"], "alpha", (a) => (a["items"] ? ["--items", String(a["items"])] : []), { type: "object", properties: { items: { type: "string", description: "JSON file path with items" } } }),
17
- quant("mneme.quant.backtest", "Validate any binary predictor against historical outcomes. Use WHEN user asks: 'backtest this metric', 'validate predictor'.", ["backtest this metric", "validate predictor"], "backtest", (a) => (a["samples"] ? ["--samples", String(a["samples"])] : []), { type: "object", properties: { samples: { type: "string" } } }),
18
- quant("mneme.quant.black_swan", "Tail-risk scan rare but catastrophic file patterns. Use WHEN user asks: 'tail risks', 'black swan candidates'.", ["tail risks", "black swan candidates"], "black-swan"),
19
- quant("mneme.quant.insider_trading", "Authors who repeatedly fix bugs they introduced themselves. Use WHEN user asks: 'who fixes their own bugs?', 'insider trading patterns'.", ["who fixes their own bugs", "insider patterns"], "insider-trading"),
20
- quant("mneme.quant.moneyball", "Undervalued contributors high impact, low LOC volume. Use WHEN user asks: 'who is undervalued?', 'moneyball contributors'.", ["undervalued contributors", "moneyball"], "moneyball", (a) => (a["topN"] ? ["--top", String(a["topN"])] : []), { type: "object", properties: { topN: { type: "number" } } }, ["mneme.people.influence"]),
21
- quant("mneme.quant.greek", "Codebase Greeks Γ Θ) sensitivity analysis across files. Use WHEN user asks: 'sensitivity analysis', 'codebase Greeks'.", ["sensitivity Greeks", "Δ Γ Θ"], "greek"),
22
- quant("mneme.quant.correlation_matrix", "Hidden behavioral coupling between files (no static deps needed). Use WHEN user asks: 'which files move together?', 'behavioral coupling'.", ["files that change together", "behavioral coupling"], "correlation-matrix"),
23
- quant("mneme.quant.implied_volatility", "Project chaos predicted from commit-message tone. Use WHEN user asks: 'how chaotic is this project?', 'implied volatility from tone'.", ["chaos from commit tone", "implied volatility"], "implied-volatility"),
24
- quant("mneme.quant.tax_loss_harvest", "Dead-code candidates — delete to offset technical debt. Use WHEN user asks: 'what can we delete?', 'dead code', 'tax loss harvest'.", ["what can we delete", "dead code candidates"], "tax-loss-harvest", () => [], { type: "object", properties: {} }, ["mneme.insights.fossil", "mneme.insights.runaway"]),
38
+ quant({
39
+ name: "mneme.quant.drawdown",
40
+ description: "Find the worst losing streaks in the repo's history periods when the team " +
41
+ "spent more time fixing regressions than shipping features. Returns the " +
42
+ "deepest valleys (most consecutive 'putting-out-fires' commits) with start/end " +
43
+ "dates and what the team was firefighting. Use WHEN the user asks 'when were " +
44
+ "our worst weeks?' or wants to understand historical incident clusters.",
45
+ whenToUse: "User wants to identify historical periods of pure firefighting / regression-fixing useful for postmortems and capacity planning.",
46
+ triggers: ["worst weeks of firefighting", "drawdown", "when were we firefighting"],
47
+ cli: "drawdown",
48
+ jargon: {
49
+ drawdown: "Borrowed from finance — the size of the largest peak-to-valley drop in a portfolio. Here: the longest stretch of pure remediation work between two productive peaks.",
50
+ },
51
+ examples: [
52
+ {
53
+ userQuery: "When were our worst firefighting weeks?",
54
+ expectedOutput: "Returns the top 3-5 drawdown periods with: startDate, endDate, durationDays, dominantTopic (e.g., 'auth bugs'), and recoveredAt commit hash.",
55
+ },
56
+ ],
57
+ pitfalls: [
58
+ "Heuristic: depends on commit-message tone (revert/hotfix/fix words). A team that always says 'patch' or 'tweak' will be under-counted.",
59
+ "Doesn't account for incident severity — a 1-day P0 firedrill won't show up if commit count is small.",
60
+ ],
61
+ composeWith: ["mneme.insights.regret", "mneme.insights.premortem"],
62
+ }),
63
+ quant({
64
+ name: "mneme.quant.alpha",
65
+ description: "Per-author 'alpha' score — risk-adjusted impact-per-unit-effort. Measures " +
66
+ "which contributors deliver disproportionate value relative to commit count " +
67
+ "(e.g., a small fix that prevents a class of regressions counts MORE than 1000 " +
68
+ "lines of routine refactor). Use WHEN the user asks 'who delivers the most " +
69
+ "leverage?' or wants to challenge a 'most LOC = best engineer' assumption.",
70
+ whenToUse: "User wants to identify high-leverage contributors who deliver outsized impact relative to commit volume.",
71
+ triggers: ["who delivers alpha", "Kelly allocation", "high-leverage contributors"],
72
+ cli: "alpha",
73
+ jargon: {
74
+ alpha: "Wall Street: returns earned ABOVE the market baseline — i.e., skill, not just exposure. Here: an author's impact relative to what their commit volume alone would predict.",
75
+ "Kelly criterion": "A betting formula that sizes positions optimally given win probability + payoff. We use it to allocate 'effort budget' across tech-debt items based on each item's regret-history-derived expected payoff.",
76
+ },
77
+ examples: [
78
+ {
79
+ userQuery: "Who on the team delivers the most leverage per commit?",
80
+ args: { items: ".mneme/tech-debt.json" },
81
+ expectedOutput: "Returns each author with alpha (real impact - commit-count baseline), risk-adjusted alpha (alpha / volatility), and rank.",
82
+ },
83
+ ],
84
+ pitfalls: [
85
+ "Requires `items` (a JSON of tech-debt scope items) for the Kelly allocation portion — alpha-per-author works without it.",
86
+ "Doesn't capture invisible work (mentoring, code review, design docs) — those don't show up in commits.",
87
+ ],
88
+ composeWith: ["mneme.people.influence", "mneme.quant.moneyball"],
89
+ argMap: (a) => (a["items"] ? ["--items", String(a["items"])] : []),
90
+ inputSchema: {
91
+ type: "object",
92
+ properties: {
93
+ items: {
94
+ type: "string",
95
+ description: "Optional JSON file path with tech-debt scope items for Kelly-criterion allocation.",
96
+ },
97
+ },
98
+ },
99
+ }),
100
+ quant({
101
+ name: "mneme.quant.backtest",
102
+ description: "Validate any binary predictor (e.g., 'commits with > 5 reverts ⇒ regression') " +
103
+ "against historical outcomes. Returns precision / recall / F1 / Brier score / " +
104
+ "calibration curve so you can tell whether a heuristic actually predicts what " +
105
+ "it claims, or just pattern-matches noise. Use WHEN the user wants to validate " +
106
+ "a metric or rule before depending on it in CI.",
107
+ whenToUse: "User has a 'commits with property X tend to be problematic' hypothesis and wants to test it against the repo's actual outcomes.",
108
+ triggers: ["backtest this metric", "validate predictor", "does this rule actually work"],
109
+ cli: "backtest",
110
+ jargon: {
111
+ backtest: "Trading-system validation: replay a strategy through historical data to see how it would have performed. Here: replay a heuristic through past commits to measure its accuracy.",
112
+ "Brier score": "A calibration metric for probabilistic predictions — measures how close 0.7 confidence is to actually being right 70% of the time. Lower is better.",
113
+ },
114
+ examples: [
115
+ {
116
+ userQuery: "Does the 'files touching auth + payments in same commit ⇒ risky' rule actually work?",
117
+ args: { samples: ".mneme/predictor-samples.json" },
118
+ expectedOutput: "Returns precision, recall, F1, Brier score, and a confusion matrix on historical labeled commits.",
119
+ },
120
+ ],
121
+ pitfalls: [
122
+ "Garbage-in, garbage-out — your samples file must label historical outcomes correctly, otherwise the score reflects label noise.",
123
+ "Doesn't extrapolate — a predictor that worked on the last 6 months may not work on the next 6 months.",
124
+ ],
125
+ composeWith: ["mneme.insights.premortem", "mneme.audit.conscience"],
126
+ argMap: (a) => (a["samples"] ? ["--samples", String(a["samples"])] : []),
127
+ inputSchema: {
128
+ type: "object",
129
+ properties: {
130
+ samples: {
131
+ type: "string",
132
+ description: "JSON file path with labeled historical samples (predicted vs actual).",
133
+ },
134
+ },
135
+ },
136
+ }),
137
+ quant({
138
+ name: "mneme.quant.black_swan",
139
+ description: "Tail-risk scan — identify rare-but-catastrophic patterns in the repo " +
140
+ "(e.g., a single file that, when broken, has historically caused 10× the " +
141
+ "incident response of any other). Returns files ranked by tail-risk weight " +
142
+ "(probability × impact). Use WHEN the user asks 'what could blow up?' or " +
143
+ "wants the inverse-of-routine risk view.",
144
+ whenToUse: "User wants to find rare but catastrophic risk hotspots — files / areas where past failures had outsized blast radius.",
145
+ triggers: ["tail risks", "black swan candidates", "what could blow up"],
146
+ cli: "black-swan",
147
+ jargon: {
148
+ "black swan": "Nassim Taleb's term for a rare event that's nearly impossible to predict but has massive impact. Here: a file/area whose past failures had blast radius far above the median.",
149
+ "tail risk": "Risk concentrated in the unlikely-but-extreme outcomes (the 'tails' of a distribution), as opposed to the common-case middle.",
150
+ },
151
+ examples: [
152
+ {
153
+ userQuery: "What files in our repo are most likely to cause a major incident if they break?",
154
+ expectedOutput: "Top 5-10 files ranked by tail-risk score: each with past-incident count, average blast radius (files affected per incident), and recovery time.",
155
+ },
156
+ ],
157
+ pitfalls: [
158
+ "Past behavior ≠ future risk. A new feature module won't appear in tail-risk results no matter how risky it actually is.",
159
+ "Bias toward old, frequently-touched files — newly-rewritten modules look 'safe' until they aren't.",
160
+ ],
161
+ composeWith: ["mneme.audit.conscience", "mneme.insights.premortem"],
162
+ }),
163
+ quant({
164
+ name: "mneme.quant.insider_trading",
165
+ description: "Detect authors who repeatedly fix bugs they introduced themselves — the " +
166
+ "'creating their own work' anti-pattern. Returns each author with: bugs " +
167
+ "introduced, bugs they personally fixed, and the ratio (high = self-correcting, " +
168
+ "very high = possibly intentional churn). Use WHEN the user asks about " +
169
+ "engineering quality or wants to flag busy-but-not-productive contributors.",
170
+ whenToUse: "User wants to identify authors with a high self-introduced-bug-fix ratio (often a sign of rushed shipping or unclear specs).",
171
+ triggers: ["who fixes their own bugs", "insider patterns", "self-correcting commits"],
172
+ cli: "insider-trading",
173
+ jargon: {
174
+ "insider trading": "Wall Street: profiting from non-public knowledge of one's own actions. Here (re-purposed metaphor): an author 'profits' from their own future bugs by fixing what they introduced — busy work that LOOKS productive.",
175
+ },
176
+ examples: [
177
+ {
178
+ userQuery: "Is anyone on the team mostly fixing bugs they introduced?",
179
+ expectedOutput: "Returns each author with: bugsIntroduced, bugsFixed, selfFixRatio (selfBugsFixed / bugsIntroduced), and recentExamples (commit pairs).",
180
+ },
181
+ ],
182
+ pitfalls: [
183
+ "A high ratio isn't always bad — senior engineers fix their own subtle bugs faster than junior ones could. Read in context.",
184
+ "Depends on linking 'introduce' commit ↔ 'fix' commit, which uses heuristic overlap (file + nearby lines + temporal proximity). False positives possible.",
185
+ ],
186
+ composeWith: ["mneme.people.atrophy", "mneme.insights.regret"],
187
+ }),
188
+ quant({
189
+ name: "mneme.quant.moneyball",
190
+ description: "Surface undervalued contributors — high impact, low LOC volume. The opposite " +
191
+ "of LOC-counting culture: returns engineers whose small surgical changes prevent " +
192
+ "regressions, fix root causes, or improve architecture per-commit far more than " +
193
+ "the team median. Use WHEN the user asks 'who is undervalued?' or wants " +
194
+ "promotion / retention candidates not visible in commit volume.",
195
+ whenToUse: "User wants to identify low-LOC, high-impact contributors hidden by volume-based metrics — promotion / retention signal.",
196
+ triggers: ["undervalued contributors", "moneyball", "high impact low LOC"],
197
+ cli: "moneyball",
198
+ jargon: {
199
+ moneyball: "From Michael Lewis's book about the Oakland A's baseball team finding undervalued players via stats nobody else looked at. Here: finding engineers whose value isn't captured by LOC or commit count.",
200
+ },
201
+ examples: [
202
+ {
203
+ userQuery: "Who on the team delivers the most value but writes the fewest lines?",
204
+ args: { topN: 5 },
205
+ expectedOutput: "Returns top-5 'moneyball' authors with: impactScore, locTotal, impactPerLoc ratio, signature contributions (commit hashes).",
206
+ },
207
+ ],
208
+ pitfalls: [
209
+ "Impact is heuristic — derived from regret avoidance, file criticality, and commit reach. Not the ground truth on engineering value.",
210
+ "Underweights work that's high-volume by necessity (e.g., test infrastructure, refactors).",
211
+ ],
212
+ composeWith: ["mneme.people.influence", "mneme.quant.alpha"],
213
+ argMap: (a) => (a["topN"] ? ["--top", String(a["topN"])] : []),
214
+ inputSchema: { type: "object", properties: { topN: { type: "number", description: "How many candidates to return. Default 10." } } },
215
+ }),
216
+ quant({
217
+ name: "mneme.quant.greek",
218
+ description: "Codebase 'Greeks' (Δ delta, Γ gamma, Θ theta) — sensitivity analysis across " +
219
+ "files. Δ = how much each file 'moves' (changes) per unit time. Γ = how the " +
220
+ "rate of change is changing (acceleration). Θ = decay — how fast knowledge " +
221
+ "ages out. Use WHEN the user wants to understand WHICH parts of the codebase " +
222
+ "are stable, accelerating, or atrophying.",
223
+ whenToUse: "User wants per-file sensitivity metrics: which files are changing fast, accelerating, or atrophying.",
224
+ triggers: ["sensitivity Greeks", "Δ Γ Θ", "which files are changing fast"],
225
+ cli: "greek",
226
+ jargon: {
227
+ delta: "Options trading: Δ = how much an option's price moves per $1 move in the underlying. Here: how much a file changes per unit time (commits/week or LOC/week).",
228
+ gamma: "Options trading: Γ = the RATE at which Δ changes — second-derivative sensitivity. Here: file-change acceleration. Positive Γ = a file getting noisier; negative Γ = settling down.",
229
+ theta: "Options trading: Θ = time-decay — how much value an option loses per day, all else equal. Here: knowledge atrophy — how fast a file's expertise ages out (Ebbinghaus curve).",
230
+ },
231
+ examples: [
232
+ {
233
+ userQuery: "Which files are changing fastest right now and which are atrophying?",
234
+ expectedOutput: "Returns per-file: delta (commits/week), gamma (acceleration), theta (knowledge half-life in weeks). Sortable by any.",
235
+ },
236
+ ],
237
+ pitfalls: [
238
+ "Greeks are MOMENTUM indicators — they tell you direction, not whether the change is good or bad.",
239
+ "Theta uses a default 90-day half-life; configurable per repo via .mneme/config.",
240
+ ],
241
+ composeWith: ["mneme.people.atrophy", "mneme.quant.implied_volatility"],
242
+ }),
243
+ quant({
244
+ name: "mneme.quant.correlation_matrix",
245
+ description: "Find hidden BEHAVIORAL coupling between files — pairs that tend to change " +
246
+ "together even though they have no static dependency (no import, no shared " +
247
+ "type). Returns a ranked list of file pairs with co-change frequency + " +
248
+ "correlation strength. Use WHEN the user wants to find architectural debt " +
249
+ "static analysis can't see.",
250
+ whenToUse: "User wants to find file pairs that move together in commits despite having no compile-time dependency — hidden coupling.",
251
+ triggers: ["files that change together", "behavioral coupling", "hidden dependencies"],
252
+ cli: "correlation-matrix",
253
+ jargon: {
254
+ "correlation matrix": "Statistics: a table of pairwise correlations between variables. Here: between files, where 'observation' = 'commit'. High correlation between files A and B = they tend to change in the same commit.",
255
+ },
256
+ examples: [
257
+ {
258
+ userQuery: "Which files in our repo always seem to change together?",
259
+ expectedOutput: "Top file pairs by correlation: { fileA, fileB, coChangeCount, correlation (0-1), staticallyDependent: boolean }.",
260
+ },
261
+ ],
262
+ pitfalls: [
263
+ "Correlation isn't causation — two files may co-change because of a 3rd file (e.g., they both depend on a shared schema).",
264
+ "Sensitive to commit granularity — repos that batch many concerns per commit will have inflated correlations.",
265
+ ],
266
+ composeWith: ["mneme.insights.cluster", "mneme.insights.network"],
267
+ }),
268
+ quant({
269
+ name: "mneme.quant.implied_volatility",
270
+ description: "Estimate project chaos from commit-message TONE (urgency words, frustration " +
271
+ "words, 'temp / hack / fixme' frequency). Returns a daily volatility series — " +
272
+ "high = stressful periods (firefighting / deadline crunch), low = calm flow. " +
273
+ "Use WHEN the user wants a leading indicator of team stress that doesn't " +
274
+ "depend on incident reports.",
275
+ whenToUse: "User wants a tone-derived stress signal independent of incident tickets — daily volatility from commit messages.",
276
+ triggers: ["chaos from commit tone", "implied volatility", "team stress signal"],
277
+ cli: "implied-volatility",
278
+ jargon: {
279
+ "implied volatility": "Options trading: market's forward-looking estimate of how much a price will move, derived from option prices. Here: forward-looking chaos estimate derived from how the team is TALKING in commits, not what they're shipping.",
280
+ },
281
+ examples: [
282
+ {
283
+ userQuery: "When was our team most stressed based on how we wrote commits?",
284
+ expectedOutput: "Returns a daily series: { date, volatility (0-1), topUrgencyWords, sampleCommitSubject } with peaks and rolling 7-day average.",
285
+ },
286
+ ],
287
+ pitfalls: [
288
+ "Tone-based — sarcasm, dry humor, and culture-specific phrasing can fool it.",
289
+ "Lags the actual stressful event by 1-3 days (people commit AFTER firefighting, not during).",
290
+ ],
291
+ composeWith: ["mneme.quant.drawdown", "mneme.quality.heartbeat"],
292
+ }),
293
+ quant({
294
+ name: "mneme.quant.tax_loss_harvest",
295
+ description: "Surface dead-code candidates — code that hasn't been touched in N months, " +
296
+ "is reachable but never imported, or whose tests don't actually exercise it. " +
297
+ "Returns deletion candidates ranked by 'safe-to-delete' confidence + " +
298
+ "estimated LOC savings. Use WHEN the user asks 'what can we delete?' or " +
299
+ "wants to offset technical debt by removing surface area.",
300
+ whenToUse: "User wants concrete dead-code deletion candidates with safety ratings — to reduce surface area / pay down debt.",
301
+ triggers: ["what can we delete", "dead code candidates", "tax loss harvest"],
302
+ cli: "tax-loss-harvest",
303
+ jargon: {
304
+ "tax loss harvesting": "Investing: deliberately selling losing positions to offset capital gains tax. Here (re-purposed): deliberately deleting dead/legacy code to offset 'cognitive tax' of carrying it.",
305
+ },
306
+ examples: [
307
+ {
308
+ userQuery: "What chunks of our codebase can we safely delete?",
309
+ expectedOutput: "Top deletion candidates: { path, lastTouched, importedBy, testedBy, safeDeleteScore (0-1), locSaved }.",
310
+ },
311
+ ],
312
+ pitfalls: [
313
+ "'Reachable but never imported' is heuristic — dynamic imports, plugin systems, and runtime reflection can fool it.",
314
+ "Always run the test suite + grep for path strings before deleting; the safeDeleteScore is a recommendation, not a guarantee.",
315
+ ],
316
+ composeWith: ["mneme.insights.fossil", "mneme.insights.runaway"],
317
+ }),
25
318
  ];
26
319
  //# sourceMappingURL=quant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quant.js","sourceRoot":"","sources":["../../src/tools/quant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,KAAK,GAAG,CACZ,IAAY,EACZ,WAAmB,EACnB,QAAkB,EAClB,GAAW,EACX,SAAmD,GAAG,EAAE,CAAC,EAAE,EAC3D,cAAwC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAC1E,WAAqB,EAAE,EACvB,SAAiC,GAAG,EAAE,CAAC,sDAAsD,EAClF,EAAE,CAAC,CAAC;IACf,IAAI;IACJ,QAAQ,EAAE,OAAO;IACjB,WAAW;IACX,QAAQ;IACR,WAAW;IACX,OAAO,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,KAAK,CACH,sBAAsB,EACtB,4IAA4I,EAC5I,CAAC,6BAA6B,EAAE,UAAU,CAAC,EAC3C,UAAU,CACX;IACD,KAAK,CACH,mBAAmB,EACnB,4IAA4I,EAC5I,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,EAC1C,OAAO,EACP,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAC1D,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,EAAE,EAAE,CACxG;IACD,KAAK,CACH,sBAAsB,EACtB,8HAA8H,EAC9H,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,EAC9C,UAAU,EACV,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAChE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAChE;IACD,KAAK,CACH,wBAAwB,EACxB,kHAAkH,EAClH,CAAC,YAAY,EAAE,uBAAuB,CAAC,EACvC,YAAY,CACb;IACD,KAAK,CACH,6BAA6B,EAC7B,0IAA0I,EAC1I,CAAC,0BAA0B,EAAE,kBAAkB,CAAC,EAChD,iBAAiB,CAClB;IACD,KAAK,CACH,uBAAuB,EACvB,8HAA8H,EAC9H,CAAC,0BAA0B,EAAE,WAAW,CAAC,EACzC,WAAW,EACX,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACtD,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAC5D,CAAC,wBAAwB,CAAC,CAC3B;IACD,KAAK,CACH,mBAAmB,EACnB,6HAA6H,EAC7H,CAAC,oBAAoB,EAAE,OAAO,CAAC,EAC/B,OAAO,CACR;IACD,KAAK,CACH,gCAAgC,EAChC,4IAA4I,EAC5I,CAAC,4BAA4B,EAAE,qBAAqB,CAAC,EACrD,oBAAoB,CACrB;IACD,KAAK,CACH,gCAAgC,EAChC,uIAAuI,EACvI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,EAChD,oBAAoB,CACrB;IACD,KAAK,CACH,8BAA8B,EAC9B,qIAAqI,EACrI,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,EAC9C,kBAAkB,EAClB,GAAG,EAAE,CAAC,EAAE,EACR,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAClC,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CACpD;CACF,CAAC"}
1
+ {"version":3,"file":"quant.js","sourceRoot":"","sources":["../../src/tools/quant.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mneme-ai/mcp",
3
- "version": "1.17.6",
3
+ "version": "1.18.0",
4
4
  "description": "MCP server that exposes Mneme to Claude Code, Cursor, Continue, and other AI clients",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -37,8 +37,8 @@
37
37
  "node": ">=22.13.0 <25.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@mneme-ai/core": "1.17.6",
41
- "@mneme-ai/embeddings": "1.17.6",
40
+ "@mneme-ai/core": "1.18.0",
41
+ "@mneme-ai/embeddings": "1.18.0",
42
42
  "@modelcontextprotocol/sdk": "^1.0.4"
43
43
  }
44
44
  }