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.
Files changed (92) hide show
  1. package/CLAUDE.md +36 -0
  2. package/LICENSE +1 -1
  3. package/README.md +64 -2
  4. package/cowork-plugin/skills/groom/SKILL.md +51 -15
  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/auth/token.d.ts +7 -0
  10. package/dist/auth/token.js +14 -0
  11. package/dist/auth/token.js.map +1 -0
  12. package/dist/config/schema.js +1 -1
  13. package/dist/constants.d.ts +9 -9
  14. package/dist/constants.js +29 -43
  15. package/dist/constants.js.map +1 -1
  16. package/dist/database/archive.js +6 -6
  17. package/dist/database/groom.js +5 -5
  18. package/dist/database/groom.js.map +1 -1
  19. package/dist/database/queries-core.d.ts +109 -5
  20. package/dist/database/queries-core.js +546 -186
  21. package/dist/database/queries-core.js.map +1 -1
  22. package/dist/database/queries.d.ts +85 -5
  23. package/dist/database/queries.js +33 -0
  24. package/dist/database/queries.js.map +1 -1
  25. package/dist/database/schema.d.ts +1 -0
  26. package/dist/database/schema.js +2299 -406
  27. package/dist/database/schema.js.map +1 -1
  28. package/dist/embedding/embed-on-write.d.ts +7 -1
  29. package/dist/embedding/embed-on-write.js +8 -3
  30. package/dist/embedding/embed-on-write.js.map +1 -1
  31. package/dist/hook.js +17 -9
  32. package/dist/hook.js.map +1 -1
  33. package/dist/http-server.d.ts +6 -0
  34. package/dist/http-server.js +235 -0
  35. package/dist/http-server.js.map +1 -0
  36. package/dist/index.js +14 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/resources/config-guide-content.d.ts +1 -1
  39. package/dist/resources/config-guide-content.js +2 -2
  40. package/dist/server-core.d.ts +15 -0
  41. package/dist/server-core.js +113 -0
  42. package/dist/server-core.js.map +1 -0
  43. package/dist/server-instructions.js +27 -24
  44. package/dist/server-instructions.js.map +1 -1
  45. package/dist/server.d.ts +4 -1
  46. package/dist/server.js +9 -103
  47. package/dist/server.js.map +1 -1
  48. package/dist/setup.js +5 -6
  49. package/dist/setup.js.map +1 -1
  50. package/dist/store/federation.d.ts +12 -1
  51. package/dist/store/federation.js +38 -0
  52. package/dist/store/federation.js.map +1 -1
  53. package/dist/store/sync-manager.d.ts +1 -1
  54. package/dist/store/sync-manager.js +9 -9
  55. package/dist/tools/claim-tools.d.ts +1 -1
  56. package/dist/tools/claim-tools.js +30 -17
  57. package/dist/tools/claim-tools.js.map +1 -1
  58. package/dist/tools/decision-tools.d.ts +1 -1
  59. package/dist/tools/decision-tools.js +23 -7
  60. package/dist/tools/decision-tools.js.map +1 -1
  61. package/dist/tools/episode-tools.d.ts +1 -1
  62. package/dist/tools/episode-tools.js +28 -7
  63. package/dist/tools/episode-tools.js.map +1 -1
  64. package/dist/tools/file-tools.d.ts +3 -0
  65. package/dist/tools/file-tools.js +350 -0
  66. package/dist/tools/file-tools.js.map +1 -0
  67. package/dist/tools/get-tools.d.ts +1 -1
  68. package/dist/tools/get-tools.js +39 -5
  69. package/dist/tools/get-tools.js.map +1 -1
  70. package/dist/tools/helpers.d.ts +40 -0
  71. package/dist/tools/helpers.js +69 -0
  72. package/dist/tools/helpers.js.map +1 -1
  73. package/dist/tools/knowledge-tools.d.ts +1 -1
  74. package/dist/tools/knowledge-tools.js +38 -6
  75. package/dist/tools/knowledge-tools.js.map +1 -1
  76. package/dist/tools/maintenance-tools.d.ts +1 -1
  77. package/dist/tools/maintenance-tools.js +95 -52
  78. package/dist/tools/maintenance-tools.js.map +1 -1
  79. package/dist/tools/memo-tools.d.ts +7 -11
  80. package/dist/tools/memo-tools.js +509 -309
  81. package/dist/tools/memo-tools.js.map +1 -1
  82. package/dist/tools/query-tools.d.ts +1 -1
  83. package/dist/tools/query-tools.js +266 -242
  84. package/dist/tools/query-tools.js.map +1 -1
  85. package/dist/types.d.ts +513 -76
  86. package/dist/types.js +185 -33
  87. package/dist/types.js.map +1 -1
  88. package/misc/20260316_110841_groom-recipe.md +483 -0
  89. package/misc/20260316_xaml-testing-library-recipe.md +817 -0
  90. package/misc/20260331_remote-transport-recipe.md +316 -0
  91. package/package.json +4 -2
  92. package/scripts/update-license-version.sh +7 -0
@@ -5,9 +5,9 @@ import { getDatabase } from "../database/connection.js";
5
5
  import { getStoreManager, notifyWrite } from "../store/session-state.js";
6
6
  import { getClientPolicy, checkScopeWritePolicy, buildPolicyErrorResponse } from "../policy.js";
7
7
  import { applyLint, getLintMode, buildLintBlockResponse } from "../lint.js";
8
- import { withLintWarnings } from "./helpers.js";
9
- export function registerEpisodeTools(server) {
10
- server.tool("watashi_log_episode", "Log a structured episode (problem→decision→outcome→lesson). Pass id to add l1_content (Phase 2: natural language summary).", LogEpisodeSchema.shape, async (params, extra) => {
8
+ import { withLintWarnings, generateSearchSummaryFallback, generateAutoL1ForEpisode } from "./helpers.js";
9
+ export function registerEpisodeTools(server, toolPrefix = "watashi_") {
10
+ server.tool(`${toolPrefix}log_episode`, "Log a structured episode (problem→decision→outcome→lesson). Pass id to add l1_content (Phase 2: natural language summary).", LogEpisodeSchema.shape, async (params, extra) => {
11
11
  const lint = applyLint(params, getLintMode());
12
12
  if (lint.blocked)
13
13
  return buildLintBlockResponse(lint.warnings);
@@ -115,6 +115,27 @@ export function registerEpisodeTools(server) {
115
115
  };
116
116
  }
117
117
  const title = params.title;
118
+ // 2026-03-25 追加: auto_l1 が true の場合、l2_* から l1_content を自動生成
119
+ const l1_content = (params.auto_l1 && !params.l1_content)
120
+ ? generateAutoL1ForEpisode({
121
+ title,
122
+ l2_context: params.l2_context,
123
+ l2_trigger: params.l2_trigger,
124
+ l2_problems: params.l2_problems,
125
+ l2_desires: params.l2_desires,
126
+ l2_decisions: params.l2_decisions,
127
+ l2_outcomes: params.l2_outcomes,
128
+ l2_principles: params.l2_principles,
129
+ user_input: params.user_input,
130
+ })
131
+ : params.l1_content;
132
+ // 2026-03-25 追加: search_summary 未指定時はフォールバック自動生成
133
+ const search_summary = params.search_summary ?? generateSearchSummaryFallback({
134
+ title, l1_content,
135
+ l2_context: params.l2_context, l2_trigger: params.l2_trigger,
136
+ l2_problems: params.l2_problems, l2_outcomes: params.l2_outcomes,
137
+ l2_principles: params.l2_principles, user_input: params.user_input,
138
+ });
118
139
  const policy = getClientPolicy(getStoreManager().getConfig());
119
140
  const policyCheck = checkScopeWritePolicy(policy, params.scope ?? "global");
120
141
  if (!policyCheck.allowed)
@@ -124,7 +145,7 @@ export function registerEpisodeTools(server) {
124
145
  const { generateEpisodeEmbedding } = await import("../embedding/embed-on-write.js");
125
146
  l1_embedding = await generateEpisodeEmbedding({
126
147
  title,
127
- l1_content: params.l1_content,
148
+ l1_content,
128
149
  l2_context: params.l2_context,
129
150
  l2_trigger: params.l2_trigger,
130
151
  l2_problems: params.l2_problems ? JSON.stringify(params.l2_problems) : null,
@@ -137,7 +158,7 @@ export function registerEpisodeTools(server) {
137
158
  const episode = getDatabase().transaction(() => {
138
159
  const ep = insertEpisode({
139
160
  title,
140
- l1_content: params.l1_content,
161
+ l1_content,
141
162
  l2_context: params.l2_context,
142
163
  l2_trigger: params.l2_trigger,
143
164
  l2_problems: params.l2_problems ?? [],
@@ -148,7 +169,7 @@ export function registerEpisodeTools(server) {
148
169
  evidence_refs: params.evidence_refs ?? [],
149
170
  tags: params.tags ?? [],
150
171
  scope: params.scope,
151
- search_summary: params.search_summary,
172
+ search_summary,
152
173
  user_input: params.user_input,
153
174
  l1_embedding,
154
175
  source_tool: params.source_tool,
@@ -168,7 +189,7 @@ export function registerEpisodeTools(server) {
168
189
  })();
169
190
  notifyWrite();
170
191
  // l1_content が未指定なら next_step で補完を促す
171
- const hasL1 = !!params.l1_content;
192
+ const hasL1 = !!l1_content;
172
193
  const response = {
173
194
  success: true,
174
195
  message: `Episode を記録しました: ${episode.title}`,
@@ -1 +1 @@
1
- {"version":3,"file":"episode-tools.js","sourceRoot":"","sources":["../../src/tools/episode-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"episode-tools.js","sourceRoot":"","sources":["../../src/tools/episode-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerUserFileTools(server: McpServer, toolPrefix?: string): void;
3
+ //# sourceMappingURL=file-tools.d.ts.map
@@ -0,0 +1,350 @@
1
+ /**
2
+ * File Vault: 設定ファイルのbase64保管・復元ツール
3
+ * LLMがファイル内容に触れずにファイルの保管・復元を行う。
4
+ * encode/decode はすべてサーバー内で完結する。
5
+ */
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import { createHash } from "node:crypto";
9
+ import { StoreUserFileSchema, RestoreUserFileSchema, UpdateUserFileSchema, ListUserFilesSchema, } from "../types.js";
10
+ import { insertUserFile, getUserFileById, getUserFileByTitle, updateUserFile, listUserFiles, insertAuditLog, } from "../database/queries.js";
11
+ import { buildProvenance } from "../provenance.js";
12
+ import { getDatabase } from "../database/connection.js";
13
+ import { notifyWrite } from "../store/session-state.js";
14
+ import { getClientPolicy, checkScopeWritePolicy, checkScopeReadPolicy, buildPolicyErrorResponse } from "../policy.js";
15
+ import { getStoreManager } from "../store/session-state.js";
16
+ // ============================================================
17
+ // ヘルパー
18
+ // ============================================================
19
+ function policyGuard(scope) {
20
+ const policy = getClientPolicy(getStoreManager().getConfig());
21
+ return checkScopeWritePolicy(policy, scope);
22
+ }
23
+ function readPolicyCheck(scope) {
24
+ const policy = getClientPolicy(getStoreManager().getConfig());
25
+ return checkScopeReadPolicy(policy, scope);
26
+ }
27
+ function jsonResult(data) {
28
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
29
+ }
30
+ function errorResult(msg) {
31
+ return { content: [{ type: "text", text: JSON.stringify({ success: false, error: msg }) }], isError: true };
32
+ }
33
+ function computeHash(data) {
34
+ return `sha256:${createHash("sha256").update(data).digest("hex")}`;
35
+ }
36
+ function parseTags(tags) {
37
+ return JSON.parse(tags);
38
+ }
39
+ /** パスの安全性チェック: 絶対パスかつ通常ファイル(存在する場合) */
40
+ function validatePath(filePath) {
41
+ if (!path.isAbsolute(filePath)) {
42
+ return `絶対パスを指定してください: ${filePath}`;
43
+ }
44
+ return null;
45
+ }
46
+ /** 既存ファイルが通常ファイルか確認 */
47
+ function validateExistingFile(filePath) {
48
+ try {
49
+ const stat = fs.lstatSync(filePath);
50
+ if (!stat.isFile()) {
51
+ return `通常ファイルではありません(ディレクトリまたはシンボリックリンク): ${filePath}`;
52
+ }
53
+ }
54
+ catch {
55
+ return `ファイルにアクセスできません: ${filePath}`;
56
+ }
57
+ return null;
58
+ }
59
+ // ============================================================
60
+ // ツール登録
61
+ // ============================================================
62
+ export function registerUserFileTools(server, toolPrefix = "watashi_") {
63
+ // ──────────────────────────────────────────────
64
+ // store_user_file: ファイルを読み取り→base64→DB保存
65
+ // ──────────────────────────────────────────────
66
+ server.tool(`${toolPrefix}store_user_file`, "Read a file from disk, base64-encode it, and store in the vault. Claude never touches file bytes.", StoreUserFileSchema.shape, async (params, extra) => {
67
+ const scopeCheck = policyGuard(params.scope ?? "global");
68
+ if (!scopeCheck.allowed)
69
+ return buildPolicyErrorResponse(scopeCheck.reason);
70
+ const filePath = path.resolve(params.source_path);
71
+ // パスバリデーション
72
+ const pathErr = validatePath(filePath);
73
+ if (pathErr)
74
+ return errorResult(pathErr);
75
+ const fileErr = validateExistingFile(filePath);
76
+ if (fileErr)
77
+ return errorResult(fileErr);
78
+ // ファイル読み取り
79
+ let rawData;
80
+ try {
81
+ rawData = fs.readFileSync(filePath);
82
+ }
83
+ catch (e) {
84
+ return errorResult(`ファイル読み取りエラー: ${e instanceof Error ? e.message : String(e)}`);
85
+ }
86
+ const fileHash = computeHash(rawData);
87
+ const fileSize = rawData.length;
88
+ const fileData = rawData.toString("base64");
89
+ const originalFilename = path.basename(filePath);
90
+ const provenance = buildProvenance(extra.sessionId);
91
+ // embedding生成(descriptionがあれば)
92
+ let l1_embedding = null;
93
+ if (params.description) {
94
+ try {
95
+ const { generateUserMemoEmbedding } = await import("../embedding/embed-on-write.js");
96
+ l1_embedding = await generateUserMemoEmbedding({ title: params.title, l1_content: params.description });
97
+ }
98
+ catch { /* skip */ }
99
+ }
100
+ const file = getDatabase().transaction(() => {
101
+ const f = insertUserFile({
102
+ title: params.title,
103
+ description: params.description,
104
+ original_filename: originalFilename,
105
+ original_encoding: params.original_encoding ?? "utf-8",
106
+ file_data: fileData,
107
+ file_hash: fileHash,
108
+ file_size: fileSize,
109
+ tags: params.tags ?? [],
110
+ scope: params.scope ?? "global",
111
+ search_summary: params.search_summary,
112
+ l1_embedding,
113
+ source_tool: `${toolPrefix}store_user_file`,
114
+ client_name: provenance.client_name,
115
+ client_version: provenance.client_version,
116
+ });
117
+ insertAuditLog({
118
+ operation: "create",
119
+ entity_type: "user_file",
120
+ entity_id: f.id,
121
+ summary: `UserFile: ${f.title} (${originalFilename}, ${fileSize} bytes)`,
122
+ provenance,
123
+ source_tool: `${toolPrefix}store_user_file`,
124
+ });
125
+ return f;
126
+ })();
127
+ notifyWrite();
128
+ return jsonResult({
129
+ success: true,
130
+ message: `ファイルを保存しました: ${file.title}`,
131
+ file: {
132
+ id: file.id,
133
+ title: file.title,
134
+ original_filename: file.original_filename,
135
+ file_hash: file.file_hash,
136
+ file_size: file.file_size,
137
+ tags: parseTags(file.tags),
138
+ },
139
+ });
140
+ });
141
+ // ──────────────────────────────────────────────
142
+ // restore_user_file: DB→base64デコード→ファイル書き出し
143
+ // ──────────────────────────────────────────────
144
+ server.tool(`${toolPrefix}restore_user_file`, "Restore a vault file to disk. Decodes base64 and verifies hash. Claude never touches file bytes.", RestoreUserFileSchema.shape, async (params) => {
145
+ if (!params.id && !params.title) {
146
+ return errorResult("id または title のいずれかを指定してください");
147
+ }
148
+ // dest_path バリデーション
149
+ const destPath = path.resolve(params.dest_path);
150
+ const pathErr = validatePath(destPath);
151
+ if (pathErr)
152
+ return errorResult(pathErr);
153
+ // ファイル検索
154
+ const file = params.id
155
+ ? getUserFileById(params.id)
156
+ : getUserFileByTitle(params.title);
157
+ if (!file) {
158
+ return errorResult(`ファイルが見つかりません: ${params.id ?? params.title}`);
159
+ }
160
+ // scope read policy チェック
161
+ if (!readPolicyCheck(file.scope)) {
162
+ return errorResult(`スコープ "${file.scope}" への読み取り権限がありません`);
163
+ }
164
+ // base64デコード
165
+ const decoded = Buffer.from(file.file_data, "base64");
166
+ const decodedHash = computeHash(decoded);
167
+ // ハッシュ検証
168
+ if (decodedHash !== file.file_hash) {
169
+ return errorResult(`ハッシュ不一致: 保存時=${file.file_hash}, デコード後=${decodedHash}。データが破損している可能性があります。`);
170
+ }
171
+ // dry_run: 書き出さずに比較のみ
172
+ if (params.dry_run) {
173
+ let destHash = null;
174
+ let match = false;
175
+ if (fs.existsSync(destPath)) {
176
+ try {
177
+ const destData = fs.readFileSync(destPath);
178
+ destHash = computeHash(destData);
179
+ match = destHash === file.file_hash;
180
+ }
181
+ catch { /* dest read failure is non-fatal for dry_run */ }
182
+ }
183
+ return jsonResult({
184
+ success: true,
185
+ dry_run: true,
186
+ file: {
187
+ id: file.id,
188
+ title: file.title,
189
+ original_filename: file.original_filename,
190
+ file_hash: file.file_hash,
191
+ file_size: file.file_size,
192
+ },
193
+ dest_path: destPath,
194
+ dest_exists: fs.existsSync(destPath),
195
+ dest_hash: destHash,
196
+ hashes_match: match,
197
+ message: match ? "ファイルは同一です(変更なし)" : "ファイルに差分があります",
198
+ });
199
+ }
200
+ // 上書きチェック
201
+ if (fs.existsSync(destPath) && !params.overwrite) {
202
+ return errorResult(`ファイルが既に存在します: ${destPath}。上書きするには overwrite: true を指定してください。`);
203
+ }
204
+ // ディレクトリ作成
205
+ const destDir = path.dirname(destPath);
206
+ try {
207
+ if (!fs.existsSync(destDir)) {
208
+ fs.mkdirSync(destDir, { recursive: true });
209
+ }
210
+ // ファイル書き出し
211
+ fs.writeFileSync(destPath, decoded);
212
+ }
213
+ catch (e) {
214
+ return errorResult(`ファイル書き出しエラー: ${e instanceof Error ? e.message : String(e)}`);
215
+ }
216
+ // 書き出し後の検証
217
+ try {
218
+ const writtenData = fs.readFileSync(destPath);
219
+ const writtenHash = computeHash(writtenData);
220
+ if (writtenHash !== file.file_hash) {
221
+ // ハッシュ不一致 — 部分書き込みの可能性があるので削除
222
+ try {
223
+ fs.unlinkSync(destPath);
224
+ }
225
+ catch { /* best effort */ }
226
+ return errorResult(`書き出し後のハッシュ検証に失敗しました。ファイルを削除しました: ${destPath}`);
227
+ }
228
+ }
229
+ catch (e) {
230
+ return errorResult(`書き出し後の検証エラー: ${e instanceof Error ? e.message : String(e)}`);
231
+ }
232
+ return jsonResult({
233
+ success: true,
234
+ message: `ファイルを復元しました: ${file.title}`,
235
+ file: {
236
+ id: file.id,
237
+ title: file.title,
238
+ original_filename: file.original_filename,
239
+ },
240
+ dest_path: destPath,
241
+ file_hash: file.file_hash,
242
+ hash_verified: true,
243
+ });
244
+ });
245
+ // ──────────────────────────────────────────────
246
+ // update_user_file: メタデータ更新 or ファイル再取り込み
247
+ // ──────────────────────────────────────────────
248
+ server.tool(`${toolPrefix}update_user_file`, "Update file metadata or re-import file content from disk.", UpdateUserFileSchema.shape, async (params, extra) => {
249
+ const existing = getUserFileById(params.id);
250
+ if (!existing) {
251
+ return errorResult(`ファイルが見つかりません: ${params.id}`);
252
+ }
253
+ // scope policy: 既存レコードの scope に対する write 権限チェック
254
+ const policy = getClientPolicy(getStoreManager().getConfig());
255
+ const oldScopeCheck = checkScopeWritePolicy(policy, existing.scope);
256
+ if (!oldScopeCheck.allowed)
257
+ return buildPolicyErrorResponse(oldScopeCheck.reason);
258
+ // scope 変更時は新 scope に対してもチェック
259
+ if (params.scope !== undefined) {
260
+ const newScopeCheck = checkScopeWritePolicy(policy, params.scope);
261
+ if (!newScopeCheck.allowed)
262
+ return buildPolicyErrorResponse(newScopeCheck.reason);
263
+ }
264
+ const updates = {};
265
+ // ファイル再取り込み
266
+ if (params.source_path) {
267
+ const filePath = path.resolve(params.source_path);
268
+ const pathErr = validatePath(filePath);
269
+ if (pathErr)
270
+ return errorResult(pathErr);
271
+ const fileErr = validateExistingFile(filePath);
272
+ if (fileErr)
273
+ return errorResult(fileErr);
274
+ try {
275
+ const rawData = fs.readFileSync(filePath);
276
+ updates.file_data = rawData.toString("base64");
277
+ updates.file_hash = computeHash(rawData);
278
+ updates.file_size = rawData.length;
279
+ }
280
+ catch (e) {
281
+ return errorResult(`ファイル読み取りエラー: ${e instanceof Error ? e.message : String(e)}`);
282
+ }
283
+ }
284
+ if (params.title !== undefined)
285
+ updates.title = params.title;
286
+ if (params.description !== undefined)
287
+ updates.description = params.description;
288
+ if (params.tags !== undefined)
289
+ updates.tags = params.tags;
290
+ if (params.scope !== undefined)
291
+ updates.scope = params.scope;
292
+ if (params.search_summary !== undefined)
293
+ updates.search_summary = params.search_summary;
294
+ if (params.file_status !== undefined)
295
+ updates.file_status = params.file_status;
296
+ if (params.is_archived !== undefined)
297
+ updates.is_archived = params.is_archived ? 1 : 0;
298
+ const provenance = buildProvenance(extra.sessionId);
299
+ const updated = getDatabase().transaction(() => {
300
+ const f = updateUserFile(params.id, updates);
301
+ insertAuditLog({
302
+ operation: "update",
303
+ entity_type: "user_file",
304
+ entity_id: params.id,
305
+ summary: `UserFile更新: ${params.reason}`,
306
+ provenance,
307
+ source_tool: `${toolPrefix}update_user_file`,
308
+ });
309
+ return f;
310
+ })();
311
+ if (!updated) {
312
+ return errorResult("更新に失敗しました");
313
+ }
314
+ notifyWrite();
315
+ return jsonResult({
316
+ success: true,
317
+ message: `ファイルを更新しました: ${updated.title}`,
318
+ file: {
319
+ id: updated.id,
320
+ title: updated.title,
321
+ original_filename: updated.original_filename,
322
+ file_hash: updated.file_hash,
323
+ file_size: updated.file_size,
324
+ tags: parseTags(updated.tags),
325
+ },
326
+ });
327
+ });
328
+ // ──────────────────────────────────────────────
329
+ // list_user_files: ファイル一覧(file_data除外)
330
+ // ──────────────────────────────────────────────
331
+ server.tool(`${toolPrefix}list_user_files`, "List stored files (without file content). Shows metadata, hash, and size.", ListUserFilesSchema.shape, async (params) => {
332
+ const files = listUserFiles({
333
+ scope: params.scope,
334
+ tags: params.tags,
335
+ file_status: params.file_status ?? "active",
336
+ is_archived: params.is_archived ? 1 : 0,
337
+ });
338
+ // scope read policy フィルタ
339
+ const filtered = files.filter(f => readPolicyCheck(f.scope));
340
+ return jsonResult({
341
+ success: true,
342
+ count: filtered.length,
343
+ files: filtered.map(f => ({
344
+ ...f,
345
+ tags: parseTags(f.tags),
346
+ })),
347
+ });
348
+ });
349
+ }
350
+ //# sourceMappingURL=file-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-tools.js","sourceRoot":"","sources":["../../src/tools/file-tools.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
7
  /**
8
8
  * 統合 get ツールを登録
9
9
  */
10
- export declare function registerGetTools(server: McpServer): void;
10
+ export declare function registerGetTools(server: McpServer, toolPrefix?: string): void;
11
11
  //# sourceMappingURL=get-tools.d.ts.map
@@ -2,12 +2,14 @@ import { GetEntitySchema } from "../types.js";
2
2
  import * as core from "../database/queries-core.js";
3
3
  import { serializeClaimForApi } from "./helpers.js";
4
4
  import { getStoreManager, getActiveContext } from "../store/session-state.js";
5
- import { federatedGetClaimById, federatedGetEpisodeById, federatedGetTheoryById, federatedGetInsightById, federatedGetModelById, federatedGetUserMemoById, federatedGetUserPlanById, federatedGetUserIssueById, federatedGetDecisionById, federatedGetStats, federatedListEscalationCandidates, federatedListAutoUserPlans, federatedResolveEntityType, } from "../store/federation.js";
5
+ import { getClientInfo } from "../provenance.js";
6
+ import { detectProjectName } from "../project-detect.js";
7
+ import { federatedGetClaimById, federatedGetEpisodeById, federatedGetTheoryById, federatedGetInsightById, federatedGetModelById, federatedGetUserMemoById, federatedGetUserPlanById, federatedGetUserIssueById, federatedGetUserTopicById, federatedGetDecisionById, federatedGetStats, federatedListEscalationCandidates, federatedListAutoUserPlans, federatedResolveEntityType, } from "../store/federation.js";
6
8
  /**
7
9
  * 統合 get ツールを登録
8
10
  */
9
- export function registerGetTools(server) {
10
- server.tool("watashi_get", "Get entity details by type and ID. Use type='profile' for profile summary. entity_type is optional — if omitted, resolved automatically from ID.", GetEntitySchema.shape, async (params) => {
11
+ export function registerGetTools(server, toolPrefix = "watashi_") {
12
+ server.tool(`${toolPrefix}get`, "Get entity details by type and ID. Use type='profile' for profile summary. entity_type is optional — if omitted, resolved automatically from ID.", GetEntitySchema.shape, async (params) => {
11
13
  const manager = getStoreManager();
12
14
  const context = getActiveContext();
13
15
  // Profile mode (no id needed)
@@ -173,7 +175,18 @@ export function registerGetTools(server) {
173
175
  issue: {
174
176
  ...issue,
175
177
  tags: JSON.parse(issue.tags),
176
- entries: JSON.parse(issue.entries),
178
+ l1_embedding: undefined,
179
+ },
180
+ });
181
+ }
182
+ case "user_topic": {
183
+ const topic = federatedGetUserTopicById(manager, context, params.id);
184
+ if (!topic)
185
+ return notFound("UserTopic", params.id);
186
+ return ok({
187
+ topic: {
188
+ ...topic,
189
+ tags: JSON.parse(topic.tags),
177
190
  l1_embedding: undefined,
178
191
  },
179
192
  });
@@ -200,9 +213,20 @@ function handleProfileGet(manager, context, scope) {
200
213
  const stats = federatedGetStats(manager, context);
201
214
  const sections = [];
202
215
  sections.push("# わたしプロファイル\n");
216
+ // 2026-03-19 修正: クライアント別の案内に変更(Codexレビュー指摘: Claude固定文言の中立化)
203
217
  if (stats.active_claims === 0) {
204
218
  sections.push("プロファイルはまだ空です。");
205
- sections.push("Claude Code: もしまだの場合は `npx watashi-db setup` を実行してセットアップを完了してください。\n");
219
+ const client = getClientInfo();
220
+ const clientName = client?.name?.toLowerCase() ?? "";
221
+ if (clientName.includes("codex")) {
222
+ sections.push("会話の中で好み・スキル・判断を伝えると、server instructions に従って自動的に記録されます。\n");
223
+ }
224
+ else if (clientName.includes("claude")) {
225
+ sections.push("もしまだの場合は `npx watashi-db setup` を実行してセットアップを完了してください。\n");
226
+ }
227
+ else {
228
+ sections.push("会話の中で好み・スキル・判断を伝えると、自動的に記録されます。\n");
229
+ }
206
230
  }
207
231
  const escalationCandidates = federatedListEscalationCandidates(manager, context, {
208
232
  scope,
@@ -249,6 +273,16 @@ function handleProfileGet(manager, context, scope) {
249
273
  }
250
274
  sections.push("");
251
275
  }
276
+ // 2026-03-19 追加: active_context 表示(Codexレビュー指摘: Hook非対応クライアントへのscope情報提供)
277
+ // suggested_scope は detectProjectName()(cwd のリポジトリ名)から取る。
278
+ // active_context(config context 名)とは別物: context はどのDBを使うか、scope はレコードのラベル。
279
+ const projectName = detectProjectName();
280
+ sections.push(`## 現在のコンテキスト\n`);
281
+ sections.push(`- active_context: \`${context}\``);
282
+ if (projectName) {
283
+ sections.push(`- suggested_scope: \`project:${projectName}\`(プロジェクト固有の記録時に使用)`);
284
+ }
285
+ sections.push("");
252
286
  const entityCounts = [];
253
287
  if (stats.active_claims > 0)
254
288
  entityCounts.push(`Claim ${stats.active_claims}件`);
@@ -1 +1 @@
1
- {"version":3,"file":"get-tools.js","sourceRoot":"","sources":["../../src/tools/get-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-tools.js","sourceRoot":"","sources":["../../src/tools/get-tools.ts"],"names":[],"mappings":"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"}