@gonzih/debate-coach 0.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.
- package/LICENSE +21 -0
- package/README.md +250 -0
- package/SKILL.md +91 -0
- package/dist/claude.d.ts +26 -0
- package/dist/claude.d.ts.map +1 -0
- package/dist/claude.js +285 -0
- package/dist/claude.js.map +1 -0
- package/dist/database.d.ts +19 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +157 -0
- package/dist/database.js.map +1 -0
- package/dist/fallacies.d.ts +11 -0
- package/dist/fallacies.d.ts.map +1 -0
- package/dist/fallacies.js +207 -0
- package/dist/fallacies.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +571 -0
- package/dist/index.js.map +1 -0
- package/dist/session.d.ts +22 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +104 -0
- package/dist/session.js.map +1 -0
- package/dist/topics.d.ts +8 -0
- package/dist/topics.d.ts.map +1 -0
- package/dist/topics.js +463 -0
- package/dist/topics.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/llms.txt +104 -0
- package/package.json +50 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { createSession, getSession, addArgument, setSteeleman, flipSides, setSynthesis, getSessionStats, } from "./session.js";
|
|
6
|
+
import { refineProposition, scoreArgument, generateSteelman, generateSynthesis, scaffoldArgument, formatScoredArgument, } from "./claude.js";
|
|
7
|
+
import { saveDebate, getProgressReport } from "./database.js";
|
|
8
|
+
import { filterTopics, CATEGORIES, AGE_GROUPS } from "./topics.js";
|
|
9
|
+
import { FALLACIES } from "./fallacies.js";
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: "debate-coach",
|
|
12
|
+
version: "0.1.0",
|
|
13
|
+
});
|
|
14
|
+
// ─── start_debate ──────────────────────────────────────────────────────────
|
|
15
|
+
server.tool("start_debate", "Start a new debate session. The student proposes a topic (or leaves it blank to pick from the curated list) and the AI frames it as a proper debate proposition. Returns session ID and instructions.", {
|
|
16
|
+
profileId: z.string().describe("Unique identifier for the student/user"),
|
|
17
|
+
topic: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Topic or proposition to debate. Leave blank to get topic suggestions."),
|
|
21
|
+
position: z
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe("The position the student wants to argue first (e.g., 'FOR', 'AGAINST'). Defaults to FOR."),
|
|
25
|
+
}, async ({ profileId, topic, position }) => {
|
|
26
|
+
if (!topic) {
|
|
27
|
+
const suggestions = filterTopics().slice(0, 10);
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: "text",
|
|
32
|
+
text: `No topic provided. Use \`get_topic_list\` to browse 50+ curated debate topics, or provide your own topic.\n\nHere are 10 popular topics to get you started:\n\n${suggestions.map((t, i) => `${i + 1}. **${t.title}** — "${t.proposition}"`).join("\n")}\n\nCall \`start_debate\` again with a \`topic\` parameter.`,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Refine the proposition
|
|
38
|
+
const refined = await refineProposition(topic);
|
|
39
|
+
const finalPosition = position ?? "FOR the proposition";
|
|
40
|
+
const session = createSession({
|
|
41
|
+
profileId,
|
|
42
|
+
topic,
|
|
43
|
+
proposition: refined.proposition,
|
|
44
|
+
position: finalPosition,
|
|
45
|
+
});
|
|
46
|
+
const instructions = [
|
|
47
|
+
`🎯 **Debate Session Started!**`,
|
|
48
|
+
``,
|
|
49
|
+
`**Proposition:** "${refined.proposition}"`,
|
|
50
|
+
`**${refined.explanation}**`,
|
|
51
|
+
``,
|
|
52
|
+
`**Your position:** You are arguing ${finalPosition}`,
|
|
53
|
+
``,
|
|
54
|
+
`**How this works:**`,
|
|
55
|
+
`1. Submit your 3-5 strongest arguments using \`submit_argument\``,
|
|
56
|
+
`2. Each argument will be scored (0-10) and checked for logical fallacies`,
|
|
57
|
+
`3. After at least 3 arguments, call \`get_steelman\` to see the strongest opposing case`,
|
|
58
|
+
`4. Then call \`flip_sides\` — now argue the OPPOSITE position`,
|
|
59
|
+
`5. Submit 3-5 arguments for the other side`,
|
|
60
|
+
`6. Call \`complete_debate\` to receive your final synthesis`,
|
|
61
|
+
``,
|
|
62
|
+
`This is how lawyers and scientists think. Let's begin — make your first argument!`,
|
|
63
|
+
``,
|
|
64
|
+
`**Session ID:** \`${session.id}\``,
|
|
65
|
+
].join("\n");
|
|
66
|
+
return {
|
|
67
|
+
content: [
|
|
68
|
+
{
|
|
69
|
+
type: "text",
|
|
70
|
+
text: instructions,
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
// ─── submit_argument ───────────────────────────────────────────────────────
|
|
76
|
+
server.tool("submit_argument", "Submit an argument for the current debate. The AI scores it on evidence, logic, relevance, and originality (0-10), detects logical fallacies, and provides feedback.", {
|
|
77
|
+
sessionId: z.string().describe("The session ID from start_debate"),
|
|
78
|
+
argument: z
|
|
79
|
+
.string()
|
|
80
|
+
.min(10)
|
|
81
|
+
.describe("Your argument text (at least one complete sentence)"),
|
|
82
|
+
}, async ({ sessionId, argument }) => {
|
|
83
|
+
const session = getSession(sessionId);
|
|
84
|
+
if (!session) {
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: "text",
|
|
89
|
+
text: `Session \`${sessionId}\` not found. Please start a new debate with \`start_debate\`.`,
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (session.phase === "FLIP_READY" || session.phase === "COMPLETED") {
|
|
95
|
+
return {
|
|
96
|
+
content: [
|
|
97
|
+
{
|
|
98
|
+
type: "text",
|
|
99
|
+
text: session.phase === "FLIP_READY"
|
|
100
|
+
? "You've already made your PRO arguments. Call `flip_sides` to switch positions, then submit your CON arguments."
|
|
101
|
+
: "This debate is complete. Call `complete_debate` for your final synthesis or start a new one.",
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const isProPhase = session.phase === "PRO_ARGUMENTS" || session.phase === "STEELMAN_READY";
|
|
107
|
+
const previousArguments = isProPhase
|
|
108
|
+
? session.proArguments.map(a => a.text)
|
|
109
|
+
: session.conArguments.map(a => a.text);
|
|
110
|
+
const scored = await scoreArgument({
|
|
111
|
+
proposition: session.proposition,
|
|
112
|
+
position: session.currentPosition,
|
|
113
|
+
argument,
|
|
114
|
+
previousArguments,
|
|
115
|
+
});
|
|
116
|
+
const updatedSession = addArgument(sessionId, scored);
|
|
117
|
+
const phaseArgs = isProPhase
|
|
118
|
+
? updatedSession.proArguments
|
|
119
|
+
: updatedSession.conArguments;
|
|
120
|
+
const argNumber = phaseArgs.length;
|
|
121
|
+
const phase = isProPhase ? "PRO" : "CON";
|
|
122
|
+
const formattedScore = formatScoredArgument(scored);
|
|
123
|
+
let nextStepHint = "";
|
|
124
|
+
if (argNumber < 3) {
|
|
125
|
+
nextStepHint = `\n\n📝 **Argument ${argNumber}/5 submitted.** Submit at least ${3 - argNumber} more argument${3 - argNumber > 1 ? "s" : ""} before you can see the steel-man.`;
|
|
126
|
+
}
|
|
127
|
+
else if (argNumber >= 3 && isProPhase) {
|
|
128
|
+
nextStepHint = `\n\n✅ **Argument ${argNumber}/5 submitted.** You've made enough arguments! You can:\n- Submit more arguments (up to 5)\n- Call \`get_steelman\` to see the strongest opposing case`;
|
|
129
|
+
}
|
|
130
|
+
else if (argNumber < 3 && !isProPhase) {
|
|
131
|
+
nextStepHint = `\n\n📝 **CON Argument ${argNumber}/5 submitted.** Submit ${3 - argNumber} more to complete the flip challenge.`;
|
|
132
|
+
}
|
|
133
|
+
else if (argNumber >= 3 && !isProPhase) {
|
|
134
|
+
nextStepHint = `\n\n🎉 **CON Argument ${argNumber}/5 submitted.** Excellent work arguing both sides! Call \`complete_debate\` for your final synthesis.`;
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
content: [
|
|
138
|
+
{
|
|
139
|
+
type: "text",
|
|
140
|
+
text: `## Argument ${argNumber} (${phase}) — Analysis\n\n` +
|
|
141
|
+
`> "${argument.length > 150 ? argument.substring(0, 150) + "..." : argument}"\n\n` +
|
|
142
|
+
formattedScore +
|
|
143
|
+
nextStepHint,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
});
|
|
148
|
+
// ─── get_steelman ──────────────────────────────────────────────────────────
|
|
149
|
+
server.tool("get_steelman", "After submitting at least 3 PRO arguments, call this to see the strongest possible case for the opposing side. This prepares you for the flip challenge.", {
|
|
150
|
+
sessionId: z.string().describe("The session ID from start_debate"),
|
|
151
|
+
}, async ({ sessionId }) => {
|
|
152
|
+
const session = getSession(sessionId);
|
|
153
|
+
if (!session) {
|
|
154
|
+
return {
|
|
155
|
+
content: [
|
|
156
|
+
{
|
|
157
|
+
type: "text",
|
|
158
|
+
text: `Session \`${sessionId}\` not found. Start a new debate with \`start_debate\`.`,
|
|
159
|
+
},
|
|
160
|
+
],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (session.proArguments.length < 3) {
|
|
164
|
+
return {
|
|
165
|
+
content: [
|
|
166
|
+
{
|
|
167
|
+
type: "text",
|
|
168
|
+
text: `You need at least 3 arguments before getting the steel-man. You've submitted ${session.proArguments.length} so far. Keep going!`,
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
if (session.phase === "CON_ARGUMENTS" || session.phase === "SYNTHESIS_READY") {
|
|
174
|
+
return {
|
|
175
|
+
content: [
|
|
176
|
+
{
|
|
177
|
+
type: "text",
|
|
178
|
+
text: session.steelman ??
|
|
179
|
+
"You've already flipped sides. Keep submitting your CON arguments!",
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const result = await generateSteelman(session);
|
|
185
|
+
setSteeleman(sessionId, result.steelman, result.keyCounterArguments);
|
|
186
|
+
const output = [
|
|
187
|
+
`## 🔄 The Steel-Man: Strongest Case AGAINST Your Position`,
|
|
188
|
+
``,
|
|
189
|
+
`**Proposition:** "${session.proposition}"`,
|
|
190
|
+
``,
|
|
191
|
+
`Here is the most compelling case *against* what you just argued. This is what a skilled opposing debater would say:`,
|
|
192
|
+
``,
|
|
193
|
+
`---`,
|
|
194
|
+
``,
|
|
195
|
+
result.steelman,
|
|
196
|
+
``,
|
|
197
|
+
`---`,
|
|
198
|
+
``,
|
|
199
|
+
`### Key Counter-Arguments You'll Face:`,
|
|
200
|
+
``,
|
|
201
|
+
result.keyCounterArguments.map((a, i) => `${i + 1}. ${a}`).join("\n"),
|
|
202
|
+
``,
|
|
203
|
+
`---`,
|
|
204
|
+
``,
|
|
205
|
+
`🔄 **Now it's your turn to argue AGAINST the proposition.**`,
|
|
206
|
+
`Call \`flip_sides\` to accept the challenge — argue the side you just saw steel-manned.`,
|
|
207
|
+
`This is how lawyers train. This is how scientists think.`,
|
|
208
|
+
].join("\n");
|
|
209
|
+
return {
|
|
210
|
+
content: [{ type: "text", text: output }],
|
|
211
|
+
};
|
|
212
|
+
});
|
|
213
|
+
// ─── flip_sides ────────────────────────────────────────────────────────────
|
|
214
|
+
server.tool("flip_sides", "Flip to argue the opposing side. After seeing the steel-man, you must now argue against your original position as convincingly as possible.", {
|
|
215
|
+
sessionId: z.string().describe("The session ID from start_debate"),
|
|
216
|
+
}, async ({ sessionId }) => {
|
|
217
|
+
const session = getSession(sessionId);
|
|
218
|
+
if (!session) {
|
|
219
|
+
return {
|
|
220
|
+
content: [
|
|
221
|
+
{
|
|
222
|
+
type: "text",
|
|
223
|
+
text: `Session \`${sessionId}\` not found.`,
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
if (session.phase !== "FLIP_READY") {
|
|
229
|
+
const msg = session.phase === "PRO_ARGUMENTS"
|
|
230
|
+
? "You need to submit at least 3 arguments and then call `get_steelman` before flipping."
|
|
231
|
+
: session.phase === "STEELMAN_READY"
|
|
232
|
+
? "Call `get_steelman` first to see the opposing case, then flip."
|
|
233
|
+
: session.phase === "CON_ARGUMENTS" || session.phase === "SYNTHESIS_READY"
|
|
234
|
+
? "You've already flipped! Keep submitting CON arguments."
|
|
235
|
+
: "Debate is complete. Start a new one!";
|
|
236
|
+
return {
|
|
237
|
+
content: [{ type: "text", text: msg }],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const updatedSession = flipSides(sessionId);
|
|
241
|
+
const output = [
|
|
242
|
+
`## 🔄 Sides Flipped!`,
|
|
243
|
+
``,
|
|
244
|
+
`**Proposition:** "${updatedSession.proposition}"`,
|
|
245
|
+
``,
|
|
246
|
+
`You are NOW arguing: **${updatedSession.currentPosition}**`,
|
|
247
|
+
``,
|
|
248
|
+
`This is the hard part. You just spent time building the FOR case — now dismantle it.`,
|
|
249
|
+
``,
|
|
250
|
+
`**Your challenge:** Submit 3-5 arguments AGAINST the proposition. The best version of`,
|
|
251
|
+
`the opposing case isn't just pointing out problems — it's making a genuinely compelling`,
|
|
252
|
+
`alternative argument.`,
|
|
253
|
+
``,
|
|
254
|
+
`**Hints from the steel-man you just read:**`,
|
|
255
|
+
updatedSession.keyCounterArguments
|
|
256
|
+
? updatedSession.keyCounterArguments.map(a => `- ${a}`).join("\n")
|
|
257
|
+
: "Use the counter-arguments from the steel-man as starting points.",
|
|
258
|
+
``,
|
|
259
|
+
`Use \`submit_argument\` to make your first CON argument. Go!`,
|
|
260
|
+
].join("\n");
|
|
261
|
+
return {
|
|
262
|
+
content: [{ type: "text", text: output }],
|
|
263
|
+
};
|
|
264
|
+
});
|
|
265
|
+
// ─── complete_debate ───────────────────────────────────────────────────────
|
|
266
|
+
server.tool("complete_debate", "Finalize the debate session and receive a synthesis of both sides, what the strongest version of this debate looks like, and personalized feedback. Saves results to your progress history.", {
|
|
267
|
+
sessionId: z.string().describe("The session ID from start_debate"),
|
|
268
|
+
}, async ({ sessionId }) => {
|
|
269
|
+
const session = getSession(sessionId);
|
|
270
|
+
if (!session) {
|
|
271
|
+
return {
|
|
272
|
+
content: [
|
|
273
|
+
{
|
|
274
|
+
type: "text",
|
|
275
|
+
text: `Session \`${sessionId}\` not found.`,
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
if (session.proArguments.length === 0) {
|
|
281
|
+
return {
|
|
282
|
+
content: [
|
|
283
|
+
{
|
|
284
|
+
type: "text",
|
|
285
|
+
text: "You haven't submitted any arguments yet! Use `submit_argument` to make your case.",
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
// Generate synthesis
|
|
291
|
+
const synthesis = await generateSynthesis(session);
|
|
292
|
+
const finalSession = setSynthesis(sessionId, synthesis);
|
|
293
|
+
const stats = getSessionStats(finalSession);
|
|
294
|
+
// Save to database
|
|
295
|
+
saveDebate({
|
|
296
|
+
id: finalSession.id,
|
|
297
|
+
profileId: finalSession.profileId,
|
|
298
|
+
topic: finalSession.topic,
|
|
299
|
+
proposition: finalSession.proposition,
|
|
300
|
+
startedAt: finalSession.startedAt,
|
|
301
|
+
completed: true,
|
|
302
|
+
didFlip: finalSession.conArguments.length > 0,
|
|
303
|
+
proScore: stats.proScore,
|
|
304
|
+
conScore: stats.conScore,
|
|
305
|
+
fallaciesCaught: stats.fallaciesCaught,
|
|
306
|
+
fallaciesTotal: stats.fallaciesTotal,
|
|
307
|
+
arguments: [
|
|
308
|
+
...finalSession.proArguments,
|
|
309
|
+
...finalSession.conArguments,
|
|
310
|
+
],
|
|
311
|
+
synthesis,
|
|
312
|
+
});
|
|
313
|
+
const proScoreBar = scoreBar(stats.proScore, 10);
|
|
314
|
+
const conScoreBar = scoreBar(stats.conScore, 10);
|
|
315
|
+
const output = [
|
|
316
|
+
`## 🎓 Debate Complete!`,
|
|
317
|
+
``,
|
|
318
|
+
`**Proposition:** "${finalSession.proposition}"`,
|
|
319
|
+
``,
|
|
320
|
+
`### Your Performance`,
|
|
321
|
+
``,
|
|
322
|
+
`| Side | Arguments | Avg Score | |`,
|
|
323
|
+
`|------|-----------|-----------|--|`,
|
|
324
|
+
`| FOR | ${finalSession.proArguments.length} | ${stats.proScore}/10 | ${proScoreBar} |`,
|
|
325
|
+
`| AGAINST | ${finalSession.conArguments.length} | ${stats.conScore}/10 | ${conScoreBar} |`,
|
|
326
|
+
``,
|
|
327
|
+
`**Logical fallacies caught:** ${stats.fallaciesCaught}`,
|
|
328
|
+
`**Flip challenge:** ${finalSession.conArguments.length > 0 ? "✅ Completed" : "❌ Not attempted"}`,
|
|
329
|
+
``,
|
|
330
|
+
`---`,
|
|
331
|
+
``,
|
|
332
|
+
`### 🧠 Final Synthesis`,
|
|
333
|
+
``,
|
|
334
|
+
synthesis,
|
|
335
|
+
``,
|
|
336
|
+
`---`,
|
|
337
|
+
``,
|
|
338
|
+
`*Use \`get_progress\` with profileId \`${finalSession.profileId}\` to track your improvement over time.*`,
|
|
339
|
+
].join("\n");
|
|
340
|
+
return {
|
|
341
|
+
content: [{ type: "text", text: output }],
|
|
342
|
+
};
|
|
343
|
+
});
|
|
344
|
+
// ─── get_topic_list ────────────────────────────────────────────────────────
|
|
345
|
+
server.tool("get_topic_list", "Browse the curated list of 50+ debate topics. Filter by category or age group.", {
|
|
346
|
+
category: z
|
|
347
|
+
.string()
|
|
348
|
+
.optional()
|
|
349
|
+
.describe(`Filter by category. Options: ${CATEGORIES.join(", ")}`),
|
|
350
|
+
ageGroup: z
|
|
351
|
+
.string()
|
|
352
|
+
.optional()
|
|
353
|
+
.describe(`Filter by age group. Options: ${AGE_GROUPS.join(", ")}`),
|
|
354
|
+
difficulty: z
|
|
355
|
+
.enum(["easy", "medium", "hard"])
|
|
356
|
+
.optional()
|
|
357
|
+
.describe("Filter by difficulty level"),
|
|
358
|
+
}, async ({ category, ageGroup, difficulty }) => {
|
|
359
|
+
let topics = filterTopics(category, ageGroup);
|
|
360
|
+
if (difficulty)
|
|
361
|
+
topics = topics.filter(t => t.difficulty === difficulty);
|
|
362
|
+
if (topics.length === 0) {
|
|
363
|
+
return {
|
|
364
|
+
content: [
|
|
365
|
+
{
|
|
366
|
+
type: "text",
|
|
367
|
+
text: `No topics found with those filters. Categories: ${CATEGORIES.join(", ")}. Age groups: ${AGE_GROUPS.join(", ")}.`,
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
const grouped = {};
|
|
373
|
+
for (const topic of topics) {
|
|
374
|
+
if (!grouped[topic.category])
|
|
375
|
+
grouped[topic.category] = [];
|
|
376
|
+
grouped[topic.category].push(topic);
|
|
377
|
+
}
|
|
378
|
+
const lines = [
|
|
379
|
+
`## 📚 Debate Topics (${topics.length} total)`,
|
|
380
|
+
``,
|
|
381
|
+
];
|
|
382
|
+
for (const [cat, catTopics] of Object.entries(grouped)) {
|
|
383
|
+
lines.push(`### ${cat.charAt(0).toUpperCase() + cat.slice(1)}`);
|
|
384
|
+
lines.push(``);
|
|
385
|
+
for (const t of catTopics) {
|
|
386
|
+
const diffIcon = t.difficulty === "easy" ? "🟢" : t.difficulty === "medium" ? "🟡" : "🔴";
|
|
387
|
+
lines.push(`${diffIcon} **${t.title}**`);
|
|
388
|
+
lines.push(` *"${t.proposition}"*`);
|
|
389
|
+
lines.push(` Tags: ${t.tags.join(", ")}`);
|
|
390
|
+
lines.push(``);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
lines.push(`*Start a debate: \`start_debate({ profileId: "you", topic: "<paste proposition here>" })\`*`);
|
|
394
|
+
return {
|
|
395
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
396
|
+
};
|
|
397
|
+
});
|
|
398
|
+
// ─── get_progress ──────────────────────────────────────────────────────────
|
|
399
|
+
server.tool("get_progress", "View your debate progress over time: scores, fallacy trends, improvement areas, and statistics.", {
|
|
400
|
+
profileId: z
|
|
401
|
+
.string()
|
|
402
|
+
.describe("The profile ID used when starting debates"),
|
|
403
|
+
}, async ({ profileId }) => {
|
|
404
|
+
const progress = getProgressReport(profileId);
|
|
405
|
+
if (progress.debatesCompleted === 0) {
|
|
406
|
+
return {
|
|
407
|
+
content: [
|
|
408
|
+
{
|
|
409
|
+
type: "text",
|
|
410
|
+
text: `No completed debates found for profile \`${profileId}\`. Start your first debate with \`start_debate\`!`,
|
|
411
|
+
},
|
|
412
|
+
],
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
const scoreBar10 = (score) => scoreBar(score, 10);
|
|
416
|
+
const topFallaciesText = progress.topFallacies.length > 0
|
|
417
|
+
? progress.topFallacies
|
|
418
|
+
.map(f => `- **${f.type.replace(/_/g, " ")}**: ${f.count} times`)
|
|
419
|
+
.join("\n")
|
|
420
|
+
: "- None detected yet — excellent logical hygiene!";
|
|
421
|
+
const improvementText = progress.improvementAreas
|
|
422
|
+
.map(a => `- ${a}`)
|
|
423
|
+
.join("\n");
|
|
424
|
+
const recentScores = progress.scoreOverTime.slice(-5);
|
|
425
|
+
const scoreTrend = recentScores.length > 1
|
|
426
|
+
? recentScores[recentScores.length - 1].score >
|
|
427
|
+
recentScores[0].score
|
|
428
|
+
? "📈 Improving"
|
|
429
|
+
: recentScores[recentScores.length - 1].score <
|
|
430
|
+
recentScores[0].score
|
|
431
|
+
? "📉 Declining"
|
|
432
|
+
: "➡️ Steady"
|
|
433
|
+
: "Not enough data";
|
|
434
|
+
const output = [
|
|
435
|
+
`## 📊 Debate Progress — @${profileId}`,
|
|
436
|
+
``,
|
|
437
|
+
`| Metric | Value |`,
|
|
438
|
+
`|--------|-------|`,
|
|
439
|
+
`| Debates completed | ${progress.debatesCompleted} |`,
|
|
440
|
+
`| Average PRO score | ${progress.avgProScore}/10 ${scoreBar10(progress.avgProScore)} |`,
|
|
441
|
+
`| Average CON score | ${progress.avgConScore}/10 ${scoreBar10(progress.avgConScore)} |`,
|
|
442
|
+
`| Overall average | ${progress.avgScore}/10 ${scoreBar10(progress.avgScore)} |`,
|
|
443
|
+
`| Flip success rate | ${Math.round(progress.flipSuccessRate * 100)}% |`,
|
|
444
|
+
`| Score trend | ${scoreTrend} |`,
|
|
445
|
+
``,
|
|
446
|
+
`### 🧠 Top Logical Fallacies Detected`,
|
|
447
|
+
``,
|
|
448
|
+
topFallaciesText,
|
|
449
|
+
``,
|
|
450
|
+
`### 📈 Score Over Time (last ${recentScores.length} debates)`,
|
|
451
|
+
``,
|
|
452
|
+
recentScores
|
|
453
|
+
.map(s => `- ${s.date}: ${s.score.toFixed(1)}/10 ${scoreBar(s.score, 10)}`)
|
|
454
|
+
.join("\n"),
|
|
455
|
+
``,
|
|
456
|
+
`### 🎯 Topics Debated (${progress.topicsDebated.length})`,
|
|
457
|
+
``,
|
|
458
|
+
progress.topicsDebated.map(t => `- ${t}`).join("\n"),
|
|
459
|
+
``,
|
|
460
|
+
`### 💡 Improvement Areas`,
|
|
461
|
+
``,
|
|
462
|
+
improvementText,
|
|
463
|
+
].join("\n");
|
|
464
|
+
return {
|
|
465
|
+
content: [{ type: "text", text: output }],
|
|
466
|
+
};
|
|
467
|
+
});
|
|
468
|
+
// ─── build_argument ────────────────────────────────────────────────────────
|
|
469
|
+
server.tool("build_argument", "Argument Builder Mode: For students who don't know where to start. Provide a rough thought and get Socratic scaffolding questions to develop it into a strong argument.", {
|
|
470
|
+
sessionId: z.string().describe("The session ID from start_debate"),
|
|
471
|
+
thought: z
|
|
472
|
+
.string()
|
|
473
|
+
.describe("Your rough idea or belief about the topic, however unformed"),
|
|
474
|
+
}, async ({ sessionId, thought }) => {
|
|
475
|
+
const session = getSession(sessionId);
|
|
476
|
+
if (!session) {
|
|
477
|
+
return {
|
|
478
|
+
content: [
|
|
479
|
+
{
|
|
480
|
+
type: "text",
|
|
481
|
+
text: `Session \`${sessionId}\` not found. Start a debate with \`start_debate\` first.`,
|
|
482
|
+
},
|
|
483
|
+
],
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
const scaffold = await scaffoldArgument({
|
|
487
|
+
proposition: session.proposition,
|
|
488
|
+
position: session.currentPosition,
|
|
489
|
+
userThought: thought,
|
|
490
|
+
});
|
|
491
|
+
const output = [
|
|
492
|
+
`## 🏗️ Argument Builder`,
|
|
493
|
+
``,
|
|
494
|
+
`**Your thought:** "${thought}"`,
|
|
495
|
+
``,
|
|
496
|
+
`**Hint:** ${scaffold.hint}`,
|
|
497
|
+
``,
|
|
498
|
+
`### Socratic Questions to Develop This Argument`,
|
|
499
|
+
``,
|
|
500
|
+
`Think through these questions to strengthen your argument before submitting it:`,
|
|
501
|
+
``,
|
|
502
|
+
scaffold.questions.map((q, i) => `${i + 1}. ${q}`).join("\n"),
|
|
503
|
+
``,
|
|
504
|
+
`Once you've thought through these, use \`submit_argument\` to submit your refined version!`,
|
|
505
|
+
].join("\n");
|
|
506
|
+
return {
|
|
507
|
+
content: [{ type: "text", text: output }],
|
|
508
|
+
};
|
|
509
|
+
});
|
|
510
|
+
// ─── get_fallacy_guide ─────────────────────────────────────────────────────
|
|
511
|
+
server.tool("get_fallacy_guide", "Get a comprehensive guide to the 20 logical fallacies that debate-coach detects. Optionally get details on a specific fallacy.", {
|
|
512
|
+
fallacyType: z
|
|
513
|
+
.string()
|
|
514
|
+
.optional()
|
|
515
|
+
.describe("Specific fallacy type to look up (e.g., 'ad_hominem', 'straw_man'). Leave blank for full guide."),
|
|
516
|
+
}, async ({ fallacyType }) => {
|
|
517
|
+
if (fallacyType) {
|
|
518
|
+
const fallacy = FALLACIES[fallacyType];
|
|
519
|
+
if (!fallacy) {
|
|
520
|
+
const keys = Object.keys(FALLACIES).join(", ");
|
|
521
|
+
return {
|
|
522
|
+
content: [
|
|
523
|
+
{
|
|
524
|
+
type: "text",
|
|
525
|
+
text: `Fallacy type \`${fallacyType}\` not found. Available types:\n${keys}`,
|
|
526
|
+
},
|
|
527
|
+
],
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
const output = [
|
|
531
|
+
`## ${fallacy.name}`,
|
|
532
|
+
``,
|
|
533
|
+
`**Definition:** ${fallacy.description}`,
|
|
534
|
+
``,
|
|
535
|
+
`### Examples`,
|
|
536
|
+
fallacy.examples.map(e => `- "${e}"`).join("\n"),
|
|
537
|
+
``,
|
|
538
|
+
`### How to Avoid It`,
|
|
539
|
+
fallacy.howToAvoid,
|
|
540
|
+
].join("\n");
|
|
541
|
+
return {
|
|
542
|
+
content: [{ type: "text", text: output }],
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
const lines = [
|
|
546
|
+
`## 📖 Logical Fallacy Guide`,
|
|
547
|
+
``,
|
|
548
|
+
`debate-coach detects these 20 logical fallacies in real time:`,
|
|
549
|
+
``,
|
|
550
|
+
];
|
|
551
|
+
const fallacyList = Object.values(FALLACIES);
|
|
552
|
+
for (let i = 0; i < fallacyList.length; i++) {
|
|
553
|
+
const f = fallacyList[i];
|
|
554
|
+
lines.push(`${i + 1}. **${f.name}** (\`${f.type}\`)`, ` ${f.description}`, ``);
|
|
555
|
+
}
|
|
556
|
+
lines.push(`*Use \`get_fallacy_guide\` with a \`fallacyType\` parameter for detailed examples and how to avoid each one.*`);
|
|
557
|
+
return {
|
|
558
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
559
|
+
};
|
|
560
|
+
});
|
|
561
|
+
// ─── Helpers ───────────────────────────────────────────────────────────────
|
|
562
|
+
function scoreBar(score, max) {
|
|
563
|
+
const pct = Math.min(1, score / max);
|
|
564
|
+
const filled = Math.round(pct * 10);
|
|
565
|
+
const empty = 10 - filled;
|
|
566
|
+
return "█".repeat(filled) + "░".repeat(empty);
|
|
567
|
+
}
|
|
568
|
+
// ─── Start server ──────────────────────────────────────────────────────────
|
|
569
|
+
const transport = new StdioServerTransport();
|
|
570
|
+
await server.connect(transport);
|
|
571
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DebateSession, ScoredArgument } from "./types.js";
|
|
2
|
+
export declare function createSession(params: {
|
|
3
|
+
profileId: string;
|
|
4
|
+
topic: string;
|
|
5
|
+
proposition: string;
|
|
6
|
+
position?: string;
|
|
7
|
+
}): DebateSession;
|
|
8
|
+
export declare function getSession(sessionId: string): DebateSession | undefined;
|
|
9
|
+
export declare function addArgument(sessionId: string, argument: ScoredArgument): DebateSession;
|
|
10
|
+
export declare function setSteeleman(sessionId: string, steelman: string, keyCounterArguments: string[]): DebateSession;
|
|
11
|
+
export declare function flipSides(sessionId: string): DebateSession;
|
|
12
|
+
export declare function setSynthesis(sessionId: string, synthesis: string): DebateSession;
|
|
13
|
+
export declare function completeSession(sessionId: string): DebateSession;
|
|
14
|
+
export declare function deleteSession(sessionId: string): void;
|
|
15
|
+
export declare function getSessionStats(session: DebateSession): {
|
|
16
|
+
proScore: number;
|
|
17
|
+
conScore: number;
|
|
18
|
+
fallaciesCaught: number;
|
|
19
|
+
fallaciesTotal: number;
|
|
20
|
+
didFlip: boolean;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAe,cAAc,EAAE,MAAM,YAAY,CAAC;AAK7E,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,aAAa,CAqBhB;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEvE;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,cAAc,GACvB,aAAa,CAwBf;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,mBAAmB,EAAE,MAAM,EAAE,GAC5B,aAAa,CAOf;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAW1D;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,aAAa,CAMf;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CAKhE;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAErD;AAYD,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CAsBA"}
|