watashi-db 0.0.13 → 0.0.15
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.md +36 -0
- package/LICENSE +1 -1
- package/README.md +64 -2
- package/cowork-plugin/skills/groom/SKILL.md +51 -15
- package/cowork-plugin/skills/recall/SKILL.md +5 -6
- package/cowork-plugin/skills/reflect/SKILL.md +4 -4
- package/cowork-plugin/skills/remember/SKILL.md +3 -3
- package/cowork-plugin/skills/session-start/SKILL.md +3 -3
- package/dist/auth/token.d.ts +7 -0
- package/dist/auth/token.js +14 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/config/schema.js +1 -1
- package/dist/constants.d.ts +9 -9
- package/dist/constants.js +29 -43
- package/dist/constants.js.map +1 -1
- package/dist/database/archive.js +6 -6
- package/dist/database/groom.js +5 -5
- package/dist/database/groom.js.map +1 -1
- package/dist/database/queries-core.d.ts +109 -5
- package/dist/database/queries-core.js +546 -186
- package/dist/database/queries-core.js.map +1 -1
- package/dist/database/queries.d.ts +85 -5
- package/dist/database/queries.js +33 -0
- package/dist/database/queries.js.map +1 -1
- package/dist/database/schema.d.ts +1 -0
- package/dist/database/schema.js +2299 -406
- package/dist/database/schema.js.map +1 -1
- package/dist/embedding/embed-on-write.d.ts +7 -1
- package/dist/embedding/embed-on-write.js +8 -3
- package/dist/embedding/embed-on-write.js.map +1 -1
- package/dist/hook.js +17 -9
- package/dist/hook.js.map +1 -1
- package/dist/http-server.d.ts +6 -0
- package/dist/http-server.js +235 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/resources/config-guide-content.d.ts +1 -1
- package/dist/resources/config-guide-content.js +2 -2
- package/dist/server-core.d.ts +15 -0
- package/dist/server-core.js +113 -0
- package/dist/server-core.js.map +1 -0
- package/dist/server-instructions.js +27 -24
- package/dist/server-instructions.js.map +1 -1
- package/dist/server.d.ts +4 -1
- package/dist/server.js +9 -103
- package/dist/server.js.map +1 -1
- package/dist/setup.js +5 -6
- package/dist/setup.js.map +1 -1
- package/dist/store/federation.d.ts +12 -1
- package/dist/store/federation.js +38 -0
- package/dist/store/federation.js.map +1 -1
- package/dist/store/sync-manager.d.ts +1 -1
- package/dist/store/sync-manager.js +9 -9
- package/dist/tools/claim-tools.d.ts +1 -1
- package/dist/tools/claim-tools.js +30 -17
- package/dist/tools/claim-tools.js.map +1 -1
- package/dist/tools/decision-tools.d.ts +1 -1
- package/dist/tools/decision-tools.js +23 -7
- package/dist/tools/decision-tools.js.map +1 -1
- package/dist/tools/episode-tools.d.ts +1 -1
- package/dist/tools/episode-tools.js +28 -7
- package/dist/tools/episode-tools.js.map +1 -1
- package/dist/tools/file-tools.d.ts +3 -0
- package/dist/tools/file-tools.js +350 -0
- package/dist/tools/file-tools.js.map +1 -0
- package/dist/tools/get-tools.d.ts +1 -1
- package/dist/tools/get-tools.js +39 -5
- package/dist/tools/get-tools.js.map +1 -1
- package/dist/tools/helpers.d.ts +40 -0
- package/dist/tools/helpers.js +69 -0
- package/dist/tools/helpers.js.map +1 -1
- package/dist/tools/knowledge-tools.d.ts +1 -1
- package/dist/tools/knowledge-tools.js +38 -6
- package/dist/tools/knowledge-tools.js.map +1 -1
- package/dist/tools/maintenance-tools.d.ts +1 -1
- package/dist/tools/maintenance-tools.js +95 -52
- package/dist/tools/maintenance-tools.js.map +1 -1
- package/dist/tools/memo-tools.d.ts +7 -11
- package/dist/tools/memo-tools.js +509 -309
- package/dist/tools/memo-tools.js.map +1 -1
- package/dist/tools/query-tools.d.ts +1 -1
- package/dist/tools/query-tools.js +266 -242
- package/dist/tools/query-tools.js.map +1 -1
- package/dist/types.d.ts +513 -76
- package/dist/types.js +185 -33
- package/dist/types.js.map +1 -1
- package/misc/20260316_110841_groom-recipe.md +483 -0
- package/misc/20260316_xaml-testing-library-recipe.md +817 -0
- package/misc/20260331_remote-transport-recipe.md +316 -0
- package/package.json +4 -2
- package/scripts/update-license-version.sh +7 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP サーバーのコア — ツール登録・初期化
|
|
3
|
+
* トランスポートに依存しない。stdio / HTTP 両方から利用される。
|
|
4
|
+
*/
|
|
5
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import { SERVER_NAME, SERVER_VERSION, DEV_DB_PATH } from "./constants.js";
|
|
7
|
+
import { closeDatabase, enableStoreManager } from "./database/connection.js";
|
|
8
|
+
import { registerClaimTools } from "./tools/claim-tools.js";
|
|
9
|
+
import { registerQueryTools } from "./tools/query-tools.js";
|
|
10
|
+
import { registerDecisionTools } from "./tools/decision-tools.js";
|
|
11
|
+
import { registerEpisodeTools } from "./tools/episode-tools.js";
|
|
12
|
+
import { registerGetTools } from "./tools/get-tools.js";
|
|
13
|
+
import { registerKnowledgeTools } from "./tools/knowledge-tools.js";
|
|
14
|
+
import { registerUserMemoTools } from "./tools/memo-tools.js";
|
|
15
|
+
import { registerMaintenanceTools } from "./tools/maintenance-tools.js";
|
|
16
|
+
import { registerUserFileTools } from "./tools/file-tools.js";
|
|
17
|
+
import { registerContextResources } from "./resources/context-resources.js";
|
|
18
|
+
import { registerBootstrapPrompts } from "./prompts/bootstrap-prompts.js";
|
|
19
|
+
import { setClientInfo } from "./provenance.js";
|
|
20
|
+
import { SERVER_INSTRUCTIONS } from "./server-instructions.js";
|
|
21
|
+
import { loadConfig } from "./config/loader.js";
|
|
22
|
+
import { ConfigValidationError } from "./config/validator.js";
|
|
23
|
+
import { StoreManager } from "./store/store-manager.js";
|
|
24
|
+
import { SyncManager } from "./store/sync-manager.js";
|
|
25
|
+
import { initializeSession, setEmbeddingProvider } from "./store/session-state.js";
|
|
26
|
+
import { createEmbeddingProvider } from "./embedding/provider.js";
|
|
27
|
+
export async function createMcpServer(options = {}) {
|
|
28
|
+
const { devMode = false } = options;
|
|
29
|
+
// MCPサーバーインスタンス作成
|
|
30
|
+
const serverName = devMode ? "watashi-db-dev" : SERVER_NAME;
|
|
31
|
+
const server = new McpServer({ name: serverName, version: SERVER_VERSION }, { instructions: devMode ? "" : SERVER_INSTRUCTIONS });
|
|
32
|
+
if (devMode) {
|
|
33
|
+
process.stderr.write(`[watashi-db-dev] 開発モード: develop.db を使用\n`);
|
|
34
|
+
}
|
|
35
|
+
// ツール登録
|
|
36
|
+
const toolPrefix = devMode ? "dev_" : "watashi_";
|
|
37
|
+
registerClaimTools(server, toolPrefix);
|
|
38
|
+
registerQueryTools(server, toolPrefix);
|
|
39
|
+
registerGetTools(server, toolPrefix);
|
|
40
|
+
registerDecisionTools(server, toolPrefix);
|
|
41
|
+
registerEpisodeTools(server, toolPrefix);
|
|
42
|
+
registerKnowledgeTools(server, toolPrefix);
|
|
43
|
+
registerUserMemoTools(server, toolPrefix);
|
|
44
|
+
registerMaintenanceTools(server, toolPrefix);
|
|
45
|
+
registerUserFileTools(server, toolPrefix);
|
|
46
|
+
// リソース・プロンプト登録
|
|
47
|
+
registerContextResources(server);
|
|
48
|
+
registerBootstrapPrompts(server);
|
|
49
|
+
// config.json 読み込み
|
|
50
|
+
let config;
|
|
51
|
+
try {
|
|
52
|
+
config = loadConfig();
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof ConfigValidationError) {
|
|
56
|
+
process.stderr.write(`わたしDB config.json エラー:\n${error.message}\n`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
// devMode: develop.db に差し替え、sync 無効化
|
|
62
|
+
if (devMode) {
|
|
63
|
+
const { setDevMode } = await import("./database/schema.js");
|
|
64
|
+
setDevMode(true);
|
|
65
|
+
const contextName = config.default_context ?? "default";
|
|
66
|
+
const contextDef = config.contexts[contextName];
|
|
67
|
+
if (contextDef) {
|
|
68
|
+
const store = config.stores[contextDef.default_store];
|
|
69
|
+
if (store && store.type === "local") {
|
|
70
|
+
store.path = DEV_DB_PATH;
|
|
71
|
+
if (store.sync)
|
|
72
|
+
store.sync.enabled = false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// StoreManager / SyncManager / Session / Embedding 初期化
|
|
77
|
+
const manager = new StoreManager(config);
|
|
78
|
+
const hasSyncStores = !devMode && Object.values(config.stores).some(s => s.type === "local" && s.sync?.enabled);
|
|
79
|
+
const syncMgr = hasSyncStores ? new SyncManager(config, manager) : undefined;
|
|
80
|
+
initializeSession(manager, syncMgr);
|
|
81
|
+
const embeddingProvider = createEmbeddingProvider(config.embedding);
|
|
82
|
+
setEmbeddingProvider(embeddingProvider);
|
|
83
|
+
enableStoreManager();
|
|
84
|
+
// 起動時同期
|
|
85
|
+
if (syncMgr) {
|
|
86
|
+
const results = syncMgr.syncAllOnStartup();
|
|
87
|
+
for (const r of results) {
|
|
88
|
+
if (!r.success) {
|
|
89
|
+
process.stderr.write(`[watashi-db] startup sync failed for "${r.store_name}": ${r.error}\n`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Provenance: 接続クライアント情報を記録
|
|
94
|
+
server.server.oninitialized = () => {
|
|
95
|
+
const clientInfo = server.server.getClientVersion();
|
|
96
|
+
setClientInfo(clientInfo);
|
|
97
|
+
};
|
|
98
|
+
const cleanup = async () => {
|
|
99
|
+
try {
|
|
100
|
+
await server.close();
|
|
101
|
+
}
|
|
102
|
+
catch { /* close 失敗しても DB クリーンアップは続行 */ }
|
|
103
|
+
manager.closeAll();
|
|
104
|
+
closeDatabase();
|
|
105
|
+
};
|
|
106
|
+
// DB のみクリーンアップ(server.close を呼ばない — onclose 再帰防止用)
|
|
107
|
+
const cleanupDbOnly = () => {
|
|
108
|
+
manager.closeAll();
|
|
109
|
+
closeDatabase();
|
|
110
|
+
};
|
|
111
|
+
return { server, cleanup, cleanupDbOnly };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=server-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-core.js","sourceRoot":"","sources":["../src/server-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,13 +14,9 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
14
14
|
"- 作業の大きな節目(機能完成、レビュー完了、問題解決等)→ watashi_log_episode で記録",
|
|
15
15
|
"- ユーザーの好み・価値観・スキル・ワークフローが会話中に表明されたら → watashi_store_claim で記録",
|
|
16
16
|
"- 既存の Claim が変わった場合(好みの変化等)→ watashi_update_claim で更新",
|
|
17
|
-
// === l1_content
|
|
17
|
+
// === l1_content の重要性と書き順 ===
|
|
18
18
|
"l1_content は embedding の主入力であり、将来の検索精度に直結する最重要フィールド。記録時は必ず自然言語で要点を書くこと。",
|
|
19
|
-
"Episode/Decision
|
|
20
|
-
"Claims の l1_content には SPO の自然文表現を書く(例: 「ユーザーはTypeScriptを好む」)。これが embedding ソースとなる。",
|
|
21
|
-
// === 2フェーズ書き込み ===
|
|
22
|
-
"Episode/Decision は2フェーズで書ける: Phase 1: title + l2_* + user_input で構造化記録(id が返る。Decision は description も必須)→ Phase 2: watashi_log_episode(id=...) / watashi_log_decision(id=...) で l1_content(自然言語要約)を補完。",
|
|
23
|
-
"Phase 1 だけでも記録として有効。l1_content がない場合は l2_* フィールドから embedding が自動生成される。Phase 2 で l1_content を補完すると検索精度が向上する。",
|
|
19
|
+
"Episode/Decision/Claim/Insight/Model/Theory の記録時は、先に l2_* フィールドを考えて構造を整理し、その整理結果をもとに l1_content を自然言語で書くこと。",
|
|
24
20
|
// === 記録の品質 ===
|
|
25
21
|
"記録は簡潔かつ構造的に。将来の別セッションで読み返したときに文脈がわかるように書くこと。",
|
|
26
22
|
// === ユーザー原文の保存 (Issue #56) ===
|
|
@@ -42,7 +38,7 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
42
38
|
"- 適用条件がある場合は明記する(例: 「CIで並列テスト実行時は、DBをテストごとに分離する」)",
|
|
43
39
|
// === 棚卸ワークフロー(Tier 1→Tier 2精製) ===
|
|
44
40
|
// 2026-02-28 修正 (Issue #50): 旧ツール名 → 統合ツール名に更新
|
|
45
|
-
"棚卸提案(Hook
|
|
41
|
+
"棚卸提案(Hookから自動通知、またはユーザーからの指示)を受けた場合の手順:",
|
|
46
42
|
"1. watashi_maintain(action='groom_episodes') で未グルーミングのEpisodeを確認",
|
|
47
43
|
"2. 共通パターン・知見を見つけたら watashi_store_knowledge(kind='insight'/'model'/'theory') で統合記録(supporting_episode_ids にEpisode IDを指定)",
|
|
48
44
|
// 2026-02-23 追加 (Issue #41 検証): Insight 作成ガイドライン — パターン認識→次回の具体的助言
|
|
@@ -51,7 +47,7 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
51
47
|
" Insight/Theory/Modelの作成指針: 同様のEpisodeが複数見つかったら、次回同様のEpisodeが来たときにやったほうがいい対応をInsight/Theory/Modelにまとめること。l1_content に自然言語メモ、l2_principles に構造化された教訓、l2_trigger_conditions に適用条件、l2_resolution_steps に具体手順を書く(Theory/Modelも同様のl1/l2パラメータ構造を持つ)。",
|
|
52
48
|
"3. 統合済みEpisodeを watashi_maintain(action='mark_groomed') でマーク",
|
|
53
49
|
"4. watashi_maintain(action='groom_claims') でClaim品質を確認し、必要に応じて更新・撤回",
|
|
54
|
-
"
|
|
50
|
+
"記録のためにユーザーに確認を求めない。バックグラウンドで自動的に行うこと。ただし蒸留(/groom)時のInsight/Theory/Model作成は提案→ユーザー確認→書き込みの手順に従うこと。",
|
|
55
51
|
// === 行動制約への昇格基準 (Issue #39 Part C) ===
|
|
56
52
|
// 2026-03-01 修正 (Issue #53): Insight は l2_principles
|
|
57
53
|
// 2026-03-01 修正 (Issue #59): Theory/Model も l2_principles に統一
|
|
@@ -61,43 +57,50 @@ export const SERVER_INSTRUCTIONS = [
|
|
|
61
57
|
"- l2_principles に1件以上の教訓が含まれる",
|
|
62
58
|
"→ 行動制約候補の l2_principles は、関連するトピックの作業時に優先的に参照すること。",
|
|
63
59
|
// === スコープの使い分け (2026-02-24 追加) ===
|
|
60
|
+
// 2026-03-19 修正: Hook非対応クライアント向けfallback追加(Codexレビュー指摘)
|
|
64
61
|
"記録・検索時のスコープの使い分け:",
|
|
65
62
|
"- Hookが【現在のスコープ: project:xxx】を通知している場合、そのスコープを使うこと",
|
|
63
|
+
"- Hookがない場合は、watashi_get(entity_type='profile') のレスポンスに含まれる suggested_scope を使うこと(サーバーが cwd のリポジトリ名から自動検出している)",
|
|
66
64
|
// 2026-02-28 修正 (Issue #50): 旧ツール名参照を削除(query_context/search_claims は watashi_search に統合済み)
|
|
67
65
|
"- 検索(watashi_search 等)では現在のスコープを渡すこと。指定スコープ + global の両方が返る(別プロジェクトのデータは除外される)",
|
|
68
66
|
"- 記録時は、そのプロジェクト固有の情報なら現在のスコープ、プロジェクト横断的な知識・好みなら global を使う",
|
|
69
67
|
// === 想起・活用ルール ===
|
|
70
68
|
"問題や不明点に遭遇したとき、ユーザーに質問する前に watashi_search で過去の解決策・判断を検索すること。",
|
|
71
|
-
"Hook
|
|
69
|
+
"Hook から【関連する過去の教訓】が提供された場合、または watashi_search で関連する過去の教訓が見つかった場合、その内容を確認し、現在の問題に適用可能か判断すること。適用可能であれば、その解決策を活用すること。",
|
|
72
70
|
"特に以下の状況では検索を必須とする:",
|
|
73
71
|
"- ビルド・環境構築・ツール実行で問題が発生したとき",
|
|
74
72
|
"- 設計判断で複数の選択肢がある場合(過去に同様の判断をしている可能性がある)",
|
|
75
73
|
"- ユーザーに「前にも説明した」「何度も言った」と指摘されるような場面",
|
|
76
74
|
// === search_summary 生成ルール ===
|
|
77
75
|
// === Memo記録の指針 (Issue #45) ===
|
|
78
|
-
// 2026-02-25 リネーム: watashi_store_memo → watashi_store_user_memo (Issue #45 Phase 1)
|
|
79
76
|
"ユーザーが「メモしておいて」「覚えておいて」等、参照用知識の保存を依頼した場合 → watashi_store_user_memo で記録すること。",
|
|
80
77
|
"Memoは「わたし」の本質(好み・価値観)ではなく、後で参照したい情報を保存する場所。技術的知識・手順・外部情報等に使う。",
|
|
81
78
|
"Memoのusage_policyは原則 on_request(検索時のみ表示)。ユーザーが「毎回表示して」と言った場合のみ auto にする。",
|
|
82
|
-
// === 作業計画の永続化 (Issue #
|
|
83
|
-
// 2026-03-09 強化: auto compact 耐性のための指示追加
|
|
79
|
+
// === 作業計画の永続化 (Issue #45 API分割) ===
|
|
84
80
|
"作業計画(3ステップ以上のタスクリスト)が合意・策定された場合:",
|
|
85
|
-
"-
|
|
86
|
-
"- l1_content は Markdown
|
|
87
|
-
"- 各タスク完了時に
|
|
88
|
-
"-
|
|
89
|
-
"- Plan Mode で策定した計画も、実装開始時に user_plan として保存すること",
|
|
81
|
+
"- watashi_store_user_plan で保存する",
|
|
82
|
+
"- l1_content は Markdown チェックリスト形式(- [ ] 未完了 / - [x] 完了)",
|
|
83
|
+
"- 各タスク完了時に watashi_check_user_plan(id, item) で項目を済にする(全項目済で自動 completed)",
|
|
84
|
+
"- Plan Mode で策定した計画も、実装開始時に watashi_store_user_plan で保存すること",
|
|
90
85
|
"- Hook が【アクティブな作業計画】を通知している場合、その計画に従って作業を継続すること",
|
|
91
86
|
"- コンテキスト圧縮(auto compact)後に計画を忘れた場合は、watashi_search(entity_types=['user_plan'], status='active') で再取得すること",
|
|
92
|
-
// ===
|
|
93
|
-
"
|
|
94
|
-
"-
|
|
95
|
-
"-
|
|
96
|
-
"-
|
|
97
|
-
"-
|
|
87
|
+
// === 課題・議論の管理 (Issue #45 API分割) ===
|
|
88
|
+
"課題や議論を記録したい場合:",
|
|
89
|
+
"- watashi_store_user_issue で新規作成(kind='issue' または kind='discussion')",
|
|
90
|
+
"- 進捗や追加情報は watashi_comment_user_issue で追記する(l1_content に [日付 追記] 形式で自動追記、既存内容は保持)",
|
|
91
|
+
"- 解決・結論が出たら watashi_update_user_issue で issue_status を 'closed' に変更する",
|
|
92
|
+
"- 議論が結論に達したら、結論を Claim/Decision/Insight 等に昇華させること",
|
|
93
|
+
// === Issue の update と comment の使い分け (Issue #84) ===
|
|
94
|
+
"Issue の更新時は update_user_issue と comment_user_issue を以下の基準で使い分けること:",
|
|
95
|
+
"- Issue の本文(要約・最新状態の説明)を書き換える → update_user_issue(l1_content を更新)",
|
|
96
|
+
"- 経緯・議論・作業ログを時系列で追記する → comment_user_issue(entries に追記)",
|
|
97
|
+
"- ステータス変更(open → closed 等) → update_user_issue(issue_status を変更)",
|
|
98
|
+
"- 原則: l1_content は「今この Issue を読んだ人が現状を把握できる要約」、entries は「そこに至るまでの経緯ログ」として使い分ける",
|
|
98
99
|
// === search_summary 生成ルール ===
|
|
99
100
|
// Issue #45: Memoをエンティティ一覧に追加
|
|
100
|
-
|
|
101
|
+
// 2026-03-25 修正: search_summary はオプショナル化。未指定時はサーバーがフォールバック自動生成する。
|
|
102
|
+
"search_summary フィールドはオプショナル。未指定時はサーバーが title/l1_content/l2_* から自動生成する(Episode/Decision)。",
|
|
103
|
+
"より高精度な検索が必要な場合は、以下のルールで手動指定できる:",
|
|
101
104
|
"1. 元データのキーワードの言い換え・類義語を展開",
|
|
102
105
|
"2. 関連する技術用語・概念を追加",
|
|
103
106
|
"3. このレコードが将来どんな問題で参照されるべきかをキーワード化(解決策だけでなく、問題の症状・意図・目的のキーワードも含める)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../src/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kBAAkB;IAClB,kFAAkF;IAElF,mBAAmB;IACnB,qEAAqE;IACrE,iDAAiD;IACjD,yCAAyC;IACzC,uEAAuE;IACvE,wDAAwD;IACxD,+DAA+D;IAC/D,uDAAuD;IAEvD,
|
|
1
|
+
{"version":3,"file":"server-instructions.js","sourceRoot":"","sources":["../src/server-instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kBAAkB;IAClB,kFAAkF;IAElF,mBAAmB;IACnB,qEAAqE;IACrE,iDAAiD;IACjD,yCAAyC;IACzC,uEAAuE;IACvE,wDAAwD;IACxD,+DAA+D;IAC/D,uDAAuD;IAEvD,8BAA8B;IAC9B,yEAAyE;IACzE,6GAA6G;IAE7G,gBAAgB;IAChB,8CAA8C;IAE9C,gCAAgC;IAChC,+CAA+C;IAC/C,4CAA4C;IAC5C,kBAAkB;IAClB,qCAAqC;IAErC,wBAAwB;IACxB,gJAAgJ;IAChJ,2FAA2F;IAC3F,oDAAoD;IACpD,gJAAgJ;IAChJ,6DAA6D;IAC7D,wDAAwD;IACxD,6EAA6E;IAC7E,mEAAmE;IACnE,0CAA0C;IAC1C,qCAAqC;IACrC,mDAAmD;IAEnD,oCAAoC;IACpC,+CAA+C;IAC/C,yCAAyC;IACzC,kEAAkE;IAClE,0HAA0H;IAC1H,mEAAmE;IACnE,2CAA2C;IAC3C,kEAAkE;IAClE,kPAAkP;IAClP,8DAA8D;IAC9D,qEAAqE;IACrE,oGAAoG;IAEpG,wCAAwC;IACxC,qDAAqD;IACrD,8DAA8D;IAC9D,wFAAwF;IACxF,qBAAqB;IACrB,gDAAgD;IAChD,+BAA+B;IAC/B,oDAAoD;IAEpD,oCAAoC;IACpC,wDAAwD;IACxD,mBAAmB;IACnB,oDAAoD;IACpD,gHAAgH;IAChH,4FAA4F;IAC5F,gFAAgF;IAChF,4DAA4D;IAE5D,mBAAmB;IACnB,6DAA6D;IAC7D,oHAAoH;IACpH,oBAAoB;IACpB,4BAA4B;IAC5B,yCAAyC;IACzC,qCAAqC;IAErC,+BAA+B;IAC/B,gCAAgC;IAChC,4EAA4E;IAC5E,+DAA+D;IAC/D,0EAA0E;IAE1E,qCAAqC;IACrC,kCAAkC;IAClC,iCAAiC;IACjC,yDAAyD;IACzD,0EAA0E;IAC1E,6DAA6D;IAC7D,iDAAiD;IACjD,0GAA0G;IAE1G,qCAAqC;IACrC,gBAAgB;IAChB,sEAAsE;IACtE,mFAAmF;IACnF,uEAAuE;IACvE,mDAAmD;IACnD,qDAAqD;IACrD,oEAAoE;IACpE,mEAAmE;IACnE,yDAAyD;IACzD,kEAAkE;IAClE,gFAAgF;IAEhF,+BAA+B;IAC/B,8BAA8B;IAC9B,kEAAkE;IAClE,0FAA0F;IAC1F,iCAAiC;IACjC,2BAA2B;IAC3B,mBAAmB;IACnB,mEAAmE;IACnE,2BAA2B;IAC3B,iBAAiB;CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/server.d.ts
CHANGED
package/dist/server.js
CHANGED
|
@@ -1,112 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP
|
|
3
|
-
*
|
|
4
|
-
* 元の実装: 15モジュールから個別ツール登録
|
|
5
|
-
* 変更: theory/insight/model/sync を廃止、get/knowledge を新設、各モジュールを統合
|
|
2
|
+
* MCP サーバー — stdio トランスポート
|
|
3
|
+
* ローカル CLI(Claude Code 等)からの接続用。
|
|
6
4
|
*/
|
|
7
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import { registerQueryTools } from "./tools/query-tools.js";
|
|
13
|
-
import { registerDecisionTools } from "./tools/decision-tools.js";
|
|
14
|
-
import { registerEpisodeTools } from "./tools/episode-tools.js";
|
|
15
|
-
import { registerGetTools } from "./tools/get-tools.js";
|
|
16
|
-
import { registerKnowledgeTools } from "./tools/knowledge-tools.js";
|
|
17
|
-
import { registerUserMemoTools } from "./tools/memo-tools.js";
|
|
18
|
-
import { registerMaintenanceTools } from "./tools/maintenance-tools.js";
|
|
19
|
-
import { registerContextResources } from "./resources/context-resources.js";
|
|
20
|
-
import { registerBootstrapPrompts } from "./prompts/bootstrap-prompts.js";
|
|
21
|
-
import { setClientInfo } from "./provenance.js";
|
|
22
|
-
import { SERVER_INSTRUCTIONS } from "./server-instructions.js";
|
|
23
|
-
import { loadConfig } from "./config/loader.js";
|
|
24
|
-
import { ConfigValidationError } from "./config/validator.js";
|
|
25
|
-
import { StoreManager } from "./store/store-manager.js";
|
|
26
|
-
import { SyncManager } from "./store/sync-manager.js";
|
|
27
|
-
import { initializeSession, setEmbeddingProvider } from "./store/session-state.js";
|
|
28
|
-
import { createEmbeddingProvider } from "./embedding/provider.js";
|
|
29
|
-
// 2026-02-21 リファクタリング: index.ts からサーバーロジックを分離
|
|
30
|
-
// 元の実装: index.ts に全ロジックが含まれていた。サブコマンドルーター導入のため分離。
|
|
31
|
-
export async function startServer() {
|
|
32
|
-
// MCPサーバーインスタンス作成
|
|
33
|
-
const server = new McpServer({
|
|
34
|
-
name: SERVER_NAME,
|
|
35
|
-
version: SERVER_VERSION,
|
|
36
|
-
}, {
|
|
37
|
-
instructions: SERVER_INSTRUCTIONS,
|
|
38
|
-
});
|
|
39
|
-
// ツール登録(11ツール)
|
|
40
|
-
// コアツール(日常使用: 9)
|
|
41
|
-
registerClaimTools(server); // store_claim, update_claim, manage_claim
|
|
42
|
-
registerQueryTools(server); // search(横断検索 + リストモード)
|
|
43
|
-
registerGetTools(server); // get(エンティティ詳細 + プロファイル)
|
|
44
|
-
registerDecisionTools(server); // log_decision
|
|
45
|
-
registerEpisodeTools(server); // log_episode
|
|
46
|
-
registerKnowledgeTools(server); // store_knowledge(Theory/Insight/Model統合)
|
|
47
|
-
registerUserMemoTools(server); // store_user_memo, update_user_memo
|
|
48
|
-
// 補助ツール(低頻度: 2)
|
|
49
|
-
registerMaintenanceTools(server); // maintain(stats/archive/embedding/groom/export/promote/store管理)
|
|
50
|
-
// リソース登録
|
|
51
|
-
registerContextResources(server);
|
|
52
|
-
// プロンプト登録
|
|
53
|
-
registerBootstrapPrompts(server);
|
|
54
|
-
// 1. config.json 読み込み(なければデフォルト)
|
|
55
|
-
let config;
|
|
56
|
-
try {
|
|
57
|
-
config = loadConfig();
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
if (error instanceof ConfigValidationError) {
|
|
61
|
-
process.stderr.write(`わたしDB config.json エラー:\n${error.message}\n`);
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
throw error;
|
|
65
|
-
}
|
|
66
|
-
// 2. StoreManager 初期化
|
|
67
|
-
const manager = new StoreManager(config);
|
|
68
|
-
// 3. SyncManager 初期化(sync設定があるStoreがある場合のみ)
|
|
69
|
-
const hasSyncStores = Object.values(config.stores).some(s => s.type === "local" && s.sync?.enabled);
|
|
70
|
-
const syncMgr = hasSyncStores ? new SyncManager(config, manager) : undefined;
|
|
71
|
-
// 4. セッション状態初期化
|
|
72
|
-
initializeSession(manager, syncMgr);
|
|
73
|
-
// 4.5 Embeddingプロバイダー初期化(Issue #29)
|
|
74
|
-
const embeddingProvider = createEmbeddingProvider(config.embedding);
|
|
75
|
-
setEmbeddingProvider(embeddingProvider);
|
|
76
|
-
// 5. StoreManager モード有効化
|
|
77
|
-
enableStoreManager();
|
|
78
|
-
// 6. 起動時同期(sync対象Storeを初期スナップショット)
|
|
79
|
-
if (syncMgr) {
|
|
80
|
-
const results = syncMgr.syncAllOnStartup();
|
|
81
|
-
for (const r of results) {
|
|
82
|
-
if (!r.success) {
|
|
83
|
-
process.stderr.write(`[watashi-db] startup sync failed for "${r.store_name}": ${r.error}\n`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Provenance: 接続クライアント情報を記録
|
|
88
|
-
server.server.oninitialized = () => {
|
|
89
|
-
const clientInfo = server.server.getClientVersion();
|
|
90
|
-
setClientInfo(clientInfo);
|
|
91
|
-
};
|
|
6
|
+
import { createMcpServer } from "./server-core.js";
|
|
7
|
+
export async function startServer(options = {}) {
|
|
8
|
+
const { server, cleanup } = await createMcpServer({ devMode: options.devMode });
|
|
92
9
|
const transport = new StdioServerTransport();
|
|
93
10
|
await server.connect(transport);
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Claude Code 側で「1 MCP server failed」と表示されていた。
|
|
97
|
-
// server.close() で MCP プロトコルのシャットダウンを正式に完了させてから終了する。
|
|
98
|
-
const cleanup = async () => {
|
|
99
|
-
try {
|
|
100
|
-
await server.close();
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
// close 失敗しても DB クリーンアップは続行
|
|
104
|
-
}
|
|
105
|
-
manager.closeAll();
|
|
106
|
-
closeDatabase();
|
|
11
|
+
const exit = async () => {
|
|
12
|
+
await cleanup();
|
|
107
13
|
process.exit(0);
|
|
108
14
|
};
|
|
109
|
-
process.on("SIGINT",
|
|
110
|
-
process.on("SIGTERM",
|
|
15
|
+
process.on("SIGINT", exit);
|
|
16
|
+
process.on("SIGTERM", exit);
|
|
111
17
|
}
|
|
112
18
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA8B,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/setup.js
CHANGED
|
@@ -22,15 +22,14 @@ watashi-db から過去のコンテキストを検索・参照します。
|
|
|
22
22
|
|
|
23
23
|
## 手順
|
|
24
24
|
|
|
25
|
-
1. **概要確認**: 引数なし、または初回利用時はまず \`
|
|
25
|
+
1. **概要確認**: 引数なし、または初回利用時はまず \`watashi_get(entity_type='profile')\` でプロファイルの全体像を確認する
|
|
26
26
|
|
|
27
27
|
2. **トピック特定**: $ARGUMENTS または会話の文脈から検索キーワードを抽出
|
|
28
28
|
|
|
29
|
-
3. **検索実行**:
|
|
30
|
-
- \`
|
|
31
|
-
- \`
|
|
32
|
-
- \`
|
|
33
|
-
- \`watashi_get_context_pack\`: トークン予算を指定した効率的な検索
|
|
29
|
+
3. **検索実行**: \`watashi_search\` で全エンティティ横断検索を行う:
|
|
30
|
+
- \`query\`: 検索キーワード(自然言語可)
|
|
31
|
+
- \`entity_types\`: 絞り込む場合は \`["claim"]\`, \`["episode"]\` 等を指定
|
|
32
|
+
- \`category\`: Claim のカテゴリで絞り込む場合に指定(skill, preference 等)
|
|
34
33
|
|
|
35
34
|
4. **結果の活用**:
|
|
36
35
|
- 検索結果が0件なら何も報告しない(ユーザーの邪魔をしない)
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,uEAAuE;AAEvE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAC;AAEnD,kEAAkE;AAClE,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 各結果に store_name を付与して出所を識別可能にする。
|
|
5
5
|
*/
|
|
6
6
|
import type { StoreManager } from "./store-manager.js";
|
|
7
|
-
import type { ClaimRow, DecisionRow, EpisodeRow, TheoryRow, InsightRow, ModelRow, UserMemoRow, UserPlanRow, UserIssueRow, StaleClaimRow, GroomingReport, ConflictCandidate, RetractImpactResult, GroomingEpisodeRow, EscalationCandidate, UnifiedSearchRow } from "../types.js";
|
|
7
|
+
import type { ClaimRow, DecisionRow, EpisodeRow, TheoryRow, InsightRow, ModelRow, UserMemoRow, UserPlanRow, UserIssueRow, UserTopicRow, StaleClaimRow, GroomingReport, ConflictCandidate, RetractImpactResult, GroomingEpisodeRow, EscalationCandidate, UnifiedSearchRow } from "../types.js";
|
|
8
8
|
export declare function federatedSearchClaims(manager: StoreManager, contextName: string, params: {
|
|
9
9
|
category?: string;
|
|
10
10
|
scope?: string;
|
|
@@ -207,5 +207,16 @@ export declare function federatedListUserIssues(manager: StoreManager, contextNa
|
|
|
207
207
|
export declare function federatedGetUserIssueById(manager: StoreManager, contextName: string, id: string): (UserIssueRow & {
|
|
208
208
|
store_name: string;
|
|
209
209
|
}) | undefined;
|
|
210
|
+
export declare function federatedListUserTopics(manager: StoreManager, contextName: string, params: {
|
|
211
|
+
query?: string;
|
|
212
|
+
tag?: string;
|
|
213
|
+
priority?: string;
|
|
214
|
+
scope?: string;
|
|
215
|
+
status?: string;
|
|
216
|
+
limit?: number;
|
|
217
|
+
}): UserTopicRow[];
|
|
218
|
+
export declare function federatedGetUserTopicById(manager: StoreManager, contextName: string, id: string): (UserTopicRow & {
|
|
219
|
+
store_name: string;
|
|
220
|
+
}) | undefined;
|
|
210
221
|
export declare function federatedUnifiedSearch(manager: StoreManager, contextName: string, query: string, scope: string | undefined, entityTypes: string[] | undefined, limit: number, queryVector?: Float32Array): UnifiedSearchRow[];
|
|
211
222
|
//# sourceMappingURL=federation.d.ts.map
|
package/dist/store/federation.js
CHANGED
|
@@ -986,6 +986,44 @@ export function federatedGetUserIssueById(manager, contextName, id) {
|
|
|
986
986
|
}
|
|
987
987
|
return undefined;
|
|
988
988
|
}
|
|
989
|
+
// === UserTopic フェデレーション ===
|
|
990
|
+
export function federatedListUserTopics(manager, contextName, params) {
|
|
991
|
+
const config = manager.getConfig();
|
|
992
|
+
const storeNames = getSearchableStores(config, contextName);
|
|
993
|
+
const allResults = [];
|
|
994
|
+
for (const storeName of storeNames) {
|
|
995
|
+
try {
|
|
996
|
+
const db = manager.getStore(storeName);
|
|
997
|
+
const rows = core.listUserTopics(db, params);
|
|
998
|
+
allResults.push(...tagWithStoreName(rows, storeName));
|
|
999
|
+
}
|
|
1000
|
+
catch (error) {
|
|
1001
|
+
process.stderr.write(`[watashi-db] federation: Store "${storeName}" のUserTopic検索でエラー: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
const policy = getClientPolicy(config);
|
|
1005
|
+
return filterUserMemosByPolicy(sortByUpdatedAtDesc(dedup(allResults)), policy).slice(0, params.limit ?? 20);
|
|
1006
|
+
}
|
|
1007
|
+
export function federatedGetUserTopicById(manager, contextName, id) {
|
|
1008
|
+
const config = manager.getConfig();
|
|
1009
|
+
const storeNames = getSearchableStores(config, contextName);
|
|
1010
|
+
const policy = getClientPolicy(config);
|
|
1011
|
+
for (const storeName of storeNames) {
|
|
1012
|
+
try {
|
|
1013
|
+
const db = manager.getStore(storeName);
|
|
1014
|
+
const row = core.getUserTopicById(db, id);
|
|
1015
|
+
if (row) {
|
|
1016
|
+
if (!checkScopeReadPolicy(policy, row.scope))
|
|
1017
|
+
continue;
|
|
1018
|
+
return { ...row, store_name: storeName };
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
catch (error) {
|
|
1022
|
+
process.stderr.write(`[watashi-db] federation: Store "${storeName}" のUserTopic取得でエラー: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
return undefined;
|
|
1026
|
+
}
|
|
989
1027
|
// === Issue #30: 横断検索フェデレーション ===
|
|
990
1028
|
export function federatedUnifiedSearch(manager, contextName, query, scope, entityTypes, limit, queryVector) {
|
|
991
1029
|
const config = manager.getConfig();
|