tachibot-mcp 2.23.1 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +33 -23
  3. package/dist/src/config/model-constants.js +10 -6
  4. package/dist/src/config/model-defaults.js +1 -1
  5. package/dist/src/config/timeout-config.js +20 -10
  6. package/dist/src/memory/index.js +1 -1
  7. package/dist/src/memory/memory-config.js +2 -3
  8. package/dist/src/memory/memory-manager.js +10 -4
  9. package/dist/src/memory/providers/dokoro-provider.js +380 -276
  10. package/dist/src/profiles/balanced.js +10 -2
  11. package/dist/src/profiles/code_focus.js +10 -2
  12. package/dist/src/profiles/full.js +10 -2
  13. package/dist/src/profiles/heavy_coding.js +10 -2
  14. package/dist/src/profiles/minimal.js +10 -2
  15. package/dist/src/profiles/research_power.js +10 -2
  16. package/dist/src/server.js +6 -1
  17. package/dist/src/tools/diff-review-tool.js +120 -0
  18. package/dist/src/tools/doctor-tool.js +143 -0
  19. package/dist/src/tools/jury-tool.js +21 -14
  20. package/dist/src/tools/openrouter-tools.js +28 -24
  21. package/dist/src/tools/panel.js +24 -0
  22. package/dist/src/tools/plan-critique-tool.js +117 -0
  23. package/dist/src/tools/prompt-technique-tools.js +1 -1
  24. package/dist/src/tools/provider-catalog.js +140 -0
  25. package/dist/src/tools/registry.js +16 -0
  26. package/dist/src/tools/security-review-tool.js +71 -0
  27. package/dist/src/tools/tachi-tool.js +49 -2
  28. package/dist/src/tools/testgen-tool.js +57 -0
  29. package/dist/src/utils/api-keys.js +4 -2
  30. package/dist/src/utils/smart-api-client.js +13 -4
  31. package/dist/src/utils/streaming-helper.js +1 -1
  32. package/dist/src/utils/tool-config.js +17 -0
  33. package/docs/plans/monetization-roadmap/avenues.html +179 -0
  34. package/docs/plans/monetization-roadmap/hosting.html +114 -0
  35. package/docs/plans/monetization-roadmap/index.html +89 -0
  36. package/docs/plans/monetization-roadmap/plan-90.html +94 -0
  37. package/docs/plans/monetization-roadmap/style.css +241 -0
  38. package/docs/superpowers/plans/2026-07-01-gap-tools.md +1147 -0
  39. package/package.json +1 -1
  40. package/profiles/balanced.json +7 -3
  41. package/profiles/code_focus.json +7 -3
  42. package/profiles/full.json +7 -3
  43. package/profiles/heavy_coding.json +7 -3
  44. package/profiles/minimal.json +7 -3
  45. package/profiles/research_power.json +7 -3
  46. package/skills/redteam/SKILL.md +21 -0
  47. package/skills/review/SKILL.md +21 -0
  48. package/tools.config.json +4 -11
  49. package/profiles/debug_intensive.json +0 -33
  50. package/profiles/workflow_builder.json +0 -36
package/CHANGELOG.md CHANGED
@@ -5,6 +5,19 @@ All notable changes to TachiBot MCP will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.23.3] - 2026-06-17
9
+
10
+ ### Changed
11
+ - **GLM-5.1 → GLM-5.2** (`z-ai/glm-5.2`, released Jun 13 on OpenRouter, verified via grok_search + web): Zhipu's open-weights flagship for long-horizon tasks — usable 1M-token context (up from agentic-tier 5.1), two thinking-effort levels (High/Max). SWE-Bench Pro 62.1 (up from 58.4), Terminal-Bench 2.1 81.0 (up from 62.0); beats GPT-5.5 on several long-horizon coding benchmarks at ~1/6 the cost. List price $1.40/$4.40 per M (262K max output). Powers `glm_reason` and the `glm` juror. GLM-5.1 kept as quota fallback via `MODEL_FALLBACKS` (GLM-5.2 → GLM-5.1 → GLM-5); the `glm` substring already routes 5.2 to the 600s reasoning timeout.
12
+
13
+ ## [2.23.2] - 2026-06-15
14
+
15
+ ### Changed
16
+ - **Kimi K2.6 → K2.7-Code** (`moonshotai/kimi-k2.7-code`, released Jun 12 on OpenRouter, verified via grok_search): coding-specialized variant built on K2.6 — +21.8% on Kimi Code Bench v2 with lower token use, 262K context, native multimodal, always-thinking mode. List price $0.75/$3.50 per M. Now powers all Kimi tools — `kimi_thinking`, `kimi_code`, `kimi_decompose`, `kimi_long_context` (`openrouter-tools.ts`) and the `kimi` juror (`jury-tool.ts`). K2.6 kept as quota fallback via `MODEL_FALLBACKS` (K2.7-Code → K2.6 → K2-Thinking); the `kimi` substring already routes K2.7-Code to the 600s reasoning timeout (regression test added).
17
+
18
+ ### Notes
19
+ - No general-purpose Kimi K2.7 exists yet — K2.7-Code is the only post-K2.6 release. The coding-tuned model now also serves the reasoning/long-context tools and the kimi juror.
20
+
8
21
  ## [2.23.1] - 2026-06-11
9
22
 
10
23
  ### Changed
package/README.md CHANGED
@@ -4,18 +4,18 @@
4
4
 
5
5
  ### Multi-Model AI Orchestration Platform
6
6
 
7
- [![Version](https://img.shields.io/badge/version-2.15.2-blue.svg)](https://www.npmjs.com/package/tachibot-mcp)
8
- [![Tools](https://img.shields.io/badge/tools-57_active-brightgreen.svg)](#-tool-ecosystem-57-tools)
7
+ [![Version](https://img.shields.io/badge/version-2.24.0-blue.svg)](https://www.npmjs.com/package/tachibot-mcp)
8
+ [![Tools](https://img.shields.io/badge/tools-61_active-brightgreen.svg)](#-tool-ecosystem-61-tools)
9
9
  [![License](https://img.shields.io/badge/license-AGPL--3.0-green.svg)](LICENSE)
10
- [![Node](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org)
10
+ [![Node](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen.svg)](https://nodejs.org)
11
11
  [![MCP](https://img.shields.io/badge/MCP-Compatible-purple.svg)](https://modelcontextprotocol.io)
12
12
 
13
- **57 AI tools. 12 providers. One protocol.**
13
+ **61 AI tools. 12 providers. One protocol.**
14
14
 
15
- Orchestrate Perplexity, Grok, GPT-5.5, Gemini, Qwen, Kimi K2.6, and MiniMax M3
15
+ Orchestrate Perplexity, Grok, GPT-5.5, Gemini, Qwen, Kimi K2.7-Code, and MiniMax M3
16
16
  from Claude Code, Claude Desktop, Cursor, or any MCP client.
17
17
 
18
- [Get Started](#-quick-start) · [View Tools](#-tool-ecosystem-57-tools) · [Documentation](https://tachibot.com/docs)
18
+ [Get Started](#-quick-start) · [View Tools](#-tool-ecosystem-61-tools) · [Documentation](https://tachibot.com/docs)
19
19
 
20
20
  <br>
21
21
 
@@ -70,7 +70,7 @@ Techniques are embedded directly in tool system prompts for automatic applicatio
70
70
 
71
71
  ## Skills (Claude Code)
72
72
 
73
- TachiBot ships with 12 slash commands for Claude Code. These orchestrate the tools into powerful workflows:
73
+ TachiBot ships with 14 slash commands for Claude Code. These orchestrate the tools into powerful workflows:
74
74
 
75
75
  | Skill | What it does | Example |
76
76
  |-------|-------------|---------|
@@ -85,6 +85,8 @@ TachiBot ships with 12 slash commands for Claude Code. These orchestrate the too
85
85
  | `/lens` | Long-context analysis over Kimi's 256K window | `/lens find inconsistencies in this spec` |
86
86
  | `/reflect` | Grounded reflexion loop — critique vs external evidence | `/reflect harden this auth middleware` |
87
87
  | `/tot` | Tree-of-Thought: branch → jury-prune → synthesize | `/tot design a rate limiter` |
88
+ | `/review` | Multi-model diff review — panel + Gemini judge verdict | `/review` (or paste a diff) |
89
+ | `/redteam` | Adversarial plan red-team — pre-mortem, risks, plan edits | `/redteam <paste plan>` |
88
90
  | `/tachi` | Help - see available skills, tools, key status | `/tachi` |
89
91
 
90
92
  Skills automatically adapt to your configured API keys. Even with just 1-2 providers, all skills work.
@@ -96,7 +98,7 @@ Skills automatically adapt to your configured API keys. Even with just 1-2 provi
96
98
  ## Key Features
97
99
 
98
100
  ### Multi-Model Intelligence
99
- - **57 AI Tools** across 12 providers &mdash; Perplexity, Grok, GPT-5, Gemini, Qwen, Kimi, MiniMax, DeepSeek, GLM (Zhipu), StepFun, ERNIE (Baidu), plus free local models (Ollama / LM Studio / llama.cpp / vLLM)
101
+ - **61 AI Tools** across 12 providers &mdash; Perplexity, Grok, GPT-5, Gemini, Qwen, Kimi, MiniMax, DeepSeek, GLM (Zhipu), StepFun, ERNIE (Baidu), plus free local models (Ollama / LM Studio / llama.cpp / vLLM)
100
102
  - **Gemini 3.5 Flash** (`gemini-3.5-flash`, GA May 19 2026) &mdash; Flash/search tier; reasoning default stays `gemini-3.1-pro-preview`
101
103
  - **Multi-Model Council** &mdash; planner_maker synthesizes plans from 5+ models into bite-sized TDD steps
102
104
  - **Smart Routing** &mdash; Automatic model selection for optimal results
@@ -111,12 +113,12 @@ Skills automatically adapt to your configured API keys. Even with just 1-2 provi
111
113
  ### Tool Profiles
112
114
  | Profile | Tools | Best For |
113
115
  |---------|-------|----------|
114
- | **Minimal** | 12 | Quick tasks, low token budget |
116
+ | **Minimal** | 13 | Quick tasks, low token budget |
115
117
  | **Research Power** | 35 | Deep investigation, multi-source |
116
- | **Code Focus** | 34 | Software development, SWE tasks |
117
- | **Balanced** | 45 | General-purpose, mixed workflows |
118
- | **Heavy Coding** (default) | 50 | Max code tools + agentic workflows |
119
- | **Full** | 57 | Everything enabled |
118
+ | **Code Focus** | 39 | Software development, SWE tasks |
119
+ | **Balanced** | 50 | General-purpose, mixed workflows |
120
+ | **Heavy Coding** | 54 | Max code tools + agentic workflows |
121
+ | **Full** (default) | 61 | Everything enabled |
120
122
 
121
123
  ### Developer Experience
122
124
  - **Claude Code** &mdash; First-class support
@@ -134,7 +136,15 @@ Skills automatically adapt to your configured API keys. Even with just 1-2 provi
134
136
  npm install -g tachibot-mcp
135
137
  ```
136
138
 
137
- ### Setup
139
+ ### Claude Code (one-liner)
140
+
141
+ ```bash
142
+ claude mcp add tachibot -- npx -y -p tachibot-mcp tachibot
143
+ ```
144
+
145
+ Then verify with `/mcp`. Add API keys with `--env`, e.g. `--env OPENROUTER_API_KEY=sk-or-xxx --env PERPLEXITY_API_KEY=pplx-xxx`.
146
+
147
+ ### Setup (Claude Desktop)
138
148
 
139
149
  **Gateway Mode (Recommended)** &mdash; 2 keys, all providers:
140
150
 
@@ -178,22 +188,22 @@ See [Installation Guide](docs/INSTALLATION_BOTH.md) for detailed instructions.
178
188
 
179
189
  ---
180
190
 
181
- ## Tool Ecosystem (57 Tools)
191
+ ## Tool Ecosystem (61 Tools)
182
192
 
183
- ### Research & Search (6)
184
- `perplexity_ask` &#183; `perplexity_research` &#183; `perplexity_reason` &#183; `grok_search` &#183; `openai_search` &#183; `gemini_search`
193
+ ### Research & Search (5)
194
+ `perplexity_ask` &#183; `perplexity_reason` &#183; `grok_search` &#183; `openai_search` &#183; `gemini_search`
185
195
 
186
196
  ### Reasoning & Planning (13)
187
197
  `grok_reason` &#183; `openai_reason` &#183; `qwen_reason` &#183; `qwq_reason` &#183; `kimi_thinking` &#183; `kimi_decompose` &#183; `deepseek_reason` &#183; `glm_reason` &#183; `stepfun_reason` &#183; `ernie_reason` &#183; `planner_maker` &#183; `planner_runner` &#183; `list_plans`
188
198
 
189
- ### Code Intelligence (9)
190
- `kimi_code` &#183; `grok_code` &#183; `grok_debug` &#183; `qwen_coder` &#183; `qwen_algo` &#183; `qwen_competitive` &#183; `deepseek_algo` &#183; `minimax_code` &#183; `minimax_agent`
199
+ ### Code Intelligence (10)
200
+ `kimi_code` &#183; `grok_code` &#183; `grok_debug` &#183; `qwen_coder` &#183; `qwen_algo` &#183; `qwen_competitive` &#183; `deepseek_algo` &#183; `minimax_code` &#183; `minimax_agent` &#183; `testgen`
191
201
 
192
- ### Analysis & Judgment (11)
193
- `gemini_analyze_text` &#183; `gemini_analyze_code` &#183; `gemini_judge` &#183; `jury` &#183; `gemini_brainstorm` &#183; `openai_brainstorm` &#183; `openai_code_review` &#183; `openai_explain` &#183; `grok_brainstorm` &#183; `grok_architect` &#183; `kimi_long_context`
202
+ ### Analysis & Judgment (14)
203
+ `gemini_analyze_text` &#183; `gemini_analyze_code` &#183; `gemini_judge` &#183; `jury` &#183; `diff_review` &#183; `plan_critique` &#183; `gemini_brainstorm` &#183; `openai_brainstorm` &#183; `openai_code_review` &#183; `openai_explain` &#183; `grok_brainstorm` &#183; `grok_architect` &#183; `security_review` &#183; `kimi_long_context`
194
204
 
195
- ### Meta & Orchestration (5)
196
- `think` &#183; `nextThought` &#183; `focus` &#183; `tachi` &#183; `usage_stats`
205
+ ### Meta & Orchestration (6)
206
+ `think` &#183; `nextThought` &#183; `focus` &#183; `tachi` &#183; `doctor` &#183; `usage_stats`
197
207
 
198
208
  ### Workflows (9)
199
209
  `workflow` &#183; `workflow_start` &#183; `continue_workflow` &#183; `list_workflows` &#183; `create_workflow` &#183; `visualize_workflow` &#183; `workflow_status` &#183; `validate_workflow` &#183; `validate_workflow_file`
@@ -87,12 +87,14 @@ export const GROK_MODELS = {
87
87
  _3: "grok-3", // Legacy with search: 256K→2M
88
88
  };
89
89
  // Kimi Models (Moonshot AI via OpenRouter)
90
- // K2.6 released Apr 20, 2026 - 1T MoE, leads SWE-bench Pro for long-horizon coding
91
- // K2.5 released Jan 27, 2026 - kept as fallback
90
+ // K2.7-Code released Jun 12, 2026 - coding-specialized (built on K2.6), +21.8% on Kimi Code Bench v2, lower token use, 262K ctx, multimodal, always-thinking
91
+ // K2.6 released Apr 20, 2026 - 1T MoE, leads SWE-bench Pro for long-horizon coding (fallback)
92
+ // K2.5 released Jan 27, 2026 - kept as legacy
92
93
  export const KIMI_MODELS = {
93
94
  K2_THINKING: "moonshotai/kimi-k2-thinking", // 1T MoE, 32B active - agentic reasoning (256k context)
94
- K2_6: "moonshotai/kimi-k2.6", // CURRENT: 1T MoE, SWE-Pro leader, ~$0.74/$4.65
95
- K2_5: "moonshotai/kimi-k2.5", // Previous: multimodal + agent swarm (fallback)
95
+ K2_7_CODE: "moonshotai/kimi-k2.7-code", // CURRENT (Jun 12, 2026): coding-specialized, +21.8% Code Bench v2, 262K ctx, $0.75/$3.50
96
+ K2_6: "moonshotai/kimi-k2.6", // Previous (Apr 2026): 1T MoE, SWE-Pro leader (fallback)
97
+ K2_5: "moonshotai/kimi-k2.5", // Legacy: multimodal + agent swarm
96
98
  };
97
99
  // MiniMax Models (MiniMax via OpenRouter)
98
100
  // M3 released May 31, 2026 - 1M ctx, MSA sparse attention (~1/20 compute at 1M), native multimodal
@@ -186,7 +188,7 @@ export const CURRENT_MODELS = {
186
188
  reason: PERPLEXITY_MODELS.SONAR_REASONING, // sonar-reasoning-pro $2/$8 per M
187
189
  },
188
190
  openrouter: {
189
- kimi: KIMI_MODELS.K2_6, // K2.6 (Apr 2026): 1T MoE, SWE-bench Pro leader
191
+ kimi: KIMI_MODELS.K2_7_CODE, // K2.7-Code (Jun 2026): coding-specialized, built on K2.6
190
192
  qwen: QWEN_MODELS.CODER_NEXT, // Qwen3-Coder-Next: 80B/3B MoE, 262K ctx, SWE >70% (no 3.6-coder yet)
191
193
  qwen_reason: QWEN_MODELS.MAX_THINKING, // 235B MoE thinking mode (HMMT 98%) — still best for reasoning
192
194
  minimax: MINIMAX_MODELS.M3, // M3: 1M ctx, MSA sparse attention, agentic/coding
@@ -304,7 +306,7 @@ export const TOOL_DEFAULTS = {
304
306
  temperature: 0.3, // Lower for precise reasoning
305
307
  },
306
308
  kimi_thinking: {
307
- model: KIMI_MODELS.K2_6, // K2.6 (Apr 2026): 1T MoE, SWE-bench Pro leader
309
+ model: KIMI_MODELS.K2_7_CODE, // K2.7-Code (Jun 2026): coding-specialized, built on K2.6
308
310
  maxTokens: 16000,
309
311
  temperature: 0.7,
310
312
  },
@@ -370,6 +372,7 @@ export const MODEL_DISPLAY_NAMES = {
370
372
  "sonar-reasoning-pro": "perplexity-reason",
371
373
  // Kimi (Moonshot)
372
374
  "moonshotai/kimi-k2-thinking": "kimi-k2",
375
+ "moonshotai/kimi-k2.7-code": "kimi-k2.7-code",
373
376
  "moonshotai/kimi-k2.6": "kimi-k2.6",
374
377
  "moonshotai/kimi-k2.5": "kimi-k2.5",
375
378
  "moonshotai/kimi-k2.5-thinking": "kimi-k2.5",
@@ -424,6 +427,7 @@ export const MODEL_PRICING = {
424
427
  "sonar-reasoning-pro": 0.006, // avoid - expensive reasoning tokens
425
428
  // OpenRouter models - Kimi
426
429
  "moonshotai/kimi-k2-thinking": 0.002,
430
+ "moonshotai/kimi-k2.7-code": 0.002125, // ($0.75 + $3.50) / 2 / 1000 (Jun 12, 2026)
427
431
  "moonshotai/kimi-k2.6": 0.0027, // ($0.74 + $4.65) / 2 / 1000 (Apr 2026)
428
432
  "moonshotai/kimi-k2.5": 0.003,
429
433
  "moonshotai/kimi-k2.5-thinking": 0.003,
@@ -28,7 +28,7 @@ const MODELS = {
28
28
  // OpenRouter
29
29
  QWEN: QWEN_MODELS.CODER_NEXT, // qwen/qwen3-coder-next (80B/3B MoE, 262K ctx)
30
30
  QWEN_REASON: QWEN_MODELS.MAX_THINKING, // qwen/qwen3-235b-a22b-thinking (235B MoE)
31
- KIMI: KIMI_MODELS.K2_6, // moonshotai/kimi-k2.6 (Apr 2026 - SWE-bench Pro leader)
31
+ KIMI: KIMI_MODELS.K2_7_CODE, // moonshotai/kimi-k2.7-code (Jun 2026 - coding-specialized, built on K2.6)
32
32
  MINIMAX: MINIMAX_MODELS.M3, // minimax/minimax-m3 (May 2026 - 1M ctx, MSA sparse attention)
33
33
  };
34
34
  /**
@@ -36,8 +36,8 @@ export function getTimeoutConfig() {
36
36
  * Thinking/reasoning/swarm models get extended timeout (600s default).
37
37
  * Standard models get 180s default.
38
38
  *
39
- * NOTE: All Kimi K2 variants (incl. 'moonshotai/kimi-k2.6') run the Agent Swarm
40
- * and need the extended timeout — but their model IDs don't contain 'thinking',
39
+ * NOTE: All Kimi K2 variants (incl. 'moonshotai/kimi-k2.7-code', which is always in
40
+ * thinking mode) need the extended timeout — but their model IDs don't contain 'thinking',
41
41
  * so we match 'kimi' explicitly. Same applies to DeepSeek V4 and Zhipu GLM, whose
42
42
  * reasoning passes are slow but whose IDs lack the 'thinking'/'reasoning' marker.
43
43
  * This keeps primary and fallback consistent and lets these tools inherit 600s
@@ -77,14 +77,19 @@ export function formatTimeout(ms) {
77
77
  return `${minutes}m ${remainingSeconds}s`;
78
78
  }
79
79
  /**
80
- * Create timeout promise for use with Promise.race()
80
+ * Create timeout promise for use with Promise.race(), plus a cancel handle.
81
+ * The race's loser leaves its timer scheduled unless the caller cancels it —
82
+ * without that, a fast-resolving `promise` still leaves this setTimeout alive
83
+ * for the full `ms`, holding the event loop open.
81
84
  */
82
85
  export function createTimeoutPromise(ms, message) {
83
- return new Promise((_, reject) => {
84
- setTimeout(() => {
86
+ let timer;
87
+ const promise = new Promise((_, reject) => {
88
+ timer = setTimeout(() => {
85
89
  reject(new Error(message || `Operation timed out after ${formatTimeout(ms)}`));
86
90
  }, ms);
87
91
  });
92
+ return { promise, cancel: () => clearTimeout(timer) };
88
93
  }
89
94
  /**
90
95
  * Wrap promise with timeout
@@ -93,10 +98,13 @@ export async function withTimeout(promise, timeoutMs, toolName) {
93
98
  const timeoutMessage = toolName
94
99
  ? `${toolName} operation timed out after ${formatTimeout(timeoutMs)}`
95
100
  : `Operation timed out after ${formatTimeout(timeoutMs)}`;
96
- return Promise.race([
97
- promise,
98
- createTimeoutPromise(timeoutMs, timeoutMessage)
99
- ]);
101
+ const raceTimeout = createTimeoutPromise(timeoutMs, timeoutMessage);
102
+ try {
103
+ return await Promise.race([promise, raceTimeout.promise]);
104
+ }
105
+ finally {
106
+ raceTimeout.cancel();
107
+ }
100
108
  }
101
109
  /**
102
110
  * Check if we should show progress (operation exceeds threshold)
@@ -127,7 +135,9 @@ export const SMART_TIMEOUT_DEFAULTS = {
127
135
  },
128
136
  openai: {
129
137
  base: 60000, // 60 seconds - GPT-5.4 reasoning needs more time
130
- max: 180000 // 3 minutes - high/xhigh reasoning effort
138
+ max: 600000 // 10 minutes - GPT-5.5 high/xhigh effort can exceed the
139
+ // OpenAI SDK's 900s default; 180s was cutting off real
140
+ // reasoning runs (verified 2026-07 deep-research)
131
141
  },
132
142
  anthropic: {
133
143
  base: 20000, // 20 seconds
@@ -9,7 +9,7 @@ export * from './memory-manager.js';
9
9
  // Provider exports
10
10
  export * from './providers/local-provider.js';
11
11
  export * from './providers/mem0-provider.js';
12
- // export * from './providers/dokoro-provider.js';
12
+ export * from './providers/dokoro-provider.js';
13
13
  // export * from './providers/hybrid-provider.js';
14
14
  // Main API
15
15
  export { getMemoryManager, resetMemoryManager, HierarchicalMemoryManager } from './memory-manager.js';
@@ -109,9 +109,8 @@ export function validateMemoryConfig(config) {
109
109
  if (config.provider === 'mem0' && !config.mem0?.apiKey && !process.env.MEM0_API_KEY) {
110
110
  errors.push('Mem0 provider requires API key (MEM0_API_KEY or config.mem0.apiKey)');
111
111
  }
112
- if (config.provider === 'dokoro' && !config.dokoro?.connectionString && !process.env.DOKORO_CONNECTION) {
113
- errors.push('Dokoro provider requires connection string');
114
- }
112
+ // Dokoro is file-backed: connectionString is optional (falls back to
113
+ // DOKORO_PATH env or {cwd}/dokoro), so no validation needed here.
115
114
  if (config.provider === 'local' && !config.local?.path) {
116
115
  errors.push('Local provider requires storage path');
117
116
  }
@@ -6,7 +6,7 @@ import { mergeMemoryConfig, validateMemoryConfig } from './memory-config.js';
6
6
  import { LocalProvider } from './providers/local-provider.js';
7
7
  import { Mem0Provider } from './providers/mem0-provider.js';
8
8
  import { randomBytes } from 'crypto';
9
- // import { DokoroProvider } from './providers/dokoro-provider.js';
9
+ import { DokoroProvider } from './providers/dokoro-provider.js';
10
10
  // import { HybridProvider } from './providers/hybrid-provider.js';
11
11
  /**
12
12
  * Main memory manager that coordinates all providers
@@ -245,9 +245,15 @@ export class HierarchicalMemoryManager {
245
245
  return null;
246
246
  }
247
247
  case 'dokoro':
248
- // TODO: Implement Dokoro provider
249
- console.warn('Dokoro provider not yet implemented');
250
- return null;
248
+ try {
249
+ const provider = new DokoroProvider(this.config.dokoro || {});
250
+ await provider.initialize();
251
+ return provider;
252
+ }
253
+ catch (error) {
254
+ console.error('Failed to create Dokoro provider:', error);
255
+ return null;
256
+ }
251
257
  case 'local':
252
258
  return await this.createLocalProvider();
253
259
  case 'hybrid':