paput-mcp 2.3.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +139 -93
  2. package/dist/cli/index.js +6 -6
  3. package/dist/cli/setup-ai.js +124 -126
  4. package/dist/cli/setup-ai.js.map +1 -1
  5. package/dist/handlers/add-knowledge-candidates/handler.js +11 -9
  6. package/dist/handlers/add-knowledge-candidates/handler.js.map +1 -1
  7. package/dist/handlers/add-knowledge-candidates/tool.js +4 -4
  8. package/dist/handlers/add-knowledge-candidates/tool.js.map +1 -1
  9. package/dist/handlers/cache-status/tool.js +1 -1
  10. package/dist/handlers/cache-status/tool.js.map +1 -1
  11. package/dist/handlers/create-memo/handler.js +25 -14
  12. package/dist/handlers/create-memo/handler.js.map +1 -1
  13. package/dist/handlers/create-memo/tool.js +6 -6
  14. package/dist/handlers/create-memo/tool.js.map +1 -1
  15. package/dist/handlers/create-note/handler.js +19 -9
  16. package/dist/handlers/create-note/handler.js.map +1 -1
  17. package/dist/handlers/create-note/tool.js +4 -4
  18. package/dist/handlers/create-note/tool.js.map +1 -1
  19. package/dist/handlers/delete-skill-sheet-project/handler.js +7 -2
  20. package/dist/handlers/delete-skill-sheet-project/handler.js.map +1 -1
  21. package/dist/handlers/delete-skill-sheet-project/tool.js +2 -2
  22. package/dist/handlers/delete-skill-sheet-project/tool.js.map +1 -1
  23. package/dist/handlers/discard-pending-candidate/handler.js +9 -7
  24. package/dist/handlers/discard-pending-candidate/handler.js.map +1 -1
  25. package/dist/handlers/discard-pending-candidate/tool.js +6 -3
  26. package/dist/handlers/discard-pending-candidate/tool.js.map +1 -1
  27. package/dist/handlers/get-categories/handler.js +4 -4
  28. package/dist/handlers/get-categories/handler.js.map +1 -1
  29. package/dist/handlers/get-categories/tool.js +1 -1
  30. package/dist/handlers/get-categories/tool.js.map +1 -1
  31. package/dist/handlers/get-memo/handler.js +11 -11
  32. package/dist/handlers/get-memo/handler.js.map +1 -1
  33. package/dist/handlers/get-memo/tool.js +2 -2
  34. package/dist/handlers/get-memo/tool.js.map +1 -1
  35. package/dist/handlers/get-note/handler.js +16 -16
  36. package/dist/handlers/get-note/handler.js.map +1 -1
  37. package/dist/handlers/get-note/tool.js +2 -2
  38. package/dist/handlers/get-note/tool.js.map +1 -1
  39. package/dist/handlers/get-session-transcript/handler.js +3 -3
  40. package/dist/handlers/get-session-transcript/handler.js.map +1 -1
  41. package/dist/handlers/get-session-transcript/tool.js +4 -4
  42. package/dist/handlers/get-session-transcript/tool.js.map +1 -1
  43. package/dist/handlers/get-skill-sheet/handler.js +29 -29
  44. package/dist/handlers/get-skill-sheet/handler.js.map +1 -1
  45. package/dist/handlers/get-skill-sheet/tool.js +1 -1
  46. package/dist/handlers/get-skill-sheet/tool.js.map +1 -1
  47. package/dist/handlers/list-pending-candidates/tool.js +2 -2
  48. package/dist/handlers/list-pending-candidates/tool.js.map +1 -1
  49. package/dist/handlers/save-pending-candidate/handler.js +12 -9
  50. package/dist/handlers/save-pending-candidate/handler.js.map +1 -1
  51. package/dist/handlers/save-pending-candidate/tool.js +6 -6
  52. package/dist/handlers/save-pending-candidate/tool.js.map +1 -1
  53. package/dist/handlers/scan-sessions/tool.js +3 -3
  54. package/dist/handlers/scan-sessions/tool.js.map +1 -1
  55. package/dist/handlers/search-memo/handler.js +8 -8
  56. package/dist/handlers/search-memo/handler.js.map +1 -1
  57. package/dist/handlers/search-memo/tool.js +8 -8
  58. package/dist/handlers/search-memo/tool.js.map +1 -1
  59. package/dist/handlers/search-notes/handler.js +9 -9
  60. package/dist/handlers/search-notes/handler.js.map +1 -1
  61. package/dist/handlers/search-notes/tool.js +5 -5
  62. package/dist/handlers/search-notes/tool.js.map +1 -1
  63. package/dist/handlers/sync-remote-memos/handler.js +9 -5
  64. package/dist/handlers/sync-remote-memos/handler.js.map +1 -1
  65. package/dist/handlers/sync-remote-memos/tool.js +3 -3
  66. package/dist/handlers/sync-remote-memos/tool.js.map +1 -1
  67. package/dist/handlers/update-memo/handler.js +22 -11
  68. package/dist/handlers/update-memo/handler.js.map +1 -1
  69. package/dist/handlers/update-memo/tool.js +8 -8
  70. package/dist/handlers/update-memo/tool.js.map +1 -1
  71. package/dist/handlers/update-note/handler.js +23 -13
  72. package/dist/handlers/update-note/handler.js.map +1 -1
  73. package/dist/handlers/update-note/tool.js +5 -5
  74. package/dist/handlers/update-note/tool.js.map +1 -1
  75. package/dist/handlers/update-skill-sheet-basic-info/handler.js +6 -1
  76. package/dist/handlers/update-skill-sheet-basic-info/handler.js.map +1 -1
  77. package/dist/handlers/update-skill-sheet-basic-info/tool.js +5 -5
  78. package/dist/handlers/update-skill-sheet-basic-info/tool.js.map +1 -1
  79. package/dist/handlers/update-skill-sheet-self-pr/handler.js +6 -1
  80. package/dist/handlers/update-skill-sheet-self-pr/handler.js.map +1 -1
  81. package/dist/handlers/update-skill-sheet-self-pr/tool.js +2 -2
  82. package/dist/handlers/update-skill-sheet-self-pr/tool.js.map +1 -1
  83. package/dist/handlers/update-skill-sheet-skills/handler.js +7 -2
  84. package/dist/handlers/update-skill-sheet-skills/handler.js.map +1 -1
  85. package/dist/handlers/update-skill-sheet-skills/tool.js +7 -7
  86. package/dist/handlers/update-skill-sheet-skills/tool.js.map +1 -1
  87. package/dist/handlers/upsert-skill-sheet-project/handler.js +5 -5
  88. package/dist/handlers/upsert-skill-sheet-project/handler.js.map +1 -1
  89. package/dist/handlers/upsert-skill-sheet-project/tool.js +16 -16
  90. package/dist/handlers/upsert-skill-sheet-project/tool.js.map +1 -1
  91. package/dist/index.js +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/schemas/tool-input.js +97 -80
  94. package/dist/schemas/tool-input.js.map +1 -1
  95. package/dist/server.js +4 -4
  96. package/dist/server.js.map +1 -1
  97. package/dist/services/api/client.js +1 -1
  98. package/dist/services/api/client.js.map +1 -1
  99. package/dist/services/api/memo.js +3 -3
  100. package/dist/services/api/memo.js.map +1 -1
  101. package/dist/services/api/note.js +3 -3
  102. package/dist/services/api/note.js.map +1 -1
  103. package/dist/services/api/skill-sheet.js +2 -2
  104. package/dist/services/api/skill-sheet.js.map +1 -1
  105. package/dist/services/local-cache/index.js +2 -2
  106. package/dist/services/local-cache/index.js.map +1 -1
  107. package/dist/tool.js +6 -6
  108. package/dist/tool.js.map +1 -1
  109. package/dist/types/constants.js +12 -12
  110. package/dist/types/constants.js.map +1 -1
  111. package/package.json +1 -1
@@ -4,155 +4,153 @@ import { dirname, join } from 'node:path';
4
4
  const SKILLS = [
5
5
  {
6
6
  name: 'paput-init',
7
- description: 'PaPut の初期設定、既存メモ同期、未処理セッション確認を行いたい時に使う。',
8
- body: `# PaPut 初期設定
7
+ description: 'Use this to initialize PaPut usage, sync existing memos, and inspect unprocessed sessions.',
8
+ body: `# PaPut Init
9
9
 
10
- PaPut の知見保存運用を始めるための初期設定を行う。
10
+ Initialize PaPut knowledge capture.
11
11
 
12
- ## 手順
12
+ ## Steps
13
13
 
14
- 1. \`paput_cache_status\` でローカルキャッシュ状態を確認する。
15
- 2. \`paput_sync_remote_memos\` で既存 PaPut メモをローカルキャッシュへ同期する。
16
- 3. \`paput_scan_sessions\` Claude/Codex の未処理セッションを確認する。
17
- 4. 未処理セッションがある場合は、件数と概要をユーザーに提示する。
18
- 5. ユーザーが希望した場合のみ、\`paput_get_session_transcript\` で本文を取得し、下記の抽出基準を満たす知見候補だけを作る。
19
- 6. \`paput_add_knowledge_candidates\` pending に保存する前に、候補内にプロジェクト固有の仕様、実装詳細、運用ルール、コード、顧客情報が含まれていないか精査し、含まれる候補は追加しない。
20
- 7. pending 保存後、追加した件数、重複として除外された件数、基準外として追加しなかった件数を簡潔に報告する。
14
+ 1. Check the local cache with \`paput_cache_status\`.
15
+ 2. Sync existing PaPut memos into the local cache with \`paput_sync_remote_memos\`.
16
+ 3. Scan unprocessed Claude/Codex sessions with \`paput_scan_sessions\`.
17
+ 4. If unprocessed sessions exist, report the count and a short summary to the user.
18
+ 5. Only when the user wants it, read the transcript with \`paput_get_session_transcript\` and create candidates that meet the extraction criteria below.
19
+ 6. Before adding candidates with \`paput_add_knowledge_candidates\`, check that they do not contain project-specific specifications, implementation details, operational rules, code, customer data, or secrets.
20
+ 7. After adding pending candidates, briefly report added candidates, duplicates, and rejected candidates.
21
21
 
22
- ## 抽出基準
22
+ ## Extraction Criteria
23
23
 
24
- 保存候補にするのは、第三者が別プロジェクトでも再利用できる技術知見、判断基準、手順だけに限定する。
24
+ Only add technical knowledge, decision criteria, and procedures that can be reused in other projects.
25
25
 
26
- 以下は pending に追加しない。
26
+ Do not add these to pending:
27
27
 
28
- - プロジェクト固有の仕様、画面名、ボタン名、業務フロー、運用ルール、ローカル事情。
29
- - PR、GitHubCodexClaudeAI レビュー、エディタ、OS 操作など、個人運用や作業記録に近いもの。
30
- - 「詳細画面」「集計値」など、タイトルや本文だけでは第三者が対象を理解できないもの。
31
- - 採用しなかった設計、単なる体験談、作業ログ、感想、意思決定の経緯だけで終わるもの。
32
- - 既存メモや pending と意味が近いもの。
33
- - セキュリティ、権限制御、テナント分離などの一般論で、既に同種の知見があるもの。
34
- - コード断片やプロジェクト内の命名に依存し、一般化できていないもの。
28
+ - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
29
+ - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
30
+ - Content that third parties cannot understand from the title and body alone.
31
+ - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
32
+ - Content semantically close to existing memos or pending candidates.
33
+ - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
34
+ - Code fragments or project-specific naming that has not been generalized.
35
35
 
36
- 迷う候補は追加せず、「今回は保存対象なし」または「基準外として除外」と判断する。
36
+ When unsure, do not add the candidate. Report that there is no knowledge to save or that the candidate was rejected.
37
37
 
38
- ## 注意
38
+ ## Notes
39
39
 
40
- - PaPut への本保存は行わない。
41
- - 候補はまず pending に保存する。
42
- - 重複や類似メモがある場合は、その情報を提示する。
43
- - pending を増やすことより、後で破棄が不要な候補だけに絞ることを優先する。`,
40
+ - Do not save directly to PaPut.
41
+ - Add candidates to pending first.
42
+ - Report duplicates or similar memos when found.
43
+ - Prefer high-quality pending candidates over increasing the pending count.`,
44
44
  },
45
45
  {
46
46
  name: 'paput-sync',
47
- description: 'PaPut の既存メモをローカルキャッシュへ同期し、重複判定の精度を上げたい時に使う。',
48
- body: `# PaPut 同期
47
+ description: 'Use this to sync existing PaPut memos into the local cache and improve duplicate detection.',
48
+ body: `# PaPut Sync
49
49
 
50
- PaPut の既存メモをローカルキャッシュへ同期する。
50
+ Sync existing PaPut memos into the local cache.
51
51
 
52
- ## 手順
52
+ ## Steps
53
53
 
54
- 1. \`paput_cache_status\` で同期前の状態を確認する。
55
- 2. \`paput_sync_remote_memos\` を実行する。
56
- 3. 再度 \`paput_cache_status\` を実行し、同期後の件数を確認する。
57
- 4. 同期結果を簡潔にユーザーへ報告する。
54
+ 1. Check the current cache state with \`paput_cache_status\`.
55
+ 2. Run \`paput_sync_remote_memos\`.
56
+ 3. Run \`paput_cache_status\` again and confirm the synced counts.
57
+ 4. Briefly report the sync result to the user.
58
58
 
59
- ## 注意
59
+ ## Notes
60
60
 
61
- - 同期は重複判定のために行う。
62
- - pending 候補の保存や破棄は行わない。
63
- - PaPut への新規メモ作成は行わない。`,
61
+ - Syncing is for duplicate detection.
62
+ - Do not save or discard pending candidates.
63
+ - Do not create new PaPut memos.`,
64
64
  },
65
65
  {
66
66
  name: 'paput-save',
67
- description: 'PaPut pending 候補を確認し、ユーザーが承認したものだけ PaPut に保存したい時に使う。',
68
- body: `# PaPut 保存
67
+ description: 'Use this to review pending candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.',
68
+ body: `# PaPut Save
69
69
 
70
- pending に保存された知見候補を確認し、ユーザーが承認したものだけ PaPut に保存する。
70
+ Review pending knowledge candidates first, then save only candidates explicitly approved by the user. This skill never saves automatically.
71
71
 
72
- ## 手順
72
+ ## Steps
73
73
 
74
- 1. \`paput_list_pending_candidates\` pending 候補を取得する。
75
- 2. 候補ごとにタイトル、カテゴリ、要約、類似メモ情報を簡潔に提示する。
76
- 3. ユーザーが保存を承認した候補だけ \`paput_save_pending_candidate\` PaPut に保存する。
77
- 4. ユーザーが不要と判断した候補は \`paput_discard_pending_candidate\` で破棄する。
78
- 5. 保存・破棄した件数を報告する。
74
+ 1. Fetch pending candidates with \`paput_list_pending_candidates\`.
75
+ 2. Briefly show each candidate title, categories, summary, and similar memo information.
76
+ 3. Save only candidates approved by the user with \`paput_save_pending_candidate\`.
77
+ 4. Discard candidates the user rejects with \`paput_discard_pending_candidate\`.
78
+ 5. Report the number of saved and discarded candidates.
79
79
 
80
- ## 注意
80
+ ## Notes
81
81
 
82
- - ユーザー承認なしに PaPut へ保存しない。
83
- - 「全部保存して」と明示された場合のみ複数候補をまとめて保存する。
84
- - 候補のタイトルや本文の修正を求められた場合は、保存時に上書きする。
85
- - 迷う候補や重複が疑われる候補は、保存しない選択肢も提示する。`,
82
+ - Do not save to PaPut without user approval.
83
+ - Save multiple candidates only when the user explicitly asks to save all of them.
84
+ - If the user asks to modify a title or body, apply the override when saving.
85
+ - For ambiguous or likely duplicate candidates, present not saving as an option.`,
86
86
  },
87
87
  {
88
88
  name: 'paput-capture',
89
- description: '作業中の会話や指定テーマから PaPut に残す知見候補を抽出し、pending に保存したい時に使う。',
90
- body: `# PaPut 知見候補作成
91
-
92
- 現在の会話やユーザーが指定したテーマから、PaPut に残すべき知見候補を抽出して pending に保存する。グローバルルールで自動提案されなかった時の手動バックアップとして使う。
93
-
94
- ## 使う場面
95
-
96
- - 問題解決で得た知見を残したい時
97
- - 設計判断やその理由を残したい時
98
- - ベストプラクティスやデバッグ手法を残したい時
99
- - ユーザーが特定テーマのメモ化を依頼した時
100
-
101
- ## 手順
102
-
103
- 1. \`paput_list_pending_candidates\` で既存 pending 候補を確認する。
104
- 2. 現在の会話、またはユーザーが指定したテーマに関連する会話内容から、再利用可能な知見だけを抽出する。
105
- 3. 候補は小さい単位に分け、タイトル、本文、カテゴリ、公開設定を整える。
106
- 4. 既存 pending と重複しそうな候補は追加せず、既存候補の利用を提案する。
107
- 5. 重複・機密・プロジェクト固有情報の混入がなく、汎用的な知見だと判断できる候補は、ユーザー承認を待たずに \`paput_add_knowledge_candidates\` pending に保存する。
108
- 6. pending 保存後、タイトル、カテゴリ、候補 ID を簡潔に報告する。
109
-
110
- ## メモ作成ルール
111
-
112
- - 一つの候補が大きくなりすぎないよう、最小の粒度で作成する。
113
- - タイトルは簡潔で検索しやすくする。
114
- - 本文は具体的な手順、原因、理由、判断基準を含める。
115
- - 文章は「です/ます」調にしない。
116
- - カテゴリは言語、フレームワーク、ツール程度の粒度にする。
117
- - プロジェクト固有の仕様、実装詳細、運用ルール、コード、秘密情報、顧客情報は含めない。
118
- - メモ化するのは、別プロジェクトでも再利用できる技術知見、判断基準、手順に限定する。
119
- - 基本的に非公開として扱う。
120
- - 本文に Markdown の \`#\` で始まる見出し行を含めない。
121
-
122
- ## 除外する候補
123
-
124
- 以下は pending に追加しない。
125
-
126
- - プロジェクト固有の仕様、画面名、ボタン名、業務フロー、運用ルール、ローカル事情。
127
- - PR、GitHub、Codex、Claude、AI レビュー、エディタ、OS 操作など、個人運用や作業記録に近いもの。
128
- - 「詳細画面」「集計値」など、タイトルや本文だけでは第三者が対象を理解できないもの。
129
- - 採用しなかった設計、単なる体験談、作業ログ、感想、意思決定の経緯だけで終わるもの。
130
- - 既存メモや pending と意味が近いもの。
131
- - セキュリティ、権限制御、テナント分離などの一般論で、既に同種の知見があるもの。
132
- - コード断片やプロジェクト内の命名に依存し、一般化できていないもの。
133
-
134
- ## 注意
135
-
136
- - PaPut へ直接保存しない。
137
- - 保存先は pending のみ。PaPut への本保存は \`paput-save\` で行う。
138
- - pending への追加はユーザー承認を待たずに行う。ただし、重複の可能性、機密情報の混入、汎用性の低さ、判断に迷う内容がある場合は、追加前に懸念点を提示してユーザー確認を求める。
139
- - 過去セッションから作成した候補は、PaPut 本保存時にそのセッションの更新日時が作成日時として使われる。
140
- - 候補がない場合は、無理に作らず「保存すべき知見は見つからない」と伝える。`,
89
+ description: 'Use this to extract reusable knowledge candidates from the current conversation or a specified topic and add them to pending.',
90
+ body: `# PaPut Capture
91
+
92
+ Extract reusable knowledge candidates from the current conversation or a user-specified topic and add them to pending. Use this as a manual fallback when the global rules did not suggest candidates automatically.
93
+
94
+ ## When To Use
95
+
96
+ - The user wants to keep knowledge learned while solving a problem.
97
+ - The user wants to keep a design decision and its rationale.
98
+ - The user wants to keep a best practice or debugging method.
99
+ - The user asks to create notes for a specific topic.
100
+
101
+ ## Steps
102
+
103
+ 1. Check existing pending candidates with \`paput_list_pending_candidates\`.
104
+ 2. Extract only reusable knowledge from the current conversation or the user-specified topic.
105
+ 3. Keep candidates small, and prepare a title, body, categories, and visibility.
106
+ 4. Do not add candidates that may duplicate existing pending candidates. Suggest using the existing candidate instead.
107
+ 5. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with \`paput_add_knowledge_candidates\` without waiting for user approval.
108
+ 6. After adding candidates, briefly report the title, categories, and candidate ID.
109
+
110
+ ## Candidate Rules
111
+
112
+ - Keep each candidate small.
113
+ - Make titles concise and searchable.
114
+ - Include concrete procedures, causes, reasons, and decision criteria in the body.
115
+ - Do not include project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
116
+ - Only capture technical knowledge, decision criteria, or procedures that can be reused in other projects.
117
+ - Treat candidates as private by default.
118
+ - Do not include Markdown heading lines that start with \`#\` in the body.
119
+
120
+ ## Rejected Candidates
121
+
122
+ Do not add these to pending:
123
+
124
+ - Project-specific specifications, screen names, button names, business workflows, operational rules, or local context.
125
+ - Personal workflow notes about PRs, GitHub, Codex, Claude, AI review, editors, or OS operations.
126
+ - Content that third parties cannot understand from the title and body alone.
127
+ - Rejected designs, anecdotes, work logs, impressions, or decision histories without reusable guidance.
128
+ - Content semantically close to existing memos or pending candidates.
129
+ - Generic security, authorization, or tenant-isolation notes when similar knowledge already exists.
130
+ - Code fragments or project-specific naming that has not been generalized.
131
+
132
+ ## Notes
133
+
134
+ - Do not save directly to PaPut.
135
+ - Save only to pending. Final PaPut saves are handled by \`paput-save\`.
136
+ - Add safe candidates to pending without waiting for user approval. If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present the concern and ask before adding it.
137
+ - Candidates created from past sessions use the source session updated timestamp as the PaPut memo creation timestamp when saved.
138
+ - If there are no candidates, say that no reusable knowledge was found.`,
141
139
  },
142
140
  ];
143
- const RULES = `## PaPut 知見保存ルール
141
+ const RULES = `## PaPut Knowledge Capture Rules
144
142
 
145
- 作業完了時、問題解決時、設計判断が固まった時、または再利用可能な知見が発生した時は、PaPut に保存すべき候補がないか自動で確認する。
143
+ When work is completed, a problem is solved, a design decision is settled, or reusable knowledge appears, automatically check whether there are candidates worth keeping in PaPut.
146
144
 
147
- 保存対象は、別プロジェクトでも再利用できる技術知見、判断基準、手順に限定する。プロジェクト固有の仕様、実装詳細、運用ルール、コード、秘密情報、顧客情報は保存候補にしない。
145
+ Only keep technical knowledge, decision criteria, and procedures that can be reused in other projects. Do not keep project-specific specifications, implementation details, operational rules, code, secrets, or customer data.
148
146
 
149
- 候補がある場合は、保存前にローカルキャッシュや類似メモ情報を使って重複の可能性を確認する。重複・機密・プロジェクト固有情報の混入がなく、汎用的な知見だと判断できる候補は、ユーザー承認を待たずに \`paput_add_knowledge_candidates\` pending に保存する。保存後はタイトル・カテゴリ・候補 ID を簡潔に報告する。
147
+ When candidates exist, check for duplicates with the local cache or similar memo information before saving. If a candidate is reusable, non-duplicate, non-sensitive, and not project-specific, add it to pending with \`paput_add_knowledge_candidates\` without waiting for user approval. After adding it, briefly report the title, categories, and candidate ID.
150
148
 
151
- PaPut への本保存は、ユーザーが明示的に保存を承認した場合のみ \`paput_save_pending_candidate\` を使う。
149
+ Use \`paput_save_pending_candidate\` only when the user explicitly approves saving a pending candidate to PaPut.
152
150
 
153
- 重複の可能性、機密情報の混入、汎用性の低さ、判断に迷う内容がある場合は、pending 追加前にタイトル・本文・カテゴリと懸念点を提示し、ユーザー確認を求める。
151
+ If a candidate may be duplicate, sensitive, project-specific, too narrow, or ambiguous, present its title, body, categories, and concern before adding it to pending, and ask the user to confirm.
154
152
 
155
- pending 候補の確認や PaPut への保存をユーザーが求めた場合は、\`paput-save\` の手順に従う。`;
153
+ When the user asks to review pending candidates or save them to PaPut, follow the \`paput-save\` workflow.`;
156
154
  const RULE_START = '<!-- paput-mcp:start -->';
157
155
  const RULE_END = '<!-- paput-mcp:end -->';
158
156
  export function setupAi(args) {
@@ -172,7 +170,7 @@ function parseOptions(args) {
172
170
  const claudeOnly = args.includes('--claude-only');
173
171
  const codexOnly = args.includes('--codex-only');
174
172
  if (claudeOnly && codexOnly) {
175
- console.error('--claude-only --codex-only は同時に指定できません。');
173
+ console.error('--claude-only and --codex-only cannot be used together.');
176
174
  process.exitCode = 1;
177
175
  return {
178
176
  force: false,
@@ -189,22 +187,22 @@ function parseOptions(args) {
189
187
  };
190
188
  }
191
189
  function printSetupNotice(options) {
192
- console.log('PaPut AI 連携の初期設定を行います。');
190
+ console.log('Setting up PaPut AI integration.');
193
191
  console.log('');
194
- console.log('このコマンドは以下を実行します。');
195
- console.log('- ~/.paput/skills PaPut Skill の正本を作成');
192
+ console.log('This command will:');
193
+ console.log('- Create canonical PaPut skills under ~/.paput/skills');
196
194
  if (options.claude) {
197
- console.log('- Claude が存在する場合、~/.claude/skills にリンクを作成');
195
+ console.log('- Link skills into ~/.claude/skills when Claude is available');
198
196
  }
199
197
  if (options.codex) {
200
- console.log('- Codex が存在する場合、~/.agents/skills にリンクを作成');
198
+ console.log('- Link skills into ~/.agents/skills when Codex is available');
201
199
  }
202
200
  if (!options.noRules) {
203
- console.log('- Claude/Codex のグローバルルールに PaPut 利用ルールを追記');
201
+ console.log('- Add PaPut usage rules to Claude/Codex global rules');
204
202
  }
205
203
  console.log('');
206
- console.log('グローバルルールを変更したくない場合は --no-rules を指定してください。');
207
- console.log('既存の PaPut 管理ブロックやリンクを更新する場合は --force を指定してください。');
204
+ console.log('Use --no-rules if you do not want to update global rules.');
205
+ console.log('Use --force to refresh existing PaPut-managed blocks and links.');
208
206
  console.log('');
209
207
  }
210
208
  function createSourceSkills(sourceSkillsDir, force) {
@@ -213,7 +211,7 @@ function createSourceSkills(sourceSkillsDir, force) {
213
211
  const skillDir = join(sourceSkillsDir, skill.name);
214
212
  const skillPath = join(skillDir, 'SKILL.md');
215
213
  if (existsSync(skillPath) && !force) {
216
- console.log(`Skip source skill: ${skillPath} は既に存在します。`);
214
+ console.log(`Skip source skill: ${skillPath} already exists.`);
217
215
  continue;
218
216
  }
219
217
  mkdirSync(skillDir, { recursive: true });
@@ -224,7 +222,7 @@ function createSourceSkills(sourceSkillsDir, force) {
224
222
  function setupClaude(sourceSkillsDir, options) {
225
223
  const claudeHome = process.env.CLAUDE_HOME || join(homedir(), '.claude');
226
224
  if (!existsSync(claudeHome)) {
227
- console.log('Skip Claude: ~/.claude が見つかりません。');
225
+ console.log('Skip Claude: ~/.claude was not found.');
228
226
  return;
229
227
  }
230
228
  linkSkills(sourceSkillsDir, join(claudeHome, 'skills'), 'Claude', options.force);
@@ -236,7 +234,7 @@ function setupCodex(sourceSkillsDir, options) {
236
234
  const codexHome = process.env.CODEX_HOME || join(homedir(), '.codex');
237
235
  const agentsHome = process.env.AGENTS_HOME || join(homedir(), '.agents');
238
236
  if (!existsSync(codexHome) && !existsSync(agentsHome)) {
239
- console.log('Skip Codex: ~/.codex ~/.agents が見つかりません。');
237
+ console.log('Skip Codex: neither ~/.codex nor ~/.agents was found.');
240
238
  return;
241
239
  }
242
240
  linkSkills(sourceSkillsDir, join(agentsHome, 'skills'), 'Codex', options.force);
@@ -252,7 +250,7 @@ function linkSkills(sourceSkillsDir, targetSkillsDir, label, force) {
252
250
  if (existsSync(targetDir)) {
253
251
  const stat = lstatSync(targetDir);
254
252
  if (!force) {
255
- console.log(`Skip ${label} skill link: ${targetDir} は既に存在します。`);
253
+ console.log(`Skip ${label} skill link: ${targetDir} already exists.`);
256
254
  continue;
257
255
  }
258
256
  rmSync(targetDir, {
@@ -271,7 +269,7 @@ function upsertRules(path, force, label) {
271
269
  const pattern = new RegExp(`${escapeRegExp(RULE_START)}[\\s\\S]*?${escapeRegExp(RULE_END)}`);
272
270
  if (pattern.test(current)) {
273
271
  if (!force) {
274
- console.log(`Skip ${label} rules: ${path} には PaPut 管理ブロックが既に存在します。`);
272
+ console.log(`Skip ${label} rules: ${path} already contains a PaPut-managed block.`);
275
273
  return;
276
274
  }
277
275
  writeFileSync(path, current.replace(pattern, block), 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { scanSessions } from '../../services/session/index.js';
4
4
  export async function handleAddKnowledgeCandidates(args, apiClient) {
5
5
  if (!args || typeof args.session_id !== 'string') {
6
6
  return {
7
- content: [{ type: 'text', text: 'session_id は必須です' }],
7
+ content: [{ type: 'text', text: 'session_id is required' }],
8
8
  isError: true,
9
9
  };
10
10
  }
@@ -13,7 +13,7 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
13
13
  content: [
14
14
  {
15
15
  type: 'text',
16
- text: 'source claude または codex を指定してください',
16
+ text: 'source must be claude or codex',
17
17
  },
18
18
  ],
19
19
  isError: true,
@@ -21,7 +21,7 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
21
21
  }
22
22
  if (!Array.isArray(args.candidates)) {
23
23
  return {
24
- content: [{ type: 'text', text: 'candidates は配列で指定してください' }],
24
+ content: [{ type: 'text', text: 'candidates must be an array' }],
25
25
  isError: true,
26
26
  };
27
27
  }
@@ -60,16 +60,18 @@ export async function handleAddKnowledgeCandidates(args, apiClient) {
60
60
  ...candidate,
61
61
  projects,
62
62
  })), sourceSessionUpdatedAt);
63
+ const response = {
64
+ added: result.added.length,
65
+ duplicates: result.duplicates.length,
66
+ candidates: result.added,
67
+ duplicate_details: result.duplicates,
68
+ };
63
69
  return {
70
+ structuredContent: response,
64
71
  content: [
65
72
  {
66
73
  type: 'text',
67
- text: JSON.stringify({
68
- added: result.added.length,
69
- duplicates: result.duplicates.length,
70
- candidates: result.added,
71
- duplicate_details: result.duplicates,
72
- }, null, 2),
74
+ text: JSON.stringify(response, null, 2),
73
75
  },
74
76
  ],
75
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/handler.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,19 @@ import { handleAddKnowledgeCandidates } from './handler.js';
2
2
  export const addKnowledgeCandidatesTool = {
3
3
  definition: {
4
4
  name: 'paput_add_knowledge_candidates',
5
- description: 'AI が抽出した知見候補を pending に保存します',
5
+ description: 'Add reusable knowledge candidates extracted from a Claude or Codex session to the local pending queue. Use this before saving knowledge to PaPut when candidates still need review or deduplication.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {
9
- session_id: { type: 'string', description: '抽出元セッションID' },
9
+ session_id: { type: 'string', description: 'Source session ID' },
10
10
  source: {
11
11
  type: 'string',
12
12
  enum: ['claude', 'codex'],
13
- description: '抽出元セッションソース',
13
+ description: 'Source session provider',
14
14
  },
15
15
  candidates: {
16
16
  type: 'array',
17
- description: '保存する知見候補',
17
+ description: 'Knowledge candidates to add',
18
18
  items: {
19
19
  type: 'object',
20
20
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,UAAU,EAAE;QACV,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,8BAA8B;QAC3C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;gBACzD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,aAAa;iBAC3B;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,UAAU;oBACvB,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BACxD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;yBAC/C;wBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBAC5B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC;SACjD;KACF;IACD,OAAO,EAAE,4BAA4B;CACtC,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/add-knowledge-candidates/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAE5D,MAAM,CAAC,MAAM,0BAA0B,GAAgB;IACrD,UAAU,EAAE;QACV,IAAI,EAAE,gCAAgC;QACtC,WAAW,EACT,sMAAsM;QACxM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE;gBAChE,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBACzB,WAAW,EAAE,yBAAyB;iBACvC;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,6BAA6B;oBAC1C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;4BACxD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;yBAC/C;wBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;qBAC5B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC;SACjD;KACF;IACD,OAAO,EAAE,4BAA4B;CACtC,CAAC"}
@@ -2,7 +2,7 @@ import { handleCacheStatus } from './handler.js';
2
2
  export const cacheStatusTool = {
3
3
  definition: {
4
4
  name: 'paput_cache_status',
5
- description: 'PaPut のローカルキャッシュ状態を取得します',
5
+ description: 'Inspect the local PaPut cache, including cached memos, pending knowledge candidates, processed sessions, and the last remote sync timestamp.',
6
6
  inputSchema: {
7
7
  type: 'object',
8
8
  properties: {},
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/cache-status/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,0BAA0B;QACvC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,iBAAiB;CAC3B,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/cache-status/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,eAAe,GAAgB;IAC1C,UAAU,EAAE;QACV,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,8IAA8I;QAChJ,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,iBAAiB;CAC3B,CAAC"}
@@ -6,25 +6,25 @@ export async function handleCreateMemo(args, apiClient) {
6
6
  content: [
7
7
  {
8
8
  type: 'text',
9
- text: 'パラメータが不足しています',
9
+ text: 'Missing parameters',
10
10
  },
11
11
  ],
12
12
  isError: true,
13
13
  };
14
14
  }
15
- // パラメータの検証
15
+ // Validate parameters
16
16
  if (typeof args.title !== 'string' || typeof args.body !== 'string') {
17
17
  return {
18
18
  content: [
19
19
  {
20
20
  type: 'text',
21
- text: 'タイトルと本文は文字列で指定してください',
21
+ text: 'Title and body must be strings',
22
22
  },
23
23
  ],
24
24
  isError: true,
25
25
  };
26
26
  }
27
- // パラメータの構築
27
+ // Build parameters
28
28
  const params = {
29
29
  title: args.title,
30
30
  body: args.body,
@@ -33,13 +33,13 @@ export async function handleCreateMemo(args, apiClient) {
33
33
  if (typeof args.created_at === 'string') {
34
34
  params.created_at = args.created_at;
35
35
  }
36
- // カテゴリの処理
36
+ // Process categories
37
37
  if (Array.isArray(args.categories)) {
38
38
  params.categories = args.categories
39
39
  .filter((item) => typeof item === 'string')
40
40
  .map((name) => ({ name }));
41
41
  }
42
- // プロジェクトの処理
42
+ // Process projects
43
43
  if (Array.isArray(args.projects)) {
44
44
  params.projects = args.projects.filter((item) => typeof item === 'object' &&
45
45
  item !== null &&
@@ -47,16 +47,16 @@ export async function handleCreateMemo(args, apiClient) {
47
47
  typeof item.id === 'number');
48
48
  }
49
49
  else if (!args.projects && process.env.PAPUT_PROJECT_MATCH) {
50
- // 環境変数が設定されている場合、プロジェクトを検索して自動紐付け
50
+ // When configured, search for a project and link it automatically
51
51
  try {
52
52
  const projects = await searchSkillSheetProjects(apiClient, process.env.PAPUT_PROJECT_MATCH);
53
53
  if (projects.length > 0) {
54
- // 最初にマッチしたプロジェクトを使用
54
+ // Use the first matched project
55
55
  params.projects = [projects[0]];
56
56
  }
57
57
  }
58
58
  catch (error) {
59
- // プロジェクト検索が失敗しても、メモ作成は続行
59
+ // Continue creating the memo even if project search fails
60
60
  console.error('Failed to search projects:', error);
61
61
  }
62
62
  }
@@ -67,17 +67,28 @@ export async function handleCreateMemo(args, apiClient) {
67
67
  content: [
68
68
  {
69
69
  type: 'text',
70
- text: `メモの作成に失敗しました: ${result.error || '不明なエラー'}`,
70
+ text: `Failed to create memo: ${result.error || 'Unknown error'}`,
71
71
  },
72
72
  ],
73
73
  isError: true,
74
74
  };
75
75
  }
76
- let message = `メモ「${params.title}」が正常に作成されました。`;
76
+ let message = `Memo "" was created successfully.`;
77
77
  if (params.projects && params.projects.length > 0) {
78
- message += `\nプロジェクト: ${params.projects[0].title || `ID: ${params.projects[0].id}`}`;
78
+ message += `\nProject: ${params.projects[0].title || `ID: ${params.projects[0].id}`}`;
79
79
  }
80
80
  return {
81
+ structuredContent: {
82
+ success: true,
83
+ action: 'created',
84
+ memo: {
85
+ title: params.title,
86
+ is_public: params.is_public,
87
+ created_at: params.created_at,
88
+ categories: params.categories || [],
89
+ projects: params.projects || [],
90
+ },
91
+ },
81
92
  content: [
82
93
  {
83
94
  type: 'text',
@@ -87,12 +98,12 @@ export async function handleCreateMemo(args, apiClient) {
87
98
  };
88
99
  }
89
100
  catch (error) {
90
- const errorMessage = error instanceof Error ? error.message : '不明なエラー';
101
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
91
102
  return {
92
103
  content: [
93
104
  {
94
105
  type: 'text',
95
- text: `メモの作成中にエラーが発生しました: ${errorMessage}`,
106
+ text: `Error while creating memo: ${errorMessage}`,
96
107
  },
97
108
  ],
98
109
  isError: true,