paput-mcp 2.2.4 → 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.
- package/README.md +137 -104
- package/dist/cli/index.js +6 -6
- package/dist/cli/setup-ai.js +124 -126
- package/dist/cli/setup-ai.js.map +1 -1
- package/dist/handlers/add-knowledge-candidates/handler.js +11 -9
- package/dist/handlers/add-knowledge-candidates/handler.js.map +1 -1
- package/dist/handlers/add-knowledge-candidates/tool.js +4 -4
- package/dist/handlers/add-knowledge-candidates/tool.js.map +1 -1
- package/dist/handlers/cache-status/handler.js +11 -9
- package/dist/handlers/cache-status/handler.js.map +1 -1
- package/dist/handlers/cache-status/tool.js +1 -1
- package/dist/handlers/cache-status/tool.js.map +1 -1
- package/dist/handlers/create-memo/handler.js +25 -14
- package/dist/handlers/create-memo/handler.js.map +1 -1
- package/dist/handlers/create-memo/tool.js +6 -6
- package/dist/handlers/create-memo/tool.js.map +1 -1
- package/dist/handlers/create-note/handler.js +19 -9
- package/dist/handlers/create-note/handler.js.map +1 -1
- package/dist/handlers/create-note/tool.js +4 -4
- package/dist/handlers/create-note/tool.js.map +1 -1
- package/dist/handlers/delete-skill-sheet-project/handler.js +18 -2
- package/dist/handlers/delete-skill-sheet-project/handler.js.map +1 -1
- package/dist/handlers/delete-skill-sheet-project/tool.js +2 -2
- package/dist/handlers/delete-skill-sheet-project/tool.js.map +1 -1
- package/dist/handlers/discard-pending-candidate/handler.js +9 -7
- package/dist/handlers/discard-pending-candidate/handler.js.map +1 -1
- package/dist/handlers/discard-pending-candidate/tool.js +6 -3
- package/dist/handlers/discard-pending-candidate/tool.js.map +1 -1
- package/dist/handlers/get-categories/handler.js +10 -4
- package/dist/handlers/get-categories/handler.js.map +1 -1
- package/dist/handlers/get-categories/tool.js +1 -1
- package/dist/handlers/get-categories/tool.js.map +1 -1
- package/dist/handlers/get-memo/handler.js +14 -11
- package/dist/handlers/get-memo/handler.js.map +1 -1
- package/dist/handlers/get-memo/tool.js +2 -2
- package/dist/handlers/get-memo/tool.js.map +1 -1
- package/dist/handlers/get-note/handler.js +19 -16
- package/dist/handlers/get-note/handler.js.map +1 -1
- package/dist/handlers/get-note/tool.js +2 -2
- package/dist/handlers/get-note/tool.js.map +1 -1
- package/dist/handlers/get-session-transcript/handler.js +9 -3
- package/dist/handlers/get-session-transcript/handler.js.map +1 -1
- package/dist/handlers/get-session-transcript/tool.js +4 -4
- package/dist/handlers/get-session-transcript/tool.js.map +1 -1
- package/dist/handlers/get-skill-sheet/handler.js +32 -29
- package/dist/handlers/get-skill-sheet/handler.js.map +1 -1
- package/dist/handlers/get-skill-sheet/tool.js +1 -1
- package/dist/handlers/get-skill-sheet/tool.js.map +1 -1
- package/dist/handlers/index.js +1 -11
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/list-ideas/handler.js +9 -3
- package/dist/handlers/list-ideas/handler.js.map +1 -1
- package/dist/handlers/list-pending-candidates/handler.js +6 -4
- package/dist/handlers/list-pending-candidates/handler.js.map +1 -1
- package/dist/handlers/list-pending-candidates/tool.js +2 -2
- package/dist/handlers/list-pending-candidates/tool.js.map +1 -1
- package/dist/handlers/save-pending-candidate/handler.js +12 -9
- package/dist/handlers/save-pending-candidate/handler.js.map +1 -1
- package/dist/handlers/save-pending-candidate/tool.js +6 -6
- package/dist/handlers/save-pending-candidate/tool.js.map +1 -1
- package/dist/handlers/scan-sessions/handler.js +6 -4
- package/dist/handlers/scan-sessions/handler.js.map +1 -1
- package/dist/handlers/scan-sessions/tool.js +3 -3
- package/dist/handlers/scan-sessions/tool.js.map +1 -1
- package/dist/handlers/search-memo/handler.js +16 -8
- package/dist/handlers/search-memo/handler.js.map +1 -1
- package/dist/handlers/search-memo/tool.js +8 -8
- package/dist/handlers/search-memo/tool.js.map +1 -1
- package/dist/handlers/search-notes/handler.js +17 -9
- package/dist/handlers/search-notes/handler.js.map +1 -1
- package/dist/handlers/search-notes/tool.js +5 -5
- package/dist/handlers/search-notes/tool.js.map +1 -1
- package/dist/handlers/sync-remote-memos/handler.js +9 -5
- package/dist/handlers/sync-remote-memos/handler.js.map +1 -1
- package/dist/handlers/sync-remote-memos/tool.js +3 -3
- package/dist/handlers/sync-remote-memos/tool.js.map +1 -1
- package/dist/handlers/test-utils.js +13 -0
- package/dist/handlers/test-utils.js.map +1 -0
- package/dist/handlers/update-memo/handler.js +22 -11
- package/dist/handlers/update-memo/handler.js.map +1 -1
- package/dist/handlers/update-memo/tool.js +8 -8
- package/dist/handlers/update-memo/tool.js.map +1 -1
- package/dist/handlers/update-note/handler.js +23 -13
- package/dist/handlers/update-note/handler.js.map +1 -1
- package/dist/handlers/update-note/tool.js +5 -5
- package/dist/handlers/update-note/tool.js.map +1 -1
- package/dist/handlers/update-skill-sheet-basic-info/handler.js +26 -2
- package/dist/handlers/update-skill-sheet-basic-info/handler.js.map +1 -1
- package/dist/handlers/update-skill-sheet-basic-info/tool.js +5 -5
- package/dist/handlers/update-skill-sheet-basic-info/tool.js.map +1 -1
- package/dist/handlers/update-skill-sheet-self-pr/handler.js +14 -2
- package/dist/handlers/update-skill-sheet-self-pr/handler.js.map +1 -1
- package/dist/handlers/update-skill-sheet-self-pr/tool.js +2 -2
- package/dist/handlers/update-skill-sheet-self-pr/tool.js.map +1 -1
- package/dist/handlers/update-skill-sheet-skills/handler.js +34 -3
- package/dist/handlers/update-skill-sheet-skills/handler.js.map +1 -1
- package/dist/handlers/update-skill-sheet-skills/index.js +1 -1
- package/dist/handlers/update-skill-sheet-skills/index.js.map +1 -1
- package/dist/handlers/update-skill-sheet-skills/tool.js +9 -9
- package/dist/handlers/update-skill-sheet-skills/tool.js.map +1 -1
- package/dist/handlers/upsert-skill-sheet-project/handler.js +105 -0
- package/dist/handlers/upsert-skill-sheet-project/handler.js.map +1 -0
- package/dist/handlers/upsert-skill-sheet-project/index.js +2 -0
- package/dist/handlers/upsert-skill-sheet-project/index.js.map +1 -0
- package/dist/handlers/{update-skill-sheet-project → upsert-skill-sheet-project}/tool.js +18 -19
- package/dist/handlers/upsert-skill-sheet-project/tool.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schemas/tool-input.js +228 -0
- package/dist/schemas/tool-input.js.map +1 -0
- package/dist/server.js +8 -5
- package/dist/server.js.map +1 -1
- package/dist/services/api/client.js +1 -1
- package/dist/services/api/client.js.map +1 -1
- package/dist/services/api/idea.js.map +1 -1
- package/dist/services/api/index.js +0 -1
- package/dist/services/api/index.js.map +1 -1
- package/dist/services/api/memo.js +3 -17
- package/dist/services/api/memo.js.map +1 -1
- package/dist/services/api/note.js +3 -17
- package/dist/services/api/note.js.map +1 -1
- package/dist/services/api/skill-sheet.js +3 -3
- package/dist/services/api/skill-sheet.js.map +1 -1
- package/dist/services/local-cache/index.js +2 -2
- package/dist/services/local-cache/index.js.map +1 -1
- package/dist/services/session/index.js +41 -18
- package/dist/services/session/index.js.map +1 -1
- package/dist/tool.js +80 -42
- package/dist/tool.js.map +1 -1
- package/dist/types/constants.js +12 -12
- package/dist/types/constants.js.map +1 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +1 -1
- package/package.json +7 -4
- package/dist/cli/install-codex-skill.js +0 -58
- package/dist/cli/install-codex-skill.js.map +0 -1
- package/dist/handlers/add-skill-sheet-project/handler.js +0 -16
- package/dist/handlers/add-skill-sheet-project/handler.js.map +0 -1
- package/dist/handlers/add-skill-sheet-project/index.js +0 -2
- package/dist/handlers/add-skill-sheet-project/index.js.map +0 -1
- package/dist/handlers/add-skill-sheet-project/tool.js +0 -96
- package/dist/handlers/add-skill-sheet-project/tool.js.map +0 -1
- package/dist/handlers/add-skill-sheet-skill/handler.js +0 -13
- package/dist/handlers/add-skill-sheet-skill/handler.js.map +0 -1
- package/dist/handlers/add-skill-sheet-skill/index.js +0 -2
- package/dist/handlers/add-skill-sheet-skill/index.js.map +0 -1
- package/dist/handlers/add-skill-sheet-skill/tool.js +0 -41
- package/dist/handlers/add-skill-sheet-skill/tool.js.map +0 -1
- package/dist/handlers/create-memo-tool.js +0 -35
- package/dist/handlers/create-memo-tool.js.map +0 -1
- package/dist/handlers/create-memo.js +0 -72
- package/dist/handlers/create-memo.js.map +0 -1
- package/dist/handlers/create-skill-sheet/handler.js +0 -72
- package/dist/handlers/create-skill-sheet/handler.js.map +0 -1
- package/dist/handlers/create-skill-sheet/index.js +0 -3
- package/dist/handlers/create-skill-sheet/index.js.map +0 -1
- package/dist/handlers/create-skill-sheet/tool.js +0 -123
- package/dist/handlers/create-skill-sheet/tool.js.map +0 -1
- package/dist/handlers/delete-skill-sheet-skill/handler.js +0 -17
- package/dist/handlers/delete-skill-sheet-skill/handler.js.map +0 -1
- package/dist/handlers/delete-skill-sheet-skill/index.js +0 -2
- package/dist/handlers/delete-skill-sheet-skill/index.js.map +0 -1
- package/dist/handlers/delete-skill-sheet-skill/tool.js +0 -19
- package/dist/handlers/delete-skill-sheet-skill/tool.js.map +0 -1
- package/dist/handlers/get-skill-sheet-projects/handler.js +0 -14
- package/dist/handlers/get-skill-sheet-projects/handler.js.map +0 -1
- package/dist/handlers/get-skill-sheet-projects/index.js +0 -2
- package/dist/handlers/get-skill-sheet-projects/index.js.map +0 -1
- package/dist/handlers/get-skill-sheet-projects/tool.js +0 -18
- package/dist/handlers/get-skill-sheet-projects/tool.js.map +0 -1
- package/dist/handlers/get-skill-sheet-skills/handler.js +0 -13
- package/dist/handlers/get-skill-sheet-skills/handler.js.map +0 -1
- package/dist/handlers/get-skill-sheet-skills/index.js +0 -2
- package/dist/handlers/get-skill-sheet-skills/index.js.map +0 -1
- package/dist/handlers/get-skill-sheet-skills/tool.js +0 -13
- package/dist/handlers/get-skill-sheet-skills/tool.js.map +0 -1
- package/dist/handlers/search-memo-tool.js +0 -41
- package/dist/handlers/search-memo-tool.js.map +0 -1
- package/dist/handlers/search-memo.js +0 -80
- package/dist/handlers/search-memo.js.map +0 -1
- package/dist/handlers/skill-sheet-basic-info/handler.js +0 -12
- package/dist/handlers/skill-sheet-basic-info/handler.js.map +0 -1
- package/dist/handlers/skill-sheet-basic-info/index.js +0 -2
- package/dist/handlers/skill-sheet-basic-info/index.js.map +0 -1
- package/dist/handlers/skill-sheet-basic-info/tool.js +0 -30
- package/dist/handlers/skill-sheet-basic-info/tool.js.map +0 -1
- package/dist/handlers/skill-sheet-projects/handlers.js +0 -48
- package/dist/handlers/skill-sheet-projects/handlers.js.map +0 -1
- package/dist/handlers/skill-sheet-projects/index.js +0 -2
- package/dist/handlers/skill-sheet-projects/index.js.map +0 -1
- package/dist/handlers/skill-sheet-projects/tools.js +0 -228
- package/dist/handlers/skill-sheet-projects/tools.js.map +0 -1
- package/dist/handlers/skill-sheet-projects/types.js +0 -2
- package/dist/handlers/skill-sheet-projects/types.js.map +0 -1
- package/dist/handlers/skill-sheet-self-pr/handler.js +0 -12
- package/dist/handlers/skill-sheet-self-pr/handler.js.map +0 -1
- package/dist/handlers/skill-sheet-self-pr/index.js +0 -2
- package/dist/handlers/skill-sheet-self-pr/index.js.map +0 -1
- package/dist/handlers/skill-sheet-self-pr/tool.js +0 -18
- package/dist/handlers/skill-sheet-self-pr/tool.js.map +0 -1
- package/dist/handlers/skill-sheet-skills/handlers.js +0 -57
- package/dist/handlers/skill-sheet-skills/handlers.js.map +0 -1
- package/dist/handlers/skill-sheet-skills/index.js +0 -2
- package/dist/handlers/skill-sheet-skills/index.js.map +0 -1
- package/dist/handlers/skill-sheet-skills/tools.js +0 -161
- package/dist/handlers/skill-sheet-skills/tools.js.map +0 -1
- package/dist/handlers/skill-sheet-skills/types.js +0 -2
- package/dist/handlers/skill-sheet-skills/types.js.map +0 -1
- package/dist/handlers/update-skill-sheet/handler.js +0 -115
- package/dist/handlers/update-skill-sheet/handler.js.map +0 -1
- package/dist/handlers/update-skill-sheet/index.js +0 -3
- package/dist/handlers/update-skill-sheet/index.js.map +0 -1
- package/dist/handlers/update-skill-sheet/tool.js +0 -122
- package/dist/handlers/update-skill-sheet/tool.js.map +0 -1
- package/dist/handlers/update-skill-sheet-project/handler.js +0 -16
- package/dist/handlers/update-skill-sheet-project/handler.js.map +0 -1
- package/dist/handlers/update-skill-sheet-project/index.js +0 -2
- package/dist/handlers/update-skill-sheet-project/index.js.map +0 -1
- package/dist/handlers/update-skill-sheet-project/tool.js.map +0 -1
- package/dist/handlers/update-skill-sheet-skill/handler.js +0 -25
- package/dist/handlers/update-skill-sheet-skill/handler.js.map +0 -1
- package/dist/handlers/update-skill-sheet-skill/index.js +0 -2
- package/dist/handlers/update-skill-sheet-skill/index.js.map +0 -1
- package/dist/handlers/update-skill-sheet-skill/tool.js +0 -45
- package/dist/handlers/update-skill-sheet-skill/tool.js.map +0 -1
- package/dist/old-index.js +0 -210
- package/dist/old-index.js.map +0 -1
- package/dist/server/paput-server.js +0 -38
- package/dist/server/paput-server.js.map +0 -1
- package/dist/services/api/base.js +0 -35
- package/dist/services/api/base.js.map +0 -1
- package/dist/services/api-service.js +0 -83
- package/dist/services/api-service.js.map +0 -1
- package/dist/services/index.js +0 -2
- package/dist/services/index.js.map +0 -1
- package/dist/services/paput-api.js +0 -45
- package/dist/services/paput-api.js.map +0 -1
- package/dist/tools/memo.js +0 -134
- package/dist/tools/memo.js.map +0 -1
- package/dist/types/mcp.js +0 -2
- package/dist/types/mcp.js.map +0 -1
- package/dist/types/paput.js +0 -2
- package/dist/types/paput.js.map +0 -1
- package/dist/utils/config.js +0 -23
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/logger.js +0 -19
- package/dist/utils/logger.js.map +0 -1
package/dist/cli/setup-ai.js
CHANGED
|
@@ -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.
|
|
16
|
-
3.
|
|
17
|
-
4.
|
|
18
|
-
5.
|
|
19
|
-
6. \`paput_add_knowledge_candidates
|
|
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
|
-
|
|
26
|
+
Do not add these to pending:
|
|
27
27
|
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
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
|
-
-
|
|
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.
|
|
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: '
|
|
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
|
|
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.
|
|
75
|
-
2.
|
|
76
|
-
3.
|
|
77
|
-
4.
|
|
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
|
-
-
|
|
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: '
|
|
90
|
-
body: `# PaPut
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
##
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
1.
|
|
104
|
-
2.
|
|
105
|
-
3.
|
|
106
|
-
4.
|
|
107
|
-
5.
|
|
108
|
-
6.
|
|
109
|
-
|
|
110
|
-
##
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
149
|
+
Use \`paput_save_pending_candidate\` only when the user explicitly approves saving a pending candidate to PaPut.
|
|
152
150
|
|
|
153
|
-
|
|
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
|
|
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
|
|
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('-
|
|
192
|
+
console.log('This command will:');
|
|
193
|
+
console.log('- Create canonical PaPut skills under ~/.paput/skills');
|
|
196
194
|
if (options.claude) {
|
|
197
|
-
console.log('-
|
|
195
|
+
console.log('- Link skills into ~/.claude/skills when Claude is available');
|
|
198
196
|
}
|
|
199
197
|
if (options.codex) {
|
|
200
|
-
console.log('-
|
|
198
|
+
console.log('- Link skills into ~/.agents/skills when Codex is available');
|
|
201
199
|
}
|
|
202
200
|
if (!options.noRules) {
|
|
203
|
-
console.log('- Claude/Codex
|
|
201
|
+
console.log('- Add PaPut usage rules to Claude/Codex global rules');
|
|
204
202
|
}
|
|
205
203
|
console.log('');
|
|
206
|
-
console.log('
|
|
207
|
-
console.log('
|
|
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
|
|
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}
|
|
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');
|
package/dist/cli/setup-ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-ai.js","sourceRoot":"","sources":["../../src/cli/setup-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,MAAM,EACN,WAAW,EACX,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAe1C,MAAM,MAAM,GAAgB;IAC1B;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,
|
|
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
|
|
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":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM/D,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAyC,EACzC,SAAoB;IAEpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,
|
|
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: '
|
|
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: '
|
|
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,
|
|
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,19 +2,21 @@ import { getCacheDir, readCache } from '../../services/local-cache/index.js';
|
|
|
2
2
|
export async function handleCacheStatus(_args, _apiClient) {
|
|
3
3
|
const cache = readCache();
|
|
4
4
|
const pendingCount = cache.pending.filter((candidate) => candidate.status === 'pending').length;
|
|
5
|
+
const status = {
|
|
6
|
+
cache_dir: getCacheDir(),
|
|
7
|
+
memos: cache.memos.length,
|
|
8
|
+
pending: pendingCount,
|
|
9
|
+
saved_candidates: cache.pending.filter((candidate) => candidate.status === 'saved').length,
|
|
10
|
+
discarded_candidates: cache.pending.filter((candidate) => candidate.status === 'discarded').length,
|
|
11
|
+
processed_sessions: cache.sessions.length,
|
|
12
|
+
last_remote_sync_at: cache.config.last_remote_sync_at || null,
|
|
13
|
+
};
|
|
5
14
|
return {
|
|
15
|
+
structuredContent: status,
|
|
6
16
|
content: [
|
|
7
17
|
{
|
|
8
18
|
type: 'text',
|
|
9
|
-
text: JSON.stringify(
|
|
10
|
-
cache_dir: getCacheDir(),
|
|
11
|
-
memos: cache.memos.length,
|
|
12
|
-
pending: pendingCount,
|
|
13
|
-
saved_candidates: cache.pending.filter((candidate) => candidate.status === 'saved').length,
|
|
14
|
-
discarded_candidates: cache.pending.filter((candidate) => candidate.status === 'discarded').length,
|
|
15
|
-
processed_sessions: cache.sessions.length,
|
|
16
|
-
last_remote_sync_at: cache.config.last_remote_sync_at || null,
|
|
17
|
-
}, null, 2),
|
|
19
|
+
text: JSON.stringify(status, null, 2),
|
|
18
20
|
},
|
|
19
21
|
],
|
|
20
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/cache-status/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA0C,EAC1C,UAAqB;IAErB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAC9C,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/cache-status/handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA0C,EAC1C,UAAqB;IAErB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAC9C,CAAC,MAAM,CAAC;IACT,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,WAAW,EAAE;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;QACzB,OAAO,EAAE,YAAY;QACrB,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CACpC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,CAC5C,CAAC,MAAM;QACR,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,CAChD,CAAC,MAAM;QACR,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;QACzC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI;KAC9D,CAAC;IAEF,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,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,
|
|
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"}
|