paput-mcp 1.0.0 → 1.1.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 +26 -31
- package/dist/handlers/create-idea/handler.js +64 -0
- package/dist/handlers/create-idea/handler.js.map +1 -0
- package/dist/handlers/create-idea/index.js +3 -0
- package/dist/handlers/create-idea/index.js.map +1 -0
- package/dist/handlers/create-idea/tool.js +23 -0
- package/dist/handlers/create-idea/tool.js.map +1 -0
- package/dist/handlers/create-memo/handler.js +72 -0
- package/dist/handlers/create-memo/handler.js.map +1 -0
- package/dist/handlers/create-memo/index.js +3 -0
- package/dist/handlers/create-memo/index.js.map +1 -0
- package/dist/handlers/create-memo/tool.js +35 -0
- package/dist/handlers/create-memo/tool.js.map +1 -0
- package/dist/handlers/create-memo-tool.js +35 -0
- package/dist/handlers/create-memo-tool.js.map +1 -0
- package/dist/handlers/create-memo.js +5 -3
- package/dist/handlers/create-memo.js.map +1 -1
- package/dist/handlers/create-note/handler.js +71 -0
- package/dist/handlers/create-note/handler.js.map +1 -0
- package/dist/handlers/create-note/index.js +3 -0
- package/dist/handlers/create-note/index.js.map +1 -0
- package/dist/handlers/create-note/tool.js +31 -0
- package/dist/handlers/create-note/tool.js.map +1 -0
- package/dist/handlers/create-skill-sheet/handler.js +72 -0
- package/dist/handlers/create-skill-sheet/handler.js.map +1 -0
- package/dist/handlers/create-skill-sheet/index.js +3 -0
- package/dist/handlers/create-skill-sheet/index.js.map +1 -0
- package/dist/handlers/create-skill-sheet/tool.js +120 -0
- package/dist/handlers/create-skill-sheet/tool.js.map +1 -0
- package/dist/handlers/delete-idea/handler.js +63 -0
- package/dist/handlers/delete-idea/handler.js.map +1 -0
- package/dist/handlers/delete-idea/index.js +3 -0
- package/dist/handlers/delete-idea/index.js.map +1 -0
- package/dist/handlers/delete-idea/tool.js +19 -0
- package/dist/handlers/delete-idea/tool.js.map +1 -0
- package/dist/handlers/delete-memo/handler.js +51 -0
- package/dist/handlers/delete-memo/handler.js.map +1 -0
- package/dist/handlers/delete-memo/index.js +3 -0
- package/dist/handlers/delete-memo/index.js.map +1 -0
- package/dist/handlers/delete-memo/tool.js +19 -0
- package/dist/handlers/delete-memo/tool.js.map +1 -0
- package/dist/handlers/delete-note/handler.js +63 -0
- package/dist/handlers/delete-note/handler.js.map +1 -0
- package/dist/handlers/delete-note/index.js +3 -0
- package/dist/handlers/delete-note/index.js.map +1 -0
- package/dist/handlers/delete-note/tool.js +19 -0
- package/dist/handlers/delete-note/tool.js.map +1 -0
- package/dist/handlers/get-categories/handler.js +39 -0
- package/dist/handlers/get-categories/handler.js.map +1 -0
- package/dist/handlers/get-categories/index.js +3 -0
- package/dist/handlers/get-categories/index.js.map +1 -0
- package/dist/handlers/get-categories/tool.js +13 -0
- package/dist/handlers/get-categories/tool.js.map +1 -0
- package/dist/handlers/get-memo/handler.js +57 -0
- package/dist/handlers/get-memo/handler.js.map +1 -0
- package/dist/handlers/get-memo/index.js +3 -0
- package/dist/handlers/get-memo/index.js.map +1 -0
- package/dist/handlers/get-memo/tool.js +19 -0
- package/dist/handlers/get-memo/tool.js.map +1 -0
- package/dist/handlers/get-note/handler.js +69 -0
- package/dist/handlers/get-note/handler.js.map +1 -0
- package/dist/handlers/get-note/index.js +3 -0
- package/dist/handlers/get-note/index.js.map +1 -0
- package/dist/handlers/get-note/tool.js +19 -0
- package/dist/handlers/get-note/tool.js.map +1 -0
- package/dist/handlers/get-skill-sheet/handler.js +80 -0
- package/dist/handlers/get-skill-sheet/handler.js.map +1 -0
- package/dist/handlers/get-skill-sheet/index.js +3 -0
- package/dist/handlers/get-skill-sheet/index.js.map +1 -0
- package/dist/handlers/get-skill-sheet/tool.js +13 -0
- package/dist/handlers/get-skill-sheet/tool.js.map +1 -0
- package/dist/handlers/index.js +15 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/list-ideas/handler.js +51 -0
- package/dist/handlers/list-ideas/handler.js.map +1 -0
- package/dist/handlers/list-ideas/index.js +3 -0
- package/dist/handlers/list-ideas/index.js.map +1 -0
- package/dist/handlers/list-ideas/tool.js +13 -0
- package/dist/handlers/list-ideas/tool.js.map +1 -0
- package/dist/handlers/search-memo/handler.js +80 -0
- package/dist/handlers/search-memo/handler.js.map +1 -0
- package/dist/handlers/search-memo/index.js +3 -0
- package/dist/handlers/search-memo/index.js.map +1 -0
- package/dist/handlers/search-memo/tool.js +41 -0
- package/dist/handlers/search-memo/tool.js.map +1 -0
- package/dist/handlers/search-memo-tool.js +41 -0
- package/dist/handlers/search-memo-tool.js.map +1 -0
- package/dist/handlers/search-memo.js +80 -0
- package/dist/handlers/search-memo.js.map +1 -0
- package/dist/handlers/search-notes/handler.js +73 -0
- package/dist/handlers/search-notes/handler.js.map +1 -0
- package/dist/handlers/search-notes/index.js +3 -0
- package/dist/handlers/search-notes/index.js.map +1 -0
- package/dist/handlers/search-notes/tool.js +33 -0
- package/dist/handlers/search-notes/tool.js.map +1 -0
- package/dist/handlers/update-memo/handler.js +83 -0
- package/dist/handlers/update-memo/handler.js.map +1 -0
- package/dist/handlers/update-memo/index.js +3 -0
- package/dist/handlers/update-memo/index.js.map +1 -0
- package/dist/handlers/update-memo/tool.js +49 -0
- package/dist/handlers/update-memo/tool.js.map +1 -0
- package/dist/handlers/update-note/handler.js +97 -0
- package/dist/handlers/update-note/handler.js.map +1 -0
- package/dist/handlers/update-note/index.js +3 -0
- package/dist/handlers/update-note/index.js.map +1 -0
- package/dist/handlers/update-note/tool.js +34 -0
- package/dist/handlers/update-note/tool.js.map +1 -0
- package/dist/handlers/update-skill-sheet/handler.js +115 -0
- package/dist/handlers/update-skill-sheet/handler.js.map +1 -0
- package/dist/handlers/update-skill-sheet/index.js +3 -0
- package/dist/handlers/update-skill-sheet/index.js.map +1 -0
- package/dist/handlers/update-skill-sheet/tool.js +119 -0
- package/dist/handlers/update-skill-sheet/tool.js.map +1 -0
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/services/api-service.js +453 -4
- package/dist/services/api-service.js.map +1 -1
- package/dist/tool.js +69 -45
- package/dist/tool.js.map +1 -1
- package/dist/types/categories.js +2 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/constants.js +26 -0
- package/dist/types/constants.js.map +1 -0
- package/dist/types/delete-memo.js +2 -0
- package/dist/types/delete-memo.js.map +1 -0
- package/dist/types/get-memo.js +2 -0
- package/dist/types/get-memo.js.map +1 -0
- package/dist/types/idea.js +2 -0
- package/dist/types/idea.js.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/note.js +2 -0
- package/dist/types/note.js.map +1 -0
- package/dist/types/search-memo.js +2 -0
- package/dist/types/search-memo.js.map +1 -0
- package/dist/types/skill-sheet.js +2 -0
- package/dist/types/skill-sheet.js.map +1 -0
- package/dist/types/tool.js +2 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/types/update-memo.js +2 -0
- package/dist/types/update-memo.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export async function handleGetNote(args, apiService) {
|
|
2
|
+
if (!args) {
|
|
3
|
+
return {
|
|
4
|
+
content: [
|
|
5
|
+
{
|
|
6
|
+
type: 'text',
|
|
7
|
+
text: 'パラメータが不足しています',
|
|
8
|
+
},
|
|
9
|
+
],
|
|
10
|
+
isError: true,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
// パラメータの検証
|
|
14
|
+
if (typeof args.id !== 'number') {
|
|
15
|
+
return {
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: 'text',
|
|
19
|
+
text: 'IDは数値で指定してください',
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
isError: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const params = {
|
|
26
|
+
id: args.id,
|
|
27
|
+
};
|
|
28
|
+
try {
|
|
29
|
+
const note = await apiService.getNote(params);
|
|
30
|
+
const visibility = note.is_public ? '公開' : '非公開';
|
|
31
|
+
const memoList = note.memos
|
|
32
|
+
.map((memo) => {
|
|
33
|
+
const categories = memo.categories.map((c) => c.name).join(', ') || 'なし';
|
|
34
|
+
const memoVisibility = memo.is_public ? '公開' : '非公開';
|
|
35
|
+
return ` - [${memo.id}] ${memo.title} (${memoVisibility})\n カテゴリ: ${categories}\n ${memo.body.substring(0, 100)}${memo.body.length > 100 ? '...' : ''}`;
|
|
36
|
+
})
|
|
37
|
+
.join('\n\n');
|
|
38
|
+
const content = `ノート詳細:
|
|
39
|
+
ID: ${note.id}
|
|
40
|
+
タイトル: ${note.title}
|
|
41
|
+
公開設定: ${visibility}
|
|
42
|
+
作成日時: ${note.created_at}
|
|
43
|
+
更新日時: ${note.updated_at}
|
|
44
|
+
|
|
45
|
+
含まれるメモ (${note.memos.length}件):
|
|
46
|
+
${memoList || ' なし'}`;
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: content,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = error instanceof Error ? error.message : '不明なエラー';
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: `ノートの取得中にエラーが発生しました: ${errorMessage}`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-note/handler.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAyC,EACzC,UAAsB;IAEtB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe;iBACtB;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,WAAW;IACX,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gBAAgB;iBACvB;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAkB;QAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;KACZ,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK;aACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;YACxD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,OAAO,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,cAAc,gBAAgB,UAAU,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjK,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,OAAO,GAAG;MACd,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,KAAK;QACV,UAAU;QACV,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,UAAU;;UAEb,IAAI,CAAC,KAAK,CAAC,MAAM;EACzB,QAAQ,IAAI,MAAM,EAAE,CAAC;QAEnB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;iBACd;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,YAAY,EAAE;iBAC5C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/get-note/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { handleGetNote } from './handler.js';
|
|
2
|
+
export const getNoteTool = {
|
|
3
|
+
definition: {
|
|
4
|
+
name: 'paput_get_note',
|
|
5
|
+
description: 'PaPut のノート詳細を取得します',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
id: {
|
|
10
|
+
type: 'number',
|
|
11
|
+
description: 'ノートのID',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
required: ['id'],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
handler: handleGetNote,
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-note/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC,UAAU,EAAE;QACV,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,QAAQ;iBACtB;aACF;YACD,QAAQ,EAAE,CAAC,IAAI,CAAC;SACjB;KACF;IACD,OAAO,EAAE,aAAa;CACvB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { GENDER, PROJECT_TYPE, CATEGORY_TYPE } from '../../types/index.js';
|
|
2
|
+
export async function handleGetSkillSheet(_args, apiService) {
|
|
3
|
+
try {
|
|
4
|
+
const skillSheet = await apiService.getSkillSheet();
|
|
5
|
+
// スキル情報のフォーマット
|
|
6
|
+
const skillsText = skillSheet.skills.length > 0
|
|
7
|
+
? skillSheet.skills.map(skill => {
|
|
8
|
+
const categoryType = CATEGORY_TYPE[skill.category_type] || `タイプ${skill.category_type}`;
|
|
9
|
+
return ` - ${skill.category.name} (${categoryType}): ${skill.level} (${skill.years}年)`;
|
|
10
|
+
}).join('\n')
|
|
11
|
+
: ' なし';
|
|
12
|
+
// プロジェクト情報のフォーマット
|
|
13
|
+
const projectsText = skillSheet.projects.length > 0
|
|
14
|
+
? skillSheet.projects.map(project => {
|
|
15
|
+
const period = project.end_period
|
|
16
|
+
? `${project.start_period} - ${project.end_period}`
|
|
17
|
+
: `${project.start_period} - 現在`;
|
|
18
|
+
const projectType = PROJECT_TYPE[project.type] || `タイプ${project.type}`;
|
|
19
|
+
const techNames = project.technologies.map(t => t.name).join(', ');
|
|
20
|
+
const memoNames = project.memos.map(m => m.title).join(', ');
|
|
21
|
+
return ` 【${project.title}】(ID: ${project.id}, ${projectType})
|
|
22
|
+
期間: ${period}
|
|
23
|
+
役割: ${project.role}
|
|
24
|
+
規模: ${project.scale}
|
|
25
|
+
説明: ${project.description}
|
|
26
|
+
技術: ${techNames || 'なし'}
|
|
27
|
+
メモ: ${memoNames || 'なし'}`;
|
|
28
|
+
}).join('\n\n')
|
|
29
|
+
: ' なし';
|
|
30
|
+
// 性別の表示
|
|
31
|
+
const genderText = GENDER[skillSheet.gender] || `その他`;
|
|
32
|
+
const content = `スキルシート:
|
|
33
|
+
ID: ${skillSheet.id}
|
|
34
|
+
最寄り駅: ${skillSheet.nearest_station || '未設定'}
|
|
35
|
+
性別: ${genderText}
|
|
36
|
+
生年月日: ${skillSheet.birth_date}
|
|
37
|
+
経験年数: ${skillSheet.years_of_experience}年
|
|
38
|
+
|
|
39
|
+
自己PR:
|
|
40
|
+
${skillSheet.self_pr || '未設定'}
|
|
41
|
+
|
|
42
|
+
スキル:
|
|
43
|
+
${skillsText}
|
|
44
|
+
|
|
45
|
+
プロジェクト:
|
|
46
|
+
${projectsText}`;
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: content,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
const errorMessage = error instanceof Error ? error.message : '不明なエラー';
|
|
58
|
+
// スキルシートが存在しない場合のメッセージ
|
|
59
|
+
if (errorMessage.includes('404') || errorMessage.includes('not found')) {
|
|
60
|
+
return {
|
|
61
|
+
content: [
|
|
62
|
+
{
|
|
63
|
+
type: 'text',
|
|
64
|
+
text: 'スキルシートがまだ作成されていません。',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: `スキルシートの取得中にエラーが発生しました: ${errorMessage}`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/get-skill-sheet/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/get-skill-sheet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { handleGetSkillSheet } from './handler.js';
|
|
2
|
+
export const getSkillSheetTool = {
|
|
3
|
+
definition: {
|
|
4
|
+
name: 'paput_get_skill_sheet',
|
|
5
|
+
description: 'PaPut のスキルシートを取得します',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {},
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
handler: handleGetSkillSheet,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/get-skill-sheet/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC5C,UAAU,EAAE;QACV,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,mBAAmB;CAC7B,CAAC"}
|
package/dist/handlers/index.js
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
-
export * from './create-memo.js';
|
|
1
|
+
export * from './create-memo/index.js';
|
|
2
|
+
export * from './search-memo/index.js';
|
|
3
|
+
export * from './get-memo/index.js';
|
|
4
|
+
export * from './update-memo/index.js';
|
|
5
|
+
export * from './get-categories/index.js';
|
|
6
|
+
export * from './create-note/index.js';
|
|
7
|
+
export * from './search-notes/index.js';
|
|
8
|
+
export * from './get-note/index.js';
|
|
9
|
+
export * from './update-note/index.js';
|
|
10
|
+
export * from './list-ideas/index.js';
|
|
11
|
+
export * from './create-idea/index.js';
|
|
12
|
+
export * from './delete-idea/index.js';
|
|
13
|
+
export * from './get-skill-sheet/index.js';
|
|
14
|
+
export * from './create-skill-sheet/index.js';
|
|
15
|
+
export * from './update-skill-sheet/index.js';
|
|
2
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export async function handleListIdeas(args, apiService) {
|
|
2
|
+
try {
|
|
3
|
+
const result = await apiService.listIdeas();
|
|
4
|
+
if (!result.success) {
|
|
5
|
+
return {
|
|
6
|
+
content: [
|
|
7
|
+
{
|
|
8
|
+
type: 'text',
|
|
9
|
+
text: `アイデアの取得に失敗しました: ${result.error || '不明なエラー'}`,
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
isError: true,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (!result.ideas || result.ideas.length === 0) {
|
|
16
|
+
return {
|
|
17
|
+
content: [
|
|
18
|
+
{
|
|
19
|
+
type: 'text',
|
|
20
|
+
text: 'アイデアが登録されていません。',
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const ideasList = result.ideas
|
|
26
|
+
.sort((a, b) => a.sort - b.sort)
|
|
27
|
+
.map((idea) => `- [${idea.id}] ${idea.title} (順序: ${idea.sort})`)
|
|
28
|
+
.join('\n');
|
|
29
|
+
return {
|
|
30
|
+
content: [
|
|
31
|
+
{
|
|
32
|
+
type: 'text',
|
|
33
|
+
text: `アイデア一覧 (${result.ideas.length}件):\n${ideasList}`,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const errorMessage = error instanceof Error ? error.message : '不明なエラー';
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: 'text',
|
|
44
|
+
text: `アイデアの取得中にエラーが発生しました: ${errorMessage}`,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
isError: true,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/list-ideas/handler.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAyC,EACzC,UAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,mBAAmB,MAAM,CAAC,KAAK,IAAI,QAAQ,EAAE;qBACpD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iBAAiB;qBACxB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;aAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;aAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;aAChE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,SAAS,EAAE;iBACxD;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,wBAAwB,YAAY,EAAE;iBAC7C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/list-ideas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { handleListIdeas } from './handler.js';
|
|
2
|
+
export const listIdeasTool = {
|
|
3
|
+
definition: {
|
|
4
|
+
name: 'paput_list_ideas',
|
|
5
|
+
description: 'PaPut のアイデア一覧を取得します',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {},
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
handler: handleListIdeas,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/list-ideas/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,UAAU,EAAE;QACV,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IACD,OAAO,EAAE,eAAe;CACzB,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export async function handleSearchMemo(args, apiService) {
|
|
2
|
+
const params = {};
|
|
3
|
+
if (args) {
|
|
4
|
+
if (typeof args.word === 'string') {
|
|
5
|
+
params.word = args.word;
|
|
6
|
+
}
|
|
7
|
+
if (typeof args.category_id === 'number') {
|
|
8
|
+
params.category_id = args.category_id;
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(args.ids)) {
|
|
11
|
+
params.ids = args.ids.filter((id) => typeof id === 'number');
|
|
12
|
+
}
|
|
13
|
+
if (typeof args.is_public === 'boolean') {
|
|
14
|
+
params.is_public = args.is_public;
|
|
15
|
+
}
|
|
16
|
+
if (typeof args.page === 'number') {
|
|
17
|
+
params.page = args.page;
|
|
18
|
+
}
|
|
19
|
+
if (typeof args.limit === 'number') {
|
|
20
|
+
params.limit = args.limit;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const result = await apiService.searchMemos(params);
|
|
25
|
+
if (!result.success) {
|
|
26
|
+
return {
|
|
27
|
+
content: [
|
|
28
|
+
{
|
|
29
|
+
type: 'text',
|
|
30
|
+
text: `メモの検索に失敗しました: ${result.error || '不明なエラー'}`,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (!result.memos || result.memos.length === 0) {
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
text: '該当するメモが見つかりませんでした。',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const memoList = result.memos
|
|
47
|
+
.map((memo) => {
|
|
48
|
+
const categories = memo.categories.length > 0
|
|
49
|
+
? `カテゴリ: ${memo.categories.map((c) => c.name).join(', ')}`
|
|
50
|
+
: '';
|
|
51
|
+
const visibility = memo.is_public ? '公開' : '非公開';
|
|
52
|
+
return `【${memo.title}】(ID: ${memo.id}, ${visibility})
|
|
53
|
+
${categories}
|
|
54
|
+
${memo.body}
|
|
55
|
+
(作成日: ${memo.created_at})`;
|
|
56
|
+
})
|
|
57
|
+
.join('\n\n---\n\n');
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: `${result.total}件中${result.memos.length}件のメモが見つかりました:\n\n${memoList}`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const errorMessage = error instanceof Error ? error.message : '不明なエラー';
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: `メモの検索中にエラーが発生しました: ${errorMessage}`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/handlers/search-memo/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/handlers/search-memo/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { handleSearchMemo } from './handler.js';
|
|
2
|
+
export const searchMemoTool = {
|
|
3
|
+
definition: {
|
|
4
|
+
name: 'paput_search_memo',
|
|
5
|
+
description: 'PaPut のメモを検索します',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
word: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: '検索キーワード',
|
|
12
|
+
},
|
|
13
|
+
category_id: {
|
|
14
|
+
type: 'number',
|
|
15
|
+
description: 'カテゴリーID',
|
|
16
|
+
},
|
|
17
|
+
ids: {
|
|
18
|
+
type: 'array',
|
|
19
|
+
items: {
|
|
20
|
+
type: 'number',
|
|
21
|
+
},
|
|
22
|
+
description: 'メモIDの配列',
|
|
23
|
+
},
|
|
24
|
+
is_public: {
|
|
25
|
+
type: 'boolean',
|
|
26
|
+
description: '公開/非公開フィルタ',
|
|
27
|
+
},
|
|
28
|
+
page: {
|
|
29
|
+
type: 'number',
|
|
30
|
+
description: 'ページ番号',
|
|
31
|
+
},
|
|
32
|
+
limit: {
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: '取得件数',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
handler: handleSearchMemo,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/handlers/search-memo/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;iBACvB;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;iBACvB;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;qBACf;oBACD,WAAW,EAAE,SAAS;iBACvB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,YAAY;iBAC1B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,OAAO;iBACrB;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,MAAM;iBACpB;aACF;SACF;KACF;IACD,OAAO,EAAE,gBAAgB;CAC1B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { handleSearchMemo } from './search-memo.js';
|
|
2
|
+
export const searchMemoTool = {
|
|
3
|
+
definition: {
|
|
4
|
+
name: 'paput_search_memo',
|
|
5
|
+
description: 'PaPut のメモを検索します',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
word: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: '検索キーワード',
|
|
12
|
+
},
|
|
13
|
+
category_id: {
|
|
14
|
+
type: 'number',
|
|
15
|
+
description: 'カテゴリーID',
|
|
16
|
+
},
|
|
17
|
+
ids: {
|
|
18
|
+
type: 'array',
|
|
19
|
+
items: {
|
|
20
|
+
type: 'number',
|
|
21
|
+
},
|
|
22
|
+
description: 'メモIDの配列',
|
|
23
|
+
},
|
|
24
|
+
is_public: {
|
|
25
|
+
type: 'boolean',
|
|
26
|
+
description: '公開/非公開フィルタ',
|
|
27
|
+
},
|
|
28
|
+
page: {
|
|
29
|
+
type: 'number',
|
|
30
|
+
description: 'ページ番号',
|
|
31
|
+
},
|
|
32
|
+
limit: {
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: '取得件数',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
handler: handleSearchMemo,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=search-memo-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-memo-tool.js","sourceRoot":"","sources":["../../src/handlers/search-memo-tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,UAAU,EAAE;QACV,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;iBACvB;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;iBACvB;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;qBACf;oBACD,WAAW,EAAE,SAAS;iBACvB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,YAAY;iBAC1B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,OAAO;iBACrB;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,MAAM;iBACpB;aACF;SACF;KACF;IACD,OAAO,EAAE,gBAAgB;CAC1B,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export async function handleSearchMemo(args, apiService) {
|
|
2
|
+
const params = {};
|
|
3
|
+
if (args) {
|
|
4
|
+
if (typeof args.word === 'string') {
|
|
5
|
+
params.word = args.word;
|
|
6
|
+
}
|
|
7
|
+
if (typeof args.category_id === 'number') {
|
|
8
|
+
params.category_id = args.category_id;
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(args.ids)) {
|
|
11
|
+
params.ids = args.ids.filter((id) => typeof id === 'number');
|
|
12
|
+
}
|
|
13
|
+
if (typeof args.is_public === 'boolean') {
|
|
14
|
+
params.is_public = args.is_public;
|
|
15
|
+
}
|
|
16
|
+
if (typeof args.page === 'number') {
|
|
17
|
+
params.page = args.page;
|
|
18
|
+
}
|
|
19
|
+
if (typeof args.limit === 'number') {
|
|
20
|
+
params.limit = args.limit;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const result = await apiService.searchMemos(params);
|
|
25
|
+
if (!result.success) {
|
|
26
|
+
return {
|
|
27
|
+
content: [
|
|
28
|
+
{
|
|
29
|
+
type: 'text',
|
|
30
|
+
text: `メモの検索に失敗しました: ${result.error || '不明なエラー'}`,
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (!result.memos || result.memos.length === 0) {
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: 'text',
|
|
41
|
+
text: '該当するメモが見つかりませんでした。',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const memoList = result.memos
|
|
47
|
+
.map((memo) => {
|
|
48
|
+
const categories = memo.categories.length > 0
|
|
49
|
+
? `カテゴリ: ${memo.categories.map((c) => c.name).join(', ')}`
|
|
50
|
+
: '';
|
|
51
|
+
const visibility = memo.is_public ? '公開' : '非公開';
|
|
52
|
+
return `【${memo.title}】(${visibility})
|
|
53
|
+
${categories}
|
|
54
|
+
${memo.body}
|
|
55
|
+
(作成日: ${memo.created_at})`;
|
|
56
|
+
})
|
|
57
|
+
.join('\n\n---\n\n');
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: `${result.total}件中${result.memos.length}件のメモが見つかりました:\n\n${memoList}`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const errorMessage = error instanceof Error ? error.message : '不明なエラー';
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: `メモの検索中にエラーが発生しました: ${errorMessage}`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=search-memo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-memo.js","sourceRoot":"","sources":["../../src/handlers/search-memo.ts"],"names":[],"mappings":"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"}
|