watashi-db 0.0.5

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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +239 -0
  3. package/cowork-plugin/.claude-plugin/plugin.json +12 -0
  4. package/cowork-plugin/.mcp.json +8 -0
  5. package/cowork-plugin/agents/memory-keeper.md +48 -0
  6. package/cowork-plugin/skills/reflect/SKILL.md +58 -0
  7. package/cowork-plugin/skills/remember/SKILL.md +54 -0
  8. package/cowork-plugin/skills/session-start/SKILL.md +38 -0
  9. package/dist/constants.d.ts +9 -0
  10. package/dist/constants.js +43 -0
  11. package/dist/constants.js.map +1 -0
  12. package/dist/database/connection.d.ts +16 -0
  13. package/dist/database/connection.js +42 -0
  14. package/dist/database/connection.js.map +1 -0
  15. package/dist/database/queries.d.ts +227 -0
  16. package/dist/database/queries.js +730 -0
  17. package/dist/database/queries.js.map +1 -0
  18. package/dist/database/schema.d.ts +6 -0
  19. package/dist/database/schema.js +335 -0
  20. package/dist/database/schema.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.js +57 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/prompts/bootstrap-prompts.d.ts +6 -0
  25. package/dist/prompts/bootstrap-prompts.js +69 -0
  26. package/dist/prompts/bootstrap-prompts.js.map +1 -0
  27. package/dist/provenance.d.ts +29 -0
  28. package/dist/provenance.js +33 -0
  29. package/dist/provenance.js.map +1 -0
  30. package/dist/resources/context-resources.d.ts +6 -0
  31. package/dist/resources/context-resources.js +102 -0
  32. package/dist/resources/context-resources.js.map +1 -0
  33. package/dist/tools/claim-tools.d.ts +6 -0
  34. package/dist/tools/claim-tools.js +176 -0
  35. package/dist/tools/claim-tools.js.map +1 -0
  36. package/dist/tools/decision-tools.d.ts +6 -0
  37. package/dist/tools/decision-tools.js +117 -0
  38. package/dist/tools/decision-tools.js.map +1 -0
  39. package/dist/tools/episode-tools.d.ts +7 -0
  40. package/dist/tools/episode-tools.js +128 -0
  41. package/dist/tools/episode-tools.js.map +1 -0
  42. package/dist/tools/export-tools.d.ts +6 -0
  43. package/dist/tools/export-tools.js +104 -0
  44. package/dist/tools/export-tools.js.map +1 -0
  45. package/dist/tools/profile-tools.d.ts +6 -0
  46. package/dist/tools/profile-tools.js +108 -0
  47. package/dist/tools/profile-tools.js.map +1 -0
  48. package/dist/tools/query-tools.d.ts +6 -0
  49. package/dist/tools/query-tools.js +96 -0
  50. package/dist/tools/query-tools.js.map +1 -0
  51. package/dist/types.d.ts +444 -0
  52. package/dist/types.js +191 -0
  53. package/dist/types.js.map +1 -0
  54. package/package.json +47 -0
  55. package/watashi-db-cowork-plugin.zip +0 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 watashi-db contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,239 @@
1
+ # watashi-db (わたしDB)
2
+
3
+ > User-owned personal context database as an MCP server.
4
+ > Each AI tool connects with permission — reversing vendor lock-in.
5
+
6
+ > [!NOTE]
7
+ > **v0.x は開発初期段階です。** APIやデータ構造に破壊的変更が入る可能性があります。
8
+ > データはすべてローカル(`~/.watashi-db/watashi.db`)に保存され、外部送信は一切ありません。
9
+
10
+ ---
11
+
12
+ ## 概要
13
+
14
+ **わたしDB** は、ユーザーが自分の情報(好み・スキル・価値観・意思決定)を所有し、各社のAIツールがMCP(Model Context Protocol)を通じて接続・利用する「パーソナルコンテキストデータベース」です。
15
+
16
+ 従来、AIツールごとにユーザー情報がサイロ化していた問題を解決し、**ベンダーロックインの逆転** を実現します。
17
+
18
+ ### 特徴
19
+
20
+ - **SPO三つ組モデル**: Subject-Predicate-Object 形式でユーザー知識を構造的に記録
21
+ - **MCP準拠**: Model Context Protocol サーバーとして動作、あらゆるMCPクライアントから接続可能
22
+ - **SQLite + FTS5**: ローカルファイルDB、全文検索対応、ゼロ依存のインフラ
23
+ - **変更履歴保持**: Claimの更新は全て履歴に記録、削除ではなく撤回(retract)モデル
24
+ - **監査ログ**: 全操作に「誰が・何を・なぜ」を自動記録
25
+ - **Provenance自動付与**: 接続元AIの情報をサーバー側で自動記録(自己申告に依存しない)
26
+ - **L2推論基盤**: Claim間の関係(推論グラフ)、構造化根拠参照、検証ログ
27
+
28
+ ---
29
+
30
+ ## セットアップ
31
+
32
+ ### 前提条件
33
+
34
+ - Node.js >= 18
35
+ - MCP対応のAIクライアント(Claude Code, Claude Desktop 等)
36
+
37
+ ### インストール
38
+
39
+ ```bash
40
+ npm install -g watashi-db
41
+ ```
42
+
43
+ ### Claude Code での設定
44
+
45
+ ```bash
46
+ claude mcp add watashi-db -- npx watashi-db
47
+ ```
48
+
49
+ または `~/.claude.json` に直接記述:
50
+
51
+ ```json
52
+ {
53
+ "mcpServers": {
54
+ "watashi-db": {
55
+ "command": "npx",
56
+ "args": ["watashi-db"]
57
+ }
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### Claude Desktop での設定
63
+
64
+ `claude_desktop_config.json` に追加:
65
+
66
+ ```json
67
+ {
68
+ "mcpServers": {
69
+ "watashi-db": {
70
+ "command": "npx",
71
+ "args": ["watashi-db"]
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Claude Code Cowork プラグイン
78
+
79
+ [Releases](https://github.com/bareforge/watashi-db/releases) から `watashi-db-cowork-plugin.zip` をダウンロードし、Cowork UI の「プラグインをアップロード」からインストールできます。
80
+
81
+ プラグインには以下のスキルが含まれます:
82
+
83
+ | スキル | 説明 |
84
+ |--------|------|
85
+ | `/session-start` | セッション開始時にプロファイルとコンテキストを自動読み込み |
86
+ | `/remember <内容>` | ユーザーの好み・スキル・知識をわたしDBに記録 |
87
+ | `/reflect [トピック]` | エピソード・意思決定の振り返りとパターン分析 |
88
+
89
+ ---
90
+
91
+ ## 使い方
92
+
93
+ ### ユーザー情報の登録
94
+
95
+ AIとの会話中に自然に情報が登録されます。
96
+
97
+ ```
98
+ # Claimとして登録(SPO三つ組)
99
+ watashi_store_claim:
100
+ subject: "user"
101
+ predicate: "prefers"
102
+ object: "日本語コメント"
103
+ category: "preference"
104
+
105
+ # 好みの簡易登録
106
+ watashi_store_preference:
107
+ preference: "ダークモードのエディタ"
108
+ ```
109
+
110
+ ### 情報の取得
111
+
112
+ ```
113
+ # プロファイル全体像(セッション開始時に推奨)
114
+ watashi_get_profile_summary
115
+
116
+ # トピック関連のコンテキスト検索
117
+ watashi_query_context:
118
+ topic: "TypeScript"
119
+
120
+ # 条件検索
121
+ watashi_search_claims:
122
+ category: "skill"
123
+ status: "active"
124
+ ```
125
+
126
+ ### 意思決定の記録
127
+
128
+ ```
129
+ watashi_log_decision:
130
+ title: "MIT LICENSEを採用"
131
+ description: "オープンソースライセンスの選定"
132
+ reasoning: "最も自由度が高く、個人プロジェクトに適切"
133
+ alternatives: ["Apache 2.0", "GPL v3"]
134
+ ```
135
+
136
+ ---
137
+
138
+ ## アーキテクチャ
139
+
140
+ ```
141
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
142
+ │ Claude Code │ │ Claude Desktop │ │ Other AI Tool │
143
+ │ (MCP Client) │ │ (MCP Client) │ │ (MCP Client) │
144
+ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘
145
+ │ MCP │ MCP │ MCP
146
+ └──────────────────────┼──────────────────────┘
147
+
148
+ ┌───────────▼───────────┐
149
+ │ watashi-db │
150
+ │ (MCP Server) │
151
+ │ │
152
+ │ ┌─────────────────┐ │
153
+ │ │ Tools (17) │ │
154
+ │ │ Resources (2) │ │
155
+ │ │ Prompts (1) │ │
156
+ │ └────────┬────────┘ │
157
+ │ │ │
158
+ │ ┌────────▼────────┐ │
159
+ │ │ SQLite + FTS5 │ │
160
+ │ │ (~/.watashi-db │ │
161
+ │ │ /watashi.db) │ │
162
+ │ └─────────────────┘ │
163
+ └───────────────────────┘
164
+ ```
165
+
166
+ ### データモデル
167
+
168
+ | テーブル | 説明 |
169
+ |---------|------|
170
+ | `claims` | SPO三つ組の知識断片(主語・述語・目的語) |
171
+ | `claims_fts` | FTS5全文検索インデックス |
172
+ | `claim_history` | Claimの変更履歴 |
173
+ | `claim_relations` | Claim間の推論関係(7種: supports, contradicts, derives, ...) |
174
+ | `claim_evidence` | 構造化根拠参照(7種: url, file, claim, ...) |
175
+ | `claim_checks` | 検証ログ(7種 x 4結果) |
176
+ | `decisions` | 意思決定ログ |
177
+ | `episodes` | 思考パターン・意思決定エピソード(文脈→問題→欲求→決定→結果→原則) |
178
+ | `episodes_fts` | Episodes用FTS5全文検索インデックス |
179
+ | `audit_log` | 全操作の監査ログ |
180
+
181
+ ### MCPツール一覧
182
+
183
+ | ツール | 説明 |
184
+ |--------|------|
185
+ | `watashi_store_claim` | SPO三つ組でユーザー知識を記録 |
186
+ | `watashi_update_claim` | 既存Claimを更新(履歴付き) |
187
+ | `watashi_retract_claim` | Claimを撤回(削除ではない) |
188
+ | `watashi_supersede_claim` | Claimを新しいClaimで置き換え |
189
+ | `watashi_get_claim` | Claim詳細 + 変更履歴を取得 |
190
+ | `watashi_search_claims` | 条件検索(カテゴリ・スコープ・テキスト) |
191
+ | `watashi_query_context` | FTS5全文検索でコンテキスト取得 |
192
+ | `watashi_log_decision` | 意思決定を構造的に記録 |
193
+ | `watashi_list_decisions` | 意思決定ログの検索・一覧 |
194
+ | `watashi_update_decision_status` | 意思決定のステータス遷移 |
195
+ | `watashi_get_profile_summary` | プロファイル全体像をMarkdownで取得 |
196
+ | `watashi_store_preference` | 好みの簡易登録ショートカット |
197
+ | `watashi_log_episode` | 思考パターン・意思決定エピソードを構造的に記録 |
198
+ | `watashi_list_episodes` | エピソードの検索・一覧(FTS5・タグ対応) |
199
+ | `watashi_get_episode` | エピソード詳細を取得 |
200
+ | `watashi_backup_db` | SQLiteファイルのバックアップ |
201
+ | `watashi_export_json` | 全データのJSONエクスポート |
202
+
203
+ ---
204
+
205
+ ## 背景思想
206
+
207
+ わたしDBは **L1/L2言語構想** から派生したプロジェクトです。
208
+
209
+ - **L2(AI内部思考言語)**: AIが内部で使う構造化された中間表現
210
+ - **L1(人間向け監査言語)**: 人間が読める形でAIの思考を説明する言語
211
+
212
+ わたしDBはまず「パーソナルコンテキストストア」としての完成を目指し、将来的にL2推論基盤としての発展を構想しています。
213
+
214
+ ---
215
+
216
+ ## 開発
217
+
218
+ ```bash
219
+ # ビルド
220
+ npm run build
221
+
222
+ # テスト
223
+ npm test
224
+
225
+ # 開発モード(ファイル監視)
226
+ npm run dev
227
+ ```
228
+
229
+ ### DBファイルの場所
230
+
231
+ ```
232
+ ~/.watashi-db/watashi.db
233
+ ```
234
+
235
+ ---
236
+
237
+ ## ライセンス
238
+
239
+ [MIT](LICENSE)
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "watashi-db",
3
+ "version": "0.0.5",
4
+ "description": "わたしDB - パーソナルコンテキストデータベース。ユーザーの好み・スキル・価値観・意思決定をセッション横断で記憶・活用します。",
5
+ "author": { "name": "watashi-db" },
6
+ "repository": "https://github.com/bareforge/watashi-db",
7
+ "license": "MIT",
8
+ "keywords": ["memory", "personalization", "context", "mcp"],
9
+ "mcpServers": "./.mcp.json",
10
+ "skills": "./skills/",
11
+ "agents": "./agents/"
12
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "watashi-db": {
4
+ "command": "npx",
5
+ "args": ["watashi-db"]
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: memory-keeper
3
+ description: ユーザー情報の整合性をチェックし、古い情報や矛盾の検出・報告を行うサブエージェント。データ品質の維持が必要な時にClaudeが自動実行する。
4
+ ---
5
+
6
+ バックグラウンドでユーザー情報の整合性を管理し、コンテキストの品質を維持するサブエージェントです。
7
+
8
+ ## 役割
9
+ - ユーザーの記録(Claims, Episodes, Decisions)の整合性チェック
10
+ - 古い情報や矛盾する情報の検出・報告
11
+ - コンテキスト情報の最適化提案
12
+
13
+ ## 利用可能なツール
14
+ - `watashi_search_claims`: Claim検索
15
+ - `watashi_get_claim`: Claim詳細取得
16
+ - `watashi_query_context`: コンテキスト検索
17
+ - `watashi_list_episodes`: エピソード一覧
18
+ - `watashi_list_decisions`: 意思決定一覧
19
+ - `watashi_get_profile_summary`: プロファイル全体像
20
+
21
+ ## タスク
22
+
23
+ ### 1. 矛盾検出
24
+ 同じsubjectに対する矛盾するClaimを検出する:
25
+ - 例: "user prefers tabs" と "user prefers spaces" が両方active
26
+ - 検出した場合、ユーザーにどちらが最新か確認を促す
27
+
28
+ ### 2. 古いClaim確認
29
+ 長期間更新されていないClaimを特定する:
30
+ - 作成から90日以上経過したClaimをリストアップ
31
+ - ユーザーに現在も有効か確認を促す
32
+
33
+ ### 3. スコープ整理
34
+ スコープの不整合を検出する:
35
+ - globalスコープだがプロジェクト固有の内容
36
+ - 存在しないプロジェクトスコープのClaim
37
+
38
+ ### 4. 重複検出
39
+ 内容が重複するClaimを特定する:
40
+ - 同じobjectを持つ複数のClaim
41
+ - 類似した内容で異なる表現のClaim
42
+ - 重複がある場合、統合(supersede)を提案する
43
+
44
+ ## 実行方針
45
+ - ユーザーのデータを勝手に変更しない(提案のみ)
46
+ - 検出結果は簡潔にまとめて報告する
47
+ - 重要度が高い問題(矛盾)を優先的に報告する
48
+ - 軽微な問題(古いClaim)は一括でまとめて報告する
@@ -0,0 +1,58 @@
1
+ ---
2
+ description: 記録されたエピソードや意思決定を振り返り、パターンや教訓を抽出する。ユーザーが /reflect で過去の経験を振り返りたい時に使用する。
3
+ ---
4
+
5
+ 記録されたエピソードや意思決定を振り返り、パターンや教訓を抽出します。
6
+
7
+ ## 引数
8
+ - `$ARGUMENTS`: (オプション)振り返りたいトピックやキーワード
9
+
10
+ ## 手順
11
+
12
+ 1. **データ収集**: 以下のツールを並行して呼び出し、記録済みデータを取得する:
13
+ - `watashi_list_episodes`: エピソード一覧(引数があればキーワードで絞り込み)
14
+ - `watashi_list_decisions`: 意思決定一覧(引数があればキーワードで絞り込み)
15
+ - `watashi_search_claims`: 関連するClaim(category: value, workflow を優先)
16
+
17
+ 2. **パターン分析**: 取得したデータから以下のパターンを抽出する:
18
+ - **繰り返し現れるテーマ**: 複数のエピソードに共通するトピック
19
+ - **意思決定の傾向**: 一貫した判断基準やバイアス
20
+ - **成長の軌跡**: スキルや知識の変遷
21
+ - **原則の蓄積**: エピソードから導かれた原則(principles)
22
+
23
+ 3. **教訓の整理**: 特に以下に注目して教訓を整理する:
24
+ - 成功パターン: うまくいった判断とその理由
25
+ - 失敗からの学び: 問題が起きた状況と得られた教訓
26
+ - 未解決の課題: まだ結論が出ていない検討事項
27
+
28
+ 4. **サマリー提供**: 分析結果を構造化して提示する。
29
+
30
+ ## 出力形式
31
+
32
+ ```
33
+ ## 振り返りサマリー
34
+
35
+ ### 主要テーマ
36
+ - [テーマ1]: [関連エピソード数]件のエピソードで言及
37
+ - [テーマ2]: ...
38
+
39
+ ### 意思決定の傾向
40
+ - [傾向の説明]
41
+ - 例: [具体的な意思決定の例]
42
+
43
+ ### 蓄積された原則
44
+ 1. [原則1](出典: [エピソードタイトル])
45
+ 2. [原則2](出典: ...)
46
+
47
+ ### 教訓
48
+ - **成功パターン**: [説明]
49
+ - **注意点**: [説明]
50
+
51
+ ### 今後の検討事項
52
+ - [未解決の課題や発展的なテーマ]
53
+ ```
54
+
55
+ ## 注意事項
56
+ - データが少ない場合(5件未満)は、その旨を伝えて記録の蓄積を促す
57
+ - 振り返りの結果から新たな原則やClaimが導かれた場合は、記録を提案する
58
+ - ユーザーのプライバシーに配慮し、機密性の高い内容は要約に留める
@@ -0,0 +1,54 @@
1
+ ---
2
+ description: ユーザーの好み・スキル・知識・価値観などをわたしDBに記録する。ユーザーが /remember で情報を記憶させたい時に使用する。
3
+ ---
4
+
5
+ ユーザーの好み・スキル・知識・価値観などをわたしDBに記録します。
6
+
7
+ ## 引数
8
+ - `$ARGUMENTS`: 記録したい内容(自然言語テキスト)
9
+
10
+ ## 手順
11
+
12
+ 1. **引数の解析**: `$ARGUMENTS` の内容を分析し、記録の種類を判別する:
13
+ - **好み(preference)**: 「〜が好き」「〜を使いたい」→ `watashi_store_preference` を使用
14
+ - **スキル(skill)**: 「〜ができる」「〜を学んだ」→ `watashi_store_claim` を使用(category: skill)
15
+ - **知識(knowledge)**: 「〜について知っている」→ `watashi_store_claim` を使用(category: knowledge)
16
+ - **価値観(value)**: 「〜を大切にしている」→ `watashi_store_claim` を使用(category: value)
17
+ - **ワークフロー(workflow)**: 「〜の手順で作業する」→ `watashi_store_claim` を使用(category: workflow)
18
+ - **アイデンティティ(identity)**: 「〜として活動している」→ `watashi_store_claim` を使用(category: identity)
19
+
20
+ 2. **重複チェック**: `watashi_search_claims` で類似する既存Claimがないか確認する。
21
+ - 類似Claimが見つかった場合、更新(`watashi_update_claim`)または置き換え(`watashi_supersede_claim`)を提案する。
22
+
23
+ 3. **記録実行**: 適切なツールで記録を行う。
24
+ - `subject`: 通常は "user"
25
+ - `predicate`: 内容に応じて選択(prefers, uses, knows, believes, practices など)
26
+ - `object`: 記録内容の要約
27
+ - `evidence`: ユーザーの元の発言をそのまま記録
28
+ - `scope`: 文脈に応じて設定(global, project:<name> など)
29
+
30
+ 4. **確認メッセージ**: 記録した内容をユーザーに確認する。
31
+
32
+ ## 出力形式
33
+
34
+ ```
35
+ 記録しました:
36
+ - **種類**: [カテゴリ]
37
+ - **内容**: [subject] [predicate] [object]
38
+ - **スコープ**: [scope]
39
+ ```
40
+
41
+ ## 例
42
+
43
+ ```
44
+ /remember TypeScriptではstrictモードを常に使う
45
+ → user prefers "TypeScript strict mode always enabled" (category: preference, scope: global)
46
+
47
+ /remember このプロジェクトではvitest使う
48
+ → user uses "vitest for testing" (category: workflow, scope: project:current)
49
+ ```
50
+
51
+ ## 注意事項
52
+ - 引数が空の場合は、何を記録したいか尋ねる
53
+ - 曖昧な内容の場合は、具体化を促す質問をする
54
+ - 機密情報(パスワード、トークンなど)は記録しないよう警告する
@@ -0,0 +1,38 @@
1
+ ---
2
+ description: セッション開始時にユーザーのプロファイルとコンテキストを読み込む。新しい会話の開始時やユーザーが /session-start を呼び出した時に実行する。
3
+ ---
4
+
5
+ セッション開始時にユーザーのプロファイルとコンテキストを読み込み、パーソナライズされた応答を提供します。
6
+
7
+ ## 手順
8
+
9
+ 1. **プロファイル読み込み**: `watashi_get_profile_summary` を呼び出して、ユーザーの好み・スキル・価値観の全体像を取得する。
10
+
11
+ 2. **関連コンテキスト取得**: `watashi_query_context` を呼び出して、現在のプロジェクトや作業に関連する直近のコンテキストを取得する。
12
+ - scopeパラメータがあれば、プロジェクトスコープで絞り込む(例: `project:watashi-db`)
13
+ - なければ `global` スコープで取得
14
+
15
+ 3. **直近のエピソード確認**: `watashi_list_episodes` を呼び出して、最近記録されたエピソード(思考パターン・意思決定)を2〜3件取得する。
16
+
17
+ 4. **コンテキスト要約の提供**: 取得した情報をもとに、以下を含む簡潔な挨拶を行う:
18
+ - ユーザーの主要な好み・作業スタイルの認識
19
+ - 直近の作業コンテキスト(進行中のプロジェクトなど)
20
+ - 関連するエピソードからの教訓や原則
21
+
22
+ ## 出力形式
23
+
24
+ ```
25
+ [ユーザー名/呼称]さん、こんにちは。
26
+
27
+ **現在のコンテキスト:**
28
+ - [プロジェクト/作業の状況]
29
+ - [関連する好み・設定]
30
+
31
+ **直近の活動:**
32
+ - [最近のエピソードや意思決定の要約]
33
+ ```
34
+
35
+ ## 注意事項
36
+ - プロファイルが空の場合は、基本的な挨拶のみ行い、情報の記録を促す
37
+ - 情報量が多い場合は、最も関連性の高いものに絞って提示する
38
+ - ユーザーの好みに合わせた言語(日本語/英語)で応答する
@@ -0,0 +1,9 @@
1
+ export declare const DB_DIR: string;
2
+ export declare const DB_PATH: string;
3
+ export declare const SERVER_NAME = "watashi-db";
4
+ export declare const SERVER_VERSION = "0.0.5";
5
+ export declare const CLAIM_CATEGORIES: readonly ["preference", "identity", "skill", "value", "workflow", "knowledge", "custom"];
6
+ export declare const CLAIM_SCOPES: readonly ["global", "project", "tool", "temporal"];
7
+ export declare const CLAIM_STATUSES: readonly ["active", "retracted", "superseded"];
8
+ export declare const DECISION_STATUSES: readonly ["active", "reversed", "obsolete"];
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1,43 @@
1
+ import path from "node:path";
2
+ import os from "node:os";
3
+ // DBファイル配置: ~/.watashi-db/watashi.db(ユーザーホーム配下、プロジェクト非依存)
4
+ export const DB_DIR = path.join(os.homedir(), ".watashi-db");
5
+ export const DB_PATH = path.join(DB_DIR, "watashi.db");
6
+ // MCPサーバー情報
7
+ export const SERVER_NAME = "watashi-db";
8
+ // 2026-02-11 修正: 実態に合わせてv0.0.1に変更(Codexレビュー指摘)
9
+ // 元の実装: 0.1.0 としていたが、初期実装段階のため0.0.1が適切
10
+ // 2026-02-13 修正: v0.0.5(Episodeモデル追加)
11
+ // 元の実装: v0.0.4(Phase 3: テスト・README・LICENSE・エクスポート・npm化)
12
+ // v0.1.0はGitHub公開時に付与予定
13
+ export const SERVER_VERSION = "0.0.5";
14
+ // Claimのカテゴリ一覧
15
+ export const CLAIM_CATEGORIES = [
16
+ "preference", // 好み・設定
17
+ "identity", // アイデンティティ・自己認識
18
+ "skill", // スキル・能力
19
+ "value", // 価値観・信条
20
+ "workflow", // ワークフロー・作業手順
21
+ "knowledge", // 知識・事実
22
+ "custom", // カスタム
23
+ ];
24
+ // Claimのスコープ種別
25
+ export const CLAIM_SCOPES = [
26
+ "global", // 全体に適用
27
+ "project", // 特定プロジェクトに適用(project:<name>)
28
+ "tool", // 特定ツールに適用(tool:<name>)
29
+ "temporal", // 一時的に適用
30
+ ];
31
+ // Claimのステータス(削除せず履歴保持)
32
+ export const CLAIM_STATUSES = [
33
+ "active", // 有効
34
+ "retracted", // 撤回済み
35
+ "superseded", // 後続に置き換え済み
36
+ ];
37
+ // 意思決定のステータス
38
+ export const DECISION_STATUSES = [
39
+ "active", // 有効
40
+ "reversed", // 撤回済み
41
+ "obsolete", // 廃止
42
+ ];
43
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAEvD,YAAY;AACZ,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,+CAA+C;AAC/C,uCAAuC;AACvC,sCAAsC;AACtC,wDAAwD;AACxD,wBAAwB;AACxB,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,eAAe;AACf,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAG,QAAQ;IACvB,UAAU,EAAK,gBAAgB;IAC/B,OAAO,EAAQ,SAAS;IACxB,OAAO,EAAQ,SAAS;IACxB,UAAU,EAAK,cAAc;IAC7B,WAAW,EAAI,QAAQ;IACvB,QAAQ,EAAO,OAAO;CACd,CAAC;AAEX,eAAe;AACf,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAO,QAAQ;IACvB,SAAS,EAAM,8BAA8B;IAC7C,MAAM,EAAS,wBAAwB;IACvC,UAAU,EAAK,SAAS;CAChB,CAAC;AAEX,wBAAwB;AACxB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ,EAAO,KAAK;IACpB,WAAW,EAAI,OAAO;IACtB,YAAY,EAAG,YAAY;CACnB,CAAC;AAEX,aAAa;AACb,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAO,KAAK;IACpB,UAAU,EAAK,OAAO;IACtB,UAAU,EAAK,KAAK;CACZ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import Database from "better-sqlite3";
2
+ /**
3
+ * SQLiteデータベース接続を取得(シングルトン)
4
+ * WALモード有効、FTS5使用
5
+ */
6
+ export declare function getDatabase(): Database.Database;
7
+ /**
8
+ * データベース接続を閉じる(プロセス終了時に呼び出し)
9
+ */
10
+ export declare function closeDatabase(): void;
11
+ /**
12
+ * テスト用: データベースインスタンスを外部から差し替える
13
+ * 本番コードでは使用しないこと
14
+ */
15
+ export declare function _setDatabaseForTesting(testDb: Database.Database): void;
16
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1,42 @@
1
+ import Database from "better-sqlite3";
2
+ import fs from "node:fs";
3
+ import { DB_DIR, DB_PATH } from "../constants.js";
4
+ import { initializeSchema } from "./schema.js";
5
+ let db = null;
6
+ /**
7
+ * SQLiteデータベース接続を取得(シングルトン)
8
+ * WALモード有効、FTS5使用
9
+ */
10
+ export function getDatabase() {
11
+ if (db)
12
+ return db;
13
+ // DBディレクトリが無ければ作成
14
+ if (!fs.existsSync(DB_DIR)) {
15
+ fs.mkdirSync(DB_DIR, { recursive: true });
16
+ }
17
+ db = new Database(DB_PATH);
18
+ // WALモード: 読み書き並行性の向上
19
+ db.pragma("journal_mode = WAL");
20
+ // 外部キー制約を有効化
21
+ db.pragma("foreign_keys = ON");
22
+ // スキーマ初期化
23
+ initializeSchema(db);
24
+ return db;
25
+ }
26
+ /**
27
+ * データベース接続を閉じる(プロセス終了時に呼び出し)
28
+ */
29
+ export function closeDatabase() {
30
+ if (db) {
31
+ db.close();
32
+ db = null;
33
+ }
34
+ }
35
+ /**
36
+ * テスト用: データベースインスタンスを外部から差し替える
37
+ * 本番コードでは使用しないこと
38
+ */
39
+ export function _setDatabaseForTesting(testDb) {
40
+ db = testDb;
41
+ }
42
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,IAAI,EAAE,GAA6B,IAAI,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElB,kBAAkB;IAClB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE3B,qBAAqB;IACrB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,aAAa;IACb,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,UAAU;IACV,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAErB,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,EAAE,EAAE,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,EAAE,GAAG,IAAI,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAyB;IAC9D,EAAE,GAAG,MAAM,CAAC;AACd,CAAC"}