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.
- package/CHANGELOG.md +13 -0
- package/README.md +33 -23
- package/dist/src/config/model-constants.js +10 -6
- package/dist/src/config/model-defaults.js +1 -1
- package/dist/src/config/timeout-config.js +20 -10
- package/dist/src/memory/index.js +1 -1
- package/dist/src/memory/memory-config.js +2 -3
- package/dist/src/memory/memory-manager.js +10 -4
- package/dist/src/memory/providers/dokoro-provider.js +380 -276
- package/dist/src/profiles/balanced.js +10 -2
- package/dist/src/profiles/code_focus.js +10 -2
- package/dist/src/profiles/full.js +10 -2
- package/dist/src/profiles/heavy_coding.js +10 -2
- package/dist/src/profiles/minimal.js +10 -2
- package/dist/src/profiles/research_power.js +10 -2
- package/dist/src/server.js +6 -1
- package/dist/src/tools/diff-review-tool.js +120 -0
- package/dist/src/tools/doctor-tool.js +143 -0
- package/dist/src/tools/jury-tool.js +21 -14
- package/dist/src/tools/openrouter-tools.js +28 -24
- package/dist/src/tools/panel.js +24 -0
- package/dist/src/tools/plan-critique-tool.js +117 -0
- package/dist/src/tools/prompt-technique-tools.js +1 -1
- package/dist/src/tools/provider-catalog.js +140 -0
- package/dist/src/tools/registry.js +16 -0
- package/dist/src/tools/security-review-tool.js +71 -0
- package/dist/src/tools/tachi-tool.js +49 -2
- package/dist/src/tools/testgen-tool.js +57 -0
- package/dist/src/utils/api-keys.js +4 -2
- package/dist/src/utils/smart-api-client.js +13 -4
- package/dist/src/utils/streaming-helper.js +1 -1
- package/dist/src/utils/tool-config.js +17 -0
- package/docs/plans/monetization-roadmap/avenues.html +179 -0
- package/docs/plans/monetization-roadmap/hosting.html +114 -0
- package/docs/plans/monetization-roadmap/index.html +89 -0
- package/docs/plans/monetization-roadmap/plan-90.html +94 -0
- package/docs/plans/monetization-roadmap/style.css +241 -0
- package/docs/superpowers/plans/2026-07-01-gap-tools.md +1147 -0
- package/package.json +1 -1
- package/profiles/balanced.json +7 -3
- package/profiles/code_focus.json +7 -3
- package/profiles/full.json +7 -3
- package/profiles/heavy_coding.json +7 -3
- package/profiles/minimal.json +7 -3
- package/profiles/research_power.json +7 -3
- package/skills/redteam/SKILL.md +21 -0
- package/skills/review/SKILL.md +21 -0
- package/tools.config.json +4 -11
- package/profiles/debug_intensive.json +0 -33
- 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
|
-
[](https://www.npmjs.com/package/tachibot-mcp)
|
|
8
|
+
[](#-tool-ecosystem-61-tools)
|
|
9
9
|
[](LICENSE)
|
|
10
|
-
[](https://nodejs.org)
|
|
11
11
|
[](https://modelcontextprotocol.io)
|
|
12
12
|
|
|
13
|
-
**
|
|
13
|
+
**61 AI tools. 12 providers. One protocol.**
|
|
14
14
|
|
|
15
|
-
Orchestrate Perplexity, Grok, GPT-5.5, Gemini, Qwen, Kimi K2.
|
|
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-
|
|
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
|
|
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
|
-
- **
|
|
101
|
+
- **61 AI Tools** across 12 providers — 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) — Flash/search tier; reasoning default stays `gemini-3.1-pro-preview`
|
|
101
103
|
- **Multi-Model Council** — planner_maker synthesizes plans from 5+ models into bite-sized TDD steps
|
|
102
104
|
- **Smart Routing** — 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** |
|
|
116
|
+
| **Minimal** | 13 | Quick tasks, low token budget |
|
|
115
117
|
| **Research Power** | 35 | Deep investigation, multi-source |
|
|
116
|
-
| **Code Focus** |
|
|
117
|
-
| **Balanced** |
|
|
118
|
-
| **Heavy Coding**
|
|
119
|
-
| **Full** |
|
|
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** — 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
|
-
###
|
|
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)** — 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 (
|
|
191
|
+
## Tool Ecosystem (61 Tools)
|
|
182
192
|
|
|
183
|
-
### Research & Search (
|
|
184
|
-
`perplexity_ask` · `
|
|
193
|
+
### Research & Search (5)
|
|
194
|
+
`perplexity_ask` · `perplexity_reason` · `grok_search` · `openai_search` · `gemini_search`
|
|
185
195
|
|
|
186
196
|
### Reasoning & Planning (13)
|
|
187
197
|
`grok_reason` · `openai_reason` · `qwen_reason` · `qwq_reason` · `kimi_thinking` · `kimi_decompose` · `deepseek_reason` · `glm_reason` · `stepfun_reason` · `ernie_reason` · `planner_maker` · `planner_runner` · `list_plans`
|
|
188
198
|
|
|
189
|
-
### Code Intelligence (
|
|
190
|
-
`kimi_code` · `grok_code` · `grok_debug` · `qwen_coder` · `qwen_algo` · `qwen_competitive` · `deepseek_algo` · `minimax_code` · `minimax_agent`
|
|
199
|
+
### Code Intelligence (10)
|
|
200
|
+
`kimi_code` · `grok_code` · `grok_debug` · `qwen_coder` · `qwen_algo` · `qwen_competitive` · `deepseek_algo` · `minimax_code` · `minimax_agent` · `testgen`
|
|
191
201
|
|
|
192
|
-
### Analysis & Judgment (
|
|
193
|
-
`gemini_analyze_text` · `gemini_analyze_code` · `gemini_judge` · `jury` · `gemini_brainstorm` · `openai_brainstorm` · `openai_code_review` · `openai_explain` · `grok_brainstorm` · `grok_architect` · `kimi_long_context`
|
|
202
|
+
### Analysis & Judgment (14)
|
|
203
|
+
`gemini_analyze_text` · `gemini_analyze_code` · `gemini_judge` · `jury` · `diff_review` · `plan_critique` · `gemini_brainstorm` · `openai_brainstorm` · `openai_code_review` · `openai_explain` · `grok_brainstorm` · `grok_architect` · `security_review` · `kimi_long_context`
|
|
194
204
|
|
|
195
|
-
### Meta & Orchestration (
|
|
196
|
-
`think` · `nextThought` · `focus` · `tachi` · `usage_stats`
|
|
205
|
+
### Meta & Orchestration (6)
|
|
206
|
+
`think` · `nextThought` · `focus` · `tachi` · `doctor` · `usage_stats`
|
|
197
207
|
|
|
198
208
|
### Workflows (9)
|
|
199
209
|
`workflow` · `workflow_start` · `continue_workflow` · `list_workflows` · `create_workflow` · `visualize_workflow` · `workflow_status` · `validate_workflow` · `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.
|
|
91
|
-
// K2.
|
|
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
|
-
|
|
95
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
40
|
-
*
|
|
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
|
-
|
|
84
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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:
|
|
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
|
package/dist/src/memory/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
113
|
-
|
|
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
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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':
|