@bis-code/deep-think 1.1.1
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/.claude-plugin/marketplace.json +18 -0
- package/.claude-plugin/plugin.json +19 -0
- package/.deep-think.json +24 -0
- package/.mcp.json +8 -0
- package/LICENSE +21 -0
- package/README.md +92 -0
- package/commands/checkpoints.md +13 -0
- package/commands/constraints.md +16 -0
- package/commands/practices.md +16 -0
- package/commands/start.md +15 -0
- package/hooks/hooks.json +11 -0
- package/package.json +34 -0
- package/rules/deep-think-workflow.md +35 -0
- package/server/dist/bundle.mjs +22006 -0
- package/server/dist/config/loader.d.ts +3 -0
- package/server/dist/config/loader.d.ts.map +1 -0
- package/server/dist/config/loader.js +37 -0
- package/server/dist/config/loader.js.map +1 -0
- package/server/dist/config/schema.d.ts +3 -0
- package/server/dist/config/schema.d.ts.map +1 -0
- package/server/dist/config/schema.js +33 -0
- package/server/dist/config/schema.js.map +1 -0
- package/server/dist/engine/analyzer.d.ts +15 -0
- package/server/dist/engine/analyzer.d.ts.map +1 -0
- package/server/dist/engine/analyzer.js +209 -0
- package/server/dist/engine/analyzer.js.map +1 -0
- package/server/dist/engine/strategies.d.ts +3 -0
- package/server/dist/engine/strategies.d.ts.map +1 -0
- package/server/dist/engine/strategies.js +148 -0
- package/server/dist/engine/strategies.js.map +1 -0
- package/server/dist/engine/thought-store.d.ts +33 -0
- package/server/dist/engine/thought-store.d.ts.map +1 -0
- package/server/dist/engine/thought-store.js +77 -0
- package/server/dist/engine/thought-store.js.map +1 -0
- package/server/dist/index.d.ts +3 -0
- package/server/dist/index.d.ts.map +1 -0
- package/server/dist/index.js +33 -0
- package/server/dist/index.js.map +1 -0
- package/server/dist/persistence/file-store.d.ts +15 -0
- package/server/dist/persistence/file-store.d.ts.map +1 -0
- package/server/dist/persistence/file-store.js +84 -0
- package/server/dist/persistence/file-store.js.map +1 -0
- package/server/dist/persistence/types.d.ts +8 -0
- package/server/dist/persistence/types.d.ts.map +1 -0
- package/server/dist/persistence/types.js +2 -0
- package/server/dist/persistence/types.js.map +1 -0
- package/server/dist/tools/branch.d.ts +5 -0
- package/server/dist/tools/branch.d.ts.map +1 -0
- package/server/dist/tools/branch.js +133 -0
- package/server/dist/tools/branch.js.map +1 -0
- package/server/dist/tools/checkpoint.d.ts +6 -0
- package/server/dist/tools/checkpoint.d.ts.map +1 -0
- package/server/dist/tools/checkpoint.js +95 -0
- package/server/dist/tools/checkpoint.js.map +1 -0
- package/server/dist/tools/reflect.d.ts +5 -0
- package/server/dist/tools/reflect.d.ts.map +1 -0
- package/server/dist/tools/reflect.js +41 -0
- package/server/dist/tools/reflect.js.map +1 -0
- package/server/dist/tools/strategize.d.ts +5 -0
- package/server/dist/tools/strategize.d.ts.map +1 -0
- package/server/dist/tools/strategize.js +80 -0
- package/server/dist/tools/strategize.js.map +1 -0
- package/server/dist/tools/think.d.ts +6 -0
- package/server/dist/tools/think.d.ts.map +1 -0
- package/server/dist/tools/think.js +129 -0
- package/server/dist/tools/think.js.map +1 -0
- package/server/dist/types.d.ts +148 -0
- package/server/dist/types.d.ts.map +1 -0
- package/server/dist/types.js +5 -0
- package/server/dist/types.js.map +1 -0
- package/server/package.json +36 -0
- package/skills/manage-constraints/SKILL.md +28 -0
- package/skills/manage-practices/SKILL.md +26 -0
- package/skills/restore-checkpoint/SKILL.md +25 -0
|
@@ -0,0 +1,33 @@
|
|
|
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 { ThoughtStore } from "./engine/thought-store.js";
|
|
5
|
+
import { registerThinkTool } from "./tools/think.js";
|
|
6
|
+
import { registerBranchTool } from "./tools/branch.js";
|
|
7
|
+
import { registerCheckpointTool } from "./tools/checkpoint.js";
|
|
8
|
+
import { registerReflectTool } from "./tools/reflect.js";
|
|
9
|
+
import { registerStrategizeTool } from "./tools/strategize.js";
|
|
10
|
+
import { loadConfig } from "./config/loader.js";
|
|
11
|
+
import { FileStore } from "./persistence/file-store.js";
|
|
12
|
+
const server = new McpServer({
|
|
13
|
+
name: "mcp-deep-think",
|
|
14
|
+
version: "0.1.0",
|
|
15
|
+
});
|
|
16
|
+
const config = loadConfig();
|
|
17
|
+
const store = new ThoughtStore(config);
|
|
18
|
+
const fileStore = new FileStore(config.persistence.directory, config.persistence.maxCheckpoints);
|
|
19
|
+
registerThinkTool(server, store, config, fileStore);
|
|
20
|
+
registerBranchTool(server, store, config);
|
|
21
|
+
registerCheckpointTool(server, store, config, fileStore);
|
|
22
|
+
registerReflectTool(server, store, config);
|
|
23
|
+
registerStrategizeTool(server, store, config);
|
|
24
|
+
async function runServer() {
|
|
25
|
+
const transport = new StdioServerTransport();
|
|
26
|
+
await server.connect(transport);
|
|
27
|
+
console.error("mcp-deep-think server running on stdio");
|
|
28
|
+
}
|
|
29
|
+
runServer().catch((error) => {
|
|
30
|
+
console.error("Fatal error running server:", error);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AACvC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAEjG,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACpD,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACzD,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE9C,KAAK,UAAU,SAAS;IACtB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1B,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CheckpointData } from "../types.js";
|
|
2
|
+
import type { IPersistenceAdapter } from "./types.js";
|
|
3
|
+
export declare class FileStore implements IPersistenceAdapter {
|
|
4
|
+
private directory;
|
|
5
|
+
private maxCheckpoints;
|
|
6
|
+
constructor(directory: string, maxCheckpoints: number);
|
|
7
|
+
private ensureDir;
|
|
8
|
+
private filePath;
|
|
9
|
+
save(name: string, data: CheckpointData): Promise<void>;
|
|
10
|
+
load(name: string): Promise<CheckpointData | null>;
|
|
11
|
+
list(): Promise<CheckpointData[]>;
|
|
12
|
+
delete(name: string): Promise<boolean>;
|
|
13
|
+
private rotate;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=file-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-store.d.ts","sourceRoot":"","sources":["../../src/persistence/file-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,qBAAa,SAAU,YAAW,mBAAmB;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;gBAEnB,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAKrD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,QAAQ;IAMV,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAYlD,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAwBjC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ5C,OAAO,CAAC,MAAM;CAiBf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, readdirSync, unlinkSync, statSync } from "fs";
|
|
2
|
+
import { join, resolve } from "path";
|
|
3
|
+
export class FileStore {
|
|
4
|
+
directory;
|
|
5
|
+
maxCheckpoints;
|
|
6
|
+
constructor(directory, maxCheckpoints) {
|
|
7
|
+
this.directory = resolve(directory);
|
|
8
|
+
this.maxCheckpoints = maxCheckpoints;
|
|
9
|
+
}
|
|
10
|
+
ensureDir() {
|
|
11
|
+
if (!existsSync(this.directory)) {
|
|
12
|
+
mkdirSync(this.directory, { recursive: true });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
filePath(name) {
|
|
16
|
+
// Sanitize name to prevent path traversal
|
|
17
|
+
const safe = name.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
18
|
+
return join(this.directory, `${safe}.json`);
|
|
19
|
+
}
|
|
20
|
+
async save(name, data) {
|
|
21
|
+
this.ensureDir();
|
|
22
|
+
const path = this.filePath(name);
|
|
23
|
+
writeFileSync(path, JSON.stringify(data, null, 2), "utf-8");
|
|
24
|
+
this.rotate();
|
|
25
|
+
}
|
|
26
|
+
async load(name) {
|
|
27
|
+
const path = this.filePath(name);
|
|
28
|
+
if (!existsSync(path))
|
|
29
|
+
return null;
|
|
30
|
+
try {
|
|
31
|
+
const raw = readFileSync(path, "utf-8");
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async list() {
|
|
39
|
+
if (!existsSync(this.directory))
|
|
40
|
+
return [];
|
|
41
|
+
const files = readdirSync(this.directory)
|
|
42
|
+
.filter(f => f.endsWith(".json"))
|
|
43
|
+
.sort((a, b) => {
|
|
44
|
+
const statA = statSync(join(this.directory, a));
|
|
45
|
+
const statB = statSync(join(this.directory, b));
|
|
46
|
+
return statB.mtimeMs - statA.mtimeMs;
|
|
47
|
+
});
|
|
48
|
+
const checkpoints = [];
|
|
49
|
+
for (const file of files) {
|
|
50
|
+
try {
|
|
51
|
+
const raw = readFileSync(join(this.directory, file), "utf-8");
|
|
52
|
+
checkpoints.push(JSON.parse(raw));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Skip corrupted files
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return checkpoints;
|
|
59
|
+
}
|
|
60
|
+
async delete(name) {
|
|
61
|
+
const path = this.filePath(name);
|
|
62
|
+
if (!existsSync(path))
|
|
63
|
+
return false;
|
|
64
|
+
unlinkSync(path);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
rotate() {
|
|
68
|
+
if (!existsSync(this.directory))
|
|
69
|
+
return;
|
|
70
|
+
const files = readdirSync(this.directory)
|
|
71
|
+
.filter(f => f.endsWith(".json"))
|
|
72
|
+
.map(f => ({
|
|
73
|
+
name: f,
|
|
74
|
+
mtime: statSync(join(this.directory, f)).mtimeMs,
|
|
75
|
+
}))
|
|
76
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
77
|
+
if (files.length > this.maxCheckpoints) {
|
|
78
|
+
for (const file of files.slice(this.maxCheckpoints)) {
|
|
79
|
+
unlinkSync(join(this.directory, file.name));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=file-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/persistence/file-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC3G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIrC,MAAM,OAAO,SAAS;IACZ,SAAS,CAAS;IAClB,cAAc,CAAS;IAE/B,YAAY,SAAiB,EAAE,cAAsB;QACnD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,IAAY;QAC3B,0CAA0C;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAoB;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACvC,CAAC,CAAC,CAAC;QAEL,MAAM,WAAW,GAAqB,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9D,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAEpC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM;QACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO;QAExC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACT,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;SACjD,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CheckpointData } from "../types.js";
|
|
2
|
+
export interface IPersistenceAdapter {
|
|
3
|
+
save(name: string, data: CheckpointData): Promise<void>;
|
|
4
|
+
load(name: string): Promise<CheckpointData | null>;
|
|
5
|
+
list(): Promise<CheckpointData[]>;
|
|
6
|
+
delete(name: string): Promise<boolean>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACnD,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/persistence/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ThoughtStore } from "../engine/thought-store.js";
|
|
3
|
+
import type { DeepThinkConfig } from "../types.js";
|
|
4
|
+
export declare function registerBranchTool(server: McpServer, store: ThoughtStore, _config: DeepThinkConfig): void;
|
|
5
|
+
//# sourceMappingURL=branch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../src/tools/branch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAA6C,MAAM,aAAa,CAAC;AAG9F,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAkJzG"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { tokenize, jaccardSimilarity } from "../engine/analyzer.js";
|
|
3
|
+
export function registerBranchTool(server, store, _config) {
|
|
4
|
+
server.registerTool("branch", {
|
|
5
|
+
title: "Branch",
|
|
6
|
+
description: `Manage thought branches — create, list, compare, and merge alternative reasoning paths.
|
|
7
|
+
|
|
8
|
+
Use branching when:
|
|
9
|
+
- You want to explore multiple approaches in parallel
|
|
10
|
+
- A decision point has several viable options
|
|
11
|
+
- You need to compare trade-offs between alternatives
|
|
12
|
+
|
|
13
|
+
Operations:
|
|
14
|
+
- create: Start a new branch from any thought (use the think tool with branchFromThought)
|
|
15
|
+
- list: Show all branches with summaries
|
|
16
|
+
- compare: Compare two branches to find agreements, disagreements, and unique insights
|
|
17
|
+
- merge: Synthesize branches into a conclusion, recording which approach won and why`,
|
|
18
|
+
inputSchema: {
|
|
19
|
+
operation: z.enum(["list", "compare", "merge"]).describe("Branch operation to perform"),
|
|
20
|
+
branchA: z.string().optional().describe("First branch ID (for compare/merge)"),
|
|
21
|
+
branchB: z.string().optional().describe("Second branch ID (for compare/merge)"),
|
|
22
|
+
mergeConclusion: z.string().optional().describe("Your synthesis conclusion (for merge)"),
|
|
23
|
+
winningBranch: z.string().optional().describe("Which branch's approach won (for merge)"),
|
|
24
|
+
rationale: z.string().optional().describe("Why this branch won (for merge)"),
|
|
25
|
+
},
|
|
26
|
+
}, async (args) => {
|
|
27
|
+
switch (args.operation) {
|
|
28
|
+
case "list": {
|
|
29
|
+
const branches = store.getBranches();
|
|
30
|
+
const branchInfos = Object.entries(branches).map(([id, thoughts]) => ({
|
|
31
|
+
id,
|
|
32
|
+
fromThought: thoughts[0]?.branchFromThought ?? 0,
|
|
33
|
+
thoughtCount: thoughts.length,
|
|
34
|
+
summary: thoughts.length > 0
|
|
35
|
+
? thoughts[thoughts.length - 1].thought.slice(0, 100) + (thoughts[thoughts.length - 1].thought.length > 100 ? "..." : "")
|
|
36
|
+
: "(empty branch)",
|
|
37
|
+
}));
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: "text", text: JSON.stringify({ branches: branchInfos }, null, 2) }],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
case "compare": {
|
|
43
|
+
if (!args.branchA || !args.branchB) {
|
|
44
|
+
return {
|
|
45
|
+
isError: true,
|
|
46
|
+
content: [{ type: "text", text: "compare requires branchA and branchB" }],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const thoughtsA = store.getBranch(args.branchA);
|
|
50
|
+
const thoughtsB = store.getBranch(args.branchB);
|
|
51
|
+
if (thoughtsA.length === 0 || thoughtsB.length === 0) {
|
|
52
|
+
return {
|
|
53
|
+
isError: true,
|
|
54
|
+
content: [{ type: "text", text: `Branch not found: ${thoughtsA.length === 0 ? args.branchA : args.branchB}` }],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const tokensA = thoughtsA.map(t => tokenize(t.thought));
|
|
58
|
+
const tokensB = thoughtsB.map(t => tokenize(t.thought));
|
|
59
|
+
const agreements = [];
|
|
60
|
+
const disagreements = [];
|
|
61
|
+
const uniqueToA = [];
|
|
62
|
+
const uniqueToB = [];
|
|
63
|
+
for (const tA of thoughtsA) {
|
|
64
|
+
let bestSim = 0;
|
|
65
|
+
let bestMatch = "";
|
|
66
|
+
for (const tB of thoughtsB) {
|
|
67
|
+
const sim = jaccardSimilarity(tokenize(tA.thought), tokenize(tB.thought));
|
|
68
|
+
if (sim > bestSim) {
|
|
69
|
+
bestSim = sim;
|
|
70
|
+
bestMatch = tB.thought.slice(0, 80);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (bestSim > 0.4) {
|
|
74
|
+
agreements.push(tA.thought.slice(0, 80));
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
uniqueToA.push(tA.thought.slice(0, 80));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
for (const tB of thoughtsB) {
|
|
81
|
+
let bestSim = 0;
|
|
82
|
+
for (const tA of thoughtsA) {
|
|
83
|
+
const sim = jaccardSimilarity(tokenize(tB.thought), tokenize(tA.thought));
|
|
84
|
+
if (sim > bestSim)
|
|
85
|
+
bestSim = sim;
|
|
86
|
+
}
|
|
87
|
+
if (bestSim <= 0.4) {
|
|
88
|
+
uniqueToB.push(tB.thought.slice(0, 80));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const comparison = {
|
|
92
|
+
branchA: args.branchA,
|
|
93
|
+
branchB: args.branchB,
|
|
94
|
+
agreements,
|
|
95
|
+
disagreements,
|
|
96
|
+
uniqueToA,
|
|
97
|
+
uniqueToB,
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: "text", text: JSON.stringify(comparison, null, 2) }],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
case "merge": {
|
|
104
|
+
if (!args.mergeConclusion) {
|
|
105
|
+
return {
|
|
106
|
+
isError: true,
|
|
107
|
+
content: [{ type: "text", text: "merge requires mergeConclusion" }],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const history = store.getHistory();
|
|
111
|
+
const mergeThoughtNumber = history.length + 1;
|
|
112
|
+
store.addThought({
|
|
113
|
+
thought: `[MERGE] ${args.mergeConclusion}`,
|
|
114
|
+
thoughtNumber: mergeThoughtNumber,
|
|
115
|
+
totalThoughts: mergeThoughtNumber,
|
|
116
|
+
nextThoughtNeeded: false,
|
|
117
|
+
tags: ["merge"],
|
|
118
|
+
});
|
|
119
|
+
const result = {
|
|
120
|
+
mergedFrom: [args.branchA ?? "", args.branchB ?? ""].filter(Boolean),
|
|
121
|
+
conclusion: args.mergeConclusion,
|
|
122
|
+
winningBranch: args.winningBranch ?? null,
|
|
123
|
+
rationale: args.rationale ?? "",
|
|
124
|
+
mergedThoughtNumber: mergeThoughtNumber,
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=branch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch.js","sourceRoot":"","sources":["../../src/tools/branch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ThoughtStore } from "../engine/thought-store.js";
|
|
3
|
+
import type { DeepThinkConfig } from "../types.js";
|
|
4
|
+
import { FileStore } from "../persistence/file-store.js";
|
|
5
|
+
export declare function registerCheckpointTool(server: McpServer, store: ThoughtStore, config: DeepThinkConfig, fileStore: FileStore): void;
|
|
6
|
+
//# sourceMappingURL=checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CA2GlI"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerCheckpointTool(server, store, config, fileStore) {
|
|
3
|
+
server.registerTool("checkpoint", {
|
|
4
|
+
title: "Checkpoint",
|
|
5
|
+
description: `Save and restore reasoning state. Enables persistent thinking across sessions.
|
|
6
|
+
|
|
7
|
+
Use checkpoints to:
|
|
8
|
+
- Save progress before exploring a risky reasoning path
|
|
9
|
+
- Resume a thought chain after a session restart
|
|
10
|
+
- Create snapshots at key decision points
|
|
11
|
+
- Roll back to a previous state if reasoning goes off track
|
|
12
|
+
|
|
13
|
+
Operations:
|
|
14
|
+
- save: Snapshot the current thought chain, branches, and strategy
|
|
15
|
+
- load: Restore a previously saved checkpoint
|
|
16
|
+
- list: Show all available checkpoints
|
|
17
|
+
- delete: Remove a checkpoint`,
|
|
18
|
+
inputSchema: {
|
|
19
|
+
operation: z.enum(["save", "load", "list", "delete"]).describe("Checkpoint operation"),
|
|
20
|
+
name: z.string().optional().describe("Checkpoint name (for save/load/delete)"),
|
|
21
|
+
},
|
|
22
|
+
}, async (args) => {
|
|
23
|
+
switch (args.operation) {
|
|
24
|
+
case "save": {
|
|
25
|
+
const name = args.name ?? `auto-${Date.now()}`;
|
|
26
|
+
const state = store.serialize();
|
|
27
|
+
const checkpoint = {
|
|
28
|
+
name,
|
|
29
|
+
timestamp: new Date().toISOString(),
|
|
30
|
+
sessionId: store.getSessionId(),
|
|
31
|
+
thoughtHistory: state.thoughtHistory,
|
|
32
|
+
branches: state.branches,
|
|
33
|
+
activeStrategy: state.activeStrategy,
|
|
34
|
+
metadata: {},
|
|
35
|
+
projectPath: process.cwd(),
|
|
36
|
+
};
|
|
37
|
+
await fileStore.save(name, checkpoint);
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: "text", text: JSON.stringify({ saved: name, thoughtCount: state.thoughtHistory.length }, null, 2) }],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
case "load": {
|
|
43
|
+
if (!args.name) {
|
|
44
|
+
return {
|
|
45
|
+
isError: true,
|
|
46
|
+
content: [{ type: "text", text: "load requires a checkpoint name" }],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const checkpoint = await fileStore.load(args.name);
|
|
50
|
+
if (!checkpoint) {
|
|
51
|
+
return {
|
|
52
|
+
isError: true,
|
|
53
|
+
content: [{ type: "text", text: `Checkpoint not found: ${args.name}` }],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
store.restore({
|
|
57
|
+
thoughtHistory: checkpoint.thoughtHistory,
|
|
58
|
+
branches: checkpoint.branches,
|
|
59
|
+
activeStrategy: checkpoint.activeStrategy,
|
|
60
|
+
sessionId: checkpoint.sessionId,
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: "text", text: JSON.stringify({ loaded: args.name, thoughtCount: checkpoint.thoughtHistory.length }, null, 2) }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
case "list": {
|
|
67
|
+
const checkpoints = await fileStore.list();
|
|
68
|
+
const infos = checkpoints.map(cp => ({
|
|
69
|
+
name: cp.name,
|
|
70
|
+
timestamp: cp.timestamp,
|
|
71
|
+
thoughtCount: cp.thoughtHistory.length,
|
|
72
|
+
branchCount: Object.keys(cp.branches).length,
|
|
73
|
+
strategy: cp.activeStrategy,
|
|
74
|
+
projectPath: cp.projectPath,
|
|
75
|
+
}));
|
|
76
|
+
return {
|
|
77
|
+
content: [{ type: "text", text: JSON.stringify({ checkpoints: infos }, null, 2) }],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case "delete": {
|
|
81
|
+
if (!args.name) {
|
|
82
|
+
return {
|
|
83
|
+
isError: true,
|
|
84
|
+
content: [{ type: "text", text: "delete requires a checkpoint name" }],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const deleted = await fileStore.delete(args.name);
|
|
88
|
+
return {
|
|
89
|
+
content: [{ type: "text", text: JSON.stringify({ deleted: args.name, success: deleted }, null, 2) }],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ThoughtStore } from "../engine/thought-store.js";
|
|
3
|
+
import type { DeepThinkConfig } from "../types.js";
|
|
4
|
+
export declare function registerReflectTool(server: McpServer, store: ThoughtStore, config: DeepThinkConfig): void;
|
|
5
|
+
//# sourceMappingURL=reflect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/tools/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAC;AAGrE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA6CzG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Analyzer } from "../engine/analyzer.js";
|
|
3
|
+
export function registerReflectTool(server, store, config) {
|
|
4
|
+
const analyzer = new Analyzer(config);
|
|
5
|
+
server.registerTool("reflect", {
|
|
6
|
+
title: "Reflect",
|
|
7
|
+
description: `Analyze the thought chain to detect patterns, issues, and gaps. This is the key differentiator from sequential thinking — it actively reads and analyzes your reasoning.
|
|
8
|
+
|
|
9
|
+
Use reflect to:
|
|
10
|
+
- Check if you're going in circles (circular reasoning detection)
|
|
11
|
+
- Find contradictions between thoughts
|
|
12
|
+
- Get a progress summary
|
|
13
|
+
- Identify gaps in your analysis
|
|
14
|
+
- Check your reasoning against project-specific best practices (if .deep-think.json is configured)
|
|
15
|
+
|
|
16
|
+
Focus modes:
|
|
17
|
+
- "all": Full analysis (default)
|
|
18
|
+
- "progress": How far along and what's been covered
|
|
19
|
+
- "contradictions": Find conflicting thoughts
|
|
20
|
+
- "gaps": What reasoning steps are missing
|
|
21
|
+
- "patterns": Detect circular reasoning, anchoring, scope creep
|
|
22
|
+
|
|
23
|
+
The quality of reflection improves when thoughts include tags, confidence scores, and assumptions.`,
|
|
24
|
+
inputSchema: {
|
|
25
|
+
focus: z.enum(["all", "progress", "contradictions", "gaps", "patterns"]).optional().describe("What aspect to analyze (default: all)"),
|
|
26
|
+
},
|
|
27
|
+
}, async (args) => {
|
|
28
|
+
const history = store.getHistory();
|
|
29
|
+
if (history.length === 0) {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: "text", text: JSON.stringify({ summary: "No thoughts to reflect on yet.", patterns: [], suggestions: ["Start thinking first using the 'think' tool."], practiceViolations: [], progress: { totalThoughts: 0, uniqueTopics: 0, branchesExplored: 0, averageConfidence: null, confidenceTrend: "unknown", estimatedCompletion: 0 } }, null, 2) }],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const focus = args.focus ?? "all";
|
|
35
|
+
const result = analyzer.analyze(history, store.getBranches(), store.getActiveStrategy(), focus);
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=reflect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/tools/reflect.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,KAAmB,EAAE,MAAuB;IACjG,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE;;;;;;;;;;;;;;;;mGAgBgF;QAC7F,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;SACtI;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAEnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,8CAA8C,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC3W,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC;QAEhG,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ThoughtStore } from "../engine/thought-store.js";
|
|
3
|
+
import type { DeepThinkConfig } from "../types.js";
|
|
4
|
+
export declare function registerStrategizeTool(server: McpServer, store: ThoughtStore, config: DeepThinkConfig): void;
|
|
5
|
+
//# sourceMappingURL=strategize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategize.d.ts","sourceRoot":"","sources":["../../src/tools/strategize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAY,MAAM,aAAa,CAAC;AAG7D,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CA4E5G"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { BUILT_IN_STRATEGIES } from "../engine/strategies.js";
|
|
3
|
+
export function registerStrategizeTool(server, store, config) {
|
|
4
|
+
server.registerTool("strategize", {
|
|
5
|
+
title: "Strategize",
|
|
6
|
+
description: `Switch reasoning frameworks to guide your thinking process. Different problems benefit from different thinking strategies.
|
|
7
|
+
|
|
8
|
+
Built-in strategies:
|
|
9
|
+
- first-principles: Decompose assumptions and rebuild from ground truth
|
|
10
|
+
- red-team: Attack your own conclusions to find weaknesses
|
|
11
|
+
- convergent: Narrow from many options to one decision
|
|
12
|
+
- divergent: Generate ideas freely without judgment
|
|
13
|
+
- root-cause: Systematic investigation (5 whys, elimination)
|
|
14
|
+
- decision-matrix: Weighted criteria comparison
|
|
15
|
+
|
|
16
|
+
Custom strategies from .deep-think.json are also available if configured.
|
|
17
|
+
|
|
18
|
+
Operations:
|
|
19
|
+
- set: Activate a strategy (influences think feedback and reflect analysis)
|
|
20
|
+
- get: Show the current active strategy with its guidance
|
|
21
|
+
- list: Show all available strategies`,
|
|
22
|
+
inputSchema: {
|
|
23
|
+
operation: z.enum(["set", "get", "list"]).describe("Strategy operation"),
|
|
24
|
+
strategy: z.string().optional().describe("Strategy name (for set)"),
|
|
25
|
+
},
|
|
26
|
+
}, async (args) => {
|
|
27
|
+
const allStrategies = getAllStrategies(config);
|
|
28
|
+
switch (args.operation) {
|
|
29
|
+
case "list": {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: "text", text: JSON.stringify({ strategies: allStrategies.map(s => ({ name: s.name, description: s.description, whenToUse: s.whenToUse })) }, null, 2) }],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
case "get": {
|
|
35
|
+
const active = store.getActiveStrategy();
|
|
36
|
+
if (!active) {
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text: JSON.stringify({ activeStrategy: null, message: "No strategy active. Use 'set' to activate one." }, null, 2) }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const strategy = allStrategies.find(s => s.name === active);
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: "text", text: JSON.stringify({ activeStrategy: strategy ?? { name: active, description: "Unknown strategy" } }, null, 2) }],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
case "set": {
|
|
47
|
+
if (!args.strategy) {
|
|
48
|
+
return {
|
|
49
|
+
isError: true,
|
|
50
|
+
content: [{ type: "text", text: "set requires a strategy name" }],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const exists = allStrategies.some(s => s.name === args.strategy);
|
|
54
|
+
if (!exists) {
|
|
55
|
+
return {
|
|
56
|
+
isError: true,
|
|
57
|
+
content: [{ type: "text", text: `Unknown strategy: ${args.strategy}. Use 'list' to see available strategies.` }],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
store.setActiveStrategy(args.strategy);
|
|
61
|
+
const strategy = allStrategies.find(s => s.name === args.strategy);
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: "text", text: JSON.stringify({ activated: args.strategy, steps: strategy?.steps, guidingQuestions: strategy?.guidingQuestions }, null, 2) }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function getAllStrategies(config) {
|
|
70
|
+
const custom = config.strategies.custom.map(cs => ({
|
|
71
|
+
name: cs.name,
|
|
72
|
+
description: cs.description,
|
|
73
|
+
steps: cs.steps,
|
|
74
|
+
guidingQuestions: [],
|
|
75
|
+
reflectChecks: [],
|
|
76
|
+
whenToUse: cs.description,
|
|
77
|
+
}));
|
|
78
|
+
return [...BUILT_IN_STRATEGIES, ...custom];
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=strategize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strategize.js","sourceRoot":"","sources":["../../src/tools/strategize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { ThoughtStore } from "../engine/thought-store.js";
|
|
3
|
+
import type { DeepThinkConfig } from "../types.js";
|
|
4
|
+
import { FileStore } from "../persistence/file-store.js";
|
|
5
|
+
export declare function registerThinkTool(server: McpServer, store: ThoughtStore, config: DeepThinkConfig, fileStore: FileStore): void;
|
|
6
|
+
//# sourceMappingURL=think.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"think.d.ts","sourceRoot":"","sources":["../../src/tools/think.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI,CAyI7H"}
|