watashi-db 0.0.12 → 0.0.14

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 (77) hide show
  1. package/CLAUDE.md +36 -0
  2. package/LICENSE +71 -21
  3. package/README.md +42 -3
  4. package/cowork-plugin/skills/groom/SKILL.md +108 -0
  5. package/cowork-plugin/skills/recall/SKILL.md +5 -6
  6. package/cowork-plugin/skills/reflect/SKILL.md +4 -4
  7. package/cowork-plugin/skills/remember/SKILL.md +3 -3
  8. package/cowork-plugin/skills/session-start/SKILL.md +3 -3
  9. package/dist/config/schema.js +1 -1
  10. package/dist/constants.d.ts +6 -2
  11. package/dist/constants.js +20 -3
  12. package/dist/constants.js.map +1 -1
  13. package/dist/database/archive.js +6 -6
  14. package/dist/database/queries-core.d.ts +99 -1
  15. package/dist/database/queries-core.js +395 -12
  16. package/dist/database/queries-core.js.map +1 -1
  17. package/dist/database/queries.d.ts +87 -1
  18. package/dist/database/queries.js +36 -0
  19. package/dist/database/queries.js.map +1 -1
  20. package/dist/database/schema.d.ts +1 -0
  21. package/dist/database/schema.js +1915 -214
  22. package/dist/database/schema.js.map +1 -1
  23. package/dist/embedding/embed-on-write.d.ts +7 -1
  24. package/dist/embedding/embed-on-write.js +8 -3
  25. package/dist/embedding/embed-on-write.js.map +1 -1
  26. package/dist/hook.js +9 -6
  27. package/dist/hook.js.map +1 -1
  28. package/dist/index.js +3 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/resources/config-guide-content.d.ts +1 -1
  31. package/dist/resources/config-guide-content.js +2 -2
  32. package/dist/server-instructions.js +16 -17
  33. package/dist/server-instructions.js.map +1 -1
  34. package/dist/server.d.ts +4 -1
  35. package/dist/server.js +42 -18
  36. package/dist/server.js.map +1 -1
  37. package/dist/setup.js +5 -6
  38. package/dist/setup.js.map +1 -1
  39. package/dist/store/federation.d.ts +33 -1
  40. package/dist/store/federation.js +94 -0
  41. package/dist/store/federation.js.map +1 -1
  42. package/dist/store/sync-manager.d.ts +1 -1
  43. package/dist/store/sync-manager.js +9 -9
  44. package/dist/tools/claim-tools.d.ts +1 -1
  45. package/dist/tools/claim-tools.js +7 -7
  46. package/dist/tools/claim-tools.js.map +1 -1
  47. package/dist/tools/decision-tools.d.ts +1 -1
  48. package/dist/tools/decision-tools.js +2 -2
  49. package/dist/tools/decision-tools.js.map +1 -1
  50. package/dist/tools/episode-tools.d.ts +1 -1
  51. package/dist/tools/episode-tools.js +2 -2
  52. package/dist/tools/episode-tools.js.map +1 -1
  53. package/dist/tools/file-tools.d.ts +3 -0
  54. package/dist/tools/file-tools.js +347 -0
  55. package/dist/tools/file-tools.js.map +1 -0
  56. package/dist/tools/get-tools.d.ts +1 -1
  57. package/dist/tools/get-tools.js +39 -5
  58. package/dist/tools/get-tools.js.map +1 -1
  59. package/dist/tools/knowledge-tools.d.ts +1 -1
  60. package/dist/tools/knowledge-tools.js +2 -2
  61. package/dist/tools/knowledge-tools.js.map +1 -1
  62. package/dist/tools/maintenance-tools.d.ts +2 -1
  63. package/dist/tools/maintenance-tools.js +150 -7
  64. package/dist/tools/maintenance-tools.js.map +1 -1
  65. package/dist/tools/memo-tools.d.ts +7 -11
  66. package/dist/tools/memo-tools.js +499 -307
  67. package/dist/tools/memo-tools.js.map +1 -1
  68. package/dist/tools/query-tools.d.ts +1 -1
  69. package/dist/tools/query-tools.js +57 -5
  70. package/dist/tools/query-tools.js.map +1 -1
  71. package/dist/types.d.ts +383 -55
  72. package/dist/types.js +129 -17
  73. package/dist/types.js.map +1 -1
  74. package/misc/20260316_110841_groom-recipe.md +483 -0
  75. package/misc/20260316_xaml-testing-library-recipe.md +817 -0
  76. package/package.json +5 -3
  77. package/scripts/update-license-version.sh +7 -0
package/CLAUDE.md ADDED
@@ -0,0 +1,36 @@
1
+ # リリース手順
2
+
3
+ **重要: 順番を厳守すること。push 前にタグを remote に送らない。**
4
+
5
+ 1. `npm version patch` — package.json 更新 + コミット + **ローカルタグ自動作成**
6
+ 2. `git push origin main` — コミットを先に push(ここで失敗したらタグは送らない)
7
+ 3. `git push origin v<version>` — push 成功を確認してからタグを push
8
+ 4. GitHub Actions (publish.yml) が tag push → npm publish を自動実行
9
+
10
+ ### なぜこの順番か
11
+
12
+ - `npm version` はタグも自動作成するので `git tag` は不要
13
+ - コミットの push が失敗した場合、タグだけ remote にある不整合を防ぐため、push を2段階にする
14
+ - タグ番号は package.json の version と一致させる(真実の源泉は package.json)
15
+
16
+ ### タグの打ち直しが必要になった場合
17
+
18
+ ```bash
19
+ git tag -d v<version> # ローカルタグ削除
20
+ git push origin :refs/tags/v<version> # リモートタグ削除(push済みの場合のみ)
21
+ # 修正後、再度 npm version で打ち直す
22
+ ```
23
+
24
+ ### ライセンス
25
+
26
+ BSL 1.1。リリース時に LICENSE の `Licensed Work` バージョンも更新すること。
27
+
28
+ # バージョンアップ時の LICENSE 更新
29
+
30
+ LICENSE ファイルの `Licensed Work:` 行を新バージョンに合わせて更新する:
31
+
32
+ ```
33
+ Licensed Work: watashi-db <new-version>
34
+ ```
35
+
36
+ Change Date は各バージョンのリリース日から3年後に設定する。
package/LICENSE CHANGED
@@ -1,21 +1,71 @@
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.
1
+ Business Source License 1.1
2
+
3
+ Parameters
4
+
5
+ Licensor: bareforge
6
+ Licensed Work: watashi-db 0.0.14
7
+ The Licensed Work is (c) 2026 bareforge
8
+ Additional Use Grant: You may make use of the Licensed Work, provided that
9
+ you may not use the Licensed Work for a Commercial
10
+ Purpose.
11
+ A "Commercial Purpose" means use in or for a product
12
+ or service that is sold, offered for sale, licensed,
13
+ or otherwise made available to third parties for a fee
14
+ or other commercial consideration.
15
+ Non-commercial use, personal use, educational use,
16
+ and evaluation use are always permitted.
17
+ Change Date: 2029-03-16
18
+ Change License: Apache License, Version 2.0
19
+
20
+ For information about alternative licensing arrangements for the Licensed Work,
21
+ please contact: bareforge.license@outlook.jp
22
+
23
+ -----------------------------------------------------------------------------
24
+
25
+ Notice
26
+
27
+ Business Source License 1.1
28
+
29
+ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
30
+ "Business Source License" is a trademark of MariaDB Corporation Ab.
31
+
32
+ Terms
33
+
34
+ The Licensor hereby grants you the right to copy, modify, create derivative
35
+ works, redistribute, and make non-production use of the Licensed Work. The
36
+ Licensor may make an Additional Use Grant, above, permitting limited production
37
+ use.
38
+
39
+ Effective on the Change Date, or the fourth anniversary of the first publicly
40
+ available distribution of a specific version of the Licensed Work under this
41
+ License, whichever comes first, the Licensor hereby grants you rights under the
42
+ terms of the Change License, and the rights granted in the paragraph above
43
+ terminate.
44
+
45
+ If your use of the Licensed Work does not comply with the requirements currently
46
+ in effect as described in this License, you must purchase a commercial license
47
+ from the Licensor, its affiliated entities, or authorized resellers, or you must
48
+ refrain from using the Licensed Work.
49
+
50
+ All copies of the original and modified Licensed Work, and derivative works of
51
+ the Licensed Work, are subject to this License. This License applies separately
52
+ for each version of the Licensed Work and the Change Date may vary for each
53
+ version of the Licensed Work released by Licensor.
54
+
55
+ You must conspicuously display this License on each original or modified copy of
56
+ the Licensed Work. If you receive the Licensed Work in original or modified form
57
+ from a third party, the terms and conditions set forth in this License apply to
58
+ your use of that work.
59
+
60
+ Any use of the Licensed Work in violation of this License will automatically
61
+ terminate your rights under this License for the current and all other versions
62
+ of the Licensed Work.
63
+
64
+ This License does not grant you any right in any trademark or logo of Licensor
65
+ or its affiliates (provided that you may use a trademark or logo of Licensor as
66
+ expressly required by this License).
67
+
68
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN
69
+ "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS
70
+ OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY,
71
+ FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
package/README.md CHANGED
@@ -99,6 +99,31 @@ Claude Code を再起動すれば使えます。
99
99
  > watashi-db への記録・活用は server instructions 経由の LLM 任せとなります。
100
100
  > 背景: [#31](https://github.com/bareforge/watashi-db/issues/31), [#32](https://github.com/bareforge/watashi-db/issues/32)
101
101
 
102
+ ### ステップ 2': Codex CLI 向け推奨設定(オプション)
103
+
104
+ Codex CLI で使う場合、デフォルトは全許可(読み書き両方可能)で、そのまま使えます。
105
+ 書き込みを制限したい場合は、`~/.watashi-db/config.json` の `client_policies` で制御できます:
106
+
107
+ ```json
108
+ {
109
+ "client_policies": {
110
+ "codex": {
111
+ "read": {
112
+ "categories": ["skill", "workflow", "knowledge", "preference"],
113
+ "scopes": ["global", "project:*"]
114
+ },
115
+ "write": "none"
116
+ }
117
+ }
118
+ }
119
+ ```
120
+
121
+ Embedding(意味検索)を使う場合は、MCP 登録時に環境変数を渡してください:
122
+
123
+ ```bash
124
+ codex mcp add watashi-db --env OPENAI_API_KEY=$OPENAI_API_KEY -- npx -y watashi-db@latest
125
+ ```
126
+
102
127
  ### Claude Code Cowork プラグイン
103
128
 
104
129
  リポジトリの `cowork-plugin/` ディレクトリに Cowork 用プラグインが含まれています。
@@ -273,8 +298,14 @@ watashi_log_decision:
273
298
  | `watashi_log_decision` | 意思決定を構造的に記録 |
274
299
  | `watashi_log_episode` | エピソード(問題→決定→結果→教訓)を記録 |
275
300
  | `watashi_store_knowledge` | Theory/Insight/Model を記録 |
276
- | `watashi_store_user_memo` | Memo/Plan/Issue/Discussion を記録 |
277
- | `watashi_update_user_memo` | Memo/Plan/Issue/Discussion を更新 |
301
+ | `watashi_store_user_memo` | 参照用メモを記録 |
302
+ | `watashi_update_user_memo` | メモを更新 |
303
+ | `watashi_store_user_plan` | チェックリスト型の作業計画を記録 |
304
+ | `watashi_update_user_plan` | 作業計画のメタ情報を更新 |
305
+ | `watashi_check_user_plan` | チェックリスト項目を済にする(全項目済で自動完了) |
306
+ | `watashi_store_user_issue` | 課題・議論を記録 |
307
+ | `watashi_update_user_issue` | 課題のメタ情報を更新 |
308
+ | `watashi_comment_user_issue` | 課題にタイムスタンプ付きコメントを追記 |
278
309
  | `watashi_maintain` | DB保守(統計・バックアップ・エクスポート・棚卸・Store管理) |
279
310
 
280
311
  ---
@@ -316,4 +347,12 @@ npm run dev
316
347
 
317
348
  ## ライセンス
318
349
 
319
- [MIT](LICENSE)
350
+ [Business Source License 1.1](LICENSE)
351
+
352
+ - **個人利用・非商用利用・教育利用・評価利用**: 常に無料
353
+ - **商用利用**: ライセンス契約が必要(bareforge.license@outlook.jp)
354
+ - **Change Date**: 2029-03-16 以降、Apache License 2.0 に自動転換
355
+
356
+ > [!NOTE]
357
+ > v0.0.12 以前は MIT License で公開されていました。
358
+ > 既に MIT 版を取得済みの方は、その時点のバージョンを MIT 条件で引き続き利用できます。
@@ -0,0 +1,108 @@
1
+ ---
2
+ description: >
3
+ 記録の棚卸し(蒸留)を行う。未処理のEpisode/Decisionからパターンを抽出し、
4
+ Insight/Theory/Modelとして蒸留する。蒸留済みの古いレコードはアーカイブする。
5
+ ---
6
+
7
+ 記録の棚卸し(蒸留)を行います。
8
+
9
+ ## 引数
10
+ - `$ARGUMENTS`: (オプション)蒸留したいトピックやスコープ
11
+
12
+ ## 手順
13
+
14
+ ### Step 1: 素材の収集
15
+ 以下のツールを並行して呼び出し、蒸留対象のデータを収集する:
16
+ - `watashi_maintain(action='groom_episodes')`: 未グルーミングのEpisode一覧
17
+ - `watashi_search(entity_types=["decision"], limit=50)`: active Decision一覧
18
+ - `watashi_search(entity_types=["insight"], limit=20)`: 既存Insight(重複回避用)
19
+
20
+ ### Step 2: クラスタリング
21
+ 収集したEpisode/Decisionから以下を分析:
22
+
23
+ 1. **類似Episodeのグループ化**: トピック・問題パターンが共通するEpisodeをクラスタにまとめる
24
+ 2. **各クラスタに仮タイトルを付ける**: 「〜に関する問題群」のように命名
25
+ 3. **既存Insightとの照合**: 既にカバーされているクラスタは除外
26
+
27
+ 素材が5件未満、またはクラスタが形成できない場合は蒸留を見送り、蓄積を促す。
28
+
29
+ ### Step 3: 探索軸による分析(蒸留の核心)
30
+ 各クラスタに対して、以下の観点で**すべて検討**する:
31
+
32
+ | 探索軸 | 問い | 例 |
33
+ |--------|------|----|
34
+ | **手順化** | チェックリストで防げるか? | 「カラム追加時の確認事項」 |
35
+ | **自動化** | コード・ツール・lintで検出できるか? | 「CI でカラム順チェック」 |
36
+ | **ルール化** | 制約・規約として定義できるか? | 「命名規則: device = デバイス」 |
37
+ | **検出強化** | テスト・レビューで拾えるか? | 「スキーマテストに含める」 |
38
+ | **不要** | 個別対応で十分か? | 「再発可能性が低い一過性の問題」 |
39
+
40
+ 各軸について「適用可能」か「不要(理由)」を判定する。
41
+ **同じ種類の発想を繰り返さない**こと。各軸は異なる視点からのアプローチ。
42
+
43
+ ### Step 4: Insight/Theory 案の構成と提案
44
+ 分析結果から最適な形を選び、以下の形式でユーザーに提案する。
45
+ **書き込む前に必ずユーザーの確認を得ること。**
46
+
47
+ ```
48
+ ### 蒸留提案 #1
49
+ **種別**: Insight / Theory
50
+ **タイトル**: [具体的で検索しやすいタイトル]
51
+ **出典Episode**: [ID一覧 + 各タイトル]
52
+ **探索結果**:
53
+ - 手順化: [適用可能 — 理由] / [不要 — 理由]
54
+ - 自動化: [適用可能 — 理由] / [不要 — 理由]
55
+ - ルール化: [適用可能 — 理由] / [不要 — 理由]
56
+ - 検出強化: [適用可能 — 理由] / [不要 — 理由]
57
+ **採用した形式**: [手順化] ← なぜこれが最適かを一言で
58
+ **l2_trigger_conditions**: [いつ適用するか]
59
+ **l2_principles**: [行動可能な教訓 1〜3個]
60
+ **l2_resolution_steps**: [具体的な手順]
61
+
62
+ → このまま書き込みますか?修正がありますか?
63
+ ```
64
+
65
+ ユーザーが承認したら `watashi_store_knowledge` で書き込む。
66
+ 修正指示があれば反映してから書き込む。
67
+
68
+ 「まとめただけ」にならないよう、**「次に同じ状況になったときの行動が変わる」**レベルの知見を目指す。
69
+
70
+ ### Step 5: グルーミング済みマーク
71
+ 蒸留に使用したEpisodeをマーク:
72
+ - `watashi_maintain(action='mark_groomed', episode_ids=[...])`
73
+
74
+ ### Step 6: アーカイブ(ユーザー承認制)
75
+ 蒸留済みの古いレコードをアーカイブ(最新20件は維持):
76
+ 1. `watashi_maintain(action='archive_episodes', archive_keep_latest=20, dry_run=true)` でプレビュー
77
+ 2. 件数と対象をユーザーに提示し、承認を得る
78
+ 3. 承認後 `dry_run=false` で実行
79
+ 4. Decision も同様に実行
80
+
81
+ ### Step 7: サマリー報告
82
+
83
+ ## 出力形式
84
+
85
+ ```
86
+ ## 棚卸しサマリー
87
+
88
+ ### 分析した素材
89
+ - Episode: X件(うち未グルーミング: Y件)
90
+ - Decision: Z件
91
+ - クラスタ: N個
92
+
93
+ ### 蒸留結果
94
+ - 新規Insight: N件
95
+ - [タイトル](出典: [Episode ID一覧])
96
+ - 新規Theory: N件(該当があれば)
97
+
98
+ ### アーカイブ
99
+ - Episode: X件をアーカイブ(最新20件は維持)
100
+ - Decision: Y件をアーカイブ(最新20件は維持)
101
+ ```
102
+
103
+ ## 注意事項
104
+ - 素材が5件未満の場合は蒸留を見送り、蓄積を促す
105
+ - アーカイブは必ず dry_run でプレビュー → ユーザー承認後に実行
106
+ - supporting_episode_ids を必ず設定する(2件以上で行動制約候補に昇格)
107
+ - 既存のInsight/Theoryと重複する場合は統合を提案する
108
+ - **Insight/Theory/Model の書き込みは必ずユーザー確認後に行う**(通常記録と異なる)
@@ -15,15 +15,14 @@ watashi-db から過去のコンテキストを検索・参照します。
15
15
 
16
16
  ## 手順
17
17
 
18
- 1. **概要確認**: 引数なし、または初回利用時はまず `watashi_list_topics` で記録済みトピックの概要を確認する
18
+ 1. **概要確認**: 引数なし、または初回利用時はまず `watashi_get(entity_type='profile')` でプロファイルの全体像を確認する
19
19
 
20
20
  2. **トピック特定**: $ARGUMENTS または会話の文脈から検索キーワードを抽出
21
21
 
22
- 3. **検索実行**: 以下のツールを適切に使い分ける:
23
- - `watashi_list_topics`: 記録済みトピックの全体像(カテゴリ分布・タグ上位・最近の判断)
24
- - `watashi_query_context`: 幅広いトピック検索(Claims + Decisions + Episodes 横断)
25
- - `watashi_search_claims`: 特定カテゴリの好み・スキルを絞り込む場合
26
- - `watashi_get_context_pack`: トークン予算を指定した効率的な検索
22
+ 3. **検索実行**: `watashi_search` で全エンティティ横断検索を行う:
23
+ - `query`: 検索キーワード(自然言語可)
24
+ - `entity_types`: 絞り込む場合は `["claim"]`, `["episode"]` 等を指定
25
+ - `category`: Claim のカテゴリで絞り込む場合に指定(skill, preference 等)
27
26
 
28
27
  4. **結果の活用**:
29
28
  - 検索結果が0件なら何も報告しない(ユーザーの邪魔をしない)
@@ -9,10 +9,10 @@ description: 記録されたエピソードや意思決定を振り返り、パ
9
9
 
10
10
  ## 手順
11
11
 
12
- 1. **データ収集**: 以下のツールを並行して呼び出し、記録済みデータを取得する:
13
- - `watashi_list_episodes`: エピソード一覧(引数があればキーワードで絞り込み)
14
- - `watashi_list_decisions`: 意思決定一覧(引数があればキーワードで絞り込み)
15
- - `watashi_search_claims`: 関連するClaim(category: value, workflow を優先)
12
+ 1. **データ収集**: 以下の検索を並行して実行し、記録済みデータを取得する:
13
+ - `watashi_search(entity_types=['episode'], query=...)`: エピソード一覧(引数があればキーワードで絞り込み)
14
+ - `watashi_search(entity_types=['decision'], query=...)`: 意思決定一覧(引数があればキーワードで絞り込み)
15
+ - `watashi_search(entity_types=['claim'], category='value', query=...)`: 関連するClaim(value, workflow を優先)
16
16
 
17
17
  2. **パターン分析**: 取得したデータから以下のパターンを抽出する:
18
18
  - **繰り返し現れるテーマ**: 複数のエピソードに共通するトピック
@@ -10,15 +10,15 @@ description: ユーザーの好み・スキル・知識・価値観などをわ
10
10
  ## 手順
11
11
 
12
12
  1. **引数の解析**: `$ARGUMENTS` の内容を分析し、記録の種類を判別する:
13
- - **好み(preference)**: 「〜が好き」「〜を使いたい」→ `watashi_store_preference` を使用
13
+ - **好み(preference)**: 「〜が好き」「〜を使いたい」→ `watashi_store_claim` を使用(category: preference)
14
14
  - **スキル(skill)**: 「〜ができる」「〜を学んだ」→ `watashi_store_claim` を使用(category: skill)
15
15
  - **知識(knowledge)**: 「〜について知っている」→ `watashi_store_claim` を使用(category: knowledge)
16
16
  - **価値観(value)**: 「〜を大切にしている」→ `watashi_store_claim` を使用(category: value)
17
17
  - **ワークフロー(workflow)**: 「〜の手順で作業する」→ `watashi_store_claim` を使用(category: workflow)
18
18
  - **アイデンティティ(identity)**: 「〜として活動している」→ `watashi_store_claim` を使用(category: identity)
19
19
 
20
- 2. **重複チェック**: `watashi_search_claims` で類似する既存Claimがないか確認する。
21
- - 類似Claimが見つかった場合、更新(`watashi_update_claim`)または置き換え(`watashi_supersede_claim`)を提案する。
20
+ 2. **重複チェック**: `watashi_search(entity_types=['claim'], query=...)` で類似する既存Claimがないか確認する。
21
+ - 類似Claimが見つかった場合、更新(`watashi_update_claim`)を提案する。
22
22
 
23
23
  3. **記録実行**: 適切なツールで記録を行う。
24
24
  - `subject`: 通常は "user"
@@ -6,13 +6,13 @@ description: セッション開始時にユーザーのプロファイルとコ
6
6
 
7
7
  ## 手順
8
8
 
9
- 1. **プロファイル読み込み**: `watashi_get_profile_summary` を呼び出して、ユーザーの好み・スキル・価値観の全体像を取得する。
9
+ 1. **プロファイル読み込み**: `watashi_get(entity_type='profile')` を呼び出して、ユーザーの好み・スキル・価値観の全体像を取得する。
10
10
 
11
- 2. **関連コンテキスト取得**: `watashi_query_context` を呼び出して、現在のプロジェクトや作業に関連する直近のコンテキストを取得する。
11
+ 2. **関連コンテキスト取得**: `watashi_search` を呼び出して、現在のプロジェクトや作業に関連する直近のコンテキストを取得する。
12
12
  - scopeパラメータがあれば、プロジェクトスコープで絞り込む(例: `project:watashi-db`)
13
13
  - なければ `global` スコープで取得
14
14
 
15
- 3. **直近のエピソード確認**: `watashi_list_episodes` を呼び出して、最近記録されたエピソード(思考パターン・意思決定)を2〜3件取得する。
15
+ 3. **直近のエピソード確認**: `watashi_search(entity_types=['episode'], limit=3)` を呼び出して、最近記録されたエピソード(思考パターン・意思決定)を2〜3件取得する。
16
16
 
17
17
  4. **コンテキスト要約の提供**: 取得した情報をもとに、以下を含む簡潔な挨拶を行う:
18
18
  - ユーザーの主要な好み・作業スタイルの認識
@@ -7,7 +7,7 @@ import { z } from "zod";
7
7
  /** 同期モード: read-write(双方向)/ write-only(バックアップ専用)/ read-only(受信専用) */
8
8
  export const SyncModeSchema = z.enum(["read-write", "write-only", "read-only"]);
9
9
  /** 同期設定 */
10
- // 2026-03-05 修正: generations を削除(B案移行によりスナップショットはclient_id別1ファイル上書き方式になり、世代管理は不要になった)
10
+ // 2026-03-05 修正: generations を削除(B案移行によりスナップショットはdevice_id別1ファイル上書き方式になり、世代管理は不要になった)
11
11
  // 2026-03-13 追加: mode フィールド(read-write / write-only / read-only)
12
12
  export const SyncConfigSchema = z.object({
13
13
  enabled: z.boolean().default(true),
@@ -1,14 +1,15 @@
1
1
  export declare const DB_DIR: string;
2
2
  export declare const DB_PATH: string;
3
+ export declare const DEV_DB_PATH: string;
3
4
  export declare const LEGACY_DB_PATH: string;
4
5
  export declare const CONFIG_PATH: string;
5
6
  export declare const BUSY_TIMEOUT_MS = 5000;
6
7
  export declare const SERVER_NAME = "watashi-db";
7
- export declare const SERVER_VERSION = "0.0.8";
8
+ export declare const SERVER_VERSION: string;
8
9
  export declare const CLAIM_CATEGORIES: readonly ["preference", "identity", "skill", "value", "workflow", "knowledge", "custom"];
9
10
  export declare const CLAIM_SCOPES: readonly ["global", "persona", "project", "tool", "temporal"];
10
11
  export declare const CLAIM_STATUSES: readonly ["active", "retracted", "superseded", "promoted"];
11
- export declare const DECISION_STATUSES: readonly ["active", "reversed", "obsolete", "promoted"];
12
+ export declare const DECISION_STATUSES: readonly ["active", "reversed", "obsolete", "archived", "promoted"];
12
13
  export declare const THEORY_STATUSES: readonly ["active", "archived", "promoted"];
13
14
  export declare const INSIGHT_STATUSES: readonly ["active", "archived", "promoted"];
14
15
  export declare const MODEL_STATUSES: readonly ["active", "archived", "promoted"];
@@ -17,4 +18,7 @@ export declare const USER_MEMO_USAGE_POLICIES: readonly ["auto", "on_request", "
17
18
  export declare const USER_PLAN_STATUSES: readonly ["active", "completed", "archived"];
18
19
  export declare const USER_ISSUE_STATUSES: readonly ["open", "closed", "archived"];
19
20
  export declare const USER_ISSUE_PRIORITIES: readonly ["low", "medium", "high", "critical"];
21
+ export declare const USER_FILE_STATUSES: readonly ["active", "archived"];
22
+ export declare const USER_TOPIC_STATUSES: readonly ["active", "closed", "archived"];
23
+ export declare const USER_TOPIC_PRIORITIES: readonly ["low", "medium", "high", "critical"];
20
24
  //# sourceMappingURL=constants.d.ts.map
package/dist/constants.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import path from "node:path";
2
2
  import os from "node:os";
3
+ import { createRequire } from "node:module";
3
4
  // DBファイル配置: ~/.watashi-db/default.db(ユーザーホーム配下、プロジェクト非依存)
4
5
  export const DB_DIR = path.join(os.homedir(), ".watashi-db");
5
6
  export const DB_PATH = path.join(DB_DIR, "default.db");
7
+ export const DEV_DB_PATH = path.join(DB_DIR, "develop.db");
6
8
  // 旧デフォルトDB名(自動リネームマイグレーション用)
7
9
  export const LEGACY_DB_PATH = path.join(DB_DIR, "watashi.db");
8
10
  // マルチStore設定ファイル
@@ -11,9 +13,10 @@ export const CONFIG_PATH = path.join(DB_DIR, "config.json");
11
13
  export const BUSY_TIMEOUT_MS = 5000;
12
14
  // MCPサーバー情報
13
15
  export const SERVER_NAME = "watashi-db";
14
- // 2026-02-11 修正: 実態に合わせてv0.0.1に変更(Codexレビュー指摘)
15
- // 元の実装: 0.1.0 としていたが、初期実装段階のため0.0.1が適切
16
- export const SERVER_VERSION = "0.0.8";
16
+ // 2026-03-19 修正: package.json から動的取得に変更(Codexレビュー指摘: バージョン不整合防止)
17
+ const _require = createRequire(import.meta.url);
18
+ const _pkg = _require("../package.json");
19
+ export const SERVER_VERSION = _pkg.version;
17
20
  // Claimのカテゴリ一覧
18
21
  export const CLAIM_CATEGORIES = [
19
22
  "preference", // 好み・設定
@@ -47,6 +50,7 @@ export const DECISION_STATUSES = [
47
50
  "active", // 有効
48
51
  "reversed", // 撤回済み
49
52
  "obsolete", // 廃止
53
+ "archived", // アーカイブ済み(蒸留済み)
50
54
  "promoted", // 別Storeへ昇格済み
51
55
  ];
52
56
  // Theoryのステータス
@@ -101,4 +105,17 @@ export const USER_ISSUE_PRIORITIES = [
101
105
  "high", // 高
102
106
  "critical", // 緊急
103
107
  ];
108
+ // UserFileのステータス(File Vault機能)
109
+ export const USER_FILE_STATUSES = [
110
+ "active", // 有効
111
+ "archived", // アーカイブ済み
112
+ ];
113
+ // UserTopicのステータス
114
+ export const USER_TOPIC_STATUSES = [
115
+ "active", // 活動中
116
+ "closed", // クローズ(議論完了)
117
+ "archived", // アーカイブ済み
118
+ ];
119
+ // UserTopicの優先度(USER_ISSUE_PRIORITIESと同一)
120
+ export const USER_TOPIC_PRIORITIES = USER_ISSUE_PRIORITIES;
104
121
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -58,7 +58,7 @@ export function initializeArchiveDb(archivePath, cutoffDate) {
58
58
  session_id TEXT,
59
59
  source_tool TEXT,
60
60
  created_at TEXT NOT NULL,
61
- client_id TEXT
61
+ device_id TEXT
62
62
  );
63
63
  CREATE INDEX IF NOT EXISTS idx_archive_audit_created ON audit_log(created_at);
64
64
 
@@ -115,8 +115,8 @@ export function executeArchive(db, archivePath, cutoffDate, tables, provenance)
115
115
  const auditId = ulid();
116
116
  const now = new Date().toISOString();
117
117
  db.prepare(`
118
- INSERT INTO main.audit_log (id, operation, entity_type, entity_id, summary, details, client_name, client_version, session_id, source_tool, client_id, created_at)
119
- VALUES (@id, @operation, @entity_type, @entity_id, @summary, @details, @client_name, @client_version, @session_id, @source_tool, @client_id, @created_at)
118
+ INSERT INTO main.audit_log (id, operation, entity_type, entity_id, summary, details, client_name, client_version, session_id, source_tool, device_id, created_at)
119
+ VALUES (@id, @operation, @entity_type, @entity_id, @summary, @details, @client_name, @client_version, @session_id, @source_tool, @device_id, @created_at)
120
120
  `).run({
121
121
  id: auditId,
122
122
  operation: "archive",
@@ -132,10 +132,10 @@ export function executeArchive(db, archivePath, cutoffDate, tables, provenance)
132
132
  client_version: provenance?.client_version ?? null,
133
133
  session_id: provenance?.session_id ?? null,
134
134
  source_tool: "watashi_archive_logs",
135
- // 2026-03-03 追加 (V21): client_id
136
- client_id: (() => {
135
+ // 2026-03-03 追加 (V21): device_id
136
+ device_id: (() => {
137
137
  try {
138
- const row = db.prepare("SELECT value FROM store_meta WHERE key = 'client_id'").get();
138
+ const row = db.prepare("SELECT value FROM store_meta WHERE key = 'device_id'").get();
139
139
  return row?.value ?? null;
140
140
  }
141
141
  catch {