@deepthonk/mcp 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/dist/tools.js ADDED
@@ -0,0 +1,555 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { z } from "zod";
4
+ import YAML from "yaml";
5
+ import { builtInProfiles, claimRunLock, ConfigError, DeepThonkError, getProfile, planBudget, detectResumeState, exportRun, isRunCancelRequested, mutateCandidate, rankCandidates, readRunStatus, requestRunCancel, runDeepThonk, TraceStore } from "@deepthonk/core";
6
+ import { createDriver, defaultPricesForProviderConfig, resolveProviderConfig, resolveProviderModels } from "@deepthonk/providers";
7
+ import { recordRunResource } from "./resources.js";
8
+ export const toolNames = [
9
+ "deepthonk.plan",
10
+ "deepthonk.start",
11
+ "deepthonk.status",
12
+ "deepthonk.result",
13
+ "deepthonk.cancel",
14
+ "deepthonk.run",
15
+ "deepthonk.rank",
16
+ "deepthonk.mutate",
17
+ "deepthonk.resume",
18
+ "deepthonk.export"
19
+ ];
20
+ export const planArgsSchema = z.object({
21
+ profile: z.enum(["quick", "balanced", "paper"]).default("quick"),
22
+ n: z.number().int().min(2).optional(),
23
+ k: z.number().int().min(1).optional(),
24
+ t: z.number().int().min(0).optional(),
25
+ m: z.number().int().min(1).optional()
26
+ });
27
+ const providerNameSchema = z
28
+ .string()
29
+ .min(1)
30
+ .describe("Provider label. Built-ins include fake, deepseek, openrouter, and openai-compatible; custom labels require base_url.")
31
+ .refine((provider) => provider !== "sampling", "MCP Sampling is deferred and is not a direct provider option.")
32
+ .default("fake");
33
+ export const runArgsSchema = z.object({
34
+ task: z.string().min(1).describe("Task text to solve. MCP tools do not read task files."),
35
+ rubric: z.string().optional().describe("Optional judging rubric text."),
36
+ config_path: z.string().optional().describe("Optional DeepThonk YAML config path, such as ~/.config/deepthonk/config.yaml."),
37
+ profile: z.enum(["quick", "balanced", "paper"]).default("quick").describe("Run profile. quick is safest for smoke tests; paper plans 285 calls."),
38
+ prompt_style: z.enum(["general", "paper-programming"]).optional().describe("Prompt template style. Defaults to paper-programming for the paper profile, general otherwise."),
39
+ provider: providerNameSchema,
40
+ base_url: z.string().optional().describe("OpenAI-compatible base URL, ending at /v1."),
41
+ api_key_env: z.string().optional().describe("Environment variable that contains the API key."),
42
+ generator_model: z.string().optional().describe("Model used for initial candidate generation."),
43
+ mutator_model: z.string().optional().describe("Model used for critique-guided mutation."),
44
+ judge_model: z.string().optional().describe("Model used for pairwise judging."),
45
+ finalizer_model: z.string().optional().describe("Optional model used to polish the winning candidate."),
46
+ seed: z.number().int().default(1).describe("Deterministic seed for pair ordering and IDs."),
47
+ run_dir: z.string().optional().describe("Directory for trace files."),
48
+ max_calls: z.number().int().optional().describe("Maximum completed provider calls before the run stops at a phase boundary."),
49
+ max_input_tokens: z.number().int().optional().describe("Maximum recorded input tokens before the run stops at a phase boundary."),
50
+ max_output_tokens: z.number().int().optional().describe("Maximum recorded output tokens before the run stops at a phase boundary."),
51
+ max_usd: z.number().optional().describe("Maximum estimated USD spend; requires matching budget.prices in config."),
52
+ request_timeout_ms: z.number().int().optional().describe("Per-request provider timeout in milliseconds."),
53
+ n: z.number().int().min(2).optional().describe("Population size override. Defaults to the profile's n."),
54
+ k: z.number().int().min(1).optional().describe("Comparisons per candidate per mutation-generation round."),
55
+ t: z.number().int().min(0).optional().describe("Number of mutation generations (t=0 disables mutation rounds)."),
56
+ m: z.number().int().min(1).optional().describe("Comparisons per candidate in the final dense ranking round. Mutation count per generation is n - ceil(n/4), not m."),
57
+ lambda: z.number().min(0).optional().describe("Bradley-Terry L2 regularization. Defaults to 0.01."),
58
+ sample_temperature: z.number().min(0).optional().describe("Temperature for initial candidate generation."),
59
+ mutate_temperature: z.number().min(0).optional().describe("Temperature for critique-guided mutation."),
60
+ judge_temperature: z.number().min(0).optional().describe("Temperature for pairwise judging."),
61
+ concurrency: z.object({
62
+ generate: z.number().int().min(1).optional(),
63
+ judge: z.number().int().min(1).optional(),
64
+ mutate: z.number().int().min(1).optional()
65
+ }).optional().describe("Per-phase concurrency overrides."),
66
+ prompts: z.object({
67
+ generate: z.object({ system: z.string().optional(), user: z.string().optional() }).optional(),
68
+ compare: z.object({ system: z.string().optional(), user: z.string().optional() }).optional(),
69
+ mutate: z.object({ system: z.string().optional(), user: z.string().optional() }).optional(),
70
+ finalize: z.object({ system: z.string().optional(), user: z.string().optional() }).optional()
71
+ }).optional().describe("Optional per-phase prompt template overrides. Templates use {task}, {rubric}, {candidate}, {candidateA}, {candidateB}, {critique} placeholders. Use {{ and }} to escape literal braces. See docs/customization.md for the variable contract per phase.")
72
+ });
73
+ export const jobArgsSchema = z.object({
74
+ run_dir: z.string().min(1).optional().describe("Run directory returned by deepthonk.start or deepthonk.run."),
75
+ job_id: z.string().optional().describe("Job ID returned by deepthonk.start.")
76
+ });
77
+ const providerArgsSchema = z.object({
78
+ config_path: z.string().optional().describe("Optional DeepThonk YAML config path."),
79
+ provider: providerNameSchema,
80
+ base_url: z.string().optional().describe("OpenAI-compatible base URL, ending at /v1."),
81
+ api_key_env: z.string().optional().describe("Environment variable that contains the API key."),
82
+ generator_model: z.string().optional().describe("Model used for initial candidate generation."),
83
+ mutator_model: z.string().optional().describe("Model used for critique-guided mutation."),
84
+ judge_model: z.string().optional().describe("Model used for pairwise judging."),
85
+ finalizer_model: z.string().optional().describe("Optional model used to polish the winning candidate.")
86
+ });
87
+ export const rankArgsSchema = providerArgsSchema.extend({
88
+ task: z.string().min(1).describe("Task text the candidates answer."),
89
+ rubric: z.string().optional().describe("Optional judging rubric text."),
90
+ candidates: z.array(z.union([z.string(), z.object({ id: z.string().optional(), content: z.string() })])).min(2).describe("Candidate texts or {id, content} objects.")
91
+ });
92
+ export const mutateArgsSchema = providerArgsSchema.extend({
93
+ task: z.string().min(1).describe("Task text the candidate answers."),
94
+ rubric: z.string().optional().describe("Optional rubric text."),
95
+ candidate: z.string().describe("Candidate text to mutate."),
96
+ critique: z.string().default("").describe("Critique or guidance for mutation.")
97
+ });
98
+ export const resumeArgsSchema = z.object({
99
+ run_dir: z.string()
100
+ });
101
+ export const exportArgsSchema = z.object({
102
+ run_dir: z.string(),
103
+ format: z.enum(["json", "markdown", "jsonl"]).default("json")
104
+ });
105
+ export const runOutputSchema = z.object({
106
+ run_id: z.string(),
107
+ winner_id: z.string(),
108
+ final_answer: z.string(),
109
+ summary_resource: z.string(),
110
+ trace_resource: z.string(),
111
+ run_dir: z.string()
112
+ });
113
+ export const startOutputSchema = z.object({
114
+ job_id: z.string(),
115
+ run_dir: z.string(),
116
+ state: z.string(),
117
+ status_resource: z.string(),
118
+ result_resource: z.string()
119
+ });
120
+ export const statusOutputSchema = z.object({
121
+ job_id: z.string().optional(),
122
+ run_id: z.string().optional(),
123
+ run_dir: z.string().optional(),
124
+ state: z.string().optional(),
125
+ status: z.string().optional(),
126
+ phase: z.string().optional(),
127
+ generation: z.union([z.number(), z.literal("final")]).optional(),
128
+ usage: z.object({}).passthrough().optional(),
129
+ error: z.object({}).passthrough().optional(),
130
+ message: z.string().optional()
131
+ }).passthrough();
132
+ export const resultOutputSchema = z.object({ complete: z.boolean().optional(), run_id: z.string().optional(), run_dir: z.string().optional() }).passthrough();
133
+ export const cancelOutputSchema = z.object({ cancel_requested: z.boolean(), run_dir: z.string().optional() }).passthrough();
134
+ export const resumeOutputSchema = z.object({
135
+ status: z.string(),
136
+ message: z.string(),
137
+ run_id: z.string().optional(),
138
+ phase: z.string().optional(),
139
+ generation: z.union([z.number(), z.literal("final")]).optional(),
140
+ safe_to_continue: z.boolean().optional()
141
+ });
142
+ export const rankOutputSchema = z.object({
143
+ scores: z.array(z.object({}).passthrough()),
144
+ comparisons: z.array(z.object({}).passthrough())
145
+ });
146
+ export const mutateOutputSchema = z.object({
147
+ mutated: z.string(),
148
+ model: z.string().optional(),
149
+ provider: z.string().optional(),
150
+ usage: z.object({}).passthrough().optional()
151
+ });
152
+ export function deepthonkPlan(argsInput) {
153
+ const args = planArgsSchema.parse(argsInput);
154
+ if (args.n === undefined && args.k === undefined && args.t === undefined && args.m === undefined) {
155
+ return planBudget(args.profile);
156
+ }
157
+ const base = builtInProfiles[args.profile];
158
+ return planBudget({
159
+ ...base,
160
+ n: args.n ?? base.n,
161
+ k: args.k ?? base.k,
162
+ t: args.t ?? base.t,
163
+ m: args.m ?? base.m
164
+ });
165
+ }
166
+ export async function deepthonkStart(argsInput) {
167
+ const { runConfig, providerConfig } = await resolveMcpRun(argsInput);
168
+ const jobId = `job_${new Date().toISOString().replace(/[:.]/g, "-")}_${Math.random().toString(16).slice(2, 8)}`;
169
+ const now = new Date().toISOString();
170
+ const claimed = await claimRunLock(runConfig.runDir, jobId);
171
+ if (!claimed) {
172
+ const existing = await readRunStatus(runConfig.runDir);
173
+ if (existing?.job_id && (existing.state === "pending" || existing.state === "running")) {
174
+ return {
175
+ job_id: existing.job_id,
176
+ run_dir: runConfig.runDir,
177
+ state: existing.state,
178
+ status_resource: `deepthonk://jobs/${existing.job_id}/status?run_dir=${encodeURIComponent(runConfig.runDir)}`,
179
+ result_resource: `deepthonk://jobs/${existing.job_id}/result?run_dir=${encodeURIComponent(runConfig.runDir)}`
180
+ };
181
+ }
182
+ throw new ConfigError(`Run directory is already claimed: ${runConfig.runDir}`, {
183
+ code: "run.directory_locked",
184
+ retryable: false,
185
+ fix: "Use a fresh run_dir or inspect the existing run status."
186
+ });
187
+ }
188
+ await new TraceStore(runConfig.runDir).writeStatus({
189
+ job_id: jobId,
190
+ run_dir: runConfig.runDir,
191
+ state: "pending",
192
+ phase: "queued",
193
+ usage: { calls: 0, inputTokens: 0, outputTokens: 0, totalTokens: 0 },
194
+ started_at: now,
195
+ updated_at: now
196
+ });
197
+ void runDeepThonk(runConfig, createDriver(providerConfig), {
198
+ jobId,
199
+ shouldCancel: () => isRunCancelRequested(runConfig.runDir)
200
+ })
201
+ .then(async (result) => {
202
+ try {
203
+ await recordRunResource(result.runId, result.runDir);
204
+ }
205
+ catch (writeErr) {
206
+ process.stderr.write(`deepthonk: failed to record run resource: ${writeErr.message}\n`);
207
+ }
208
+ })
209
+ .catch(async (error) => {
210
+ try {
211
+ const existing = await readRunStatus(runConfig.runDir);
212
+ if (existing && existing.state !== "pending")
213
+ return;
214
+ const serialized = serializeToolError(error, runConfig.runDir);
215
+ await new TraceStore(runConfig.runDir).writeStatus({
216
+ job_id: jobId,
217
+ run_dir: runConfig.runDir,
218
+ state: "failed",
219
+ phase: "failed",
220
+ usage: { calls: 0, inputTokens: 0, outputTokens: 0, totalTokens: 0 },
221
+ started_at: now,
222
+ updated_at: new Date().toISOString(),
223
+ error: {
224
+ code: String(serialized.code),
225
+ message: String(serialized.message),
226
+ retryable: Boolean(serialized.retryable),
227
+ fix: typeof serialized.fix === "string" ? serialized.fix : undefined
228
+ }
229
+ });
230
+ }
231
+ catch (writeErr) {
232
+ process.stderr.write(`deepthonk: failed to persist failure status: ${writeErr.message}\n`);
233
+ }
234
+ });
235
+ return {
236
+ job_id: jobId,
237
+ run_dir: runConfig.runDir,
238
+ state: "pending",
239
+ status_resource: `deepthonk://jobs/${jobId}/status?run_dir=${encodeURIComponent(runConfig.runDir)}`,
240
+ result_resource: `deepthonk://jobs/${jobId}/result?run_dir=${encodeURIComponent(runConfig.runDir)}`
241
+ };
242
+ }
243
+ export async function deepthonkStatus(argsInput) {
244
+ const args = jobArgsSchema.parse(argsInput);
245
+ const runDir = await resolveJobRunDir(args);
246
+ const status = await readRunStatus(runDir);
247
+ if (args.job_id && status?.job_id && args.job_id !== status.job_id)
248
+ throw jobMismatch(args.job_id, status.job_id);
249
+ if (status)
250
+ return { ...status };
251
+ return { ...(await detectResumeState(runDir)), run_dir: runDir };
252
+ }
253
+ export async function deepthonkResult(argsInput) {
254
+ const args = jobArgsSchema.parse(argsInput);
255
+ const runDir = await resolveJobRunDir(args);
256
+ const status = await readRunStatus(runDir);
257
+ if (args.job_id && status?.job_id && args.job_id !== status.job_id)
258
+ throw jobMismatch(args.job_id, status.job_id);
259
+ const resume = await detectResumeState(runDir);
260
+ if (resume.status !== "completed") {
261
+ return {
262
+ complete: false,
263
+ run_dir: runDir,
264
+ status: status ?? resume
265
+ };
266
+ }
267
+ const summary = await exportRun(runDir, "json");
268
+ const runId = typeof summary.run_id === "string" ? summary.run_id : status?.run_id;
269
+ if (runId)
270
+ await recordRunResource(runId, runDir);
271
+ return {
272
+ complete: true,
273
+ run_id: runId,
274
+ run_dir: runDir,
275
+ summary,
276
+ summary_resource: runId ? `deepthonk://runs/${runId}/summary` : undefined,
277
+ trace_resource: runId ? `deepthonk://runs/${runId}/trace` : undefined
278
+ };
279
+ }
280
+ export async function deepthonkCancel(argsInput) {
281
+ const args = jobArgsSchema.parse(argsInput);
282
+ const runDir = await resolveJobRunDir(args);
283
+ const status = await readRunStatus(runDir);
284
+ if (args.job_id && status?.job_id && args.job_id !== status.job_id)
285
+ throw jobMismatch(args.job_id, status.job_id);
286
+ await requestRunCancel(runDir);
287
+ return {
288
+ cancel_requested: true,
289
+ run_dir: runDir,
290
+ status: (await readRunStatus(runDir)) ?? { state: "cancel_requested", phase: "cancel_requested" }
291
+ };
292
+ }
293
+ export async function deepthonkRun(argsInput) {
294
+ const { runConfig, providerConfig } = await resolveMcpRun(argsInput);
295
+ const result = await runDeepThonk(runConfig, createDriver(providerConfig), {
296
+ shouldCancel: () => isRunCancelRequested(runConfig.runDir)
297
+ });
298
+ await recordRunResource(result.runId, result.runDir);
299
+ return {
300
+ run_id: result.runId,
301
+ winner_id: result.winner.id,
302
+ final_answer: result.finalAnswer,
303
+ summary_resource: `deepthonk://runs/${result.runId}/summary`,
304
+ trace_resource: `deepthonk://runs/${result.runId}/trace`,
305
+ run_dir: result.runDir
306
+ };
307
+ }
308
+ async function resolveMcpRun(argsInput) {
309
+ const raw = objectInput(argsInput);
310
+ const args = runArgsSchema.parse(argsInput);
311
+ const config = await readMcpConfig(args.config_path);
312
+ const profileName = (raw.profile ?? config.profile ?? args.profile);
313
+ const baseProfile = getProfile(profileName);
314
+ const profile = mergeProfileOverrides(baseProfile, config.algorithm, args);
315
+ const providerConfig = resolveMcpProviderConfig(args, raw, config);
316
+ const models = providerConfig.models;
317
+ const runDir = args.run_dir ?? `runs/mcp-${new Date().toISOString().replace(/[:.]/g, "-")}`;
318
+ const promptOverrides = mergePromptOverrides(config.prompts, args.prompts);
319
+ return {
320
+ runConfig: {
321
+ task: args.task,
322
+ rubric: args.rubric,
323
+ promptStyle: args.prompt_style ?? config.prompt_style ?? (profileName === "paper" ? "paper-programming" : "general"),
324
+ promptOverrides,
325
+ profile,
326
+ runDir,
327
+ seed: args.seed,
328
+ provider: providerConfig.provider,
329
+ generatorModel: models.generator,
330
+ mutatorModel: models.mutator,
331
+ judgeModel: models.judge,
332
+ finalizerModel: models.finalizer,
333
+ concurrency: {
334
+ generate: args.concurrency?.generate ?? config.concurrency?.generate ?? profile.n,
335
+ judge: args.concurrency?.judge ?? config.concurrency?.judge ?? Math.max(1, (profile.n * Math.max(profile.k, profile.m)) / 2),
336
+ mutate: args.concurrency?.mutate ?? config.concurrency?.mutate ?? profile.n - Math.floor(profile.n / 4)
337
+ },
338
+ retry: {
339
+ httpRetries: config.retry?.httpRetries ?? 2,
340
+ invalidJsonRetries: config.retry?.invalidJsonRetries ?? 1,
341
+ requestTimeoutMs: args.request_timeout_ms ?? config.retry?.requestTimeoutMs
342
+ },
343
+ budget: mergeBudget(config.budget, {
344
+ maxCalls: args.max_calls,
345
+ maxInputTokens: args.max_input_tokens,
346
+ maxOutputTokens: args.max_output_tokens,
347
+ maxUsd: args.max_usd
348
+ }, defaultPricesForProviderConfig(providerConfig)),
349
+ output: {
350
+ includeRawModelOutputs: config.output?.includeRawModelOutputs ?? false,
351
+ includePrompts: config.output?.includePrompts ?? false
352
+ }
353
+ },
354
+ providerConfig
355
+ };
356
+ }
357
+ export async function deepthonkRank(argsInput) {
358
+ const args = rankArgsSchema.parse(argsInput);
359
+ const providerConfig = await providerConfigFromArgs(args);
360
+ const models = providerConfig.models;
361
+ const driver = createDriver(providerConfig);
362
+ const candidates = args.candidates;
363
+ const result = await rankCandidates({ task: args.task, rubric: args.rubric, candidates, driver, judgeModel: models.judge, runId: "mcp-rank" });
364
+ return { scores: result.scores, comparisons: result.comparisons };
365
+ }
366
+ export async function deepthonkMutate(argsInput) {
367
+ const args = mutateArgsSchema.parse(argsInput);
368
+ const providerConfig = await providerConfigFromArgs(args);
369
+ const models = providerConfig.models;
370
+ return {
371
+ ...(await mutateCandidate({
372
+ task: args.task,
373
+ rubric: args.rubric,
374
+ candidate: { id: "mcp-candidate", content: args.candidate },
375
+ driver: createDriver(providerConfig),
376
+ mutatorModel: models.mutator,
377
+ temperature: 0.6,
378
+ critique: args.critique
379
+ }))
380
+ };
381
+ }
382
+ export async function deepthonkResume(argsInput) {
383
+ const args = resumeArgsSchema.parse(argsInput);
384
+ return { ...(await detectResumeState(args.run_dir)) };
385
+ }
386
+ export async function deepthonkExport(argsInput) {
387
+ const args = exportArgsSchema.parse(argsInput);
388
+ return exportRun(args.run_dir, args.format);
389
+ }
390
+ async function providerConfigFromArgs(args) {
391
+ const config = await readMcpConfig(args.config_path);
392
+ return resolveMcpProviderConfig(args, objectInput(args), config);
393
+ }
394
+ function resolveMcpProviderConfig(args, raw, config) {
395
+ const provider = String(raw.provider ?? config.provider ?? args.provider);
396
+ return resolveProviderConfig({
397
+ provider,
398
+ baseUrl: args.base_url ?? config.base_url,
399
+ apiKeyEnv: args.api_key_env ?? config.api_key_env,
400
+ models: {
401
+ generator: args.generator_model ?? config.models?.generator,
402
+ mutator: args.mutator_model ?? config.models?.mutator,
403
+ judge: args.judge_model ?? config.models?.judge,
404
+ finalizer: args.finalizer_model ?? config.models?.finalizer
405
+ },
406
+ roleProviders: normalizeRoleProviders(config.providers, resolveProviderModels(provider, {
407
+ generator: args.generator_model ?? config.models?.generator,
408
+ mutator: args.mutator_model ?? config.models?.mutator,
409
+ judge: args.judge_model ?? config.models?.judge,
410
+ finalizer: args.finalizer_model ?? config.models?.finalizer
411
+ })),
412
+ retry: { httpRetries: 2, requestTimeoutMs: config.retry?.requestTimeoutMs }
413
+ });
414
+ }
415
+ export function toolResult(value) {
416
+ const structuredContent = typeof value === "object" && value !== null && !Array.isArray(value) ? value : { value };
417
+ return { structuredContent, content: [{ type: "text", text: summarizeToolResult(structuredContent) }] };
418
+ }
419
+ export function toolError(error, runDir) {
420
+ const structuredContent = serializeToolError(error, runDir);
421
+ return { isError: true, structuredContent, content: [{ type: "text", text: JSON.stringify(structuredContent, null, 2) }] };
422
+ }
423
+ function mergePromptOverrides(fileOverrides, argOverrides) {
424
+ if (!fileOverrides && !argOverrides)
425
+ return undefined;
426
+ const merged = { ...(fileOverrides ?? {}) };
427
+ if (argOverrides) {
428
+ for (const phase of ["generate", "compare", "mutate", "finalize"]) {
429
+ if (argOverrides[phase])
430
+ merged[phase] = { ...(merged[phase] ?? {}), ...argOverrides[phase] };
431
+ }
432
+ }
433
+ return Object.keys(merged).length ? merged : undefined;
434
+ }
435
+ function mergeProfileOverrides(base, fileOverrides, args) {
436
+ return {
437
+ n: args.n ?? fileOverrides?.n ?? base.n,
438
+ k: args.k ?? fileOverrides?.k ?? base.k,
439
+ t: args.t ?? fileOverrides?.t ?? base.t,
440
+ m: args.m ?? fileOverrides?.m ?? base.m,
441
+ lambda: args.lambda ?? fileOverrides?.lambda ?? base.lambda,
442
+ sampleTemperature: args.sample_temperature ?? fileOverrides?.sample_temperature ?? base.sampleTemperature,
443
+ mutateTemperature: args.mutate_temperature ?? fileOverrides?.mutate_temperature ?? base.mutateTemperature,
444
+ judgeTemperature: args.judge_temperature ?? fileOverrides?.judge_temperature ?? base.judgeTemperature
445
+ };
446
+ }
447
+ async function readMcpConfig(path) {
448
+ if (!path)
449
+ return {};
450
+ return YAML.parse(await readFile(resolveMcpPath(path), "utf8"));
451
+ }
452
+ async function resolveJobRunDir(args) {
453
+ if (args.run_dir)
454
+ return args.run_dir;
455
+ throw new ConfigError(`Job lookup by job_id is not available without run_dir: ${args.job_id}`, {
456
+ code: "mcp.job_not_found",
457
+ retryable: false,
458
+ fix: "Pass run_dir from deepthonk.start, or use the returned job resource URI."
459
+ });
460
+ }
461
+ function jobMismatch(requested, actual) {
462
+ return new ConfigError(`Job ID mismatch: requested ${requested}, run directory belongs to ${actual}.`, {
463
+ code: "mcp.job_mismatch",
464
+ retryable: false,
465
+ fix: "Use the job_id returned with this run_dir."
466
+ });
467
+ }
468
+ function resolveMcpPath(path) {
469
+ if (path === "~")
470
+ return homedir();
471
+ if (path.startsWith("~/"))
472
+ return `${homedir()}${path.slice(1)}`;
473
+ return path;
474
+ }
475
+ function normalizeRoleProviders(providers, models) {
476
+ if (!providers)
477
+ return undefined;
478
+ const normalized = {};
479
+ for (const role of ["generator", "mutator", "judge", "finalizer"]) {
480
+ const provider = providers[role];
481
+ if (!provider)
482
+ continue;
483
+ const model = provider.model ?? models[role];
484
+ if (!model)
485
+ continue;
486
+ normalized[role] = {
487
+ provider: provider.provider,
488
+ baseUrl: provider.base_url,
489
+ apiKeyEnv: provider.api_key_env,
490
+ model,
491
+ supportsJsonMode: provider.supports_json_mode
492
+ };
493
+ }
494
+ return Object.keys(normalized).length ? normalized : undefined;
495
+ }
496
+ function mergeBudget(fileBudget, overrides, defaultPrices = []) {
497
+ const prices = mergePrices(defaultPrices, fileBudget?.prices);
498
+ const definedOverrides = Object.fromEntries(Object.entries(overrides).filter(([, value]) => value !== undefined));
499
+ if (!fileBudget && !Object.keys(definedOverrides).length && prices.length === 0)
500
+ return undefined;
501
+ const merged = {
502
+ ...(fileBudget ?? {}),
503
+ ...definedOverrides,
504
+ prices
505
+ };
506
+ return merged && Object.keys(merged).length ? merged : undefined;
507
+ }
508
+ function mergePrices(defaults, overrides) {
509
+ const byKey = new Map(defaults.map((price) => [`${price.provider}/${price.model}`, price]));
510
+ for (const price of overrides ?? [])
511
+ byKey.set(`${price.provider}/${price.model}`, price);
512
+ return [...byKey.values()];
513
+ }
514
+ function objectInput(value) {
515
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : {};
516
+ }
517
+ function summarizeToolResult(value) {
518
+ if (typeof value.job_id === "string")
519
+ return `job_id=${value.job_id}\nrun_dir=${String(value.run_dir)}\nstate=${String(value.state)}`;
520
+ if (typeof value.run_id === "string") {
521
+ return `run_id=${value.run_id}\nwinner_id=${String(value.winner_id)}\nsummary_resource=${String(value.summary_resource)}\ntrace_resource=${String(value.trace_resource)}`;
522
+ }
523
+ if (typeof value.markdown === "string")
524
+ return value.markdown.slice(0, 2000);
525
+ if (typeof value.jsonl === "string")
526
+ return `jsonl_bytes=${value.jsonl.length}`;
527
+ return JSON.stringify(value, null, 2).slice(0, 2000);
528
+ }
529
+ function serializeToolError(error, runDir) {
530
+ if (error instanceof DeepThonkError) {
531
+ return {
532
+ code: error.code,
533
+ message: error.message,
534
+ retryable: error.retryable,
535
+ fix: error.fix,
536
+ run_dir: runDir
537
+ };
538
+ }
539
+ if (error instanceof z.ZodError) {
540
+ return {
541
+ code: "mcp.invalid_arguments",
542
+ message: error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; "),
543
+ retryable: false,
544
+ fix: "Fix the tool arguments and retry.",
545
+ run_dir: runDir
546
+ };
547
+ }
548
+ return {
549
+ code: "unexpected_error",
550
+ message: error instanceof Error ? error.message : String(error),
551
+ retryable: false,
552
+ run_dir: runDir
553
+ };
554
+ }
555
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@deepthonk/mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server adapter for DeepThonk.",
5
+ "license": "MIT",
6
+ "author": "Xule Lin",
7
+ "homepage": "https://github.com/linxule/deepthonk#readme",
8
+ "bugs": {
9
+ "url": "https://github.com/linxule/deepthonk/issues"
10
+ },
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "type": "module",
15
+ "main": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "files": [
18
+ "dist",
19
+ "package.json",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.js"
27
+ }
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/linxule/deepthonk.git",
32
+ "directory": "packages/mcp"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.29.0",
36
+ "yaml": "^2.7.1",
37
+ "zod": "^3.25.28",
38
+ "@deepthonk/core": "0.1.0",
39
+ "@deepthonk/providers": "0.1.0"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.json",
43
+ "typecheck": "tsc -p tsconfig.json --noEmit"
44
+ }
45
+ }