Skip to content

Commit b9d97ec

Browse files
committed
got them all
1 parent 274bf16 commit b9d97ec

2 files changed

Lines changed: 60 additions & 11 deletions

File tree

exercises/99.finished/01.solution.finished/src/prompts.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { z } from 'zod'
44
import { type EpicMeMCP } from './index.ts'
55

66
export async function initializePrompts(agent: EpicMeMCP) {
7-
agent.server.registerPrompt(
7+
const suggestTagsPrompt = agent.server.registerPrompt(
88
'suggest_tags',
99
{
1010
title: 'Suggest Tags',
@@ -73,4 +73,15 @@ For each tag I approve, if it does not yet exist, create it with the EpicMe "cre
7373
}
7474
},
7575
)
76+
77+
async function updatePrompts() {
78+
const entries = await agent.db.getEntries()
79+
if (entries.length > 0) {
80+
if (!suggestTagsPrompt.enabled) suggestTagsPrompt.enable()
81+
} else {
82+
if (suggestTagsPrompt.enabled) suggestTagsPrompt.disable()
83+
}
84+
}
85+
agent.db.subscribe(updatePrompts)
86+
await updatePrompts()
7687
}

exercises/99.finished/01.solution.finished/src/tools.ts

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export async function initializeTools(agent: EpicMeMCP) {
5757
},
5858
)
5959

60-
agent.server.registerTool(
60+
const getEntryTool = agent.server.registerTool(
6161
'get_entry',
6262
{
6363
title: 'Get Entry',
@@ -82,7 +82,7 @@ export async function initializeTools(agent: EpicMeMCP) {
8282
},
8383
)
8484

85-
agent.server.registerTool(
85+
const listEntriesTool = agent.server.registerTool(
8686
'list_entries',
8787
{
8888
title: 'List Entries',
@@ -104,7 +104,7 @@ export async function initializeTools(agent: EpicMeMCP) {
104104
},
105105
)
106106

107-
agent.server.registerTool(
107+
const updateEntryTool = agent.server.registerTool(
108108
'update_entry',
109109
{
110110
title: 'Update Entry',
@@ -134,7 +134,7 @@ export async function initializeTools(agent: EpicMeMCP) {
134134
},
135135
)
136136

137-
agent.server.registerTool(
137+
const deleteEntryTool = agent.server.registerTool(
138138
'delete_entry',
139139
{
140140
title: 'Delete Entry',
@@ -211,7 +211,7 @@ export async function initializeTools(agent: EpicMeMCP) {
211211
},
212212
)
213213

214-
agent.server.registerTool(
214+
const getTagTool = agent.server.registerTool(
215215
'get_tag',
216216
{
217217
title: 'Get Tag',
@@ -236,7 +236,7 @@ export async function initializeTools(agent: EpicMeMCP) {
236236
},
237237
)
238238

239-
agent.server.registerTool(
239+
const listTagsTool = agent.server.registerTool(
240240
'list_tags',
241241
{
242242
title: 'List Tags',
@@ -255,7 +255,7 @@ export async function initializeTools(agent: EpicMeMCP) {
255255
},
256256
)
257257

258-
agent.server.registerTool(
258+
const updateTagTool = agent.server.registerTool(
259259
'update_tag',
260260
{
261261
title: 'Update Tag',
@@ -282,7 +282,7 @@ export async function initializeTools(agent: EpicMeMCP) {
282282
},
283283
)
284284

285-
agent.server.registerTool(
285+
const deleteTagTool = agent.server.registerTool(
286286
'delete_tag',
287287
{
288288
title: 'Delete Tag',
@@ -333,7 +333,7 @@ export async function initializeTools(agent: EpicMeMCP) {
333333
},
334334
)
335335

336-
agent.server.registerTool(
336+
const addTagToEntryTool = agent.server.registerTool(
337337
'add_tag_to_entry',
338338
{
339339
title: 'Add Tag to Entry',
@@ -371,7 +371,7 @@ export async function initializeTools(agent: EpicMeMCP) {
371371
},
372372
)
373373

374-
agent.server.registerTool(
374+
const createWrappedVideoTool = agent.server.registerTool(
375375
'create_wrapped_video',
376376
{
377377
title: 'Create Wrapped Video',
@@ -437,6 +437,44 @@ export async function initializeTools(agent: EpicMeMCP) {
437437
}
438438
},
439439
)
440+
441+
async function updateTools() {
442+
const entries = await agent.db.getEntries()
443+
if (entries.length > 0) {
444+
if (!deleteEntryTool.enabled) deleteEntryTool.enable()
445+
if (!updateEntryTool.enabled) updateEntryTool.enable()
446+
if (!listEntriesTool.enabled) listEntriesTool.enable()
447+
if (!getEntryTool.enabled) getEntryTool.enable()
448+
if (!createWrappedVideoTool.enabled) createWrappedVideoTool.enable()
449+
} else {
450+
if (deleteEntryTool.enabled) deleteEntryTool.disable()
451+
if (updateEntryTool.enabled) updateEntryTool.disable()
452+
if (listEntriesTool.enabled) listEntriesTool.disable()
453+
if (getEntryTool.enabled) getEntryTool.disable()
454+
if (createWrappedVideoTool.enabled) createWrappedVideoTool.disable()
455+
}
456+
457+
const tags = await agent.db.getTags()
458+
if (tags.length > 0) {
459+
if (!deleteTagTool.enabled) deleteTagTool.enable()
460+
if (!updateTagTool.enabled) updateTagTool.enable()
461+
if (!listTagsTool.enabled) listTagsTool.enable()
462+
if (!getTagTool.enabled) getTagTool.enable()
463+
} else {
464+
if (deleteTagTool.enabled) deleteTagTool.disable()
465+
if (updateTagTool.enabled) updateTagTool.disable()
466+
if (listTagsTool.enabled) listTagsTool.disable()
467+
if (getTagTool.enabled) getTagTool.disable()
468+
}
469+
470+
if (entries.length > 0 && tags.length > 0) {
471+
if (!addTagToEntryTool.enabled) addTagToEntryTool.enable()
472+
} else {
473+
if (addTagToEntryTool.enabled) addTagToEntryTool.disable()
474+
}
475+
}
476+
agent.db.subscribe(updateTools)
477+
await updateTools()
440478
}
441479

442480
function createTextContent(text: unknown): CallToolResult['content'][number] {

0 commit comments

Comments
 (0)